// *************************************************************************
// *************************************************************************
// ***********                                              ****************
// ***********        JavaScript-Werkzeugsammlung 1.0       ****************
// ***********                                              ****************
// ***********     Copyright (c) 2002-2009 D. Herminghaus   ****************
// ***********        http://www.david-herminghaus.de       ****************
// ***********                                              ****************
// ***********           Alle Rechte vorbehalten.           ****************
// ***********                                              ****************
// *************************************************************************
// *************************************************************************


// ***************************
// *** Cookie-Hilfsmittel  ***
// ***************************

function cookieLeben(leben)
	{
	// nur intern zum Berechnen des Cookie-Datums bei cookieSet
	var date=new Date();
	date.setDate(date.getDate()+leben);
	var gmt=date.toGMTString();
	var k1=gmt.indexOf(" ");
	var k2=gmt.indexOf(" ", k1+1);
	var k3=gmt.indexOf(" ", k2+1);
	var str=gmt.substring(0,k2)+"-"+gmt.substring(k2+1,k3)+"-"+gmt.substring(k3+1,gmt.length);
	return str;
	}

function setCookie(name, value, lebensdauer)
	{
	// setzt ein Cookie. Lebensdauer in Tagen.
	document.cookie=escape(name)+"="+escape(value)+"; path="+escape('/')+"; expires="+cookieLeben(lebensdauer);
	}

function getCookie(name)
	{
	// ruft ein Cookie mit dem Namen "name" ab, falls es existiert
	var value="";
	if(document.cookie != "")
	{
		var kk=document.cookie.indexOf(name+"=");
		if(kk >= 0)
		{
			kk=kk+name.length+1;
			var ll=document.cookie.indexOf(";", kk);
			if (ll < 0) ll=document.cookie.length;
			value=document.cookie.substring(kk, ll);
			value=unescape(value); 
		}
	}
	return value;
	}

// ***********************
// ** DOM-Hilfsroutinen **
// ***********************

function domAttributSetzen (dasObjekt,name,wert)
	{
	// Vereinfacht das dynamische erzeugen von DOM-Attibutknoten
	var meinAttribut = document.createAttribute(name);
	meinAttribut.nodeValue = wert;
	dasObjekt.setAttributeNode(meinAttribut);
	}

function browserKannDOM() {
	// Ermittelt, ob der Browser DOM-tauglich ist
	
	if (document.getElementById)
		{
		return true;
		}
	return false;
}

function DOMswap(ElementID,was) {
	// setzt das Style-Attribut auf den wert von was
	
	if (browserKannDOM()) {
		document.getElementById(ElementID).style.display = was;
	}
}

function DOMshowBlock(ElementID) {
	// setzt das style.display-Attribut auf "block"

	DOMswap(ElementID,"block");
}

function DOMshow(ElementID) {
	// setzt das style.display-Attribut auf "inline"
	
	DOMswap(ElementID,"inline");
}

function DOMhide(ElementID) {
	// setzt das style.display-Attribut auf "none"
	
	DOMswap(ElementID,"none");
}

function DOMput(ElementID,meinText) {
	// einen Text vereinfacht in ein Element befördern
	
	document.getElementById(ElementID).innerHTML = meinText;
}

// ***********************
// **  Eingaberoutinen  **
// ***********************

function cleanNumbers(wert,mitDezimal,negativ)
	{
	// eliminiert aus "wert" alles, was keine Zahl ist
	// und gibt den bereinigten wert zur&#252;ck
	
	var neg=false;

	if (negativ)
		{
		neg = wert.indexOf('-') == 0;
		}
	
	if (mitDezimal)
		{
		wert = wert.replace(/,/g,".");
		wert = wert.replace(/(\.[^\.]*)\.$/g,"$1");
		wert = wert.replace(/[^\.\d]/g,"");
		}
	else
		{
		wert = wert.replace(/\D/g,'');
		}
	if (neg)
		{
		wert = '-'+wert;
		}
	return wert;
	}


function limitValue(istWert,minWert,maxWert) {
	// ersetzt istWert durch minWert oder maxWert,
	// falls minWert unter- oder maxWert überschritten wird.
	// (nur wirksam, wenn min bzw. max nicht "false")
	if (typeof minWert != "number") {minWert = istWert}
	if (typeof maxWert != "number") {maxWert = istWert}

	if (istWert != "") {
		//if (typeof istWert != "number") {istWert = parseFloat(istWert)}
		if (istWert < minWert) {
			istWert = minWert;
		} else {
			if (istWert > maxWert) {
				istWert = maxWert;
			}
		}
	}
	return istWert;
}	

// ***************************
// ***   CSS-Hilfsmittel   ***
// ***************************

//  Array mit den CSS-Eigenschaften
var arrCSS = new Array;
arrCSS["background"]            = "background";
arrCSS["background-attachment"] = "backgroundAttachment";
arrCSS["background-color"]      = "backgroundColor";
arrCSS["display"]      = "display";
arrCSS["margin-left"]      = "marginLeft";
arrCSS["margin-right"]      = "marginRight";
arrCSS["width"]      = "width";
arrCSS["position"]      = "position";
arrCSS["top"]      = "top";
arrCSS["left"]      = "left";

//  ... usw. bei Bedarf fortsetzen

function getCSSmediaType()
	{
	// fragt den Anzeigegerät-Typ des Users ab.
	// erfordert analog Definitionen des Layers
	// "mediaInspector" für die einzelnen Geräte in einem Stylesheet
	
	if (document.getElementById) {
		var mediaInspector = document.getElementById('mediaInspector');
		if (mediaInspector.currentStyle)
			{
			zIndex = mediaInspector.currentStyle['zIndex'];
			} 
		else if (window.getComputedStyle)
			{
			zIndex = window.getComputedStyle(mediaInspector, '').getPropertyValue("z-index");
			}
		else
			{
			return 'unknown';
			}
		}
	else {
		return 'unknown';
		}

	switch (parseInt(zIndex))
		{
		case 1:
		return 'aural';
		break;
		
		case 2:
		return 'braille';
		break;
		
		case 3:
		return 'embossed';
		break;
		
		case 4:
		return 'handheld';
		break;
		
		case 5:
		return 'print';
		break;
		
		case 6:
		return 'projection';
		break;
		
		case 7:
		return 'screen';
		break;

		case 8:
		return 'tty';
		break;

		case 9:
		return 'tv';
		break;
		}
	}

function dhWindowInnerWidth() {
	if (window.innerWidth) {
		return window.innerWidth;
	}
	if (screen.width) {
		return screen.width;
	}
	return 0;
}

function dhWindowInnerHeight() {
	if (window.innerHeight) {
		return window.innerHeight;
	}
	if (screen.height) {
		return screen.height;
	}
	return 0;
}

function dhFensterBreitGenug(mindestBreite) {
		return (dhWindowInnerWidth() < mindestBreite) ? false : true;
	}

function dhFensterHochGenug(mindestHoehe) {
		return (dhWindowInnerHeight() < mindestHoehe) ? false : true;
	}


function dhMomentanerStyle(elementID, cssEigenschaft) {

	//  Falls CSS-Eigenschaft nicht existiert -> Funktion verlassen
	if(arrCSS[cssEigenschaft] == null) return;

	//  Falls der Brower die Methode "getComputedStyle" kennt (W3C-DOM)
	if(window.getComputedStyle){
		return window.getComputedStyle(document.getElementById(elementID), null).getPropertyValue(cssEigenschaft);
	}

	//  Falls der Browser die Methode "currentStyle" kennt (neuere IEs)
	else if(document.getElementById(elementID).currentStyle) {
		return document.getElementById(elementID).currentStyle[arrCSS[cssEigenschaft]];
	}
}

