extern function init() {
    var s = WMLBrowser.getVar("s");
    var k = WMLBrowser.getVar("k");
    var f, p, m, i, l;

    if (k == "@")
        k = String.elements(s,";");
    else
        k = Lang.parseInt(k);

    if (k > 0) {
        k--;
        f = String.elementAt(s,k,";");
        l = String.length(f);
        for (i = 0; i < l; i++)
            p = p+".";
        WMLBrowser.setVar("h", "FIND HANGWORD"); 
        WMLBrowser.setVar("f", f); 
        WMLBrowser.setVar("p", p);
        WMLBrowser.setVar("t", "");
        WMLBrowser.setVar("k", k);
        WMLBrowser.setVar("n", 6);
        WMLBrowser.refresh();
    } else {
        WMLBrowser.go("#new");
    }
}

extern function select() {
    var f = WMLBrowser.getVar("f");
    var p = WMLBrowser.getVar("p");
    var t = WMLBrowser.getVar("t");
    var c = WMLBrowser.getVar("c");
    var n = Lang.parseInt(WMLBrowser.getVar("n"));
    var l = String.length(f);
    var i;

    if (String.find("ABCDEFGHIJKLMNOPQRSTUVWXYZ",c) < 0) 
        WMLBrowser.setVar("h", "'"+c+"': Illegal char"); 
    else if (String.find(p,c) >= 0 || String.find(t,c) >= 0 || t == c) // WMLScript Bug workaround: "t == c"
        WMLBrowser.setVar("h", "'"+c+"': Already tried"); 
    else if (String.find(f,c) >= 0) {
        WMLBrowser.setVar("h", "'"+c+"': Hit!"); 
        for (i = 0; i < l; i++)
            if (String.charAt(f,i) == c)
                p = String.subString(p,0,i)+c+String.subString(p,i+1,l-i);
    } else {
        n--;
        WMLBrowser.setVar("h", "'"+c+"': Miss"); 
        t = t+c;
    }

    WMLBrowser.setVar("f", f); 
    WMLBrowser.setVar("p", p); 
    WMLBrowser.setVar("t", t);
    WMLBrowser.setVar("n", n); 
    WMLBrowser.setVar("c", "");
    if (n < 0)
        WMLBrowser.go("#hanged"); 
    else if (String.find(p,".") < 0)
        WMLBrowser.go("#madeit"); 
    else
        WMLBrowser.refresh();
}