/**
 * String.trim()
 * @return	string
 */
String.prototype.trim = function() { 
	return this.replace(/^\s+|\s+$/g, ''); 
};


/**
 * valideerNieuwsbrief
 * @param	object	form
 * @return	bool	valid 
 */
function valideerNieuwsbrief( form )
{	
	var fouten = [];
	
	// actie van formulier bepalen, aanmelden of afmelden
	if(form.actie.type == 'hidden')
		var actie = form.actie.value;
	else
		var actie = $(form.actie).filter(":checked").val();
	
	
	// aanmelden
	if(actie == 'aanmelden')
	{
		if(!form.voornaam.value.trim()) 		fouten.push([ form.voornaam, 'Voornaam is een verplicht veld.' ]);
		if(!form.achternaam.value.trim()) 		fouten.push([ form.achternaam, 'Achternaam is een verplicht veld.' ]);
		if(!form.email.value.trim()) 			fouten.push([ form.email, 'E-mail is een verplicht veld.' ]);		
		if(!form.Plaats.value.trim()) 			fouten.push([ form.Plaats, 'Woonplaats is een verplicht veld.' ]);
		
		if(form.email.value.trim() && !form.email.value.indexOf("@")) 	
			fouten.push([ form.email, 'U dient een correct e-mail adres in te vullen.' ]);
	}
	// afmelden
	else
	{
		if(!form.email_afmelden.value.trim()) 	
			fouten.push([ form.email_afmelden, 'Email is een verplicht veld.' ]);
		
		if(form.email_afmelden.value.trim() && !form.email_afmelden.value.indexOf("@")) 	
			fouten.push([ form.email_afmelden, 'U dient een correct e-mail adres in te vullen.' ]);
	}
	
	// fouten gevonden?
	if(fouten.length)
	{
		// fout melding opbouwen
		var melding = [];
		for(f in fouten)
			melding.push( fouten[f][1] );
		
		alert( melding.join("\n") );
		
		// focus op eerste foute veld
		fouten[0][0].focus();
		
		return false;
	}
	else
	{
		return true;
	}
}



/**
 * valideerBetaalmethode
 * @param	object	form
 * @return	bool	valid
 */
function valideerBetaalmethode( form )
{
	var fouten = [];
	
	var methode = $(form.methode).filter(":checked").val();
	
	switch(methode)
	{
		case 'ideal':
			if(form.issuerID.value == "0") 	
				fouten.push([ form.issuerID, 'U dient een iDEAL bank te kiezen.' ]);
			break;
		
		case 'machtiging':
			if(!form.machtiging_rekeningnummer.value.trim()) 	
				fouten.push([ form.machtiging_rekeningnummer, 'Rekeningnummer is een verplicht veld.' ]);	
			
			if(!form.machtiging_naam.value.trim()) 				
				fouten.push([ form.machtiging_naam, 'Op naam van is een verplicht veld.' ]);
			break;
		
		case 'overmaken':
			// geen validatie nodig
			break;
		
		case 'kadobon':
			if(!form.kadobon_nummer.value.trim()) 	
				fouten.push([ form.kadobon_nummer, 'Kadobon nummer is een verplicht veld.' ]);
			break;
		
		default:
			fouten.push([ form, 'U dient een betaalmethode te kiezen.' ]);
			break;
	
	}
	
	// fouten gevonden?
	if(fouten.length)
	{
		// fout melding opbouwen
		var melding = [];
		for(f in fouten)
			melding.push( fouten[f][1] );
		
		alert( melding.join("\n") );
		
		// focus op eerste foute veld
		fouten[0][0].focus();
		
		return false;
	}
	else
	{
		return true;
	}
}


/**
 * submenu
 */
window.Menu = {
	delay		: 600,
	timer		: null,
	menuitem	: null,
	
	/**
	 * apply
	 * @param	string	selector
	 */
	apply: function( selector ) {
		$(selector).hover(Menu.open, Menu.setTimer);
		$(document).click(Menu.close);
	},
	
	/** 
	 * cancelTimer
	 */
	cancelTimer: function() {
		if(Menu.timer)	{
			clearTimeout(Menu.timer);
     		Menu.timer = null;
		}
	},
	
	/**
	 * setTimer
	 */
	setTimer: function() {
		if($("ul", Menu.menuitem).length)	{
			Menu.timer = window.setTimeout(Menu.close, Menu.delay);
		}
		else	{
			Menu.close();	
		}
	},
		
	/** 
	 * close
	 * @param	string	current_menu_id
	 */
	close: function( current_menu_id ) {
		if(Menu.menuitem)	{
			if(Menu.menuitem.data("menuID") != current_menu_id)	
			{
				if($("ul", Menu.menuitem).length)
				{
					$("ul, div.shadow", Menu.menuitem)
						.css({ height: 'auto', zIndex: "" })
						.stop()
						.animate({ height: 'hide' }, function() { $(this).parent("li").removeClass("open"); });
				}
				else
				{
					$(Menu.menuitem).removeClass("open");	
				}
			}
		}
	},
			
	/** 
	 * open
	 */
	open: function() {
		current_menu = $(this);
		
		current_menu.addClass("open");
		
		// uniek menu id per submenu, dit om bij het sluiten te checken of niet de actieve wordt gesloten
		if(!current_menu.data("menuID"))	{
			current_menu.data("menuID", (Math.random() +''+ Math.random()).replace(/\./g,""))
		}
		
		Menu.cancelTimer();
		Menu.close( current_menu.data("menuID") );
		Menu.menuitem = current_menu;
		
		//$("ul", this).css({ zoom: 1, position: 'absolute', marginLeft: -5, marginTop: 5 }).css( $(this).offset() );
		$("ul", this).css({ zoom: 1, position: 'absolute', marginLeft: -5, marginTop: 5 });
		$("ul, div.shadow", Menu.menuitem).css({ height: 'auto', zIndex: 100 }).stop().animate({ height: 'show' });	
	}

};


/* jquery.hoverClick
 * functie om hele blokken klikbaar te maken, en hover toevoegen 
 */
$.fn.hoverClick=function(){this.each(function(){if($("a:first",this).length){$(this).hover(function(){$(this).addClass("hover").css("cursor","pointer")},function(){$(this).removeClass("hover").css("cursor","pointer")});$(this).attr("title",$("a:first",this).attr("title"));$(this).click(function(){window.location=$("a:first",this).attr("href")})}});return this};


/**
 * backgroundPosition animatie
 * @author Alexander Farkas
 * v. 1.1
 */
(function(a){if(!document.defaultView||!document.defaultView.getComputedStyle){var b=jQuery.curCSS;jQuery.curCSS=function(e,c,f){if(c!=="backgroundPosition"||!e.currentStyle||e.currentStyle[c]){return b.apply(this,arguments)}var d=e.style;if(!f&&d&&d[c]){return d[c]}return b(e,"backgroundPositionX",f)+" "+b(e,"backgroundPositionY",f)}}})(jQuery);(function(b){function a(d){d=d.replace(/left|top/g,"0px");d=d.replace(/right|bottom/g,"100%");d=d.replace(/([0-9\.]+)(\s|\)|$)/g,"$1px$2");var c=d.match(/(-?[0-9\.]+)(px|\%|em|pt)\s(-?[0-9\.]+)(px|\%|em|pt)/);return[parseFloat(c[1],10),c[2],parseFloat(c[3],10),c[4]]}b.fx.step.backgroundPosition=function(d){if(!d.bgPosReady){var f=b.curCSS(d.elem,"backgroundPosition");if(!f){f="0px 0px"}f=a(f);d.start=[f[0],f[2]];var c=a(d.options.curAnim.backgroundPosition);d.end=[c[0],c[2]];d.unit=[c[1],c[3]];d.bgPosReady=true}var e=[];e[0]=((d.end[0]-d.start[0])*d.pos)+d.start[0]+d.unit[0];e[1]=((d.end[1]-d.start[1])*d.pos)+d.start[1]+d.unit[1];d.elem.style.backgroundPosition=e[0]+" "+e[1]}})(jQuery);


/**
 * jquery.innerfade
 * http://medienfreunde.com/lab/innerfade/
 */
(function(a){a.fn.innerfade=function(b){return this.each(function(){a.innerfade(this,b)})};a.innerfade=function(b,c){var e={animationtype:"fade",speed:"normal",type:"sequence",timeout:2000,containerheight:"auto",runningclass:"innerfade",children:null};if(c){a.extend(e,c)}if(e.children===null){var g=a(b).children()}else{var g=a(b).children(e.children)}if(g.length>1){a(b).css("position","relative").css("height",e.containerheight).addClass(e.runningclass);for(var d=0;d<g.length;d++){a(g[d]).css("z-index",String(g.length-d)).css("position","absolute").hide()}if(e.type=="sequence"){setTimeout(function(){a.innerfade.next(g,e,1,0)},e.timeout);a(g[0]).show()}else{if(e.type=="random"){var f=Math.floor(Math.random()*(g.length));setTimeout(function(){do{h=Math.floor(Math.random()*(g.length))}while(f==h);a.innerfade.next(g,e,h,f)},e.timeout);a(g[f]).show()}else{if(e.type=="random_start"){e.type="sequence";var h=Math.floor(Math.random()*(g.length));setTimeout(function(){a.innerfade.next(g,e,(h+1)%g.length,h)},e.timeout);a(g[h]).show()}else{alert("Innerfade-Type must either be 'sequence', 'random' or 'random_start'")}}}}};a.innerfade.next=function(d,b,e,c){if(b.animationtype=="slide"){a(d[c]).slideUp(b.speed);a(d[e]).slideDown(b.speed)}else{if(b.animationtype=="fade"){a(d[c]).fadeOut(b.speed);a(d[e]).fadeIn(b.speed,function(){removeFilter(a(this)[0])})}else{alert("Innerfade-animationtype must either be 'slide' or 'fade'")}}if(b.type=="sequence"){if((e+1)<d.length){e=e+1;c=e-1}else{e=0;c=d.length-1}}else{if(b.type=="random"){c=e;while(e==c){e=Math.floor(Math.random()*d.length)}}else{alert("Innerfade-Type must either be 'sequence', 'random' or 'random_start'")}}setTimeout((function(){a.innerfade.next(d,b,e,c)}),b.timeout)}})(jQuery);function removeFilter(a){if(a.style.removeAttribute){a.style.removeAttribute("filter")}};