//Die aktuell sichtbare Seite
var active_pageid = 0;
// IntervalHandler fuer das Scrollen
var scrollInterval = null;
//Letzte Differenz zum Zielpunkt beim Scrollen
var lastdiff = null;
jQuery.noConflict();
jQuery(document).ready(function() {
	//Die Groessen aller Unterseiten relativ zum Viewport anpassen
	var viewport_height = jQuery(window).height();
	jQuery('article.sub_page').css('min-height',viewport_height*0.75+"px");//.css('max-height',viewport_height*0.75+"px").css("overflow", "hidden").addClass('wrapped');
	
	jQuery(window).scroll(function(e) {
		var window_top = jQuery(window).scrollTop();
		var window_height = jQuery(window).height();
		// Fuer jede Unterseite pruefen, ...
		jQuery('article.sub_page').each(function(index) {
			var element_top = jQuery(this).offset().top;
			//... ob sie die aktive ist
			if(element_top >= window_top && element_top < window_top + window_height/4) {
				var id = /.+-(\d+)/.exec(jQuery(this).attr('id'));
				//Wenn ja, Menuebuttons anpassen
				if(id && id instanceof Array && id.length > 1) {
					active_pageid = id[1];
					setMenulinkActive(id[1]);
					return false;
				}
			} 
			return true;
		});
	});
	//Jeden Menuebutton die entsprechende Seite laden und dahin scrollen lassen
	jQuery('#wrapper header .menubutton, #wrapper header .kontaktbt, #wrapper header #logoarea, #wrapper header .menubutton_active').live("click", function(e) {
		var id = jQuery(this).attr("data-pageid");
		var gotoindex = jQuery(this).attr("data-gotoindex");
		if(gotoindex != 1) {
			e.preventDefault();
			if(id) {
				openPage(id);
			}
		} else {
			e.preventDefault();
			var anchorName = jQuery("a.anchor[data-pageid="+id+"]").attr("name");
			location.href = '/index.php#'+anchorName;
		}
	});
	// Die ID der Seite, die ueber der aktuellen liegt, ermitteln, und dahin scrollen
	jQuery('#footer_totop').click(function(e) {
		e.preventDefault();
		if(active_pageid > 0) {
			for(var i = active_pageid-1; i >= 0; i--) {
				if(jQuery('#sub_page-'+i).length != 0) {
					openPage(i);
					break;
				}
			}
		}
	});
	//Accordionheader aktivieren
	jQuery('section.accordion header').live("click", function() {
		if(jQuery(this).next().css('display') == "none") {
			jQuery(this).addClass('active').next().slideDown();
			var top = jQuery(this).offset().top - 120;	
			jQuery('html,body').animate({scrollTop: top}, 800);
		} else {
			jQuery(this).removeClass('active').next().slideUp();
		}
	});
	//Tabs initialisieren
	jQuery('.tabiconimage').live("click", function() {
		jQuery(this).parents('.tab').find('.tabicon, .tabiconimage').removeClass("active");
		jQuery(this).addClass("active").parent('.tabicon').addClass("active");
		var index = jQuery(this).attr('data-tabindex');
		jQuery(this).parents('.tab').find('article [data-tabindex]:visible').fadeOut("fast", function() {
			jQuery(this).parents('.tab').find('article [data-tabindex='+index+']').fadeIn("fast");
		});
		if(parseInt(jQuery(this).attr("data-tabindex"))<=4) {
			jQuery(document).scrollTo(jQuery(this).parents("section.tab"), 800, {offset:-100});
		} else {
			jQuery(document).scrollTo(jQuery(this).parent().parent().parent().find("article"), 800, {offset:-100});
		}
	});
	//Flipdivs initialisieren
	function flip(front) {
		if(front){
			jQuery(this).parent().children('div:first-child').show();
			jQuery(this).parent().children('div:last-child').hide();
		} else {
			jQuery(this).parent().children('div:first-child').hide();
			jQuery(this).parent().children('div:last-child').show();
		}
	}
	jQuery('.flipdiv').live("hover",
			function () {
	            jQuery(this).children('div').stop().rotate3Di("toggle", 250, {sideChange: flip});
	        },
	        function () {
	            jQuery(this).children('div').stop().rotate3Di("toggle", 500, {sideChange: flip});
	        }
	);

	jQuery('form').live('submit', function(e) {
		jQuery('#contact_output').hide();
		e.preventDefault();
		var error = false;
		jQuery('input, textarea', this).removeClass("error");
		jQuery('input, textarea', this).each(function() {
			if(jQuery(this).attr("placeholder") && jQuery(this).attr("placeholder").search(/\*/) != -1 && jQuery(this).val() == "") {
				error = true;
				jQuery(this).addClass("error");
			}
		});
		if(!error) {
			var data = jQuery(this).serialize();
			var form = this;
			jQuery("input, textarea", this).attr("disabled","disabled");
			jQuery.ajax({
				url: jQuery(this).attr("action")+"&blanc=1",
				type: "post",
				data: data,
				success: function(data) {
					if(data == "1") {
						jQuery('#contact_output').removeClass().addClass("success").html("Vielen Dank f&uuml;r Ihre Nachricht!").fadeIn();
						jQuery(form)[0].reset();
						Recaptcha.reload();
					} else {
						jQuery('#contact_output').removeClass().addClass("error").html("Beim Versenden ist ein Fehler aufgetreten. Bitte &uuml;berpr&uuml;fen Sie ihre Eingaben.").fadeIn();
					}
					jQuery('input, textarea', form).removeAttr("disabled");
				}
			});
		}
	});
	//Slider initialisieren
	jQuery('.slider').anythingSlider({
		width		:  410,
		height		:  410,
		theme         : 'metallic'
	});


	//tabs initialisieren
	jQuery('.tabiconimage').removeClass("active").wrap("<div class='tabicon'>");
	jQuery("br", '.tab header').remove();
	//Das Tab mit der kleinsten ID finden
	var lowestid = -1;
	jQuery('.tab header .tabiconimage[data-tabindex]').each(function() {
		if(lowestid == -1 || jQuery(this).attr("data-tabindex") < lowestid) {
			lowestid = jQuery(this).attr("data-tabindex");
		}
	});
	
	//Tabs sichtbar machen, da fuer Nutzer ohne Javascript unsichtbar, Raender entfernen
	jQuery('.tab header').css("display","block");
	jQuery('section.tab article div[data-tabindex]').css("border-bottom","none");
	jQuery('.tab article div[data-tabindex]').hide();
	//Tab mit der kleinsten ID aktivieren
	if(lowestid != -1) {
		jQuery('.tab header .tabiconimage[data-tabindex='+lowestid+']').addClass("active").parent('.tabicon').addClass("active");
		jQuery('.tab article div[data-tabindex='+lowestid+']').show();
	}
	//Border-Radius der gegenueberliegenden Tabs umkehren
	var radius = jQuery('.tab .tabicon').first().css('border-top-left-radius');
	jQuery('.tab article ~ header .tabicon').css('border-radius',"0px 0px "+radius+" "+radius);
	jQuery('.tab article ~ header .tabiconimage').css('margin-top',"30px");
	
	//accordions initialisieren
	jQuery('section.accordion article').hide();
	jQuery('section.accordion article[data-visible="1"]').show().prev('header').addClass('active');
	
	//flipdivs initialisieren
	jQuery('.flipdiv').each(function() {
		//Groessen vereinheitlichen
		var height = jQuery(this).find('div:first-child').height();
		var width = jQuery(this).find('div:first-child').width();
		//jQuery(this).children().css("height",height+"px").css("width",width+"px");
		jQuery(this).children('div:last-child').hide();
		jQuery(this).css("height",height+"px").css("width",width+"px");
	});
	
	//Zur Initialisierung Scrollevent ausloesen
	jQuery(window).scroll();

});

//Setzt alle Menuebuttons auf nichtaktiv, aktiviert den uebergebenen
function setMenulinkActive(id) {
	jQuery('#wrapper header .menubutton_active').each(function(index) {
		jQuery(this).removeClass('menubutton_active').addClass('menubutton');
	});
	jQuery('#wrapper header .kontaktbt_active').removeClass('kontaktbt_active').addClass('kontaktbt');
	jQuery('#wrapper header .menubutton[data-pageid="'+id+'"]').removeClass('menubutton').addClass('menubutton_active');
	if(id == jQuery('#wrapper header #kontaktbt').attr('data-pageid')) {
		jQuery('#wrapper header #kontaktbt').removeClass('kontaktbt').addClass('kontaktbt_active');
	}
}
//Scrollt zur gewuenschten Seite, setzt Anker
function openPage(id, callback) {
	var menu_height = jQuery('#mainheader').height();
	if(scrollInterval) {
		clearInterval(scrollInterval);
		scrollInterval = null;
	}
	//windowScrollTo('#sub_page-'+id, function(selector) {
	var top = jQuery('.anchor[data-pageid='+id+']').offset().top;
	//jQuery(window).scrollTo('.anchor[data-pageid='+id+']', 800, {onAfter: function() {
		
	jQuery('html,body').animate({scrollTop: top}, {
		duration: 800,
		complete: function() {
			var anchorName = jQuery("a.anchor[data-pageid="+id+"]").attr("name");
			if(anchorName) {
				//alert("setting "+anchorName);
				var st = parseInt(jQuery(window).scrollTop());
				window.location.hash=anchorName;
				jQuery('html,body').scrollTop(st);
			}
		}
	});
	//windowScrollTo('.anchor[data-pageid='+id+']', function(selector) {
		//var id = /.+-(\d+)/.exec(selector)[1];
		//var id = /.+=(\d+)\]/.exec(selector)[1];
		
	//}});
	//}, 0);
}
//Scrollt das Fenster zu einem durch ein jQuery-Selektor definierten Element
function windowScrollTo(selector, callback, offset) {
	var raster = 1000;
	var element = jQuery(selector);
	var etop= element.offset().top + offset;
	var wtop = jQuery(window).scrollTop();
	var diff = etop - wtop;
	if(!scrollInterval) {
		scrollInterval = window.setInterval("windowScrollTo('"+selector+"',"+callback+","+offset+")",50);
	}
	if(etop != wtop && (lastdiff == null || diff != lastdiff)) {
		lastdiff = diff;
		var multiplier = 0.2;
		if(Math.abs(diff) <= 100) {
			//multiplier = (Math.abs(diff) / 40) + 0.1
			multiplier = 0.4;
		} else if(Math.abs(diff) <= 10) {
			multiplier = 1;
		}
		jQuery(window).scrollTop(wtop + (diff*multiplier));
	} else {
		clearInterval(scrollInterval);
		scrollInterval = null;
		if(callback != null) {
			callback(selector)
		}
	}
}
