// loadxmldoc

var aQueueDivID = new Array();
var aQueueURL = new Array();
var aQueueParam = new Array();

// Processing Flag - 0-False 1-True
bProcessing = 0;

// Counter of current request
iCurrentRequest = 0;

// function the user calls.
function loadXMLDoc(url,param,divid) {
  aQueueDivID[aQueueDivID.length] = divid;
  aQueueURL[aQueueURL.length] = url;
  aQueueParam[aQueueParam.length] = param;
  
  // Print "Loading..." in the the place where the page should appear
  document.getElementById(divid).innerHTML = "Laddar...";

  // first request or if all requests are processed
  if (bProcessing == 0) {
    nextRequest();
  }
}

function nextRequest() {
  bProcessing = 1;
  iCurrentRequest = iCurrentRequest + 1; 

  // branch for native XMLHttpRequest object
  if (window.XMLHttpRequest) {
    req = new XMLHttpRequest();
    req.onreadystatechange = processReqChange;
    if(aQueueParam[iCurrentRequest-1]) {
      req.open("POST", aQueueURL[iCurrentRequest-1], true);
      req.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
      req.setRequestHeader("Content-length", aQueueParam[iCurrentRequest-1].length);
      req.setRequestHeader("Connection", "close");
      req.send(aQueueParam[iCurrentRequest-1]);	
    }
    else {
      req.open("GET", aQueueURL[iCurrentRequest-1], true);
      req.send(null);
    }
  }
  
  // branch for IE/Windows ActiveX version
  else if (window.ActiveXObject) {
    req = new ActiveXObject("Microsoft.XMLHTTP");
    if (req) {
      req.onreadystatechange = processReqChange;
      if(aQueueParam[iCurrentRequest-1]) {
        req.open("POST", aQueueURL[iCurrentRequest-1], true);
        req.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
        req.setRequestHeader("Content-length", aQueueParam[iCurrentRequest-1].length);
        req.setRequestHeader("Connection", "close");
        req.send(aQueueParam[iCurrentRequest-1]);	
      }
      else {
        req.open("GET", aQueueURL[iCurrentRequest-1], true);
        req.send(null);
      }
	}
  }
}

function processReqChange() {
  // readyState - 4 = Page is Complete
  if (req.readyState == 4) {
    if (req.status == 200) { 
      document.getElementById(aQueueDivID[iCurrentRequest-1]).innerHTML = req.responseText;
    }
    bProcessing = 0;
    if (aQueueURL.length > iCurrentRequest) {
      // the current request is complete so run the next request that is in the array.
      nextRequest();
    }
  }
}
