var HTTP;if(HTTP&&(typeof HTTP!="object"||HTTP.NAME))
throw new Error("Namespace 'HTTP' already exists");HTTP={};HTTP.NAME="HTTP";HTTP.VERSION=1.0;HTTP._factories=[function(){return new XMLHttpRequest();},function(){return new ActiveXObject("Msxml2.XMLHTTP");},function(){return new ActiveXObject("Microsoft.XMLHTTP");}];HTTP._factory=null;HTTP.newRequest=function(){if(HTTP._factory!=null)return HTTP._factory();for(var i=0;i<HTTP._factories.length;i++){try{var factory=HTTP._factories[i];var request=factory();if(request!=null){HTTP._factory=factory;return request;}}
catch(e){continue;}}
HTTP._factory=function(){throw new Error("XMLHttpRequest not supported");}
HTTP._factory();}
HTTP.getText=function(url,callback){var request=HTTP.newRequest();request.onreadystatechange=function(){if(request.readyState==4&&request.status==200)
callback(request.responseText);}
request.open("GET",url);request.send(null);};HTTP.getXML=function(url,callback){var request=HTTP.newRequest();request.onreadystatechange=function(){if(request.readyState==4&&request.status==200)
callback(request.responseXML);}
request.open("GET",url);request.send(null);};HTTP.getHeaders=function(url,callback,errorHandler){var request=HTTP.newRequest();request.onreadystatechange=function(){if(request.readyState==4){if(request.status==200){callback(HTTP.parseHeaders(request));}
else{if(errorHandler)errorHandler(request.status,request.statusText);else callback(null);}}}
request.open("HEAD",url);request.send(null);};HTTP.parseHeaders=function(request){var headerText=request.getAllResponseHeaders();var headers={};var ls=/^\s*/;var ts=/\s*$/;var lines=headerText.split("\n");for(var i=0;i<lines.length;i++){var line=lines[i];if(line.length==0)continue;var pos=line.indexOf(':');var name=line.substring(0,pos).replace(ls,"").replace(ts,"");var value=line.substring(pos+1).replace(ls,"").replace(ts,"");headers[name]=value;}
return headers;};HTTP.post=function(url,values,callback,errorHandler){var request=HTTP.newRequest();request.onreadystatechange=function(){if(request.readyState==4){if(request.status==200){callback(HTTP._getResponse(request));}else{if(errorHandler){errorHandler(request.status,request.statusText);}else{callback(null);}}}}
request.open("POST",url);request.setRequestHeader("Content-Type","application/x-www-form-urlencoded;charset=UTF-8");request.send(values);};HTTP.encodeFormData=function(data){var pairs=[];var regexp=/%20/g;for(var name in data){var value=data[name].toString();var pair=encodeURIComponent(name).replace(regexp,"+")+'='+
encodeURIComponent(value).replace(regexp,"+");pairs.push(pair);}
return pairs.join('&');};HTTP._getResponse=function(request){switch(request.getResponseHeader("Content-Type")){case"text/xml":return request.responseXML;loading_gif('off');case"text/json":case"application/json":case"text/javascript":case"application/javascript":case"application/x-javascript":return eval(request.responseText);default:return request.responseText;}};HTTP.get=function(url,callback,options){loading_gif('on');var request=HTTP.newRequest();var n=0;var timer;if(options.timeout)
timer=setTimeout(function(){request.abort();if(options.timeoutHandler)
options.timeoutHandler(url);},options.timeout);request.onreadystatechange=function(){if(request.readyState==4){if(timer)clearTimeout(timer);if(request.status==200){callback(HTTP._getResponse(request));loading_gif('off');}
else{if(options.errorHandler)
options.errorHandler(request.status,request.statusText);else callback(null);}}
else if(options.progressHandler){options.progressHandler(++n);}}
var target=url;if(options.parameters)
target+="?"+HTTP.encodeFormData(options.parameters)
request.open("GET",target);request.send(null);};HTTP.getTextWithScript=function(url,callback){var script=document.createElement("script");document.body.appendChild(script);var funcname="func"+HTTP.getTextWithScript.counter++;HTTP.getTextWithScript[funcname]=function(text){callback(text);document.body.removeChild(script);delete HTTP.getTextWithScript[funcname];}
script.src="jsquoter.php"+"?url="+encodeURIComponent(url)+"&func="+
encodeURIComponent("HTTP.getTextWithScript."+funcname);}
HTTP.getTextWithScript.counter=0;
