diff --git a/planetstack/core/xoslib/static/js/picker.js b/planetstack/core/xoslib/static/js/picker.js
new file mode 100644
index 0000000..0302cf4
--- /dev/null
+++ b/planetstack/core/xoslib/static/js/picker.js
@@ -0,0 +1,50 @@
+function init_picker(selector, ordered) {
+    //console.log("init_picker");
+    //console.log($(selector));
+
+    var addBtn = $(selector).find(".btn-picker-add");
+    var removeBtn = $(selector).find(".btn-picker-remove");
+    var upBtn = $(selector).find(".btn-picker-up");
+    var downBtn = $(selector).find(".btn-picker-down");
+    var from = $(selector).find(".select-picker-from");
+    var to = $(selector).find(".select-picker-to");
+
+    if (!ordered) {
+        upBtn.hide();
+        downBtn.hide();
+    }
+
+    addBtn.click(function(){
+        console.log("add");
+        from.find(":selected").each( function() {
+            to.append("<option value='"+$(this).val()+"'>"+$(this).text()+"</option>");
+            $(this).remove();
+        });
+    });
+    removeBtn.click(function(){
+        console.log("remove");
+        to.find(":selected").each( function() {
+            from.append("<option value='"+$(this).val()+"'>"+$(this).text()+"</option>");
+            $(this).remove();
+        });
+    });
+    upBtn.bind('click', function() {
+        to.find(":selected").each( function() {
+            var newPos = to.find('option').index(this) - 1;
+            if (newPos > -1) {
+                to.find("option").eq(newPos).before("<option value='"+$(this).val()+"' selected='selected'>"+$(this).text()+"</option>");
+                $(this).remove();
+            }
+        });
+    });
+    downBtn.bind('click', function() {
+        var countOptions = to.find("option").size();
+        to.find(":selected").each( function() {
+            var newPos = to.find("option").index(this) + 1;
+            if (newPos < countOptions) {
+                to.find("option").eq(newPos).after("<option value='"+$(this).val()+"' selected='selected'>"+$(this).text()+"</option>");
+                $(this).remove();
+            }
+        });
+    });
+};
