function ajaxInit(){

var ajax = new Object();

ajax.onSuccess = false;
ajax.onError = false;
ajax.wait = 5000;
ajax.url = '';
ajax.method='GET';

ajax.parseParams =function(name,value){
  var ret='';
  if(typeof(value)=='object'){
    for(var i in value){

      if(name){var nextname = encodeURIComponent(name) + '['+encodeURIComponent(i)+']';}
      else{nextname=i;}
      ret+= ajax.parseParams(nextname,value[i]);
    }
  }
  else{ret = name+'='+encodeURIComponent(value)+"&";}
  return ret;
}

ajax.load = function (params) {
    if(params.method !='POST'){params.method ='GET';}

    if(!params.retType || params.retType == 'undefined' ){params.retType ='text';}




    var validparams = new Array();

    if(typeof(params.data)=='object'){
      var str = ajax.parseParams('',params.data);
      params.data = str.substr(0,str.length-1);
    }
    else if(!params.data || params.data =='undefined'){params.data='';}
   // var_dump(params.data);

    if(params.method != 'POST'){
      var tmp = params.url.split('?');
      if(tmp[1] && tmp[1]!='undefined'){params.data =tmp[1]+'&'+params.data;}
      params.url = tmp[0]+'?'+params.data;
    }

    this.params = params;

    if(params.url && params.url !='undefined' ) {
      var now = new Date();

      if (window.XMLHttpRequest) {
        this.req = new XMLHttpRequest();
        this.req.onreadystatechange = this.tryLoad;
        //params.url+='?&'+now.getTime();
        //alert(params.data);
        this.req.open(params.method, params.url, true);
        this.req.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
        //this.req.setRequestHeader('Content-Type', 'multipart/form-data');
        //alert(params.data);
        this.req.send(params.data);
      } else if (window.ActiveXObject) {
        this.req = new ActiveXObject("Microsoft.XMLHTTP");
        if (this.req) {
            this.req.onreadystatechange = this.tryLoad;
            this.req.open(params.method, params.url, true);
            this.req.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
            //this.req.setRequestHeader('Content-Type', 'multipart/form-data');
            this.req.setRequestHeader("Content-length", params.data.length);
            this.req.send(params.data);
        }
      }
    }
}

ajax.tryLoad = function () {

    if (ajax.req.readyState == 4) {

        if (ajax.req.status == 200){
            var answer = ajax.req.responseText;
            //alert(answer);
            if(ajax.params.retType=='json' && answer){
              answer = ''+answer+'';
              //alert(answer);
              answer =  eval('(' + answer + ')');
              //alert(answer.ok);
            }

            if(ajax.params.onSuccess){
               ajax.params.onSuccess(answer);
            }
        } else {

            if(ajax.params.onError){
               ajax.params.onError(ajax.req.status);
            }
        }
    }
}



return ajax;
}




var ajax = ajaxInit();
