//Gets the browser specific XmlHttpRequest Object
function getXmlHttpRequestObject() {
	if (window.XMLHttpRequest) {
		return new XMLHttpRequest();
	} else if(window.ActiveXObject) {
		return new ActiveXObject("Microsoft.XMLHTTP");
	} else {
		return 0;
	}
}

var searchReq = getXmlHttpRequestObject();

function searchSuggest(valueA,valueB,obj,layerID,basehref) {
	if(!searchReq) return;
	var coors = findPos(obj);
	if (searchReq.readyState == 4 || searchReq.readyState == 0) {
		var str = escape(document.getElementById(layerID).value);
		try{
			searchReq.open("Get", basehref + '/../searchSuggest.cfm?valueA=' + valueA + '&valueB=' + valueB + '&search=' + str, true);
			searchReq.onreadystatechange = function (){
				if (searchReq.readyState == 4) {
					if (searchReq.status == 404) {
						alert("There was a problem retrieving the data.");
					} else {
						handleSearchSuggest(layerID);
					}
					}
				};
			searchReq.send(null);
			var x = document.getElementById('search_suggest');
			x.style.top = (coors[1] + document.getElementById(layerID).clientHeight + 3) + 'px';
			x.style.left = coors[0] + 'px';
		}catch(e){};
	}
}

function handleSearchSuggest(layerID) {
	if (searchReq.readyState == 4) {
		var ss = document.getElementById('search_suggest');
		document.getElementById('search_suggest').style.display = 'block';
		ss.innerHTML = '';
		var str = searchReq.responseText.split("\n");
		for(i=0; i < str.length - 1; i++) {
			var suggest = '<div onmouseover="javascript:suggestOver(this);" ';
			suggest += 'onmouseout="javascript:suggestOut(this);" ';
			suggest += 'onclick="javascript:setSearch(this.innerHTML,\'' + document.getElementById(layerID).id + '\');" ';
			suggest += 'class="suggest_link">' + str[i] + '</div>';
			try{ss.innerHTML += suggest;}catch(e){};
		}
	}
}

function suggestOver(div_value) {
	div_value.className = 'suggest_link_over';
}

function suggestOut(div_value) {
	div_value.className = 'suggest_link';
}

function setSearch(value,layerID) {
	document.getElementById(layerID).value = value;
	document.getElementById('search_suggest').innerHTML = '';
	document.getElementById('search_suggest').style.display = 'none';
}

function findPos(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(".suggest_link {background-color:#FFFFFF;padding: 2px 6px 2px 6px;}");
document.write(".suggest_link_over {background-color: #9B9B9B;	color: white;padding: 2px 6px 2px 6px;cursor: pointer;}");
document.write("#search_suggest {position: absolute;z-index: 10;background-color: #FFFFFF;text-align: left;	border: 1px solid #000000;font-family: Arial;font-size: 12px;display: none;}");
document.write( '</STYLE>');
document.write("<div id=search_suggest></div>");
