/*
AJAX scipting for http://www.watziterin.nl
(c) Inobé 2007 http://www.inobe.nl
*/

//Gets the browser specific XmlHttpRequest Object
function getXmlHttpRequestObject() {
  if (window.XMLHttpRequest) {
		return new XMLHttpRequest();
  } else if(window.ActiveXObject) {
		return new ActiveXObject("Microsoft.XMLHTTP");
  } else {
		alert("Uw browser is niet geschikt voor deze applicatie!\n Gebruik een andere of nieuwe browser.");
  }
}

//Our XmlHttpRequest object to get the auto suggest
var searchReq = getXmlHttpRequestObject();

//Call the script to make the result list
function searchSuggest() {
	if (document.getElementById('txtFoodName').value.length > 0) {
	  if (searchReq.readyState == 4 || searchReq.readyState == 0) {
			var strSearch = escape(document.getElementById('txtFoodName').value);
			searchReq.open("GET", 'core/ajax_search.php?search=' + strSearch, true);
			searchReq.onreadystatechange = handleSearchSuggest; 
			searchReq.send(null);
	  }		
	} else {
		document.getElementById('suggest_result').innerHTML = "";
	}
}

function inputKeyDown (e) {
	if (window.event)
		keycode = window.event.keyCode;
	else
		keycode = e.which;
	if (keycode == 38) {
		selGoUp();
	} else if (keycode == 40) {
		selGoDown();
	} else if (keycode == 13) {
		selGoEnter();
	} else {
		if (document.getElementById('txtFoodName').value.length > 1)
			setTimeout('searchSuggest()', 100);
	}
}

var selCurrent = 0;

function selGoUp () {
	var items = document.getElementById('suggest_result').getElementsByTagName('div');
	items[selCurrent].className = "suggest_link";
	selCurrent = ((selCurrent - 1) >= 0 ? (selCurrent - 1) : items.length - 1);
	items[selCurrent].className = "suggest_link_over";
	document.getElementById('txtFoodName').value = items[selCurrent].innerHTML;
}

function selGoDown () {
	var items = document.getElementById('suggest_result').getElementsByTagName('div');
	items[selCurrent].className = "suggest_link";
	selCurrent = (items.length > (selCurrent + 1) ? (selCurrent + 1) : 0);
	items[selCurrent].className = "suggest_link_over";
	document.getElementById('txtFoodName').value = items[selCurrent].innerHTML;
}

function selGoEnter () {
	var items = document.getElementById('suggest_result').getElementsByTagName('div');
	items[selCurrent].className = null;
	document.getElementById('txtFoodName').value = items[selCurrent].innerHTML;
	setSearch(items[selCurrent].innerHTML);
}

//Called when the AJAX response is returned for search.
function handleSearchSuggest() {
	if (searchReq.readyState == 4) {
		var ss = document.getElementById('suggest_result');
		ss.innerHTML = '';
		//alert(searchReq.responseText);
		if (searchReq.responseText != "") {
			var food = eval('(' + searchReq.responseText + ')');
			food = food['food'];
			for (var i = 0 ; i < food.length ; i++) {
				  var suggest = '<div onmouseover="javascript:suggestOver(this);" ';
				  suggest += 'onmouseout="javascript:suggestOut(this);" ';
				  suggest += 'onclick="javascript:setSearch(this.innerHTML);" ';
				  suggest += 'class="' + (i == 0 ? 'suggest_link_over' : 'suggest_link') + '">' + food[i]['product'] + '</div>';
				  ss.innerHTML += suggest;
			}
		}
  }
}

//Mouse over function
function suggestOver(div_value) {
  div_value.className = 'suggest_link_over';
}

//Mouse out function
function suggestOut(div_value) {
  div_value.className = 'suggest_link';
}

//Click function result
function setSearch(value) {
  //Set selected suggestion in the form
  document.getElementById('txtFoodName').value = value;
  document.getElementById('suggest_result').innerHTML = '';
	
  //Remember food name by hiding it in the form
  document.getElementById('txtHiddenFoodName').value = value;		
}
