/*
 * frm_check.js
 * 
 * När denna filen körs, läggs en funktion på alla formulärs "submit"-event. Funktionen kollar
 * ifall formuläret ifråga har några element (t ex input) som ska valideras innan post. De element 
 * som ska valideras har isåfall en speciall klass (t ex "chk_any"). Dessa element skickas till en funktion
 * som gör en specifik validering.
 * 
 * Ifall någon av valideringsfunktionerna hittar fel, så sätts en klass ("sys_formError") på elementet som
 * håller felmeddelandet. Ifall submit-funktionen hittar den klassen så avbryts postningen
 * 
 * Valideringsfunktionerna sätter också ut klasser som tänder och släcker felmeddelanden.
 */


$(document).ready(function(){
	$('.submitForm').click(function(){
		$(this).parents('form').submit();
		return false;
	});
	
	$('form').submit(function(){
		$('.form_errorMsg',this).removeClass('sys_formError');
		$('.form_error',this).removeClass('form_error');
		
		$('.chk_any',this).each(function(){
			form_chk_any(this);
		});
		
		$('.chk_email',this).each(function(){
			form_chk_email(this);
		});
		
		$('.chk_minNr',this).each(function(){
			//var minNr = parseInt($(this).classData('minNr'));
			var minNr = parseInt(this.title);
			form_chk_minNr(this,minNr);
		}); 
		
		$('.chk_phoneNr',this).each(function(){
			form_chk_phoneNr(this);
		});
		
		if ($('.sys_formError',this).length > 0) {
			return false;
		}
	});
	
});


function form_chk_any(me) {
	if ($(me).val() == '') {
		$(me).addClass('form_error');
		$(me).nextAll('.error_any').eq(0).addClass('sys_formError');
    	//Send error to google analytics 
    	$("form").trigger('showErrors');
		return true;
	} else {
		return false;
	}
}

function form_chk_email(me) {
	if ($(me).val() == '') {
		return false;
	 }
	
	var emailRegExp = /^\w+([\.-]?\w+)*@\w+([\.-]?\w+)*\.(\w{2}|(com|net|org|edu|int|mil|gov|arpa|biz|aero|name|coop|info|pro|museum))$/;
	
	if (!emailRegExp.test($(me).val())) {
		$(me).addClass('form_error');
		$(me).nextAll('.error_email').eq(0).addClass('sys_formError');
    	//Send error to google analytics 
    	$("form").trigger('showErrors');
		return true;
	} else {
		return false;
	}
}

function form_chk_minNr(me,minNr) {
	//alert(me);
	var myValue = $(me).val();
	myValue = myValue.replace(' ','');
	myValue = myValue.replace('-','');
	if (myValue.length > minNr) {
		$(me).addClass('form_error');
		$(me).nextAll('.error_minNr').eq(0).addClass('sys_formError');
    	//Send error to google analytics 
    	$("form").trigger('showErrors');
		return true;
	} else {
		return false;
	}
}


function form_chk_phoneNr(me) {
	var myValue = $(me).val();
	myValue = myValue.replace(/ /g,'').replace(/-/g,'');
	if (myValue.indexOf('+') == 0) { myValue = myValue.replace('+','') }
	
	var phoneNrRegExp = /\D/;
	if(phoneNrRegExp.test(myValue) || myValue == '') {
		$(me).addClass('form_error');
		$(me).nextAll('.error_phoneNr').eq(0).addClass('sys_formError');
    	//Send error to google analytics 
    	$("form").trigger('showErrors');
		return true;
	} else {
		return false;
	}
}
