// SMCrunch2 Version 2.0.1, Copyright (C) Smart Media Ltd 2001-2005. All Rights Reserved.
//
// !!! Note: JScript by default
//
//// Copyright (C) Smart Media 2000, All Rights Reserved.


function MD5str(inputString){
var inputLength = inputString.length;
var index512 = ((inputLength + 8) >>> 6) +1;
var index32 = index512 << 4;
var M = new Array(index32);
var i=0,j=4;
if(inputLength!=0){
for(i=0; 4*i < inputLength; i++){
M[i]=0;
for(j=0; (j < 4) && ((4*i + j) < inputLength); j++){
M[i] += char2int(inputString.charAt(4*i+j)) << (8*j);
}
M[i] = mod32bit(M[i]);
}
}
if(j==4){
M[i] = 0x80;
}
else {
i--;
M[i] += 0x80 << (8*j);
}
M[i] = mod32bit(M[i]);
j=i+1;
for(;j < index32;j++){
M[j]=0;
}
M[index32-1] = inputLength >>> 29;
M[index32-2] = mod32bit(8*inputLength);
var A = 0x67452301;
var B = 0xefcdab89;
var C = 0x98badcfe;
var D = 0x10325476;
for(i=0; i < index32; i += 16 )
{
var a=A;
var b=B;
var c=C;
var d=D;
a = FF ( a, b, c, d, M[i+ 0],  7, 0xd76aa478);
d = FF ( d, a, b, c, M[i+ 1], 12, 0xe8c7b756);
c = FF ( c, d, a, b, M[i+ 2], 17, 0x242070db);
b = FF ( b, c, d, a, M[i+ 3], 22, 0xc1bdceee);
a = FF ( a, b, c, d, M[i+ 4],  7, 0xf57c0faf);
d = FF ( d, a, b, c, M[i+ 5], 12, 0x4787c62a);
c = FF ( c, d, a, b, M[i+ 6], 17, 0xa8304613);
b = FF ( b, c, d, a, M[i+ 7], 22, 0xfd469501);
a = FF ( a, b, c, d, M[i+ 8],  7, 0x698098d8);
d = FF ( d, a, b, c, M[i+ 9], 12, 0x8b44f7af);
c = FF ( c, d, a, b, M[i+10], 17, 0xffff5bb1);
b = FF ( b, c, d, a, M[i+11], 22, 0x895cd7be);
a = FF ( a, b, c, d, M[i+12],  7, 0x6b901122);
d = FF ( d, a, b, c, M[i+13], 12, 0xfd987193);
c = FF ( c, d, a, b, M[i+14], 17, 0xa679438e);
b = FF ( b, c, d, a, M[i+15], 22, 0x49b40821);
a = GG ( a, b, c, d, M[i+ 1],  5, 0xf61e2562);
d = GG ( d, a, b, c, M[i+ 6],  9, 0xc040b340);
c = GG ( c, d, a, b, M[i+11], 14, 0x265e5a51);
b = GG ( b, c, d, a, M[i+ 0], 20, 0xe9b6c7aa);
a = GG ( a, b, c, d, M[i+ 5],  5, 0xd62f105d);
d = GG ( d, a, b, c, M[i+10],  9,  0x2441453);
c = GG ( c, d, a, b, M[i+15], 14, 0xd8a1e681);
b = GG ( b, c, d, a, M[i+ 4], 20, 0xe7d3fbc8);
a = GG ( a, b, c, d, M[i+ 9],  5, 0x21e1cde6);
d = GG ( d, a, b, c, M[i+14],  9, 0xc33707d6);
c = GG ( c, d, a, b, M[i+ 3], 14, 0xf4d50d87);
b = GG ( b, c, d, a, M[i+ 8], 20, 0x455a14ed);
a = GG ( a, b, c, d, M[i+13],  5, 0xa9e3e905);
d = GG ( d, a, b, c, M[i+ 2],  9, 0xfcefa3f8);
c = GG ( c, d, a, b, M[i+ 7], 14, 0x676f02d9);
b = GG ( b, c, d, a, M[i+12], 20, 0x8d2a4c8a);
a = HH ( a, b, c, d, M[i+ 5],  4, 0xfffa3942);
d = HH ( d, a, b, c, M[i+ 8], 11, 0x8771f681);
c = HH ( c, d, a, b, M[i+11], 16, 0x6d9d6122);
b = HH ( b, c, d, a, M[i+14], 23, 0xfde5380c);
a = HH ( a, b, c, d, M[i+ 1],  4, 0xa4beea44);
d = HH ( d, a, b, c, M[i+ 4], 11, 0x4bdecfa9);
c = HH ( c, d, a, b, M[i+ 7], 16, 0xf6bb4b60);
b = HH ( b, c, d, a, M[i+10], 23, 0xbebfbc70);
a = HH ( a, b, c, d, M[i+13],  4, 0x289b7ec6);
d = HH ( d, a, b, c, M[i+ 0], 11, 0xeaa127fa);
c = HH ( c, d, a, b, M[i+ 3], 16, 0xd4ef3085);
b = HH ( b, c, d, a, M[i+ 6], 23,  0x4881d05);
a = HH ( a, b, c, d, M[i+ 9],  4, 0xd9d4d039);
d = HH ( d, a, b, c, M[i+12], 11, 0xe6db99e5);
c = HH ( c, d, a, b, M[i+15], 16, 0x1fa27cf8);
b = HH ( b, c, d, a, M[i+ 2], 23, 0xc4ac5665);
a = II ( a, b, c, d, M[i+ 0],  6, 0xf4292244);
d = II ( d, a, b, c, M[i+ 7], 10, 0x432aff97);
c = II ( c, d, a, b, M[i+14], 15, 0xab9423a7);
b = II ( b, c, d, a, M[i+ 5], 21, 0xfc93a039);
a = II ( a, b, c, d, M[i+12],  6, 0x655b59c3);
d = II ( d, a, b, c, M[i+ 3], 10, 0x8f0ccc92);
c = II ( c, d, a, b, M[i+10], 15, 0xffeff47d);
b = II ( b, c, d, a, M[i+ 1], 21, 0x85845dd1);
a = II ( a, b, c, d, M[i+ 8],  6, 0x6fa87e4f);
d = II ( d, a, b, c, M[i+15], 10, 0xfe2ce6e0);
c = II ( c, d, a, b, M[i+ 6], 15, 0xa3014314);
b = II ( b, c, d, a, M[i+13], 21, 0x4e0811a1);
a = II ( a, b, c, d, M[i+ 4],  6, 0xf7537e82);
d = II ( d, a, b, c, M[i+11], 10, 0xbd3af235);
c = II ( c, d, a, b, M[i+ 2], 15, 0x2ad7d2bb);
b = II ( b, c, d, a, M[i+ 9], 21, 0xeb86d391);
A = mod32bit(A+a);
B = mod32bit(B+b);
C = mod32bit(C+c);
D = mod32bit(D+d);
}
return int2HexStr(reverse(A)) + int2HexStr(reverse(B)) + int2HexStr(reverse(C)) + int2HexStr(reverse(D));
}
function FF ( a, b, c, d, x,  s, t){
var r;
r = mod32bit(a + F(b, c, d) + x + t);
r = (r % Math.pow(2,(32-s)))*Math.pow(2,s) + ( r>>>(32-s) );
r = mod32bit(r);
r = mod32bit(r + b);
return r;
}
function GG ( a, b, c, d, x,  s, t){
var r;
r = mod32bit(a + G(b, c, d) + x + t);
r = (r % Math.pow(2,(32-s)))*Math.pow(2,s) + ( r>>>(32-s) );
r = mod32bit(r);
r = mod32bit(r + b);
return r;
}function HH ( a, b, c, d, x,  s, t){
var r;
r = mod32bit(a + H(b, c, d) + x + t);
r = (r % Math.pow(2,(32-s)))*Math.pow(2,s) + ( r>>>(32-s) );
r = mod32bit(r);
r = mod32bit(r + b);
return r;
}function II ( a, b, c, d, x,  s, t){
var r;
r = mod32bit(a + I(b, c, d) + x + t);
r = (r % Math.pow(2,(32-s)))*Math.pow(2,s) + ( r>>>(32-s) );
r = mod32bit(r);
r = mod32bit(r + b);
return r;
}
function F(x,y,z){
return u32int( (x & y) | ((~x) & z) );
}
function G(x,y,z){
return u32int( (x & z) | (y & (~z)) );
}
function H(x,y,z){
return u32int( x ^ y ^ z );
}
function I(x,y,z){
return u32int( y ^ (x | (~z)) );
}
function mod32bit(x){
return x % 4294967296;
}
function u32int(x){
if(x&0x80000000){
return (x^0x80000000)+0x40000000+0x40000000;
}
else {
return x;
}
}
function reverse(x){
var y;
y  =   (    x     & 0xff) <<24;
y |=   ( (x>>> 8) & 0xff) <<16;
y |=   ( (x>>>16) & 0xff) <<8;
y |=   ( (x>>>24) & 0xff);
return u32int(y);
}
function char2int(c){
var strAscii = " !\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ";
var strAscii = strAscii + "[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~";
return strAscii.indexOf(c) + 32;
}
function int2HexStr(x){
var sHex = "0123456789abcdef";
var h1="";
var h="";
var i=x;
var j;
if(i>15)for(;i>15;){
j=i%16;
h1 += sHex.charAt(j);
i = i/16;
}
h1 += sHex.charAt(i);
i=h1.length;
if(i>8)i=8;
if(i<8)for(j=0; j < 8-i; j++){
h += "0";
}
if(i!=0)for(j=0;j < i; j++){
h += h1.charAt(i-j-1);
}
return h;
}
