');
this.$el = $(html.join(''));
var _this = this;
this.$el.find('[name=add]').on('click', function() {
_this.addSelected();
});
this.$el.find('[name=remove]').on('click', function() {
_this.removeSelected();
});
this.$el.find('[name=up]').on('click', function() {
_this.moveUp();
});
this.$el.find('[name=down]').on('click', function() {
_this.moveDown();
});
this.left = this.$el.find('[name=left]')[0];
this.right = this.$el.find('[name=right]')[0];
for (var i = 0; i < leftOptions.length; i++) {
this.left.options[i] = leftOptions[i];
}
for (var i = 0; i < rightOptions.length; i++) {
this.right.options[i] = rightOptions[i];
}
};
morpheus.DualList.prototype = {
addSelected : function() {
var left = this.left;
var right = this.right;
for (var i = 0; i < left.options.length; i++) {
if (left.options[i].selected) {
var opt = left.options[i];
right.options[right.options.length] = new Option(opt.innerHTML,
opt.value);
left.options[i] = null;
i--;
}
}
},
addAll : function() {
var left = this.left;
var right = this.right;
for (var i = 0; i < left.options.length; i++) {
var opt = left.options[i];
right.options[right.options.length] = new Option(opt.innerHTML,
opt.value);
}
left.options.length = 0;
},
removeSelected : function() {
var left = this.left;
var right = this.right;
for (var i = 0; i < right.options.length; i++) {
if (right.options[i].selected) {
var opt = right.options[i];
left.options[left.options.length] = new Option(opt.innerHTML,
opt.value);
right.options[i] = null;
i--;
}
}
},
getOptions : function(isLeft) {
var sel = isLeft ? this.left : this.right;
var options = [];
for (var i = 0; i < sel.options.length; i++) {
options.push(sel.options[i].value);
}
return options;
},
removeAll : function() {
var left = this.left;
var right = this.right;
for (var i = 0; i < right.options.length; i++) {
var opt = right.options[i];
left.options[left.options.length] = new Option(opt.innerHTML,
opt.value);
}
right.options.length = 0;
},
moveUp : function() {
var right = this.right;
var selectedOptions = right.selectedOptions;
var indices = [];
for (var i = 0; i < selectedOptions.length; i++) {
indices.push(selectedOptions[i].index);
}
var index = morpheus.Util.indexSort(indices, false);
for (var i = 0; i < selectedOptions.length; i++) {
var sel = selectedOptions[index[i]].index;
var optHTML = right.options[sel].innerHTML;
var optVal = right.options[sel].value;
var opt1HTML = right.options[sel - 1].innerHTML;
var opt1Val = right.options[sel - 1].value;
right.options[sel] = new Option(opt1HTML, opt1Val);
right.options[sel - 1] = new Option(optHTML, optVal);
right.options.selectedIndex = sel - 1;
}
},
moveDown : function() {
var right = this.right;
var selectedOptions = right.selectedOptions;
var indices = [];
for (var i = 0; i < selectedOptions.length; i++) {
indices.push(selectedOptions[i].index);
}
var index = morpheus.Util.indexSort(indices, false);
for (var i = 0; i < selectedOptions.length; i++) {
var sel = selectedOptions[index[i]].index;
var optHTML = right.options[sel].innerHTML;
var optVal = right.options[sel].value;
var opt1HTML = right.options[sel + 1].innerHTML;
var opt1Val = right.options[sel + 1].value;
right.options[sel] = new Option(opt1HTML, opt1Val);
right.options[sel + 1] = new Option(optHTML, optVal);
right.options.selectedIndex = sel + 1;
}
}
};