imos.multiselect = function() {}
imos.multiselect.moveItems = function (srcSelect, destSelect) {
    srcSelect     = imos.element(srcSelect);
    destSelect    = imos.element(destSelect);
    var add       = [];
    var remove    = [];

    // Alle markierten Elemente holen
    for (var i = 0; i < srcSelect.options.length; i++) {
        if (srcSelect.options[i].selected) {
            remove.push(i);
            add.push([srcSelect.options[i].text, srcSelect.options[i].value]);
        }
    }
    // Alle markierten Elemente aus der Liste l�schen
    for (var i = remove.length; i > 0; i--) {
        srcSelect.options[remove[(i - 1)]] = null;
    }

    var remove = [];

    // Die gesamte Liste auslesen, wo die neuen Elemente rein sollen
    for (var i = 0; i < destSelect.options.length; i++) {
        add.push([destSelect.options[i].text, destSelect.options[i].value]);
        remove.push(i);
    }

    // Und die gesamte Liste leeren
    for (var i = remove.length; i > 0; i--) {
        destSelect.options[remove[(i - 1)]] = null;
    }

    // Elemente neu sortieren
    add.sort();
    //add = add.reverse();

    // Und die neue Liste schreiben
    for (var i = 0; i < add.length; i++) {
        var item = new Option(add[i][0], add[i][1], false, false);
        destSelect.options[destSelect.options.length] = item;
    }
}
imos.multiselect.init = function() {
    var selects = document.getElementsBySelector('select.selectbeforesubmit');
    for (var i = 0; i < selects.length; i++) {
        var form = imos.element(selects[0]).parentNodeByTagName('form');
        form.addEvent('submit', this.onSubmit);
    }
}
imos.multiselect.onSubmit = function (event, target) {
    var selects = target.getElementsByTagName('select');
    for (var i = 0; i < selects.length; i++) {
        var select = imos.element(selects[i]);
        if (select.className.search(/selectbeforesubmit/) != -1) {
            select.selectAll();
        }
    }
    return false;
}
