--- select_list_move.js +++ select_list_move.js @@ -7,13 +7,16 @@ } function swapOptions(theSel, index1, index2) { - var text, value; + var text, value, selected; text = theSel.options[index1].text; value = theSel.options[index1].value; + selected = theSel.options[index1].selected; theSel.options[index1].text = theSel.options[index2].text; theSel.options[index1].value = theSel.options[index2].value; + theSel.options[index1].selected = theSel.options[index2].selected; theSel.options[index2].text = text; theSel.options[index2].value = value; + theSel.options[index2].selected = selected; } function deleteOption(theSel, theIndex) { @@ -44,40 +47,54 @@ } function moveOptionUp(theSel) { - var index = theSel.selectedIndex; - if (index > 0) { - swapOptions(theSel, index-1, index); - theSel.selectedIndex = index-1; + var indexTop = 0; + for(var s=0; s indexTop) { + swapOptions(theSel, s-1, s); + } + indexTop++; + } } } function moveOptionTop(theSel) { - var index = theSel.selectedIndex; - - if (index > 0) { - for (i=index; i>0; i--) { - swapOptions(theSel, i-1, i); + var indexTop = 0; + for(var s=0; s indexTop) { + for (var i=s; i>indexTop; i--) { + swapOptions(theSel, i-1, i); + } + } + indexTop++; } - theSel.selectedIndex = 0; } } function moveOptionDown(theSel) { - var index = theSel.selectedIndex; - if (index < theSel.length - 1) { - swapOptions(theSel, index, index+1); - theSel.selectedIndex = index+1; + var indexBottom = theSel.length - 1; + for(var s=indexBottom; s>=0; s--) { + if (theSel.options[s].selected) { + if (s < indexBottom) { + swapOptions(theSel, s+1, s); + } + indexBottom--; + } } } function moveOptionBottom(theSel) { - var index = theSel.selectedIndex; - var indexTop = theSel.length - 1; - if (index < theSel.length - 1) { - for (i=index; i=0; s--) { + if (theSel.options[s].selected) { + if (s < indexBottom) { + for (i=s; i