
var PRAjax=new(function(){this.strClientStart='****startclientside****';this.strClientStop='****endclientside****';this.strUri='';this.blnShowBusyMessage=false;this.strBusyMessage='';this.strStatusElement='';this.objStatusElement=null;this.ifrOverlay=null;this.blnShowWaitCursor=false;this.iOpenCallCount=0;this.Initialize=function(){PRAjax.blnShowBusyMessage=false;PRAjax.strStatusElement='';PRAjax.objStatusElement=null;PRAjaxUtil.addEvent(window,'unload',PRAjaxUtil.deleteAllEvents,false);}
this.CreateTransfer=function(){return new PRAjaxTransport();}
this.ExecuteRequest=function(uri,post_data,callbackFunction){PRAjax.Busy(1);var objTransport=this.CreateTransfer();objTransport.PerformRequest(uri,post_data,function(data){PRAjax.ReceiveData(callbackFunction,data);},function(){PRAjax.Busy(2);},this.iOpenCallCount++);}
this.Call=function(func_name,args,obj){var i=0;var cnt=0;var aArgs=new Array();cnt=args.length;for(i=0;i<cnt;i++){aArgs.push(args[i]);}
var uri=PRAjax.strUri;if(aArgs.length>0){if(typeof(aArgs[aArgs.length-1])=='string'&&aArgs[aArgs.length-1].indexOf('setPRAjax')>-1){var aOptions=aArgs.pop().split(';');cnt=aOptions.length;var keyValue=null;for(i=0;i<cnt;i++){keyValue=aOptions[i].split(':');switch(keyValue[0].toLowerCase()){case'setprajaxtarget':uri=keyValue[1];break;}}}}
var callbackFunction=PRAjax.Nothing;if(typeof(aArgs[aArgs.length-1])=='function'){callbackFunction=aArgs.pop();}
var post_data;post_data="rs="+encodeURIComponent(func_name);cnt=aArgs.length;for(i=0;i<cnt;i++){post_data=post_data+"&rsargs["+i+"]="+encodeURIComponent(PRAjax.ConvertValue(aArgs[i]));}
if(obj){post_data=post_data+"&rsobj="+encodeURIComponent(PRAjax.ConvertValue(obj));}
post_data=post_data+"&random="+encodeURIComponent(Math.floor(Math.random()*9999999));PRAjax.ExecuteRequest(uri,post_data,callbackFunction);}
this.ReceiveData=function(func_name,data){if(data.indexOf("[PRAjax]")!=-1){PRAjax.Busy(2);alert(data);}else{if(data!=null){if(data.indexOf(PRAjax.strClientStart)>-1){data=data.substr(0,data.length-4);}}
if(data!=null&&data.indexOf(PRAjax.strClientStart)>-1){var tmpStart=0;var tmpStop=0;var clientScript='';while(data.indexOf(PRAjax.strClientStart)>-1){tmpStart=data.indexOf(PRAjax.strClientStart)+PRAjax.strClientStart.length;tmpStop=data.indexOf(PRAjax.strClientStop);clientScript=data.substr(tmpStart,tmpStop-tmpStart);data=data.replace(PRAjax.strClientStart,'');data=data.replace(clientScript,'');data=data.replace(PRAjax.strClientStop,'');clientScript=clientScript+';';PRAjax.ExecuteScript(clientScript);}}
if(func_name==null){if(data!=null){eval(PRAjaxUtil.stripSlashes(data));}}else if(typeof(func_name)=="function"){func_name(PRAjaxUtil.stripSlashes(data).parseJSON());}
this.iOpenCallCount--;PRAjax.Busy(0);}}
this.ExecuteScript=function(pScript){eval(pScript);}
this.AddScript=function(pScript){var elemHead=document.getElementsByTagName("head").item(0);var elemScript=document.createElement("script");elemScript.setAttribute("type","text/javascript");elemScript.setAttribute("src",pScript);elemHead.appendChild(elemScript);}
this.CreateIframeOverlay=function(){if(PRAjax.ifrOverlay==null){PRAjax.ifrOverlay=document.createElement('iframe');PRAjax.ifrOverlay.id='prajax_iframe_overlay';PRAjax.ifrOverlay.style.display='none';PRAjax.ifrOverlay.style.position='absolute';document.body.appendChild(PRAjax.ifrOverlay);}}
this.PlaceIframeOverlay=function(){PRAjax.objStatusElement=document.getElementById(PRAjax.strStatusElement);var zIndex=PRAjax.objStatusElement.style.zIndex;if(zIndex==0){zIndex=99999;PRAjax.objStatusElement.style.zIndex=zIndex;}
PRAjax.ifrOverlay.style.left=PRAjax.GetLeft(PRAjax.strStatusElement);PRAjax.ifrOverlay.style.top=PRAjax.GetTop(PRAjax.strStatusElement);PRAjax.ifrOverlay.style.width=PRAjax.objStatusElement.offsetWidth;PRAjax.ifrOverlay.style.height=PRAjax.objStatusElement.offsetHeight;PRAjax.ifrOverlay.style.zIndex=zIndex-1;}
this.GetLeft=function(pElementId){var nodeCurrent=document.getElementById(pElementId);var x=0;do{x+=nodeCurrent.offsetLeft;if(nodeCurrent.offsetParent!=null){nodeCurrent=nodeCurrent.offsetParent;}else{break;}}while(nodeCurrent.tagName.toLowerCase()!='body');return x;}
this.GetTop=function(pElementId){var nodeCurrent=document.getElementById(pElementId);var y=0;do{y+=nodeCurrent.offsetTop;if(nodeCurrent.offsetParent!=null){nodeCurrent=nodeCurrent.offsetParent;}else{break;}}while(nodeCurrent.tagName.toLowerCase()!='body');return y;}
this.Busy=function(pStatus){if(PRAjax.iOpenCallCount>0){pStatus=1;}
if(PRAjax.blnShowBusyMessage){PRAjax.objStatusElement=document.getElementById(PRAjax.strStatusElement);if(PRAjax.ifrOverlay==null){PRAjax.CreateIframeOverlay();}
PRAjax.PlaceIframeOverlay();if(pStatus==1){PRAjax.ifrOverlay.style.display='block';PRAjax.objStatusElement.style.display='block';PRAjax.objStatusElement.innerHTML=PRAjax.strBusyMessage;}else{PRAjax.ifrOverlay.style.display='none';PRAjax.objStatusElement.style.display='none';}}
if(PRAjax.blnShowWaitCursor){if(pStatus==1){document.body.style.cursor='wait';}else{document.body.style.cursor='default';}}}
this.ConvertValue=function(pValue){if(pValue==""){return"";}
return pValue.toJSONString();}
this.Nothing=function(data){}})();