2012-07-23 20:14:55 +00:00
/ *
2012-08-12 16:25:23 +00:00
Copyright 2012 Igor Vaynberg
2012-09-28 17:56:12 +00:00
Version : 3.2 Timestamp : Mon Sep 10 10 : 38 : 04 PDT 2012
2012-08-12 16:25:23 +00:00
Licensed under the Apache License , Version 2.0 ( the "License" ) ; you may not use this work except in
compliance with the License . You may obtain a copy of the License in the LICENSE file , or at :
http : //www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing , software distributed under the License is
distributed on an "AS IS" BASIS , WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND , either express or implied .
See the License for the specific language governing permissions and limitations under the License .
* /
2012-09-28 17:56:12 +00:00
( function ( e ) { "undefined" == typeof e . fn . each2 && e . fn . extend ( { each2 : function ( g ) { for ( var i = e ( [ 0 ] ) , m = - 1 , s = this . length ; ++ m < s && ( i . context = i [ 0 ] = this [ m ] ) && ! 1 !== g . call ( i [ 0 ] , m , i ) ; ) ; return this } } ) } ) ( jQuery ) ;
( function ( e , g ) { function i ( a , b ) { var c = 0 , d = b . length , j ; if ( "undefined" === typeof a ) return - 1 ; if ( a . constructor === String ) for ( ; c < d ; c += 1 ) { if ( 0 === a . localeCompare ( b [ c ] ) ) return c } else for ( ; c < d ; c += 1 ) if ( j = b [ c ] , j . constructor === String ) { if ( 0 === j . localeCompare ( a ) ) return c } else if ( j === a ) return c ; return - 1 } function m ( a , b ) { return a === b ? ! 0 : a === g || b === g || null === a || null === b ? ! 1 : a . constructor === String ? 0 === a . localeCompare ( b ) : b . constructor === String ? 0 === b . localeCompare ( a ) : ! 1 } function s ( a , b ) { var c , d , j ; if ( null === a || 1 > a . length ) return [ ] ;
c = a . split ( b ) ; d = 0 ; for ( j = c . length ; d < j ; d += 1 ) c [ d ] = e . trim ( c [ d ] ) ; return c } function A ( a , b , c ) { var c = c || g , d ; return function ( ) { var j = arguments ; window . clearTimeout ( d ) ; d = window . setTimeout ( function ( ) { b . apply ( c , j ) } , a ) } } function l ( a ) { a . preventDefault ( ) ; a . stopPropagation ( ) } function B ( a , b , c ) { var d = a . toUpperCase ( ) . indexOf ( b . toUpperCase ( ) ) , b = b . length ; 0 > d ? c . push ( a ) : ( c . push ( a . substring ( 0 , d ) ) , c . push ( "<span class='select2-match'>" ) , c . push ( a . substring ( d , d + b ) ) , c . push ( "</span>" ) , c . push ( a . substring ( d + b , a . length ) ) ) } function C ( a ) { var b ,
c = 0 , d = null , j = a . quietMillis || 100 ; return function ( h ) { window . clearTimeout ( b ) ; b = window . setTimeout ( function ( ) { var b = c += 1 , j = a . data , n = a . transport || e . ajax , f = a . traditional || ! 1 , g = a . type || "GET" , j = j . call ( this , h . term , h . page , h . context ) ; null !== d && d . abort ( ) ; d = n . call ( null , { url : a . url , dataType : a . dataType , data : j , type : g , traditional : f , success : function ( d ) { b < c || ( d = a . results ( d , h . page ) , h . callback ( d ) ) } } ) } , j ) } } function D ( a ) { var b = a , c , d = function ( a ) { return "" + a . text } ; e . isArray ( b ) || ( d = b . text , e . isFunction ( d ) || ( c = b . text , d = function ( a ) { return a [ c ] } ) ,
b = b . results ) ; return function ( a ) { var c = a . term , f = { results : [ ] } , k ; if ( c === "" ) a . callback ( { results : b } ) ; else { k = function ( b , f ) { var g , t , b = b [ 0 ] ; if ( b . children ) { g = { } ; for ( t in b ) b . hasOwnProperty ( t ) && ( g [ t ] = b [ t ] ) ; g . children = [ ] ; e ( b . children ) . each2 ( function ( a , b ) { k ( b , g . children ) } ) ; g . children . length && f . push ( g ) } else a . matcher ( c , d ( b ) ) && f . push ( b ) } ; e ( b ) . each2 ( function ( a , b ) { k ( b , f . results ) } ) ; a . callback ( f ) } } } function E ( a ) { return e . isFunction ( a ) ? a : function ( b ) { var c = b . term , d = { results : [ ] } ; e ( a ) . each ( function ( ) { var a = this . text !==
g , e = a ? this . text : this ; if ( "" === c || b . matcher ( c , e ) ) d . results . push ( a ? this : { id : this , text : this } ) } ) ; b . callback ( d ) } } function u ( a ) { if ( e . isFunction ( a ) ) return ! 0 ; if ( ! a ) return ! 1 ; throw Error ( "formatterName must be a function or a falsy value" ) ; } function v ( a ) { return e . isFunction ( a ) ? a ( ) : a } function F ( a ) { var b = 0 ; e . each ( a , function ( a , d ) { d . children ? b += F ( d . children ) : b ++ } ) ; return b } function H ( a , b , c , d ) { var e = a , h = ! 1 , f , k , n , o ; if ( ! d . createSearchChoice || ! d . tokenSeparators || 1 > d . tokenSeparators . length ) return g ; for ( ; ; ) { h = - 1 ; k = 0 ;
for ( n = d . tokenSeparators . length ; k < n && ! ( o = d . tokenSeparators [ k ] , h = a . indexOf ( o ) , 0 <= h ) ; k ++ ) ; if ( 0 > h ) break ; f = a . substring ( 0 , h ) ; a = a . substring ( h + o . length ) ; if ( 0 < f . length && ( f = d . createSearchChoice ( f , b ) , f !== g && null !== f && d . id ( f ) !== g && null !== d . id ( f ) ) ) { h = ! 1 ; k = 0 ; for ( n = b . length ; k < n ; k ++ ) if ( m ( d . id ( f ) , d . id ( b [ k ] ) ) ) { h = ! 0 ; break } h || c ( f ) } } if ( 0 != e . localeCompare ( a ) ) return a } function x ( a , b ) { var c = function ( ) { } ; c . prototype = new a ; c . prototype . constructor = c ; c . prototype . parent = a . prototype ; c . prototype = e . extend ( c . prototype , b ) ; return c }
if ( window . Select2 === g ) { var f , w , y , z , G , q ; f = { TAB : 9 , ENTER : 13 , ESC : 27 , SPACE : 32 , LEFT : 37 , UP : 38 , RIGHT : 39 , DOWN : 40 , SHIFT : 16 , CTRL : 17 , ALT : 18 , PAGE _UP : 33 , PAGE _DOWN : 34 , HOME : 36 , END : 35 , BACKSPACE : 8 , DELETE : 46 , isArrow : function ( a ) { a = a . which ? a . which : a ; switch ( a ) { case f . LEFT : case f . RIGHT : case f . UP : case f . DOWN : return ! 0 } return ! 1 } , isControl : function ( a ) { switch ( a . which ) { case f . SHIFT : case f . CTRL : case f . ALT : return ! 0 } return a . metaKey ? ! 0 : ! 1 } , isFunctionKey : function ( a ) { a = a . which ? a . which : a ; return 112 <= a && 123 >= a } } ; var I = 1 ; G = function ( ) { return I ++ } ;
e ( document ) . delegate ( "body" , "mousemove" , function ( a ) { e . data ( document , "select2-lastpos" , { x : a . pageX , y : a . pageY } ) } ) ; e ( document ) . ready ( function ( ) { e ( document ) . delegate ( "body" , "mousedown touchend" , function ( a ) { var b = e ( a . target ) . closest ( "div.select2-container" ) . get ( 0 ) , c ; b ? e ( document ) . find ( "div.select2-container-active" ) . each ( function ( ) { this !== b && e ( this ) . data ( "select2" ) . blur ( ) } ) : ( b = e ( a . target ) . closest ( "div.select2-drop" ) . get ( 0 ) , e ( document ) . find ( "div.select2-drop-active" ) . each ( function ( ) { this !== b && e ( this ) . data ( "select2" ) . blur ( ) } ) ) ;
b = e ( a . target ) ; c = b . attr ( "for" ) ; "LABEL" === a . target . tagName && ( c && 0 < c . length ) && ( b = e ( "#" + c ) , b = b . data ( "select2" ) , b !== g && ( b . focus ( ) , a . preventDefault ( ) ) ) } ) } ) ; w = x ( Object , { bind : function ( a ) { var b = this ; return function ( ) { a . apply ( b , arguments ) } } , init : function ( a ) { var b , c ; this . opts = a = this . prepareOpts ( a ) ; this . id = a . id ; a . element . data ( "select2" ) !== g && null !== a . element . data ( "select2" ) && this . destroy ( ) ; this . enabled = ! 0 ; this . container = this . createContainer ( ) ; this . containerId = "s2id_" + ( a . element . attr ( "id" ) || "autogen" + G ( ) ) ; this . containerSelector =
"#" + this . containerId . replace ( /([;&,\.\+\*\~':"\!\^#$%@\[\]\(\)=>\|])/g , "\\$1" ) ; this . container . attr ( "id" , this . containerId ) ; var d = ! 1 , j ; this . body = function ( ) { ! 1 === d && ( j = a . element . closest ( "body" ) , d = ! 0 ) ; return j } ; a . element . attr ( "class" ) !== g && this . container . addClass ( a . element . attr ( "class" ) . replace ( /validate\[[\S ]+] ?/ , "" ) ) ; this . container . css ( v ( a . containerCss ) ) ; this . container . addClass ( v ( a . containerCssClass ) ) ; this . opts . element . data ( "select2" , this ) . hide ( ) . before ( this . container ) ; this . container . data ( "select2" ,
this ) ; this . dropdown = this . container . find ( ".select2-drop" ) ; this . dropdown . addClass ( v ( a . dropdownCssClass ) ) ; this . dropdown . data ( "select2" , this ) ; this . results = b = this . container . find ( ".select2-results" ) ; this . search = c = this . container . find ( "input.select2-input" ) ; c . attr ( "tabIndex" , this . opts . element . attr ( "tabIndex" ) ) ; this . resultsPage = 0 ; this . context = null ; this . initContainer ( ) ; this . initContainerWidth ( ) ; this . results . bind ( "mousemove" , function ( a ) { var b = e . data ( document , "select2-lastpos" ) ; ( b === g || b . x !== a . pageX || b . y !== a . pageY ) &&
e ( a . target ) . trigger ( "mousemove-filtered" , a ) } ) ; this . dropdown . delegate ( ".select2-results" , "mousemove-filtered" , this . bind ( this . highlightUnderEvent ) ) ; var h = this . results , f = A ( 80 , function ( a ) { h . trigger ( "scroll-debounced" , a ) } ) ; h . bind ( "scroll" , function ( a ) { 0 <= i ( a . target , h . get ( ) ) && f ( a ) } ) ; this . dropdown . delegate ( ".select2-results" , "scroll-debounced" , this . bind ( this . loadMoreIfNeeded ) ) ; e . fn . mousewheel && b . mousewheel ( function ( a , c , d , e ) { c = b . scrollTop ( ) ; 0 < e && 0 >= c - e ? ( b . scrollTop ( 0 ) , l ( a ) ) : 0 > e && b . get ( 0 ) . scrollHeight - b . scrollTop ( ) +
e <= b . height ( ) && ( b . scrollTop ( b . get ( 0 ) . scrollHeight - b . height ( ) ) , l ( a ) ) } ) ; c . bind ( "keydown" , function ( ) { e . data ( c , "keyup-change-value" ) === g && e . data ( c , "keyup-change-value" , c . val ( ) ) } ) ; c . bind ( "keyup" , function ( ) { var a = e . data ( c , "keyup-change-value" ) ; a !== g && c . val ( ) !== a && ( e . removeData ( c , "keyup-change-value" ) , c . trigger ( "keyup-change" ) ) } ) ; c . bind ( "keyup-change" , this . bind ( this . updateResults ) ) ; c . bind ( "focus" , function ( ) { c . addClass ( "select2-focused" ) ; " " === c . val ( ) && c . val ( "" ) } ) ; c . bind ( "blur" , function ( ) { c . removeClass ( "select2-focused" ) } ) ;
this . dropdown . delegate ( ".select2-results" , "mouseup" , this . bind ( function ( a ) { 0 < e ( a . target ) . closest ( ".select2-result-selectable:not(.select2-disabled)" ) . length ? ( this . highlightUnderEvent ( a ) , this . selectHighlighted ( a ) ) : this . focusSearch ( ) ; l ( a ) } ) ) ; this . dropdown . bind ( "click mouseup mousedown" , function ( a ) { a . stopPropagation ( ) } ) ; e . isFunction ( this . opts . initSelection ) && ( this . initSelection ( ) , this . monitorSource ( ) ) ; ( a . element . is ( ":disabled" ) || a . element . is ( "[readonly='readonly']" ) ) && this . disable ( ) } , destroy : function ( ) { var a =
2012-09-03 18:21:18 +00:00
this . opts . element . data ( "select2" ) ; a !== g && ( a . container . remove ( ) , a . dropdown . remove ( ) , a . opts . element . removeData ( "select2" ) . unbind ( ".select2" ) . show ( ) ) } , prepareOpts : function ( a ) { var b , c , d ; b = a . element ; "select" === b . get ( 0 ) . tagName . toLowerCase ( ) && ( this . select = c = a . element ) ; c && e . each ( "id multiple ajax query createSearchChoice initSelection data tags" . split ( " " ) , function ( ) { if ( this in a ) throw Error ( "Option '" + this + "' is not allowed for Select2 when attached to a <select> element." ) ; } ) ; a = e . extend ( { } , { populateResults : function ( b ,
2012-09-28 17:56:12 +00:00
c , d ) { var f , n = this . opts . id , o = this ; f = function ( b , c , j ) { var h , l , i , m , r , p , q ; h = 0 ; for ( l = b . length ; h < l ; h = h + 1 ) { i = b [ h ] ; m = n ( i ) !== g ; r = i . children && i . children . length > 0 ; p = e ( "<li></li>" ) ; p . addClass ( "select2-results-dept-" + j ) ; p . addClass ( "select2-result" ) ; p . addClass ( m ? "select2-result-selectable" : "select2-result-unselectable" ) ; r && p . addClass ( "select2-result-with-children" ) ; p . addClass ( o . opts . formatResultCssClass ( i ) ) ; m = e ( "<div></div>" ) ; m . addClass ( "select2-result-label" ) ; q = a . formatResult ( i , m , d ) ; q !== g && m . html ( o . opts . escapeMarkup ( q ) ) ;
p . append ( m ) ; if ( r ) { r = e ( "<ul></ul>" ) ; r . addClass ( "select2-result-sub" ) ; f ( i . children , r , j + 1 ) ; p . append ( r ) } p . data ( "select2-data" , i ) ; c . append ( p ) } } ; f ( c , b , 0 ) } } , e . fn . select2 . defaults , a ) ; "function" !== typeof a . id && ( d = a . id , a . id = function ( a ) { return a [ d ] } ) ; if ( c ) a . query = this . bind ( function ( a ) { var c = { results : [ ] , more : false } , d = a . term , f , n , o ; o = function ( b , c ) { var e ; if ( b . is ( "option" ) ) a . matcher ( d , b . text ( ) , b ) && c . push ( { id : b . attr ( "value" ) , text : b . text ( ) , element : b . get ( ) , css : b . attr ( "class" ) } ) ; else if ( b . is ( "optgroup" ) ) { e = { text : b . attr ( "label" ) ,
children : [ ] , element : b . get ( ) , css : b . attr ( "class" ) } ; b . children ( ) . each2 ( function ( a , b ) { o ( b , e . children ) } ) ; e . children . length > 0 && c . push ( e ) } } ; f = b . children ( ) ; if ( this . getPlaceholder ( ) !== g && f . length > 0 ) { n = f [ 0 ] ; e ( n ) . text ( ) === "" && ( f = f . not ( n ) ) } f . each2 ( function ( a , b ) { o ( b , c . results ) } ) ; a . callback ( c ) } ) , a . id = function ( a ) { return a . id } , a . formatResultCssClass = function ( a ) { return a . css } ; else if ( ! ( "query" in a ) ) if ( "ajax" in a ) { if ( ( c = a . element . data ( "ajax-url" ) ) && 0 < c . length ) a . ajax . url = c ; a . query = C ( a . ajax ) } else "data" in a ? a . query = D ( a . data ) :
"tags" in a && ( a . query = E ( a . tags ) , a . createSearchChoice = function ( a ) { return { id : a , text : a } } , a . initSelection = function ( b , c ) { var d = [ ] ; e ( s ( b . val ( ) , a . separator ) ) . each ( function ( ) { var b = this , c = this , j = a . tags ; e . isFunction ( j ) && ( j = j ( ) ) ; e ( j ) . each ( function ( ) { if ( m ( this . id , b ) ) { c = this . text ; return false } } ) ; d . push ( { id : b , text : c } ) } ) ; c ( d ) } ) ; if ( "function" !== typeof a . query ) throw "query function not defined for Select2 " + a . element . attr ( "id" ) ; return a } , monitorSource : function ( ) { this . opts . element . bind ( "change.select2" , this . bind ( function ( ) { ! 0 !==
this . opts . element . data ( "select2-change-triggered" ) && this . initSelection ( ) } ) ) } , triggerChange : function ( a ) { a = a || { } ; a = e . extend ( { } , a , { type : "change" , val : this . val ( ) } ) ; this . opts . element . data ( "select2-change-triggered" , ! 0 ) ; this . opts . element . trigger ( a ) ; this . opts . element . data ( "select2-change-triggered" , ! 1 ) ; this . opts . element . click ( ) ; this . opts . blurOnChange && this . opts . element . blur ( ) } , enable : function ( ) { this . enabled || ( this . enabled = ! 0 , this . container . removeClass ( "select2-container-disabled" ) ) } , disable : function ( ) { this . enabled &&
( this . close ( ) , this . enabled = ! 1 , this . container . addClass ( "select2-container-disabled" ) ) } , opened : function ( ) { return this . container . hasClass ( "select2-dropdown-open" ) } , positionDropdown : function ( ) { var a = this . container . offset ( ) , b = this . container . outerHeight ( ) , c = this . container . outerWidth ( ) , d = this . dropdown . outerHeight ( ) , j = e ( window ) . scrollTop ( ) + document . documentElement . clientHeight , b = a . top + b , f = a . left , j = b + d <= j , g = a . top - d >= this . body ( ) . scrollTop ( ) , k = this . dropdown . hasClass ( "select2-drop-above" ) , n ; "static" !== this . body ( ) . css ( "position" ) &&
( n = this . body ( ) . offset ( ) , b -= n . top , f -= n . left ) ; k ? ( k = ! 0 , ! g && j && ( k = ! 1 ) ) : ( k = ! 1 , ! j && g && ( k = ! 0 ) ) ; k ? ( b = a . top - d , this . container . addClass ( "select2-drop-above" ) , this . dropdown . addClass ( "select2-drop-above" ) ) : ( this . container . removeClass ( "select2-drop-above" ) , this . dropdown . removeClass ( "select2-drop-above" ) ) ; a = e . extend ( { top : b , left : f , width : c } , v ( this . opts . dropdownCss ) ) ; this . dropdown . css ( a ) } , shouldOpen : function ( ) { var a ; if ( this . opened ( ) ) return ! 1 ; a = e . Event ( "open" ) ; this . opts . element . trigger ( a ) ; return ! a . isDefaultPrevented ( ) } ,
clearDropdownAlignmentPreference : function ( ) { this . container . removeClass ( "select2-drop-above" ) ; this . dropdown . removeClass ( "select2-drop-above" ) } , open : function ( ) { if ( ! this . shouldOpen ( ) ) return ! 1 ; window . setTimeout ( this . bind ( this . opening ) , 1 ) ; return ! 0 } , opening : function ( ) { var a = this . containerId , b = this . containerSelector , c = "scroll." + a , d = "resize." + a ; this . container . parents ( ) . each ( function ( ) { e ( this ) . bind ( c , function ( ) { var a = e ( b ) ; 0 == a . length && e ( this ) . unbind ( c ) ; a . select2 ( "close" ) } ) } ) ; e ( window ) . bind ( d , function ( ) { var a =
e ( b ) ; 0 == a . length && e ( window ) . unbind ( d ) ; a . select2 ( "close" ) } ) ; this . clearDropdownAlignmentPreference ( ) ; " " === this . search . val ( ) && this . search . val ( "" ) ; this . container . addClass ( "select2-dropdown-open" ) . addClass ( "select2-container-active" ) ; this . updateResults ( ! 0 ) ; this . dropdown [ 0 ] !== this . body ( ) . children ( ) . last ( ) [ 0 ] && this . dropdown . detach ( ) . appendTo ( this . body ( ) ) ; this . dropdown . show ( ) ; this . positionDropdown ( ) ; this . dropdown . addClass ( "select2-drop-active" ) ; this . ensureHighlightVisible ( ) ; this . focusSearch ( ) } , close : function ( ) { if ( this . opened ( ) ) { var a =
this ; this . container . parents ( ) . each ( function ( ) { e ( this ) . unbind ( "scroll." + a . containerId ) } ) ; e ( window ) . unbind ( "resize." + this . containerId ) ; this . clearDropdownAlignmentPreference ( ) ; this . dropdown . hide ( ) ; this . container . removeClass ( "select2-dropdown-open" ) . removeClass ( "select2-container-active" ) ; this . results . empty ( ) ; this . clearSearch ( ) ; this . opts . element . trigger ( e . Event ( "close" ) ) } } , clearSearch : function ( ) { } , ensureHighlightVisible : function ( ) { var a = this . results , b , c , d , f ; c = this . highlight ( ) ; 0 > c || ( 0 == c ? a . scrollTop ( 0 ) :
( b = a . find ( ".select2-result-selectable" ) , d = e ( b [ c ] ) , f = d . offset ( ) . top + d . outerHeight ( ) , c === b . length - 1 && ( b = a . find ( "li.select2-more-results" ) , 0 < b . length && ( f = b . offset ( ) . top + b . outerHeight ( ) ) ) , b = a . offset ( ) . top + a . outerHeight ( ) , f > b && a . scrollTop ( a . scrollTop ( ) + ( f - b ) ) , d = d . offset ( ) . top - a . offset ( ) . top , 0 > d && a . scrollTop ( a . scrollTop ( ) + d ) ) ) } , moveHighlight : function ( a ) { for ( var b = this . results . find ( ".select2-result-selectable" ) , c = this . highlight ( ) ; - 1 < c && c < b . length ; ) { var c = c + a , d = e ( b [ c ] ) ; if ( d . hasClass ( "select2-result-selectable" ) &&
! d . hasClass ( "select2-disabled" ) ) { this . highlight ( c ) ; break } } } , highlight : function ( a ) { var b = this . results . find ( ".select2-result-selectable" ) . not ( ".select2-disabled" ) ; if ( 0 === arguments . length ) return i ( b . filter ( ".select2-highlighted" ) [ 0 ] , b . get ( ) ) ; a >= b . length && ( a = b . length - 1 ) ; 0 > a && ( a = 0 ) ; b . removeClass ( "select2-highlighted" ) ; e ( b [ a ] ) . addClass ( "select2-highlighted" ) ; this . ensureHighlightVisible ( ) } , countSelectableResults : function ( ) { return this . results . find ( ".select2-result-selectable" ) . not ( ".select2-disabled" ) . length } ,
highlightUnderEvent : function ( a ) { a = e ( a . target ) . closest ( ".select2-result-selectable" ) ; if ( 0 < a . length && ! a . is ( ".select2-highlighted" ) ) { var b = this . results . find ( ".select2-result-selectable" ) ; this . highlight ( b . index ( a ) ) } else 0 == a . length && this . results . find ( ".select2-highlighted" ) . removeClass ( "select2-highlighted" ) } , loadMoreIfNeeded : function ( ) { var a = this . results , b = a . find ( "li.select2-more-results" ) , c , d = this . resultsPage + 1 , e = this , f = this . search . val ( ) , g = this . context ; 0 !== b . length && ( c = b . offset ( ) . top - a . offset ( ) . top -
a . height ( ) , 0 >= c && ( b . addClass ( "select2-active" ) , this . opts . query ( { term : f , page : d , context : g , matcher : this . opts . matcher , callback : this . bind ( function ( c ) { e . opened ( ) && ( e . opts . populateResults . call ( this , a , c . results , { term : f , page : d , context : g } ) , ! 0 === c . more ? ( b . detach ( ) . appendTo ( a ) . text ( e . opts . formatLoadMore ( d + 1 ) ) , window . setTimeout ( function ( ) { e . loadMoreIfNeeded ( ) } , 10 ) ) : b . remove ( ) , e . positionDropdown ( ) , e . resultsPage = d ) } ) } ) ) ) } , tokenize : function ( ) { } , updateResults : function ( a ) { function b ( ) { f . scrollTop ( 0 ) ; d . removeClass ( "select2-active" ) ;
k . positionDropdown ( ) } function c ( a ) { f . html ( k . opts . escapeMarkup ( a ) ) ; b ( ) } var d = this . search , f = this . results , h = this . opts , i , k = this ; if ( ! ( ! 0 !== a && ( ! 1 === this . showSearchInput || ! this . opened ( ) ) ) ) { d . addClass ( "select2-active" ) ; if ( 1 <= h . maximumSelectionSize && ( i = this . data ( ) , e . isArray ( i ) && i . length >= h . maximumSelectionSize && u ( h . formatSelectionTooBig , "formatSelectionTooBig" ) ) ) { c ( "<li class='select2-selection-limit'>" + h . formatSelectionTooBig ( h . maximumSelectionSize ) + "</li>" ) ; return } d . val ( ) . length < h . minimumInputLength && u ( h . formatInputTooShort ,
"formatInputTooShort" ) ? c ( "<li class='select2-no-results'>" + h . formatInputTooShort ( d . val ( ) , h . minimumInputLength ) + "</li>" ) : ( c ( "<li class='select2-searching'>" + h . formatSearching ( ) + "</li>" ) , i = this . tokenize ( ) , i != g && null != i && d . val ( i ) , this . resultsPage = 1 , h . query ( { term : d . val ( ) , page : this . resultsPage , context : null , matcher : h . matcher , callback : this . bind ( function ( i ) { var l ; this . opened ( ) && ( ( this . context = i . context === g ? null : i . context , this . opts . createSearchChoice && "" !== d . val ( ) && ( l = this . opts . createSearchChoice . call ( null ,
d . val ( ) , i . results ) , l !== g && null !== l && k . id ( l ) !== g && null !== k . id ( l ) && 0 === e ( i . results ) . filter ( function ( ) { return m ( k . id ( this ) , k . id ( l ) ) } ) . length && i . results . unshift ( l ) ) , 0 === i . results . length && u ( h . formatNoMatches , "formatNoMatches" ) ) ? c ( "<li class='select2-no-results'>" + h . formatNoMatches ( d . val ( ) ) + "</li>" ) : ( f . empty ( ) , k . opts . populateResults . call ( this , f , i . results , { term : d . val ( ) , page : this . resultsPage , context : null } ) , ! 0 === i . more && u ( h . formatLoadMore , "formatLoadMore" ) && ( f . append ( "<li class='select2-more-results'>" + k . opts . escapeMarkup ( h . formatLoadMore ( this . resultsPage ) ) +
"</li>" ) , window . setTimeout ( function ( ) { k . loadMoreIfNeeded ( ) } , 10 ) ) , this . postprocessResults ( i , a ) , b ( ) ) ) } ) } ) ) } } , cancel : function ( ) { this . close ( ) } , blur : function ( ) { this . close ( ) ; this . container . removeClass ( "select2-container-active" ) ; this . dropdown . removeClass ( "select2-drop-active" ) ; this . search [ 0 ] === document . activeElement && this . search . blur ( ) ; this . clearSearch ( ) ; this . selection . find ( ".select2-search-choice-focus" ) . removeClass ( "select2-search-choice-focus" ) } , focusSearch : function ( ) { this . search . show ( ) ; this . search . focus ( ) ;
window . setTimeout ( this . bind ( function ( ) { this . search . show ( ) ; this . search . focus ( ) ; this . search . val ( this . search . val ( ) ) } ) , 10 ) } , selectHighlighted : function ( ) { var a = this . highlight ( ) , b = this . results . find ( ".select2-highlighted" ) . not ( ".select2-disabled" ) , c = b . closest ( ".select2-result-selectable" ) . data ( "select2-data" ) ; c && ( b . addClass ( "select2-disabled" ) , this . highlight ( a ) , this . onSelect ( c ) ) } , getPlaceholder : function ( ) { return this . opts . element . attr ( "placeholder" ) || this . opts . element . attr ( "data-placeholder" ) || this . opts . element . data ( "placeholder" ) ||
2012-09-03 18:21:18 +00:00
this . opts . placeholder } , initContainerWidth : function ( ) { var a = function ( ) { var a , c , d , f ; if ( "off" === this . opts . width ) return null ; if ( "element" === this . opts . width ) return 0 === this . opts . element . outerWidth ( ) ? "auto" : this . opts . element . outerWidth ( ) + "px" ; if ( "copy" === this . opts . width || "resolve" === this . opts . width ) { a = this . opts . element . attr ( "style" ) ; if ( a !== g ) { a = a . split ( ";" ) ; d = 0 ; for ( f = a . length ; d < f ; d += 1 ) if ( c = a [ d ] . replace ( /\s/g , "" ) . match ( /width:(([-+]?([0-9]*\.)?[0-9]+)(px|em|ex|%|in|cm|mm|pt|pc))/ ) , null !== c && 1 <= c . length ) return c [ 1 ] } return "resolve" ===
2012-09-28 17:56:12 +00:00
this . opts . width ? ( a = this . opts . element . css ( "width" ) , 0 < a . indexOf ( "%" ) ? a : 0 === this . opts . element . outerWidth ( ) ? "auto" : this . opts . element . outerWidth ( ) + "px" ) : null } return e . isFunction ( this . opts . width ) ? this . opts . width ( ) : this . opts . width } . call ( this ) ; null !== a && this . container . attr ( "style" , "width: " + a ) } } ) ; y = x ( w , { createContainer : function ( ) { return e ( "<div></div>" , { "class" : "select2-container" } ) . html ( " <a href='#' onclick='return false;' class='select2-choice'> <span></span><abbr class='select2-search-choice-close' style='display:none;'></abbr> <div><b></b></div></a> <div class='select2-drop select2-offscreen'> <div class='select2-search'> <input type='text' autocomplete='off' class='select2-input'/> </div> <ul class='select2-results'> </ul></div>" ) } ,
2012-08-12 16:25:23 +00:00
opening : function ( ) { this . search . show ( ) ; this . parent . opening . apply ( this , arguments ) ; this . dropdown . removeClass ( "select2-offscreen" ) } , close : function ( ) { this . opened ( ) && ( this . parent . close . apply ( this , arguments ) , this . dropdown . removeAttr ( "style" ) . addClass ( "select2-offscreen" ) . insertAfter ( this . selection ) . show ( ) ) } , focus : function ( ) { this . close ( ) ; this . selection . focus ( ) } , isFocused : function ( ) { return this . selection [ 0 ] === document . activeElement } , cancel : function ( ) { this . parent . cancel . apply ( this , arguments ) ; this . selection . focus ( ) } ,
2012-09-28 17:56:12 +00:00
initContainer : function ( ) { var a , b = this . dropdown ; this . selection = a = this . container . find ( ".select2-choice" ) ; this . search . bind ( "keydown" , this . bind ( function ( a ) { if ( this . enabled ) if ( a . which === f . PAGE _UP || a . which === f . PAGE _DOWN ) l ( a ) ; else if ( this . opened ( ) ) switch ( a . which ) { case f . UP : case f . DOWN : this . moveHighlight ( a . which === f . UP ? - 1 : 1 ) ; l ( a ) ; break ; case f . TAB : case f . ENTER : this . selectHighlighted ( ) ; l ( a ) ; break ; case f . ESC : this . cancel ( a ) , l ( a ) } else a . which === f . TAB || f . isControl ( a ) || f . isFunctionKey ( a ) || a . which === f . ESC || ! 1 ===
2012-09-03 18:21:18 +00:00
this . opts . openOnEnter && a . which === f . ENTER || this . open ( ) } ) ) ; this . search . bind ( "focus" , this . bind ( function ( ) { this . selection . attr ( "tabIndex" , "-1" ) } ) ) ; this . search . bind ( "blur" , this . bind ( function ( ) { this . opened ( ) || this . container . removeClass ( "select2-container-active" ) ; window . setTimeout ( this . bind ( function ( ) { this . selection . attr ( "tabIndex" , this . opts . element . attr ( "tabIndex" ) ) } ) , 10 ) } ) ) ; a . bind ( "mousedown" , this . bind ( function ( ) { this . opened ( ) ? ( this . close ( ) , this . selection . focus ( ) ) : this . enabled && this . open ( ) } ) ) ; b . bind ( "mousedown" ,
2012-09-28 17:56:12 +00:00
this . bind ( function ( ) { this . search . focus ( ) } ) ) ; a . bind ( "focus" , this . bind ( function ( ) { this . container . addClass ( "select2-container-active" ) ; this . search . attr ( "tabIndex" , "-1" ) } ) ) ; a . bind ( "blur" , this . bind ( function ( ) { this . opened ( ) || this . container . removeClass ( "select2-container-active" ) ; window . setTimeout ( this . bind ( function ( ) { this . search . attr ( "tabIndex" , this . opts . element . attr ( "tabIndex" ) ) } ) , 10 ) } ) ) ; a . bind ( "keydown" , this . bind ( function ( a ) { if ( this . enabled ) if ( a . which === f . PAGE _UP || a . which === f . PAGE _DOWN ) l ( a ) ; else if ( ! ( a . which ===
f . TAB || f . isControl ( a ) || f . isFunctionKey ( a ) || a . which === f . ESC ) && ! ( ! 1 === this . opts . openOnEnter && a . which === f . ENTER ) ) if ( a . which == f . DELETE ) this . opts . allowClear && this . clear ( ) ; else { this . open ( ) ; if ( a . which !== f . ENTER && ! ( 48 > a . which ) ) { var b = String . fromCharCode ( a . which ) . toLowerCase ( ) ; a . shiftKey && ( b = b . toUpperCase ( ) ) ; this . search . focus ( ) ; this . search . val ( b ) } l ( a ) } } ) ) ; a . delegate ( "abbr" , "mousedown" , this . bind ( function ( a ) { this . enabled && ( this . clear ( ) , l ( a ) , this . close ( ) , this . triggerChange ( ) , this . selection . focus ( ) ) } ) ) ; this . setPlaceholder ( ) ;
2012-09-03 18:21:18 +00:00
this . search . bind ( "focus" , this . bind ( function ( ) { this . container . addClass ( "select2-container-active" ) } ) ) } , clear : function ( ) { this . opts . element . val ( "" ) ; this . selection . find ( "span" ) . empty ( ) ; this . selection . removeData ( "select2-data" ) ; this . setPlaceholder ( ) } , initSelection : function ( ) { if ( "" === this . opts . element . val ( ) ) this . close ( ) , this . setPlaceholder ( ) ; else { var a = this ; this . opts . initSelection . call ( null , this . opts . element , function ( b ) { b !== g && null !== b && ( a . updateSelection ( b ) , a . close ( ) , a . setPlaceholder ( ) ) } ) } } , prepareOpts : function ( ) { var a =
2012-09-28 17:56:12 +00:00
this . parent . prepareOpts . apply ( this , arguments ) ; "select" === a . element . get ( 0 ) . tagName . toLowerCase ( ) && ( a . initSelection = function ( a , c ) { var d = a . find ( ":selected" ) ; e . isFunction ( c ) && c ( { id : d . attr ( "value" ) , text : d . text ( ) } ) } ) ; return a } , setPlaceholder : function ( ) { var a = this . getPlaceholder ( ) ; "" === this . opts . element . val ( ) && a !== g && ! ( this . select && "" !== this . select . find ( "option:first" ) . text ( ) ) && ( this . selection . find ( "span" ) . html ( this . opts . escapeMarkup ( a ) ) , this . selection . addClass ( "select2-default" ) , this . selection . find ( "abbr" ) . hide ( ) ) } ,
postprocessResults : function ( a , b ) { var c = 0 , d = this , f = ! 0 ; this . results . find ( ".select2-result-selectable" ) . each2 ( function ( a , b ) { if ( m ( d . id ( b . data ( "select2-data" ) ) , d . opts . element . val ( ) ) ) return c = a , ! 1 } ) ; this . highlight ( c ) ; ! 0 === b && ( f = this . showSearchInput = F ( a . results ) >= this . opts . minimumResultsForSearch , this . dropdown . find ( ".select2-search" ) [ f ? "removeClass" : "addClass" ] ( "select2-search-hidden" ) , e ( this . dropdown , this . container ) [ f ? "addClass" : "removeClass" ] ( "select2-with-searchbox" ) ) } , onSelect : function ( a ) { var b = this . opts . element . val ( ) ;
this . opts . element . val ( this . id ( a ) ) ; this . updateSelection ( a ) ; this . close ( ) ; this . selection . focus ( ) ; m ( b , this . id ( a ) ) || this . triggerChange ( ) } , updateSelection : function ( a ) { var b = this . selection . find ( "span" ) ; this . selection . data ( "select2-data" , a ) ; b . empty ( ) ; a = this . opts . formatSelection ( a , b ) ; a !== g && b . append ( this . opts . escapeMarkup ( a ) ) ; this . selection . removeClass ( "select2-default" ) ; this . opts . allowClear && this . getPlaceholder ( ) !== g && this . selection . find ( "abbr" ) . show ( ) } , val : function ( ) { var a , b = null , c = this ; if ( 0 === arguments . length ) return this . opts . element . val ( ) ;
a = arguments [ 0 ] ; if ( this . select ) this . select . val ( a ) . find ( ":selected" ) . each2 ( function ( a , c ) { b = { id : c . attr ( "value" ) , text : c . text ( ) } ; return ! 1 } ) , this . updateSelection ( b ) , this . setPlaceholder ( ) ; else { if ( this . opts . initSelection === g ) throw Error ( "cannot call val() if initSelection() is not defined" ) ; a ? ( this . opts . element . val ( a ) , this . opts . initSelection ( this . opts . element , function ( a ) { c . opts . element . val ( ! a ? "" : c . id ( a ) ) ; c . updateSelection ( a ) ; c . setPlaceholder ( ) } ) ) : this . clear ( ) } } , clearSearch : function ( ) { this . search . val ( "" ) } ,
data : function ( a ) { var b ; if ( 0 === arguments . length ) return b = this . selection . data ( "select2-data" ) , b == g && ( b = null ) , b ; ! a || "" === a ? this . clear ( ) : ( this . opts . element . val ( ! a ? "" : this . id ( a ) ) , this . updateSelection ( a ) ) } } ) ; z = x ( w , { createContainer : function ( ) { return e ( "<div></div>" , { "class" : "select2-container select2-container-multi" } ) . html ( " <ul class='select2-choices'> <li class='select2-search-field'> <input type='text' autocomplete='off' class='select2-input'> </li></ul><div class='select2-drop select2-drop-multi' style='display:none;'> <ul class='select2-results'> </ul></div>" ) } ,
prepareOpts : function ( ) { var a = this . parent . prepareOpts . apply ( this , arguments ) ; "select" === a . element . get ( 0 ) . tagName . toLowerCase ( ) && ( a . initSelection = function ( a , c ) { var d = [ ] ; a . find ( ":selected" ) . each2 ( function ( a , b ) { d . push ( { id : b . attr ( "value" ) , text : b . text ( ) } ) } ) ; e . isFunction ( c ) && c ( d ) } ) ; return a } , initContainer : function ( ) { var a ; this . searchContainer = this . container . find ( ".select2-search-field" ) ; this . selection = a = this . container . find ( ".select2-choices" ) ; this . search . bind ( "keydown" , this . bind ( function ( b ) { if ( this . enabled ) { if ( b . which ===
f . BACKSPACE && "" === this . search . val ( ) ) { this . close ( ) ; var c ; c = a . find ( ".select2-search-choice-focus" ) ; if ( 0 < c . length ) { this . unselect ( c . first ( ) ) ; this . search . width ( 10 ) ; l ( b ) ; return } c = a . find ( ".select2-search-choice" ) ; 0 < c . length && c . last ( ) . addClass ( "select2-search-choice-focus" ) } else a . find ( ".select2-search-choice-focus" ) . removeClass ( "select2-search-choice-focus" ) ; if ( this . opened ( ) ) switch ( b . which ) { case f . UP : case f . DOWN : this . moveHighlight ( b . which === f . UP ? - 1 : 1 ) ; l ( b ) ; return ; case f . ENTER : case f . TAB : this . selectHighlighted ( ) ;
l ( b ) ; return ; case f . ESC : this . cancel ( b ) ; l ( b ) ; return } if ( ! ( b . which === f . TAB || f . isControl ( b ) || f . isFunctionKey ( b ) || b . which === f . BACKSPACE || b . which === f . ESC ) && ! ( ! 1 === this . opts . openOnEnter && b . which === f . ENTER ) ) this . open ( ) , ( b . which === f . PAGE _UP || b . which === f . PAGE _DOWN ) && l ( b ) } } ) ) ; this . search . bind ( "keyup" , this . bind ( this . resizeSearch ) ) ; this . search . bind ( "blur" , this . bind ( function ( a ) { this . container . removeClass ( "select2-container-active" ) ; this . search . removeClass ( "select2-focused" ) ; this . clearSearch ( ) ; a . stopImmediatePropagation ( ) } ) ) ;
this . container . delegate ( ".select2-choices" , "mousedown" , this . bind ( function ( a ) { this . enabled && ! ( 0 < e ( a . target ) . closest ( ".select2-search-choice" ) . length ) && ( this . clearPlaceholder ( ) , this . open ( ) , this . focusSearch ( ) , a . preventDefault ( ) ) } ) ) ; this . container . delegate ( ".select2-choices" , "focus" , this . bind ( function ( ) { this . enabled && ( this . container . addClass ( "select2-container-active" ) , this . dropdown . addClass ( "select2-drop-active" ) , this . clearPlaceholder ( ) ) } ) ) ; this . clearSearch ( ) } , enable : function ( ) { this . enabled || ( this . parent . enable . apply ( this ,
arguments ) , this . search . removeAttr ( "disabled" ) ) } , disable : function ( ) { this . enabled && ( this . parent . disable . apply ( this , arguments ) , this . search . attr ( "disabled" , ! 0 ) ) } , initSelection : function ( ) { "" === this . opts . element . val ( ) && ( this . updateSelection ( [ ] ) , this . close ( ) , this . clearSearch ( ) ) ; if ( this . select || "" !== this . opts . element . val ( ) ) { var a = this ; this . opts . initSelection . call ( null , this . opts . element , function ( b ) { if ( b !== g && b !== null ) { a . updateSelection ( b ) ; a . close ( ) ; a . clearSearch ( ) } } ) } } , clearSearch : function ( ) { var a = this . getPlaceholder ( ) ;
a !== g && 0 === this . getVal ( ) . length && ! 1 === this . search . hasClass ( "select2-focused" ) ? ( this . search . val ( a ) . addClass ( "select2-default" ) , this . resizeSearch ( ) ) : this . search . val ( " " ) . width ( 10 ) } , clearPlaceholder : function ( ) { this . search . hasClass ( "select2-default" ) ? this . search . val ( "" ) . removeClass ( "select2-default" ) : " " === this . search . val ( ) && this . search . val ( "" ) } , opening : function ( ) { this . parent . opening . apply ( this , arguments ) ; this . clearPlaceholder ( ) ; this . resizeSearch ( ) ; this . focusSearch ( ) } , close : function ( ) { this . opened ( ) &&
this . parent . close . apply ( this , arguments ) } , focus : function ( ) { this . close ( ) ; this . search . focus ( ) } , isFocused : function ( ) { return this . search . hasClass ( "select2-focused" ) } , updateSelection : function ( a ) { var b = [ ] , c = [ ] , d = this ; e ( a ) . each ( function ( ) { 0 > i ( d . id ( this ) , b ) && ( b . push ( d . id ( this ) ) , c . push ( this ) ) } ) ; a = c ; this . selection . find ( ".select2-search-choice" ) . remove ( ) ; e ( a ) . each ( function ( ) { d . addSelectedChoice ( this ) } ) ; d . postprocessResults ( ) } , tokenize : function ( ) { var a = this . search . val ( ) , a = this . opts . tokenizer ( a , this . data ( ) , this . bind ( this . onSelect ) ,
this . opts ) ; null != a && a != g && ( this . search . val ( a ) , 0 < a . length && this . open ( ) ) } , onSelect : function ( a ) { this . addSelectedChoice ( a ) ; this . select && this . postprocessResults ( ) ; this . opts . closeOnSelect ? ( this . close ( ) , this . search . width ( 10 ) ) : 0 < this . countSelectableResults ( ) ? ( this . search . width ( 10 ) , this . resizeSearch ( ) , this . positionDropdown ( ) ) : this . close ( ) ; this . triggerChange ( { added : a } ) ; this . focusSearch ( ) } , cancel : function ( ) { this . close ( ) ; this . focusSearch ( ) } , addSelectedChoice : function ( a ) { var b = e ( "<li class='select2-search-choice'> <div></div> <a href='#' onclick='return false;' class='select2-search-choice-close' tabindex='-1'></a></li>" ) ,
c = this . id ( a ) , d = this . getVal ( ) , f ; f = this . opts . formatSelection ( a , b ) ; b . find ( "div" ) . replaceWith ( "<div>" + this . opts . escapeMarkup ( f ) + "</div>" ) ; b . find ( ".select2-search-choice-close" ) . bind ( "mousedown" , l ) . bind ( "click dblclick" , this . bind ( function ( a ) { this . enabled && ( e ( a . target ) . closest ( ".select2-search-choice" ) . fadeOut ( "fast" , this . bind ( function ( ) { this . unselect ( e ( a . target ) ) ; this . selection . find ( ".select2-search-choice-focus" ) . removeClass ( "select2-search-choice-focus" ) ; this . close ( ) ; this . focusSearch ( ) } ) ) . dequeue ( ) ,
l ( a ) ) } ) ) . bind ( "focus" , this . bind ( function ( ) { this . enabled && ( this . container . addClass ( "select2-container-active" ) , this . dropdown . addClass ( "select2-drop-active" ) ) } ) ) ; b . data ( "select2-data" , a ) ; b . insertBefore ( this . searchContainer ) ; d . push ( c ) ; this . setVal ( d ) } , unselect : function ( a ) { var b = this . getVal ( ) , c , d , a = a . closest ( ".select2-search-choice" ) ; if ( 0 === a . length ) throw "Invalid argument: " + a + ". Must be .select2-search-choice" ; c = a . data ( "select2-data" ) ; d = i ( this . id ( c ) , b ) ; 0 <= d && ( b . splice ( d , 1 ) , this . setVal ( b ) , this . select &&
this . postprocessResults ( ) ) ; a . remove ( ) ; this . triggerChange ( { removed : c } ) } , postprocessResults : function ( ) { var a = this . getVal ( ) , b = this . results . find ( ".select2-result-selectable" ) , c = this . results . find ( ".select2-result-with-children" ) , d = this ; b . each2 ( function ( b , c ) { var e = d . id ( c . data ( "select2-data" ) ) ; 0 <= i ( e , a ) ? c . addClass ( "select2-disabled" ) . removeClass ( "select2-result-selectable" ) : c . removeClass ( "select2-disabled" ) . addClass ( "select2-result-selectable" ) } ) ; c . each2 ( function ( a , b ) { 0 == b . find ( ".select2-result-selectable" ) . length ?
b . addClass ( "select2-disabled" ) : b . removeClass ( "select2-disabled" ) } ) ; b . each2 ( function ( a , b ) { if ( ! b . hasClass ( "select2-disabled" ) && b . hasClass ( "select2-result-selectable" ) ) return d . highlight ( 0 ) , ! 1 } ) } , resizeSearch : function ( ) { var a , b , c , d , f = this . search . outerWidth ( ) - this . search . width ( ) ; a = this . search ; q || ( c = a [ 0 ] . currentStyle || window . getComputedStyle ( a [ 0 ] , null ) , q = e ( "<div></div>" ) . css ( { position : "absolute" , left : "-10000px" , top : "-10000px" , display : "none" , fontSize : c . fontSize , fontFamily : c . fontFamily , fontStyle : c . fontStyle ,
fontWeight : c . fontWeight , letterSpacing : c . letterSpacing , textTransform : c . textTransform , whiteSpace : "nowrap" } ) , e ( "body" ) . append ( q ) ) ; q . text ( a . val ( ) ) ; a = q . width ( ) + 10 ; b = this . search . offset ( ) . left ; c = this . selection . width ( ) ; d = this . selection . offset ( ) . left ; b = c - ( b - d ) - f ; b < a && ( b = c - f ) ; 40 > b && ( b = c - f ) ; this . search . width ( b ) } , getVal : function ( ) { var a ; if ( this . select ) return a = this . select . val ( ) , null === a ? [ ] : a ; a = this . opts . element . val ( ) ; return s ( a , this . opts . separator ) } , setVal : function ( a ) { var b ; this . select ? this . select . val ( a ) : ( b =
[ ] , e ( a ) . each ( function ( ) { 0 > i ( this , b ) && b . push ( this ) } ) , this . opts . element . val ( 0 === b . length ? "" : b . join ( this . opts . separator ) ) ) } , val : function ( ) { var a , b = [ ] , c = this ; if ( 0 === arguments . length ) return this . getVal ( ) ; if ( a = arguments [ 0 ] ) if ( this . setVal ( a ) , this . select ) this . select . find ( ":selected" ) . each ( function ( ) { b . push ( { id : e ( this ) . attr ( "value" ) , text : e ( this ) . text ( ) } ) } ) , this . updateSelection ( b ) ; else { if ( this . opts . initSelection === g ) throw Error ( "val() cannot be called if initSelection() is not defined" ) ; this . opts . initSelection ( this . opts . element ,
function ( a ) { var b = e ( a ) . map ( c . id ) ; c . setVal ( b ) ; c . updateSelection ( a ) ; c . clearSearch ( ) } ) } else this . opts . element . val ( "" ) , this . updateSelection ( [ ] ) ; this . clearSearch ( ) } , onSortStart : function ( ) { if ( this . select ) throw Error ( "Sorting of elements is not supported when attached to <select>. Attach to <input type='hidden'/> instead." ) ; this . search . width ( 0 ) ; this . searchContainer . hide ( ) } , onSortEnd : function ( ) { var a = [ ] , b = this ; this . searchContainer . show ( ) ; this . searchContainer . appendTo ( this . searchContainer . parent ( ) ) ; this . resizeSearch ( ) ;
this . selection . find ( ".select2-search-choice" ) . each ( function ( ) { a . push ( b . opts . id ( e ( this ) . data ( "select2-data" ) ) ) } ) ; this . setVal ( a ) ; this . triggerChange ( ) } , data : function ( a ) { var b = this , c ; if ( 0 === arguments . length ) return this . selection . find ( ".select2-search-choice" ) . map ( function ( ) { return e ( this ) . data ( "select2-data" ) } ) . get ( ) ; a || ( a = [ ] ) ; c = e . map ( a , function ( a ) { return b . opts . id ( a ) } ) ; this . setVal ( c ) ; this . updateSelection ( a ) ; this . clearSearch ( ) } } ) ; e . fn . select2 = function ( ) { var a = Array . prototype . slice . call ( arguments , 0 ) , b ,
c , d , f , h = "val destroy opened open close focus isFocused container onSortStart onSortEnd enable disable positionDropdown data" . split ( " " ) ; this . each ( function ( ) { if ( 0 === a . length || "object" === typeof a [ 0 ] ) b = 0 === a . length ? { } : e . extend ( { } , a [ 0 ] ) , b . element = e ( this ) , "select" === b . element . get ( 0 ) . tagName . toLowerCase ( ) ? f = b . element . attr ( "multiple" ) : ( f = b . multiple || ! 1 , "tags" in b && ( b . multiple = f = ! 0 ) ) , c = f ? new z : new y , c . init ( b ) ; else if ( "string" === typeof a [ 0 ] ) { if ( 0 > i ( a [ 0 ] , h ) ) throw "Unknown method: " + a [ 0 ] ; d = g ; c = e ( this ) . data ( "select2" ) ;
if ( c !== g && ( d = "container" === a [ 0 ] ? c . container : c [ a [ 0 ] ] . apply ( c , a . slice ( 1 ) ) , d !== g ) ) return ! 1 } else throw "Invalid arguments to select2 plugin: " + a ; } ) ; return d === g ? this : d } ; e . fn . select2 . defaults = { width : "copy" , closeOnSelect : ! 0 , openOnEnter : ! 0 , containerCss : { } , dropdownCss : { } , containerCssClass : "" , dropdownCssClass : "" , formatResult : function ( a , b , c ) { b = [ ] ; B ( a . text , c . term , b ) ; return b . join ( "" ) } , formatSelection : function ( a ) { return a ? a . text : g } , formatResultCssClass : function ( ) { return g } , formatNoMatches : function ( ) { return "No matches found" } ,
formatInputTooShort : function ( a , b ) { return "Please enter " + ( b - a . length ) + " more characters" } , formatSelectionTooBig : function ( a ) { return "You can only select " + a + " item" + ( 1 == a ? "" : "s" ) } , formatLoadMore : function ( ) { return "Loading more results..." } , formatSearching : function ( ) { return "Searching..." } , minimumResultsForSearch : 0 , minimumInputLength : 0 , maximumSelectionSize : 0 , id : function ( a ) { return a . id } , matcher : function ( a , b ) { return 0 <= b . toUpperCase ( ) . indexOf ( a . toUpperCase ( ) ) } , separator : "," , tokenSeparators : [ ] , tokenizer : H ,
escapeMarkup : function ( a ) { return a && "string" === typeof a ? a . replace ( /&/g , "&" ) : a } , blurOnChange : ! 1 } ; window . Select2 = { query : { ajax : C , local : D , tags : E } , util : { debounce : A , markMatch : B } , "class" : { "abstract" : w , single : y , multi : z } } } } ) ( jQuery ) ;