// Subscription pop-up functions
// http://www.levit.com/
// By Greg Hartwig (greg at hartwig dot com) 2008-01



$(document).ready(function() {

	// Set up the SUBSCRIBE button
	$("#sub-button").click(function() {
		if (typeof(sub) == "undefined")   // Create the dialog, if needed
			sub = $("#subscribe").dialog({autoOpen: false, width: 512, height: 390, position: [250, 170], resizable: true, title: "Subscribe to our FREE Levitt Letter Newsletter"});
		
		$("#subscribe").show().dialog("open");
		return false;
	}).css({ backgroundColor: '#fdd'});  // Highlight the SUBSCRIBE button
	
	
		
	// Initialize pop-up
	$("label.overlabel").labelOver("overlabel-apply");

	$("#sub-dialog").tabs();
	

	
	$("#clear_print_form_button").click(clear_print_form);
	
	
	// Submit handlers
	// Based on http://remysharp.com/2007/03/05/jquery-ajaxed-forms/
	
	// Print mail subcription form
	$("#sub-email-form").submit(function() {
		if (validate_email_form(this))
			return false;
		
		// Collect form input fields
		var inputs = new Object;
		$(':input', this).each(function() {
			if (this.name != "") {  // Ignore inputs without a name
				if ((this.type == "radio" || this.type == "checkbox") && !this.checked) {
						// ignore this item
				} else {
					inputs[this.name] = this.value;
				}
			}
		});
		
		// Send the request
		jQuery.ajax({
			data: inputs,
			url:  this.getAttribute('action'),
			type: this.getAttribute('method'),
			timeout: 2000,
			async: false,
			error: function() {
				show_message("sub-email-msg", true, "Error:  Try again later.");
			},
			success: function(reply) {
				if (reply.toLowerCase().indexOf("error") >= 0) { // error
					show_message("sub-email-msg", true, "Error sending request.  Contact webmaster@levitt.com");
				} else {
					show_message("sub-email-msg", false, "Request sent. Check your email and follow directions to confirm your request.");
				}
			}
		});
		
		return false;  // Stay on the page
	});



	// Print mail subcription form
	$("#sub-print-form").submit(function() {
		if (validate_print_form(this))
			return false;

		// Collect form input fields
		var inputs = new Object;
		$(':input', this).each(function() {
			if (this.name != "") {  // Ignore inputs without a name
				if ((this.type == "radio" || this.type == "checkbox") && !this.checked) {
						// ignore this item
				} else {
					inputs[this.name] = this.value;
				}
			}
		});
		
		// Send the request
		jQuery.ajax({
			data: inputs,
			url:  this.getAttribute('action'),
			type: this.getAttribute('method'),
			timeout: 2000,
			async: false,
			error: function() {
				show_message("sub-print-msg", true, "Error:  Try again later.");
			},
			success: function(reply) {
				var msg = "Request sent";
				msg += (reply=="2") ? "!!" : "." ;  // spammer caught?
				show_message("sub-print-msg", false, msg);
			}
		});
		
		return false;  // Stay on the page
	});
		
		
});  // ready()



// Utility functions


function show_message(field, error, text) {
	if (error)
		$("#"+field).removeClass('ok').addClass('error').html(text);
	else
		$("#"+field).removeClass('error').addClass('ok').html(text);
}


function clear_errors(form) {
	$(':input', form).each(function() {
		$(this).removeClass("errorfield");
	});
}


function add_text(text, moretext) {
	if (text != '') text += '; ';
	return text + moretext;
}




// Form validators


function validate_email_form(form) {
	var errortext = '';
	
	clear_errors(form);
	
	if ($.trim($(form.from_address).val()) == "") {
		errortext = add_text(errortext, 'e-mail is blank');
		$("#from_address").addClass("errorfield");
	}
	else {
		if ($(form.from_address).val().indexOf('@') < 0) {
			errortext = add_text(errortext, 'e-mail must contain "@"');
			$("#from_address").addClass("errorfield");
		}

		if ($(form.from_address).val().indexOf('.') < 0) {
			errortext = add_text(errortext, 'e-mail must contain "."');
			$("#from_address").addClass("errorfield");
		}
	}
	
	if (errortext != '')
		show_message("sub-email-msg", true, errortext);
	
	return (errortext != "");
}




function validate_print_form(form) {
	var errortext = '';
	
	clear_errors(form);
	
	if ($(form.title).val() == "" ) {
		errortext = add_text(errortext, 'Select a title');
		$("#title").addClass("errorfield");
	}
	
	if ($.trim($(form.first_name).val()) == '') {
		errortext = add_text(errortext, 'First name is blank');
		$("#first_name").addClass("errorfield");
	}

	if ($(form.title).val() != "F " &&  $(form.last_name).val() == '') {
		errortext = add_text(errortext, 'Last name is blank');
		$("#last_name").addClass("errorfield");
	}
	
	
	street = $.trim($(form.address).val());
	if (street == '') {
		errortext = add_text(errortext, 'Street is blank');
		$("#address").addClass("errorfield");
	}
	
	if (street.split(' ').length == 1) {
		errortext = add_text(errortext, 'Street is only one word');
		$("#address").addClass("errorfield");
	}


	if ($.trim($(form.city).val()) == '') {
		errortext = add_text(errortext, 'City is blank');
		$("#city").addClass("errorfield");
	}

	if ($(form.state).val() == '') {  // No trim here!
		errortext = add_text(errortext, 'Select a state');
		$("#state").addClass("errorfield");
	}



	if ($.trim($(form.phone_number).val()) != "") {
		// Check for characters other than: 0-9, -, +, space
		if (/[^0-9\-\+ ]/.test($(form.phone_number).val()) ) {
			errortext = add_text(errortext, 'phone number contains invalid characters');
			$("#phone_number").addClass("errorfield");
		}
	}


	if ($.trim($(form.email_address).val()) != "") {
		if ($(form.email_address).val().indexOf('@') < 0) {
			errortext = add_text(errortext, 'e-mail must contain "@"');
			$("#email_address").addClass("errorfield");
		}

		if ($(form.email_address).val().indexOf('.') < 0) {
			errortext = add_text(errortext, 'e-mail must contain "."');
			$("#email_address").addClass("errorfield");
		}
	}




	if (errortext != '')
		show_message("sub-print-msg", true, errortext);
	
	return (errortext != "");
}




function clear_print_form() {

	$.each( ["title", "first_name", "middle_name", "last_name", "address", "address2", "city", "state", "zip_code", "phone_number", "email_address"], function(){
		$("#"+this).val("").trigger("blur");
	});

	$("#country").val("USA").trigger("blur");
	
	
	show_message("sub-print-msg", true,  "");
	show_message("sub-print-msg", false, "");
	
	clear_errors($("#sub-print-form"));
	
	return false;
}
