if (typeof(BEBI_HILFSMODUL) == 'undefined') {
    var BEBI_HILFSMODUL = {};
	BEBI_HILFSMODUL.FUNKTIONAUSFUEHREN = null;
};

BEBI_HILFSMODUL.onLoad = function (fnk)
{
	    if (!istFunction(fnk)) return;
		BEBI_HILFSMODUL.FUNKTIONAUSFUEHREN = fnk;
		if (document.addEventListener && !window.opera) {
				document.addEventListener('DOMContentLoaded', function() { BEBI_HILFSMODUL.FUNKTIONAUSFUEHREN();},false);
		}
		else if ((navigator.userAgent.toLowerCase().indexOf('webkit')>=0)) { 
			var _timer = window.setInterval(function() {
				if (RegExp(/loaded|complete/).test(document.readyState))
				{
					BEBI_HILFSMODUL.FUNKTIONAUSFUEHREN();
				}
			}, 100);
		} else	{
			var oldonload = window.onload;
			if (typeof window.onload != 'function') {
				window.onload = function() { BEBI_HILFSMODUL.FUNKTIONAUSFUEHREN();};
			} else {
				window.onload = function() {
					BEBI_HILFSMODUL.FUNKTIONAUSFUEHREN();
					oldonload();
				};
			}
		}	
};	



	var Engines = {
			presto: function(){
				return (!window.opera) ? false : ((arguments.callee.caller) ? 960 : ((document.getElementsByClassName) ? 950 : 925)); //opera
			},
			trident: function(){
				return (!window.ActiveXObject) ? false : ((window.XMLHttpRequest) ? 5 : 4); //IE
			},
			webkit: function(){
				return (navigator.taintEnabled) ? false : ((Browser.Features.xpath) ? ((Browser.Features.query) ? 525 : 420) : 419);
			},
			gecko: function(){
				return (document.getBoxObjectFor == undefined) ? false : ((document.getElementsByClassName) ? 19 : 18); //firefox
			}
	};

	getBrowserEngine = function()
	{
		for (var engine in Engines){
			var version = Engines[engine]();
			if (version){
				return (engine);
			}
		}
	};

	getDocument = function(element)
	{
			   return element.document;
	};
		
	asString = function(n)
	{
			   return (""+n);
	};
			
	istUndefined = function(object)
	{
	    return typeof object == "undefined";
	};

	istFunction = function(object) 
	{
		return typeof object == "function";
	};
			
	addCSSStyle = function(css_style)
	{
	  var head = document.getElementsByTagName('head')[0];
	  if (!head) return;
	  var cssScript = document.createElement('style');
	  cssScript.type = 'text/css';
	  if (document.all) { // IE(navigator.appName.indexOf("Microsoft")!=-1) /////CHANGE
		 cssScript.styleSheet.cssText = css_style;
	  } else {
		 cssScript.appendChild(document.createTextNode(css_style));
	  }	 
	  head.appendChild(cssScript);
	  return cssScript;
	};
	
	getID = function(s)
	{
    	return document.getElementById(s);
	};
	
	numberZufallsZahl = function(min,max) 
	{
		return (min + Math.floor((1+max-min)*Math.random()));
	};
	
	listenerAdd = function(element,type,funktion)
	{
			if (type == 'unload'){
				var old = funktion;
				fn = function(){
					removeListener(element,'unload', fn);
					old();
				};
			}
			if (element.addEventListener) element.addEventListener(type, funktion, false);
			else element.attachEvent('on' + type, funktion);
			return element;
	};	
	
	cssSetStyle =  function(element,property, value)
	{
		switch (property){
			case 'opacity': return cssSetOpacity(element, parseFloat(value));
			case 'float': property = (window.ActiveXObject) ? 'styleFloat' : 'cssFloat';
		}
		property.replace(/-\D/g, function(match){
			return match.charAt(1).toUpperCase();
		});
		
		element.style[property] = value;
		return element;
	};
	
	istDezimalZahl = function(n,mitDot)
	{
	   var s = asString(n);
	   mitDot = (mitDot) ? true : false;
	   while (s.indexOf(",")>-1){
		  s=s.substring(0,s.indexOf(",")) + "." + s.substring(s.indexOf(",")+1 ,s.length);
	   }
	   var anzahl_punkt=0;
	   for (var i=0; i<s.length; i++) if (s.charAt(i)==".") anzahl_punkt++;
	   if (anzahl_punkt>1) return false;
		var ziffern = ".0123456789";
	   if (s.charAt(0)=="-") s = s.substring(1, s.length);
	   if (s=="0") return true;
	   if (s.charAt(0)=="0" &&s.charAt(1)!=".") return false;
	   for (var i=0; i<s.length; i++)
		  if (ziffern.indexOf(s.charAt(i))==-1)
			 return false;
	   if ((mitDot) && (!anzahl_punkt == 1)) return false;
	   return true;
	};
	
	istZahl = function (n)
	{
	  s = asString(n);
	  var ziffern = "0123456789";
	  for (var i=0; i<s.length; i++) {
		if (ziffern.indexOf(s.charAt(i))<0) return false;
	  }	
	  return true;
	};
	
	asAMDezimalZahl = function(n)
	{
	   var s = asString(n);
	   for (var i=0; i<s.length; i++) if (s.charAt(i)==",") s=s.substring(0,i)+"."+s.substring(i+1,s.length);
	   if (istDezimalZahl(s))
		  return 1*s;
	   else
		  return 0;
	};  
	
	cssSetOpacity = function(element,value) 
	{
		
			if (!istDezimalZahl(value,true) && istZahl(value)) {
				value = asAMDezimalZahl(value) / 100;
			}
			//IE-Bug -> width setzen
			if ((document.all) && (element.style.width=="")) element.style.width=elementGetSize(element).x+"px";
			if (document.all) element.style.filter = (value == 1) ? '' : 'Alpha(opacity=' + value * 100 + ')';
			//if (document.all) element.filters.alpha.opacity = (value == 1) ? '100' : (value * 100);
			element.style.opacity = value;
			if (element.style.MozOpacity) element.style.MozOpacity = value;
	};

	isBody = function(element)
	{
		return (/^(?:body|html)$/i).test(element.tagName);
	};

	elementGetCoordinates = function(element,relativeToElement)
	{
			if (isBody(element)) return alert('Fehler bei GetCoordinates');//getWindowCoordinates();
			var position = elementGetPosition(element,relativeToElement);
			var size = elementGetSize(element);
			var obj = {left: position.x, top: position.y, width: size.x, height: size.y};
			obj.right = obj.left + obj.width;
			obj.bottom = obj.top + obj.height;
			return obj;
	};
	
	elementGetSize = function(element)
	{
		if (isBody(element)) return getWindowSize();
		return {x: element.offsetWidth, y: element.offsetHeight};
	};
	
	elementGetPosition = function(element,relativeToElement)
	{
		if (isBody(element)) return {x: 0, y: 0};
		//var offset = element.getOffsets();
		var offset = {x: 0, y: 0};
		var getOffsets = function(elem){
			if (getBrowserEngine == 'trident'){
				var bound = elem.getBoundingClientRect();
				var html = getDocument(elem).documentElement;
				return {
					x: bound.left + html.scrollLeft - html.clientLeft,
					y: bound.top + html.scrollTop - html.clientTop
				};
			}
			var element = elem, position = {x: 0, y: 0};
			if (isBody(elem)) return position;
			while (element && !isBody(element)){
				position.x += element.offsetLeft;
				position.y += element.offsetTop;
					if (getBrowserEngine == 'gecko'){
					if (!borderBox(element)){
						position.x += leftBorder(element);
						position.y += topBorder(element);
					}
					var parent = element.parentNode;
					if (parent && styleString(parent, 'overflow') != 'visible'){
						position.x += leftBorder(parent);
						position.y += topBorder(parent);
					}
				} else if ((element != elem) && (getBrowserEngine == 'webkit')){
					position.x += leftBorder(element);
					position.y += topBorder(element);
				}
				element = element.offsetParent;
			}
			if (getBrowserEngine == 'gecko' && !borderBox(elem)){
				position.x -= leftBorder(elem);
				position.y -= topBorder(elem);
			}
			return position;
		};
		
		offset = getOffsets(element);
		var scroll = {x: 0, y: 0};
			while (element && !isBody(element)) {
				scroll.x += element.scrollLeft;
				scroll.y += element.scrollTop;
				element = element.parentNode;
			}
		var position = {x: offset.x - scroll.x, y: offset.y - scroll.y};
		var relativePosition = (relativeToElement && (relativeToElement = getID(relativeToElement))) ? elementGetPosition(relativeToElement) : {x: 0, y: 0};
		return {x: position.x - relativePosition.x, y: position.y - relativePosition.y};
	};

	pageGetWindowSize = function()
	{
				var win = window;
				if (getBrowserEngine() == 'presto' || getBrowserEngine() == 'webkit') return {x: win.innerWidth, y: win.innerHeight};
			    var doc = getDocument(window);
			    doc = (!doc.compatMode || doc.compatMode == 'CSS1Compat') ? doc.html : doc.body;
				return {x: doc.clientWidth, y: doc.clientHeight};
	};
