// Extend Prototype
Object.extend
(
	Event,
	{
		wheel: function(event)
		{
			var delta = 0;
			if (!event) event = window.event;
			if (event.preventDefault)
			{
				event.preventDefault();
				event.stopPropagation();
			}
			else
			{
				event.cancelBubble = true;
				event.returnValue = false;
			}
			if (event.wheelDelta)
			{
				delta = event.wheelDelta/120;
				if (window.opera) delta = -delta;
			}
			else if (event.detail)
			{
				delta = -event.detail/3;
			}
			return Math.round(delta); //Safari Round
		}
	}
);

Element.addMethods(
	{
		setWidth: function(element, w) {
			element = $(element);
			element.style.width = w + "px";
			return element;
		},
		setHeight: function(element, h) {
			element = $(element);
			element.style.height = h + "px";
			return element;
		},
		getLeft: function(element) {
			element = $(element);
			if (element.offsetLeft) {
				return element.offsetLeft;
			}
			if (element.style.left != '') {
				return parseInt(element.style.left);
			}
			return 0;
		},
		setLeft: function(element, t) {
			element = $(element);
			element.style.left = t + "px";
			return element;
		},
		getTop: function(element) {
			element = $(element);
			if (element.offsetTop) {
				return element.offsetTop;
			}
			if (element.style.top != '') {
				return parseInt(element.style.top);
			}
			return 0;
		},
		setTop: function(element, t) {
			element = $(element);
			element.style.top = t + "px";
			return element;
		}
	}
);

/*Object.extend(Element.Methods, {
	setWidth: function(element, w) {
		element = $(element);
		element.style.width = w + "px";
		return element;
	},
	setHeight: function(element, h) {
		element = $(element);
		element.style.height = h + "px";
		return element;
	},
	getLeft: function(element) {
		element = $(element);
		if (element.offsetLeft) {
			return element.offsetLeft;
		}
		if (element.style.left != '') {
			return parseInt(element.style.left);
		}
		return 0;
	},
	setLeft: function(element, t) {
		element = $(element);
		element.style.left = t + "px";
		return element;
	},
	getTop: function(element) {
		element = $(element);
		if (element.offsetTop) {
			return element.offsetTop;
		}
		if (element.style.top != '') {
			return parseInt(element.style.top);
		}
		return 0;
	},
	setTop: function(element, t) {
		element = $(element);
		element.style.top = t + "px";
		return element;
	}
});

Element.addMethods();

Element.prototype.setHeight = function(h) {
	this.style.height = h + "px";
};
Element.prototype.setWidth = function(w) {
	this.style.width = w + "px";
};
Element.prototype.setTop = function(t) {
	this.style.top = t + "px";
};
Element.prototype.setLeft = function(l) {
	this.style.left = l + "px";
};*/

Function.prototype.periodical = function() {
	var __method = this, args = $A(arguments), ms = args.shift(), obj = args.shift();
	var fnc = function () {
		__method.apply(obj || __method, args);
	};
	this.timer = setInterval(fnc, ms);
};

Function.prototype.stop = function() {
	if (!this.timer) return;
	clearTimeout(this.timer);
	clearInterval(this.timer);
	this.timer = null;
};

/*
 * end of extension
 */

var COP = COP || {};
COP.System = {};
COP.WebControls = {};
//COP.System.Data = {};
//COP.System.Browser = {};

// COP.System.Cookie
COP.System.Cookie = {};
COP.System.Cookie.Set = function(name, value, expire, path)
{
	document.cookie = name + "=" + escape(value) +
                    ((!expire) ? "" : ("; expires=" + expire.toGMTString())) +
                    "; path=" + ((!path) ? "/" : path);
};

COP.System.Cookie.Get = function(name)
{
	var value=null, search=name+"=";
	if (document.cookie.length > 0)
	{
		var offset = document.cookie.indexOf(search);
		if (offset != -1)
		{
			offset += search.length;
			var end = document.cookie.indexOf(";", offset);
			if (end == -1) {
				end = document.cookie.length;
			}
			value = unescape(document.cookie.substring(offset, end));
		}
	}
	return value;
};
// End COP.System.Cookie


// Get base url
var url = document.location.href;
var baseUrl = url.substring(0, url.lastIndexOf("/") + 1);
var rootUrl = window.location.protocol + "//" + window.location.host;
// Redefine for bad domain
//rootUrl = 'http://210.245.80.123:8080/new';
function getAbsoluteUrl(url)
{
	if (url.substring(0, 1) == '/') {
		url = rootUrl + url;
	}
	// Does URL begin with http?
	else if (url.substring(0, 4) != 'http') {
		url = baseUrl + url;
	}
	return url;
}

function getHTML(url, pars, el, callback)
{
	var complete = function()
	{
		if (callback && typeof(callback)=="function")
			callback();
	};

	if (url.substring(0, 1) == '/') {
		url = rootUrl + url;
	}
	// Does URL begin with http?
	else if (url.substring(0, 4) != 'http') {
		url = baseUrl + url;
	}

	var reportError = function(request) {
		try {
			$(el).innerHTML = "Sorry. There was an error.";
		}
		catch (e) {
			//alert(request.status+ " | " + request.statusText);
			alert("Sorry. There was an error.");
		}
	};

	if ($(el))
	{
		new Ajax.Updater(
			{success: el},
			url,
			{
				method: 'post',
				parameters: pars,
				evalScripts: true,
				onFailure: reportError,
				onComplete: complete
			}
		);
	}
	else
	{
		new Ajax.Request(
			url,
			{
				method: 'post',
				parameters: pars,
				evalScripts: true,
				//asynchronous: false,
				onComplete: complete,
				onFailure:reportError
			}
		);
	}
}