// for wz_tooltip/balloon images
var layoutAssetPath = '/cms-layout';

function angeboteLaden(pageName,containerName,submitbuttonName,onReady){
		var verbrauchsAngabe = document.angeboteForm.verbrauch.value;
		var it_objectID = document.angeboteForm.it_objectID.value;
		var plz = document.angeboteForm.plz.value;
		var form = document.angeboteForm.form.value;
		var js = 1;
		pageName += /[?]/.test(pageName) ? '&' : '?';
		pageName = pageName+'verbrauch='+verbrauchsAngabe+'&plz='+plz+'&it_objectID='+it_objectID+'&form='+form+'&js='+js;
		//alert(pageName);
		if (verbrauchsAngabe != '') {

                jQuery('#' + containerName).load(pageName, function (data) {
			var cleverButton = $(this).find('div.cleverXL .submit');
			if (cleverButton.length) {
				$(document).scrollTop(cleverButton.closest('.module').offset().top - 20);
			}
                 if (onReady) {
                         onReady.call(this, data);
                 }
                });
        }
}

function infosLaden(pageName, containerName, onReady) {
	jQuery('#' + containerName).load(pageName, function(data) {
		if (onReady) {
			onReady.call(this, data);
		}
	});
}

function PulsateEffect() {
	var elements = $(this).find('.init_pulsate').effect('pulsate', {
		times: 2
	}, 500);

}

function PulsateEffect() {
	var elements = $(this).find('.init_pulsate').effect('pulsate', {
		times: 2
	}, 500, function () {
		$(this).css('filter', '');
	});
}
function co2InfosLaden(pers_zahl) {
	var verbrauchsAngabe = window.document.forms['co2Form'].verbrauch.value;
	containerName = 'func_co2detail';
	if (verbrauchsAngabe != "") {
		window.document.co2Form.submit.className = "submit visited";
		if ( (verbrauchsAngabe >= 0 && verbrauchsAngabe < 300) || (pers_zahl == 1)) {
			pageName = 'func_co2detail_Bild1.html';
			jQuery('#' + containerName).load(pageName);
		} else if ( (verbrauchsAngabe >= 300 && verbrauchsAngabe < 700) || (pers_zahl == 2)) {
			pageName = 'func_co2detail_Bild1.html';
			jQuery('#' + containerName).load(pageName);
		} else if ( (verbrauchsAngabe >= 700 && verbrauchsAngabe < 1000) || (pers_zahl == 3)) {
			pageName = 'func_co2detail_Bild2.html';
			jQuery('#' + containerName).load(pageName);
		} else if ( (verbrauchsAngabe >= 1000 && verbrauchsAngabe < 1500) || (pers_zahl == 4)) {
			pageName = 'func_co2detail_Bild3.html';
			jQuery('#' + containerName).load(pageName);
		} else if ( (verbrauchsAngabe >= 1500) || (pers_zahl == 5)) {
			pageName = 'func_co2detail_Bild4.html';
			jQuery('#' + containerName).load(pageName);
		}
	}

}

function refreshSubmit(buttonName, form_name) {
	window.document.forms[form_name].submit.className = buttonName;
}

/* Pulldown */
function surfto(form) {
	var myindex = form.select1.selectedIndex
	if (form.select1.options[myindex].value != "0") {
		location = form.select1.options[myindex].value;
	}
}




// preisrechner

var verbrauchsWerte = verbrauchsWerte || ["DEFAULT aus functions.js", 1500, 2800, 3500, 4000, 4900];
(function ($) {

	var iconTitles = ['1 Person? Bitte anklicken.', '2 Personen? Bitte anklicken.', '3 Personen? Bitte anklicken.', '4 Personen? Bitte anklicken.', '5 Personen? Bitte anklicken.'];

	var trackPriceSubmit = function() {
		TrackingHelper.trackPriceCalculator('preis-berechnen');
	};

	var trackCo2Submit = function () {
		TrackingHelper.trackCo2Calculator('co2-ausstoss-berechnen');
	};

	var powerScale = ["power w substeps", 1500, 2100, 2800, 3100, 3500, 3800, 4000, 4500, 4900];

	var configurations = {

		gas: {
			buttonTextNewPrice: 'Preis neu berechnen',
			buttonTextVisited: 'Preis berechnen',
			data: [
			    'GAAF',
				30 * 160,
				40 * 160,
				50 * 160,
				75 * 160,
				100 * 160,
				125 * 160,
				150 * 160,
				175 * 160,
				200 * 160
			],
			iconTitles: ['30m\u00b2? Bitte anklicken.', '50m\u00b2? Bitte anklicken.', '100m\u00b2? Bitte anklicken.', '150m\u00b2? Bitte anklicken.', '200m\u00b2? Bitte anklicken.'],
			icons: '/cms-layout/imgLayout/products/iconsHouse.png',
			slider: true,
			onSubmit: trackPriceSubmit
		},

		power: {
			buttonTextNewPrice: 'Preis neu berechnen',
			buttonTextVisited: 'Preis berechnen',
			data: powerScale,
			iconTitles: iconTitles,
			icons: '/cms-layout/imgLayout/products/iconsPeople.png',
			slider: true,
			onSubmit: trackPriceSubmit
		},

		powerAvailability: {
			buttonTextNewPrice: 'Verfügbarkeit prüfen',
			buttonTextVisited: 'Verfügbarkeit prüfen',
			data: powerScale,
			iconTitles: iconTitles,
			icons: '/cms-layout/imgLayout/products/iconsPeople.png',
			slider: true,
			onSubmit: trackPriceSubmit
		},

		energyAdvisor: {
			buttonTextNewPrice: 'Los',
			buttonTextVisited: 'Los',
			data: powerScale,
			iconTitles: iconTitles,
			icons: '/cms-layout/imgLayout/products/iconsPeople.png',
			slider: true,
			onSubmit: trackPriceSubmit
		},

		co2: {
			data: powerScale,
			iconTitles: iconTitles,
			icons: '/cms-layout/imgLayout/products/iconsPeopleNarrow.png',
			slider: false,
			onSubmit: trackCo2Submit,
			onSliderChange: function () {
				trackCo2Submit();
				co2InfosLaden();
			}
		},

		powerMarg: {
			data: powerScale,
			iconTitles: iconTitles,
			icons: '/cms-layout/imgLayout/products/iconsPeopleNarrow.png',
			slider: false,
			onSubmit: trackPriceSubmit
		}

	};


	$(function () {

		$('div.calculatorHorizontal:not(.select), div.priceCalculator, div.calculator').each(function () {
			var calc = calculator.create();
			var config = configurations[$(this).metadata().type];
			if (config) {
				calc.init(this, config);
			}
		});


	});



})(jQuery);




/**
 *  preisrechner klasse
 */
(function ($) {



	var options = {
		buttonTextNewPrice: 'Los',
		buttonTextVisited: 'Los',
		data: null,
		iconTitles: null,
		icons: null,
		slider: false,
		onSliderChange: function (value) {},
		onSubmit: function (e) {}
	};

	var calculator = {

		el: null,
		opt: null,
		invalidMessageEl: null,
		postalInput: null,
		consumptionInput: null,
		submitButton: null,
		form: null,
		slider: null,

		lastConsumptionFromInput: null,
		lastSubmittedConsumption: null,

		init: function (el, opt) {

			var calculator = this;
			this.el = $(el);
			this.el.data('calculator', this);
			this.opt = $.extend({}, options, opt || {});

			this.invalidMessageEl = $('[id=plzOutside]', el);
			this.invalidMessageEl.find('a').bind('click', function (e) {
				e.preventDefault();
				calculator.hideMessages();
			});

			this.postalInput = $('.plz', el);
			this.consumptionInput = $('.verbrauch', el).bind('change keyup', function () {
				calculator.saveConsumption();
				calculator.updateButtonState();
			}).bind('focus', function () {
				$(this).val('');
				calculator.deactivateSlider();
			}).bind('blur', function () {
				if (!$(this).val()) {
					$(this).val(calculator.lastConsumptionFromInput);
				}
				calculator.activateSlider();
			});
			this.lastSubmittedConsumption = this.consumptionInput.val();

			this.submitButton = $('.submit', el);
			this.form = $('form', el).bind('submit', function (e) {
				if (calculator.validate()) {
					calculator.lastSubmittedConsumption = calculator.lastConsumptionFromInput;
					calculator.updateButtonState();
					calculator.opt.onSubmit.call(this, e);
				} else {
					e.preventDefault();
				}
			});

			this.saveConsumption();
			this.initSlider();

		},

		hideMessages: function () {
			this.form.show();
			this.invalidMessageEl.find('.verbrauchMsg, .plzMsg').andSelf().hide();
		},

		validate: function () {
			var valid = true;
			this.hideMessages();
			if (this.postalInput.length && !/^\d{5,5}$/.test(this.postalInput.val())) {
				valid = false;
				this.invalidMessageEl.find('.plzMsg').show();
			}
			if (!/^\d+$/.test(this.consumptionInput.val())) {
				valid = false;
				this.invalidMessageEl.find('.verbrauchMsg').show();
			}
			if (!valid) {
				this.form.hide();
				this.invalidMessageEl.show();
			}
			return valid;
		},

		activateSlider: function () {
			var value = this.lastConsumptionFromInput;
			var index = -1;
			// data could be either hash or array
			$.each(this.opt.data, function (i) {
				if (this == value) {
					index = i;
					return false;
				}
			});
			if (index != -1 && this.slider) {
				this.slider.setValue(index);
			}
		},

		saveConsumption: function () {
			this.setConsumption(this.consumptionInput.val());
		},

		updateButtonState: function () {
			var hasChanged = !this.lastSubmittedConsumption || this.lastConsumptionFromInput != this.lastSubmittedConsumption;
			if (hasChanged) {
				this.submitButton.addClass('newPrice').removeClass('visited').val(this.opt.buttonTextNewPrice);
			} else {
				this.submitButton.removeClass('newPrice').addClass('visited').val(this.opt.buttonTextVisited);
			}
		},

		setConsumption: function (value) {
			this.lastConsumptionFromInput = value;
			this.consumptionInput.val(value);
		},

		setConsumptionFromSlider: function (value) {
			this.opt.onSliderChange.call(this, value);
			this.setConsumption(this.opt.data[value]);
			this.updateButtonState();
		},

		deactivateSlider: function () {
			if (this.slider) {
				this.slider.setValue(0);
			}
		},

		initSlider: function () {
			var calculator = this;
			var titles = this.opt.iconTitles;
			this.slider = $('.consumptionSlider', this.el).show().iconslider({
				api: true,
				min: 1,
				max: this.opt.data.length - 1,
				urlIcons: this.opt.icons,
				onIconsLoaded: function (e, slider) {
					slider.icons.each(function (i) {
						$(this).attr('title', titles[i] || '');
					});
					calculator.activateSlider();
				},
				onSliderChanged: function (e, slider) {
					calculator.setConsumptionFromSlider(slider.value);
				}
			});

			if (!this.opt.slider && this.slider) {
				this.slider.el.hide();
			}
		},

		create: function (el, opt) {
			function F() {};
			F.prototype = this;
			var instance = new F();
			return instance;
		}

	};

	window.calculator = calculator;


})(jQuery);
// /preisrechner klasse








window.jQuery && jQuery(function ($) {
	var elPriceForm = $('form').filter('[name=priceForm], [name=angeboteForm], [name=co2Form]');


	// do not track if a version with slider
	if (!elPriceForm.length || elPriceForm.closest('.inhalt').parent().metadata().type) {
		return;
	}


	elPriceForm.eq(0).bind('submit', function (e) {
		var result = true;
		if (elPlz.length && !/^\d{5,5}/.test(elPlz.val())) {
			elPlzMessage.find('.plzMsg').andSelf().show();
			result = false;
		}
		if (elConsumption.length && !/^\d+$/.test(elConsumption.val())) {
			elPlzMessage.find('.verbrauchMsg').andSelf().show();
			result = false;
		}
		if (result) {
			elButton.addClass('newPrice').addClass('visited');
			if (isAngeboteForm && !consumptionWasEmpty) elButton.attr('value', calculateResult);
			consumptionWasEmpty = false;
		}
		return result;
	});

	var isAngeboteForm = elPriceForm.attr('name') == 'angeboteForm';
	var isCo2Form = elPriceForm.attr('name') == 'co2Form';

	var calculateResult = 'Preis berechnen';
	var calculateNewResult = 'Preis neu berechnen';
	var elButton = $('#submit', elPriceForm);
	elButton.add($('.submit', elPriceForm)).bind('click', function (e) {
		if (isCo2Form) {
			TrackingHelper.trackCo2Calculator('co2-ausstoss-berechnen');
		} else {
			TrackingHelper.trackPriceCalculator('preis-berechnen');
		}
	});
	var elPlz = $('#plz');
	var elPlzMessage = $('#plzOutside');
	elPlzMessage.find('a.plzOutsideLink').bind('click', function (e) {
		elPlzMessage.find('.verbrauchMsg, .plMsg').andSelf().hide();
		return false;
	});
	var elHouseholdSize = $('[name=haushaltsgroesse]', elPriceForm);
	var elPersonImage = $('[name=personen]', elPriceForm);
	var elConsumption = $('[name=verbrauch]', elPriceForm).bind('keyup', function (e) {
		lastConsumption = this.value;
		lastImgUrl = defaultImgUrl;
		elPersonImage.attr('src', defaultImgUrl);
		elButton.addClass('newPrice').removeClass('visited');
		if (isAngeboteForm && !consumptionWasEmpty) elButton.val(calculateNewResult);
	}).bind('focus', function () {
		this.value = '';
		elPersonImage.attr('src', defaultImgUrl);
	}).bind('blur', function () {
		elConsumption.val(lastConsumption);
		elPersonImage.attr('src', lastImgUrl);
	});
	var defaultConsumption = 300, lastConsumption = elConsumption.val();
	var consumptionWasEmpty = !lastConsumption;
	var defaultImgUrl = '/cms-layout/imgLayout/haushalt0Pers.gif', lastImgUrl = elPersonImage.attr('src');
	elHouseholdSize.bind('mouseleave', function (e) {
		elConsumption.val(lastConsumption);
		elPersonImage.attr('src', lastImgUrl);
	});
	$('area', elHouseholdSize).each(function (numArea) {
		// ENR-491: add click incentive to title text
  		this.title += '? Bitte anklicken.';
		var consumption = 0;
		// order in html was
		var imgUrl = '/cms-layout/imgLayout/haushalt' + (5 - numArea) + 'Pers.gif';
		// contains fall throughs!
		switch (numArea) {
			case 0:
				consumption = verbrauchsWerte[5];
				break;
			case 1:
				consumption = verbrauchsWerte[4];
				break;
			case 2:
				consumption = verbrauchsWerte[3];
				break;
			case 3:
				consumption = verbrauchsWerte[2];
				break;
			case 4:
				consumption = verbrauchsWerte[1];
				break;
		}
		$(this).bind('mouseenter', function (e) {
			elConsumption.val(consumption);
			elPersonImage.attr('src', imgUrl);
		}).bind('click', function (e) {
			if (isCo2Form) {
				TrackingHelper.trackCo2Calculator('co2-ausstoss-berechnen');
			} else {
				elButton.addClass('newPrice').removeClass('visited');
			}
			if (isAngeboteForm && !consumptionWasEmpty) elButton.val(calculateNewResult);
			lastConsumption = consumption;
			lastImgUrl = imgUrl;
			e.preventDefault();
		});
	});

});
// /preisrechner









// weiteres tracking
jQuery(function($) {

	// tracking of order links
	$('#angebote a.order').live('click', function(e) {
		var id = /objectID=(\d+)/.exec(this.href);
		id = id ? id[1] : null;
		var product = $.trim($(this).closest('.inhalt').find('h1').text().replace(/\s+/g, ' '));
		TrackingHelper.trackPriceCalculatorContract(product, id);
	});

	// rotierender teaser homepage unten links
	$('body.startPage div.sliderContainer a.button').live('click', function(e) {
		var text = $.trim($(this).parent().clone().find('a').remove().end().text().replace(/\s+/g, ' '));
		TrackingHelper.trackContentTeaser('homepage-slider', text);
	});
	// drei links auf gesch.kunden verteilseite
	$('div.roundedBox .consumption').find('.left a[name], .center a[name], .right a[name]').live('click', function() {
		var text = $.trim($(this).parent().find('dd').text().replace(/\s+/g, ' '));
		TrackingHelper.trackContentTeaser('dreispaltiger-teaser', text);
	});
	// dropdown angebote auf gesch. verteilseite
	$('#angebotsWahl #selection').bind('change', function() {
		var text = $.trim($('option', this).eq(this.selectedIndex).text().replace(/\s+/g, ' '));
		TrackingHelper.trackContentTeaser('schnelleinstieg', text);
	});
	// externe links
	$('a[target=_blank]').click(function() {
		return TrackingHelper.handleLink(this);
	});
});
// /weiteres tracking

(function($, window) {
	var waitFor = function(symbol, callback) {
		return function() {
			var target = this, args = arguments;
			if (window[symbol]) {
				return callback.apply(this, arguments);
			}
			var steps = 0;
			var interval = setInterval(function() {
				if (window[symbol]) {
					clearInterval(interval);
					callback.apply(target, args);
				}
				if ( ++steps > 150) {
					clearInterval(interval);
				}
			}, 100);
			return null;
		};
	};
	window.TrackingHelper = {
		gaId: null,
		gaIdSecondary: null,
		gaq: null,
		gaTracker: null,
		gaTrackerSecondary: null,
		defaultPrice: 10,
		enabled: true,
		initialized: false,
		domainRegex: /\w+:\/\/([^\/]+)/,
		init: function() {
			if ( !this.enabled || this.initialized) {
				return;
			}
			this.initGa();
			this.initialized = true;
		},
		initGa: function() {
			var helper = this;
			// deletes any globally defined ga queue!!! as multiple trackers are being used and just now not being used by other pages
			window._gaq = this.gaq = [];
			var setup = function (pageTracker) {
				pageTracker._setDomainName('none');
				pageTracker._setAllowLinker(true);
				pageTracker._trackPageview((location.pathname + location.search).replace(/PHPSESSID=\w+&?/i, '').replace(/\?$/, ''));
			};
			window._gaq.push(['_setAccount', helper.gaId]);
			_gaq.push(['_gat._anonymizeIp']);
			window._gaq.push(function() {
				helper.gaTracker = window.pageTracker = window._gat._getTrackerByName();
				setup(helper.gaTracker);
				if (helper.gaIdSecondary) {
					window._gaq.push(['secondary._setAccount', helper.gaIdSecondary]);
					helper.gaTrackerSecondary = window._gat._getTrackerByName('secondary');
					setup(helper.gaTrackerSecondary);
				}
			});
			var ga = document.createElement('script');
			ga.type = 'text/javascript';
			ga.async = true;
			ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
			var s = document.getElementsByTagName('script')[0];
			s.parentNode.insertBefore(ga, s);
		},
		// wait for api to have loaded
		trackOrder: waitFor('_gat', function(order) {
			if ( !this.enabled) {
				return;
			}
			var helper = this;
			var trans = order.transactionId || 'trans_' + Math.ceil(Math.random() * 100000);
			var aff = order.affiliation || 'web-' + location.host;
			var total = order.total || '' + this.defaultPrice;
			var tax = order.tax || '0';
			var shipping = order.shipping || '0';
			var city = order.city || '';
			var region = order.region || '';
			var country = order.country || '';
			var track = function (tracker) {
				tracker._addTrans(trans, aff, total, tax, shipping, city, region, country);
				$.each(order.products, function(i) {
					tracker._addItem(trans, this.sku, this.name, this.variation || '', this.price || '0', this.num || '1');
				});
				tracker._trackTrans();
			};
			track(this.gaTracker);
			if (this.gaTrackerSecondary) {
				track(this.gaTrackerSecondary);
			}
		}),
		// wait for api to have loaded
		trackEvent: waitFor('_gat', function(category, action, label, value) {
			if ( !this.enabled) {
				return;
			}
			// ensure that no empty string is sent as label or value
			this.gaTracker._trackEvent(category, action, label || undefined, value || undefined);
			if (this.gaTrackerSecondary) {
				this.gaTrackerSecondary._trackEvent(category, action, label || undefined, value || undefined);
			}
		}),
		// wait for api to have loaded
		trackLink: waitFor('_gat', function(href) {
			if ( !this.enabled) {
				return;
			}
			var href = href.replace(/\/\//g, '/');
			this.gaTracker._trackPageview(href);
			if (this.gaTrackerSecondary) {
				this.gaTrackerSecondary._trackPageview(href);
			}
		}),
		trackPriceCalculator: function(action) {
			action = action ? '/' + action : '';
			this.trackLink(location.pathname + '/formular-preisrechner' + action);
		},
		trackCo2Calculator: function(action) {
			action = action ? '/' + action : '';
			this.trackLink(location.pathname + '/formular-co2rechner' + action);
		},
		trackContentTeaser: function(type, name) {
			name = name ? '/' + name : '';
			type = type ? '/' + type : '';
			this.trackLink(location.pathname + '/teaser-geklickt' + type + name);
		},
		trackPriceCalculatorContract: function(product, id) {
			product = product ? '/' + product : '';
			id = id ? '/webedition_' + id : '';
			this.trackLink(location.pathname + '/formular-onlinevertrag' + product + id);
		},
		trackFormStep: function(step, isFinal) {
			if (/\/formular-schritt\/schritt-\w+/.test(location.pathname)) {
				// user came from ga...
				return;
			}
			step = isFinal ? step + '/schritt-absenden' : step;
			this.trackLink(location.pathname + '/formular-schritt/schritt-' + step);
		},
		trackExternalLink: function(href) {
			var domain = this.domainRegex.exec(href)[1];
			this.trackEvent('externer link', domain);
		},
		handleLink: function(link) {
			var domain = this.domainRegex.exec(link.href)[1];
			if (domain != location.hostname) {
				this.trackExternalLink(link.href);
			}
		}
	};
})(jQuery, window);

// proxy flash vertragsteaser
function openOnlineOrderForm(name) {
	switch (name) {
		case 'silber-aktiv':
			Shadowbox
				.open({
					content: '/cms/formulare/angebotsformular-privatkunden.php?as=ED001&ask=ED001&p=NaturEnergie%20Silber%20aktiv&teaser=/cms/medienboard/teaser/tel_teaser_silber_aktiv.php',
					player: "iframe",
					options: {
						skinMode: "include"
					},
					width: 999
				});
			TrackingHelper.trackPriceCalculatorContract('Flash-NaturEnergie Silber aktiv');
			break;
	}
}








jQuery(function($) {


	// attach PIE ie fallback behaviour
	if (window.PIE) {
		$('.piejs').each(function () {
			PIE.attach(this);
		});
	}



	$('div.tabModulCalculator').TabsPlugin();

	$('div.slideShow').rotate({
		isCircular: false,
		itemsPerPage: 1,
		direction: 'horizontal',
		selectBack: 'div.back',
		selectNext: 'div.next',
		selectClipContainer: 'div.clipContainer',
		selectContainer: 'div.slides',
		selectItem: 'div.slide'
	}).bind('beforemove', function(e, data) {
		data.rotate.back.addClass('disabled');
		data.rotate.next.addClass('disabled');
	}).bind('aftermove', function(e, data) {
		data.rotate.back.removeClass('disabled');
		data.rotate.next.removeClass('disabled');
	});

	// $('div.jqTabContainer').TabsPlugin();
	$('div.magazinDetail.jqTabContainer').rotate({
		api: true,
		isCircular: false,
		isGapless: false,
		itemsPerPage: 4,
		direction: 'horizontal',
		selectBack: 'div.slideUp',
		selectNext: 'div.slideDown',
		selectContainer: '.tabUl',
		selectClipContainer: '#NOTHING',
		selectItem: 'li.jqTab',
		onChange: function(e, data) {
			data.rotate.el.children('.jqTabContent').removeClass('jqTabBlock').eq(data.newIndex).addClass('jqTabBlock');
		}
	});

});

