function $ () {
	var elements = new Array();

	for (var i = 0; i < arguments.length; i++) {
		var element = arguments[i];
		if (typeof element == 'string')
			element = document.getElementById(element);

		if (arguments.length == 1)
			return element;

		elements.push(element);
	}

	return elements;
}

document.getElementsByClassName = function (cl) {
	var retnode = new Array ();
	var myclass = new RegExp('\\b'+cl+'\\b');
	var elem = this.getElementsByTagName('*');
	for (var i = 0; i < elem.length; i++) {
		var classes = elem[i].className;
		if (myclass.test(classes))
			retnode.push(elem[i]);
	}
	return retnode;
};

Array.prototype.in_array = function(needle) {
	for (var i = 0; i < this.length; i++) {
		if (this[i] == needle)
			return i;
		else if (this[i].in_array) { // Überprüft ob es ein Array ist, mittels der eigenen Funktion
			if (this[i].in_array(needle))
				return i; // Rekursiver Aufruf, return-Wert wird überprüft
		}
	}
	return false;
}

function addEvent (obj, eventType, functionName, useCaption) {
	if (obj.addEventListener) {
		obj.addEventListener (eventType, functionName, useCaption);
		return true;
	}
	else if (obj.attachEvent) {
		var retVal = obj.attachEvent ("on" + eventType, functionName);
		return retVal;
	}
	else {
		return false;
	}
}

function removeEvent (obj, type, fn) {
	if (obj.removeEventListener) {
		obj.removeEventListener( type, arguments.callee, false );
	}
	else if (obj.detachEvent) {
		obj.detachEvent( "on" + type, obj[type + fn] );
		obj[type + fn] = null;
		obj["e"+type+fn] = null;
	}
}

function addLoadEvent (func) {
	var oldonload = window.onload;
	if (typeof window.onload != 'function') {
		window.onload = func;
	}
	else {
		window.onload = function() {
			if (oldonload) {
				oldonload();
			}
			func();
		}
	}
}

function removeAllChildsFromNode(nodeId){
  var orig = document.getElementById(nodeId);
  var tmp = orig.cloneNode(false);
  orig.parentNode.replaceChild(tmp, orig);
}

function getStyle(oElm, strCssRule){
	var strValue = "";
	if (document.defaultView && document.defaultView.getComputedStyle) {
		strValue = document.defaultView.getComputedStyle(oElm, "").getPropertyValue(strCssRule);
	}
	else if (oElm.currentStyle) {
		strCssRule = strCssRule.replace (/\-(\w)/g, function (strMatch, p1) {
			return p1.toUpperCase();
		});
		strValue = oElm.currentStyle[strCssRule];
	}
	return strValue;
}

function setTransparency (myObj, intWert) {
	var isIE = (document.all) ? true : false;
	if (isIE) {
		intWert *= 100;
		myObj.style.filter = "alpha(opacity="+intWert+")";
	}
	myObj.style.opacity = intWert;
}

function subSelect (elemName, inId, level) {
	var nameElms = [];
	var topItem = (typeof(inId) == "string") ? document.getElementById(inId) : inId;
	var childElms = document.getElementsByName(elemName);
	var count = 0;
	for (var i = 0; i < childElms.length; i++) {
		var parentsObj = childElms[i];
		for (var k = 0; k < level; k++)
			var parentsObj = parentsObj.parentNode;
		if(parentsObj == topItem) {
			nameElms[count] = childElms[i];
			count++;
		}
	}
	return nameElms;
}