(function() { 
	var Event = YAHOO.util.Event, 
	  Dom   = YAHOO.util.Dom, 
	  lang  = YAHOO.lang, 
	  slider,  
	  bg="slider-bg", thumb="slider-thumb",  
	  valuearea="slider-value", textfield="slider-converted-value"
	
	strom_arr = new Array("1.500", "2.500", "3.000", "4.000", "5.000", "7.000", "10.000", "50.000", "100.000");
	strom_gewerbe_arr = new Array("10.000", "20.000", "30.000", "50.000", "70.000", "100.000");
	gas_arr = new Array("2.300", "5.000", "10.000", "20.000", "30.000", "40.000", "60.000", "80.000", "100.000");
        
 
    Event.onDOMReady(function(e) { 
		var confirm = YAHOO.util.Dom.getElementsByClassName("confirm");
		var gewerberechner = YAHOO.util.Dom.getElementsByClassName("gewerbe", "FORM");
		
		if ((Dom.hasClass(Dom.get("content"), "start") && gewerberechner.length == 0) || confirm.length > 0) {
		    var topConstraint = 18; 
			var bottomConstraint = 126;
			var line = 126+38;
		    var scaleFactor = 1/18; 
		    var keyIncrement = 18; 
		    var tickSize = 18; 
		} else if (Dom.hasClass(Dom.get("content"), "start") && gewerberechner.length > 0) {
			var topConstraint = 0; 
			var bottomConstraint = 160;
			var line = 164;
		    var scaleFactor = 1/27; 
		    var keyIncrement = 27; 
		    var tickSize = 27; 
		} else if (!Dom.hasClass(Dom.get("content"), "start") && gewerberechner.length > 0) {
		    var topConstraint = 16; 
			var bottomConstraint = 120; 
			var line = bottomConstraint + 30;
		    var scaleFactor = 1/24; 
		    var keyIncrement = 24; 
		    var tickSize = 24; 
		} else {
			var topConstraint = 16; 
			var bottomConstraint = 112; 
			var line = bottomConstraint + 38;
		    var scaleFactor = 1/16; 
		    var keyIncrement = 16; 
		    var tickSize = 16; 
		}
        slider = YAHOO.widget.Slider.getHorizSlider(bg,  
                         thumb, topConstraint, bottomConstraint, tickSize); 
		
        slider.getRealValue = function() { 
			if (gewerberechner.length > 0) {
				return 1 + Math.round(this.getValue() * scaleFactor);
			} else {
				return 2 + Math.round(this.getValue() * scaleFactor); 
			}
		} 
 
        slider.subscribe("change", function(offsetFromStart) { 
			var valnode = Dom.get(valuearea); 
            var fld = Dom.get(textfield); 
			var verbrauch = Dom.get("verbrauch");
            // Display the pixel value of the control 
            valnode.innerHTML = offsetFromStart; 
            // use the scale factor to convert the pixel offset into a real 
            // value 
            var actualValue = slider.getRealValue(); 
            // update the text box with the actual value 
            fld.value = actualValue;

			if (Dom.get("tarifrechner_strom") && Dom.get("tarifrechner_strom").checked == true) {
				if(gewerberechner.length == 0) {
					verbrauch.value = strom_arr[actualValue-1];
					Dom.get("selgr_strom").value = strom_arr[actualValue-1].replace(/\./g, "");
				} else {
					verbrauch.value = strom_gewerbe_arr[actualValue-1];
					Dom.get("selgr_strom").value = strom_gewerbe_arr[actualValue-1].replace(/\./g, "");
				}
			} else if (Dom.get("tarifrechner_gas") && Dom.get("tarifrechner_gas").checked == true) {
				verbrauch.value = gas_arr[actualValue-1];
				Dom.get("selgr_gas").value = gas_arr[actualValue-1].replace(/\./g, "");
			}

			Dom.get("vtyp").value = 3;
			var lineLeft = tickSize * actualValue + 3;
			var lineWidth = (line-2) - lineLeft;
			// alert(lineLeft + "--" + lineWidth);
			if (lineWidth < 0)	lineWidth = 0;
			Dom.setStyle('slider-line', 'left', lineLeft + "px");
			Dom.setStyle('slider-line', 'width', lineWidth + "px");
			var dummys = Dom.getChildren("dummys");
			Dom.removeClass(dummys, "active");
			for (var i=0;i<actualValue;i++) {
				Dom.addClass(dummys[i], "active");	
			}
        }); 
    });
	
	var openFAQ = function(e) {
		var targetID = YAHOO.util.Event.getTarget(e).id;
		var splits = targetID.split("_");
		var subtargetID = "dd_" + splits[1] + "_" + (splits[2]*1 + 1) + "_" + splits[3];
		 
		if(YAHOO.util.Dom.hasClass(YAHOO.util.Event.getTarget(e), "active")) {
			var val = 0;
			var base = splits[3]*1 + 22;
			var speed = base/300;
			YAHOO.util.Dom.removeClass(YAHOO.util.Event.getTarget(e), "active");													  
			var attributes = {
				height: { to: val }
			};
    		var anim = new YAHOO.util.Anim(subtargetID, attributes, speed);
			anim.animate();
		} else {
			var val = splits[3]*1 + 22; 
			var speed = val/300;
			YAHOO.util.Dom.addClass(YAHOO.util.Event.getTarget(e), "active");
			var attributes = {
				height: { to: val }
			};
    		var anim = new YAHOO.util.Anim(subtargetID, attributes, speed);
			anim.animate();
		}
	}
	
	var forIE6 = function() {
		if(navigator.userAgent.lastIndexOf("MSIE 6.0") != -1) {
			if(YAHOO.util.Dom.get("subnavi")) {
				var listelements = YAHOO.util.Dom.getChildren('subnavi');
				YAHOO.util.Dom.addClass(listelements[0], "first");
			}
			if(YAHOO.util.Dom.get("footer")) {
				var listelements = YAHOO.util.Dom.getChildren(YAHOO.util.Dom.getChildren('footer')[0]);
				YAHOO.util.Dom.addClass(listelements[0], "first");
			}
			if(YAHOO.util.Dom.get("content")) {
				var minHeightStyle = YAHOO.util.Dom.getStyle("content", "minHeight");
				var minHeight = minHeightStyle.replace("px", "") * 1;
				if (minHeight > YAHOO.util.Dom.get("content").offsetHeight) {
					YAHOO.util.Dom.setStyle("content", "height", minHeight + "px");
				}
			}
		}
	}
	
	var posTopsubnavi = function() {
		YAHOO.util.Dom.setStyle("topsubnavi", "visibility", "hidden");
		YAHOO.util.Dom.setStyle("topsubnavi", "width", "auto");
		var posLeft = 0;
		var topNaviLeft = YAHOO.util.Dom.getX("topnavi");
		var topNaviWidth = YAHOO.util.Dom.get("topnavi").offsetWidth;
		var pathname = location.pathname;
		var pathArray = pathname.split("/");
		if (pathArray[1] == "privatkunden" || pathArray[1] == "gewerbekunden") {
			var navpoint = pathArray[2];
		} else if (pathArray[1] == "serviceforms") {
			var navpoint = serviceforms(pathArray[2]);
		} else if (pathArray[1] == "productselection" || pathArray[1] == "vertragsabschluss" || pathArray[1] == "summary" || pathArray[1] == "error") {
			var navpoint = vertrag_navi;
		} else {
			var navpoint = pathArray[1];
		}
		
		if (navpoint == "unternehmen" || navpoint == "faq" || navpoint == "presse" || navpoint == "kontakt") {
			navpoint = "company_" + navpoint;
		} else if (navpoint == "strom" || navpoint =="gas" || navpoint == "kundenservice") {
			navpoint = "main_" + navpoint;
		} else {
			navpoint = "";
		}
		
		if (navpoint != "" && YAHOO.util.Dom.get("topsubnavi")) {
			if (YAHOO.util.Dom.getStyle("topsubnavi", "visibility") == "hidden")	YAHOO.util.Dom.setStyle("topsubnavi", "visibility", "visible");
			if (navpoint.lastIndexOf("main") == 0) {
				var navpointLeft = YAHOO.util.Dom.getX(navpoint) - topNaviLeft + 4;
				YAHOO.util.Dom.setStyle("topsubnavi", "left", navpointLeft + "px");
			} else if (navpoint.lastIndexOf("company") == 0) {
				var navpointLeft = YAHOO.util.Dom.getX(navpoint) - topNaviLeft + YAHOO.util.Dom.get(navpoint).offsetWidth - YAHOO.util.Dom.get("topsubnavi").offsetWidth - 4;
				if (navpoint == "company_presse") {
					navpointLeft = navpointLeft - 4;
				}
				YAHOO.util.Dom.setStyle("topsubnavi", "left", navpointLeft + "px");
			}
		}
	}
	
	var serviceforms = function(page) {
		switch(page) {
			case "rueckruf":
			case "kontakt":
				return "kontakt";
				break;
			default:
				return "kundenservice";
				break;
		}
	}
	
	var delSearchinput = function() {
		YAHOO.util.Dom.get("searchterm").value = "";
	}
	
	var fillSearchinput = function() {
		YAHOO.util.Dom.get("searchterm").value = "Suchbegriff";
	}
	
	var swapSwitch = function(e) {
		YAHOO.util.Event.preventDefault(e);
		YAHOO.util.Event.getTarget(e).blur();
		if (YAHOO.util.Dom.hasClass(YAHOO.util.Event.getTarget(e), "klima")) {
			YAHOO.util.Dom.replaceClass(YAHOO.util.Event.getTarget(e), "klima", "cent");
		} else {
			YAHOO.util.Dom.replaceClass(YAHOO.util.Event.getTarget(e), "cent", "klima");
		}
		location.href = YAHOO.util.Event.getTarget(e).href;
	}
	
	var adjustForm = function() {
		YAHOO.util.Dom.get("vtyp").value = 1;
	}
	
	var adjustValue = function(e) {
		if (YAHOO.util.Event.getTarget(e).id == "tarifrechner_strom") {
			YAHOO.util.Dom.get("selgr_strom").value = strom_arr[YAHOO.util.Dom.get("slider-converted-value").value - 1].replace(/\./g, "");
			YAHOO.util.Dom.get("selgr_gas").value = "";
			YAHOO.util.Dom.get("verbrauch").value = strom_arr[YAHOO.util.Dom.get("slider-converted-value").value - 1];
		} else if (YAHOO.util.Event.getTarget(e).id == "tarifrechner_gas") {
			YAHOO.util.Dom.get("selgr_gas").value = gas_arr[YAHOO.util.Dom.get("slider-converted-value").value - 1].replace(/\./g, "");
			YAHOO.util.Dom.get("selgr_strom").value = "";
			YAHOO.util.Dom.get("verbrauch").value = gas_arr[YAHOO.util.Dom.get("slider-converted-value").value - 1];
		}
	}
	
	var gifcounter = function(e) {
		countgif(YAHOO.util.Event.getTarget(e).value);
	}
  
  var showPage1 = function(e) {
    YAHOO.util.Dom.setStyle("rechnungsseite1", "display", "inline");
    YAHOO.util.Dom.setStyle("rechnungsseite2", "display", "none");
    if (YAHOO.util.Dom.hasClass(YAHOO.util.Event.getTarget(e)), "inactive"){
      YAHOO.util.Dom.replaceClass("seite1", "inactive", "active");
      YAHOO.util.Dom.replaceClass("seite2", "active", "inactive");    
    }
  }

  var showPage2 = function(e) {
    YAHOO.util.Dom.setStyle("rechnungsseite2", "display", "inline");
    YAHOO.util.Dom.setStyle("rechnungsseite1", "display", "none");
    if (YAHOO.util.Dom.hasClass(YAHOO.util.Event.getTarget(e)), "inactive"){
      YAHOO.util.Dom.replaceClass("seite2", "inactive", "active");
      YAHOO.util.Dom.replaceClass("seite1", "active", "inactive");    
    }

  }
	var checkForm = function(e) {
		var formobj = YAHOO.util.Event.getTarget(e);
		formobj.verbrauch.value = formobj.verbrauch.value.replace(/\./g, "");
	}
	
  //Presseservice Formularüberprüfung
  trim = function(s) {
  	while (s.substring(0,1) == ' ') {
  		s = s.substring(1,s.length);
  	}
  	while (s.substring(s.length-1,s.length) == ' ') {
  		s = s.substring(0,s.length-1);
  	}
  	return s;
  }  
  
  
  var checkPresseName = function(e) {
  	if ( (trim(YAHOO.util.Dom.get('presse_vorname').value).length < 2) || (trim(YAHOO.util.Dom.get('presse_nachname').value).length < 2) ) {
      YAHOO.util.Dom.addClass("anmeldenachname-status", "incorrect");
  	} else {
      YAHOO.util.Dom.addClass("anmeldenachname-status", "correct");
    }
  }

  var checkPresseEmail = function(e) {
  	if (trim(YAHOO.util.Dom.get('presse_email').value).lastIndexOf("@") == -1 || trim(YAHOO.util.Dom.get('presse_email').value).lastIndexOf("\.") == -1) {
      YAHOO.util.Dom.addClass("anmeldeemail-status", "incorrect");	
  	} else {
      YAHOO.util.Dom.addClass("anmeldeemail-status", "correct");	
    }
  }  
  
	var init2 = function() {
		forIE6();
		YAHOO.util.Event.addListener("searchterm", "focus", delSearchinput);
		YAHOO.util.Event.addListener("searchterm", "blur", fillSearchinput);
		var switcher = YAHOO.util.Dom.getElementsByClassName("productswitch", "A", "content");
		if (switcher.length > 0) {
			YAHOO.util.Event.addListener(switcher[0], 'click', swapSwitch);
		}
	}
	
	var init = function() {
		YAHOO.util.Event.addListener("verbrauch", "change", adjustForm);
		YAHOO.util.Event.addListener("tarifrechner_strom", "click", adjustValue);
		YAHOO.util.Event.addListener("tarifrechner_gas", "click", adjustValue);
		YAHOO.util.Event.addListener("postalcode", "blur", gifcounter);
    YAHOO.util.Dom.setStyle("rechnungsseite1", "display", "inline");
    YAHOO.util.Dom.setStyle("rechnungsseite2", "display", "none");
	  YAHOO.util.Event.addListener("seite1", "click", showPage1);
	  YAHOO.util.Event.addListener("seite2", "click", showPage2);
	  YAHOO.util.Event.addListener("seite1_link", "click", showPage1);
	  YAHOO.util.Event.addListener("seite2_link", "click", showPage2);
		if(YAHOO.util.Dom.getElementsByClassName('faq')) {
			var faqs = YAHOO.util.Dom.getElementsByClassName('faq');
			for(var i=0; i<faqs.length;i++) {
				YAHOO.util.Dom.setStyle(faqs[i], "visibility", "hidden");
				var children = YAHOO.util.Dom.getChildren(faqs[i]);
				for (element in children) {
					if (children[element].nodeName == "DD") {
						var elHeight = children[element].offsetHeight;
						children[element].id = "dd_" + i + "_" + (element) + "_" + elHeight;
						children[element-1].id = "dt_" + i + "_" + (element-1) + "_" + elHeight;
						YAHOO.util.Event.addListener(children[element-1], 'click', openFAQ);	
						YAHOO.util.Dom.setStyle(children[element], "height", "0px");
					}
				}
				YAHOO.util.Dom.setStyle(faqs[i], "visibility", "visible");
			}
		}
		
		if(YAHOO.util.Dom.hasClass(YAHOO.util.Dom.get("content"), "start")) {
			YAHOO.util.Dom.addClass("content", "script");
		}
		
		var forms = document.getElementsByTagName("form");
		for (var i=0; i<forms.length; i++) {
			if (forms[i].plz && forms[i].sel_vtyp) {
				YAHOO.util.Event.addListener(forms[i], 'submit', checkForm);
			}
		}

		if (YAHOO.util.Dom.getElementsByClassName("confirm").length > 0) {
			YAHOO.util.Dom.addClass(YAHOO.util.Dom.getElementsByClassName("confirm"), "full");
		}
		
		if(YAHOO.util.Dom.get("plz_label")) {
			YAHOO.util.Dom.addClass("plz_label", "scripted");
		}
    YAHOO.util.Event.addListener('presse_vorname', 'blur', checkPresseName);		
    YAHOO.util.Event.addListener('presse_nachname', 'blur', checkPresseName);
   	YAHOO.util.Event.addListener('presse_email', 'blur', checkPresseEmail);
	}
	YAHOO.util.Event.onAvailable("topsubnavi", posTopsubnavi);
	YAHOO.util.Event.addListener(window, 'load', init2);
	YAHOO.util.Event.onDOMReady(init);
})(); 
