/** 
 * @fileoverview 
 * overview
 *
 * @author $Author: kuehnel $
 * @version $Rev: 7014 $ 
 * @date $Date: 2011-09-27 11:43:52 +0200 (Tue, 27 Sep 2011) $
 *
 */

// jQuery wrapper 
(function ($) {
	
	// DOM ready
	$(function () {
		var	$messageBox = $("div.messageBox").addClass("js");
		
		/*
		* Auto delete message box after a designated period of time 
		*/
		var autoClosingBoxes = $('div.messageBox.autoClose');
		messageBox.deleteBox(autoClosingBoxes,10000);
		
		/*
		* Delete message box on click 
		*/
		$('body').delegate('div.messageBox .close', 'click', function(event) {
			event.preventDefault();
			messageBox.deleteBox($(this).parent(),0);
		});
		
	});
	
	messageBox = {
		/**
		 * @name fadingSpeed
		 * @fieldOf messageBox
		 * @type Integer
		 * @default 500
		 *
		 * @description
		 * Milliseconds determining how long the animation (showing or destroying) of messageboxes will run.
		 */
		fadingSpeed: 500,
		/**
		 * @name loadBox
		 * @methodOf messageBox
		 *
		 * @description
		 * Loading messageboxes via AJAX.
		 *
		 * @param {string} content The page which inludes the whole messagebox markup.
		 * @param {jQuery-Object} target The element prior to new messagebox as a jQuery object.
		 */
		loadBox: function (content, target) {
			console.log(target);
			$.get(content, function(data) {
				$(data).addClass('js').css('display', 'none').insertBefore(target).fadeIn(messageBox.fadingSpeed);
			});
		},
		/**
		 * @name deleteBox
		 * @methodOf messageBox
		 *
		 * @description
		 * Destroying messageboxes.
		 *
		 * @param {string} box The designated messagebox as a jQuery object.
		 * @param {integer} delay Milliseconds of delay before fade out.
		 */
		deleteBox: function (box, delay) {
			box.dequeue().delay(delay).fadeOut(messageBox.fadingSpeed, function() {
				$(this).remove();    
			});
		}
	}
	
}(jQuery));


