1 /*! jQuery UI - v1.9.0 - 2012-10-08
3 * Includes: jquery.ui.selectable.js
4 * Copyright 2012 jQuery Foundation and other contributors; Licensed MIT */
5 (function(e
,t
){e
.widget("ui.selectable",e
.ui
.mouse
,{version
:"1.9.0",options
:{appendTo
:"body",autoRefresh
:!0,distance
:0,filter
:"*",tolerance
:"touch"},_create:function(){var t
=this;this.element
.addClass("ui-selectable"),this.dragged
=!1;var n
;this.refresh=function(){n
=e(t
.options
.filter
,t
.element
[0]),n
.addClass("ui-selectee"),n
.each(function(){var t
=e(this),n
=t
.offset();e
.data(this,"selectable-item",{element
:this,$element
:t
,left
:n
.left
,top
:n
.top
,right
:n
.left
+t
.outerWidth(),bottom
:n
.top
+t
.outerHeight(),startselected
:!1,selected
:t
.hasClass("ui-selected"),selecting
:t
.hasClass("ui-selecting"),unselecting
:t
.hasClass("ui-unselecting")})})},this.refresh(),this.selectees
=n
.addClass("ui-selectee"),this._mouseInit(),this.helper
=e("<div class='ui-selectable-helper'></div>")},_destroy:function(){this.selectees
.removeClass("ui-selectee").removeData("selectable-item"),this.element
.removeClass("ui-selectable ui-selectable-disabled"),this._mouseDestroy()},_mouseStart:function(t
){var n
=this;this.opos
=[t
.pageX
,t
.pageY
];if(this.options
.disabled
)return;var r
=this.options
;this.selectees
=e(r
.filter
,this.element
[0]),this._trigger("start",t
),e(r
.appendTo
).append(this.helper
),this.helper
.css({left
:t
.clientX
,top
:t
.clientY
,width
:0,height
:0}),r
.autoRefresh
&&this.refresh(),this.selectees
.filter(".ui-selected").each(function(){var r
=e
.data(this,"selectable-item");r
.startselected
=!0,!t
.metaKey
&&!t
.ctrlKey
&&(r
.$element
.removeClass("ui-selected"),r
.selected
=!1,r
.$element
.addClass("ui-unselecting"),r
.unselecting
=!0,n
._trigger("unselecting",t
,{unselecting
:r
.element
}))}),e(t
.target
).parents().andSelf().each(function(){var r
=e
.data(this,"selectable-item");if(r
){var i
=!t
.metaKey
&&!t
.ctrlKey
||!r
.$element
.hasClass("ui-selected");return r
.$element
.removeClass(i
?"ui-unselecting":"ui-selected").addClass(i
?"ui-selecting":"ui-unselecting"),r
.unselecting
=!i
,r
.selecting
=i
,r
.selected
=i
,i
?n
._trigger("selecting",t
,{selecting
:r
.element
}):n
._trigger("unselecting",t
,{unselecting
:r
.element
}),!1}})},_mouseDrag:function(t
){var n
=this;this.dragged
=!0;if(this.options
.disabled
)return;var r
=this.options
,i
=this.opos
[0],s
=this.opos
[1],o
=t
.pageX
,u
=t
.pageY
;if(i
>o
){var a
=o
;o
=i
,i
=a
}if(s
>u
){var a
=u
;u
=s
,s
=a
}return this.helper
.css({left
:i
,top
:s
,width
:o
-i
,height
:u
-s
}),this.selectees
.each(function(){var a
=e
.data(this,"selectable-item");if(!a
||a
.element
==n
.element
[0])return;var f
=!1;r
.tolerance
=="touch"?f
=!(a
.left
>o
||a
.right
<i
||a
.top
>u
||a
.bottom
<s
):r
.tolerance
=="fit"&&(f
=a
.left
>i
&&a
.right
<o
&&a
.top
>s
&&a
.bottom
<u
),f
?(a
.selected
&&(a
.$element
.removeClass("ui-selected"),a
.selected
=!1),a
.unselecting
&&(a
.$element
.removeClass("ui-unselecting"),a
.unselecting
=!1),a
.selecting
||(a
.$element
.addClass("ui-selecting"),a
.selecting
=!0,n
._trigger("selecting",t
,{selecting
:a
.element
}))):(a
.selecting
&&((t
.metaKey
||t
.ctrlKey
)&&a
.startselected
?(a
.$element
.removeClass("ui-selecting"),a
.selecting
=!1,a
.$element
.addClass("ui-selected"),a
.selected
=!0):(a
.$element
.removeClass("ui-selecting"),a
.selecting
=!1,a
.startselected
&&(a
.$element
.addClass("ui-unselecting"),a
.unselecting
=!0),n
._trigger("unselecting",t
,{unselecting
:a
.element
}))),a
.selected
&&!t
.metaKey
&&!t
.ctrlKey
&&!a
.startselected
&&(a
.$element
.removeClass("ui-selected"),a
.selected
=!1,a
.$element
.addClass("ui-unselecting"),a
.unselecting
=!0,n
._trigger("unselecting",t
,{unselecting
:a
.element
})))}),!1},_mouseStop:function(t
){var n
=this;this.dragged
=!1;var r
=this.options
;return e(".ui-unselecting",this.element
[0]).each(function(){var r
=e
.data(this,"selectable-item");r
.$element
.removeClass("ui-unselecting"),r
.unselecting
=!1,r
.startselected
=!1,n
._trigger("unselected",t
,{unselected
:r
.element
})}),e(".ui-selecting",this.element
[0]).each(function(){var r
=e
.data(this,"selectable-item");r
.$element
.removeClass("ui-selecting").addClass("ui-selected"),r
.selecting
=!1,r
.selected
=!0,r
.startselected
=!0,n
._trigger("selected",t
,{selected
:r
.element
})}),this._trigger("stop",t
),this.helper
.remove(),!1}})})(jQuery
);