//for ie 5.0+

/*
 * 表单数字、日期、时间字段格式化
 * 配置方法示例如下：
 * <pre>
 *   <!-- birthday字段为形如2005-02-28的日期格式 -->
 *   <input type="text" name="birthday" id="birthday" onFocus="fieldParse(this, 'date')" />
 *   <!-- datetime字段为形如2005-02-28 18:35的时间形式，小时按24时制计算 -->
 *   <input type="text" name="datetime" id="datetime" onFocus="fieldParse(this, 'time')" />
 *   <!-- number字段为数字 -->
 *   <input type="text" name="number" id="number" onFocus="fieldParse(this, 'num')" />
 *   <!-- number字段为范围在1到100之间的数字 -->
 *   <input type="text" name="number" id="number" onFocus="fieldParse(this, 'num@v(1,100)')" />
 *   <!-- number字段最多有4位整数，2位小数 -->
 *   <input type="text" name="number" id="number" onFocus="fieldParse(this, 'num@f(6,2)')" />
 *   <!-- number字段同时满足上面两个条件 -->
 *   <input type="text" name="number" id="number" onFocus="fieldParse(this, 'num@v(1,100)&f(6,2)')" />
 * </pre>
 * 在该字段失去焦点的时候将会自动进行数字/日期/时间的校验。
 */
var _inputField = null;
var _checkType = 0;
var TYPE_NUMBER = 1;
var TYPE_DATE = 2;
var TYPE_DAYTIME = 3;//形如2005-02-28 18:35的时间形式，小时按24时制计算
var _2bolShitKeyDown = false;
var valuescope = "";
fieldParse = function (fld, checktype) {
	_inputField = fld;
	_checkType = checktype;
	if (!_checkType) {
		return false;
	}
	var ft = _checkType.toUpperCase().trim();
	var pos = ft.indexOf("NUM");
	if (pos == 0) {
		_checkType = TYPE_NUMBER;
		valuescope = ft.substring(4);
	} else {
		if (ft == "DATE") {
			_checkType = TYPE_DATE;
		} else {
			if (ft == "TIME") {
				_checkType = TYPE_DAYTIME;
			}
		}
	}
	_inputField.style.imeMode = "disabled";
	_inputField.select();
	_inputField.onblur = onblerHandler;
	_inputField.onkeydown = onkeydownHandler;
	_inputField.onkeyup = onkeyupHandler;
};
function onkeydownHandler(event) {
	var lastKeyCode = 0;
	if (!event && window.event) {
		event = window.event;
	}
	if (event) {
		lastKeyCode = event.keyCode;
    //alert(lastKeyCode);
	}
	if (lastKeyCode == 16) {//shift
		_2bolShitKeyDown = true;
	}
	var fldValue = _inputField.value;

  //允许左右光标键,home,end,Backspace,delete,tab键的行为
	if (lastKeyCode == 37 || lastKeyCode == 39 || lastKeyCode == 36 || lastKeyCode == 35 || lastKeyCode == 8 || lastKeyCode == 46 || lastKeyCode == 9 ) {//home
	} else {
		if (((lastKeyCode > 47 && lastKeyCode < 58) && !_2bolShitKeyDown) || (lastKeyCode > 95 && lastKeyCode < 106 )) {
      //左边0-9对应的keyCode为48-57,右边数字小键盘的keyCode为96-105
		} else {
			if (_checkType == TYPE_NUMBER && ((!_2bolShitKeyDown && lastKeyCode == 189) || lastKeyCode == 109 || lastKeyCode == 110)) {//允许在行首输入负号，允许输入一个小数点号
			} else {
				if (_checkType == TYPE_NUMBER && !_2bolShitKeyDown && lastKeyCode == 190 && fldValue.indexOf(".") == -1) {
				} else {
					event.returnValue = false;
				}
			}
		}
	}
}
onkeyupHandler = function (e) {
	var _eventKeycode = "";
	var newQueryFlg = false;
	var fldValue = _inputField.value;
	if (!e && window.event) {
		e = window.event;
	}
	if (e) {
		_eventKeycode = e.keyCode;
	}
	if (_eventKeycode == 16) {//shift
		_2bolShitKeyDown = false;
	}

  //左右光标键，home,end,backspace,del键发生时不响应检查事件
	if (!(_eventKeycode == 37 || _eventKeycode == 39 || _eventKeycode == 36 || _eventKeycode == 35 || _eventKeycode == 8 || _eventKeycode == 46 || _eventKeycode == 9)) {
		switch (_checkType) {
		  case TYPE_NUMBER:
		  //update yinfei 2009-03-25 在校验中能输入"-"键,如果将注释去掉,则不能输入"-"键,但能在第一个字符输入"-"键,表示为负号
			//if ((!_2bolShitKeyDown && _eventKeycode == 189) || _eventKeycode == 109) {
				//var pos = fldValue.lastIndexOf("-");
				//if (pos > 0) {
					//_inputField.value = fldValue.substring(0, pos) + fldValue.substring(pos + 1);
				//}
			//}
			break;
		  case TYPE_DATE:
			_inputField.value = formateDate(fldValue);
			break;
		  case TYPE_DAYTIME:
			_inputField.value = formateDateTime(fldValue);
			break;
		  default:
			break;
		}
	}
};
function onblerHandler() {
	var fldValue = _inputField.value;
	if (fldValue == "") {
		return false;
	}
	switch (_checkType) {
	  case TYPE_NUMBER:
		if (isNaN(fldValue)) {
			_inputField.select();
			alert("您只能输入数字！")
		}
		if (valuescope) {
			var rules = valuescope.split("&");
			for (var i=0; i<rules.length; i++) {
				if (rules[i].charAt(0)=='V' && !checkScope(fldValue, rules[i])) {
					_inputField.select();
					break;
				} else if (rules[i].charAt(0)=='F' && !checkFormat(fldValue, rules[i])) {
					_inputField.select();
					break;
				}
			}
		}
		break;
	  case TYPE_DATE:
		if (checkDate(fldValue)) {
			_inputField.value = supplementDate(fldValue);
		} else {
			_inputField.select();
			alert("输入的日期不符合历法！");
		}
		break;
	  case TYPE_DAYTIME:
		if (checkDate(fldValue)) {
			_inputField.value = supplementDateTime(fldValue);
		} else {
			_inputField.select();
			alert("输入的日期时间不符合历法！\n年月日必须符合历法，小时值在00-23之间，分秒值在00-59之间！");
		}
		break;
	  default:
		break;
	}
}
function formateDate(str) {
	var orignNum = str.replace(/-/g, "");
	var rsStr = "";
	if (orignNum.length < 4) {
		rsStr = orignNum;
	} else {
		if (orignNum.length < 6) {
			rsStr = orignNum.substring(0, 4) + "-" + orignNum.substring(4);
		} else {
			if (orignNum.length < 8) {
				rsStr = orignNum.substring(0, 4) + "-" + orignNum.substring(4, 6) + "-" + orignNum.substring(6);
			} else {
				rsStr = orignNum.substring(0, 4) + "-" + orignNum.substring(4, 6) + "-" + orignNum.substring(6, 8);
			}
		}
	}
	return rsStr;
}
function formateDateTime(str) {
	var orignNum = str.replace(/-/g, "").replace(/:/g, "").replace(/\s/g, "");
	var rsStr = "";
	if (orignNum.length < 4) {
		rsStr = orignNum;
	} else {
		if (orignNum.length < 6) {
			rsStr = orignNum.substring(0, 4) + "-" + orignNum.substring(4);
		} else {
			if (orignNum.length < 8) {
				rsStr = orignNum.substring(0, 4) + "-" + orignNum.substring(4, 6) + "-" + orignNum.substring(6);
			} else {
				if (orignNum.length < 10) {
					rsStr = orignNum.substring(0, 4) + "-" + orignNum.substring(4, 6) + "-" + orignNum.substring(6, 8) + " " + orignNum.substring(8);
				} else {
					if (orignNum.length < 12) {
						rsStr = orignNum.substring(0, 4) + "-" + orignNum.substring(4, 6) + "-" + orignNum.substring(6, 8) + " " + orignNum.substring(8, 10) + ":" + orignNum.substring(10);
					} else {
						rsStr = orignNum.substring(0, 4) + "-" + orignNum.substring(4, 6) + "-" + orignNum.substring(6, 8) + " " + orignNum.substring(8, 10) + ":" + orignNum.substring(10, 12);
					}
				}
			}
		}
	}
	return rsStr;
}
function checkDate(str) {
	var orignNum = str.replace(/-/g, "").replace(/:/g, "").replace(/\s/g, "");
	return orignNum.isLegalDate();
}
function supplementDate(str) {
	var orignNum = str.replace(/-/g, "");
	var rsStr = "";
	if (orignNum.length == 4) {
		rsStr = orignNum + "-01-01";
	} else {
		if (orignNum.length == 6) {
			rsStr = orignNum.substring(0, 4) + "-" + orignNum.substring(4) + "-01";
		} else {
			if (orignNum.length == 8) {
				rsStr = orignNum.substring(0, 4) + "-" + orignNum.substring(4, 6) + "-" + orignNum.substring(6);
			}
		}
	}
	return rsStr;
}
function supplementDateTime(str) {
	var orignNum = str.replace(/-/g, "").replace(/:/g, "").replace(/\s/g, "");
	var rsStr = "";
	if (orignNum.length == 4) {
		rsStr = orignNum + "-01-01 00:00";
	} else {
		if (orignNum.length == 6) {
			rsStr = orignNum.substring(0, 4) + "-" + orignNum.substring(4) + "-01 00:00";
		} else {
			if (orignNum.length == 8) {
				rsStr = orignNum.substring(0, 4) + "-" + orignNum.substring(4, 6) + "-" + orignNum.substring(6) + " 00:00";
			} else {
				if (orignNum.length == 10) {
					rsStr = orignNum.substring(0, 4) + "-" + orignNum.substring(4, 6) + "-" + orignNum.substring(6, 8) + " " + orignNum.substring(8) + ":00";
				} else {
					if (orignNum.length == 12) {
						rsStr = orignNum.substring(0, 4) + "-" + orignNum.substring(4, 6) + "-" + orignNum.substring(6, 8) + " " + orignNum.substring(8, 10) + ":" + orignNum.substring(10);
					}
				}
			}
		}
	}
	return rsStr;
}
/*
 * 检查必填项。通过必填项配置参数获取必填项的id和提示用的中文名称。
 * 必填项的配置方法示例如下：
 * <pre>
 *   <a necessary="KHRS">开户人数</a><input type="text" name="OPNUM" id="KHRS"/>
 * </pre>
 * 其中，属性<b>necessary</b>指示了此项为必填项，<b>necessary</b>的属性值指向必填项的id值。a tag标签里的中文是提示用的字段中文名称。
 * @return boolean 如果全部必填项都满足了，返回true，否则返回false，给出提示并将焦点落在第一个不符合条件的必填项上。
 */
function checkNecessary() {
	var atag = document.getElementsByTagName("a");
	for (i = 0; i < atag.length; i++) {
		itag = atag[i];
		var tagText = itag.innerText;
		if (itag.necessary) {
			var fldId = itag.necessary;
			
			//alert(fldId);
			//alert(itag.necessary);
			//var con =  document.getElementById(fldId);
			//alert(con.size);
			
			eval("var fldValue = document.getElementById('" + fldId + "').value");
			if (!fldValue || fldValue.trim() == "") {
				alert(tagText.replace(" ","")+ "不允许为空！");
				eval("document.getElementById('" + fldId + "').focus()");
				return false;
			}
		}
	}
	return true;
}

function isContentLength(desc,name,size){
			alert(name);//alert(size);
			var content = document.getElementById(name).value;
			alert(content);
			//此表达式用来计算汉字算2个字节，汉字以外算1个字节
			var conLength = content.replace(/[^\x00-\xff]/g,"**").length;
			alert(conLength);
			if(conLength > size){
				alert("温馨提示："+desc+"不能超过"+size+"个字符！");
				return false;
			}
			return true;
		}


function checkNecessary2() {
	alert("222");
	var tag = document.getElementsByTagName("input");	
	alert(tag[2].size);
	isContentLength("",tag[2].name,tag[2].maxlength);
	
}

function checkScope(fldValue, valuescope) {
	var nums = valuescope.substring(2, valuescope.length - 1);
	var numarray = nums.split(",");
	var maxv = eval(numarray[0]);
	var minv = eval(numarray[1]);
	var tv = minv;
	if (tv > maxv) {
		minv = maxv;
		maxv = tv;
	}
	if (fldValue / 1 < minv / 1 || fldValue / 1 > maxv / 1) {
		alert("输入的数值只能在" + minv + "和" + maxv + "之间，您输入的数字不符合规定！");
		return false;
	}
	return true;
}

function checkFormat(fldValue, valuescope) {
	var nums = valuescope.substring(2, valuescope.length - 1);
	var numarray = nums.split(",");
	var maxv = eval(numarray[0]);
	var minv = eval(numarray[1]);
	var tv = minv;
	if (tv > maxv) {
		minv = maxv;
		maxv = tv;
	}
	var flag = false;
	if (fldValue.indexOf('.') < 0 && fldValue.length > maxv-minv) {
		flag = true;
	} else if (fldValue.indexOf('.') > maxv-minv) {
		flag = true;
	} else if (fldValue.indexOf('.') < fldValue.length - minv - 1) {
		flag = true;
	}
	if (flag) {
		alert("最多允许" + (maxv-minv) + "位整数，" + minv + "位小数，您输入的数字不符合规定！");
		return false;
	}
	return true;
}

	
/**
 * 验证字符（包含汉字或英文或数字）长度，按照数据库限定长度给maxLen
 * @author luofeng
 */
function validateLength(content,maxLen) {
	//此表达式用来计算汉字算2个字节，汉字以外算1个字节
	var conLength = content.replace(/[^\x00-\xff]/g,"**").length;
	if(conLength > maxLen) {
		alert("最多允许" + maxLen +"个字符,请重新输入！");
		return false;
	}
	return true;

}
