function moveOptions(sourceSelect, targetSelect)
{
    with(sourceSelect)
    {
        for(var i=0; i<length; i++)
        {
            if (options[i].selected)
            {
                options[i].selected = false;
                targetSelect.length ++;
                targetSelect.options[targetSelect.length-1].text = options[i].text;
                targetSelect.options[targetSelect.length-1].value = options[i].value;
                for (var j=i; j<length-1; j++)
                {
                    options[j].text = options[j+1].text;
                    options[j].value = options[j+1].value;
                    options[j].selected = options[j+1].selected;
                }
                length--;
                i--;
            }
        }
    }
}

function copyOptions(sourceSelect, targetSelect, prefix)
{
    with(sourceSelect)
    {
        for(var i=0; i<length; i++)
        {
            if (options[i].selected)
            {
                options[i].selected = false;
                targetSelect.length ++;
                targetSelect.options[targetSelect.length-1].text = prefix + options[i].text;
                targetSelect.options[targetSelect.length-1].value = prefix + options[i].value;
            }
        }
    }
}

function deleteOptions(sourceSelect)
{
    with (sourceSelect)
    {
        for(var i=0; i<length; i++)
        {
            if (options[i].selected)
            {
                options[i].selected = false;
                for (var j=i; j<length-1; j++)
                {
                    options[j].text = options[j+1].text;
                    options[j].value = options[j+1].value;
                    options[j].selected = options[j+1].selected;
                }
                length--;
                i--;
            }
        }
    }
}

function deleteOption(sourceSelect)
{
    with (sourceSelect)
    {
        if (selectedIndex>=0)
        {    for (var j=selectedIndex; j<length-1; j++)
             {
                options[j].text = options[j+1].text;
                options[j].value = options[j+1].value;
             }
            length--;
        }
    }
}

function shiftOption(sourceSelect, d)
{
    with (sourceSelect)
    {
        if ( selectedIndex>=0 && (selectedIndex + d) >= 0 && (selectedIndex + d) < length)
        {
            var ot = options[selectedIndex].text;
            var ov = options[selectedIndex].value;
            options[selectedIndex].text = options[selectedIndex+d].text;
            options[selectedIndex].value = options[selectedIndex+d].value;
            options[selectedIndex+d].text = ot;
            options[selectedIndex+d].value = ov;
            selectedIndex+=d;
        }
    }
}

function getSelectedValues(sourceSelect, hiddenField)
{
    var valuesList = "";
    with(sourceSelect)
    {
        for(var i=0; i<length; i++)
        {
            if (options[i].selected)
            {
                valuesList += options[i].value + ",";
            }
        }
    }
    hiddenField.value = valuesList.substring(0, valuesList.length-1);
}

function getAllValues(sourceSelect, hiddenField)
{
    var valuesList = "";
    with(sourceSelect)
    {
        for(var i=0; i<length; i++)
        {
            valuesList += options[i].value + ",";
        }
    }
    hiddenField.value = valuesList.substring(0, valuesList.length-1);
}
