$(document).ready(function() {

    $("#frmMain").validate({ rules: 

        {

            Time_Financed: RuleMonthsFinanced,

			Payments_Left: RuleMonthsFinanced,

			Credit_Score: RuleFICO,

			Year_Built_ : RuleYear,

			Zip : RuleZip,
			
			Contact_Type : { required : true},
			Contact_Name_First : { required : true},
			Contact_Name_Last : { required : true},
			Phone_Number : { required : true},
			Email______ : { required : true},
			Date_of_Sale : { required : true},
			Orig_Sell_Price : { required : true},
			Down_Payment : { required : true},
			Orig_Note_Bal : { required : true},
			Time_Financed : { required : true},
			Interest_Rate : { required : true},
			Monthly_Payment : { required : true},
			Balloon_Payment : { required : true},
			First_Paymt_Date : { required : true},
			Payments_Left : { required : true},
			Next_Paymt_Due : { required : true},
			Current_Balance : { required : true},
			Owner_Occupied : { required : true},
			Underlying_Bal : { required : true},
			Credit_Score : { required : true},
			Property_Types : { required : true},
			Security_Agrmnt : { required : true},
			Title_Policy : { required : true},
			Street_Address : { required : true},
			Zip : { required : true}

        } 

    });

    $("#frmNote").validate({ rules: 

        {


			Zip : RuleZip,
			
			Contact_Name_First : { required : true},
			Contact_Name_Last : { required : true},
			Phone_Number : { required : true},
			Contact_Street_Address : { required : true},
			Contact_City : { required : true},
			Contact_State : { required : true},
			Contact_Zip : { required : true},
			Email______ : { required : true},
			Property_Description : { required : true},
			Address : { required : true},
			Zip : { required : true},
			City : { required : true},
			State : { required : true},
			County_____ : { required : true},
			
			Date_Of_Sale : { required : true},
			Sale_Price : { required : true},
			Down_Payment : { required : true},
			First_Owed : { required : true},
			Second_Owed : { required : true},
			Other_Owed : { required : true},
			Orig_Note_Bal : { required : true},
			Note_Date : { required : true},
			Term : { required : true},
			Balloon_Payment : { required : true},
			Interest_Rate : { required : true},
			Payment : { required : true},
			Payment_Frequency : { required : true},
			First_Paymt_Date : { required : true},
			Payments_Made : { required : true},
			Payments_Left : { required : true},
			Next_Paymt_Due : { required : true},
			Current_Balance : { required : true},
			Seller1_Name_First : { required : true},
			Seller1_Name_Last : { required : true},
			
			Seller_Street_Address : { required : true},
			Seller_City : { required : true},
			Seller_State : { required : true},
			Seller_Zip : { required : true},
			Seller_Number : { required : true},
			Payer1_Name_First : { required : true},
			Payer1_Name_Last : { required : true},
			Payer1_SS : { required : true},
			
			Payer_Street_Address : { required : true},
			Payer_City : { required : true},
			Payer_State : { required : true},
			Payer_Zip : { required : true},
			Payer_Home_Phone : { required : true},
			Payer_Employer : { required : true},
			Payer_Work_Phone : { required : true}

        } 

    });

	MaskPrepControls();

	SetupGeoNames();

});



/*

$.validator.setDefaults({

	submitHandler: function() {

		alert("submitted!");

	}

});

*/

	

$.metadata.setType("attr", "validate");



function MaskPrepControls() {

    //http://www.meiocodigo.com/projects/meiomask/comment-page-5/#mm_options

    //This will set up masking for all controls that have a mask and will add a date picker for those controls that have a date mask

    //If Mask has an underscore,  then the app will use MaskedInput,  otherwise,  it will use meio

    $.mask.masks = $.extend($.mask.masks,{

        pct:{ mask: '9.9999' , type:'reverse' }

    });

    $('input[meiomask]').each(function(index) {

        var mask = '';

        mask = this.attributes.getNamedItem('meiomask').value;

        if (mask.length > 0) {

            $("#" + this.id).setMask(mask); //This uses meio masked

        }

    });

    $('input[mask]').each(function(index) {

    	mask = this.attributes.getNamedItem('mask').value;

        if (mask.length > 0) {

            if ((mask == '99/99/9999') || (mask == 'date-us')) {

				$("#" + this.id).datepicker({ changeMonth: true, changeYear: true });

            } else {

				$("#" + this.id).mask(mask); //This uses maskedinput

			}

        }

    });



}



function SetupGeoNames() {

    $("#Zip").blur(function() {

        if ($(this).valid()) {

            var city = $("#City");

            var state = $("#State");

            var county = $("#County_____");



            $.getJSON("http://www.geonames.org/postalCodeLookupJSON?&country=US&callback=?", { postalcode: this.value }, function(response) {

                if (response && response.postalcodes.length && response.postalcodes[0].placeName) {

                    if (!city.val()) {

                        city.val(response.postalcodes[0].placeName);

                    }

                    if (!state.val()) {

                        state.val(response.postalcodes[0].adminCode1);

                    }

                    if (!county.val()) {

                        county.val(response.postalcodes[0].adminName2);

                    }

                }

            })

        }

    });

}
