// Add tabindex function
// -------------------------------------
function addTabIndex( fieldset ) {
	$('[tabindex]').attr('tabindex', '');
	var tabIndex = 1;
	$('input:text.required', '.' + fieldset).each(function() {
		$(this).attr('tabindex', tabIndex);
		tabIndex++;
	});
	$('.submit').attr('tabindex', tabIndex);
}
	
// Validation function
// ---------------------------------------
function validate( element, type ) {
	
	// Text fields
	if(type == 'text') {
		if(!element.val().length > 0) {
			element.addClass( 'error' );
		} else {
			element.removeClass( 'error' );
		}
	}
	
	// Radio buttons
	if( type == 'radio' ) {
		if( ! $(':checked', element).length > 0) {
			element.addClass( 'error' );
		} else {
			element.removeClass( 'error' );
		}
	}
}

$(document).ready(function() {

	// In-field labels
	// -------------------------------------
	$(".infield label").inFieldLabels({
		fadeOpacity: 0.4,
		fadeDuration: 300
	 });
	
	// Tooltip
	// --------------------------------------
	$('.tooltip').hide();
	$(".tt-trigger").hover(function() {
		tooltip = $("#"+$(this).attr("rel"));
		var position = $(this).position();
		var offset =  $(this).offset();
		var width = $(this).width();
		var marginRight = 10;
		var bottomSpace = $(window).height() - offset.top;
		if( bottomSpace < tooltip.height() ) {
			tooltip.addClass('bottom');
			tooltip.css({ left: position.left+width+marginRight, top: position.top-(tooltip.height()-20) }).show();
		} else {
			tooltip.css({ left: position.left+width+marginRight, top: position.top-(tooltip.height()/2) }).show();
		}
	}, function() {
		tooltip.removeClass('bottom').hide();
	});
	
	// Skademeny
	// -------------------------------------
	var form = $("form.skadeanmalan");
	selected = $(":radio:checked", form).attr("id");
	$('fieldset.' + selected, form).show();
	$('input:radio[name="Skada"]').change(function() {
		var skada = $(this).attr("id");
		$('fieldset[id!="skada"]').hide();
		$("fieldset." + skada).fadeIn();
		addTabIndex(skada);
		$('p.message').hide();
		$('.error').removeClass('error');
	});
		
	// Send 'Skadeanmälan' form
	// ------------------------------------------
	$('#skadeanmalan a.submit').click(function() {		
		var skada = $(':radio:checked', '#skada').attr('id');
		var fieldset = $('fieldset.' + skada);
		
		// Validate textfields
		$(':text.required, textarea.required', fieldset).each(function() {
			validate($(this), 'text');
		});
		
		// Validate radio buttons
		$('.required', fieldset).has(':radio').each(function() {
			validate($(this), 'radio');
		});
		
		// Send form
		if($('.error', fieldset).length > 0) {
			$("p.message", fieldset).addClass('warning').text('Fyll i alla fält markerade med rött.').show();
		} else {
			$('p.message', fieldset).hide();
			var formData = $('input:radio', 'fieldset#skada').serialize() + '&' + $( 'input, textarea, select', fieldset).serialize();
			var url = 'php/sendmail.php';
			$.post(url, formData, function(response) {
				if(response.success) {
					
					// Mail sent
					form.remove();
					$('.main').append('<p class="message">Din skadeanmälan har skickats och tagits emot.</p>');
				} else {
					
					// Fail
					$('p.message').addClass('error').text(response.message).show();
				}
			}, 'json');
		}
	});	
	
	// Send 'Teckna försäkring' form
	// -------------------------------------
	$('#teckna a.submit').click(function() {
		var form = $('#teckna');
		
		// Validate textfields
		$(':text.required, textarea.required', form).each(function() {
			validate($(this), 'text');
		});
		
		// Validate radio buttons
		$('.required', form).has(':radio').each(function() {
			validate($(this), 'radio');
		});
		
		// Send form
		if($('.error', form).length > 0) {
			$("p.message", form).addClass('warning').text('Fyll i alla fält markerade med rött.').show();
		} else {
			$('p.message').hide();
			var formData = form.serialize();
			var url = 'php/sendmail.php';
			$.post(url, formData, function(response) {
				if(response.success) {
					
					// Mail sent
					form.remove();					
					$('.main').append('<p class="message">Meddelandet skickat.</p>');
				} else {
					
					// Fail
					$('p.message', form).addClass('error').text(response.message).show();
				}
			}, 'json');
		}
	});
	
	// Send 'DN-erbjudande' form
	// --------------------------------------
	$('#dnerbjudande').submit(function() {								   
		var form = $('#dnerbjudande');
		
		// Validate textfields
		$(':text.required, textarea.required', form).each(function() {
			validate($(this), 'text');
		});
		
		// Validate radio buttons
		$('.required', form).has(':radio').each(function() {
			validate($(this), 'radio');
		});	
		
		// Send form
		if($('.error', form).length > 0) {
			$("p.message", form).addClass('warning').text('Fyll i alla fält markerade med rött.').show();
		} else {
			$('p.message').hide();
			var formData = form.serialize();
			var url = 'php/sendmail.php';
			$.post(url, formData, function(response) {
				if(response.success) {
					
					// Mail sent
					form.remove();
					$('#dn-erbjudande p.message').removeClass('warning').text('Formuläret skickat! =)').show();
				} else {
					
					// Fail
					$('p.message').addClass('error').text(response.message).show();
				}
			}, 'json');
		}
		return false;
	});

	// Send 'Ändring' form
	// -------------------------------------
	$('#andra a.submit').click(function() {
		
		var form = $('#andra');
		
		// Validate textfields
		$(':text.required, textarea.required', form).each(function() {
			validate($(this), 'text');
		});
		
		// Validate radio buttons
		$('.required', form).has(':radio').each(function() {
			validate($(this), 'radio');
		});
		
		// Send form
		if($('.error', form).length > 0) {
			$("p.message", form).addClass('warning').text('Fyll i alla fält markerade med rött.').show();
		} else {
			$('p.message').hide();
			var formData = form.serialize();
			var url = 'php/sendmail.php';
			$.post(url, formData, function(response) {
				if(response.success) {
					
					// Mail sent
					form.remove();					
					$('.main').append('<p class="message">Din anmälan har skickats.</p>');
				} else {
					
					// Fail
					$('p.message', form).addClass('error').text(response.message).show();
				}
			}, 'json');
		}
	});
	
	// Add vehicle button
	// --------------------------------------
	$('#add-vehicle').show(); // Show 'Add vehicle' button to JS-enabled users
	var counter = 2;
	var maxFields = 10;
	$("#add-vehicle").click(function() {									 
		var clone = '<p class="infield"><label for="registreringsnummer-' + counter + '" title="Bilens registreringsnummer">Bilens registreringsnummer</label><input type="text" name="registreringsnummer[]" id="registreringsnummer-' + counter + '" title="Bilens registreringsnummer" /></p>';
		if( counter < maxFields ) {
			$('.clonewrap').append(clone);
			counter++;
		} else {
			alert('Du kan lägga till max ' + maxFields + ' fordon.');
		}
		
		// Re-initiate Infield label
		$(".infield label").inFieldLabels({
			fadeOpacity: 0.4,
			fadeDuration: 300
		 });
	});
	
	// Validate textfields on blur
	// ---------------------------------------
	$(':text.required, textarea.required').blur(function() {
		validate($(this), 'text'); // Params: element, element type
	});
	
	// Validate radiobuttons on change
	// ----------------------------------------
	$('.required').has(':radio').change(function() {
		validate($(this), 'radio'); // Params: element, element type
	});
	
	// Print form
	// ----------------------------------------
	$("a.print").click(function() {
		var form =  $(this).closest('form');
		$('.infield label', form).css({ position: 'relative', opacity: 1 }).show();
	 	window.print();
	});
});
