function $(idname, index) {
	var self = document;
	var arity = $.arguments.length;
	if(arity == 1) {
		return self.getElementById(idname);
	}
	else if (arity == 2) {
		var elements = self.getElementsGetByName(idname);
		if (typeof(index) == "number") {
			return elements[index];
		}
		return elements;
	}
	self.id = function(id) {return self.getElementById(idname)};	//<=> $(id)
	self.name = function (name, index) {return self.getElementsGetByName(name, index)};	//<=> $(name, ?)
	self.tags = function(TagName) {
		var elements = document.getElementsByTagName(TagName);
		var result = new Array();
		for (var e = 0; e < elements.length; e++) {
			result.push(elements[e]);
		}
		return result;
	};
	self.labels = function() {
		var labels = $().tags('LABEL');
		for (var i = 0; i < labels.length; i++) {
    		if (labels[i].htmlFor != '') {
        		var elem = document.getElementById(labels[i].htmlFor);
	        	if (elem) {elem.label = labels[i]}
	        }
		}
	};
	self.classes = function(className) {
		var allElements = document.getElementsByTagName("*");
		var result = new Array();
		for (var i = 0; i < allElements.length; i++) {
			if (allElements[i].className == className) {
				result.push(allElements[i]);
			}
		}
		return result;
	};
	return self;
}
