﻿/*
	1.LTrim(string)－－去除字符串左邊的空格
	2.RTrim(string)－－去除字符串右邊的空格
	3.Trim(string)－－去除字符串兩邊的空格
	4.checkmail(string)－－驗證E-mail格式
	5.keyin_NUM_Eng(string)－－只能輸入數字和英文(身份證字號用)
	6.check_TW_ID(string)－－驗證台灣的身份證字號格式
	7.show_cal(obj)－－呼叫JavaScrip的月曆
	8.check_Checked(layer,string)－－檢查是否有選取(checkbox、readio)
	9.check_NUM(string)－－驗證輸入是否為數字
	10.keyin_NUM(string)－－只能輸入數字
*/

/*
==================================================================
1.LTrim(string):去除左邊的空格
==================================================================
*/
function LTrim(str) { 
	return str.replace(/^[ \t\n\r]+/g, "");
}

/*
==================================================================
2.RTrim(string):去除右邊的空格
==================================================================
*/
function RTrim(str) {
	return str.replace(/[ \t\n\r]+$/g, "");
}

/*
==================================================================
3.Trim(string):去除前後空格
==================================================================
*/
function Trim(str)
{
	//return RTrim(LTrim(str));
	return str.replace(/^\s{1,}$/g, "");
}

/*
==================================================================
4.checkmail(string):驗證E-mail格式
==================================================================
*/
function checkmail(str) {
	re = /^\w+([\.-]?\w+)*@\w+([\.-]?\w+)*(\.\w{2,3})+$/;
	if (re.test(str))
	{
		return true;
	} 
	else 
	{
		return false;
	}
}

/*
==================================================================
5.keyin_NUM_Eng(string):只能輸入數字和英文(身份證字號用)
	使用方式：onKeypress = "return keyin_NUM_Eng(event.keyCode)"
==================================================================
*/
function keyin_NUM_Eng(str)
{
  if ((str >= 48 && str <= 57) || (str >= 65 && str <= 90) || (str >= 97 && str <= 122))
      return true;
  else
      return false;
}

/*
==================================================================
6.check_TW_ID(string):驗證台灣的身份證字號格式
	使用方式：check_TW_ID(string)
	回傳：true(正確)、false(錯誤)

	身分證字號規則： 
	字母(ABCDEFGHJKLMNPQRSTUVXYWZIO)對應一組數(10~35)， 
	令其十位數為X1，個位數為X2；( 如A：X1=1 , X2=0 )；D表示2~9數字 
	Y = X1 + 9*X2 + 8*D1 + 7*D2 + 6*D3 + 5*D4 + 4*D5 + 3*D6 + 2*D7+ 1*D8 + D9 
	如Y能被10整除，則表示該身分證號碼為正確，否則為錯誤。
==================================================================
*/
function check_TW_ID(str)
{
	if(str.length == 10)
	{
		var LegalID = "0123456789" 
  	var i;
  	var intSum = 0;
  	
  	//檢查第1碼是否為英文
		if((str.charAt(0)=='A') || (str.charAt(0)=='a')) intSum=10   
		else if((str.charAt(0)=='B') || (str.charAt(0)=='b')) intSum=11   
		else if((str.charAt(0)=='C') || (str.charAt(0)=='c')) intSum=12   
		else if((str.charAt(0)=='D') || (str.charAt(0)=='d')) intSum=13   
		else if((str.charAt(0)=='E') || (str.charAt(0)=='e')) intSum=14   
		else if((str.charAt(0)=='F') || (str.charAt(0)=='f')) intSum=15   
		else if((str.charAt(0)=='G') || (str.charAt(0)=='g')) intSum=16   
		else if((str.charAt(0)=='H') || (str.charAt(0)=='h')) intSum=17   
		else if((str.charAt(0)=='J') || (str.charAt(0)=='j')) intSum=18   
		else if((str.charAt(0)=='K') || (str.charAt(0)=='k')) intSum=19   
		else if((str.charAt(0)=='L') || (str.charAt(0)=='l')) intSum=20   
		else if((str.charAt(0)=='M') || (str.charAt(0)=='m')) intSum=21   
		else if((str.charAt(0)=='N') || (str.charAt(0)=='n')) intSum=22   
		else if((str.charAt(0)=='P') || (str.charAt(0)=='p')) intSum=23   
		else if((str.charAt(0)=='Q') || (str.charAt(0)=='q')) intSum=24   
		else if((str.charAt(0)=='R') || (str.charAt(0)=='r')) intSum=25   
		else if((str.charAt(0)=='S') || (str.charAt(0)=='s')) intSum=26   
		else if((str.charAt(0)=='T') || (str.charAt(0)=='t')) intSum=27   
		else if((str.charAt(0)=='U') || (str.charAt(0)=='u')) intSum=28   
		else if((str.charAt(0)=='V') || (str.charAt(0)=='v')) intSum=29   
		else if((str.charAt(0)=='X') || (str.charAt(0)=='x')) intSum=30   
		else if((str.charAt(0)=='Y') || (str.charAt(0)=='y')) intSum=31   
		else if((str.charAt(0)=='W') || (str.charAt(0)=='w')) intSum=32   
		else if((str.charAt(0)=='Z') || (str.charAt(0)=='z')) intSum=33   
		else if((str.charAt(0)=='I') || (str.charAt(0)=='i')) intSum=34   
		else if((str.charAt(0)=='O') || (str.charAt(0)=='o')) intSum=35   
		else return false ;
		
		//檢查2~10碼是否為數字
		for (i = 1; i < str.length; i++)
		{
			if(LegalID.indexOf(str.charAt(i)) == -1)
				return false ;
		}
		
		//第2碼必須為1或2   1:男性 2:女性
		if((str.charAt(1)=='1') || (str.charAt(1)=='2'))
		{
			//英文字母轉成數字後，10位數*1+個位數*9
			intSum = parseInt(intSum / 10) + parseInt(intSum % 10) * 9
			
			//8*D1 + 7*D2 + 6*D3 + 5*D4 + 4*D5 + 3*D6 + 2*D7+ 1*D8 + D9 
			for (i = 1; i < 9; i++)
      {      	
        intSum += parseInt(str.charAt(i)) * (9 - i);
     	}
     	intSum = intSum + parseInt(str.charAt(9));

     	//總和能被10整除，代表此身份證字號正確，否則錯誤
     	if (intSum % 10 == 0)
     		return true;
     	else
     		return false;
		}
		else
		{
			return false;
		}
	}
	else
	{
		return false;
	}
}

/*
==================================================================
7.show_cal(obj):呼叫JavaScrip的月曆
	使用方式：onClick="show_cal(this)"
						必須引用ts_picker.js檔(JavaScrip的月曆檔案)
==================================================================
*/
function show_cal(obj){
  if(obj.value!=''){
  	var ty = obj.value.substring(0,(obj.value.indexOf('/')));
    var tm = obj.value.substring(obj.value.indexOf('/')+1,obj.value.lastIndexOf('/'));
    var td = obj.value.substring((obj.value.lastIndexOf('/')+1),(obj.value.length));
    show_calendar('document.form1.' + obj.name, td+'-'+tm+'-'+ty+'  '+'10:14:35','top=' + (screen.availHeight-250)/2 + ',left=' + (screen.availWidth-100)/2 + '');
  }else{
    show_calendar('document.form1.' + obj.name, obj.value,'top=' + (screen.availHeight-250)/2 + ',left=' + (screen.availWidth-100)/2 + '');
  }
}

/*
==================================================================
8.check_Checked(layer,str):檢查是否有選取(checkbox、readio)
	使用方式：onClick="check_select(layer,string)"
						layer：from的名稱(例如：from1)
						str：元件名稱
	回傳：true(有選取)、false(無選取)
==================================================================
*/
function check_Checked(layer,str){
	var obj = document.forms[layer].all[str];
	var intItem = 0;
	if(obj != null){
		if(obj.length == undefined){
			if (obj.name == str) {
				if(obj.checked == true) {
					intItem = intItem + 1;
				}
			}
		}
		else{
			for (i=0; i<obj.length; i++) {
				if (obj[i].name == str) {
					if(obj[i].checked == true) {
						intItem = intItem + 1;
					}
				}
			}
			
		}
	}
	if(intItem == 0){
		return false;
	}
	else{
		return true;
	}
}

/*
==================================================================
9.check_NUM(str):驗證輸入是否為數字
	使用方式：onClick="check_NUM(string)"
						str：字串
	回傳：true(全為數字)、false(有非數字)
==================================================================
*/
function check_NUM(str)
{
	var LegalID = "0123456789";
	for (i = 0; i < str.length; i++)
	{
		if(LegalID.indexOf(str.charAt(i)) == -1)
			return false;
	}
  return true;
}

/*
==================================================================
10.keyin_NUM(string):只能輸入數字
	使用方式：onKeypress = "return keyin_NUM(event.keyCode)"
==================================================================
*/
function keyin_NUM(str)
{
  if (str >= 48 && str <= 57)
      return true;
  else
      return false;
}