//------------------------clear any space----------------------------
function trim(s){
  re=/\s*/g;
  r=s.replace(re,'');
  return r;
}

//------------------------clear left space----------------------------
function Ltrim(s){
  re=/^\s*/;
  r=s.replace(re,'');
  return r;
}

//------------------------clear right space----------------------------
function Rtrim(s){
  re=/\s*$/;
  r=s.replace(re,'');
  return r; 
}

//------------------------test string if is Empty----------------------------
//is Empty return true, or return false
function isEmpstr(s){
  re=/\s*/g;
  r=s.replace(re,'');
  if(r=='') return true;
  else return false;
}
//------------------------check Date if is valid and others----------------------------
//have 3 args, 1st is "src", option, assign it nothing or null or any form field elements, if assign nothing or null
//                 function assume it is current event object
//             2nd is "mindate", option, wish the checked value is later than it
//             3rd is "maxdate", option, wish the checked value is early than it
function C_isDte(src,FDesc,mindate,maxdate){
  if(src==null) src=window.event.srcElement;
  if(FDesc==null) FDesc=src.name;
  if(isEmpstr(src.value)) {src.value='';return true;}
  
  itsval = src.value;

  pDval=itsval;
  pDval=pDval.replace(/\//g,'-');
  pDval=pDval.replace(/年|月/g,'-');
  pDval=pDval.replace(/日(\w|\W)*/g,'');
  pDval=pDval.replace(/ \d\d?:[\d:]*/g,'');
  itsval=pDval;

  if(!(itsval=stanDaFo(trim(itsval)))){alert('【'+FDesc+'】建议日期格式为“1998-5-18”！');src.value='';return false;}
  itsval=myDate(itsval,1);
  srcDate=myDate(itsval);
  srcStr=srcDate.getFullYear()+'-'+(srcDate.getMonth()+1)+'-'+srcDate.getDate();
  if(itsval!=srcStr){alert('【'+FDesc+'】中的日期非法！');src.value='';return false;}

  if(arguments.length>=3){
    mindate = stanDaFo(mindate);
    minD = myDate(mindate);
    if(minD.valueOf()>srcDate.valueOf()){alert('【'+FDesc+'】应输入“'+mindate+'”以后的日期！');src.value='';return false;}
  }
  if(arguments.length==4){
    maxdate = stanDaFo(maxdate);
    maxD = myDate(maxdate);
    if(maxD.valueOf()<srcDate.valueOf()){alert('【'+FDesc+'】应输入“'+maxdate+'”以前的日期！');src.value='';return false;}
  }
  
  src.value=itsval;
  return true;
}
function stanDaFo(dstr){
  re=/[12][90]\d\d-\d\d?-\d\d?$|[12][90]\d\d-\d\d?-*$|[12][90]\d\d-*$/;
  if(dstr.search(re)) return false;
  dstr=dstr.replace(/-*$/,'')
  if(dstr.search(/[12][90]\d\d-\d\d?$/)+1) dstr=dstr+'-1';
  if(dstr.search(/[12][90]\d\d$/)+1) dstr=dstr+'-1-1';
  return dstr;
}
function myDate(dstr,outtp){
  pos1=dstr.indexOf('-');
  pos2=dstr.indexOf('-',pos1+1);
  d_y=dstr.substring(0,pos1)*1;
  d_m=dstr.substring(pos1+1,pos2)*1;
  d_d=dstr.substr(pos2+1)*1;
  if(outtp==1) return d_y+'-'+d_m+'-'+d_d;
  tmpDate = new Date(d_y,d_m-1,d_d);
  return tmpDate;
}
//--------------------------compare date_value-------------------------------
function Datecomp(src,comptp){
  fld_a=src.split(',');
  if(fld_a.length!=7) return 'error';

  d1_y=eval(fld_a[0]+'.'+fld_a[1]);d2_y=eval(fld_a[0]+'.'+fld_a[4]);
  d1_m=eval(fld_a[0]+'.'+fld_a[2]);d2_m=eval(fld_a[0]+'.'+fld_a[5]);
  d1_d=eval(fld_a[0]+'.'+fld_a[3]);d2_d=eval(fld_a[0]+'.'+fld_a[6]);
  
  d1str=empto0(d1_y.value)+'-'+empto0(d1_m.value)+'-'+empto0(d1_d.value);
  d2str=empto0(d2_y.value)+'-'+empto0(d2_m.value)+'-'+empto0(d2_d.value);
  d1=myDate(d1str);d2=myDate(d2str);

  if(compty=0){
    if(d1.valueOf()<d2.valueOf())  return true;
    else  return false;
  }else{
    if(d1.valueOf()<d2.valueOf())  return true;
    else  return false;
  }
}
function empto0(str){
  if(isEmpstr(str)) return '1';
  else return trim(str);
}
//--------------------------check Date if is valid and others for multiple fields-------------------------------
function mfDatecheck(src,mindate,maxdate){
  fld_a=src.split(',');
  if(fld_a.length==4){
    src_y=eval(fld_a[0]+'.'+fld_a[1]);
    src_m=eval(fld_a[0]+'.'+fld_a[2]);
    src_d=eval(fld_a[0]+'.'+fld_a[3]);
  }else if(fld_a.length==7){
  }else return false;

  if(!isEmpstr(src_y.value)){
    itsval = trim(src_y.value);
    if(!isEmpstr(src_m.value)){
      itsval=itsval+'-'+trim(src_m.value);
      if(!isEmpstr(src_d.value)) itsval=itsval+'-'+trim(src_d.value);
    }
  }else itsval='';

  if (isEmpstr(itsval)) return true;
  if(!(itsval=stanDaFo(trim(itsval)))){alert('建议日期格式为“1998-5-18”！');clearfld(fld_a,1);return false;}
  itsval=myDate(itsval,1);
  srcDate=myDate(itsval);
  srcStr=srcDate.getFullYear()+'-'+(srcDate.getMonth()+1)+'-'+srcDate.getDate();
  if(itsval!=srcStr){alert('日期非法！');clearfld(fld_a,1);return false;}
  
  if(arguments.length>=2){
    mindate = stanDaFo(mindate);
    minD = myDate(mindate);
    if(minD.valueOf()>srcDate.valueOf()){alert('应输入“'+mindate+'”以后的日期！');clearfld(fld_a,1);return false;}
  }
  if(arguments.length==3){
    maxdate = stanDaFo(maxdate);
    maxD = myDate(maxdate);
    if(maxD.valueOf()<srcDate.valueOf()){alert('应输入“'+maxdate+'”以前的日期！');clearfld(fld_a,1);return false;}
  }
  
  return true;
}
function clearfld(flds,str){
  for(i=str;i<str+3;i++){
    whfld=eval(flds[0]+'.'+flds[i]);
    whfld.value='';
  }
}
//--------------------------check number if is valid and value-------------------------------
function C_isNum(src,FDesc,minv,maxv){
  if(src==null) src=window.event.srcElement;
  if(FDesc==null) FDesc=src.name;
  if(isEmpstr(src.value)) {src.value='';return true;}
  
  itsval = src.value;
//  if (isNaN(itsval=parseFloat(itsval))){
  if (isNaN(itsval)){alert('【'+FDesc+'】应填入数字！');src.value = '';return false;}
  if (arguments.length>=3)
    if (itsval<minv){alert('【'+FDesc+'】应不小于'+minv+'！');src.value = '';return false;}
  if (arguments.length==4)
    if (itsval>maxv){alert('【'+FDesc+'】应不大于'+maxv+'！');src.value = '';return false;}
  return true;
}
//------------------------check string if is valid and length---------------------------
function C_isUrl(src,FDesc,bych){
  if(src==null) src=window.event.srcElement;
  if(FDesc==null) FDesc=src.name;
  if(isEmpstr(src.value)) {src.value='';return true;}
  
  itsval = src.value;
  //bych=0或者null，需要输入标准url，即以http://domain/开头的
  //bych=1，需要输入安全url，即以https://domain/开头的
  if(bych==null) bych=0;
switch (bych){
	case 0:
	  re=/http\:\/\/[\w\.]+\/.*/;
	  if(itsval.search(re)!=0){alert('【'+FDesc+'】必须输入标准url，如“http://www.endad.com/”！');src.value='';return false;}
	  break;
	case 1:	
	  re=/https\:\/\/[\w\.]+\/.*/;
	  if(itsval.search(re)!=0){alert('【'+FDesc+'】必须输入安全url，如“https://www.endad.com/”！');src.value='';return false;}
	  break;
  }
return true;
}
function C_isStr(src,FDesc,maxl,minl,bych){
  if(src==null) src=window.event.srcElement;
  if(FDesc==null) FDesc=src.name;
  if(isEmpstr(src.value)) {src.value='';return true;}
  
  itsval = src.value;
  var s=escape(itsval);
  s=s.replace(/%[\dABCDEF]{2}/g,'s');
  s=s.replace(/%u[\dABCDEF]{4}/g,'dd');
  if(arguments.length>=3){
    le=s.length;
    if (le>maxl){
      alert('【'+FDesc+'】字符数应少于'+maxl+'个（一个汉字占两个字符）！');
      src.value=cutstr(itsval,maxl);
      return false;
    }
  }
  if(arguments.length>=4){
    le=s.length;
    if (le<minl){
      alert('【'+FDesc+'】字符数应不少于'+minl+'个（一个汉字占两个字符）！');
      src.value='';
      return false;
    }
  }

  //bych参数是用于对字符串做单字符检测用的
  //bych=0，则串的每位必须为0~9的数字
  //bych=1，则串的每位必须为0~9或A~F或a~f的字符
  //bych=2，则串的每位必须为A~Z或a~z的字符
  //bych=3，则串的每位必须为A~Z或a~z或0~9或_-.的字符
  //bych=4，则串的每位必须为非'或"的字符
  //bych=5，则串的每位须为0~9及“-呼转—空格”的字符
  //bych=6，则串的每位必须为非'或"或,或|的字符
  //bych=7，则串的每位必须为非'或"或,或|或 或　或其他非规则字符(用于用户名)
  //bych=8，则串的每字必须是汉字
  if (arguments.length==5){
switch (bych){
	case 0:
	  re=/[^0-9]/;
	  if(itsval.search(re)+1){alert('【'+FDesc+'】必须为〖0~9〗的数字！');src.value='';return false;}
	  break;
	case 1:	
	  re=/[^0-9a-fA-F]/;
	  if(itsval.search(re)+1){alert('【'+FDesc+'】必须为〖0~9〗或〖A~F〗或〖a~f〗的字符！');src.value='';return false;}
	  break;
	case 2:	
	  re=/[^a-zA-Z]/;
	  if(itsval.search(re)+1){alert('【'+FDesc+'】必须为〖A~Z〗或〖a~z〗的字符！');src.value='';return false;}
	  break;
	case 3:	
	  re=/[^a-zA-Z0-9_\-\.]/;
	  if(itsval.search(re)+1){alert('【'+FDesc+'】必须为〖A~Z〗或〖a~z〗或〖0~9〗或〖_-.〗的字符！');src.value='';return false;}
	  break;
	case 4:	
	  re=/'|"/;
	  if(itsval.search(re)+1){alert('【'+FDesc+'】必须为非〖\'〗或〖\"〗的字符！');src.value='';return false;}
	  break;
	case 5:	
	  re=/[^0-9- 呼 转 —]/;
	  if(itsval.search(re)+1){alert('【'+FDesc+'】必须为〖0~9〗及〖-呼转—空格〗的字符！');src.value='';return false;}
	  break;
	case 6:	
	  re=/'|"|,|\|/;
	  if(itsval.search(re)+1){alert('【'+FDesc+'】必须为非〖\'〗或〖\"〗或〖,〗或〖|〗的字符！');src.value='';return false;}
	  break;
	case 7:	
	  re=/'|"|,|\||\s|　/;
	  if(itsval.search(re)+1){alert('【'+FDesc+'】必须为非〖\'〗或〖\"〗或〖,〗或〖|〗以及各种空格和制表符号的字符！');src.value='';return false;}
	  break;
	case 8:	
	  re=/%u[\dABCDEF]{4}/gi;
          var s=escape(itsval);
          if(s.replace(re,'')!=''){alert('【'+FDesc+'】必须为汉字字符！');src.value='';return false;}
	  break;
	}
  }
return true;
}
function cutstr(str1,len){
  str1=str1.replace('·','··')
  s=escape(str1);
  i=0;j=0;
  while(i<len && j<s.length){
    if(s.charAt(j)=='%'){
      if(s.charAt(j+1)=='u'){j+=6;i++;}
      else j+=3;
    }
    else j++;
    i++;
  }
  s=s.substring(0,j);
  if(i>len) s=s.replace(/%u[\dABCDEF]{4}$/,'');
  s=s.replace('%B7%B7','%B7');
  return unescape(s);
}
//-----------------------print fix-length string--------------------------------------
function Prt_FixL(str,len){
var i,j,s,s_r;
//  if((len % 2)==1) len--;
  s=escape(str);
  s_r='';
  do{
    i=0;j=0;
    while(i<len){
      if(s.charAt(j)=='%'){
        if(s.charAt(j+1)=='u'){
          if((i+2)>len) break;
          j=j+6;
          i++;
        }else j=j+3;
      }else j++;
      i++;
    }
    s_r=s_r+'<br>'+s.substring(0,j);
    s=s.substr(j);
  }while(s.length>len)
  return unescape(s_r);
}
//-----------------------print stdToday--------------------------------------
function stdToday(){
  var cdate=new Date();
  var stdT=cdate.getYear()+'-'+(cdate.getMonth() + 1)+'-'+cdate.getDate();
  return stdT;
}
function DTS2DT(p1,dayv,monv,yerv){
  var stdT='';
  if(p1=='' || p1==null) return stdT;
  var tda=p1.split('-');
  if(tda.length!=3) return stdT;
  if(isNaN(tda[0]) || isNaN(tda[1]) || isNaN(tda[2])) return stdT;
  tda[0]=parseInt(tda[0]);if(yerv!=null){if(!isNaN(yerv)) tda[0]+=yerv;}
  tda[1]=parseInt(tda[1]);if(monv!=null){if(!isNaN(monv)) tda[1]+=monv;}
  tda[2]=parseInt(tda[2]);if(dayv!=null){if(!isNaN(dayv)) tda[2]+=dayv;}
  var cdate=new Date(tda[0],tda[1]-1,tda[2]);
  stdT=cdate.getYear()+'-'+(cdate.getMonth() + 1)+'-'+cdate.getDate();
  return stdT
}
//-----------------------check item that must be EMail Address--------------------------------------
//valid which fields are valid EMail Address
function C_isEMail(src,FDesc){
  if(src==null) src=window.event.srcElement;
  if(isEmpstr(src.value)) {src.value='';return true;}
  if(FDesc==null) FDesc=src.name;
  re=/[\w-.]+@(([\w-]+[.]?)+)/g;
  if(src.value.search(re)) {alert('【'+FDesc+'】是电子邮件地址,合法格式如：Mary@hotmail.com！');src.value='';return false;}
  return true;
}
//-----------------------check item that must fill--------------------------------------
//valid which fields are empty before submitting
function C_isEmpFld(srcForm,FldStr){
  src='document.'+srcForm.name;
  FldArr = FldStr.split(',');
  for(i=0;i<FldArr.length;i++){
    FldNV = FldArr[i].split('|');
    if(src==null) whFLD=eval(FldNV[0]);
    else whFld=eval(src+'.'+FldNV[0]);
    if(isEmpstr(whFld.value)){alert('【'+FldNV[1]+'】'+'不可为空！');whFld.value='';whFld.focus();return true;}
  }
  return false;
}
