/*
This is the JavaScript file for the AJAX Suggest Tutorial

You may use this code in your own projects as long as this 
copyright is left	in place.  All code is provided AS-IS.
This code is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

For the rest of the code visit http://www.DynamicAJAX.com

Copyright 2006 Ryan Smith / 345 Technical / 345 Group.	

*/
//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("Your Browser Sucks!\nIt's about time to upgrade don't you think?");
	}
}

//Our XmlHttpRequest object to get the auto suggest
var searchReq = getXmlHttpRequestObject();


//Called from keyup on the search textbox.
//Starts the AJAX request.
function searchSuggest(bAdvanced)
{
	searchReq.abort();
//	if (searchReq.readyState == 4 || searchReq.readyState == 0)
	{
		if (bAdvanced)
		{
			var str = escape(document.getElementById('sa').value);
		}
		else
		{
			var str = escape(document.getElementById('s').value);
		}
		var cat = "";
		if (!bAdvanced && document.getElementById('CategoryID'))
		{
			cat = "&CategoryID=" + escape(document.getElementById('CategoryID').value);
		}
		else
		{
			cat = sCatInCache;
		}
		searchReq.open("GET", 'gethint.asp?txtSearch=' + str + cat, true);
		if (bAdvanced)
		{
			searchReq.onreadystatechange = handleSearchSuggestAdvanced; 
		}
		else
		{
			searchReq.onreadystatechange = handleSearchSuggest; 
		}
//alert(">>>");
		searchReq.send(null);
	}		
}


//Called when the AJAX response is returned.
function handleSearchSuggest()
{
//alert("<<<B");
	if (searchReq.readyState == 4)
	{
//alert(searchReq.responseText);
		var ssA = document.getElementById('search_suggest_advanced');
		if (ssA)
		{
			ssA.innerHTML = '';
		}

		var ss = document.getElementById('search_suggest')
		ss.innerHTML = '';
		//	var str = searchReq.responseText.split("\n");
		var str = searchReq.responseText.split("|");
		for(i = 0; i < str.length; i++)
		{
			//Build our element string.  This is cleaner using the DOM, but
			//IE doesn't support dynamically added attributes.
			if (str[i] != "")
			{
				var suggest = '<input type=""button"" onmouseover="javascript:suggestOver(this);" ';
				suggest += 'onmouseout="javascript:suggestOut(this);" ';
				suggest += 'onclick="javascript:setSearch(this.value);" ';
				suggest += 'class="suggest_link" id="s' + i + '"  onkeydown="doKeyCheck(event, ' + i + ', ' + str.length + ', this.value);" value="' + str[i] + '">'// + str[i] + '</div>';
//alert(suggest);
				ss.innerHTML += suggest;
			}
		}
		if (ss.innerHTML != "")
		{
			ss.style.border = "1px solid #000000";
		}
		else
		{
			ss.style.border = "0px";
		}
	}

}



//Called when the AJAX response is returned.
function handleSearchSuggestAdvanced()
{
//alert("<<<A");
	if (searchReq.readyState == 4)
	{
		var ssB = document.getElementById('search_suggest');
		ssB.innerHTML = '';

//alert(searchReq.responseText);
		var ss = document.getElementById('search_suggest_advanced');
		ss.innerHTML = '';
		//	var str = searchReq.responseText.split("\n");
		var str = searchReq.responseText.split("|");
		for(i = 0; i < str.length; i++)
		{
			//Build our element string.  This is cleaner using the DOM, but
			//IE doesn't support dynamically added attributes.
			if (str[i] != "")
			{
				var suggest = '<input type=""button"" onmouseover="javascript:suggestOver(this);" ';
				suggest += 'onmouseout="javascript:suggestOut(this);" ';
				suggest += 'onclick="javascript:setSearchAdvanced(this.value);" ';
				suggest += 'class="suggest_link" id="s' + i + '"  onkeydown="doKeyCheck(event, ' + i + ', ' + str.length + ', this.value);" value="' + str[i] + '">'// + str[i] + '</div>';
//alert(suggest);
				ss.innerHTML += suggest;
			}
		}
		if (ss.innerHTML != "")
		{
			ss.style.border = "1px solid #000000";
		}
		else
		{
			ss.style.border = "0px";
		}
	}

}


//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
function setSearch(value)
{
	value = value.replace(/amp;/g,"")//<><><>
	document.getElementById('s').value = value;
	document.getElementById('cmdSearch').focus();
	document.getElementById('search_suggest').innerHTML = '';
	setHintBorderToZero(false);
}


function setSearchAdvanced(value)
{
	value = value.replace(/amp;/g,"")//<><><>
	document.getElementById('sa').value = value;
	//	document.getElementById('cmdSearch').focus(); <<<<<<<<<<<<<<
	document.getElementById('search_suggest_advanced').innerHTML = '';
	setHintBorderToZero(true);
}


function setHintBorderToZero(bAdvanced)
{
	if (bAdvanced)
	{
		var ss = document.getElementById('search_suggest_advanced');
	}
	else
	{
		var ss = document.getElementById('search_suggest');
	}
	ss.style.border = "0px";
}


function doSearch()
{
	var str = escape(document.getElementById('s').value);
	window.location = "Products.asp?s=" + str + getCategoryQuery();
}


function doSearchAdvanced()
{
	if (sCatInCache == "&CatsIn=-1")
	{
		return;
	}

	var bSearchDescriptions = document.getElementById("AdvancedSearchDescriptions").checked;

//alert("!");
	var str = escape(document.getElementById('sa').value);

	if (bSearchDescriptions)
	{
		window.location = "Products.asp?SearchDescriptions=Yes&s=" + str + getCategoryQuery();
	}
	else
	{
		window.location = "Products.asp?s=" + str + getCategoryQuery();
	}
}


function getCategoryQuery()
{
	var result = "";
	var bCheckAll = false;	//document.getElementById("CI0").checked;
	if (bCheckAll)
	{
		result = "&CategoryAll=Yes";
sCatInCache = result;
	}
	else
	{
		var nTotalNumOfCategories = document.getElementById("TotalNumOfCategories").value;
		result = "&CatsIn=";
		var sCats = "";
		for(i = 1; i<nTotalNumOfCategories; i++)
		{
			if(document.getElementById("CI" + i).checked)
			{
				var nCategoryID = document.getElementById("CID" + i).value;
				if (sCats != "") sCats = sCats + ",";
				sCats = sCats + nCategoryID;
			}
		}
		if (sCats == "") sCats = "-1";
		result = "&CatsIn=" + sCats;
sCatInCache = result;
	}
	return result;
		
}
