/*
	suggest.js
	Javascript Suggest System for Search Engines
	Alpha Release: $Id: suggest.js 2502 2007-05-04 09:41:38Z tim $
	Copyright ©2005 Realworks B.V., AMSTERDAM, NL
	All Rights Reserved
*/

selectedResult = null;
keyword=null;
maySubmit=true;
f = document.forms[ 0 ];

function enableResultBox( formElement ) {
	
	formElement.onkeyup = function(e)
	{
		var resultBox = document.getElementById( "resultBox" );
		var DOWN = 40;
		var UP = 38;
		var ENTER = 13;
		if(e==undefined) {
			e=event;	
		}
		switch(e.keyCode) {
			case DOWN:
				setSelectedResult(formElement,++selectedResult);
				
				break;
			case UP:
				setSelectedResult(formElement,--selectedResult);
				
				break;
			case ENTER:
				formElement.value = resultBox.childNodes[selectedResult].childNodes[0].innerHTML;
				hideResults();
				maySubmit=true;
				break;
			default:	
				clearResults();
				if( formElement.value.length > 0 ) {
					getResults(this);
				}
				
				setSelectedResult(formElement,0);
		}
	}
	
	formElement.onblur = function(e) {
		setTimeout( hideResults, 1000 );
		maySubmit = true;
		/*
		if(e === undefined) {
			target = event.srcElement;
		} else {
			target = e.target;
		}
		if( target != "ResultBox" ) {
			hideResults();
		}
		*/
	}
	formElement.onfocus = function(e) {
		maySubmit=false;	
	}
}

function setSelectedResult(formElement,index)
{
	var resultBox = document.getElementById( "resultBox" );
	if(  resultBox.childNodes[index] == null ) {
		index = 0;
	}
	for( var i = 0; i < resultBox.childNodes.length; i++ ) {
		resultBox.childNodes[i].className="Result";
	}
	resultBox.childNodes[index].className = "Result Selected";
	selectedResult = index;
	//formElement.value = resultBox.childNodes[index].childNodes[0].innerHTML;
	
}

function getResults( formElement ) {
	var str = formElement.value.toLowerCase();
	var relevantResults = new Array();
	var strLength = str.length;
	maySubmit=false;
	
	for( var i in results ) {
		var key = i.toString().toLowerCase();
		if( strLength <= key.length && key.substr(0,strLength ) == str ) {
			addResult( formElement, i, results[ i ] );
		}
	
	}
}

function hideResults()
{
	var resultBox = document.getElementById( "resultBox" );
	resultBox.style.display = "none";
	
}

function clearResults()
{
	var resultBox = document.getElementById( "resultBox" );
	
	hideResults();
	var results = resultBox.childNodes.length;
	for( var i = 0; i < results; i++ ) {
		resultBox.removeChild( resultBox.childNodes[ 0 ] );	
	}
}

function onBeforeFormSubmit()
{
	hideResults();
	return maySubmit;
}

function addResult( formElement, key, count )
{
	var result = document.createElement( "div" );
	result.className = "Result";
	//result.setAttribute("fen",formElement.getAttribute("name"));
	result.onclick = function(e)
	{
		formElement.value = key;
		hideResults();
		/*
		if(e==undefined) {
			target = event.srcElement;
		} else {
			target = e.target;
		}
		var resultBox = document.getElementById( "resultBox" );
		for(var i = 0; i < resultBox.childNodes.length; i++ ) {
			if( resultBox.childNodes[i] == target.parentNode ) {
				setSelectedResult(document.forms[0][this.getAttribute("fen")],i);
				break;
			}
		}
		*/
	}
	
	var resultKey = document.createElement( "span" );
	resultKey.className = "ResultKey";
	resultKey.innerHTML = key;
	result.appendChild( resultKey );
	
	var resultCount = document.createElement( "span" );
	resultCount.className = "ResultCount";
	resultCount.innerHTML = count;
	result.appendChild( resultCount );
	
	var resultBox = document.getElementById( "resultBox" );
	resultBox.appendChild( result );
	resultBox.style.display = "block";	
	
}
