var activeField;
var mode;

var timestep = 250;
var isrunning = false;
var keypress = false;
var active;

//check for IE6-browser
var ie6 = false;
/*if (/MSIE (\d+\.\d+);/.test(navigator.userAgent)) { //test for MSIE x.x;
 var ieversion=new Number(RegExp.$1) // capture x.x portion and store as a number
 if (ieversion>=6) {  var ie6 = true; }
}*/

function doSuggest(enteredText) 
{
	if (!isrunning) 
	{ 
		isrunning = true;
		keypress = true; 
		active = window.setInterval("check_keypress('" + enteredText + "')", timestep); 
	}
	else 
	{ 
		keypress = true; 
	} 
}

function check_keypress(enteredText) 
{
	if (!keypress) 
	{ 
  		isrunning = false;
  		keypress = false;
  		window.clearInterval(active); 
  		suggest(document.getElementById(activeField).value);
  	} 
  	else 
  	{ 
  		keypress = false; 
  	}
}  

function setActiveField(fieldname)
{
	activeField = fieldname;
	if(setActiveField.arguments[1]) {
		mode = setActiveField.arguments[1];
	} else {
		mode = 'airport';
	}
}
	
var aktKeyCode;
var aktPos = 0;
var typedText = '';

document.onkeydown = checkKeycode

function checkKeycode(e) 
{
	if (window.event) { aktKeyCode = window.event.keyCode; }
	else if (e) { aktKeyCode = e.which; }
		
		if (aktKeyCode == "40")			
		{
			if (aktPos == 0) { aktPos = 1;}
			if (document.getElementById('tr' + (aktPos)))
			{
				if (document.getElementById('tr' + aktPos)) document.getElementById('tr' + aktPos).className = 'trhover'; 
				
				if ((aktPos > 0) && document.getElementById('tr' + (aktPos-1)))
				{ 
					document.getElementById('tr' + (aktPos-1)).className = 'trnothover';
				}
				aktPos++;
				
				
				if (document.getElementById('ausgabe'+activeField).style.visibility == 'visible')
				{
					setClearKey();
				}
			}
			
			
		}
		else if (aktKeyCode == "38") 		
		{
			
			if ((aktPos > 0) && (document.getElementById('tr' + (aktPos-1)))) 
			{
				document.getElementById('tr' + (aktPos-1)).className = 'trnothover';			
			}
			if (aktPos > 1 ) aktPos--;
			if (document.getElementById('tr' + (aktPos-1))) document.getElementById('tr' + (aktPos-1)).className = 'trhover';
			
			
			if (document.getElementById('ausgabe'+activeField).style.visibility == 'visible') 
			{
				setClearKey();
				document.getElementById(activeField).value += ' ';
			}
			
		}
		else if (aktKeyCode == "27")		
		{
			document.getElementById('ausgabe'+activeField).style.visibility = "hidden"; 	
			document.getElementById('ausgabe'+activeField).innerHTML = "";

			if(ie6) {
				document.getElementById('multisearch_content_select_adults').style.display = 'inline';
				document.getElementById('multisearch_content_select_children').style.display = 'inline';
			}
			
			aktPos = 0;
			
		}
		else if ((aktKeyCode == "13") && (activeField == "originAJAX"))
		{
			document.getElementById('ausgabeoriginAJAX').style.visibility = "hidden";
			document.getElementById('ausgabeoriginAJAX').innerHTML = "";
	
			if (aktPos != 0)
			{
				ergbnis = cleanIt(textteile[aktPos+3]).split("+++");
				leftData(ergbnis[0],ergbnis[1],ergbnis[2]);
				
			}
			else
			{
				leftData(cleanIt(textteile[0]),cleanIt(textteile[1]),textteile[2]);
			
			}
		
		}
		else if ((aktKeyCode == "13") && (activeField == "destinationAJAX"))
		{
			document.getElementById('ausgabedestinationAJAX').style.visibility = "hidden";
			document.getElementById('ausgabedestinationAJAX').innerHTML = "";

			if (aktPos != 0)
			{
				
				ergbnis = cleanIt(textteile[aktPos+3]).split("+++");
				leftData(ergbnis[0],ergbnis[1],ergbnis[2]);
			}
			else
			{
				leftData(cleanIt(textteile[0]),cleanIt(textteile[1]),textteile[2]);			
			}
		}
		
		else if ((aktKeyCode != "37") && (aktKeyCode != "39"))		
		{
			aktPos = 0;
		}	
}

var xmlHttp = null;
var xmlHttp2 = null;
var wert_global = "";

   
function suggest(wert) 
{
   if (wert != "")
   {
	if ((aktKeyCode != "38") && (aktKeyCode != "40") && (aktKeyCode != "27")&& (aktKeyCode != "37") && (aktKeyCode != "39") && (aktKeyCode != "13")&& (aktKeyCode != "35")&& (aktKeyCode != "36")&& (aktKeyCode != "16")&& (aktKeyCode != "17")&& (aktKeyCode != "9")&& (aktKeyCode != "18"))
	{
		if (activeField == "destinationAJAX") { document.getElementById("destinationOK").value = "0"; }
		if (activeField == "originAJAX") { document.getElementById("originOK").value = "0"; }
		if(ie6) {
			if (activeField == "originAJAX") {
				if (document.getElementById('multisearch_content_select_adults')) document.getElementById('multisearch_content_select_adults').style.display = 'none';
				if (document.getElementById('id_age_of_driver')) document.getElementById('id_age_of_driver').style.display = 'none';				
			}
				if (document.getElementById('multisearch_content_select_children')) document.getElementById('multisearch_content_select_children').style.display = 'none';			
				if (document.getElementById('id_rehire_time_h')) document.getElementById('id_rehire_time_h').style.display = 'none';			
				if (document.getElementById('rehire_time_min')) document.getElementById('rehire_time_min').style.display = 'none';			
				if (document.getElementById('return_time_h')) document.getElementById('return_time_h').style.display = 'none';			
				if (document.getElementById('return_time_min')) document.getElementById('return_time_min').style.display = 'none';			
		}
	      typedText = document.getElementById(activeField).value;
	      
	      wert_global = wert;
	      document.getElementById(activeField).focus();
	      
	      if (window.ActiveXObject) {
	        try {
	          xmlHttp= new ActiveXObject("Msxml2.XMLHTTP");
	        } catch (e) {
	          try {
	            xmlHttp= new ActiveXObject("Microsoft.XMLHTTP");
	          } catch (e) {
	          }
	        }
	      } else if (window.XMLHttpRequest) {
	        try {
	          xmlHttp= new XMLHttpRequest();
	        } catch (e) {
	        }
	      }
	 
	    
	      if (xmlHttp) {
	        xmlHttp.open('GET', 'getSuggest.php?mode=' + escape(mode) + '&q=' + escape(wert), true);
	        xmlHttp.onreadystatechange = showData;			
	        xmlHttp.send(null);
	        
	      }	 
	      
      
	      //document.getElementById(activeField.substring(-4,15)).value = ""; 
	      
	} 
   }
   else 
   {
   	if(ie6) {
   		document.getElementById('multisearch_content_select_adults').style.display = 'inline';
		document.getElementById('multisearch_content_select_children').style.display = 'inline';
	}
   	document.getElementById('ausgabe'+activeField).style.visibility = "hidden";        	
   }  
}




var text = '';
var ersterEintrag = '';
var textteile;

function showData() 
{
    	
      var ausgabe = '';

      if (xmlHttp.readyState == 4) {
        text = xmlHttp.responseText;
        
        if (text != "") 
        {
             
              textteile = text.split("@@@");
              ersterEintrag = textteile[1];
	      			ausgabe = textteile[3];
             
             	/*if ((aktKeyCode != "8") && (aktKeyCode != "36") && (aktKeyCode != "16") && (aktKeyCode != "35") && (aktKeyCode != "46"))
							{	
								mark(ersterEintrag); 
								
							}*/
        }

        }
        
        if (ausgabe == "nor") {
          document.getElementById('ausgabe'+activeField).style.visibility = "hidden";        
       
        } 
        else {
          document.getElementById('ausgabe'+activeField).innerHTML = ausgabe;
          document.getElementById('ausgabe'+activeField).style.visibility = "visible";
        }
      
}

function leftData(shortform,airportname,airporttype)
{
	if(ie6) {
		// Flights
		if (document.getElementById('multisearch_content_select_adults')) document.getElementById('multisearch_content_select_adults').style.display = 'inline';
		if (document.getElementById('multisearch_content_select_children')) document.getElementById('multisearch_content_select_children').style.display = 'inline';
		//Carrentals
		if (document.getElementById('id_age_of_driver')) document.getElementById('id_age_of_driver').style.display = 'inline';
		if (document.getElementById('id_rehire_time_h')) document.getElementById('id_rehire_time_h').style.display = 'inline';
		if (document.getElementById('rehire_time_min')) document.getElementById('rehire_time_min').style.display = 'inline';
		if (document.getElementById('return_time_h')) document.getElementById('return_time_h').style.display = 'inline';
		if (document.getElementById('return_time_min')) document.getElementById('return_time_min').style.display = 'inline';
	}		
	
	//document.getElementById('multisearch_form_submit_container').focus();	  // Focus a different field to execute the onChange actions of the current field. Otherwise those actions will be executed later, overwriting current variables.
	//alert(shortform+'--'+airportname+'--'+airporttype);
	document.getElementById('ausgabeoriginAJAX').style.visibility = "hidden";   
	document.getElementById('ausgabedestinationAJAX').style.visibility = "hidden";   
	document.getElementById('ausgabeoriginAJAX').innerHTML = "";
	document.getElementById('ausgabedestinationAJAX').innerHTML = "";
	
	document.getElementById(activeField).value = airportname;
	
	if (activeField == "originAJAX")
	{	
		document.getElementById('destinationAJAX').focus();
		document.getElementById('origin').value = shortform;
		document.getElementById('originOK').value = 1;
		document.getElementById('destinationOK').value = 1;
		if (document.getElementById('destination').value == "") { document.getElementById('destination').value = document.getElementById('origin').value; }
		document.getElementById('originAJAX').style.backgroundColor = '';
		//document.getElementById('destinationAJAX').focus();
	}
	else
	{
		document.getElementById('destination').blur();		//Unselect the destination field to execute the onChange action
		document.getElementById('destination').value = shortform;
		document.getElementById('destinationOK').value = 1;
		
		if (document.getElementById('destination').value == document.getElementById('origin').value && mode != 'cars') 
		{ 	
				alert("Bitte einen anderen Zielflughafen auswählen! \n(Rundflüge werden leider nicht angeboten.)");
				document.getElementById('destinationAJAX').value = "";
				document.getElementById('destination').value = "";
				document.getElementById('destinationOK').value = "";
				document.getElementById('destinationAJAX').focus();
		} 
		else 
		{
				document.getElementById('destinationAJAX').style.backgroundColor = '';
		//document.getElementById('date_to').focus();
		}
	}
	
	if(mode == 'cars') {
		document.getElementById('carporttype').value = airporttype;
	} else {
		document.getElementById('airporttype').value = airporttype;
	}
	aktPos = 0;
}


function setClearKey() 
{
	document.getElementById(activeField).value = typedText;
	
}
    
   
function setClear(rowID) 
{
	
	document.getElementById(activeField).value = typedText; 
	aktPos = rowID+1;

	maxT = textteile.length-4;
	
	for  (j=0;j<maxT;j++)
	{
		document.getElementById('tr' + j).className = 'trnothover'; ;
	}
	
	document.getElementById('tr'+rowID).className = 'trhover';
	
}
   
function setHover(rowID) 
{
	document.getElementById('tr'+rowID).className = 'trnohover'; 
}
   
   
function mark(msg) 
{
	if (msg != "")
	{
		bene = document.getElementById(activeField); 
	
		 if (bene.createTextRange || bene.setSelectionRange)
		 {
		 	
		        var iLen = typedText.length; 
		        bene.value = msg; 
		        selectRange(iLen, msg.length);
		 }  
	}
}


function selectRange(iStart, iLength)
{

	bene = document.getElementById(activeField)
	
 	
        if (bene.createTextRange) 
        {
	        var oRange = bene.createTextRange(); 
	        oRange.moveStart("character", iStart); 
	        oRange.moveEnd("character", iLength - bene.value.length);      
	        oRange.select();
	}
        
     	else if (bene.setSelectionRange) 
     	{
        	bene.setSelectionRange(iStart, iLength);
    	}     
    
    bene.focus();    
}

function clearClick()
{
	document.getElementById('ausgabeoriginAJAX').style.visibility = "hidden";   
	document.getElementById('ausgabedestinationAJAX').style.visibility = "hidden"; 
	document.getElementById('ausgabeoriginAJAX').innerHTML = "";
	document.getElementById('ausgabedestinationAJAX').innerHTML = "";

}

function cleanIt(thisString)
{

	newstring = thisString.replace(/&uuml\;/g, "ü");
	newstring = newstring.replace(/&Uuml\;/g, "Ü");
	newstring = newstring.replace(/&auml\;/g, "ä");
	newstring = newstring.replace(/&Auml\;/g, "Ä");
	newstring = newstring.replace(/&ouml\;/g, "ö");
	newstring = newstring.replace(/&Ouml\;/g, "Ö");
	newstring = newstring.replace(/&szlig\;/g, "ß");
	return newstring;

}