$.extend($.fn.validatebox.defaults.rules, {
    minLength: {
        validator: function(value, param){
            return value.length >= param[0];
        },
        message: "输入内容长度不能小于{0}位"
    },
    fixLength: {
        validator: function(value, param){
            return value.length == param[0];
        },
        message: "输入内容长度必须为{0}位"
    }
});

$.extend($.fn.datebox.defaults, {
    formatter:function(date) {
        return date.format("yyyy-MM-dd");
    },
    parser:function(value) {
        var d = $.parseDate(value);
        return d != null ? d : new Date();
    }
});
/*
$.fn.datebox.defaults.formatter = function(date) {
    return date.format("yyyy-MM-dd");
};

$.fn.datebox.defaults.parser = function(value) {
    var d = $.parseDate(value);
    return d != null ? d : new Date();
};
*/

(function($) {
    /**
     * 序列化表单对象为json对象,主表数据转换
     */
    $.fn.extend({
        serializeJson:function() {
            var elem = $(this);
            var inputs = elem.find(":input[name]");
            if (!inputs || inputs.length == 0) return null;
            var json = {};
            $.each(inputs, function() {
                var elem = $(this);


                if (elem.is(':checkbox[checked=false]')) {
                    return;
                }
                if (elem.is(':radio[checked=false]')) {
                    return;
                }

                if (json.hasOwnProperty(elem.attr('name'))) {
                    if ((json[elem.attr('name')]).constructor != Array) {
                        json[elem.attr('name')] = [json[elem.attr('name')]];
                    }
                    if (elem.hasClass("easyui-numberbox")){
                    	json[elem.attr('name')].push(elem.floatValue());
                    }
                    else if (elem.hasClass("easyui-datebox")) {
                        json[elem.attr('name')].push(elem.dateValue() ? elem.dateValue().format("yyyy-MM-dd") : null);
                    }
                    else {
                        json[elem.attr('name')].push(elem.val());
                    }
                } else {
                	if (elem.hasClass("easyui-numberbox")) {
                        json[elem.attr('name')] = elem.floatValue();
                    }
                    else if (elem.hasClass("easyui-datebox")) {
                        json[elem.attr('name')] = elem.dateValue() ? elem.dateValue().format("yyyy-MM-dd") : null;
                    }
                    else {
                        json[elem.attr('name')] = elem.val();//this.value;
                    }
                }
                //这里需要处理日期，数字型
            });
            for (var k in json) {
                return json;
            }
            return null;
        },

        /**
         * 序列化表单对象为JsonArray对象,从表数据的转换
         * @param tagName 对象集合中的元素的tagname （通常是tr）
         */
        serializeJsonArray : function(tagName) {
            var tag = (tagName) ? tagName : "tr";
            var elem = $(this);
            var elementArray;
            elementArray = elem.find(tag);
            var jsonArray = [];
            $.each(elementArray, function() {
                var json = $(this).serializeJson();
                if (json) {
                    jsonArray.push(json);
                }
            });
            return jsonArray;
        },

        //        serializeJsonArrayTd : function(tagName) {
        //            var tag = (tagName) ? tagName : "tr";
        //            var elem = $(this);
        //            var elementArray;
        //            elementArray = elem.find(tag);
        //            var jsonArray = [];
        //            $.each(elementArray, function() {
        //                alert(1)
        //                var tdArray = $(this).find('td')
        //                alert(2)
        //                $.each(tdArray, function() {
        //                    var json = $(this).serializeJson();
        //                    alert($.toJSON(json))
        //                    if (json) {
        //                        jsonArray.push(json);
        //                    }
        //                })
        //            });
        //            return jsonArray;
        //        },

        /**
         * 将json对象转换成字符串设置到隐藏域中
         * @param json
         */
        setJson :function(json) {
            $(this).val($.toJSON(json));
        } ,

        dateValue:function() {
            return $.parseDate($(this).val());
        },
        
        floatValue:function(){
        	return $.isFloat($(this).val())?parseFloat($(this).val()):null;
        },
        
        integerValue:function(){
        	return $.isInteger($(this).val())?parseInt($(this).val()):null;
        },
        

        checkEmpty:function(msg, focus) {
            if ($.isEmpty($(this).val())) {
                alert(msg);
                if (focus) {
                    $(this).focus();
                }
                return true;
            }
            else {
                return false;
            }
        },

        checkDigit:function(msg, focus) {
            if (!$.isDigit($(this).val())) {
                alert(msg);
                if (focus) {
                    $(this).focus();
                }
                return false;
            }
            else
                return true;
        },

        checkInteger:function(msg, focus) {
            if (!$.isInteger($(this).val())) {
                alert(msg);
                if (focus) {
                    $(this).focus();
                }
                return false;
            }
            else {
                return true;
            }
        },

        checkFloat:function(msg, focus) {
            if (!$.isFloat($(this).val())) {
                alert(msg);
                if (focus) {
                    $(this).focus();
                }
                return false;
            }
            else {
                return true;
            }
        },


        checkDate:function(msg, focus) {
            if (!$.isDate($(this).val())) {
                alert(msg);
                if (focus) {
                    $(this).focus();
                }
                return false;
            }
            else {
                return true;
            }
        },

        checkEmail:function(msg, focus) {
            if (!$.isEmail($(this).val())) {
                alert(msg);
                if (focus) {
                    $(this).focus();
                }
                return false;
            }
            else {
                return true;
            }
        },

        checkUrl:function(msg, focus) {
            if (!$.isUrl($(this).val())) {
                alert(msg);
                if (focus) {
                    $(this).focus();
                }
                return false;
            }
            else {
                return true;
            }
        }
    });


})(jQuery);

