﻿var validator = (function() {
    var config = {
        emailRegExp: /^[_a-zA-Z0-9-]+(\.[_a-zA-Z0-9-]+)*@[a-zA-Z0-9-]+(\.[a-zA-Z0-9-]+)*\.(([0-9]{1,3})|([a-zA-Z]{2,3})|(aero|coop|info|museum|name))$/,
        mobileNumberFormat: /^[0-9\(\)\+\-\s]+$/
    }

    return {
        // validates email address
        validateEmailAddress: function(email) {
            return this.validateRequiredValue(email) && config.emailRegExp.test(email);
        },

        // validates email address and adds error css class to emailInput field in case of error
        validateEmailInput: function($emailInput, errorClass) {
            var email = $emailInput.val();
            var ret = this.validateEmailAddress(email);

            if (ret) {
                $emailInput.removeClass(errorClass);
            } else {
                $emailInput.addClass(errorClass);
            }
            return ret;
        },
        
        validatePhoneNumber: function(number) {
            return this.validateRequiredValue(number) && config.mobileNumberFormat.test(number);
        },
        
        validatePhoneNumberInput: function($numberInput, errorClass, minCount) {
            var number = $numberInput.val();
            var ret = this.validatePhoneNumber(number);

            if (ret && number.length >= minCount) {
                $numberInput.removeClass(errorClass);
            } else {
                $numberInput.addClass(errorClass);
            }
            return ret;
        },

        // validates input value; returns 'true' if value is not empty; otherwise 'false'
        validateRequiredValue: function(value) {
            return typeof (value) != 'undefined' && value != '';
        },

        // validates required input field and adds error css class to input field in case of error
        validateRequiredInput: function($input, erroClass) {
            var ret = this.validateRequiredValue($input.val());

            if (ret) {
                $input.removeClass(erroClass);
            } else {
                $input.addClass(erroClass);
            }
            return ret;
        }
    }
} ());
