;(function($){if(window.Node&&Node.prototype&&!Node.prototype.contains){Node.prototype.contains=function(arg){return!!(this.compareDocumentPosition(arg)&16);};}
$.widget("ui.sortableTree",$.extend($.ui.mouse,{init:function(){var self=this,o=this.options;this.containerCache={};this.element.addClass("ui-sortableTree");this.refresh();if(!(/(relative|absolute|fixed)/).test(this.element.css('position')))this.element.css('position','relative');this.offset=this.element.offset();this.mouseInit();if(o.cursorAt&&o.cursorAt.constructor==Array)
o.cursorAt={left:o.cursorAt[0],top:o.cursorAt[1]};},plugins:{},ui:function(inst){return{helper:(inst||this)["helper"],position:(inst||this)["position"].current,absolutePosition:(inst||this)["position"].absolute,instance:this,options:this.options,element:this.element,item:(inst||this)["currentItem"],sender:inst?inst.element:null};},propagate:function(n,e,inst){$.ui.plugin.call(this,n,[e,this.ui(inst)]);this.element.triggerHandler(n=="sort"?n:"sort"+n,[e,this.ui(inst)],this.options[n]);},serialize:function(o){var items=$(this.options.items,this.element).not('.ui-sortableTree-helper');var str=[];o=o||{};items.each(function(){var res=($(this).attr(o.attribute||'id')||'').match(o.expression||(/(.+)[-=_](.+)/));if(res)str.push((o.key||res[1])+'[]='+(o.key?res[1]:res[2]));});return str.join('&');},toArray:function(attr){var items=$(this.options.items,this.element).not('.ui-sortableTree-helper');var ret=[];items.each(function(){ret.push($(this).attr(attr||'id'));});return ret;},enable:function(){this.element.removeClass("ui-sortableTree-disabled");this.options.disabled=false;},disable:function(){this.element.addClass("ui-sortableTree-disabled");this.options.disabled=true;},intersectsWith:function(item){var x1=this.position.absolute.left-10,x2=x1+10,y1=this.position.absolute.top-10,y2=y1+10;var l=item.left,r=l+item.width,t=item.top,b=t+item.height;return(l<x1+(this.helperProportions.width/2)&&x2-(this.helperProportions.width/2)<r&&t<y1+(this.helperProportions.height/2)&&y2-(this.helperProportions.height/2)<b);},intersectsWithEdge:function(item){var y1=this.position.absolute.top-10,y2=y1+10;var t=item.top,b=t+item.height;if(!this.intersectsWith(item.item.parents(".ui-sortableTree").data("sortableTree").containerCache))return false;if(!(t<y1+(this.helperProportions.height/2)&&y2-(this.helperProportions.height/2)<b))return false;if(y2>t&&y1<t)return 1;if(y1<b&&y2>b)return 2;return false;},refresh:function(){this.refreshItems();this.refreshPositions();},refreshItems:function(){this.items=[];this.containers=[this];var items=this.items;var queries=[$(this.options.items,this.element)];if(this.options.connectWith){for(var i=this.options.connectWith.length-1;i>=0;i--){var cur=$(this.options.connectWith[i]);for(var j=cur.length-1;j>=0;j--){var inst=$.data(cur[j],'sortableTree');if(inst&&!inst.options.disabled){queries.push($(inst.options.items,inst.element));this.containers.push(inst);}};};}
for(var i=queries.length-1;i>=0;i--){queries[i].each(function(){$.data(this,'sortableTree-item',true);items.push({item:$(this),width:0,height:0,left:0,top:0});});};},refreshPositions:function(fast){for(var i=this.items.length-1;i>=0;i--){if(!fast)this.items[i].height=this.items[i].item.outerHeight();this.items[i].top=this.items[i].item.offset().top;};for(var i=this.containers.length-1;i>=0;i--){var p=this.containers[i].element.offset();this.containers[i].containerCache.left=p.left;this.containers[i].containerCache.top=p.top;this.containers[i].containerCache.width=this.containers[i].element.outerWidth();this.containers[i].containerCache.height=this.containers[i].element.outerHeight();};},destroy:function(){this.element
.removeClass("ui-sortableTree ui-sortableTree-disabled")
.removeData("sortableTree")
.unbind(".sortableTree");this.mouseDestroy();for(var i=this.items.length-1;i>=0;i--)
this.items[i].item.removeData("sortableTree-item");},contactContainers:function(e){for(var i=this.containers.length-1;i>=0;i--){if(this.intersectsWith(this.containers[i].containerCache)){if(!this.containers[i].containerCache.over){if(this.currentContainer!=this.containers[i]){var dist=10000;var itemWithLeastDistance=null;var base=this.position.absolute.top;for(var j=this.items.length-1;j>=0;j--){if(!this.containers[i].element[0].contains(this.items[j].item[0]))continue;var cur=this.items[j].top;if(Math.abs(cur-base)<dist){dist=Math.abs(cur-base);itemWithLeastDistance=this.items[j];}}
itemWithLeastDistance?this.rearrange(e,itemWithLeastDistance):this.rearrange(e,null,this.containers[i].element);this.propagate("change",e);this.containers[i].propagate("change",e,this);this.currentContainer=this.containers[i];}
this.containers[i].propagate("over",e,this);this.containers[i].containerCache.over=1;}}else{if(this.containers[i].containerCache.over){this.containers[i].propagate("out",e,this);this.containers[i].containerCache.over=0;}}};},mouseStart:function(e,el){if(this.options.disabled||this.options.type=='static')return false;var currentItem=null,nodes=$(e.target).parents().each(function(){if($.data(this,'sortableTree-item')){currentItem=$(this);return false;}});if($.data(e.target,'sortableTree-item'))currentItem=$(e.target);if(!currentItem)return false;if(this.options.handle){var validHandle=false;$(this.options.handle,currentItem).each(function(){if(this==e.target)validHandle=true;});if(!validHandle)return false;}
this.currentItem=currentItem;var o=this.options;this.currentContainer=this;this.refresh();this.helper=typeof o.helper=='function'?$(o.helper.apply(this.element[0],[e,this.currentItem])):this.currentItem.clone();if(!this.helper.parents('body').length)this.helper.appendTo("body");this.helper.css({position:'absolute',clear:'both'}).addClass('ui-sortableTree-helper');$.extend(this,{offsetParent:this.helper.offsetParent(),offsets:{absolute:this.currentItem.offset()}});$.extend(this,{position:{current:{left:e.pageX,top:e.pageY},absolute:{left:e.pageX,top:e.pageY},dom:this.currentItem.prev()[0]},clickOffset:{left:-5,top:-5}});this.propagate("start",e);this.helperProportions={width:this.helper.outerWidth(),height:this.helper.outerHeight()};for(var i=this.containers.length-1;i>=0;i--){this.containers[i].propagate("activate",e,this);}
if($.ui.ddmanager)$.ui.ddmanager.current=this;if($.ui.ddmanager&&!o.dropBehaviour)$.ui.ddmanager.prepareOffsets(this,e);this.dragging=true;return true;},mouseStop:function(e){if(this.newPositionAt)this.options.sortIndication.remove.call(this.currentItem,this.newPositionAt);this.propagate("stop",e);var dropped=($.ui.ddmanager&&!this.options.dropBehaviour)?$.ui.ddmanager.drop(this,e):false;if(!dropped&&this.newPositionAt)this.newPositionAt[this.direction=='down'?'before':'after'](this.currentItem);if(this.position.dom!=this.currentItem.prev()[0])this.propagate("update",e);if(!this.element[0].contains(this.currentItem[0])){this.propagate("remove",e);for(var i=this.containers.length-1;i>=0;i--){if(this.containers[i].element[0].contains(this.currentItem[0])){this.containers[i].propagate("update",e,this);this.containers[i].propagate("receive",e,this);}};};for(var i=this.containers.length-1;i>=0;i--){this.containers[i].propagate("deactivate",e,this);if(this.containers[i].containerCache.over){this.containers[i].propagate("out",e,this);this.containers[i].containerCache.over=0;}}
this.dragging=false;if(this.cancelHelperRemoval)return false;this.helper.remove();return false;},mouseDrag:function(e){this.position.current={top:e.pageY+5,left:e.pageX+5};this.position.absolute={left:e.pageX+5,top:e.pageY+5};if($.ui.ddmanager)$.ui.ddmanager.drag(this,e);var intersectsWithDroppable=false;$.each($.ui.ddmanager.droppables,function(){if(this.isover)intersectsWithDroppable=true;});if(intersectsWithDroppable){if(this.newPositionAt)this.options.sortIndication.remove.call(this.currentItem,this.newPositionAt);}else{for(var i=this.items.length-1;i>=0;i--){if(this.currentItem[0].contains(this.items[i].item[0]))continue;var intersection=this.intersectsWithEdge(this.items[i]);if(!intersection)continue;this.direction=intersection==1?"down":"up";this.rearrange(e,this.items[i]);this.propagate("change",e);break;}}
this.contactContainers(e);this.propagate("sort",e);this.helper.css({left:this.position.current.left+'px',top:this.position.current.top+'px'});return false;},rearrange:function(e,i,a){if(i){if(this.newPositionAt)this.options.sortIndication.remove.call(this.currentItem,this.newPositionAt);this.newPositionAt=i.item;this.options.sortIndication[this.direction].call(this.currentItem,this.newPositionAt);}else{}}}));$.extend($.ui.sortableTree,{defaults:{items:'> *',zIndex:1000,distance:1},getter:"serialize toArray"});})(jQuery);;
