//
// CopyRight (C) 2007 Netsential.com
//
var NSAutoFillScriptID="NSAutoFillScript";
var NSAutoFillID="NSAutoFill";

function getXmlHttpRequestObject() {
	if (window.XMLHttpRequest) {
		return new XMLHttpRequest();
	} else if(window.ActiveXObject) {
		return new ActiveXObject("Microsoft.XMLHTTP");
	} else {
		return 0;
	}
}

var AutoFillRequestObject = getXmlHttpRequestObject();

function NSAutoFill(evt,valueA,valueB,basehref) {
	if(!AutoFillRequestObject) return;
	if (!evt) evt = window.event;
	if (!evt) return;
	var oEvtNode = evt.target || evt.srcElement;
	var key= window.event ? evt.keyCode : evt.which;
	if (isNaN(key)) return true;
	var oCurrent = AutoFillCurrentSelection();
	var oAutoFill = document.getElementById(NSAutoFillID);
	if(oAutoFill.style.display == "block")
	switch(key){
	case 38: //up-arrow
			if(!oCurrent) return;
			if(oCurrent == oAutoFill.firstChild) return;
			oCurrent.className = "AutoFill_link";
			oCurrent.previousSibling.className = "AutoFill_link_over";
			return true;
	case 40: //down-arrow
			if(oCurrent){
				if(oCurrent == oAutoFill.lastChild) return;
				oCurrent.className = "AutoFill_link";
				oCurrent.nextSibling.className = "AutoFill_link_over";
			} else{
				if(oAutoFill.firstChild)
				oAutoFill.firstChild.className = "AutoFill_link_over";
			}
			return true;
	case 13: //enter=13, tab=9
			if(oCurrent){
				oEvtNode.value = oCurrent.innerHTML;
				ShowAutoFillResults(oEvtNode.id,"");
			}
			if (evt.preventDefault) {
				evt.preventDefault();
				evt.stopPropagation();
			}
			return false;
	case 27: // esc
			ShowAutoFillResults(oEvtNode.id,"");
			return true;
	}

	if (AutoFillRequestObject.readyState == 4 || AutoFillRequestObject.readyState == 0) {
		var str = escape(oEvtNode.value);
		try{
			AutoFillRequestObject.open("Get", basehref + "/../AutoFillSuggest.aspx?valueA=" + valueA + "&valueB=" + valueB.replace(/[<>]+/g,"") + "&search=" + str.replace(/[<>]+/g,""), true);
			AutoFillRequestObject.onreadystatechange = function (){
				if (AutoFillRequestObject.readyState == 4) {
					if (AutoFillRequestObject.status == 404) {
						alert("There was a problem retrieving the data.");
					} else {
						handleAutoFill(oEvtNode.id);
					}
				}
			};
			AutoFillRequestObject.send(null);
		}catch(e)
		{
			getDataFromScripTag(basehref + "/../AutoFillSuggest.aspx?valueA=" + valueA + "&valueB=" + valueB.replace(/[<>]+/g,"") + "&search=" + str, oEvtNode.id)
		}
	}
}
function NSAutoFillkeydown(evt) {
	if(!AutoFillRequestObject) return;
	if (!evt) evt = window.event;
	if (!evt) return;
	var oEvtNode = evt.target || evt.srcElement;
	var key= window.event ? evt.keyCode : evt.which;
	if (isNaN(key)) return true;
	var oAutoFill = document.getElementById(NSAutoFillID);
	if(oAutoFill.style.display == "block")
	switch(key){
	case 13: //enter=13, tab=9
			var oCurrent = AutoFillCurrentSelection();
			if(oCurrent){
				oEvtNode.value = oCurrent.innerHTML;
				ShowAutoFillResults(oEvtNode.id,"");
			}
			if (evt.preventDefault) {
				evt.preventDefault();
				evt.stopPropagation();
			}
			return false;
	}
}

function handleAutoFill(layerID) {
	if (AutoFillRequestObject.readyState == 4) {
		ShowAutoFillResults(layerID,AutoFillRequestObject.responseText);
	}
}

function AutoFillCurrentSelection(){
	var oAutoFill = document.getElementById(NSAutoFillID);
	if(oAutoFill)
	for(var o = oAutoFill.firstChild; o; o = o.nextSibling)
		if(o.className == "AutoFill_link_over") return o;
	return 0;
}
function HideAutoFillResults(layerID) {
	var oAutoFill = document.getElementById(NSAutoFillID);
	var oInput = document.getElementById(layerID);
	if(oAutoFill.style.display == "block"){
		oAutoFill.style.display = "none";
		oAutoFill.innerHTML = "";
		if (typeof oInput.addEventListener != "undefined") {
			oInput.removeEventListener( "blur", function (evt) {setTimeout("HideAutoFillResults('"+layerID+"');",200); }, false );
			oInput.removeEventListener( "keydown", function (evt) {return NSAutoFillkeydown(evt); }, false );
		 }
		 else if (typeof oInput.attachEvent != "undefined") {
			oInput.detachEvent( "onblur",  function (evt) {setTimeout("HideAutoFillResults('"+layerID+"');",200); });
			oInput.detachEvent( "onkeydown",  function (evt) {return NSAutoFillkeydown(evt); });
		 }
	}
}

function ShowAutoFillResults(layerID,strResults) {
	var oAutoFill = document.getElementById(NSAutoFillID);
	var oInput = document.getElementById(layerID);
	if(strResults==""){
		HideAutoFillResults(layerID);
	}
	else{
		var str = strResults.split("\n");
		if((str.length ==1) && oInput.value == str[0]) {
			HideAutoFillResults(layerID);
		}
		else{
			if(oAutoFill.style.display != "block"){
				if (typeof oInput.addEventListener != "undefined") {
					oInput.addEventListener( "blur", function (evt) {setTimeout("HideAutoFillResults('"+layerID+"');",200); }, false );
					oInput.addEventListener( "keydown", function (evt) {return NSAutoFillkeydown(evt); }, false );
				}
				else if (typeof oInput.attachEvent != "undefined") {
					oInput.attachEvent( "onblur",  function (evt) {setTimeout("HideAutoFillResults('"+layerID+"');",200); });
					oInput.attachEvent( "onkeydown",  function (evt) {return NSAutoFillkeydown(evt); });
				}
				var searchcoors = AutoFillFindPos(oInput);
				oAutoFill.style.top = (searchcoors[1] + oInput.clientHeight + 3) + "px";
				oAutoFill.style.left = searchcoors[0] + "px";
				oAutoFill.style.width = "300px";
				oAutoFill.style.display = "block";
			}
			oAutoFill.innerHTML = "";
			for(i=0; i < str.length ; i++) {
				var suggest = '<div onmouseover="javascript:this.className = \'AutoFill_link_over\';" ';
				suggest += 'onmouseout="javascript:this.className = \'AutoFill_link\';" ';
				if (navigator.appName == "Microsoft Internet Explorer"){
					suggest += 'onclick="javascript:setAutoFill(this.innerText,\'' + document.getElementById(layerID).id + '\');" ';
				}else{
					suggest += 'onclick="javascript:setAutoFill(this.textContent,\'' + document.getElementById(layerID).id + '\');" ';
				}
				suggest += 'class="AutoFill_link">' + str[i] + '</div>';
				try{oAutoFill.innerHTML += suggest;}catch(e){};
			}
		}
	}
}
function getDataFromScripTag(url,layerID) {
	oScript = document.getElementById(NSAutoFillScriptID);
	var oHead = document.getElementsByTagName("head").item(0);
	if (oScript) {
		try{oHead.removeChild(oScript);}catch(e){};
	}
	oScript = document.createElement("script");
	oScript.setAttribute("src", url + "&xml=1");
	oScript.setAttribute("id",NSAutoFillScriptID);
	oHead.appendChild(oScript);
	if (typeof oScript.addEventListener != "undefined") {
		oScript.addEventListener( "load",  function (evt) { AutoFillFakeXMLFeedback(layerID); }, false ); }
	 else if (typeof oScript.attachEvent != "undefined") {
		oScript.attachEvent( 'onreadystatechange',  function (evt) { AutoFillIECheckAgain(layerID); } );
	 }
}

// Used by IE to handle state changes
function AutoFillIECheckAgain(layerID) {
	oScript = document.getElementById(NSAutoFillScriptID);
	if ((oScript.readyState == "loaded") || (oScript.readyState == "complete")) {
		AutoFillFakeXMLFeedback(layerID);
		oScript.onreadystatechange = null;
	}
}
function AutoFillFakeXMLFeedback(layerID) {
	ShowAutoFillResults(layerID,NSAutoFillSuggest);
}

function setAutoFill(value,layerID) {
	document.getElementById(layerID).value = value;
	ShowAutoFillResults(layerID,"")
}

function AutoFillFindPos(obj){
	var curleft = curtop = 0;
	if (obj.offsetParent) {
		curleft = obj.offsetLeft;
		curtop = obj.offsetTop;
		while (obj = obj.offsetParent) {
			curleft += obj.offsetLeft;
			curtop += obj.offsetTop + 0;
		}
	}
	return [curleft,curtop];
}
document.write( '<style type="text/css">');
document.write(".AutoFill_link {background-color:#FFFFFF;padding: 2px 6px 2px 6px;}");
document.write(".AutoFill_link_over {background-color: #9B9B9B;	color: white;padding: 2px 6px 2px 6px;cursor: pointer;}");
document.write("#"+ NSAutoFillID +" {position: absolute;z-index: 10;background-color: #FFFFFF;text-align: left;	border: 1px solid #000000;font-family: Arial;font-size: 12px; width: 200px; display: none;}");
document.write( '</style>');
document.write("<div id="+ NSAutoFillID +" style=display:none></div>");

