$(document).ready(function(){
	$("#globalform").validate({
		rules: {
			firstname: {
				required: true,
				letterswithbasicpunc: true
			},
			lastname: {
				required: true,
				letterswithbasicpunc: true
			},
			email: {
				required: true,
				email: true
			},
			address: "required",
			city: {
				required: true,
				letterswithbasicpunc: true
			},
			state: "required",
			zip: {
				required: true,
				digits: true,
				minlength: 5
			},
			phone: {
				required: true,
				digits: true,
				minlength: 10
			},
			topic: {
				required: "#mailing-address"
			},
			mailingaddress: "required",
			mailingcity: {
				required: true,
				letterswithbasicpunc: true
			},
			mailingzip: {
				required: true,
				digits: true,
				minlength: 5
			},
			password: {
				required: true,
				minlength: 5
			},
			create_password: {
				required: true,
				minlength: 5
			},
			confirm_password: {
				required: true,
				minlength: 5,
				equalTo: "#create_password"
			},
			dob: {
				required: true,
				date: true
			},
			lead_type: {
				required: true
			},
			ssn: {
				required: true,
				digits: true,
				rangelength: [9, 9]
			},
			fintype: {
				required: true
			},
		// Financing App
			pAddress: "required",
			pCity: {
				required: true//,
				//letterswithbasicpunc: true
			},
			pState: "required",
			pZip: {
				required: true,
				digits: true,
				minlength: 5
			},
			mth_payment: {
				required: true,
				digits: true
			},
			mort_balance: {
				required: true,
				digits: true
			},
			home_value: {
				required: true,
				digits: true
			},
			landlord: {
				required: true
			},
			landlord_phone: {
				required: true,
				digits: true,
				minlength: 10
			},
			gross_income: {
				required: true,
				digits: true
			},
			other_income: {
				required: true,
				digits: true
			},
			cEmpName: {
				required: true
			},
			cEmpOcc: {
				required: true
			},
			cEmpAddress: "required",
			cEmpCity: {
				required: true//,
				//letterswithbasicpunc: true
			},
			cEmpState: "required",
			cEmpZip: {
				required: true,
				digits: true,
				minlength: 5
			},
			cEmpPhone: {
				required: true,
				digits: true,
				minlength: 10
			},
			pEmpName: {
				required: true
			},
			ref1Zip: {
				required: true,
				digits: true,
				minlength: 5
			},
			ref1Phone: {
				required: true,
				digits: true,
				minlength: 10
			},
			ref2Zip: {
				required: true,
				digits: true,
				minlength: 5
			},
			ref2Phone: {
				required: true,
				digits: true,
				minlength: 10
			},
			spouse_income: {
				required: true,
				digits: true
			},
		// Cosigner App
			co_zip: {
				required: true,
				digits: true,
				minlength: 5
			},
			co_phone: {
				required: true,
				digits: true,
				minlength: 10
			},
			co_mZip: {
				required: true,
				digits: true,
				minlength: 5
			},
			co_dob: {
				required: true,
				date: true
			},
			co_ssn: {
				required: true,
				digits: true,
				rangelength: [9, 9]
			},
			co_pZip: {
				required: true,
				digits: true,
				minlength: 5
			},
			empZip: {
				required: true,
				digits: true,
				minlength: 5
			},
			empPhone: {
				required: true,
				digits: true,
				minlength: 10
			},
			mth_income: {
				required: true,
				digits: true
			},
			co_ref_zip: {
				required: true,
				digits: true,
				minlength: 5
			},
			co_ref_phone: {
				required: true,
				digits: true,
				minlength: 10
			}
		},
		messages: {
			firstname: {
				required: "Please enter your first name"
			},
			lastname: {
				required: "Please enter your last name"
			},
			email: "Please enter a valid email address",
			address: "Please enter your address",
			city: {
				required: "Please enter your city"
			},
			state: "Please enter your state",
			zip: {
				required: "Please provide your zip",
				minlength: "Your zip must be at least 5 characters long"
			},
			phone: {
				required: "Please provide you phone number",
				minlength: "Your phone number must be at least 10 characters long"
			},
			mailingaddress: "Please enter your address",
			mailingcity: {
				required: "Please enter your city"
			},
			mailingzip: {
				required: "Please provide your zip",
				minlength: "Your zip must be at least 5 characters long"
			},
			password: {
				required: "Please provide a password",
				minlength: "Your password must be at least 5 characters long"
			},
			create_password: {
				required: "Please provide a password",
				minlength: "Your password must be at least 5 characters long"
			},
			confirm_password: {
				required: "Please provide a password",
				minlength: "Your password must be at least 5 characters long",
				equalTo: "Please enter the same password as above"
			},
			dob: {
				required: "Please enter a valid date"
			},
			lead_type: {
				required: "Please select one"
			},
			ssn: {
				required: "Please enter your social security number",
				rangelength: "Please enter a valid number"
			},
			fintype: {
				required: "Please select one"
			},
		// Financing App
			pAddress: "Please enter an address",
			pCity: {
				required: "Please enter a city"
			},
			pState: "Please enter a state",
			pZip: {
				required: "Please provide a zip",
				minlength: "Zip must be at least 5 characters long"
			},
			mth_payment: {
				required: "Please enter payment"
			},
			mort_balance: {
				required: "Please enter balance"
			},
			home_value: {
				required: "Please enter home value"
			},
			landlord: {
				required: "Please enter a name"
			},
			landlord_phone: {
				required: "Please enter a phone number",
				minlength: "Must be at least 10 characters long"
			},
			gross_income: {
				required: "Please enter a number"
			},
			other_income: {
				required: "Please enter a number"
			},
			cEmpName: {
				required: "Please enter current employer"
			},
			cEmpOcc: {
				required: "Please enter occupation"
			},
			cEmpAddress: {
				required: "Please enter employer address"
			},
			cEmpCity: {
				required: "Please enter employer city"
			},
			cEmpState: {
				required: "Please enter employer state"
			},
			cEmpZip: {
				required: "Please enter employer zip",
				minlength: "Your zip must be at least 5 characters long"
			},
			cEmpPhone: {
				required: "Please enter employer phone"
			},
			pEmpName: {
				required: "Please enter previous employer"
			},
			ref1Zip: {
				required: "Please enter a zip",
				minlength: "Your zip must be at least 5 characters long"
			},
			ref1Phone: {
				required: "Please enter a phone"
			},
			ref2Zip: {
				required: "Please enter a zip",
				minlength: "Your zip must be at least 5 characters long"
			},
			ref2Phone: {
				required: "Please enter a phone"
			},
			spouse_income: {
				required: "Please enter an income"
			},
		// Cosigner App
			co_zip: {
				required: "Please enter a zip",
				minlength: "Your zip must be at least 5 characters long"
			},
			co_phone: {
				required: "Please enter a phone"
			},
			co_mZip: {
				required: "Please enter a zip",
				minlength: "Your zip must be at least 5 characters long"
			},
			co_dob: {
				required: "Please enter a valid date"
			},
			co_ssn: {
				required: "Please enter your social security number",
				rangelength: "Please enter a valid number"
			},
			co_pZip: {
				required: "Please enter a zip",
				minlength: "Your zip must be at least 5 characters long"
			},
			empZip: {
				required: "Please enter a zip",
				minlength: "Your zip must be at least 5 characters long"
			},
			empPhone: {
				required: "Please enter a phone"
			},
			mth_income: {
				required: "Please enter a number"
			},
			co_ref_zip: {
				required: "Please enter a zip",
				minlength: "Your zip must be at least 5 characters long"
			},
			co_ref_phone: {
				required: "Please enter a phone"
			}
		}
	});

	//code to hide mailing address fields
	var newsletter = $("#mailing-address");
	// fields are optional, hide at first
	var inital = newsletter.is(":checked");
	var topics = $("#sub-address")[inital ? "removeClass" : "addClass"]("gray");
	var topicInputs = topics.find("input").attr("disabled", !inital);
	// show when mailing address is checked
	newsletter.click(function() {
		topics[this.checked ? "removeClass" : "addClass"]("gray");
		topicInputs.attr("disabled", !this.checked);
	});

	// Yes or No Textareas
	$("input:radio").click(function(){
		if($(this).val() == 'Yes') {
			$('.moreyes-'+$(this).attr('name')).show();
			$('.moreyes-'+$(this).attr('name')+' input, .moreyes-'+$(this).attr('name')+' select').removeAttr('disabled');
			$('.moreno-'+$(this).attr('name')).hide();
			$('.moreno-'+$(this).attr('name')+' input, .moreno-'+$(this).attr('name')+' select').attr('disabled','disabled');
		} else {
			$('.moreno-'+$(this).attr('name')).show();
			$('.moreno-'+$(this).attr('name')+' input, .moreno-'+$(this).attr('name')+' select').removeAttr('disabled');
			$('.moreyes-'+$(this).attr('name')).hide();
			$('.moreyes-'+$(this).attr('name')+' input, .moreyes-'+$(this).attr('name')+' select').attr('disabled','disabled');
		}
	});

	// Program Selection Questions (enrollment app)
	$(":input").change(function(){
		if($(this).val() == 'T') {
			$('.truck-'+$(this).attr('name')).show();
			$('.truck-'+$(this).attr('name')+' input, .truck-'+$(this).attr('name')+' select').removeAttr('disabled');
		} else {
			$('.truck-'+$(this).attr('name')).hide();
			$('.truck-'+$(this).attr('name')+' input, .truck-'+$(this).attr('name')+' select').attr('disabled','disabled');
		}
	});

	// Are you currently employed? (fin app)
	$(":input").change(function(){
		if($(this).val() == 'Y') {
			$('.moreyes-'+$(this).attr('name')).show();
			$('.moreyes-'+$(this).attr('name')+' input, .moreyes-'+$(this).attr('name')+' select').removeAttr('disabled');
			$('.moreno-'+$(this).attr('name')).hide();
			$('.moreno-'+$(this).attr('name')+' input, .moreno-'+$(this).attr('name')+' select').attr('disabled','disabled');
		}
		else if($(this).val() == 'N') {
			$('.moreno-'+$(this).attr('name')).show();
			$('.moreno-'+$(this).attr('name')+' input, .moreno-'+$(this).attr('name')+' select').removeAttr('disabled');
			$('.moreyes-'+$(this).attr('name')).hide();
			$('.moreyes-'+$(this).attr('name')+' input, .moreyes-'+$(this).attr('name')+' select').attr('disabled','disabled');
		}
	});
	
	// Co-signer Current Employer Years
	$("#cEmpLenYr,#cEmpLenMth").change(function(){
		if($("#cEmpLenYr").val() == "" || $("#cEmpLenYr").val() == "0") {
            $('.moreno-IsEmployed').show();
			$('.moreno-IsEmployed input, .moreno-IsEmployed select').removeAttr('disabled');
		} else {
            $('.moreno-IsEmployed').hide();
			$('.moreno-IsEmployed input, .moreno-IsEmployed select').attr('disabled','disabled');
		}
	});

	// Marital Status
	$("input:radio").change(function(){
		if($(this).val() == 'Married') {
			$('.dwyer-'+$(this).attr('name')).show();
			$('.dwyer-'+$(this).attr('name')+' input, .dwyer-'+$(this).attr('name')+' select').removeAttr('disabled');
		} else {
			$('.dwyer-'+$(this).attr('name')).hide();
			$('.dwyer-'+$(this).attr('name')+' input, .dwyer-'+$(this).attr('name')+' select').attr('disabled','disabled');
		}
	});

	// Are you currently employed? (cosigner app)
	$(":input").change(function(){
		if($(this).val() == 'Y') {
			$('.moreyes-'+$(this).attr('name')).show();
			$('.moreyes-'+$(this).attr('name')+' input, .moreyes-'+$(this).attr('name')+' select').removeAttr('disabled');
			$('.moreno-'+$(this).attr('name')).hide();
			$('.moreno-'+$(this).attr('name')+' input, .moreno-'+$(this).attr('name')+' select').attr('disabled','disabled');
		}
		else if($(this).val() == 'N') {
			$('.moreno-'+$(this).attr('name')).show();
			$('.moreno-'+$(this).attr('name')+' input, .moreno-'+$(this).attr('name')+' select').removeAttr('disabled');
			$('.moreyes-'+$(this).attr('name')).hide();
			$('.moreyes-'+$(this).attr('name')+' input, .moreyes-'+$(this).attr('name')+' select').attr('disabled','disabled');
		}
	});

	// Co-signer Current Employer Years
	$("#year_cur_emp,#month_cur_emp").change(function(){
		if($("#year_cur_emp").val() == "" || $("#year_cur_emp").val() == "0") {
            $('.moreno-IsEmployed').show();
			$('.moreno-IsEmployed input, .moreno-IsEmployed select').removeAttr('disabled');
		} else {
            $('.moreno-IsEmployed').hide();
			$('.moreno-IsEmployed input, .moreno-IsEmployed select').attr('disabled','disabled');
		}
	});
	
	// Co-signer Time at Current Address Years
	$("#co_yr_timeAtAddress,#co_mth_timeAtAddress").change(function(){
		if($("#co_yr_timeAtAddress").val() == "" || $("#co_yr_timeAtAddress").val() == "0") {
            $('.moreyes-cole').show();
			$('.moreyes-cole input, .moreyes-cole select').removeAttr('disabled');
		} else {
            $('.moreyes-cole').hide();
			$('.moreyes-cole input, .moreyes-cole select').attr('disabled','disabled');
		}
	});

	///jQuery.validator.addMethod("letterswithbasicpunc", function(value, element) {
	///	return this.optional(element) || /^[a-z-.,()'\"\s]+$/i.test(value);
	///}, "Letters or punctuation only please");
});

// characters remaining code
$(function() {
		 var countdown = {
        init: function() {
            countdown.remaining = countdown.max - $(countdown.obj).val().length;
            if (countdown.remaining > countdown.max) {
                $(countdown.obj).val($(countdown.obj).val().substring(0,countdown.max));
            }
            $(countdown.obj).siblings(".remaining").html(countdown.remaining + " characters remaining");
        },
        max: null,
        remaining: null,
        obj: null
    };
    $(".countdown").each(function() {
        $(this).focus(function() {
            var c = $(this).attr("class");
            countdown.max = parseInt(c.match(/limit_[0-9]{1,}_/)[0].match(/[0-9]{1,}/)[0]);
            countdown.obj = this;
            iCount = setInterval(countdown.init,1000);
        }).blur(function() {
            countdown.init();
            clearInterval(iCount);
        });
    });
});
