function einSchleichen(objektId, posStart, posEnde, schrittWeite) {
	document.getElementById(objektId).style.top = parseInt(posStart)+"px";
	aktiv = window.setInterval('bewegeElement("'+objektId+'", "'+posEnde+'", "'+schrittWeite+'")', 10);
}

function bewegeElement(objektId, posEnde, schrittWeite) {
	posEnde = parseInt(posEnde);
	schrittWeite = parseInt(schrittWeite);
	pos_top = document.getElementById(objektId).style.top.match(/-*\d{1,}/g);
	if (schrittWeite > 0) {
		if (pos_top >= posEnde) {
			window.clearInterval(aktiv);
		} else {
			document.getElementById(objektId).style.top = (parseInt(pos_top) + schrittWeite) + "px";
		}
	} else {
		if (pos_top <= posEnde) {
			window.clearInterval(aktiv);
		} else {
			document.getElementById(objektId).style.top = (parseInt(pos_top) + schrittWeite) + "px";
		}
	}
}

function zeigeFaq(id) {
	// alle Antworten abstellen
	antworten = getElementsByClassName('answer');
	for (i = 0; i < antworten.length; i++) {
		antworten[i].style.display = "none";
	}
	// dafür die Fragen anstellen
	fragen = getElementsByClassName('question');
	for (i = 0; i < fragen.length; i++) {
		fragen[i].style.display = "block";
	}
	// die geklickte Frage abstellen
	document.getElementById('q'+id).style.display = "none";
	document.getElementById('a'+id).style.display = "block";
}

function str_pad(val){
	return (!isNaN(val) && val.toString().length==1)?"0"+val:val;
}

/*
function autoIni(slider, value) {
	if (slider.laeuft === false) {
		slider.laeuft = true;
		auto(slider, value);
	}
}

function autoStop(slider) {
	slider.laeuft = false;
}


function auto(slider, value) {
	if (slider.laeuft === false) {
		return false;		
	}
	setSliderValue(slider, str_pad(value));
	value = value + 1;
	if (value > 32) {
		value = 1;
	}
	window.setTimeout('auto('+slider.varname+', '+value+')', 100);
	return false;
}


function setSliderValue(slider, value) {
	// due to onChange code above we need this or 
	// a 0 will be put in the text box when you delete the value
	if (value == '') return;
	slider.setValue(value);
}
*/

function isVisible(obj)
{
    if (obj == document) return true
    
    if (!obj) return false
    if (!obj.parentNode) return false
    if (obj.style) {
        if (obj.style.display == 'none') return false
        if (obj.style.visibility == 'hidden') return false
    }
    
    //Try the computed style in a standard way
    if (window.getComputedStyle) {
        var style = window.getComputedStyle(obj, "")
        if (style.display == 'none') return false
        if (style.visibility == 'hidden') return false
    }
    
    //Or get the computed style using IE's silly proprietary way
    var style = obj.currentStyle
    if (style) {
        if (style['display'] == 'none') return false
        if (style['visibility'] == 'hidden') return false
    }
    
    return isVisible(obj.parentNode)
}

function toggleFauxSelect(id) {
	// die Liste der Optionen finden
	var option = getElementsByClassName("options", "div", document.getElementById(id)); 
	if (isVisible(option[0])) {
		option[0].style.display = "none";
	} else {
		option[0].style.display = "block";
	}
	if (klasseIst(option[0], 'over')) {
		option[0].style.top = '-'+(option[0].offsetHeight+21)+'px';
	}
}

function getH(oElement) {
	var iReturnValue = 0;
	while( oElement != null ) {
		iReturnValue += oElement.offsetHeight;
		oElement = oElement.offsetParent;
	}
	return iReturnValue;
}

function zeige3D(sensor_id) {
	document.getElementById('iframe_3d').src = '3d2.php?sensor_id='+sensor_id;
	lichtKisteAn('3d');
}

function verberge3D() {
	document.getElementById('iframe_3d').src = '3d2.php';
	lichtKisteAus();
}

function zeigeZoom(sensor_id) {
	document.getElementById('iframe_zoom').src = 'zoom.php?sensor_id='+sensor_id;
	lichtKisteAn('zoom');
}

function verbergeZoom() {
	document.getElementById('iframe_zoom').src = 'zoom.php';
	lichtKisteAus();
}

function lichtKisteAus() {
	dinge = getElementsByClassName('white_content');
	for ( var i in dinge ) {
		dinge[i].style.visibility = 'hidden';
	}
	document.getElementById('black_overlay').style.display = "none";

	// alle Selectfelder wieder anstellen	
	selectfelder = document.getElementsByTagName("select");
	for ( var i in selectfelder ) {
		if (selectfelder[i].style) {
			selectfelder[i].style.visibility = "visible";
		}
	}

}

function lichtKisteAn(id) {
	// alle white_contents abstellen
	dinge = getElementsByClassName('white_content');
	for ( var i in dinge ) {
		dinge[i].style.visibility = 'hidden';
	}

	// alle Selectfelder abstellen	
	selectfelder = document.getElementsByTagName("select");
	for ( var i in selectfelder ) {
		if (selectfelder[i].style) {
			selectfelder[i].style.visibility = "hidden";
		}
	}
	
	var breite = document.getElementById(id).offsetWidth;
	var pageoffset = pageOffset();
	var hoehe = document.getElementById(id).offsetHeight;
	document.getElementById(id).style.left = (document.body.offsetWidth/2 - breite/2) + 'px';
	//document.getElementById(id).style.top = (document.body.offsetHeight/2 - hoehe/2) + 'px';
	document.getElementById(id).style.top = (pageOffset().top + getViewportHeight()/2 - hoehe/2) + 'px';
	
	//document.getElementById(id).style.top = (pageoffset.top + 100) + 'px';
	//document.getElementById(id).style.top = (pageoffset.top + 0) + 'px'
	
	document.getElementById('black_overlay').style.display = "block";
	
	
	document.getElementById('black_overlay').style.height = getDocHeight() + 'px'; 
	document.getElementById('black_overlay').style.width = document.body.offsetWidth + 'px';
	
	document.getElementById(id).style.visibility = "visible";
}

function getDocHeight() {
	var D = document;
	return Math.max(
		Math.max(D.body.scrollHeight, D.documentElement.scrollHeight),
		Math.max(D.body.offsetHeight, D.documentElement.offsetHeight),
		Math.max(D.body.clientHeight, D.documentElement.clientHeight)
	);
}

function getWindowHeight() {
	var myWidth = 0, myHeight = 0;
	if (typeof(window.innerWidth) == 'number') {
		//Non-IE
		myWidth = window.innerWidth;
		myHeight = window.innerHeight;
	} else if (document.documentElement && (document.documentElement.clientWidth || document.documentElement.clientHeight )) {
		//IE 6+ in 'standards compliant mode'
		myWidth = document.documentElement.clientWidth;
		myHeight = document.documentElement.clientHeight;
	} else if (document.body && (document.body.clientWidth || document.body.clientHeight)) {
		//IE 4 compatible
		myWidth = document.body.clientWidth;
		myHeight = document.body.clientHeight;
	}
	return myHeight;
}

function getViewportHeight() {
	var viewportwidth;
	var viewportheight;
	// the more standards compliant browsers (mozilla/netscape/opera/IE7) use window.innerWidth and window.innerHeight
	if (typeof window.innerWidth != 'undefined') {
		viewportwidth = window.innerWidth,
		viewportheight = window.innerHeight	
	}
	
	// IE6 in standards compliant mode (i.e. with a valid doctype as the first line in the document)
	else if (typeof document.documentElement != 'undefined' && typeof document.documentElement.clientWidth != 'undefined' && document.documentElement.clientWidth != 0) {
		viewportwidth = document.documentElement.clientWidth,
		viewportheight = document.documentElement.clientHeight
	}
	// older versions of IE
	else {
		viewportwidth = document.getElementsByTagName('body')[0].clientWidth,
		viewportheight = document.getElementsByTagName('body')[0].clientHeight
	}
	return viewportheight;
}


function pageOffset(win) {
	if(!win) win = window;
	var pos = {left:0,top:0};

	if(typeof win.pageXOffset != 'undefined')
	{
		 // Mozilla/Netscape
		 pos.left = win.pageXOffset;
		 pos.top = win.pageYOffset;
	}
	else
	{
		 var obj = (win.document.compatMode && win.document.compatMode == "CSS1Compat") ?
		 win.document.documentElement : win.document.body || null;

		 pos.left = obj.scrollLeft;
		 pos.top = obj.scrollTop;
	}
	return pos;
}

function fixOnMouseOut(element, event, JavaScript_code) {
	var current_mouse_target = null;
	if( event.toElement ) {				
		current_mouse_target 			 = event.toElement;
	} else if( event.relatedTarget ) {				
		current_mouse_target 			 = event.relatedTarget;
	}
	if( !is_child_of(element, current_mouse_target) && element != current_mouse_target ) {
		eval(JavaScript_code);
	}
}

function is_child_of(parent, child) {
	if( child != null ) {			
		while( child.parentNode ) {
			if( (child = child.parentNode) == parent ) {
				return true;
			}
		}
	}
	return false;
}



/*
	Developed by Robert Nyman, http://www.robertnyman.com
	Code/licensing: http://code.google.com/p/getelementsbyclassname/
*/
var getElementsByClassName = function (className, tag, elm){
	if (document.getElementsByClassName) {
		getElementsByClassName = function (className, tag, elm) {
			elm = elm || document;
			var elements = elm.getElementsByClassName(className),
				nodeName = (tag)? new RegExp("\\b" + tag + "\\b", "i") : null,
				returnElements = [],
				current;
			for(var i=0, il=elements.length; i<il; i+=1){
				current = elements[i];
				if(!nodeName || nodeName.test(current.nodeName)) {
					returnElements.push(current);
				}
			}
			return returnElements;
		};
	}
	else if (document.evaluate) {
		getElementsByClassName = function (className, tag, elm) {
			tag = tag || "*";
			elm = elm || document;
			var classes = className.split(" "),
				classesToCheck = "",
				xhtmlNamespace = "http://www.w3.org/1999/xhtml",
				namespaceResolver = (document.documentElement.namespaceURI === xhtmlNamespace)? xhtmlNamespace : null,
				returnElements = [],
				elements,
				node;
			for(var j=0, jl=classes.length; j<jl; j+=1){
				classesToCheck += "[contains(concat(' ', @class, ' '), ' " + classes[j] + " ')]";
			}
			try	{
				elements = document.evaluate(".//" + tag + classesToCheck, elm, namespaceResolver, 0, null);
			}
			catch (e) {
				elements = document.evaluate(".//" + tag + classesToCheck, elm, null, 0, null);
			}
			while ((node = elements.iterateNext())) {
				returnElements.push(node);
			}
			return returnElements;
		};
	}
	else {
		getElementsByClassName = function (className, tag, elm) {
			tag = tag || "*";
			elm = elm || document;
			var classes = className.split(" "),
				classesToCheck = [],
				elements = (tag === "*" && elm.all)? elm.all : elm.getElementsByTagName(tag),
				current,
				returnElements = [],
				match;
			for(var k=0, kl=classes.length; k<kl; k+=1){
				classesToCheck.push(new RegExp("(^|\\s)" + classes[k] + "(\\s|$)"));
			}
			for(var l=0, ll=elements.length; l<ll; l+=1){
				current = elements[l];
				match = false;
				for(var m=0, ml=classesToCheck.length; m<ml; m+=1){
					match = classesToCheck[m].test(current.className);
					if (!match) {
						break;
					}
				}
				if (match) {
					returnElements.push(current);
				}
			}
			return returnElements;
		};
	}
	return getElementsByClassName(className, tag, elm);
};

function klasseIst(obj, cssklasse) {
	rueckgabe = false;
	if (obj) {
		var klassenstring = obj.className;
		var klassen = klassenstring.split(" ");
		if (in_array(cssklasse, klassen)) {
			rueckgabe = true;
		}
	}
	return rueckgabe;
}


function klasseEntfernen(id, cssklasse) {
	if (document.getElementById(id)) {
		var klassenstring = document.getElementById(id).className;
		var klassen = klassenstring.split(" ");
		if (in_array(cssklasse, klassen)) {
			var stelle = array_keys(klassen, cssklasse);
			delete klassen[stelle[0]];  
		}
		// Klasse zuweisen
		document.getElementById(id).className = implode(' ', klassen);
	} else if (id){
		var klassenstring = id.className;
		var klassen = klassenstring.split(" ");
		if (in_array(cssklasse, klassen)) {
			var stelle = array_keys(klassen, cssklasse);
			delete klassen[stelle[0]];  
		}
		// Klasse zuweisen
		id.className = implode(' ', klassen);
	}
	// sonst nichts tun
}

function klasseHinzu(id, cssklasse) {
	if (document.getElementById(id)) {
		var klassenstring = document.getElementById(id).className;
		var klassen = klassenstring.split(" ");
		if (!in_array(cssklasse, klassen)) {
			klassen[klassen.length+1] = cssklasse;
		}
		// Klasse zuweisen
		document.getElementById(id).className = implode(' ', klassen);
	} else if (id) {
		var klassenstring = id.className;
		var klassen = klassenstring.split(" ");
		if (!in_array(cssklasse, klassen)) {
			klassen[klassen.length+1] = cssklasse;
		}
		// Klasse zuweisen
		id.className = implode(' ', klassen);
	}
}

function in_array(needle, haystack, argStrict) {
    // Checks if the given value exists in the array  
    // 
    // version: 903.1614
    // discuss at: http://phpjs.org/functions/in_array
    // +   original by: Kevin van Zonneveld (http://kevin.vanzonneveld.net)
    // *     example 1: in_array('van', ['Kevin', 'van', 'Zonneveld']);
    // *     returns 1: true
    var found = false, key, strict = !!argStrict;

    for (key in haystack) {
        if ((strict && haystack[key] === needle) || (!strict && haystack[key] == needle)) {
            found = true;
            break;
        }
    }

    return found;
}

function getBasename(path, suffix) {
	// Returns the filename component of the path  
	// 
	// version: 1103.1210
	// discuss at: http://phpjs.org/functions/basename    
	// +   original by: Kevin van Zonneveld (http://kevin.vanzonneveld.net)
	// +   improved by: Ash Searle (http://hexmen.com/blog/)
	// +   improved by: Lincoln Ramsay
	// +   improved by: djmix
	// *     example 1: basename('/www/site/home.htm', '.htm');    // *     returns 1: 'home'
	// *     example 2: basename('ecra.php?p=1');
	// *     returns 2: 'ecra.php?p=1'
	var b = path.replace(/^.*[\/\\]/g, '');
	if (typeof(suffix) == 'string' && b.substr(b.length - suffix.length) == suffix) {
		b = b.substr(0, b.length - suffix.length);
	}
	
	return b;
} 

function explodeQuerystring(qs) {
	var args = new Object();
	var pairs = qs.split("&"); 
	for (var i = 0; i < pairs.length; i++) {
		var pos = pairs[i].indexOf('='); 
		if (pos == -1) continue; 
		var argname = pairs[i].substring(0, pos); 
		var value = pairs[i].substring(pos + 1);
		args[argname] = unescape(value); 
	}
	return args; 
}


function bildWechsel(dieses) {
	// die Bildquelle ohne Querystring festellen
	var basename = getBasename(dieses.src);
	var hilfe = basename.split("?");
	var filename = hilfe[0];
	var querystring = hilfe[1];
	if (filename == 'gd_schrift.php') {
		if (querystring.indexOf('hover=1') == -1) {
			dieses.src = dieses.src+'&hover=1';
		} else {
			dieses.src = dieses.src.replace("&hover=1", "");
		}
	} else {
		// wird benutzen um über die Navigationselemente zu hovern
		l0 = dieses.src.length;
		l1 = dieses.src.length -4;
		l2 = dieses.src.length -7;
		rest = dieses.src.substring(0, l2);
		status = dieses.src.substring(l2, l1);
		typ = dieses.src.substring(l1, l0);
		
		// nur dann etwas tun, wenn der status nicht "akt" ist
		if (status != 'akt') {
			// auf over wechseln
			if (status == 'out') {
				src_neu = rest+'ovr'+typ;
			} else {
			// auf out wechseln
				src_neu = rest+'out'+typ;
			}
			// anwenden
			dieses.src = src_neu;
		}
	}	
}

function zeigeNews(id) {
	longs = getElementsByClassName('long');
	for (i = 0; i < longs.length; i++) {
		longs[i].style.display = "none";
	}
	shorts = getElementsByClassName('short');
	for (i = 0; i < shorts.length; i++) {
		shorts[i].style.display = "block";
	}
	document.getElementById('short_'+id).style.display = 'none';
	document.getElementById('long_'+id).style.display = 'block';
	bilder = getElementsByClassName('bilder_'+id);
	for (i = 0; i < bilder.length; i++) {
		bilder[i].style.display = "block";
	}
}

function toggleObject(id) {
	// schaltet zwischen der sichtbar-/unsichtbarkeit eines Objektes hin und her
	if (document.getElementById(id)) {
		obj = document.getElementById(id);
		if (isVisible(obj) === true) {
			obj.style.display = 'none';
		} else {
			obj.style.display = 'block';
		}
	}
}

function fadeIn(obj) {
	// aktuelle Opazität ermitteln
	opacity = obj.style.opacity;
	if (opacity == undefined) {
		obj.style.opacity = 0;
		//fadeIn(obj);
		setTimeout(function() {
			fadeIn(obj);
		}, 50);
	} else {
		if (opacity < 1) {
			opacity = opacity + 0.02;
			//alert("alpha(opacity="+(opacity*100)+")");
			obj.style.filter = "alpha(opacity="+(opacity*100)+")";
			obj.style.opacity = opacity;
			obj.style.mozOpacity = opacity;
			setTimeout(function() {
				fadeIn(obj);
			}, 50);
		}
	}
}

