This repository has been archived on 2024-11-28. You can view files and clone it, but cannot push or open issues or pull requests.
Incam_SGD/resources/js/reorder.js

53 lines
1.5 KiB
JavaScript

function getSibling(elm, which) {
var ret = elm[which + 'Sibling'];
while(!isUndefinedOrNull(ret) && ret.nodeName == '#text') ret = ret[which + 'Sibling'];
if(isUndefinedOrNull(ret)) return false;
return ret;
}
function swapItems(first, second) {
// ALWAYS in order
toggleElementClass('odd', first, second);
toggleElementClass('even', first, second);
first.parentNode.insertBefore(first, second);
var pos = first.reorderField.value;
first.reorderField.value = second.reorderField.value;
second.reorderField.value = pos;
}
function moveUp() {
var otherItem = getSibling(this, 'previous');
if(otherItem) {
swapItems(this, otherItem);
}
return false;
}
function moveDown() {
var otherItem = getSibling(this, 'next');
if(otherItem) {
swapItems(otherItem, this);
}
return false;
}
function hookReorderDisplay() {
var container = $('reorder-container');
if(isUndefinedOrNull(container)) return;
forEach(getElementsByTagAndClassName('*', 'reorder-item', container), function(item) {
var up = getElementsByTagAndClassName('*', 'reorder-up', item)[0],
down = getElementsByTagAndClassName('*', 'reorder-down', item)[0];
up.onclick = bind(moveUp, item);
down.onclick = bind(moveDown, item);
item.reorderField = getElementsByTagAndClassName('input', 'reorder-field', item)[0];
});
}
addLoadEvent(hookReorderDisplay);