﻿// JavaScript Document
String.prototype.trim = function () {
	return this.replace(/(^\s*)|(\s*$)/g, "");
};
String.prototype.Ltrim = function () {
	return this.replace(/(^\s*)/g, "");
};
String.prototype.Rtrim = function () {
	return this.replace(/(\s*$)/g, "");
};
/**
* You can use this map like this : 
* var myMap = new Map();
* myMap.put("key",value);
* var key = myMap.get("key");
*/
function Map() {
	this.elements = new Array();
	this.size = function () {
		return this.elements.length;
	};
	this.isEmpty = function () {
		return (this.elements.length < 1);
	};
	this.clear = function () {
		this.elements = new Array();
	};
	this.put = function (_key, _value) {
		this.elements.push({key:_key, value:_value});
	};
	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;
	};
	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;
		}
	};
	this.element = function (_index) {
		if (_index < 0 || _index >= this.elements.length) {
			return null;
		}
		return this.elements[_index];
	};
	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;
	};
	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;
	};
	this.values = function () {
		var arr = new Array();
		for (i = 0; i < this.elements.length; i++) {
			arr.push(this.elements[i].value);
		}
		return arr;
	};
	this.keys = function () {
		var arr = new Array();
		for (i = 0; i < this.elements.length; i++) {
			arr.push(this.elements[i].key);
		}
		return arr;
	};
}

//----------------open new window -----------------------------
function popwin(url, width, height, resizable) {
	var Ttop = screen.availHeight / 2 - height / 2;
	var Tlef = screen.availWidth / 2 - width / 2;
	var feather = "width=" + width + ", height=" + height + ", fullscreen=0,toolbar=0,location=0,directories=0,status=0,menubar=0,scrollbars=1,resizable=" + resizable + ", top=" + Ttop + ",left=" + Tlef;
	window.open(url, "_blank", feather);
}
//open a new max window
function openMaxWin(url) {
	popwin(url, screen.availWidth, screen.availHeight, 1);
}

//open model windwo
function popmodelwin(url, obj, width, height) {
	var f = "dialogWidth=" + width + "px;dialogHeight=" + height + "px;help=no;status=no";
	return window.showModalDialog(url, obj, f);
}
//切分字符串
function splitString(str, sp) {
	var ary = new Array();
	str = str + sp;
	var temp = "";
	var i = 0;
	while (str.indexOf(sp) != -1) {
		temp = str.substring(0, str.indexOf(sp));
		ary[i] = temp;
		str = str.substring(str.indexOf(sp) + 1);
		i++;
	}
	return ary;
}
//获取当前的日期 yyyy-MM-dd
function getToday() {
	var date = new Date();
	var month = date.getMonth() + 1;
	if (month < 10) {
		month = "0" + month;
	}
	var day = date.getDay();
	if (day < 10) {
		day = "0" + day;
	}
	return date.getYear() + "-" + month + "-" + day;
}
//判断str是不是相关图片的后缀
function isPicture(str) {
	var temp = str.substring(str.lastIndexOf(".") + 1).toLowerCase();
	if (temp == "gif" || temp == "jpg" || temp == "png") {
		return true;
	} else {
		return false;
	}
}

//hide or show
function showOrHide(id) {
	if (document.getElementById(id).style.display == "none") {
		document.getElementById(id).style.display = "block";
		try {
			document.getElementById("m" + id).src = "/frt/images/collapse.gif";
		}
		catch (err) {
		}
	} else {
		document.getElementById(id).style.display = "none";
		try {
			document.getElementById("m" + id).src = "/frt/images/expand.gif";
		}
		catch (err) {
		}
	}
}
//全选、反选
function doCheck(id) {
	var a = document.getElementsByName(id);
	var n = a.length;
	for (var i = 0; i < n; i++) {
		if (a[i].disabled != true) {
			a[i].checked = window.event.srcElement.checked;
		}
	}
}
//单选框选择
function radioCheck(id, value) {
	var a = document.getElementsByName(id);
	var n = a.length;
	for (var i = 0; i < n; i++) {
		if (a[i].value == value) {
			a[i].checked = true;
		}
	}
}
//单选框选择
function radioPutValue(id, value) {
	var a = document.getElementsByName(id);
	var n = a.length;
	for (var i = 0; i < n; i++) {
		if (a[i].value == value) {
			a[i].checked = true;
		}else{
			a[i].checked = false;
		}
	}
}
//返回单选框选择的值
function radioGetValue(id) {
	var a = document.getElementsByName(id);
	var n = a.length;
	for (var i = 0; i < n; i++) {
		if (a[i].checked) {
			return a[i].value;
		}
	}
	return null;
}
//复选框选择时，判断是否选了一个
function isOneCheck(id) {
	var a = document.getElementsByName(id);
	var n = a.length;
	var j = 0;
	for (var i = 0; i < n; i++) {
		if (a[i].checked == true) {
			j++;
		}
	}
	if (j == 1) {
		return true;
	} else {
		return false;
	}
}

//复选框选择时，判断是否选择了
function isDoCheck(id, label) {
	var a = document.getElementsByName(id);
	var n = a.length;
	var j = 0;
	for (var i = 0; i < n; i++) {
		if (a[i].checked == true) {
			j++;
		}
	}
	if (j == 0) {
		alert(label + "\u5fc5\u987b\u81f3\u5c11\u9009\u62e9\u4e00\u9879\uff01");
		return false;
	} else {
		return true;
	}
}
//判断必须且只能选择一条记录
function checkSingle(id) {
	if (!isDoCheck(id, "")) {
		return false;
	} else {
		if (!isOneCheck(id)) {
			alert("\u53ea\u80fd\u9009\u62e9\u4e00\u6761\u8bb0\u5f55!");
			return false;
		}
	}
	return true;
}
//去除字符串左边的空格
function LTrim(s) {
	for (var i = 0; i < s.length; i++) {
		if (s.charAt(i) != " ") {
			return s.substring(i, s.length);
		}
	}
	return "";
}

//去除字符串右边的空格
function RTrim(s) {
	for (var i = s.length - 1; i >= 0; i--) {
		if (s.charAt(i) != " ") {
			return s.substring(0, i + 1);
		}
	}
	return "";
}

//去除字符串两边的空格
function Trim(s) {
	return RTrim(LTrim(s));
}

//去除FORM中所有类型为text的内容的两边的空格
function formTrim(form) {
	for (var i = 0; i < form.elements.length; i++) {
		if (form.elements[i].type == "text") {
			form.elements[i].value = Trim(form.elements[i].value);
		}
	}
}

//检查身份证号码是否正确
function checkPersonIdandgetValue(control, ad_birthday, as_sex, empty,cardtypeid) {
	control.value = Trim(control.value);
	var year;
	var month;
	var day;
	var ls_tmp;
	var if_idcard=true;
	if (empty == "0" && (control.value == "" || control.value.length == 0)) {
		return true;
	}
	if (empty == "1") {
		if (control.value == "" || control.value.length == 0) {
			control.select();
			alert("\u8eab\u4efd\u8bc1\u53f7\u7801\u5f55\u5165\u7684\u6570\u636e\u4e0d\u80fd\u4e3a\u7a7a");
			return false;
		}
	}
	if(cardtypeid==null || (cardtypeid.options[cardtypeid.selectedIndex].text).indexOf("身份证")<0)
		if_idcard = false;

	if (control.value != "" && if_idcard) {
		if (control.value.length == 15) {
			if (!isFixedNumberValue(control.value, "\u8eab\u4efd\u8bc1", "1")) {
				control.select();
				return false;
			}
			year = "19" + control.value.substr(6, 2);
			month = control.value.substr(8, 2);
			day = control.value.substr(10, 2);
			if (!isDateNumberFormat(month, day, year)) {      //检验身份证号码中的出生日期部分是否为合法日期
				alert("\u8eab\u4efd\u8bc1\u53f7\u7801\u65e5\u671f\u90e8\u5206\u9519\u8bef\uff01" + year + "-" + month + "-" + day);
				control.select();
				return false;
			}
			ls_tmp = year + "-" + month + "-" + day;
			ad_birthday.value = ls_tmp;			
			if (control.value.substr(14, 1) % 2 == 1) {  //身份证号码的最后一位是否为奇数
				as_sex.value = "1";
			} else {
				if (control.value.substr(14, 1) % 2 == 0) {
					as_sex.value = "2";
				} else {
					as_sex.value = "9";
				}
			}
			return true;
		}
		if (control.value.length == 18) {
			if (!isFixedNumberValue(control.value.substr(0, 17), "\u8eab\u4efd\u8bc1", "1")) {
				control.select();
				return false;
			}
			var ls_sfz;
			var ls_sign = "";
			var ls_calculatesign;
			var li_valid;
			var li_count;
			var li_charp;
			var li_result;
			ls_sfz = control.value;
			ls_sign = ls_sfz.substr(17, 1);
			ls_sfz = ls_sfz.substr(0, 17);
			year = control.value.substr(6, 4);
			month = control.value.substr(10, 2);
			day = control.value.substr(12, 2);
			if (!isDateNumberFormat(month, day, year)) {
				alert("\u8f93\u5165\u7684\u8eab\u4efd\u8bc1\u51fa\u751f\u5e74\u6708\u4e0d\u5408\u6cd5!!!");
				control.focus();
				return false;
			}
			li_valid = 0;
			for (li_count = 17; li_count >= 1; li_count--) {
				if (isNaN(parseInt(ls_sfz.substr(li_count - 1, 1)))) {
					alert("\u8f93\u5165\u7684\u8eab\u4efd\u8bc1\u4e2d\u6709\u4e0d\u5408\u6cd5\u7684\u5b57\u7b26!");
					control.select();
					return false;
				}
				li_valid = li_valid + (Math.pow(2, li_count) % 11) * ls_sfz.substr(17 - li_count, 1);
			}
			li_charp = li_valid % 11;
			if (li_charp == 0) {
				ls_calculatesign = "1";
			}
			if (li_charp == 1) {
				ls_calculatesign = "0";
			}
			if (li_charp == 2) {
				ls_calculatesign = "X";
			}
			if (li_charp == 3) {
				ls_calculatesign = "9";
			}
			if (li_charp == 4) {
				ls_calculatesign = "8";
			}
			if (li_charp == 5) {
				ls_calculatesign = "7";
			}
			if (li_charp == 6) {
				ls_calculatesign = "6";
			}
			if (li_charp == 7) {
				ls_calculatesign = "5";
			}
			if (li_charp == 8) {
				ls_calculatesign = "4";
			}
			if (li_charp == 9) {
				ls_calculatesign = "3";
			}
			if (li_charp == 10) {
				ls_calculatesign = "2";
			}
			if (ls_sign.length == 1 && ls_sign != ls_calculatesign) {
				alert("\u8f93\u5165\u7684\u8eab\u4efd\u8bc1\u6821\u9a8c\u4f4d\u4e0d\u5408\u6cd5!!!");
				control.select();
				return false;
			}
			ls_tmp = control.value.substr(6, 4) + "-" + control.value.substr(10, 2) + "-" + control.value.substr(12, 2);
			ad_birthday.value = ls_tmp;
			if (control.value.substr(16, 1) % 2 == 1) {
				as_sex.value = "1";
			} else {
				if (control.value.substr(16, 1) % 2 == 0) {
					as_sex.value = "2";
				} else {
					as_sex.value = "9";
				}
			}
			return true;
		} else {
			alert("\u8eab\u4efd\u8bc1\u53f7\u7801\u957f\u5ea6\u9519\u8bef\uff01");
			control.select();
			return false;
		}
	}
	return true;
}

//录入的数据为月 日 年
function isDateNumberFormat(M, D, Y) {
	Months = new Array(31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31);
	Leap = false;
	if ((Y % 4 == 0) && ((Y % 100 != 0) || (Y % 400 == 0))) {
		Leap = true;
	}
	if ((D < 1) || (D > 31) || (M < 1) || (M > 12) || (Y < 0)) {
		return (false);
	}
	if ((D > Months[M - 1]) && !((M == 2) && (D > 28))) {
		return (false);
	}
	if (!(Leap) && (M == 2) && (D > 28)) {
		return (false);
	}
	if ((Leap) && (M == 2) && (D > 29)) {
		return (false);
	}
	return true;
}
function isRequired(field, label) {
	if (Trim(field.value) == "") {
	    alert(label + "\u4e0d\u80fd\u4e3a\u7a7a!");
		if (field.type != "hidden") {
			field.focus();
		}
		return false;
	}
	return true;
}
//放到form中,  onsubmit = 'return validateForm(this)'
function validateForm(formobj) {
	try {
		for (var i = 0; i < formobj.elements.length; i++) {
			var obj = formobj.elements[i];
			//if (obj.type == "text" || obj.type == "password" || obj.type == "textarea" || obj.type == "checkbox" || obj.type == "radio" || obj.type == "hidden" || obj.type == "select-one" || obj.type == "select-multiple") {
			if (obj.type == "text" || obj.type == "password" || obj.type == "textarea" || obj.type == "checkbox" || obj.type == "radio" || obj.type == "hidden" || obj.type == "select-one" || obj.type == "select-multiple") {
				try {
					if (!(obj.type == "text" && obj.disabled)) {
						if (obj.onchange != null && !obj.onchange()) {   //验证不通过，则返回
			      	//如果不是TAB页面，则得到焦点后退出
							var oTab0 = $("tabs0head0");
							if (oTab0 == null) {
								if (obj.type != "hidden") {
									obj.focus();
								}
								return false;
							}
			      	
			      	//如果是TAB页面，则循环TAB页面得到焦点
							for (var k = 0; k < 20; k++) {
								try {
									var oTab = $("tabs0head" + k);
									if (null == oTab) {
										break;
									}
									if (null != oTab) {
										oTab.click();
									}
									if (obj.type != "hidden") {
										obj.focus();
									}
									break;
								}
								catch (e) {
								}
							}
							return false;
						}
					}
				}
				catch (e1) {
		      //如果是TAB页面，则循环TAB页面得到焦点
					for (var k = 0; k < 20; k++) {
						try {
							var oTab = $("tabs0head" + k);
							if (null == oTab) {
								break;
							}
							if (null != oTab) {
								oTab.click();
							}
							if (obj.type != "hidden") {
								obj.focus();
							}
							obj.onchange();
							return false;
						}
						catch (e) {
						}
					}
					alert(obj.name + "\u5bf9\u8c61\u8c03\u7528onchanged\u4e8b\u4ef6\u51fa\u9519\uff01");
					alert(e1.message);
					return false;
				}
				
				if (obj.type == "text" && ((obj.value.length * 2) > obj.maxLength && !obj.readOnly)) {
					//alert(obj.value);
					//alert(obj.maxLength);
					//alert(getByteLength(obj.value));
					if ((getByteLength(obj.value) > obj.maxLength) &&(obj.maxLength>0)) {
						obj.focus();
						//var obj_label = document.getElementById(obj.name + label); //修改之前，在firfox 下有问题
						var obj_label = document.getElementById(obj.name + 'label');
						//alert(obj.name);
						//alert(label);
						//var obj_label = document.getElementById(obj.name);
						if (obj_label) {
							alert(obj_label.innerText.substring(0, obj_label.innerText.length - 1) + "\u7684\u957f\u5ea6\u6700\u591a\u662f" + obj.maxLength + "\u4e2a\u82f1\u6587\u5b57\u7b26\u6216" + (obj.maxLength / 2) + "\u4e2a\u6c49\u5b57");
						} else {
							alert(obj.name + "\u7684\u957f\u5ea6\u6700\u591a\u662f" + obj.maxLength + "\u4e2a\u82f1\u6587\u5b57\u7b26\u6216" + (obj.maxLength / 2) + "\u4e2a\u6c49\u5b57");
						}
						return false;
					}
				}
			}
		}
	}
	catch (e) {
		alert(e.message);
	}
	return true;
}
function getByteLength(str) {
	var i, len = 0;
	for (i = 0; i < str.length; i++) {
		len++;
		if (str.charCodeAt(i) > 256) {
			len++;
		}
	}
	return len;
}
//录入的数据为EMAIL
function isFixedEmailAddress(inputemail, inputmessage, mindata, maxdata, empty) {
	var email = inputemail;
	var index = email.value.length;
	var lastchar = email.value.substring(index - 1, index);
	var message = inputmessage;
	var mindatas = mindata;
	var maxdatas = maxdata;
	var isempty = empty;
	if (isempty == "1") {
		if (Trim(email.value) == "") {
			inputemail.focus();
			alert(message + "  \u9879\u5f55\u5165\u7684\u6570\u636e\u4e0d\u80fd\u4e3a\u7a7a");
			return false;
		}
	}
	if (Trim(email.value) != "") {
		if ((index < mindatas) || (index > maxdatas)) {
			inputemail.focus();
			alert(message + "  \u9879\u5f55\u5165\u7684\u6570\u636e\u6709\u8bef\uff0c\u5f55\u5165\u7684\u6570\u636e\u5e94\u8be5\u5728" + mindatas + "-" + maxdatas + "\u4e2a\u5b57\u7b26\u4e4b\u95f4");
			return false;
		} else {
			if (email.value.indexOf("@") < 1) {
				inputemail.focus();
				alert(message + "  \u9879\u90ae\u4ef6\u5730\u5740\u683c\u5f0f\u6709\u8bef\u3002\u8bf7\u68c0\u6d4b\u662f\u5426\u6709'@'");
				return false;
			}

//    if (email.value.indexOf(".")<5)
//    {
//      alert(message+"  项邮件地址格式有误。请检查是否含有'.'");
//      return false;
//    }
			if ((lastchar == ".") || (lastchar == "@")) {
				inputemail.focus();
				alert(message + "  \u9879\u90ae\u4ef6\u5730\u5740\u683c\u5f0f\u6709\u8bef, \u4e0d\u80fd\u4ee5\u7b26\u53f7'@'\u6216'.'\u7ed3\u5c3e");
				return false;
			}
		}
	}
	return true;
}
//是否是数字
function isFixedNum(inputnumber, inputmessage, empty) {
	var number = inputnumber;
	var Letters = "0123456789";
	var index = number.value.length;
	if (empty == "1" && index == 0) {
		inputnumber.focus();
		alert(inputmessage + "  \u9879\u5f55\u5165\u7684\u6570\u636e\u4e0d\u80fd\u4e3a\u7a7a");
		return false;
	}
	if (empty == "0" && index == 0) {
		return true;
	}
	if (isNaN(number.value)) {
		inputnumber.focus();
		inputnumber.select();
		alert(inputmessage + " \u9879\u5fc5\u987b\u5f55\u5165\u6570\u5b57");
		return false;
	}

	if (parseInt(number.value) !=number.value) {
		alert(inputmessage + " 只能输入整数。");
		return false;
	}
	return true;
}
//是否是数字
function isFixedNumber(inputnumber, inputmessage, empty) {
	var number = inputnumber;
	var Letters = "0123456789.";
	var index = number.value.length;
	if (empty == "1" && index == 0) {
		inputnumber.focus();
		alert(inputmessage + "  \u9879\u5f55\u5165\u7684\u6570\u636e\u4e0d\u80fd\u4e3a\u7a7a");
		return false;
	}
	if (empty == "0" && index == 0) {
		return true;
	}
	if (isNaN(number.value)) {
		inputnumber.focus();
		inputnumber.select();
		alert(inputmessage + " \u9879\u5fc5\u987b\u5f55\u5165\u6570\u5b57");
		return false;
	}
	if (parseInt(number.value) < 0) {
		alert(inputmessage + " \u9879\u4e0d\u80fd\u5c0f\u4e8e0\uff01");
		return false;
	}
	return true;
}
//是否是数字
function isFixedNumberValue(inputnumber, inputmessage, empty) {
	var index = inputnumber.length;
	if (empty == "1" && index == 0) {
		alert(inputmessage + " \u9879\u4e0d\u80fd\u4e3a\u7a7a");
		return false;
	}
	if (empty == "0" && index == 0) {
		return true;
	}
	if (isNaN(inputnumber)) {
		alert(inputmessage + " \u9879\u5fc5\u987b\u5f55\u5165\u6570\u5b57");
		return false;
	}
	if (parseInt(inputnumber) < 0) {
		alert(inputmessage + " \u9879\u4e0d\u80fd\u5c0f\u4e8e0\uff01");
		return false;
	}
	return true;
}
//判断录入是否为汉字
function isFixedHanzi(inputhanzi, inputmessage, empty) {
	inputhanzi.value = Trim(inputhanzi.value);
	var index = inputhanzi.value.length;
	if (empty == "1" && index == 0) {
		inputhanzi.focus();
		alert(inputmessage + "  \u9879\u5f55\u5165\u7684\u6570\u636e\u4e0d\u80fd\u4e3a\u7a7a");
		return false;
	}
	if (empty == "0" && index == 0) {
		return true;
	}
	for (i = 0; i < index; i++) {
		var code = inputhanzi.value.charCodeAt(i);
		if (code <= 255) {         //当为汉字时长度加2，否则长度加1
		alert(inputmessage + "  \u9879\u5f55\u5165\u7684\u6570\u636e\u53ea\u80fd\u4e3a\u6c49\u5b57");
			return false;
		}
	}
	return true;
}
//是否手机号码
function isMobileNumber(inputmobile, inputmessage, empty) {
	inputmobile.value = Trim(inputmobile.value);
	var index = inputmobile.value.length;
	if (empty == "1" && index == 0) {
		inputmobile.focus();
		alert(inputmessage + "  \u9879\u5f55\u5165\u7684\u6570\u636e\u4e0d\u80fd\u4e3a\u7a7a");
		return false;
	}
	if (empty == "0" && index == 0) {
		return true;
	}
	if (!isFixedNumber(inputmobile, inputmessage, empty)) {
		return false;
	}
	if ((index != 11 || (inputmobile.value.substr(0, 2) != "15" && inputmobile.value.substr(0, 2) != "13")) && (index != 8 || inputmobile.value.substr(0, 1) != "8")) {
		alert(inputmessage + "  \u9879\u5f55\u5165\u7684\u6570\u636e\u53ea\u80fd\u4e3a11\u4f4d,13\u621615\u5f00\u5934\u7684\u6570\u5b57\uff0c\u6216\u8005\u662f8\u4f4d\uff0c8\u5f00\u5934\u7684\u6210\u90fd\u672c\u5730\u7535\u8bdd\u53f7\u7801\uff01");
		inputmobile.focus();
		return false;
	}
	return true;
}
/*  div窗口效果 打开数据的选择框 
	使用方法:
	在父页面：
	一：openDivWindow(name,cnname,width,height,objs,nobj) 打开div窗口
	name :唯一标志的div名字，不能与页面其他元素重名
	cnname:窗口显示名字
	width:窗口宽度
	height:窗口长度
	objs: new Array(obj1,obj2,obj3...),obj1,obj2,obj3...为当前页面要被修改的页面对象
	nobj: 窗口打开位置所在的页面对象
	url:子页面的url
	在子页面：
	一：使用DivChoose(new Array(value1,value2,value3....))回传数据，其中value1,value2,value3...为回显的值，与父页面第一步objs的页面元素一一对应
*/
var offsetTop_in=0;
var offsetLeft_in=0;
function openDivWindow_offset(name, cnname, width, height, objs, nobj_in,offsetTop,offsetLeft,url) {
	if(offsetTop==null || offsetTop==''){}else{offsetTop_in=offsetTop;}
	if(offsetLeft==null || offsetLeft==''){}else{offsetLeft_in=offsetLeft;}
	openDivWindow(name, cnname, width, height, objs, nobj_in, url);	

}
var divLayerObjMap = new Map();
function openDivWindow(name, cnname, width, height, objs, nobj_in, url) {
	divLayerObjMap.put(name, objs);
	
	var nobj;
	//alert(nobj_in);
	//alert(typeof(nobj_in));
	if(typeof(nobj_in)=='object' || nobj_in.indexOf("$")>=0){
		nobj=nobj_in;
	}else{
		nobj=document.getElementById(nobj_in);
	}
	
	var t = nobj.offsetTop;
	var l = nobj.offsetLeft;
	
	while (nobj = nobj.offsetParent) {
		t += nobj.offsetTop;
		l += nobj.offsetLeft;
	}
	t+=parseInt(offsetTop_in,10);
	l+=parseInt(offsetLeft_in,10);

	//treeLayer.style.pixelLeft = l + 1;
	//treeLayer.style.pixelTop = t + 21;
	var condition = eval("typeof " + name + "=='undefined'");
	//if (condition) {
		createDivWindow(name, cnname, width, height,(t+21),l);
	//}
	$("frm" + name).src = url;
	//eval("treeLayer=" + name);
	treeLayer = document.getElementById(name);
	treeLayer.style.visibility = "visible";
/*
	var nobj;
	if(nobj_in.indexOf("$")>=0){
		nobj=nobj_in;
	}else{
		nobj=document.getElementById(nobj_in);
	}
	var t = nobj.offsetTop;
	var l = nobj.offsetLeft;
	alert(t);
	while (nobj = nobj.offsetParent) {
		t += nobj.offsetTop;
		l += nobj.offsetLeft;
	}
	treeLayer.style.pixelLeft = l + 1;
	//treeLayer.style.pixelTop = t + 21;
	//treeLayer.style.Left = l + 1;
	//treeLayer.style.Top = t + 21;
	//treeLayer.style.pixelLeft = l + 1;
	//treeLayer.style.offsetTop = t + 21;
	//treeLayer.setAttribute("top", (t + 21)+" px");
	*/
}
function createDivWindow(name, cnname, width, height,top,left) {
	var WebBrowser = "<div id=\"" + name + "\" style=\"position:absolute;top:"+top+"px; left:"+left+"px; width:" + width + "px; height:" + height + "px; visibility: hidden;\">" + "<table width=" + width + "px height=" + height + "px border=1 cellspacing=0 bgcolor=#ffffFF bordercolorlight=#6699cc bordercolordark='#ECF5FF'>" + "<tr height=\"12px\" bgcolor=\"#E6E6E6\">" + "<td align=\"left\" width=" + (width - 40) + "px>" + cnname + "</td>" + "<td align=\"center\" width=\"40px\" onmouseover= \"this.style.cursor='hand'\"   onmouseout= \"this.style.cursor= 'normal'\" style=\"cursor:hand\" onclick=\"javascript:clearVal('" + name + "');document.getElementById('" + name + "').style.visibility='Hidden';\" title=\"\u6e05\u7a7a\">" + "<font color='red' style=\"font-weight: bold\">清空</font>" + "</td>" + "<td align=\"center\" width=\"40px\" onmouseover= \"this.style.cursor='hand'\"   onmouseout= \"this.style.cursor= 'normal'\" style=\"cursor:hand\" onclick=\"javascript:document.getElementById('" + name + "').style.visibility='Hidden';\" title=\"\u5173\u95ed\">" + "<font color='red' style=\"font-weight: bold\">关闭</font>" + "</td>" + "</tr>" + "<tr height=\""+(height-12)+"px\">" + "<td colspan=\"3\">" + "<IFRAME name=\"frm" + name + "\" id=\"frm" + name + "\" marginWidth=0 marginHeight=0  frameBorder=0 width=\"100%\" height=\"100%\" scrolling=yes BORDERCOLOR=#000000></IFRAME>" + "</td>" + "</tr>" + "</table>" + "</div>";
	//var WebBrowser = "<div id=\"" + name + "\" style=\"position:absolute;top:"+top+"px; left:"+left+"px; width:" + width + "px; height:" + height + "px; visibility:'';\">" + "<table width=" + width + "px height=" + height + "px border=1 cellspacing=0 bgcolor=#ffffFF bordercolorlight=#6699cc bordercolordark='#ECF5FF'>" + "<tr height=\"12px\" bgcolor=\"#E6E6E6\">" + "<td align=\"left\" width=" + (width - 40) + "px>" + cnname + "</td>" + "<td align=\"center\" width=\"40px\" onmouseover= \"this.style.cursor='hand'\"   onmouseout= \"this.style.cursor= 'normal'\" style=\"cursor:hand\" onclick=\"javascript:clearVal('" + name + "');document.getElementById('" + name + "').style.display='none';\" title=\"\u6e05\u7a7a\">" + "<font color='red' style=\"font-weight: bold\">清空</font>" + "</td>" + "<td align=\"center\" width=\"40px\" onmouseover= \"this.style.cursor='hand'\"   onmouseout= \"this.style.cursor= 'normal'\" style=\"cursor:hand\" onclick=\"javascript:document.getElementById('" + name + "').style.display='none';document.getElementById('" + name + "').style.visibility='Hidden';\" title=\"\u5173\u95ed\">" + "<font color='red' style=\"font-weight: bold\">关闭</font>" + "</td>" + "</tr>" + "<tr height=\""+(height-12)+"px\">" + "<td colspan=\"3\">" + "<IFRAME name=\"frm" + name + "\" id=\"frm" + name + "\" marginWidth=0 marginHeight=0  frameBorder=0 width=\"100%\" height=\"100%\" scrolling=yes BORDERCOLOR=#000000></IFRAME>" + "</td>" + "</tr>" + "</table>" + "</div>";
	/*document.body.insertAdjacentHTML("beforeEnd", WebBrowser); */
	//alert(document.getElementById(name).style.display);
	var document_body = document.body;
	insertHtml("beforeEnd",document_body,WebBrowser)
}
function clearVal(name) {
	var objs = divLayerObjMap.get(name);
	for (var i = 0; i < objs.length; i++) {
		//objs[i].value = "";
		if(typeof(objs[i])=='object' || objs[i].indexOf("$")>=0){
			if(objs[i] !=null){
				objs[i].value = "";
			}
		}else{
			if(document.getElementById(objs[i]) !=null){
				document.getElementById(objs[i]).value = "";
			}
		}
	}
}
/*
 * 在页面上点击时，给对象赋值
 * */
function DivChoose(values) {
	var name = self.name;
	var objs = parent.divLayerObjMap.get(name.substr(3));
	for (var i = 0; i < objs.length; i++) {
		//objs[i].value = values[i];		
		if(typeof(objs[i])=='object' || objs[i].indexOf("$")>=0){
			if(objs[i] !=null)
			objs[i].value = values[i];
		}else{
			if(parent.document.getElementById(objs[i]) !=null)
			parent.document.getElementById(objs[i]).value = values[i];
		}
	}
	parent.$(name.substr(3)).style.visibility = "Hidden";
	//parent.$(name.substr(3)).style.display = "none";
}



/***********div  打开窗口方法结束****************/
function isDigtalLength(textname, len) {
	var charcode = event.keyCode;
	if (charcode == 17) {
		kg = true;
		event.returnValue = true;
		return;
	}
	if (charcode == 86 && kg) {
		event.returnValue = true;
		return;
	}
	if (!(charcode >= 48 && charcode <= 57) && !(charcode >= 96 && charcode <= 105) && charcode != 8) {
		event.returnValue = false;
	}
	i = textname.value.length;
			//
	if (i >= len && charcode != 8) {
		event.returnValue = false;
	}
}

//鼠标移出
//obj:当前<tr>; iseven:是否偶数行
function mout(obj,iseven){
	if(iseven)
	   obj.style.backgroundColor='#F2F2F2';
    else
	   obj.style.backgroundColor='#FFFFFF';
	for (var i = 0; i < obj.childNodes.length; i++) {
		if(obj.childNodes[i] ==null || obj.childNodes[i].style==null)continue;
		obj.childNodes[i].style.color = '#000000';
		
		//obj.childNodes[i].style.fontWeight ="normal";
	}
}
//鼠标移入
//obj:当前<tr>; 
function mover(obj){
	obj.style.backgroundColor='#335EA8';
	for (var i = 0; i < obj.childNodes.length; i++) {
		if(obj.childNodes[i] ==null || obj.childNodes[i].style==null)continue;
		obj.childNodes[i].style.color = '#FFFFFF';
		//obj.childNodes[i].style.fontWeight ="bold";
	}
}

/*公用函数*/
// 判断浏览器
brower = function() {
var ua = navigator.userAgent.toLowerCase();
var os = new Object();
os.isFirefox = ua.indexOf ('gecko') != -1;
os.isOpera = ua.indexOf ('opera') != -1;
os.isIE = !os.isOpera && ua.indexOf ('msie') != -1;
os.isIE7 = os.isIE && ua.indexOf ('7.0') != -1;
return os;
},
// 生成元素到refNode
appendElement = function(tagName, Attribute, strHtml, refNode) {
var cEle = document.createElement(tagName);
// 属性值
for (var i in Attribute){
cEle.setAttribute(i, Attribute[i]);
}
cEle.innerHTML = strHtml;
refNode.appendChild(cEle);
return cEle;
},
// 获取元素坐标
getCoords = function(node){
var x = node.offsetLeft;
var y = node.offsetTop;
var parent = node.offsetParent;
while (parent != null){
x += parent.offsetLeft;
y += parent.offsetTop;
parent = parent.offsetParent;
}
return {x: x, y: y};
},
// 事件操作(可保留原有事件)
eventListeners = [],
findEventListener = function(node, event, handler){
var i;
for (i in eventListeners){
if (eventListeners[i].node == node && eventListeners[i].event == event && eventListeners[i].handler == handler){
return i;
}
}
return null;
},
myAddEventListener = function(node, event, handler){
if (findEventListener(node, event, handler) != null){
return;
}
if (!node.addEventListener){
node.attachEvent('on' + event, handler);
}else{
node.addEventListener(event, handler, false);
}
eventListeners.push({node: node, event: event, handler: handler});
},
removeEventListenerIndex = function(index){
var eventListener = eventListeners[index];
delete eventListeners[index];
if (!eventListener.node.removeEventListener){
eventListener.node.detachEvent('on' + eventListener.event,
eventListener.handler);
}else{
eventListener.node.removeEventListener(eventListener.event,
eventListener.handler, false);
}
},
myRemoveEventListener = function(node, event, handler){
var index = findEventListener(node, event, handler);
if (index == null) return;
removeEventListenerIndex(index);
},
cleanupEventListeners = function(){
var i;
for (i = eventListeners.length; i > 0; i--){
if (eventListeners[i] != undefined){
removeEventListenerIndex(i);
}
}
};
/////////////////////////////
/*======================================================
- statInput 输入限制统计
- By Mudoo 2008.5
- 长度超出_max的话就截取...貌似没有更好的办法了
======================================================*/
function statInput(e, _max, _exp) {
e			= $(e);
_max		= parseInt(_max);
_max		= isNaN(_max) ? 0 : _max;
_exp		= _exp==undefined ? {} : _exp;
if(e==null || _max==0) {
alert('statInput初始化失败！');
return;
}
var
// 浏览器
_brower		= brower();
// 输出对象
_objMax		= _exp._max==undefined ?	null : $(_exp._max),
_objTotal	= _exp._total==undefined ?	null : $(_exp._total),
_objLeft	= _exp._left==undefined ?	null : $(_exp._left),
// 弹出提示
_hint		= _exp._hint==undefined ?	null : _exp._hint;
// 初始统计
if(_objMax!=null)	_objMax.innerHTML	= _max;
if(_objTotal!=null)	_objTotal.innerHTML	= 0;
if(_objLeft!=null)	_objLeft.innerHTML	= 0;
// 设置监听事件
// 输入这个方法比较好.
// 但是Opera下中文输入跟粘贴不能正确统计...相当BT的东西...
// 如果不考虑Opera的话就用这个吧.否则就老老实实用计时器.
if(_brower.isIE) {
myAddEventListener(e, "propertychange", stat);
}else{
myAddEventListener(e, "input", stat);
}
/*
// 用计时器的话就什么浏览器都支持了.
var _intDo = null;
myAddEventListener(e, "focus", setListen);
myAddEventListener(e, "blur", remListen);
function setListen() {
_intDo = setInterval(stat, 10);
}
function remListen() {
clearInterval(_intDo);
}
*/
// 统计函数
var _len, _olen, _lastRN, _sTop;
_olen = _len = 0;
function stat() {
_len = e.value.length;
if(_len==_olen) return;		// 防止用计时器监听时做无谓的牺牲...
if(_len>_max) {
_sTop = e.scrollTop;
// 避免IE最后俩字符为'\r\n'.导致崩溃...
_lastRN = (e.value.substr(_max-1, 2) == "\r\n");
e.value = e.value.substr(0, (_lastRN ? _max-1 : _max));
if(_hint==true) popHint(e, "您输入的字已经超过限制，不能再输入~~.");
// 解决FF老是跑回顶部
if(_brower.isFirefox) e.scrollTop = e.scrollHeight;
}
_olen = _len = e.value.length;

// 显示已输入字数
if($('stat_total_'+e.name)!=null) $('stat_total_'+e.name).innerHTML = _len;
// 显示剩余可输入字数 
if($('stat_left_'+e.name)!=null) $('stat_left_'+e.name).innerHTML = (_max-_len)<0 ? 0 : (_max-_len);
}
stat();
}
/*********************************************
- POPHint 弹出提示框
- By Mudoo 2008.5
**********************************************/
function popHint(obj, msg, initValues) {
var
_obj = $(obj),
_objHint = $("popHint"),
_msg = msg,
_init = initValues;
// 初始化失败...
if(_obj==undefined || _msg==undefined || _msg=="") return;
// 设置初始值
_init = _init==undefined ? {_type : "wrong", _event : "click"} : _init;
// obj如果不可见。设置弹出对象为obj父元素
if(_obj.style.display=='none' || _obj.style.visibility=='hidden' || _obj.getAttribute('type')=='hidden') _obj = _obj.parentNode;
var
_type = null,
_event = null,
_place = getCoords(_obj),
_marTop = null,
_objText = $("popHintText"),
// 初始化
init = function() {
var _hint = _obj.getAttribute("hint");
if(_hint=="false") return;
// 有的时候initValues不为空.但是只设置一个值...避免发生错误.再次设置初始值...
_type = _init._type==undefined ? "wrong" : _init._type;
_type = _type.toLowerCase();
_event = _init._event==undefined ? "click" : _init._event;
_event = _event.toLowerCase();
// 好了.输出...
var _Html = "<div id=\"popHeader\">" +
"	<div class=\"popLeft\"></div>" +
"	<div id=\"popHintText\"></div>" +
"	<div class=\"popRight\"></div>" +
"</div>"+
"<div class=\"popAngle\"><span></span></div>"
if(_objHint==null) {
_objHint = appendElement("div", {"id" : "popHint"}, _Html, document.body);
_objHint.style.display = "none";
_objText = $("popHintText");
}
show();
},
// 显示
show = function() {
_objHint.style.display = "";
_marTop = _objHint.offsetHeight;
_msg = "<span class=\"popIcon "+ _type +"\"></span>"+ _msg;
_objText.innerHTML = _msg;
_objHint.style.left = _place.x +"px";
_objHint.style.top = (_place.y-_marTop+8) +"px";
// 关闭触发事件
switch(_event) {
case "blur" :
myAddEventListener(_obj, 'blur', hide);
break;
//default :
case "click" :
myAddEventListener(document, 'mousedown', hide);
break;
//这里可以自己扩展很多事件...
}
},
// 关闭
hide = function() {
_objHint.style.display = "none";
_objText.innerHTML = "";
// 移除关闭触发事件
myRemoveEventListener(_obj, 'blur', hide);
myRemoveEventListener(document, 'mousedown', hide);
};
init();
}

//var alert = function (msg){
  //  window.alert(ymPrompt);
    //if(ymPrompt){
    //	ymPrompt.alert(msg)
    //}
   // else{
   // 	window.alert(msg);
   // }
	
//}
function insertHtml(where, el, html){
    where = where.toLowerCase();
    if(el.insertAdjacentHTML){
        switch(where){
            case "beforebegin":
                el.insertAdjacentHTML('BeforeBegin', html);
                return el.previousSibling;
            case "afterbegin":
                el.insertAdjacentHTML('AfterBegin', html);
                return el.firstChild;
            case "beforeend":
                el.insertAdjacentHTML('BeforeEnd', html);
                return el.lastChild;
            case "afterend":
                el.insertAdjacentHTML('AfterEnd', html);
                return el.nextSibling;
        }
        throw 'Illegal insertion point -> "' + where + '"';
    }
var range = el.ownerDocument.createRange();
    var frag;
    switch(where){
         case "beforebegin":
            range.setStartBefore(el);
            frag = range.createContextualFragment(html);
            el.parentNode.insertBefore(frag, el);
            return el.previousSibling;
         case "afterbegin":
            if(el.firstChild){
                range.setStartBefore(el.firstChild);
                frag = range.createContextualFragment(html);
                el.insertBefore(frag, el.firstChild);
                return el.firstChild;
            }else{
                el.innerHTML = html;
                return el.firstChild;
            }
        case "beforeend":
            if(el.lastChild){
                range.setStartAfter(el.lastChild);
                frag = range.createContextualFragment(html);
                el.appendChild(frag);
                //return el.lastChild;
            }else{
                el.innerHTML = html;
                //return el.lastChild;
            }
            return el.lastChild;
        case "afterend":
            range.setStartAfter(el);
            frag = range.createContextualFragment(html);
            el.parentNode.insertBefore(frag, el.nextSibling);
            return el.nextSibling;
        }
        throw 'Illegal insertion point -> "' + where + '"';
}
/*
 * 某个对象的click事件
 * 解决IE和firefox的事件
 * */
function objectClickByID(selectobjectID){
	  var o = document.getElementById(selectobjectID);   
	  if(document.all && typeof(document.all) =="object"){ //IE     
		  o.click();   
	  }else{   
		  var e = document.createEvent('MouseEvent');   
		  e.initEvent('click',false,false);   
		  o.dispatchEvent(e);   
	  }
}
/*
 * 根据输入的值，返回定义替换字符
 * */
function ChangeToCharter(in_value,repl_val){
	if(in_value==null || in_value.replace(" ","")=="")
		return repl_val;
	var len=in_value.length;
	var ret_val="";
	for (var i = 0; i < len; i++) {
		ret_val=ret_val+repl_val;
	}	 
	return ret_val;
}
/*
 * 根据输入的值，返回开始位置，返回 len 长度的值
 * */
function ReturnFromCharter(in_value,begin,len){
	if(in_value==null || in_value.replace(" ","")=="")
		return ""; 
	return in_value.substr(begin,len);
}
