﻿// support firefox
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";}
	}

}

//if(!XMLDocument.prototype.getValue)
//{
//    XMLDocument.prototype.getValue = function(xpath)
//    {
//        if(this.ownerDocument.selectSingleNode)
//        {
//            var node = this.ownerDocument.selectSingleNode(xpath);
//            if(node)
//            {
//                switch(node.nodeType)
//                {
//                    case 1:  // Element
//                        return node.xml;
//                    case 2:  // Attribute
//                        return node.value;
//                    case 3:  // Text
//                    case 4:  // CData
//                        return node.nodeValue;
//                    default:
//                        return node.xml;
//                }
//            }
//            return null;
//        }
//   		else{throw "For XML Elements Only";}
//    };
//}