var rekeningNummer	= new Array;
var elements		= new Array (
	'voorletter',
	'geslacht',
	'tussenvoegsel',
	'achternaam',
	'straat',
	'huisnummer',
	'postcode',
	'plaats',
	'telefoon',
	'mobiel',
	'geboortedatum',
	'email'
);
var fontColor		= '333333';
var matches;
var errors;


function vulInInf(field,value) {
	if (document.getElementsByName(field) && document.getElementsByName(field)[0]) {
		if (document.getElementsByName(field)[0].type == 'radio' || document.getElementsByName(field)[0].type == 'checkbox') {
			for (var z = 0; z < document.getElementsByName(field).length; z++) {
				if (document.getElementsByName(field)[z].value == value) document.getElementsByName(field)[z].checked = true;
			}
		} else {
			document.getElementsByName(field)[0].value = value;
		}
	}
}

function checkVoorletter(elementName) {
	if (document.getElementsByName('voorletter')[0].value.length < 1) errors['voorletter'] = 1;
	var obj = document.getElementsByName('geslacht');
	if (!obj[0].checked && !obj[1].checked) errors['geslacht'] = 1;
}


function checkText(elementName) {

}

function checkTussenvoegsel(elementName) {

}

function checkNorm_text(elementName) {

}
function checkHidden(elementName) {

}

function checkDataLength(elementName) {
	if (document.getElementsByName(elementName)[0].value.length < 1) errors[elementName] = 1;
}

function checkAchternaam(elementName) {
	var reg = new RegExp("((.)\\2{2})","g"); // match 3 zelfde karakters achter elkaar
	
	// test op lengte en op gebruikte karakters. 
	var reg2 = new RegExp("^([a-z\x20\xC0-\xFF\x27\x2F\x5C\x2D]{2,90})$","i");
	
	// krijg element
	var an = document.getElementsByName(elementName)[0];
	
	if(!an.value.match(reg2)) errors[elementName] = 1;
	if(an.value.match(reg))	errors[elementName] = 1;
		
}


function checkHuisnummer(elementName) {
	if (document.getElementsByName('huisnummer')[0].value.length < 1) errors['huisnummer'] = 1;
	else {
		var tempValue = document.getElementsByName('huisnummer')[0].value;
		if (!tempValue.match(/^(\s*)([0-9]+)(\s*)$/)) {
			errors['huisnummer'] = 1;
		}
	}
}

function checkBelg() {
	if (document.getElementsByName('postcode1')[0].value.length == 4 && document.getElementsByName('postcode2')[0].value.length < 1) {
		var agree=confirm('Deze actie is alleen geldig in Nederland. Bent u geintresseerd in de belgische enquete?');
		if (!agree) return false;
		location.href='http://www.first-impressions.nl/be';
		//errors['postcode'] = 1;
		return false;
	}
	return true;
}


function checkMobiel(elementName){
	
	var repPat1 = new RegExp('^(00|\\x2B)(31|32)');
	var repPat2 = new RegExp('[^\\d\\x2B]','g');

	var repTelPat1 = new RegExp('^((06)|((047[1-9])|(048[4-8])|(049[4-9])))((012)|(12)|(2))?345((6)|(67)|(678))?$');
	var repTelPat2 = new RegExp('^((06)|((047[1-9])|(048[4-8])|(049[4-9])))((345)|(45)|(5))?678((9)|(90))?$');
	var repTelPat3 = new RegExp('^((06)|((047[1-9])|(048[4-8])|(049[4-9])))((098)|(98)|(8))?765((4)|(43)|(432))?$');
	var repTelPat4 = new RegExp('^((06)|((047[1-9])|(048[4-8])|(049[4-9])))((87)|(7))?65432((1)|(10))?$');
				
	var matchPatNL1 = new RegExp('^(06(\\d)(?!\\2{5,7}\\d{0,2}$)\\d{7})$','g');
	var matchPatBE1 = new RegExp('^(((047[0-9])|(048[4-8])|(049[1-9]))(\\d)(?!\\6{5}$)\\d{5})$','g');
	
        /* Belgische providers.	
         * 0470-0479 Proximus
         * 0484-0489 BASE
         * 0491-0499 Mobistar
         * 0461 GSM-R (NMBS)
         */
	
	belg = ( document.getElementsByName ( 'postcode1' )[0].value.length == 4 && document.getElementsByName ( 'postcode2' )[0].value.length < 1 );
	
	var ele = document.getElementsByName('mobiel')[0];
		
	if(ele){	
		if(ele.value.length <= 1)return;	
		
		ele.value = ele.value.replace(repPat1,'0');
		ele.value = ele.value.replace(repPat2,'');
		
		if(ele.value.match(repTelPat1)||ele.value.match(repTelPat2)||ele.value.match(repTelPat3)||ele.value.match(repTelPat4) ){
			errors['mobiel'] = 1;				
		}
		
		if(belg){
			if(!ele.value.match(matchPatBE1)) errors['mobiel'] = 1;
		}else{
			if(!ele.value.match(matchPatNL1)) errors['mobiel'] = 1;
		}
	}	
	
	var nr = document.getElementsByName('telabbo')[0].value
	+ document.getElementsByName('tel')[0].value;

	if (nr == "") { 
		delete errors['telefoon'];
		document.getElementsByName('telabbo')[0].value = ele.value.substr(0,2);
		document.getElementsByName('tel')[0].value = ele.value.substr(2);
	}
}


function checkEmail(elementName) {
	var tempValue = document.getElementsByName(elementName)[0].value;
	tempValue = tempValue.replace(/ /g,"");
	
	if (!tempValue.match(/^[_\.0-9a-zA-Z-]+@([0-9a-zA-Z][0-9a-zA-Z-]+\.)+[a-zA-Z]{2,6}$/)) {
		errors[elementName] = 1;
	}
}

function checkGetalwhite(elementName) {
	var tempValue = document.getElementsByName(elementName)[0].value;
	if (!tempValue.match(/^([0-9,\._\-+ ]*)$/)) {
		errors[elementName] = 1;
	}
}

function checkGeboortedatum(elementName) {
	if (document.getElementsByName('dag')[0].value.length < 1 || document.getElementsByName('maand')[0].value.length < 1 || document.getElementsByName('jaar')[0].value.length < 4) errors['geboortedatum'] = 1;
}

function checkPostcode(elementName) {
	if (document.getElementsByName('postcode1')[0].value < 1000 || document.getElementsByName('postcode1')[0].value > 9999) errors['postcode'] = 1;
	else if (document.getElementsByName('postcode2')[0].value.length >= 1) {
		var tempValue = document.getElementsByName('postcode2')[0].value;
		if (!tempValue.match(/^([a-zA-Z]{2})$/)) {
			errors['postcode'] = 1;
		}
	}
}

function checkTelefoon(elementName){
	
	var repPat1 = new RegExp('^(00|\\x2B)(31|32)');
	var repPat2 = new RegExp('[^\\d\\x2B]','g');
	
	var repTelPat1 = new RegExp('^((012)|(12)|(2))?345((6)|(67)|(678))?$');
	var repTelPat2 = new RegExp('^((345)|(45)|(5))?678((9)|(90))?$');
	var repTelPat3 = new RegExp('^((098)|(98)|(8))?765((4)|(43)|(432))?$');
	var repTelPat4 = new RegExp('^((87)|(7))?65432((1)|(10))?$');
				
	var matchPatNL1 = new RegExp('^(0[1-9][0-9]{0,2} (\\d)(?!\\2{5,7}$)\\d{5,7})$','g');
	var matchPatBE1 = new RegExp('^(0[1-9][0-9]{0,2} (\\d)(?!\\2{4,6}$)\\d{4,6})$','g');

	var abbo = document.getElementsByName ( 'telabbo' ) [0];
	var tel = document.getElementsByName ( 'tel' ) [0];
	
	tel.value = tel.value.replace(repPat2,'');
	abbo.value = abbo.value.replace(repPat2,'');
	mobiel = document.getElementsByName('mobiel')[0];
	
	belg = ( document.getElementsByName ( 'postcode1' )[0].value.length == 4 && document.getElementsByName ( 'postcode2' )[0].value.length < 1 );
	
	
	if(tel.value.match(repTelPat1)||tel.value.match(repTelPat2)||tel.value.match(repTelPat3)||tel.value.match(repTelPat4)){
		if (!errors['mobiel']) {
			errors['telefoon'] = 1;
		}
	}				
	
	if((abbo && tel) || mobiel.value){
		
		var nr =  abbo.value.replace(repPat2,'') + ' ' + tel.value.replace(repPat2,'');
						
		nr = nr.replace(repPat1,'0');

                if ( nr.substring ( 0, 2 ) == '06' && mobiel.value == '' ) {
                    mobiel.value = nr;
                    abbo.value= '';
                    tel.value='';
                }

		if(belg){
			if(((abbo.value.length > 4 || abbo.value.length < 2) || nr.length != 10) && !errors['mobiel']){ 
				errors['postcode'] = 1;
				errors['telefoon'] = 1;
			}
			if((!nr.match(matchPatBE1) && !errors['mobiel'])){
				errors['postcode'] = 1;
				errors['telefoon'] = 1;
			}
		}else{
			if(((abbo.value.length > 4 || abbo.value.length < 2) || nr.length != 11) && !errors['mobiel']) errors['telefoon'] = 1;
			if((!nr.match(matchPatNL1)) && !errors['mobiel']) errors['telefoon'] = 1;
		}
	}
	
	
}


/*
function checkTelefoon ( elementName ) {
	// Create array with country prefixes
	var cp	= new Array ( 'nl', 'be' );
		cp ['nl'] = 31;
		cp ['be'] = 32;
	// Create array with length of phonenumber
	var cl	= new Array ( 'nl', 'be' );
		cl ['nl'] = 8;
		cl ['be'] = '5,7';
	// Create array for valid SECOND numbers in zonenumber
	var vs	= new Array ( 'nl', 'be' );
		vs ['nl'] = 8;
		vs ['be'] = 9;
	
	var nr		= document.getElementsByName ( 'telabbo' ) [0].value + document.getElementsByName ( 'tel' ) [0].value;
	var belg	= ( document.getElementsByName ( 'postcode1' )[0].value.length == 4 && document.getElementsByName ( 'postcode2' )[0].value.length < 1 );
	
	var land	= ( belg ? 'be' : 'nl' );
	
	nr			= nr.replace ( /\(.*?0.*?\)/g, '' );
	nr			= nr.replace ( /[^+0-9]/g, '' );
	
	var patt	= '^(0|(00|\\+)' + cp [ land ] + ')[1-' + vs [ land ] + ']{1}[0-9]{' + cl [ land ] + '}$';	
	var valid	= nr.match ( patt );
	
	/*
	var tempValue = document.getElementsByName('telabbo')[0].value+document.getElementsByName('tel')[0].value+' ';
	tempValue = tempValue.replace(/[^0-9]/g,'');
	if (tempValue.length < 9 || tempValue.length > 13) errors['telefoon'] = 1;
	*/
	/*
	if ( !valid ) errors['telefoon'] = 1;
}*/

function checkGetal(elementName) {
	var obj = document.getElementsByName(elementName)[0];
	var tempValue = obj.value;
	if (!tempValue.match(/^\s*([0-9,\.]*)\s*$/)) errors[elementName] = 1;
}


function checkRekening_nummer(elementName) {
	var obj			= document.getElementsByName ( elementName ) [ 0 ];
	var tempValue	= obj.value;
	var belg		= ( document.getElementsByName ( 'postcode1' )[ 0 ].value.length == 4 && document.getElementsByName ( 'postcode2' )[ 0 ].value.length < 1 );
	
	if ( tempValue.length < 1 )
		return true;
	
	if ( belg ) {
		checkRekening_nummer_BE ( elementName );
		return true;
	}
	else {
		var lengte = tempValue.length;
		
		if (lengte == 9 ) {
			var berekening = 0;
			while (lengte > 0) {
				berekening += lengte*tempValue.substr((9-lengte),1);
				lengte--;
			}
			if (berekening % 11 != 0) errors[elementName] = 1;
		} else if (lengte < 7 || lengte > 9) {
			errors[elementName] = 1;
		}
	}
	
	return true;
}

function validateRekeningnummerNL ( e ) {
	var len	= ( e.value ).length;
	var fin	= true;
	
	if ( len == 9 ) {
		var calc	= 0;
		
		while ( len > 0 ) {
			calc += len * ( e.value ).substr ( ( 9 - len ), 1 );
			len--;
		}
		
		if ( calc % 11 != 0 )
			fin = false;
	}
	else if ( len < 7 || len > 9 ) {
		fin = false;
	}
	
	if ( !fin ) {
		e.value	= '';
		
		alert ( 'Het opgegeven rekeningnummer is geen geldig Nederlands rekeningnummer' );
		
		return false;
	}
	
	return true;
}

function checkRekening_nummer_BE ( elementName ) {
	var obj			= document.getElementsByName ( elementName ) [ 0 ];
	var tempValue	= obj.value;
	tempValue		= tempValue.replace ( /[^+0-9]/g, "" );
	
	var checkNr		= tempValue.substr ( 10 );
	tempValue		= tempValue.substring ( 0, 10 );
	
	if ( tempValue.length < 1 )
		return true;
	
	var calc		= tempValue - 97 * Math.floor ( tempValue / 97 );
	
	if ( calc != checkNr ) {
		errors [ elementName ] = 1;
		return false;
	}
	
	return true;
}

function checkBullets(elementName) {
	var checked;
	for (var i = document.getElementsByName(elementName).length; i >= 0; i--) {
		if (document.getElementsByName(elementName)[i]) if (document.getElementsByName(elementName)[i].checked) checked = 1;
	}
	if (!checked) errors[elementName] = 1;
}

function checkCheckbox(elementName) {

}
function checkRegular_exp(elementName,regExp) {
	var tempValue = document.getElementsByName(elementName)[0];
	var regexp = new RegExp(regExp);
	if (!tempValue.match(regexp)) errors[elementName] = 1;
}
function checkKeuzemenu(elementName) {

}

function initSubmit() {
	errors = new Array;

}

function finishSubmit() {
	var stop = 0;
	for (var i = elements.length; i >= 0; i--) {
		if (elements[i]) {
			if (document.getElementById('field_'+elements[i])) {
				if (errors[elements[i]]) {
					stop = 1;
					document.getElementById('field_'+elements[i]).style.color ='#FF3333';
				} else document.getElementById('field_'+elements[i]).style.color = '#'+fontColor;
			}
		}
	}
	if (stop == 1) {
		//enable submit button (only on errors!)
		$('submitForm').enable();
		
		alert('U heeft de met rood gemarkeerde velden niet (correct) ingevuld.');
		return false;
	}
}

function popup(url,page,extra) {
	if (extra) window.open(url,page,extra);
	else window.open(url,page);
	return false;
}
function submitScript() {
	//disable submit button on submit
	$('submitForm').disable();
	
	initSubmit();
	
	checkPostcode('postcode1');
	//if (!checkBelg()) return false;
	checkHuisnummer('huisnummer');
	checkNorm_text('bla');
	checkVoorletter('voorletter,geslacht');
	checkTussenvoegsel('tussenvoegsel');
	checkAchternaam('achternaam');
	
	checkDataLength('straat');
	checkText('straat');
	checkDataLength('plaats');
	checkText('plaats');
	checkTelefoon('telabbo,tel');
	checkMobiel('mobiel');
	checkGeboortedatum('dag,maand,jaar');
	checkDataLength('email');
	
	checkEmail('email');
	checkNorm_text('text');

	return finishSubmit();
}
function elfProef( $rekObj ) {
   $rekening = $rekObj.value;
   if (!$rekening) return true;
   $lengte = $rekening.length;
   if( $lengte == 9 ) {
      $berekening = 0;
      while( $lengte > 0 ) {
         $berekening += $lengte*$rekening.substr( (9-$lengte), 1 );
         $lengte--;
      }
      if( ( $berekening % 11 ) != 0 ){
   		$rekObj.value = "";
   		alert( "Vult u alstublieft een correct rekeningnummer in." );
      }
   } else if( ( $lengte < 7 ) || ( $lengte > 9 ) ) {
		$rekObj.value = "";
		alert( "Vult u alstublieft een correct rekeningnummer in." );
   }
}

function showFullFront() {
	$("container").hide();
	$("pagecurls").hide();
	$("navbuttons").hide();
}

function hideFullFront() {
	$("container").show();
	$("pagecurls").show();
	$("navbuttons").show();
	Effect.Fade('fullFront', { duration: 0.3 });
}
