// JavaScript Document

function Ajaxolah(url){
  this.debug=false;
  this.url=url;
  this.func=null;
  this.startFunc=null;
  this.endFunc=null;
  this.submitFormId='';
  this.start_wait=function(){
    if(this.startFunc)this.startFunc();
  },
  this.end_wait=function(){
    if(this.endFunc)this.endFunc();
  },
  this.submit=function(fid){
    var f=document.getElementById(fid);
    if(!f)return false;
    var fa=f.elements;
    var s='&ajax=1&formid='+fid;this.fields=new Object();
    for(var i=0;i<fa.length;i++){
      if(fa[i].tagName=='INPUT'){
        if(typeof(fa[i].type)!='undefined'){
          if(fa[i].type=='checkbox'){if(fa[i].checked)s=s+'&'+fa[i].name+'='+encodeURIComponent(fa[i].value);//else s=s+'&'+fa[i].name+'=0';
          }
          else if(fa[i].type=='radio'){if(fa[i].checked)s=s+'&'+fa[i].name+'='+encodeURIComponent(fa[i].value);//else s=s+'&'+fa[i].name+'=0';
          }
          else s=s+'&'+fa[i].name+'='+encodeURIComponent(fa[i].value);
        }else{
          s=s+'&'+fa[i].name+'='+encodeURIComponent(fa[i].value);  
        }
      }else{
        s=s+'&'+fa[i].name+'='+encodeURIComponent(fa[i].value);
      }
        
      
      
    
    }
      
    this.request(s);
    return false;
  },
  this.decode=function(re){
    if(!this.he){
      return Base64.decode(re);
    }else{
      return decDES64(this.he,re);
    }
  },
  this.encode=function(re){
    if(!this.he){
      return Base64.encode(re);
    }else{
      return encDES64(this.he,re);
    }
  },
  this.loadTo=function(re,we){
    var a=document.getElementById(we);
    if(!a)return false;
    a.innerHTML=this.decode(re);
  },
  this.makeIt=function(re,we){
     this.debugZone=document.getElementById('debugZone');
     if(!this.debugZone)this.debug=false;  
    var evalAlerts='';
    var b=re.split("\n");
    
    var e='';var l='';var f='';var s='';
    for(var i=0;i<b.length;i++){
      var x=b[i].split(" ");
      if(x[0]=='E:'){
        e=this.decode(x[1]);
        try{
          if(this.debug)this.debugZone.innerHTML=e;
          eval(e);
        }
        catch(ex){
          evalAlerts=evalAlerts+ex;
        }
      }
      if(x[0]=='W:')we=this.decode(x[1]);
      if(x[0]=='L:')this.loadTo(x[1],we);
      if(x[0]=='F:')this.submitFunc=this.decode(x[1]);
    }
    if((evalAlerts!='')&&(this.debug))this.debugZone.innerHTML=this.debugZone.innerHTML+'<hr>'+evalAlerts;
  },
  this.evalAfterAjax=function(){
    if (http_request.readyState == 4)
    {
      if (http_request.status == 200)
      {
        var re = http_request.responseText;
        var he = http_request.getResponseHeader('X-Ajax-Fish');
        var we = http_request.getResponseHeader('X-Ajax-Where');
        if(he){this.he=he;if(he=='clr')this.he=false;};
        this.makeIt(re,we);
        this.end_wait();
        return false;
        http_request=null;
      } else {
        this.end_wait();
        http_request=null;
      }
    }else {
      return false;
      
    }
  },
  this.request=function(parameters) {
      http_request = false;this.start_wait();
      if (window.XMLHttpRequest) { // Mozilla, Safari,...
         http_request = new XMLHttpRequest();
         if (http_request.overrideMimeType) {
            http_request.overrideMimeType('text/html');
         }
      } else if (window.ActiveXObject) { // IE
         try {
            http_request = new ActiveXObject("Msxml2.XMLHTTP");
         } catch (e) {
            try {
               http_request = new ActiveXObject("Microsoft.XMLHTTP");
            } catch (e) {}
         }
      }
      if (!http_request) {
         this.end_wait();
         return false;
      }
      var that=this;
      http_request.onreadystatechange = function(){that.func();};
      http_request.open('POST', this.url, true);
      http_request.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
      http_request.setRequestHeader("Content-length", parameters.length);
      http_request.setRequestHeader("Connection", "close");
      http_request.send(parameters);
   },
   this.init=function(){
     this.func=function(){this.evalAfterAjax();};

   }
   this.init();
}

var ajaxolah=new Ajaxolah('settings.php');
