/* === bvn.js === */

(function($) {
	$.extend( {
		
		config: (function() {
			// Put config settings in configObj (private):
			var confObj = {
				specialNav:	{
								expanded:		{
												text: 	"Sluit",
												icon:	"/images/ico_submenu_expanded.png"
											},
								collapsed:	{
												text: 	"Open",
												icon:	"/images/ico_submenu_collapsed.png"
											}
							}
			};
			
			// Private methods:
			var extend = function(conf, callbacks) {
				if (!conf || typeof conf !== "object") { return; }
				var proceed;
				for (var key in conf) {
					proceed = true;
					if (callbacks) {
						// Call appropriate callback function, if specified:
						if (confObj[key] && callbacks.onAlter) { proceed = callbacks.onAlter(key, conf[key], confObj[key]); }
						else if (!confObj[key] && callbacks.onAdd) { proceed = callbacks.onAdd(key, conf[key]); }
					}
					// Set value, unless callback function returned false:
					if (proceed || proceed == null) { confObj[key] = conf[key]; }
				}
			};
			var get = function(key) {
				return key ? confObj[key] : confObj;
			};
			
			// Interface:
			return {extend: extend, get: get};
		})(),
		
		initFoldedMenu: function() {
			var special = $("#subMenuAan a.special");
			if (special.length < 1) { return; }
			
			var navConf = $.config.get().specialNav;
			
			var menu = $("#subMenu");
			menu.addClass("jsFold").addClass("jsCollapsed");
			
			var menuTitle = $("#subMenuTitel")
			menuTitle.append('<a href="#" class="icon"><img src="' + navConf.collapsed.icon + '" alt="' + navConf.collapsed.text + '" title="' + navConf.collapsed.text + '" /></a>');
			//special
			//	.addClass("jsExpanded")
			//	.find("ul:first")
			//	.before('<a href="#" class="icon"><img src="' + navConf.expanded.icon + '" alt="' + navConf.expanded.text + '" title="' + navConf.expanded.text + '" /></a>');
			
			function swapIcon(iconLink, type) {
				$(iconLink)
					.find("img")
					.attr({
						src:	navConf[type].icon,
						alt:	navConf[type].text,
						title:	navConf[type].text
					});
			};
			
			function initSwapState(elem, classElem, className, initExp) {
				elem
					.find("a.icon")
					.toggle(
					function(e) {
						e.preventDefault();
						classElem.removeClass(className);
						swapIcon(this, initExp ? "collapsed" : "expanded");
					},
					function(e) {
						e.preventDefault();
						classElem.addClass(className);
						swapIcon(this, initExp ? "expanded" : "collapsed");
					});
			};
			
			initSwapState(menuTitle, menu, "jsCollapsed", false);
			//initSwapState(special, special, "jsExpanded", true);
		}
		
	} );
} )(jQuery);

jQuery( function( $ ) {
	
	// collapse region/theme menus:
	$.initFoldedMenu();
	
} );