// adds the required 'select' functions in firefox...
function fixXMLDoc(xml)
{
    if (!window.ActiveXObject) 
    {
        xml.selectSingleNode = function(sXPath) 
            {
               var oEvaluator = new XPathEvaluator();
                // FIRST_ORDERED_NODE_TYPE returns the first match to the xpath.
                var oResult = oEvaluator.evaluate(sXPath, this, null, XPathResult.FIRST_ORDERED_NODE_TYPE, null);
                if (oResult != null) 
                {
                    oResult.singleNodeValue.text = oResult.singleNodeValue.textContent;
                    return oResult.singleNodeValue;
                }
                else 
                {
                    return null;
                }              

            }
            
        
        xml.selectNodes = function(sXPath) 
            {
                var oEvaluator = new XPathEvaluator();
                var oResult = oEvaluator.evaluate(sXPath, this, null, XPathResult.ORDERED_NODE_ITERATOR_TYPE, null);

                var aNodes = new Array();

                if (oResult != null) 
                {
                    var oElement = oResult.iterateNext();
                    while(oElement) 
                    {
                        oElement.singleNodeValue.text = oElement.singleNodeValue.textContent;
                        aNodes.push(oElement);
                        oElement = oResult.iterateNext();
                    }

                }

                return aNodes;

            }        
        }

}


// retrieve content and place it in specified
// html id
function setContent(url, id)
{
    var xmlhttp = getXMLRequestObject();
    xmlhttp.onreadystatechange= function() 
    { 
        if ((xmlhttp.readyState==4) && (xmlhttp.status==200))
        {
        	writeHTML(xmlhttp, id);
        }
    }

    xmlhttp.open("GET",url,true);
    xmlhttp.send(null);
    xmlhttp = null;
}

function setContentPOST(url, id, params, responseHandler)
{
   var xmlhttp = getXMLRequestObject();
    xmlhttp.onreadystatechange= function() 
    { 
        if ((xmlhttp.readyState==4) && (xmlhttp.status==200))
        {
            if (null != responseHandler)
            {
                if (null != xmlhttp.responseXML)
                {
                    fixXMLDoc(xmlhttp.responseXML);
                }
        	    responseHandler(xmlhttp, id);
        	    delete xmlhttp;
        	}
        }
    }
    xmlhttp.open("POST",url,true);
    xmlhttp.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
    xmlhttp.setRequestHeader("Connection", "close");    
    if (params != null)
    {
        xmlhttp.setRequestHeader("Content-length", params.length);
    }
    
    xmlhttp.send(params);
}


// callback function to write the content to the specified location
function writeHTML(req, id) 
{
    var el = document.getElementById(id);
    if (null != el)
    {
        el.innerHTML = req.responseText;
    }
}

// gets the xml request object (platform independent)
var Version;
var HTTPVersions = new Array( "8.0","7.0","6.0","5.0","4.0","3.0" );
var CurrentVersion = null;
function getXMLRequestObject()
{
	var xReq = null;
	if (typeof XMLHttpRequest != "undefined")
	{
		xReq = new XMLHttpRequest();
	}	
	else
	{
	    if (CurrentVersion != null)
	    {
	        // used cached version
            xReq = new ActiveXObject(CurrentVersion);
	    }
        else
        {
            // don't know the current version. Let's figure it out then cache it for
            // later use
            for( Version = 0; Version < HTTPVersions.length; Version++ ) 
            {
                try 
                {
                    CurrentVersion = "Msxml2.ServerXMLHTTP." + HTTPVersions[Version];
                    xReq = new ActiveXObject(CurrentVersion);
                    break;
                } 
                catch(e) 
                {
                }

                // fail condition
                xReq = null;
                CurrentVersion = null;
            } 
        }
	}
	return xReq;
}