//┌───────────────────────────────────┐
//│函式：核對字串是為空字串                                              │
//│輸入：字串 ()                                                         │
//│輸出：邏輯 (ture)                                                     │
//└───────────────────────────────────┘
function IsEmpty(str){
if (str.length==0)
   return true
return false
}

//┌───────────────────────────────────┐
//│函式：核對字串是否為數字                                              │
//│輸入：字串 (1234)                                                     │
//│輸出：邏輯 (ture)                                                     │
//└───────────────────────────────────┘
function IsNumber(str){
str=Trim(str)
var rg=eval("/^\\d{" + str.length + "}$/")
if (rg.test(str))
   return true
return false
}

//┌───────────────────────────────────┐
//│函式：檢核字串是否為數值                                              │
//│輸入：字串 (1234.12)                                                  │
//│輸出：邏輯 (ture)                                                     │
//└───────────────────────────────────┘
function IsNumeral(str){
str=Trim(str)
if (!isFinite(str))
   return false
return true
}

//┌───────────────────────────────────┐
//│函式：檢查字元是否重複                                                │
//│輸入：字串 (1234561)                                                  │
//│輸出：邏輯 (true)                                                     │
//└───────────────────────────────────┘
function IsRepeat(s){
for (var i=0; i<s.length-1; i++){
   for (var j=i+1; j<s.length; j++){
      if (s.substr(i,1)==s.substr(j,1))
         return true   
      }
   }
return false
}

//┌───────────────────────────────────┐
//│函式：檢查保單號碼是否合法                                            │
//│輸入：字串 (0123456789)                                               │
//│輸出：邏輯 (ture)                                                     │
//└───────────────────────────────────┘
//function IsId1(str){
//var rg=/^\d{10}$/
//if (rg.test(str))
//   return true
//return false
//}

function IsId1(str){
//var rg=/^[12][123456789AaBb]\d{8}$/
//if (!rg.test(str))
//   return false
//var sum=0

//for (var i=0;i<=8;i++){
//   n=parseInt(str.charAt(i))
//   if (!isNaN(n))
//      sum+=n*(9-i)
//   }

//sum+=parseInt(str.charAt(9))

//if (sum%10!=9)
//   return false
return true
}

//┌───────────────────────────────────┐
//│函式：核對身分證字號是否合法                                          │
//│輸入：字串 (A100000001)                                               │
//│輸出：邏輯 (ture)                                                     │
//└───────────────────────────────────┘
function IsId2(s){
s=Trim(s)
var rg=/^[A-Z][12]\d{8}$/
if (!rg.test(s))
   return false
var a="ABCDEFGHJKLMNPQRSTUVXYWZIO"
var n=a.indexOf(s.substring(0,1))
var sum=Math.floor(n/10)+(n%10*9)+1
for (var i=1; i<=8; i++)
   sum+=parseInt(s.charAt(i))*(9-i)
sum+=parseInt(s.charAt(9))
if (sum%10!=0)
   return false
return true
}

//┌───────────────────────────────────┐
//│函式：核對統一證號是否合法                                            │
//│輸入：統一證號 (FA12345689)                                           │
//│輸出：邏輯 (ture)                                                     │
//└───────────────────────────────────┘
function IsId3(s){
s=Trim(s)
var rg=/^[A-Z][A-D]\d{8}$/
if (!rg.test(s))
   return false
var a="ABCDEFGHJKLMNPQRSTUVXYWZIO"
var n=a.indexOf(s.substring(0,1))
var sum=Math.floor(n/10)+(n%10*9)%10+1
n=a.indexOf(s.substring(1,2))
sum+=(n%10*8)%10
for (var i=2; i<=8; i++)
   sum+=(parseFloat(s.charAt(i))*(9-i))%10
sum+=parseFloat(s.charAt(9))
if (sum%10!=0)
   return false
return true
}

//┌───────────────────────────────────┐
//│函式：核對營利事業統一編號是否合法                                    │
//│輸入：統一證號 (84443275)                                             │
//│輸出：邏輯 (ture)                                                     │
//└───────────────────────────────────┘
function IsCompanyNumber(s){
s=Trim(s)
var rg=/^\d{8}$/
if (!rg.test(s))
   return false
var sum=0
a=new Array(8)
a[0]=parseFloat(s.charAt(0))
a[2]=parseFloat(s.charAt(2))
a[4]=parseFloat(s.charAt(4))
a[7]=parseFloat(s.charAt(7))
a[1]=parseFloat(s.charAt(1))*2
a[1]=Math.floor(a[1]/10)+(a[1]%10)
a[3]=parseFloat(s.charAt(3))*2
a[3]=Math.floor(a[3]/10)+(a[3]%10);
a[5]=parseFloat(s.charAt(5))*2
a[5]=Math.floor(a[5]/10)+(a[5]%10)
a[6]=parseFloat(s.charAt(6))*4
a[6]=Math.floor(a[6]/10)+(a[6]%10)
for (var i=0; i<=7; i++)
   sum+=a[i]
if (sum%10==0)
   return true
if (s.charAt(6)!="7")
   return false
sum=0
a[6]=Math.floor(a[6]/10)
for (var i=0; i<=7; i++)
   sum+=a[i]
if (sum%10==0)
   return true
return false
}

//┌───────────────────────────────────┐
//│函式：檢查日期是否合法                                                │
//│輸入：字串 (2004-12-12)                                               │
//│輸出：邏輯 (ture)                                                     │
//└───────────────────────────────────┘
function IsDate(str){
str=Trim(str)
var rg=/^\d{4}[-]\d{1,2}[-]\d{1,2}$/
if (!rg.test(str))
   return false
var ad=str.split("-")
var yy=parseFloat(ad[0])
var mm=parseFloat(ad[1])
var dd=parseFloat(ad[2])
if (mm<1 || mm>12)
   return false
var bissextile=false
if (yy%4==0){
   if (yy%400==0 || yy%100!=0)
      bissextile=true
   }
var cd
switch (mm){
   case 2:
      if (bissextile)
         cd=29
      else
         cd=28
      break
   case 4:
      cd=30
      break
   case 6:
      cd=30
      break
   case 9:
      cd=30
      break
   case 11:
      cd=30
      break
   default:
      cd=31
   }
if (dd<1 || dd>cd)
   return false
return true
}

//┌───────────────────────────────────┐
//│函式：即時輸入文數字資料                                              │
//│輸入：無                                                              │
//│輸出：無                                                              │
//└───────────────────────────────────┘
function InChar(){
var pass=false
if (event.keyCode>=48 && event.keyCode<=57)
   pass=true
if (event.keyCode>=65 && event.keyCode<=90)
   pass=true
if (event.keyCode>=97 && event.keyCode<=122)
   pass=true
event.returnValue=pass
}

//┌───────────────────────────────────┐
//│函式：按下確認鍵移至下個物件                                          │
//│輸入：無                                                              │
//│輸出：無                                                              │
//│敘述：onKeyDown 事件                                                  │    
//└───────────────────────────────────┘
function InEnter(o){
if (event.keyCode==13)
   event.keyCode=9
}

//┌───────────────────────────────────┐
//│函式：除去字串左邊空白                                                │
//│輸入：字串 (   test)                                                  │
//│輸出：字串 (test)                                                     │
//└───────────────────────────────────┘
function Ltrim(str){
var i=false
while (!i){
   if (str.charAt(0)==' ')
      str=str.substring(1)
   else
      i=true
   }
return str
}

//┌───────────────────────────────────┐
//│函式：除去字串右邊空白                                                │
//│輸入：字串 (test   )                                                  │
//│輸出：字串 (test)                                                     │
//└───────────────────────────────────┘
function Rtrim(str){
var i=false
while (!i){
   if (str.charAt(str.length-1)==' ')
      str=str.substring(0,str.length-1)
   else
      i=true
   }
return str
}

//┌───────────────────────────────────┐
//│函式：除去字串空白                                                    │
//│輸入：字串 (   test   )                                               │
//│輸出：字串 (test)                                                     │
//└───────────────────────────────────┘
function Trim(str){
str=Ltrim(str)
str=Rtrim(str)
return str
}

//┌───────────────────────────────────┐
//│函式：從右取出數個字元                                                │
//│輸入：字串 (test) , 字數 (2)                                          │
//│輸出：字串 (st)                                                       │
//└───────────────────────────────────┘
function Right(s,n){
var i=s.length
if (n>i)
   return s.substr(0,i)
else
   return s.substr(i-n,n)
}

//┌───────────────────────────────────┐
//│函式：小數點位元數                                                    │
//│輸入：數值 (6.475)                                                    │
//│輸出：數值 (3)                                                        │
//└───────────────────────────────────┘
function DotBit(n){
var str=n.toString()
var num=str.indexOf(".")
if (num==-1)
   var val=0
else
   var val=str.substring(num+1).length  
return val
}

//┌───────────────────────────────────┐
//│函式：開啟視窗                                                        │
//│輸入：網址 (test.htm) , 名稱 (menu)                                   │
//│      視窗寬度 (200) , 視窗高度 (380) , 是否有捲軸 (true)             │
//│輸出：window 物件                                                     │
//└───────────────────────────────────┘
function OpenWindow1(url,name,width,height,scroll){
var str="left="+(screen.availWidth-width)/2
str+=",top="+(screen.availHeight-height)/2
str+=",width="+width
str+=",height="+height
if (scroll)
   str+=",scrollbars"
return window.open(url,name,str)
}

//┌───────────────────────────────────┐
//│函式：開啟全螢幕視窗                                                  │
//│輸入：網址 (test.htm) , 名稱 (menu)                                   │
//│輸出：window 物件                                                     │
//└───────────────────────────────────┘
function FullWindow(s1,s2){
var str='left=0,top=0,width='+screen.width-10+',height='+screen.height-30+',scrollbars,toolbar,menubar,location,resizable,status'
return window.open(s1,s2,str)
}

//┌───────────────────────────────────┐
//│函式：關閉本身視窗                                                    │
//│輸入：無                                                              │
//│輸出：無                                                              │
//└───────────────────────────────────┘
function CloseWindow(){
window.opener=top
self.close()
}

//┌───────────────────────────────────┐
//│函式：讀取選擇鈕值                                                    │
//│輸入：物件 (f1.test)                                                  │
//│輸出：字串 (是)                                                       │
//└───────────────────────────────────┘
function GetRadio(o){
for (var i=0; i<o.length; i++){
   if (o[i].checked)
      return o[i].value
   }
}

//┌───────────────────────────────────┐
//│函式：檢查核對方塊是否被選取                                          │
//│輸入：物件 (f1.test)                                                  │
//│輸出：邏輯 (ture)                                                     │
//└───────────────────────────────────┘
function IsCheck(o){
if (o.length){
   for (var i=0; i<o.length; i++){
      if (o[i].checked)
         return true
      }
   }
else {
   if (o.checked)
      return true
   }
return false
}

//┌───────────────────────────────────┐
//│函式：隱藏或顯示物件                                                  │
//│輸入：物件 (f1.test) , 狀態 (true | false)                            │
//│輸出：無                                                              │
//└───────────────────────────────────┘
function UseVisible(o,bo){
if (o.length){
   for (var i=0; i<o.length; i++){	
      if (bo)	
         o[i].disabled=false
      else 
         o[i].disabled=true
      }
   }
else {
   if (bo)	
      o.disabled=false
   else 
      o.disabled=true
   }
}

//┌───────────────────────────────────┐
//│函式：字串取代                                                        │
//│輸入：來源字串 (test) , 搜尋字串 (t) , 取代字串 (d)                   │
//│輸出：字串 (desd)                                                     │
//└───────────────────────────────────┘
function Replace(s1,s2,s3){
return s1.replace(new RegExp(s2,"gm"),s3)
}

//┌───────────────────────────────────┐
//│函式：字元排序                                                        │
//│輸入：字串 (125634) , 排序 (1:升冪,2:降冪)                            │
//│輸出：字串 (123456)                                                   │
//└───────────────────────────────────┘
function SortString(s,m){
var str=StringSeparate(s,",",1,false)
var arr=str.split(",")
arr.sort()
if (m==2)
   arr.reverse()
return Replace(arr.toString(),",","")
}

//┌───────────────────────────────────┐
//│函式：刪除重複字元                                                    │
//│輸入：字串 (12343456)                                                 │
//│輸出：字串 (123456)                                                   │
//└───────────────────────────────────┘
function ClearRepeat(s){
var bo,char,str
str=""
for (var i=s.length-1; i>=0; i--){
   bo=true
   char=s.substr(i,1)
   for (var j=i-1; j>=0; j--){
      if (char==s.substr(j,1)){
         bo=false
         break
         }
      }
   if (bo)
      str=char+str
   }
return str
}

//┌───────────────────────────────────┐
//│函式：數值字串是否按照順序                                            │
//│輸入：字串 (13)                                                       │
//│輸出：邏輯 (false)                                                    │
//└───────────────────────────────────┘
function IsSequence(s){
var str=SortString(s,1)
for (var i=0; i<str.length; i++){
   if (i!=parseInt(str.substr(i,1)-1))
      return false      
   }
return true   
}

//┌───────────────────────────────────┐
//│函式：固定字元數填入字串                                              │
//│輸入：來源字串 (12341234) , 目的字串 (,) , 字數 (4)                   │
//│      字元小(等)於字數是否填入 (true)                                 │
//│輸出：字串 (1111,1111,)                                               │
//└───────────────────────────────────┘
function StringSeparate(s1,s2,n,bo){
var str,sstr
str=""
sstr=s1
while (sstr.length>n){
   str=str+sstr.slice(0,n)+s2
   sstr=sstr.substring(n)
   }
if (bo)
   str=str+sstr+s2   
else
   str=str+sstr
return str
}

//┌───────────────────────────────────┐
//│函式：開啟視窗(Hinet建議書下載計數)                                   │
//│輸入：無                                                              │
//│輸出：無                                                              │
//└───────────────────────────────────┘
function HinetCounter(){
OpenWindow1("/reader/?MIval=HinetCounter","",1,1,false)
}

//┌───────────────────────────────────┐
//│函式：滑鼠變換影像　　　　　                                          │
//│輸入：物件 ()                      　　　                             │
//│輸出：邏輯 ()                                                         │
//└───────────────────────────────────┘
function MM_preloadImages() { //v3.0
  var d=document; if(d.images){ if(!d.MM_p) d.MM_p=new Array();
    var i,j=d.MM_p.length,a=MM_preloadImages.arguments; for(i=0; i<a.length; i++)
    if (a[i].indexOf("#")!=0){ d.MM_p[j]=new Image; d.MM_p[j++].src=a[i];}}
}

function MM_swapImgRestore() { //v3.0
  var i,x,a=document.MM_sr; for(i=0;a&&i<a.length&&(x=a[i])&&x.oSrc;i++) x.src=x.oSrc;
}

function MM_findObj(n, d) { //v4.01
  var p,i,x;  if(!d) d=document; if((p=n.indexOf("?"))>0&&parent.frames.length) {
    d=parent.frames[n.substring(p+1)].document; n=n.substring(0,p);}
  if(!(x=d[n])&&d.all) x=d.all[n]; for (i=0;!x&&i<d.forms.length;i++) x=d.forms[i][n];
  for(i=0;!x&&d.layers&&i<d.layers.length;i++) x=MM_findObj(n,d.layers[i].document);
  if(!x && d.getElementById) x=d.getElementById(n); return x;
}

function MM_swapImage() { //v3.0
  var i,j=0,x,a=MM_swapImage.arguments; document.MM_sr=new Array; for(i=0;i<(a.length-2);i+=3)
   if ((x=MM_findObj(a[i]))!=null){document.MM_sr[j++]=x; if(!x.oSrc) x.oSrc=x.src; x.src=a[i+2];}
}
