(function($){$.widget("ui.draggable",$.extend({},$.ui.mouse,{_init:function(){if(this.options.helper=='original'&&!(/^(?:r|a|f)/).test(this.element.css("position")))this.element[0].style.position='relative';(this.options.addClasses&&this.element.addClass("ui-draggable"));(this.options.disabled&&this.element.addClass("ui-draggable-disabled"));this._mouseInit()},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()},_mouseCapture:function(a){var o=this.options;if(this.helper||o.disabled||$(a.target).is('.ui-resizable-handle'))return false;this.handle=this._getHandle(a);if(!this.handle)return false;return true},_mouseStart:function(a){var o=this.options;this.helper=this._createHelper(a);this._cacheHelperProportions();if($.ui.ddmanager)$.ui.ddmanager.current=this;this._cacheMargins();this.cssPosition=this.helper.css("position");this.scrollParent=this.helper.scrollParent();this.offset=this.element.offset();this.offset={top:this.offset.top-this.margins.top,left:this.offset.left-this.margins.left};$.extend(this.offset,{click:{left:a.pageX-this.offset.left,top:a.pageY-this.offset.top},parent:this._getParentOffset(),relative:this._getRelativeOffset()});this.originalPosition=this._generatePosition(a);this.originalPageX=a.pageX;this.originalPageY=a.pageY;if(o.cursorAt)this._adjustOffsetFromHelper(o.cursorAt);if(o.containment)this._setContainment();this._trigger("start",a);this._cacheHelperProportions();if($.ui.ddmanager&&!o.dropBehaviour)$.ui.ddmanager.prepareOffsets(this,a);this.helper.addClass("ui-draggable-dragging");this._mouseDrag(a,true);return true},_mouseDrag:function(a,b){this.position=this._generatePosition(a);this.positionAbs=this._convertPositionTo("absolute");if(!b){var c=this._uiHash();this._trigger('drag',a,c);this.position=c.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($.ui.ddmanager)$.ui.ddmanager.drag(this,a);return false},_mouseStop:function(a){var b=false;if($.ui.ddmanager&&!this.options.dropBehaviour)b=$.ui.ddmanager.drop(this,a);if(this.dropped){b=this.dropped;this.dropped=false}if((this.options.revert=="invalid"&&!b)||(this.options.revert=="valid"&&b)||this.options.revert===true||($.isFunction(this.options.revert)&&this.options.revert.call(this.element,b))){var c=this;$(this.helper).animate(this.originalPosition,parseInt(this.options.revertDuration,10),function(){c._trigger("stop",a);c._clear()})}else{this._trigger("stop",a);this._clear()}return false},_getHandle:function(a){var b=!this.options.handle||!$(this.options.handle,this.element).length?true:false;$(this.options.handle,this.element).find("*").andSelf().each(function(){if(this==a.target)b=true});return b},_createHelper:function(a){var o=this.options;var b=$.isFunction(o.helper)?$(o.helper.apply(this.element[0],[a])):(o.helper=='clone'?this.element.clone():this.element);if(!b.parents('body').length)b.appendTo((o.appendTo=='parent'?this.element[0].parentNode:o.appendTo));if(b[0]!=this.element[0]&&!(/(fixed|absolute)/).test(b.css("position")))b.css("position","absolute");return b},_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},_getParentOffset:function(){this.offsetParent=this.helper.offsetParent();var a=this.offsetParent.offset();if(this.cssPosition=='absolute'&&this.scrollParent[0]!=document&&$.ui.contains(this.scrollParent[0],this.offsetParent[0])){a.left+=this.scrollParent.scrollLeft();a.top+=this.scrollParent.scrollTop()}if((this.offsetParent[0]==document.body)||(this.offsetParent[0].tagName&&this.offsetParent[0].tagName.toLowerCase()=='html'&&$.browser.msie))a={top:0,left:0};return{top:a.top+(parseInt(this.offsetParent.css("borderTopWidth"),10)||0),left:a.left+(parseInt(this.offsetParent.css("borderLeftWidth"),10)||0)}},_getRelativeOffset:function(){if(this.cssPosition=="relative"){var p=this.element.position();return{top:p.top-(parseInt(this.helper.css("top"),10)||0)+this.scrollParent.scrollTop(),left:p.left-(parseInt(this.helper.css("left"),10)||0)+this.scrollParent.scrollLeft()}}else{return{top:0,left:0}}},_cacheMargins:function(){this.margins={left:(parseInt(this.element.css("marginLeft"),10)||0),top:(parseInt(this.element.css("marginTop"),10)||0)}},_cacheHelperProportions:function(){this.helperProportions={width:this.helper.outerWidth(),height:this.helper.outerHeight()}},_setContainment:function(){var o=this.options;if(o.containment=='parent')o.containment=this.helper[0].parentNode;if(o.containment=='document'||o.containment=='window')this.containment=[0-this.offset.relative.left-this.offset.parent.left,0-this.offset.relative.top-this.offset.parent.top,$(o.containment=='document'?document:window).width()-this.helperProportions.width-this.margins.left,($(o.containment=='document'?document:window).height()||document.body.parentNode.scrollHeight)-this.helperProportions.height-this.margins.top];if(!(/^(document|window|parent)$/).test(o.containment)&&o.containment.constructor!=Array){var a=$(o.containment)[0];if(!a)return;var b=$(o.containment).offset();var c=($(a).css("overflow")!='hidden');this.containment=[b.left+(parseInt($(a).css("borderLeftWidth"),10)||0)+(parseInt($(a).css("paddingLeft"),10)||0)-this.margins.left,b.top+(parseInt($(a).css("borderTopWidth"),10)||0)+(parseInt($(a).css("paddingTop"),10)||0)-this.margins.top,b.left+(c?Math.max(a.scrollWidth,a.offsetWidth):a.offsetWidth)-(parseInt($(a).css("borderLeftWidth"),10)||0)-(parseInt($(a).css("paddingRight"),10)||0)-this.helperProportions.width-this.margins.left,b.top+(c?Math.max(a.scrollHeight,a.offsetHeight):a.offsetHeight)-(parseInt($(a).css("borderTopWidth"),10)||0)-(parseInt($(a).css("paddingBottom"),10)||0)-this.helperProportions.height-this.margins.top]}else if(o.containment.constructor==Array){this.containment=o.containment}},_convertPositionTo:function(d,a){if(!a)a=this.position;var b=d=="absolute"?1:-1;var o=this.options,scroll=this.cssPosition=='absolute'&&!(this.scrollParent[0]!=document&&$.ui.contains(this.scrollParent[0],this.offsetParent[0]))?this.offsetParent:this.scrollParent,scrollIsRootNode=(/(html|body)/i).test(scroll[0].tagName);return{top:(a.top+this.offset.relative.top*b+this.offset.parent.top*b-($.browser.safari&&this.cssPosition=='fixed'?0:(this.cssPosition=='fixed'?-this.scrollParent.scrollTop():(scrollIsRootNode?0:scroll.scrollTop()))*b)),left:(a.left+this.offset.relative.left*b+this.offset.parent.left*b-($.browser.safari&&this.cssPosition=='fixed'?0:(this.cssPosition=='fixed'?-this.scrollParent.scrollLeft():scrollIsRootNode?0:scroll.scrollLeft())*b))}},_generatePosition:function(a){var o=this.options,scroll=this.cssPosition=='absolute'&&!(this.scrollParent[0]!=document&&$.ui.contains(this.scrollParent[0],this.offsetParent[0]))?this.offsetParent:this.scrollParent,scrollIsRootNode=(/(html|body)/i).test(scroll[0].tagName);if(this.cssPosition=='relative'&&!(this.scrollParent[0]!=document&&this.scrollParent[0]!=this.offsetParent[0])){this.offset.relative=this._getRelativeOffset()}var b=a.pageX;var c=a.pageY;if(this.originalPosition){if(this.containment){if(a.pageX-this.offset.click.left<this.containment[0])b=this.containment[0]+this.offset.click.left;if(a.pageY-this.offset.click.top<this.containment[1])c=this.containment[1]+this.offset.click.top;if(a.pageX-this.offset.click.left>this.containment[2])b=this.containment[2]+this.offset.click.left;if(a.pageY-this.offset.click.top>this.containment[3])c=this.containment[3]+this.offset.click.top}if(o.grid){var d=this.originalPageY+Math.round((c-this.originalPageY)/o.grid[1])*o.grid[1];c=this.containment?(!(d-this.offset.click.top<this.containment[1]||d-this.offset.click.top>this.containment[3])?d:(!(d-this.offset.click.top<this.containment[1])?d-o.grid[1]:d+o.grid[1])):d;var e=this.originalPageX+Math.round((b-this.originalPageX)/o.grid[0])*o.grid[0];b=this.containment?(!(e-this.offset.click.left<this.containment[0]||e-this.offset.click.left>this.containment[2])?e:(!(e-this.offset.click.left<this.containment[0])?e-o.grid[0]:e+o.grid[0])):e}}return{top:(c-this.offset.click.top-this.offset.relative.top-this.offset.parent.top+($.browser.safari&&this.cssPosition=='fixed'?0:(this.cssPosition=='fixed'?-this.scrollParent.scrollTop():(scrollIsRootNode?0:scroll.scrollTop())))),left:(b-this.offset.click.left-this.offset.relative.left-this.offset.parent.left+($.browser.safari&&this.cssPosition=='fixed'?0:(this.cssPosition=='fixed'?-this.scrollParent.scrollLeft():scrollIsRootNode?0:scroll.scrollLeft())))}},_clear:function(){this.helper.removeClass("ui-draggable-dragging");if(this.helper[0]!=this.element[0]&&!this.cancelHelperRemoval)this.helper.remove();this.helper=null;this.cancelHelperRemoval=false},_trigger:function(a,b,c){c=c||this._uiHash();$.ui.plugin.call(this,a,[b,c]);if(a=="drag")this.positionAbs=this._convertPositionTo("absolute");return $.widget.prototype._trigger.call(this,a,b,c)},plugins:{},_uiHash:function(a){return{helper:this.helper,position:this.position,absolutePosition:this.positionAbs,offset:this.positionAbs}}}));$.extend($.ui.draggable,{version:"1.7.2",eventPrefix:"drag",defaults:{addClasses:true,appendTo:"parent",axis:false,cancel:":input,option",connectToSortable:false,containment:false,cursor:"auto",cursorAt:false,delay:0,distance:1,grid:false,handle:false,helper:"original",iframeFix:false,opacity:false,refreshPositions:false,revert:false,revertDuration:500,scope:"default",scroll:true,scrollSensitivity:20,scrollSpeed:20,snap:false,snapMode:"both",snapTolerance:20,stack:false,zIndex:false}});$.ui.plugin.add("draggable","connectToSortable",{start:function(b,c){var d=$(this).data("draggable"),o=d.options,uiSortable=$.extend({},c,{item:d.element});d.sortables=[];$(o.connectToSortable).each(function(){var a=$.data(this,'sortable');if(a&&!a.options.disabled){d.sortables.push({instance:a,shouldRevert:a.options.revert});a._refreshItems();a._trigger("activate",b,uiSortable)}})},stop:function(a,b){var c=$(this).data("draggable"),uiSortable=$.extend({},b,{item:c.element});$.each(c.sortables,function(){if(this.instance.isOver){this.instance.isOver=0;c.cancelHelperRemoval=true;this.instance.cancelHelperRemoval=false;if(this.shouldRevert)this.instance.options.revert=true;this.instance._mouseStop(a);this.instance.options.helper=this.instance.options._helper;if(c.options.helper=='original')this.instance.currentItem.css({top:'auto',left:'auto'})}else{this.instance.cancelHelperRemoval=false;this.instance._trigger("deactivate",a,uiSortable)}})},drag:function(e,f){var g=$(this).data("draggable"),self=this;var h=function(o){var a=this.offset.click.top,dxClick=this.offset.click.left;var b=this.positionAbs.top,helperLeft=this.positionAbs.left;var c=o.height,itemWidth=o.width;var d=o.top,itemLeft=o.left;return $.ui.isOver(b+a,helperLeft+dxClick,d,itemLeft,c,itemWidth)};$.each(g.sortables,function(i){this.instance.positionAbs=g.positionAbs;this.instance.helperProportions=g.helperProportions;this.instance.offset.click=g.offset.click;if(this.instance._intersectsWith(this.instance.containerCache)){if(!this.instance.isOver){this.instance.isOver=1;this.instance.currentItem=$(self).clone().appendTo(this.instance.element).data("sortable-item",true);this.instance.options._helper=this.instance.options.helper;this.instance.options.helper=function(){return f.helper[0]};e.target=this.instance.currentItem[0];this.instance._mouseCapture(e,true);this.instance._mouseStart(e,true,true);this.instance.offset.click.top=g.offset.click.top;this.instance.offset.click.left=g.offset.click.left;this.instance.offset.parent.left-=g.offset.parent.left-this.instance.offset.parent.left;this.instance.offset.parent.top-=g.offset.parent.top-this.instance.offset.parent.top;g._trigger("toSortable",e);g.dropped=this.instance.element;g.currentItem=g.element;this.instance.fromOutside=g}if(this.instance.currentItem)this.instance._mouseDrag(e)}else{if(this.instance.isOver){this.instance.isOver=0;this.instance.cancelHelperRemoval=true;this.instance.options.revert=false;this.instance._trigger('out',e,this.instance._uiHash(this.instance));this.instance._mouseStop(e,true);this.instance.options.helper=this.instance.options._helper;this.instance.currentItem.remove();if(this.instance.placeholder)this.instance.placeholder.remove();g._trigger("fromSortable",e);g.dropped=false}}})}});$.ui.plugin.add("draggable","cursor",{start:function(a,b){var t=$('body'),o=$(this).data('draggable').options;if(t.css("cursor"))o._cursor=t.css("cursor");t.css("cursor",o.cursor)},stop:function(a,b){var o=$(this).data('draggable').options;if(o._cursor)$('body').css("cursor",o._cursor)}});$.ui.plugin.add("draggable","iframeFix",{start:function(a,b){var o=$(this).data('draggable').options;$(o.iframeFix===true?"iframe":o.iframeFix).each(function(){$('<div class="ui-draggable-iframeFix" style="background: #fff;"></div>').css({width:this.offsetWidth+"px",height:this.offsetHeight+"px",position:"absolute",opacity:"0.001",zIndex:1000}).css($(this).offset()).appendTo("body")})},stop:function(a,b){$("div.ui-draggable-iframeFix").each(function(){this.parentNode.removeChild(this)})}});$.ui.plugin.add("draggable","opacity",{start:function(a,b){var t=$(b.helper),o=$(this).data('draggable').options;if(t.css("opacity"))o._opacity=t.css("opacity");t.css('opacity',o.opacity)},stop:function(a,b){var o=$(this).data('draggable').options;if(o._opacity)$(b.helper).css('opacity',o._opacity)}});$.ui.plugin.add("draggable","scroll",{start:function(a,b){var i=$(this).data("draggable");if(i.scrollParent[0]!=document&&i.scrollParent[0].tagName!='HTML')i.overflowOffset=i.scrollParent.offset()},drag:function(a,b){var i=$(this).data("draggable"),o=i.options,scrolled=false;if(i.scrollParent[0]!=document&&i.scrollParent[0].tagName!='HTML'){if(!o.axis||o.axis!='x'){if((i.overflowOffset.top+i.scrollParent[0].offsetHeight)-a.pageY<o.scrollSensitivity)i.scrollParent[0].scrollTop=scrolled=i.scrollParent[0].scrollTop+o.scrollSpeed;else if(a.pageY-i.overflowOffset.top<o.scrollSensitivity)i.scrollParent[0].scrollTop=scrolled=i.scrollParent[0].scrollTop-o.scrollSpeed}if(!o.axis||o.axis!='y'){if((i.overflowOffset.left+i.scrollParent[0].offsetWidth)-a.pageX<o.scrollSensitivity)i.scrollParent[0].scrollLeft=scrolled=i.scrollParent[0].scrollLeft+o.scrollSpeed;else if(a.pageX-i.overflowOffset.left<o.scrollSensitivity)i.scrollParent[0].scrollLeft=scrolled=i.scrollParent[0].scrollLeft-o.scrollSpeed}}else{if(!o.axis||o.axis!='x'){if(a.pageY-$(document).scrollTop()<o.scrollSensitivity)scrolled=$(document).scrollTop($(document).scrollTop()-o.scrollSpeed);else if($(window).height()-(a.pageY-$(document).scrollTop())<o.scrollSensitivity)scrolled=$(document).scrollTop($(document).scrollTop()+o.scrollSpeed)}if(!o.axis||o.axis!='y'){if(a.pageX-$(document).scrollLeft()<o.scrollSensitivity)scrolled=$(document).scrollLeft($(document).scrollLeft()-o.scrollSpeed);else if($(window).width()-(a.pageX-$(document).scrollLeft())<o.scrollSensitivity)scrolled=$(document).scrollLeft($(document).scrollLeft()+o.scrollSpeed)}}if(scrolled!==false&&$.ui.ddmanager&&!o.dropBehaviour)$.ui.ddmanager.prepareOffsets(i,a)}});$.ui.plugin.add("draggable","snap",{start:function(c,d){var i=$(this).data("draggable"),o=i.options;i.snapElements=[];$(o.snap.constructor!=String?(o.snap.items||':data(draggable)'):o.snap).each(function(){var a=$(this);var b=a.offset();if(this!=i.element[0])i.snapElements.push({item:this,width:a.outerWidth(),height:a.outerHeight(),top:b.top,left:b.left})})},drag:function(a,c){var e=$(this).data("draggable"),o=e.options;var d=o.snapTolerance;var f=c.offset.left,x2=f+e.helperProportions.width,y1=c.offset.top,y2=y1+e.helperProportions.height;for(var i=e.snapElements.length-1;i>=0;i--){var l=e.snapElements[i].left,r=l+e.snapElements[i].width,t=e.snapElements[i].top,b=t+e.snapElements[i].height;if(!((l-d<f&&f<r+d&&t-d<y1&&y1<b+d)||(l-d<f&&f<r+d&&t-d<y2&&y2<b+d)||(l-d<x2&&x2<r+d&&t-d<y1&&y1<b+d)||(l-d<x2&&x2<r+d&&t-d<y2&&y2<b+d))){if(e.snapElements[i].snapping)(e.options.snap.release&&e.options.snap.release.call(e.element,a,$.extend(e._uiHash(),{snapItem:e.snapElements[i].item})));e.snapElements[i].snapping=false;continue}if(o.snapMode!='inner'){var g=Math.abs(t-y2)<=d;var h=Math.abs(b-y1)<=d;var j=Math.abs(l-x2)<=d;var k=Math.abs(r-f)<=d;if(g)c.position.top=e._convertPositionTo("relative",{top:t-e.helperProportions.height,left:0}).top-e.margins.top;if(h)c.position.top=e._convertPositionTo("relative",{top:b,left:0}).top-e.margins.top;if(j)c.position.left=e._convertPositionTo("relative",{top:0,left:l-e.helperProportions.width}).left-e.margins.left;if(k)c.position.left=e._convertPositionTo("relative",{top:0,left:r}).left-e.margins.left}var m=(g||h||j||k);if(o.snapMode!='outer'){var g=Math.abs(t-y1)<=d;var h=Math.abs(b-y2)<=d;var j=Math.abs(l-f)<=d;var k=Math.abs(r-x2)<=d;if(g)c.position.top=e._convertPositionTo("relative",{top:t,left:0}).top-e.margins.top;if(h)c.position.top=e._convertPositionTo("relative",{top:b-e.helperProportions.height,left:0}).top-e.margins.top;if(j)c.position.left=e._convertPositionTo("relative",{top:0,left:l}).left-e.margins.left;if(k)c.position.left=e._convertPositionTo("relative",{top:0,left:r-e.helperProportions.width}).left-e.margins.left}if(!e.snapElements[i].snapping&&(g||h||j||k||m))(e.options.snap.snap&&e.options.snap.snap.call(e.element,a,$.extend(e._uiHash(),{snapItem:e.snapElements[i].item})));e.snapElements[i].snapping=(g||h||j||k||m)}}});$.ui.plugin.add("draggable","stack",{start:function(c,d){var o=$(this).data("draggable").options;var e=$.makeArray($(o.stack.group)).sort(function(a,b){return(parseInt($(a).css("zIndex"),10)||o.stack.min)-(parseInt($(b).css("zIndex"),10)||o.stack.min)});$(e).each(function(i){this.style.zIndex=o.stack.min+i});this[0].style.zIndex=o.stack.min+e.length}});$.ui.plugin.add("draggable","zIndex",{start:function(a,b){var t=$(b.helper),o=$(this).data("draggable").options;if(t.css("zIndex"))o._zIndex=t.css("zIndex");t.css('zIndex',o.zIndex)},stop:function(a,b){var o=$(this).data("draggable").options;if(o._zIndex)$(b.helper).css('zIndex',o._zIndex)}})})(jQuery);
