/*
 * Copyright (c) 2008 Moritz Stuhlmann <stuhlmann@fifty-nine.de>
 * Edited by Fredrik Boström <fredrik@fredrikbostrom.net>
 *
 * Method:	Element.sortBySelector
 * Version:	1.1.2
 * Updated:	2010/03/05
 */

Element.addMethods({
	sortBySelector: function(element, selector) {
		element = $(element);
		var options = Object.extend({
			index: 0,
			reverse: false,
			node: "LI",
			casesensitive: false
		}, arguments[2] || {});
		element.select(options.node).each(function(node_a) {
			var node_b = node_a.select(selector)[options.index];
			element.select(options.node).each(function(node_c) {
				var node_d = node_c.select(selector)[options.index];
				var text_a = node_b.getText().strip();
				var text_b = node_d.getText().strip();
				if (!options.casesensitive) {
					text_a = text_a.toLowerCase();
					text_b = text_b.toLowerCase();
				}
				if (text_a && text_b) {
					if ((text_a <= text_b && options.reverse) || (text_a >= text_b && !options.reverse)) {
						element.insertBefore(node_c, node_a);
					}
				}
			});
		});
		return element;
	},
	getText: function(element) {
		return (element.innerText) ? element.innerText : element.textContent;
	}
});