var xmlHttp;
var xmlSuggestLink = "http://" + location.hostname + "/hledat-produkt.html?sel_name="
var xmlSuggestImg = "http://" + location.hostname + "/product_thumb~";
var search_box_standby = "search_box";
var search_box_running = "search_box_running";
var Suggest_Title = "Kliknutím na položku vyhledáte navržené zboží:";
var lastKeyword = "";
var searchAll = 'false';

function initSuggest() {
	var oKeyword = document.getElementById("keyword");
	oKeyword.setAttribute("autocomplete", "off");  
	oKeyword.value = "";
}

function showHint(keyword, search_all) {
	var oSuggest = document.getElementById("suggest");
	var oScroll = document.getElementById("scroll");
	var oKeyword = document.getElementById("keyword");
	searchAll = search_all;

	if (keyword.length <= 2 || !isNaN(keyword)) {
		oSuggest.innerHTML = "";
		oScroll.style.visibility = 'hidden';
		return;
	}

	if (lastKeyword == oKeyword.value) {
		return;
	}

	lastKeyword = oKeyword.value;

	xmlHttp=GetXmlHttpObject();

	if (xmlHttp == null) {
		alert ("Browser does not support HTTP Request");
		return;
	} 

	if (search_box_running != "") show_running_suggest("yes");

	var url = "http://" + location.hostname + "/get_suggest.php";
	url = url + "?keyword=" + keyword;
	url = url + "&search_all=" + search_all;
	url = url + "&sid = " + Math.random();

	xmlHttp.onreadystatechange = stateChanged;
	xmlHttp.open("GET",url,true);
	xmlHttp.send(null);
}

function show_running_suggest(lever) {
	var el = document.getElementById("keyword");

	if (lever == "yes") {
		el.className = search_box_running;
	}
	else {
		el.className = search_box_standby;
	}
}

function stateChanged() {
	if (xmlHttp.readyState==4 || xmlHttp.readyState=="complete") { 
		updateSuggestion();
		if (search_box_running != "") show_running_suggest("no");
	}
}

function displayResults(id_array, topsection_array, results_array, results_link_array) {
	var oSuggest = document.getElementById("suggest");
	var oScroll = document.getElementById("scroll");

	if(results_array.length == 0) {
		oScroll.style.visibility = 'hidden';
	}
	else {
		showresult = Suggest_Title != "" ? "<b>" + Suggest_Title + "</b>" : "";
		showresult += "<table>";

	    for (var i = 0; i < results_array.length; i++) {
			showresult += "<tr id='sugtr" + i + "' onclick='location.href = document.getElementById(\"suga" + i + "\").href;'>"
				+ "<td><img src='" + xmlSuggestImg.replace(/^(http[s]?:\/\/)([^\.]+)(.*)$/, "$1" + "images" + "$3") + id_array[i] + "~30.img' alt='obrázek' /></td>"
				+ "<td class='ref'><a id='suga" + i + 
				 "' href='" + xmlSuggestLink.replace(/^(http[s]?:\/\/)([^\.]+)(.*)$/, "$1" + topsection_array[i] + "$3") + results_link_array[i] + '&search_all=' + searchAll + "'>" + results_array[i] + "</a></td></tr>";
		}

		showresult += "</table>";

		oSuggest.innerHTML = showresult;
		oScroll.style.visibility = 'visible';
	}
}


function xmlToArray(resultsXml) {
	var resultsArray= new Array();

	for(var i = 0; i < resultsXml.length; i++) {
		resultsArray[i] = resultsXml.item(i).firstChild.data;
	}

	return resultsArray;
}

function updateSuggestion() {
	var response = xmlHttp.responseText;

	response = xmlHttp.responseXML.documentElement;
	var idArray = new Array();
	var topSectionArray = new Array();
	var nameArray = new Array();
	var LinkSearchArray = new Array();

	if(response.childNodes.length){
		idArray = xmlToArray(response.getElementsByTagName('id'));
		topSectionArray = xmlToArray(response.getElementsByTagName('topsection'));
		nameArray = xmlToArray(response.getElementsByTagName("name"));
		LinkSearchArray = xmlToArray(response.getElementsByTagName("link_name"));
	}

	displayResults(idArray, topSectionArray, nameArray, LinkSearchArray);
}

function GetXmlHttpObject() {
	var xmlHttp=null;
	try {
	 // Firefox, Opera 8.0+, Safari
		xmlHttp=new XMLHttpRequest();
	}
	catch (e) {
	 // Internet Explorer
		try {
			xmlHttp=new ActiveXObject("Msxml2.XMLHTTP");
		}
		catch (e) {
			xmlHttp=new ActiveXObject("Microsoft.XMLHTTP");
		}
	}
	return xmlHttp;
}
