// ----------------------------------------------
// Clientside form validation
// ----------------------------------------------

(function($) {
	$(function() {
			   
		$('.ValidateForm').validate({
			errorElement: 'div',
			errorClass: 'errorbox',
			errorPlacement: function(error, element) {
				error.insertBefore(element.siblings('label'));
			},
			rules: {
				CompanyName: {
					required: true
				},
				Profile: {
					required: true
				},
				Address1: {
					required: true
				},
				City: {
					required: true
				},
				County: {
					required: true
				},
				Postcode: {
					required: true
				},
				CompanyTelephone: {
					required: true,
					digits: true
				},
				CompanyEmail: {
					required: true,
					email: true
				},
				/*Notes: {
					required: true
				},*/
				FirstName: {
					required: true
				},
				Surname: {
					required: true
				},
				JobTitle: {
					required: true
				},
				UserEmail: {
					required: true,
					email: true
				},
				UserTelephone: {
					required: true,
					digits: true
				}
			},
			messages: {
				CompanyName: {
					required: "<div class='errorbox_sleeve'><p>Please enter your company name</p></div>"
				},
				Profile: {
					required: "<div class='errorbox_sleeve'><p>Please enter your profile</p></div>"
				},
				Address1: {
					required: "<div class='errorbox_sleeve'><p>Please enter your company address 1</p></div>"
				},
				City: {
					required: "<div class='errorbox_sleeve'><p>Please enter your company city</p></div>"
				},
				County: {
					required: "<div class='errorbox_sleeve'><p>Please select your county</p></div>"
				},
				Postcode: {
					required: "<div class='errorbox_sleeve'><p>Please enter your company postcode</p></div>"
				},
				CompanyTelephone: {
					required: "<div class='errorbox_sleeve'><p>Please enter your company telephone number</p></div>",
					digits: "<div class='errorbox_sleeve'><p>only numbers are allowed here</p></div>"
				},
				CompanyEmail: {
					required: "<div class='errorbox_sleeve'><p>Please enter your email address</p></div>",
					email: "<div class='errorbox_sleeve'><p>Your email address is not valid</p></div>"
				},
				/*Notes: {
					required: "<div class='errorbox_sleeve'><p>Please enter some text</p></div>"
				},*/
				FirstName: {
					required: "<div class='errorbox_sleeve'><p>Please enter your first name</p></div>"
				},
				Surname: {
					required: "<div class='errorbox_sleeve'><p>Please enter your surname</p></div>"
				},
				JobTitle: {
					required: "<div class='errorbox_sleeve'><p>Please enter your job title</p></div>"
				},
				UserEmail: {
					required: "<div class='errorbox_sleeve'><p>Please enter your email address</p></div>",
					email: "<div class='errorbox_sleeve'><p>Your email address is not valid</p></div>"
				},
				UserTelephone: {
					required: "<div class='errorbox_sleeve'><p>Please enter your telephone number</p></div>",
					digits: "<div class='errorbox_sleeve'><p>only numbers are allowed here</p></div>"
				}
			},
			invalidHandler: function(form, validator) {
				// no. of errors
				var errors = validator.numberOfInvalids();
				if (errors) {
					var message = errors == 1
						? 'You have incorrectly completed or missed the following:'
						: 'You have incorrectly completed or missed the following fields:';
				
					// create errorbox with heading
					var messageContainer = $('<div class="errorbox_large"><h3>There was a problem with submitting your form</h3><ul></ul></div>');
					var errorContainer = $('.errorbox_large h3');
				}
				
				// prevents multiple errorbox from being written out
				if($('.errorbox_large').length<1){
						// inject warning message with number of errors occured
						messageContainer.insertAfter('.ValidateForm fieldset:first .alert')
						var warningMessage = $('<p class="warning"></p>').insertAfter(errorContainer);
						$(warningMessage).html(message);

						// loop through each text field
						$('.ValidateForm .text').each(function(){
							if($(this).siblings().hasClass('mandatory')) {
								if (this.value == '') {
									// grab the label text
									var errorText = $(this).siblings('label').text();
									// grab the label 'for' attribute
									var errorAttr = $(this).siblings('label').attr('for');
									$('<li><label for="'+errorAttr+'">' + errorText + '</label></li>').appendTo('.errorbox_large ul');
								}
							}
						});

						// removes li element which has the Please word - spam control label
						$(".errorbox_large li:contains('Please')").remove();					
				}
				// already have errorbox - remove items when they are valid				
				$('.ValidateForm .text').blur(function(){
					if(!$(this).hasClass('errorbox')) {
						var thisID = $(this).attr('id');
						$(this).parents().find('.errorbox_large label[for='+thisID+']').parent().remove();						
					}
					// remove errorbox if there are no errors left
					if($('.errorbox_large ul li').length == 0) { $('.errorbox_large').remove(); }
					return false;
				});
			}
		});
		
	});
})(jQuery);