window.onload=init;

function init()                                                       // wird bei onload des Dokuments ausgefuehrt
{
  document.stadtsuche.NAME.onkeyup=function(e){return ajaxSuche(this,e?e:event)};       // onkeyup wird auf die Eingabezeile gebunden
  document.stadtsuche.NAME.onkeydown=function(e){return ajaxSucheEnter(this,e?e:event)}; // onkeydown wird auf die Eingabezeile gebunden, nur mit keydown ist es möglich ein "Enter" abzufangen und zu unterdrücken
}

var timeout=0;                                                        // Timeout vorbelegen
var suche_aktiv=0;

//gibt alle elemente zurück die den tagnamen haben
function ajaxSucheElements(tagnamen)
{
	return document.getElementById('ausgabe').getElementsByTagName(tagnamen);
}

//bindet auf allen a elementen ajaxSucheCancel()
function ajaxSucheBindCancel()
{
	myelements=ajaxSucheElements('a');
	for(key in myelements)
		if (myelements[key])
		{
			myelements[key].onmouseover=ajaxSucheCancel;
			myelements[key].onmouseout=ajaxSucheCancel;
		}
}

//setzt die Tastaturnavigation zurück
function ajaxSucheCancel()
{
	myelements=ajaxSucheElements('a');
	old_suche_aktiv=suche_aktiv;
	suche_aktiv=0;
	ajaxSucheAktiv(myelements,suche_aktiv,old_suche_aktiv);
}

//tastaturnavigation nach oben
function ajaxSucheUp()
{
	myelements=ajaxSucheElements('a');
	old_suche_aktiv=suche_aktiv;
	suche_aktiv++;
	if (suche_aktiv>myelements.length)
		suche_aktiv=myelements.length;
	ajaxSucheAktiv(myelements,suche_aktiv,old_suche_aktiv);
}

//tastaturnavigation nach unten
function ajaxSucheDown()
{
	myelements=ajaxSucheElements('a');
	old_suche_aktiv=suche_aktiv;
	suche_aktiv--;
	if (suche_aktiv<1) suche_aktiv=1;
	ajaxSucheAktiv(myelements,suche_aktiv,old_suche_aktiv);
}

//tastaturnavigation setzt CSS-Klasse 'hover' auf das aktive element und entfernt es vom alten
function ajaxSucheAktiv(myelements,suche_aktiv,old_suche_aktiv)
{
	if (suche_aktiv==old_suche_aktiv)
		return false;
	if (suche_aktiv)
		myelements[suche_aktiv-1].className+=' hover';
	if (old_suche_aktiv)
		myelements[old_suche_aktiv-1].className=myelements[old_suche_aktiv-1].className.replace(' hover','');
}

//tastaturnavigation führt den link des aktuellen aktiven elementes aus
function ajaxSucheEnter(obj,e)
{

	if (e.keyCode!=13)
		return true;
		
	if(document.getElementById('ausgabe').style.display!='block'||!suche_aktiv)
		return true;

	myelements=ajaxSucheElements('a');
	location.href=myelements[suche_aktiv-1].href;
	return false;
}

function ajaxSuche(obj,e)                                               // wird bei onkeyup innerhalb der Eingabezeile aufgerufen
{
	if(e.keyCode==40&&document.getElementById('ausgabe').style.display=='block') 
	{
 		ajaxSucheUp();
  	return false;
  }
  
  if(e.keyCode==38&&document.getElementById('ausgabe').style.display=='block') 
  {
 		ajaxSucheDown();
 		return false;
  }

  if (timeout)                                                        // wenn der Timer aktiv ist wird er wieder zurueck gesetzt
  {
     window.clearTimeout(timeout);                                    // Alten Timer löschen
     timeout=0;
  }
	
  // ajaxRequest(url,div_id,debug,postparm,javascript);
  // Timer mit ajaxRequest wird verzoegert aufgerufen (100ms)

  //timeout=window.setTimeout("ajaxRequest('http://localhost/cgi-bin/alle-wetter/wetter-stadt-ajax.pl?NAME='+escape('"+obj.value+"'),'ausgabe',0,'','fertiggeladen()')",100);
  //timeout=window.setTimeout("ajaxRequest('http://www.allewetter.de/cgi-bin/alle-wetter/wetter-stadt-ajax.pl?NAME='+escape('"+obj.value+"'),'ausgabe',0,'','fertiggeladen()')",100);
	
  // Waere eine Alternative, um die 2 Zeichen-Grenze bereits mit JavaScript abzufangen
  if(obj.value.length>=2)
     //timeout=window.setTimeout("ajaxRequest('http://localhost/cgi-bin/alle-wetter/wetter-stadt-ajax.pl?NAME='+escape('"+obj.value+"'),'ausgabe',0,'','fertiggeladen()')",100);
     timeout=window.setTimeout("ajaxRequest('http://www.allewetter.de/cgi-bin/alle-wetter/wetter-stadt-ajax.pl?NAME='+escape('"+obj.value+"'),'ausgabe',0,'','fertiggeladen()')",100);
  else
     ausgabeclose();
  return true;
}

function fertiggeladen()                                              // wird aufgerufen, wenn der Request per Ajax geladen wurde
{
  timeout=0;                                                          // Timer loeschen
	suche_aktiv=0;
  if (document.getElementById('ausgabe').innerHTML)
  {  // wenn "ausgabe" vorhanden, dann als HTML-Code anzeigen, ansonsten das Pulldown verstecken
     document.getElementById('ausgabe').style.display='block';
     ajaxSucheBindCancel();
  }
  else
     ausgabeclose();
}

function ausgabeclose()                                               // schliesst das Ausgabefenster (Pulldown)
{
  document.getElementById('ausgabe').style.display='none';
}


// ------------------
//  Tastaturabfragen 
// ------------------

/*

function TasteLosgelassen (Ereignis) 
{
  if (!Ereignis) Ereignis = window.event;
  
  if (Ereignis.which) 
  {
     Tastencode = Ereignis.which;
  }
  else if (Ereignis.keyCode) 
  {
     Tastencode = Ereignis.keyCode;
  }
    
  // --- Ist das DIV ausgabe geoeffnet? ---  
  if (document.getElementById('ausgabe').style.display == 'block')
  {     
     switch (Tastencode) {
       case 40: document.stadtsuche.button.value = "down " + Tastencode;
                break; 
                
       case 38: document.stadtsuche.button.value = "up " + Tastencode;
                break;
                
       case 13: document.stadtsuche.button.value = "return " + Tastencode;
                break;
     }  
  }   
  else
  {
     document.stadtsuche.button.value = "Los";
  }
}

document.onkeyup = TasteLosgelassen;

*/
