function DynAjax(){this.timeout=300000;this.requests=new Array();this.reqnextid=0;this.semafor=true;this.autorefreshes=new Array();this.refnextid=0;this.ParamContainer=function(){this.paramsarr=new Array();this.paramstring="";this.acceptedparams=new Array("respfile","resultloc","paramloc","refreshtime","conftext","loadmsg","loadmsgloc");this.Param=function(a,b){this.name=a;this.value=b};this.processParamString=function(f){this.paramsarr=new Array();var a=f.split(";");for(rawindex=0;rawindex<a.length;++rawindex){parrawstring=a[rawindex];var c=parrawstring.split(":");if(c.length==2){var b=this.trimText(c[0]);var d=this.trimText(c[1]);if(b!=""){var e=new this.Param(b,d);for(pnameindex=0;pnameindex<this.acceptedparams.length;++pnameindex){accparam=this.acceptedparams[pnameindex];if(e.name==accparam){this.paramsarr.push(e)}}}}}};this.get=function(a){for(paramindex=0;paramindex<this.paramsarr.length;++paramindex){param=this.paramsarr[paramindex];if(param.name==a){return param.value}}return null};this.set=function(a,b){for(paramindex=0;paramindex<this.paramsarr.length;++paramindex){param=this.paramsarr[paramindex];if(param.name==a){this.paramsarr[paramindex].value=b}}};this.trimText=function(a){while(a.substring(0,1)==" "){a=a.substring(1,a.length)}while(a.substring(a.length-1,a.length)==" "){a=a.substring(0,a.length-1)}return a};this.getParamString=function(){var a="";for(paramindex=0;paramindex<this.paramsarr.length;++paramindex){param=this.paramsarr[paramindex];if(param.value!=null){a+=param.name+": "+param.value+"; "}}return a}};this.request=function(d,b){this.cleanUpRequests();params=new this.ParamContainer();params.processParamString(d);if(params.get("conftext")==null||confirm(params.get("conftext"))){this.semaforStart();var c=new this.DynAjaxRequest(this.reqnextid,params,b);this.requests.push(c);++this.reqnextid;this.semaforEnd();c.doRequest();if(params.get("refreshtime")!=null){this.semaforStart();var a=new this.AutoRefresh(this.refnextid,params,b);this.autorefreshes.push(a);++this.refnextid;this.semaforEnd();a.beginref()}}};this.cleanUpRequests=function(){this.semaforStart();for(i=0;i<this.requests.length;++i){current=new Date().getTime();if(current-this.requests[i].timestamp>this.timeout){this.requests.splice(i,1)}}this.semaforEnd()};this.getRequest=function(a){this.semaforStart();request=this.requests[this.getPos(a)];this.semaforEnd();return request};this.delRequest=function(a){this.semaforStart();this.requests.splice(this.getPos(a),1);this.semaforEnd()};this.getPos=function(a){for(i=0;i<this.requests.length;++i){if(this.requests[i].id==a){return i}}throw"Request not found"};this.semaforStart=function(){while(this.semafor==false){this.pause(1)}this.semafor=false};this.semaforEnd=function(){this.semafor=true};this.pause=function(b){var a=new Date();do{newdate=new Date()}while(newdate-a<b)};this.DynAjaxRequest=function(c,b,a){this.id=c;this.params=b;this.resultfunc=a;this.timestamp=new Date().getTime();this.xmlhttp;this.doRequest=function(){var g=this.getUrl();var e=this.getQueryString();var d=this.getActionFunction();this.xmlhttp=this.getXmlHttp(g,e,d);if((this.params.get("loadmsg")!=null)){var f=this.params.get("loadmsgloc");var h=f==null?this.params.get("resultloc"):f;if(document.getElementById(h).innerHTML!=this.params.get("loadmsg")){document.getElementById(h).innerHTML=this.params.get("loadmsg")}}this.xmlhttp.send(e)};this.getActionFunction=function(){var e="";e+="request = dynajax.getRequest("+this.id+");\nif(request.xmlhttp.readyState == 4 && request.xmlhttp.status == 200)\n{\n";if(this.params.get("resultloc")){e+='if(document.getElementById("'+this.params.get("resultloc")+'").innerHTML != request.xmlhttp.responseText) document.getElementById("'+this.params.get("resultloc")+'").innerHTML = request.xmlhttp.responseText;\n'}if(this.resultfunc!=undefined&&this.resultfunc!=null){e+="request.resultfunc(request.xmlhttp.responseText);\n"}e+="dynajax.delRequest("+this.id+");\n}";var d=new Function(e);return d};this.getUrl=function(){connectchar=this.params.get("respfile").indexOf("?")!=-1?"&":"?";var d=this.params.get("respfile")+connectchar+"timeStamp="+this.timestamp;return d};this.getFields=function(){pdiv=document.getElementById(this.params.get("paramloc"));var d=new Array("input","textarea","select");fields=new Array();for(typeid=0;typeid<d.length;++typeid){fieldtype=d[typeid];nodes=pdiv.getElementsByTagName(fieldtype);for(nodeid=0;nodeid<nodes.length;++nodeid){node=nodes[nodeid];if((fieldtype!="input"||(fieldtype=="input"&&node.type!="button"&&node.type!="file")&&((node.type!="checkbox"&&node.type!="radio")||(node.checked)))&&((fieldtype=="input"||fieldtype=="textarea"||fieldtype=="select")&&!node.disabled)){fields.push(node)}}}return fields};this.getQueryString=function(){querystring="";if(this.params.get("paramloc")!=null){var d=this.getFields();for(i=0;i<d.length;++i){var e=d[i];if(e.name!=""&&e.type!="file"){querystring+="&"+e.name+"="+escape(e.value)}}}return querystring};this.getXmlHttp=function(f,e,d){var g=window.XMLHttpRequest?new XMLHttpRequest():new ActiveXObject("MSXML2.XMLHTTP.3.0");method=(this.params.get("paramloc")==null)?"GET":"POST";g.open(method,f,true);g.onreadystatechange=d;g.setRequestHeader("Content-type","application/x-www-form-urlencoded");g.setRequestHeader("Connection","close");g.setRequestHeader("Content-length",e.length);return g}};this.AutoRefresh=function(c,b,a){this.timer=null;this.refreshtime;this.id=c;this.params=b;this.resultfunc=a;this.beginref=function(){this.refreshtime=this.params.get("refreshtime");this.params.set("refreshtime",null);setInterval("refresh = dynajax.autorefreshes["+this.id+"]; dynajax.request( refresh.params.getParamString(), refresh.resultfunc);",this.refreshtime)}}}var dynajax=new DynAjax();
