//*****************************************************************
//** Common JavaScript AJAX Library
//*****************************************************************


// Utility function to obtain a valid XMLHttpRequest object.

    var XMLHttpRequestObject;
    if (window.ActiveXObject)
    {
        try
        {
           XMLHttpRequestObject= new ActiveXObject("Microsoft.XMLHTTP");
        } catch (e)
        {
           XMLHttpRequestObject = new ActiveXObject("Msxml2.XMLHTTP");
        }
    }
    else
        XMLHttpRequestObject = new XMLHttpRequest();
  
/* Common values for the ReadyState of the XMLHttpRequest object */
var READYSTATE_UNINITIALIZED = 0;
var READYSTATE_LOADING = 1;
var READYSTATE_LOADED = 2;
var READYSTATE_INTERACTIVE = 3;
var READYSTATE_COMPLETE = 4;

/* Common values for HTTP status codes */
var HTTPSTATUS_OK = 200;


function getData(dataSource, divID) 
      { 
        if(XMLHttpRequestObject) {
          var obj = document.getElementById(divID); 
          XMLHttpRequestObject.open("Get", dataSource); 

          XMLHttpRequestObject.onreadystatechange = function() 
          { 
            if (XMLHttpRequestObject.readyState == READYSTATE_COMPLETE && 
              XMLHttpRequestObject.status == HTTPSTATUS_OK) { 
                obj.innerHTML = XMLHttpRequestObject.responseText; 
            } 
          } 

          XMLHttpRequestObject.send(null); 
        }
      }



function postData(dataSource, divID, data) 
      { 
        if(XMLHttpRequestObject) {
          var obj = document.getElementById(divID); 
          XMLHttpRequestObject.open("POST", dataSource); 
		  XMLHttpRequestObject.setRequestHeader('Content-Type',
		  	'application/x-www-form-urlencoded');
          XMLHttpRequestObject.onreadystatechange = function() 
          { 
            if (XMLHttpRequestObject.readyState == READYSTATE_COMPLETE && 
              XMLHttpRequestObject.status == HTTPSTATUS_OK) { 
                obj.innerHTML = XMLHttpRequestObject.responseText; 
            } 
          } 

          XMLHttpRequestObject.send(data); 
        }
      }
      
function loadForm(dataSource, divID, data) 
      { 
        if(XMLHttpRequestObject) 
		{
          	var obj = document.getElementById(divID); 
          	var myForm = document.createElement("form");
          	
			myForm.id = "myForm" ;
          	XMLHttpRequestObject.open("POST", dataSource); 
		  	XMLHttpRequestObject.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
          	XMLHttpRequestObject.onreadystatechange = function() 
          { 
            if (XMLHttpRequestObject.readyState == READYSTATE_COMPLETE && XMLHttpRequestObject.status == HTTPSTATUS_OK) 
			{ 
                myForm.innerHTML = XMLHttpRequestObject.responseText; 
                obj.innerHTML = " ";
                obj.appendChild(myForm);
            } 
          } 

          XMLHttpRequestObject.send(data); 
        }
      }

// mozXPath [http://km0ti0n.blunted.co.uk/mozxpath/] km0ti0n@gmail.com
// Code licensed under Creative Commons Attribution-ShareAlike License 
// http://creativecommons.org/licenses/by-sa/2.5/

if( document.implementation.hasFeature("XPath", "3.0") )
{
	XMLDocument.prototype.selectNodes = function(cXPathString, xNode)
	{
		if( !xNode ) { xNode = this; } 

		var oNSResolver = this.createNSResolver(this.documentElement)
		var aItems = this.evaluate(cXPathString, xNode, oNSResolver, XPathResult.ORDERED_NODE_SNAPSHOT_TYPE, null)
		var aResult = [];
		for( var i = 0; i < aItems.snapshotLength; i++)
		{
			aResult[i] =  aItems.snapshotItem(i);
		}
		
		return aResult;
	}
	XMLDocument.prototype.selectSingleNode = function(cXPathString, xNode)
	{
		if( !xNode ) { xNode = this; } 

		var xItems = this.selectNodes(cXPathString, xNode);
		if( xItems.length > 0 )
		{
			return xItems[0];
		}
		else
		{
			return null;
		}
	}

	Element.prototype.selectNodes = function(cXPathString)
	{
		if(this.ownerDocument.selectNodes)
		{
			return this.ownerDocument.selectNodes(cXPathString, this);
		}
		else{throw "For XML Elements Only";}
	}

	Element.prototype.selectSingleNode = function(cXPathString)
	{	
		if(this.ownerDocument.selectSingleNode)
		{
			return this.ownerDocument.selectSingleNode(cXPathString, this);
		}
		else{throw "For XML Elements Only";}
	}

}
