//Gets the browser specific XmlHttpRequest Object
function getXmlHttpRequestObject() {
	if (window.XMLHttpRequest) {
		return new XMLHttpRequest();
	} else if(window.ActiveXObject) {
		return new ActiveXObject("Microsoft.XMLHTTP");
	} 
}

function searchSuggestKey(pressevent, caller_id)
{
	var doNext = false;
	var SearchSuggestObj=document.getElementById('search_suggest');
	var ch = SearchSuggestObj.children ? SearchSuggestObj.children : SearchSuggestObj.childNodes;

	var code; //variable to save keystroke
	if (!pressevent) var pressevent = window.event; //did i got any event
	if (pressevent.keyCode) code = pressevent.keyCode; //assign key code to var code

    // when the down arrow key is pressed
    if(code == 40)
    {
		for( var i = 0; i < ch.length; i++ )
		{
			if( doNext )
			{
				ch[i].className = 'suggest_link_over';
				clearSelectedSug( ch[i] );
				break;
			}
			else if( ch[i].className == 'suggest_link_over' )
				doNext = true;
		}

		if( !doNext && ch.length )
		{
			ch[0].className = 'suggest_link_over';
			clearSelectedSug( ch[0] );
		}
    }

    // When the up arrow key is pressed
    else if(code == 38)
    {
		for( var i = ch.length - 1; i > -1; i-- )
		{
			if( doNext )
			{
				ch[i].className = 'suggest_link_over';
				clearSelectedSug( ch[i] );
				break;
			}
			else if( ch[i].className == 'suggest_link_over' )
				doNext = true;
		}
		
		if( !doNext && ch.length )
		{
			ch[ch.length - 1].className = 'suggest_link_over';
			clearSelectedSug( ch[ch.length - 1] );
		}
    }
	
	else if(code == 13)
	{
		for( var i = 0; i < ch.length; i++ )
		{
			if( ch[i].className == 'suggest_link_over' )
				setSearch( ch[i].innerHTML );
		}
	}
	
	else
		searchSuggest(caller_id);
		
}

//Our XmlHttpRequest object to get the auto suggest
var searchReq = getXmlHttpRequestObject();
var passed_id = 'search';
//Called from keyup on the search textbox.
//Starts the AJAX request.
function searchSuggest(caller_id) {
passed_id = caller_id
	if( searchReq ) {
		//if (searchReq.readyState == 4 || searchReq.readyState == 0) {
			var str = escape(document.getElementById(passed_id).value);
			searchReq.open("GET", '/searchSuggest.php?search=' + str, true);
			searchReq.onreadystatechange = handleSearchSuggest; 
			searchReq.send(null);
		//}
	}
}

//Called when the AJAX response is returned.
function handleSearchSuggest() {
	if (searchReq.readyState == 4) {
	

		var obj = document.getElementById(passed_id)
		var SearchSuggestObj=document.getElementById('search_suggest')
		var ypos=posTop(obj)+obj.offsetHeight
		xpos= findPosX2(obj);
		
		SearchSuggestObj.style.top=ypos +"px"
		SearchSuggestObj.style.left = xpos+"px"
				
		var ss = document.getElementById('search_suggest')
		ss.innerHTML = '';
		var str = searchReq.responseText.split("\n");
		for(i=0; i < str.length - 1; i++) {
			//Build our element string.  This is cleaner using the DOM, but
			//IE doesn't support dynamically added attributes.
			var suggest = '<div onmouseover="javascript:suggestOver(this);" ';
			suggest += 'onmouseout="javascript:suggestOut(this);" ';
			suggest += 'onclick="javascript:setSearch(this.innerHTML);" ';
			suggest += 'class="suggest_link">' + str[i] + '</div>';
			ss.innerHTML += suggest;
		}
		document.getElementById('search_suggest').style.zIndex = '4';
		document.getElementById('search_suggest').style.display = 'block';
		IFrame_Mask('search_suggest');

		


		
	}
}

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

function clearSelectedSug( doNotClearThisOne )
{
	var SearchSuggestObj=document.getElementById('search_suggest');
	var ch = SearchSuggestObj.children ? SearchSuggestObj.children : SearchSuggestObj.childNodes;
	for( var i = 0; i < ch.length; i++ )
	{
		if( ch[i] != doNotClearThisOne )
			ch[i].className = 'suggest_link';
	}
}

//Click function
function setSearch(value) {
	document.getElementById(passed_id).value = value;
	document.getElementById('search_suggest').style.display = 'none';
	IFrame_UnMask('search_suggest');
	document.productsearchform.submit();
}

function setSuggestTimeout(value)
{
	setTimeout( 'suggestTimeout();', value );
}

function suggestTimeout()
{
	document.getElementById('search_suggest').style.display = 'none';
		IFrame_UnMask('search_suggest');
}

function posLeft(eElement)
{
	var nLeftPos = eElement.offsetLeft;
	var eParElement = eElement.offsetParent;
	while (eParElement != null)
	{
		nLeftPos += eParElement.offsetLeft;
		eParElement = eParElement.offsetParent;
	}
	return nLeftPos;
}

function posTop(eElement)
{
	var nTopPos = eElement.offsetTop;
	var eParElement = eElement.offsetParent;
	while (eParElement != null)
	{
		nTopPos += eParElement.offsetTop;
		eParElement = eParElement.offsetParent;
	}
	return nTopPos;
}

function findPosX2(obj)
  {
    var curleft = 0;
    if(obj.offsetParent)
        while(1) 
        {
          curleft += obj.offsetLeft;
          if(!obj.offsetParent)
            break;
          obj = obj.offsetParent;
        }
    else if(obj.x)
        curleft += obj.x;
    return curleft;
  }