//=============================================================================
// Set global variables
//============================== GIJS - OCCHIO ================================

var oXmlHttp = null;
var iTimeoutId = null;
var oCurrentSuggestion = null;
var bGetValue = true;
var ulSuggestions = null;
var sTimer = null;
var sBrowser = null;
var sVersion = null;

addLoadEvent(init);

// Check if user is using an old safari function. If so, disable autosuggest
if (navigator.userAgent.indexOf('Safari')!=-1)
{
	str_pos=navigator.userAgent.indexOf('Safari');
	sBrowser = "Safari";
	sVersion = navigator.userAgent.substr((str_pos+7),5);
}

function init() {
	var txtField = document.getElementById("query");
	
	// Ready Ul for suggestions
	ulSuggestions = document.createElement("ul");
	ulSuggestions.id = "suggestions";
	ulSuggestions.setAttribute("class","suggestions");
	ulSuggestions.className = "suggestions";
	ulSuggestions.style.display = "none";
	document.body.appendChild(ulSuggestions);
		
	if(txtField) {
	
		txtField.setAttribute("autocomplete", "off");
		
		txtField.onfocus = function() {
			if(this.value == "alles") {
				this.value = "";
			} else {
				this.select();
			}
		}
		
		txtField.onblur = function() {		
			if(this.value == "") {
				this.value = "alles";
			}
			sTimer = setTimeout("closeList()", 200);
			

		}
				
		// React on pressed key
		txtField.onkeyup = function(e) {
			key = getKeyCode(e);
			switch (key) {
				case 27: // escape
					ulSuggestions.innerHTML = "";
					ulSuggestions.style.display = "none";
					return false;
				break;
				case 13: // enter
					window.location = "/" + this.value.replace(/ /gi, "");
					return true;
				break;
				case 38: // up arrow
					if (txtField.value != null && txtField.value != "") {
						walkList("up", txtField);
					}
					return false;
				break;
				case 40: // down arrow
					if (txtField.value != null && txtField.value != "") {
						walkList("down", txtField);
					}
					return false;
				break;
				default: //everything else
					// only suggest when user is not using an old safari version
					if(sBrowser == "Safari" && sVersion <  420) {
						searchArticles(txtField.value);			
					} else {
						suggestKeywords(txtField);
					}
			}
			return true;
			
			
		}
	
		txtField.setAttribute("autocomplete", "off");
	}
	
}

function closeList() 
{
	ulSuggestions.innerHTML = "";
	ulSuggestions.style.display = "none";
}

//=============================================================================
// Get Pressed Key
//============================== GIJS - OCCHIO ================================

function getKeyCode(e)
{
    if (document.layers)
        return e.which;
    else if (document.all)
        return event.keyCode;
    else if (document.getElementById)
        return e.keyCode;
    return 0;
}


//=============================================================================
// AJAX request and build list
//============================== GIJS - OCCHIO ================================

function suggestKeywords(txtField) {
	
	//var txtField = document.getElementById("searchKeys");
	var ulSuggestions = document.getElementById("suggestions");
	
	if (txtField.value == null || txtField.value == "") {
		ulSuggestions.innerHTML = "";
		ulSuggestions.style.display = "none";
	}		

	// Reset timer
    if (iTimeoutId != null) {
        clearTimeout(iTimeoutId);
        iTimeoutId = null;
    }
    
    if (!oXmlHttp) {
        oXmlHttp = zXmlHttp.createRequest();
    } else if (oXmlHttp.readyState != 0) {
        oXmlHttp.abort();
    }
    
	// Get suggestions
    oXmlHttp.open("get", "/lib/keyword-suggest.php?query=" + encodeURIComponent(txtField.value), true);
    oXmlHttp.onreadystatechange = function () {               
        
		if (oXmlHttp.readyState == 4) {
            if (oXmlHttp.status == 200) {
				if(oXmlHttp.responseText != "empty") {

					// Set style for UL
					ulSuggestions.innerHTML = "";
					ulSuggestions.style.display = "none";
					txtField.parentNode.appendChild(ulSuggestions);
					
					ulSuggestions.style.position = "absolute";
					ulSuggestions.style.backgroundColor = "white";
					ulSuggestions.style.zIndex = "10000";
					ulSuggestions.style.listStyleType = "none";
					ulSuggestions.style.margin = "0";
					ulSuggestions.style.marginTop = "-2px";
					ulSuggestions.style.width = txtField.offsetWidth + "px";
					if(navigator.appName == "Microsoft Internet Explorer") {
						ulSuggestions.style.left = txtField.offsetLeft  + "px";
						ulSuggestions.style.top = txtField.offsetTop + 15 + txtField.offsetHeight + "px";
					} else {
						ulSuggestions.style.left = "18px";
						ulSuggestions.style.top = "116px";
					}
									
					if (txtField.value == null || txtField.value == "") {
						ulSuggestions.innerHTML = "";
						ulSuggestions.style.display = "none";
					} else {
								
						// Parse XML
						var oXmlDom = zXmlDom.createDocument();
						oXmlDom.loadXML(oXmlHttp.responseText);
						
						var oRoot = oXmlDom.documentElement;
																		
						var aSuggestions = oRoot.getElementsByTagName("suggestion");
						for(var i = 0; i < aSuggestions.length; i++) {
							var oCurrentChild = aSuggestions[i].firstChild;
	
							do {
								switch (oCurrentChild.tagName) {
									case "keyword":
										sKeyword = oCurrentChild.text;
									break;
									case "results":
										sResults = oCurrentChild.text;
									break;
								}
					        } while (oCurrentChild = oCurrentChild.nextSibling);
							
							// Insert keyword and amount of results in the suggestions div
							var liSuggestion = document.createElement("li");
							liSuggestion.id = "suggestion-" +i;
							liSuggestion.style.paddingLeft = "5px";
							liSuggestion.style.paddingRight = "5px";
							liSuggestion.innerHTML += "<span class='suggestion-keyword' id='suggestion-" + i + "-span' style='cursor: default;'>" + sKeyword + "</span> <span>[" + sResults + "]</span>";
							liSuggestion.style.cursor = "default";
							liSuggestion.style.color = "#5E5E5E";
							
							// Set mouseover properties
							liSuggestion.onmouseover = function() {
								oCurrentSuggestion.style.backgroundColor = "#ffffff";
								oCurrentSuggestion.style.color = "#5E5E5E";
								oCurrentSuggestion = this;
								oCurrentSuggestion.style.backgroundColor = "#7A82C0";
								oCurrentSuggestion.style.color = "white";
								return true;
							}
							
							liSuggestion.onclick = function() {
								clearTimeout(sTimer);
								txtField.value = document.getElementById(oCurrentSuggestion.id + "-span").innerHTML;
								searchArticles(txtField.value);
								closeList();
							}

														
							ulSuggestions.appendChild(liSuggestion);
							
						}
						
						
						
						oCurrentSuggestion = ulSuggestions.firstChild;
						oCurrentSuggestion.style.backgroundColor = "#7A82C0";
						oCurrentSuggestion.style.color = "white";
						ulSuggestions.style.display = "block";
						
						
					}
					
				} else {
					ulSuggestions.innerHTML = "";
					ulSuggestions.style.display = "none";
				}
				
				searchArticles(txtField.value);
            } 
        }
    };
    
	// Set timer
    iTimeoutId = setTimeout(function () {
        oXmlHttp.send(null);
    }, 300);
	
};

//=============================================================================
// Walk down the list of suggestions with keyboard controls
//============================== GIJS - OCCHIO ================================

function walkList(button, txtField) {

	if(button == "up" && oCurrentSuggestion.previousSibling) {
		oCurrentSuggestion.style.backgroundColor = "#ffffff";
		oCurrentSuggestion.style.color = "#5E5E5E";
		oCurrentSuggestion = oCurrentSuggestion.previousSibling;
	} else if (button == "down" && oCurrentSuggestion.nextSibling) {
		oCurrentSuggestion.style.backgroundColor = "#ffffff";
		oCurrentSuggestion.style.color = "#5E5E5E";
		oCurrentSuggestion = oCurrentSuggestion.nextSibling;
	}

	oCurrentSuggestion.style.backgroundColor = "#7A82C0";
	oCurrentSuggestion.style.color = "white";
	txtField.value = document.getElementById(oCurrentSuggestion.id + "-span").innerHTML;
	searchArticles(txtField.value);
	
}	
 
 
function searchArticles(query)
{
	if(document.body.id == "bureaurust-home") {
		// Get results 
		var oXmlHttp2 = zXmlHttp.createRequest();
		oXmlHttp2.open("get", "/lib/ajax-search.php?query=" + query, true);
		    
		// Lees de output uit wanneer de pagina klaar is met laden
		oXmlHttp2.onreadystatechange = function () {
		    if (oXmlHttp2.readyState == 4) {
			//alert(oXmlHttp.status);
			if (oXmlHttp2.status == 200) {
	            document.getElementById("content").innerHTML = oXmlHttp2.responseText;
		        }
		    }	        
		};
			 
		// Verstuur het request
		oXmlHttp2.send(null);
	}
}