//序列化表单为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();
		}
	});
});

// 监听输入内容,转换大写字母
function onInputChange(event, id, method) {
	var content = '';
	if (method == 'onpropertychange') {
		if (event.propertyName.toLowerCase() == "value") {
			content = event.srcElement.value;
		}
	} else {
		content = event.target.value;
	}
	
	if (content) {
		var upper = content.toUpperCase();
		$("#" + id).val(upper);

		if (id && id == "carrier_new") {
			$("#carrier").html(upper);
		}

		if (id && id == "destinationstation") {
			$("#reach_station").val(upper);
			$("#unlodingcode").val(upper);
		}

		if (id && id == "totalpiece") {
			$("#de_number").val(upper);
			$("#preparepiece").val(upper);//分单
			$("#preparetotalpiece").val(upper);//主单
		}

		if (id && id == "totalweight") {
			$("#de_weight").val(upper);
			$("#de_chweight").val(upper);
			$("#prepareweight").val(upper);//分单
			$("#preparetotalweight").val(upper);//主单
		}
		
		if (id && id == "co_company") {
			$("#co_name").val(upper);
		}

		if (id && id == "sh_company") {
			$("#sh_name").val(upper);
		}

	}
}

//判断数据是否为空
function isEmpty(data) {
	if (data == undefined || data == "undefined" || data == null
			|| data == "null" || data == "") {
		return true;
	} else {
		return false;
	}
}

function notEmpty(data) {
	return !isEmpty(data);
}

//获取下拉列表选中项的文本
function getSelectedText(eid) {
	var obj = document.getElementById(eid);
	for (i = 0; i < obj.length; i++) {
		if (obj[i].selected == true) {
			// 关键是通过option对象的innerText属性获取到选项文本
			return obj[i].innerText;
		}
	}
}

// 获取下拉列表选中项的值
function getSelectedValue(eid) {
	var obj = document.getElementById(eid);
	// 直接用其对象的value属性便可获取到
	return obj.value;
}