var $ = function (id) {
	return document.getElementById(id);
}

/*Element.prototype.hasClassName = function (cls) {
	if (this.className) {
		var classes = this.className.split(' ');
		
		for (var i = 0; i < classes.length; i++) {
			if (classes[i] == cls) {
				return true;
			}
		}
	}
	
	return false;
}*/

var Utils = {
	
	setCookie: function (name, value, days) {
		days = days || 365;
		
		var date = new Date();
		date.setTime(date.getTime() + (days*24*60*60*1000));
		var expires = "; expires=" + date.toGMTString();
		
		document.cookie = name + "=" + value + expires + "; path=/";
	},
	
	getCookie: function (name) {
		var nameEQ = name + "=";
		var ca = document.cookie.split(';');
		
		for (var i=0; i < ca.length; i++) {
			var c = ca[i];
			
			while (c.charAt(0) == ' ') {
				c = c.substring(1, c.length);
			}
			
			if (c.indexOf(nameEQ) == 0) {
				return c.substring(nameEQ.length, c.length);
			}
		}
		
		return null;
	},
	
	addEvent: function (obj, type, fn) {
		if (obj.addEventListener) {
			obj.addEventListener(type, fn, false);
		} else if (obj.attachEvent) {
			obj["e"+type+fn] = fn;
			obj[type+fn] = function() { obj["e"+type+fn]( window.event ); }
			obj.attachEvent("on"+type, obj[type+fn]);
		}
	},
	
    getRealMousePosition: function(e) {
		var posx = 0;
		var posy = 0;
		
		if (!e) {
			e = window.event;
		}
		if (e.pageX || e.pageY) {
			posx = e.pageX;
			posy = e.pageY;
		} else if (e.clientX || e.clientY) {
			posx = e.clientX + document.body.scrollLeft + document.documentElement.scrollLeft;
			posy = e.clientY + document.body.scrollTop + document.documentElement.scrollTop;
		}

		return [posx, posy];
	},
	
	
	Ajax: function (url, params, callbackFn, method) {
		var thisRequestObject;
		
		thisRequestObject = initiateRequest();
		thisRequestObject.onreadystatechange = processRequest;
		
		function initiateRequest() {
			if (window.XMLHttpRequest) {
				return new XMLHttpRequest();
			} else if (window.ActiveXObject) {
				return new ActiveXObject("Microsoft.XMLHTTP");
			}
		}
		
		function processRequest() {
			if (thisRequestObject.readyState == 4) {
				if (thisRequestObject.status == 200) {
					if (callbackFn) {
						callbackFn(thisRequestObject, params);
					}
				} else {
					//alert("There was an error: (" + thisRequestObject.status + ") " + thisRequestObject.statusText);
				}
			}
		}
		
		this.send = function() {
			method = method || 'post';
			
			if (method.toLowerCase() == 'get') {
				this.sendGetData();
			} else {
				this.sendPostData();
			}
		}
		
		this.sendGetData = function() {
			if (url) {
				thisRequestObject.open("GET", url, true);
				thisRequestObject.send(params);
			}
		}
		
		this.sendPostData = function() {
			if (url) {
				thisRequestObject.open("POST", url, true);
				thisRequestObject.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
				thisRequestObject.send(params);
			}
		}
	}
	
}









