/*
	*** Die Programmiererin - Mareike Hybsier, Berlin ***
	jQuery Enhancement - Javascript for www.die-programmiererin.de
	(c) Mareike Hybsier - http://www.die-programmiererin.de
*/

$(function() {
	
	// Global variables
	var flag;
	var dark;

	// Hide all closed sections
	$(".closed").next().hide();
	
	// Add slide functions to all sections (h1 elements)
	$("h1").click(function () {
		if($(this).is('.closed')) {
			$(".open").delay(200, function() { $(this).next().slideUp("slow"); });
			$(this).delay(200, function() { $(this).next().slideDown("slow"); });
			$("h1").deactivateElement();
			$(this).activateElement();
		}
		else if($(this).is('.open')) {
			$(this).delay(200, function() { $(this).next().slideUp("slow"); });
			$(this).deactivateElement();
		}
	});
	
	// Add a function to toggle the CSS styles
	$("a#style_switcher").click(function () { flag = !flag; dark.disabled = flag; });
	
	// Add hover functions to all sections (h1 elements)
	$("h1").hover(function() { $(this).addClass('hover'); }, function() { $(this).removeClass('hover'); });
	
	// Delay the call to (slide) functions
	// => http://james.padolsey.com/javascript/jquery-delay-plugin/
	$.fn.delay = function(time, callback) {
		jQuery.fx.step.delay = function() {};
		return this.animate( { delay: 1 }, time, callback);
	}
	
	// Set an element class to 'open' or 'closed'
	$.fn.activateElement = function() { switchClasses($(this), 'open', 'closed'); }
	$.fn.deactivateElement = function() { switchClasses($(this), 'closed', 'open'); }
	
	function switchClasses (element, classToAdd, classToRemove) {
		element.addClass(classToAdd);
		element.removeClass(classToRemove);
		// De/Activate the given element
		(classToAdd == 'open') ? element.addClass('active') : element.removeClass('active');
	}
	
	// Initialization function
	function initialize () {
		flag = true;
		dark = document.getElementsByTagName("link")[1];
		dark.disabled = flag;
		
		// Set year in copyright section
		document.getElementById('year').innerHTML = (new Date()).getFullYear();
	}
	
	// Do this at start
	initialize();
	$(".who").delay(600, function() { $(this).next().slideDown("slow"); });
	$(".who").activateElement();
});