﻿
var DDXValidator = {
    defaultErrorCSS: 'err_msg',
    txtInvalidCss: 'txt_invalid',
    IsRequired: function(value, obj, msgPanel, invalidCss, errorCSS) {
        invalidCss = invalidCss || DDXValidator.txtInvalidCss;
        errorCSS = errorCSS || DDXValidator.defaultErrorCSS;
        if (value.isEmpty()) {
            if (msgPanel) {
                msgPanel.addClass(errorCSS);
            }
            obj.addClass(invalidCss);
            return false;
        }
        if (msgPanel) {
            msgPanel.removeClass(errorCSS);
        }
        obj.removeClass(invalidCss);
        return true;
    },
    Limited: function(value, obj, msgPanel, minLen, maxLen, invalidCss, errorCSS) {
        invalidCss = invalidCss || DDXValidator.txtInvalidCss;
        errorCSS = errorCSS || DDXValidator.defaultErrorCSS;
        if (!value.limitByte(minLen, maxLen)) {
            if (msgPanel) {
                msgPanel.addClass(errorCSS);
            }
            obj.addClass(invalidCss);
            return false;
        }
        if (msgPanel) {
            msgPanel.removeClass(errorCSS);
        }
        obj.removeClass(invalidCss);
        return true;
    },
    IsPositiveNumber: function(value, obj, msgPanel, invalidCss, errorCSS) {
        invalidCss = invalidCss || DDXValidator.txtInvalidCss;
        errorCSS = errorCSS || DDXValidator.defaultErrorCSS;
        if (!value.isPositiveNumber()) {
            if (msgPanel) {
                msgPanel.addClass(errorCSS);
            }
            obj.addClass(invalidCss);
            return false;
        }
        if (msgPanel) {
            msgPanel.removeClass(errorCSS);
        }
        obj.removeClass(invalidCss);
        return true;
    },
    IsLimitNumber: function(value, obj, msgPanel, minValue, maxValue, invalidCss, errorCSS) {
        invalidCss = invalidCss || DDXValidator.txtInvalidCss;
        errorCSS = errorCSS || DDXValidator.defaultErrorCSS;
        if (!value.isLimitNumeric(minValue, maxValue)) {
            if (msgPanel) {
                msgPanel.addClass(errorCSS);
            }
            obj.addClass(invalidCss);
            return false;
        }
        if (msgPanel) {
            msgPanel.removeClass(errorCSS);
        }
        obj.removeClass(invalidCss);
        return true;
    },
    IsZIP: function(value, obj, msgPanel, invalidCss, errorCSS) {
        invalidCss = invalidCss || DDXValidator.txtInvalidCss;
        errorCSS = errorCSS || DDXValidator.defaultErrorCSS;
        if (!value.isZIP()) {
            if (msgPanel) {
                msgPanel.addClass(errorCSS);
            }
            obj.addClass(invalidCss);
            return false;
        }
        if (msgPanel) {
            msgPanel.removeClass(errorCSS);
        }
        obj.removeClass(invalidCss);
        return true;
    },
    IsEmail: function(value, obj, msgPanel, invalidCss, errorCSS) {
        invalidCss = invalidCss || DDXValidator.txtInvalidCss;
        errorCSS = errorCSS || DDXValidator.defaultErrorCSS;
        if (!value.isEmail()) {
            if (msgPanel) {
                msgPanel.addClass(errorCSS);
            }
            obj.addClass(invalidCss);
            return false;
        }
        if (msgPanel) {
            msgPanel.removeClass(errorCSS);
        }
        obj.removeClass(invalidCss);
        return true;
    },
    IsHttp: function(value, obj, msgPanel, invalidCss, errorCSS) {
        invalidCss = invalidCss || DDXValidator.txtInvalidCss;
        errorCSS = errorCSS || DDXValidator.defaultErrorCSS;
        if (!value.isURL()) {
            if (msgPanel) {
                msgPanel.addClass(errorCSS);
            }
            obj.addClass(invalidCss);
            return false;
        }
        if (msgPanel) {
            msgPanel.removeClass(errorCSS);
        }
        obj.removeClass(invalidCss);
        return true;
    },
    Register: {
        userNameMinLen: 1,
        userNameMaxLen: 32,
        passwordMinLen: 4,
        passwordMaxLen: 16,
        userNameReg: /^[a-zA-Z0-9_]{1,32}$/,
        UserName: function(value, obj, msgPanel, minLen, maxLen, invalidCss, errorCSS) {
            invalidCss = invalidCss || DDXValidator.txtInvalidCss;
            errorCSS = errorCSS || DDXValidator.defaultErrorCSS;
            if (this.userNameReg.test(value)) {
                minLen = minLen || 1;
                maxLen = maxLen || this.userNameMaxLen;
                var len = value.byteLength();
                if (len >= minLen && len <= maxLen) {
                    if (msgPanel) {
                        msgPanel.removeClass(errorCSS);
                    }
                    obj.removeClass(invalidCss);
                    return true;
                }
            }
            if (msgPanel) {
                msgPanel.addClass(errorCSS);
            }
            obj.addClass(invalidCss);
            return false;
        },
        Password: function(value, obj, msgPanel, minLen, maxLen, invalidCss, errorCSS) {
            invalidCss = invalidCss || DDXValidator.txtInvalidCss;
            errorCSS = errorCSS || DDXValidator.defaultErrorCSS;
            var len = value.byteLength();
            if (len < this.passwordMinLen || len > this.passwordMaxLen) {
                if (msgPanel) {
                    msgPanel.addClass(errorCSS);
                }
                obj.addClass(invalidCss);
                return false;
            }
            if (msgPanel) {
                msgPanel.removeClass(errorCSS);
            }
            obj.removeClass(invalidCss);
            return true;
        },
        PasswordConfirm: function(value, obj, confirmValue, msgPanel, invalidCss, errorCSS) {
            invalidCss = invalidCss || DDXValidator.txtInvalidCss;
            errorCSS = errorCSS || DDXValidator.defaultErrorCSS;
            if (confirmValue != value) {
                if (msgPanel) {
                    msgPanel.addClass(errorCSS);
                }
                obj.addClass(invalidCss);
                return false;
            }
            if (msgPanel) {
                msgPanel.removeClass(errorCSS);
            }
            obj.removeClass(invalidCss);
            return true;
        },
        ValidCode: function(value, obj, msgPanel, len, invalidCss, errorCSS) {
            invalidCss = invalidCss || DDXValidator.txtInvalidCss;
            errorCSS = errorCSS || DDXValidator.defaultErrorCSS;
            if (value.length != len || value.trim().isEmpty()) {
                if (msgPanel) {
                    msgPanel.addClass(errorCSS);
                }
                obj.addClass(invalidCss);
                return false;
            }
            if (msgPanel) {
                msgPanel.removeClass(errorCSS);
            }
            obj.removeClass(invalidCss);
            return true;
        }
    }
};