﻿function validate_form_contact($, sender) { 
    var t = sender;
    if ($('#contact_form').length === 1) {
        console.log('initContactFormValidation');  // TODO: Remove for Production
        $('#aspnetForm').validate({
            rules: {
                contact_name: {
                    required: true,
                    maxlength: 16
                },
                contact_email: {
                    required: true,
                    email: true,
                    maxlength: 254
                },
                contact_topic: {
                    required: true
                },
                contact_message: {
                    required: true,
                    maxlength: 600
                }
            },
            messages: {
                contact_name: {
                    required: "Enter name.",
                    maxlength: $.validator.format("Max {0} characters.")
                },
                contact_email: {
                    required: "Enter valid email.",
                    email: "Enter valid email.",
                    maxlength: $.validator.format("Max {0} characters.")
                },
                contact_topic: {
                    required: "Select a topic."
                },
                contact_message: {
                    required: "Enter message.",
                    maxlength: $.validator.format("Max {0} characters.")
                }
            },
            onkeyup: false,
            focusCleanup: true,
            focusInvalid: false,
            errorPlacement: function(e, el) {
                if (el.attr('type') === 'checkbox') return;
                else e.insertAfter(el);
            },
            success: function(el) {
                el.addClass('validation valid').text('Okay!');
            }
        });
    }
}

function validate_form_acct_create($, sender) {
    var t = sender;
    if ($('#accountform').length === 1) {
        console.log('CreateFormValidation'); // TODO: Remove for production
        $('#aspnetForm').validate({
            rules: {
                phonetype: {
                    required: true
                },
                zip: {
                    required: true,
                    digits: true,
                    rangelength: [5, 5]
                },
                firstname: {
                    required: true,
                    maxlength: 16
                },
                lastname: {
                    maxlength: 50
                },
//                phone1: {
//                    required: true,
//                    phone: true                            
//                },
                acctemail: {
                    required: true,
                    email: true,
                    maxlength: 254,
                    remote: t._hostPath + t._emailCheckPath 
                },
//                acctemail2: {
//                    required: true,
//                    equalTo: "#acctemail",
//                    email: true,
//                    maxlength: 254
//                },
                acctpassword: {
                    required: true,
                    nowhitespace: true,
                    minlength: 6,
                    maxlength: 16
                },
//                acctpassword2: {
//                    required: true,
//                    equalTo: "#acctpassword",
//                    nowhitespace: true,
//                    minlength: 6,
//                    maxlength: 16
//                },
                captcha: {
                    required: true,                    
                    remote: t._hostPath + "functions_ajax/CheckCaptcha.aspx"
                },
                promo: {                                     
                    minlength: 6,                                        
                    maxlength: 20,
                    remote: t._hostPath + "functions_ajax/CheckPromoCode.aspx"                    
                },                
                agreeterms: {
                    required: true
                }
            },
            messages: {
                phonetype: {
                    required: "Please select phone."
                },
                zip: {
                    required: "Enter valid zip.",
                    rangelength: "Enter valid zip.",
                    digits: "Enter valid zip."
                },
                firstname: {
                    required: "Please enter your first name.",
                    maxlength: $.validator.format("First Name cannot be longer than {0} characters.")
                },
                lastname: {
                    maxlength: $.validator.format("Last Name cannot be longer than {0} characters.")
                },
//                phone1: {
//                    required: "Please enter a valid, 10-digit mobile phone number.",
//                    phone: "Please enter a valid, 10-digit mobile phone number."
//                    //remote: "Account with this number already exists."
//                },
                acctemail: {
                    required: "Please enter a valid email address.",
                    email: "Please enter a valid email address.",
                    maxlength: $.validator.format("Email address cannot be longer than {0} characters."),
                    remote: "Account with this email address already exists."
                },
//                acctemail2: {
//                    required: "Please enter a valid email address.",
//                    equalTo: "Email Addresses do not match.",
//                    email: "Please enter a valid email address.",
//                    maxlength: $.validator.format("Email address cannot be longer than {0} characters.")
//                },
                acctpassword: {
                    required: "Please create a password.",
                    nowhitespace: "Password may not contain spaces.",
                    minlength: "Password must be at least six characters.",
                    maxlength: $.validator.format("Password cannot be longer than {0} characters")
                },
//                acctpassword2: {
//                    required: "Please re-enter the password.",
//                    nowhitespace: "Password may not contain spaces.",
//                    minlength: "Password must be at least six characters.",
//                    maxlength: $.validator.format("Password cannot be longer than {0} characters"),
//                    equalTo: "Passwords do not match."
//                },
                captcha: {
                    required: "Entry not correct. Please try again.",                    
                    remote: "Entry not correct. Please try again."
                },
                promo: {                    
                    minlength: "Promo code must be at least six characters.",
                    maxlength: $.validator.format("Promo code cannot be longer than {0} characters."),
                    remote: "Invalid promo code. Please try again."
                },
                agreeterms: {
                    required: "Please read and agree with the Terms of Use and Privacy Policy."
                }
            },
            onkeyup: false,
            focusCleanup: true,
            focusInvalid: false,
            errorPlacement: function(e, el) {
                if (el.attr('type') === 'checkbox') e.appendTo(el.parent());
                else e.insertAfter(el);
            },
            success: function(el) {
                if (/phonetype|carrier|agreeterms|keepinloop|zip/.test(el.attr('for'))) el.remove();
                else el.addClass('validation valid').text('Okay!');
            }
        });
    }
}

function validate_form_acct_edit_email($, sender) {
    var t = sender;
    if ($('#acct_edit_email_form').length === 1) {
        $('#aspnetForm').validate({
            rules: {
                ctl00$ContentPlaceHolder1$txtEmail1: {
                    required: true,
                    email: true,
                    maxlength: 254,
                    remote: t._hostPath + t._emailCheckPath
                },
                ctl00$ContentPlaceHolder1$txtEmail2: {
                    required: true,
                    equalTo: "#ctl00_ContentPlaceHolder1_txtEmail1",
                    email: true,
                    maxlength: 254
                    
                }
            },
            messages: {
                ctl00$ContentPlaceHolder1$txtEmail1: {
                    required: "Enter valid email.",
                    email: "Enter valid email.",
                    maxlength: $.validator.format("Max {0} characters."),
                    remote: "Account with this email address already exists."
                },
                ctl00$ContentPlaceHolder1$txtEmail2: {
                    required: "Enter valid email.",
                    equalTo: "Email Addresses do not match.",
                    email: "Enter valid email.",
                    maxlength: $.validator.format("Max {0} characters.")
                }
            },
            onkeyup: false,
            focusCleanup: true,
            focusInvalid: false,
            errorPlacement: function(e, el) {
                if (el.attr('type') === 'checkbox') return;
                else e.insertAfter(el);
            },
            success: function(el) {
                el.addClass('validation valid').text('Okay!');
            }
        });
    }
}

function validate_form_acct_edit_password($, sender) {
    var t = sender;
    if ($('#acct_edit_password_form').length === 1) {
        $('#aspnetForm').validate({
        rules: {

                ctl00$ContentPlaceHolder1$txtCurrentPwd: {
                    required: true,                
                    remote: t._hostPath + 'functions_ajax/CheckPassword.aspx'
                },                        
                ctl00$ContentPlaceHolder1$txtNewPwd1: {
                    required: true,                    
                    nowhitespace: true,
                    minlength: 6,                    
                    maxlength: 16                    
                },
                ctl00$ContentPlaceHolder1$txtNewPwd2: {
                    required: true,
                    equalTo: "#ctl00_ContentPlaceHolder1_txtNewPwd1", 
                    nowhitespace: true,
                    minlength: 6,                   
                    maxlength: 16
                }
            },
            messages: {   
                ctl00$ContentPlaceHolder1$txtCurrentPwd: {
                    required: "Enter a password.",
                    maxlength: $.validator.format("Max {0} characters."),
                    remote: "Current password is not correct."
                },
                ctl00$ContentPlaceHolder1$txtNewPwd1: {                    
                    required: "Please create a password.",
                    nowhitespace: "Password may not contain spaces.",
                    minlength: "Password must be at least six characters.",
                    maxlength: $.validator.format("Password cannot be longer than {0} characters")
                },
                ctl00$ContentPlaceHolder1$txtNewPwd2: {
                    required: "Please re-enter the password.",
                    nowhitespace: "Password may not contain spaces.",
                    minlength: "Password must be at least six characters.",
                    maxlength: $.validator.format("Password cannot be longer than {0} characters"),
                    equalTo: "Passwords do not match."
                }
            },
            onkeyup: false,
            focusCleanup: true,
            focusInvalid: false,
            errorPlacement: function(e, el) {
                if (el.attr('type') === 'checkbox') return;
                else e.insertAfter(el);
            },
            success: function(el) {
                el.addClass('validation valid').text('Okay!');
            }
        });
    }
}

function validate_form_reset_password($, sender) {
    var t = sender;
    if ($('#resetpasswordform').length === 1) {
        $('#aspnetForm').validate({
            rules: {
                new_password: {
                    required: true,
                    nowhitespace: true,
                    minlength: 6,
                    maxlength: 16
                },
                confirm_password: {
                    required: true,
                    equalTo: "#new_password",
                    nowhitespace: true,
                    minlength: 6,
                    maxlength: 16
                }
            },
            messages: {
                new_password: {
                    required: "Please create a password.",
                    nowhitespace: "Password may not contain spaces.",
                    minlength: "Password must be at least six characters.",
                    maxlength: $.validator.format("Password cannot be longer than {0} characters")
                },
                confirm_password: {
                    required: "Please re-enter the password.",
                    nowhitespace: "Password may not contain spaces.",
                    minlength: "Password must be at least six characters.",
                    maxlength: $.validator.format("Password cannot be longer than {0} characters"),
                    equalTo: "Passwords do not match."
                }
            },
            onkeyup: false,
            focusCleanup: true,
            focusInvalid: false,
            errorPlacement: function(e, el) {
                if (el.attr('type') === 'checkbox') return;
                else e.insertAfter(el);
            },
            success: function(el) {
                el.addClass('validation valid').text('Okay!');
            }
        });
    }
}

function validate_form_acct_edit_profile($, sender) {
    var t = sender;
    if ($('#acctedit_form').length === 1) {
        $('#aspnetForm').validate({
            rules: {
                        ctl00$ContentPlaceHolder1$firstname: {
                            required: true,                    
                            maxlength: 16                    
                        },
                        ctl00$ContentPlaceHolder1$lastname: {
                            maxlength: 50
                        },
//                        ctl00$ContentPlaceHolder1$phone: {
//                            required: true,
//                            phone: true,
//                            remote: t._hostPath + t._phoneCheckPath
//                        },                        
                        ctl00$ContentPlaceHolder1$address1: {
                            maxlength: 50
                        },
                        ctl00$ContentPlaceHolder1$address2: {
                            maxlength: 50
                        },
                        ctl00$ContentPlaceHolder1$city: {
                            maxlength: 50
                        },                        
                        ctl00$ContentPlaceHolder1$zip: {
                            required: true,
                            digits: true,
                            rangelength: [5, 5]
                        }                                                                  
                    },
                    messages: {
                    ctl00$ContentPlaceHolder1$firstname: {
                            required: "Please enter first name.",
                            maxlength: $.validator.format("First Name cannot be longer than {0} characters.")
                        },
                        ctl00$ContentPlaceHolder1$lastname: {
                            maxlength: $.validator.format("Last Name cannot be longer than {0} characters.")
                        },
//                        ctl00$ContentPlaceHolder1$phone: {
//                            required: "Please enter a valid, 10-digit mobile phone number.",
//                            phone: "Please enter a valid, 10-digit mobile phone number. ###-###-####",
//                            remote: "Account with this number already exists."
//                        },                        
                        ctl00$ContentPlaceHolder1$address1: {
                            maxlength: $.validator.format("Street Address 1 cannot be longer than {0} characters.")
                        },
                        ctl00$ContentPlaceHolder1$address2: {
                            maxlength: $.validator.format("Street Address 2 cannot be longer than {0} characters.")
                        },
                        ctl00$ContentPlaceHolder1$city: {
                            maxlength: $.validator.format("City cannot be longer than {0} characters.")
                        },                        
                        ctl00$ContentPlaceHolder1$zip: {
                            required: "Please enter a valid zip code.",
                            digits: "Please enter a valid zip code.",
                            rangelength: "Please enter a valid zip code."
                        }
                    },               
            onkeyup: false,
            focusCleanup: true,
            focusInvalid: false,
            errorPlacement: function(e, el) {
                if (el.attr('type') === 'checkbox') return;
                else e.insertAfter(el);
            },
            success: function(el) {
                el.addClass('validation valid').text('Okay!');
            }
        });
    }
}

function validate_form_invite_friend($, sender) {
    var t = sender;
    if ($('#friend_form').length === 1) {
        $('#aspnetForm').validate({
            rules: {
                ctl00$ContentPlaceHolder1$txtContactName: {
                    required: true,                    
                    maxlength: 33,                    
                },
                ctl00$ContentPlaceHolder1$txtContactEmail: {
                    required: true,                    
                    email: true,
                    maxlength: 254

                },
                ctl00$ContentPlaceHolder1$txtFriendEmail: {
                    required: true,                    
                    email: true,
                    maxlength: 254
                }
            },
            messages: {
                ctl00$ContentPlaceHolder1$txtContactName: {
                    required: "Enter your name.",                    
                    maxlength: $.validator.format("Max {0} characters."),                    
                },
                ctl00$ContentPlaceHolder1$txtContactEmail: {
                    required: "Enter valid email.",
                    email: "Enter valid email.",
                    maxlength: $.validator.format("Max {0} characters."),                    
                },
                ctl00$ContentPlaceHolder1$txtFriendEmail: {
                    required: "Enter valid email.",
                    email: "Enter valid email.",
                    maxlength: $.validator.format("Max {0} characters.")
                }
            },
            onkeyup: false,
            focusCleanup: true,
            focusInvalid: false,
            errorPlacement: function(e, el) {
                if (el.attr('type') === 'checkbox') return;
                else e.insertAfter(el);
            },
            success: function(el) {
                el.addClass('validation valid').text('Okay!');
            }
        });
    }
}

function validate_form_send_to_friend($, sender) {
    var t = sender;
    if ($('#sendtofriend_form').length === 1) {
        $('#aspnetForm').validate({
            rules: {
                ctl00$ContentPlaceHolder1$txtUserName: {
                    required: true,                    
                    maxlength: 33,                    
                },
                ctl00$ContentPlaceHolder1$txtUserEmail: {
                    required: true,                    
                    email: true,
                    maxlength: 254

                },
                ctl00$ContentPlaceHolder1$txtFriendEmail: {
                    required: true,                    
                    email: true,
                    maxlength: 254
                }
            },
            messages: {
                ctl00$ContentPlaceHolder1$txtUserName: {
                    required: "Enter your name.",                    
                    maxlength: $.validator.format("Max {0} characters."),                    
                },
                ctl00$ContentPlaceHolder1$txtUserEmail: {
                    required: "Enter email.",
                    email: "Enter valid email.",
                    maxlength: $.validator.format("Max {0} characters."),                    
                },
                ctl00$ContentPlaceHolder1$txtFriendEmail: {
                    required: "Enter email.",
                    email: "Enter valid email.",
                    maxlength: $.validator.format("Max {0} characters.")
                }
            },
            onkeyup: false,
            focusCleanup: true,
            focusInvalid: false,
            errorPlacement: function(e, el) {
                if (el.attr('type') === 'checkbox') return;
                else e.insertAfter(el);
            },
            success: function(el) {
                el.addClass('validation valid').text('Okay!');
            }
        });
    }
}

function validate_form_coupon_history($, sender) {
    var t = sender;
    if ($('#history_form').length === 1) {
        console.log('initCouponHistoryValidation'); // TODO: Remove for production
        var dynamicRules = {};
        $('#history_form input.text').each(function() {
            dynamicRules[this.id] = 'number';
        });
        $('#aspnetForm').validate({
            rules: dynamicRules,
            messages: {},
            ignore: '.' + t._validatorIgnoreClass,
            onkeyup: false,
            focusCleanup: false,
            focusInvalid: false,
            invalidHandler: function(form, validator) {
                var errors = validator.numberOfInvalids();
                if (errors) {
                    $('#instructions span').addClass(this.errorClass);
                }
            },
            highlight: function(el, errClass) {
                $(el).add('#instructions span').addClass(errClass);
            },
            unhighlight: function(el, errClass) {
                $(el).removeClass(errClass);
                if ($('#history_form input.text.error').length === 0) $('#instructions span').removeClass(errClass);
            },
            errorPlacement: function(error, el) {
                return;
            },
            success: function(el) {
                el.remove();
            }
        });
    }
}

function validate_form_merchant_signup($, sender) {
    var t = sender;
    if ($('#merchant_signup_form').length === 1) {
        console.log('MerchantSignUpFormValidation'); // TODO: Remove for production
        $('#aspnetForm').validate({
            rules: {
                ctl00$ContentPlaceHolder1$txtCompanyName: {
                    required: true
                },
                ctl00$ContentPlaceHolder1$txtAddress1: {
                    required: true                    
                },
                ctl00$ContentPlaceHolder1$txtCity: {
                    required: true                    
                },
                ctl00$ContentPlaceHolder1$ddlState: {
                    required: true
                },
                ctl00$ContentPlaceHolder1$txtZip: {
                    required: true,
                    digits: true,
                    rangelength: [5, 5]               
                },                
                ctl00$ContentPlaceHolder1$txtCompanyPhone: {
                    required: true,
                    phone: true                            
                },                                 
                ctl00$ContentPlaceHolder1$txtName: {
                    required: true                    
                },                               
                ctl00$ContentPlaceHolder1$txtTitle: {
                    required: true                    
                },                               
                ctl00$ContentPlaceHolder1$txtEmail1: {
                    required: true,                    
                    email: true,
                    maxlength: 254                 
                },                               
                ctl00$ContentPlaceHolder1$txtEmail2: {
                    required: true,                    
                    email: true,
                    equalTo: "#ctl00_ContentPlaceHolder1_txtEmail1",
                    maxlength: 254                                     
                },                
                ctl00$ContentPlaceHolder1$txtContactPhone: {
                    required: true                    
                },                
                agreeterms: {
                    required: true
                }
            },
            messages: {
                ctl00$ContentPlaceHolder1$txtCompanyName: {
                    required: "Required"
                },
                ctl00$ContentPlaceHolder1$txtAddress1: {
                    required: "Required"
                },
                ctl00$ContentPlaceHolder1$txtCity: {
                    required: "Required"
                },
                ctl00$ContentPlaceHolder1$ddlState: {
                    required: "Required"
                },
                ctl00$ContentPlaceHolder1$txtZip: {
                    required: "Required",
                    rangelength: "Enter valid zip.",
                    digits: "Enter valid zip."
                },                                
                ctl00$ContentPlaceHolder1$txtCompanyPhone: {
                    required: "Required",
                    phone: "Please enter a valid, 10-digit phone number."                        
                },                                 
                ctl00$ContentPlaceHolder1$txtName: {
                    required: "Required"
                },                               
                ctl00$ContentPlaceHolder1$txtTitle: {
                    required: "Required"
                },                               
                ctl00$ContentPlaceHolder1$txtEmail1: {
                    required: "Required",
                    email: "Please enter a valid email address.",
                    maxlength: $.validator.format("Email address cannot be longer than {0} characters."),                    
                },                               
                ctl00$ContentPlaceHolder1$txtEmail2: {
                    required: "Required",
                    equalTo: "Email Addresses do not match.",
                    email: "Please enter a valid email address.",
                    maxlength: $.validator.format("Email address cannot be longer than {0} characters.")
                },                
                ctl00$ContentPlaceHolder1$txtContactPhone: {
                    required: "Required",
                    phone: "Please enter a valid, 10-digit phone number."    
                },                
                agreeterms: {
                    required: "Please read and agree with the Terms of Use and Privacy Policy."
                }                
            },
            onkeyup: false,
            focusCleanup: true,
            focusInvalid: false,
            errorPlacement: function(e, el) {
                if (el.attr('type') === 'checkbox') e.appendTo(el.parent());
                else e.insertAfter(el);
            },
            success: function(el) {
                if (/phonetype|carrier|agreeterms|keepinloop|zip/.test(el.attr('for'))) el.remove();
                else el.addClass('validation valid').text('Okay!');
            }
        });
    }
}
