function HttpClient(){}
HttpClient.prototype = {
 requestType: 'GET',
 isAsync: false,
 isXML: false,
 xmlhttp: false,
 callback: false,
 /**
   Az ajax hivas elkuldesekor vegrehajtando tevekenyseg
   @divid          string         annak a layer-nek az azonositoja ahova a vegeredmeny kerul
 */
 onSend: function(divid){
   if( divid ){
     document.getElementById(divid).innerHTML = "<br /><span style='margin:0px 0px 0px 10px;background:#ffffff;'>Adatfeldolgozás...</span>";
   }
 },
 /**
   Az ajax hivas betoltodesekor vegrehajtando tevekenyseg
   @divid          string         annak a layer-nek az azonositoja ahova a vegeredmeny kerul
 */
 onLoad: function(divid){
   if( divid ){
     document.getElementById(divid).innerHTML = "<br /><span style='margin:0px 0px 0px 10px;background:#ffffff;'>Kész</span>";
   }
 },
 /**
   Hiba eseten vegrehajtando tevekenyseg
   @error          string         annak a layer-nek az azonositoja ahova a vegeredmeny kerul
 */
 onError: function(error){
 },
 /**
   Az ajax hivas inicializalasa
 */
 init: function(){
  try{
   this.xmlhttp=new XMLHttpRequest();
  }
  catch(e){
   var xmlhttp_ids = new Array('MSXML2.XMLHTTP.5.0',
             'MSXML2.XMLHTTP.4.0',
             'MSXML2.XMLHTTP.3.0',
             'MSXML2.XMLHTTP',
             'Microsoft.XMLHTTP');
   var success = false;
   for(var i = 0;i < xmlhttp_ids.length && !success; i++){
    try{
     this.xmlhttp = new ActiveXObject(xmlhttp_ids[i]);
     success = true;
    }
    catch (e){}
   }
   if(!success){
    this.onError('Nem lehet XMLHttpRequest hívást kezdeményezni.');
   }
  }
 },
 /**
   Az ajax hivas kezdemenyezese
   @url            string         a fogado script url-je, ahol a feldolgozas tortenik
   @payload        string         ha a request tipusa post, akkor ez tartalmazza a post parametereket
   @divid          string         annak a layer-nek az azonositoja ahova a vegeredmeny kerul
   @return         string         ha nem aszinkron volt a hivas, akkor az eredmeny itt tarolodik
 */
 makeRequest: function(url,payload,divid){
  if(!this.xmlhttp){
   this.init();
  }
  this.xmlhttp.open(this.requestType,url,this.isAsync);
  if(this.requestType == 'POST'){
   this.xmlhttp.setRequestHeader('Content-type','application/x-www-form-urlencoded;charset=UTF-8');
  }
  this.xmlhttp.onreadystatechange = function(){
   self._readyStateChangeCallback(divid);
  }
  var self=this;
  this.xmlhttp.send(payload);
  if( !this.isAsync ){
   return (this.isXML?this.xmlhttp.responseXML:this.xmlhttp.responseText);
  }
 },
 /**
   Az ajax hivas visszateresenek lekezelese
   @divid          string         annak a layer-nek az azonositoja ahova a vegeredmeny kerul
 */
 _readyStateChangeCallback: function(divid){
  switch(this.xmlhttp.readyState){
   case 0:
   case 1:
   case 2:
    this.onSend(divid);
   break;
   case 4:
    this.onLoad(divid);
    if( this.xmlhttp.status == 200 ){
     this.callback(this.xmlhttp.responseText);
    }
    else {
     this.onError('HTTP hiba történt a lekérdezéskor: ['+this.xmlhttp.status+'] '+this.xmlhttp.statusText);
    }
   break;
  }
 }
}
