// GET THE SHOW ON THE ROAD;
$(document).ready(function() {
	
	$("#mc-app form .js_error").each(function() {
		$(this).hide();
	});
	
	$("#mc-app form input, #mc-app form select").each(function() {	
		$(this).focus(function() {
			$(this).prev().attr('style', 'color: black;');
		});
		
		$(this).blur(function() {
			$(this).prev().removeAttr('style');
		});
		
		$(this).change(function() {
			//$(this).prev().removeAttr('style');
			$(this).removeClass('tick').removeClass('cross');
			checkStringValidity($(this), $(this).attr('name'), $(this).attr('rel'));
		});
	});
	
	$("#mc-app form #salutation").focus();


	// HANDLE THE FORM SUBMISSION;
	$("#mc-app form").submit(function() {
		
		// Bit of clear-up;
		$("#mc-app form p.submit span.error_msg").remove();
		
		$("#mc-app form .js_error").each(function() {
			$(this).hide();
		});
		
		
		var errors = 0;
		errors = $('#mc-app form .cross').length;
		
		
		// Quick check field values before submission;
		if ( ($('#fname').val().length == 0) || ($('#sname').val().length == 0) || ($('#position').val().length == 0) || ($('#company').val().length == 0) || ($('#email').val().length == 0) ) {
			errors = 1;
		}
		
		if (errors != 0) {
			// Alert the user they need to compete the form properly;
			$("#mc-app form p.submit").prepend('<span class="error_msg">Please correctly complete all <br />of the required fields</span>').fadeIn('slow');
			
		} else {
			// Handle a clean submission;
			values = $(this).serialize()
			//alert(values);
			
			$.post("../wp-content/themes/standout/_includes/php/mscf_entry.php", values, function(data) {
				//alert(data);
				
				switch (data) {
					// Errors;
					case 'error_fname':
						$("#mc-app form label.error_fname").fadeIn("slow");
						break;
					case 'error_sname':
						$("#mc-app form label.error_sname").fadeIn("slow");
						break;
					case 'error_position':
						$("#mc-app form label.error_position").fadeIn("slow");
						break;
					case 'error_company':
						$("#mc-app form label.error_company").fadeIn("slow");
						break;
					case 'error_email':
						$("#mc-app form label.error_email").fadeIn("slow");
						break;
					case 'error_np':
						$("#mc-app form p.submit").prepend('<span class="error_msg">An unexpected error occured, <br />please try again later</span>').fadeIn('slow');
						break;
						
					// Success;
					case 'P':
						$("#mc-app .contact").hide();
						$("#mc-app .success").fadeIn('slow');
						break;
				}
				
			});
		}
		
		return false;
	});
});





// CHECK A GIVEN STRING IS VALID FOR IT'S TYPE;
function checkStringValidity(obj, name, toCheck) {
	if (toCheck == "appr") {
		var minlen = '0';
		var maxlen = '50';
		var canBeNull = false;
		
		var value = obj.val().toString();
		//var span = obj.prev().find('span.attr');
		
		obj.removeClass('tick').removeClass('cross');
		
		switch (name) {
			case 'fname':
				maxlen = 15;
				minlen = 3;
				break;
			
			case 'sname':
				maxlen = 20;
				minlen = 2;
				break;
			
			case 'position':
				maxlen = 50;
				minlen = 3;
				break;
			
			case 'company':
				maxlen = 50;
				minlen = 3;
				break;
			
			case 'email':
				maxlen = 50;
				minlen = 8;
				break;
			
			case 'worktel':
				maxlen = 15;
				minlen = 10;
				canBeNull = true;
				break;
				
			case 'address1':
				maxlen = 50;
				minlen = 3;
				canBeNull = true;
				break;
				
			case 'address2':
				maxlen = 50;
				minlen = 3;
				canBeNull = true;
				break;
				
			case 'postcode':
				maxlen = 8;
				minlen = 2;
				canBeNull = true;
				break;
				
			case 'mobtel':
				maxlen = 15;
				minlen = 10;
				canBeNull = true;
				break;
				
			case 'enquiry':
				maxlen = 250;
				minlen = 5;
				canBeNull = true;
				break;
		}
		
		if ( (value.length < minlen) || (value.length > maxlen) || ((name == 'email') && (validEmail(value) == false)) || ( ((name == 'worktel') && (value.length > 0)) && (isNumeric(value) == false) ) || ( ((name == 'mobtel')  && (value.length > 0)) && (isNumeric(value) == false) )) {
			obj.addClass('cross');
			
		} else {
			obj.addClass('tick');
		}
		
		if ( (canBeNull) && (value.length == 0) ) {
			obj.removeClass('cross');
		}
	}
}


// CHECK AN EMAIL ADDRESS IS VALID;
function validEmail(str) {
	var at = "@"
	var dot = "."
	var lat = str.indexOf(at)
	var lstr = str.length
	var ldot = str.indexOf(dot)
	if (str.indexOf(at) == -1) {
	   alert("Invalid E-mail ID");
	   return false;
	}

	if (str.indexOf(at) == -1 || str.indexOf(at) == 0 || str.indexOf(at) == lstr) {
	   alert("Invalid E-mail ID");
	   return false;
	}

	if (str.indexOf(dot) == -1 || str.indexOf(dot) == 0 || str.indexOf(dot) == lstr) {
		alert("Invalid E-mail ID");
		return false;
	}

	 if (str.indexOf(at,(lat+1)) != -1) {
		alert("Invalid E-mail ID");
		return false;
	 }

	 if (str.substring(lat-1,lat) == dot || str.substring(lat+1,lat+2) == dot) {
		alert("Invalid E-mail ID");
		return false;
	 }

	 if (str.indexOf(dot,(lat+2)) == -1) {
		alert("Invalid E-mail ID");
		return false;
	 }
	
	 if (str.indexOf(" ") != -1) {
		alert("Invalid E-mail ID");
		return false;
	 }

	 return true					
}


// CHECK WE HAVE A VALID NUMBER;
function isNumeric(inputVal) {
	inputVal.split(' ').join('');
	if (isNaN(parseFloat(inputVal))) {
		return false;
	}
	return true
}
