var address_filled	= Array ( );
var maxRequests = 1;
var activeRequest 			= false;

function sendform(func, extraData){
	if(activeRequest){
		return false;
	}
	
	if(typeof(currentRefType) == 'undefined' ){
		currentRefType = null;
	}
	
	var eqvraagSucces = true;
	
	//the form
	var frm		= $( page + 'frm' );
	
	//when the form not exists use the function name, us this with multiple forms on a page
	if(!frm){
		if($(func+'frm')){
			var frm = func+'frm';
		}
	}

	if(extraData){
		var extraData = $(frm).down('#berichtContent'+currentRefType).innerHTML;
	}
	
	//create hash
	var fields	= new Hash();

	var m;

	var fieldArraysChecked	= Array();
	var value_array	= Array();
	
	//all required fields
	var old_required = validator_.required_fields;
	
	if($('telefoonnetnummer') != null){
		var requiredSpecial = new Hash({'telefoonnetnummer':'mobielnetnummer', 'telefoonabonummer':'mobielabonummer'});
	
		requiredSpecial.each(function(h){
			if($F(h.key)){
				old_required = old_required.without(h.value);
			}else if($F(h.value)){
				old_required = old_required.without(h.key);
			}
		});
	}
	
	if($('publish0') != null){
		if($('publish0').checked == true){
			old_required = old_required.without('geldracer');
		}
	}
	
	var no_error_remove		= Array (
		'bedrag',
		'bedrageuro',
		'bedrageurocent'
	);

	//all form elements
	for( var i = 0; i < $(frm).length; i++ ){
		//the element
		e = $(frm)[i];

		//checkboxes
		m = (e.name).match( /^([0-9]+)_(.*?\[\])$/ );
		
		if(($(e).readAttribute('type') == 'radio' || $(e).readAttribute('type') == 'hidden') && $(e).checked){
			fields.set ( $(e).readAttribute('name'), $(e).readAttribute('value') );
			continue;
		}else if($(e).readAttribute('type') == 'radio' && !$(e).checked){
			continue;
		}

		if(m){
		//replace [] with ' '
			var fieldname	= ( m [ 2 ] ).replace ( '\[\]', '' );
						
			if(!fieldArraysChecked[m[1]]){
				
				if(validator_.required_fields.include(m[0])){
					
					var value_array	= validator_.checkFieldArray ( document.getElementsByName( e.name ), m [ 1 ] );
					validator_.required_fields.push	( fieldname );
				}
				fields.set ( fieldname, value_array );
				fields.set ( 'minimum_' + fieldname, m [ 1 ] ),
				
				fieldArraysChecked [ m [ 1 ] ] = 1;
			}
		}else {
			fields.set ( e.id, e.value );
			//return all fields to normal before checking them again
			
			if($('geslacht') != null){
				if($RF(frm.readAttribute('id'), 'geslacht')){
					validator_.remove_field_error('geslacht');		
				}
			}
			
			if(!e.id.blank()){
				validator_.remove_field_error(e.id);	
			}
			
			if(!e.id.empty()){
				validator_.remove_field_error(e.id);	
			}
		}
	}
	
	validator_.wrong_fields = [];
	
	if(func=="profiel"){
		var req_url = page + ".php?step=1";
	}else{
		var req_url = page + ".php";
	}
	
	//start request
	activeRequest = true;
	
	ajax_request (
		req_url,
		{
			func:		func,
			required:	old_required.toJSON ( ),
			fields:		fields.toJSON ( ),
			extraData: 	extraData,
			extraId:	currentRefType
		},
		function ( transport, json ) {
			
			if(json.success !== true ){
				if ( json.fields ) {
					for ( key in json [ 'fields' ] ){
						validator_.do_field_error ( key , json [ 'fields' ] [ key ] );
					}
					throw_form_error ( );
					
					//go back to the first page
					if(func == "profiel"){
						$( 'stap2' ).style.display = "none";
						$( 'stap1' ).style.display = "block";
					}
					
					activeRequest = false;
					return false;
				}					
			}else if(eqvraagSucces === false){
				return false;
			} else {
				if(func == "aanmelden"){
					frm.reset();
				}
				//reload page
				if(func == "profiel"){
					setTimeout("location.reload(true);",2500);
				}
				activeRequest = false;
			}
				
			throwOverlay ( json [ 'title' ], json [ 'feedback' ] );
			
			if(json['newPass'] == true){
				document.location = '/login/uitloggen';
			}
		}
	);
}

var isSavingProfiel = false;

// save het rp
function save_profiel(){
	if(isSavingProfiel) return;
	
	isSavingProfiel = true;
	
	var result = handle_eqvragen();
	
}


//
function handle_eqvragen(){
	
	var formEles = $('form_enquete').getElements();
	
	var prevName = null;
	
	var myCheck = false;
	var arrErrors = new Array();
	
	for(i=0; i< formEles.length ;i++){
		
		
		var name = formEles[i].readAttribute('name');
		if(name != null){
			if(name.match(/^(vraag[0-9]+)$/)){
				$('enquetevraag'+name.replace(/^vraag([0-9]+)$/,'$1')).down('div.vraagtitel').down('div.middle').removeAttribute('style');
				$('enquetevraag'+name.replace(/^vraag([0-9]+)$/,'$1')).down('div.vraagnr').down('div.middle').removeAttribute('style');
				
				
				if(prevName != null && (name !== prevName && myCheck !== true)){
				
					arrErrors.push(prevName.replace(/^vraag([0-9]+)$/,'$1'));
					
				}else if(prevName != null && (name !== prevName && myCheck === true)){
					myCheck = false;
					prevName = null;
				}
				
				if(formEles[i].checked ){
					myCheck = true;
				}
				prevName = name;
			}
		}
	}
	
	$('form_enquete').getInputs('hidden','verplicht[]').each(function(ele){
		
		var verplichteWaarde = $FR($('form_enquete'),$F(ele));
		
		if(verplichteWaarde  === false || verplichteWaarde == ''){
			arrErrors.push($F(ele).replace(/^vraag([0-9]+).+$/,'$1'));
		}	
				
	});
	
	
	if(myCheck !== true){
		arrErrors.push(prevName.replace(/^vraag([0-9]+)$/,'$1'));
	}
	
	if(arrErrors.length > 0){
		
		for(i=0;i<arrErrors.length;i++){
			
			$('enquetevraag'+arrErrors[i]).down('div.vraagtitel').down('div.middle').writeAttribute('style','color: #cc0033;');
			$('enquetevraag'+arrErrors[i]).down('div.vraagnr').down('div.middle').writeAttribute('style','color: #cc0033;');
		}
		
		isSavingProfiel = false;
		
		alert("U heeft niet alle vragen correct ingevult");
		return false;
	}
	

	
	var myAjax = new Ajax.Request(
			'/ajax_login/' + page + ".php?step=2",
			{
				method: 'post',
				parameters: $('form_enquete').serialize(),
				onSuccess: function(transport) {
					setTimeout(function(){
						sendform('profiel',false); 
					},500);
				},
				onFailure: function(){
					isSavingProfiel = false;
					alert("Er is een fout opgetreden, probeer het nogmaals.");	
				}
			});

	return true;

}





function getAddress ( e ) {
	var postcode1	= $F( 'postcode1' );
	var postcode2	= $F( 'postcode2' );
	var huisnummer	= $F( 'huisnummer' );
	
	if ( assocSize ( address_filled ) > 0 ) {
		var same_postcode1	= postcode1 == address_filled [ 'postcode1' ];
		var same_postcode2	= postcode2 == address_filled [ 'postcode2' ];
		var same_huisnummer	= huisnummer == address_filled [ 'huisnummer' ];
		
		if ( same_postcode1 && same_postcode2 && same_huisnummer )
			return true;
	}
	
	if ( $( 'land' ) ) {
		with ( $( 'land' ) ) {
			value		= '';
			disabled	= false;
			style.background = '';
		}
	}
	
	with ( $( 'straat' ) ) {
		value		= '';
		disabled	= false;
		style.background = '';
	}
	with ( $( 'woonplaats' ) ) {
		value		= '';
		disabled	= false;
		style.background = '';
	}
	
	if ( postcode1.match ( /^[1-9]{1}[0-9]{3}$/ ) && postcode2.match ( /^[a-zA-Z]{2}$/ ) && huisnummer != "" ) {
		if ( $( 'land' ) ) {
			with ( $( 'land' ) ) {
				value		= 'NL';
				disabled	= true;
				
				if(navigator.userAgent.toUpperCase().indexOf("MSIE")!== -1){
					style.background = '#ebebe4';
				}
			}
		}
		
		ajax_request (
			"shared.php",
			
			{
				func:		"getAddress",
				postcode1:	postcode1,
				postcode2:	postcode2,
				huisnummer:	huisnummer
			},
			
			function ( transport, json ) {
				if ( json [ 'straat' ] ) {
					with ( $( 'straat' ) ) {
						value		= json [ 'straat' ];
						disabled	= true;
						
						if(navigator.userAgent.toUpperCase().indexOf("MSIE")!== -1){
							style.background = '#ebebe4';
						}
					}
				}
				if ( json [ 'woonplaats' ] ) {
					with ( $( 'woonplaats' ) ) {
						value		= json [ 'woonplaats' ];
						disabled	= true;
						
						if(navigator.userAgent.toUpperCase().indexOf("MSIE")!== -1){
							style.background = '#ebebe4';
						}
					}
				}
				
				address_filled [ 'postcode1' ]	= postcode1;
				address_filled [ 'postcode2' ]	= postcode2;
				address_filled [ 'huisnummer' ]	= huisnummer;
			}
		);
	}
}

function getNewpassword ( e ) {
	var e	= $( e );
	
	validator_.remove_field_error ( e.id );
	
	if ( e.value == '' )
		validator_.do_field_error ( e.id, 'Het e-mail adres is niet correct ingevuld.' );
	
	if ( assocSize ( validator_.wrong_fields ) <= 0 ) {
		validator_.wrong_fields	= [];
		
		ajax_request (
			"shared.php",
			
			{
				func:		"reset_password",
				email:		e.value
			},
			
			function ( transport, json ) {
				if ( json [ 'success' ] === true ) {
					toggle_overlay ( 'lostpassword' );
					throwOverlay ( json [ 'title' ], json [ 'feedback' ] );
				}
				else {
					alert ( 'Je wachtwoord kon niet worden gereset, controleer je e-mail adres.' );
				}
			}
		);
	}
}

function logOut ( ) {
	return confirm ( 'Weet je zeker dat je wilt uitloggen?' );
}

function toBedrag ( amount ) {
	amount	= ( amount.toString ( ) ).split ( '.' );
	
	while ( ( amount [ 1 ].length ) < 2 )
		amount [ 1 ] += '0';
	
	return amount.join ( ',' );
}

function ismaxlength ( obj, dest ) {
	if(obj.id == 'bericht' || obj.id == 'bericht2' || obj.id == 'bericht3'){
		var mlength = '400';
	} else {
		var mlength = '200';
	}
	
	var len		= obj.value.length;
	
	if (obj.getAttribute && obj.value.length>mlength) {
		obj.value = obj.value.substring(0,mlength);
	}
	
	if(obj.id == 'bericht' || obj.id == 'bericht2' || obj.id == 'bericht3') {
		var len		= (400-obj.value.length);
	}
	
	$( dest ).innerHTML	= len;
}

function throw_form_error(){
	var arr	= validator_.wrong_fields;

	if ( assocSize ( arr ) > 0 ) {
		var error_message	= "Het formulier is nog niet correct ingevuld:\n\n";
	}
	else {
		alert ( 'De roodgekleurde velden zijn nog niet correct ingevuld.' );
		
		return false;
	}		
	
	var hide_keys		= Array (
		'telefoonabonummer'//,
		//'bedrageuro',
		//'bedrageurocent'
	);
	
	for ( id in arr ) {
		if ( isString ( arr [ id ] ) && arr [ id ] != '' && !in_array ( id, hide_keys ) )
			error_message += " * " + arr [ id ] + "\n";
	}
	
	//unescape html!
	alert ( error_message.unescapeHTML() );
}

function clear_form ( frm ) {
	frm.reset ( );
}



function $FR(formElement,eleName) {
	
	var rtnWaarde = '';
	
	formElement.getElements().each(function(formChild){
						
		if(formChild.readAttribute("name") == eleName){
		
			if(formChild.tagName.toLowerCase() == 'input'){
			
				switch(formChild.readAttribute("type").toLowerCase()){
					
					case 'hidden':
					case 'password':
					case 'text':
						rtnWaarde =  formChild.getValue();
					break;
					case 'radio':
						rtnWaarde = formElement.getInputs('radio', eleName).find(function(radio) { 
							if(radio.checked)return radio.getValue(); });
					break;	
				}
			
			}else if(formChild.tagName.toLowerCase() == 'select'){
				
				rtnWaarde =  formChild.getValue();
			}
			
		}
	});

	
	if(rtnWaarde == undefined) rtnWaarde = false;
	
	return rtnWaarde;
	
}

function $RF(el, radioGroup) {
    if($(el).type && $(el).type.toLowerCase() == 'radio') {
        var radioGroup = $(el).name;
        var el = $(el).form;
    } else if ($(el).tagName.toLowerCase() != 'form') {
        return false;
    }

    var checked = $(el).getInputs('radio', radioGroup).find(
        function(re) {return re.checked;}
    );
    return (checked) ? $F(checked) : null;
}


function checkSamplePuzzle(){
	var answer = $F('samplePuzzle');
	
	if(answer == 0){
		return false;
	}
	
	if(answer != 3){
		alert('Je hebt het antwoord fout!');
	}
	else{
		alert('Je hebt het antwoord goed!');
	}

}