/*
	extends Prototype with more DOM utils
*/

Object.extend(Element, {
	findParent: function(el, tagName, className) {
		tagName = tagName.toLowerCase();
		while (el) {
			el = el.parentNode;
			if (el
				&& el.tagName
				&& el.tagName.toLowerCase() == tagName
				&& (!className || Element.hasClassName(el, className))
			) break;
		}
		return el;
	},

	create: function(type, parent, before) {
		var el = document.createElement(type);
		if (typeof parent != "undefined") {
			if (typeof before != "undefined") {
				parent.insertBefore(el, before);
			} else {
				parent.appendChild(el);
			}
		}
		return el;
	},

	textNode: function(str) {
		return document.createTextNode(str);
	},

	addHandler: function(selector, eventName, handler) {
		var elements = document.getElementsBySelector(selector);
		if (!elements) return 0;
		for (var j = 0 ; j < elements.length ; j++)
			Event.observe(elements[j], eventName, handler);
		return elements.length;
	}
});

(function() {
	var UA  = navigator.userAgent;
	Browser = {
		is_opera   : /Opera/i.test(UA),
		is_ie      : /MSIE/i.test(UA) && !/Opera/i.test(UA) && !(/mac_powerpc/i.test(UA)),
		is_gecko   : /Gecko/i.test(UA),
		is_khtml   : /Konqueror|Safari|KHTML/i.test(UA)
	};
	Browser.knowsOpacity = Browser.is_ie || Browser.is_gecko;
})();
