﻿
var navArray;

// Events, Effekte, Navigation, Mootool
window.addEvent("domready", function() {

    // Iinitialisierung vom ImageZoom
	initImageZoom();
	
	// Grösse das Anzeigebereichs auslesen
	myWindowGetSize();
	
	// Effekt für alle Elemente mit class="div_toggle"
    $$(".div_toggle").addEvents({
        'mouseover': function() {
            this.set('tween', {transition: Fx.Transitions.Cubic.easeOut}).tween('height', this.getScrollSize().y + 'px');
        },
        'mouseout': function() {
            this.set('tween', {transition: Fx.Transitions.Cubic.easeOut}).tween('height', '20px');
        }
    })
    
    
    // +++++++++++++++++++++++++++++++ //
    //           Navigation            //
    // +++++++++++++++++++++++++++++++ //

    var linkClick = false;
    
    var alleGrpTitel = $$("div.div_artikel_nav_grptitel");
	var aktiveGrp;
    
    if( navModus == 2 ) {
        navArray = readCookie('navArray');
    
        if( alleGrpTitel.length > 0 ) {
            if( navModus == 2 ) {
                if( navArray == null || navArray.split(",").length != alleGrpTitel.length ) {
                    navArray = new Array(alleGrpTitel.length);
                    for( var i = 0; i < navArray.length; i++ ) {
       		            var unterGrp = alleGrpTitel[i].getParent().getChildren('div.div_artikel_nav_untergrp');
       		            if( unterGrp.length > 0 ) {
       		                if( alleGrpTitel[i].getProperty('class').contains('aktiv') ) {
       		                    navArray[i] = "1";
       		                    unterGrp[0].show();
       		                }
       		                else {
       		                    navArray[i] = "0";
       		                    unterGrp[0].hide();
       		                }
       		            }
       		            else {
       		                navArray[i] = "0";
       		            }
                    }
                    createCookie('navArray', navArray.join(","), 1);
                }
                else {
                    navArray = navArray.split(",");
                    for( var i = 0; i < navArray.length; i++ ) {
       		            var unterGrp = alleGrpTitel[i].getParent().getChildren('div.div_artikel_nav_untergrp');
       		            if( unterGrp.length > 0 ) {
       		                if( navArray[i] == "1" ) {
       		                    unterGrp[0].show();
       		                    if( !alleGrpTitel[i].getProperty('class').contains('aktiv') ) {
       		                        alleGrpTitel[i].setProperty('class', alleGrpTitel[i].getProperty('class') + "_aktiv");
       		                    }
       		                }
       		                else {
       		                    if( alleGrpTitel[i].getProperty('class').contains('aktiv') ) {
       		                        unterGrp[0].show();
       		                        navArray[i] = "1"
       		                    }
       		                    else {
       		                        unterGrp[0].hide();
       		                    }
       		                    alleGrpTitel[i].setStyle('background-image','url(layout/img/art_nav_pfeil_nach_rechts.png)');
       		                }
       		            }
                    }
                }
            }
        }
    }
    
    $('div_main_sortiment').show();
	
    if( alleGrpTitel.length > 0 ) {
        alleGrpTitel.addEvents({
            'mouseover': function() {
       		    var unterGrp = this.getParent().getChildren('div.div_artikel_nav_untergrp');
       		    if( unterGrp.length > 0 ) {
       		        this.setStyle('background-image','url(layout/img/art_nav_pfeil_nach_unten_hover.png)');
       		    }
       		    else {
       		        this.setStyle('background-image','url(layout/img/art_nav_pfeil_nach_rechts_hover.png)');
       		    }
            },
            'mouseout': function() {
       		    var unterGrp = this.getParent().getChildren('div.div_artikel_nav_untergrp');
       		    if( unterGrp.length > 0 && this.getProperty('class').contains('aktiv') && unterGrp[0].getStyle('display') != "none" ) {
       		        this.setStyle('background-image','url(layout/img/art_nav_pfeil_nach_unten.png)');
       		    }
       		    else {
       		        this.setStyle('background-image','url(layout/img/art_nav_pfeil_nach_rechts.png)');
       		    }
            },
            'click': function() {
       		    var unterGrp = this.getParent().getChildren('div.div_artikel_nav_untergrp');
       		    if( unterGrp.length > 0 ) {
       		        if( !linkClick ) {
       		            if( navModus == 1 )
       		                schliesseAndereWarengruppen(this);
       		            if( navModus == 2 )
       		                navCookieUpdate(alleGrpTitel.indexOf(this));
       		            unterGrp.toggle();
       		            if( !this.getProperty('class').contains('aktiv') ) {
       		                this.setProperty('class', this.getProperty('class') + "_aktiv");
       		            }
       		        }
       		    }
            }
        })
        
    
        $$(".div_artikel_nav_grptitel a").addEvents({
            'click': function() {
       		    linkClick = true;
            }
        })
    }
    
	// Schliesst offene, nicht aktive Warengruppen
	function schliesseAndereWarengruppen( elem ) {
		if( !aktiveGrp ) {
			aktiveGrp = $("div_artikel_nav_grp_aktiv");
		}
		if( aktiveGrp ) {
			var alleGrp = aktiveGrp.getParents("div.div_artikel_nav_grp");
			for( var i = 0; i < alleGrp.length; i++ )
				if( !alleGrp[i].hasChild(elem) && alleGrp[i].getChildren('div.div_artikel_nav_untergrp').length > 0 ) {
					var grpTitel = alleGrp[i].getChildren('div.div_artikel_nav_grptitel')[0];
					grpTitel.setProperty('class', grpTitel.getProperty('class').replace(/_aktiv/gi, ""));
					grpTitel.setStyle('background-image','url(layout/img/art_nav_pfeil_nach_rechts.png)');
					alleGrp[i].getChildren('div.div_artikel_nav_untergrp')[0].hide();
				}
			var alleAktGrp = aktiveGrp.getParents("div.div_artikel_nav_grp_aktiv");
			for( var i = 0; i < alleAktGrp.length; i++ )
				if( !alleAktGrp[i].hasChild(elem) && alleAktGrp[i].getChildren('div.div_artikel_nav_untergrp').length > 0 ) {
					alleAktGrp[i].getChildren('div.div_artikel_nav_untergrp')[0].hide();
					alleAktGrp[i].getChildren('div.div_artikel_nav_grptitel')[0].setStyle('background-image','url(layout/img/art_nav_pfeil_nach_rechts.png)');
				}
		}
		aktiveGrp = elem;
	}
    
    
    // +++++++++++++++++++++++++++++++ //
    
    //Lieferadressen-Form gemäss Checkbox anzeigen
    if( document.getElementById("td_lieferadresse_checkbox") != null )
        lieferadresseCheckbox_click(document.getElementById("td_lieferadresse_checkbox").getElementsByTagName("input")[0]);
        
        
    //entfernt Rahmen um Links für IE
    if( navigator.appName == "Microsoft Internet Explorer" ) {
        var aas = document.getElementsByTagName("a"); 
        for( var i = 0; i < aas.length; i++ ) aas[i].hideFocus = true;
    }
});



// Cookie Funktionen

function createCookie(name, value, hours) {
	if (hours) {
		var date = new Date();
		date.setTime(date.getTime()+(hours*60*60*1000));
		var expires = "; expires="+date.toGMTString();
	}
	else var expires = "";
	document.cookie = name+"="+value+expires+"; path=/";
}

function readCookie(name) {
	var nameEQ = name + "=";
	var ca = document.cookie.split(';');
	for(var i=0;i < ca.length;i++) {
		var c = ca[i];
		while (c.charAt(0)==' ') c = c.substring(1,c.length);
		if (c.indexOf(nameEQ) == 0) return c.substring(nameEQ.length,c.length);
	}
	return null;
}

function eraseCookie(name) {
	createCookie(name,"",-1);
}


function navCookieUpdate(index) {
    if( navArray[index] == "0" ) navArray[index] = "1";
    else navArray[index] = "0";
    eraseCookie('navArray');
    createCookie('navArray', navArray.join(","), 1);
}



// Eine Selektion in der Artikelliste Anzeigen
function selektionAnzeigen( elem, invers ) {
    var divs = elem.getElementsByTagName("div");
    for( var i = 0; i < divs.length; i++ ) {
        if( !invers && divs[i].className == "div_artikelliste_warenkobzeile_selektion_inaktiv" )
            divs[i].className = "div_artikelliste_warenkobzeile_selektion_aktiv";
        else if( invers && divs[i].className == "div_artikelliste_warenkobzeile_selektion_aktiv" ) {
            if( navigator.appName == "Microsoft Internet Explorer" ) {
                var pos = getPosition( divs[i] );
                var h = divs[i].offsetHeight;
                var w = divs[i].offsetWidth;
                var mausX = window.event.clientX;
                var mausY = window.event.clientY;
                if( !( pos.x + 3 < mausX && mausX + 3 < (pos.x + w) && pos.y + 3 < mausY && mausY + 3 < (pos.y + h) ) ) divs[i].className = "div_artikelliste_warenkobzeile_selektion_inaktiv";
            }
            else divs[i].className = "div_artikelliste_warenkobzeile_selektion_inaktiv";
        }
    }
}
function selektionAnzeigenRadioIE( elem ) {
    if( navigator.appName == "Microsoft Internet Explorer" ) {
        var aussen = elem.parentNode;
        while( aussen.className == null || ( aussen.className != "div_artikelliste_warenkobzeile_aussen" && aussen.parentNode.tagName.toLowerCase() != "body" ) ) aussen = aussen.parentNode;
        selektionAnzeigen( aussen, false );
    }
}


// Eingabekorrekturen
var telefonElem = new Array();

function valid_zahl_keyUp( elem ) {
    var val = elem.value.replace(/[^\d]/g, '');
    elem.value = val;
}

function valid_telefon_keyUp( elem ) {
    var val = elem.value.replace(/[^-+\s()\/\d]|[\t\r\n\f]/g, '');
    elem.value = val;
    
    //value ins HiddenField schreiben für die Validation
    var enthalten = false;
    var zeichenkette = "";
    for( var i = 0; i < telefonElem.length; i++ ) {
        zeichenkette += telefonElem[i].value;
        if( telefonElem[i] == elem )
            enthalten = true;
    }
    if( !enthalten ) {
        telefonElem.push(elem);
        zeichenkette += elem.value;
    }
    document.getElementById("td_telefon_sum").getElementsByTagName("input")[0].value = zeichenkette;
}

function valid_website_onFocus( elem ) {
    if( elem.value.length < 7 || ( elem.value.length >= 7 && elem.value.substr(0, 7)!= "http://" ) )
        elem.value = "http://" + elem.value;
}

function lieferadresseCheckbox_click( elem ) {
    var trElems = document.getElementsByTagName("tr");
    for( var i = 0; i < trElems.length; i++ )
        if( trElems[i].className == "tr_lieferadresse" )
            if( elem.checked ) {
                if( navigator.appName == "Microsoft Internet Explorer" ) trElems[i].style.display = "block";
                else trElems[i].style.display = "table-row";
            }
            else trElems[i].style.display = "none";
}



    
function elementMouseOverBackground(elem) {
    elem.style.backgroundColor = '#f9f9f9';
}

function elementMouseOutBackground(elem) {
    elem.style.backgroundColor = '#ffffff';
}




// Position eines Elements ermitteln
function getPosition(element)
/* der Aufruf dieser Funktion ermittelt die absoluten Koordinaten
   des Objekts element */
{
  var elem=element,tagname="",x=0,y=0;
  
/* solange elem ein Objekt ist und die Eigenschaft offsetTop enthaelt
   wird diese Schleife fuer das Element und all seine Offset-Eltern ausgefuehrt */
  while ((typeof(elem)=="object")&&(typeof(elem.tagName)!="undefined"))
  {
    y+=elem.offsetTop;     /* Offset des jeweiligen Elements addieren */
    x+=elem.offsetLeft;    /* Offset des jeweiligen Elements addieren */
    tagname=elem.tagName.toUpperCase(); /* tag-Name ermitteln, Grossbuchstaben */
    
/* wenn beim Body-tag angekommen elem fuer Abbruch auf 0 setzen */
    if (tagname=="BODY")
      elem=0;

/* wenn elem ein Objekt ist und offsetParent enthaelt
   Offset-Elternelement ermitteln */
    if (typeof(elem)=="object")
      if (typeof(elem.offsetParent)=="object")
        elem=elem.offsetParent;
  }

/* Objekt mit x und y zurueckgeben */
  position=new Object();
  position.x=x;
  position.y=y;
  return position;
}



// Grösse des Anzeigebereichs
var myWidth = 0;
var myHeight = 0;

function myWindowGetSize() {
  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;
  }
}
