$(function(){
	$('.error').fadeOut(0);
		
	// reset form and hide all errors
	$("a#clear").click(function(){
		$('.error').fadeOut(0);
		$('form#contact-form').clearForm();
	});
	
	

	// show message error if after editing
	// the name field contains improper value
	$("input#FirstName").blur(function(){
		if(validateInput('FirstName')){
			if(!validateFirstName()){
				$("label#FirstName_error").fadeOut(0);
				$("label#FirstName_error2").fadeIn(250);
			}
		}else{
			$("label#FirstName_error2").fadeOut(0);
			$("label#FirstName_error").fadeIn(250);
		}
	});
	// show message error if after editing
	// the name field contains improper value
	$("input#LastName").blur(function(){
		if(validateInput('LastName')){
			if(!validateLastName()){
				$("label#LastName_error").fadeOut(0);
				$("label#LastName_error2").fadeIn(250);
			}
		}else{
			$("label#LastName_error2").fadeOut(0);
			$("label#LastName_error").fadeIn(250);
		}
	});
	
	// show message error if after editing
	// the email field contains improper value
	$("input#company").blur(function(){
		if(validateInput('company')){
			if(!validateCompany()){
				$("label#company_error").fadeOut(0);
				$("label#company_error2").fadeIn(250);
			}
		}else{
			$("label#company_error2").fadeOut(0);
			$("label#company_error").fadeIn(250);
		}
	});
	// show message error if after editing
	// the email field contains improper value
	$("input#email").blur(function(){
		if(validateInput('email')){
			if(!validateEmail()){
				$("label#email_error").fadeOut(0);
				$("label#email_error2").fadeIn(250);
			}
		}else{
			$("label#email_error2").fadeOut(0);
			$("label#email_error").fadeIn(250);
		}
	});
	// show message error if after editing
	// the phone field contains improper value
	$("input#phone").blur(function(){
		if(validateInput('phone')){
			if(!validatePhone()){
				$("label#phone_error").fadeOut(0);
				$("label#phone_error2").fadeIn(250);
			}
		}else{
			$("label#phone_error2").fadeOut(0);
			$("label#phone_error").fadeIn(250);
		}
	});
	
	// show message error if after editing
	// the message field contains improper value
//	$("textarea#message").blur(function(){
//		if(validateTextArea('message')){
//			if(!validateMessage()){
//				$("label#message_error").fadeOut(0);
//				$("label#message_error2").fadeIn(250);
//			}
//		}else{
//			$("label#message_error2").fadeOut(0);
//			$("label#message_error").fadeIn(250);
//		}
//	});
	
	$("input#FirstName").keydown(function(){
		if(validateInput('FirstName')){
			$("label#FirstName_error").fadeOut(0);
		}
		if(validateFirstName()){
			$("label#FirstName_error2").fadeOut(0);
		}
	});
	$("input#LastName").keydown(function(){
		if(validateInput('LastName')){
			$("label#LastName_error").fadeOut(0);
		}
		if(validateLastName()){
			$("label#LastName_error2").fadeOut(0);
		}
	});
	
	$("input#company").keydown(function(){
		if(validateInput('company')){
			$("label#company_error").fadeOut(0);
		}
		if(validateCompany()){
			$("label#company_error2").fadeOut(0);
		}
	});
	$("input#email").keydown(function(){
		if(validateInput('email')){
			$("label#email_error").fadeOut(0);
		}
		if(validateEmail()){
			$("label#email_error2").fadeOut(0);
		}
	});
	
	$("input#phone").keydown(function(){
		if(validateInput('phone')){
			$("label#phone_error").fadeOut(0);
		}
		if(validatePhone()){
			$("label#phone_error2").fadeOut(0);
		}
	});	
	
	$("textarea#message").keydown(function(){
//		if(validateTextArea('message')){
//			$("label#message_error").fadeOut(0);
//		}
//		if(validateMessage()){
//			$("label#message_error2").fadeOut(0);
//		}
	});
	
	var owner_email = $("input#owner_email").val();
	if(!isValidEmailAddress(owner_email)){
		$('#contact_form').html("<label class='error'>*Owner email is not valid</label>")
	}
		
	$("a#submit").click(function(){
	
		var message = $("textarea#message").val();
		if(message == ""){
		message = "-No Message-";
		}

		//working
		demonstration = $("input[name=demonstration]:checked").val();

		if ($('#ServiceBodies:checked').val() !== undefined) {
			ServiceBodies = "checked";
		} else {
			ServiceBodies = "no";
		}	

		if ($('#UtilityBodies:checked').val() !== undefined) {
			UtilityBodies = "checked";
		} else {
			UtilityBodies = "no";
		}	

		if ($('#WorkToppers:checked').val() !== undefined) {
			WorkToppers = "checked";
		} else {
			WorkToppers = "no";
		}	

		if ($('#ChipperBodies:checked').val() !== undefined) {
			ChipperBodies = "checked";
		} else {
			ChipperBodies = "no";
		}	

		if ($('#CanopyBodies:checked').val() !== undefined) {
			CanopyBodies = "checked";
		} else {
			CanopyBodies = "no";
		}	

		if ($('#parts:checked').val() !== undefined) {
			parts = "checked";
		} else {
			parts = "no";
		}	
		if ($('#other:checked').val() !== undefined) {
			other = "checked";
		} else {
			other = "no";
		}	
	
		// validate and process form
		var quit = false;
		if(validateFirstName()){
			FirstName = validateFirstName();
			$("label#FirstName_error").fadeOut(0);
			$("label#FirstName_error2").fadeOut(0);
		}else if(validateInput('FirstName')){
			$("label#FirstName_error").fadeOut(0);
			$("label#FirstName_error2").fadeIn(250);
			quit = true;
		}else{
			$("label#FirstName_error").fadeIn(250);
			$("label#FirstName_error2").fadeOut(0);
			quit = true;
		}
		if(validateLastName()){
			LastName = validateLastName();
			$("label#LastName_error").fadeOut(0);
			$("label#LastName_error2").fadeOut(0);
		}else if(validateInput('LastName')){
			$("label#LastName_error").fadeOut(0);
			$("label#LastName_error2").fadeIn(250);
			quit = true;
		}else{
			$("label#FirstLastName_error").fadeIn(250);
			$("label#FirstLastName_error2").fadeOut(0);
			quit = true;
		}
		if(validateCompany()){
			company = validateCompany();
			$("label#company_error").fadeOut(0);
			$("label#company_error2").fadeOut(0);
		}else if(validateInput('email')){
			$("label#company_error").fadeOut(0);
			$("label#company_error2").fadeIn(250);
			quit = true;
		}else{
			$("label#company_error").fadeIn(250);
			$("label#company_error2").fadeOut(0);
			quit = true;
		}
		if(validateEmail()){
			email = validateEmail();
			$("label#email_error").fadeOut(0);
			$("label#email_error2").fadeOut(0);
		}else if(validateInput('email')){
			$("label#email_error").fadeOut(0);
			$("label#email_error2").fadeIn(250);
			quit = true;
		}else{
			$("label#email_error").fadeIn(250);
			$("label#email_error2").fadeOut(0);
			quit = true;
		}
		if(validatePhone()){
			phone = validatePhone();
			$("label#phone_error").fadeOut(0);
			$("label#phone_error2").fadeOut(0);
		}else if(validateInput('phone')){
			$("label#phone_error").fadeOut(0);
			$("label#phone_error2").fadeIn(250);
			quit = true;
		}else{
			$("label#phone_error").fadeIn(250);
			$("label#phone_error2").fadeOut(0);
			quit = true;
		}
//		if(validateMessage()){
//			message = validateMessage();
//			$("label#message_error").fadeOut(0);
//			$("label#message_error2").fadeOut(0);
//		}else if(validateTextArea('message')){
//			$("label#message_error").fadeOut(0);
//			$("label#message_error2").fadeIn(250);
//			quit = true;
//		}else{
//			$("label#message_error").fadeIn(250);
//			$("label#message_error2").fadeOut(0);
//			quit = true;
//		}
		if(quit){
			return false;
		}
		
		var stripHTML = $("input#stripHTML").val();
		var smtpMailServer = $("input#smtpMailServer").val();
//xxx		
		var dataString = 'FirstName=' + FirstName + '&LastName=' + LastName + '&company=' + company + '&email=' + email + '&phone=' + phone + '&ServiceBodies=' + ServiceBodies + '&UtilityBodies=' + UtilityBodies + '&WorkToppers=' + WorkToppers + '&ChipperBodies=' + ChipperBodies + '&CanopyBodies=' + CanopyBodies + '&parts=' + parts + '&other=' + other + '&demonstration=' + demonstration + '&message=' + message + '&owner_email=' + owner_email + '&stripHTML=' + stripHTML + '&smtpMailServer=' + smtpMailServer;
//		var dataString = '&email=' + email + '&phone=' + phone + '&message=' + message + '&owner_email=' + owner_email + '&stripHTML=' + stripHTML + '&smtpMailServer=' + smtpMailServer;
		
		var serverProcessorType = $("input#serverProcessorType").val();
		if(serverProcessorType == 'asp'){
			fileExtension = 'ashx';
		}else{
			fileExtension = serverProcessorType;
		}
		var mailHandlerURL = "/bin/MailHandler." + fileExtension;
		
	
		$.ajax({
			type: "POST",
			url: mailHandlerURL,
			data: dataString,
			success: function(){
				_gaq.push(['_trackEvent', 'contact', 'submit', 'email-sent']);
				$('.error').fadeOut(0);
				$('form#contact-form').clearForm();
				$('#contact_form').html("<div>Contact form submitted!</div>").append("<br><label for='message'><strong>We will be in touch soon.</strong></label>").fadeOut(0).fadeIn(1500, function(){
					$('#contact_form').append("<br><br><a id='back' onclick='window.location.reload(); return false;' class='button-1'><strong><strong><span>back</span</strong></strong></a>");
				});
			}
		});				
		return false;
	});
});
$.fn.clearForm = function(){
	return this.each(function(){
		var type = this.type, tag = this.tagName.toLowerCase();
		if (tag == 'form'){
			return $(':input',this).clearForm();
		}
		if (type == 'text' || type == 'password' || type == 'email' || tag == 'textarea'){
			this.value = '';
		}else if (type == 'checkbox' || type == 'radio'){
			this.checked = false;
		}else if (tag == 'select'){
			this.selectedIndex = -1;
		}
	});
};
function isValidFirstName(FirstName){
	var pattern = new RegExp(/^[a-zA-Z'][a-zA-Z-' ]+[a-zA-Z']?$/);
	
	return pattern.test(FirstName);
}
function isValidLastName(LastName){
	var pattern = new RegExp(/^[a-zA-Z'][a-zA-Z-' ]+[a-zA-Z']?$/);
	
	return pattern.test(LastName);
}
function isValidCompany(company){
	return company;
}
function isValidEmailAddress(emailAddress){
	var pattern = new RegExp(/^(("[\w-\s]+")|([\w-]+(?:\.[\w-]+)*)|("[\w-\s]+")([\w-]+(?:\.[\w-]+)*))(@((?:[\w-]+\.)*\w[\w-]{0,66})\.([a-z]{2,6}(?:\.[a-z]{2})?)$)|(@\[?((25[0-5]\.|2[0-4][0-9]\.|1[0-9]{2}\.|[0-9]{1,2}\.))((25[0-5]|2[0-4][0-9]|1[0-9]{2}|[0-9]{1,2})\.){2}(25[0-5]|2[0-4][0-9]|1[0-9]{2}|[0-9]{1,2})\]?$)/i);
	
	return pattern.test(emailAddress);
}

function isValidPhoneNumber(phoneNumber){
	var pattern = new RegExp(/^\+?(\d[\d\-\+\(\) ]{5,}\d$)/);
	
	return pattern.test(phoneNumber);
}

//xxx
function validateFirstName(){
	//var name = $("input#FirstName").val();
	var FirstName = $("input#FirstName").val();
	if(isValidFirstName(FirstName)){
		return FirstName;
	}else{
		return false;
	}
}
function validateLastName(){
	//var name = $("input#FirstName").val();
	var LastName = $("input#LastName").val();
	if(isValidLastName(LastName)){
		return LastName;
	}else{
		return false;
	}
}

function validateCompany(){
	var company = $("input#company").val();
	if(isValidCompany(company)){
		return company;
	}else{
		return false;
	}
}
function validateEmail(){
	var email = $("input#email").val();
	if(!isValidEmailAddress(email)){
		return false;
	}else{
		return email;
	}
}

function validatePhone(){
	var phone = $("input#phone").val();
	if(!isValidPhoneNumber(phone)){
		return false;
	}else{
		return phone;
	}
}

function validateMessage(){
	var message = $("textarea#message").val();
	// was 19
//	if(message.length <= 0){
//		return false;
//	}else{
		return message;
//	}
}

// make sure visitor does not input a blank field
function validateInput(field){
	var fieldObject = $("input#" + field + "").val();
	if(fieldObject.length < 1){
		return false;
	}else{
		return true;
	}
}

function validateTextArea(field){
	var fieldObject = $("textarea#" + field + "").val();
	if(fieldObject.length < 1){
		return false;
	}else{
		return true;
	}
}
