var _ErrorInit="Error! Cannot initialize XMLHTTP!",_PollInterval=20000,JsCallbackMsProgId=["MSXML2.XMLHTTP.6.0","MSXML2.XMLHTTP","Microsoft.XMLHTTP"];function JsCallback(){}
JsCallback.prototype._GetXHR=function(){var req=null;if(window.XMLHttpRequest){req=new XMLHttpRequest}
if(!req&&window.ActiveXObject){for(i=0;i<JsCallbackMsProgId.length;i++){try{req=new ActiveXObject(JsCallbackMsProgId[i]);break}
catch(e){}}}
var thisObj=this;req.onreadystatechange=function(){thisObj.OnStateChange()}
return req}
JsCallback.prototype.OnStateChange=function(){var rd=this.ReqData;var req=rd.req;if(req.readyState==4){delete req.onreadystatechange;var s=req.status;if(s==200||s==202||s==0){if(!req.responseText){fnFailure.call(rd.obj,req.responseText,-1,"Server returned no data!\n"+err,rd.customData,null);return true}
if(rd.poll!=null){window.clearInterval(rd.poll);rd.poll=null}
var result=null;var err="";var _tEof="[XMLHTTP]EOF";var posEof=req.responseText.indexOf(_tEof);if(-1!=posEof){var resp=req.responseText.substring(0,posEof);try{var _tD="[XMLHTTP]DATA";var posData1=resp.indexOf(_tD)+_tD.length;var posData2=resp.lastIndexOf(_tD);var data=resp.substring(posData1,posData2);eval(data);var _tH="[XMLHTTP]HTML";var posHtml1=resp.indexOf(_tH)+_tH.length;var posHtml2=resp.lastIndexOf(_tH);var html=resp.substring(posHtml1,posHtml2);result.Html=html}
catch(e){err=e.toString();result=null}}
if(result==null||typeof result=="undefined"){rd.fnFailure.call(rd.obj,req.responseText,-1,"Server returned invalid data !\n"+err,rd.customData,null);return true}
if(!result.IsOk){rd.fnFailure.call(rd.obj,req.responseText,-1,"There is an error on server !",rd.customData,result);return true}
rd.fnSuccess.call(rd.obj,result,rd.customData);return true}else if(s>=12000){return false}else{rd.fnFailure.call(rd.obj,req.responseText,req.status,req.statusText,rd.customData);return true}}
return false}
JsCallback.prototype.GetUrl=function(wnd,callUrl){var url=callUrl;if(!wnd){wnd=window}
if(!url){if(wnd.location.pathname.toLowerCase().indexOf(".aspx")==-1){if(window.RewrittenUrl){url=window.RewrittenUrl}else{url=wnd.location.pathname+"Default.aspx"+wnd.location.search}}else{url=wnd.location.pathname+wnd.location.search}}
return url}
JsCallback.prototype.DoRequest=function(url,obj,fnSuccess,fnFailure,customData,wnd){if(!url){url=wnd.location.pathname+wnd.location.search}
this._SendReq(obj,fnSuccess,fnFailure,"GET",url,customData,null)}
JsCallback.prototype._SendReqInternal=function(){var rd=this.ReqData;try{var req=this._GetXHR();if(!req){return rd.fnFailure.call(rd.obj,"",-1,_ErrorInit,rd.customData)}
rd.req=req;req.open(rd.httpMethod,rd.url,true);if(rd.contentType){req.setRequestHeader("Content-Type",rd.contentType)}
req.setRequestHeader("cache-control","no-cache");req.setRequestHeader("Expires","Thu, 01 Dec 1994 16:00:00 GMT");req.send(rd.data)}
catch(e){return rd.fnFailure.call(rd.obj,e.name,-1,e.message,rd.customData)}}
JsCallback.prototype._SendReq=function(obj,fnSuccess,fnFailure,httpMethod,url,customData,data,contentType){this.ReqData={req:null,retries:0,started:new Date,obj:obj,fnSuccess:fnSuccess,fnFailure:fnFailure,httpMethod:httpMethod,url:url,customData:customData,data:data,contentType:contentType,poll:null};this._SendReqInternal();var thisObj=this;var fnTimeout=function(){var rd=thisObj.ReqData;rd.retries++;if(rd.retries>3){rd.fnFailure.call(rd.obj,"",-1,"Request time out",rd.customData)}else{window.status="Retrying send... "+rd.retries;thisObj._SendReqInternal()}}
this.ReqData.poll=window.setInterval(fnTimeout,_PollInterval)}
JsCallback.prototype.DoPostRequest=function(url,data,obj,fnSuccess,fnFailure,customData,wnd){this._SendReq(obj,fnSuccess,fnFailure,"POST",url,customData,data,"text/plain");return true}
JsCallback.prototype.Encode=function(s){return escape(escape(s).replace(/\"/g,"%22").replace(/\'/g,"%27").replace(/\+/g,"%2B"))}
JsCallback.prototype.DoCallback=function(wnd,eventTarget,eventArgument,obj,fnSuccess,fnFailure,customData,callbackData,callUrl){if(!wnd.document.forms.length){return fnFailure.call(obj,"",-1,"No forms found in document",customData)}
var formEl=wnd.document.forms[0];var re2B=new RegExp("\\x2B","g");var data=[];data[data.length]="__EVENTTARGET="+escape(eventTarget.split("$").join(":"));data[data.length]="__EVENTARGUMENT="+eventArgument;data[data.length]="__VIEWSTATE="+escape(formEl.__VIEWSTATE.value).replace(re2B,"%2B");data[data.length]="CallbackData="+(callbackData?callbackData:"");data[data.length]="IsCallback=1";for(var i=0;i<formEl.elements.length;i++){var ctrl=formEl.elements[i];if(ctrl.name){var val=ctrl.value;var ct=ctrl.type.toLowerCase();if(ct=="checkbox"||ct=="radio"){if(!ctrl.checked){continue}}
if(ctrl.name!="__EVENTTARGET"&&ctrl.name!="__EVENTARGUMENT"&&ctrl.name!="__VIEWSTATE"){data[data.length]=escape(ctrl.name)+"="+encodeURIComponent(val)}}}
var url=this.GetUrl(wnd,callUrl);var posHash=url.indexOf("#");if(posHash==-1){posHash=url.indexOf("%23")}
if(posHash!=-1){url=url.substring(0,posHash)}
this._SendReq(obj,fnSuccess,fnFailure,"POST",url,customData,data.join("&"),"application/x-www-form-urlencoded; charset=UTF-8");return true}
JsCallback.prototype.RequestEl=function(mtdStr,clientId,afterCall,data,url,eventArgs,afterResponse,obj){if(!eventArgs){eventArgs={}}
eventArgs.Id=clientId;eventArgs.AfterCall=afterCall;eventArgs.AfterResponse=afterResponse;this.DoCallback(window,mtdStr,"",obj,this.RequestElCallbackSuccess,this.RequestElCallbackFailure,eventArgs,data,url)}
JsCallback.prototype.RequestElCallbackSuccess=function(res,eventArgs){if(eventArgs.AfterResponse){eventArgs.AfterResponse(res,eventArgs)}
var infoEl=document.getElementById(eventArgs.Id);var newEl=document.createElement("DIV");var re0=new RegExp("(<SCR"+"IPT[^>]*>[^<]*</SCR"+"IPT>)","gim");var r=res.Html.replace(re0,"");newEl.innerHTML=r;var els=newEl.getElementsByTagName("SCR"+"IPT");var scripts=[];var rem=[];for(var i=0;i<els.length;i++){var elem=els[i];rem.push(elem)}
for(i=0;i<rem.length;i++){elem=rem[i];elem.parentNode.removeChild(elem)}
var rEl=newEl;for(i=0;i<newEl.childNodes.length;i++){var n=newEl.childNodes[i];if(n.id&&n.id==infoEl.id){rEl=n;break}}
infoEl.parentNode.replaceChild(rEl,infoEl);var re1=new RegExp("<SCR"+"IPT.+?src=\"([^>]+?)\">","gim");var fNS=res.Html.match(re1);if(fNS){for(i=0;i<fNS.length;i++){var sc=fNS[i];var r3=sc.match(re1);var src=RegExp.$1;System.LoadScript(src)}}
re1=new RegExp("<SCR"+"IPT>([^<]*?)</SCR"+"IPT>","gim");fNS=res.Html.match(re1);if(fNS){for(i=0;i<fNS.length;i++){sc=fNS[i];r3=sc.match(re1);var txt=RegExp.$1;System.LoadScript(null,txt,null,null)}}
if(eventArgs.AfterCall){eventArgs.AfterCall(res,eventArgs)}}
JsCallback.prototype.RequestElCallbackFailure=function(txt,status,statusText,cd,res){var msg;if(!res){msg=txt}else{msg=res.Message}
alert("Error! "+msg)}
JsCallback.prototype.ObjectToJSON=function(arg){var c,i,l,s='',v;switch(typeof arg){case 'object':if(arg){if(arg.constructor==Array){for(i=0;i<arg.length;++i){v=this.ObjectToJSON(arg[i]);if(s){s+=','}
s+=v}
return '['+s+']'}else if(typeof arg.toString!='undefined'){for(i in arg){v=this.ObjectToJSON(arg[i]);if(typeof v!='function'){if(s){s+=','}
s+=this.ObjectToJSON(i)+':'+v}}
return '{'+s+'}'}}
return 'null';case 'number':return isFinite(arg)?String(arg):'null';case 'string':l=arg.length;s='"';for(i=0;i<l;i+=1){c=arg.charAt(i);if(c>=' '){if(c=='\\'||c=='"'){s+='\\'}
s+=c}else{switch(c){case '\b':s+='\\b';break;case '\f':s+='\\f';break;case '\n':s+='\\n';break;case '\r':s+='\\r';break;case '\t':s+='\\t';break;default:c=c.charCodeAt();s+='\\u00'+Math.floor(c/16).toString(16)+(c%16).toString(16)}}}
return s+'"';case 'boolean':return String(arg);default:return 'null'}}
RegisterLibrary("JsCallback","1.0.0.2");