//Ajax kéréseket küldő osztály, mely sorba rendezi a kérelmeket így biztosítva, hogy mind lefusson, és
//ne szakíthassák meg egymást
function sbAjax(){
  
  sbAjax.xhr = null
  sbAjax.list = new Array()
  sbAjax.running = 0
  
  sbAjax.getAjax = function(){
    if (typeof XMLHttpRequest != "undefined"){
      sbAjax.xhr = new XMLHttpRequest();
    }else{
      ajaxVersions = ["MSXML2.XMLHttp.6.0", "MSXML2.XMLHttp.3.0", "Microsoft.XMLHTTP"]
      for (i=0;i<ajaxVersions.length;i++){
        try{
          sbAjax.xhr = new ActiveXObject(ajaxVersions[i])
        }catch (error){
          //Nem jelzünk hibát, mert hát minek
        }
      }
    }
    return sbAjax.xhr
  }
  
  sbAjax.addQuery = function(method, file, sendStr, asynch, callBack, load, loadDone, nocache){
    tmp = new Array(method, file, sendStr, asynch, callBack, load, loadDone, nocache)
    sbAjax.list.push(tmp)
    sbAjax._runNext()
  }
  
  sbAjax._runNext = function(){
    if (sbAjax.running == 0 && sbAjax.list.length > 0){
      sbAjax._runQuery()
    }
  }
  
  sbAjax._runQuery = function(){
    sbAjax.running++
    tmp = sbAjax.list[0]
    eval(tmp[5])
    sbAjax.xhr.onreadystatechange = function(){
      if (sbAjax.xhr.readyState == 4){
        if (sbAjax.xhr.responseText == "Az erőforrás használatához be kell jelentkezni!"){
          window.location = gBaseAdmin
        }
        eval(sbAjax.list[0][6])
        sbAjax.list[0][4] = sbAjax.list[0][4].replace(/\)$/, ", sbAjax.xhr.responseText, sbAjax.xhr.responseXML)").replace(/\(,/g, "(")
        eval(sbAjax.list[0][4])
        sbAjax.running--
        sbAjax.list.shift()
        sbAjax._runNext()
      }
    }
    if (tmp[7]){
      tmp[1] = tmp[1]+"?nocache="+Math.random()
    }
    sbAjax.xhr.open(tmp[0], tmp[1], tmp[3])
    if (tmp[0] == "POST"){
      sbAjax.xhr.setRequestHeader("Content-type", "application/x-www-form-urlencoded")
      sbAjax.xhr.setRequestHeader("Content-length", tmp[2].length)
      sbAjax.xhr.setRequestHeader("Connection", "close")
    }
    sbAjax.xhr.send(tmp[2])
  }
  
  sbAjax.getAjax()
  
}

new sbAjax()