
var ADReq   = new Array();
var tmADReq = new Array();
var ADCode  = false;
var ADSess  = false;
var _DEBUG_ = false;
var elInfo  = null;

function ADRequest(cmd, post, id)
{
  if(_DEBUG_ && !elInfo)
  {
    elInfo = document.getElementById('information');
    elInfo.innerHTML = '<h3>Ajax Debug Screen</h3>';
  }

  var timeout = 8000;
  if(location.href.substr(0, 7) == 'file://')  return;

  if(typeof(id) == 'undefined') id = 'ADRequest';
  else timeout = 30000;

  if(_DEBUG_) elInfo.innerHTML += 'ADRequest ('+id+')<br/>';

  if(tmADReq[id] && ADReq[id])
  {
    clearTimeout(tmADReq[id]);
    ADReq[id].abort();
    delete tmADReq[id]
    delete ADReq[id];
  }
  ADReq[id] = xmlHTTPRequestObject();
  if(ADReq[id])
  {
    if(!post) post='';
    tmADReq[id] = setTimeout("ADReqTimeOut('"+id+"')", timeout);

    var d = new Date().getTime();

    ADReq[id].open('POST', 'php/ADRequest.php?id='+id+'&cmd='+cmd+'&sess='+ADSess+'&x='+d, true);
    ADReq[id].onreadystatechange = ADReqReady;
    ADReq[id].setRequestHeader("Content-type", "application/x-www-form-urlencoded; charset=UTF-8");
    ADReq[id].setRequestHeader("Content-length", post.length);
    ADReq[id].send(post);

  } else {
    alert('HttpRequestObject is niet aanwezig, waarschijnlijk moet u uw browser updaten');
  }
}

function ADReqReady()
{
  for(var id in ADReq)
  {
    if(ADReq[id].readyState==4)
    {
      ADResult(id, ADReq[id].responseText, ADReq[id].status, ADReq[id].statusText);
      delete ADReq[id];
    }
  }
}

function ADReqTimeOut(id)
{
  if(_DEBUG_) elInfo.innerHTML += 'ADReqTimeOut ('+id+')<br/>';

  delete tmADReq[id];
  if(ADReq[id])
  {
    ADReq[id].abort();
    delete ADReq[id];
  }
  if(id.substr(0,3) == 'wi_')
  {
    //delete AvailTm[id];
    var el=document.getElementById(id);
    if(el) el.click();
  }
  else
  if(id.substr(0,10) == 'checkmail_')
  {
    SetMail(id.substr(10), 'Time-out; mogelijk is deze mailbox te groot');
  }
  else if(id != 'watchdog')
  {
    alert('Er is een time-out opgetreden bij de synchronisatie naar de server.\nControleer uw internetverbinding en probeer opnieuw.');
  }
}

function ADResult(id, Result, Status, StatusText)
{
  if(_DEBUG_) elInfo.innerHTML += 'ADResult ('+id+') = '+Status+'<br/>';

  clearTimeout(tmADReq[id]);
  delete tmADReq[id];

  if(Status == 200)
  {
    var s, e, a = Result.indexOf('[ADHosting]');
    if(a != -1)
    {
      a++;

      s = Result.indexOf('<script>', a);
      e = Result.indexOf('</script>', s);

      if(s>0 && e>0)
      {
        s+=8;
        //alert(Result.substring(s, e));
        eval(Result.substring(s, e));
      }

      s = Result.indexOf('<error>', a);
      e = Result.indexOf('</error>', s);

      if(s>0 && e>0)
      {
        s+=7;
        alert(Result.substring(s, e));
      }
    }
    else
    {
      alert('Error on `'+id+'`\n'+Result);
    }
  }
  else if(Status == 0)
  {
    if((id != 'watchdog') &&
       //(id != 'cpPanel') &&
       (id != 'cpPage') &&
       (id.substr(0,10) != 'checkmail_') &&
       (id.substr(0,3) != 'wi_'))
    {
      alert('DEBUG : Transfer aborted: `'+id+'`');
    }
  }
  else if((Status == 12152) && (id == 'watchdog'))
  {
    SetWatchDogExport(100);
  }
  else if((Status == 12152) && (id == 'cpPanel'))
  {
    alert('debug : 12152');
    cpTab();
  }
  else if((Status == 12152) && (id.substr(0,3) == 'wi_'))
  {
    var el=document.getElementById(id);
    if(el) el.click();
  }
  else
  {
    alert('DEBUG : Unknow status on `'+id+'`\n'+Status + ' : '+StatusText);
  }
}



/* XMLHTTP functions 0.2 */
/* For all the Railsers out there */

/* Revisions */
/* 0.1 - 24 Jan 2005 - Written by Peter Cooper (coops) */
/* 0.2 - 26 Jan 2005 - ixXMLHTTPRequestSupported and success object checking supplied
			by Jakob of http://Mentalized.net/ */

/* The licence is simple, use however you want, but leave attribution to any authors
   listed above, including yourself :-) */

function xmlHTTPRequest(url, method, data) {
  if (!method) method = "GET";
  if (!data) data = null;
  req = xmlHTTPRequestObject();
  if (req) {
	  req.open (method, url, false);
	  req.send (data);
	  return req.responseText;
  }
  return false;
}

function xmlHTTPAsyncRequest(url, method, data, callbackr) {
  if (!method) method = "GET";
  if (!data) data = null;
  req = xmlHTTPRequestObject();
  if (req) {
  	eval ('req.onreadystatechange = ' + callbackr + ';');
	req.open (method, url, true);
	req.send (data);
	return req
  }
}

function xmlHTTPRequestObject() {
	var obj = false;
	var objectIDs = new Array(
		"Microsoft.XMLHTTP",
		"Msxml2.XMLHTTP",
		"MSXML2.XMLHTTP.3.0",
		"MSXML2.XMLHTTP.4.0"
	);
	var success = false;

	for (i=0; !success && i < objectIDs.length; i++) {
		try {
			obj = new ActiveXObject(objectIDs[i]);
			success = true;
		} catch (e) { obj = false; }
	}

	if (!obj)
		obj = new XMLHttpRequest();

	return obj;
}

function isXMLHTTPRequestSupported() {
	return xmlHTTPRequestObject != null;
}

