String.prototype.insert = new Function('intPos','strIns','return this.substring(0,intPos) + strIns + this.substring(intPos,this.length);');

function getXmlHttpRequestObject() {
	if (window.XMLHttpRequest) {
		return new XMLHttpRequest();
	} else if(window.ActiveXObject) {
		return new ActiveXObject("Microsoft.XMLHTTP");
	} else {
		alert("Your Browser Sucks!\nIt's about time to upgrade don't you think?");
	}
}

var searchReq = getXmlHttpRequestObject();
var schleifeglobal;
var Tastencode;
var Auswahlnummer=0;
var Eingabe="";

function searchSuggest(schleife,limit) {
  schleifeglobal=schleife;
	if (searchReq.readyState == 4 || searchReq.readyState == 3 || searchReq.readyState == 2 || searchReq.readyState == 1 || searchReq.readyState == 0) {
		var str = document.getElementById('input_fahrer' + schleifeglobal).value;
    str = str.replace('é','e');
		str = escape(str);
    eingabe = str;
//      alert(schleife);
	  if(!(str)) {
      document.getElementById('input_fahrerid'+schleifeglobal).value="";
      return;
    }
    if(limit==1){
//      alert(schleife);
   		searchReq.open("GET", 'searchsuggest.php?search=' + str + '&limit=1', true);
    }
   	else
   		searchReq.open("GET", 'searchsuggest.php?search=' + str, true);
      searchReq.onreadystatechange = function()
      {
        handleSearchSuggest(schleifeglobal);
      }
  		searchReq.send(null);
	}
}

function handleSearchSuggest(schleife) {
  if (searchReq.readyState == 4) {
		var ss = document.getElementById('search_suggest'+schleifeglobal);
		ss.innerHTML = '';
		var str = searchReq.responseText.split("\n");
		if (Tastencode==38){
      if(Auswahlnummer>0)
        Auswahlnummer--;
    }
		else if (Tastencode==40){
      if(str.length==12)
        bis=str.length-3;
      else
        bis=str.length-2;
      if(Auswahlnummer<bis)
        Auswahlnummer++;
    }
    else if (Tastencode!=39)
      Auswahlnummer=0;
		for(i=0; i < str.length - 1; i++) {
      if(Auswahlnummer==i)
        farbe="#ccffff";
			else
        farbe="#ffffff";
 			var strid = str[i].split("*");
			if(strid[1]=="..."){
  			var suggest = '<div id="suggestdiv'+schleifeglobal+i+'" style="margin:2px; padding:5px; background-color:'+farbe+'; cursor:pointer;" onmouseover="javascript:suggestOver(this);" ';
  			suggest += 'onmouseout="javascript:suggestOut(this);" ';
  			suggest += 'onclick="searchSuggest('+schleifeglobal+',1);" ';
  			suggest += 'class="suggest_link">';
  	 		suggest += strid[1];
  	 		suggest += '</div>';
      }
			else if(strid[1]=="none"){
  			var suggest = '<div id="suggestdiv'+schleifeglobal+i+'" style="margin:2px; padding:5px; background-color:white; cursor:pointer;" onmouseover="javascript:suggestOver(this);" ';
  			suggest += 'onmouseout="javascript:suggestOut(this);" ';
  			suggest += 'onclick="javascript:leer('+schleifeglobal+');" ';
  			suggest += 'class="suggest_link">';
  	 		suggest += strid[1];
  	 		suggest += '</div>';
      }
      else{
    			var suggest = '<div id="suggestdiv'+schleifeglobal+i+'" style="margin:2px; padding:5px; background-color:'+farbe+'; cursor:pointer;" onmouseover="javascript:suggestOver(this);" ';
    			suggest += 'onmouseout="javascript:suggestOut(this);" ';
    //			suggest += 'onclick="javascript:setSearch(this,'+i+');" ';
    			suggest += 'onclick="javascript:setSearch('+i+');" ';
  
    			suggest += 'class="suggest_link">';
    			if(strid[2]!="")
      	 		suggest += '<img src="images/flaggen/'+strid[2]+'.png"> ';
  
  
    	 		var strid1klein = strid[1].toLowerCase();
    	 		var eingabeklein = unescape(eingabe).toLowerCase();
  
          strid1 = strid[1].replace('é','e');
          strid1klein = strid1klein.replace('é','e');
  
    	 		var position = strid1klein.indexOf(eingabeklein);
  
  //  	 		strid1klein = encodeURI(strid1klein);
  //  	 		eingabeklein = encodeURI(eingabeklein);
  
  //        strid1klein = strid1klein.replace('é','#e#');
  //        eingabeklein = eingabeklein.replace('é','#e#');
          var strid1=strid[1];
  //  	 		eingabe = unescape(eingabe);
  //        strid1 = strid1.replace('é','1');
  //        eingabe = eingabe.replace('é','1');
  //  	 		strid1 = encodeURI(strid[1]);
  //  	 		eingabe = encodeURI(eingabe);
    	 		var laenge = eingabeklein.length;
    	 		var laengestr = strid1.length+6;
    	 		var reststr = strid1+'&nbsp;';
  //  	 		alert('ok');
  
  
  /*  	 		var strid1klein = strid[1].toLowerCase();
    	 		var eingabeklein = unescape(eingabe).toLowerCase();
    	 		var position = strid1klein.indexOf(eingabeklein);
    	 		var laenge = unescape(eingabe);
          laenge = laenge.length;
    	 		var laengestr = strid[1];
          laengestr = laengestr.length+6;
    	 		var reststr = strid[1]+'&nbsp;';*/
          var reststrsub = reststr.substring(position+laenge, laengestr);
    // 	 		var strid1kleinersetzt=strid[1].insert(position+laenge,'</span>');
          var restsub2='</span>'+reststrsub;
          var strid1kleinersetzt1 = reststr.replace(reststrsub, restsub2);
          var strid1kleinersetzt2 = strid1kleinersetzt1.insert(position,'<span style="background-color:lightblue">');
  
    	 		suggest += strid1kleinersetzt2;//+'<br>P:'+position+'<br>L1:'+laenge+'<br>L2:'+laengestr+'<br>R1:'+restsub2+'<br>R2:'+reststrsub+'<br>R3:'+strid1kleinersetzt1+'<br>E:'+eingabe;
    			if(strid[3]!="" && strid[3]!="keine")
      	 		suggest += ' - '+strid[3];
      		if(strid[4]!="")
      	 		suggest += ' - '+strid[4];
      		if(strid[5]!="")
      	 		suggest += ' - '+strid[5];
  	 		suggest += '</div>';
      }


/*			if(strid[2]=="")
  			suggest += 'class="suggest_link">'+strid[1]+'</div>';
			else
  	 		suggest += 'class="suggest_link">'+strid[1]+' - '+strid[2]+' - '+strid[3]+'</div>';*/
//			suggest += '<input type="text" id="strid'+schleifeglobal+i+'" value="'+strid[0]+'">';
			suggest += '<input type="hidden" id="name'+schleifeglobal+i+'" value="'+strid[1]+'">';
			suggest += '<input type="hidden" id="strid'+schleifeglobal+i+'" value="'+strid[0]+'">';
			ss.innerHTML += suggest;
		}
		if (Tastencode==39 && schleifeglobal!=0){
      setSearch(Auswahlnummer);
    }

	}
}

//Mouse over function
function suggestOver(div_value) {
	div_value.className = 'suggest_link_over';
}
//Mouse out function
function suggestOut(div_value) {
	div_value.className = 'suggest_link';
}
//Click function
//function setSearch(div_value,nr) {
function setSearch(nr) {
  //alert(nr);
  //alert(div_value.innerHTML);
  //alert(document.getElementById('strid'+schleifeglobal).value);
//  if(nr!=10){
//  	document.getElementById('input_fahrer'+schleifeglobal).value = div_value.innerHTML;
//alert ('suggestdiv'+nr);
//alert (document.getElementById('suggestdiv'+nr).innerHTML);
//alert ('strid'+nr);
//alert ('inhalt: '+document.getElementById('strid'+nr).value);
//alert (document.getElementById('suggestdiv'+nr).innerHTML);
    if(schleifeglobal==0){
//      var Ziel = window.prompt("fahrer.php?id=523", "fahrer.php?id=523");
      window.location.href = "fahrer.php?id="+document.getElementById('strid'+schleifeglobal+nr).value;
    }
    else{
//    	document.getElementById('input_fahrer'+schleifeglobal).value = document.getElementById('suggestdiv'+schleifeglobal+nr).innerHTML;
    	document.getElementById('input_fahrer'+schleifeglobal).value = document.getElementById('name'+schleifeglobal+nr).value;
    	document.getElementById('input_fahrerid'+schleifeglobal).value = document.getElementById('strid'+schleifeglobal+nr).value;
    //  	document.getElementById('input_fahrerid'+schleifeglobal).value = document.getElementById('strid'+schleifeglobal+nr).value;
    	document.getElementById('search_suggest'+schleifeglobal).innerHTML = '';
    	Auswahlnummer=0;
    }
//  }
}

function leer(schleifeglobal){
  document.getElementById('search_suggest'+schleifeglobal).innerHTML = '';
}

function TasteLosgelassen (Ereignis) {
  if (!Ereignis)
    Ereignis = window.event;
  if (Ereignis.which) {
    Tastencode = Ereignis.which;
  } else if (Ereignis.keyCode) {
    Tastencode = Ereignis.keyCode;
  }
}
document.onkeyup = TasteLosgelassen;

