//序列化表单为json
(function($){  
    $.fn.serializeJson=function(){  
        var serializeObj={};  
        var array=this.serializeArray();  
        var str=this.serialize();  
        $(array).each(function(){  
            if(serializeObj[this.name]){  
                if($.isArray(serializeObj[this.name])){  
                    serializeObj[this.name].push(this.value);  
                }else{  
                    serializeObj[this.name]=[serializeObj[this.name],this.value];  
                }  
            }else{  
                serializeObj[this.name]=this.value;   
            }  
        });  
        return serializeObj;  
    };

    $(".checkBox").change(function(){
        if($(this).is(":checked")){
            $(this).val(1);
        }else{
            $(this).val(0);
        }
    });

    $(".date").click(function(){
        WdatePicker();
    });



})(jQuery);

//获取id 集合
function getIds() {
    var ids = [];
    var rows = $("#dg").datagrid('getChecked');
    $.each(rows,function(key,v){
        ids.push(v.id);
    });
    return ids;
}

//获取form信息
function loadFormJson(formName) {
    var items = $("." + formName);
    var groupValMap = new Map();
    var json = {};
    for (var i = 0; i < items.length; i++) {
        if (!groupValMap.get($(items[i]).attr('name'))) {
            groupValMap.put($(items[i]).attr('name'), []);
        }
        groupValMap.get($(items[i]).attr('name'))[groupValMap.get($(
            items[i]).attr('name')).length] = valueReplaceForm(items[i].value);
        json[$(items[i]).attr('name')] = groupValMap.get($(items[i]).attr(
            'name'));
    }
    for ( var attr in json) {
        if (json[attr]) {
            if (json[attr].length == 1) {
                json[attr] = json[attr][0];
            }
        }
    }
    return json;
}

function valueReplaceForm(v) {
    v = v.toString().replaceAll("\"", "&quot;");
    return v;
}

/**
 * Map对象,实现Map功能
 *
 *
 * size() 获取Map元素个数 isEmpty() 判断Map是否为空 clear() 删除Map所有元素 put(key, value)
 * 向Map中增加元素(key, value) remove(key) 删除指定key的元素,成功返回true,失败返回false get(key)
 * 获取指定key的元素值value,失败返回null element(index)
 * 获取指定索引的元素(使用element.key,element.value获取key和value),失败返回null containsKey(key)
 * 判断Map中是否含有指定key的元素 containsValue(value) 判断Map中是否含有指定value的元素 keys()
 * 获取Map中所有key的数组(array) values() 获取Map中所有value的数组(array)
 */
function Map() {
    this.elements = new Array();

    // 获取Map元素个数
    this.size = function() {
        return this.elements.length;
    },

        // 判断Map是否为空
        this.isEmpty = function() {
            return (this.elements.length < 1);
        },

        // 删除Map所有元素
        this.clear = function() {
            this.elements = new Array();
        },

        // 向Map中增加元素(key, value)
        this.put = function(_key, _value) {
            if (this.containsKey(_key) == true) {
                if (true || this.containsValue(_value)) {
                    if (this.remove(_key) == true) {
                        this.elements.push({
                            key : _key,
                            value : _value
                        });
                    }
                } else {
                    this.elements.push({
                        key : _key,
                        value : _value
                    });
                }
            } else {
                this.elements.push({
                    key : _key,
                    value : _value
                });
            }
        },

        // 删除指定key的元素,成功返回true,失败返回false
        this.remove = function(_key) {
            var bln = false;
            try {
                for (i = 0; i < this.elements.length; i++) {
                    if (this.elements[i].key == _key) {
                        this.elements.splice(i, 1);
                        return true;
                    }
                }
            } catch (e) {
                bln = false;
            }
            return bln;
        },

        // 获取指定key的元素值value,失败返回null
        this.get = function(_key) {
            try {
                for (i = 0; i < this.elements.length; i++) {
                    if (this.elements[i].key == _key) {
                        return this.elements[i].value;
                    }
                }
            } catch (e) {
                return null;
            }
        },

        // 获取指定索引的元素(使用element.key,element.value获取key和value),失败返回null
        this.element = function(_index) {
            if (_index < 0 || _index >= this.elements.length) {
                return null;
            }
            return this.elements[_index];
        },

        // 判断Map中是否含有指定key的元素
        this.containsKey = function(_key) {
            var bln = false;
            try {
                for (i = 0; i < this.elements.length; i++) {
                    if (this.elements[i].key == _key) {
                        bln = true;
                    }
                }
            } catch (e) {
                bln = false;
            }
            return bln;
        },

        // 判断Map中是否含有指定value的元素
        this.containsValue = function(_value) {
            var bln = false;
            try {
                for (i = 0; i < this.elements.length; i++) {
                    if (this.elements[i].value == _value) {
                        bln = true;
                    }
                }
            } catch (e) {
                bln = false;
            }
            return bln;
        },

        // 获取Map中所有key的数组(array)
        this.keys = function() {
            var arr = new Array();
            for (i = 0; i < this.elements.length; i++) {
                arr.push(this.elements[i].key);
            }
            return arr;
        },

        // 获取Map中所有value的数组(array)
        this.values = function() {
            var arr = new Array();
            for (i = 0; i < this.elements.length; i++) {
                arr.push(this.elements[i].value);
            }
            return arr;
        };

    String.prototype.replaceAll = function(reallyDo, replaceWith, ignoreCase) {
        if (!RegExp.prototype.isPrototypeOf(reallyDo)) {
            return this.replace(
                new RegExp(reallyDo, (ignoreCase ? "gi" : "g")),
                replaceWith);
        } else {
            return this.replace(reallyDo, replaceWith);
        }
    }

}


function getIds() {
    var ids = [];
    var rows = $("#dg").datagrid('getChecked');
    $.each(rows,function(key,v){
        ids.push(v.id);
    });
    return ids;
}


//回车键替代TAB键
$(function () { 
	$('input:text:first').focus(); 
		var $inp = $('input:text'); 
		$inp.bind('keydown', function (e) { 
		var key = e.which; 
		if (key == 13) { 
			e.preventDefault(); 
			var nxtIdx = $inp.index(this) + 1; 
			$(":input:text:eq(" + nxtIdx + ")").focus(); 
		} 
	}); 
		
	
});