// Usage:
//   <head>
//     <script type="text/javascript" src="Ajax.js"></script>
//     <script type="text/javascript" src="class.phpMySQLgrid.js"></script>
//   </head>
//

// the Ajax Request
var pmgXMLhttp = null;

// the XSLT document
var pmgXSLTdoc;

// pgm Variables
var pmgXMLurl = '';
var pmgXSLurl = '';
var pgmDIVid  = '';

function enter_key(elem, event) {
   if (event.keyCode == "13") {
      pmgLoadXML('1','0','0', elem.id, elem.value);
   }
}

function pmgInit(_divId, _Url) {

    pgmDIVid  = _divId;
    pmgXSLurl = _Url+'=pmgLoad_XSLT';
    pmgXMLurl = _Url+'=pmgLoad_XML';

    var _pageNo  = (arguments.length > 2) ? arguments[2] : '1';
    var _sortNo  = (arguments.length > 3) ? arguments[3] : '0';
    var _sortDir = (arguments.length > 4) ? arguments[4] : '0';
    var _srchKey = (arguments.length > 5) ? arguments[5] : '0';
    var _srchVal = (arguments.length > 6) ? arguments[6] : '0';
    
    if (window.ActiveXObject || (window.XMLHttpRequest &&
                                 window.XSLTProcessor  &&
                                 window.DOMParser)) {

        pmgXMLhttp = ajaxCreateXmlHttpRequestObject();

        pmgLoadXSLT();
        pmgLoadXML(_pageNo, _sortNo, _sortDir, _srchKey, _srchVal);

        return;
    }

    alert("Your browser doesn't support the necessary functionality.");
}

function pmgLoadXSLT() {

    pmgXMLhttp.open("GET", pmgXSLurl, false);
    pmgXMLhttp.send(null);

    // Load the XSLT document
    if (this.DOMParser) {
        var dp = new DOMParser();
        pmgXSLTdoc = dp.parseFromString(pmgXMLhttp.responseText, "text/xml");
    } else if (window.ActiveXObject) { // IE?
        pmgXSLTdoc = ajaxCreateMsxml2DOMDocumentObject();
        pmgXSLTdoc.async = false;
        pmgXSLTdoc.load(pmgXMLhttp.responseXML);
    }
}


function pmgLoadXML() {
    var xml_url;

    var _pageNo  = (arguments.length > 0) ? arguments[0] : '1';
    var _sortNo  = (arguments.length > 1) ? arguments[1] : '0';
    var _sortDir = (arguments.length > 2) ? arguments[2] : '0';
    var _srchKey = (arguments.length > 3) ? arguments[3] : '0';
    var _srchVal = (arguments.length > 4) ? arguments[4] : '0';
	
    if (pmgXMLhttp && (pmgXMLhttp.readyState == 4 || pmgXMLhttp.readyState == 0)) {

        // Set Cursor to WAIT
        //document.body.style.cursor = 'wait';

        if (pmgXMLurl.indexOf("?") == -1) xml_url = pmgXMLurl+"?page="+_pageNo;
        else                              xml_url = pmgXMLurl+"&page="+_pageNo;

        xml_url += "&sort="   +_sortNo +"&sortdir="+_sortDir;
        xml_url += "&srchkey="+_srchKey+"&srchval="+_srchVal;
		
        pmgXMLhttp.open("GET", xml_url, true);
        pmgXMLhttp.onreadystatechange = pmgHandleXML;
        pmgXMLhttp.send(null);
    }
}


function pmgHandleXML() {

   if (pmgXMLhttp.readyState == 4) {
      if (pmgXMLhttp.status == 200) {

         var response = pmgXMLhttp.responseText;

         var pgmDiv = document.getElementById(pgmDIVid);

         var xmlResponse = pmgXMLhttp.responseXML;

         if (window.XMLHttpRequest && window.XSLTProcessor && window.DOMParser) {

            var xsltProcessor = new XSLTProcessor();
            xsltProcessor.importStylesheet(pmgXSLTdoc);

            var page = xsltProcessor.transformToFragment(xmlResponse, document);

            pgmDiv.innerHTML = "";
            pgmDiv.appendChild(page);

         } else if (window.ActiveXObject) {

            var theDocument = ajaxCreateMsxml2DOMDocumentObject();

            theDocument.async = false;
            theDocument.load(xmlResponse);

            genHTML = theDocument.transformNode(pmgXSLTdoc);

            replDiv = document.createElement(pgmDiv.tagName);

            replDiv.id        = pgmDiv.id;
            replDiv.className = pgmDiv.className;
            replDiv.innerHTML = genHTML;

	        pgmDiv.parentNode.replaceChild(replDiv, pgmDiv);
         }

      } else {
         alert("Error reading server response.")
      }
      
      // Set Cursor to DEFAULT
      document.body.style.cursor = 'default';
   }
}
