/*
* javascript lib für inputfield:
* -hollt asynchron suggestlist aus ajax.query.cfm
* -erst ab 3 Zeichen request
* -bei schneller eingabe wird dank delaySuggest(...) nicht für jedes char ein request gemacht
*  mit delay = xxx kann feintuning gemacht werden
* -wenn man schon mehr als 3 zeichen gemacht hat und wieder zeichen löscht - wird die suggestliste geschlossen
* -die Suggestliste ist mit tastaturtaste up,down und enter bedienbar. dabei wird der eigentliche enter event vom form (für submit des Forms)
*  "blockiert" - sobald man aus der Liste ist - ist der enter event wieder vom Form das (form.submit()) 
*
* by pc.
*/


var t = 0;
var searchText;
var selectPos = 0;
var delay = 250;
var MINLEN = 3;
var TAB = 9;
var ESC = 27;
var KEYUP = 38;
var KEYDN = 40;
var RETURN = 13;



function delaySuggest(searchText,event){
	
	event = event || window.event;
	// wenn kein Enter, rechts oder links dann
	pressedKey = event.keyCode;
	if(searchText.length >= MINLEN && pressedKey != KEYUP && pressedKey != KEYDN && pressedKey != RETURN && pressedKey != TAB && pressedKey != ESC){				
		this.searchText = searchText;
		clearTimeout(t);
		t=setTimeout("ajaxFunction();",delay);
	} else {
		inputKeyHandler(event);
	}	
}

function ajaxFunction(){

	var xmlHttp;
	try{
		// Firefox, Opera 8.0+, Safari
		xmlHttp=new XMLHttpRequest();
	} catch (e){
		// Internet Explorer
		try{
			xmlHttp=new ActiveXObject("Msxml2.XMLHTTP");
		} catch (e){
			try{
				xmlHttp=new ActiveXObject("Microsoft.XMLHTTP");
			} catch (e){
				alert("Your browser does not support AJAX!");
				return false;
			}
		}
	}
	
	xmlHttp.onreadystatechange=function(){
		if(xmlHttp.readyState==4){
			var resp = xmlHttp.responseText;
			document.getElementById("result").innerHTML=resp;
		}
	}
	
	if (searchText.length >= MINLEN){

		var url = "ajax.query.cfm";
		url = url + "?srchword=" + searchText;
		xmlHttp.open("GET",url,true);
		xmlHttp.send(null);
	} else{
		closeSuggestDivs();		
	}
}


function closeSuggestDivs(){
	if(this.document.getElementById("suggests").style != null)
		this.document.getElementById("suggests").style.visibility = "hidden";		
}


// muss man machen denn wenn man in der suggestliste am navigieren ist und enter drücken würde, dann würde das form submitted, dabei soll ja nur der suggest in
function handelFormEnterKey(e){
	var key;
	
	if(window.event)
	  key = window.event.keyCode; 
	else
	  key = e.which;
	  
	if(key == RETURN && selectPos != 0)		 
	  return false;
	else
	  return true;
}

function inputKeyHandler(event) {
   event = event || window.event;
   //up
   if(event.keyCode == KEYUP && selectPos != 0){
		tmpId = "sugestid"+selectPos;
		this.document.getElementById(tmpId).style.color = "#e6e6ec";
		this.document.getElementById(tmpId).style.backgroundColor = "";		
		selectPos--;
		tmpId = "sugestid"+selectPos;
		this.document.getElementById(tmpId).style.color = "#ffffff";
		this.document.getElementById(tmpId).style.backgroundColor = "#004fa1";				
   }
   //down
   if(event.keyCode == KEYDN){
		if(selectPos != 0){
			tmpId = "sugestid"+selectPos;
			this.document.getElementById(tmpId).style.color = "#e6e6ec";
			this.document.getElementById(tmpId).style.backgroundColor = "";					
		}
		selectPos++;
		tmpId = "sugestid"+selectPos;
		this.document.getElementById(tmpId).style.color = "#ffffff";
		this.document.getElementById(tmpId).style.backgroundColor = "#004fa1";
   }
   //enter
   if(event.keyCode == RETURN){
		selectPos = 0;
		addToSearchField(this.document.getElementById(tmpId).name)
   }
}		


function addToSearchField(word){
	this.document.getElementById("searchword").value = word;
	closeSuggestDivs();
}


