<!--
/*************************************************************
'Filename         : judge_function.js
'Author           : Judge Hsu (徐鵬湧)
'Date of creation : 2005/12/27
'Version          : 1.0
'Purpose          : Javascript Function
'Date modified    : 2006/5/29
'*************************************************************/

/*************************************************************
'是否為空白
'************************************************************/
function checkEmpty(strString)
{
	var intEmptyNo = 0;
	for (var intCount=0 ; intCount<strString.length ; intCount++)
	{
		if (strString.substr(intCount,1) == " ")
		{
			intEmptyNo = intEmptyNo + 1;
		}
		
	}
	
	if (parseInt(strString.length) == parseInt(intEmptyNo))
	{
		return false;
	}
}


/*************************************************************
'只能使用英文or數字
'************************************************************/
function englishfont(field)
{
var valid = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrsutvwxyz0123456789"
var ok = "yes";
var temp;
for (var i=0; i<field.value.length; i++)
{
	temp = "" + field.value.substring(i, i+1);
	if (valid.indexOf(temp) == "-1") ok = "no";
}
if (ok == "no")
{
	alert("只能使用英文或數字喔！");
	field.focus();
	field.select();
	return false;
}
}

/*************************************************************
'檢查統一編號
'************************************************************/
 function idchk(obj)
{
	var f=/^[0123456789]?[0123456789]+$/;
	if (obj.value.length!=8)
	{
		alert("統一編號必須為8位。");
		obj.select();
		obj.focus();
		return false;
	}

	if (!f.test(obj.value))
	{
		alert("統一編號必須輸入數字！");
		obj.select();
		obj.focus();
		return false;
	}

	var arry2 = new Array(1,2,1,2,1,2,4,1);
	var arry3 = new Array(8);
	var sum=0;

	for (i = 0; i < 8; i++)
	{
		arry3[i]= parseInt(arry2[i]) * parseInt(obj.value.substr(i,1));
		arry3[i]=arry3[i]+ '0';
		arry3[i]=parseInt(arry3[i].substr(0,1))+parseInt(arry3[i].substr(1,1));
		sum=sum+parseInt(arry3[i])
	}
	if (obj.value.substr(6,1)=='7')
	{
		sum=sum-10;
		if ( ((sum % 10)==0 ) || (((sum+1)%10)==0) )
		{
			return true;
		}
		else
		{
			alert("統一編號的值，沒有通過邏輯檢查，請改正。");
			obj.focus();
			return false;
		}
	}
	else
	{
		if ( (sum % 10)==0)
		{
			return true;
		}
		else
		{
			alert("統一編號的值，沒有通過邏輯檢查，請改正。");
			obj.focus();
			return false;
		}

	}
}


/*************************************************************
'驗證電子郵件格式
'************************************************************/
function isMail(s)
{
var patrn=/\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*/;
if (!patrn.exec(s)) return false
return true
}

/*************************************************************
'只能使用數字
'************************************************************/
function isDigit(s)
{
var patrn=/^[0-9]{1,20}$/;
if (!patrn.exec(s)) return false
return true
}

/*************************************************************
'只能使用大寫的英文字
'************************************************************/
function isBigEnglish(s)
{
var patrn=/^[A-Z]+$/;
if (!patrn.exec(s)) return false
return true
}
 
/*************************************************************
'只能使用英文字
'************************************************************/
function isEnglish(s)
{
var patrn=/^[a-zA-Z]+$/;
if (!patrn.exec(s)) return false
return true
}

/*************************************************
* FUNCTION: isBetween
* PARAMETERS: val AS any value
* lo AS Lower limit to check
* hi AS Higher limit to check
* CALLS: NOTHING
* RETURNS: TRUE if val is between lo and hi both inclusive, otherwise false.
***************************************************/
function isBetween (val, lo, hi) {
if ((val < lo) || (val > hi)) { return(false); }
else { return(true); }
}

/************************************************
* FUNCTION: isDate checks a valid date
* PARAMETERS: theStr AS String
* CALLS: isBetween, isInt
* RETURNS: TRUE if theStr is a valid date otherwise false.
*************************************************/
function isDate (theStr) {
var the1st = theStr.indexOf('/');
var the2nd = theStr.lastIndexOf('/');

if (the1st == the2nd) { return(false); }
else {
var y = theStr.substring(0,the1st);
var m = theStr.substring(the1st+1,the2nd);
var d = theStr.substring(the2nd+1,theStr.length);
var maxDays = 31;

if (isInt(m)==false || isInt(d)==false || isInt(y)==false) {
return(false); }
else if (y.length < 4) { return(false); }
else if (!isBetween (m, 1, 12)) { return(false); }
else if (m==4 || m==6 || m==9 || m==11) maxDays = 30;
else if (m==2) {
if (y % 4 > 0) maxDays = 28;
else if (y % 100 == 0 && y % 400 > 0) maxDays = 28;
else maxDays = 29;
}
if (isBetween(d, 1, maxDays) == false) { return(false); }
else { return(true); }
}
}
/**************************************************
* FUNCTION: Compare Date! Which is the latest!
* PARAMETERS: lessDate,moreDate AS String
* CALLS: isDate,isBetween
* RETURNS: TRUE if lessDate<moreDate
****************************************************/
function isComdate (lessDate , moreDate)
{
if (!isDate(lessDate)) { return(false);}
if (!isDate(moreDate)) { return(false);}
var less1st = lessDate.indexOf('-');
var less2nd = lessDate.lastIndexOf('-');
var more1st = moreDate.indexOf('-');
var more2nd = moreDate.lastIndexOf('-');
var lessy = lessDate.substring(0,less1st);
var lessm = lessDate.substring(less1st+1,less2nd);
var lessd = lessDate.substring(less2nd+1,lessDate.length);
var morey = moreDate.substring(0,more1st);
var morem = moreDate.substring(more1st+1,more2nd);
var mored = moreDate.substring(more2nd+1,moreDate.length);
var Date1 = new Date(lessy,lessm,lessd); 
var Date2 = new Date(morey,morem,mored); 
if (Date1>Date2) { return(false);}
return(true); 

}

/**********************************************
* FUNCTION isEmpty checks if the parameter is empty or null
* PARAMETER str AS String
*************************************************/
function isEmpty (str) {
if ((str==null)||(str.length==0)) return true;
else return(false);
}

/***********************************************
* FUNCTION: isInt
* PARAMETER: theStr AS String 
* RETURNS: TRUE if the passed parameter is an integer, otherwise FALSE
* CALLS: isDigit
***************************************************/
function isInt (theStr) {
var flag = true;

if (isEmpty(theStr)) { flag=false; }
else
{ for (var i=0; i<theStr.length; i++) {
if (isDigit(theStr.substring(i,i+1)) == false) {
flag = false; break;
}
}
}
return(flag);
}

/*****************************************************
* FUNCTION: isReal
* PARAMETER: heStr AS String 
decLen AS Integer (how many digits after period)
* RETURNS: TRUE if theStr is a float, otherwise FALSE
* CALLS: isInt
*******************************************************/
function isReal (theStr, decLen) {
var dot1st = theStr.indexOf('.');
var dot2nd = theStr.lastIndexOf('.');
var OK = true;

if (isEmpty(theStr)) return false;

if (dot1st == -1) {
if (!isInt(theStr)) return(false);
else return(true);
}

else if (dot1st != dot2nd) return (false);
else if (dot1st==0) return (false);
else {
var intPart = theStr.substring(0, dot1st);
var decPart = theStr.substring(dot2nd+1);

if (decPart.length > decLen) return(false);
else if (!isInt(intPart) || !isInt(decPart)) return (false);
else if (isEmpty(decPart)) return (false);
else return(true);
}
}
 //-->
