function clsValidate()
{
	this.IsEmpty = IsEmpty;
	this.IsMailAddress = IsMailAddress;
	this.IsInteger = IsInteger;
	this.IsPID = IsPID;
	this.IsBID = IsBID;
	
	this.Trim = Trim;
	this.RTrim = RTrim;
	this.LTrim = LTrim;

	function IsEmpty(str)
	{
		var re = /^\s*$/i;
		return re.test(str);
	}
	function IsMailAddress(str)
	{
		var re = /^.+@.+\..+$/i;
		return re.test(str);
	}
	function IsInteger(str)
	{
		var re = /^[+|-]?\d+$/i;
		return re.test(str);
	}
	
	function RTrim(theString)
	{
		var re = /[ ]+$/i;
		return theString.replace(re, "");
	}

	function LTrim(theString)
	{
		var re = /^[ ]+/i;
		return theString.replace(re, "");
	}

	function Trim(theString)
	{
		theString = RTrim(theString);
		theString = LTrim(theString);
		return theString;
	}

	function IsBID(BID)
	{
//	檢查營利事業統一編號。
//	Modify: 2002/08/27
		if(BID.length != 8) return false;
		var re = /\d{8}/i;
		if (! re.test(BID)) return false;

		var AS2 = new Array(0,2,4,6,8,1,3,5,7,9);
		var AS4 = new Array(0,4,8,3,7,2,6,0,5,9);

		var hh = parseInt(BID.charAt(0)) + parseInt(BID.charAt(2)) + parseInt(BID.charAt(4)) + parseInt(BID.charAt(7));
		hh += AS2[BID.charAt(1)] + AS2[BID.charAt(3)] + AS2[BID.charAt(5)];
		if(BID.charAt(6) == '7')
		{
			hh += AS4[BID.charAt(6)];
			return (hh % 10 == 0) || ((hh+1) % 10 == 0);
		}
		else
		{
			hh += AS4[BID.charAt(6)];
			return (hh % 10 == 0);
		}
	}
	
	function IsPID(PID)
	{
//	檢查身份證字號。
//	Modify: 2002/08/27
		PID = PID.toUpperCase();
		if(PID.length != 10) return false;
		var re = /[ABCDEFGHJKLMNPQRSTUVXYWZIO][12]\d{8}/i;
		if (! re.test(PID)) return false;

		var AS0 = "ABCDEFGHJKLMNPQRSTUVXYWZIO";
		var AS1 = "11111111112222222222333333";
		var AS2 = "01234567890123456789012345";

		var idx = 0;
		idx = AS0.indexOf(PID.charAt(0));
		AS1 = AS1.charAt(idx);
		AS2 = AS2.charAt(idx);
		var i,j, hh = 0;
		for(i = 1; i < 9; i++)
		{
			j = parseInt(PID.charAt(i));
			hh = hh + (j * (9-i));
		}
		hh = hh + parseInt(PID.charAt(9)) + parseInt(AS1) + (parseInt(AS2) *9);
		if ((hh % 10) != 0) return false;
		return true;
	}

}

