﻿$(document).ready
(
    function()
    {
        jQuery.validator.addMethod
        (
            "validDate",
            function(value, element)
            {
                var check = false;
                var re = /^\d{2}\-\d{2}\-\d{4}$/
                if (re.test(value))
                {
                    var adata = value.split('-');
                    var day = parseInt(adata[0], 10);
                    var month = parseInt(adata[1], 10);
                    var year = parseInt(adata[2], 10);

                    var xdata = new Date(year, month - 1, day);

                    if ((xdata.getFullYear() == year) && (xdata.getMonth() == month - 1) && (xdata.getDate() == day))
                        check = true;
                    else
                        check = false;
                } else
                    check = false;
                return this.optional(element) || check;
            },
            "Please enter a date in the format dd-mm-yyyy"
        );

        jQuery.validator.addMethod
        (
            "validPhone",
            function(value, element)
            {
                var check = false;
                var re = /^[\d\-\ \+\(\)]{1,20}$/

                if (re.test(value))
                    check = true;
                else
                    check = false;

                return this.optional(element) || check;
            },
            "Please enter a valid phone number"
        );

        jQuery.validator.addMethod
        (
            "validZip",
            function(value, element)
            {
                var check = false;
                var re = /^[\d]{4}[\s][A-Za-z]{2}$/

                if (re.test(value))
                    check = true;
                else
                    check = false;

                return this.optional(element) || check;
            },
            "Please enter a valid zip"
        );

        jQuery.validator.addMethod
        (
            "validZipEx",
            function(value, element)
            {

                var check = false;
                var re1 = /^[\d]{4}[A-Za-z]{2}$/
                var re2 = /^[\d]{4}[\s][A-Za-z]{2}$/

                if (re1.test(value) || re2.test(value))
                    check = true;
                else
                    check = false;

                return this.optional(element) || check;
            },
            "Please enter a valid city or zip"
        );

        jQuery.validator.addMethod
        (
            "validStreet",
            function(value, element)
            {

                var check = false;
                var re = /^.{1,244}[\s].{1,10}$/

                if (re.test(value))
                    check = true;
                else
                    check = false;

                return this.optional(element) || check;
            },
            "Please enter a valid street"
        );

        jQuery.validator.addMethod
        (
            "dateNotInFuture",
            function(value, element)
            {
                var check = false;
                
                var valueDate = getDateObject(value, '-').getTime();
                var todayDate = new Date().getTime();
                var difference = todayDate - valueDate;

                if (difference > 0)
                    check = true;
                else
                    check = false;

                return this.optional(element) || check;
            },
            "Please enter a valid date"
        );

        jQuery.validator.addMethod
        (
            "dateNotInPast",
            function(value, element)
            {
                var check = false;

                var valueDate = getDateObject(value, '-').getTime();
                var todayDate = new Date().getTime();
                var difference = todayDate - valueDate;

                if (difference < 0)
                    check = true;
                else
                    check = false;

                return this.optional(element) || check;
            },
            "Please enter a valid date"
        );
    }
);

function getDateObject(dateString, dateSeperator)
{
    var dateArray = dateString.split(dateSeperator);
    var _year = dateArray[2];
    var _month = dateArray[1] - 1;
    var _day = dateArray[0];
    dtObject = new Date(_year, _month, _day);
    return dtObject;
}