function chklength(name1,val1,len1,len2) {
 if (len1 > 0) {
  if (val1.length < len1) {
     alert("請輸入" + name1 + ". 長度最少為"+len1+".") ;
     return false;
     }
  } 
 if (val1.length > len2) {
     alert(name1 + "最大長度為" + len2+".");
     return false;
    }
 return true;
 }
 function chknospace(name1,val1) {
    if (val1.indexOf(" ")!=-1) {
      alert(name1+"不能有空格.");
      return(false);
      }  
    return(true)
  }
  
 function chknumchar(name1,val1) {
   for (var i=0;i<val1.length;i++) 
      {
       var ss=val1.charAt(i);
       if ((ss < "0" || ss>"9") && (ss<"A" || ss> "Z") && (ss<"a" || ss>"z")) {
         alert(name1+"必須為數字或字母.");
         return(false);
         }
       }
    return(true)
  }
 function chknum(name1,val1) {
   for (var i=0;i<val1.length;i++) 
      {
       var ss=val1.charAt(i);
       if (ss < "0" || ss>"9") {
         alert(name1+"必須為數字.");
         return(false);
         }
       }
    return(true)
  }

function vtrim(val1) {
   var newval="";
   for (var i=0;i<val1.length;i++) 
      {
       var ss=val1.charAt(i);
       if (ss!=" ") newval+=ss;
       }
   return(newval);
}

function trim(val1) {
   var newval="";
   var newval2="";
   for (var i=0;i<val1.length;i++) 
      {
       var ss=val1.charAt(i);
       if (ss!=" " || newval!="") {
          if (ss==" ") {
             if (newval!="") newval2+=ss;
             }
             else 
             {newval=newval + newval2 + ss;
              newval2="";
             }
       }
   }
   return(newval);
}
 function chkamt(name1,val1) {
   var dotno=0;
   var netno=0;
   var posno=0;
   var allspc=0;
   var decno=0;
     for (var i=0;i<val1.length;i++) 
      {
       var ss=val1.charAt(i);
       if ((ss < "0" || ss>"9") && (ss!=".") && (ss!=",") && (ss!="-") && (ss!="+")) {
         if (ss!=' ' || ss==" " & allspc>0) {
           alert(name1+"必須為數字, , ,-,+ 符號. Invalid amount value.");
           return(false);
         }
         }
        
       if (ss!=" ") allspc++;
       if (ss==".") {dotno++; decno=1;}
       if (ss>="0" && ss<="9" && decno>0) decno++;
       if (ss=="+") netno++;
       if (ss=="-") posno++;
       }
    if ((parseFloat(val1) > 100000000000) || (parseFloat(val1) < -100000000000)) {
         alert(name1+"太大或太少. Amount invalid.");
         return(false);
       }
    if (dotno>1) {
         alert(name1+"不能有多於一個("+dotno+")小數點."+val1+" More than one dot");
         return(false);
       }  
    if (decno>3) {
         alert(name1+"小數點後不能多於二個數字 Decimal to long.");
         return(false);
       } 
    if (posno>1) {
         alert(name1+"不能有多於一個 + 號. More than one + (plus).");
         return(false);
       }   
    if (netno>1) {
         alert(name1+"不能有多於一個 - 號 More than one - (minus).");
         return(false);
       }       
    return(true)
  }

 function chkchar(name1,val1) {
   for (var i=0;i<val1.length;i++) 
      {
       var ss=val1.charAt(i);
       if ((ss<"A" || ss> "Z") && (ss<"a" || ss>"z")) {
         alert(name1+"必須為字母.");
         return(false);
         }
       }
    return(true)
  }

 function chkstring(name1,val1) {
   for (var i=0;i<val1.length;i++) 
      {
       ss=val1.charAt(i)
       if ((ss<" ") || (ss=="\"") || (ss=="\'")) {
         alert(name1+"不能有非法字符.");
         return(false);
         }
       }
    return(true)
  }
  function chkcnlength(name1,val1,len1)
{
  var j=0;
  var incn=false;
   for (var i=0;i<val1.length;i++) 
    { ss=val1.charAt(i);
       j=j+1;
       if (ss> "~")
        {j=j+1;
	if (!incn){						//just into cn char + oe
				 j=j+1; 
				 incn=true;
			  }
		} else
		{if (incn) {incn=false;    //just out of cn char + of
		         j=j+1;
				   }
		}
       if (j>len1){  
                alert(name1+ "最大長度為" + len1 +"." + "(從" + ss +"超出)");
         return(false);
				  }
    }
    return(true)
}

 function chkphoneno(name1,val1) {
   for (var i=0;i<val1.length;i++) 
      {
       var ss=val1.charAt(i);
       if ((ss < "0" || ss>"9") && (ss!="(") && (ss!=")") && (ss!=")") && (ss!="-") && (ss!=" ")) {
         alert(name1+"必須為數字,空格,(),-符號.");
         return(false);
         }
       }
    return(true)
  }
 function chkemail(name1,val1) {
  if (val1.length>1) {
   for (var i=0;i<val1.length;i++) 
      {
       var ss=val1.charAt(i);
       if ((ss < "0" || ss>"9") && (ss<"A" || ss> "Z") && (ss<"a" || ss>"z") && (ss!="@") && (ss!=".") && (ss!="_")) {
         alert(name1+"必須為數字,字母 或 @ _ 符號.");
         return(false);
         }
       }
    if (val1.indexOf("@")==-1) {
      alert(name1+"必須有 @ 號.");
      return(false);
      }    
    if (val1.indexOf(".")==-1) {
      alert(name1+"必須有 . 號.");
      return(false);
      }    
    }
    return(true)
  }

 function chknochi(name1,val1) {
   for (var i=0;i<val1.length;i++) 
      {
        ss=val1.charAt(i)
       if ((ss> "~") || (ss=="\"") || (ss=="\'")) {
         alert(name1+"不能有中文或其他非法字符.");
         return(false);
         }
       }
    return(true)
  }
  
  function chkyear(name1,val1) {
   if (val1.length<1)
          {
         alert(name1+"年份必須有數據為1900-2100.");
         return(false);
         }
   for (var i=0;i<val1.length;i++) 
      {
       var ss=val1.charAt(i);
       if (ss < "0" || ss>"9") {
         alert(name1+"年份必須為數字.");
         return(false);
         }
       }
   if (parseInt(val1) < 1900 || parseInt(val1)>2100)
          {
         alert(name1+"年份必須為1900-2100.");
         return(false);
         }
    return(true)
  }
  function chkmonth(name1,val1) {
   if (val1.length<1)
          {
         alert(name1+"月份必須有數據為1-12.");
         return(false);
         }
    var valv="";
   for (var i=0;i<val1.length;i++) 
      {
       var ss=val1.charAt(i);
       if (ss!="0" || valv!="") valv=valv+ss; 
       if (ss < "0" || ss>"9") {
         alert(name1+"月份必須為數字.");
         return(false);
         }
       }
   if (parseInt(valv)<1 || parseInt(valv)>12)
          {
         alert(name1+"月份必須為 1-12.");
         return(false);
         }
    return(true)
  }
  function chkday(name1,val1) {
   if (val1.length<1)
          {
         alert(name1+"日必須有數據為1-31.");
         return(false);
         }
   var valv="";
   for (var i=0;i<val1.length;i++) 
      {
       var ss=val1.charAt(i);
       if (ss!="0" || valv!="") valv=valv+ss; 
       if (ss < "0" || ss>"9") {
         alert(name1+"日必須為數字.");
         return(false);
         }
       }
   if (parseInt(valv)<1 || parseInt(valv)>31)
          {
         alert(name1+"日必須為 1-31.");
         return(false);
         }
    return(true)
  }

  function chkdate(name1,valyy,valmm,valdd) {
   if (!chkyear(name1,valyy)) return(false);
   if (!chkmonth(name1,valmm)) return(false);
   if (!chkday(name1,valdd)) return(false);
   var monthVal=parseInt(valmm);
   var yearVal=parseInt(valyy);
   var monthMax = new Array(31,31,28,31,30,31,30,31,31,30,31,30,31);
   if (monthVal==2) {
      
      yearVal1= Math.round(yearVal/4.0) * 4.0;
      if (yearVal==yearVal1) monthMax[2]=29;
    }
    if (parseInt(valdd) > monthMax[monthVal]) {
          alert(name1+"日必須為 1-" + monthMax[monthVal] + ".");
         return(false);
         }    
    return(true)
  }


function emailChk (emailStr) {

var checkTLD=1;
var knownDomsPat=/^(com|net|org|edu|int|mil|gov|arpa|biz|aero|name|coop|info|pro|museum)$/;
var emailPat=/^(.+)@(.+)$/;
var specialChars="\\(\\)><@,;:\\\\\\\"\\.\\[\\]";
var validChars="\[^\\s" + specialChars + "\]";
var quotedUser="(\"[^\"]*\")";
var ipDomainPat=/^\[(\d{1,3})\.(\d{1,3})\.(\d{1,3})\.(\d{1,3})\]$/;
var atom=validChars + '+';
var word="(" + atom + "|" + quotedUser + ")";
var userPat=new RegExp("^" + word + "(\\." + word + ")*$");
var domainPat=new RegExp("^" + atom + "(\\." + atom +")*$");
var matchArray=emailStr.match(emailPat);

if (matchArray==null) {
alert("Email address seems incorrect (check @ and .'s)");
return false;
}
var user=matchArray[1];
var domain=matchArray[2];

for (i=0; i<user.length; i++) {
if (user.charCodeAt(i)>127) {
alert("Ths username contains invalid characters.");
return false;
   }
}
for (i=0; i<domain.length; i++) {
if (domain.charCodeAt(i)>127) {
alert("Ths domain name contains invalid characters.");
return false;
   }
}

if (user.match(userPat)==null) {
alert("The username doesn't seem to be valid.");
return false;
}

var IPArray=domain.match(ipDomainPat);
if (IPArray!=null) {
for (var i=1;i<=4;i++) {
if (IPArray[i]>255) {
alert("Destination IP address is invalid!");
return false;
   }
}
return true;
}

 
var atomPat=new RegExp("^" + atom + "$");
var domArr=domain.split(".");
var len=domArr.length;
for (i=0;i<len;i++) {
if (domArr[i].search(atomPat)==-1) {
alert("The domain name does not seem to be valid.");
return false;
   }
}

if (checkTLD && domArr[domArr.length-1].length!=2 && 
domArr[domArr.length-1].search(knownDomsPat)==-1) {
alert("The address must end in a well-known domain or two letter " + "country.");
return false;
}

if (len<2) {
alert("This address is missing a hostname!");
return false;
}
return true;
}

