//=============表单验证
//fobj 检测form对象名
//clist as Array 存储验证字符串
function srmAlert(str){
  alert("中华网管理员:\n\r   "+str);
}
function checkForm(fobj,clist){
  for (i=0;i<clist.length;i++){
    if (clist[i]==null){
      continue;
    }
    var cItemInfo=clist[i].split("|");
    var cKey=cItemInfo[0];
    var cItem=eval(fobj.name+"."+cItemInfo[1]);
    var aStr="〖"+(cItemInfo[2]==""?cItemInfo[1]:cItemInfo[2])+"〗";
    var tValue=getItemValue(cItem);
    //-----------判断空
    if ((cKey&1)==1){
      if (checkIsEmpty(tValue)){
        srmAlert(aStr+"不能为空");
        return initItem(cItem);
      }
    }
    //-------------判断字符串长度
    if ((cKey&2)==2){
      if (!checkIsEmpty(tValue)){
        if (cItemInfo.length<4){
          srmAlert(aStr+"没有给出足够的验证范围(--长度范围--)");
          return false;
        }
        if (cItemInfo.length==4){
          if (!checkIsNum(cItemInfo[3])){
            srmAlert(aStr+"没有给出正确的验证范围(--长度范围--)");
            return false;
          }
          if (getItemValueLength(cItem)!=parseInt(cItemInfo[3])){
            srmAlert(aStr+"的长度必须等于 "+cItemInfo[3]);
            return initItem(cItem);
          }
        }
        if (cItemInfo.length==5){
          if (!checkIsNum(cItemInfo[3])||!checkIsNum(cItemInfo[4])){
            srmAlert(aStr+"没有给出正确的验证范围(--长度范围--)");
            return false;
          }
          if ((getItemValueLength(cItem)<parseInt(cItemInfo[3]))||(getItemValueLength(cItem)>parseInt(cItemInfo[4]))){
            srmAlert(aStr+"的长度必须介于 "+cItemInfo[3]+" 和 "+cItemInfo[4]+" 之间");
            return initItem(cItem);
          }
        }
      }
    }
    //--------------判断数字
    if ((cKey&4)==4){
      if (!checkIsEmpty(tValue)&&!checkIsNum(tValue)){
        srmAlert(aStr+"必须是数字");
        return initItem(cItem);
      }
      if (!checkIsEmpty(tValue)&&cItemInfo.length==4){
        if (!checkIsNum(cItemInfo[3])){
          srmAlert(aStr+"没有给出正确的验证值(--范围验证--)");
          return false;
        }
        if (parseFloat(tValue)>parseFloat(cItemInfo[3])){
          srmAlert(aStr+"不能大于"+cItemInfo[3]);
          return initItem(cItem);
        }
      }
      if (!checkIsEmpty(tValue)&&cItemInfo.length==5){
        if (!checkIsNum(cItemInfo[3])||!checkIsNum(cItemInfo[4])||parseFloat(cItemInfo[4])<parseFloat(cItemInfo[3])){
          srmAlert(aStr+"没有给出正确的验证值(--范围验证--)");
          return false;
        }
        if ((parseFloat(tValue)>parseFloat(cItemInfo[4]))||(parseFloat(tValue)<parseFloat(cItemInfo[3]))){
          srmAlert(aStr+"必须大于 "+cItemInfo[3]+" 小于 "+cItemInfo[4]);
          return initItem(cItem);
        }
      }
    }
    //------------判断日期
    if ((cKey&8)==8){
      if (!checkIsEmpty(tValue)&&!checkIsDate(tValue)){
        srmAlert(aStr+"必须是正确的日期类型\n\r    如:2003-01-01");
        return initItem(cItem);
      }
      if (!checkIsEmpty(tValue)&&cItemInfo.length==4){
        if (!checkIsDate(cItemInfo[3])){
          srmAlert(aStr+"没有给出正确的验证值(--日期范围--)");
          return false;
        }
        if (checkDateDiff(tValue,cItemInfo[3])==1){
          srmAlert(aStr+" 必须小于 "+cItemInfo[3]);
          return initItem(cItem);
        }
      }
      if (!checkIsEmpty(tValue)&&cItemInfo.length==5){
        if (!checkIsDate(cItemInfo[3])||!checkIsDate(cItemInfo[4])){
          srmAlert(aStr+"没有给出正确的验证值(--日期范围--)");
          return false;
        }
        if (checkDateDiff(tValue,cItemInfo[3])==-1||checkDateDiff(tValue,cItemInfo[4])==1){
          srmAlert(aStr+"应介于 "+cItemInfo[3]+" 和 "+cItemInfo[4] +" 之间");
          return initItem(cItem);
        }
      }
    }
    //------年月形式
    if ((cKey&16)==16){
      if (!checkIsEmpty(tValue)&&!checkCurrNY(tValue)){
        srmAlert(aStr+"必须是正确的年月格式\n\r    如:2003-01");
        return initItem(cItem);
      }
    }
    //--------判断枚举类型
    if ((cKey&32)==32){
      if (cItemInfo.length<4){
        srmAlert(aStr+"没有给出合法枚举验证值");
        return false;
      }
      if (!checkIsEmpty(tValue)&&!checkIsInEnumerate(tValue,cItemInfo[3])){
        srmAlert(aStr+"不在给定范围内");
        return initItem(cItem);
      }
    }
//
  }
  return true;
}

//判断输入值是否为空
function checkIsEmpty(val){
  return val=="";
}
//判断是否是数字
function checkIsNum(val){
  return !isNaN(val);
}


//判断是否是合法的日期形式
function checkIsDate(val){

  var cMon = new Array( 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 );
  var cY,cM,cD;

  var dateStr=val.split("-");
  if (dateStr.length!=3){
	return false;
  }


  cY=dateStr[0];
  cM=dateStr[1];
  cD=dateStr[2];
  if (!checkIsNum(cY)||!checkIsNum(cM)||!checkIsNum(cD)){
    return false;
  }

  cY=new Number(cY);
  cM=new Number(cM);
  cD=new Number(cD);

  if((cY % 4 == 0 && cY % 100 != 0) || cY % 400 == 0){
      cMon[1] = 29;
  }
  if (cY<1900||cY>2100||cM<1||cM>12||cD<1||cD>parseInt(cMon[cM-1])){
    return false;
  }
  return true;
}
//判断值是否在给定的范围内
//val:判断值
//enumstr:枚举值 ","分隔
function checkIsInEnumerate(val,enumstr){
  var tArr=enumstr.split(",");
  for (count=0;count<tArr.length;count++){
    if (tArr[count]==val){
      return true;
    }
  }
  return false;
}
//判断日期大小
//return 0  : =
//return 1  : >
//return -1 : <
function checkDateDiff(dStr1,dStr2){
  if (DateFormat(dStr1)==DateFormat(dStr2)){
    return 0;
  }
  if (DateFormat(dStr1)>DateFormat(dStr2)){
    return 1;
  }
  if (DateFormat(dStr1)<DateFormat(dStr2)){
    return -1;
  }
}
//将日期字符串转换成日期格式
//str 必须为格式正确的日期形式
function DateFormat(str){
  var d=new Date(str.substring(0,4),str.substring(5,7),str.substring(8,10));
  return d;
}
//获得给定对象的值
function getItemValue(item){
  var itemVal;
  if(item != null) {
    if(item.type == "select")
      itemVal = item.options[item.selectedIndex].value;
    else
      itemVal = item.value;
  } else
    itemVal = "";
  return itemVal;
}
//获得给定对象值的长度
function getItemValueLength(item){
  str=escape(getItemValue(item));
  var len=str.length;
  var hzNum=0;
  str=replaceEx(str,"%u","");
  hzNum=(str.length-len)/2
  var len1=str.length
  var spNum=0;
  str=replaceEx(str,"%","");
  spNum=(len1-(hzNum*4) - str.length);
  len=(len-hzNum*6-spNum*3)+hzNum*2+spNum;
  return len
}
//对象初始化
function initItem(item){
  if(item != null) {
    if(item.type == "select"){
      item.options[0].selected=true;
    }
    if (item.type=="text"){
      item.value=""
    }
    item.focus();
    return false;
  }
}

//判断正确的年月格式
function checkCurrNY(val){
  if (val.length!=7){
    return false;
  }
  if (val.indexOf("-")!=4){
    return false;
  }
  var tmp=val.split("-");
  if (!isNaN(tmp[0])){
    var year=new Number(tmp[0]);
    if (year<1800||year>2099){
      return false;
    }
  }
  if (!isNaN(tmp[1])){
    var month=new Number(tmp[1]);
    if (month<1||month>12){
      return false;
    }
  }
  return true;
}
//============公用方法
//在输入日期格式时自动转换格式
//在日期输入框 onkeypress 时触发
//obj 输入框对象
var InputDateType = 'Date';//Date Time
function InputDate(obj,inputdatetype){
  InputDateType = inputdatetype;//20040812
  if(InputDateType=='Date'){
  	if (getItemValueLength(obj)==4||getItemValueLength(obj)==7){
    	if (event.keyCode!=45){
      		obj.value=obj.value+"-";
      		if (event.keyCode>57||event.keyCode<48){
        		return false;
      		}
    	}
  	}else{
    	if (event.keyCode>57||event.keyCode<48||obj.value.length==10){
      	return false;
    	}
  	}
  }else if(InputDateType=='Time'){//20040812
  	if (getItemValueLength(obj)==4||getItemValueLength(obj)==7){
    	if (event.keyCode!=45){
      		obj.value=obj.value+"-";
      		if (event.keyCode>57||event.keyCode<48){
        		return false;
      		}
    	}
  	}else if (getItemValueLength(obj)==10){
    	if (event.keyCode!=45){
      		obj.value=obj.value+" ";
      		if (event.keyCode>57||event.keyCode<48){
        		return false;
      		}
    	}
  	}else if (getItemValueLength(obj)==13||getItemValueLength(obj)==16){
    	if (event.keyCode!=45){
      		obj.value=obj.value+":";
      		if (event.keyCode>57||event.keyCode<48){
        		return false;
      		}
    	}
  	}else{
    	if (event.keyCode>57||event.keyCode<48||obj.value.length==19){
      		return false;
    	}
  	}
  }
}
//日期格式正确性检验
//在日期输入框中onblur时触发
//obj 输入框对象
function isCurrDate(obj){
  if (getItemValue(obj)!=""
	&&!checkIsDate(getItemValue(obj))
	&&!checkIsTime(getItemValue(obj))){
    srmAlert("请输入合法的日期");
    initItem(obj);
  }
}

//判断是否是合法的时间形式－20040812 tufei
function checkIsTime(val){

  var cMon = new Array( 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 );
  var cY,cM,cD;

  var totaltime = val.split(" ");
//  alert('date='+totaltime[0]+'MMM');
//  alert('time='+totaltime[1]+'MMM');

//下面检查日期格式
  if(!checkIsDate(totaltime[0])){
	  return false;
  }
//下面检查时间格式
  var timeStr = totaltime[1].split(":");
  cHH=timeStr[0];
  cMM=timeStr[1];
  cSS=timeStr[2];
  if (!checkIsNum(cHH)||!checkIsNum(cMM)||!checkIsNum(cSS)){
    return false;
  }
  cHH=new Number(cHH);
  cMM=new Number(cMM);
  cSS=new Number(cSS);
  if(cHH>23||cHH<0||cMM>59||cMM<0||cSS>59||cSS<0){
  	 return false;
  }
  return true;
}
//格式华数字
//sourceStr 要格式的数字 字符传入
//digit 保留小数点位数
//返回字符串
function converDigit(sourceStr,digit) {
  var  numberRound=parseFloat(sourceStr);
  if(isNaN(numberRound)) return "";
  var retStr="";
  if (numberRound>=0){
    var tempNumber = parseInt((numberRound * Math.pow(10,digit)+0.5))/Math.pow(10,digit);
    retStr= tempNumber+"";
  }
  else{
    var numberRound1=-numberRound
    var tempNumber = parseInt((numberRound1 * Math.pow(10,digit)+0.5))/Math.pow(10,digit);
    retStr= (-tempNumber)+"";
  }
  var last = retStr.lastIndexOf(".");
  if (last == -1) {
    retStr = retStr + ".";
    for (var i=0;i<digit;i++){
      retStr=retStr+"0";
    }
  }
  else{
    var ws=retStr.length-last-1;
    if(ws>0) digit=digit-ws;
    for (var i=0;i<digit;i++){
      retStr=retStr+"0";
    }
  }
  return retStr;
}

function checkSelect(selectname){
	var keyList = document.getElementsByName(selectname);
  	if(keyList==null){
		alert('无操作数据');
		return false;
    }else{
    	var hasCheck = false;
		for(var i=0;i<keyList.length;i++){
			if(keyList[i].checked){
				hasCheck =true;
				break;
           	}
    	}
		if(!hasCheck){
			alert('请选择操作数据');
			return false;
      	}
	}
	return true;
}

