// ------------------------------------------------------------------
// Slider fuer MainMenu
// CopyRight by Griesser AG
// 03.12.2008 / heg
// ------------------------------------------------------------------

// Konfiguration ----------------------------------------------------

	// Geschwindigkeit in px öffnen und schliessen Layer
	var mnuOpenPx = 4;
	var mnuClosePx = 8;

	// IE8 ohne kompmode auf 5fachen speed setzen weil JS Performance schei..e ist
	// deaktiviert da der aktuelle IE8 mit JavaScript nun besser auskommt
	// if (checkforIE8()) {
	//     mnuOpenPx = 20;
	//     mnuClosePx = 40;
	//     }

	// Endpunkt und bremsen ab x px
	var mnuslowsAt = 20;

	// Wert um den verlangsamt wird
	var mnuslowDownCur = 10;

	// Timer Speed
	var mnuclosespeed = 1;
	var mnuopenspeed = 1;

	// Timer Speed Konstante fuer zuruecksetzen
	var mnuclosespeedConst = mnuclosespeed;
	var mnuopenspeedConst = mnuopenspeed;

	// Flag welcher layer geöffnet ist
	var mnucurLayer = "";
	var mnucurID = "";

	// Flag dass beschäftigt
	var mnuOpenbusy = false;
	var mnuClosebusy = false;
	var mnuisbusy = false;

	// Layers in open close
	var mnuclosingLayer = '';
	var mnuopeningLayer = '';


// Functions --------------------------------------------------------

    // Funktion gibt true zurück wenn IE8 broeser ist. IE8 sucks bei Javasdcript, daher Slide verschnellern
	function checkforIE8() {
	    var rv = -1; // Return value assumes failure.
	    if (navigator.appName == 'Microsoft Internet Explorer') {
	        var ua = navigator.userAgent;
	        var re = new RegExp("MSIE ([0-9]{1,}[\.0-9]{0,})");
	        if (re.exec(ua) != null) {
	            rv = parseFloat(RegExp.$1);
	        }
	        return (rv == 8);
	    }
	}


	// Richtungswähler aufgrund der aktuellen height des Layers
		// Layer = LayerID
		// targetHeight = gespeicherte height des Layers
		// force = 0 nicht schliessen wenn offen, 1 immer schliessen (für AutoMark)
		function chooseDirection(Layer, targetHeight,force)
			{
				// Lese aktuelle Layer height ein
				var tmpHeight = document.getElementById(Layer+'s').clientHeight;
				// wenn height < 5 öffnen sonst schliessen
				if(tmpHeight<=5)
					{
						// nur durch wenn nicht bescäftigt
						if(!mnuOpenbusy&&!mnuisbusy)
						{
							// schliesse ggf. geöffneten Layer
							if(mnucurLayer!=""){closeSlide(mnucurLayer, mnucurID);}
							openSlide(Layer+'s', targetHeight)
							mnuOpenbusy = true;
							mnuisbusy = true;
						}
					}else{
						if(force==1)
							{
							if(!mnuClosebusy&&!mnuisbusy)
							{
								closeSlide(Layer+'s', targetHeight)
							}
						}else{
							mnuClosebusy = false;
							mnuisbusy = false;
							}
					}
			}
	// end chooseDirection


	// Schliesse Layer
		function closeSlide(Layer, targetHeight)
			{
			mnuclosingLayer = Layer;
			// lese aktuelle height
			// unter bestimmten Umständen will ein Layer geschlossen werden dens nicht gibt (Querverweis)
			// diesen als Objekt exist abfangen
			if(document.getElementById(mnuclosingLayer)!=null){
				var h = document.getElementById(mnuclosingLayer).clientHeight;
				// verringere height
				h = h - mnuClosePx;
				// verhindern ungültigen Wert
				if(h<0){h=0};
				// setze neue height
				document.getElementById(mnuclosingLayer).style.height=h + "px";
				// durch solange height grösser endöhe
				if(h>1)
					{
						// slow down
						if(mnuslowsAt>=h)
						{
							mnuclosespeed=mnuclosespeed+mnuslowDownCur;
						}
						// timer wiederaufruf
						window.setTimeout('closeSlide(mnuclosingLayer)',mnuclosespeed);
					}else{
						// reset
						mnuclosespeed = mnuclosespeedConst;
						mnuClosebusy = false;
						mnuisbusy = false;
					}
				}
			}
	// end closeSlide


	// Oeffne Layer
		function openSlide(Layer, targetHeight)
			{
			// Flag dass Layer geöffnet ist
			mnucurLayer = Layer;
			mnucurID = targetHeight;
			mnuopeningLayer = Layer;
			// lese aktuelle height
			var h = document.getElementById(mnuopeningLayer).clientHeight;
			// erhöhe height
			h = h + mnuOpenPx;
			// setze neue height
			document.getElementById(mnuopeningLayer).style.height=h + "px";
			// durch solange height kleiner endöhe
			if(h<divArray[targetHeight])
				{
					// slow down
					if(h>=divArray[targetHeight]-mnuslowsAt)
					{
					mnuopenspeed=mnuopenspeed+mnuslowDownCur;
					}
				window.setTimeout('openSlide(mnuopeningLayer,'+targetHeight+')',mnuopenspeed);
				}else{
				// setze genaue Poition
				document.getElementById(mnuopeningLayer).style.height=divArray[targetHeight] + "px";
				mnuopenspeed = mnuopenspeedConst;
				mnuOpenbusy = false;
				mnuisbusy = false;
				}
			}
	// end openSlide

	// lese Layer height
		var divs = document.getElementsByTagName("div");
		var divArray=[];
		function readmnuHeight()
			{
			// Lese Layergrössen in Array
			    for (x = 0; x < divs.length; x++)
				{
					if(divs[x].className=="mnuSubContainer")
					{
						//alert(document.getElementById(divs[x].id).offsetHeight);
						divArray.length++;
						divArray[divArray.length - 1] = document.getElementById(divs[x].id).offsetHeight;
						//geht nicht mit IE6 oder älter:
						//divArray[divArray.length - 1] = document.getElementById(divs[x].id).clientHeight;
					}
				}
			}
	// end readmnuHeight


	// schliesse alle Sub Layer
		function closemnuLayer() {
				// schliesse alle layers
			    for (x = 0; x < divs.length; x++) {
			        if (divs[x].className == "mnuMainItem") {
			            // Layer der initial geöffnet ist nicht schliessen
			            if (divs[x].id + 's' != mnucurLayer) {
			                // alle anderen Layer schliessen
				            document.getElementById(divs[x].id + 's').style.height = "0px";
				        }
					}
				}
			}
	// end closemnuLayer


	// Merker fuer aktuell gewaehlte Produkte
	var markedProd = new Array();

	// markiere relevante Produkte
	function selectProd(list) {
	    if (list.length > 0)
		{
			// setze Merker zuerst zurueck
			// demarkiere selektierte Produkte
			for(var d=0;d<markedProd.length;d++)
			{
			    //document.getElementById(markedProd[d]).style.background = '';
			    document.getElementById(markedProd[d]).style.backgroundImage = "url('')";
				document.getElementById(markedProd[d]).style.color='';
            }

			// setze Array zurueck
			markedProd.length=0;

			// lese aus erstem Element den Parent Layer undöffne das betr. Menu
			// wird nur benötigt wenn nicht bereits im menu, daher zZ nicht aktiv
			//chooseDirection('MainItemId'+document.getElementById(list[0]).name,document.getElementById(list[0]).name,0);

			// gehe durch array und markiere betr. Produkte
			for (var i = 0; i < list.length; i++)
			    {
			        // check ob element existiert
					if(document.getElementById(list[i]))
					{
					    // markiere
						// Variante Farbe
					    //document.getElementById(list[i]).style.background = '#236fb3';
					    // Variante Image
					    document.getElementById(list[i]).style.backgroundImage = "url('/images/selection.gif')";
					    document.getElementById(list[i]).style.backgroundPosition = "bottom";
					    document.getElementById(list[i]).style.backgroundRepeat = "no-repeat";

					    // ggf auf Top navigieren
					    //document.location = '#top';
						//document.getElementById(list[i]).style.color='#000000';

						// lese aktuelle Liste in Array fuer Loeschen
						markedProd.length++;
						markedProd[markedProd.length -1] = list[i];
					}
				}
		}
	}
	// end selectProd

// ------------------------------------------------------------------
