/**
 * Stellt seitenübergreifende JavaScript-Funktionen zur Verfügung
 * 
 * @author bauer & bauer medienbuero <contact@headwork.de>
 * @copyright bauer & bauer medienbuero | www.headwork.de
 * @version SVN: $Id: content.js 208 2011-03-31 10:21:37Z sas65195 $
 *
 */
 
var ur = {};

$(function() {
	
	ur.quickSearchForm = $('#quicksearch-form');
	ur.quickSearchInput = $('#quicksearch-input');
	ur.navContainer = $('.navigation');
	ur.navHeaderLink = $('#navigation-header a');
	ur.navContent = $('#navigation-content');
	
	ur.quickSearchMinChars = 4;
	ur.quickSearchErrorMessage = 'Bitte geben Sie einen aus mindestens vier Buchstaben bestehenden Suchbegriff an.';
	ur.defaultQuickSearchTerm = ur.quickSearchInput.val();
	
	ur.init = function() {
		ur.initTabs();
		ur.initLightbox();
		ur.initQuickSearch();
		ur.initNavigation();
		ur.initBackButton();
	}
	
	ur.initTabs = function() {
		if ($('.tabs').length > 0) {
			$('.tabs').accessibleTabs({
				tabhead: 'h2.tab',
				fx: 'fadeIn',
				fxspeed: 'fast',
				autoAnchor: true,
				currentInfoText: 'Ausgewählter Tab: '
			});
		}
	};

	ur.initLightbox  = function() {
		var boxes = $('a[rel*=lightbox]');
		if (boxes.length > 0) {
			boxes.lightBox({
				toggleNavigation: false,
				imageLoading: '/res/lightbox/images/loading.gif',
				imageBtnClose: '/res/lightbox/images/close.gif',
				imageBlank: '/res/lightbox/images/blank.gif'
			});
		};
	};

	ur.initQuickSearch = function() {
		
		ur.quickSearchForm.removeAttr("onsubmit");
		
		ur.quickSearchInput.focus(function(e) {
			if (this.value == ur.defaultQuickSearchTerm) {
				this.value = '';
			}
		});
		ur.quickSearchInput.blur(function(e) {
			if (this.value == '') {
				this.value = ur.defaultQuickSearchTerm;
			}
		});
	};
	
	ur.initNavigation = function() {
		if (ur.navContainer.length > 0) {
			ur.navContainer.mouseenter(ur.showNavigation);
			ur.navContainer.mouseleave(ur.hideNavigation);
			ur.navContainer.focusin(ur.showNavigation);
			ur.navContainer.focusout(ur.hideNavigation);
			ur.navHeaderLink.click(ur.hideNavigation);
			ur.navContent.hide();
		}
	};
	
	ur.initBackButton = function() {
		if ($('div.menu-left').length > 0) {
			var page = ur.retrieve('page');
			var path = ur.retrieve('path');
			var title = ur.retrieve('title');
			if (page && path && title) {
				var backButton = $('a.link-back'); 
				backButton.attr('href', page + '?path=' + path);
				backButton.html(title);
				backButton.addClass('orientation');
			}
		}
	};

	ur.showNavigation = function(e) {
		clearTimeout($(ur.navContent).data('timeoutId'));	
		var timeoutId = setTimeout (function() {
			ur.navHeaderLink.addClass('active');
			ur.navContent.slideDown(400);
		}, 200);
		$(ur.navContent).data('timeoutId', timeoutId);
	};

	ur.hideNavigation = function(e) {
		clearTimeout($(ur.navContent).data('timeoutId'));
		var timeoutId = setTimeout(function() {
			ur.navHeaderLink.removeClass('active');
			ur.navContent.slideUp(200);
		}, 100);
		$(ur.navContent).data('timeoutId', timeoutId);
	};
	
	ur.store = function(myKey, myValue) {
		if (typeof(Storage) == 'undefined') {
			windowName.set(myKey, myValue);
		} else {
			sessionStorage.setItem(myKey, myValue);
		}
	};
	
	ur.retrieve = function(myKey) {
		if (typeof(Storage) == 'undefined') {
			return windowName.get(myKey);
		} else {
			return sessionStorage.getItem(myKey);
		}
	};

});

var windowName = new function () {
	/* --------- Private Properties --------- */

	var dataContainer = {};

	/* --------- Private Methods --------- */

	function linearize () {
		var string = "", name, value;
		for (name in dataContainer) {
			name = encodeURIComponent(name);
			value = encodeURIComponent(dataContainer[name]);
			string += name + "=" + value + "&";
		}
		if (string != "") {
			string = string.substring(0, string.length - 1);
		}
		return string;
	}

	function read () {
		if (window.name == '' || window.name.indexOf("=") == -1) {
			return;
		}
		var pairs = window.name.split("&");
		var pair, name, value;
		for (var i = 0; i < pairs.length; i++) {
			if (pairs[i] == "") {
				continue;
			}
			pair = pairs[i].split("=");
			name = decodeURIComponent(pair[0]);
			value = decodeURIComponent(pair[1]);
			dataContainer[name] = value;
		}
	}

	function write () {
		window.name = linearize();
	}

	/* --------- Public Methods --------- */

	this.set = function (name, value) {
		dataContainer[name] = value;
		write();
	};

	this.get = function (name) {
		var returnValue = dataContainer[name];
		return returnValue;
	};

	this.getAll = function () {
		return dataContainer;
	};

	this.remove = function (name) {
		if (typeof(dataContainer[name]) != undefined) {
			delete dataContainer[name];
		}
		write();
	};

	this.removeAll = function () {
		dataContainer = {};
		write();
	};

	/* --------- Construction --------- */

	read();
};

jQuery(document).ready(function(e) { ur.init(); });
