﻿	/*=================================================================== 
	'**   <script language=javascript src="IncludeLib/JavaScript/Check/CommJS.js">   </script>
	'** 檔案名:		CommJS.js
	‘** 撰寫人:	micro_hu
	‘** 建立日期:	2004/12/10
	‘** 功能描述:	對日期處理
	‘** 相關檔案:		
	‘** Copyright c2003-2004 Maxense Co., Ltd.			
	‘** ===================================================================
		//http://www.smartwebby.com/DHTML/date_validation.asp
	‘** ===========================  修改記錄  ============================
	‘** 修改日期:				
	‘** 撰寫人:			
	‘** 修改原因	加上返回值。		
	‘** 修改內容:	
	=================================================================== 
	*/
	//------------------------------------------------------------------------------------//////////////
	//適用於對對象進行檢證
	//參數說明:obj= 對象的id ,Msg=提示信息,Tyep=驗證類型
	//(0＝是否為空，1＝英文字母，2＝漢字，3＝整數，4＝數值，
	//5＝EMail格式，6＝西元日期，7＝民國日期，8＝圖片文件,
	//10＝RadioButtonList選擇其中一項,若沒有,顯示提示信息Msg，10=CheckBoxList是否有勾選，若沒有勾選 顯示提示信息Msg)
	//
	//------	return IsCheckAll("article_subject","不能為空",0)   ----
	//
	function IsCheckAll(obj ,Msg , Tyep)           //test  OK
	{
		if(Tyep == "0")
		{
			return ObjValueIsEmpty(obj ,Msg);
		}
		if(Tyep == "1")
		{
			return ObjValueIsABC(obj ,Msg);
		}	
		if(Tyep == "2")
		{
			return ObjValueIsChina(obj ,Msg);
		} 
		if(Tyep == "3")
		{
			return ObjValueisInt(obj ,Msg);
		}
		if(Tyep == "4")
		{
			return ObjValueIsDecimal(obj ,Msg);
		}
		if(Tyep == "5")
		{
			return ObjValueIsEMail(obj ,Msg);
		}
		if(Tyep == "6")
		{
			return ObjValueIsDateChina(obj ,Msg);
		}	
		if(Tyep == "7")
		{
			return ObjValueIsDateTw(obj ,Msg);
		}						
		if(Tyep == "8")
		{
			return ObjValueCheckImage(obj ,Msg);
		}	
		if(Tyep== "9")
		{
		   return ObjPassword(obj ,Msg);
		}
	}
	
	//----------------------------------------///////
	//字符串實際長度，數字[0-9],字母[a-z]每個算一個長度，一個漢字算二個
	//----------------------------------------///////
	function StringLen(str)                //test OK
	{	
		var Rc = 0 
		if(str == "")
		{
			return 0 ;
		}
		var reg = /^[\u4E00-\u9FA5]*$/;
		var i = 0 ;
		; 
		for(i = 0 ; i < str.length ; i++)
		{
			if(reg.test(str.substring(i,i+1)))
			{
				Rc += 1 ;
			}
			Rc += 1 ;
		}
		return 	Rc	
	}	

		
	//--------------------------------------///////
	//功能說明：消除字串前後的空格
	//參數說明：字符串
	//返 回 值：無返回值
	//--------------------------------------///////
	function Trim(str)		//-------------OK
	{
		var str0 = "" ;
		str0 = String(str);
		var reg=/^\s*/;		//消除前面的空格
		var str1 = "" ;
		str1 = str0.replace(reg,"");
		reg=/\s*$/;			//消除後面的空格
		var str2 = ""
		str2 = str1.replace(reg,"");
		return str2;
	}
	
    //-------------------------------------///////
	//參數說明:obj=驗證對象的ID，Msg＝提示信息，reg=正則表達式
	//功能說明:檢證函數,判斷對象的值是否符合正則表達式reg，若符合返回true，否則返回false
	//------------------------------------///////
	function IsCheck(obj,Msg,reg)         //test  OK
	{
		var str = document.getElementById(obj).value ;
		str = Trim(str);
		//alert(reg.test(str));
		if(!reg.test(str))
		{
			alert(Msg);
			return false ;
		}
		else
		{
			return true ;
		}	
	}
	
	//-----------------------------------///////
	//參數說明：str判斷的字符串，reg符合的正則表達式
	//功能說明：參數str是否符合正則表達式reg，若符合返回true，否則返回false
	//----------------------------------///////
	function IsCheckString(str,Msg,reg)      //test  OK
	{
		str = Trim(str);
		if(!reg.test(str))
		{
			alert(Msg);
			return false ;
		}	
		else
		{
			return true ;
		}					
	}

    //-----------------------------------///////		
	//修改人：andy_zhang
	//說  明：判斷多個字符串
	//功能說明:判斷參數str是否是符合日期(西元日期)格式，若是則返回true,否則返回false		
	//參數說明:str=判斷的字符串		
	//----------------------------------///////		
	function IsDateChinaMore(str)         //test  OK
	{
		var reg = /^(19|20)\d\d\/([1-9]|0[1-9]|1[012])\/([1-9]|0[1-9]|[12][0-9]|3[01])$/;
		str = Trim(str);
		if(!reg.test(str))
		{
			return false ;
		}	
		else
		{
			return true ;
		}	
	}
		

	//-----------------------------------///////		
	//修改人：andy_zhang
	//說  明：判斷多個字符串
	//功能說明:判斷參數str是否是符合日期(西元日期)格式且是否大於等於今天日期，若是則返回true,否則返回false		
	//參數說明:str=判斷的字符串		
	//----------------------------------///////		
	function IsDateChinaMoreB(str)
	{
		var reg = /^(19|20)\d\d\/([1-9]|0[1-9]|1[012])\/([1-9]|0[1-9]|[12][0-9]|3[01])$/;
		str = Trim(str);
		
		
		if(!reg.test(str)&&str)
		{
			return false ;
		}	
		var today=new Date();
		var now_Year = today.getFullYear();
		var now_Month = today.getMonth()+1;
		var now_Date = today.getDate();
		var intNowYYMMDD = now_Year+"/"+now_Month+"/"+now_Date ;
		var TodayDate=new Date(intNowYYMMDD)
		var TheDate=new Date(str);
		
		if(TheDate<TodayDate)
		{
		   
		   return false;
		}
		else
		{
			return true ;
		}	
	}


	//-----------------------------------////////			
	//功能說明：判斷對象obj的值是否是由字母組成，若是則返回true,否則返回false
	//參數說明：obj=驗證對象的ID，Msg＝提示信息
	//-----------------------------------////////
	function ObjValueIsABC(obj,Msg)    //test  OK
	{
		var reg = /^[a-zA-Z]+$/;
		return IsCheck(obj,Msg,reg)
	}
						
	//----------------------------------////////	
	//功能說明:判斷參數str是否是由字母組成，若是則返回true,否則返回false		
	//參數說明:str=判斷的字符串
	function IsABC(str,Msg)            //test   OK
	{
		var reg = /^[a-zA-Z]+$/;
		return IsCheckString(str,Msg,reg)
	}	
	//---------------------------------////////
	
	//---------------------------------////////
	//功能說明:判斷參數str是否是由大寫字母組成，若是則返回true,否則返回false		
	//參數說明:str=判斷的字符串
	function IsABC_Upper(str,Msg)    //test   OK
	{
		var reg = /^[A-Z]+$/;
		return IsCheckString(str,Msg,reg)
	}		
	//--------------------------------////////
	
	//-------------------------------////////
	//功能說明:判斷參數str是否是由小寫字母組成，若是則返回true,否則返回false		
	//參數說明:str=判斷的字符串
	//-------------------------------////////
	function IsABC_Lower(str,Msg)     //test   OK
	{
		var reg = /^[a-z]+$/;
		return IsCheckString(str,Msg,reg)
	}
	
	
	//------------------------------////////							
	//功能說明：判斷對象obj的值是否是由漢字組成，若是則返回true,否則返回false
	//參數說明：obj=驗證對象的ID，Msg＝提示信息
	//------------------------------////////
	function ObjValueIsChina(obj,Msg)                  //test OK
	{
		var reg = /^[\u4E00-\u9FA5]*$/;
		return IsCheck(obj,Msg,reg)
	}
	
	//------------------------------////////
	//功能說明:判斷參數str是否是由漢字組成，若是則返回true,否則返回false		
	//參數說明:str=判斷的字符串	
	//------------------------------////////	
	function IsChina(str,Msg)                         //test OK
	{
		var reg = /^[\u4E00-\u9FA5]*$/;
		return IsCheckString(str,Msg,reg)
	}		
	
	//-----------------------------////////
	//功能說明：判斷對象obj的值是否是由數字(0,1,2,3,4,5,6,7,8,9)組成，若是則返回true,否則返回false
	//參數說明：obj=驗證對象的ID，Msg＝提示信息
	//-----------------------------////////
	function ObjValueisInt(obj,Msg)         //test OK
	{
		var reg = /^\d+$/;
		return IsCheck(obj,Msg,reg)
	} 	
	
	//----------------------------////////
	//功能說明:判斷參數str是否是由數字(0,1,2,3,4,5,6,7,8,9)組成，若是則返回true,否則返回false		
	//參數說明:str=判斷的字符串	
	//----------------------------////////
	function isInt(str,Msg)                //test OK
	{
		var reg = /^\d+$/;
		return IsCheckString(str,Msg,reg)
	}  		
	
	//---------------------------////////
	//功能說明：判斷對象obj的值是否是由數值(float類型的變量)組成，若是則返回true,否則返回false
	//參數說明：obj=驗證對象的ID，Msg＝提示信息
	//---------------------------///////
	function ObjValueIsDecimal(obj,Msg)                 //test    OK
	{
		var reg = /^((\d+(\.\d*)?)|((\d*\.)?\d+))$/ ;
		return IsCheck(obj,Msg,reg)		
		
	}
	
	//---------------------------////////
	//功能說明:判斷參數str是否是由數值(float類型的變量)組成，若是則返回true,否則返回false		
	//參數說明:str=判斷的字符串
	//---------------------------////////		
	function IsDecimal(str,Msg)             //test   OK
	{
		var reg = /^((\d+(\.\d*)?)|((\d*\.)?\d+))$/ ;
		return IsCheckString(str,Msg,reg)
		
	}		
	
	//--------------------------////////
	//功能說明：判斷對象obj的值是否是符合EMail格式，若是則返回true,否則返回false
	//參數說明：obj=驗證對象的ID，Msg＝提示信息
	//-------------------------////////
	function ObjValueIsEMail(obj,Msg)            //test   OK
	{
		var reg = /^([a-zA-Z0-9_.-])+@(([a-zA-Z0-9-])+.)+([a-zA-Z0-9]{2,4})+$/;
		return IsCheck(obj,Msg,reg)	
	}
	
	//---------------------------////////
	//功能說明:判斷參數str是否是符合EMail格式，若是則返回true,否則返回false		
	//參數說明:str=判斷的字符串	
	//--------------------------////////
	function IsEMail(str,Msg)                   //test   OK
	{
		var reg = /^([a-zA-Z0-9_.-])+@(([a-zA-Z0-9-])+.)+([a-zA-Z0-9]{2,4})+$/;
		return IsCheckString(str,Msg,reg)
	}		
	
	//----------------------------////////		
	//功能說明：判斷對象obj的值是否是符合日期(西元日期)格式，若是則返回true,否則返回false
	//參數說明：obj=驗證對象的ID，Msg＝提示信息
	//----------------------------////////
	function ObjValueIsDateChina(obj,Msg)             //test   OK
	{
		var reg = /^(19|20)\d\d\/([1-9]|0[1-9]|1[012])\/([1-9]|0[1-9]|[12][0-9]|3[01])$/;
		return IsCheck(obj,Msg,reg)	
	}
	
	//----------------------------////////
	//功能說明:判斷參數str是否是符合日期(西元日期)格式，若是則返回true,否則返回false		
	//參數說明:str=判斷的字符串	
	//---------------------------////////			
	function IsDateChina(str,Msg)                       //test   OK
	{
		var reg = /^(19|20)\d\d\/([1-9]|0[1-9]|1[012])\/([1-9]|0[1-9]|[12][0-9]|3[01])$/;
		return IsCheckString(str,Msg,reg)
	}	
	
	//----------------------------////////	
	//功能說明：判斷對象obj的值是否是符合民國日期格式，若是則返回true,否則返回false
	//參數說明：obj=驗證對象的ID，Msg＝提示信息
	//----------------------------///////
	function ObjValueIsDateTw(obj,Msg)            //test  OK
	{
		var reg = /^(\d\d\d)\/([1-9]|0[1-9]|1[012])\/([1-9]|0[1-9]|[12][0-9]|3[01])$/;
		return IsCheck(obj,Msg,reg)	
	}
	
	//----------------------------////////
	//功能說明:判斷參數str是否是符合民國日期格式，若是則返回true,否則返回false		
	//參數說明:str=判斷的字符串	
	//---------------------------////////
	function IsDateTw(str,Msg)                    //test   OK
	{
		var reg = /^(\d\d\d)\/([1-9]|0[1-9]|1[012])\/([1-9]|0[1-9]|[12][0-9]|3[01])$/;
		return IsCheckString(str,Msg,reg)
	}	
	
	//----------------------------////////		
	//功能說明：判斷對象obj的值是否是.jpg、.GIF’、.JPEG、.PNG對尾，若是則返回true,否則返回false
	//參數說明：obj=驗證對象的ID，Msg＝提示信息
	//----------------------------////////
	function ObjValueCheckImage(obj,Msg)              //test OK
	{
		var str = document.getElementById(obj).value ;
		if(!CheckImage(str))
		{
			alert(Msg);
			return false ;
		}
		else
		{
			return true ;
		}				
	}
	
	//------------------------------////////
	//功能說明：判斷對象obj的值是否是由數字、字符和“_”組成，若是則返回true,否則返回false
	//參數說明：obj=驗證對象的ID，Msg＝提示信息
	//-----------------------------////////
	function ObjPassword(obj,Msg)               //test OK
	{
	  // var reg=/^([0-9]*)\.?[0-9]*$/;
	   var reg = /^([a-zA-Z0-9]*)\_?[a-zA-Z0-9]*$/;
	   return IsCheck(obj,Msg,reg)
	}		
	
	//-------------------------------////////
	//功能說明:判斷參數str是否是.jpg、.GIF’、.bmp對尾，若是則返回true,否則返回false		
	//參數說明:str=判斷的字符串		
	//-------------------------------////////	
	function CheckImage(str)                      //test OK
	{
		var Length = str.length;
		var Temp = str.lastIndexOf(".");
		if(Temp == -1)
		{
			return false;
		}		
		var TempFile = str.substring(Temp+1,Length);
		if(TempFile!="gif" && TempFile!="jpg"&& TempFile!="GIF" && TempFile!="JPG" && TempFile!="bmp" && TempFile!="BMP")
		{
			return false ;
		}
		else
		{
			return true ;
		}	
	}
	
	//-------------------------------////////
	//功能說明:判斷參數str是否是.jpg、.GIF’、.bmp、.swf、.png對尾，若是則返回true,否則返回false		
	//參數說明:str=判斷的字符串	
	//-------------------------------////////		
	function CheckImage1(str)                 //test OK
	{
		var Length = str.length;
		var Temp = str.lastIndexOf(".");
		if(Temp == -1)
		{
			return false;
		}		
		var TempFile = str.substring(Temp+1,Length);
		if(TempFile!="gif" && TempFile!="jpg"&& TempFile!="GIF" && TempFile!="JPG" && TempFile!="bmp" && TempFile!="BMP" && TempFile!="swf" && TempFile!="SWF" && TempFile!="PNG" && TempFile!="png")
		{
			return false ;
		}
		else
		{
			return true ;
		}	
	}

	//-------------------------------////////
	//功能說明:判斷參數str是否是.jpg、.GIF’、.png對尾，若是則返回true,否則返回false		
	//參數說明:str=判斷的字符串		
	//-------------------------------////////	
	function CheckImage2(str)
	{
		var Length = str.length;
		var Temp = str.lastIndexOf(".");
		if(Temp == -1)
		{
			return false;
		}		
		var TempFile = str.substring(Temp+1,Length);
		if(TempFile!="gif" && TempFile!="jpg"&& TempFile!="GIF" && TempFile!="JPG" && TempFile!="png" && TempFile!="PNG")
		{
			return false ;
		}
		else
		{
			return true ;
		}	
	}
	
	//-------------------------------////////
	//功能說明:判斷參數str是否是.swf對尾，若是則返回true,否則返回false		
	//參數說明:str=判斷的字符串		
	//-------------------------------////////	
	function CheckImage3(str)
	{
		var Length = str.length;
		var Temp = str.lastIndexOf(".");
		if(Temp == -1)
		{
			return false;
		}		
		var TempFile = str.substring(Temp+1,Length);
		if(TempFile!="swf" && TempFile!="SWF")
		{
			return false ;
		}
		else
		{
			return true ;
		}	
	}
	
	//-------------------------------////////
	//檢測是否為值空 
	//適用於:textBox,DropDownList ,ListBox
	//-------------------------------//////// 
	function ObjValueIsEmpty(obj,Msg)           //test OK
	{
		var str = document.getElementById(obj).value ;
		str = Trim(str);
		if(str == "")
		{
			alert(Msg);
			return false ;
		}
		else
		{
			return true ;
		}
	}

    //-------------------------------////////
    //檢測是否為值空 
	//適用於:textBox,DropDownList ,ListBox
    //------------------------------////////
	function IsEmpty(str,Msg)                    //test OK
	{
		str = Trim(str);
		if(str == "")
		{
			alert(Msg);
			return false ;
		}
		else
		{
			return true ;
		}				
	}	
	
	//--------------------------------////////
	//判斷RadioButtonList是否有勾選，若沒有勾選 顯示提示信息Msg
	//參數說明:obj= 對象的id ,Msg=提示信息,ItemCount = 項目數
	//--------------------------------////////
	function IsCheckRDOBL(obj,Msg,ItemCount)          //test OK
	{
		var blRC = false ;
		/*
		if(document.all(obj).length == null)
		{
			if(document.all(obj).checked == false)
			{
				alert(Msg);
				return false ;
			}
		}
		var ItemCount = document.all(obj).length  - 1 ;
		*/
		for (i = 0 ; i < ItemCount ;i++)
		{
			if(eval("document.getElementById('"+ obj + "_" + i + "')").checked == true)
			{
				blRC = true ;
				break ;
			}
			else
			{
				blRC = false ;
			}
		}
		if(blRC == false)
		{
			alert(Msg);
			return false ;
		}
		else
		{
			return true ;
		}				
	}
	
	//--------------------------------------/////////
	//判斷CheckBoxList是否有勾選，若沒有勾選 顯示提示信息Msg
	//參數說明:obj= 對象的id ,Msg=提示信息,ItemCount = 項目數
	//--------------------------------------/////////
	function IsCheckCKBL(obj,Msg,ItemCount)           //test OK
	{
		var blRC = false ;
		//var ItemCount = document.all(obj).rows.length ;
		for (i = 0 ; i < ItemCount ;i++)
		{
			if(eval("document.getElementById('"+ obj + "_" + i + "')").checked == true)
			{
				blRC = true ;
				break ;
			}
			else
			{
				blRC = false ;
			}
		}
		if(blRC == false)
		{
			alert(Msg);
			return false ;
		}
		else
		{
			return true ;
		}				
	}		
	
	//-------------------------------////////
	//格式化日期
	//-------------------------------////////
	function fnFormatDate(strDate)        //test OK
	{
		var date1 = new Date(strDate) ;
		return date1 ;
	}
	
	//-------------------------------////////
	//取得當前日期
	//-------------------------------////////
	function fnDTNow()                //test OK
	{
		var date2 = new Date() ;
		return date2.getDate() ;
	}
	
	//---------------------------------------/////////
	//str=日期(西元日期格式：XXXX/XX/XX,民國日期格式：XXX年XX月XX日)
	//type=比較類型(1是比較西元日期，2＝比較民國日期)
	//功能：判斷參數str值是否小於系統日期，若小於返回true,否則返回false;
	//---------------------------------------////////
	function fnsmallTodayDate1(str,strtype)         //test OK
	{
		var today = new Date();
		var now_Year = today.getFullYear();
		var now_Month = today.getMonth()+1;
		var now_Date = today.getDate();
		var intNowYYMMDD = now_Year+"/"+now_Month+"/"+now_Date ;
		var DTNowdate = new Date(intNowYYMMDD);
		return fnsmallTodayDate2(str,intNowYYMMDD,strtype)
	}
	
	//---------------------------------------/////////
	//str=日期(西元日期格式：XXXX/XX/XX,民國日期格式：XXX年XX月XX日)
	//type=比較類型(1是比較西元日期，2＝比較民國日期)
	//功能：判斷參數str值是否小於系統日期，若小於返回true,否則返回false;
	//---------------------------------------////////
	function fnsmallTodayDateB(str,strtype)          //test OK
	{
		var today = new Date();
		var now_Year = today.getFullYear();
		var now_Month = today.getMonth()+1;
		var now_Date = today.getDate();
		var intNowYYMMDD = now_Year+"/"+now_Month+"/"+now_Date ;
		var DTNowdate = new Date(intNowYYMMDD);
		var str_Date;
		if(str!="")
		{
		var str1_YYMMDD = fnSubstring(str,strtype);
	    str_Date=new Date(str1_YYMMDD);
		}
		
		if(str_Date>=DTNowdate)
		return true;
		else
		return false;
	}
	
	//--------------------------------------////////
	//str1=開始日期(西元日期格式：XXXX/XX/XX,民國日期格式：XXX年XX月XX日)
	//str2=結束日期(西元日期格式：XXXX/XX/XX,民國日期格式：XXX年XX月XX日)
	//type=比較類型(1是比較西元日期，2＝比較民國日期)
	//功能:，若str1 < str2 返回true,否則返回false;
	//---------------------------------------////////
	function fnsmallTodayDate2(str1,str2,strtype)           //test OK
	{
		var RC = true ;
		var str1_Date ;
		var str2_Date ;
		if(str1 != "" && str2 != "" )
		{
			var str1_YYMMDD = fnSubstring(str1,strtype);
			
			str1_Date = new Date(str1_YYMMDD);
			var str2_YYMMDD = fnSubstring(str2,strtype)  
			str2_Date = new Date(str2_YYMMDD);
			
			if(str1_Date > str2_Date)
			{
				RC = false ; 
			}
		}
		return RC ;
	}
	
	//----------------------------------////////
	///把日期格式統一轉換成：XXXX/XX/XX
	//民國年日期格式轉換成 XXX年XX月XX日--->西元日期格式：XXXX/XX/XX
	//西元日期格式（XXXX/XX/XX，或XXXX年XX月XX日）--->西元日期格式：XXXX/XX/XX
	//參數：str=日期字符串
	//strtype=類型(1是比較西元日期，2＝比較民國日期)
	//------------------------------------////////
	function fnSubstring(str,strtype)       //test OK
	{
		if(str == "" )
		{
			return "" ;
		}
		
		str = str.replace("年", "/").replace("月", "/").replace("日", "") ;
		var RC = str ;
		var str = str.split('/') ;
		if(strtype == "2"&&parseInt(str[0])<2000)
		{
		    
			RC = parseInt(str[0]) + 1911 +"/"+ str[1] +"/"+ str[2];
		} 
		return  RC;
	}
	
	//-------------------------------////////
	///驗證台灣身分證函數            -----------------OK
	//-------------------------------////////
	function IsTWID(obj,Msg)
	{
		var str = document.getElementById(obj).value ;
		str = Trim(str);
		//str = str.toUpperCase();
		
		//為空返回
		if(str == "")
		{
			alert(Msg);
			return false ;	
		}
		//alert(str)
		//長度是否為10
		if (str.length != 10)
		{
			alert(Msg);
			return false ;	
		}
		
		//第一位是否為字母
		var part1 = str.substring(0,1);
		
		if(!IsABC_Upper(part1,Msg))
		{
			//alert(Msg);
			return false ;	
		}
		
		//第二位是否為1或2
		var pos2 = str.charAt(1);
		if( pos2 !="1" &&  pos2 !="2") 
		{
			alert(Msg);
			return false ;	
		}
		//後8位是否是數字
		var pos3 = str.substring(2,10) ;
		if(!isInt(pos3,Msg))
		{ 
			//alert(Msg);
			return false ;	
		}
		
		//其他規則驗證
		var alph = new Array("A","B","C","D","E","F","G","H","J","K","L","M","N","P","Q","R","S","T","U","V","X","Y","W","Z","I","O");
		var num  = new Array("10","11","12","13","14","15","16","17","18","19","20","21","22","23","24","25","26","27","28","29","30","31","32","33","34","35");
		var n=0;
		var i;
		for(i=0;i<alph.length;i++)
		{
			if(str.charAt(0)==alph[i])
			n=i;
		}
		var tot1 = parseFloat(num[n].charAt(0)) + (parseFloat(num[n].charAt(1)) * 9);
		var tot2 = 0;
		   
		for(i=1;i<str.length-1;i++)
				tot2 = tot2 + parseFloat(str.charAt(i))*(9-i);
		var tot3 = parseFloat(str.charAt(9));
		var tot4 = tot1 + tot2 + tot3;
		if((tot4 % 10)!=0) 
		{
			alert(Msg);
			return false ;	
		}
		//alert(Msg)
		return true ;				
	}
		
	//---------------------------////////	
	///驗證是否是EMail格式
	//---------------------------////////
	function IsEMail(str)        //test OK
	{
	    
		var at="@"
		var dot="."
		var lat=str.indexOf(at)
		var lstr=str.length
		var ldot=str.indexOf(dot)
		if (str.indexOf(at)==-1)
		{
		   return false
		}

		if (str.indexOf(at)==-1 || str.indexOf(at)==0 || str.indexOf(at)==lstr)
		{
		   //alert("Invalid E-mail ID")
		   return false
		}

		if (str.indexOf(dot)==-1 || str.indexOf(dot)==0 || str.indexOf(dot)==lstr)
		{
		   // alert("Invalid E-mail ID")
		    return false
		}

		 if (str.indexOf(at,(lat+1))!=-1)
		 {
		   // alert("Invalid E-mail ID")
		    return false
		 }

		 if (str.substring(lat-1,lat)==dot || str.substring(lat+1,lat+2)==dot)
		 {
		   // alert("Invalid E-mail ID")
		    return false
		 }

		 if (str.indexOf(dot,(lat+2))==-1)
		 {
		    //alert("Invalid E-mail ID")
		    return false
		 }
		
		 if (str.indexOf(" ")!=-1)
		 {
		    //alert("Invalid E-mail ID")
		    return false
		 }
 		 return true					
	}		
	
	//-------------------------------////////	
	//驗証浮點型
	//參數﹕v﹕要驗証的數值﹐n﹕最多允許的小數位數(0﹕不允許小數﹔1﹕允許1位小數﹔2﹕允許2位小數﹔3﹕允許3位小數﹔其它﹕不限制小數位數)
	//-------------------------------////////
	function CheckFloat(v, n)        //test OK
	{
		n = parseInt(n);
		v = Trim(v);
		var reg;
		switch(n)
		{
			case 0:
				reg = /^[0-9]{1,}$/g;				
				break;
			case 1:
				reg = /^[0-9]{1,}\.[0-9]{1,1}$|^[0-9]{1,}$/g;
				break;
			case 2:
				reg = /^[0-9]{1,}\.[0-9]{1,2}$|^[0-9]{1,}$/g;
				break;
			case 3:
				reg = /^[0-9]{1,}\.[0-9]{1,3}$|^[0-9]{1,}$/g;
				break;
			default :
				reg = /^[0-9]{1,}\.[0-9]{1,}$|^[0-9]{1,}$/g;
				break;
		}
		//alert(v);
		//alert(v.match(reg));
		if(v.match(reg)==null)
			return false;
		else
			return true;			
	}
	
		
	//---------------------------------------////////	
	//驗証浮點型
	//參數﹕v﹕要驗証的數值﹐
	//		n﹕最多允許的小數位數(0﹕不允許小數﹔1﹕允許1位小數﹔2﹕允許2位小數﹔3﹕允許3位小數﹔其它﹕不限制小數位數)
	//		maxV﹕允許的最大值﹐ 如果為﹕'' 空值﹐則表示不限制
	//		minV﹕允許的最小值﹐ 如果為﹕'' 空值﹐則表示不限制
	//--------------------------------------////////
	function CheckFloat2(v, n, minV, maxV)          //test OK
	{
		if(CheckFloat(v, n)==false)
			return false;
		var pad = "000000000000000";
		//v = pad + Trim(v);
		//v = v.substring(v.length-15, v.length);
		v = parseFloat(new Number(v));
		//alert(v);
		if(Trim(minV)!='')
		{
			//minV = pad + minV;
			//minV = minV.substring(minV.length-15, minV.length);	
			//alert(minV);	
			minV = parseFloat(new Number(minV));
			if(v<minV)
				return false;
		}
		if(Trim(maxV)!='')
		{
			//maxV = pad + maxV;
			//maxV = maxV.substring(maxV.length-15, maxV.length);
			//alert(maxV);	
			minV = parseFloat(new Number(maxV));	
			if(v>maxV)
				return false;
		}
		return true;			
	}

    //------------------------------////////
	///向服務器發送XML文檔
	//------------------------------////////
	function SendHttp(Str,URL)      //test OK
	{
		var Http=null;
		if(window.ActiveXObject)
		{ 
		  Http= new ActiveXObject("Microsoft.XMLHTTP")
		}
		else if(window.XMLHttpRequest)
		{
		  Http= new XMLHttpRequest()
//		  if (Http.overrideMimeType) 
//              Http.overrideMimeType('text/xml'); 
		}
		
		Http.open("post",URL,true)
		//Http.setrequestheader("content-length",Str.length);
		Http.setRequestHeader("Content-Type","application/x-www-form-urlencoded");

		Http.send(Str)
		
		
		
		if (Http.readyState == 4) 
		{// 收到完整的服务器响应

          if (Http.status == 200) 
          {//HTTP服务器响应的值OK


		       return Http.responseText;
		  }
		 
		}
	}

    //--------------------------------////////
	///<summary>
	///獲取URL中指定參數的值
	///作者：micro_hu
	///<param value="url">URL地址</param>
	///<param value="paramName">參數名稱</param>
	///</summary>
	//--------------------------------////////
	function GetUrlParam(url,paramName)      //test OK
	{
		var urlParams = url.substring(url.indexOf("?")+1).split("&");
		for(var i=0;i<urlParams.length;i++)
		{
			var NameValueCollection = urlParams[i].split("=");
			if(NameValueCollection[0] == paramName)
			{
				return NameValueCollection[1];
				break;
			}
		}
		return null;
	} 

    //---------------------------------////////
	///將台灣日期變西元日期
	//---------------------------------////////
	function FromTWDate(twDate)  //test OK
	{
		if(twDate.substring(0,1)=="0")
			twDate = twDate.substring(1);
		var sps = twDate.split("/");
		var year = parseInt(sps[0])+1911;
		var nDate = new Date(year + "/" + sps[1] + "/" + sps[2]);
		return nDate;
	}   

    //---------------------------------////////
	///給相應的日期添加[年，季，月，天，時，分，秒]
	//---------------------------------////////
    function addDate(type,NumDay,dtDate)         //test OK
    {
       var date = new Date(dtDate)
	    type = parseInt(type) 
	    lIntval = parseInt(NumDay)
	    switch(type)
	    {
		    case 6 ://年
			    date.setYear(date.getYear() + lIntval)
			    break;
		    case 7 : //季
			    date.setMonth(date.getMonth() + (lIntval * 3) )
			    break;
		    case 5 ://月
			    date.setMonth(date.getMonth() + lIntval)
			    break;
		    case 4 ://天
			    date.setDate(date.getDate() + lIntval)
			    break
		    case 3 ://時
			    date.setHours(date.getHours() + lIntval)
			    break
		    case 2 ://分
			    date.setMinutes(date.getMinutes() + lIntval)
			    break
		    case 1 ://秒
			    date.setSeconds(date.getSeconds() + lIntval)
			    break;
		    default:
	     } 
	    return date.getYear() +'/' +  (date.getMonth()+1) + '/' +date.getDate()+ ' '+ date.getHours()+':'+date.getMinutes()+':'+date.getSeconds();
     }
 
    //-------------------------------////////
    //獲得radio被選中的值
    //-------------------------------////////
    function RadValueSelected(radCtrl)   //test OK
    {
      var RC = "";
      for(var i=0; i<radCtrl.length; i++)
      {
	    if(radCtrl[i].checked)
	    {
		    RC = radCtrl[i].value;
		    break;
	    }
      }
      return RC;
    }


	//-----------------------------------////////
	//格式化日期(去掉時間，在月日前加0，格式化後格式?:2003-01-01)
	//----------------------------------////////
	function FormatDate(strDate)           //test OK
	{
		if(strDate.length==0) return strDate;
		var iLen=strDate.indexOf(" ");
		if(iLen>0)
			strDate=strDate.substr(0,iLen);
		strDate=strDate.replace("-","/")
		
		var dtDate=new Date(strDate);
		var iTemp=dtDate.getFullYear();
		alert(iTemp)
		if(iTemp<100)
			strDate="19"+iTemp;
		else
			strDate=iTemp;
		var iTemp=dtDate.getMonth()+1;	
		if(iTemp<10)
			strDate+="-0"+iTemp.toString();
		else
			strDate+="-"+iTemp.toString();
		
		var iTemp=dtDate.getDate();
		if(iTemp<10)
			strDate+="-0"+iTemp.toString();
		else
			strDate+="-"+iTemp.toString();
		return strDate;
		
	}
	
	//--------------------------------////////
	//檢查radio是否有選擇
	//--------------------------------////////
	function chkRadio(thisObj,strText,defIndex)    
	{
		if(thisObj!=null && thisObj!=undefined) 
		{
			if(thisObj.length>0)
			{
				for(myChkIndex1=0;myChkIndex1<thisObj.length;myChkIndex1++)
				{
					if(thisObj[myChkIndex1].checked) 
					{
						if(defIndex==null || defIndex==undefined) return true;
						if(myChkIndex1!=defIndex) return true;
					}
				}
			}
			else
			{
				if(thisObj.checked) 
					return true;
			}
		}
		alert(strText);
		if(thisObj.length>0) thisObj[0].focus();
		else thisObj.focus();
		return false;
	}
		
	//--------------------------------////////	
	//檢查check是否有選擇
	//--------------------------------////////
	function chkSelect(thisObj,strText,defIndex)
	{
		if(thisObj!=null && thisObj!=undefined) 
		{
			for(myChkIndex2=0;myChkIndex2<thisObj.options.length;myChkIndex2++)
			{
				if(thisObj.options[myChkIndex2].selected)
				{
					if(defIndex==null || defIndex==undefined) return true;
						if(myChkIndex2!=defIndex) return true;
				}
			}
		}
		alert(strText);
		thisObj.focus();
		return false;
	}
	
    //--------------------------------------/////////
    // onkeyup="rowsize(this,1);" 超過
    //rowsize(document.Form1.txtMembers);
    //-------------------------------------////////
    function rowsize(ta,flags)             //test IE   OK   firefox 不會自動加"\n"
    {
	    if(ta.value!=null)
	    {
		    var j=0,j1;
		    var x = ta.value.split('\n');
		    if(flags==1)
		    {
			    for (i=0; i < ta.value.length; i++) 
			    {
				     if (x[i].length >= ta.cols) j++;
			    }
			    ta.rows = x.length + j;
			    return;
		    }
		    for (i=0; i < x.length; i++) 
		    {
			    if(x[i].length>ta.cols)
			    {
				    j1=parseInt(x[i].length/ta.cols);
				    if (x[i].length % ta.cols>0) j1++;
				    j+=j1;
			    }
		    }
		    ta.rows = x.length + j;
		    //document.writeln(ta.rows);
	    }
    }


   //------------------------------------------////////
   /// 關于textarea控制字符數[中英文混雜]
   /// textarea中這樣調用即可[<textarea  name="text" rows="5" cols="50" maxlength="100" onpropertychange="checklen(this)"></textarea>]
   /// 其中[maxlength=100]這個就是你要控制的字符數，
   //-------------------------------------------////////
    function checklen(obj)                       //test IE   OK, firefox 不支持onpropertychange事件
	 {
	   
		var lenE = obj.value.length;
		var lenC = 0;
		var CJK = obj.value.match(/[\u4E00-\u9FA5\uF900-\uFA2D]/g);
		
		
		if (CJK != null) 
		{
			lenC += CJK.length;
		}
		   
		var intton = obj.maxlength - lenC - lenE ;
		//alert(intton)
		if (intton < 0)
		{
			var tmp = 0
			var cut = obj.value.substring(0, obj.maxlength);
			for (var i=0; i<cut.length; i++)
			{
				tmp += /[\u4E00-\u9FA5\uF900-\uFA2D]/.test(cut.charAt(i)) ? 2 : 1;
				if (tmp > obj.maxlength) break;
			}
			obj.value = cut.substring(0, tmp);
		}
	}
   
   //------------------------------------------////////
   /// 關于textarea控制字符數[中英文混雜]
   /// textarea中這樣調用即可[<textarea  name="text" rows="5" cols="50" maxlength="100" onpropertychange="checklen(this)"></textarea>]
   /// 其中[maxlength=100]這個就是你要控制的字符數，
   ///如果需要人性化顯示還有多少字符能用，我們可以用一下的事例
   //-------------------------------------------////////
    //   <script type="text/javascript" language="javascript">
    //     function checklen(obj)
    //	 {
    //		var lenE = obj.value.length;
    //		var lenC = 0;
    //		var CJK = obj.value.match(/[\u4E00-\u9FA5\uF900-\uFA2D]/g);
    //		if (CJK != null) 
    //		{
    //			lenC += CJK.length;
    //		}
    //		tno.innerText = obj.maxlength - lenC - lenE ;
    //		if (tno.innerText < 0)
    //		{
    //			var tmp = 0
    //			var cut = obj.value.substring(0, obj.maxlength);
    //			for (var i=0; i<cut.length; i++)
    //			{
    //				tmp += /[\u4E00-\u9FA5\uF900-\uFA2D]/.test(cut.charAt(i)) ? 2 : 1;
    //				if (tmp > obj.maxlength) break;
    //			}
    //			obj.value = cut.substring(0, i);
    //		}
    //	}
    // </script>
    //<body onload ="tno.innerText = 0">
    //    <form id="form1" runat="server">
    //         <textarea id="text" name="text" rows="5" cols="50" maxlength="100" onpropertychange="checklen(this)"></textarea>
    //             剩余<span id="tno"></span>个字符
    //    </form>
    //</body>
       
   
    //-----------------------------------------////////
    /// 判斷是否有單引號
    //-----------------------------------------////////
    function isNotYinhao(s)                     //test  OK
    {   
     var yin;
     var temp="'";
     for(yin=0; yin < s.length; yin++ ) 
     { 
      var ch = s.charAt(yin);
      if(temp.indexOf(ch)>=0)
      {
       return true;
      }
     }
     return false;
    }


    //-----------------------------------------////////
    /// 判斷網路上的URL是否存在，存在true，不存在false
    //-----------------------------------------////////
	function IsExistsURL(Url,UserName,Password )    //test IE   OK   
	{
		var xmlHttp=null;
		try
		{
		    if(window.ActiveXObject)
		       xmlHttp = new ActiveXObject('MSXML2.XMLHTTP');
		    else if(window.XMLHttpRequest) 
	           xmlHttp = new XMLHttpRequest(); 
	        else
	          throw 0;
	        
	    }
	    catch(e)
	    {
	        if(e==0)
	          alert('非流行的Browser')
	          
	          return false;
		       
		}
		
		xmlHttp.open('GET' ,Url , false,UserName,Password );                                           
		xmlHttp.Send();  
	
		if(xmlHttp.status=='200')     
		{   
			return true;
		}
		else
		{
			return false;
		}
	}
	//alert(IsExistsURL("http://www.google.com/intl/zh-TW_ALL/images/logo.gif"))

    //-----------------------------------------////////
    /// 返回字串長度，中文算2
    //-----------------------------------------////////
	function lengthB(str)                      //test  OK
	{
		var len=0;
		for(var i=0;i<str.length;i++)   
		{   
			if(str.charCodeAt(i)>255)   
				len+=2;   
			else
				len+=1;   
		}   
		return len;
	}
	//alert(lengthB("123中國人"))
	
	function $(objId)
	{
	  return document.getElementById(objId)
	}