// Author: J.Baltikauskas
//      Use in Forms with CustomValidator ClientValidationFunction property
// Example: 
//      <asp:CustomValidator ID="FieldPhoneCustomValidator" ControlToValidate="TextBox1" runat="server" 
//      ClientValidationFunction="ValidationRules.IsNumber" ValidateEmptyText="True" SetFocusOnError="True"
//      Display="Dynamic" ErrorMessage="*" onservervalidate="FieldPhoneCustomValidator_ServerValidate" 
//      />
var ValidationRules = {
    IsEmpty: function(input) {
        return (input == null || input == '');
    },
    Trim: function(str) {
        var str = str.replace(/^\s\s*/, ''),
		    ws = /\s/,
		    i = str.length;
        while (ws.test(str.charAt(--i)));
        return str.slice(0, i + 1);
    },
    IsName: function(obj, args) {
        if (ValidationRules.IsEmpty(args.Value)) {
            args.IsValid = false;
        } else {
            args.Value = ValidationRules.Trim(args.Value);
            var success = args.Value.match(/[a-zA-Z\s-]{1,50}$/);
            args.IsValid = (success != null);
        }
    },
    IsCurrency: function(obj, args) {
        if (ValidationRules.IsEmpty(args.Value)) {
            args.IsValid = false;
        } else {
            args.Value = ValidationRules.Trim(args.Value);
            var success = args.Value.match(/^\d+(\.\d{1,2})?$/);
            args.IsValid = (success != null);
        }
    },
    IsCurrencyOptional: function(obj, args) {
        if (ValidationRules.IsEmpty(args.Value) || args.Value == '$') {
            args.IsValid = true;
        } else {
            args.Value = ValidationRules.Trim(args.Value);
            var success = args.Value.match(/^\d+(\.\d{1,2})?$/);
            args.IsValid = (success != null);
        }
    },
    IsEmail: function(obj, args) {
        if (ValidationRules.IsEmpty(args.Value)) {
            args.IsValid = false;
        } else {
            args.Value = ValidationRules.Trim(args.Value);
            var success = args.Value.match(/^(\w[-._\w]*@\w[-._\w]*\w\.\w{2,6})$/);
            args.IsValid = (success != null);
        }
    },
    VerifyEmail: function(obj, args) {
        if (ValidationRules.IsEmpty(args.Value)) {
            args.IsValid = false;
        } else {
            args.Value = ValidationRules.Trim(args.Value);
            var success = args.Value.match(/^(\w[-._\w]*@\w[-._\w]*\w\.\w{2,6})$/);
            var elem = document.getElementById('Email');
            if (elem) {
                args.IsValid = (success != null) && elem.value == args.Value;
            } else {
                args.IsValid = (success != null);
            }
        }
    },
    IsDate: function(obj, args) {
        if (ValidationRules.IsEmpty(args.Value)) {
            args.IsValid = false;
        } else {
            args.Value = ValidationRules.Trim(args.Value);
            var success = args.Value.match(/^\d{1,2}\/\d{1,2}\/\d{4}$/);
            args.IsValid = (success != null);
        }
    },
    IsTime: function(obj, args) {
        if (ValidationRules.IsEmpty(args.Value)) {
            args.IsValid = false;
        } else {
            args.Value = ValidationRules.Trim(args.Value);
            var success = args.Value.match(/^\d{1,2}:\d{1,2}\s(AM|PM)$/);
            args.IsValid = (success != null);
        }
    },
    IsUsPhone: function(obj, args) {
        if (ValidationRules.IsEmpty(args.Value)) {
            args.IsValid = false;
        } else {
            args.Value = ValidationRules.Trim(args.Value);

            var success = args.Value.match(/^(\(?\d{3}\)?[-\s.]\d{3}[-\s.]\d{4})$/) || args.Value.match(/^\d{10}$/);
            args.IsValid = (success != null);
        }
    },
    IsNotNullOrEmpty: function(obj, args) {
        args.IsValid = !ValidationRules.IsEmpty(args.Value);
    },
    IsUsZipCode: function(obj, args) {
        if (ValidationRules.IsEmpty(args.Value)) {
            args.IsValid = false;
        } else {
            args.Value = ValidationRules.Trim(args.Value);
            var success = args.Value.match(/^\d{5}$/);
            args.IsValid = (success != null);
        }
    },
    IsPersonalId: function(obj, args) {
        if (ValidationRules.IsEmpty(args.Value)) {
            args.IsValid = false;
        } else {
            args.Value = ValidationRules.Trim(args.Value);
            var success = args.Value.match(/^\d{8}-\w{4}$/);
            args.IsValid = (success != null);
        }
    }
};

