function MM_swapImgRestore() { //v3.0
  var i,x,a=document.MM_sr; for(i=0;a&&i<a.length&&(x=a[i])&&x.oSrc;i++) x.src=x.oSrc;
}

function MM_preloadImages() { //v3.0
  var d=document; if(d.images){ if(!d.MM_p) d.MM_p=new Array();
    var i,j=d.MM_p.length,a=MM_preloadImages.arguments; for(i=0; i<a.length; i++)
    if (a[i].indexOf("#")!=0){ d.MM_p[j]=new Image; d.MM_p[j++].src=a[i];}}
}

function MM_findObj(n, d) { //v4.0
  var p,i,x;  if(!d) d=document; if((p=n.indexOf("?"))>0&&parent.frames.length) {
    d=parent.frames[n.substring(p+1)].document; n=n.substring(0,p);}
  if(!(x=d[n])&&d.all) x=d.all[n]; for (i=0;!x&&i<d.forms.length;i++) x=d.forms[i][n];
  for(i=0;!x&&d.layers&&i<d.layers.length;i++) x=MM_findObj(n,d.layers[i].document);
  if(!x && document.getElementById) x=document.getElementById(n); return x;
}

function MM_swapImage() { //v3.0
  var i,j=0,x,a=MM_swapImage.arguments; document.MM_sr=new Array; for(i=0;i<(a.length-2);i+=3)
   if ((x=MM_findObj(a[i]))!=null){document.MM_sr[j++]=x; if(!x.oSrc) x.oSrc=x.src; x.src=a[i+2];}
}

var _RETURN_AS_TEXT = 1; var _RETURN_AS_DOM = 0; var _POST = 0; var _GET = 1; var _REPLACE_AS_DOM = 0; var _REPLACE_AS_HTML = 1; var _CACHE = 0; var _NO_CACHE = 1; function DataRequestor() { var self = this; this.getXMLHTTP = function() { var xmlHTTP = null; try { xmlHTTP = new XMLHttpRequest();} catch (e) { try { xmlHTTP = new ActiveXObject("Msxml2.XMLHTTP")
} catch(e) { var success = false; var MSXML_XMLHTTP_PROGIDS = new Array( 'Microsoft.XMLHTTP', 'MSXML2.XMLHTTP', 'MSXML2.XMLHTTP.5.0', 'MSXML2.XMLHTTP.4.0', 'MSXML2.XMLHTTP.3.0' ); for (var i=0;i < MSXML_XMLHTTP_PROGIDS.length && !success; i++) { try { xmlHTTP = new ActiveXObject(MSXML_XMLHTTP_PROGIDS[i]); success = true;} catch (e) { xmlHTTP = null;}
}
}
}
self._XML_REQ = xmlHTTP; return self._XML_REQ;}
this.getURL = function(url) { if (arguments[1] == _RETURN_AS_DOM) { self.returnType = _RETURN_AS_DOM;} else { self.returnType = _RETURN_AS_TEXT;}
if (typeof self._XML_REQ.abort == "function" && self._XML_REQ.readyState!=0) { self._XML_REQ.abort();}
self._XML_REQ.onreadystatechange = self.callback; var requestType = "GET"; var getUrlString = "?"; for (var i in self.argArray[_GET]) { getUrlString += i + "=" + self.argArray[_GET][i] + "&";}
var postUrlString = ""; for (i in self.argArray[_POST]) { postUrlString += i + "=" + self.argArray[_POST][i] + "&";}
if (postUrlString != "") { requestType = "POST";}
self._XML_REQ.open(requestType, url + getUrlString, true); if (typeof self._XML_REQ.setRequestHeader == "function") { if (self.returnType == _RETURN_AS_DOM && typeof self._XML_REQ.overrideMimeType == "function") { self._XML_REQ.overrideMimeType('text/xml');}
self._XML_REQ.setRequestHeader('Content-Type','application/x-www-form-urlencoded');}
self._XML_REQ.send(postUrlString); return true;}
this.callback = function() { if (self.onLoad) { self.onload = self.onLoad;}
if (self.onProgress) { self.onprogress = self.onProgress;}
if (self.onFail) { self.onfail = self.onFail;}
if (self._XML_REQ.readyState == 4 && self._XML_REQ.status == 200) { var obj = self.getObjToReplace(); if (obj) { if (self.replaceAs == _REPLACE_AS_HTML) { if (obj.nodeName == "TEXTAREA" || obj.nodeName == "INPUT") { obj.value = self._XML_REQ.responseText;} else { obj.innerHTML = self._XML_REQ.responseText;}
} else if (self.replaceAs == _REPLACE_AS_DOM) { eval(self._XML_REQ.responseText); obj.parentNode.replaceChild(_DOM_OBJ, obj); self.setObjToReplace(_DOM_OBJ);}
}
if (self.onload) { if (self.returnType == _RETURN_AS_DOM) { self.onload(self.normalizeWhitespace(self._XML_REQ.responseXML), obj);} else { self.onload(self._XML_REQ.responseText, obj);}
}
} else if (self._XML_REQ.readyState == 3) { if (self.onprogress && !document.all) { var contentLength = 0; try { contentLength = self._XML_REQ.getResponseHeader("Content-Length");} catch (e) { contentLength = -1;}
self.onprogress(self._XML_REQ.responseText.length, contentLength);}
} else if (self._XML_REQ.readyState == 4) { if (self.onfail) { self.onfail(self._XML_REQ.status);} else { throw new Error("Data Request failed with an HTTP status of " + self._XML_REQ.status);}
}
}
this.normalizeWhitespace = function (domObj) { if (document.createTreeWalker) { var filter = { acceptNode: function(node) { if (/\S/.test(node.nodeValue)) { return NodeFilter.FILTER_SKIP;}
return NodeFilter.FILTER_ACCEPT;}
}
var treeWalker = document.createTreeWalker(domObj, NodeFilter.SHOW_TEXT, filter, true); while (treeWalker.nextNode()) { treeWalker.currentNode.parentNode.removeChild(treeWalker.currentNode); treeWalker.currentNode = domObj;}
return domObj;} else { return domObj;}
}
this.setObjToReplace = function(obj) { if (arguments[1] == _REPLACE_AS_DOM) { self.replaceAs = _REPLACE_AS_DOM;} else { self.replaceAs = _REPLACE_AS_HTML;}
if (typeof obj == "object") { self.objToReplace = obj;} else if (typeof obj == "string") { self.objToReplaceID = obj;}
}
this.getObjToReplace = function() { if (self.objToReplaceID) { self.objToReplace = document.getElementById(self.objToReplaceID); self.objToReplaceID = "";}
return self.objToReplace;}
this.addArg = function(type, name, value) { self.argArray[type][name] = escape(value);}
this.clearArgs = function() { self.argArray[_POST] = new Array(); self.argArray[_GET] = new Array();}
this.clear = function() { self.returnType = _RETURN_AS_TEXT; self.argArray = new Array(); self.objToReplace = null; self.objToReplaceID = ""; self.replaceAs = _REPLACE_AS_HTML; self.onload = null; self.onfail = null; self.onprogress = null; self.cache = new Array(); this.clearArgs();}
if (!this.getXMLHTTP()) { throw new Error("Could not load XMLHttpRequest object");}
this.clear();}
