
//////////////////////////////////////////////////////
//
// Shortcut for nodes.selectNodes()
//
//////////////////////////////////////////////////////
function getNodes( n, tag )
{
    if( !n ) { return; }
    var ns = null;
    try
    {
        return n.getElementsByTagName( tag );
    }
    catch( e ) { alert( e.description ); }

    try
    {
        return n.selectNodes( tag );
    }
    catch( e ) { alert( e.description ); }

    return null;
}

//////////////////////////////////////////////////////
//
// Shortcut for nodes.selectSingleNode()
//
//////////////////////////////////////////////////////
function getSingleNode( n, tag )
{
    if( !n ) { return; }
    try
    {
        if( 0 == n.getElementsByTagName( tag ).length )
        {
            return null;
        }
        else
        {
            return n.getElementsByTagName( tag )[0];
        }
    }
    catch( e ) { alert( e.description ); }

    try
    {
        return n.selectSingleNode( tag );
    }
    catch( e ) { alert( e.description ); }
}

//////////////////////////////////////////////////////
//
// Shortcut for node.text
//
//////////////////////////////////////////////////////
function getText( n, tag )
{
    if( !n ) { return; }
    if( n.getElementsByTagName( tag )[0] )
    {
        if( n.getElementsByTagName( tag )[0].firstChild )
        {
            return n.getElementsByTagName( tag )[0].firstChild.nodeValue;
        }
    }
    return "";
}

//////////////////////////////////////////////////////
//
// Returns the proper XML Request object
//
//////////////////////////////////////////////////////
function x_Request()
{
    var xHttp = null;

    try
    {
        xHttp = new XMLHttpRequest();
    }
    catch( e )
    {
        for( var i = 5; i > 2; i-- )
        {
            try
            {
                if( null != (xHttp = new ActiveXObject( "Msxml2.FreeThreadedDOMDocument."+ i +".0" )) )
                {
                    break;
                }
            }
            catch( e )
            {
            }
        }
    }

    return xHttp;
}

//////////////////////////////////////////////////////
//
// Wraps up xml HTTP request
//
//////////////////////////////////////////////////////
function xmlRequest( sUrl, sMethod, sData, sContentType, fHandler )
{
    var xHttp = x_Request();

    if( null == xHttp )
    {
        alert( "Could not create an Xml Request Object" );
        return null;
    }

    if( !sMethod      ) { sMethod      = "GET"; }
    if( !sData        ) { sData        = ""; }
    if( !sContentType ) { sContentType = "application/x-www-form-urlencoded"; }

    if( "POST" == sMethod.toUpperCase() )
    {
        xHttp.setRequestHeader( "Content-Type", sContentType );
    }

    if( fHandler )
    {
        xHttp.onreadystatechange = fHandler;
        bAsync = true;
    }
    else
    {
        bAsync = false;
    }

    xHttp.open( sMethod, sUrl, bAsync );
    xHttp.send( sData );

    if( !fHandler )
    {
        if( 200 != xHttp.status )
        {
            alert( xHttp.responseText );
            return null;
        }
        return xHttp.responseXML;
    }
    else
    {
        return xHttp;
    }

}


