// returns refence to object with given id
var $ = function(n) {
	return document.getElementById(n);
}

// returns reference to objects with given classname
function $C(n) {
	return document.getElementsByClassName(n);
}

// returns reference to objects with given tagname
function $T(n) {
	return document.getElementsByTagName(n);
}

var Utils = Utils ? Utils : function() {
	return {
		// creates an element node
		MakeNode: function(tag, attr, child) {
			var e = document.createElement(tag);
			if (attr) for (var i in attr) e.setAttribute(i, attr[i]);
			if (child)
				if (typeof child[0] == "undefined") e.appendChild(child);
				else for (var i = 0; i < child.length; i++) e.appendChild(child[i]);
			return e;
		},

		// creates a text node
		MakeText: function(text) {
			return document.createTextNode(text);
		},

		// creates an object from an XML element
		Objectify: function(element) {
			var obj = {};
			for (var i = 0; i < element.childNodes.length; i++)
				if (element.childNodes[i].nodeType == 1)
					obj[element.childNodes[i].nodeName] = element.childNodes[i].firstChild.nodeValue;
			return obj;
		},

		// returns object with GET variables from URL
		Get: function() {
			var vars = [];
			if (location.search) {
				var a = location.search.replace(/\+/g, " ");
				var b = a.substring(1).split("&");

				for (var i = 0; i < b.length; i++) {
					var n = b[i].split("=");
					if (n.length < 2) vars[n[0]] = true;
					else vars[n[0]] = decodeURIComponent(n[1]);
				}
			}
			return vars;
		},

		// sends an XMLHTTPRequest
		XHR: function(url, method, handler) {
			var x = false;
			try {x = new XMLHttpRequest();} catch(e) {}
			try {x = new ActiveXObject("Microsoft.XMLHTTP");} catch(e) {}
			try {x = new ActiveXObject("Msxml2.XMLHTTP");} catch(e) {}
			try {x = window.createRequest();} catch(e) {}

			if (x) {
				x.open(method, url, true);
				x.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
				x.onreadystatechange = function() {
					if (x.readyState == 4) handler(x);
				}
				x.send("");
			}
		}
	}
}();
