﻿
 $(document).ready(function(){

  if($('#register').length > 0){

   	$.validator.addMethod("username", function(value, element) {
           return this.optional(element) || /^[a-z0-9]+$/i.test(value);
       }, "Username must be alphanumeric (letters and numbers only with no spaces).");
  
  	$.validator.addMethod("phoneUS", function(phone_number, element) {
  	    phone_number = phone_number.replace(/\s+/g, "");
  		return this.optional(element) || phone_number.length > 9 &&
  			phone_number.match(/^(1-?)?(\([2-9]\d{2}\)|[2-9]\d{2})-?[2-9]\d{2}-?\d{4}$/);
  	}, "Please specify a valid phone number");
  
   	$.validator.addMethod("password", function(value, element) {
           return this.optional(element) || /^[a-z0-9]+$/i.test(value);
       }, "Password must be alphanumeric (letters and numbers only with no spaces).");
  
  	$("#birth_month, #birth_day, #birth_year, #mobile_npa, #mobile_nxx, #mobile_xxxx").keypress(function (e)
  	{
  	  if( e.which!=8 && e.which!=0 && (e.which<48 || e.which>57))
  	  {
  	    return false;
  	  }
  	});
  	
  
  	$('#aspnetForm').validate({
  	    focusCleanup: true,
    		invalidHandler: function(e, validator) {
    			var errors = validator.numberOfInvalids();
    			if (errors) {
    				var message = errors == 1
    					? 'You missed 1 field. It has been highlighted below'
    					: 'You missed ' + errors + ' fields.  They have been highlighted below';
    				$("div.error span").html(message);
    				$("div.error").show();
    			} else {
    				$("div.error").hide();
    			}
    		},
    		success:function(element){
          var id = $(element).attr('for');
          trace('success:' + id);
          //trace(id);
          $('#' + id).css('margin-bottom', '10px');
          if(id.indexOf('birth') != -1) id = 'birth_date';
         var selector = '#' + id + '_validator';
          //trace(selector);
          $(selector).html('');
    		
    		},
        errorPlacement: function(error, element) {
          var id = $(element).attr('id');
          trace('errorPlacement:' + id);
          $('#' + id).css('margin-bottom', '2px');
          if(id.indexOf('birth') != -1) id = 'birth_date';
          var selector = '#' + id + '_validator';
          //trace(selector);
          $(selector).html($(error).html());
        },
  			rules:{
  				username:{
  					required:true,
  					username:true
  				},
  				email:{
  					required:true,
  					email:true,
  					remote:'validation.ashx'
  				},
  				password:{
  					required:true,
  					password:true
  				},
  				first_name:{
  					required:false
  				},
  				last_name:{
  					required:false
  				},
  				birth_month:{
  					required:true,
  					digits:true,
  					maxlength:2
  				},
  				birth_day:{
  					required:true,
  					digits:true,
  					maxlength:2
  				},
  				birth_year:{
  					required:true,
  					digits:true,
  					maxlength:4
  				},
  				accept:{
  					required:true
  				}
  				
  			},
  			messages:{
  				username:{
  					required:"Username is required",
  					remote:"Username is already taken"
  				},
  				password:{
  					required:"Password is required"
  				},
  				phone:{
  					required:"Phone Number is required"
  				},
  				first_name:{
  					required:"First Name is required"
  				},
  				last_name:{
  					required:"Last Name is required"
  				},
  				address:{
  					required:"Mailing Address is required"
  				},
  				accept:{
  					required:"Please accept the Terms of Use"
  				},
  				zip:{
  					required:"Zip is required"
  				},
  				birth_day:{
  					required:"Birth Date is required"
  				},
  				birth_month:{
  					required:"Birth Date is required"
  				},
  				birth_year:{
  					required:"Birth Date is required"
  				},
  				email:{
  					required:"Email Address is required",
  					email:"Invalid Email Address",
  					remote:"Email Address is already taken"
  				}
  			}
  		});
  	}

 });