function moveSelectedItems(from,to,keepselected) {
    for (var i = 0; i < from.options.length; i++) {
	if (from.options[i].selected) {
	    to.options[to.length] = new Option(from.options[i].text,from.options[i].value,false,keepselected);
	    from.options[i] = null;
	    i--;
	}
    }
}

function moveItem(sel, index, steps) {
    if (index < 0 || index + steps < 0 || index + steps > sel.length - 1) return;

	var tmp = new Option(sel.options[index + steps].text, sel.options[index + steps].value);
	sel.options[index + steps] = new Option(sel.options[index].text, sel.options[index].value);
	sel.options[index] = tmp;
	sel.options[index + steps].selected = true;
}

function selectAll(sel) {
    for (var i = 0; i < sel.length; i++) sel.options[i].selected = true;
}

function selectByValue(sel, val) {
	for (var i = 0; i < sel.length; i++) if (sel.options[i].value == val) sel.options[i].selected = true;
}

function selectClear(sel) {
	while (sel.options.length > 0) sel.options[0] = null;
}

function selectAddItem(sel, val, txt) {
	sel.options[sel.length] = new Option(txt, val, false, false);
}

function moveSelectedItem(sel, dir) {
	moveItem(sel, sel.selectedIndex, dir);
}