//AJAX Stuff

function stateChanged(xmlHTTPObj,elementid,timeoutid) 
{ 
	if (xmlHTTPObj.readyState==4 || xmlHTTPObj.readyState=="complete")
		{
		setInnerHTML(elementid,xmlHTTPObj.responseText);
		if(timeoutid!=undefined)
			clearTimeout(timeoutid);
		} 
} 

function getXMLHTTPObject()
{
	try
		{
		// Firefox, Opera 8.0+, Safari
		return new XMLHttpRequest();
		}
	catch (e)
		{
		// Internet Explorer
		try { return new ActiveXObject("Msxml2.XMLHTTP.6.0") } catch(e) {}
		try { return new ActiveXObject("Msxml2.XMLHTTP.3.0") } catch(e) {}
		try { return new ActiveXObject("Msxml2.XMLHTTP") } catch(e) {}
		try { return new ActiveXObject("Microsoft.XMLHTTP") } catch(e)
			{
			alert('This browser is not supported by SPIE Search.');
			}
		}
	return null;
}

function sendRequest(url,isasynchronous)
{
	if(isasynchronous==undefined)
		isasynchronous=true;
	xmlHTTPObj.open("GET",url,isasynchronous);
	xmlHTTPObj.setRequestHeader("Content-Type","application/x-www-form-urlencoded; charset=UTF-8");
	xmlHTTPObj.send(url);
}

function requestTimeOut(elementid)
{
	alert('There appears to be a problem loading the results. Please try using your browser\'s refresh button to reload the page.');
}

function setInnerHTML(elementid,html)
{
	try
		{
		document.getElementById(elementid).innerHTML=html;
		}
	catch(e)
		{
		return;
		}
}

function getInnerHTML(elementid,defaultvalue)
{
	
	try
		{
		return document.getElementById(elementid).innerHTML;
		}
	catch(e)
		{
		if(defaultvalue==undefined)
			defaultvalue='';
		return defaultvalue;
		}
}

function GetXMLObject(xmlstring)
{
	try //Internet Explorer
		{
		xmlobject=new ActiveXObject("Microsoft.XMLDOM");
		xmlobject.async="false";
		xmlobject.loadXML(xmlstring);
		return xmlobject;
		}
	catch(e)
		{
		parser=new DOMParser();
		return parser.parseFromString(xmlstring,"text/xml");
		}
}

function AJAXRequest(url,callback)
{
	this.url=url;
	this.callback=callback;
	this.xmlRequest = getXMLHTTPObject();
	var self=this;
	this.xmlRequest.onreadystatechange = function() 
	{
		if (self.xmlRequest.readyState==4 || self.xmlRequest.readyState=="complete")
			{
			self.callback(self.xmlRequest.responseText);
			} 
	}
}

AJAXRequest.prototype.send = function()
{
	this.xmlRequest.open("GET",this.url,true);
	this.xmlRequest.setRequestHeader("Content-Type","application/x-www-form-urlencoded; charset=UTF-8");
	this.xmlRequest.send(this.url);
}