

/*
 * 检查FORM中输入项的有效性
 *
 *     formName: 输入FORM的名称
 *  checkOption: 输入检查内容，格式为字符串数组
 *               每个输入项对应的格式是 '输入框名称|输入校验格式|最大长度|错误提示|检查是否为空'
 *               输入校验格式：0－字符串， 1－数字型（可以为小数），2－整数，3－日期，4－email
 *               检查是否为空：0－不检查， 1－检查（首先清除前后空格）
 */
function checkForm(formName, checkOption)
{
    var frm = gmobj(formName);
    var len = checkOption.length;
    var i=0;
    for (i=0; i<len; i++) {
        var opValue = checkOption[i].split("|");
        if (!checkInput(frm, opValue[0], opValue[1], opValue[2], opValue[3], opValue[4]))
            return false;
    }
//    frm.submit();
    return true;
}

function checkInput(frm, inputName, inputType, maxlen, errorInfo, checkEmpty)
{
    var s;
    if (checkEmpty == 1) {
        s = trim(frm.elements[inputName].value);
        if (s == "") {
            frm.elements[inputName].select();
            alert(errorInfo + "不能为空");
            return false;
        }
    } else {
        s = trim(frm.elements[inputName].value);
        if (s == "") {
            frm.elements[inputName].value = "";
            return true;
        }
        s = frm.elements[inputName].value;
    }
    if (getStringBytes(s) > maxlen) {
        frm.elements[inputName].select();
        alert(errorInfo + "长度超过"+maxlen+", 请重新输入！");
        return false;
    }
    if (inputType == 1) {
        if (!isNumber(s) && !isDecimal(s)) {
            frm.elements[inputName].select();
            alert(errorInfo + "不是数字！");
            return false;
        }
    }
    if (inputType == 2) {
        if (!isNumber(s)) {
            frm.elements[inputName].select();
            alert(errorInfo + "不是整数！");
            return false;
        }
    }
    if (inputType == 3) {
        if (!isDate(s)) {
            frm.elements[inputName].select();
            alert(errorInfo + "不是正确的日期！");
            return false;
        }
    }
    if (inputType == 4) {
    	var emailReg = /^[_a-zA-Z.0-9]+@([_a-zA-Z0-9]+\.)+[a-zA-Z0-9]{2,3}$/; 
	    if (!emailReg.test(s)){
    		alert(errorInfo + "不是正确的Email地址！");
    		return false; 
    	}
    }
    frm.elements[inputName].value = s;
    return true;
}

function trim (s)
{ 
    var notValid = /(^\s)|(\s$)/; 
    while (notValid.test(s)) { 
        s = s.replace(notValid,"");
    }
    return s;
}

function trimLeft(s)
{ 
    var notValid = /^\s/; 
    while (notValid.test(s)) {
        s=s.replace(notValid,"");
    }
    return s;
}

function trimRight(s)
{ 
    var notValid = /\s$/; 
    while (notValid.test(s)) { 
        s=s.replace(notValid,"");
    }
    return s;
}

function trimAll(s)
{ 
    var notValid=/\s/; 
    while (notValid.test(s)) { 
        s=s.replace(notValid,"");
    }
    return s;
}

/*
用途：检查输入字符串是否符合正整数格式
输入：
	s：字符串
返回：
	如果通过验证返回true,否则返回false	
*/
function isNumber( s ){   
	var regu = "^[0-9]+$";
	var re = new RegExp(regu);
	if (s.search(re) != -1) {
	   return true;
	} else {
	   return false;
	}
}

/*
用途：检查输入字符串是否是带小数的数字格式,可以是负数
输入：
	s：字符串
返回：
	如果通过验证返回true,否则返回false	
*/
function isDecimal( s ){   
	var regu = "^[-]{0,1}[0-9]+[\.][0-9]+$";
	var re = new RegExp(regu);
	if (s.search(re) != -1) {
	   return true;
	} else {
	   return false;
	}
}

/*
用途：检查输入字符串是否符合金额格式
	格式定义为带小数的正数，小数点后最多三位
输入：
	s：字符串
返回：
	如果通过验证返回true,否则返回false	
*/
function isMoney( s ){   
	var regu = "^[0-9]+[\.]{0,1}[0-9]{0,2}$";
	var re = new RegExp(regu);
	if (re.test(s)) {
	   return true;
	} else {
	   return false;
	}
}
/*
用途：检查输入字符串是否符合百分比格式
　　　格式定义为不带小数的两位正整数
输入：
	s：字符串
返回：
	如果通过验证返回true,否则返回false
*/
function isPercent(s)
{
	var regu = "^[1-9]+[0-9]$";
	var re = new RegExp(regu);
	if (re.test(s)){return true;}
	else {return false;}
}
//同上，但是两位小数
function isMoney2( s ){   
	var regu = "^[0-9]+[\.][0-9]{0,2}$";
	var re = new RegExp(regu);
	if (re.test(s)) {
	   return true;
	} else {
	   return false;
	}
}
/*
用途：检查输入字符串是否只由英文字母和数字组成
输入：
	s：字符串
返回：
	如果通过验证返回true,否则返回false	
*/
function isNumberOrLetter( s ){    //判断是否是数字或字母
	var regu = "^[0-9a-zA-Z]+$";
	var re = new RegExp(regu);
	if (re.test(s)) {
	  return true;
	}else{
	  return false;
	}
}

/*
用途：检查输入的日期是否符合 yyyyMMdd
输入：
	value：字符串
返回：
	如果通过验证返回true,否则返回false	
*/
function isDate( value ) {
	if(value.length!=8 || !isNumber(value)) return false;  
	var year = value.substring(0,4);
	if(year>"2100" || year< "1900")	return false;
	
	var month = value.substring(4,6);
	if(month>"12" || month< "01") return false;
	
	var day = value.substring(6,8);
	if(day>getMaxDay(year,month) || day< "01") return false;
	
	return true;  
}

function getMaxDay(year,month) {
	if(month==4||month==6||month==9||month==11)
		return "30";
	if(month==2)
		if(year%4==0&&year%100!=0 || year%400==0)
			return "29";
		else
			return "28";
	return "31";
}
/*
用途：检查输入的起止日期是否正确，规则为两个日期的格式正确，
	且结束如期>=起始日期
输入：
	startDate：起始日期，字符串
	endDate：结束如期，字符串
返回：
	如果通过验证返回true,否则返回false	
*/
function checkTwoDate( startDate,endDate ) {
	if( !isDate(startDate) ) {
		return false;
	} else if( !isDate(endDate) ) {
		return false;
	} else if( startDate > endDate ) {
		return false;
	}
	return true;
}

/*
用途：检查输入的Email信箱格式是否正确
输入：
	strEmail：字符串
返回：
	如果通过验证返回true,否则返回false	
*/
function checkEmail(strEmail) { 
	var emailReg = /^[_a-zA-Z.0-9]+@([_a-zA-Z0-9]+\.)+[a-zA-Z0-9]{2,3}$/; 
	if( emailReg.test(strEmail) ){
		return true; 
	}else{
		alert("您输入的Email地址格式不正确！");
		return false; 
	}
}

/*
用途：检查输入的IP地址格式是否正确 by Yi Yuan 2002-1-4
输入：
	strIPAddr：字符串
返回：
	如果通过验证返回true,否则返回false	
*/
function checkIP(strIPAddr) {
	var IPAddrReg = /^\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}$/; 
	var passedTest = false;
	
	if( IPAddrReg.test(strIPAddr) ){
		strIPAddr.match(IPAddrReg);
		if (RegExp.$1 <= 255 && RegExp.$1 >= 0 
		  && RegExp.$2 <= 255 && RegExp.$2 >= 0 
		  && RegExp.$3 <= 255 && RegExp.$3 >= 0 
		  && RegExp.$4 <= 255 && RegExp.$4 >= 0) {
		  	passedTest = true;
		}
	}

	if( !passedTest){
		alert("您输入的IP地址格式不正确！");
		return false; 
	}
	
	return true;
}

/*
用途：检查输入的域名格式是否正确 by Yi Yuan 2002-1-4
输入：
	strURLAddr：字符串
返回：
	如果通过验证返回true,否则返回false	
*/
function checkURL(strURLAddr) {
	var URLAddrReg = /^http(s):////(\d+)\.(\d+)\.(\d+)\.(\d+)$/;
	var passedTest = false;
	
	if( URLAddrReg.test(strURLAddr) ){
		passedTest = true;
	}

	if( !passedTest){
		alert("您输入的网站域名格式不正确！");
		return false; 
	}
	
	return true;
}

/*
用途：检查输入的电话号码格式是否正确
输入：
	strPhone：字符串
返回：
	如果通过验证返回true,否则返回false	

function checkPhone( strPhone ) { 
	var phoneRegWithArea = /^[0][1-9]{2,3}-[0-9]{5,10}$/; 
	var phoneRegNoArea = /^[1-9]{1}[0-9]{5,8}$/; 
	var prompt = "您输入的电话号码不正确!"
	if( strPhone.length > 9 ) {
		if( phoneRegWithArea.test(strPhone) ){
			return true; 
		}else{
			alert( prompt );
			return false; 
		}
	}else{
		if( phoneRegNoArea.test( strPhone ) ){
			return true; 
		}else{
			alert( prompt );
			return false; 
		}		
	}
}
*/
function checkPhone( strPhone ) { 
	var prompt = "您输入的电话号码不正确!"
	if (getStringBytes(strPhone) > 20) {
		alert( prompt );
		return false; 
	}else{
		return true; 
	}
}

/*
用途：检查复选框被选中的数目
输入：
	checkboxID：字符串
返回：
	返回该复选框中被选中的数目	
*/	
function checkSelect( checkboxID ) {
	var check = 0;
	var i=0;
	if( document.all(checkboxID).length > 0 ) { 
		for(  i=0; i<document.all(checkboxID).length; i++ ) {
			if( document.all(checkboxID).item( i ).checked  ) {
				check += 1;
			}				
		}
	}else{
		if( document.all(checkboxID).checked )
			check = 1;
	}
	return check;
}

function getStringBytes(s) {
	if(s == null || s == "")
		return 0;
	
	var totalCount = 0;
	var i;
	for (i = 0; i< s.length; i++) {
		if (s.charCodeAt(i) > 127) 
			totalCount += 2;
		else
			totalCount++ ;
	}
	return totalCount;
}

function getTotalBytes(varField) {
	if(varField == null)
		return -1;
	
	var totalCount = 0;
	var i;
	for (i = 0; i< varField.value.length; i++) {
		if (varField.value.charCodeAt(i) > 127) 
			totalCount += 2;
		else
			totalCount++ ;
	}
	return totalCount;
}

function getFirstSelectedValue( checkboxID ){
	var value = null;
	var i=0;
	if( document.all(checkboxID).length > 0 ){ 
		for(  i=0; i<document.all(checkboxID).length; i++ ){
			if( document.all(checkboxID).item( i ).checked ){
				value = document.all(checkboxID).item(i).value;
				break;
			}
		}
	} else {
		if( document.all(checkboxID).checked )
			value = document.all(checkboxID).value;
		}
	return value;
}	

function getFirstSelectedIndex( checkboxID ){
	var value = -2;
	var i=0;
	if( document.all(checkboxID).length > 0 ){ 
		for(  i=0; i<document.all(checkboxID).length; i++ ) {
			if( document.all(checkboxID).item( i ).checked  ) {
				value = i;
				break;
			}
		}
	} else {
		if( document.all(checkboxID).checked )
			value = -1;
	}
	return value;
}
	
function selectAll( checkboxID,status )	{
	if( document.all(checkboxID) == null)
		return;

    var i;
	if( document.all(checkboxID).length > 0 ){ 
		for(  i=0; i<document.all(checkboxID).length; i++ )	{
			document.all(checkboxID).item( i ).checked = status;
		}
	} else {
		document.all(checkboxID).checked = status;
	}
}

function selectInverse( checkboxID ) {
	if( document.all(checkboxID) == null)
		return;

    var i;
	if( document.all(checkboxID).length > 0 ) { 
		for(  i=0; i<document.all(checkboxID).length; i++ ) {
			document.all(checkboxID).item( i ).checked = !document.all(checkboxID).item( i ).checked;
		}
	} else {
		document.all(checkboxID).checked = !document.all(checkboxID).checked;
	}
}

function checkDate( value ) {
	if(value=='') return false;
	if(value.length!=8 || !isNumber(value)) return false;  
	var year = value.substring(0,4);
	//if(year>"2100" || year< "1900")	return false;
	
	var month = value.substring(4,6);
	if(month>"12" || month< "01") return false;
	
	var day = value.substring(6,8);
	if(day>getMaxDay(year,month) || day< "01") return false;
	
	return true;  
}

/*
用途：检查输入的起止日期是否正确，规则为两个日期的格式正确或都为空
	且结束日期>=起始日期
输入：
	startDate：起始日期，字符串
	endDate：  结束日期，字符串
返回：
	如果通过验证返回true,否则返回false	
*/
function checkPeriod( startDate,endDate ) {
	if( !checkDate(startDate) ) {
		alert("起始日期不正确!");
		return false;
	} else if( !checkDate(endDate) ) {
		alert("终止日期不正确!");
		return false;
	} else if( startDate > endDate ) {
		alert("起始日期不能大于终止日期!");
		return false;
	}
	return true;
}

/*
用途：检查证券代码是否正确
输入：
	secCode:证券代码
返回：
	如果通过验证返回true,否则返回false	
*/
function checkSecCode( secCode ) {
	if( secCode.length !=6 ){
		alert("证券代码长度应该为6位");
		obj.focus();
		return false;
	}
	
	if(!isNumber( secCode ) ){
		alert("证券代码只能包含数字");		
		obj.focus();
		return false;
  	 }
	return true;
}

function gmobj(mtxt)  /* Get object by object name */
{
  if (document.getElementById) {
      m=document.getElementById(mtxt);
  } else if (document.all) {
      m=document.all[mtxt];
  } else if (document.layers) {
      m=document.layers[mtxt];
  }
  return m;
}






function checkIDCard(cardValue){
		var birthday;
	
	if(cardValue.length!=15&&cardValue.length!=18){
		
		alert("身份证位数不对!你输入了"+cardValue.length+"位数,请重新输入!");
		return false;
	}
	/*if(!isNumber(cardValue)){
		alert("身份证必须为数字");
		return false;
	}
	*/
	if(cardValue.length==15){
		birthday='19'+cardValue.substring(6,12);
		
	}
	else if(cardValue.length==18){
		birthday=cardValue.substring(6,14);
		
	}
	if(!checkDate(birthday)){
		alert("身份证中的出生日期不对");
		return false;
	}
	
	return true;
}

function checkCond(Condvalue){
	if(!isNumber(Condvalue)){
		alert("输入格式错误，必须为整数");
		return false;
	}
	if(Condvalue<1){
		alert("输入数字必须大于0的整数");
		return false;
	}
	if(Condvalue>50){
		alert("输入数字必须小于等于50的整数");
		return false;
	}
	return true;
}
/*
用途：将输入数据转换成小数点后两位的金额格式
输入：数字
返回：金额格式的数字
*/
function toMoney(value)
{
	var st = value.toString();
	var lengths = st.indexOf('.');
	var pointLen = 1;
	if(lengths == -1)
	{
		st = st +".00";
	}
	else
	{
		pointLen = st.substring(lengths).length;
		if(pointLen==1)
		{
			st = st +"00";
		}
		if(pointLen==2)
		{
			st = st +"0";
		}
		if(pointLen==3)
		{
			st = st;
		}
		if(pointLen>3)
		{
			var comV = st.substring(lengths+4);
			var temp = st.substring(lengths+1,lengths+3);
			if(comV>=5)
			{
				temp = parseInt(temp) +1;
				if(temp<10)
					st = st.substring(0,lengths+1)+"0"+temp.toString();
				else
					st = st.substring(0,lengths+1)+temp.toString();
			}
			else
			{
				st = st.substring(0,lengths+3);
			}
		}
	}
	return st;
}