/*
 * Copyright (c) 2006 Talentum Oyj.
 * All rights reserved.
 */
var selections = new Object();

function setupMultiSelect(selectItemIds) {
    for (id in selectItemIds) {
        var selectItemId = selectItemIds[id];
        selections[selectItemId] = new Object();

        var selectItem = document.getElementById(selectItemId);
        for (var i = 0; i < selectItem.length; i++) {
            selections[selectItemId][i] = selectItem[i].selected;
        }

        if(navigator.appName == "Microsoft Internet Explorer") {
            selectItem.onchange=handleChange;
        } else {
            selectItem.onclick=handleClick;
        }
    }
}

// For IE
function handleChange(e) {
    e = getEvent(e);
    var selectItem = getEventTargetElement(e);
    var index = selectItem.selectedIndex;

    if (typeof(e.ctrlKey) != 'undefined' && e.ctrlKey) {
        for (var i = 0; i < selectItem.length; i++) {
            if (selectItem[i].selected) {
              selections[selectItem.id][i] = selectItem[i].selected;
            }
        }
    } else {
        selections[selectItem.id][index] = !selections[selectItem.id][index];
        redrawSelectItem(selectItem);
    }
}

// For FF & Opera
function handleClick(e) {
    e = getEvent(e);
    var selectItem = getEventTargetElement(e).parentNode;
    var index = selectItem.selectedIndex;

    // TODO: ctrl tunnistus ei toimi Operassa
    if (typeof(e.ctrlKey) != 'undefined' && e.ctrlKey) {
        for (var i = 0; i < selectItem.length; i++) {
            if (selectItem[i].selected) {
              selections[selectItem.id][i] = selectItem[i].selected;
            }
        }
    } else {
        selections[selectItem.id][index] = !selections[selectItem.id][index];
        redrawSelectItem(selectItem);
    }
}

function redrawSelectItem(selectItem) {
    for (var i = 0; i < selectItem.length; i++) {
        selectItem[i].selected = selections[selectItem.id][i];
    }
}

function getEventTargetElement(e) {
    return (e.target) ? e.target : e.srcElement;
}

function getEvent(e) {
    return (typeof e == 'undefined') ? window.event : e;
}
