var execCount = 0;
var currentDiv = "";
var topHeading = "";
var queAllow = true;
var queBool = new Array(10);
var queUrl = new Array(10);
var ajaxHistory = new Array();
var ajaxHistoryCount = 0;
var ajaxHistoryMaxCount = 0;
var recordHistory = true;
var totalBytes = 0;
for (var i = 0; i < 10; i++) {
  queBool[i] = false;
  queUrl[i] = "";
}

function loadPage(url) {

  if (queAllow == true) {
    queAllow = false
    xmlHttp = new GetXmlHttpObject()
    if (xmlHttp==null) {
      alert ("Browser does not support HTTP Request")
      return
    }
    if (url.charAt(0)=="-")
      recordHistory = false;
    if (recordHistory) {
      ajaxHistoryCount++;
      if (ajaxHistoryCount > ajaxHistoryMaxCount) {
        ajaxHistoryMaxCount++;
      }
      ajaxHistory[""+ajaxHistoryCount+""]=url;
    }
    url = url.replace("-","");
    recordHistory = true;
    xmlHttp.onreadystatechange=stateChanged
    xmlHttp.open("GET",url,true)
    xmlHttp.send(null)
  } else {
    i = 0;
    while (queBool[i] == true) {
      i++;
    }
    queAllow = false
    queBool[i] = true
    queUrl[i] = url
  }
}

function prevPage() {
  recordHistory = false;
  if (ajaxHistoryCount > 1) {
    ajaxHistoryCount--;
    loadPage(ajaxHistory[""+ajaxHistoryCount+""]);
  }
  recordHistory = true;
}

function refreshPage() {
  recordHistory = false;
  loadPage(ajaxHistory[""+ajaxHistoryCount+""]);
  recordHistory = true;
}

function nextPage() {
  recordHistory = false;
  if (ajaxHistoryCount < ajaxHistoryMaxCount) {
    ajaxHistoryCount++;
    loadPage(ajaxHistory[""+ajaxHistoryCount+""]);
  }
  recordHistory = true;
}

function stateChanged() {

  if (xmlHttp.readyState==1) {
    document.getElementById("Loading").className='showLoading';
  }
  if (xmlHttp.readyState==4 || xmlHttp.readyState=="complete") {
    
    execCount++;
    var debugText = "<strong>Execution: "+execCount+"</strong><br />"+xmlHttp.responseText.replace(/</g,"&lt;");
    var contentText = xmlHttp.responseText;
    document.getElementById('debug').innerHTML=debugText;
    var countBytesText = xmlHttp.responseText.replace(/\n/g,"  ");
    countBytesText = countBytesText.replace(/\t/g,"  ");
    totalBytes = totalBytes+countBytesText.length;
    document.getElementById('ByteStats').innerHTML="Last Fetch: "+countBytesText.length+" bytes<br />Total Fetched: "+(Math.round((totalBytes/1024)*100)/100)+"KB";
    var divContent = new Array();
    divContent = contentText.split("{%startDiv:");





    for (var i=1;i<divContent.length;i++) {
      var divIDEndPos = divContent[i].indexOf('%}');
      var contentStartPos = divIDEndPos+2;
      var appendContent = false;
      if ((divContent[i].indexOf('+')) == (divIDEndPos-1)) {
        divIDEndPos--;
        contentStartPos++;
        appendContent = true;
      }
      var divID = divContent[i].substring(0,divIDEndPos);
      var contentEndPos = divContent[i].indexOf('{%endDiv');
      var divInnerHTML = divContent[i].substring(contentStartPos,contentEndPos);

      if (appendContent) {

        document.getElementById(divID).innerHTML=document.getElementById(divID).innerHTML+divInnerHTML;
      } else {
       //document.getElementById(divID).innerHTML=divInnerHTML;
    while (document.getElementById(divID).firstChild) 
    {
        //The list is LIVE so it will re-index each call
        document.getElementById(divID).removeChild(document.getElementById(divID).firstChild);
    };


           var span  = document.createElement('SPAN');
          span.innerHTML = divInnerHTML;
          document.getElementById(divID).appendChild(span);




      }

      
      if (divContent[i].charAt(contentEndPos+8)==":") {
        var endEndTag = divContent[i].lastIndexOf('%}');

        if (divContent[i].substring(contentEndPos+9,contentEndPos+19) == "javascript") {
          var endEndTag = divContent[i].lastIndexOf('%}');
          var exeJS = divContent[i].substring(contentEndPos+20,endEndTag);
          setTimeout(exeJS,0);
        } else { 
          var endEndTag = divContent[i].lastIndexOf('%}');
          var newLoadPage = divContent[i].substring(contentEndPos+9,endEndTag);
          setTimeout('loadPage(\''+newLoadPage+'\');',0);
        }
      }
    }

           var h = document.getElementsByTagName('head')[0];
     if( document.getElementById(divID) ){
         var scripts = document.getElementById(divID).getElementsByTagName('script');

        for (var i = 0; i < scripts.length; i++) {

            var s = scripts[i];

                if( s.innerHTML ){

                    var x = document.createElement('script');
                    x.text = s.innerHTML;

                    h.appendChild(x);
                    h.removeChild(x);
                 }
        }
     }
    queAllow = true
    i = 0;
    while (queBool[i] == false) {
      i++;
    }
    if (queBool[i]==true) {
      queBool[i] = false
      loadPage(queUrl[i])
      queUrl[i] = ""
    }
    document.getElementById("Loading").className='hideLoading';
  }
}

function GetXmlHttpObject(handler) { 
  var objXMLHttp = null
  if (window.XMLHttpRequest) {
    objXMLHttp = new XMLHttpRequest()
  }
  else if (window.ActiveXObject) {
    objXMLHttp = new ActiveXObject("Microsoft.XMLHTTP")
  }
  return objXMLHttp
}

function httpPost(obj,page,params,divID) {
  var formName = document.getElementById(obj);
  var iFormElement = 0;
  var getstr = "";
  if (params+"" != "") {
    getstr += "?"+params;
  }
  while(formName.elements[iFormElement]) {
    if (getstr+""!="") {
      getstr += "&";
    } else {
      getstr += "?";
    }
    if (formName.elements[iFormElement].type+'' == 'checkbox') {
      if (formName.elements[iFormElement].checked) {
        getstr += formName.elements[iFormElement].name+"="+formName.elements[iFormElement].value;
      }
    } else {
      getstr += formName.elements[iFormElement].name+"="+formName.elements[iFormElement].value;
    }
    iFormElement++;
  }
  loadPage(page+getstr,divID,'');
}