﻿function FP_getObjectByID(id,o) 
{//v1.0
	var c,el,els,f,m,n; 
	if(!o)o=document; 
	if(o.getElementById) el=o.getElementById(id);
	else if(o.layers) c=o.layers; 
	else if(o.all) el=o.all[id]; 
	
	if(el) return el;
	if(o.id==id || o.name==id) return o; 
	if(o.childNodes) c=o.childNodes; 
	if(c)
		for(n=0; n<c.length; n++) 
		{ 
			el=FP_getObjectByID(id,c[n]); 
			if(el) return el; 
		}
	f=o.forms; 
	if(f) 
		for(n=0; n<f.length; n++) 
		{ 
			els=f[n].elements;
			for(m=0; m<els.length; m++)
			{ 
				el=FP_getObjectByID(id,els[n]); 
				if(el) return el; 
			} 
		}
	return null;
}

// Creates a Xml Http request object.
function createRequest()
{
    var oReturn = null;
    if(window.XMLHttpRequest)
    {
        oReturn = new XMLHttpRequest();
    } else {
        oReturn = new ActiveXObject("MSXML2.XMLHTTP.3.0");
    }
    
    return oReturn;
}

// Returns all nodes using the XPath.
function selectNodes(node, xpath)
{
    if(window.ActiveXObject)
    {
        // IE, so use the MS DOM.
        log('Using IE XPath query', 0);
        return node.selectNodes(xpath);
    } else {
        // Something else
        log('Using FF XPath query', 0);
        var xpe = node.ownerDocument || node;
        var ns = xpe.createNSResolver(xpe.documentElement);
        var result = xpe.evaluate(xpath, node, null, 0, null);
        var found = [];
        while(res = result.iterateNext())
            found.push(res);
        return found;
    }
}

// Returns the first node matching the XPath.
function selectSingleNode(node, xpath)
{
    return selectNodes(node, xpath)[0];
}

function log(text, level)
{
    if(window.console)
    {
        if(level == 0)
        {
            console.log(text);
        }
        else if (level == 1)
        {
            console.info(text);
        }
        else if(level == 2)
        {
            console.warn(text);
        }
        else if(level == 3)
        {
            console.error(text);
        }
    }
}
