﻿
$(document).ready(function() {

    $("form").each(function(i) {
        var required = $(this).find("input[name='required']");
        
        if(required) {
        
            $(this).validate();
            
            var fields = $(required).val().split('|');
            
            for(var i = 0; i < fields.length; i++) {
                var obj = $("[name='" + fields[i] + "']");
                obj.addClass('required');
            }
            
        }
    });


    $.validator.addMethod("phone", function (ph, element) {
        if (ph == null) {
            return false;
        }
        var stripped = ph.replace(/[\s()+-]|ext\.?/gi, "");
        // 10 is the minimum number of numbers required
        return ((/\d{10,}/i).test(stripped));
    }, "Please enter a valid phone number");

    $.validator.addMethod("postalcode", function (postalcode, element) {
        return this.optional(element) || postalcode.match(/(^\d{5}(-\d{4})?$)|(^[ABCEGHJKLMNPRSTVXYabceghjklmnpstvxy]{1}\d{1}[A-Za-z]{1} ?\d{1}[A-Za-z]{1}\d{1})$/);
    }, "Please specify a valid postal/zip code");


    $.validator.addMethod("truedate", function (ph, element) {
        if (ph == null) {
            return false;
        }
        var valid = false;
        var d = Date.parseExact(ph, "MM/dd/yyyy");
        var d2 = Date.parseExact(ph, "M/dd/yyyy");
        var d3 = Date.parseExact(ph, "M/d/yyyy");
        var d4 = Date.parseExact(ph, "MM/d/yyyy");

        if (d !== null || d2 !== null || d3 !== null || d4 !== null) {
            valid = true;
        }
        return valid;

    }, "Please enter a valid date");

    $.validator.addMethod("creditcard", function (value, element) {
        if (this.optional(element))
            return "dependency-mismatch";
        // accept only digits and dashes
        value = value.replace(/ /g, '');
        if (/[^0-9-]+/.test(value))
            return false;
        var nCheck = 0,
				nDigit = 0,
				bEven = false;

        value = value.replace(/\D/g, "");

        for (n = value.length - 1; n >= 0; n--) {
            var cDigit = value.charAt(n);
            var nDigit = parseInt(cDigit, 10);
            if (bEven) {
                if ((nDigit *= 2) > 9)
                    nDigit -= 9;
            }
            nCheck += nDigit;
            bEven = !bEven;
        }

        return (nCheck % 10) == 0;
    }, "Please enter a valid credit card.");
    


});

