var mins;
var secs;
var items = [];
var found = [];
var timer;

$(document).ready(function() {
    
    if ($("#startbutton").length > 0) {
        $("#startbutton").click(function() {
            window.clearTimeout(timer);
            start();
        });
    }
    else {
        start();    
    }
    
    
});

function start() {
    items     = $("#items").val().replace(/^\s*/,'').replace(/\s*$/,'').split(/\s*,\s*/);
    $("#iteminput").focus();
    
    mins = 1 * $("#timelimit").val();
    secs = 1;
    
    $("#named").text("none");
    
    if (found.length > 0) {
        found = [];
    }
    
    $("#iteminput").keyup(function() {
        var v = $("#iteminput").val();
        if (v.length && !v.match(/^\s+$/)) {
            var f = false;
            for (i = 0; i < items.length; i++) {
                var item = items[i];
                var subitems = item.replace(/^\s*/,'').replace(/\s*$/,'').split(/\s*\|\s*/);
                for (j = 0; j < subitems.length; j++) {
                    if (v.toLowerCase() == subitems[j].toLowerCase()) { f = true; break; }
                }
                if (f) {
                    item = item.replace(/\s*\|.*/,'');
                    found.push(item);
                    found.sort();
                    items.splice(i,1);
                    $("#iteminput").val("");                    
                    $("#named").text(found.join(", "));
                    $("#remaining").text(items.length+" remaining");
                    break;
                }
            }
            if (items.length == 0) {
                window.alert("You've got them all!");
                if ($("#onfinish").length > 0) {
                    $("#onfinish").html($("#onfinish").html().replace(/<!-- score !-->/,found.length));
                    $("#onfinish").show("slow");
                }
            }
        }
        else {
            if (v.match(/^\s+$/) == " ") $("#iteminput").val("");
        }
    });
    
    doTimer();    
}

function doTimer() {
    if (items.length == 0) return;
    secs--;
    if (secs == -1) {
        secs = 59;
        mins--;
    }
    $("#clock").text(getTime());
    if (mins == 0 && secs == 0) {
        window.alert("Time's up! Let's see how you did.");
        for (i = 0; i < items.length; i++) items[i] = items[i].replace(/\s*\|.*/,'');
        $("#missed").text("You forgot: "+items.join(", "));
        if ($("#onfinish").length > 0) {
            $("#onfinish").html($("#onfinish").html().replace(/<!-- score !-->/,found.length));
            $("#onfinish").show("slow");
        }
        
    }
    else {
        timer = window.setTimeout(doTimer,1000);
    }
}

function getTime() {
    var t = "";
    if (mins < 10) t += "0";
    t += mins+":";
    if (secs < 10) t += "0";
    t += secs;
    return t;    
}