// ----------------------------------------------------------------------
// Search4u v. 1.21 -----------------------------------------------------
// 09.03.2009 -----------------------------------------------------------
// ----------------------------------------------------------------------
// v. 1.21 funkcja zaczyna sprawdzać dopiero po ustawieniu kursora w polu
// v. 1.20 dodane cache

var searchEngine = new searchEngine();

function searchEngine()
{
	
	this.word = null;
	this.previous = null;
	this.results = new Array();
	this.selected = 0;

	
	this.checkForChanges = function()
	{
		this.word = document.getElementById("search_a").value;
		setTimeout("searchEngine.checkForChanges()", 500);
		
		if ( this.word != '') {
			if ( this.word != this.previous  ) {
				this.previous = this.word;
				this.getResults(this.word);
			}
		}
		else document.getElementById('results').style.display = 'none';
	}

	
	this.getResults = function(word)
	{
		if ( this.results[word] == undefined ) {
			
			if (window.XMLHttpRequest)  { 
				var http = new XMLHttpRequest();
			} 
			else if (window.ActiveXObject) { 
				var http = new ActiveXObject("Microsoft.XMLHTTP");
			}
		
			var params = 'word='+word;
			http.open("POST", url, true);
			
			//Send the proper header information along with the request
			http.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
			http.setRequestHeader("Content-length", params.length);
			http.setRequestHeader("Connection", "close");
			
			http.send(params);
				
			http.onreadystatechange = function() {//Call a function when the state changes.	
				if(http.readyState == 4 && http.status == 200) {
					var reply = http.responseText;
					document.getElementById('results').style.display = 'block';
					document.getElementById('results').innerHTML = reply;
					searchEngine.results[word] = reply;
				}
			}
			
		} else {
			
			document.getElementById('results').style.display = 'block';
			document.getElementById('results').innerHTML = this.results[word];
			
		}
	}

	
	this.selectResult = function(value)
	{
		document.getElementById('search_a').value = value;
		document.getElementById('results').style.display = 'none';
		document.searchform.submit();
	}
	
	

	this.processKeyEvent = function(eventType, event)
	{
		// MSIE hack
		if (window.event)
		{
			event = window.event;
		}
		
		var keyID = event.keyCode;
		
		switch(keyID)
		{
			case 13:
				
				if ( this.selected != 0 ) {
					var selected = document.getElementById('inpt-'+this.selected).value;
					this.selectResult(selected);
				} else {
					document.searchform.submit();
				}
				break;
				
			case 38:
				
				this.selected--;
				if ( document.getElementById('srch-'+this.selected) != undefined ) {
					
					for ( var i = 1; i <= 12; i++ ) {
						if ( document.getElementById('srch-'+i) != undefined ) {
							document.getElementById('srch-'+i).className = 'result';
						}
					}
					
					document.getElementById('srch-'+this.selected).className = 'result-over';
				} else {
					this.selected++;
				}
				
				//document.getElementById("search").value = document.getElementById('inpt-'+this.selected).value;
				
				break;
			case 40:

				this.selected++;
				if ( document.getElementById('srch-'+this.selected) != undefined ) {
					
					for ( var i = 1; i <= 12; i++ ) {
						if ( document.getElementById('srch-'+i) != undefined ) {
							document.getElementById('srch-'+i).className = 'result';
						}
					}
					
					document.getElementById('srch-'+this.selected).className = 'result-over';
					
				} else {
					this.selected--;
				}
				
				//document.getElementById("search").value = document.getElementById('inpt-'+this.selected).value;
				
				break;
			default:
				break;
		}
		

	};

}



processKeyDown = function(event)
{
	searchEngine.processKeyEvent("onkeydown", event);
};

processKeyPress = function(event)
{
	searchEngine.processKeyEvent("onkeypress", event);
};

processKeyUp = function(event)
{
	searchEngine.processKeyEvent("onkeyup", event);
};



document.getElementById("search_a").onkeydown = processKeyDown;
//document.getElementById("search").onkeyup = processKeyUp;



