Lycos.ajax=new function(){this.lyAjaxReqs=new Array();this.doWait=0;this.useCache=[];this.cache={};this.wait=function(cache){this.doWait++;this.useCache.push(cache?true:false);}
this.endWait=function(){if(this.doWait>0){this.doWait--;this.useCache.pop();}}
this.lyAjaxReq=function(freed,obj,request){this.freed=freed;this.xmlhttp=false;this.obj=obj;this.request=request;if(window.XMLHttpRequest){this.xmlhttp=new XMLHttpRequest();}else if(window.ActiveXObject){this.xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");}}
this.requestPost=function(obj,url,data){if(this.doWait>0&&this.useCache[this.doWait-1]&&typeof(this.cache[url])!="undefined")
return this.cache[url];var pos=-1;for(var i=0;i<this.lyAjaxReqs.length;i++){if(this.lyAjaxReqs[i].freed==1){pos=i;break;}}
if(pos==-1||this.lyAjaxReqs[pos].xmlhttp==null){pos=this.lyAjaxReqs.length;this.lyAjaxReqs[pos]=new this.lyAjaxReq(1,obj,data);}
if(this.lyAjaxReqs[pos].xmlhttp){this.lyAjaxReqs[pos].freed=0;this.lyAjaxReqs[pos].xmlhttp.open("POST",url,(this.doWait==0));this.lyAjaxReqs[pos].obj=obj;this.lyAjaxReqs[pos].request=data;var tmp=this;if(this.doWait==0)this.lyAjaxReqs[pos].xmlhttp.onreadystatechange=function(){Lycos.ajax.httpChange(pos);};else this.lyAjaxReqs[pos].xmlhttp.onreadystatechange=function(){};this.lyAjaxReqs[pos].xmlhttp.setRequestHeader("Content-Type","application/form-data");this.lyAjaxReqs[pos].xmlhttp.send(JSON.stringify(data));if(this.doWait>0){this.lyAjaxReqs[pos].freed=1;var result=this.lyAjaxReqs[pos].xmlhttp.responseText;this.lyAjaxReqs[pos].xmlhttp=null;if(this.useCache[this.doWait-1])
this.cache[url]=result;return result;}}
return null;}
this.httpChange=function(pos){if(typeof(this.lyAjaxReqs[pos])!='undefined'&&this.lyAjaxReqs[pos].freed==0&&this.lyAjaxReqs[pos].xmlhttp.readyState==4){if(this.lyAjaxReqs[pos].xmlhttp.status==200||this.lyAjaxReqs[pos].xmlhttp.status==304){var data=JSON.parse(this.lyAjaxReqs[pos].xmlhttp.responseText);if(typeof(data.lycosError)!="undefined")this.lyAjaxReqs[pos].obj.lyOnAjaxFail(data);else{if(data.response&&!data.request&&this.lyAjaxReqs[pos].request)
data.request=this.lyAjaxReqs[pos].request;this.lyAjaxReqs[pos].obj.lyOnAjaxSuccess(data);}}else{this.lyAjaxReqs[pos].obj.lyOnAjaxFail(new Object());}
this.lyAjaxReqs[pos].freed=1;}}
this.requestForm=function(obj,form,url,action){var data=new Object();var inputs=form.getElementsByTagName("input");for(var i=0;i<inputs.length;i++)
{if(inputs[i].name!=""&&((inputs[i].type!="radio"&&inputs[i].type!="checkbox")||inputs[i].checked))
data=this.addVarFromName(data,inputs[i].name,inputs[i].value);}
var areas=form.getElementsByTagName("textarea");for(var i=0;i<areas.length;i++)
{if(areas[i].name!="")
data=this.addVarFromName(data,areas[i].name,areas[i].value);}
var selects=form.getElementsByTagName("select");for(var i=0;i<selects.length;i++)
{if(selects[i].name!=""){var opta=selects[i].getElementsByTagName("option");if(opta.length==0)continue;var opt=opta[selects[i].selectedIndex];data=this.addVarFromName(data,selects[i].name,(opt.value!=""?opt.value:opt.innerHTML));}}
return this.requestPost(obj,(url?url:"/adm/ajax.php?m="+obj.instId+(action?"&a="+action:"")),data);}
this.requestObj=function(obj,data,action){return this.requestPost(obj,"/adm/ajax.php?m="+obj.instId+(action?"&a="+action:""),data);}
this.addVarFromName=function(data,name,value){name=name.replace(/\]/g,"");var x="data";var namearray=name.split("[");for(var i=0;i<namearray.length-1;i++){if(!isNaN(parseInt(namearray[i])))
x=x+"["+namearray[i]+"]";else
x=x+"."+namearray[i];eval("if ("+x+" == null) {"+x+"=new Object();}");}
var lastpiece=namearray[namearray.length-1];x=eval(x);x[lastpiece]=value;return data;}}
