﻿var formval = function() {
	var $modForm = $('#modForm');
	if ($modForm.length) {
		$('#modForm > div').find(':input:first').filter('.mandatory').each(function(i, v) {
			var $this = $(this);

			if ($this.attr('type') === 'radio') {
				$this.closest('ul').siblings('span').append('<em>*</em>');
			} else {
				$this.siblings('label').append('<em>*</em>');
			}
		});
		
		if ($modForm.find('.antalKat').length) {
			$modForm.find('.antalKat').val('1');
		}
		
		$modForm.submit(function(e) {
			e.preventDefault();
			$('#formMod .thankyou').remove();
			$('#formMod .emptyfields').remove();
			var cont = modForm_validate($modForm);
			
			if (!cont){
				$modForm.after('<p class="emptyfields">Du har glömt obligatoriska fält</p>');
				$('#formMod .emptyfields').slideDown('slow');
				return false;
			}
			
			
			var ser = $modForm.serialize();
			
			//skicka AJAX anrop till servern, svara med tacktext
			$.ajax({
				data : ser,
				type : 'POST',
				url : $modForm.attr('action'),
				success: function(xml){
					//kolla vad msg s\u00E4ger och rensa formul\u00E4ret
					$modForm[0].reset();
					$('ul.checkbox label, ul.radio label').removeClass('checked');
					
					
					if ($(xml).find('msg').text() != ''){
						// slide down tacktexten med en passande bakgrund
						$modForm.after('<p class="thankyou">'+ $(xml).find('msg').text() +'</p>');
						$('#formMod .thankyou').slideDown('slow');
						//alert($(xml).find('msg').text());
					}
					else {
						//skriv n\u00E5got default om ingen tacktext finns?
					}
					
					
				},
				error : function(){
				}
			});
			
			//e.preventDefault();
		});
	}
};

function modForm_validate($form){
	//validera p\u00E5 utsidan, n\u00E4r det anv\u00E4nds av en vanlig anv\u00E4ndare
	// valideringsfunktion: tittar om f\u00E4ltet ska valideras och g\u00F6r i s\u00E5 fall det beroende p\u00E5 typ
	var regMail = new RegExp('\\b[A-Z0-9._%+-]+@[A-Z0-9.-]+\\.[A-Z]{2,4}\\b', 'gi');
	var regAlpha = new RegExp('[^a-\u00F6 ]', 'gi');
	var regNum = new RegExp('[\\D]', 'g');
	
	var cont = true;

	$('.modForm_error').removeClass('modForm_error');
	$('.modForm_alert').remove();

	//check mandatory
	$form.find('div :input').each(function(i, v){
		if ($(v).hasClass('mandatory') && $(v).val() == ''){
			$(this).addClass('modForm_error'); //.after('<span class="modForm_alert">Obligatorisk</span>');
			cont = false;
		}
	});
	
	//validerar checkboxar och radiosar:
	$form.find('div ul.checkbox,div ul.radio').each(function(i,v){
		var $v = $(v);
		var ismandatory = $v.find('li input.mandatory:first').length;
		if ( ismandatory && $v.find('li input:checked').length == 0 ){
			$v.siblings('span').addClass('modForm_error'); //.append('<span class="modForm_alert">&nbsp;&nbsp;Obligatorisk</span>');
			//$v.find('li').addClass('modForm_error').append('<span class="modForm_alert">&nbsp;&nbsp;Obligatorisk</span>');
			//$(this).addClass('modForm_error').after('<span class="modForm_alert">Obligatorisk</span>');
			cont = false;
		}
	});

	if($form.find('.classReserveBook').length && $form.find('.classLibraryCardNr').length) {
		var $classLibraryCardNr = $form.find('.classLibraryCardNr');
		if($form.find('.classReserveBook').prop('checked')) {
			if ($.trim($classLibraryCardNr.val()) === '') {
				$classLibraryCardNr.addClass('modForm_error');
				cont = false;
			}
		}
	}

	if (cont){ //forts\u00E4tter bara med validering om allt obligatoriskt fyllts i
		//check validation
		$form.find('div :input[type="text"]').each(function(i, v){
			//console.log('input: ', v);
			var val = $(this).val();
			
			if (($(this).hasClass('validate_mail') & $(this).hasClass('mandatory')) | ($(this).hasClass('validate_mail') & val != '')){
				//validera e-mail
				if (!regMail.test(val)){
					//console.log('invalid');
					$(this).addClass('modForm_error');//.after('<span class="modForm_alert">Validering misslyckades</span>');
					cont = false;
				}
				else{
					//console.log('valid');

				}
			} else if ($(this).hasClass('validate_num')){
				//validera num
				if (regNum.test(val)){
					//console.log('invalid, inneh\u00E5ller icke-numeriska tecken');
					$(this).addClass('modForm_error');//.after('<span class="modForm_alert">Validering misslyckades</span>');
					cont = false;
				}
			} else if ($(this).hasClass('validate_alpha')){
				//validera alpha
				if (regAlpha.test(val)){
					//console.log('invalid');
					$(this).addClass('modForm_error');//.after('<span class="modForm_alert">Validering misslyckades</span>');
					cont = false;
				}
			}
			
		});
	}
	return cont;
}
