/***
	
	functionaliteit die op iedere pagina gebruikt moet kunnen
	worden
	
***/

  //
  // controleer of een e-mail-adres correct is
  //
	function isEmailAddr(email){
/*		var result = false
		var theStr = new String(email)
		var whitespace = theStr.indexOf(" ")
		var index = theStr.indexOf("@")
		
		if (whitespace == -1){
			if (index > 0){
				var pindex = theStr.indexOf(".",index)
				
				if ((pindex > index+1) && (theStr.length > pindex+1)){
					result = true
				}
			}
		}
		return result
*/
		var pattern = new RegExp(/^(("[\w-\s]+")|([\w-]+(?:\.[\w-]+)*)|("[\w-\s]+")([\w-]+(?:\.[\w-]+)*))(@((?:[\w-]+\.)*\w[\w-]{0,66})\.([a-z]{2,6}(?:\.[a-z]{2})?)$)|(@\[?((25[0-5]\.|2[0-4][0-9]\.|1[0-9]{2}\.|[0-9]{1,2}\.))((25[0-5]|2[0-4][0-9]|1[0-9]{2}|[0-9]{1,2})\.){2}(25[0-5]|2[0-4][0-9]|1[0-9]{2}|[0-9]{1,2})\]?$)/i); 
		return pattern.test(email); 
//		return pattern;
	}
 
 
 
  /*--(( nieuwsbrief ))--*/
 
  //
  // controleer het e-mail-adres voor de nieuwsbrief
  //
	function controleer_email_nieuwsbrief(f){
		var v=f.elements['email'];
		
	  //
	  // als het een e-mail-adres is, is er niks aan de hand
	  //
		if(isEmailAddr(v.value)){
			
		  //
		  // nieuw venster openen en zorgen dat het formulier
		  // hiernaartoe gestuurd wordt
		  //
			var nieuwsbriefvenster=window.open('about:blank','nieuwbriefvenster','width=690,height=250,scrollbars=yes,resizable');
			if(nieuwsbriefvenster){
				f.target='nieuwbriefvenster';
				nieuwsbriefvenster.focus();
			}
			
			return true;
		}
		
	  //
	  // en anders geven we een melding
	  //
		alert("Geef een geldig e-mail-adres \n(van de vorm: naam@domein.nl)");
		v.focus();
		return false;
	}
 
	function mktime() {
	    // Get UNIX timestamp for a date  
	    // 
	    // version: 901.2514
	    // discuss at: http://phpjs.org/functions/mktime
	    // +   original by: Kevin van Zonneveld (http://kevin.vanzonneveld.net)
	    // +   improved by: baris ozdil
	    // +      input by: gabriel paderni 
	    // +   improved by: Kevin van Zonneveld (http://kevin.vanzonneveld.net)
	    // +   improved by: FGFEmperor
	    // +      input by: Yannoo
	    // +   bugfixed by: Kevin van Zonneveld (http://kevin.vanzonneveld.net)
	    // +      input by: jakes
	    // +   bugfixed by: Kevin van Zonneveld (http://kevin.vanzonneveld.net)
	    // +   bugfixed by: Marc Palau
	    // *     example 1: mktime(14, 10, 2, 2, 1, 2008);
	    // *     returns 1: 1201871402
	    // *     example 2: mktime(0, 0, 0, 0, 1, 2008);
	    // *     returns 2: 1196463600
	    // *     example 3: make = mktime();
	    // *     example 3: td = new Date();
	    // *     example 3: real = Math.floor(td.getTime()/1000);
	    // *     example 3: diff = (real - make);
	    // *     results 3: diff < 5
	    // *     example 4: mktime(0, 0, 0, 13, 1, 1997)
	    // *     returns 4: 883609200
	    // *     example 5: mktime(0, 0, 0, 1, 1, 1998)
	    // *     returns 5: 883609200
	    // *     example 6: mktime(0, 0, 0, 1, 1, 98)
	    // *     returns 6: 883609200
	    
	    var no, ma = 0, mb = 0, i = 0, d = new Date(), argv = arguments, argc = argv.length;

	    if (argc > 0){
	        d.setHours(0,0,0); d.setDate(1); d.setMonth(1); d.setYear(1972);
	    }
	 
	    var dateManip = {
	        0: function(tt){ return d.setHours(tt); },
	        1: function(tt){ return d.setMinutes(tt); },
	        2: function(tt){ var set = d.setSeconds(tt); mb = d.getDate() - 1; return set; },
	        3: function(tt){ var set = d.setMonth(parseInt(tt)-1); ma = d.getFullYear() - 1972; return set; },
	        4: function(tt){ return d.setDate(tt+mb); },
	        5: function(tt){ return d.setYear(tt+ma); }
	    };
	    
	    for( i = 0; i < argc; i++ ){
	        no = parseInt(argv[i]*1);
	        if (isNaN(no)) {
	            return false;
	        } else {
	            // arg is number, let's manipulate date object
	            if(!dateManip[i](no)){
	                // failed
	                return false;
	            }
	        }
	    }

	    return Math.floor(d.getTime()/1000);
	}
	
	// jQuery ...
	$(document).ready(function(evt){
		/**
		 * gebruiker-formulier interactieve hulp
		 */
		// eerst disable de volgende submit-buttons
		$('#usercreate_submit,#profiel_submit,#userforgot_submit').attr('disabled','disabled');
		//
		// -- #usercreate_submit --
		// aanmelding kan alleen geschieden als akkoord is gegaan met de algemene voorwaarden
		$('#usercreate_submit')
		 .attr('title', 'Je dient akkoord te gaan met de algemene voorwaarden')
		 .bind('click', function(evt){
			email 		= $(this.form).find('input[name|="email"]').val();
			emailVerify = $(this.form).find('input[name|="email-verify"]').val();
			if( !isEmailAddr( email ) || !isEmailAddr( emailVerify ) ){
				alert('Vul alsjeblieft een correct e-mailadres in');
				return false;
			}else if(email != emailVerify){
				alert('De emailadressen zijn ongelijk');
				return false;
			}
			return true;
		});
		$('#akkoord').bind('click', function(evt){
			var d = new Date();
			$(this).val(mktime());
			if(!$(this).attr('checked')){
				$('#usercreate_submit')
					.attr('disabled','disabled')
					.attr('title', 'Je dient akkoord te gaan met de algemene voorwaarden');
			}else{
				setTimeout("$('#usercreate_submit').removeAttr('disabled').attr('title', 'Je account aanmaken')", 500);
			}
		});
		//
		// -- #profiel_submit --
		// -- #userforgot_submit --
		// geef het login-formulier pas na 2,5 seconden vrij voor submit
		setTimeout("$('#profiel_submit,#userforgot_submit').removeAttr('disabled')", 2500);
		
		
		/**
		 * Formulier toggle-field pwd
		 */
		$('div.toggle-visible .toggled').hide();
		$('div.toggle-visible').each(function(idx, el){
			var container = $(this);
			$(this).find('.toggler')
			  .bind('click', function(evt){
				container.find('.toggled').toggle(); // show/hide
				$(this).toggleClass('selected');
				return false;
			});
		});
	});
