/**
 * @author NEIF461
 */
jQuery.fn.center = function () {
    this.css("position","absolute");
    this.css("top", ( $(window).height() - this.height() ) / 2 + $(window).scrollTop() + "px");
    this.css("left", ( $(window).width() - this.width() ) / 2 + $(window).scrollLeft() + "px");
    return this;
}

var zft = {
	timer: null,
	popup: null,
	init: function() {
		zft.popup = $("#timer");
		//zft.showPopup();
		$(".tee").click(function(){
			var zeit = parseInt($(this).find(".zeit").html());
			var timer = new myTimer(zeit, $("#timerDisplay"), function () {
				soundManager.play("ding");
				zft.finishTimer();
			});
			zft.startTimer(timer);
		});
		$(window).resize(function(){
			if (zft.popup.is(":hidden")) return;
			zft.centerPopupSizeOverlay(zft.popup, $("#overlay"));
		});
		$("#impressumLink").click(function(){
			$("#impressum").toggle("slow");
		});
	},
	startTimer: function(timer) {
		zft.timer = timer;
		timer.init();
		timer.start();
		zft.showPopup();
	},
	stopTimer: function() {
		zft.timer.stop();
		zft.closePopup("timer");
	},
	finishTimer: function() {
		zft.popup.find(".countdown").hide("slow");
		zft.popup.find(".finish").show("slow");
	},
	showPopup: function(popup) {
		zft.popup.find(".countdown").show();
		zft.popup.find(".finish").hide();
		zft.centerPopupSizeOverlay(zft.popup, $("#overlay"));
		$("#overlay").css({"opacity": 0.5});
		$("#overlay").fadeIn("fast");
		$(zft.popup).find(".closeHandler").click(function(){
			zft.stopTimer();
		});
		zft.popup.fadeIn("fast");
	},
	closePopup: function(id) {
		zft.popup.find(" .closeHandler").unbind();
		zft.popup.fadeOut("fast", function() {
			zft.popup.find(".countdown").show();
			zft.popup.find(".finish").hide();
		});
		$("#overlay").fadeOut("fast");
	},
	centerPopupSizeOverlay: function(popup, overlay) {
		//Get the window height and width
		var docH = $(document).height();
		var docW = $(document).width();
		//Set the popup window to center
		popup.center();
		overlay.css({'height': docH, 'width': docW});
	}
}

/**
 * 
 * @param {Object} time Time to count down in minutes
 * @param {Object} el HTML element to update
 */
var myTimer = function (time, el, onFinish) {
	var that = this;
	var diff = null; // the time to count down in seconds
	var paused = false;
	var finished = true;
	var remaining = {
		minutes: null,
		seconds: null
	};
	this.init = function () {
		diff = (time*60); // seconds
		updateRemaining();
		updateDisplay();
	};
	this.start = function () {
		if (finished) {
			finished = false;
			paused = false;
			countdown();
		} else {
			if (paused) {
				paused = false;
			} else {
				paused = true;
			}
		}
	};
	this.stop = function () {
		window.clearTimeout(that.timeout);
	};
	var countdown = function () {
		if (diff > 0) {
			if (!paused) {
				diff--;
				updateRemaining();
				updateDisplay();
			}
			that.timeout = window.setTimeout(countdown, 1000);
		} else {
			onFinish();
			finished = true;
		}
	};
	var updateRemaining = function () {
		remaining.minutes = Math.floor(diff/60);
		remaining.seconds = Math.floor(diff - remaining.minutes * 60);
	}
	var updateDisplay = function() {
		el.html("<span class='minTime'>" + remaining.minutes + "</span> Minuten <span class='secTime'>" + remaining.seconds + "</span> Sekunden");
	};
}

/* SOUNDMANAGER */
soundManager.debugMode = false; // disable debug output
soundManager.url = './lib/soundmanagerv295b-20100323/swf/'; // path to directory containing SoundManager2 .SWF file
soundManager.flashVersion = 8;

soundManager.onload = function() {
  // SM2 is ready to go!
  var mySound = soundManager.createSound({
    id: 'ding',
    url: 'ding.mp3',
    volume: 50
  });
  //mySound.play();
}

soundManager.onerror = function(e) {
  // SM2 could not start, no sound support, something broke etc. Handle gracefully.
  //console.error(e);
}


$(document).ready(function(){
	zft.init();
});
