
function KeyValue(sKey,sValue)
{this.sKey=sKey;this.sValue=sValue;this.toString=function()
{return this.sKey+"="+this.sValue;}
this.isEqual=function(sKey)
{return(this.sKey==sKey);}}
UnescapeTheText=function(oNode)
{var oText=oNode.data;if(oText!=null)
{oText=unescape(oText);}
if(oNode.attributes!=null)
{for(var i=0;i<oNode.attributes.length;i++)
{oNode.attributes[i].nodeValue=unescape(oNode.attributes[i].nodeValue);}}
if(oNode.childNodes!=null)
{for(var i=0;i<oNode.childNodes.length;i++)
{UnescapeTheText(oNode.childNodes[i]);}}}
function XmlRequest()
{this.bExists=false;this.oXmlRequest=null;this.sessionId=null;this.aKeyValues=[];this.sDebugAreaId="";this.bDebug=false;try
{this.oXmlRequest=new ActiveXObject("Microsoft.XMLHTTP");this.bExists=true;}
catch(oMicrosoftError)
{}
if(!this.bExists)
{try
{this.oXmlRequest=new XMLHttpRequest();this.bExists=true;}
catch(oFirefoxError)
{}}
this.getCookie=function(name)
{var dc=document.cookie;var prefix=name+"=";var begin=dc.indexOf("; "+prefix);if(begin==-1)
{begin=dc.indexOf(prefix);if(begin!=0)return null;}
else begin+=2;var end=document.cookie.indexOf(";",begin);if(end==-1)end=dc.length;return unescape(dc.substring(begin+prefix.length,end));}
this.Debug=function(sDisplayFieldId)
{this.bDebug=true;if(sDisplayFieldId!="")
this.sDebugAreaId=sDisplayFieldId;}
this.addParameter=function(sKey,sValue)
{var sEscapedValue=escape(sValue);this.aKeyValues.push(new KeyValue(sKey,sEscapedValue));}
this.getParams=function()
{var sParams="";for(var i=0;i<this.aKeyValues.length;i++)
{if(i!=0)
sParams+="&";sParams+=this.aKeyValues[i].toString();}
return(sParams);}
this.getXml=function(sUrl,cbCallback,oRequestor)
{var sBaseUrl=sUrl;var oXmlRequest=this.oXmlRequest;if(this.bExists)
{if(this.sessionId!=null)
{sUrl="(S("+this.sessionId+"))/"+sUrl;}
oXmlRequest.open("POST",sUrl,true);oXmlRequest.onreadystatechange=function()
{if(oXmlRequest.readyState==4)
{if(oXmlRequest.responseXML!=null)
{if(oXmlRequest.responseXML.documentElement==null)
{var iStart=oXmlRequest.responseText.indexOf("[");var iEnd=oXmlRequest.responseText.length;alert("xml.js: Database call returned an empty documentElement."+"\nURL = "+sBaseUrl+"\nHTTP status = "+oXmlRequest.status+"\nResponse Headers:\n"+oXmlRequest.getAllResponseHeaders()+"\n-------------------\n"+oXmlRequest.responseText.substring(iStart,iEnd));}
else
{this.sessionId=oXmlRequest.responseXML.documentElement.getAttribute("sessionId");document.cookie="sessionId="+this.sessionId;UnescapeTheText(oXmlRequest.responseXML.documentElement);cbCallback(oXmlRequest.responseXML,oXmlRequest.responseText,oRequestor);}}
else
{alert("xml.js: Call to "+sBaseUrl+" returned an empty XML response:\n"+oXmlRequest.responseText);}}}
var sParams=this.getParams();oXmlRequest.setRequestHeader("Content-type","application/x-www-form-urlencoded");if(this.bDebug)
{if(this.sDebugAreaId!="")
document.getElementById(this.sDebugAreaId).value=sParams;else
prompt("Query Parameters",sUrl+"?"+sParams);}
oXmlRequest.send(sParams);}}
this.sessionId=this.getCookie("sessionId");}
