function hledej1(inp)
{
    byloX = false;      // promenne udavajici
    byloY = false;      // stav resene ulohy
    zac = 0;
    kon = 0;
    //for (i in inp) {  // MSIE ani Opera neumi foreach, jenom Konqueror a FF
    for (i = 0; i != inp.length; i++) {
        //ch = inp[i]   // tohle zase neumi MSIE, Opera i zbytek OK
        ch = inp.charAt(i);
        if (!byloX && !byloY && ch != "x" && ch != "y") { continue; }
        if (!byloX && !byloY && ch == "x") { byloX = true; zac = i; }
        if (!byloX && !byloY && ch == "y") { byloY = true; zac = i; }
        if ( byloX && !byloY && ch == "y") { byloY = true; }
        if ( byloX &&  byloY && ch != "y") { break;}
        kon++;
    }
    msg1 = "hledej1(\""+inp+"\") --> x*y+ ";
    msg3 = "\n";
    if (!byloY) { msg2 = "nenalezen"; }
    else        { msg2 = "nalezen (" + zac + ", " + kon + ")";}
    return msg1+msg2+msg3;
}

function hledej2(inp)
{
    states  = {
        S : 0,
        X : 1,
        Y : 2,
        F : 3
    }
    st = states.S;
    zac = kon = 0;

    //for (i in inp) {  // MSIE ani Opera neumi foreach, jenom Konqueror a FF
    for (i = 0; i != inp.length; i++) {
        //ch = inp[i]   // tohle zase neumi MSIE, Opera i zbytek OK
        ch = inp.charAt(i);
        switch (st) {
            case states.S:
                if (ch == "x") { st  = states.X; zac = i;}
                if (ch == "y") { st  = states.Y; zac = i;}
                break;
            case states.X:
                if (ch == "y")      { st  = states.Y; }
                else if (ch != "x") { st  = states.S; }
                break;
            case states.Y:
                if (ch != "y")      { kon = i - 1; st = states.F;}
                break;
                default:
                break;
        };
        kon++;
        if (st == states.F) { st = states.Y; break;}
    }

    msg1 = "hledej2(\""+inp+"\") --> x*y+ ";
    msg3 = "\n";
    if (st != states.Y)     { msg2 = "nenalezen";}
    else                    { msg2 = "nalezen (" + zac + ", " + kon + ")";}
    return msg1+msg2+msg3;
}

strings = ["x", "y", "xy","xxyy", "axyb", "ayxb"];

function testHledej(strings, hledej_f)
{
    document.write("\n");
    for (i in strings) {
        document.write((hledej1(strings[i])));
    }
}

function zobrazHledej(jmeno) {
    var inp = document.getElementById(jmeno+"_i");
    var out = document.getElementById(jmeno+"_o");
    var code = jmeno + '("'+inp.value+'")';
    out.innerHTML = eval(code);
}