$(function(){
    $('#countryID').change(function(){
        var countryValue = $(this).val();
        if(countryValue == '840')
            $('#stateID').removeAttr('disabled');
        else
            $('#stateID').attr('disabled','disabled');
    });
    var container = $('p.errors');
    jQuery.validator.setDefaults({
        submitHandler:function(form){
           form.submit();
        },
        debug:true,
        focusInvalid:true,
    	errorElement:"span",
    	errorContainer:container,
    	groups:{
            date_of_birth:"DOBd DOBm DOBy",
            credit_card_expiry:"CreditCardExpiryMonth CreditCardExpiryYear"
        },
    	success:function(label){
    		label.text("ok!").addClass("success");
    	}
    });

    jQuery.validator.addMethod("latin_char",function(value,element){
    	return this.optional(element) || /^[a-z\d]+$/i.test(value);
    }, "Letters and numbers only please");

    jQuery.validator.addMethod("latin_char_pass",function(value,element){
    	return this.optional(element) || /^[a-z\d]+$/i.test(value) || /^#+$/i.test(value);
    }, "Letters and numbers only please");

    jQuery.validator.addMethod("letters_only",function(value,element){
        return this.optional(element) || /^[a-z ]+$/i.test(value);
    }, "Letters only please");

    jQuery.validator.addMethod("post_code",function(value,element){
        if($("#countryID").val() == 840)
            return this.optional(element) || /^\d{5}(-\d{4})?$/i.test(value);
        else
            return this.optional(element) || /^[A-Za-z0-9-\s]+$/i.test(value);
    }, "Input post code / zip code in correct format")

    jQuery.validator.addMethod("age_verification",function(){
        if($("#DOBd").val() != "" && $("#DOBm").val() != "" && $("#DOBy").val() != ""){
            var DOB = new Date($("#DOBy").val(), parseInt($('#DOBm').val(), 10) - 1, $("#DOBd").val()),
                eday = new Date();

            eday.setFullYear(eday.getFullYear() - 18);
            if(DOB < eday) {
                return true;
            } else {
                return false;
            }
        }
        return true;
    }, "You must be older than eighteen years of age");

    $(".step-1 #RegistrationForm, .register #RegistrationForm").validate({
        rules:{
    		ScreenName:{
                latin_char:true,
    			required:true,
    			minlength:4,
    			maxlength:15
    		},
    		Password:{
                latin_char_pass:true,
    			required:true,
    			minlength:6,
    			maxlength:15
    		},
    		PasswordConfirm:{
                latin_char_pass:true,
    			required:true,
    			minlength:6,
    			maxlength:15,
    			equalTo:"#Password"
            },
    		Email:{
                required:true,
                email:true
            },
            EmailConfirm:{
    			required:true,
                email:true,
    			equalTo:"#Email"
            }
    	}
    });
    $(".step-2 #RegistrationForm").validate({
        rules:{
    		Title:"required",
    		FirstName:{
                letters_only:true,
                required:true,
                maxlength:30
            },
            LastName:{
                letters_only:true,
                required:true,
                maxlength:30
            },
            Address1:{
                required:true,
                maxlength:30
            },
            Address2:{
                maxlength:30
            },
            City:{
                letters_only:true,
                required:true,
                maxlength:30
            },
            PostCode:{
                post_code:true,
                required:true,
                maxlength:30
            },
    		countryID:"required",
    		stateID:{
                required:function(element){
                    return $("#countryID").val() == 840;
                }
            },
    		originalCountryID:"required",
    		DOBd:{
                required:true,
                age_verification:true
            },
    		DOBm:{
                required:true,
                age_verification:true
            },
    		DOBy:{
                required:true,
                age_verification:true
            },
    		CreditCardNo:{
                required:true,
                digits:true
            },
            creditCardTypeID:"required",
            CreditCardExpiryMonth:"required",
            CreditCardExpiryYear:"required",
            CreditCardId:{
                required:function(){
                    return $('p.member-only').hide();
                },
                digits:true
            },
            terms:{
                required:function(){
                    return el = ($('#termschk input:checked').length !== 1) ? $('#termschk').addClass('error') : $('#termschk').removeClass('error');
                }
            }
    	}
    });
});
