//---------------------------------------------------------------------------------
// Calculate google ch
//---------------------------------------------------------------------------------

function _ggc(u) {
    return "6" + _gnc(_gc(_ord(u)));
}

function _gc(u){
    var init = 0xE6359A60;

    var length = u.length;

    var a = 0x9E3779B9;
    var b = 0x9E3779B9;
    var c = 0xE6359A60;
    var k = 0;
    var len = length;
    var m = new Array();

    while( len >= 12 ) {
        a += (u[k] +(u[k+1]<<8) +(u[k+2]<<16) +(u[k+3]<<24));
        b += (u[k+4] +(u[k+5]<<8) +(u[k+6]<<16) +(u[k+7]<<24));
        c += (u[k+8] +(u[k+9]<<8) +(u[k+10]<<16)+(u[k+11]<<24));
        m = _mx(a, b, c);
        a = m[0]; b = m[1]; c = m[2];
        k += 12;
        len -= 12;
    }

    c += length;

    switch(len) {
        case 11:
            c += u[k+10] << 24;
        case 10:
            c += u[k+9] << 16;
        case 9:
            c += u[k+8] << 8;
        case 8:
            b += u[k+7] << 24;
        case 7:
            b += u[k+6] << 16;
        case 6:
            b += u[k+5] << 8;
        case 5:
            b += u[k+4];
        case 4:
            a += u[k+3] << 24;
        case 3:
            a += u[k+2] << 16;
        case 2:
            a += u[k+1] << 8;
        case 1:
            a += u[k];
    }

    m = _mx(a, b, c);

    return (m[2] < 0) ? (0x100000000 + m[2]) : m[2];
}

function _ord(s) {
    var result = new Array();
    for(var i = 0; i < s.length; i++) {
        result[i] = s.charAt(i).charCodeAt(0);
    }
    return result;
}


function _c3228b(a32) {
    var a8 = new Array();
    for(var i = 0; i < a32.length; i++) {
        for (var bo = i*4; bo <= i*4 + 3; bo++) {
            a8[bo] = a32[i] & 255;
            a32[i] = _f0(a32[i], 8);
        }
    }
    return a8;
}

function _md(x, y) {
    var i = Math.floor(x/y);
    return (x - i*y);
}

function _gnc(ch) {
    ch = ( ( ( ch / 7 ) << 2 ) | ( ( _md( ch, 13 ) ) & 7 ) );

    var pb = new Array();
    pb[0] = ch;
    for (var i = 1; i < 20; i++ ) {
        pb[i] = pb[i-1] - 9;
    }
    ch = _gc(_c3228b(pb), 80 );
    return ch;
}

function _mx(a,b,c) {
    a -= b; 
    a -= c;
    d = _f0(c, 13);
    a ^= d;
    b -= c; b -= a; b ^= (a << 8);
    c -= a; c -= b; c ^= (_f0(b, 13));
    a -= b; a -= c; a ^= (_f0(c, 12));
    b -= c; b -= a; b ^= (a << 16);
    c -= a; c -= b; c ^= (_f0(b, 5));
    a -= b; a -= c; a ^= (_f0(c, 3));
    b -= c; b -= a; b ^= (a << 10);
    c -= a; c -= b; c ^= (_f0(b, 15));
    return new Array((a), (b), (c));
}

function _f0(a, b) {
    var z = _hd(80000000);
    if (z & a) {
        a = a>>1;
        a &= ~z;
        a |= 0x40000000;
        a = a>>(b-1);
    } else {
        a = a >> b;
    }
    return (a);
}

function _hd(str) {
    return parseInt(str, 16);
}

//---------------------------------------------------------------------------------


function __doPost(f){
    if(f){
        var url = "info:" + f.userUrl.value;
        f.ch.value= _ggc( url );
		f.submit();
    }
}