//#uses prototype.js

var Util = {
	Version:   "1.0",
	Author:    "Andrew Romashkin",
	Revision:  "24.07.2006",

	getAncestor: function (element, tagName)
	{
		var node = element;
		while (node.parentNode && (!node.tagName ||
				(node.tagName.toUpperCase() != tagName.toUpperCase())))
			node = node.parentNode;
		return node;
	},

	isCheckbox: function (node)
	{
		return (node && node.tagName == "INPUT" && node.type == "checkbox") || false;
	},

	getResource: function (url)
	{
		var ajax = new Ajax.Request(url, {method:"get", asynchronous:false});
		return ajax.transport.responseText;
	},

	trim: function (str)
	{
		return str.replace(/^\s*/, "").replace(/\s*$/, "");
	},

	hideSelectBoxes: function (object) //IE only
	{
		if (!object) return;
		if (!object.sboxes)
			object.sboxes = [];
		var co = Position.cumulativeOffset(object);
		var ro = Position.realOffset(object);
		var ol = co[0] - ro[0];
		var ot = co[1] - ro[1];
		var ow = object.offsetWidth;
		var oh = object.offsetHeight;
		var sboxes = document.all.tags("select");
		for (var i=0; i<sboxes.length; i++)
		{
			var node = sboxes[i].parentNode;
			while (node != object && node.tagName != "BODY")
				node = node.parentNode;
			var skip = (node == object);
			if (skip) continue;
			var coi = Position.cumulativeOffset(sboxes[i]);
			var roi = Position.realOffset(sboxes[i]);
			var l = coi[0] - roi[0];
			var t = coi[1] - roi[1];
			var w = sboxes[i].offsetWidth;
			var h = sboxes[i].offsetHeight;
			var ver = false;
			if (t > ot && t < (ot + oh))
				ver = true;
			else if ((t + h) > ot && (t + h) < (ot + oh))
				ver = true;
			var hor = false;
			if (l > ol && l < (ol + ow))
				hor = true;
			else if ((l + w) > ol && (l + w) < (ol + ow))
				hor = true;
			else if (l < ol && (l + w) > ol)
				hor = true;
			if (ver && hor && sboxes[i].style.visibility != "hidden")
				object.sboxes[object.sboxes.length] = sboxes[i];
		}
		for (var i=0; i<object.sboxes.length; i++)
			object.sboxes[i].style.visibility = "hidden";
	},

	showSelectBoxes: function (object)
	{
		if (!object) return;
		if (!object.sboxes) return;
		for (var i=0; i<object.sboxes.length; i++)
			object.sboxes[i].style.visibility = "";
		object.sboxes = [];
	},

	//COOKIES
	createCookie: function (name, value, days)
	{
		var expires = "";
		if (days)
		{
			var date = new Date();
			date.setTime(date.getTime() + (days*24*60*60*1000));
			var expires = "; expires=" + date.toGMTString();
		}
		document.cookie = name + "=" + escape(value) + "; path=" + escape("/") + expires;
	},

	readCookie: function (name)
	{
		var c = document.cookie;
		if (!c) return "";
		c = c.split(";");
		var cookie;
		for (var i = 0; i < c.length; i++)
		{
			cookie = c[i].split("=")[0];
			if (cookie.charAt(0) == " ")
				cookie = cookie.substring(1);
			if (cookie == name)
				return unescape(c[i].split("=")[1]);
		}
		return "";
	},

	eraseCookie: function (name)
	{
		createCookie(name, "", -1);
	}
}