var xmlhttp;
try 
{
	xmlhttp = new ActiveXObject("Msxml2.XMLHTTP");
}
catch (e)
{
	try 
	{
		xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
	} 
	catch (E)
	{
		xmlhttp = false;
	}
}
if (!xmlhttp && typeof XMLHttpRequest != 'undefined') 
{
	xmlhttp = new XMLHttpRequest();
}


function $(str)
{
	return document.getElementById(str);
}


document.onkeyup = function(e)
{
	var oDivAutoComp = $("divAutoComp");
	var event = e || window.event;
	var keynum = event.keyCode;
	
	if	(keynum==27)
	{
		closeAutoComp();
	}
}
function closeAutoComp()
{
	$("divAutoComp").className = "invisible";
}
function autocomplete(strSearch, e)
{
	
	var oDivAutoComp = $("divAutoComp");
	oDivAutoComp.innerHTML = '';
	oDivAutoComp.className = "invisible";
	var event = e || window.event;
	var keynum = event.keyCode;
	//if the string contains at least 3 chars that are letters or nums, make the autocomplete
	var countGoodChars = 0;
	for (var i=strSearch.length ; i>=0 ; i--)
	{
		if (((strSearch.charCodeAt(i)>=48)&&(strSearch.charCodeAt(i)<=57))||((strSearch.charCodeAt(i)>=65)&&(strSearch.charCodeAt(i)<=90))||((strSearch.charCodeAt(i)>=97)&&(strSearch.charCodeAt(i)<=122))||((strSearch.charCodeAt(i)>=parseInt("05D0",16))&&(strSearch.charCodeAt(i)<=parseInt("05EA",16))))
		{
			countGoodChars++ ;
		}
	}
	if (countGoodChars>=3)
	{
		//AJAX
		
		var serverPage = "autocomplete.asp?q=" + strSearch;
		xmlhttp.open("GET", serverPage);
		xmlhttp.onreadystatechange = function()
		{
			if (xmlhttp.readyState == 4 && xmlhttp.status == 200)
			{
				if (xmlhttp.responseText == "")
					oDivAutoComp.className = "invisible";
				else{
				oDivAutoComp.className = "visible";
				oDivAutoComp.innerHTML = xmlhttp.responseText;
				}
			}
		}
		xmlhttp.send(null);		
	}
}

function setSearchValue(autocompValue)
{
	var oTxtSearch = $("q");
	oTxtSearch.value = autocompValue;
}

function SetEnd (TB)
{
if (TB.createTextRange)
{
var FieldRange = TB.createTextRange();
FieldRange.moveStart('character', TB.value.length);
FieldRange.collapse();
FieldRange.select();
}
}
