(function($) {
	/**
	 * private functions
	 */

	var registered = [];
	var $headerContainer;
	var ajaxHandler;

	function setContainer(target) {
		$headerContainer = jQuery(target);
	}

	function getSetting(key){
		return jQuery.fn.op_menu.settings[key];
	}
	function setSetting(key, value) {
		jQuery.fn.op_menu.settings[key] = value;
	}
	function add (setup) {
		registered.push(setup);
		if(setup.clickArea) {
			addClick(setup);
		}
		if(setup.resetArea) {
			addReset(setup);
		}
	}
	function addClick (setup) {

		jQuery(setup.clickArea).bind('click focus', function() {
			switchTo(setup.key);
			return false;
		});
		//jQuery(setup.clickArea + ' input').bind('focus', function() {
		//	switchTo(setup.key);
		//	return false;
		//});
	}

	function addReset (setup) {
		jQuery(setup.resetArea).bind('click focus', function(){
			if(setup.clearAll == true) {
				jQuery('body').trigger('hideAllLayer');
			}
			clearOthers(setup.key);
			return false;
		});
		//jQuery(setup.resetArea + ' input').bind('focus', function(){
		//	clear();
		//	return false;
		//});
	}

	function switchTo(keyword) {
		jQuery(registered).each(function(){
			if(this.key != keyword) {
				$headerContainer.removeClass(this.value);
			}
			else {
				if(this.stayActive == true) {
					$headerContainer.addClass(this.value);
				}
				else {
					$headerContainer.toggleClass(this.value);
				}
			}
		});
	}

	function unswitchFrom(keyword) {
		jQuery(registered).each(function(){
			if(this.key == keyword) {
				$headerContainer.removeClass(this.value);
			}
		})
	}

	function clear() {
		jQuery(registered).each(function(){
			$headerContainer.removeClass(this.value);
		})
	}

	function clearOthers(keyword) {
		jQuery(registered).each(function(){
			if(this.key != keyword) {
				$headerContainer.removeClass(this.value);
			}
		});
	}

	function abortAjax(){
		try {
			ajaxHandler.abort();
		}
		catch(e) {
			tryLog('could not abort');
		}
	}

	function  hideLayers() {

	}

	function getConfig(key) {
		var config = false;
		jQuery(registered).each(function(){
			if(config == false && this.key == key) {
				config = this;
			}
		});
		return config;
	}

	function getActiveTab () {
		var activeKey = false;
		jQuery(registered).each(function(){
			if(activeKey == false && $headerContainer.hasClass(this.value)) {
				activeKey = this.key;
			}
		});
		return activeKey;
	}




	/**
	 * public functions
	 */
	jQuery.op_header = {
		setContainer : setContainer,
		switchTo : function (key) {
			switchTo(key);
		},
		unswitchFrom : function (key) {
			unswitchFrom(key);
		},
		add : function (setup) {
			add(setup);
		},
		abortAjax: abortAjax,
		setAjaxObj : function (ajaxObj) {
			ajaxHandler = ajaxObj;
			//tryLog("set ajax obj");
			//tryLog(ajaxObj);
		},
		getActiveTab : getActiveTab,
		getConfig : getConfig,
		clear : clear
	}
})(jQuery);

jQuery(document).ready(function(){
	//do nothing on global home
	if(document.getElementById('globalHome')) {
		return;
	}
	jQuery.op_header.setContainer('#header');
	jQuery.op_header.add({
		'key': 'search',
		'value':'textSearchActive',
		'resetArea': '#textSearch, #textSearch input',
		//'clickArea': '#textSearch, #textSearch input',
		'stayActive': true,
		'clearAll': true
	});
	jQuery.op_header.add({
		'key': 'sitemap',
		'value':'sitemapActive',
		'clickArea': '#sitemapLink',
		'stayActive': false,
		'background': '#backgroundSitemap',
		'layer': '#sitemapLayer'
	});
	jQuery.op_header.add({
		'key': 'country',
		'value':'countrySelectActive',
		'clickArea': '#countrySelect',
		'stayActive': false,
		'background': '#backgroundCountrySelect',
		'layer': '#countrySelectLayer'
	});
	jQuery('#countrySelectFooter').click(function(){
		jQuery('#countrySelect a').trigger('click');
		document.location.hash = '#top';
		return false;
	})
});

