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()}var newsletterRequest=false;var newsletterURL="";var loadingDiv="";var formDiv="";var alpha=1;function makeRequest(parameters){createRequestObject();newsletterRequest.setVar("email",parameters["email"]);newsletterRequest.setVar("newsletter",parameters["newsletter"]);newsletterRequest.method="GET";newsletterRequest.element=formDiv;newsletterRequest.onCompletion=alertContents;newsletterRequest.runAJAX()}
function createRequestObject(){newsletterRequest=new sack(newsletterURL)}function alertContents(){FadeIn()}function printResponse(){alert(http_request.responseText);var response=http_request.responseXML.documentElement;var n=response.getElementsByTagName("result")[0].firstChild.nodeValue;message=response.getElementsByTagName("message")[0].firstChild.nodeValue;document.getElementById(formDiv).innerHTML=message}
function StartFade(url,fdiv,ldiv){newsletterURL=url;formDiv=fdiv;loadingDiv=ldiv;tStart=new Date;showDiv();timerID=setTimeout("FadeOut()",100)}function FadeOut(){alpha-=0.1;if(alpha<0){alpha=0;get()}else{obj=document.getElementById(formDiv);setOpacity(obj,alpha);setTimeout("FadeOut()",100)}}function FadeIn(){alpha+=0.1;if(alpha>1){hideDiv();alpha=1}else{obj=document.getElementById(formDiv);setOpacity(obj,alpha);setTimeout("FadeIn()",100)}}
function get(){var obj=document.getElementById("newsletterFormDiv");var getstr="?";var params=new Array;for(i=0;i<obj.childNodes.length;i++){if(obj.childNodes[i].tagName=="INPUT"){if(obj.childNodes[i].type=="text")params[obj.childNodes[i].name]=obj.childNodes[i].value;if(obj.childNodes[i].type=="checkbox")if(obj.childNodes[i].checked)params[obj.childNodes[i].name]=obj.childNodes[i].value;else params[obj.childNodes[i].name]="";if(obj.childNodes[i].type=="radio")if(obj.childNodes[i].checked)params[obj.childNodes[i].name]=
obj.childNodes[i].value;if(obj.childNodes[i].type=="hidden")params[obj.childNodes[i].name]=obj.childNodes[i].value}if(obj.childNodes[i].tagName=="SELECT"){var sel=obj.childNodes[i];params[sel.name]=sel.options[sel.selectedIndex].value}}makeRequest(params)}function showDiv(){if(document.getElementById)document.getElementById(loadingDiv).style.display="block";else if(document.layers)document.loadingDiv.display="block";else document.all.loadingDiv.style.display="block"}
function hideDiv(){if(document.getElementById)document.getElementById(loadingDiv).style.display="none";else if(document.layers)document.loadingDiv.display="none";else document.all.loadingDiv.style.display="none"}function setOuterHTML(element,toValue){if(typeof element.outerHTML!="undefined")element.outerHTML=toValue;else{var range=document.createRange();range.setStartBefore(element);element.parentNode.replaceChild(range.createContextualFragment(toValue),element)}}
function setOpacity(aElm,aOpac){var object=aElm.style;object.opacity=aOpac;object.MozOpacity=aOpac;object.KhtmlOpacity=aOpac;object.filter="alpha(opacity="+aOpac*100+")"};
