ajax.js
7.45 KB
function showBusyLayer(){var busyLayer=document.getElementById("busy_layer");if(busyLayer!=null){busyLayer.style.visibility="visible";busyLayer.style.height=getPageSize().pageHeight+'px'}};function getPageSize(){var d=document,w=window,iebody=d.compatMode&&d.compatMode!='BackCompat'?d.documentElement:d.body;var b=d.body;var yScroll=(w.innerHeight&&window.scrollMaxY)?w.innerHeight+w.scrollMaxY:Math.max(b.scrollHeight,b.offsetHeight),pageHeight=(document.all&&!window.opera)?Math.max(iebody.scrollHeight,iebody.clientHeight):(d.documentElement.clientHeight||self.innerHeight);var height=(document.all&&!window.opera)?iebody.clientHeight:self.innerHeight;return{pageHeight:Math.max(pageHeight,yScroll),height:height,scrollTop:(document.all&&!window.opera)?iebody.scrollTop:pageYOffset}};function hideBusyLayer(){var busyLayer=document.getElementById("busy_layer");if(busyLayer!=null){busyLayer.style.visibility="hidden";busyLayer.style.height="0px"}};function _get_obj_toppos(obj){var top=obj.offsetTop;while((obj=obj.offsetParent)!=null){top+=obj.offsetTop}return top};function center_div(){this.divname='';this.divobj=''};center_div.prototype.clear_div=function(){try{if(!this.divobj){return}else{this.divobj.style.display='none'}}catch(e){return}};center_div.prototype.Ywindow=function(){var scrollY=0;if(document.documentElement&&document.documentElement.scrollTop){scrollY=document.documentElement.scrollTop}else if(document.body&&document.body.scrollTop){scrollY=document.body.scrollTop}else if(window.pageYOffset){scrollY=window.pageYOffset}else if(window.scrollY){scrollY=window.scrollY}return scrollY};center_div.prototype.move_div=function(){try{this.divobj=document.getElementById(this.divname)}catch(e){return}var my_width=0;var my_height=0;if(typeof(window.innerWidth)=='number'){my_width=window.innerWidth;my_height=window.innerHeight}else if(document.documentElement&&(document.documentElement.clientWidth||document.documentElement.clientHeight)){my_width=document.documentElement.clientWidth;my_height=document.documentElement.clientHeight}else if(document.body&&(document.body.clientWidth||document.body.clientHeight)){my_width=document.body.clientWidth;my_height=document.body.clientHeight}var divheight=parseInt(this.divobj.offsetHeight);var divwidth=parseInt(this.divobj.style.Width);divheight=divheight?divheight:50;divwidth=divwidth?divwidth:200;var scrolly=this.Ywindow();var setX=(my_width-divwidth)/2;var setY=(my_height-divheight)/2+scrolly;setX=(setX<0)?0:setX;setY=(setY<0)?0:setY;this.divobj.style.left=setX+"px";this.divobj.style.top=setY+"px";this.divobj.style.position='absolute';this.divobj.style.display='block';this.divobj.style.zIndex=99};function dle_ajax(file){this.AjaxFailedAlert="AJAX not supported.\n";this.requestFile=file;this.method="POST";this.URLString="";this.encodeURIString=true;this.execute=false;this.add_html=false;this.loading_fired=0;this.centerdiv=null;this.onLoading=function(){};this.onLoaded=function(){};this.onInteractive=function(){};this.onCompletion=function(){};this.onShow=function(message){if(!this.loading_fired){this.loading_fired=1;if(message){document.getElementById('loading-layer-text').innerHTML=message}this.centerdiv=new center_div();this.centerdiv.divname='loading-layer';this.centerdiv.move_div()}return};this.onHide=function(){try{if(this.centerdiv&&this.centerdiv.divobj){this.centerdiv.clear_div()}}catch(e){}this.loading_fired=0;return};this.createAJAX=function(){try{this.xmlhttp=new ActiveXObject("Msxml2.XMLHTTP")}catch(e){try{this.xmlhttp=new ActiveXObject("Microsoft.XMLHTTP")}catch(err){this.xmlhttp=null}}if(!this.xmlhttp&&typeof XMLHttpRequest!="undefined")this.xmlhttp=new XMLHttpRequest();if(!this.xmlhttp){this.failed=true}};this.setVar=function(name,value){if(this.URLString.length<3){this.URLString=name+"="+value}else{this.URLString+="&"+name+"="+value}};this.encVar=function(name,value){var varString=encodeURIComponent(name)+"="+encodeURIComponent(value);return varString};this.encodeURLString=function(string){varArray=string.split('&');for(i=0;i<varArray.length;i++){urlVars=varArray[i].split('=');if(urlVars[0].indexOf('amp;')!=-1){urlVars[0]=urlVars[0].substring(4)}varArray[i]=this.encVar(urlVars[0],urlVars[1])}return varArray.join('&')};this.encodeVAR=function(url){url=url.toString();url=url.replace(/\+/g,"%2B");url=url.replace(/\=/g,"%3D");url=url.replace(/\?/g,"%3F");url=url.replace(/\&/g,"%26");return url};this.runResponse=function(){var milisec=new Date;var jsfound=false;milisec=milisec.getTime();var js_reg=/<script.*?>(.|[\r\n])*?<\/script>/ig;var js_str=js_reg.exec(this.response);if(js_str!=null){var js_arr=new Array(js_str.shift());var jsfound=true;while(js_str){js_str=js_reg.exec(this.response);if(js_str!=null)js_arr.push(js_str.shift())}for(var i=0;i<js_arr.length;i++){this.response=this.response.replace(js_arr[i],'<span id="'+milisec+i+'" style="display:none;"></span>')}}if(this.add_html){this.elementObj.innerHTML+=this.response}else{this.elementObj.innerHTML=this.response}if(jsfound){var js_content_reg=/<script.*?>((.|[\r\n])*?)<\/script>/ig;for(i=0;i<js_arr.length;i++){var mark_node=document.getElementById(milisec+''+i);var mark_parent_node=mark_node.parentNode;mark_parent_node.removeChild(mark_node);js_content_reg.lastIndex=0;var js_content=js_content_reg.exec(js_arr[i]);var script_node=mark_parent_node.appendChild(document.createElement('script'));script_node.text=js_content[1];var script_params_str=js_arr[i].substring(js_arr[i].indexOf(' ',0),js_arr[i].indexOf('>',0));var params_arr=script_params_str.split(' ');if(params_arr.length>1){for(var j=0;j<params_arr.length;j++){if(params_arr[j].length>0){var param_arr=params_arr[j].split('=');param_arr[1]=param_arr[1].substr(1,(param_arr[1].length-2));script_node.setAttribute(param_arr[0],param_arr[1])}}}}}};this.sendAJAX=function(urlstring){this.responseStatus=new Array(2);if(this.failed&&this.AjaxFailedAlert){alert(this.AjaxFailedAlert)}else{if(urlstring){if(this.URLString.length){this.URLString=this.URLString+"&"+urlstring}else{this.URLString=urlstring}}if(this.encodeURIString){var timeval=new Date().getTime();this.URLString=this.encodeURLString(this.URLString);this.setVar("rndval",timeval)}if(this.element){this.elementObj=document.getElementById(this.element)}if(this.xmlhttp){var self=this;if(this.method=="GET"){var totalurlstring=this.requestFile+"?"+this.URLString;this.xmlhttp.open(this.method,totalurlstring,true)}else{this.xmlhttp.open(this.method,this.requestFile,true)}if(this.method=="POST"){try{this.xmlhttp.setRequestHeader('Content-Type','application/x-www-form-urlencoded')}catch(e){}}this.xmlhttp.send(this.URLString);this.xmlhttp.onreadystatechange=function(){switch(self.xmlhttp.readyState){case 1:self.onLoading();break;case 2:self.onLoaded();break;case 3:self.onInteractive();break;case 4:self.response=self.xmlhttp.responseText;self.responseXML=self.xmlhttp.responseXML;self.responseStatus[0]=self.xmlhttp.status;self.responseStatus[1]=self.xmlhttp.statusText;self.onHide();self.onCompletion();if(self.elementObj){var elemNodeName=self.elementObj.nodeName;elemNodeName=elemNodeName.toLowerCase();if(elemNodeName=="input"||elemNodeName=="select"||elemNodeName=="option"||elemNodeName=="textarea"){if(self.response=='error'){alert('Access denied')}else{if(self.add_html){self.elementObj.value+=self.response}else{self.elementObj.value=self.response}}}else{if(self.response=='error'){alert('Access denied')}else{if(self.execute){self.runResponse()}else{if(self.add_html){self.elementObj.innerHTML+=self.response}else{self.elementObj.innerHTML=self.response}}}}}self.URLString="";break}}}}};this.createAJAX()};