﻿(function() { 
	var Event = YAHOO.util.Event, 
	  Dom   = YAHOO.util.Dom, 
	  lang  = YAHOO.lang, 
	  slider_strom, slider_gas
	  bg_strom="slider-bg-strom", thumb_strom="slider-thumb-strom",  
	  valuearea_strom="slider-value-strom", textfield_strom="slider-converted-value-strom",
	  bg_gas="slider-bg-gas", thumb_gas="slider-thumb-gas",  
	  valuearea_gas="slider-value-gas", textfield_gas="slider-converted-value-gas"
	
	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");
	 
	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 = 162;
		    var scaleFactor = 1/18; 
		    var tickSize = 18; 
		} else if (Dom.hasClass(Dom.get("content"), "start") && gewerberechner.length > 0) {
			var topConstraint = 0; 
			var bottomConstraint = 160;
			var line = 162;
		    var scaleFactor = 1/27; 
		    var tickSize = 27; 
		} else if (!Dom.hasClass(Dom.get("content"), "start") && gewerberechner.length > 0) {
			var topConstraint = 16; 
			var bottomConstraint = 120; 
			var line = bottomConstraint + 28;
		    var scaleFactor = 1/24; 
		    var tickSize = 24; 
		} else {
			var topConstraint = 16; 
			var bottomConstraint = 112; 
			var line = 148;
		    var scaleFactor = 1/16; 
		    var tickSize = 16;
		}
		
        slider_strom = YAHOO.widget.Slider.getHorizSlider(bg_strom,  
                         thumb_strom, topConstraint, bottomConstraint, tickSize); 
		
        slider_strom.getRealValue = function() { 
			if (gewerberechner.length > 0) {
				return 1 + Math.round(this.getValue() * scaleFactor);
			} else {
				return 2 + Math.round(this.getValue() * scaleFactor); 
			}
		} 
 
        slider_strom.subscribe("change", function(offsetFromStartStrom) { 
			
			var valnode = Dom.get(valuearea_strom); 
            var fld = Dom.get(textfield_strom); 
			var verbrauch = Dom.get("verbrauch_strom");
            // Display the pixel value of the control 
            valnode.innerHTML = offsetFromStartStrom; 
            // use the scale factor to convert the pixel offset into a real 
            // value 
            var actualValue = slider_strom.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, "");
				}
			}
			
			Dom.get("vtyp").value = 3;
			var lineLeft = tickSize * actualValue;
			var lineWidth = line - lineLeft;
			// alert(lineLeft + "<-->" + lineWidth);
			if (lineWidth < 0)	lineWidth = 0;
			Dom.setStyle('slider-line-strom', 'left', lineLeft + "px");
			Dom.setStyle('slider-line-strom', 'width', lineWidth + "px");

			var dummys = Dom.getChildren("dummys");
			Dom.removeClass(dummys, "active");
			for (var i=0;i<actualValue;i++) {
				Dom.addClass(dummys[i], "active");	
			}
        }); 
    });
	
	gas_gewerbe_arr = new Array("2.300", "30.000", "60.000", "90.000", "120.000", "150.000");
	Event.onDOMReady(function(e) { 
		var confirm = YAHOO.util.Dom.getElementsByClassName("confirm");
		var gewerberechner = YAHOO.util.Dom.getElementsByClassName("gewerbe", "FORM");
		qm_before = 30;
		if ((Dom.hasClass(Dom.get("content"), "start") && gewerberechner.length == 0) || confirm.length > 0) {
			var topConstraint = 0; 
			var bottomConstraint = 136;
			var line = 0;
		    var scaleFactor = 5/4; 
		    var tickSize = 4;
		} else if (Dom.hasClass(Dom.get("content"), "start") && gewerberechner.length > 0) {
			var topConstraint = 0; 
			var bottomConstraint = 160;
			var line = 162;
		    var scaleFactor = 1/27; 
		    var tickSize = 27;
		} else if (!Dom.hasClass(Dom.get("content"), "start") && gewerberechner.length > 0) {
			var topConstraint = 16; 
			var bottomConstraint = 120; 
			var line = 148;
		    var scaleFactor = 1/24; 
		    var tickSize = 24;  
		} else {
			var topConstraint = 0; 
			var bottomConstraint = 136; 
			var line = -14;
		    var scaleFactor = 5/4; 
		    var tickSize = 4;
		}
		
        slider_gas = YAHOO.widget.Slider.getHorizSlider(bg_gas,  
                         thumb_gas, topConstraint, bottomConstraint, tickSize); 
		slider_gas.tickPause = 0;
        slider_gas.getRealValue = function() { 
			if (gewerberechner.length > 0) {
				return 1 + Math.round(this.getValue() * scaleFactor);
			} else {
				return 30 + Math.round(this.getValue() * scaleFactor);
			}
		} 
 
        slider_gas.subscribe("change", function(offsetFromStartGas) { 
			var valnode = Dom.get(valuearea_gas); 
            var fld = Dom.get(textfield_gas); 
			var verbrauch = Dom.get("verbrauch_gas");
			var verbrauch_num = 0;
			var qm = Dom.get("qm");
            // Display the pixel value of the control 
            valnode.innerHTML = offsetFromStartGas; 
			
            // use the scale factor to convert the pixel offset into a real 
            // value 
            var actualValue = slider_gas.getRealValue(); 
			
			/* if (navigator.appName == "Microsoft Internet Explorer") {
				actualValue = actualValue - 53; 
			} */
            // update the text box with the actual value 
            fld.value = actualValue;
			if(gewerberechner.length == 0) {
				qm.value = fld.value;
				if (qm.value <= 100) {
					verbrauch_num = qm.value * 117;
				} else {
					verbrauch_num = qm.value * 164;
				}
				verbrauch_num = verbrauch_num + "";			
				var strlen = verbrauch_num.length;
				var verbrauch_neu = "";
				var j = 0;
				for(i=strlen;i>0;i--) {
					j++;
					var start = i - 1;
					verbrauch_neu = verbrauch_num.substr(start,1) + verbrauch_neu;
					if (j == 3) {
						verbrauch_neu = "." + verbrauch_neu;
						j=0;
					}
				}
				verbrauch.value = verbrauch_neu;
				Dom.get("selgr_gas").value = verbrauch.value.replace(/\./g, "");
			} else {
				if (Dom.get("tarifrechner_gas") && Dom.get("tarifrechner_gas").checked == true) {
					verbrauch.value = gas_gewerbe_arr[actualValue-1];
					Dom.get("selgr_gas").value = gas_gewerbe_arr[actualValue-1].replace(/\./g, "");
				}
			}
			
			
			Dom.get("vtyp").value = 3;
			if(gewerberechner.length == 0) {
				var lineLeft = (actualValue * 4/5) + line;
				var lineWidth = 162 - (actualValue * 4/5);
				//alert(lineLeft + "--" + lineWidth);
				if (lineWidth < 0)	lineWidth = 0;
				Dom.setStyle('slider-line-gas', 'left', lineLeft + "px");
				Dom.setStyle('slider-line-gas', 'width', lineWidth + "px");
			} else {
				var lineLeft = tickSize * actualValue;
				var lineWidth = line - lineLeft;
				// alert(lineLeft + "<-->" + lineWidth);
				if (lineWidth < 0)	lineWidth = 0;
				Dom.setStyle('slider-line-gas', 'left', lineLeft + "px");
				Dom.setStyle('slider-line-gas', 'width', lineWidth + "px");
				var gasdummys = Dom.getChildren("gas_dummys");
				Dom.removeClass(gasdummys, "active");
				for (var i=0;i<actualValue;i++) {
					Dom.addClass(gasdummys[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 activeTopItem = YAHOO.util.Dom.getElementsByClassName("selected", "LI", "topnavi");
		var navpoint = activeTopItem[0].id;

		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 delSearchinput = function() {
		YAHOO.util.Dom.get("searchterm").value = "";
	}
	
	var fillSearchinput = function(e) {
		if (trim(YAHOO.util.Dom.get("searchterm").value) == "") {
			YAHOO.util.Dom.get("searchterm").value = "Suchbegriff";
		}
	}
	
	var callSubmit = function() {
		
	}
	
	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(e) {
		YAHOO.util.Dom.get("vtyp").value = 1;
		YAHOO.util.Dom.get("verbrauch").value = YAHOO.util.Event.getTarget(e).value;
	}
	
	var adjustValue = function(e) {
		if (YAHOO.util.Event.getTarget(e).id == "tarifrechner_strom") {
			YAHOO.util.Dom.setStyle("sliderStrom", "visibility", "visible");
			YAHOO.util.Dom.setStyle("sliderGas", "visibility", "hidden");
		} else if (YAHOO.util.Event.getTarget(e).id == "tarifrechner_gas") {
			YAHOO.util.Dom.setStyle("sliderStrom", "visibility", "hidden");
			YAHOO.util.Dom.setStyle("sliderGas", "visibility", "visible");
		}
	}
	
	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 recalculate = function(e) {
		var qm = YAHOO.util.Event.getTarget(e).value;

		if (qm.search(/^[0-9]*$/) != -1) {
			qm_before = qm;
			var verbrauch_num = 0;
			if (qm <= 100) {
				verbrauch_num = qm * 117;
			} else {
				verbrauch_num = qm * 164;
			}
			// if (verbrauch_num > 100000)	{ verbrauch_num = 100000; }
			verbrauch_num = verbrauch_num + "";			
			var strlen = verbrauch_num.length;
			var verbrauch_neu = "";
			var j = 0;
			for(i=strlen;i>0;i--) {
				j++;
				var start = i - 1;
				verbrauch_neu = verbrauch_num.substr(start,1) + verbrauch_neu;
				if (j == 3 && i > 1) {
					verbrauch_neu = "." + verbrauch_neu;
					j=0;
				}
			}
			if (qm >= 10) {
				YAHOO.util.Dom.get("verbrauch_gas").value = verbrauch_neu;
			} else {
				YAHOO.util.Dom.get("verbrauch_gas").value = "";
			}
			YAHOO.util.Dom.get("selgr_gas").value = YAHOO.util.Dom.get("verbrauch_gas").value.replace(/\./g, "");
		} else {
			YAHOO.util.Event.getTarget(e).value = qm_before;
		}
			
	}
	var init2 = function() {
		if (YAHOO.util.Dom.get("tarifrechner_gas") && YAHOO.util.Dom.get("tarifrechner_gas").checked == true) {
			YAHOO.util.Dom.setStyle("sliderStrom", "visibility", "hidden");
			YAHOO.util.Dom.setStyle("sliderGas", "visibility", "visible");
		}
		YAHOO.util.Event.addListener("qm", "keyup", recalculate);
		forIE6();
		YAHOO.util.Event.addListener("searchterm", "focus", delSearchinput);
		YAHOO.util.Event.addListener("searchterm", "blur", fillSearchinput);
		YAHOO.util.Event.addListener("search", "submit", callSubmit);
		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_strom", "change", adjustForm);
		YAHOO.util.Event.addListener("verbrauch_gas", "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);
})(); 
