function HoverImage(filename) {
        var re = new RegExp("(.+)\\.(gif|png|jpg)", "g");
        return filename.replace(re, "$1_hover.$2");
}
function NormalImage(filename) {
    var re = new RegExp("(.+)_hover\\.(gif|png|jpg)", "g");
    return filename.replace(re, "$1.$2");
}
    			
$(function() {
    jQuery.validator.addMethod("ziprange", function(value, element) {
        if (this.optional(element)) return this.optional(element);
        else { 
            var countryCode = jQuery('select[name="cds_country"]').val();
            switch(countryCode) {
                case 'United States':
                    return /^([0-9]{5})(?:[-\s]*([0-9]{4}))?$/.test(value);
                    break;
                case 'Canada':
                    return /^([A-Za-z][0-9][A-Za-z])\s*([0-9][A-Za-z][0-9])$/.test(value);
                    break;
                default:
                    return /^(?:[A-Za-z0-9]+([- ]?[A-Za-z0-9]+)*)?$/.test(value);
                    break;
            };
        };
    }, "");

    $.validator.setDefaults({
       messages: {
            firstName: "Please enter your first name.",
            lastName: "Please enter your last name.",
            cds_address1: "Please enter your address.",
            cds_city: "Please enter a city.",
            cds_state: 'Please select a state.',
            cds_country: "Please choose your country.",

            cds_zip: {
                required: 'Please enter a valid zip or postal code.',
                ziprange: 'Please enter a valid zip or postal code.'
            },
            cds_email: {
                required: "Please enter a valid e-mail address.",
                email: "Please enter a valid e-mail address."
            },
            email: {
                required: "Please enter a valid e-mail address.",
                email: "Please enter a valid e-mail address."
            },
            confEmail: { 
                required: "Please confirm your e-mail address.",
                email: "The e-mail addresses you entered do not match. Please make sure you typed your e-mail address correctly.",
                equalTo: "The e-mail addresses you entered do not match. Please make sure you typed your e-mail address correctly."
            },
            cds_gk_password: {
                required: "Please choose a password.",
                minlength: "Your password must be at least 6 characters."
            },
            cds_gk_confirm_password: {
                required: "Please confirm your password.",
                equalTo: "The passwords you entered do not match. Please make sure you typed your password correctly."
            },
		    dob_month: "Please enter your date of birth.",
			dob_day: "Please enter your date of birth.",
			dob_year: "Please enter your date of birth." 
        },
        errorLabelContainer: "#error_message"
    })
    
    try {
        $('#page_enotes_signup').validate({            
               
            submitHandler: function(form) {
            
                 //*  send information to QAS to make sure
                 //*  address is deliverable

                if($('select[name="cds_country"]').val() === 'United States') { 
                    return qasVerify( true );
               } else { 
                    form.submit();
               }
            }                
        }
        );        
    } catch(val_err) {  }
    try {
        $('#sweeps_register').validate({            
            groups: {
            	dateOfBirth: "dob_month dob_day dob_year" 
            },
            
            
            submitHandler: function(form) {
            
                 //*  send information to QAS to make sure
                 //*  address is deliverable

        	if($('input[name="cds_country"]').val() === 'United States') { 
                return qasVerify( true );
           } else { 
                form.submit();
           }
               }               
        }
        );        
    } catch(val_err) {  }
    try {
        $('form').not('#page_enotes_signup, #page_register, #sweeps_register').validate();
    } catch(validate_join_error) { }
    
    try {  
        $('input.required').rules('add','required'); // Validate REQUIRED fields
    } catch(req_err) {  }
    // add specific rules for STATE
    // depends on value of COUNTRY
    try {
        $('select[name="cds_state"].required').rules('add', {
            required: {
                depends: function(element) {
                    var country = $('select[name="cds_country"]').val();
                    return country === 'United States' || country === 'Canada';
                }
            }
        });
    } catch(e) {  }
    // make sure ZIP matches regex above
    try {
        $('input.required.zip').rules('add', 'ziprange');
    } catch(e) {  }
    // check that e-mails are E-MAILS
    try {
        $('input.email').rules('add','email');
    } catch(e) {  }
    // match confirmation e-mail against e-mail
    try {
        $('input[name="confEmail"].required').rules('add', {
            equalTo: 'input[name="cds_email"]'
        });
    } catch(e) {  }    
    // match password confirmation
    try {
        $('input[name="cds_gk_confirm_password"].required').rules('add', {
            equalTo: 'input[name="cds_gk_password"]'
        });
    } catch(e) {  }
	//require dob select fields
	try {
		$('select.required.dob').rules('add','required');
	} catch(e) { }
    
    /*UNDERWRITER OPT-OUT*/
    $("#select_deselect").click(function() {
        if ($(this).is(":checked"))
            $(".third_party_opt_in").attr("checked", "checked");
        if ($(this).is(":not(:checked)"))
            $(".third_party_opt_in").removeAttr("checked");
    });
    
    $(".third_party_opt_in").click(function () {
        if ($(this).is(":not(:checked)") && $("#select_deselect").is(":checked"))
            $("#select_deselect").removeAttr("checked");
    });	  
    
    // Change the image of hoverable images
    $("*.hover, .button").hover( function() {
        var hoverImg = HoverImage($(this).attr("src"));
        $(this).attr("src", hoverImg);
    }, function() {
        var normalImg = NormalImage($(this).attr("src"));
        $(this).attr("src", normalImg);
    });
            
    
});

