/*
//	formvalidator 2.0
*/

$(document).ready(function() {
	$('input:submit').click(function(){
		var form = $(this).closest('form');
		var submit_form = true;
		var marker_main = $(form).find('.marker_main');
		
		$(marker_main).hide();

		$(form).find('.required_checkboxes input, .required_radioboxes input').each(function() {
		    if (!chckField($(this))) {
		        submit_form = false;
		    }
		});
		
		//loop door alle velden met de class verplicht
		$(form).find('.required, .validate').each(function(i) {
			//zodra de functie chckField() false teruggeeft, kan het formulier niet meer gepost worden
		if (($(this).is(":visible") || ($(this).attr("type") === "hidden") || $(this).hasClass('jqTransformHidden')) && !chckField($(this))) {
				submit_form = false;
				$(marker_main).show();
			}
		});
		return submit_form;
	});

	$('.required_checkboxes input, .required_radioboxes input').click(function(){
		chckField($(this));
	});

	$('.required, .validate').blur(function() {
		chckField($(this));
	});
	
	$('.numeric').keypress(function(e){
		var k;
		document.all ? k = e.keyCode : k = e.which	
		return ((k > 47 && k < 58) || k == 46 || k==8 || k==9 || k==0);
	});
});

function chckField(obj){
	var is_valid = true;
	var message = '';
	//marker moet bij text inputvelden op gelijke hoogte zijn
	var marker = obj.parent().find('.marker');

	if  (obj.attr('type') === 'radio' || obj.attr('type') === 'checkbox') {
		var checked = $('input[name=' + obj.attr('name') + ']:checked').val();
		if (!checked) message = 'Deze velden zijn verplicht';
		marker = obj.parent().parent().find('.marker');
	};

	if  (obj.hasClass('email')) {
		if (!isEmail( obj.val() )) {
			message = 'Vul een geldig e-mail adres in';
		} else {
			if  (obj.hasClass('email1') || obj.hasClass('email2')) {
				if ( $('.email1').val() !== $('.email2').val() ) {
					message = 'Vul een geldig e-mail adres in';
				} else {
					$('.email1').removeClass('error').addClass('correct');
					$('.email2').removeClass('error').addClass('correct');
				}
			};
		}
	};

	if  (obj.hasClass('date')) {
		if (!isDate( obj.val() )) message = 'Vul een geldige datum (dd-mm-jjjj) in';
	};

	if (is_valid) { 
		if ( !(obj.val()) || (obj.val() == obj.attr('title'))){
			obj.removeClass('correct').addClass('error');
			message = ' ';
		};
    };

    // als verborgen door jqTransform
    if (obj.hasClass('jqTransformHidden')) { obj = obj.closest('.jqTransformSelectWrapper'); }  

	if (message) { 
		obj.removeClass('correct').addClass('error');
		is_valid = false;
		if (marker.size() > 0) 	marker.text(message).show();
	} else {
		obj.removeClass('error').addClass('correct');
		if (marker.size() > 0) 	marker.hide();
	};

	return is_valid;
};

function isEmail(string) {
	var filter  = /^([a-zA-Z0-9_\.\-])+\@(([a-zA-Z0-9\-])+\.)+([a-zA-Z0-9]{2,4})+$/;
	if (filter.test(string)) 
		return true;
	else
		return false;
}

function isDate(string){
	var filter = /^\d{2}-\d{2}-\d{4}$/i;
	if (!filter.test(string)) result = false;
	var d=string.split("-")[0]
	var m=string.split("-")[1]
	var y=string.split("-")[2]
	var dayobj = new Date(y, m-1, d)
	if ((dayobj.getMonth()+1!=m)||(dayobj.getDate()!=d)||(dayobj.getFullYear()!=y))	
		return false;
	else
		return true;
}
