(function(a){a.widget("ui.droppable",{init:function(){this.element.addClass("ui-droppable");this.isover=0;this.isout=1;var b=this.options,c=b.accept;b=a.extend(b,{accept:b.accept&&b.accept.constructor==Function?b.accept:function(d){return a(d).is(c);}});this.proportions={width:this.element[0].offsetWidth,height:this.element[0].offsetHeight};
a.ui.ddmanager.droppables.push(this);},plugins:{},ui:function(b){return{draggable:(b.currentItem||b.element),helper:b.helper,position:b.position,absolutePosition:b.positionAbs,options:this.options,element:this.element};},destroy:function(){var c=a.ui.ddmanager.droppables;for(var b=0;b<c.length;b++){if(c[b]==this){c.splice(b,1);
}}this.element.removeClass("ui-droppable ui-droppable-disabled").removeData("droppable").unbind(".droppable");},over:function(b){var c=a.ui.ddmanager.current;if(!c||(c.currentItem||c.element)[0]==this.element[0]){return;}if(this.options.accept.call(this.element,(c.currentItem||c.element))){a.ui.plugin.call(this,"over",[b,this.ui(c)]);
this.element.triggerHandler("dropover",[b,this.ui(c)],this.options.over);}},out:function(b){var c=a.ui.ddmanager.current;if(!c||(c.currentItem||c.element)[0]==this.element[0]){return;}if(this.options.accept.call(this.element,(c.currentItem||c.element))){a.ui.plugin.call(this,"out",[b,this.ui(c)]);this.element.triggerHandler("dropout",[b,this.ui(c)],this.options.out);
}},drop:function(c,d){var e=d||a.ui.ddmanager.current;if(!e||(e.currentItem||e.element)[0]==this.element[0]){return false;}var b=false;this.element.find(".ui-droppable").not(".ui-draggable-dragging").each(function(){var f=a.data(this,"droppable");if(f.options.greedy&&a.ui.intersect(e,a.extend(f,{offset:f.element.offset()}),f.options.tolerance)){b=true;
return false;}});if(b){return false;}if(this.options.accept.call(this.element,(e.currentItem||e.element))){a.ui.plugin.call(this,"drop",[c,this.ui(e)]);this.element.triggerHandler("drop",[c,this.ui(e)],this.options.drop);return true;}return false;},activate:function(b){var c=a.ui.ddmanager.current;a.ui.plugin.call(this,"activate",[b,this.ui(c)]);
if(c){this.element.triggerHandler("dropactivate",[b,this.ui(c)],this.options.activate);}},deactivate:function(b){var c=a.ui.ddmanager.current;a.ui.plugin.call(this,"deactivate",[b,this.ui(c)]);if(c){this.element.triggerHandler("dropdeactivate",[b,this.ui(c)],this.options.deactivate);}}});a.extend(a.ui.droppable,{defaults:{disabled:false,tolerance:"intersect"}});
a.ui.intersect=function(e,k,g){if(!k.offset){return false;}var b=(e.positionAbs||e.position.absolute).left,c=b+e.helperProportions.width,h=(e.positionAbs||e.position.absolute).top,i=h+e.helperProportions.height;var l=k.offset.left,d=l+k.proportions.width,f=k.offset.top,j=f+k.proportions.height;switch(g){case"fit":return(l<b&&c<d&&f<h&&i<j);
break;case"intersect":return(l<b+(e.helperProportions.width/2)&&c-(e.helperProportions.width/2)<d&&f<h+(e.helperProportions.height/2)&&i-(e.helperProportions.height/2)<j);break;case"pointer":return(l<((e.positionAbs||e.position.absolute).left+(e.clickOffset||e.offset.click).left)&&((e.positionAbs||e.position.absolute).left+(e.clickOffset||e.offset.click).left)<d&&f<((e.positionAbs||e.position.absolute).top+(e.clickOffset||e.offset.click).top)&&((e.positionAbs||e.position.absolute).top+(e.clickOffset||e.offset.click).top)<j);
break;case"touch":return((h>=f&&h<=j)||(i>=f&&i<=j)||(h<f&&i>j))&&((b>=l&&b<=d)||(c>=l&&c<=d)||(b<l&&c>d));break;default:return false;break;}};a.ui.ddmanager={current:null,droppables:[],prepareOffsets:function(d,b){var f=a.ui.ddmanager.droppables;var c=b?b.type:null;for(var e=0;e<f.length;e++){if(f[e].options.disabled||(d&&!f[e].options.accept.call(f[e].element,(d.currentItem||d.element)))){continue;
}f[e].visible=f[e].element.css("display")!="none";if(!f[e].visible){continue;}f[e].offset=f[e].element.offset();f[e].proportions={width:f[e].element[0].offsetWidth,height:f[e].element[0].offsetHeight};if(c=="dragstart"||c=="sortactivate"){f[e].activate.call(f[e],b);}}},drop:function(d,c){var b=false;
a.each(a.ui.ddmanager.droppables,function(){if(!this.options){return;}if(!this.options.disabled&&this.visible&&a.ui.intersect(d,this,this.options.tolerance)){b=this.drop.call(this,c);}if(!this.options.disabled&&this.visible&&this.options.accept.call(this.element,(d.currentItem||d.element))){this.isout=1;
this.isover=0;this.deactivate.call(this,c);}});return b;},drag:function(c,b){if(c.options.refreshPositions){a.ui.ddmanager.prepareOffsets(c,b);}a.each(a.ui.ddmanager.droppables,function(){if(this.options.disabled||this.greedyChild||!this.visible){return;}var f=a.ui.intersect(c,this,this.options.tolerance);
var d=!f&&this.isover==1?"isout":(f&&this.isover==0?"isover":null);if(!d){return;}var e;if(this.options.greedy){var g=this.element.parents(".ui-droppable:eq(0)");if(g.length){e=a.data(g[0],"droppable");e.greedyChild=(d=="isover"?1:0);}}if(e&&d=="isover"){e["isover"]=0;e["isout"]=1;e.out.call(e,b);}this[d]=1;
this[d=="isout"?"isover":"isout"]=0;this[d=="isover"?"over":"out"].call(this,b);if(e&&d=="isout"){e["isout"]=0;e["isover"]=1;e.over.call(e,b);}});}};a.ui.plugin.add("droppable","activeClass",{activate:function(b,c){a(this).addClass(c.options.activeClass);},deactivate:function(b,c){a(this).removeClass(c.options.activeClass);
},drop:function(b,c){a(this).removeClass(c.options.activeClass);}});a.ui.plugin.add("droppable","hoverClass",{over:function(b,c){a(this).addClass(c.options.hoverClass);},out:function(b,c){a(this).removeClass(c.options.hoverClass);},drop:function(b,c){a(this).removeClass(c.options.hoverClass);}});})(jQuery);

