jQuery.noConflict();
jQuery(document).ready(function($){
jQuery.fn.numbersOnly = function(){
    return this.each(function(){
        $(this).keypress(function(e){
			if(e.keyCode == 8 
			|| e.keyCode == 9 
			|| e.keyCode == 36 
			|| e.keyCode == 35 
			|| e.keyCode == 46 
			|| (e.keyCode >= 37 && e.keyCode <= 40) 
			|| (e.keyCode >= 48 && e.keyCode <= 57) 
			|| (e.keyCode >= 96 && e.keyCode <= 105))
				return true;
			else
				return ("0123456789").indexOf(String.fromCharCode(e.which)) > -1;
        })
    })
};
function isNumeric(input){
   return (input-0) == input && input.length > 0;
}
//FORMAT CONTENT TABLES BEGIN
$("table.contenttable tbody").children("tr:first").addClass("contenttablehead");
$("table.contenttable tbody").children("tr:not(:first):even").addClass("odd");
$("table.contenttable tbody").children("tr:not(:first):odd").addClass("even");
//FORMAT CONTENT TABLES END
var delay = (
	function(){
		var timer = 0;
		return function(ms, callback){
			clearTimeout (timer);
			timer = setTimeout(callback, ms);
		};
	}
)();
var FlyoutMenu = {
	init : function(){
		$("div.flyout").each(function(menuIndex, container){
			$(container).css({'display':'table'});
			//maximale Breite abschätzen
			var constantPlusWidth = 52;
			var colwidth = $(container).children("ul").outerWidth(true);		
			var numcols = 3;
			//spaltenanzahl verringern falls zu breit
			var maxRight = $("#frame").offset().left + $("#frame").outerWidth();
			while($(container).offset().left + (colwidth*numcols) > maxRight){
				numcols--;
				if(numcols == 1)
					break;
			}
			var globalheight =  $(container).children("ul").outerHeight(true);
			var heights = new Array($(container).children("ul").children().length);
			var maxElHeight=0;
			for(var i=0;i<heights.length;i++){
				heights[i] = $(container).children("ul").children("li:eq("+i+")").outerHeight(true);
				if(maxElHeight < heights[i]){
					maxElHeight = heights[i];
				}
			}
			var menu = $(container).children("ul").detach();
			var $menu = $(menu);
			
			$(container).append("<ul></ul>");
			var $actCol = $(container).children("ul:last");
			var actColHeight=0;
			var actColMaxHeight = Math.max(globalheight/numcols, maxElHeight);
			var actEleHeight;
			var delta;
			var i=0;
			for(var actEle = $menu.children("li:first").detach(); actEle.length>0; actEle = $menu.children("li:first").detach()){
				actEleHeight = heights[i];
				delta = actColHeight - actColMaxHeight;
				if(delta + actEleHeight/2 <= 0){
					$actCol.append(actEle);
					actColHeight+=actEleHeight;
				}else{
					$(container).append("<ul></ul>");
					$actCol = $(container).children("ul:last");
					actColHeight=actEleHeight;
					$actCol.append(actEle);
				}
				i++;
			}
			var conwidth=0;
			$(container).children().each(function(a,b){
				conwidth+=$(b).outerWidth(true);		
			});
			$(container).css('width', conwidth+constantPlusWidth);
			$(container).hide();
			//comment out after editing
			menu = $(container).children("ul").detach();
			$(container).append('<div class="top"><div class="left"></div><div class="middle"></div><div class="right"></div></div><div class="center"><div class="left"></div><div class="middle"><div class="overlap clearfix"></div></div><div class="right"></div></div><div class="bottom"><div class="left"></div><div class="middle"></div><div class="right"></div></div>');
			$(container).find("div.center div.middle div").append(menu);
			//$(container).find("div.center div.middle div").append('<div style="cursor:pointer; width:10px; height:10px; background-color:pink;clear:both;" class="makeMeFixed"></div>');
		});
		
		$(".makeMeFixed").live('click',
			function(){
				$("#mainNav ul li.flyoutTrigger").unbind('mouseenter mouseleave');
			}	
		);
		$("#mainNav ul li.flyoutTrigger").hover(
			function(){
				$(this).addClass("hover");
				$(this).children("div.flyout").show();
			}, 
			function(){
				$(this).removeClass("hover");
				$(this).children("div.flyout").hide();
			}
		);
	}
};
var SliderFunctions = {
	makeSlider: function(sliderOuter, sliderBar, sliderInput, valueMapping, initValue){
		$(sliderOuter).slider({
			 slide: function(event, ui){
				$(sliderBar).width(ui.value*$(sliderOuter).width()/100);
				$(sliderInput).val(valueMapping(ui.value, false));
			 },
			 change: function(event, ui){
				$(sliderBar).width(ui.value*$(sliderOuter).width()/100);
			 }
		});
		$(sliderOuter).slider("option","value",initValue);
		$(sliderInput).val(valueMapping(initValue, false));
		
		$(sliderInput).blur(function(){
			delay(500, function(){
				var newVal = valueMapping($(sliderInput).val(), true);
				if(newVal > 100){
					$(sliderInput).val(valueMapping(100, false));
				}else if(newVal <0){
					$(sliderInput).val(valueMapping(0, false));
				}
				$(sliderOuter).slider("option","value",newVal);
			});
		});
	}
};
var BigCalc = {
	init: function(){
		$("#calculatorBig .tab.privat").click(function(){
			$("#calculatorBig").removeClass("gewerbe").addClass("privat");
		});
		$("#calculatorBig .tab.gewerbe").click(function(){
			$("#calculatorBig").removeClass("privat").addClass("gewerbe");
		});
		
		SliderFunctions.makeSlider("#calculatorBig .privat .strom .slider .helper", "#calculatorBig .privat .strom .bar", "#calculatorBig .privat .strom .verbrauch", BigCalc.stromPrivatMapping, 54);
		$("#calculatorBig .privat .strom .verbrauch").change(function(){
			$("#calculatorBig .privat .strom .slider .helper").slider("option","value",this.val);
		});
		SliderFunctions.makeSlider("#calculatorBig .privat .gas .slider .helper", "#calculatorBig .privat .gas .bar", "#calculatorBig .privat .gas .verbrauch", BigCalc.gasPrivatMapping, 54);
		$("#calculatorBig .privat .gas .verbrauch").change(function(){
			$("#calculatorBig .privat .gas .slider .helper").slider("option","value",this.val);
		});
		SliderFunctions.makeSlider("#calculatorBig .gewerbe .strom .slider .helper", "#calculatorBig .gewerbe .strom .bar", "#calculatorBig .gewerbe .strom .verbrauch", BigCalc.stromGewerbeMapping, 54);
		$("#calculatorBig .gewerbe .strom .verbrauch").change(function(){
			$("#calculatorBig .gewerbe .strom .slider .helper").slider("option","value",this.val);
		});
		SliderFunctions.makeSlider("#calculatorBig .gewerbe .gas .slider .helper", "#calculatorBig .gewerbe .gas .bar", "#calculatorBig .gewerbe .gas .verbrauch", BigCalc.gasGewerbeMapping, 54);
		$("#calculatorBig .gewerbe .gas .verbrauch").change(function(){
			$("#calculatorBig .gewerbe .gas .slider .helper").slider("option","value",this.val);
		});
		
		
		
		$("#calculatorBig input[type=text]").numbersOnly();
		BigCalc.polishCheckboxes();
		
		$("#calculatorBig form").submit(function(e){
			if(!BigCalc.validate(this))
				e.preventDefault();
		});
	},
	validate : function(form){
		var plzInput = $(form).find('input.calcPlzInput');
		var plzLabel = $(form).find('.calcPlzLabel');
		var gasCheck = $(form).find('.gas input.checkbox');
		var stromCheck = $(form).find('.strom input.checkbox');
		var errors = 0;		
		var plzVal = $.trim($(plzInput).val());
		
		if(plzVal.length < 5 || !isNumeric(plzVal)){
			errors++;
			plzInput.addClass('error');
		}else{
			var args = $(form).serialize();
			args += '&type=45725378532';
			$.ajax({
				url: "http://test.stadtwerke-hall.de/",
				data: args,
				async: false,
				dataType: "json",
				success: function(data){
					if(data==true){
						plzInput.removeClass('error');
						plzLabel.removeClass('error');
					}else{
						errors++;
						plzInput.addClass('error');
						plzLabel.addClass('error');
					}
				}				
			});
		}
		if(gasCheck.is(':checked') || stromCheck.is(':checked')){
			gasCheck.removeClass('error');
			stromCheck.removeClass('error');
			gasCheck.next().removeClass('error');
			stromCheck.next().removeClass('error');
		}else{
			errors++;
			gasCheck.next().addClass('error');
			stromCheck.next().addClass('error');
		}
		return errors < 1;
		
	},
	polishCheckboxes : function(){
		$("#calculatorBig input[type=checkbox]").hide().after('<div class="fakecheck"></div>');
		$("#calculatorBig input[type=checkbox]").each(function(){
			(this.checked) ? $(this).next().addClass('checked') : $(this).next().removeClass('checked');
		});
		$(".fakecheck").click(function(){
			($(this).hasClass('checked')) ? $(this).removeClass('checked') : $(this).addClass('checked');
			$(this).prev().click();
		});
		$("#calculatorBig input[type=checkbox]").change(function(){
			(this.checked) ? $(this).next().addClass('checked') : $(this).next().removeClass('checked');
		});
	},
	stromPrivatMapping: function(val, reverse){
		var min	= 1600;
		var xp	= 47;
		var yp	= 4800;
		var max	= 30000;
		if(reverse){
			if(val <= yp)
				return (val-min)*xp/(yp-min);
			else{
				return (val-yp)*(100-xp)/(max-yp)+xp;
			}
		}else{
			if(val <= xp)
				return Math.floor((val*(yp-min)/xp+min)/10)*10;
			else
				return Math.floor(((val-xp)*(max-yp)/(100-xp)+yp)/10)*10;
		}
	},
	stromGewerbeMapping: function(val, reverse){
		if(reverse){
			return val/1000;
		}else{
			return val*1000;
		}
	},
	gasPrivatMapping: function(val, reverse){
		var min	= 5000;
		var xp	= 50;
		var yp	= 30000;
		var max	= 70000;
		if(reverse){
			if(val <= yp)
				return (val-min)*xp/(yp-min);
			else{
				return (val-yp)*(100-xp)/(max-yp)+xp;
			}
		}else{
			if(val <= xp)
				return Math.floor(val*(yp-min)/xp+min);
			else
				return Math.floor((val-xp)*(max-yp)/(100-xp)+yp);
		}
	},
	gasGewerbeMapping: function(val, reverse){
		if(reverse){
			return val/10000;
		}else{
			return val*10000;
		}
	}
};
var HomeCalculator = {
	init: function(){
		$("#calculator .tab1").click(function(){
			$("#calculator").removeClass("tab2").addClass("tab1");
		});
		$("#calculator .tab2").click(function(){
			$("#calculator").removeClass("tab1").addClass("tab2");
		});
		
		SliderFunctions.makeSlider("#homeCalcStromSliderHelper", "#homeCalcStromBar", "#homeVerbrauchStromInput", HomeCalculator.stromMapping, 65);
		$("#homeVerbrauchStromInput").change(function(){
			$("#homeCalcStromSlider").slider("option","value",this.val);
		});
		SliderFunctions.makeSlider("#homeCalcGasSliderHelper", "#homeCalcGasBar", "#homeVerbrauchGasInput", HomeCalculator.gasMapping, 55);
		$("#homeVerbrauchGasInput").change(function(){
			$("#homeCalcGasSlider").slider("option","value",this.val);
		});
		
		$("#calculator input[type=text]").numbersOnly();
		
		$("#calculator form").submit(function(e){
			if(!HomeCalculator.validate(this))
				e.preventDefault();
		});
	},
	validate : function(form){
		var plzInput = $(form).find('fieldset input:first');
		var errors = 0;		
		var plzVal = $.trim($(plzInput).val());		
		
		if(plzVal.length < 5 || !isNumeric(plzVal)){
			errors++;
			plzInput.addClass('error');
		}else{
			var args = $(form).serialize();
			args += '&type=45725378532';
			$.ajax({
				url: "http://test.stadtwerke-hall.de/",
				data: args,
				async: false,
				dataType: "json",
				success: function(data){
					if(data==true){
						plzInput.removeClass('error');
						//plzLabel.removeClass('error');
					}else{
						errors++;
						plzInput.addClass('error');
						//plzLabel.addClass('error');
					}
				}				
			});
		}
		return errors < 1;
	},
	stromMapping: function(val, reverse){
		var min	= 1600;
		var xp	= 65;
		var yp	= 4800;
		var max	= 30000;
		if(reverse){
			if(val <= yp)
				return (val-min)*xp/(yp-min);
			else{
				return (val-yp)*(100-xp)/(max-yp)+xp;
			}
		}else{
			if(val <= xp)
				return Math.floor((val*(yp-min)/xp+min)/10)*10;
			else
				return Math.floor(((val-xp)*(max-yp)/(100-xp)+yp)/10)*10;
		}
	},
	gasMapping: function(val, reverse){
		var min	= 5000;
		var xp	= 55;
		var yp	= 30000;
		var max	= 70000;
		if(reverse){
			if(val <= yp)
				return (val-min)*xp/(yp-min);
			else{
				return (val-yp)*(100-xp)/(max-yp)+xp;
			}
		}else{
			if(val <= xp)
				return Math.round(val*(yp-min)/xp+min);
			else
			return Math.round((val-xp)*(max-yp)/(100-xp)+yp);
		}
	}
};	
//SUB MENU BEGIN
var SubNav = {
	init : function(){
		SubNav.styleList($("#subNav"),0);
	},
	styleList : function(node, depth){
		$(node).children("li").children("a").each(function(index, link){
			var $link = $(link);
			$link.css('padding-left', depth*13+5).prepend('<span class="arr"></span>');
			if($link.height() > parseInt($link.css('line-height'))){
				$link.addClass("double");
			}
		});
		$(node).children("li").children("ul").each( function(index, Element){SubNav.styleList(Element, depth+1);})
	}	
   	
}

//SUB MENU END
var ShortCutMenu = {
	init : function(){
		$('#shortCut').children('ul').css('width', 'auto');
		var w  = $('#shortCut').children('ul').width();
		$('#shortCut div.middle').css('width', (w-18)+'px');
		w = $('#shortCut div.outer').width();
		$('#shortCut div.label').css('right', (w+10)+'px');
		
		$(document).click(function(e) {
			if($(e.target).parents("#shortCut").length > 0 && $('#shortCut').children('ul').is(':hidden'))
				$('#shortCut').children('ul').show();
			else 
				$('#shortCut').children('ul').hide();
		});
	}
};
var Angebot = {
	init : function(){
		$('.angebot .qmark').hover(
			function(){
				$(this).children('.overlay').show();
			},function(){
				$(this).children('.overlay').hide();
		});
		/*
		$('.angebot .qmark .overlay').click(function(){
			$('.angebot .qmark').unbind('mouseenter').unbind('mouseleave');
		});
		*/
	}
};
var HomeHeaderSlider = {
	headerSliderInterval : null,
	init : function(){
		HomeHeaderSlider.initHeaderSliderInterval();
		$('#header-slider .arrow.left').click(function(){
			if($('#header-slider li:animated').size()== 0){
				window.clearInterval(HomeHeaderSlider.headerSliderInterval);
				if($('#header-slider li.active').prevAll().length < 1){
					HomeHeaderSlider.homeSliderSlideTo($('#header-slider li:last'), true);
				}else{
					HomeHeaderSlider.homeSliderSlideTo($('#header-slider li.active').prev(), true);
				}
			}
		});
		$('#header-slider .arrow.right').click(function(){
			if($('#header-slider li:animated').size()== 0){
				window.clearInterval(HomeHeaderSlider.headerSliderInterval);
				if($('#header-slider li.active').nextAll().length < 1){
					HomeHeaderSlider.homeSliderSlideTo($('#header-slider li:first'), true);
				}else{
					HomeHeaderSlider.homeSliderSlideTo($('#header-slider li.active').next(), true);
				}
			}
		});
		
		$('#header-slider').attr('unselectable', 'on').css('-moz-user-select', 'none').each(function() {
			this.onselectstart = function() { return false; };
		});
	},
	
	homeSliderSlideTo : function(el, startInterval){
		//$el = $(el);
		var i = el.prevAll().length;
		$('.amature-button.active').removeClass('active');
		$('.amature-button').slice(i, i+1).addClass('active');
		$('#header-slider li.active').fadeOut(600, function() {
			$(this).removeClass('active');
			el.addClass('active');
			if(startInterval){
				HomeHeaderSlider.headerSliderInterval = window.setInterval(HomeHeaderSlider.homeSlider, 3000);
			}
		});
		el.show();
	},
	
	homeSlider : function(){
		if($('#header-slider li:animated').size()== 0){
			if($('#header-slider li.active').nextAll().length < 1)
				var next = $('#header-slider li:first');
			else 
				var next = $('#header-slider li.active').next();
			HomeHeaderSlider.homeSliderSlideTo(next, false);
		}
	},	
	
	initHeaderSliderInterval : function(){
		$('#header-slider li:first').addClass('active');
		var i = 0;
		$('#header-slider li').each(function() {
			i++;
			$('#amature').append('<span class="amature-button'+(i==1 ? " active":"")+'">'+i+'</span>');
		});
		
		$('#amature .amature-button').attr('unselectable', 'on').css('-moz-user-select', 'none').each(function() {
			this.onselectstart = function() { return false; };
		});
	
		$('.amature-button').click(function() {
			var i = $(this).prevAll().length;
			var j = $('.amature-button.active').prevAll().length;
			if(i != j && $('#header-slider li:animated').size()== 0){
				window.clearInterval(HomeHeaderSlider.headerSliderInterval);				
				HomeHeaderSlider.homeSliderSlideTo($('#header-slider li').eq(i-1), true);
			}
		});		
		HomeHeaderSlider.headerSliderInterval = window.setInterval(HomeHeaderSlider.homeSlider, 3000);
	}
};
(function() {
	var contactSlider = $('.contactSlider');
	if(contactSlider.length > 0) {
		contactSlider.each(function() {
			var slider = $(this);
			var dropdown = slider.find('.dropdown');
			var contacts = slider.find('.contact');
			var thumbs = slider.find('.thumbs');
			var sections = {};
			
			slider.find('.slideLeft, .slideLeft2').click(function() {
				slideTo(thumbs.find('.active').prev().data('target'));
			});
			
			slider.find('.slideRight, .slideRight2').click(function() {
				slideTo(thumbs.find('.active').next().data('target'));
			});
			contacts.each(function() {
				var contact = $(this);
				var section = $(this).find('.section').html();
				if(!sections[section]) sections[section] = $(this);
				var thumb = contact.find('.thumb');
				thumb.data('target', contact);
				contact.data('thumb', thumb);
				thumbs.append(
					thumb.click(function() {
							slideTo(contact);
						})
					);
			});
			$.each(sections, function(key, val) {
				$('<span>'+key+'</span>').appendTo(dropdown)
					.click(function() {
						if($(this).prevAll().length > 0) {
							slideTo(val);
							$(this).prependTo($(this).parent());
							$(this).siblings('.active').removeClass('active');
							$('.contactSlider .dropdown span').hide().filter(':first').show().addClass('active');
							}
						else {
							$(this).siblings().css('display','block');
						}
					});
			});
			dropdown.find(':first').css('display','block').addClass('active');
					
			slideTo(contacts.filter(':first'), true);
		});
		$(document).click(function(e) {
			var target = $(e.target);
			if(!target.parent().hasClass('dropdown')
				|| !target.parent().parent().parent().hasClass('contactSlider')) {
				$('.contactSlider .dropdown span').hide().filter(':first').show();
			}
		});
	}
	
	function centerThumb(targetThumb,cb,instant) {
		if(targetThumb.length > 0) {
			var offset = targetThumb.prevAll().length;
			if(instant) {
				targetThumb.parent().css('left',(offset-4)*-62);
				if(typeof cb == 'function') cb();
				}
			else targetThumb.parent().animate({'left' :(offset-4)*-62}, 400, cb);
			}
	}
	
	function reorderThumbs(targetThumb) {
		var before = targetThumb.prevAll();
		var after = targetThumb.nextAll();
		var container = targetThumb.parent();
		if(before.length > after.length+1) {
			var shift = (before.length-after.length)/2;
			$($.makeArray(before.slice(before.length-shift,before.length)).reverse()).appendTo(container);
		}
		else if(after.length > before.length) {
			var shift = (after.length-before.length)/2;
			after.slice(after.length-shift,after.length).prependTo(container);
		}
	}
	
	function slideTo(target, instant) {
		var targetThumb = target.data('thumb');
		var container = targetThumb.parent();
		if(!container.hasClass('lock') && !container.hasClass('lock2') && !targetThumb.hasClass('active')) {
			container.addClass('lock').addClass('lock2');
			var thumbs = targetThumb.siblings().andSelf();
			var fromThumb = thumbs.filter('.active');
			
			var inverseDirection = fromThumb.prevAll().filter(targetThumb).length;
			
			thumbs.removeClass('active');
			thumbs.clone(true).addClass('clone').prependTo(container);
			thumbs.clone(true).addClass('clone').appendTo(container);
			centerThumb(fromThumb,false, true);			
			container.css('width', 62*thumbs.length*3);
			targetThumb.addClass('active');
			centerThumb(targetThumb,function() {
				container.children().filter('.clone').remove();
				reorderThumbs(targetThumb);
				centerThumb(targetThumb,false, true);
				container.removeClass('lock');
			}, instant);
			var contactContainer = container.parent().parent().children('.contactFrame');
			if(instant) {
				contactContainer.find('.contact').hide();
				target.show();
				container.removeClass('lock2');
				}
			else {
				var from = contactContainer.find('.contact:visible');
				var slideHelper = $('<div class="slideHelper"></div>').appendTo(contactContainer);
				if(inverseDirection) {
					slideHelper.append(target.clone()).append(from.clone());
					slideHelper.css('left', "-717px");
				} else {
					slideHelper.append(from.clone()).append(target.clone());
					slideHelper.css('left', "0px");
				}
				slideHelper.children().show();
				slideHelper.animate({'left': (inverseDirection ? '0px' : '-717px')}, 400, function() {
					from.hide();
					target.show();
					$('.slideHelper').remove();
					container.removeClass('lock2');
				});				
			}
		}
	}
})();
//CONTACT SLIDER END

	function initDateMap(mapData) {
		mapData = $.parseJSON(mapData);
		var findArray = {};
		var zips = {};
		var streets = {};
		var suggestionsTimeout = false;
		$.each(mapData, function(k, v) {
			if(typeof findArray[v['PLZ']] == 'undefined') findArray[v['PLZ']] = {};
			findArray[v['PLZ']][v['Straße']] = v;
			zips[v['PLZ']] = v['PLZ'];
			if(typeof streets[v['PLZ']] == 'undefined') streets[v['PLZ']] = [];
			streets[v['PLZ']].push(v['Straße']);
		});
		var paper = Raphael($('.dateMap .map').get(0), 715, 650);
		
		var areas = paper.set();
		areas.push(paper.path("m 76.933426,310.2222 c 0,0 16.910599,-17.93163 24.467734,-20.53025 9.20799,-3.166 12.48836,1.33637 18.30324,6.14163 5.8145,4.80462 19.32762,9.42325 17.105,17.11962 -2.22563,7.69625 -6.67288,6.32763 -13.001,9.06388 -6.32813,2.73737 -2.5415,2.30862 -5.27775,7.68362 -2.73688,5.37263 -10.813,6.22513 -13.53575,1.38138 -2.96475,-5.2715 -5.337875,-6.31888 -10.076625,-6.71725 -4.74125,-0.398 -20.944812,-0.294 -20.944812,-5.0825 0,-4.78913 0.898438,-6.83013 2.959963,-9.06013"));
		areas.push(paper.path("m 267.25465,292.02207 c 0,0 26.75375,-4.61387 48.1225,-1.11775 21.36625,3.49513 34.04375,-0.15625 38.3175,8.05663 4.2725,8.21238 19.61875,20.96238 -13.015,31.5835 -32.6325,10.62263 -31.27125,21.47125 -34.575,32.26613 -3.3025,10.79537 -11.07125,15.4575 -42.735,15.65137 -31.66125,0.19388 -35.74,12.96638 -42.53875,13.86375 -6.8,0.899 -34.38188,-12.31 -28.55375,-31.54 5.82625,-19.23 36.71125,-63.13137 74.9775,-68.76363"));
		areas.push(paper.path("m 295.0284,242.12207 c 0,0 33.70875,10.88375 44.365,8.405 10.6575,-2.47875 20.725,-11.58 25.73,-10.25125 5.00375,1.32875 1.4875,8.28 4.60875,18.43625 3.1225,10.15625 6.91125,5.07125 10.6,12.44875 3.6875,7.3775 -4.3625,13.8175 4.6125,13.07375 8.97625,-0.74375 10.80625,-5.205 18.44125,-3.7175 7.63625,1.4875 12.29375,-4.71 19.135,-3.96625 6.8425,0.745 14.89,2.21875 23.75375,0.6125 8.865,-1.60375 21.00875,-0.13375 27.9475,12.01988 6.94125,12.15275 23.05125,20.165 25.2825,40.07663 2.23,19.91112 2.295,20.15962 -8.52,18.91987 -10.8125,-1.23875 -19.86375,0.24613 -18.4375,10.65625 1.42875,10.40975 8.2675,29.53613 -1.84375,34.96875 -10.1125,5.43217 -33.16125,2.836 -40.845,4.38238 -7.6825,1.5449 -17.1975,15.64646 -41.68625,4.3823 -24.48875,-11.26468 -30.18875,-5.58105 -42.08625,-16.60255 -11.89625,-11.02 -9.66625,-26.63475 1.24,-44.231 15.54125,-17.30613 19.1175,-28.31488 11.34125,-40.0785 -3.3075,-5.0015 -4.54625,-9.12413 -10.6,-9.75301 -15.785,-1.63725 -27.49625,-2.45362 -37.355,-3.70462 -9.86125,-1.25138 -18.90375,1.9835 -20.3925,-7.18763 -1.4875,-9.17 3.00125,-17.845 1.5,-26.51875 -1.5,-8.675 -1.87,-10.98125 3.20875,-12.37125"));
		areas.push(paper.path("m 374.0034,238.52582 c 0,0 18.54375,-8.45875 25.005,-2.80125 3.20125,2.80125 2.91875,6.69125 0.6875,12.63875 -2.22875,5.94875 -3.2975,6.14 -7.51125,10.34875 -4.215,4.20875 -9.53875,12.23625 -15.24,5.07125 -5.69875,-7.16375 -7.0225,-5.65 -5.6375,-15.42 1.38625,-9.76875 2.69625,-9.8375 2.69625,-9.8375"));
		areas.push(paper.path("m 406.0659,239.12582 c 4.17625,2.5375 16.18375,8.22125 16.085,14.17125 -0.1,5.94625 -4.18875,11.56125 -3.69375,14.18625 0.495,2.625 1.16,6.21875 -1.07,7.4575 -2.2325,1.23875 -4.84875,2.5275 -10.3025,3.27 -5.4525,0.745 -7.075,-1.41125 -11.73,0.81875 -4.6575,2.23125 -13.185,6.06375 -12.18125,0.79 1.0075,-5.27375 -1.4925,-9.4375 1.31375,-11.42 2.80625,-1.9825 15.92625,-11.42875 17.885,-20.84625 1.95625,-9.4175 1.38,-9.83125 3.69375,-8.4275"));
		areas.push(paper.path("m 420.5734,184.79208 c 0,0 -16.04,-4.01375 -20.255,6.1475 -4.21375,10.1625 -5.78,11.3675 -4.73625,17.56249 1.045,6.19625 3.0475,13.5225 2.8,17.73625 -0.24875,4.2125 2.97375,8.42625 7.43625,10.905 4.46,2.47875 17.3675,8.19625 17.84375,15.11625 0.47625,6.91875 -2.23125,11.44375 -2.47875,15.22375 -0.2475,3.78 -1.3075,4.5025 2.82125,6.23125 4.12875,1.73 21.69,1.15375 30.6375,0.24625 4.32875,-0.44125 7.18875,-12.30375 9.17125,-16.63 1.98375,-4.325 5.58,-1.0725 6.75875,-5.5325 1.18,-4.45875 -3.53625,-6.67875 -5.7675,-9.67625 -2.23,-2.99625 -1.58375,-5.41625 -8.85625,-3.23625 -7.5975,2.2775 -32.61875,-5.19 -38.07125,-16.59125 -5.4525,-11.40125 -3.14625,-20.90499 2.705,-27.34874 5.85,-6.44375 1.55,-9.65625 -0.009,-10.15375"));
		areas.push(paper.path("m 386.09715,213.02707 c 0,0 9.625,2.39375 9.2575,4.9325 -0.8575,5.89125 2.04,11.2525 -0.53625,12.75 -2.57875,1.4975 -16.68125,2.70375 -23.51,5.015 -8.04625,2.72125 -12.555,2.95 -18.64,6.3975 -6.0875,3.4475 -16.22,9.3325 -17.955,4.27125 -1.735,-5.06 1.28,-22.2825 9.6725,-24.565 8.39125,-2.2825 14.83125,1.93125 18.4275,-2.035 3.595,-3.965 -0.3025,-10.16 3.63,-11.1525 3.93125,-0.99125 15.6375,3.63375 19.65375,4.38625"));
		areas.push(paper.path("m 378.0584,185.09458 c 1.745,1.70625 15.98,7.37375 17.06375,10.6575 0.79,2.395 -2.92625,5.44125 -2.80625,8.55249 0.14375,3.7325 1.29625,8.815 -1.66625,8.2875 -3.47125,-0.61875 -17.0525,-6.75375 -23.00125,-5.9725 -5.9475,0.7825 -3.65625,3.26 -6.91,3.5075 -3.2525,0.24875 -8.705,2.47875 -13.6625,-0.495 -4.955,-2.97375 -18.0025,-8.67499 -9.62,-11.64874 8.38125,-2.97375 10.0025,-1.04375 16.695,-4.90625 6.69125,-3.86125 18.8675,-12.90375 23.9075,-7.9825"));
		areas.push(paper.path("m 327.31215,116.68958 c 1.17625,0 20.785,-2.47875 25.35625,10.65625 4.57,13.13625 -0.63625,17.815 4.8175,22.7875 5.45375,4.97125 25.07375,12.655 28.39875,22.32125 3.32625,9.66625 -0.1475,11.1525 -3.9875,11.89625 -3.83875,0.74375 -2.105,-3.56625 -9.16875,-2.4025 -7.0625,1.16375 -18.215,7.40125 -22.1825,8.99125 -3.965,1.59125 -11.095,-1.135 -15.8325,-5.845 -4.73875,-4.70875 -31.93625,-23.04875 -25.1525,-49.56875 3.56,-13.6325 17.75125,-18.83625 17.75125,-18.83625"));
		areas.push(paper.path("m 414.9184,163.53208 c 0,0 15.63875,-1.9825 17.52,8.9225 1.88,10.905 3.69875,10.9625 13.36625,12.78 9.665,1.81625 27.88125,1.5575 30.65,17.44375 2.9425,16.87124 0.84375,22.99749 -3.7675,27.73874 -5.3525,5.5025 -29.85625,8.92125 -42.3325,-0.73875 -9.53625,-7.38375 -14.87,-16.16375 -10.90625,-26.28499 3.965,-10.12 12.71625,-15.03625 7.4475,-19.11875 -7.3025,-5.65875 -18.60125,-0.76375 -21.32875,-2.32625 -2.725,-1.5625 -1.205,-17.28375 9.35125,-18.41625"));
		areas.push(paper.path("m 481.0884,203.74082 c 13.24875,5.11875 23.5275,9.365 30.66125,9.37875 7.135,0.015 10.27,1.71625 9.66875,11.135 -0.59875,9.41875 -3.32625,15.165 -9.77125,17.8675 -6.44375,2.70375 -10.255,-2.74875 -10.9525,3.69625 -0.69625,6.4425 9.0775,9.98375 8.28,17.5075 -0.7975,7.525 -10.1475,16.695 -17.99,17.685 -7.84,0.99125 -15.91125,4.46875 -20.225,0.91375 -4.3125,-3.555 -6.52875,-5.44 -8.34375,-7.52875 -2.00875,-2.3125 -0.09,-5.8975 2.63625,-13.2725 2.7275,-7.375 7.3075,-1.92625 7.495,-8.86375 0.18875,-6.93875 -2.615,-7.62625 -5.30375,-12.115 -2.68625,-4.48875 1.8625,-3.725 3.51625,-4.42 1.2875,-0.54375 12.78125,-6.195 9.86375,-22.605 -2.6975,-6.5 -0.76125,-9.85249 0.465,-9.37875"));
		areas.push(paper.path("m 174.15591,703.0847 c -1.64375,-4.07125 -5.34375,-12.5175 -1.69625,-16.38875 2.675,-2.84125 16.50375,-1.5375 17.42875,-4.24625 2.54625,-7.455 -2.3525,-13.70875 -0.74375,-12.90375 4.95625,2.47875 26.23626,-6.2675 39.37376,-8.80875 13.1375,-2.54 20.81875,-10.71875 38.66375,2.16875 17.84625,12.88875 24.535,9.6675 34.20375,16.11125 9.66625,6.4425 6.81375,4.2125 11.585,13.63125 4.77375,9.41875 12.21,15.615 16.4225,21.5625 4.2125,5.94875 13.13375,18.6275 2.9725,29.265 -10.16125,10.63874 -14.12625,13.21749 -28.00625,13.78624 -13.88,0.57 -53.565,-1.565 -65.56875,-4.5875 -12.0075,-3.02125 -26.07375,-8.22624 -27.22,-11.19999 -1.14625,-2.975 -3.87125,-9.915 -14.7775,-12.39375 -10.90501,-2.4775 -9.09251,-0.50875 -12.81001,-3.46625 -1.47625,-1.17375 -5.37375,-11.48875 -9.8275,-22.53"));
		areas.push(paper.path("m 140.53216,647.7872 c 0.8925,0.0462 17.1025,0.24875 21.81125,3.96625 4.70875,3.7175 10.695,4.1375 16.69,6.66375 5.9925,2.52875 2.88875,8.455 7.84625,10.93375 1.17375,0.58625 1.84375,4.90625 1.9725,10.935 0.1075,4.95625 -18.44875,0.82875 -19.0925,6.97125 -1.8825,17.95 21.07375,45.05375 2.24875,36.85 -4.355,-1.8975 -4.7,-15.2325 -10.03375,-17.52125 -5.3325,-2.28875 -8.80125,-4.35125 -11.775,-8.40125 -2.97625,-4.05125 -7.1725,-2.81125 -17.9625,-2.81125 -10.78875,0 -23.22625,1.98375 -29.27625,-5.69875 -6.048747,-7.68375 -10.262497,-10.1625 -1.34125,-16.85375 8.92375,-6.6925 28.4725,-25.57 38.9125,-25.03375"));
		areas.push(paper.path("m 583.0284,214.58832 c 0,0 8.55625,-2.96 25.52875,-7.96875 15.50125,-4.57499 21.06625,-6.23249 29.24625,0 8.17875,6.23375 15.3575,5.98625 18.7075,13.67 3.35125,7.6825 4.09375,16.765 2.85625,26.10375 -1.24125,9.3375 10.15875,33.37875 -1.48875,40.07113 -11.64875,6.69287 -17.3925,7.93163 -35.96,9.6665 -18.56625,1.73488 -40.62375,2.726 -53.76,-8.42775 -13.13625,-11.15238 -14.73625,-18.87988 -11.70625,-21.83238 3.03125,-2.9525 1.7925,-3.94375 -7.13125,-11.6275 -8.92125,-7.6825 -12.64125,-5.9475 -8.17875,-20.075 4.4625,-14.12625 1.9825,-18.61625 14.1275,-18.10625 12.145,0.51 17.4075,1.14625 27.75875,-1.47375"));
		paper.image("/fileadmin/templates/img/date_map_bg.png", 0, 0, 715, 650);
		var labels = paper.image("/fileadmin/templates/img/date_map_labels.png", 0, 0, 715, 650);
		
		areas.scale(0.79,0.79);
		areas.attr({"fill": "#365cb3", "fill-opacity":"1", "stroke":"#000000", "stroke-opacity":"0"});
		areas[0].translate(-12,107);
		areas[1].translate(-53,112);
		areas[2].translate(-76,116);
		areas[3].translate(-75,131);
		areas[4].translate(-78,130);
		areas[5].translate(-84,134);
		areas[6].translate(-71,135);
		areas[7].translate(-71,139);
		areas[8].translate(-68,149);
		areas[9].translate(-86,139);
		areas[10].translate(-95,131);
		areas[11].translate(166,-397);
		areas[12].translate(188,-393);
		areas[13].translate(-120,130); 
		areas.toFront().hide();
		labels.toFront();
		var hoverHelper = areas.clone();
		hoverHelper.attr({"fill": "#365cb3", "fill-opacity":"0", "cursor":"pointer"})
			.toFront();
		$.each(hoverHelper, function(k,v) {
			v.hover(function(e) {
				areas[k].show();
			},
			function() {
				areas.hide();
			});
			v.click(function() {
				element = $('.dateMap .info').slice(k,k+1);
				element.show().addClass('locked');
				window.setTimeout(function() {
					element.removeClass('locked');
				}, 200);
			});
		});
		
		$(document).click(function(e) {
			var target = $(e.target).parent().hasClass('info') ? $(e.target).parent() : $(e.target);
			if(!(target.hasClass('info')
				&& target.parent().hasClass('dateMap'))) $('.dateMap .info:not(.locked)').hide();
		});
		
		$('.dateMap input').focus(function() {
			window.clearTimeout(suggestionsTimeout);
			if($(this).hasClass('zip') && $(this).val() == 'PLZ'
				|| $(this).hasClass('street') && $(this).val() == 'Straße'
					) {
				$(this).data('prefill', $(this).val());
				$(this).val('');
			}
		});
		$('.dateMap input').blur(function() {
			if($(this).data('prefill') && $.trim($(this).val()).length < 1) $(this).val($(this).data('prefill'));
			suggestionsTimeout = window.setTimeout(function(){
				var suggestions = $('.dateMap .suggestions');
				suggestions.children().remove();
			}, 200);
		});
		$('.dateMap input').keyup(function() {
			var val = $(this).val().toUpperCase();
			if(val.length > 1) {
				var data = $(this).hasClass('zip') ? zips : ($(this).hasClass('street') ? streets[$('.dateMap input.zip').val()] : false);
				if(!data) return false;
				var suggestions = $('.dateMap .suggestions');
				suggestions.css('left', Number($(this).position().left)+parseInt($(this).css('margin-left')));
				suggestions.css('width', $(this).outerWidth());
				var results = [];
				suggestions.children().remove();
				suggestions.data('currentInput', $(this));
				$.each(data, function(k, v) {
					if(v.substr(0,val.length).toUpperCase() == val) {
						suggestions.append('<span>'+v+'</span>');
					}
				});
				
				if($(this).hasClass('zip')){
					if(findArray[val]) {
						$('.dateMap input.street').attr('disabled', false);
					}
					else $('.dateMap input.street').attr('disabled', true);
				}
			}
		});
		$('.dateMap .suggestions span').live('click', function() {
			$(this).parent().data('currentInput').val($(this).text());
			if($(this).parent().data('currentInput').hasClass('zip')) {
				if(findArray[$(this).text()]) {
					$('.dateMap input.street').attr('disabled', false);
					}
				else $('.dateMap input.street').attr('disabled', true);
				}
			else submitForm();
		});
		
		function submitForm() {
			var zip = $('.dateMap input.zip').val();
			var street = $('.dateMap input.street').val();
		$('.dateMap .error span').hide();
			if(!findArray[zip][street]) {
				$('.dateMap .error span').show();
			}
			else {
				var element = $('.dateMap .info_'+findArray[zip][street]['Abrechnungsbereich']);
				element.show().addClass('locked');
				window.setTimeout(function() {
					element.removeClass('locked');
				}, 200);
			}
		}
		
		$('.dateMap .submit').click(function() {
			submitForm();
		});
	}
	
var Home = {
	init: function(){
		ShortCutMenu.init();
		HomeCalculator.init();
		HomeHeaderSlider.init();
		$( "#accordeon" ).accordion();
	}
};
//Home Boxes BEGIN
(function() {
	var teasers = $('#teasers .teaser').slice(0,3).detach();
	$('#teasers .teaser').remove();
	$(teasers).appendTo('#teasers').fadeIn(200);
	$(teasers).slice(1,2).addClass('teaser2');
	$(teasers).slice(2,3).addClass('teaser3');
})();
//Home Boxes END
//ACCORDIONS BEGIN
(function() {
var acc = $('.accordionHead:first');
while(acc.length > 0) {
	acc.nextUntil(':not(.accordionHead,.accordionBody)').andSelf()
	.wrapAll('<div class="accordion"></div>').addClass('done');
	acc = $('.accordionHead:not(.done):first');
}
$( ".accordion" ).accordion({
			autoHeight: false
		});
})();
//ACCORDIONS END
//TABS BEGIN
(function() {
var tab = $('.tabHead:first');
while(tab.length > 0) {
	tab.nextUntil(':not(.tabHead,.tabBody)').andSelf()
	.wrapAll('<div class="tabs"></div>').addClass('done');
	tab = $('.tabHead:not(.done):first');
}
$(".tabs").each(function() {
	var id=1;
	var list = $('<ul></ul>');
	$(this).prepend(list)
	.find('.tabHead').each(function() {
	   list.append('<li><span class="tabBgLeft"></span><a href="#tabContent-'+id+'">'+$(this).text()+'</a><span class="tabBgRight"></span></li>');
	   $(this).next().attr('id', 'tabContent-'+id);
   $(this).remove();
	   id++;
	});
});
$('.tabs').tabs();
})();
//TABS END
//DOWNLOADLINK DECORATION BEGIN
$(".pdfDownloadLink, .xlsDownloadLink, .docDownloadLink").each(function() {
	if($(this).next().filter(".pdfDownloadLink, .xlsDownloadLink, .docDownloadLink").length > 0) $(this).addClass('downloadLinkSeperator');
});
//DOWNLOADLINK DECORATION END
//SEARCH FORM BEGIN
$("#searchForm input[type=text]").focus(function() {
	var text = $("#searchForm input[type=text]").val();
	if(text == 'Suche'){//TODO andere sprachversionen berücksichtigen
		$("#searchForm input[type=text]").val("");
	}	
});
$("#searchForm input[type=text]").blur(function() {
	var text = $("#searchForm input[type=text]").val();
	if($.trim(text) == ''){
		$("#searchForm input[type=text]").val("Suche");//TODO andere sprachversionen berücksichtigen
	}	
});
$("#searchForm").submit(function(e){
	if ($("#searchForm input[type=text]").val() == "Suche") {
		$("#searchForm input[type=text]").val("");
	}
});
//SEARCH FORM END
var FlashHelper = {
	makeOverlay: function(imgid, flaid){
		id=$(flaid).attr('id');
		$('body').prepend('<div id="'+id+'_wrap" class="flwrap"></div>');
		$(flaid+'_wrap').prepend($(flaid).detach());
		$(flaid+'_wrap').prepend('<div class="close">x</div>');
		$('body').prepend('<div id="floverlay"></div>');
		$(imgid).click(function(){
				$('#floverlay').css('display', 'block');
				$(flaid+'_wrap').css('display', 'block');
		});
		$('#floverlay').click(function(){
			FlashHelper.closeOverlay('#floverlay', flaid+'_wrap')
		});
		
		$(flaid+'_wrap .close').click(function(){
			FlashHelper.closeOverlay('#floverlay', flaid+'_wrap')
		});
	},
	closeOverlay: function(overlay, fl){
		$(overlay).css('display', 'none');
		$(fl).css('display', 'none');
	}
};
	//Initialize Stuff..
	
	FlyoutMenu.init();
	if($('#header-slider').length > 0) Home.init();
	if($('#subNav').length > 0) SubNav.init();	
	if($('#calculatorBig').length > 0) BigCalc.init();
	if($('.angebot').length > 0) Angebot.init();
	
	if($('#flashparken').length > 0) FlashHelper.makeOverlay('#flashparken', '#flashparkplatz_final');
	if($('#Rechnung').length > 0) FlashHelper.makeOverlay('#flashrechnung', '#Rechnung');
	
	if($('.dateMap').length > 0) {
		$.ajax({
		  url: '/fileadmin/templates/data/dates.json',
		  success: function(data) {
			initDateMap(data);
			}
		});
	}
});



