//Referenz auf ein Element
function getElement(id, doc){
	var i = 0;
	var obj = null;
	
	if(!doc) {
		doc = document;
	}
	if(!(obj = doc[id]) && doc.all) {
		obj = doc.all[id];
	}
	for(i=0; !obj && doc.layers && i<doc.layers.length; i++) {
		obj = this.find_obj(id, doc.layers[i].document);
	}
	if(!obj && doc.getElementById) {
		obj = doc.getElementById(id);
	}
	return obj;
//	return document.getElementById(id);
}
	  

//Style eines elements holen
function getStyle(id){
	if(document.layers) return getElement(id);
	if(document.all) return getElement(id).style;
	if(document.getElementById) return getElement(id).style;
}


function setLeft(id,left){
	if(typeof getElement(id).style != 'undefined' &&
		typeof getElement(id).style.left != 'undefined'){

		getElement(id).style.left = left + 'px';
		return;
	}
	if(typeof getElement(id).style != 'undefined' &&
		typeof getElement(id).style.pixelLeft != 'undefined') {
		getElement(id).style.pixelLeft = left;
		return;
	}
	if(typeof getElement(id).x != 'undefined') {
		getElement(id).x = left;
		return;
	}
}

function setTop(id,top){
	if(typeof getElement(id).style != 'undefined' &&
		typeof getElement(id).style.top != 'undefined'){

		getElement(id).style.top = top + 'px';
		return;
	}
	if(typeof getElement(id).style != 'undefined' &&
		typeof getElement(id).style.pixelTop != 'undefined') {
		getElement(id).style.pixelTop = top;
		return;
	}
	if(typeof getElement(id).y != 'undefined') {
		getElement(id).y = top;
		return;
	}
}

function setVisible(id,visible){
	if(typeof getStyle(id) != 'undefined' &&
         typeof getStyle(id).top != 'undefined'){
		getStyle(id).visibility = (visible ? 'visible':'hidden');
		return;
	}
	if(typeof getStyle(id) != 'undefined' &&
		 typeof getStyle(id).pixelTop != 'undefined') {
		getStyle(id).visibility = (visible ? 'visible':'hidden');
		return;
	}
	if(typeof getStyle(id).y != 'undefined') {
		getStyle(id).visibility = (visible ? 'show':'hidden');
		return;
	}
}

function getLeft(id){
	if(typeof getStyle(id) != 'undefined' &&
		typeof getStyle(id).left != 'undefined') {
	    return parseInt(getStyle(id).left);
	}
	else if(typeof getStyle(id) != 'undefined' &&
		typeof getStyle(id).pixelLeft != 'undefined') {
		return parseInt(getStyle(id).pixelLeft);
	}
	else if(typeof getElement(id).x != 'undefined'){
		return getElement(id).x;
	}	
}

function getTop(id){
	if(typeof getStyle(id) != 'undefined' &&
		typeof getStyle(id).top != 'undefined') {
	    return parseInt(getStyle(id).top);
	}
	else if(typeof getStyle(id) != 'undefined' &&
		typeof getStyle(id).pixelTop != 'undefined') {
		return parseInt(getStyle(id).pixelTop);
	}
	else if(typeof getElement(id).y != 'undefined'){
		return getElement(id).y;
	}	
}

function getWidth(id){
	if(typeof getElement(id).offsetWidth != 'undefined'){
		return parseInt(getElement(id).offsetWidth);
	}
	else if(typeof getElement(id).style != 'undefined' &&
		typeof getElement(id).style.pixelWidth != 'undefined'){
		return parseInt(getStyle(id).pixelWidth);
	}
	else if(typeof getElement(id) != 'undefined' &&
		typeof getElement(id).document.width != 'undefined'){
		return getElement(id).document.width;
	}
}

function getHeight(id){
	if(typeof getElement(id).offsetHeight != 'undefined'){
		return parseInt(getElement(id).offsetHeight);
	}
	else if(typeof getElement(id).style != 'undefined' &&
		typeof getElement(id).style.pixelHeight != 'undefined'){
		return parseInt(getStyle(id).pixelHeight);
	}
	else if(typeof getElement(id) != 'undefined' && typeof getElement(id).document.height != 'undefined'){
		return getElement(id).document.height;
	}
	return 0;
}

function getInnerBrowserHeight(){
	return window.innerHeight || (window.document.documentElement.clientHeight || window.document.body.clientHeight);
}

function getInnerBrowserWidth(){
	return window.innerWidth || (window.document.documentElement.clientWidth || window.document.body.clientWidth);
}

function getLeftScrollOffset(){
	return document.documentElement.scrollLeft ? document.documentElement.scrollLeft : document.body.scrollLeft;
}

function getTopScrollOffset(){
	return document.documentElement.scrollTop ? document.documentElement.scrollTop : document.body.scrollTop;
}

function getPosition(id){
	var elem = getElement(id);
	if(elem != null){
		var left = 0;
		var top = 0;
		
		if(elem.offsetParent){
			do{
				left += elem.offsetLeft;
				top += elem.offsetTop;
			}while(elem = elem.offsetParent);	
		
			return [left,top];
		}
		
		return null;
	}
	
	return null;
}

function getInnerBrowserDimensions(){
	var toReturn = new Array();
	
	toReturn["width"] = getInnerBrowserWidth();
	toReturn["height"] = getInnerBrowserHeight();
	
	return toReturn;
}

function addOnloadEvent(callback,params){
	if(window.onload){
  		var func = window.onload;
  		window.onload = function(e){
    		func(e);
			if(params==null)
    			callback();
			else
				callback(params);
		};
	}
	else{
  		window.onload=function(e){
    		if(params==null)
    			callback();
			else
				callback(params);
  		};
	}
}

function getBrowser(){
	//Browsererkennung per Browser Sniffing
	var browser = new Array();
	browser["vendor"] = "Unknown";
	browser["version"] = -1;
	
	if(window.navigator.systemLanguage){
		browser["vendor"] = "InternetExplorer"
		
		if(document.getSelection){
			browser["version"] = 5.2;
		}
		else{
			if(document.createEventObject){
				if(document.compatMode){
					if(window.XMLHttpRequest){
						if(window.postMessage)
							browser["version"] = 8;
						else
							browser["version"] = 7;
					}
					else
						browser["version"] = 6;
				}
				else
					browser["version"] = 5.5;
			}
			
			if(document.uniqueID && browser["version"] == -1)
				browser["version"] = 5;
			
			if(!document.documentElement)
				browser["version"] = 4;
		}
	}
	else if(window.toolbar && !window.updateCommands && !window.getSelection){
		browser["vendor"] = "NetscapeCommunicator"
	
		if(window.navigator.securityPolicy)
			browser["version"] = 4.5;
		else
			browser["version"] = 4;
	}
	else if(window.pkcs11){
		browser["vendor"] = "Firefox";
		if(window.postMessage){
			browser["version"] = 3;
		}
		else if(window.external){
			browser["version"] = 2;
		}
		else if(window.XML){
			browser["version"] = 1.5;
		}
		else if(document.execCommand){
			browser["vendor"] = "Netscape Navigator";
			browser["version"] = 7;
		}
		else{
			browser["vendor"] = "Netscape Navigator";
			browser["version"] = 6;	
		}
	}
	else if(window.opera || !window.Option){
		browser["vendor"] = "Opera";
		
		if(!window.option){
			if(window.RegExp)
				browser["version"] = 4.1;
			else
				browser["version"] = 4;
		}
		else if(!window.netscape)
			browser["version"] = 5;
		else if(!window.decodeURI)
			browser["version"] = 6;
		else if(!window.XMLHttpRequest)
			browser["version"] = 7;
		else if(!window.netscape.security)
			browser["version"] = 8;
		else if(!document.compareDocumentPosition) 
			browser["version"] = 9;
		else if(document.postMessage){
			browser["version"] = 9.2;
			
			if(!document.querySelectorAll)
				browser["version"] = 9.5;
			else
				browser["version"] = 10;		
		}
	}
	else if(document.clientWidth){
		browser["vendor"] = "Konquerer";
		
		if(!document.addEventListener)
			browser["version"] = 2;
		else if(!document.captureEvents)
			browser["version"] = 3;
		else if(!window.XMLHttpRequest)	
			browser["version"] = 3.1;
		else if(!document.compatMode)
			browser["version"] = 3.2;
		else
			browser["version"] = 3.4;
	}
	else if(!document.pkcs11 && window.toolbar){
		browser["vendor"] = "Safari";
		
		if(!document.compareDocumentPosition){
			if(window.postMessage)
				browser["version"] = 3.1;
			else	
				browser["version"] = 3;
		}
		else
			browser["version"] = 4;
	}
	
	return browser;
}

function getRandom(min,max){
	if(min > max)
		return -1;
	if(min == max )
		return min;

	return min + parseInt(Math.random() * (max - min + 1));
}

function triggerImageCheckbox(id,hiddenDataField){
	var elem = getElement(id);
	
	var data = elem.lang.split(/\|/); 
	var newVal = data[1]+"|"+data[2];
	
	var hiddenField = getElement(hiddenDataField);
	
	if(data[0]=="checked"){
		elem.lang = "unchecked|"+newVal;
		elem.src = data[1];
		if(hiddenField!=null) hiddenField.value = "false";
	}
	else{
		elem.lang = "checked|"+newVal;
		elem.src = data[2];
		if(hiddenField!=null) hiddenField.value = "true";
	}
}

function isChecked(id){
	return getElement(id).lang.indexOf("checked") == 0;
}

function isNumeric(input){
	return input.match(/^\-{0,1}\d*\.{0,1}\d+$/);
}

function __round(x, n){
	if (n < 1 || n > 14) 
		return false;

	var e = Math.pow(10, n);
	var k = (Math.round(x * e) / e).toString();

	if (k.indexOf('.') == -1)
		k += '.';

	k += e.toString().substring(1);
	return k.substring(0, k.indexOf('.') + n+1);
}

function getCaretPosition(elem){
	var caretPos = 0;
	
	if(document.selection && !window.getSelection){
		//IE
		elem.focus();
		
		var sel = document.selection.createRange();
		
		var sel2 = sel.duplicate();
		sel2.moveToElementText(elem);
		caretPos = -1;
		
		while(sel2.inRange(sel)){
			sel2.moveStart('character');
			caretPos++;
		}
	}
	else if(elem.selectionStart || elem.selectionStart == '0'){
		//Mozilla und Opera
		caretPos = elem.selectionStart;
	}
	
	return (caretPos);
}

function setCaretPosition(elem, caretPos){
	if(document.selection && !window.getSelection){
		//IE
		var range = document.selection.createRange();
		
		if (elem.type == "text"){
			range.moveStart('character', -elem.value.length);
			range.moveEnd('character', -elem.value.length);
			range.moveStart('character', caretPos);
		}
		else{
			range.collapse(false);
			//-1 als Korrektur
			range.move('character', caretPos - elem.value.length + elem.value.substring(caretPos).split('\n').length - 1);
		}
		
		range.select();
	}
	else if (elem.selectionStart || elem.selectionStart == '0'){
		//Mozilla und Opera
		elem.setSelectionRange(caretPos,caretPos);
	}
}

String.prototype.trim = function() {
	return this.replace(/^\s+|\s+$/g,"");
}

String.prototype.ltrim = function() {
	return this.replace(/^\s+/,"");
}

String.prototype.rtrim = function() {
	return this.replace(/\s+$/,"");
}
