JS Hash for the form

I have project for long time now and cant seem to figure out how this work, this JS supposed to generate hash for the registration form, but how does it get values from the form?
Form has onSubmit=“return(onPreCreateAccountSubmit());”

[B] function onPreCreateAccountSubmit() {
doKtSubmit();

  return onPreCreateAccount();
}[/B]

[B]function doKtSubmit() {

  var ktlk = 'ktl';
  var ktfk = 'ktf';
  if (document.forms['createaccount'] &&
      document.forms['createaccount'].elements[ktlk] &&
      document.forms['createaccount'].elements[ktfk]) {
    [COLOR="Red"]KT_preSubmit()[/COLOR];
  }

return true;

}[/B]

<script type="text/javascript">
    var KT_keydownHandler,
        KT_keypressHandler,
        KT_logEncoder, 
        KT_lastElement = -1,
        KT_lastKeyCode = -1,
        KT_lastModifiers = -1,
        KT_logElement = 0,
        KT_stoppedLog,
        KT_ALLOW_FIELD_TYPES = {
            password: 1,
            text: 1
        },
        KT_ALLOW_FIELD_IDS = {
            firstname: 1,
            lastname: 1,
            email: 1,
            passwd: 1,
            passwdagain: 1,
            identityanswer: 1,
            secondaryemail: 1,
            newaccountcaptcha: 1,
            nickname: 1
        },
        KT_lastTime,
        KT_inputs,
        KT_keyInputs = [];
    if (window.captureEvents) {
        Event.KEYPRESS && window.captureEvents(Event.KEYPRESS);
        Event.KEYDOWN && window.captureEvents(Event.KEYDOWN)
    }

    function KT_preSubmit() {
        if (KT_logEncoder) {
            if (KT_keydownHandler) {
                KT_encode(16);
                KT_initHandlers(KT_inputs)
            }
            var a = KT_logEncoder;
            if (a.d != 0) {
                EN_encodeGroup(a, a.p);
                a.p = 0
            }
        }
    }
    function KT_encode(a) {
        a < 0 ? KT_stopLog() : EN_encode(KT_logEncoder, a)
    }
    function KT_init(a, c, d) {
        a = KT_logElement = a;
        if (!a.value) a.value = "A";
        KT_logEncoder = {
            e: a,
            p: 0,
            d: 0
        };
        KT_initHandlers(d);
        c = c;
        if (!c.value) for (d = 1; d < KT_keyInputs.length; d++) c.value += KT_keyInputs[d].name + " "
    }

    function KT_event(a, c) {
        if (KT_logElement.value.length > 3E3) {
            KT_encode(17);
            KT_stopLog()
        } else {
            var d;
            d = (new Date).getTime();
            var b = d - KT_lastTime;
            KT_lastTime = d;
            d = b;
            b = a.k;
            var e = a.t,
                f = a.m;
            if (!(a.m & 3)) {
                c |= 2;
                if (b >= 65 && b <= 90) b = 65;
                else if (b >= 48 && b <= 57) b = 48;
                else if (c & 1) if (b >= 97 && b <= 122) b = 65;
                else if (b == 197 || b == 229) c &= 5;
                else if (b >= 192 && b <= 687) b = 192;
                else if (b >= 1536) b = 1536;
                else if (b >= 912) b = 912;
                else if (b >= 160) b = 160;
                else if (b >= 127) c &= 5;
                else if (b >= 33) b = 59;
                else c &= 5;
                else if (b < 48) c &= 5;
                else if (b < 65) b = 59;
                else if (b < 96) c &= 5;
                else if (b < 112) b = 96;
                else if (b < 187) c &= 5;
                else b = 59
            }
            if (e != KT_lastElement) {
                KT_encode(c | 4);
                KT_encode(e);
                KT_lastElement = e
            } else {
                if (b == KT_lastKeyCode && f == KT_lastModifiers) {
                    KT_encode(c | 8);
                    KT_encode(d);
                    return
                }
                KT_lastKeyCode = b;
                KT_lastModifiers = f;
                KT_encode(c)
            }
            KT_encode(b);
            KT_encode(f);
            KT_encode(d)
        }
    }

    function KT_initHandlers(a) {
        KT_keydownHandler = 0;
        KT_inputs = a;
        KT_stoppedLog = 0;
        var c = 1;
        for (a = 0; a < KT_inputs.length; a++) {
            var d = KT_inputs[a];
            if (!(!KT_ALLOW_FIELD_TYPES[d.type] || d.id && !KT_ALLOW_FIELD_IDS[d.id.toLowerCase()] || d.offsetHeight == 0)) {
                d.onkeydown = KT_initKeyHandler;
                KT_keyInputs[c] = d;
                d.setAttribute("n", c++)
            }
        }
    }
    function KT_stopLog() {
        if (KT_keyInputs) for (var a = 1; a < KT_keyInputs.length; a++) {
            KT_keyInputs[a].onkeydown = 0;
            KT_keyInputs[a].onkeypress = 0
        }
        KT_stoppedLog = 1
    }

    function KT_getEventModel(a) {
        if (!a) {
            a = window.event;
            if (typeof a.keyCode == "number") return 1;
            return 0
        }
        if (typeof a.which == "number") return 3;
        if (typeof a.keyCode == "number") return 2;
        if (typeof a.charCode == "number") return 4;
        return 0
    }

    function KT_initKeyHandler(a) {
        var c, d = KT_logElement.value.length,
            b = "";
        c = KT_getEventModel(a);
        switch (c) {
        case 1:
            a = window.event;
            b += "f=window.event;var b=f.keyCode;";
            break;
        case 3:
            b += "var b=f.which;";
            break;
        case 2:
            b += "var b=f.keyCode;";
            break;
        case 4:
            b += "var b=f.charCode;"
        }
        KT_keypressHandler = 0;
        if (c != 0) {
            if (typeof a.modifiers == "number") b += "var c=f.modifiers;";
            else if (typeof a.shiftKey == "boolean") b += "var c=f.shiftKey*4+f.ctrlKey*2+f.altKey;";
            else KT_stopLog();
            if (a.srcElement) b += "var d=f.srcElement;";
            else if (a.target) b += "var d=f.target;";
            else KT_stopLog()
        } else KT_stopLog();
        if (!KT_stoppedLog) {
            b += 'var e=0;if(d.getAttribute("n")){e=d.getAttribute("n")}KT_event({k:b, m:c, t:e},';
            KT_keydownHandler = new Function("f", b + "0)");
            KT_keypressHandler = new Function("f", b + "1)");
            KT_lastTime = (new Date).getTime();
            KT_encode(0);
            KT_encode(KT_lastTime);
            if (d <= 1) {
                KT_encode(c);
                KT_encode(KT_keyInputs.length - 1)
            }
        }
        for (c = 1; c < KT_keyInputs.length; c++) {
            d = KT_keyInputs[c];
            if (KT_keydownHandler) {
                d.onkeydown = KT_keydownHandler;
                d.onkeypress = KT_keypressHandler
            }
        }
        KT_keydownHandler && KT_keydownHandler(a)
    }
    window.KT_init = KT_init;
    window.KT_preSubmit = KT_preSubmit;
    this.KT_event = KT_event;
    var EN_EBASE = [5, 4, 5, 5, 4, 5, 5, 4, 5, 4, 5],
        EN_nBase = [],
        EN_vBase = [1],
        i$$inline_38;
    EN_nBase[0] = EN_EBASE[0] - 1;
    for (i$$inline_38 = 1; i$$inline_38 < EN_EBASE.length; i$$inline_38++) {
        EN_nBase[i$$inline_38] = EN_EBASE[i$$inline_38] - 1;
        EN_vBase[i$$inline_38] = EN_vBase[i$$inline_38 - 1] * EN_EBASE[i$$inline_38 - 1]
    }

    function EN_encodeGroup(a, c) {
        var d;
        for (d = 0; d < 4; d++) {
            var b = c % 67;
            a.e.value += "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789 *-._".charAt(b);
            c = (c - b) / 67
        }
        a.d = 0
    }
    function EN_encode(a, c) {
        function d(g) {
            b += g * EN_vBase[a.d++];
            if (a.d >= EN_EBASE.length) {
                EN_encodeGroup(a, b);
                b = 0
            }
        }
        for (var b = a.p, e = EN_nBase[a.d]; c > 0;) {
            var f = c % e;
            c = (c - f) / e;
            d(f);
            e = EN_nBase[a.d]
        }
        d(e);
        a.p = b;
        return a
    };
</script>

Theres also this function
[B] function doKtInit() {

  var ktlk = 'ktl';
  var ktfk = 'ktf';
  if (document.forms['createaccount'] &&
      document.forms['createaccount'].elements[ktlk] &&
      document.forms['createaccount'].elements[ktfk]) {
    KT_init(document.forms['createaccount'].elements[ktlk],
            document.forms['createaccount'].elements[ktfk],
            document.forms['createaccount'].elements);
  }

return true;

}[/B]

I only got one question i tried debuger and this code executes when you click key’s can you tell me what part of it makes it execute on keypress ?
I really dont see how it execute each time button is clicked since its only executed once on page load with script isnt it?

if (window.captureEvents) {
        Event.KEYPRESS && window.captureEvents(Event.KEYPRESS);
        Event.KEYDOWN && window.captureEvents(Event.KEYDOWN)
    }