/*
 * Simple XPath Compatibility Plugin for jQuery 1.1
 * By John Resig
 * Dual licensed under MIT and GPL.
 */

(function(jQuery){

	var find = jQuery.find;

	jQuery.find = function(selector, context){

        // Convert /* into separate expressions
		if ( selector.indexOf("/*") >= 0 ) {
			var parts = selector.split("/*");

			// Empty selector makes jQuery select window.document
			if ( parts[0] === "" )
				var cur = jQuery(context);
			else
				var cur = jQuery(parts[0], context);

			for ( var i = 1, ni = parts.length; i < ni; i++ ) {
				cur = cur.children();

				// Leading slash would be treated as absolute
				parts[i] = parts[i].replace(/^\//, '>');

				if ( parts[i] !== "" )
					cur = jQuery(parts[i], cur);
			}

			return cur.get();
		}

		// Convert the root / into a different context
		if ( !selector.indexOf("/") ) {
			context = context.documentElement;
			selector = selector.replace(/^\/\w*/, "");
			if ( !selector )
				return [ context ];
		}

		// Convert // to " "
		selector = selector.replace(/\/\//g, " ");

		// Convert / to >
		selector = selector.replace(/\//g, ">");

		// Naively convert [elem] into :has(elem)
		selector = selector.replace(/\[([^@].*?)\]/g, function(m, selector){
			return ":has(" + selector + ")";
		});

		// Naively convert /.. into a new set of expressions
		if ( selector.indexOf(">..") >= 0 ) {
			var parts = selector.split(/>\.\.>?/g);
			var cur = jQuery(parts[0], context);

			for ( var i = 1; i < parts.length; i++ )
				cur = cur.parent(parts[i]);

			return cur.get();
		}

		return find(selector, context);
	};

})(jQuery);
