
$(document).ready(function() {
    
        // We use the jQuery validator plugin to do input validation
       // http://docs.jquery.com/Plugins/Validation
   
        // call the validate method on our form, and pass in our explicit options
        $("#frmRegister").validate({
           onkeyup:false,
          rules: {
                fName: {
                  required:true,
                    minlength:5,
                   maxlength:45,
                   validChars:true,
                    usernameCheck:true    // remote check for duplicate username
                },
                email_first: {
                    required:true,
                  email:true,
                    maxlength:255,
                   emailCheck:true    // remote check for duplicate email address
                },
               email_second: {
                    required:true,
                    equalTo: "#email_first"
                },
                pwd: {
                   required:true,
                    minlength:6,
                    maxlength:128
               },
                cpwd: {
                   required:true,
                    equalTo: "#pwd"
                },
               tos: {
                   required:true
               }
            },
            messages: {
               fName: {
                    required: "username is required.",
                    minlength: jQuery.format("username must be at least {0} characters in length."),
                    maxlength: jQuery.format("username can not exceed {0} characters in length."),
                    validChars: "please supply valid characters only.",
                   usernameCheck:"this username is already in use."
                },
                email_first: {
                   required: "email address is required.",
                    email: "email address must be valid.",
                    maxlength: jQuery.format("email address can not exceed {0} characters in length."),
                    emailCheck:"this email address is already in use."
                },
                email_second: {
                    required: "confirmed email address is required.",
                    equalTo: "confirmed email address does not match."
                },
               pwd: {
                    required: "password is required.",
                    minlength: jQuery.format("password must be at least {0} characters in length."),
                    maxlength: jQuery.format("password can not exceed {0} characters in length.")
               },
                cpwd: {
                    required: "confirmed password is required.",
                    equalTo: "confirmed password does not match."
                },
                tos: {
                    required: "in order to join, agreeing to the Terms and Conditions is required."
                }
            }
        });
     
     
    });
     
    // extend the validation plugin to do remote username and email dupe checking
    jQuery.validator.addMethod('usernameCheck', function(fName) {
        var postURL = "user/json_username_check";
        $.ajax({
            cache:false,
            async:false,
            type: "POST",
            data: "username=" + fName,
            url: postURL,
            success: function(msg) {
                result = (msg=='TRUE') ? true : false;
            }
       });
        return result;
    }, '');
    
    jQuery.validator.addMethod('emailCheck', function(email) {
        var postURL = "user/json_email_check";
      $.ajax({
           cache:false,
            async:false,
            type: "POST",
            data: "email=" + email,
            url: postURL,
           success: function(msg) {
               result = (msg=='TRUE') ? true : false;
           }
       });
       return result;
   }, '');
    
   // check for unwanted characters
   $.validator.addMethod('validChars', function (value) {
    
       var result = true;
       // unwanted characters
       var iChars = "!@#$%^&*()+=-[]\\\';,./{}|\":<>?";
    
       for (var i = 0; i < value.length; i++) {
           if (iChars.indexOf(value.charAt(i)) != -1) {
               return false;
           }
       }
       return result;
    
   }, '');
