﻿﻿$(document).ready(function() {
	$(window).load(function(){
		//we have to wait for images to load
		var highestContent = 0;
		$(".campaignTeaser .content").each(function(){
			highestContent = $(this).height()>highestContent ? $(this).height() : highestContent;
		});
		$(".campaignTeaser .content").height(highestContent);
		$(".campaignTeaser .box").has("form").each(function(){
			var box =  $(this);
			var colHeight = 0;
			box.find("p.error").each(function(i){
				boxHeight = box.height();
				$(".campaignTeaser .box").has("form").each(function(){
					var hDiff = boxHeight - $(this).height();
					$(this).height(boxHeight);
					$(this).find("form").css("margin-top", hDiff+"px");
				});
			});
			
		});
		$(".productInfoBlocker").each(function(){
			var blocker = $(this);
			var h = 0;
			var x = 0;
			var y = 0;
			var i = 0;
			$(".productInfo").each(function(i){
				h += $(this).height();
				if(i == 0){
					x = $(this).position().left;
					y = $(this).position().top;
				}else{
					h += parseInt($(this).css("margin-bottom"));
					h += parseInt($(this).css("padding-bottom"));
				}
				i++;
				//$(this).style("position","static");
	});
			$(".campaignTeaser:eq(0)").each(function(i){
				h += $(this).height();
				x = $(this).position().left;
				y = $(this).position().top;

				//$(this).style("position","static");
			});
			//alert(productInfoX+" "+productInfoY);
			//blocker.offset({top:productInfoY, left:productInfoX});

			blocker.offset({top:y, left:x});
			h -= blocker.find(".bgTop").height();
			blocker.find(".bgBottom").height(h);
		});
	});
	$(".T1044 .col").has("form").each(function(){
		var col =  $(this);
		var colHeight = 0;
		col.find("p.error").each(function(i){
			colHeight = col.height();
			$(".T1044 .col").has("form").each(function(){
				var hDiff = colHeight-$(this).height();
				$(this).height(colHeight);
				$(this).find("form").css("margin-top", hDiff+"px");
			});
		});
		
	});
	
		
	//,
	var sliderTypes = ["person", "squaremeter"];
	$("#calculator").each(function(){
		var calculator = $(this);
		var currentOptions;
		$.each(sliderTypes, function(idx, sliderType){
			//we have to keep it backwards-compatible --> personSlider
			var sliderWrapper = calculator.find("." + sliderType + "SliderWrapper");
			if(sliderWrapper.width() > 0){
				var resultInput = $("#kwh_result");
				var numCurrentInput = $("#num_"+ sliderType + "s_current");
				var currentSlider = sliderWrapper.find(".slider");
				var units = sliderWrapper.find(".units");
				if(sliderType != "person"){
					currentOptions = window[sliderType+"CalculatorOptions"];
					resultInput = $("#"+sliderType+"_result");

			}else{
					currentOptions = window.calculatorOptions;
					units = sliderWrapper.find(".persons");
					currentSlider = sliderWrapper.find(".personSlider");
			}
				var multiplier = currentOptions.multiplier ? currentOptions.multiplier : 1;
				var min = currentOptions.min;
				var max = currentOptions.max;
				var multipliedValues = [];
				var stepValues = [];
				var stepWidth = currentOptions.stepWidth ? currentOptions.stepWidth : 1;
				var i = 0;
		
				if(currentOptions.values){
					multipliedValues = currentOptions.values;
					//stepValues = currentOptions.values;
					for(i=min; i<max + stepWidth; i+=stepWidth){
						stepValues.push(i);
					}
				}else{
					for(i=min; i<max + stepWidth; i+=stepWidth){
						multipliedValues.push(i * multiplier);
						stepValues.push(i);
					}
				}

				if(sliderType != "person"){
					//alert(multipliedValues+" "+multipliedValues.length);
				}else{
					min--;
					max--;
				}
				var result = resultInput.val();
				var numCurrent = numCurrentInput.val();
				if(sliderType == "person"){
					numCurrent--;
					numCurrent = numCurrent < 1 ? 0 : numCurrent;
				}

				var minValue = multipliedValues[0];
				var maxValue = multipliedValues[multipliedValues.length-1];
				var current = min;
				//alert(min+" "+max+" "+numCurrent+" "+currentSlider.attr("class"));
				var scalaValues;
				if(!currentOptions.scalaValues){
					var scalaValues = currentOptions.values;
				}else{
					scalaValues = currentOptions.scalaValues;
				}

				i = 0;
				var currentValue = "";
				while(i < scalaValues.length){
					if(sliderType != "person"){
						currentValue = scalaValues[i];
					}
					units.append("<em class='"+sliderType+"'>"+currentValue+"</em>");
					i++;
				}

				$(sliderWrapper).show();

				numCurrentInput.val(current).change(function(){
					var value = numeric($(this).val());
					current = validateValue(value/stepWidth);
					if(sliderType == "person"){
						current--;
					}
					//alert("current: "+current);
					sliderChange(current, true);
	});
				resultInput.val(minValue).change(function(){
					var value = numeric($(this).val());
					currentSlider.slider({value : 0});
					$(".persons .active").removeClass("active");
					$(".units .active").removeClass("active");
					numCurrentInput.val("");
					$(this).val(value);
				});
				resultInput.val(result);
				function validateValue(value){
					var ret = parseInt(numeric(value));
					ret = ret > max ? max : ret;
					ret = ret < min ? min : ret;
					return ret;
				}
				function numeric(value){
					var ret = value+"";
					ret = parseInt(ret.replace(/[^0-9\.]/g,''));
					ret = isNaN(ret) ? "0" : ret;
					ret = ret < 0 ? 0 : ret;
					return ret;
				}
				var sliderChange = function(value, remoteControlled){
					current = validateValue(value);
					if(sliderType == "person"){
						//current--;
					}else{
						//alert(current);
					}
					if(!remoteControlled){
						$(numCurrentInput).val(stepValues[current]);
						var currentVal = multipliedValues[current];
						resultInput.val(currentVal);
					}
					i = 0;
					sliderWrapper.find("em").removeClass("active");
					while(i<current+1){
						sliderWrapper.find("em:eq("+i+")").addClass("active");
						i++;
					}
					//alert(i);
	
					if(remoteControlled){
						currentSlider.slider({value : value});
					}
				}
				var sliderMax = Math.ceil(max/stepWidth);
		var options = {
			min : min,
					max : sliderMax,
					//values:values,
			change: function(event, ui) {
						sliderChange(ui.value, false);
			},
			slide: function(event, ui) {
						sliderChange(ui.value, false);
			}
		}
				currentSlider.slider(options);
				if(sliderType != "person"){
					sliderWrapper.find(".units").css("margin-left", "5px").find("em").css("width", (sliderWrapper.find(".slider").width())/scalaValues.length).first().css("text-align", "left");
					sliderWrapper.find(".units").find("em").last().css("text-align", "right");
				}

				if(numCurrent+"".length > 0){
					sliderChange(numCurrent, true);
				}else{
					sliderWrapper.find(".units .active").removeClass("active");
					sliderWrapper.find(".persons .active").removeClass("active");
					//numCurrent =
					var val = numCurrent >0 ? numCurrent : "";
					numCurrentInput.val(val);
				}
			}
		});


		calculator.find(".radio_wrap").each(function(){
			var radioWrap = $(this);
			//radioWrap.find("input.radio").hide();
			var radio = radioWrap.find("input.radio");
			radio.hide();
			var checked = radio.attr("checked")=="checked";
			radioWrap.prepend("<div class='fakeRadio'></div>");
			radioWrap.data("checked", checked);
			if(!checked){
				radioWrap.find(".fakeRadio").addClass("fakeRadioDisabled");
			}
			radioWrap.unbind("mousedown");
			radioWrap.click(function(){
				return false;
			});
			radioWrap.mousedown(function(){
				var checked = radioWrap.data("checked");
				
				if(checked){
					return;
				}
				radioWrap.blur();
				calculator.find(".fakeRadio").addClass("fakeRadioDisabled");
				calculator.find("input.radio").removeAttr("checked");
				
				calculator.find(".radio_wrap").data("checked", false);
				radioWrap.data("checked", !checked);
				if(!radioWrap.data("checked")){
					
				}else{
					radioWrap.find(".fakeRadio").removeClass("fakeRadioDisabled");
					radioWrap.find("input.radio").attr("checked", "checked");
				}
			});
		});
		});
		});

