/* XPath for Prototype 0.1.3
* (c) 2007 Cybozu Labs, Inc.
*
* XPath for Prototype is freely distributable under the terms of an MIT-style license.
* For details, see the JavaScript-XPath web site: http://coderepos.org/share/wiki/JavaScript-XPath
*
/*--------------------------------------------------------------------------*/
if (window.Prototype && !window.$x) {
window.$x = function $x(expr, context, ordered) {
switch (arguments.length) {
case 0:
expr = '/';
context = document;
ordered = false;
break;
case 1:
context = document;
ordered = false;
break;
case 2:
if (typeof context == 'string') {
context = $(context);
ordered = false;
}
else if (Object.isElement(context)) {
ordered = false;
}
else {
ordered = context;
context = document;
}
break;
default:
context = $(context);
break;
}
var type = ordered ? 7 : 6;
expr = document.createExpression(expr, null);
var result = expr.evaluate(context, type, null);
var nodes = [];
for (var i = 0, l = result.snapshotLength; i < l; i ++)
nodes.push(Element.extend(result.snapshotItem(i)));
return nodes;
};
document.getElementsByXPath = $x;
(function(f) {
Element.addMethods({
xpath: f,
getElementsByXPath: f
});
})(function (context, expr, ordered) {
return $x(expr, context, ordered);
});
}