function checkEmail(value) {
	return value.match(/^[a-z0-9\-_-]+([\.%!][_a-z0-9-]+)*@[a-z0-9-]+(\.[a-z0-9-]+)*$/);
}


function checkPostCode(value) {
	return value.match(/^[0-9]{4} *[a-zA-Z]{2}$/);
}


//////////////////////////////////////////
///////// Account login form /////////////
//////////////////////////////////////////
function validateLoginForm(form) {
	reset_msg('email-error');
	reset_msg('password-error');
	error = false;
	if (!form.userName.value || !checkEmail(form.userName.value)) {
		show_msg('email-error', 'Dit is een ongelding emailadres');
		error = true;
	}
	if (!form.password.value || form.password.value.length < 8) {
		show_msg('password-error', 'Uw wachtwoord moet minimaal 8 tekens bevatten en');
		error = true;
	}

	if (!error) {
		//form.action = '/account/register/step/2/';
		form.submit();
	}
}

///////////////////////////////////////////
/////// Registration Validation ///////////
///////////////////////////////////////////
function validateStep1Form(form) {
	reset_msg('mail-error');
	reset_msg('password-error');
	reset_msg('password2-error');
	error = false;

	if (!form.email.value || !checkEmail(form.email.value)) {
		show_msg('mail-error', 'Dit is een ongelding emailadres');
		error = true;
	}

	if (!form.password.value || form.password.value.length < 8) {
		show_msg('password-error', 'Uw wachtwoord moet minimaal 8 tekens bevatten');
		error = true;
	}

	if (!(form.password.value.match(/^\w+$/) && form.password.value.match(/\d/) && form.password.value.match(/\D/))) {
		show_msg('password-error', 'Uw wachtwoord moet een combinatie zijn van cijfers en letters');
		error = true;
	}
	/*
	\d any number; same as [0-9]
	\D any NOT number; same as [^0-9]
	\w any alphanumeric character; same as [a-zA-Z-0-9_]
	\W any NON-alphanumeric character; same as [^a-zA-Z0-9_]
	\s any whitespace (tab, space, newline, etc...)
	\S any NON-whitespace
	\n newline
	\t tab
	*/

	if (form.password.value != form.password2.value) {
		show_msg('password2-error', 'Wachtwoorden komen niet overeen');
		error = true;
	}

	webshop.showWaitBox();  
	var requestUrl = webshop.buildRequestUrl('checkEmail');
	webshop.callback = function(response){if(response) {error= true;show_msg('mail-error', response);}};
	jQuery.ajaxSetup({async: false}); 
	jQuery.getJSON(requestUrl, {email:form.email.value}, webshop.checkError);
	jQuery.ajaxSetup({async: true});
	
	return !error;
}

function validateStep2Form(form) {
	reset_msg('first-name-error');
	reset_msg('last-name-error');
	//reset_msg('street-error');
	//reset_msg('house-number-error');
	//reset_msg('postcode-error');
	//reset_msg('city-error');
	//reset_msg('country-error');
	error = false;
	if (!form.first_name.value) {
		show_msg('first-name-error', 'Verplicht');
		error = true;
	}
	if (!form.last_name.value) {
		show_msg('last-name-error', 'Verplicht');
		error = true;
	}
	/*if (!form.street.value) {
		show_msg('street-error', 'Verplicht');
		error = true;
	}
	if (!form.house_number.value) {
		show_msg('house-number-error', 'Verplicht');
		error = true;
	}
	if (!form.postcode.value) {
		show_msg('postcode-error', 'Verplicht');
		error = true;
	}
	if (!form.city.value) {
		show_msg('city-error', 'Verplicht');
		error = true;
	}
	if (!form.country.value) {
		show_msg('country-error', 'Verplicht');
		error = true;
	}*/


	return !error;
}

function validateStep3Form(form,kvk) {
	reset_msg('street-error');
	//reset_msg('house-number-error');
	reset_msg('postcode-error');
	reset_msg('city-error');
	//reset_msg('country-error');
	reset_msg('kvk-error');
	error = false;
	if (!form.street.value) {
		show_msg('street-error', 'Verplicht');
		error = true;
	}
	/*
	if (!form.number.value) {
		show_msg('house-number-error', 'Verplicht');
		error = true;
	}
	*/
	if (!checkPostCode(form.postcode.value)) {
		show_msg('postcode-error', 'Verplicht');
		error = true;
	}
	if (!form.city.value) {
		show_msg('city-error', 'Verplicht');
		error = true;
	}
	if (kvk && !form.kvk_number.value) {
		show_msg('kvk-error', 'Verplicht');
		error = true;
	}
	/*
	if (!form.country.value) {
		show_msg('country-error', 'Verplicht');
		error = true;
	}
	*/

	return !error;
}

function validateStep4Form(form) {
	reset_msg('account-number-error');
	reset_msg('account-holder-error');
	reset_msg('confirm-bank-error');

	error = false;
	if(form.invoice[0].checked)
	{
		if(!form.payment_method[2].checked) {
			if (!form.bank_account_number.value) {
				show_msg('account-number-error', 'Verplicht');
				error = true;
			}
			if (!form.bank_account_holder.value) {
				show_msg('account-holder-error', 'Verplicht');
				error = true;
			}
			if (!form.bank_account_city.value) {
				show_msg('account-city-error', 'Verplicht');
				error = true;
			}
			//if recurrent payment
			if(form.payment_method[1].checked) {
				if (!form.confirm_bank_data.checked) {
					show_msg('confirm-bank-error', 'Verplicht');
					error = true;
				}
			}
		}
	}

	return !error;
}

function validateStep5Form(form) {

	return true;
}

function showSubBlock(obj) {
	//if (obj.value == '1') document.getElementById('invoice-options-block').style.display = 'block';
	//if (obj.value == '0') document.getElementById('invoice-options-block').style.display = 'none';
	if (obj.value == '1') document.getElementById('on_account_no_message').style.display = 'none';
	if (obj.value == '0') document.getElementById('on_account_no_message').style.display = 'block';	
}

function updatePercent(value) {
	if (value == '8') {
		 document.getElementById('discount-info').style.display = 'inline';
	}
	else {
		 document.getElementById('discount-info').style.display = 'none';
	}

}

function updateDays(value) {
	if (value == '3') {
		jQuery('#betalingstermijn_block').addClass('darkgreytxt');
	}
	else {
		jQuery('#betalingstermijn_block').removeClass('darkgreytxt');
	}

}


function updateInvoiceBlock(num) {
	switch(num) {
		case "1":
				$('repeated-payment').style.display='none';
				$('right-block').style.display='inline';
				$('info1').style.display='inline';
				$('info2').style.display='none';
				$('info3').style.display='none';
			break;
		case "2":
				$('repeated-payment').style.display='inline';
				$('right-block').style.display='inline';
				$('info1').style.display='none';
				$('info2').style.display='inline';
				$('info3').style.display='none';
			break;
		case "3":
				$('repeated-payment').style.display='none';
				$('right-block').style.display='none';
				$('info1').style.display='none';
				$('info2').style.display='none';
				$('info3').style.display='inline';				
			break;

	}
}

/*
function returnToStep(num) {
   var url = '/registreren/step/' + num + '/';
   window.location = url;
}
*/

///////////////////////////////////////////
///// New Address account Validation //////
///////////////////////////////////////////
function validateAddressAccountForm(form) {
	reset_msg('street-error');
	//reset_msg('house-number-error');
	reset_msg('postcode-error');
	reset_msg('city-error');
	//reset_msg('country-error');
	error = false;
	if (!form.street.value) {
		show_msg('street-error', 'Verplicht');
		error = true;
	}
	/*
	if (!form.number.value) {
		show_msg('house-number-error', 'Verplicht');
		error = true;
	}
	*/
	if (!checkPostCode(form.postcode.value)) {
		show_msg('postcode-error', 'Verplicht');
		error = true;
	}
	if (!form.city.value) {
		show_msg('city-error', 'Verplicht');
		error = true;
	}
	/*
	if (!form.country.value) {
		show_msg('country-error', 'Verplicht');
		error = true;
	}
	*/
	if (!error) {
		form.action = '/account/addressupdate/';
		form.submit();
		tb_remove();
	}
}


function validateProjectAccountForm(form) {
	reset_msg('project-error');

	error = false;
	if (!form.project_name.value) {
		show_msg('project-error', 'Verplicht');
		error = true;
	}

	if (!error) {
		form.action = '/account/projectupdate/';
		form.submit();
		tb_remove();
	}
}



function show_msg(id, text){
  var msg = document.getElementById(id);
  msg.innerHTML = text;
  msg.style.visibility = 'visible';
}

function reset_msg(id){
  var msg = document.getElementById(id);
  msg.innerHTML = '';
  msg.style.visibility = 'hidden';
}

/////////////////////////////////////
///////// Order Validation //////////
/////////////////////////////////////

/*
function returnOrderToStep(num) {
	if(num=='0')
		var url = '/order/';
	else
		var url = '/order/step/' + num + '/';
	window.location = url;
}
*/

function validateOrderStep1Form(form) {
	reset_msg('first-name-error');
	reset_msg('last-name-error');
	reset_msg('street-error');
	//reset_msg('house-number-error');
	reset_msg('postcode-error');
	reset_msg('city-error');
	//reset_msg('country-error');
	reset_msg('mail-error');

	reset_msg('dstreet-error');
	//reset_msg('dhouse-number-error');
	reset_msg('dpostcode-error');
	reset_msg('dcity-error');
	error = false;
	if (!form.first_name.value) {
		show_msg('first-name-error', 'Verplicht');
		error = true;
	}
	if (!form.last_name.value) {
		show_msg('last-name-error', 'Verplicht');
		error = true;
	}
	if (!form.street.value) {
		show_msg('street-error', 'Verplicht');
		error = true;
	}
	/*
	if (!form.house_number.value) {
		show_msg('house-number-error', 'Verplicht');
		error = true;
	}
	*/
	if (!checkPostCode(form.postcode.value)) {
		show_msg('postcode-error', 'Verplicht');
		error = true;
	}
	if (!form.city.value) {
		show_msg('city-error', 'Verplicht');
		error = true;
	}
	/*
	if (!form.country.value) {
		show_msg('country-error', 'Verplicht');
		error = true;
	}
	*/
	if (!form.email.value || !checkEmail(form.email.value)) {
		show_msg('mail-error', 'Dit is een ongelding emailadres');
		error = true;
	}

	if(form.delivery[1].checked) {
		if (!form.dstreet.value) {
			show_msg('dstreet-error', 'Verplicht');
			error = true;
		}
		/*
		if (!form.dhouse_number.value) {
			show_msg('dhouse-number-error', 'Verplicht');
			error = true;
		}
		*/
		if (!checkPostCode(form.dpostcode.value)) {
			show_msg('dpostcode-error', 'Verplicht');
			error = true;
		}
		if (!form.dcity.value) {
			show_msg('dcity-error', 'Verplicht');
			error = true;
		}
	}

	return !error;
}

function updateOrderStep1Form(form) {
	//update delivery part - enable or disable
	form.recipient.disabled = form.delivery[0].checked;
	form.dstreet.disabled = form.delivery[0].checked;
	//form.dhouse_number.disabled = form.delivery[0].checked;
	//form.dhouse_number_add.disabled = form.delivery[0].checked;
	form.dpostcode.disabled = form.delivery[0].checked;
	form.dcity.disabled = form.delivery[0].checked;
	form.dphone.disabled = form.delivery[0].checked;
	form.dinfo.disabled = form.delivery[0].checked;
	//form.notify_email.disabled = form.delivery[0].checked;
	//form.notify_sms.disabled = form.delivery[0].checked;
	//form.notify_post.disabled = form.delivery[0].checked;
}

function validateOrderStep2Form(form) {
	reset_msg('payment-error');
	error=true;

	len=form.payment_method.length;
	//check if delivery method is selected
	if(len == undefined) {
		if(form.payment_method.checked)
			error=false;
	} else {
		for(i=0;i<len;i++) {
			if(form.payment_method[i].checked)
				error=false;
		}
	}

	if (error) {
		show_msg('payment-error', 'Kies betaalmethode');
	}
	
	return !error;	
}

function validateOrderStep3Form(form) {
	error=false;
 	reset_msg('agreement-error');
 	

	if(!jQuery('#agreement').attr('checked')) {
		show_msg('agreement-error', 'Geef akkoord');
		error = true;
	}

	return !error;
}


//enable/disable date of delivery
function updateOrderStep3Form(form) {
	form.shoppickup.disabled = form.retreive[0].checked;
	form.delivery_day.disabled = form.delivery_date[0].checked;
	form.delivery_month.disabled = form.delivery_date[0].checked;
	form.delivery_year.disabled = form.delivery_date[0].checked;
}

//update order delivery name from thickbox
function updateOrderStep3Name(form) {
	//update delivery name
	var newname=$('newname').value+' '+$('newmiddle').value+' '+$('newsurname').value;
	$('delivery_name_div').innerHTML=newname;
	$('delivery_name').value=newname;
	tb_remove();
}

//update hidden form and viewable address on rowclick in thickbox
function setOrderStep3Address(num) {
	type=$('tmp_method').value;
	$(type+'_i_company').innerHTML=$('addr_company_'+num).innerHTML;
	$(type+'_i_street').innerHTML=$('addr_street_'+num).innerHTML;
	//$(type+'_i_number').innerHTML=$('addr_number_'+num).innerHTML;
	//$(type+'_i_number_add').innerHTML=$('addr_number_add_'+num).innerHTML;
	$(type+'_i_postcode').innerHTML=$('addr_postcode_'+num).innerHTML;
	$(type+'_i_city').innerHTML=$('addr_city_'+num).innerHTML;

	$(type+'_company').value=$('addr_company_'+num).innerHTML;
	$(type+'_street').value=$('addr_street_'+num).innerHTML;
	//$(type+'_number').value=$('addr_number_'+num).innerHTML;
	//$(type+'_number_add').value=$('addr_number_add_'+num).innerHTML;
	$(type+'_postcode').value=$('addr_postcode_'+num).innerHTML;
	$(type+'_phone').value=$('addr_phone_'+num).innerHTML;
	$(type+'_city').value=$('addr_city_'+num).innerHTML;
	$(type+'_id').value=$('addr_id_'+num).innerHTML;
	
	if($('addr_opm_'+num))
		$('adriverinfo').value = $('addr_opm_'+num).alt;
	$('driverinfo').value = $('adriverinfo').value;
	tb_remove();
}

//put data from hidden form to editable form in thickbox
function updateOrderStep3AddressForm() {
	type=$('tmp_method').value;

	$('company').value=$(type+'_company').value;
	$('street').value=$(type+'_street').value;
	//$('house_number').value=$(type+'_number').value;
	//$('house_number_add').value=$(type+'_number_add').value;
	$('postcode').value=$(type+'_postcode').value;
	$('phone').value=$(type+'_phone').value;
	$('city').value=$(type+'_city').value;
	$('address_id').value=$(type+'_id').value;
	
	$('name').value = $('delivery_name').value;
	$('adriverinfo').value = $('driverinfo').value;
}

//put data from editable form in thickbox to hidden form and viewable address
function updateOrderStep3Address() {
	type=$('tmp_method').value;

	reset_msg('street-error');
	//reset_msg('number-error');
	reset_msg('city-error');
	reset_msg('postcode-error');
	error = false;

	if (!$('street').value) {
		show_msg('street-error', 'Verplicht');
		error = true;
	}
	/*
	if (!$('house_number').value) {
		show_msg('number-error', 'Verplicht');
		error = true;
	}
	*/
	if (!$('city').value) {
		show_msg('city-error', 'Verplicht');
		error = true;
	}
	if (!checkPostCode($('postcode').value)) {
		show_msg('postcode-error', 'Verplicht');
		error = true;
	}
	if(error) return false;

	$(type+'_company').value=$('company').value;
	$(type+'_street').value=$('street').value;
	//$(type+'_number').value=$('house_number').value;
	//$(type+'_number_add').value=$('house_number_add').value;
	$(type+'_postcode').value=$('postcode').value;
	$(type+'_phone').value=$('phone').value;
	$(type+'_city').value=$('city').value;
	$(type+'_id').value=$('address_id').value;


	$(type+'_i_company').innerHTML=$('company').value;
	$(type+'_i_street').innerHTML=$('street').value;
	//$(type+'_i_number').innerHTML=$('house_number').value;
	//$(type+'_i_number_add').innerHTML=$('house_number_add').value;
	$(type+'_i_postcode').innerHTML=$('postcode').value;
	$(type+'_i_city').innerHTML=$('city').value;

	$('delivery_name').value = $('name').value;
	$('driverinfo').value = $('adriverinfo').value;

	tb_remove();
}



function validateOrderStep4Form(form) {
	reset_msg('account-number-error');
	reset_msg('account-holder-error');
	reset_msg('confirm-bank-error');

	error = false;
	if (!form.account_number.value) {
		show_msg('account-number-error', 'Verplicht');
		error = true;
	}
	if (!form.account_name.value) {
		show_msg('account-holder-error', 'Verplicht');
		error = true;
	}
	if (!form.account_city.value) {
		show_msg('account-city-error', 'Verplicht');
		error = true;
	}
	//if recurrent payment
	if (!form.agreement2.checked) {
		show_msg('confirm-bank-error', 'Verplicht');
		error = true;
	}


	return !error;
}



/////////////////////////////////////
//////// Account Validation /////////
/////////////////////////////////////


function validatePaymentMethodAccountForm(form) {
	reset_msg('payment-error');
	error=true;

	len=form.payment_method.length;
	//check if delivery method is selected
	if(len == undefined) {
		if(form.payment_method.checked)
			error=false;
	} else {
		for(i=0;i<len;i++) {
			if(form.payment_method[i].checked)
				error=false;
		}
	}

	if (!error) {
		form.action = '/account/paymentupdate/';
		form.submit();
	} else {
		show_msg('payment-error', 'Kies betaalmethode');
	}
}

function validateCustomerAccountForm(form) {
	reset_msg('mail-error');
	reset_msg('first-name-error');
	reset_msg('last-name-error');
	error = false;
	if (!form.email.value || !checkEmail(form.email.value)) {
		show_msg('mail-error', 'Dit is een ongelding emailadres');
		error = true;
	}
	if (!form.first_name.value) {
		show_msg('first-name-error', 'Verplicht');
		error = true;
	}
	if (!form.last_name.value) {
		show_msg('last-name-error', 'Verplicht');
		error = true;
	}

	if (error)
		return false;
	else
		return true;
}

function validateSetPasswordForm(form) {
	reset_msg('password-error');
	reset_msg('password2-error');
	error = false;

	if (!form.password.value || form.password.value.length < 8) {
		show_msg('password-error', 'Uw wachtwoord moet minimaal 8 tekens bevatten en');
		error = true;
	}
	if (!(form.password.value.match(/^\w+$/) && form.password.value.match(/\d/) && form.password.value.match(/\D/))) {
		show_msg('password-error', 'Uw wachtwoord moet combinatie zijn van cijfers en letters');
	}
	if (form.password.value != form.password2.value) {
		show_msg('password2-error', 'Wachtwoorden komen niet overeen');
		error = true;
	}

	if (!error) {
		form.action = '/account/savepassword/';
		form.submit();
	}
}

function validateResetPasswordForm(form) {
	reset_msg('mail-error');
	error = false;
	if (!form.email.value || !checkEmail(form.email.value)) {
		show_msg('mail-error', 'Dit is een ongelding emailadres');
		error = true;
	}

	if (!error) {
		form.action = '/account/wachtwoordvergeten/';
		form.submit();
	}
}

/////////////////////////////////////
////////// Werk Validation //////////
/////////////////////////////////////

function validateWerkForm(form) {
	reset_msg('achternaam-error');
	reset_msg('voornaam-error');
	reset_msg('adres-error');
	reset_msg('postcode-error');
	reset_msg('woonplaats-error');
	reset_msg('telefoonnummer-error');
	reset_msg('geboortedatum-error');
	reset_msg('werken-error');
	reset_msg('email-error');
	error = false;
	
	if (!form.email.value || !checkEmail(form.email.value)) {
		show_msg('email-error', 'Dit is een ongelding emailadres');
		error = true;
	}
	if (!form.achternaam.value) {
		show_msg('achternaam-error', 'Verplicht');
		error = true;
	}
	if (!form.voornaam.value) {
		show_msg('voornaam-error', 'Verplicht');
		error = true;
	}
	if (!form.adres.value) {
		show_msg('adres-error', 'Verplicht');
		error = true;
	}
	if (!checkPostCode(form.postcode.value)) {
		show_msg('postcode-error', 'Verplicht');
		error = true;
	}
	if (!form.woonplaats.value) {
		show_msg('woonplaats-error', 'Verplicht');
		error = true;
	}
	if (!form.telefoonnummer.value) {
		show_msg('telefoonnummer-error', 'Verplicht');
		error = true;
	}
	if (!form.werken.value) {
		show_msg('werken-error', 'Verplicht');
		error = true;
	}
	if (!form.number_day.value || !form.number_month.value || !form.number_year.value) {
		show_msg('geboortedatum-error', 'Verplicht');
		error = true;
	}

	if (error)
		return false;
	else
		return true;
}

function validateInschrijfWerkForm(form) {
	reset_msg('achternaam-error');
	reset_msg('voornaam-error');
	reset_msg('adres-error');
	reset_msg('postcode-error');
	reset_msg('woonplaats-error');
	reset_msg('telefoonnummer-error');
	reset_msg('periode-van-error');
	reset_msg('periode-tot-error');
	reset_msg('werken-error');
	reset_msg('email-error');
	error = false;
	
	if (!form.email.value || !checkEmail(form.email.value)) {
		show_msg('email-error', 'Dit is een ongelding emailadres');
		error = true;
	}
	if (!form.achternaam.value) {
		show_msg('achternaam-error', 'Verplicht');
		error = true;
	}
	if (!form.voornaam.value) {
		show_msg('voornaam-error', 'Verplicht');
		error = true;
	}
	if (!form.adres.value) {
		show_msg('adres-error', 'Verplicht');
		error = true;
	}
	if (!checkPostCode(form.postcode.value)) {
		show_msg('postcode-error', 'Verplicht');
		error = true;
	}
	if (!form.woonplaats.value) {
		show_msg('woonplaats-error', 'Verplicht');
		error = true;
	}
	if (!form.telefoonnummer.value) {
		show_msg('telefoonnummer-error', 'Verplicht');
		error = true;
	}
	if (!form.werken.value) {
		show_msg('werken-error', 'Verplicht');
		error = true;
	}
	if (!form.van_day.value || !form.van_month.value || !form.van_year.value) {
		show_msg('periode-van-error', 'Verplicht');
		error = true;
	}
	if (!form.tot_day.value || !form.tot_month.value || !form.tot_year.value) {
		show_msg('periode-tot-error', 'Verplicht');
		error = true;
	}

	if (error)
		return false;
	else
		return true;
}


/////////////////////////////////////
////////// Forum Validation /////////
/////////////////////////////////////

function validateForumPostForm(form) {
	reset_msg('post_body-error');
	error = false;
	
	if (!form.post_body.value) {
		show_msg('post_body-error', 'Verplicht');
		error = true;
	}

	if (error)
		return false;
	else
		return true;	
}

function validateForumTopicForm(form) {
	reset_msg('post_body-error');
	reset_msg('post_title-error');	
	error = false;
	
	if (!form.post_body.value) {
		show_msg('post_body-error', 'Verplicht');
		error = true;
	}
	if (!form.post_title.value) {
		show_msg('post_title-error', 'Verplicht');
		error = true;
	}

	if (error)
		return false;
	else
		return true;	
}

function validateComplainForm(form) {
	reset_msg('name-error');
	reset_msg('email-error');	
	reset_msg('complain_text-error');	
	error = false;
	
	if (!form.name.value) {
		show_msg('name-error', 'Verplicht');
		error = true;
	}
	if (!form.email.value || !checkEmail(form.email.value)) {
		show_msg('email-error', 'Dit is een ongelding emailadres');
		error = true;
	}

	if (!form.complain_text.value) {
		show_msg('complain_text-error', 'Verplicht');
		error = true;
	}

	return !error;
}
