﻿// JScript 文件

//使FIREFOX支持selectNodes()、selectSingleNode()
//代码出处：http://km0ti0n.blunted.co.uk/mozXPath.xap
// check for XPath implementation
if(document.implementation.hasFeature("XPath", "3.0"))
{
	// prototying the XMLDocument
	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;
	}

	// prototying the Element
	Element.prototype.selectNodes = function(cXPathString){
		if(this.ownerDocument.selectNodes){
		  return this.ownerDocument.selectNodes(cXPathString, this);
		}
		else{throw "For XML Elements Only";}
	}
}

// check for XPath implementation
// check for XPath implementation
if(document.implementation.hasFeature("XPath", "3.0"))
{
	// prototying the XMLDocument
	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;
		}
	}

	// prototying the Element
	Element.prototype.selectSingleNode = function(cXPathString)
	{ 
		if(this.ownerDocument.selectSingleNode)
		{
			return this.ownerDocument.selectSingleNode(cXPathString, this);
		}
		else{throw "For XML Elements Only";}
	}
}

if (!document.all){
    Document.prototype.__defineGetter__("xml",   function   ()   {   
        return   (new   XMLSerializer()).serializeToString(this);   
    });
}
