var JsCallbackMsProgId=["MSXML2.XMLHTTP","Microsoft.XMLHTTP","MSXML2.XMLHTTP.5.0","MSXML2.XMLHTTP.4.0","MSXML2.XMLHTTP.3.0"];function JsCallback(){}
JsCallback.prototype.Init=function(obj,fnSuccess,fnFailure,customData){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){}}}
if(req){var cd=customData;this.RetryData={Retries:null,Mtd:null,Url:null,Data:null,ContentType:null};var thisObj=this;req.onreadystatechange=function(el){if(req.readyState==4){var s=req.status;if(s==200||s==0){delete req.onreadystatechange;thisObj.RetryData=null;if(!req.responseText){return fnFailure.call(obj,req.responseText,-1,"Server returned no data !\n"+err,cd,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"){return fnFailure.call(obj,req.responseText,-1,"Server returned invalid data !\n"+err,cd,null)}
if(!result.IsOk){return fnFailure.call(obj,req.responseText,-1,"There is an error on server !",cd,result)}
return fnSuccess.call(obj,result,cd)}else if(s==12029||s==12030||s==12031||s==12152||s==12159){var rd=thisObj.RetryData;rd.Retries++;if(rd.Retries>3){return fnFailure.call(obj,req.responseText,req.status,req.statusText,cd)}
window.status="Retrying send...";req=thisObj.Init(obj,fnSuccess,fnFailure,customData);thisObj.Call(req,rd.Mtd,rd.Url,rd.Data,rd.ContentType)
return null}else{return fnFailure.call(obj,req.responseText,req.status,req.statusText,cd)}}}}else{InfoLog.DisplayWithReport("Error ! Cannot initialize XMLHTTP !",null,1)}
return req}
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){var req=this.Init(obj,fnSuccess,fnFailure,customData);if(!req){return false}
if(!url){url=wnd.location.pathname+wnd.location.search}
try{this.Call(req,"GET",url,null,null);return true}
catch(e){return fnFailure.call(obj,e.name,-1,e.message,customData)}}
JsCallback.prototype.Call=function(req,mtd,url,data,contentType){req.open(mtd,url,true);if(contentType){req.setRequestHeader("Content-Type",contentType)}
req.setRequestHeader("cache-control","no-cache");req.setRequestHeader("Expires","Thu, 01 Dec 1994 16:00:00 GMT");var rd=this.RetryData;rd.Mtd=mtd;rd.Url=url;rd.Data=data;rd.ContentType=contentType;req.send(data)}
JsCallback.prototype.DoPostRequest=function(url,data,obj,fnSuccess,fnFailure,customData,wnd){var req=this.Init(obj,fnSuccess,fnFailure,customData);if(!req){return false}
try{this.Call(req,"POST",url,data,"text/plain");return true}
catch(e){return fnFailure.call(obj,e.name,-1,e.message,customData)}}
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 false}
var formEl=wnd.document.forms[0];if(!formEl.__VIEWSTATE){InfoLog.DisplayWithReport("Error: page is not ASP.Net WebForm !",null,1);return false}
var req=this.Init(obj,fnSuccess,fnFailure,customData);if(!req){return false}
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)}}}
try{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.Call(req,"POST",url,data.join("&"),"application/x-www-form-urlencoded; charset=UTF-8");return true}
catch(e){return fnFailure.call(obj,e.name,-1,e.message)}}
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){alert("Error ! "+status+" "+statusText+" "+txt)}
RegisterLibrary("JsCallback","1.0.0.2");