﻿/****************************
*
*验证方法
*
****************************/


var ValidateUtil = {
    FormID: "form1",
    Rules: {},
    Message: {},
    ErrClass: "red",
    Submit: true,
    /**私有变量**/
    validator: null,


    Init: function() {
        var _FormID = arguments[0] == undefined || arguments[0] == null ? this.FormID : arguments[0];
        var _Rules = arguments[1] == undefined || arguments[1] == null ? this.Rules : arguments[1];
        var _Message = arguments[2] == undefined || arguments[2] == null ? this.Message : arguments[2];
        var _ErrClass = arguments[3] == undefined || arguments[3] == null ? this.ErrClass : arguments[3];
        var _submit = arguments[4] == undefined || arguments[4] == null ? this.Submit : arguments[4];
        var _validate = this.validator;
        /*为异步验证增加处理逻辑 begin*/
        var rules = _Rules;
        $.each(_Rules, function(key, value) {
            $.each(value, function(key1, value1) {
                if (key1 == "remote") {
                    var loading = $("#" + key + "loading");
                    if (loading.length == 0) {
                        $('#' + key).after("<div id=\"" + key + "loading\" style=\"display:inline;\"></div>");
                        loading = $("#" + key + "loading");
                    }
                    var existingRules = value1;
                    var extendRule = {
                        beforeSend: function(XMLHttpRequest) {
                            loading.html("<img src=\"./css/images/ui-anim_basic_16x16.gif\"></img>");
                        }
                    };
                    if (value1["beforeSend"] == undefined)
                        $.extend(existingRules, extendRule);

                    extendRule = {
                        complete: function(XMLHttpRequest, textStatus) {
                            loading.html("");
                        }
                    };
                    if (value1["complete"] == undefined)
                        $.extend(existingRules, extendRule);

                    extendRule = {
                        error: function() {
                            loading.html("出错了！");
                        }
                    };
                    if (value1["error"] == undefined)
                        $.extend(existingRules, extendRule);
                    value[key1] = existingRules;
                } //end if
            });
        });
        /*为异步验证增加处理逻辑 end*/
        _validator = $("#" + _FormID).validate({
            onkeyup: false,
            errorClass: _ErrClass, //验证错误提示信息的样式，默认error
            rules: _Rules, //验证规则
            messages: _Message, //验证错误提示信息设置
            onsubmit: _submit,

            errorElement: "div",
            errorPlacement: function(error, element) {
                var tip = $("#" + element.attr("id") + "Tip");
                if (tip.length > 0) {
                    $(tip).html(error);
                }
                else {
                    element.next("div").html(error);
                }
            }
        });


        // 手机号码验证
        $.validator.addMethod("isMobile", function(value, element) {
            var length = value.length;
            return this.optional(element) || (length == 11 && /^(13[0-9]|15[0-9]|18[0-9])\d{8}$/.test(value));
        }, "请正确填写您的手机号码，格式13800000000");

        // 股票号码验证
        $.validator.addMethod("isStockNo", function(value, element) {
            var reg = /^[0|6|3]\d{5}$/;
            return this.optional(element) || reg.test(value);
        }, "请正确填写您的手机号码，格式13888888888");

        // 中文字两个字节
        $.validator.addMethod("ChineseLength", function(value, element, param) {
            var length = value.length;
            for (var i = 0; i < value.length; i++) {
                if (value.charCodeAt(i) > 127) {
                    length++;
                }
            }
            return this.optional(element) || (length >= param[0] && length <= param[1]);
        }, "");
    },

    AddRule: function(ele, rule) {
        $("#" + ele).rules("add", rule)
    },

    Reset: function() {
        var _FormID = arguments[0] == undefined || arguments[0] == null ? this.FormID : arguments[0];
        var _validate = $("#" + _FormID).validate();
        if (null != _validate)
            _validate.resetForm();
    }
}

