function Trim(txt)
{
	if (txt == "")
		return txt;

	var txtLen = txt.length;

	for (var i=1; i<= txtLen; i++)
	{
		if (txt.substring(0, 1) == " " || txt.substring(0,1) == "　")
			txt = txt.substring(1, txt.length);
		else
			break;
	}

	for (var i=1; i <= txtLen; i++)
	{
		if (txt.substring(txt.length - 1, txt.length) == " " || txt.substring(txt.length - 1, txt.length) == "　")
			txt = txt.substring(0, txt.length - 1);
		else
			break;
	}

	return txt;
}

function FieldNonEmpty(objField, ErrMsg)
{
	var txt = Trim(objField.value);
	if (txt == "")
	{
		if (ErrMsg != null && ErrMsg != "")
		{
			alert(ErrMsg);
			objField.focus();
		}
		return false;
	}
	return true;
}

function CheckobjNonChecked(objCheck, ErrMsg)
{
	if (objCheck.value != null)
		var IsMulti = false;
	else
		var IsMulti = true;

	if (IsMulti == false)
	{
		if (objCheck.checked == false)
		{
			if (ErrMsg != null && ErrMsg != "")
				alert(ErrMsg);

			objCheck.focus();
			return false;
		}
	}
	else
	{
		var flg = false;
		for (var i=1; i<=objCheck.length; i++)
		{
			if (objCheck[i-1].checked == true)
			{
					flg = true;
					break;
			}
		}

		if (flg == false)
		{
			if (ErrMsg != null && ErrMsg != "")
				alert(ErrMsg);

			objCheck[0].focus();
			return false;
		}
	}

	return true;
}

function ValidateFieldError(e, o)
{
	if (e)
	{
		o.show();
    o.focus();
		return false;
	}
	else
	{
		o.hide();
		return true;
	}
}

function ValidationNumber(objStr ,ErrMsg)
{
	if (isNaN(objStr.value))
	{
		if (ErrMsg != null && ErrMsg != "")
		{
			alert(ErrMsg);
			objStr.focus();
		}

		return false;
	}
	return true;
}

function ValidateFieldMail(objMail, ErrMsg)
{
  var email = objMail.value;

	/* check 1 */
	var ret1 = true;
	reg_v = "\\w+([-+.]\\w+)*@\\w+([-.]\\w+)*\\.\\w+([-.]\\w+)*" ;
	var rx = new RegExp(reg_v);
	var matches = rx.exec(email);
	email_ret = (matches != null && email == matches[0]);

	if (email.length == 0 || email_ret == false)
	{
		ret1 = false;
	}

    /* check 2 */
	var ret2 = true;
	var rege = /^([a-zA-Z0-9_\.\-])+\@(([a-zA-Z0-9\-])+\.)+([a-zA-Z0-9])+$/;
	if (email.length == 0 || rege.exec(email) == null)
	{
		ret2 = false;
	}

	if (!ret1 && !ret2)
	{
		if (ErrMsg != null && ErrMsg != "")
		{
			alert(ErrMsg);
			objMail.focus();
		}
		return false;
	}

	return true;
}

function ValidateFieldDate(objYYYY, objMM, objDD, ErrMsg)
{
	if (objYYYY.type == "select-one")
		var y = parseInt(objYYYY[objYYYY.selectedIndex].value, 10);
	else
		var y = parseInt(objYYYY.value, 10);

	if (objMM.type == "select-one")
		var m = parseInt(objMM[objMM.selectedIndex].value, 10);
	else
		var m = parseInt(objMM.value,10);
	
	if (objDD.type == "select-one")
		var d = parseInt(objDD[objDD.selectedIndex].value, 10);
	else
		var d = parseInt(objDD.value, 10);

	if (y < 1900)
	{
    y = y + 1911; // 民國年才轉為西元年
  }
	var dt = new Date(y, m, 1);
	dt.setDate(dt.getDate() - 1);
	var maxday = dt.getDate();
	if(d > maxday)
	{
		if (ErrMsg != null && ErrMsg != "")
		{
			alert(ErrMsg);
			objDD.focus();
		}
		return false;
	}

	return true;
}

function ValidateFiledBirthday(objStr, objType, Range, ErrMsg)
{
	var ChkDate = new Date();
	var age =  eval(ChkDate.getFullYear())  - eval(objStr.value);
	if(objType == 1)
	{
		if( age < eval(Range))
		{
			if (ErrMsg != "")
			{
				alert(ErrMsg)
				objStr.focus();
			}
			return false;
		}
	}

	if(objType == 2)
	{
		if( age > eval(Range))
		{
			if (ErrMsg!="")
			{
				alert(ErrMsg)
				objStr.focus();
			}
			return false;
		}
	}
	return true;
}

function StrLen(SouceStr)
{
	var totalBytes = 0 ;
	for(i = 0;i < SouceStr.length; i++)
	{
		chr = SouceStr.charCodeAt(i);
		if (chr > 256)
		{
				totalBytes+=2;
		}
		else
		{
				totalBytes++;
		}
	}
	return totalBytes;
}

function ValidateStrLen(objStr ,chkBytes ,ErrMsg)
{
	var strLen = StrLen(objStr.value);

	if (strLen > chkBytes)
	{
		if (ErrMsg != null && ErrMsg != "")
		{
			alert(ErrMsg);
			objStr.focus();
		}
		return false;
	}
	return true;
}


function check_tw_id(sId)
{
	var LegalID = "0123456789"
	var fResult = true;
	if(sId.length < 10)
		fResult=false;
	else
	{
			if((sId.charAt(0)=='A') || (sId.charAt(0)=='a')) value=10
			else if((sId.charAt(0)=='B') || (sId.charAt(0)=='b')) value=11
			else if((sId.charAt(0)=='C') || (sId.charAt(0)=='c')) value=12
			else if((sId.charAt(0)=='D') || (sId.charAt(0)=='d')) value=13
			else if((sId.charAt(0)=='E') || (sId.charAt(0)=='e')) value=14
			else if((sId.charAt(0)=='F') || (sId.charAt(0)=='f')) value=15
			else if((sId.charAt(0)=='G') || (sId.charAt(0)=='g')) value=16
			else if((sId.charAt(0)=='H') || (sId.charAt(0)=='h')) value=17
			else if((sId.charAt(0)=='J') || (sId.charAt(0)=='j')) value=18
			else if((sId.charAt(0)=='K') || (sId.charAt(0)=='k')) value=19
			else if((sId.charAt(0)=='L') || (sId.charAt(0)=='l')) value=20
			else if((sId.charAt(0)=='M') || (sId.charAt(0)=='m')) value=21
			else if((sId.charAt(0)=='N') || (sId.charAt(0)=='n')) value=22
			else if((sId.charAt(0)=='P') || (sId.charAt(0)=='p')) value=23
			else if((sId.charAt(0)=='Q') || (sId.charAt(0)=='q')) value=24
			else if((sId.charAt(0)=='R') || (sId.charAt(0)=='r')) value=25
			else if((sId.charAt(0)=='S') || (sId.charAt(0)=='s')) value=26
			else if((sId.charAt(0)=='T') || (sId.charAt(0)=='t')) value=27
			else if((sId.charAt(0)=='U') || (sId.charAt(0)=='u')) value=28
			else if((sId.charAt(0)=='V') || (sId.charAt(0)=='v')) value=29
			else if((sId.charAt(0)=='X') || (sId.charAt(0)=='x')) value=30
			else if((sId.charAt(0)=='Y') || (sId.charAt(0)=='y')) value=31
			else if((sId.charAt(0)=='W') || (sId.charAt(0)=='w')) value=32
			else if((sId.charAt(0)=='Z') || (sId.charAt(0)=='z')) value=33
			else if((sId.charAt(0)=='I') || (sId.charAt(0)=='i')) value=34
			else if((sId.charAt(0)=='O') || (sId.charAt(0)=='o')) value=35
			else fResult = false ;
			if (!(sId.charAt(1)==1||sId.charAt(1)==2))
				fResult = false ;
	}
	if(fResult==true)
	{
		value = Math.floor(value/10) + (value%10)*9 + parseInt(sId.charAt(1))*8 +
						parseInt(sId.charAt(2))*7 + parseInt(sId.charAt(3)) * 6 + parseInt(sId.charAt(4)) * 5 +
						parseInt(sId.charAt(5))*4 + parseInt(sId.charAt(6)) * 3+ parseInt(sId.charAt(7)) * 2+
						parseInt(sId.charAt(8)) + parseInt(sId.charAt(9)) ;
		value = value % 10 ;
		if(value!=0) fResult = false ;

		var i;
		var c;
		for (i = 1; i < sId.length; i++)
		{
			c = sId.charAt(i);
			if (LegalID.indexOf(c) == -1) fResult = false;
		}
	}
	if(fResult == false)
		return false;
	else
		return true;
}

function getBytesLength(SouceStr)
{
	var totalBytes = 0 ;
	for(i = 0; i < SouceStr.length; i++)
	{
		chr = SouceStr.charCodeAt(i);
		if (chr > 127)
		{
			totalBytes += 2;
		}
		else
		{
			totalBytes++;
		}
	}
	return totalBytes;
}

function check_Field_tw_id(obj,ErrMsg)
{
	if (!check_tw_id(obj.value))
	{
		if (ErrMsg != null && ErrMsg != "")
				alert(ErrMsg);
		obj.focus();
		return false;
	}
	return true;
}
