Hola de nuevo:
Me he dado cuenta que si no se mantiene seleccionada la option (u options) se pierde el rastro de lo que hemos movido o no. Puedes cambia la función
cambiarDePosicionOption() por lo siguiente para que se vea mejor:
Código PHP:
function cambiarPosicionOption(optionA, optionB) {
var indiceDeB = optionB.index;
elSel.options[ optionA.index ] = new Option(optionB.text, optionB.value);
elSel.options[ indiceDeB ] = new Option(optionA.text, optionA.value);
elSel.options[ indiceDeB ].selected = true;
}
Un saludo.