﻿(function(B){B.widget("ui.draggable",B.extend({},B.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(D){var A=this.options;if(this.helper||A.disabled||B(D.target).is(".ui-resizable-handle")){return false}this.handle=this._getHandle(D);if(!this.handle){return false}return true},_mouseStart:function(D){var A=this.options;this.helper=this._createHelper(D);this._cacheHelperProportions();if(B.ui.ddmanager){B.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};B.extend(this.offset,{click:{left:D.pageX-this.offset.left,top:D.pageY-this.offset.top},parent:this._getParentOffset(),relative:this._getRelativeOffset()});this.originalPosition=this._generatePosition(D);this.originalPageX=D.pageX;this.originalPageY=D.pageY;if(A.cursorAt){this._adjustOffsetFromHelper(A.cursorAt)}if(A.containment){this._setContainment()}this._trigger("start",D);this._cacheHelperProportions();if(B.ui.ddmanager&&!A.dropBehaviour){B.ui.ddmanager.prepareOffsets(this,D)}this.helper.addClass("ui-draggable-dragging");this._mouseDrag(D,true);return true},_mouseDrag:function(F,A){this.position=this._generatePosition(F);this.positionAbs=this._convertPositionTo("absolute");if(!A){var E=this._uiHash();this._trigger("drag",F,E);this.position=E.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(B.ui.ddmanager){B.ui.ddmanager.drag(this,F)}return false},_mouseStop:function(A){var F=false;if(B.ui.ddmanager&&!this.options.dropBehaviour){F=B.ui.ddmanager.drop(this,A)}if(this.dropped){F=this.dropped;this.dropped=false}if((this.options.revert=="invalid"&&!F)||(this.options.revert=="valid"&&F)||this.options.revert===true||(B.isFunction(this.options.revert)&&this.options.revert.call(this.element,F))){var E=this;B(this.helper).animate(this.originalPosition,parseInt(this.options.revertDuration,10),function(){E._trigger("stop",A);E._clear()})}else{this._trigger("stop",A);this._clear()}return false},_getHandle:function(A){var D=!this.options.handle||!B(this.options.handle,this.element).length?true:false;B(this.options.handle,this.element).find("*").andSelf().each(function(){if(this==A.target){D=true}});return D},_createHelper:function(F){var A=this.options;var E=B.isFunction(A.helper)?B(A.helper.apply(this.element[0],[F])):(A.helper=="clone"?this.element.clone():this.element);if(!E.parents("body").length){E.appendTo((A.appendTo=="parent"?this.element[0].parentNode:A.appendTo))}if(E[0]!=this.element[0]&&!(/(fixed|absolute)/).test(E.css("position"))){E.css("position","absolute")}return E},_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&&B.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"&&B.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 A=this.element.position();return{top:A.top-(parseInt(this.helper.css("top"),10)||0)+this.scrollParent.scrollTop(),left:A.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 F=this.options;if(F.containment=="parent"){F.containment=this.helper[0].parentNode}if(F.containment=="document"||F.containment=="window"){this.containment=[0-this.offset.relative.left-this.offset.parent.left,0-this.offset.relative.top-this.offset.parent.top,B(F.containment=="document"?document:window).width()-this.helperProportions.width-this.margins.left,(B(F.containment=="document"?document:window).height()||document.body.parentNode.scrollHeight)-this.helperProportions.height-this.margins.top]}if(!(/^(document|window|parent)$/).test(F.containment)&&F.containment.constructor!=Array){var G=B(F.containment)[0];if(!G){return}var H=B(F.containment).offset();var A=(B(G).css("overflow")!="hidden");this.containment=[H.left+(parseInt(B(G).css("borderLeftWidth"),10)||0)+(parseInt(B(G).css("paddingLeft"),10)||0)-this.margins.left,H.top+(parseInt(B(G).css("borderTopWidth"),10)||0)+(parseInt(B(G).css("paddingTop"),10)||0)-this.margins.top,H.left+(A?Math.max(G.scrollWidth,G.offsetWidth):G.offsetWidth)-(parseInt(B(G).css("borderLeftWidth"),10)||0)-(parseInt(B(G).css("paddingRight"),10)||0)-this.helperProportions.width-this.margins.left,H.top+(A?Math.max(G.scrollHeight,G.offsetHeight):G.offsetHeight)-(parseInt(B(G).css("borderTopWidth"),10)||0)-(parseInt(B(G).css("paddingBottom"),10)||0)-this.helperProportions.height-this.margins.top]}else{if(F.containment.constructor==Array){this.containment=F.containment}}},_convertPositionTo:function(K,J){if(!J){J=this.position}var A=K=="absolute"?1:-1;var I=this.options,L=this.cssPosition=="absolute"&&!(this.scrollParent[0]!=document&&B.ui.contains(this.scrollParent[0],this.offsetParent[0]))?this.offsetParent:this.scrollParent,H=(/(html|body)/i).test(L[0].tagName);return{top:(J.top+this.offset.relative.top*A+this.offset.parent.top*A-(B.browser.safari&&this.cssPosition=="fixed"?0:(this.cssPosition=="fixed"?-this.scrollParent.scrollTop():(H?0:L.scrollTop()))*A)),left:(J.left+this.offset.relative.left*A+this.offset.parent.left*A-(B.browser.safari&&this.cssPosition=="fixed"?0:(this.cssPosition=="fixed"?-this.scrollParent.scrollLeft():H?0:L.scrollLeft())*A))}},_generatePosition:function(N){var M=this.options,P=this.cssPosition=="absolute"&&!(this.scrollParent[0]!=document&&B.ui.contains(this.scrollParent[0],this.offsetParent[0]))?this.offsetParent:this.scrollParent,O=(/(html|body)/i).test(P[0].tagName);if(this.cssPosition=="relative"&&!(this.scrollParent[0]!=document&&this.scrollParent[0]!=this.offsetParent[0])){this.offset.relative=this._getRelativeOffset()}var K=N.pageX;var L=N.pageY;if(this.originalPosition){if(this.containment){if(N.pageX-this.offset.click.left<this.containment[0]){K=this.containment[0]+this.offset.click.left}if(N.pageY-this.offset.click.top<this.containment[1]){L=this.containment[1]+this.offset.click.top}if(N.pageX-this.offset.click.left>this.containment[2]){K=this.containment[2]+this.offset.click.left}if(N.pageY-this.offset.click.top>this.containment[3]){L=this.containment[3]+this.offset.click.top}}if(M.grid){var J=this.originalPageY+Math.round((L-this.originalPageY)/M.grid[1])*M.grid[1];L=this.containment?(!(J-this.offset.click.top<this.containment[1]||J-this.offset.click.top>this.containment[3])?J:(!(J-this.offset.click.top<this.containment[1])?J-M.grid[1]:J+M.grid[1])):J;var A=this.originalPageX+Math.round((K-this.originalPageX)/M.grid[0])*M.grid[0];K=this.containment?(!(A-this.offset.click.left<this.containment[0]||A-this.offset.click.left>this.containment[2])?A:(!(A-this.offset.click.left<this.containment[0])?A-M.grid[0]:A+M.grid[0])):A}}return{top:(L-this.offset.click.top-this.offset.relative.top-this.offset.parent.top+(B.browser.safari&&this.cssPosition=="fixed"?0:(this.cssPosition=="fixed"?-this.scrollParent.scrollTop():(O?0:P.scrollTop())))),left:(K-this.offset.click.left-this.offset.relative.left-this.offset.parent.left+(B.browser.safari&&this.cssPosition=="fixed"?0:(this.cssPosition=="fixed"?-this.scrollParent.scrollLeft():O?0:P.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(E,F,A){A=A||this._uiHash();B.ui.plugin.call(this,E,[F,A]);if(E=="drag"){this.positionAbs=this._convertPositionTo("absolute")}return B.widget.prototype._trigger.call(this,E,F,A)},plugins:{},_uiHash:function(A){return{helper:this.helper,position:this.position,absolutePosition:this.positionAbs,offset:this.positionAbs}}}));B.extend(B.ui.draggable,{version:"1.7.1",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}});B.ui.plugin.add("draggable","connectToSortable",{start:function(I,H){var G=B(this).data("draggable"),J=G.options,A=B.extend({},H,{item:G.element});G.sortables=[];B(J.connectToSortable).each(function(){var C=B.data(this,"sortable");if(C&&!C.options.disabled){G.sortables.push({instance:C,shouldRevert:C.options.revert});C._refreshItems();C._trigger("activate",I,A)}})},stop:function(H,G){var F=B(this).data("draggable"),A=B.extend({},G,{item:F.element});B.each(F.sortables,function(){if(this.instance.isOver){this.instance.isOver=0;F.cancelHelperRemoval=true;this.instance.cancelHelperRemoval=false;if(this.shouldRevert){this.instance.options.revert=true}this.instance._mouseStop(H);this.instance.options.helper=this.instance.options._helper;if(F.options.helper=="original"){this.instance.currentItem.css({top:"auto",left:"auto"})}}else{this.instance.cancelHelperRemoval=false;this.instance._trigger("deactivate",H,A)}})},drag:function(I,H){var A=B(this).data("draggable"),J=this;var G=function(E){var S=this.offset.click.top,R=this.offset.click.left;var D=this.positionAbs.top,Q=this.positionAbs.left;var F=E.height,T=E.width;var C=E.top,P=E.left;return B.ui.isOver(D+S,Q+R,C,P,F,T)};B.each(A.sortables,function(C){this.instance.positionAbs=A.positionAbs;this.instance.helperProportions=A.helperProportions;this.instance.offset.click=A.offset.click;if(this.instance._intersectsWith(this.instance.containerCache)){if(!this.instance.isOver){this.instance.isOver=1;this.instance.currentItem=B(J).clone().appendTo(this.instance.element).data("sortable-item",true);this.instance.options._helper=this.instance.options.helper;this.instance.options.helper=function(){return H.helper[0]};I.target=this.instance.currentItem[0];this.instance._mouseCapture(I,true);this.instance._mouseStart(I,true,true);this.instance.offset.click.top=A.offset.click.top;this.instance.offset.click.left=A.offset.click.left;this.instance.offset.parent.left-=A.offset.parent.left-this.instance.offset.parent.left;this.instance.offset.parent.top-=A.offset.parent.top-this.instance.offset.parent.top;A._trigger("toSortable",I);A.dropped=this.instance.element;A.currentItem=A.element;this.instance.fromOutside=A}if(this.instance.currentItem){this.instance._mouseDrag(I)}}else{if(this.instance.isOver){this.instance.isOver=0;this.instance.cancelHelperRemoval=true;this.instance.options.revert=false;this.instance._trigger("out",I,this.instance._uiHash(this.instance));this.instance._mouseStop(I,true);this.instance.options.helper=this.instance.options._helper;this.instance.currentItem.remove();if(this.instance.placeholder){this.instance.placeholder.remove()}A._trigger("fromSortable",I);A.dropped=false}}})}});B.ui.plugin.add("draggable","cursor",{start:function(G,F){var A=B("body"),H=B(this).data("draggable").options;if(A.css("cursor")){H._cursor=A.css("cursor")}A.css("cursor",H.cursor)},stop:function(F,E){var A=B(this).data("draggable").options;if(A._cursor){B("body").css("cursor",A._cursor)}}});B.ui.plugin.add("draggable","iframeFix",{start:function(F,E){var A=B(this).data("draggable").options;B(A.iframeFix===true?"iframe":A.iframeFix).each(function(){B('<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(B(this).offset()).appendTo("body")})},stop:function(D,A){B("div.ui-draggable-iframeFix").each(function(){this.parentNode.removeChild(this)})}});B.ui.plugin.add("draggable","opacity",{start:function(G,F){var A=B(F.helper),H=B(this).data("draggable").options;if(A.css("opacity")){H._opacity=A.css("opacity")}A.css("opacity",H.opacity)},stop:function(F,E){var A=B(this).data("draggable").options;if(A._opacity){B(E.helper).css("opacity",A._opacity)}}});B.ui.plugin.add("draggable","scroll",{start:function(E,A){var F=B(this).data("draggable");if(F.scrollParent[0]!=document&&F.scrollParent[0].tagName!="HTML"){F.overflowOffset=F.scrollParent.offset()}},drag:function(I,H){var J=B(this).data("draggable"),G=J.options,A=false;if(J.scrollParent[0]!=document&&J.scrollParent[0].tagName!="HTML"){if(!G.axis||G.axis!="x"){if((J.overflowOffset.top+J.scrollParent[0].offsetHeight)-I.pageY<G.scrollSensitivity){J.scrollParent[0].scrollTop=A=J.scrollParent[0].scrollTop+G.scrollSpeed}else{if(I.pageY-J.overflowOffset.top<G.scrollSensitivity){J.scrollParent[0].scrollTop=A=J.scrollParent[0].scrollTop-G.scrollSpeed}}}if(!G.axis||G.axis!="y"){if((J.overflowOffset.left+J.scrollParent[0].offsetWidth)-I.pageX<G.scrollSensitivity){J.scrollParent[0].scrollLeft=A=J.scrollParent[0].scrollLeft+G.scrollSpeed}else{if(I.pageX-J.overflowOffset.left<G.scrollSensitivity){J.scrollParent[0].scrollLeft=A=J.scrollParent[0].scrollLeft-G.scrollSpeed}}}}else{if(!G.axis||G.axis!="x"){if(I.pageY-B(document).scrollTop()<G.scrollSensitivity){A=B(document).scrollTop(B(document).scrollTop()-G.scrollSpeed)}else{if(B(window).height()-(I.pageY-B(document).scrollTop())<G.scrollSensitivity){A=B(document).scrollTop(B(document).scrollTop()+G.scrollSpeed)}}}if(!G.axis||G.axis!="y"){if(I.pageX-B(document).scrollLeft()<G.scrollSensitivity){A=B(document).scrollLeft(B(document).scrollLeft()-G.scrollSpeed)}else{if(B(window).width()-(I.pageX-B(document).scrollLeft())<G.scrollSensitivity){A=B(document).scrollLeft(B(document).scrollLeft()+G.scrollSpeed)}}}}if(A!==false&&B.ui.ddmanager&&!G.dropBehaviour){B.ui.ddmanager.prepareOffsets(J,I)}}});B.ui.plugin.add("draggable","snap",{start:function(G,F){var H=B(this).data("draggable"),A=H.options;H.snapElements=[];B(A.snap.constructor!=String?(A.snap.items||":data(draggable)"):A.snap).each(function(){var C=B(this);var D=C.offset();if(this!=H.element[0]){H.snapElements.push({item:this,width:C.outerWidth(),height:C.outerHeight(),top:D.top,left:D.left})}})},drag:function(h,Z){var X=B(this).data("draggable"),c=X.options;var A=c.snapTolerance;var d=Z.offset.left,U=d+X.helperProportions.width,e=Z.offset.top,V=e+X.helperProportions.height;for(var a=X.snapElements.length-1;a>=0;a--){var b=X.snapElements[a].left,j=b+X.snapElements[a].width,l=X.snapElements[a].top,f=l+X.snapElements[a].height;if(!((b-A<d&&d<j+A&&l-A<e&&e<f+A)||(b-A<d&&d<j+A&&l-A<V&&V<f+A)||(b-A<U&&U<j+A&&l-A<e&&e<f+A)||(b-A<U&&U<j+A&&l-A<V&&V<f+A))){if(X.snapElements[a].snapping){(X.options.snap.release&&X.options.snap.release.call(X.element,h,B.extend(X._uiHash(),{snapItem:X.snapElements[a].item})))}X.snapElements[a].snapping=false;continue}if(c.snapMode!="inner"){var g=Math.abs(l-V)<=A;var Y=Math.abs(f-e)<=A;var i=Math.abs(b-U)<=A;var W=Math.abs(j-d)<=A;if(g){Z.position.top=X._convertPositionTo("relative",{top:l-X.helperProportions.height,left:0}).top-X.margins.top}if(Y){Z.position.top=X._convertPositionTo("relative",{top:f,left:0}).top-X.margins.top}if(i){Z.position.left=X._convertPositionTo("relative",{top:0,left:b-X.helperProportions.width}).left-X.margins.left}if(W){Z.position.left=X._convertPositionTo("relative",{top:0,left:j}).left-X.margins.left}}var k=(g||Y||i||W);if(c.snapMode!="outer"){var g=Math.abs(l-e)<=A;var Y=Math.abs(f-V)<=A;var i=Math.abs(b-d)<=A;var W=Math.abs(j-U)<=A;if(g){Z.position.top=X._convertPositionTo("relative",{top:l,left:0}).top-X.margins.top}if(Y){Z.position.top=X._convertPositionTo("relative",{top:f-X.helperProportions.height,left:0}).top-X.margins.top}if(i){Z.position.left=X._convertPositionTo("relative",{top:0,left:b}).left-X.margins.left}if(W){Z.position.left=X._convertPositionTo("relative",{top:0,left:j-X.helperProportions.width}).left-X.margins.left}}if(!X.snapElements[a].snapping&&(g||Y||i||W||k)){(X.options.snap.snap&&X.options.snap.snap.call(X.element,h,B.extend(X._uiHash(),{snapItem:X.snapElements[a].item})))}X.snapElements[a].snapping=(g||Y||i||W||k)}}});B.ui.plugin.add("draggable","stack",{start:function(G,F){var A=B(this).data("draggable").options;var H=B.makeArray(B(A.stack.group)).sort(function(D,C){return(parseInt(B(D).css("zIndex"),10)||A.stack.min)-(parseInt(B(C).css("zIndex"),10)||A.stack.min)});B(H).each(function(C){this.style.zIndex=A.stack.min+C});this[0].style.zIndex=A.stack.min+H.length}});B.ui.plugin.add("draggable","zIndex",{start:function(G,F){var A=B(F.helper),H=B(this).data("draggable").options;if(A.css("zIndex")){H._zIndex=A.css("zIndex")}A.css("zIndex",H.zIndex)},stop:function(F,E){var A=B(this).data("draggable").options;if(A._zIndex){B(E.helper).css("zIndex",A._zIndex)}}})})(jQuery);