$(document).ready(function(){
	initRequestCallback();
	validateRequestCallback();
	
	$("#rc_phone").mask("(999) 999-9999");
});

var _rc_validator;

function validateRequestCallback(){
	
	$.validator.addMethod("phoneUS", function(phone_number, element) {
    phone_number = phone_number.replace(/\s+/g, ""); 
	return this.optional(element) || phone_number.length > 9 &&
		phone_number.match(/^(1-?)?(\([2-9]\d{2}\)|[2-9]\d{2})-?[2-9]\d{2}-?\d{4}$/);
    }, "Please enter a valid phone number");

	_rc_validator = $("#dialog_request_callback").validate({
	rules: {
		rc_first_name: "required",
		rc_last_name: "required",
		rc_phone: {
			required: true,
			phoneUS: true
		},
		rc_email: {
			required: true,
			email: true
		}
	},
	messages: {
		rc_first_name: "Please enter your first name",
		rc_last_name: "Please enter your last name",
		rc_phone: {
			required: "Please enter your phone number",
			phoneUS: "Enter a valid phone number"
		},
		rc_email: {
			required: "Please enter your email address",
			email: "Enter a valid email adddress"
		}
	}
});

}

function IsRequestCallbackValid()
{
	var valid = $("#dialog_request_callback").valid();
	return valid;
}


function ResetRequestCallback() {
	$(".request_callback").removeClass('request_callback_selected');
	$("#rc_first_name").val("");
	$("#rc_last_name").val("");
	$("#rc_phone").val("");
	$("#rc_email").val("");
	
	_rc_validator.resetForm(); 
	$("#message")
		.removeClass('success')
		.removeClass('error')
		.text("If you would like to receive a call from someone at our office. Please fill out the form below and we will get back to you within 48 business hours.");
	$("#dialog_request_callback input").removeAttr('readonly');
	$('.ui-dialog-buttonpane button:contains(Send Request)').show(0);
	$('.ui-dialog-buttonpane button:contains(Cancel)').show(0);
	$('.ui-dialog-buttonpane button:contains(Close)').hide(0); 
}

function initRequestCallback() {

	$("#dialog_request_callback").dialog({
		autoOpen: false,
		close: function(event, ui) { ResetRequestCallback(); },
		width: 500,
		modal: true,
		draggable: false,
		resizable: false,
		buttons: {
			"Send Request": function() {
					   if(IsRequestCallbackValid() != true)
						{
							return false;	
						}
						$('#EmailSend').show();
						
						var firstName = $("input#rc_first_name").val();
						var lastName = $("input#rc_last_name").val();
						var email = $("input#rc_email").val();
						var phone = $("input#rc_phone").val();
						
						// Do form validation here
						
						var form_data = 'rc_first_name='+ firstName + '&rc_last_name=' + lastName + '&rc_email=' + email + '&rc_phone=' + phone;
						//alert (form_data);return false;
						
						$.ajax({
							type: "POST",
							url: "bin/process_email.asp",
							data: form_data,
							error: function () {
								$('#EmailSend').hide();
								$('#message')
									.addClass('error')
									.text("An error has occurred. Your request cannot be made at this time. Please try again at a later time.");
								$('.ui-dialog-buttonpane button:contains(Send Request)').hide(0);
							},
							success: function() {
								var timeout = setTimeout(function() {
									$('#EmailSend').hide();
									$('#message')
										.addClass('success')
										.text("Your contact request was successful. We will contact you within 48 business hours.");
									$('.ui-dialog-buttonpane button:contains(Send Request)').hide(0);
									$('.ui-dialog-buttonpane button:contains(Cancel)').hide(0);
									$('.ui-dialog-buttonpane button:contains(Close)').show(0);
								}, 800);
							}
						});
						return false;
						
			},
			"Cancel": function() { $(this).dialog("close"); },
			"Close": function() { $(this).dialog("close"); }
		}
	});
	
		$(".request_callback").click(function() {
	$(".request_callback").addClass('request_callback_selected');
			$("#dialog_request_callback").dialog("open");
			$('.ui-dialog-buttonpane button:contains(Close)').hide(0);
			return false;
	});
	
}



