var lists = [];

function toggle_selected_item(listnum, me, x, w, func)
{
    if (!lists[listnum]) lists[listnum] = new Array(0);
    var selected_items = lists[listnum];
    if (!me) me = document.getElementById('item'+listnum+'-'+x);
    var td = document.getElementById('checkbox'+listnum+'-'+x);
    if ( me.checked ) {
	/*
	var len = selected_items.length;
	if (len >= 10) {
	    me.checked = false;
	    alert('You can only select up to 10 items.');
	    return;
	}
	*/
	td.style.border = "solid blue 1px";
	td.style.background = "#ccccff";
	lists[listnum][selected_items.length] = [x, w];
    } else {
	td.style.border =  "solid white 1px";
	td.style.background = "white";
	for (var k in selected_items) {
	    if (selected_items[k][1] == w) {
		// alert('removed "' + w + '" at location ' + k);
	        selected_items.splice (k, 1);
		break;
	    }
	}
	lists[listnum] = selected_items;
    }
    if (func) func(me, w);
    function sort_keywords(a,b) { return a[0] - b[0] };
    selected_items.sort(sort_keywords);
    var label = document.getElementById('selected-keys-label-'+listnum);
    if (label) {
	var s = [];
	for (var k in selected_items) {
	    s[s.length] = selected_items[k][1];
	}
	var str = s.length? s.join(", ") : "(Nothing Selected)";
	label.innerHTML = '<div class="tiny" style="background: #ccccff; border: solid blue 1px; padding: 2px">' + str + "</div>";
    }
}

function clear_selected_items(listnum, func)
{
    if (!lists[listnum]) lists[listnum] = new Array(0);
    var selected_items = lists[listnum];
    if (selected_items.length == 0) {
        alert("No items selected in list " + listnum + ".");
	return;
    }
    // we have to copy the list because selected_items gets modified in loop
    var list = [];
    for (var k in selected_items) {
	list[list.length] = selected_items[k][0];
    }
    for (k in list) {
	var item = document.getElementById('item'+ listnum + '-' + list[k]);
	if (item.checked) {
	    item.checked = false;
	    toggle_selected_item(listnum, item, list[k], item.value, func);
	}
	else if (func) func(me, w);
    }
    lists[listnum] = [];
}

function items_selected(listnum)
{
    if (!lists[listnum]) lists[listnum] = new Array(0);
    var selected_items = lists[listnum];
    if (selected_items.length == 0) {
        alert("No items selected in list " + listnum + ".");
	return false;
    }
    return true;
}
