Home  >  Plugins  >  OldFirstMagic  >   >  Sony
Login Dialog
Thursday, September 2, 2010 By:
<?xml version="1.0" encoding="<X-FC-ITEM DATA[Charset]>"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<!--138 H=<X-FC-REQUEST-TIME HEADER> LS=<X-FC-REQUEST-TIME LOGIN.START> L=<X-FC-REQUEST-TIME LOGIN> OS=<X-FC-REQUEST-TIME OPEN.START> O=<X-FC-REQUEST-TIME OPEN> T=<X-FC-REQUEST-TIME>--><X-FC-WHITESPACE STRIP>
<!--#if expr="@length('$USETICKETAUTH') == 0"-->
        <!--#set var="USETICKETAUTH" value="0"-->
<!--#endif-->
<!--#if expr="@length('$ENABLEAUTHSAVING') == 0"-->
        <!--#set var="ENABLEAUTHSAVING" value="0"-->
<!--#endif-->
<!--#if expr="$USETICKETAUTH == 0 && <X-FC-SERVER USEDSLOGIN> == 0 && !$SUPPRESSDIGESTLOGIN && (<X-FC-SERVER VERSION> > 10250 || '<X-FC-ITEM DATA[Charset]>' == 'ISO-8859-1')"-->
        <!--#set var="USEDIGESTLOGIN" value="1"-->
        <!--#if expr="<X-FC-SERVER VERSION> >= 10250"-->
                <!--#set var="USEDIGESTLOGIN" value="2"-->
                <!--#if expr="<X-FC-SERVER VERSION> < 10514 && <X-FC-SERVER VERSION ISBUILD> < 8903"-->
                        <!--#set var="ENABLEAUTHSAVING" value="0"-->
                <!--#endif AUTHSAVING-->
        <!--#endif SHA1-->
<!--#else !DIGESTLOGIN-->
        <!--#set var="USEDIGESTLOGIN" value="0"-->
        <!--#set var="ENABLEAUTHSAVING" value="0"-->
<!--#endif DIGESTLOGIN-->
<X-FC-WHITESPACE RETAIN>
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=<X-FC-ITEM DATA[Charset]>"/><!--#if expr="$USEDIGESTLOGIN"-->
<meta http-equiv="Refresh" content="285;URL=/Login"/><!--#endif-->
<title><X-FC-FIELD LANG.141.4 STRING></title><!--#if expr="@length($GLOBALSTYLES)"-->
<link rel="stylesheet" type="text/css" href="<!--#echo var="GLOBALSTYLES"-->"/><!--#else-->
<style type="text/css">
<!--
.title{font-size:<X-FC-FIELD PREFS.5651 DEFAULT=LANG.49.5651.11 FONTSIZE>pt;color:<X-FC-FIELD PREFS.5652 DEFAULT=LANG.49.5652.11 RGB>;text-decoration:none;font-family:<X-FC-FIELD PREFS.5650 DEFAULT=LANG.49.5650.9 STRING>;}
.p{font-size:<X-FC-FIELD PREFS.5671 DEFAULT=LANG.49.5671.11 FONTSIZE>pt;color:<X-FC-FIELD PREFS.5672 DEFAULT=LANG.49.5672.11 RGB>;text-decoration:none;font-family:<X-FC-FIELD PREFS.5670 DEFAULT=LANG.49.5670.9 STRING>;}
.button{font-size:<X-FC-FIELD PREFS.5646 DEFAULT=LANG.49.5646.11 FONTSIZE>pt;color:<X-FC-FIELD PREFS.5647 DEFAULT=LANG.49.5647.11 RGB>;text-decoration:none;font-family:<X-FC-FIELD PREFS.5645 DEFAULT=LANG.49.5645.9 STRING>;}
.forms{font-size:<X-FC-FIELD PREFS.5696 DEFAULT=LANG.49.5696.11 FONTSIZE>pt;color:<X-FC-FIELD PREFS.5697 DEFAULT=LANG.49.5697.11 RGB>;text-decoration:none;font-family:<X-FC-FIELD PREFS.5695 DEFAULT=LANG.49.5695.9 STRING>;}
.gt{font-size:<X-FC-FIELD PREFS.5671 DEFAULT=LANG.49.5686.11 FONTSIZE>pt;color:<X-FC-FIELD PREFS.5687 DEFAULT=LANG.49.5687.11 RGB>;text-decoration:none;font-family:<X-FC-FIELD PREFS.5685 DEFAULT=LANG.49.5685.9 STRING>;}
.gtb{font-size:<X-FC-FIELD PREFS.5671 DEFAULT=LANG.49.5686.11 FONTSIZE>pt;color:<X-FC-FIELD PREFS.5687 DEFAULT=LANG.49.5687.11 RGB>;text-decoration:none;font-weight:bold;font-family:<X-FC-FIELD PREFS.5685 DEFAULT=LANG.49.5685.9 STRING>;}
.gtu{font-size:<X-FC-FIELD PREFS.5671 DEFAULT=LANG.49.5686.11 FONTSIZE>pt;color:<X-FC-FIELD PREFS.5687 DEFAULT=LANG.49.5687.11 RGB>;text-decoration:underline;font-family:<X-FC-FIELD PREFS.5685 DEFAULT=LANG.49.5685.9 STRING>;}
-->
</style><!--#endif--><!--#if expr="$USEDIGESTLOGIN"-->
<script type="text/javascript">
<!--
<X-FC-WHITESPACE STRIP>
var HD=new String("0123456789abcdef");
<!--#rem
The following functions are necessary since various browser developers have failed to implement arithmetic operations on unsigned 32-bit numbers correctly
AND(a,b)        == a&b
OR(a,b) == a|b
XOR(a,b)        == a^b
NOT(a)          == ~a
ADD(a,b)        == a+b
LS(a,s) == a<<s
RS(a,s) == a>>s
-->
function AND(a,b){
var hb=(a>=0x80000000)&&(b>=0x80000000);
var r=0;
if(a>=0x80000000){a-=0x80000000;}
if(b>=0x80000000){b-=0x80000000;}
r=a&b;
if(hb){r+=0x80000000;}
return r;
}
function OR(a,b){
var hb=(a>=0x80000000)||(b>=0x80000000);
var r=0;
if(a>=0x80000000){a-=0x80000000;}
if(b>=0x80000000){b-=0x80000000;}
r=a|b;
if(hb){r+=0x80000000;}
return r;
}
function XOR(a,b){
var hb=((a>=0x80000000)&&(b<0x80000000))||((a<0x80000000)&&(b>=0x80000000));
var r=0;
if(a>=0x80000000){a-=0x80000000;}
if(b>=0x80000000){b-=0x80000000;}
r=a^b;
if(hb){r+=0x80000000;}
return r;
}
function NOT(a){
var b=0x80000000;
var n=0;
while(b>=1){
        if(a>=b){
                a-=b;
        }else{
                n+=b;
        }
        b=b/2;
}
return n;
}
function ADD(a,b){
var n=0;
if(a>=0x80000000){
        ++n;
        a-=0x80000000;
}
if(b>=0x80000000){
        ++n;
        b-=0x80000000;
}
a+=b;
if(n==1){
        if(a>=0x80000000){
                a-=0x80000000;
        }else{
                a+=0x80000000;
        }
}
return a;
}
function LS(a,s){
for(var i=0;i<s;i++){
        if(a>=0x80000000){
                a-=0x80000000;
        }
        a=a*2;
}
return a;
}
function RS(a,s){
for(var i=0;i<s;i++){
        if(a%2){
                a-=1;
        }
        a=a/2;
}
return a;
}
<!--#rem
function H1
converts the high nibble of the byte c into a hex character
-->
function HEX1(c){return HD.substr((c>>4)&0x0F,1);}
<!--#rem
function H2
converts the low nibble of byte c into a hex character
-->
function HEX2(c){return HD.substr(c&0x0F,1);}
        <!--#if expr="$USEDIGESTLOGIN == 2"-->
<!--#rem
SHA1 State variables
-->
var PD=[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0];
var H=[],B=[];
var KV=[0x5A827999,0x6ED9EBA1,0x8F1BBCDC,0xCA62C1D6];
var TL=0,BL=0;

function K(n){
return KV[Math.floor(n / 20)];
}
function S(v,n){
return OR(LS(v,n),RS(v,32-n));
}
function f(n,B,C,D){
switch(Math.floor(n/20)){
        case 0:return OR(AND(B,C),AND(NOT(B),D));
        case 2:return OR(OR(AND(B,C),AND(B,D)),AND(C,D));
        default:return XOR(XOR(B,C),D);
}
}
<!--#rem
EC(I,L,O)       Encode (Input, Length, Output)
Encodes input (UINT4) into output (unsigned char). Assumes len is a multiple of 4.
-->
function EC(I,L,O){
var i,j;
for(i=0,j=0;j<L;i++,j+=4){
        O[j]=AND(RS(I[i],24),0xFF);
        O[j+1]=AND(RS(I[i],16),0xFF);
        O[j+2]=AND(RS(I[i],8),0xFF);
        O[j+3]=AND(I[i],0xFF);
}
}
<!--#rem
DC(I,L,O)       Decode(Input, Length, Output)
Decodes input (unsigned char) into output (UINT4). Assumes len is a multiple of 4.
-->
function DC(I,L,O){
var i,j;
for (i=0,j=0;j<L;i++,j+=4){
        O[i]=0;
        O[i]=ADD(O[i],LS(I[j],24));
        O[i]=ADD(O[i],LS(I[j+1],16));
        O[i]=ADD(O[i],LS(I[j+2],8));
        O[i]=ADD(O[i],I[j+3]);
}
}
<!--#rem
TF(bl)  Transform(block)
SHA1 basic transformation. Transforms state based on block.
-->
function TF(bl){
var a,b,c,d,e,t;
var W=[];
var i;
DC(bl,64,W);
for(i=16;i<80;i++){
        W[i]=S(XOR(XOR(XOR(W[i-3],W[i-8]),W[i-14]),W[i-16]),1);
}
a=H[0];b=H[1];c=H[2];d=H[3];e=H[4];
for(i=0;i<80;i++){
        t=ADD(ADD(ADD(ADD(S(a,5),f(i,b,c,d)),e),W[i]),K(i));
        e=AND(d,0xFFFFFFFF);
        d=AND(c,0xFFFFFFFF);
        c=AND(S(b,30),0xFFFFFFFF);
        b=AND(a,0xFFFFFFFF);
        a=AND(t,0xFFFFFFFF);
}
H[0]=ADD(H[0],a);
H[1]=ADD(H[1],b);
H[2]=ADD(H[2],c);
H[3]=ADD(H[3],d);
H[4]=ADD(H[4],e);
}
<!--#rem
CA(d, di, s, si, l)     CopyArray (Destination, Destination Index, Source, Source Index, Length)
-->
function CA(d,di,s,si,L){
for(i=0;i<L;i++){
        d[di+i]=s[si+i];
}
}
<!--#rem
UD(I,L)         Update (Input, Length)
SHA1 block update operation. Continues an SHA1 message-digest operation, processing another message block, and updating the context.
-->
function UD(I,L){
var i=0;
TL+=L;
if(BL){
        if(64-BL>L){
                i=L;
        }else{
                i=64-BL;
        }
        CA(B,BL,I,0,i);
        BL+=i;
        if(BL<64){
                return;
        }
        TF(B);
        BL=0;
}
while(L-i>=64){
        CA(B,0,I,i,64);
        i+=64;
        TF(B);
}
CA(B,0,I,i,L-i);
BL=L-i;
}
<!--#rem
F()             Final ()
SHA1 finalization. Ends an SHA1 message-digest operation, writing the the message digest and zeroizing the context.
-->
function F(){
var D=[];
var R="";
B[BL++]=0x80;
if(BL<56){
        CA(B,BL,PD,0,59-BL);
}else{
        if(BL<64){
                CA(B,BL,PD,0,64-BL);
        }
        TF(B);
        CA(B,0,PD,0,58);
}
B[59]=AND(RS(AND(TL,0xE0000000),29),0xFF);
TL=LS(TL,3);
B[60]=AND(RS(TL,24),0xFF);
B[61]=AND(RS(TL,16),0xFF);
B[62]=AND(RS(TL,8),0xFF);
B[63]=AND(TL,0xFF);
TF(B);
<!--#rem
Store state in digest
-->
EC(H,20,D);
for(i=0;i<20;i++){
        R+=String(HEX1(D[i]));
        R+=String(HEX2(D[i]));
}
return R;
}
<!--#rem
SHA1(C,P)       SHA1(challenge, password)
computes the SHA-1 digest of the given password
-->
function SHA1(C,P){
var c=[],p=[];
var u;
var s,d;
<!--#rem
Transfer challenge string to challenge byte array as UTF-8
-->
for(s=0,d=0;s<C.length;s++){
        u=C.charCodeAt(s);
        if(u<0x80){
                c[d++]=u;
        }else if(u<0x0800){
                c[d++]=OR(RS(u,6),0xC0);
                c[d++]=OR(AND(u,0x0000003F),0x80);
        }else if(u<0x00010000){
                c[d++]=OR(RS(u,12),0xE0);
                c[d++]=OR(AND(RS(u,6),0x0000003F),0x80);
                c[d++]=OR(AND(u,0x0000003F),0x80);
        }else if(u<0x00200000){
                c[d++]=OR(RS(u,18),0xF0);
                c[d++]=OR(AND(RS(u,12),0x0000003F),0x80);
                c[d++]=OR(AND(RS(u,6),0x0000003F),0x80);
                c[d++]=OR(AND(u,0x0000003F),0x80);
        }
}
<!--#rem
Transfer password string to password byte array as UTF-8
-->
for(s=0,d=0;s<P.length;s++){
        u=P.charCodeAt(s);
        if(u<0x80){
                p[d++]=u;
        }else if(u<0x0800){
                p[d++]=OR(RS(u,6),0xC0);
                p[d++]=OR(AND(u,0x0000003F),0x80);
        }else if(u<0x00010000){
                p[d++]=OR(RS(u,12),0xE0);
                p[d++]=OR(AND(RS(u,6),0x0000003F),0x80);
                p[d++]=OR(AND(u,0x0000003F),0x80);
        }else if(u<0x00200000){
                p[d++]=OR(RS(u,18),0xF0);
                p[d++]=OR(AND(RS(u,12),0x0000003F),0x80);
                p[d++]=OR(AND(RS(u,6),0x0000003F),0x80);
                p[d++]=OR(AND(u,0x0000003F),0x80);
        }
}
<!--#rem
Load magic initialization constants.
-->
H[0]=0x67452301;
H[1]=0xEFCDAB89;
H[2]=0x98BADCFE;
H[3]=0x10325476;
H[4]=0xC3D2E1F0;
TL=0;
BL=0;
UD(c,c.length);
UD(p,p.length);
return F();
}
<!--#rem
DP(F)   DigestPassword(Form)
Determines if an SHA1 digest can be computed for the target HTML form, and if so computes it.
-->
function DP(F){
var p=self.sp;
var E=F.elements;
if(p==null){
        p=E["password"].value.toUpperCase();
}else{
        E["savedpw"].value="1";
}
if (E["userid"].length==0){
        return false;
}
E["sha1"].value=SHA1(E["challenge"].value,p);
E["password"].value="";
return true;
}
        <!--#else-->
<!--#rem
MD5 State variables
-->
<X-FC-WHITESPACE RETAIN>
/*
The following JavaScript MD5 implementation is
Copyright © 2002 Centrinity Inc. All Rights Reserved
as a derivative work of the RSA Data Security, Inc. MD5 Message-Digest Algorigthm
Copyright © 1991-2, RSA Data Security, Inc. All Rights Reserved.
*/
<X-FC-WHITESPACE STRIP>
var S11=7,S12=12,S13=17,S14=22,S21=5,S22=9,S23=14,S24=20,S31=4,S32=11,S33=16,S34=23,S41=6,S42=10,S43=15,S44=21;
var PAD=[0x80,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0];
var S=[],CN=[],B=[],D=[];
var HD=new String("0123456789abcdef");
<!--#rem
functions FF, GG, HH, and II transformations for rounds 1, 2, 3, and 4.
Rotation is separate from addition to prevent recomputation.
-->
function FF(a,b,c,d,x,s,ac){
<!--#rem
a += (((b) & (c)) | ((~b) & (d))) + x + ac;
-->
var da=false;
a=ADD(a,OR(AND(b,c),AND(NOT(b),d)));
a=ADD(a,ac);
a=ADD(a,x);
<!--#rem
a = (((a) << (s)) | ((a) >> (32-(s))));
-->
a = OR(LS(a,s),RS(a,32-s));
a=ADD(a,b);
return a;
}
function GG(a,b,c,d,x,s,ac){
<!--#rem
a += (((b) & (d)) | ((c) & (~d))) + x + ac;
-->
a=ADD(a,OR(AND(b,d),AND(c,NOT(d))));
a=ADD(a,ac);
a=ADD(a,x);
<!--#rem
a = (((a) << (s)) | ((a) >> (32-(s))));
-->
a = OR(LS(a,s),RS(a,32-s));
a=ADD(a,b);
return a;
}
function HH(a,b,c,d,x,s,ac){
<!--#rem
a += ((b) ^ (c) ^ (d)) + x + ac;
-->
a=ADD(a,XOR(d,XOR(b,c)));
a=ADD(a,ac);
a=ADD(a,x);
<!--#rem
a = (((a) << (s)) | ((a) >> (32-(s))));
-->
a = OR(LS(a,s),RS(a,32-s));
a=ADD(a,b);
return a;
}
function II(a,b,c,d,x,s,ac){
<!--#rem
a += ((c) ^ ((b) | (~d))) + x + ac;
-->
a=ADD(a,XOR(c,OR(b,NOT(d))));
a=ADD(a,ac);
a=ADD(a,x);
<!--#rem
a = (((a) << (s)) | ((a) >> (32-(s))));
-->
a = OR(LS(a,s),RS(a,32-s));
a=ADD(a,b);
return a;
}
<!--#rem
EC(I, L, O)     Encode (Input, Length, Output)
Encodes input (UINT4) into output (unsigned char). Assumes len is a multiple of 4.
-->
function EC(I,L,O){
var i,j;
for(i=0,j=0;j<L;i++,j+=4){
        O[j]=AND(I[i],0xFF);
        O[j+1]=AND(RS(I[i],8),0xFF);
        O[j+2]=AND(RS(I[i],16),0xFF);
        O[j+3]=AND(RS(I[i],24),0xFF);
}
}
<!--#rem
DC(I,L,O)       Decode(Input, Length, Output)
Decodes input (unsigned char) into output (UINT4). Assumes len is a multiple of 4.
-->
function DC(I,L,O){
var i,j;
for(i=0,j=0;j<L;i++,j+=4){
        O[i]=0;
        O[i]=ADD(O[i],I[j]);
        O[i]=ADD(O[i],LS(I[j+1],8));
        O[i]=ADD(O[i],LS(I[j+2],16));
        O[i]=ADD(O[i],LS(I[j+3],24));
}
}
<!--#rem
TF(bl)          Transform(block)
MD5 basic transformation. Transforms state based on block.
-->
function TF(bl){
var a=S[0],b=S[1],c=S[2],d=S[3];
var x=[];
DC(bl,64,x);
<!--#rem
Round 1
-->
a=FF(a,b,c,d,x[0],S11,0xd76aa478);
d=FF(d,a,b,c,x[1],S12,0xe8c7b756);
c=FF(c,d,a,b,x[2],S13,0x242070db);
b=FF(b,c,d,a,x[3],S14,0xc1bdceee);
a=FF(a,b,c,d,x[4],S11,0xf57c0faf);
d=FF(d,a,b,c,x[5],S12,0x4787c62a);
c=FF(c,d,a,b,x[6],S13,0xa8304613);
b=FF(b,c,d,a,x[7],S14,0xfd469501);
a=FF(a,b,c,d,x[8],S11,0x698098d8);
d=FF(d,a,b,c,x[9],S12,0x8b44f7af);
c=FF(c,d,a,b,x[10],S13,0xffff5bb1);
b=FF(b,c,d,a,x[11],S14,0x895cd7be);
a=FF(a,b,c,d,x[12],S11,0x6b901122);
d=FF(d,a,b,c,x[13],S12,0xfd987193);
c=FF(c,d,a,b,x[14],S13,0xa679438e);
b=FF(b,c,d,a,x[15],S14,0x49b40821);
<!--#rem
Round 2
-->
a=GG(a,b,c,d,x[1],S21,0xf61e2562);
d=GG(d,a,b,c,x[6],S22,0xc040b340);
c=GG(c,d,a,b,x[11],S23,0x265e5a51);
b=GG(b,c,d,a,x[0],S24,0xe9b6c7aa);
a=GG(a,b,c,d,x[5],S21,0xd62f105d);
d=GG(d,a,b,c,x[10],S22,0x2441453);
c=GG(c,d,a,b,x[15],S23,0xd8a1e681);
b=GG(b,c,d,a,x[4],S24,0xe7d3fbc8);
a=GG(a,b,c,d,x[9],S21,0x21e1cde6);
d=GG(d,a,b,c,x[14],S22,0xc33707d6);
c=GG(c,d,a,b,x[3],S23,0xf4d50d87);
b=GG(b,c,d,a,x[8],S24,0x455a14ed);
a=GG(a,b,c,d,x[13],S21,0xa9e3e905);
d=GG(d,a,b,c,x[2],S22,0xfcefa3f8);
c=GG(c,d,a,b,x[7],S23,0x676f02d9);
b=GG(b,c,d,a,x[12],S24,0x8d2a4c8a);
<!--#rem
Round 3
-->
a=HH(a,b,c,d,x[5],S31,0xfffa3942);
d=HH(d,a,b,c,x[8],S32,0x8771f681);
c=HH(c,d,a,b,x[11],S33,0x6d9d6122);
b=HH(b,c,d,a,x[14],S34,0xfde5380c);
a=HH(a,b,c,d,x[1],S31,0xa4beea44);
d=HH(d,a,b,c,x[4],S32,0x4bdecfa9);
c=HH(c,d,a,b,x[7],S33,0xf6bb4b60);
b=HH(b,c,d,a,x[10],S34,0xbebfbc70);
a=HH(a,b,c,d,x[13],S31,0x289b7ec6);
d=HH(d,a,b,c,x[0],S32,0xeaa127fa);
c=HH(c,d,a,b,x[3],S33,0xd4ef3085);
b=HH(b,c,d,a,x[6],S34,0x4881d05);
a=HH(a,b,c,d,x[9],S31,0xd9d4d039);
d=HH(d,a,b,c,x[12],S32,0xe6db99e5);
c=HH(c,d,a,b,x[15],S33,0x1fa27cf8);
b=HH(b,c,d,a,x[2],S34,0xc4ac5665);
<!--#rem
Round 4
-->
a=II(a,b,c,d,x[ 0],S41,0xf4292244);
d=II(d,a,b,c,x[ 7],S42,0x432aff97);
c=II(c,d,a,b,x[14],S43,0xab9423a7);
b=II(b,c,d,a,x[ 5],S44,0xfc93a039);
a=II(a,b,c,d,x[12],S41,0x655b59c3);
d=II(d,a,b,c,x[ 3],S42,0x8f0ccc92);
c=II(c,d,a,b,x[10],S43,0xffeff47d);
b=II(b,c,d,a,x[ 1],S44,0x85845dd1);
a=II(a,b,c,d,x[ 8],S41,0x6fa87e4f);
d=II(d,a,b,c,x[15],S42,0xfe2ce6e0);
c=II(c,d,a,b,x[ 6],S43,0xa3014314);
b=II(b,c,d,a,x[13],S44,0x4e0811a1);
a=II(a,b,c,d,x[ 4],S41,0xf7537e82);
d=II(d,a,b,c,x[11],S42,0xbd3af235);
c=II(c,d,a,b,x[ 2],S43,0x2ad7d2bb);
b=II(b,c,d,a,x[ 9],S44,0xeb86d391);
S[0]=ADD(S[0],a);
S[1]=ADD(S[1],b);
S[2]=ADD(S[2],c);
S[3]=ADD(S[3],d);
}
<!--#rem
CA(d, di, s, si, l)     CopyArray (Destination, Destination Index, Source, Source Index, Length)
-->
function CA(d,di,s,si,L){
for(i=0;i<L;i++){
        d[di+i]=s[si+i];
}
}
<!--#rem
UD(I,L)                 Update (Input, Length)
MD5 block update operation. Continues an MD5 message-digest operation, processing another message block, and updating the context.
-->
function UD(I,L){
var i,n,pl;
var T=[];
<!--#rem
Compute number of bytes mod 64
-->
n=AND(RS(CN[0],3),0x3F);
<!--#rem
Update number of bits
-->
if ((CN[0]+=LS(L,3))<LS(L,3)){
        CN[1]++;
}
CN[1]+=RS(L,29);
pl=64-n;
<!--#rem
Transform as many times as possible.
-->
if(L>=pl){
        CA(B,n,I,0,pl);
        TF(B);
        for(i=pl;i+63<L;i+=64){
                CA(T,0,I,i);
                TF(T);
        }
        n=0;
}else{
        i=0;
}
<!--#rem
Buffer remaining input
-->
CA(B,n,I,i,L-i);
}
<!--#rem
F()     Final ()
MD5 finalization. Ends an MD5 message-digest operation, writing the the message digest and zeroizing the context.
-->
function F(){
var b=[];
var i,p;
var R="";
<!--#rem
Save number of bits
-->
EC(CN,8,b);
<!--#rem
Pad out to 56 mod 64.
-->
i=((CN[0]>>3)&0x3F);
p=(i<56)?(56-i):(120-i);
UD(PAD,p);
<!--#rem
Append length (before padding)
-->
UD(b,8);
<!--#rem
Store state in digest
-->
EC(S,16,D);
for(i=0;i<16;i++){
        R+=String(HEX1(D[i]));
        R+=String(HEX2(D[i]));
}
return R;
}
<!--#rem
MD5(C,P)        MD5(challenge, password)
computes the MD5 digest of the given password
-->
function MD5(C,P){
var c=[],p=[];
var i;
for(i=0;i<C.length;i++){
        c[i]=C.charCodeAt(i);
}
for (i=0;i<P.length;i++){
        p[i]=P.charCodeAt(i);
}
CN[0]=0;
CN[1]=0;
<!--#rem
Load magic initialization constants
.-->
S[0]=0x67452301;
S[1]=0xEFCDAB89;
S[2]=0x98BADCFE;
S[3]=0x10325476;
UD(c,c.length);
UD(p,p.length);
return F();
}
<!--#rem
DP(F)   DigestPassword(Form)
Determines if an MD5 digest can be computed for the target HTML form, and if so computes it.
JavaScript doesn't support any charset except UTF-16 for its string functions (while old servers won't allow you to log in using Unicode).  So we disable the MD5 calculation for all
non ISO-8859-1 charsets. We can get away with ISO-8859-1 because it matches the first 256 entries of UTF-16
-->
function DP(F){
var p=self.sp;
var E=F.elements;
if(p==null){
        p=E["password"].value;
}
if (E["userid"].length==0||E["password"].length==0){
        return false;
}
E["md5"].value=MD5(E["challenge"].value,p);
E["password"].value="";
return true;
}
        <!--#endif-->
var sp=null;
        <!--#if expr="$ENABLEAUTHSAVING"-->
<!--#rem
lc()            LoadCredentials()
checks for cookie saved credentials and pre-fills the login form with them
-->
function lc(){
var C=document.cookie;
var t=null;
var s=C.indexOf("fc1=");
var e,c;
if(s!=-1){
        var D=new Date();
        D.setTime(D.getTime()+7776000000);
        s+=4;
        e=C.indexOf(';',s);
        if(e==-1){
                e=C.length;
        }
        t=C.substring(s,e);
        if(t.length){
                document.cookie="fc1="+t+";path=/;expires="+D.toGMTString();
                document.forms["LOGINFORM"].elements["userid"].value=du(t);
                s=C.indexOf("fc2=");
                if(s!=-1){
                        s+=4;
                        e=C.indexOf(';',s);
                        if(e==-1){
                                e=C.length;
                        }
                        t=C.substring(s,e);
                        if(t.length){
                                document.cookie="fc2="+t+";path=/;expires="+D.toGMTString();
                                self.sp=t;
                                document.forms["LOGINFORM"].elements["password"].value="************";
                        }
                }
        }
}
}
<!--#rem
sc(F)           SaveCredentials(Form)
Saves the current contents of the form in a cookie.  May pop up a warning dialog if attempt to save pw.
-->
function sc(F){
var u=F.elements["userid"].value;
var p=F.elements["password"].value;
if(sp==null&&u.length){
        var D=new Date();
        D.setTime(D.getTime() + 7776000000);
        if(p.length){
                <!--#if expr="<X-FC-FIELD LANG.7539.1 LENGTH>"-->
                if(confirm("<X-FC-FIELD LANG.7539.1 STRING>")){
                <!--#else-->
                if(1){
                <!--#endif-->
                        document.cookie="fc1="+eu(u)+";path=/;expires="+D.toGMTString();
                        document.cookie="fc2="+SHA1(u.toUpperCase(),p.toUpperCase())+";path=/;expires="+D.toGMTString();
                }
        }else{  
                document.cookie="fc1="+eu(u)+";path=/;expires="+D.toGMTString();
                document.cookie="fc2=;path=/;expires="+D.toGMTString();
        }
}
}
<!--#rem
cc(F)           ClearCredentials(Form)
Clears any cookie saved credentials
-->
function cc(F){
var D=new Date();
D.setTime(D.getTime() + 7776000000);
F.elements["userid"].value="";
F.elements["password"].value="";
document.cookie="fc1=;path=/;expires="+D.toGMTString();
document.cookie="fc2=;path=/;expires="+D.toGMTString();
}
<!--#rem
eu(p)           EncodeUserID(Plaintext String)
Extremely simple scramble algorithm to provide minimal obfuscation for saved userid cookies.  Note that this is effectively security by obscurity and will only serve to discourage rank amateurs.
-->
function eu(p){
var pa=[],sa=[];
var oa="";
var s="<X-FC-SERVER NAME>";
var i=0,cs=0;
for(i=0;i<64;i++){
        sa[i]=s.charCodeAt(i%s.length);
        if(cs==0){
                sa[i]=sa[i]%256;
        }
}
pa[0]=p.length;
for(i=0;i<p.length;i++) {
        pa[i+1]=p.charCodeAt(i);
        if(pa[i+1]>255){
                cs=1;
        }
}
for(i=p.length;i<64;i++){
        pa[i+1]=Math.floor(Math.random()*(cs==1?65535:255));
}
for(i=0;i<64;i++){
        if(i%2){
                pa[i]=pa[i]+sa[i];
                if(cs){
                        pa[i]=pa[i]%65536;
                }else{
                        pa[i]=pa[i]%256;
                }
        }else{
                pa[i]=pa[i]-sa[i];
                if(pa[i]<0&&cs){
                        pa[i]+=65536;
                }else if(pa[i]<0){
                        pa[i]+=256;
                }
        }
}
if(cs){
        for(i=0;i<64;i++){
                oa+=HD.charAt(AND(RS(AND(pa[(i+2)%64],0x00F0),4),0x000F));
        }
        for(i=0;i<64;i++){
                oa+=HD.charAt(AND(RS(AND(pa[(i+11)%64],0xF000),12),0x000F));
        }
        for(i=0;i<64;i++){
                oa+=HD.charAt(AND(RS(AND(pa[(i+5)%64],0x0F00),8),0x000F));
        }
        for(i=0;i<64;i++){
                oa+=HD.charAt(AND(pa[(i+1)%64],0x000F));
        }
}else{
        for(i=0;i<64;i++){
                oa+=HD.charAt(AND(pa[(i+7)%64],0x0F));
        }
        for(i=0;i<64;i++){
                oa+=HD.charAt(AND(RS(AND(pa[(i+4)%64],0xF0),4),0x0F));
        }
}
return oa;
}
<!--#rem
du(e)           DecodeUserID(Encoded String)
Decodes a userID encoded using EncodeUserID
-->
function du(e){
var pa=[],sa=[];
var cs=(e.length==52?1:0);
var s="<X-FC-SERVER NAME>";
var i=0;
var p="";
for(i=0;i<64;i++){
        sa[i]=s.charCodeAt(i%s.length);
        if(cs==0){
                sa[i]=sa[i]%256;
        }
}
for(i=0;i<64;i++){
        pa[i]=0;
}
if(cs){
        for(i=0;i<64;i++){
                pa[(i+2)%64]+=(0x0010*parseInt(e.charAt(i),16));
        }
        for(i=64;i<128;i++){
                pa[(i+11)%64]+=(0x1000*parseInt(e.charAt(i),16));
        }
        for(i=128;i<192;i++){
                pa[(i+5)%64]+=(0x0100*parseInt(e.charAt(i),16));
        }
        for(i=192;i<256;i++){
                pa[(i+1)%64]+=(parseInt(e.charAt(i),16));
        }
}else{
        for(i=0;i<64;i++){
                pa[(i+7)%64]+=(parseInt(e.charAt(i),16));
        }
        for(i=64;i<128;i++){
                pa[(i+4)%64]+=(0x10*parseInt(e.charAt(i),16));
        }
}
for(i=0;i<64;i++){
        pa[i]+=(cs==1?65536:256);
}
for(i=0;i<64;i++){
        if(i%2){
                pa[i]=pa[i]-sa[i];
        }else{
                pa[i]=pa[i]+sa[i];
        }
}
for(i=0;i<64;i++){
        pa[i]=pa[i]%(cs?65536:256);
}
for(i=1;i<(pa[0]+1);i++){
        p+=String.fromCharCode(pa[i]);
}
return p;
}
        <!--#endif-->
<X-FC-WHITESPACE RETAIN>
//-->
</script><X-FC-WHITESPACE STRIP>
<!--#endif-->
<X-FC-WHITESPACE RETAIN>
</head>
<body dir="<X-FC-FIELD LANG.7500 DEFAULT="ltr" STRING>" bgcolor="<X-FC-FIELD PREFS.5600 DEFAULT=LANG.49.5600.11 RGB>" onload="<!--#if expr="$ENABLEAUTHSAVING"-->lc();<!--#endif-->self.focus();document.forms['LOGINFORM'].elements['userid'].focus();document.forms['LOGINFORM'].elements['userid'].select();"><X-FC-WHITESPACE STRIP>
<br/>
<form name="LOGINFORM" action="/Login" method="post" enctype="application/x-www-form-urlencoded"<!--#if expr="$USEDIGESTLOGIN"--> onsubmit="return DP(this);"<!--#endif-->>
<input type="hidden" name="charset" value="<X-FC-ITEM DATA[Charset]>"/>
<input type="hidden" name="origurl" value="<!--#echo expr="@mlescape($SRVR_ERR_RESOURCE)"--><!--#if expr="@length($SRVR_ERR_RESOURCE_ARGS)"-->?<!--#echo expr="@mlescape($SRVR_ERR_RESOURCE_ARGS)"--><!--#endif-->"/>
<!--#if expr="$USEDIGESTLOGIN"-->
<input type="hidden" name="challenge" value="<!--#echo var="HTTP_LOGIN_CHALLENGE"-->"/>
        <!--#if expr="$USEDIGESTLOGIN == 2"-->
<input type="hidden" name="sha1" value=""/>
                <!--#if expr="$ENABLEAUTHSAVING"-->
<input type="hidden" name="savedpw" value="0"/>
                <!--#endif-->
        <!--#else-->
<input type="hidden" name="md5" value=""/>
        <!--#endif-->
<!--#endif-->
<table bgcolor="<X-FC-FIELD PREFS.5601 DEFAULT=LANG.49.5601.11 RGB>" align="center" cellpadding="2" cellspacing="0" border="0" summary="">
<tr>
        <td rowspan="7" bgcolor="<X-FC-FIELD PREFS.5603 DEFAULT=LANG.49.5603.11 RGB>"><div style="width:1px;"></div></td>
        <td class="title" bgcolor="<X-FC-FIELD PREFS.5603 DEFAULT=LANG.49.5603.11 RGB>" colspan="4" nowrap="nowrap"><img src="/Icons/d12727" alt="" title="<X-FC-FIELD LANG.141.4 STRING>" width="32" height="32" border="0" style="vertical-align:middle;"/>&nbsp;<X-FC-FIELD LANG.141.4 STRING></td>
        <td rowspan="7" bgcolor="<X-FC-FIELD PREFS.5603 DEFAULT=LANG.49.5603.11 RGB>"><div style="width:1px;"></div></td>
</tr>
<tr>
        <td class="title" rowspan="3">&nbsp;</td>
        <td class="gt" align="right" nowrap="nowrap">&nbsp;<X-FC-FIELD LANG.138.1001.9 STRING></td>
        <td class="p" nowrap="nowrap"><!--#if expr="<X-FC-FIELD SITEPREF.5523 DEFAULT=LANG.49.5523.9 LENGTH>"--><X-FC-FIELD SITEPREF.5523 DEFAULT=LANG.49.5523.9 STRING><!--#else--><X-FC-SERVER NAME><!--#endif--></td>
        <td class="title" rowspan="3">&nbsp;</td>
</tr>
<tr>
        <td valign="top"><img src="/Icons/801" alt="" title="<X-FC-FIELD LANG.138.0.25 STRING>" width="<X-FC-RESOURCE ICON.801 WIDTH>" height="<X-FC-RESOURCE ICON.801 HEIGHT>" border="0"/></td>
        <td><table cellpadding="2" cellspacing="0" border="0" summary="">
        <tr>
                <td align="right" class="gt" nowrap="nowrap"><label for="f1"><X-FC-FIELD LANG.138.1101.9 STRING></label></td>
                <td><input class="forms" id="f1" type="text" name="userid" size="40" maxlength="63" value="" tabindex="1"/></td>
        </tr>
        <tr>
                <td align="right" class="gt" nowrap="nowrap"><label for="f2"><X-FC-FIELD LANG.138.1102.9 STRING></label></td>
<!--#if expr="$USETICKETAUTH"-->
                <td><input class="forms" type="password" id="f2" name="ticket" size="40" value="" tabindex="2" onfocus="this.select();" onchange="sp=null;"/></td>
<!--#else-->
                <td><input class="forms" type="password" id="f2" name="password" size="40" maxlength="27" value="" tabindex="2" onfocus="this.select();" onchange="sp=null;"/></td>
<!--#endif-->
        </tr>
<!--#if expr="$ENABLEAUTHSAVING"-->
        <tr>
                <td colspan="2" align="center"><input class="button" type="button" value="<X-FC-FIELD LANG.CMD.5.0 STRING>" onclick="sc(this.form);" tabindex="3"/>&nbsp;&nbsp;<input class="button" type="button" value="<X-FC-FIELD LANG.CMD.21.0 STRING>" onclick="cc(this.form);" tabindex="4"/></td>
        </tr>
<!--#endif-->
<!--#if expr="<X-FC-SERVER AllowAutoReg> && $ALLOWWEBAUTOREG"-->
        <tr>
                <td class="gt">&nbsp;</td>
                <td nowrap="nowrap"><a class="gtu" href="/__MemForm?FormID=110"><X-FC-FIELD LANG.7546.8 STRING></a></td>
        </tr>
<!--#endif-->
        </table></td>
</tr>
<tr>
        <td colspan="2" style="height:1px;"></td>
</tr>
<tr>
        <td colspan="4" bgcolor="<X-FC-FIELD PREFS.5603 DEFAULT=LANG.49.5603.11 RGB>" style="height:1px;"></td>
</tr>
<tr>
        <td class="title" bgcolor="<X-FC-FIELD PREFS.5603 DEFAULT=LANG.49.5603.11 RGB>" align="right" colspan="4"><input class="button" type="submit" name="login" value=" <X-FC-FIELD LANG.138.1008.9 STRING> "/>&nbsp;<input class="button" type="button" onclick="self.location.replace('/');" value=" <X-FC-FIELD LANG.7530.11 STRING> "/></td>
</tr>
<tr>
        <td colspan="4" bgcolor="<X-FC-FIELD PREFS.5603 DEFAULT=LANG.49.5603.11 RGB>" style="height:1px;"></td>
</tr>
</table>
</form>
<!--#if expr="$SRVR_ERR_FCPCODE"-->
<script type="text/javascript"><X-FC-WHITESPACE RETAIN>
<!--
alert("<X-FC-FIELD LANG.ERR.`$SRVR_ERR_FCPCODE` ESCAPED> [<!--#echo var="SRVR_ERR_FCPCODE"-->]");
//-->
<X-FC-WHITESPACE STRIP></script>
<!--#endif-->
<X-FC-WHITESPACE RETAIN>
</body>
<!--*138 T=<X-FC-REQUEST-TIME>-->
</html>

Top of Page