function sack(file){this.xmlhttp=null;this.resetData=function(){this.method=
"POST"
;this.queryStringSeparator=
"?"
;this.argumentSeparator=
"&"
;this.URLString=
""
;this.encodeURIString=true;this.execute=false;this.element=null;this.elementObj=null;this.requestFile=file;this.vars=new Object();this.responseStatus=new Array(2);};this.resetFunctions=function(){this.onLoading=function(){};this.onLoaded=function(){};this.onInteractive=function(){};this.onCompletion=function(){};this.onError=function(){};this.onFail=function(){};};this.reset=function(){this.resetFunctions();this.resetData();};this.createAJAX=function(){try {this.xmlhttp=new ActiveXObject(
"Msxml2.XMLHTTP"
);} catch (e1){try {this.xmlhttp=new ActiveXObject(
"Microsoft.XMLHTTP"
);} catch (e2){this.xmlhttp=null;}}
if (! this.xmlhttp){if (typeof XMLHttpRequest !=
"undefined"
){this.xmlhttp=new XMLHttpRequest();} else {this.failed=true;}}};this.setVar=function(name,value){this.vars[name]=Array(value,false);};this.encVar=function(name,value,returnvars){if (true==returnvars){return Array(encodeURIComponent(name),encodeURIComponent(value));} else {this.vars[encodeURIComponent(name)]=Array(encodeURIComponent(value),true);}}
this.processURLString=function(string,encode){encoded=encodeURIComponent(this.argumentSeparator);regexp=new RegExp(this.argumentSeparator+
"|"
+encoded);varArray=string.split(regexp);for (i=0;i<varArray.length;i++){urlVars=varArray[i].split(
"="
);if (true==encode){this.encVar(urlVars[0],urlVars[1]);} else {this.setVar(urlVars[0],urlVars[1]);}}}
this.createURLString=function(urlstring){if (this.encodeURIString&&this.URLString.length){this.processURLString(this.URLString,true);}
if (urlstring){if (this.URLString.length){this.URLString+=this.argumentSeparator+urlstring;} else {this.URLString=urlstring;}}
this.setVar(
"rndval"
,new Date().getTime());urlstringtemp=new Array();for (key in this.vars){if (false==this.vars[key][1]&&true==this.encodeURIString){encoded=this.encVar(key,this.vars[key][0],true);delete this.vars[key];this.vars[encoded[0]]=Array(encoded[1],true);key=encoded[0];}
urlstringtemp[urlstringtemp.length]=key+
"="
+this.vars[key][0];}
if (urlstring){this.URLString+=this.argumentSeparator+urlstringtemp.join(this.argumentSeparator);} else {this.URLString+=urlstringtemp.join(this.argumentSeparator);}}
this.runResponse=function(){eval(this.response);}
this.runAJAX=function(urlstring){if (this.failed){this.onFail();} else {this.createURLString(urlstring);if (this.element){this.elementObj=document.getElementById(this.element);}
if (this.xmlhttp){var self=this;if (this.method==
"GET"
){totalurlstring=this.requestFile+this.queryStringSeparator+this.URLString;this.xmlhttp.open(this.method,totalurlstring,true);} else {this.xmlhttp.open(this.method,this.requestFile,true);try {this.xmlhttp.setRequestHeader(
"Content-Type"
,
"application/x-www-form-urlencoded"
)} catch (e){}}
this.xmlhttp.onreadystatechange=function(){switch (self.xmlhttp.readyState){case 1:self.onLoading();break;case 2:self.onLoaded();break;case 3:self.onInteractive();break;case 4:self.response=self.xmlhttp.responseText;self.responseXML=self.xmlhttp.responseXML;self.responseStatus[0]=self.xmlhttp.status;self.responseStatus[1]=self.xmlhttp.statusText;if (self.execute){self.runResponse();}
if (self.elementObj){elemNodeName=self.elementObj.nodeName;elemNodeName.toLowerCase();if (elemNodeName==
"input"
||elemNodeName==
"select"
||elemNodeName==
"option"
||elemNodeName==
"textarea"
){self.elementObj.value=self.response;} else {self.elementObj.innerHTML=self.response;}}
if (self.responseStatus[0]==
"200"
){self.onCompletion();} else {self.onError();}
self.URLString=
""
;break;}};this.xmlhttp.send(this.URLString);}}};this.reset();this.createAJAX();}

