var lib = {
	addEvent:function(element, eventType, func, capture) {
		if (element.attachEvent) {
			element['e'+eventType+func] = func;
			element[eventType+func] = function(){
				element['e'+eventType+func](window.event);
			};
			element.attachEvent('on' + eventType, element[eventType+func]);
			return true;
		} else if (element.addEventListener) {
			element.addEventListener(eventType, func, capture);
			return true;
		}
	},
	removeEvent:function(element, eventType, func, capture) {
		if (element.detachEvent) {
			element.detachEvent('on' + eventType, element[eventType+func]);
			element[eventType+func] = null;
			return true;
		} else if (element.removeEventListener) {
			element.removeEventListener(eventType, func, capture);
			return true;
		}
	},
	preventDefault: function(eventObject) {
		eventObject = eventObject || getEventObject(eventObject);
		if (eventObject.preventDefault) {
			eventObject.preventDefault();
		} else {
			eventObject.returnValue=false;
		}
	},
	getCStyle: function(elem, prop) {
		var cStyle=null;
		if (typeof(elem.currentStyle)!="undefined") {
			cStyle=elem.currentStyle;
		} else {
			cStyle=document.defaultView.getComputedStyle(elem, null);
		}
		return cStyle[prop];
	},
	$: function(iD, tName) {
		if (arguments.length == 1) {
			return document.getElementById(iD);
		} else if (iD == '*') {
			return document.getElementsByTagName(tName);
		} else {
			return document.getElementById(iD).getElementsByTagName(tName);
		}
	},
	$$: function() {
		var elems = [];
		for(var i = 0; i<arguments.length; i++) {
			elems[i] = document.getElementById(arguments[i]);
		}
		return elems;
	},
	newTextElem: function(elType, txt, iD) {
		var element = document.createElement(elType);
		var textNode = document.createTextNode(txt);
		element.appendChild(textNode);
		if (iD != 'undefined') {element.id = iD;}
		return element;
	},
	appendChildren: function() {
		if (arguments.length >= 2) {
			for(var i = 1; i<arguments.length; i++) {
				arguments[0].appendChild(arguments[i]);
			}
		}
	},
	removeSelf: function () {
		for(var i = 0; i<arguments.length; i++) {
			if(arguments[i] != null) {
				arguments[i].parentNode.removeChild(arguments[i]);
			}
		}
	}
}
