var liveReq = false;
var t = null;
var liveReqLast = "";
var isIE = false;

// on !IE we only have to initialize it once
if (window.XMLHttpRequest) {
	liveReq = new XMLHttpRequest();
}

function liveReqInit() {
	
	if (navigator.userAgent.indexOf("Safari") > 0) {
		document.getElementById(searchFieldId).addEventListener("keypress",liveReqStart,false);
		
	} else if (navigator.product == "Gecko") {
		document.getElementById(searchFieldId).addEventListener("keypress",liveReqStart,false);
		
	} else {
		document.getElementById(searchFieldId).attachEvent('onkeydown',liveReqStart);
		isIE = true;
}
	
	if(resultFieldId == '') {
		// if a result field isn't on the page, this will sneak one in...
		resultFieldId = "liveRequestResults";
		displayArea = document.createElement('div');
		displayArea.id = "liveRequestResults";
		document.getElementsByTagName('body')[0].appendChild(displayArea);		
	}
	
	if(emptyString == '') {
		// set the result field to hidden, or to default string
		document.getElementById(resultFieldId).style.display = "none";
	} else {
		document.getElementById(resultFieldId).innerHTML = emptyString;
	}
}

addLoadEvent(liveReqInit);



function liveReqStart() {
	if (t) {
		window.clearTimeout(t);
	}
	t = window.setTimeout("liveReqDoReq()",500);
}

function liveReqDoReq() {
	if (liveReqLast != document.getElementById(searchFieldId).value && document.getElementById(searchFieldId).value != "") {
		if (liveReq && liveReq.readyState < 4) {
			liveReq.abort();
		}
		if (window.XMLHttpRequest) {
		// branch for IE/Windows ActiveX version
		} else if (window.ActiveXObject) {
			liveReq = new ActiveXObject("Microsoft.XMLHTTP");
		}
		
		liveReq.onreadystatechange = liveReqProcessReqChange;
		liveReq.open("GET", processURI + "&search=" + escape(document.getElementById(searchFieldId).value));
		liveReqLast = document.getElementById(searchFieldId).value;
		liveReq.send(null);
	} else if(document.getElementById(searchFieldId).value == "") {
		if(emptyString == '') {
			document.getElementById(resultFieldId).innerHTML = '';
			document.getElementById(resultFieldId).style.display = "none";
		} else {
			document.getElementById(resultFieldId).innerHTML = emptyString;
		}
	}
}

function liveReqProcessReqChange() {
	if (liveReq.readyState == 4) {
		document.getElementById(resultFieldId).innerHTML = liveReq.responseText;
		if(emptyString == '') {
			document.getElementById(resultFieldId).style.display = "block";
			
		}
		new Effect.SlideDown(search_outer);
		}
}

