動網中用到的幾個Function和一個JS[base64encode,base64decode,md5,sendmail,js]

< %
dim  sBASE_64_CHARACTERS
dim  len1,k
dim  asc1,asContents1
dim  varchar,varasc,varHex,varlow,varhigh
sBASE_64_CHARACTERS 
=   " ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/ "   
sBASE_64_CHARACTERS 
=  strUnicode2Ansi(sBASE_64_CHARACTERS)

Function  strUnicodeLen(asContents)
  
' 計算unicode字符串的Ansi編碼的長度
  asContents1 = " a " & asContents
  len1
= len (asContents1)
  k
= 0
  
for  i = 1   to  len1
      asc1
= asc ( mid (asContents1,i, 1 ))
      
if  asc1 < 0   then  asc1 = 65536 + asc1
      
if  asc1 > 255   then
         k
= k + 2
      
else
         k
= k + 1
      
end   if
  
next
  strUnicodeLen
= k - 1
End Function

Function  strUnicode2Ansi(asContents)
  
' 將Unicode編碼的字符串,轉換成Ansi編碼的字符串
  strUnicode2Ansi = ""
  len1
= len (asContents)
  
for  i = 1   to  len1
      varchar
= mid (asContents,i, 1 )
      varasc
= asc (varchar)
      
if  varasc < 0   then  varasc = varasc + 65536
      
if  varasc > 255   then
         varHex
= Hex (varasc)
         varlow
= left (varHex, 2 )
         varhigh
= right (varHex, 2 )
         strUnicode2Ansi
= strUnicode2Ansi  &  chrb( " &H "   &  varlow )  &  chrb( " &H "   &  varhigh )
      
else
         strUnicode2Ansi
= strUnicode2Ansi  &  chrb(varasc)
      
end   if
   
next
End function

Function  strAnsi2Unicode(asContents)
  
' 將Ansi編碼的字符串,轉換成Unicode編碼的字符串
  strAnsi2Unicode  =   ""
  
if  isnull(asContents)  or  asContents = ""   then   exit function
  len1
= lenb(asContents)
  
if  len1 = 0   then   exit function
  
for  i = 1   to  len1
      varchar
= midb(asContents,i, 1 )
      varasc
= ascb(varchar)
      
if  varasc  >   127    then
         
if  midb(asContents,i + 1 , 1 ) <> ""   then
         strAnsi2Unicode 
=  strAnsi2Unicode  &   chr (ascw(midb(asContents,i + 1 , 1 &  varchar))
         
end   if
         i
= i + 1
      
else
         strAnsi2Unicode 
=  strAnsi2Unicode  &   chr (varasc)
      
end   if
  
next
End function

Function  Base64encode(asContents)  
' 將Ansi編碼的字符串進行Base64編碼
'
asContents應當是ANSI編碼的字符串(二進制的字符串也可以)
Dim  lnPosition  
Dim  lsResult  
Dim  Char1  
Dim  Char2  
Dim  Char3  
Dim  Char4  
Dim  Byte1  
Dim  Byte2  
Dim  Byte3  
Dim  SaveBits1  
Dim  SaveBits2  
Dim  lsGroupBinary  
Dim  lsGroup64  
Dim  m3,m4,len1,len2

len1
= Lenb(asContents)
if  len1 < 1   then  
   Base64encode
= ""
   
exit Function
end   if

m3
= Len1  Mod   3  
If  M3  >   0   Then  asContents  =  asContents  &   String ( 3 - M3, chrb( 0 ))  
' 補足位數是為了便於計算

IF  m3  >   0   THEN  
   len1
= len1 + ( 3 - m3)
   len2
= len1 - 3
else
   len2
= len1
end   if

lsResult 
=   ""   

For  lnPosition  =   1   To  len2  Step   3   
    lsGroup64 
=   ""   
    lsGroupBinary 
=  Midb(asContents, lnPosition,  3 )  

    Byte1 
=  Ascb(Midb(lsGroupBinary,  1 1 )): SaveBits1  =  Byte1  And   3   
    Byte2 
=  Ascb(Midb(lsGroupBinary,  2 1 )): SaveBits2  =  Byte2  And   15   
    Byte3 
=  Ascb(Midb(lsGroupBinary,  3 1 ))  

    Char1 
=  Midb(sBASE_64_CHARACTERS, ((Byte1  And   252 \   4 +   1 1 )  
    Char2 
=  Midb(sBASE_64_CHARACTERS, (((Byte2  And   240 \   16 Or  (SaveBits1  *   16 And   & HFF)  +   1 1 )  
    Char3 
=  Midb(sBASE_64_CHARACTERS, (((Byte3  And   192 \   64 Or  (SaveBits2  *   4 And   & HFF)  +   1 1 )  
    Char4 
=  Midb(sBASE_64_CHARACTERS, (Byte3  And   63 +   1 1 )  
    lsGroup64 
=  Char1  &  Char2  &  Char3  &  Char4  
    
    lsResult 
=  lsResult  &  lsGroup64  
Next   

' 處理最後剩餘的幾個字符
if  M3  >   0    then
    lsGroup64 
=   ""   
    lsGroupBinary 
=  Midb(asContents, len2 + 1 3 )  

    Byte1 
=  Ascb(Midb(lsGroupBinary,  1 1 )): SaveBits1  =  Byte1  And   3   
    Byte2 
=  Ascb(Midb(lsGroupBinary,  2 1 )): SaveBits2  =  Byte2  And   15   
    Byte3 
=  Ascb(Midb(lsGroupBinary,  3 1 ))  

    Char1 
=  Midb(sBASE_64_CHARACTERS, ((Byte1  And   252 \   4 +   1 1 )  
    Char2 
=  Midb(sBASE_64_CHARACTERS, (((Byte2  And   240 \   16 Or  (SaveBits1  *   16 And   & HFF)  +   1 1 )  
    Char3 
=  Midb(sBASE_64_CHARACTERS, (((Byte3  And   192 \   64 Or  (SaveBits2  *   4 And   & HFF)  +   1 1 )  

    
if  M3 = 1   then
       lsGroup64 
=  Char1  &  Char2  &  ChrB( 61 &  ChrB( 61 )    ' 用=號補足位數
     else
       lsGroup64 
=  Char1  &  Char2  &  Char3  &  ChrB( 61 )       ' 用=號補足位數
     end   if
    
    lsResult 
=  lsResult  &  lsGroup64  
end   if

Base64encode 
=  lsResult  

End Function   


Function  Base64decode(asContents)  
' 將Base64編碼字符串轉換成Ansi編碼的字符串
'
asContents應當也是ANSI編碼的字符串(二進制的字符串也可以)
Dim  lsResult  
Dim  lnPosition  
Dim  lsGroup64, lsGroupBinary  
Dim  Char1, Char2, Char3, Char4  
Dim  Byte1, Byte2, Byte3  
Dim  M4,len1,len2

len1
=  Lenb(asContents) 
M4 
=  len1  Mod   4

if  len1  <   1   or  M4  >   0   then
   
' 字符串長度應當是4的倍數
   Base64decode  =   ""   
   
exit Function   
end   if
       
' 判斷最後一位是不是 = 號
'
判斷倒數第二位是不是 = 號
'
這裡m4表示最後剩餘的需要單獨處理的字符個數
if  midb(asContents, len1,  1 =  chrb( 61 )    then    m4 = 3  
if  midb(asContents, len1 - 1 1 =  chrb( 61 then    m4 = 2

if  m4  =   0   then
   len2
= len1
else
   len2
= len1 - 4
end   if

For  lnPosition  =   1   To  Len2  Step   4   
    lsGroupBinary 
=   ""   
    lsGroup64 
=  Midb(asContents, lnPosition,  4 )  
    Char1 
=  InStrb(sBASE_64_CHARACTERS, Midb(lsGroup64,  1 1 ))  -   1   
    Char2 
=  InStrb(sBASE_64_CHARACTERS, Midb(lsGroup64,  2 1 ))  -   1   
    Char3 
=  InStrb(sBASE_64_CHARACTERS, Midb(lsGroup64,  3 1 ))  -   1   
    Char4 
=  InStrb(sBASE_64_CHARACTERS, Midb(lsGroup64,  4 1 ))  -   1   
    Byte1 
=  Chrb(((Char2  And   48 \   16 Or  (Char1  *   4 And   & HFF)  
    Byte2 
=  lsGroupBinary  &  Chrb(((Char3  And   60 \   4 Or  (Char2  *   16 And   & HFF)  
    Byte3 
=  Chrb((((Char3  And   3 *   64 And   & HFF)  Or  (Char4  And   63 ))  
    lsGroupBinary 
=  Byte1  &  Byte2  &  Byte3  
    
    lsResult 
=  lsResult  &  lsGroupBinary  
Next  

' 處理最後剩餘的幾個字符
if  M4  >   0   then  
    lsGroupBinary 
=   ""   
    lsGroup64 
=  Midb(asContents, len2 + 1 , m4)  &  chrB( 65 )    ' chr(65)=A,轉換成值為0
     if  M4 = 2   then                                            ' 補足4位,是為了便於計算 
        lsGroup64  =  lsGroup64  &  chrB( 65 )                  
    
end   if
    Char1 
=  InStrb(sBASE_64_CHARACTERS, Midb(lsGroup64,  1 1 ))  -   1   
    Char2 
=  InStrb(sBASE_64_CHARACTERS, Midb(lsGroup64,  2 1 ))  -   1   
    Char3 
=  InStrb(sBASE_64_CHARACTERS, Midb(lsGroup64,  3 1 ))  -   1   
    Char4 
=  InStrb(sBASE_64_CHARACTERS, Midb(lsGroup64,  4 1 ))  -   1   
    Byte1 
=  Chrb(((Char2  And   48 \   16 Or  (Char1  *   4 And   & HFF)  
    Byte2 
=  lsGroupBinary  &  Chrb(((Char3  And   60 \   4 Or  (Char2  *   16 And   & HFF)  
    Byte3 
=  Chrb((((Char3  And   3 *   64 And   & HFF)  Or  (Char4  And   63 ))  
  
    
if  M4 = 2   then
       lsGroupBinary 
=  Byte1
    
elseif  M4 = 3   then
       lsGroupBinary 
=  Byte1  &  Byte2
    
end   if
    
    lsResult 
=  lsResult  &  lsGroupBinary  
end   if

Base64decode 
=  lsResult  

End Function   
%
>
< %
Private   Const  BITS_TO_A_BYTE  =   8
Private   Const  BYTES_TO_A_WORD  =   4
Private   Const  BITS_TO_A_WORD  =   32

Private  m_lOnBits( 30 )
Private  m_l2Power( 30 )
Dim  Md5OLD
Private   Function  LShift(lValue, iShiftBits)
    
If  iShiftBits  =   0   Then
        LShift 
=  lValue
        
Exit Function
    
ElseIf  iShiftBits  =   31   Then
        
If  lValue  And   1   Then
            LShift 
=   & H80000000
        
Else
            LShift 
=   0
        
End   If
        
Exit Function
    
ElseIf  iShiftBits  <   0   Or  iShiftBits  >   31   Then
        Err.Raise 
6
    
End   If

    
If  (lValue  And  m_l2Power( 31   -  iShiftBits))  Then
        LShift 
=  ((lValue  And  m_lOnBits( 31   -  (iShiftBits  +   1 )))  *  m_l2Power(iShiftBits))  Or   & H80000000
    
Else
        LShift 
=  ((lValue  And  m_lOnBits( 31   -  iShiftBits))  *  m_l2Power(iShiftBits))
    
End   If
End Function

Private   Function  str2bin(varstr) 
    
Dim  varasc
    
Dim  i
    
Dim  varchar
    
Dim  varlow
    
Dim  varhigh
    
    str2bin
= ""  
    
For  i = 1   To   Len (varstr) 
        varchar
= mid (varstr,i, 1
        varasc 
=   Asc (varchar) 
        
        
If  varasc < 0   Then  
        varasc 
=  varasc  +   65535  
        
End   If  
        
        
If  varasc > 255   Then  
        varlow 
=   Left ( Hex ( Asc (varchar)), 2
        varhigh 
=   right ( Hex ( Asc (varchar)), 2
        str2bin 
=  str2bin  &  chrB( " &H "   &  varlow)  &  chrB( " &H "   &  varhigh) 
        
Else  
        str2bin 
=  str2bin  &  chrB(AscB(varchar)) 
        
End   If  
    
Next  
End Function  

Private   Function  RShift(lValue, iShiftBits)
    
If  iShiftBits  =   0   Then
        RShift 
=  lValue
        
Exit Function
    
ElseIf  iShiftBits  =   31   Then
        
If  lValue  And   & H80000000  Then
            RShift 
=   1
        
Else
            RShift 
=   0
        
End   If
        
Exit Function
    
ElseIf  iShiftBits  <   0   Or  iShiftBits  >   31   Then
        Err.Raise 
6
    
End   If

    RShift 
=  (lValue  And   & H7FFFFFFE)  \  m_l2Power(iShiftBits)

    
If  (lValue  And   & H80000000)  Then
        RShift 
=  (RShift  Or  ( & H40000000  \  m_l2Power(iShiftBits  -   1 )))
    
End   If
End Function

Private   Function  RotateLeft(lValue, iShiftBits)
    RotateLeft 
=  LShift(lValue, iShiftBits)  Or  RShift(lValue, ( 32   -  iShiftBits))
End Function

Private   Function  AddUnsigned(lX, lY)
    
Dim  lX4
    
Dim  lY4
    
Dim  lX8
    
Dim  lY8
    
Dim  lResult

    lX8 
=  lX  And   & H80000000
    lY8 
=  lY  And   & H80000000
    lX4 
=  lX  And   & H40000000
    lY4 
=  lY  And   & H40000000
    
    lResult 
=  (lX  And   & H3FFFFFFF)  +  (lY  And   & H3FFFFFFF)

    
If  lX4  And  lY4  Then
        lResult 
=  lResult  Xor   & H80000000  Xor  lX8  Xor  lY8
    
ElseIf  lX4  Or  lY4  Then
        
If  lResult  And   & H40000000  Then
            lResult 
=  lResult  Xor   & HC0000000  Xor  lX8  Xor  lY8
        
Else
            lResult 
=  lResult  Xor   & H40000000  Xor  lX8  Xor  lY8
        
End   If
    
Else
        lResult 
=  lResult  Xor  lX8  Xor  lY8
    
End   If

    AddUnsigned 
=  lResult
End Function

Private   Function  md5_F(x, y, z)
    md5_F 
=  (x  And  y)  Or  (( Not  x)  And  z)
End Function

Private   Function  md5_G(x, y, z)
    md5_G 
=  (x  And  z)  Or  (y  And  ( Not  z))
End Function

Private   Function  md5_H(x, y, z)
    md5_H 
=  (x  Xor  y  Xor  z)
End Function

Private   Function  md5_I(x, y, z)
    md5_I 
=  (y  Xor  (x  Or  ( Not  z)))
End Function

Private   Sub  md5_FF(a, b, c, d, x, s, ac)
    a 
=  AddUnsigned(a, AddUnsigned(AddUnsigned(md5_F(b, c, d), x), ac))
    a 
=  RotateLeft(a, s)
    a 
=  AddUnsigned(a, b)
End Sub

Private   Sub  md5_GG(a, b, c, d, x, s, ac)
    a 
=  AddUnsigned(a, AddUnsigned(AddUnsigned(md5_G(b, c, d), x), ac))
    a 
=  RotateLeft(a, s)
    a 
=  AddUnsigned(a, b)
End Sub

Private   Sub  md5_HH(a, b, c, d, x, s, ac)
    a 
=  AddUnsigned(a, AddUnsigned(AddUnsigned(md5_H(b, c, d), x), ac))
    a 
=  RotateLeft(a, s)
    a 
=  AddUnsigned(a, b)
End Sub

Private   Sub  md5_II(a, b, c, d, x, s, ac)
    a 
=  AddUnsigned(a, AddUnsigned(AddUnsigned(md5_I(b, c, d), x), ac))
    a 
=  RotateLeft(a, s)
    a 
=  AddUnsigned(a, b)
End Sub

Private   Function  ConvertToWordArray(sMessage)
    
Dim  lMessageLength
    
Dim  lNumberOfWords
    
Dim  lWordArray()
    
Dim  lBytePosition
    
Dim  lByteCount
    
Dim  lWordCount
    
Const  MODULUS_BITS  =   512
    
Const  CONGRUENT_BITS  =   448
    
If  Md5OLD  =   1   Then
        lMessageLength 
=   Len (sMessage)
    
Else
        lMessageLength 
=  LenB(sMessage)
    
End   If
    lNumberOfWords 
=  (((lMessageLength  +  ((MODULUS_BITS  -  CONGRUENT_BITS)  \  BITS_TO_A_BYTE))  \  (MODULUS_BITS  \  BITS_TO_A_BYTE))  +   1 *  (MODULUS_BITS  \  BITS_TO_A_WORD)
    
ReDim  lWordArray(lNumberOfWords  -   1 )
    
    lBytePosition 
=   0
    lByteCount 
=   0
    
Do   Until  lByteCount  >=  lMessageLength
        lWordCount 
=  lByteCount  \  BYTES_TO_A_WORD
        lBytePosition 
=  (lByteCount  Mod  BYTES_TO_A_WORD)  *  BITS_TO_A_BYTE
        
If  Md5OLD  =   1   Then
            lWordArray(lWordCount) 
=  lWordArray(lWordCount)  Or  LShift( Asc ( Mid (sMessage, lByteCount  +   1 1 )), lBytePosition)
        
Else
            lWordArray(lWordCount) 
=  lWordArray(lWordCount)  Or  LShift(AscB(MidB(sMessage, lByteCount  +   1 1 )), lBytePosition)
        
End   If
        lByteCount 
=  lByteCount  +   1
    
Loop
    lWordCount 
=  lByteCount  \  BYTES_TO_A_WORD
    lBytePosition 
=  (lByteCount  Mod  BYTES_TO_A_WORD)  *  BITS_TO_A_BYTE
    lWordArray(lWordCount) 
=  lWordArray(lWordCount)  Or  LShift( & H80, lBytePosition)
    lWordArray(lNumberOfWords 
-   2 =  LShift(lMessageLength,  3 )
    lWordArray(lNumberOfWords 
-   1 =  RShift(lMessageLength,  29 )
    ConvertToWordArray 
=  lWordArray
End Function

Private   Function  WordToHex(lValue)
    
Dim  lByte
    
Dim  lCount
    
For  lCount  =   0   To   3
        lByte 
=  RShift(lValue, lCount  *  BITS_TO_A_BYTE)  And  m_lOnBits(BITS_TO_A_BYTE  -   1 )
        WordToHex 
=  WordToHex  &   Right ( " 0 "   &   Hex (lByte),  2 )
    
Next
End Function

Public   Function  MD5(sMessage,stype)
    m_lOnBits(
0 =   CLng ( 1 )
    m_lOnBits(
1 =   CLng ( 3 )
    m_lOnBits(
2 =   CLng ( 7 )
    m_lOnBits(
3 =   CLng ( 15 )
    m_lOnBits(
4 =   CLng ( 31 )
    m_lOnBits(
5 =   CLng ( 63 )
    m_lOnBits(
6 =   CLng ( 127 )
    m_lOnBits(
7 =   CLng ( 255 )
    m_lOnBits(
8 =   CLng ( 511 )
    m_lOnBits(
9 =   CLng ( 1023 )
    m_lOnBits(
10 =   CLng ( 2047 )
    m_lOnBits(
11 =   CLng ( 4095 )
    m_lOnBits(
12 =   CLng ( 8191 )
    m_lOnBits(
13 =   CLng ( 16383 )
    m_lOnBits(
14 =   CLng ( 32767 )
    m_lOnBits(
15 =   CLng ( 65535 )
    m_lOnBits(
16 =   CLng ( 131071 )
    m_lOnBits(
17 =   CLng ( 262143 )
    m_lOnBits(
18 =   CLng ( 524287 )
    m_lOnBits(
19 =   CLng ( 1048575 )
    m_lOnBits(
20 =   CLng ( 2097151 )
    m_lOnBits(
21 =   CLng ( 4194303 )
    m_lOnBits(
22 =   CLng ( 8388607 )
    m_lOnBits(
23 =   CLng ( 16777215 )
    m_lOnBits(
24 =   CLng ( 33554431 )
    m_lOnBits(
25 =   CLng ( 67108863 )
    m_lOnBits(
26 =   CLng ( 134217727 )
    m_lOnBits(
27 =   CLng ( 268435455 )
    m_lOnBits(
28 =   CLng ( 536870911 )
    m_lOnBits(
29 =   CLng ( 1073741823 )
    m_lOnBits(
30 =   CLng ( 2147483647 )
    
    m_l2Power(
0 =   CLng ( 1 )
    m_l2Power(
1 =   CLng ( 2 )
    m_l2Power(
2 =   CLng ( 4 )
    m_l2Power(
3 =   CLng ( 8 )
    m_l2Power(
4 =   CLng ( 16 )
    m_l2Power(
5 =   CLng ( 32 )
    m_l2Power(
6 =   CLng ( 64 )
    m_l2Power(
7 =   CLng ( 128 )
    m_l2Power(
8 =   CLng ( 256 )
    m_l2Power(
9 =   CLng ( 512 )
    m_l2Power(
10 =   CLng ( 1024 )
    m_l2Power(
11 =   CLng ( 2048 )
    m_l2Power(
12 =   CLng ( 4096 )
    m_l2Power(
13 =   CLng ( 8192 )
    m_l2Power(
14 =   CLng ( 16384 )
    m_l2Power(
15 =   CLng ( 32768 )
    m_l2Power(
16 =   CLng ( 65536 )
    m_l2Power(
17 =   CLng ( 131072 )
    m_l2Power(
18 =   CLng ( 262144 )
    m_l2Power(
19 =   CLng ( 524288 )
    m_l2Power(
20 =   CLng ( 1048576 )
    m_l2Power(
21 =   CLng ( 2097152 )
    m_l2Power(
22 =   CLng ( 4194304 )
    m_l2Power(
23 =   CLng ( 8388608 )
    m_l2Power(
24 =   CLng ( 16777216 )
    m_l2Power(
25 =   CLng ( 33554432 )
    m_l2Power(
26 =   CLng ( 67108864 )
    m_l2Power(
27 =   CLng ( 134217728 )
    m_l2Power(
28 =   CLng ( 268435456 )
    m_l2Power(
29 =   CLng ( 536870912 )
    m_l2Power(
30 =   CLng ( 1073741824 )
    
    
    
Dim  x
    
Dim  k
    
Dim  AA
    
Dim  BB
    
Dim  CC
    
Dim  DD
    
Dim  a
    
Dim  b
    
Dim  c
    
Dim  d
    
    
Const  S11  =   7
    
Const  S12  =   12
    
Const  S13  =   17
    
Const  S14  =   22
    
Const  S21  =   5
    
Const  S22  =   9
    
Const  S23  =   14
    
Const  S24  =   20
    
Const  S31  =   4
    
Const  S32  =   11
    
Const  S33  =   16
    
Const  S34  =   23
    
Const  S41  =   6
    
Const  S42  =   10
    
Const  S43  =   15
    
Const  S44  =   21
    
If  Md5OLD  =   1   Then
        x 
=  ConvertToWordArray(sMessage)
    
Else
        x 
=  ConvertToWordArray(str2bin(sMessage))
    
End   If
    a 
=   & H67452301
    b 
=   & HEFCDAB89
    c 
=   & H98BADCFE
    d 
=   & H10325476
    
    
For  k  =   0   To   UBound (x)  Step   16
        AA 
=  a
        BB 
=  b
        CC 
=  c
        DD 
=  d
        
        md5_FF a, b, c, d, x(k 
+   0 ), S11,  & HD76AA478
        md5_FF d, a, b, c, x(k 
+   1 ), S12,  & HE8C7B756
        md5_FF c, d, a, b, x(k 
+   2 ), S13,  & H242070DB
        md5_FF b, c, d, a, x(k 
+   3 ), S14,  & HC1BDCEEE
        md5_FF a, b, c, d, x(k 
+   4 ), S11,  & HF57C0FAF
        md5_FF d, a, b, c, x(k 
+   5 ), S12,  & H4787C62A
        md5_FF c, d, a, b, x(k 
+   6 ), S13,  & HA8304613
        md5_FF b, c, d, a, x(k 
+   7 ), S14,  & HFD469501
        md5_FF a, b, c, d, x(k 
+   8 ), S11,  & H698098D8
        md5_FF d, a, b, c, x(k 
+   9 ), S12,  & H8B44F7AF
        md5_FF c, d, a, b, x(k 
+   10 ), S13,  & HFFFF5BB1
        md5_FF b, c, d, a, x(k 
+   11 ), S14,  & H895CD7BE
        md5_FF a, b, c, d, x(k 
+   12 ), S11,  & H6B901122
        md5_FF d, a, b, c, x(k 
+   13 ), S12,  & HFD987193
        md5_FF c, d, a, b, x(k 
+   14 ), S13,  & HA679438E
        md5_FF b, c, d, a, x(k 
+   15 ), S14,  & H49B40821
        
        md5_GG a, b, c, d, x(k 
+   1 ), S21,  & HF61E2562
        md5_GG d, a, b, c, x(k 
+   6 ), S22,  & HC040B340
        md5_GG c, d, a, b, x(k 
+   11 ), S23,  & H265E5A51
        md5_GG b, c, d, a, x(k 
+   0 ), S24,  & HE9B6C7AA
        md5_GG a, b, c, d, x(k 
+   5 ), S21,  & HD62F105D
        md5_GG d, a, b, c, x(k 
+   10 ), S22,  & H2441453
        md5_GG c, d, a, b, x(k 
+   15 ), S23,  & HD8A1E681
        md5_GG b, c, d, a, x(k 
+   4 ), S24,  & HE7D3FBC8
        md5_GG a, b, c, d, x(k 
+   9 ), S21,  & H21E1CDE6
        md5_GG d, a, b, c, x(k 
+   14 ), S22,  & HC33707D6
        md5_GG c, d, a, b, x(k 
+   3 ), S23,  & HF4D50D87
        md5_GG b, c, d, a, x(k 
+   8 ), S24,  & H455A14ED
        md5_GG a, b, c, d, x(k 
+   13 ), S21,  & HA9E3E905
        md5_GG d, a, b, c, x(k 
+   2 ), S22,  & HFCEFA3F8
        md5_GG c, d, a, b, x(k 
+   7 ), S23,  & H676F02D9
        md5_GG b, c, d, a, x(k 
+   12 ), S24,  & H8D2A4C8A
        
        md5_HH a, b, c, d, x(k 
+   5 ), S31,  & HFFFA3942
        md5_HH d, a, b, c, x(k 
+   8 ), S32,  & H8771F681
        md5_HH c, d, a, b, x(k 
+   11 ), S33,  & H6D9D6122
        md5_HH b, c, d, a, x(k 
+   14 ), S34,  & HFDE5380C
        md5_HH a, b, c, d, x(k 
+   1 ), S31,  & HA4BEEA44
        md5_HH d, a, b, c, x(k 
+   4 ), S32,  & H4BDECFA9
        md5_HH c, d, a, b, x(k 
+   7 ), S33,  & HF6BB4B60
        md5_HH b, c, d, a, x(k 
+   10 ), S34,  & HBEBFBC70
        md5_HH a, b, c, d, x(k 
+   13 ), S31,  & H289B7EC6
        md5_HH d, a, b, c, x(k 
+   0 ), S32,  & HEAA127FA
        md5_HH c, d, a, b, x(k 
+   3 ), S33,  & HD4EF3085
        md5_HH b, c, d, a, x(k 
+   6 ), S34,  & H4881D05
        md5_HH a, b, c, d, x(k 
+   9 ), S31,  & HD9D4D039
        md5_HH d, a, b, c, x(k 
+   12 ), S32,  & HE6DB99E5
        md5_HH c, d, a, b, x(k 
+   15 ), S33,  & H1FA27CF8
        md5_HH b, c, d, a, x(k 
+   2 ), S34,  & HC4AC5665
        
        md5_II a, b, c, d, x(k 
+   0 ), S41,  & HF4292244
        md5_II d, a, b, c, x(k 
+   7 ), S42,  & H432AFF97
        md5_II c, d, a, b, x(k 
+   14 ), S43,  & HAB9423A7
        md5_II b, c, d, a, x(k 
+   5 ), S44,  & HFC93A039
        md5_II a, b, c, d, x(k 
+   12 ), S41,  & H655B59C3
        md5_II d, a, b, c, x(k 
+   3 ), S42,  & H8F0CCC92
        md5_II c, d, a, b, x(k 
+   10 ), S43,  & HFFEFF47D
        md5_II b, c, d, a, x(k 
+   1 ), S44,  & H85845DD1
        md5_II a, b, c, d, x(k 
+   8 ), S41,  & H6FA87E4F
        md5_II d, a, b, c, x(k 
+   15 ), S42,  & HFE2CE6E0
        md5_II c, d, a, b, x(k 
+   6 ), S43,  & HA3014314
        md5_II b, c, d, a, x(k 
+   13 ), S44,  & H4E0811A1
        md5_II a, b, c, d, x(k 
+   4 ), S41,  & HF7537E82
        md5_II d, a, b, c, x(k 
+   11 ), S42,  & HBD3AF235
        md5_II c, d, a, b, x(k 
+   2 ), S43,  & H2AD7D2BB
        md5_II b, c, d, a, x(k 
+   9 ), S44,  & HEB86D391
        
        a 
=  AddUnsigned(a, AA)
        b 
=  AddUnsigned(b, BB)
        c 
=  AddUnsigned(c, CC)
        d 
=  AddUnsigned(d, DD)
    
Next
    
    
if  stype = 32   then
    MD5 
=   LCase (WordToHex(a)  &  WordToHex(b)  &  WordToHex(c)  &  WordToHex(d))
    
else
    MD5
= LCase (WordToHex(b)  &  WordToHex(c))   ' I crop this to fit 16byte database password :D
     end   if
End Function
%
>
< %
' -----------------------------------------------------------------------
'
--- EMAIL郵件處理類模塊
'
--- Copyright (c) 2004 Aspsky, Inc.
'
--- Mail: [email protected]   http://www.aspsky.net
'
--- 2004-12-18
'
-----------------------------------------------------------------------
'
--- 設置項
'
-----------------------------------------------------------------------
'
--- ServerLoginName    設置您的郵件服務器登錄名
'
--- ServerLoginPass    設置登錄密碼
'
--- SendSMTP            設置SMTP郵件服務器地址
'
--- SendFromEmail        設置發件人的E-MAIL地址
'
--- SendFromName        設置發送人名稱
'
--- ContentType        設置郵件類型 默認:text/html
'
--- CharsetType        設置編碼類型 默認:gb2312
'
--- SendObject            設置選取組件 1=Jmail,2=Cdonts,3=Aspemail
'
-----------------------------------------------------------------------
'
--- 屬性
'
-----------------------------------------------------------------------
'
--- SendMail Email, Topic, MailBody    收件人地址,標題,郵件內容
'
-----------------------------------------------------------------------
'
--- 獲取信息
'
-----------------------------------------------------------------------
'
--- ErrCode            信息編號 0=正常
'
--- Description        相應操作信息
'
--- Count                發送郵件數
'
-----------------------------------------------------------------------
Class  Dv_SendMail
    
Public  Count,ErrCode,ErrMsg
    
Private  LoginName,LoginPass,SMTP,FromEmail,FromName, Object ,Content_Type,Charset_Type
    
Private  Obj,cdoConfig

    
Private   Sub  Class_Initialize()
        
Object   =   0
        Count 
=   0
        ErrCode 
=   0
        Content_Type 
=   " text/html "
        Charset_Type 
=   " gb2312 "
    
End Sub

    
Private   Sub  Class_Terminate()
        
If  Isobject(Obj)  Then
            
Set  Obj  =   Nothing
        
End   If
        
If  IsObject(cdoConfig)  Then
            
Set  cdoConfig  =   Nothing
        
End   If
    
End Sub

    
' 設置您的郵件服務器登錄名
     Public   Property  Let ServerLoginName( Byval  Value)
        LoginName 
=  Value
    
End Property

    
' 設置登錄密碼
     Public   Property  Let ServerLoginPass( Byval  Value)
        LoginPass 
=  Value
    
End Property
    
' 設置SMTP郵件服務器地址
     Public   Property  Let SendSMTP( Byval  Value)
        SMTP 
=  Value
    
End Property
    
' 設置發件人的E-MAIL地址
     Public   Property  Let SendFromEmail( Byval  Value)
        FromEmail 
=  Value
    
End Property
    
' 設置發送人名稱
     Public   Property  Let SendFromName( Byval  Value)
        FromName 
=  Value
    
End Property
    
' 設置郵件類型
     Public   Property  Let ContentType( Byval  Value)
        Content_Type 
=  Value
    
End Property
    
' 設置編碼類型
     Public   Property  Let CharsetType( Byval  Value)
        Charset_Type 
=   Cstr (Value)
    
End Property
    
' 獲取錯誤信息
     Public   Property   Get  Description()
        Description 
=  ErrMsg
    
End Property
    
' 設置選取組件 SendObject 0=Jmail,1=Cdonts,2=Aspemail
     Public   Property  Let SendObject( Byval  Value)
        
Object   =  Value
        
On   Error   Resume   Next
        
Select   Case   Object
            
Case   1
                
Set  Obj  =  Server.CreateObject( " JMail.Message " )
            
Case   2
                
Set  Obj  =  Server.CreateObject( " CDONTS.NewMail " )
            
Case   3
                
Set  Obj  =  Server.CreateObject( " Persits.MailSender " )
            
Case   4
                
Set  Obj  =  Server.CreateObject( " CDO.Message " )     ' window 2003 new SendMailCom Object
             Case   Else
                ErrNumber 
=   2
        
End   Select
        
If  Err <> 0   Then
            ErrNumber 
=   3
        
End   If
    
End Property

    
Private   Property  Let ErrNumber( Byval  Value)
        ErrCode 
=  Value
        ErrMsg 
=  ErrMsg  &  Msg
    
End Property
    
Private   Function  Msg()
        
Dim  MsgValue
        
Select   Case  ErrCode
        
Case   1
            MsgValue 
=   " 未選取郵件組件或服務器不支持該組件! "
        
Case   2
            MsgValue 
=   " 所選的組件不存在! "
        
Case   3
            MsgValue 
=   " 錯誤:服務器不支持該組件! "
        
Case   4
            MsgValue 
=   " 發送失敗! "
        
Case   Else
            MsgValue 
=   " 正常。 "
        
End   Select
        Msg 
=  MsgValue
    
End Function

    
Public   Sub  SendMail( Byval  Email, Byval  Topic, Byval  MailBody)
        
If  ErrCode  <>   0   Then
            
Exit Sub
        
End   If
        
If  Email = ""   or  ISNull(Email)  Then   Exit Sub
        
If   Object > 0   Then
            
Select   Case   Object
                
Case   1
                    Jmail Email,Topic,MailBody
                
Case   2
                    Cdonts Email,Topic,Mailbody
                
Case   3
                    Aspemail Email,Topic,Mailbody
                
Case   4
                    CDOMessage Email,Topic,Mailbody
                
Case   Else
                    ErrNumber 
=   2
            
End   Select
        
Else
            ErrNumber 
=   1
        
End   If
    
End Sub

    
Private   Sub  Jmail(Email,Topic,Mailbody)
        
On   Error   Resume   Next
        Obj.Silent 
=   True
        Obj.Logging 
=   True
        Obj.Charset 
=  Charset_Type
        
If   Not (LoginName  =   ""   Or  LoginPass  =   "" Then
            Obj.MailServerUserName 
=  LoginName  ' 您的郵件服務器登錄名
            Obj.MailServerPassword  =  LoginPass  ' 登錄密碼
         End   If
        Obj.ContentType 
=  Content_Type
        Obj.Priority 
=   1
        Obj.From 
=  FromEmail
        Obj.FromName 
=  FromName
        Obj.AddRecipient Email
        Obj.Subject 
=  Topic
        Obj.Body 
=  Mailbody
        
If  Err <> 0   Then
            ErrMsg 
=  ErrMsg  &   " 發送失敗!原因: "   &  Err.Description
            ErrNumber 
=   4
        
Else
            Obj.Send (SMTP)
            Obj.ClearRecipients()
            
If  Err <> 0   Then
                ErrMsg 
=  ErrMsg  &   " 發送失敗!原因: "   &  Err.Description
                ErrNumber 
=   4
            
Else
                Count 
=  Count  +   1
                ErrMsg 
=  ErrMsg  &   " 發送成功! "
            
End   If
        
End   If
    
End Sub
        
    
Private   Sub  Cdonts(Email,Topic,Mailbody)
        
On   Error   Resume   Next
        Obj.From 
=  FromEmail
        Obj.To 
=  Email
        Obj.Subject 
=  Topic
        Obj.BodyFormat 
=   0  
        Obj.MailFormat 
=   0  
        Obj.Body 
=  Mailbody
        
If  Err <> 0   Then
            ErrMsg 
=  ErrMsg  &   " 發送失敗!原因: "   &  Err.Description
            ErrNumber 
=   4
        
Else
            Obj.Send
            
If  Err <> 0   Then
                ErrMsg 
=  ErrMsg  &   " 發送失敗!原因: "   &  Err.Description
                ErrNumber 
=   4
            
Else
                Count 
=  Count  +   1
                ErrMsg 
=  ErrMsg  &   " 發送成功! "
            
End   If
        
End   If
    
End Sub

    
Private   Sub  Aspemail(Email,Topic,Mailbody)
        
On   Error   Resume   Next
        Obj.Charset 
=  Charset_Type
        Obj.IsHTML 
=   True
        Obj.username 
=  LoginName     ' 服務器上有效的用戶名
        Obj.password  =  LoginPass     ' 服務器上有效的密碼
        Obj.Priority  =   1
        Obj.Host 
=  SMTP
        
' Obj.Port = 25            ' 該項可選.端口25是默認值
        Obj.From  =  FromEmail
        Obj.FromName 
=  FromName     '  該項可選
        Obj.AddAddress Email,Email
        Obj.Subject 
=  Topic
        Obj.Body 
=  Mailbody
        
If  Err <> 0   Then
            ErrMsg 
=  ErrMsg  &   " 發送失敗!原因: "   &  Err.Description
            ErrNumber 
=   4
        
Else
            Obj.Send
            
If  Err <> 0   Then
                ErrMsg 
=  ErrMsg  &   " 發送失敗!原因: "   &  Err.Description
                ErrNumber 
=   4
            
Else
                Count 
=  Count  +   1
                ErrMsg 
=  ErrMsg  &   " 發送成功! "
            
End   If
        
End   If
    
End Sub

    
Private   Sub  CDOMessage(Email,Topic,Mailbody)
        
On   Error   Resume   Next
        
If   Not  IsObject(cdoConfig)  Then
            
Call  CreatCDOConfig()
        
End   If
        
Set  Obj  =  Server.CreateObject( " CDO.Message "
        
With  Obj 
            
Set  .Configuration  =  cdoConfig 
            
' .From = FromEmail
            .To  =  Email
            .Subject 
=  Topic 
            .TextBody 
=  Mailbody
            .Send
        
End   With
        
If  Err <> 0   Then
            ErrMsg 
=  ErrMsg  &   " 發送失敗!原因: "   &  Err.Description
            ErrNumber 
=   4
        
Else
            Count 
=  Count  +   1
            ErrMsg 
=  ErrMsg  &   " 發送成功! "
        
End   If
    
End Sub

    
Private   Sub  CreatCDOConfig()
        
On   Error   Resume   Next
        
Dim  Sch
        sch 
=   " http://schemas.microsoft.com/cdo/configuration/ "
        
Set  cdoConfig  =  Server.CreateObject( " CDO.Configuration " )
        
With  cdoConfig.Fields 
            .Item(sch 
&   " smtpserver " =  SMTP
            
' .Item(sch & "smtpserverport") = 25
            .Item(sch  &   " sendusing " =   2                      ' cdoSendUsingPort CdoSendUsing enum value =  2
            .Item(sch  &   " smtpaccountname " =  FromName         ' "My Name"
            .Item(sch  &   " sendemailaddress " =  FromEmail         ' """MySelf"" <[email protected]>"
            .Item(sch  &   " smtpuserreplyemailaddress " =   25      ' """Another"" <[email protected]>"
             ' .Item(sch & "smtpauthenticate") = cdoBasic
            .Item(sch  &   " sendusername " =  LoginName
            .Item(sch 
&   " sendpassword " =  LoginPass
            .update 
        
End   With
        
If  Err <> 0   Then
            ErrMsg 
=  ErrMsg  &   " 發送失敗!原因: "   &  Err.Description
            ErrNumber 
=   4
        
End   If
    
End Sub
End Class
%
>
var  dv_ajax_debug_mode  =   false ;
        
function  dvajax_debug(text) {
    
if  (dv_ajax_debug_mode)
    alert(
" RSD:  "   +  text);
}

function  dvajax_init_object() {
    dvajax_debug(
" dvajax_init_object() called.. " );    
    
var  RetValue;
    
try  {
            RetValue 
=   new  ActiveXObject( " Msxml2.XMLHTTP " );
        } 
catch  (e) {
        
try  {
        RetValue 
=   new  ActiveXObject( " Microsoft.XMLHTTP " );
        } 
catch  (oc) {
        RetValue 
=   null ;
        }
    }
    
if ( ! RetValue  &&   typeof  XMLHttpRequest  !=   " undefined " )
        RetValue 
=   new  XMLHttpRequest();
        
if  ( ! RetValue)
            dvajax_debug(
" Could not create connection object. " );
        
return  RetValue;
}

function  dvajax_run(func_name,func_obj, args) {
    
var  i, x, n;
    
var  uri;
    
var  post_data;
    uri 
=   " ajax_check.asp " ;
    
if  (dvajax_request_type  ==   " GET " ) {
        
if  (uri.indexOf( " ? " ==   - 1
            uri 
=  uri  +   " ?rs= "   +  func_name;
        
else
            uri 
=  uri  +   " &rs= "   +  func_name;
            
for  (i  =   0 ; i  <  args.length - 1 ; i ++
                uri 
=  uri  +   " &rsargs[]= "   +  args[i];
                uri 
=  uri  +   " &rsrnd= "   +   new  Date().getTime();
                post_data 
=   null ;
    } 
else  {
                post_data 
=   " rs= "   +  func_name;
                
for  (i  =   0 ; i  <  args.length - 1 ; i ++
                    post_data 
=  post_data  +   " &rsargs[]= "   +  urlencode(args[i]);
    }
            
            x 
=  dvajax_init_object();
            x.open(dvajax_request_type, uri, 
true );
            
if  (dvajax_request_type  ==   " POST " ) {
                x.setRequestHeader(
" Method " " POST  "   +  uri  +   "  HTTP/1.1 " );
                x.setRequestHeader(
" Content-Type " " application/x-www-form-urlencoded " );
            }
            x.onreadystatechange 
=   function () {
                
if  (x.readyState  !=   4
                    
return ;
                dvajax_debug(
" received  "   +  x.responseText);                
                
var  status;
                
var  data;
                status 
=  x.responseText.charAt( 0 );
                datacache 
=  x.responseText.substring( 0 );
                data 
=  unescape(datacache);
                
if  (status  ==   " - "
                    alert(
" Error:  "   +  data);
                
else   
                    args[args.length
- 1 ](func_obj,data);
            }
    x.send(post_data);
    dvajax_debug(func_name 
+   "  uri =  "   +  uri  +   " /post =  "   +  post_data);
    dvajax_debug(func_name 
+   "  waiting.. " );
    
delete  x;
}

function  obj_getbyid(id) {
    itm 
=   null ;
    
if  (document.getElementById) {
        itm 
=  document.getElementById(id);
    } 
else   if  (document.all)    {
        itm 
=  document.all[id];
    } 
else   if  (document.layers) {
        itm 
=  document.layers[id];
    }
    
return  itm;
}

function  dv_ajaxcheck(seltype,objid){
    
var  objname  =  obj_getbyid(objid).value;
        
if  (objname){
            x_checkdata(seltype,objid,objname,checkuser_cb);
        }
}

function  checkuser_cb(c_type,data){
    
var  isok_username  =  obj_getbyid( " isok_ " + c_type);
    
if  (isok_username)
    {
        isok_username.innerHTML 
=   " &nbsp; " + data;
    }
}

function  x_checkdata(x_seltype,x_obj) {
    dvajax_run(x_seltype,x_obj,x_checkdata.arguments);
}

function  urlencode(text){
    text 
=  text.toString();
    
var  matches  =  text.match( / [\x90-\xFF] / g);
    
if  (matches)
    {
        
for  ( var  matchid  =   0 ; matchid  <  matches.length; matchid ++ )
        {
            
var  char_code  =  matches[matchid].charCodeAt( 0 );
            text 
=  text.replace(matches[matchid],  ' %u00 '   +  (char_code  &   0xFF ).toString( 16 ).toUpperCase());
        }
    }
    
return  escape(text).replace( / \+ / g,  " %2B " );
}


var  RegCheck  =  {
    passValue : 
new  Array(),
    pass : 
function (v,Objid,t){
        
var  isok_pass  =  obj_getbyid( " isok_ " + Objid);
        RegCheck.passValue[t] 
=  v;
        
if  (v.length < 6 || v.length > 10 ){
                isok_pass.innerHTML 
=  err_msg( " 密碼不能少於6位或多於10位 " );
                
return   false ;
        }
else {
                isok_pass.innerHTML 
=  suc_msg( " 符合要求 " );
        }
        
if  (t == 0 ){
            SetPwdStrengthEx(v);
        }
else {
            
if  (RegCheck.passValue.length == 2 ){
                
if  (RegCheck.passValue[ 0 ] == RegCheck.passValue[ 1 ]){
                    isok_pass.innerHTML 
=  suc_msg( " 符合要求 " );
                }
else {
                    isok_pass.innerHTML 
=  err_msg( " 重復輸入密碼不符 " );
                    
return   false ;
                }
                
            }
else
            {
                isok_pass.innerHTML 
=  err_msg( " 重復輸入密碼不符 " );
                
return   false ;
            }

        }
        
return   true ;
    },

    Value : 
function (v,Objid){
        
var  isok_pass  =  obj_getbyid( " isok_ " + Objid);
        
if  (v == '' ){
            isok_pass.innerHTML 
=  err_msg( " 必填內容,不能為空 " );
            
return   false ;
        }
else {
            
return   true ;
        }
    }


}


// 錯誤提示信息
function  err_msg(msg){
    
return   " <img src=' " + forum_picurl + " /note_error.gif' border='0'/> <span class='redfont'> " + msg + " </span> " ;
}
// 成功提示信息
function  suc_msg(msg){
    
return   " <img src=' " + forum_picurl + " /note_ok.gif' border='0'/> <span class='bluefont'> " + msg + " </span> " ;
}
// 檢查密碼強弱
function  pse_a1(j,b){
    
this .j = j; this .b = b;
};
function  pse_a7(c,j){
    
var  b = false ;
    
switch (j){
    
case   0 :
        
if ((c >= ' A ' ) && (c <= ' Z ' )){
            b
= true ;
        };
        
break ;
    
case   1 :
        
if ((c >= ' a ' ) && (c <= ' z ' )){
        b
= true ;
        };
        
break ;
    
case   2 :
        
if ((c >= ' 0 ' ) && (c <= ' 9 ' )){
        b
= true ;
        };
        
break ;
    
case   3 :
        
if ( " !@#$%^&*()_+-='\ " ;:[{]}\ | . > , < / ?`~".indexOf(c)>=0){
        b = true ;
        };
        
break ;
    
case   4 :
        
if (pse_a7(c, 0 ) || pse_a7(c, 1 )){
        b
= true ;
        };
        
break ;
    
default : break ;
    };
    
return  b;
};

function  pse_a8(e,g){
    
if ((e == null ) || isNaN(g)){
        
return   false ;
    }
else   if (e.length < g){
        
return   false ;
    };
    
return   true ;
};

function  pse_a10(e,f){
    
var  i = 0 ;
    
var  jj = new  Array( new  pse_a1( 0 , false ), new  pse_a1( 1 , false ), new  pse_a1( 2 , false ), new  pse_a1( 3 , false ));
    
if ((e == null ) || isNaN(f)){
        
return   false ;
    };
    
for ( var  k = 0 ;k < e.length;k ++ ){
        
for ( var  d = 0 ;d < jj.length;d ++ ){
            
if ( ! jj[d].b && pse_a7(e.charAt(k),jj[d].j)){
                jj[d].b
= true ; break ;
            };
        };
    };
    
for ( var  d = 0 ;d < jj.length;d ++ ){ if (jj[d].b){i ++ ;};}; if (i < f){ return   false ;}; return   true ;}; function  pse_a3(h){ return (pse_a8(h, " 7 " ) && pse_a10(h, " 3 " ));}; function  pse_a2(h){ return (pse_a8(h, " 7 " ) && pse_a10(h, " 2 " ));}; function  pse_a4(h){ return (pse_a8(h, " 5 " ) || ( ! pse_a8(h, " 0 " )));}; function  pse_a6(q){ return  document.getElementById(q);};

function  SetPwdStrengthEx(o){
    
if (pse_a3(o)){
        pse_a5(
3 , ' pse04 ' );
    }
    
else   if (pse_a2(o)){
        pse_a5(
2 , ' pse03 ' );
    }
else   if (pse_a4(o)){pse_a5( 1 , ' pse02 ' );
    }
else {
        pse_a5(
0 , ' pse01 ' );
        };
    };

function  pse_a5(m,p){ if (m > 3 ){m = 3 ;}; for ( var  n = 0 ;n < 4 ;n ++ ){ var  l = " pse01 " ; if (n <= m){l = p;}; if (n > 0 ){pse_a6( " idSM " + n).className = l;};pse_a6( " idSMT " + n).style.display = ((n == m) ? " inline " : " none " );};};

你可能感兴趣的:(function)