(function(a){a.widget("ui.draggable",a.extend({},a.ui.mouse,{getHandle:function(b){var c=!this.options.handle||!a(this.options.handle,this.element).length?true:false;a(this.options.handle,this.element).find("*").andSelf().each(function(){if(this==b.target)c=true});return c},createHelper:function(){var b=this.options;var c=a.isFunction(b.helper)?a(b.helper.apply(this.element[0],[e])):b.helper=="clone"?this.element.clone():this.element;if(!c.parents("body").length)c.appendTo(b.appendTo=="parent"?this.element[0].parentNode:b.appendTo);if(c[0]!=this.element[0]&&!/(fixed|absolute)/.test(c.css("position")))c.css("position","absolute");return c},_init:function(){if(this.options.helper=="original"&&!/^(?:r|a|f)/.test(this.element.css("position")))this.element[0].style.position="relative";this.options.cssNamespace&&this.element.addClass(this.options.cssNamespace+"-draggable");this.options.disabled&&this.element.addClass("ui-draggable-disabled");this._mouseInit()},_mouseCapture:function(b){var c=this.options;if(this.helper||c.disabled||a(b.target).is(".ui-resizable-handle"))return false;this.handle=this.getHandle(b);if(!this.handle)return false;return true},_mouseStart:function(b){var c=this.options;this.helper=this.createHelper();if(a.ui.ddmanager)a.ui.ddmanager.current=this;this.margins={left:parseInt(this.element.css("marginLeft"),10)||0,top:parseInt(this.element.css("marginTop"),10)||0};this.cssPosition=this.helper.css("position");this.offset=this.element.offset();this.offset={top:this.offset.top-this.margins.top,left:this.offset.left-this.margins.left};this.offset.click={left:b.pageX-this.offset.left,top:b.pageY-this.offset.top};this.cacheScrollParents();this.offsetParent=this.helper.offsetParent();var d=this.offsetParent.offset();if(this.offsetParent[0]==document.body&&a.browser.mozilla)d={top:0,left:0};this.offset.parent={top:d.top+(parseInt(this.offsetParent.css("borderTopWidth"),10)||0),left:d.left+(parseInt(this.offsetParent.css("borderLeftWidth"),10)||0)};if(this.cssPosition=="relative"){var e=this.element.position();this.offset.relative={top:e.top-(parseInt(this.helper.css("top"),10)||0)+this.scrollTopParent.scrollTop(),left:e.left-(parseInt(this.helper.css("left"),10)||0)+this.scrollLeftParent.scrollLeft()}}else{this.offset.relative={top:0,left:0}}this.originalPosition=this._generatePosition(b);this.cacheHelperProportions();if(c.cursorAt)this.adjustOffsetFromHelper(c.cursorAt);a.extend(this,{PAGEY_INCLUDES_SCROLL:this.cssPosition=="absolute"&&(!this.scrollTopParent[0].tagName||/(html|body)/i.test(this.scrollTopParent[0].tagName)),PAGEX_INCLUDES_SCROLL:this.cssPosition=="absolute"&&(!this.scrollLeftParent[0].tagName||/(html|body)/i.test(this.scrollLeftParent[0].tagName)),OFFSET_PARENT_NOT_SCROLL_PARENT_Y:this.scrollTopParent[0]!=this.offsetParent[0]&&!(this.scrollTopParent[0]==document&&/(body|html)/i.test(this.offsetParent[0].tagName)),OFFSET_PARENT_NOT_SCROLL_PARENT_X:this.scrollLeftParent[0]!=this.offsetParent[0]&&!(this.scrollLeftParent[0]==document&&/(body|html)/i.test(this.offsetParent[0].tagName))});if(c.containment)this.setContainment();this._propagate("start",b);this.cacheHelperProportions();if(a.ui.ddmanager&&!c.dropBehaviour)a.ui.ddmanager.prepareOffsets(this,b);this.helper.addClass("ui-draggable-dragging");this._mouseDrag(b);return true},cacheScrollParents:function(){this.scrollTopParent=function(b){do{if(/auto|scroll/.test(b.css("overflow"))||/auto|scroll/.test(b.css("overflow-y")))return b;b=b.parent()}while(b[0].parentNode);return a(document)}(this.helper);this.scrollLeftParent=function(b){do{if(/auto|scroll/.test(b.css("overflow"))||/auto|scroll/.test(b.css("overflow-x")))return b;b=b.parent()}while(b[0].parentNode);return a(document)}(this.helper)},adjustOffsetFromHelper:function(a){if(a.left!=undefined)this.offset.click.left=a.left+this.margins.left;if(a.right!=undefined)this.offset.click.left=this.helperProportions.width-a.right+this.margins.left;if(a.top!=undefined)this.offset.click.top=a.top+this.margins.top;if(a.bottom!=undefined)this.offset.click.top=this.helperProportions.height-a.bottom+this.margins.top},cacheHelperProportions:function(){this.helperProportions={width:this.helper.outerWidth(),height:this.helper.outerHeight()}},setContainment:function(){var b=this.options;if(b.containment=="parent")b.containment=this.helper[0].parentNode;if(b.containment=="document"||b.containment=="window")this.containment=[0-this.offset.relative.left-this.offset.parent.left,0-this.offset.relative.top-this.offset.parent.top,a(b.containment=="document"?document:window).width()-this.offset.relative.left-this.offset.parent.left-this.helperProportions.width-this.margins.left-(parseInt(this.element.css("marginRight"),10)||0),(a(b.containment=="document"?document:window).height()||document.body.parentNode.scrollHeight)-this.offset.relative.top-this.offset.parent.top-this.helperProportions.height-this.margins.top-(parseInt(this.element.css("marginBottom"),10)||0)];if(!/^(document|window|parent)$/.test(b.containment)){var c=a(b.containment)[0];var d=a(b.containment).offset();var e=a(c).css("overflow")!="hidden";this.containment=[d.left+(parseInt(a(c).css("borderLeftWidth"),10)||0)-this.offset.relative.left-this.offset.parent.left,d.top+(parseInt(a(c).css("borderTopWidth"),10)||0)-this.offset.relative.top-this.offset.parent.top,d.left+(e?Math.max(c.scrollWidth,c.offsetWidth):c.offsetWidth)-(parseInt(a(c).css("borderLeftWidth"),10)||0)-this.offset.relative.left-this.offset.parent.left-this.helperProportions.width-this.margins.left-(parseInt(this.element.css("marginRight"),10)||0),d.top+(e?Math.max(c.scrollHeight,c.offsetHeight):c.offsetHeight)-(parseInt(a(c).css("borderTopWidth"),10)||0)-this.offset.relative.top-this.offset.parent.top-this.helperProportions.height-this.margins.top-(parseInt(this.element.css("marginBottom"),10)||0)]}},_convertPositionTo:function(b,c){if(!c)c=this.position;var d=b=="absolute"?1:-1;return{top:c.top+this.offset.relative.top*d+this.offset.parent.top*d-(this.cssPosition=="fixed"||this.PAGEY_INCLUDES_SCROLL||this.OFFSET_PARENT_NOT_SCROLL_PARENT_Y?0:this.scrollTopParent.scrollTop())*d+(this.cssPosition=="fixed"?a(document).scrollTop():0)*d+this.margins.top*d,left:c.left+this.offset.relative.left*d+this.offset.parent.left*d-(this.cssPosition=="fixed"||this.PAGEX_INCLUDES_SCROLL||this.OFFSET_PARENT_NOT_SCROLL_PARENT_X?0:this.scrollLeftParent.scrollLeft())*d+(this.cssPosition=="fixed"?a(document).scrollLeft():0)*d+this.margins.left*d}},_generatePosition:function(b){var c=this.options;var d={top:b.pageY-this.offset.click.top-this.offset.relative.top-this.offset.parent.top+(this.cssPosition=="fixed"||this.PAGEY_INCLUDES_SCROLL||this.OFFSET_PARENT_NOT_SCROLL_PARENT_Y?0:this.scrollTopParent.scrollTop())-(this.cssPosition=="fixed"?a(document).scrollTop():0),left:b.pageX-this.offset.click.left-this.offset.relative.left-this.offset.parent.left+(this.cssPosition=="fixed"||this.PAGEX_INCLUDES_SCROLL||this.OFFSET_PARENT_NOT_SCROLL_PARENT_X?0:this.scrollLeftParent.scrollLeft())-(this.cssPosition=="fixed"?a(document).scrollLeft():0)};if(!this.originalPosition)return d;if(this.containment){if(d.left<this.containment[0])d.left=this.containment[0];if(d.top<this.containment[1])d.top=this.containment[1];if(d.left>this.containment[2])d.left=this.containment[2];if(d.top>this.containment[3])d.top=this.containment[3]}if(c.grid){var e=this.originalPosition.top+Math.round((d.top-this.originalPosition.top)/c.grid[1])*c.grid[1];d.top=this.containment?!(e<this.containment[1]||e>this.containment[3])?e:!(e<this.containment[1])?e-c.grid[1]:e+c.grid[1]:e;var f=this.originalPosition.left+Math.round((d.left-this.originalPosition.left)/c.grid[0])*c.grid[0];d.left=this.containment?!(f<this.containment[0]||f>this.containment[2])?f:!(f<this.containment[0])?f-c.grid[0]:f+c.grid[0]:f}return d},_mouseDrag:function(b){this.position=this._generatePosition(b);this.positionAbs=this._convertPositionTo("absolute");this.position=this._propagate("drag",b)||this.position;if(!this.options.axis||this.options.axis!="y")this.helper[0].style.left=this.position.left+"px";if(!this.options.axis||this.options.axis!="x")this.helper[0].style.top=this.position.top+"px";if(a.ui.ddmanager)a.ui.ddmanager.drag(this,b);return false},_mouseStop:function(b){var c=false;if(a.ui.ddmanager&&!this.options.dropBehaviour)var c=a.ui.ddmanager.drop(this,b);if(this.options.revert=="invalid"&&!c||this.options.revert=="valid"&&c||this.options.revert===true||a.isFunction(this.options.revert)&&this.options.revert.call(this.element,c)){var d=this;a(this.helper).animate(this.originalPosition,parseInt(this.options.revertDuration,10)||500,function(){d._propagate("stop",b);d._clear()})}else{this._propagate("stop",b);this._clear()}return false},_clear:function(){this.helper.removeClass("ui-draggable-dragging");if(this.options.helper!="original"&&!this.cancelHelperRemoval)this.helper.remove();this.helper=null;this.cancelHelperRemoval=false},plugins:{},uiHash:function(a){return{helper:this.helper,position:this.position,absolutePosition:this.positionAbs,options:this.options}},_propagate:function(b,c){a.ui.plugin.call(this,b,[c,this.uiHash()]);if(b=="drag")this.positionAbs=this._convertPositionTo("absolute");return this.element.triggerHandler(b=="drag"?b:"drag"+b,[c,this.uiHash()],this.options[b])},destroy:function(){if(!this.element.data("draggable"))return;this.element.removeData("draggable").unbind(".draggable").removeClass("ui-draggable ui-draggable-dragging ui-draggable-disabled");this._mouseDestroy()}}));a.extend(a.ui.draggable,{defaults:{appendTo:"parent",axis:false,cancel:":input",delay:0,distance:1,helper:"original",scope:"default",cssNamespace:"ui"}});a.ui.plugin.add("draggable","cursor",{start:function(b,c){var d=a("body");if(d.css("cursor"))c.options._cursor=d.css("cursor");d.css("cursor",c.options.cursor)},stop:function(b,c){if(c.options._cursor)a("body").css("cursor",c.options._cursor)}});a.ui.plugin.add("draggable","zIndex",{start:function(b,c){var d=a(c.helper);if(d.css("zIndex"))c.options._zIndex=d.css("zIndex");d.css("zIndex",c.options.zIndex)},stop:function(b,c){if(c.options._zIndex)a(c.helper).css("zIndex",c.options._zIndex)}});a.ui.plugin.add("draggable","opacity",{start:function(b,c){var d=a(c.helper);if(d.css("opacity"))c.options._opacity=d.css("opacity");d.css("opacity",c.options.opacity)},stop:function(b,c){if(c.options._opacity)a(c.helper).css("opacity",c.options._opacity)}});a.ui.plugin.add("draggable","iframeFix",{start:function(b,c){a(c.options.iframeFix===true?"iframe":c.options.iframeFix).each(function(){a('<div class="ui-draggable-iframeFix" style="background: #fff;"></div>').css({width:this.offsetWidth+"px",height:this.offsetHeight+"px",position:"absolute",opacity:"0.001",zIndex:1e3}).css(a(this).offset()).appendTo("body")})},stop:function(b,c){a("div.ui-draggable-iframeFix").each(function(){this.parentNode.removeChild(this)})}});a.ui.plugin.add("draggable","scroll",{start:function(b,c){var d=c.options;var e=a(this).data("draggable");d.scrollSensitivity=d.scrollSensitivity||20;d.scrollSpeed=d.scrollSpeed||20;e.overflowY=function(b){do{if(/auto|scroll/.test(b.css("overflow"))||/auto|scroll/.test(b.css("overflow-y")))return b;b=b.parent()}while(b[0].parentNode);return a(document)}(this);e.overflowX=function(b){do{if(/auto|scroll/.test(b.css("overflow"))||/auto|scroll/.test(b.css("overflow-x")))return b;b=b.parent()}while(b[0].parentNode);return a(document)}(this);if(e.overflowY[0]!=document&&e.overflowY[0].tagName!="HTML")e.overflowYOffset=e.overflowY.offset();if(e.overflowX[0]!=document&&e.overflowX[0].tagName!="HTML")e.overflowXOffset=e.overflowX.offset()},drag:function(b,c){var d=c.options,e=false;var f=a(this).data("draggable");if(f.overflowY[0]!=document&&f.overflowY[0].tagName!="HTML"){if(f.overflowYOffset.top+f.overflowY[0].offsetHeight-b.pageY<d.scrollSensitivity)f.overflowY[0].scrollTop=e=f.overflowY[0].scrollTop+d.scrollSpeed;if(b.pageY-f.overflowYOffset.top<d.scrollSensitivity)f.overflowY[0].scrollTop=e=f.overflowY[0].scrollTop-d.scrollSpeed}else{if(b.pageY-a(document).scrollTop()<d.scrollSensitivity)e=a(document).scrollTop(a(document).scrollTop()-d.scrollSpeed);if(a(window).height()-(b.pageY-a(document).scrollTop())<d.scrollSensitivity)e=a(document).scrollTop(a(document).scrollTop()+d.scrollSpeed)}if(f.overflowX[0]!=document&&f.overflowX[0].tagName!="HTML"){if(f.overflowXOffset.left+f.overflowX[0].offsetWidth-b.pageX<d.scrollSensitivity)f.overflowX[0].scrollLeft=e=f.overflowX[0].scrollLeft+d.scrollSpeed;if(b.pageX-f.overflowXOffset.left<d.scrollSensitivity)f.overflowX[0].scrollLeft=e=f.overflowX[0].scrollLeft-d.scrollSpeed}else{if(b.pageX-a(document).scrollLeft()<d.scrollSensitivity)e=a(document).scrollLeft(a(document).scrollLeft()-d.scrollSpeed);if(a(window).width()-(b.pageX-a(document).scrollLeft())<d.scrollSensitivity)e=a(document).scrollLeft(a(document).scrollLeft()+d.scrollSpeed)}if(e!==false)a.ui.ddmanager.prepareOffsets(f,b)}});a.ui.plugin.add("draggable","snap",{start:function(b,c){var d=a(this).data("draggable");d.snapElements=[];a(c.options.snap.constructor!=String?c.options.snap.items||":data(draggable)":c.options.snap).each(function(){var b=a(this);var c=b.offset();if(this!=d.element[0])d.snapElements.push({item:this,width:b.outerWidth(),height:b.outerHeight(),top:c.top,left:c.left})})},drag:function(b,c){var d=a(this).data("draggable");var e=c.options.snapTolerance||20;var f=c.absolutePosition.left,g=f+d.helperProportions.width,h=c.absolutePosition.top,i=h+d.helperProportions.height;for(var j=d.snapElements.length-1;j>=0;j--){var k=d.snapElements[j].left,l=k+d.snapElements[j].width,m=d.snapElements[j].top,n=m+d.snapElements[j].height;if(!(k-e<f&&f<l+e&&m-e<h&&h<n+e||k-e<f&&f<l+e&&m-e<i&&i<n+e||k-e<g&&g<l+e&&m-e<h&&h<n+e||k-e<g&&g<l+e&&m-e<i&&i<n+e)){if(d.snapElements[j].snapping)d.options.snap.release&&d.options.snap.release.call(d.element,null,a.extend(d.uiHash(),{snapItem:d.snapElements[j].item}));d.snapElements[j].snapping=false;continue}if(c.options.snapMode!="inner"){var o=Math.abs(m-i)<=e;var p=Math.abs(n-h)<=e;var q=Math.abs(k-g)<=e;var r=Math.abs(l-f)<=e;if(o)c.position.top=d._convertPositionTo("relative",{top:m-d.helperProportions.height,left:0}).top;if(p)c.position.top=d._convertPositionTo("relative",{top:n,left:0}).top;if(q)c.position.left=d._convertPositionTo("relative",{top:0,left:k-d.helperProportions.width}).left;if(r)c.position.left=d._convertPositionTo("relative",{top:0,left:l}).left}var s=o||p||q||r;if(c.options.snapMode!="outer"){var o=Math.abs(m-h)<=e;var p=Math.abs(n-i)<=e;var q=Math.abs(k-f)<=e;var r=Math.abs(l-g)<=e;if(o)c.position.top=d._convertPositionTo("relative",{top:m,left:0}).top;if(p)c.position.top=d._convertPositionTo("relative",{top:n-d.helperProportions.height,left:0}).top;if(q)c.position.left=d._convertPositionTo("relative",{top:0,left:k}).left;if(r)c.position.left=d._convertPositionTo("relative",{top:0,left:l-d.helperProportions.width}).left}if(!d.snapElements[j].snapping&&(o||p||q||r||s))d.options.snap.snap&&d.options.snap.snap.call(d.element,null,a.extend(d.uiHash(),{snapItem:d.snapElements[j].item}));d.snapElements[j].snapping=o||p||q||r||s}}});a.ui.plugin.add("draggable","connectToSortable",{start:function(b,c){var d=a(this).data("draggable");d.sortables=[];a(c.options.connectToSortable).each(function(){if(a.data(this,"sortable")){var c=a.data(this,"sortable");d.sortables.push({instance:c,shouldRevert:c.options.revert});c._refreshItems();c._propagate("activate",b,d)}})},stop:function(b,c){var d=a(this).data("draggable");a.each(d.sortables,function(){if(this.instance.isOver){this.instance.isOver=0;d.cancelHelperRemoval=true;this.instance.cancelHelperRemoval=false;if(this.shouldRevert)this.instance.options.revert=true;this.instance._mouseStop(b);this.instance.element.triggerHandler("sortreceive",[b,a.extend(this.instance.ui(),{sender:d.element})],this.instance.options["receive"]);this.instance.options.helper=this.instance.options._helper}else{this.instance._propagate("deactivate",b,d)}})},drag:function(b,c){var d=a(this).data("draggable"),e=this;var f=function(a){var b=a.left,c=b+a.width,d=a.top,e=d+a.height;return b<this.positionAbs.left+this.offset.click.left&&this.positionAbs.left+this.offset.click.left<c&&d<this.positionAbs.top+this.offset.click.top&&this.positionAbs.top+this.offset.click.top<e};a.each(d.sortables,function(g){if(f.call(d,this.instance.containerCache)){if(!this.instance.isOver){this.instance.isOver=1;this.instance.currentItem=a(e).clone().appendTo(this.instance.element).data("sortable-item",true);this.instance.options._helper=this.instance.options.helper;this.instance.options.helper=function(){return c.helper[0]};b.target=this.instance.currentItem[0];this.instance._mouseCapture(b,true);this.instance._mouseStart(b,true,true);this.instance.offset.click.top=d.offset.click.top;this.instance.offset.click.left=d.offset.click.left;this.instance.offset.parent.left-=d.offset.parent.left-this.instance.offset.parent.left;this.instance.offset.parent.top-=d.offset.parent.top-this.instance.offset.parent.top;d._propagate("toSortable",b)}if(this.instance.currentItem)this.instance._mouseDrag(b)}else{if(this.instance.isOver){this.instance.isOver=0;this.instance.cancelHelperRemoval=true;this.instance.options.revert=false;this.instance._mouseStop(b,true);this.instance.options.helper=this.instance.options._helper;this.instance.currentItem.remove();if(this.instance.placeholder)this.instance.placeholder.remove();d._propagate("fromSortable",b)}}})}});a.ui.plugin.add("draggable","stack",{start:function(b,c){var d=a.makeArray(a(c.options.stack.group)).sort(function(b,d){return(parseInt(a(b).css("zIndex"),10)||c.options.stack.min)-(parseInt(a(d).css("zIndex"),10)||c.options.stack.min)});a(d).each(function(a){this.style.zIndex=c.options.stack.min+a});this[0].style.zIndex=c.options.stack.min+d.length}})})(jQuery)
