Index: pro-bachkim-filespace/sourcecode/assets/css/space/style.css
===================================================================
--- pro-bachkim-filespace/sourcecode/assets/css/space/style.css	(revision 15)
+++ pro-bachkim-filespace/sourcecode/assets/css/space/style.css	(revision 16)
@@ -2,5 +2,4 @@
 @import "../bootstrap/bootstrap.min.css";
 @import "../jquery/jquery-ui-1.10.4.min.css";
-/* @import "../jquery/jquery.contextMenu.css"; */
 @import "../jquery/jquery.contextmenu_new.css";
 @import "../font-awesome.min.css";
@@ -118,5 +117,5 @@
    background: url("../../images/resize.png") no-repeat scroll center center #F5F5F5;
    border-left: 1px solid #E5E5E5;
-   border-right: 1px solid #E5E5E5;
+   border-right: 1px solid #E5E5E5;1111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111
    width: 5px;
 }
@@ -133,3 +132,2 @@
 	border-radius: 0 !important;
 }
-
Index: pro-bachkim-filespace/sourcecode/assets/css/space/vsgrid.css
===================================================================
--- pro-bachkim-filespace/sourcecode/assets/css/space/vsgrid.css	(revision 15)
+++ pro-bachkim-filespace/sourcecode/assets/css/space/vsgrid.css	(revision 16)
@@ -30,4 +30,14 @@
 	/*background: #BDF;*/
 	background: #5eaee5;
+}
+
+UL.vstree LI INPUT.rename {
+	width:120px;
+	height: 20px;
+	border: 1px #5eaee5 solid;
+	padding: 0px;
+	text-overflow: initial;
+	font-family: Verdana, sans-serif;
+	font-size: 12px;
 }
 
Index: pro-bachkim-filespace/sourcecode/assets/js/bootstrap/bootbox.min.js
===================================================================
--- pro-bachkim-filespace/sourcecode/assets/js/bootstrap/bootbox.min.js	(revision 16)
+++ pro-bachkim-filespace/sourcecode/assets/js/bootstrap/bootbox.min.js	(revision 16)
@@ -0,0 +1,6 @@
+/**
+ * bootbox.js v4.0.0
+ *
+ * http://bootboxjs.com/license.txt
+ */
+window.bootbox=window.bootbox||function a(b,c){"use strict";function d(a){var b=s[q.locale];return b?b[a]:s.en[a]}function e(a,c,d){a.preventDefault();var e=b.isFunction(d)&&d(a)===!1;e||c.modal("hide")}function f(a){var b,c=0;for(b in a)c++;return c}function g(a,c){var d=0;b.each(a,function(a,b){c(a,b,d++)})}function h(a){var c,d;if("object"!=typeof a)throw new Error("Please supply an object of options");if(!a.message)throw new Error("Please specify a message");return a=b.extend({},q,a),a.buttons||(a.buttons={}),a.backdrop=a.backdrop?"static":!1,c=a.buttons,d=f(c),g(c,function(a,e,f){if(b.isFunction(e)&&(e=c[a]={callback:e}),"object"!==b.type(e))throw new Error("button with key "+a+" must be an object");e.label||(e.label=a),e.className||(e.className=2>=d&&f===d-1?"btn-primary":"btn-default")}),a}function i(a,b){var c=a.length,d={};if(1>c||c>2)throw new Error("Invalid argument length");return 2===c||"string"==typeof a[0]?(d[b[0]]=a[0],d[b[1]]=a[1]):d=a[0],d}function j(a,c,d){return b.extend(!0,{},a,i(c,d))}function k(a,b,c){return n(j(m.apply(null,a),b,c),a)}function l(){for(var a={},b=0,c=arguments.length;c>b;b++){var e=arguments[b],f=e.toLowerCase(),g=e.toUpperCase();a[f]={label:d(g)}}return a}function m(){return{buttons:l.apply(null,arguments)}}function n(a,b){var d={};return g(b,function(a,b){d[b]=!0}),g(a.buttons,function(a){if(d[a]===c)throw new Error("button key "+a+" is not allowed (options are "+b.join("\n")+")")}),a}var o={dialog:"<div class='bootbox modal' tabindex='-1' role='dialog'><div class='modal-dialog'><div class='modal-content'><div class='modal-body'><div class='bootbox-body'></div></div></div></div></div>",header:"<div class='modal-header'><h4 class='modal-title'></h4></div>",footer:"<div class='modal-footer'></div>",closeButton:"<button type='button' class='bootbox-close-button close'>&times;</button>",form:"<form class='bootbox-form'></form>",inputs:{text:"<input class='bootbox-input form-control' autocomplete=off type=text />"}},p=b("body"),q={locale:"en",backdrop:!0,animate:!0,className:null,closeButton:!0,show:!0},r={};r.alert=function(){var a;if(a=k(["ok"],arguments,["message","callback"]),a.callback&&!b.isFunction(a.callback))throw new Error("alert requires callback property to be a function when provided");return a.buttons.ok.callback=a.onEscape=function(){return b.isFunction(a.callback)?a.callback():!0},r.dialog(a)},r.confirm=function(){var a;if(a=k(["cancel","confirm"],arguments,["message","callback"]),a.buttons.cancel.callback=a.onEscape=function(){return a.callback(!1)},a.buttons.confirm.callback=function(){return a.callback(!0)},!b.isFunction(a.callback))throw new Error("confirm requires a callback");return r.dialog(a)},r.prompt=function(){var a,d,e,f,g,h;if(f=b(o.form),d={buttons:l("cancel","confirm"),value:""},a=n(j(d,arguments,["title","callback"]),["cancel","confirm"]),h=a.show===c?!0:a.show,a.message=f,a.buttons.cancel.callback=a.onEscape=function(){return a.callback(null)},a.buttons.confirm.callback=function(){return a.callback(g.val())},a.show=!1,!a.title)throw new Error("prompt requires a title");if(!b.isFunction(a.callback))throw new Error("prompt requires a callback");return g=b(o.inputs.text),g.val(a.value),f.append(g),f.on("submit",function(a){a.preventDefault(),e.find(".btn-primary").click()}),e=r.dialog(a),e.off("shown.bs.modal"),e.on("shown.bs.modal",function(){g.focus()}),h===!0&&e.modal("show"),e},r.dialog=function(a){a=h(a);var c=b(o.dialog),d=c.find(".modal-body"),f=a.buttons,i="",j={onEscape:a.onEscape};if(g(f,function(a,b){i+="<button data-bb-handler='"+a+"' type='button' class='btn "+b.className+"'>"+b.label+"</button>",j[a]=b.callback}),d.find(".bootbox-body").html(a.message),a.animate===!0&&c.addClass("fade"),a.className&&c.addClass(a.className),a.title&&d.before(o.header),a.closeButton){var k=b(o.closeButton);a.title?c.find(".modal-header").prepend(k):k.css("margin-top","-10px").prependTo(d)}return a.title&&c.find(".modal-title").html(a.title),i.length&&(d.after(o.footer),c.find(".modal-footer").html(i)),c.on("hidden.bs.modal",function(a){a.target===this&&c.remove()}),c.on("shown.bs.modal",function(){c.find(".btn-primary:first").focus()}),c.on("escape.close.bb",function(a){j.onEscape&&e(a,c,j.onEscape)}),c.on("click",".modal-footer button",function(a){var d=b(this).data("bb-handler");e(a,c,j[d])}),c.on("click",".bootbox-close-button",function(a){e(a,c,j.onEscape)}),c.on("keyup",function(a){27===a.which&&c.trigger("escape.close.bb")}),p.append(c),c.modal({backdrop:a.backdrop,keyboard:!1,show:!1}),a.show&&c.modal("show"),c},r.setDefaults=function(a){b.extend(q,a)},r.hideAll=function(){b(".bootbox").modal("hide")};var s={br:{OK:"OK",CANCEL:"Cancelar",CONFIRM:"Sim"},da:{OK:"OK",CANCEL:"Annuller",CONFIRM:"Accepter"},de:{OK:"OK",CANCEL:"Abbrechen",CONFIRM:"Akzeptieren"},en:{OK:"OK",CANCEL:"Cancel",CONFIRM:"OK"},es:{OK:"OK",CANCEL:"Cancelar",CONFIRM:"Aceptar"},fi:{OK:"OK",CANCEL:"Peruuta",CONFIRM:"OK"},fr:{OK:"OK",CANCEL:"Annuler",CONFIRM:"D'accord"},it:{OK:"OK",CANCEL:"Annulla",CONFIRM:"Conferma"},nl:{OK:"OK",CANCEL:"Annuleren",CONFIRM:"Accepteren"},pl:{OK:"OK",CANCEL:"Anuluj",CONFIRM:"PotwierdÅº"},ru:{OK:"OK",CANCEL:"ÐÑÐŒÐµÐœÐ°",CONFIRM:"ÐÑÐžÐŒÐµÐœÐžÑÑ"},zh_CN:{OK:"OK",CANCEL:"åæ¶",CONFIRM:"ç¡®è®€"},zh_TW:{OK:"OK",CANCEL:"åæ¶",CONFIRM:"ç¢ºèª"}};return r.init=function(c){window.bootbox=a(c||b)},r}(window.jQuery);
Index: pro-bachkim-filespace/sourcecode/assets/js/jquery/jquery.modal.js
===================================================================
--- pro-bachkim-filespace/sourcecode/assets/js/jquery/jquery.modal.js	(revision 16)
+++ pro-bachkim-filespace/sourcecode/assets/js/jquery/jquery.modal.js	(revision 16)
@@ -0,0 +1,225 @@
+/*
+    A simple jQuery modal (http://github.com/kylefox/jquery-modal)
+    Version 0.5.5
+*/
+(function($) {
+
+  var current = null;
+
+  $.modal = function(el, options) {
+    $.modal.close(); // Close any open modals.
+    var remove, target;
+    this.$body = $('body');
+    this.options = $.extend({}, $.modal.defaults, options);
+    this.options.doFade = !isNaN(parseInt(this.options.fadeDuration, 10));
+    if (el.is('a')) {
+      target = el.attr('href');
+      //Select element by id from href
+      if (/^#/.test(target)) {
+        this.$elm = $(target);
+        if (this.$elm.length !== 1) return null;
+        this.open();
+      //AJAX
+      } else {
+        this.$elm = $('<div>');
+        this.$body.append(this.$elm);
+        remove = function(event, modal) { modal.elm.remove(); };
+        this.showSpinner();
+        el.trigger($.modal.AJAX_SEND);
+        $.get(target).done(function(html) {
+          if (!current) return;
+          el.trigger($.modal.AJAX_SUCCESS);
+          current.$elm.empty().append(html).on($.modal.CLOSE, remove);
+          current.hideSpinner();
+          current.open();
+          el.trigger($.modal.AJAX_COMPLETE);
+        }).fail(function() {
+          el.trigger($.modal.AJAX_FAIL);
+          current.hideSpinner();
+          el.trigger($.modal.AJAX_COMPLETE);
+        });
+      }
+    } else {
+      this.$elm = el;
+      this.open();
+    }
+  };
+
+  $.modal.prototype = {
+    constructor: $.modal,
+
+    open: function() {
+      var m = this;
+      if(this.options.doFade) {
+        this.block();
+        setTimeout(function() {
+          m.show();
+        }, this.options.fadeDuration * this.options.fadeDelay);
+      } else {
+        this.block();
+        this.show();
+      }
+      if (this.options.escapeClose) {
+        $(document).on('keydown.modal', function(event) {
+          if (event.which == 27) $.modal.close();
+        });
+      }
+      if (this.options.clickClose) this.blocker.click($.modal.close);
+    },
+
+    close: function() {
+      this.unblock();
+      this.hide();
+      $(document).off('keydown.modal');
+    },
+
+    block: function() {
+      var initialOpacity = this.options.doFade ? 0 : this.options.opacity;
+      this.$elm.trigger($.modal.BEFORE_BLOCK, [this._ctx()]);
+      this.blocker = $('<div class="jquery-modal blocker"></div>').css({
+        top: 0, right: 0, bottom: 0, left: 0,
+        width: "100%", height: "100%",
+        position: "fixed",
+        zIndex: this.options.zIndex,
+        background: this.options.overlay,
+        opacity: initialOpacity
+      });
+      this.$body.append(this.blocker);
+      if(this.options.doFade) {
+        this.blocker.animate({opacity: this.options.opacity}, this.options.fadeDuration);
+      }
+      this.$elm.trigger($.modal.BLOCK, [this._ctx()]);
+    },
+
+    unblock: function() {
+      if(this.options.doFade) {
+        this.blocker.fadeOut(this.options.fadeDuration, function() {
+          $(this).remove();
+        });
+      } else {
+        this.blocker.remove();
+      }
+    },
+
+    show: function() {
+      this.$elm.trigger($.modal.BEFORE_OPEN, [this._ctx()]);
+      if (this.options.showClose) {
+        this.closeButton = $('<a href="#close-modal" rel="modal:close" class="close-modal ' + this.options.closeClass + '">' + this.options.closeText + '</a>');
+        this.$elm.append(this.closeButton);
+      }
+      this.$elm.addClass(this.options.modalClass + ' current');
+      this.center();
+      if(this.options.doFade) {
+        this.$elm.fadeIn(this.options.fadeDuration);
+      } else {
+        this.$elm.show();
+      }
+      this.$elm.trigger($.modal.OPEN, [this._ctx()]);
+    },
+
+    hide: function() {
+      this.$elm.trigger($.modal.BEFORE_CLOSE, [this._ctx()]);
+      if (this.closeButton) this.closeButton.remove();
+      this.$elm.removeClass('current');
+
+      if(this.options.doFade) {
+        this.$elm.fadeOut(this.options.fadeDuration);
+      } else {
+        this.$elm.hide();
+      }
+      this.$elm.trigger($.modal.CLOSE, [this._ctx()]);
+    },
+
+    showSpinner: function() {
+      if (!this.options.showSpinner) return;
+      this.spinner = this.spinner || $('<div class="' + this.options.modalClass + '-spinner"></div>')
+        .append(this.options.spinnerHtml);
+      this.$body.append(this.spinner);
+      this.spinner.show();
+    },
+
+    hideSpinner: function() {
+      if (this.spinner) this.spinner.remove();
+    },
+
+    center: function() {
+      this.$elm.css({
+        position: 'fixed',
+        top: "50%",
+        left: "50%",
+        marginTop: - (this.$elm.outerHeight() / 2),
+        marginLeft: - (this.$elm.outerWidth() / 2),
+        zIndex: this.options.zIndex + 1
+      });
+    },
+
+    //Return context for custom events
+    _ctx: function() {
+      return { elm: this.$elm, blocker: this.blocker, options: this.options };
+    }
+  };
+
+  //resize is alias for center for now
+  $.modal.prototype.resize = $.modal.prototype.center;
+
+  $.modal.close = function(event) {
+    if (!current) return;
+    if (event) event.preventDefault();
+    current.close();
+    var that = current.$elm;
+    current = null;
+    return that;
+  };
+
+  $.modal.resize = function() {
+    if (!current) return;
+    current.resize();
+  };
+
+  // Returns if there currently is an active modal
+  $.modal.isActive = function () {
+    return current ? true : false;
+  }
+
+  $.modal.defaults = {
+    overlay: "#000",
+    opacity: 0.75,
+    zIndex: 1,
+    escapeClose: true,
+    clickClose: true,
+    closeText: 'Close',
+    closeClass: '',
+    modalClass: "modal",
+    spinnerHtml: null,
+    showSpinner: true,
+    showClose: true,
+    fadeDuration: null,   // Number of milliseconds the fade animation takes.
+    fadeDelay: 1.0        // Point during the overlay's fade-in that the modal begins to fade in (.5 = 50%, 1.5 = 150%, etc.)
+  };
+
+  // Event constants
+  $.modal.BEFORE_BLOCK = 'modal:before-block';
+  $.modal.BLOCK = 'modal:block';
+  $.modal.BEFORE_OPEN = 'modal:before-open';
+  $.modal.OPEN = 'modal:open';
+  $.modal.BEFORE_CLOSE = 'modal:before-close';
+  $.modal.CLOSE = 'modal:close';
+  $.modal.AJAX_SEND = 'modal:ajax:send';
+  $.modal.AJAX_SUCCESS = 'modal:ajax:success';
+  $.modal.AJAX_FAIL = 'modal:ajax:fail';
+  $.modal.AJAX_COMPLETE = 'modal:ajax:complete';
+
+  $.fn.modal = function(options){
+    if (this.length === 1) {
+      current = new $.modal(this, options);
+    }
+    return this;
+  };
+
+  // Automatically bind links with rel="modal:close" to, well, close the modal.
+  $(document).on('click.modal', 'a[rel="modal:close"]', $.modal.close);
+  $(document).on('click.modal', 'a[rel="modal:open"]', function(event) {
+    event.preventDefault();
+    $(this).modal();
+  });
+})(jQuery);
Index: pro-bachkim-filespace/sourcecode/assets/js/jquery/jquery.modal.min.js
===================================================================
--- pro-bachkim-filespace/sourcecode/assets/js/jquery/jquery.modal.min.js	(revision 16)
+++ pro-bachkim-filespace/sourcecode/assets/js/jquery/jquery.modal.min.js	(revision 16)
@@ -0,0 +1,5 @@
+/*
+    A simple jQuery modal (http://github.com/kylefox/jquery-modal)
+    Version 0.5.5
+*/
+!function(a){var b=null;a.modal=function(c,d){a.modal.close();var e,f;if(this.$body=a("body"),this.options=a.extend({},a.modal.defaults,d),this.options.doFade=!isNaN(parseInt(this.options.fadeDuration,10)),c.is("a"))if(f=c.attr("href"),/^#/.test(f)){if(this.$elm=a(f),1!==this.$elm.length)return null;this.open()}else this.$elm=a("<div>"),this.$body.append(this.$elm),e=function(a,b){b.elm.remove()},this.showSpinner(),c.trigger(a.modal.AJAX_SEND),a.get(f).done(function(d){b&&(c.trigger(a.modal.AJAX_SUCCESS),b.$elm.empty().append(d).on(a.modal.CLOSE,e),b.hideSpinner(),b.open(),c.trigger(a.modal.AJAX_COMPLETE))}).fail(function(){c.trigger(a.modal.AJAX_FAIL),b.hideSpinner(),c.trigger(a.modal.AJAX_COMPLETE)});else this.$elm=c,this.open()},a.modal.prototype={constructor:a.modal,open:function(){var b=this;this.options.doFade?(this.block(),setTimeout(function(){b.show()},this.options.fadeDuration*this.options.fadeDelay)):(this.block(),this.show()),this.options.escapeClose&&a(document).on("keydown.modal",function(b){27==b.which&&a.modal.close()}),this.options.clickClose&&this.blocker.click(a.modal.close)},close:function(){this.unblock(),this.hide(),a(document).off("keydown.modal")},block:function(){var b=this.options.doFade?0:this.options.opacity;this.$elm.trigger(a.modal.BEFORE_BLOCK,[this._ctx()]),this.blocker=a('<div class="jquery-modal blocker"></div>').css({top:0,right:0,bottom:0,left:0,width:"100%",height:"100%",position:"fixed",zIndex:this.options.zIndex,background:this.options.overlay,opacity:b}),this.$body.append(this.blocker),this.options.doFade&&this.blocker.animate({opacity:this.options.opacity},this.options.fadeDuration),this.$elm.trigger(a.modal.BLOCK,[this._ctx()])},unblock:function(){this.options.doFade?this.blocker.fadeOut(this.options.fadeDuration,function(){a(this).remove()}):this.blocker.remove()},show:function(){this.$elm.trigger(a.modal.BEFORE_OPEN,[this._ctx()]),this.options.showClose&&(this.closeButton=a('<a href="#close-modal" rel="modal:close" class="close-modal '+this.options.closeClass+'">'+this.options.closeText+"</a>"),this.$elm.append(this.closeButton)),this.$elm.addClass(this.options.modalClass+" current"),this.center(),this.options.doFade?this.$elm.fadeIn(this.options.fadeDuration):this.$elm.show(),this.$elm.trigger(a.modal.OPEN,[this._ctx()])},hide:function(){this.$elm.trigger(a.modal.BEFORE_CLOSE,[this._ctx()]),this.closeButton&&this.closeButton.remove(),this.$elm.removeClass("current"),this.options.doFade?this.$elm.fadeOut(this.options.fadeDuration):this.$elm.hide(),this.$elm.trigger(a.modal.CLOSE,[this._ctx()])},showSpinner:function(){this.options.showSpinner&&(this.spinner=this.spinner||a('<div class="'+this.options.modalClass+'-spinner"></div>').append(this.options.spinnerHtml),this.$body.append(this.spinner),this.spinner.show())},hideSpinner:function(){this.spinner&&this.spinner.remove()},center:function(){this.$elm.css({position:"fixed",top:"50%",left:"50%",marginTop:-(this.$elm.outerHeight()/2),marginLeft:-(this.$elm.outerWidth()/2),zIndex:this.options.zIndex+1})},_ctx:function(){return{elm:this.$elm,blocker:this.blocker,options:this.options}}},a.modal.prototype.resize=a.modal.prototype.center,a.modal.close=function(a){if(b){a&&a.preventDefault(),b.close();var c=b.$elm;return b=null,c}},a.modal.resize=function(){b&&b.resize()},a.modal.isActive=function(){return b?!0:!1},a.modal.defaults={overlay:"#000",opacity:.75,zIndex:1,escapeClose:!0,clickClose:!0,closeText:"Close",closeClass:"",modalClass:"modal",spinnerHtml:null,showSpinner:!0,showClose:!0,fadeDuration:null,fadeDelay:1},a.modal.BEFORE_BLOCK="modal:before-block",a.modal.BLOCK="modal:block",a.modal.BEFORE_OPEN="modal:before-open",a.modal.OPEN="modal:open",a.modal.BEFORE_CLOSE="modal:before-close",a.modal.CLOSE="modal:close",a.modal.AJAX_SEND="modal:ajax:send",a.modal.AJAX_SUCCESS="modal:ajax:success",a.modal.AJAX_FAIL="modal:ajax:fail",a.modal.AJAX_COMPLETE="modal:ajax:complete",a.fn.modal=function(c){return 1===this.length&&(b=new a.modal(this,c)),this},a(document).on("click.modal",'a[rel="modal:close"]',a.modal.close),a(document).on("click.modal",'a[rel="modal:open"]',function(b){b.preventDefault(),a(this).modal()})}(jQuery);
Index: pro-bachkim-filespace/sourcecode/assets/js/vsgrid.js
===================================================================
--- pro-bachkim-filespace/sourcecode/assets/js/vsgrid.js	(revision 15)
+++ pro-bachkim-filespace/sourcecode/assets/js/vsgrid.js	(revision 16)
@@ -8,4 +8,11 @@
 			if( o.directoryTreeData == undefined ) o.directoryTreeData = null;
 			if( o.dirIDprefix == undefined ) o.dirIDprefix = null;
+			if( o.host == undefined ) o.host = 'http://localhost/';
+			
+			if( o.sharemodal == undefined ) o.sharemodal = $("#box-shareto");
+			if( o.copymodal == undefined ) o.copymodal = $("#box-copyto");
+			if( o.movemodal == undefined ) o.movemodal = $("#box-moveto");
+			
+			var currentObj = {};
 			
 			var createNode = function (d) {
@@ -33,14 +40,23 @@
 				$(o.container).append(strHTML);
 
-				$('div[rel="id:'+ d.id +'"]').bind('click',function(e){itemClick(this)});				
+				$('div[rel="id:'+ d.id +'"]').bind('click',function(e){itemClick(this)});
+				
 				$('div[rel="id:'+ d.id +'"]').contextMenu({
 					menu: 'gridMenu',
 					disabledItems: disabledItemsList
 				}, function(action, el, pos) {
-				
+					itemClick(el);
 					switch(action) {
 						case 'rename':
-							itemClick(el);
 							rename(el);
+							break;
+						case 'share':
+							showShareModal(currentObj);
+							break;
+						case 'copy':
+							showCopyModal();
+							break;
+						case 'cut':
+							showMoveModal();
 							break;
 						default:
@@ -52,11 +68,12 @@
 			
 			var keyboardRename = function () {
-				$(document).keypress( function(e) {
+				$(document).bind('keydown','keypress', function(e) {
 					var selectedItem = $('.selector.selected').parent();
+					
 					switch( e.keyCode ) {
 						case 113:
 							rename(selectedItem);
 							break;
-						case 32:
+						case 27:
 							cancelRename(selectedItem);
 							break;
@@ -64,6 +81,22 @@
 							break;
 					}
-					return false;
-				});
+				});
+			}
+			
+			var showShareModal = function (obj) {
+				if (obj.type == undefined || obj.type == null) obj.type = 'directory';
+				$(o.sharemodal).modal('show');
+				$(o.sharemodal).find('INPUT#txtSelectedObj').val(obj.name);
+				$(o.sharemodal).find('.modal-header').text('Chia sáº» ' + (obj.type == 'directory'?'thÆ° má»¥c':'file') + ' [' + obj.name + ']');
+			}
+			
+			var showCopyModal = function () {
+				$(o.copymodal).modal('show');
+				/*$(o.copymodal).find('INPUT#txtSelectedObj').val(currentObj.name);
+				$(o.copymodal).find('.modal-header').text('Chia sáº» ' + (currentObj.type == 'directory'?'thÆ° má»¥c':'file') + ' [' + currentObj.name + ']');*/
+			}
+			
+			var showMoveModal = function () {
+				$(o.movemodal).modal('show');
 			}
 
@@ -78,4 +111,11 @@
 				$(i).find('.selector').removeClass('unselected');
 				$(i).find('.selector').addClass('selected');
+				
+				if ($(i).find('.file-name').text() != '')
+					currentObj.name = $(i).find('.file-name').text();
+				
+				currentObj.id = $(i).attr('rel').substring(3);
+				currentObj.type = $(i).find('>div>div').hasClass('icon-directory') ? 'directory':'file';
+				console.log(currentObj.type);
 			}
 
@@ -95,5 +135,5 @@
 					});
 				}
-
+				
 				for (var i = 0 ; i < childFile.length; i++) {
 					if (childFile[i].parentID != curentDirID) continue;
@@ -105,25 +145,79 @@
 					});
 				}
+				
+				keyboardRename();
 			}
 			
 			var rename = function (e) {
 				var nameObj = $(e).find('.file-name');
-				var oldName = $(nameObj).text();
 				var editor = document.createElement ('INPUT');
 				editor.type = 'text';
 				editor.className = 'rename';
-				editor.value = oldName;
 				
 				$(nameObj).text('');
 				$(nameObj).append(editor);
+				
+				$(editor).attr('value', currentObj.name);  
 				editor.focus();
 				$(editor).select();
+				$(editor).bind('focusout',function (e) {
+					cancelRename($(this).parent().parent());
+				});
+				
+				$(editor).bind('keypress',function (e) {
+			        var keycode = (e.keyCode ? e.keyCode : e.which);
+			        if(keycode == '13'){
+			        	completeRename($(this).parent());
+			        }
+			        else {
+			        	
+			        }
+			        e.stopPropagation();
+				});
 			}
 			
 			var cancelRename = function (e) {
-				var oldName = $(e).find('INPUT.rename').attr('value');
 				$(e).find('INPUT.rename').remove();
-				$(e).find('.file-name').text(oldName);
-				
+				$(e).find('.file-name').text(currentObj.name);
+			}
+			
+			var completeRename = function (e) {
+				
+				var postdata = {id:currentObj.id,
+								objtype:currentObj.type,
+								newname:$(e).find('INPUT.rename').val()}
+				sendCommand({
+					script:'ajax/privatecontent/rename',
+					postdata:postdata,
+					callbackSuccess: function (parsedData) {
+						if (parsedData.RESULT == true) {
+							currentObj.name = parsedData.UPDATED.name;
+							$(e).find('INPUT.rename').remove();
+							$(e).text(currentObj.name);
+						}else return false;
+					}
+				});
+			}
+			
+			var sendCommand = function (p) {
+				if( p.postdata == undefined ) p.postdata = null;
+				if( p.script == undefined ) p.script = o.script;
+				if( p.callbackSuccess == undefined ) p.callbackSuccess = null;
+				if( p.callbackDone == undefined ) p.callbackDone = null;
+				if( p.callbackFail == undefined ) p.callbackFail = null;
+				if( p.callbackAlways == undefined ) p.callbackAlways = null;
+
+				if (p.script != null) {
+					$.post(o.host + p.script, p.postdata, function (data){
+						if (data) {
+							parseData = $.parseJSON(data);
+						}
+
+						if (p.callbackSuccess != null) {
+							p.callbackSuccess(parseData);
+						}
+
+					}).done(function() {if (p.callbackDone != null)p.callbackDone(this);}).fail(function() {if (p.callbackFail != null)p.callbackFail(this);}).always(function() {if (p.callbackAlways != null)p.callbackAlways(this);});
+				}
 			}
 
@@ -133,5 +227,18 @@
 				o.dirIDprefix = data.dirIDprefix
 				renderGrid(o);
-				keyboardRename();
+			}
+			
+			this.showModal = function (act, obj) {
+				switch( act ) {
+					case 'copy':
+						break;
+					case 'move':
+						break;
+					case 'share':
+						showShareModal(obj);
+						break;
+					default:
+						break;
+				}
 			}
 
Index: pro-bachkim-filespace/sourcecode/assets/js/vstree.js
===================================================================
--- pro-bachkim-filespace/sourcecode/assets/js/vstree.js	(revision 15)
+++ pro-bachkim-filespace/sourcecode/assets/js/vstree.js	(revision 16)
@@ -19,4 +19,6 @@
 			if( o.grid == undefined ) o.grid = null;
 			
+			var currentObj = {};
+			
 			// PRIVATE methods
 			var sendCommand = function (p) {
@@ -47,5 +49,4 @@
 
 			var renderTree = function  (parseData) {
-
 				o.directoryTreeData = parseData;				
 				var directoryData = parseData.DIRECTORIES;
@@ -80,4 +81,8 @@
 				if( d.addToJSONData == undefined ) d.addToJSONData = false;
 				
+				var disabledItemsList = null;
+				if (d.name == o.homeDirNameDisplay)
+					disabledItemsList = ['cut','delete'];
+				
 				if (d.curentNode != null) {
 					var strHTML = '<ul class="vstree"><li id="' + o.dirIDprefix + d.id + '" class="directory collapsed"><a href="#" rel="' + d.name + '">' + d.name + '</a></li></ul>';
@@ -107,12 +112,18 @@
 				
 				$('#' + o.dirIDprefix + d.id).find('a').contextMenu({
-					menu: 'treeMenu'
+					menu: 'treeMenu',
+					disabledItems: disabledItemsList
 				}, function(action, el, pos) {
-					alert(
-						'Action: ' + action + '\n\n' +
-						'Element text: ' + $(el).text() + '\n\n' + 
-						'X: ' + pos.x + '  Y: ' + pos.y + ' (relative to element)\n\n' + 
-						'X: ' + pos.docX + '  Y: ' + pos.docY+ ' (relative to document)'
-						);
+					selectDir(el);
+					switch(action) {
+						case 'rename':
+							rename(el);
+							break;
+						case 'share':
+							o.grid.showModal(action, currentObj);
+							break;
+						default:
+							break;
+					}
 				});
 				
@@ -154,4 +165,13 @@
 				$('.currentDir').removeClass('currentDir');
 				$(c).addClass('currentDir');
+				
+				var cid = $(c).parent().attr('id');
+				var pid = cid.substring(o.dirIDprefix.length, cid.length);
+				
+				currentObj.id = pid;
+				currentObj.name = $(c).attr('rel');
+				
+				keyboardRename ();
+				
 				sendtoGrid();
 			}
@@ -165,4 +185,72 @@
 			}
 
+			var rename = function (o) {
+				var editor = document.createElement ('INPUT');
+				editor.type = 'text';
+				editor.className = 'rename';
+				
+				$(o).text('');
+				$(o).append(editor);
+				
+				$(editor).attr('value', currentObj.name);  
+				editor.focus();
+				$(editor).select();
+				
+				$(editor).bind('focusout',function (e) {
+					cancelRename($(o));
+				});
+				
+				$(editor).bind('keypress',function (e) {
+			        var keycode = (e.keyCode ? e.keyCode : e.which);
+			        if(keycode == '13'){
+			        	completeRename($(o));
+			        }
+			        else {
+			        	
+			        }
+			        e.stopPropagation();
+				});
+			}
+			
+			var cancelRename = function (o) {
+				$(o).find('>INPUT').remove();
+				$(o).text(currentObj.name);
+			}
+			
+			var completeRename = function (o) {
+				var postdata = {id:currentObj.id,
+						objtype:'directory',
+						newname:$(o).find('INPUT.rename').val()}
+				
+				sendCommand({
+					script:'ajax/privatecontent/rename',
+					postdata:postdata,
+					callbackSuccess: function (parsedData) {
+						if (parsedData.RESULT == true) {
+							currentObj.name = parsedData.UPDATED.name;
+							$(o).find('INPUT.rename').remove();
+							$(o).text(currentObj.name);
+						}else return false;
+					}
+				});
+			}
+			
+			var keyboardRename = function () {
+				$(document).bind('keydown','keypress', function(e) {
+					var selectedItem = $('.currentDir');
+					
+					switch( e.keyCode ) {
+						case 113:
+							rename(selectedItem);
+							break;
+						case 27:
+							cancelRename(selectedItem);
+							break;
+						default:
+							break;
+					}
+				});
+			}
+			
 			loadTree();
 			// END - PRIVATE methods
