{"version":3,"file":"select2.min.js","sources":["..\\..\\..\\..\\..\\..\\..\\web_root\\scripts\\formbuilder\\ext\\select2\\3.4.5\\select2.js"],"names":["$","fn","each2","extend","c","j","i","l","this","length","context","call","jQuery","undefined","getUrlParameters","parameters","url","window","location","href","retParams","indexOf","split","getMessageKeys","messageKeyPrefix","locale","urlParams","requestLocaleEEC","source","ajax","success","result","messageKeys","stripDiacritics","str","ret","charAt","DIACRITICS","value","array","equal","measureScrollbar","$template","MEASURE_SCROLLBAR_TEMPLATE","appendTo","dim","width","clientWidth","height","clientHeight","remove","a","b","constructor","String","splitVal","string","separator","val","trim","getSideBorderPadding","element","outerWidth","installKeyUpChangeEvent","key","on","data","removeData","trigger","installFilteredMouseMove","e","lastpos","lastMousePosition","x","pageX","y","pageY","target","debounce","quietMillis","ctx","timeout","args","arguments","clearTimeout","setTimeout","apply","thunk","formula","evaluated","installDebouncedScroll","threshold","notify","get","focus","$el","document","activeElement","range","el","pos","is","setSelectionRange","createTextRange","collapse","select","getCursorInfo","offset","selectionStart","selectionEnd","sel","selection","createRange","text","moveStart","killEvent","event","preventDefault","stopPropagation","killEventImmediately","stopImmediatePropagation","measureTextWidth","sizer","style","currentStyle","getComputedStyle","createElement","css","position","left","top","display","fontSize","fontFamily","fontStyle","fontWeight","letterSpacing","textTransform","whiteSpace","attr","append","syncCssClasses","dest","src","adapter","classes","adapted","replacements","push","join","markMatch","term","markup","escapeMarkup","match","toUpperCase","tl","substring","defaultEscapeMarkup","replace_map","\\","&","<",">","\"","'","/","replace","options","handler","ajaxUrl","self","query","transport","select2","ajaxDefaults","deprecated","type","cache","jsonpCallback","dataType","params","page","abort","isFunction","results","callback","local","dataText","tmp","item","isArray","dataItem","process","t","filtered","datum","collection","group","children","hasOwnProperty","childDatum","matcher","tags","isFunc","each","isObject","id","checkFormatter","formatter","formatterName","Error","evaluate","countResults","count","defaultTokenizer","input","selectCallback","opts","token","index","original","dupe","createSearchChoice","tokenSeparators","clazz","SuperClass","methods","prototype","parent","Select2","KEY","AbstractSelect2","SingleSelect2","MultiSelect2","nextUid","$document","scrollBarDimensions","TAB","ENTER","ESC","SPACE","LEFT","UP","RIGHT","DOWN","SHIFT","CTRL","ALT","PAGE_UP","PAGE_DOWN","HOME","END","BACKSPACE","DELETE","isArrow","k","which","isControl","metaKey","isFunctionKey","Ⓐ","A","À","Á","Â","Ầ","Ấ","Ẫ","Ẩ","Ã","Ā","Ă","Ằ","Ắ","Ẵ","Ẳ","Ȧ","Ǡ","Ä","Ǟ","Ả","Å","Ǻ","Ǎ","Ȁ","Ȃ","Ạ","Ậ","Ặ","Ḁ","Ą","Ⱥ","Ɐ","Ꜳ","Æ","Ǽ","Ǣ","Ꜵ","Ꜷ","Ꜹ","Ꜻ","Ꜽ","Ⓑ","B","Ḃ","Ḅ","Ḇ","Ƀ","Ƃ","Ɓ","Ⓒ","C","Ć","Ĉ","Ċ","Č","Ç","Ḉ","Ƈ","Ȼ","Ꜿ","Ⓓ","D","Ḋ","Ď","Ḍ","Ḑ","Ḓ","Ḏ","Đ","Ƌ","Ɗ","Ɖ","Ꝺ","DZ","DŽ","Dz","Dž","Ⓔ","E","È","É","Ê","Ề","Ế","Ễ","Ể","Ẽ","Ē","Ḕ","Ḗ","Ĕ","Ė","Ë","Ẻ","Ě","Ȅ","Ȇ","Ẹ","Ệ","Ȩ","Ḝ","Ę","Ḙ","Ḛ","Ɛ","Ǝ","Ⓕ","F","Ḟ","Ƒ","Ꝼ","Ⓖ","G","Ǵ","Ĝ","Ḡ","Ğ","Ġ","Ǧ","Ģ","Ǥ","Ɠ","Ꞡ","Ᵹ","Ꝿ","Ⓗ","H","Ĥ","Ḣ","Ḧ","Ȟ","Ḥ","Ḩ","Ḫ","Ħ","Ⱨ","Ⱶ","Ɥ","Ⓘ","I","Ì","Í","Î","Ĩ","Ī","Ĭ","İ","Ï","Ḯ","Ỉ","Ǐ","Ȉ","Ȋ","Ị","Į","Ḭ","Ɨ","Ⓙ","J","Ĵ","Ɉ","Ⓚ","K","Ḱ","Ǩ","Ḳ","Ķ","Ḵ","Ƙ","Ⱪ","Ꝁ","Ꝃ","Ꝅ","Ꞣ","Ⓛ","L","Ŀ","Ĺ","Ľ","Ḷ","Ḹ","Ļ","Ḽ","Ḻ","Ł","Ƚ","Ɫ","Ⱡ","Ꝉ","Ꝇ","Ꞁ","LJ","Lj","Ⓜ","M","Ḿ","Ṁ","Ṃ","Ɱ","Ɯ","Ⓝ","N","Ǹ","Ń","Ñ","Ṅ","Ň","Ṇ","Ņ","Ṋ","Ṉ","Ƞ","Ɲ","Ꞑ","Ꞥ","NJ","Nj","Ⓞ","O","Ò","Ó","Ô","Ồ","Ố","Ỗ","Ổ","Õ","Ṍ","Ȭ","Ṏ","Ō","Ṑ","Ṓ","Ŏ","Ȯ","Ȱ","Ö","Ȫ","Ỏ","Ő","Ǒ","Ȍ","Ȏ","Ơ","Ờ","Ớ","Ỡ","Ở","Ợ","Ọ","Ộ","Ǫ","Ǭ","Ø","Ǿ","Ɔ","Ɵ","Ꝋ","Ꝍ","Ƣ","Ꝏ","Ȣ","Ⓟ","P","Ṕ","Ṗ","Ƥ","Ᵽ","Ꝑ","Ꝓ","Ꝕ","Ⓠ","Q","Ꝗ","Ꝙ","Ɋ","Ⓡ","R","Ŕ","Ṙ","Ř","Ȑ","Ȓ","Ṛ","Ṝ","Ŗ","Ṟ","Ɍ","Ɽ","Ꝛ","Ꞧ","Ꞃ","Ⓢ","S","ẞ","Ś","Ṥ","Ŝ","Ṡ","Š","Ṧ","Ṣ","Ṩ","Ș","Ş","Ȿ","Ꞩ","Ꞅ","Ⓣ","T","Ṫ","Ť","Ṭ","Ț","Ţ","Ṱ","Ṯ","Ŧ","Ƭ","Ʈ","Ⱦ","Ꞇ","Ꜩ","Ⓤ","U","Ù","Ú","Û","Ũ","Ṹ","Ū","Ṻ","Ŭ","Ü","Ǜ","Ǘ","Ǖ","Ǚ","Ủ","Ů","Ű","Ǔ","Ȕ","Ȗ","Ư","Ừ","Ứ","Ữ","Ử","Ự","Ụ","Ṳ","Ų","Ṷ","Ṵ","Ʉ","Ⓥ","V","Ṽ","Ṿ","Ʋ","Ꝟ","Ʌ","Ꝡ","Ⓦ","W","Ẁ","Ẃ","Ŵ","Ẇ","Ẅ","Ẉ","Ⱳ","Ⓧ","X","Ẋ","Ẍ","Ⓨ","Y","Ỳ","Ý","Ŷ","Ỹ","Ȳ","Ẏ","Ÿ","Ỷ","Ỵ","Ƴ","Ɏ","Ỿ","Ⓩ","Z","Ź","Ẑ","Ż","Ž","Ẓ","Ẕ","Ƶ","Ȥ","Ɀ","Ⱬ","Ꝣ","ⓐ","a","ẚ","à","á","â","ầ","ấ","ẫ","ẩ","ã","ā","ă","ằ","ắ","ẵ","ẳ","ȧ","ǡ","ä","ǟ","ả","å","ǻ","ǎ","ȁ","ȃ","ạ","ậ","ặ","ḁ","ą","ⱥ","ɐ","ꜳ","æ","ǽ","ǣ","ꜵ","ꜷ","ꜹ","ꜻ","ꜽ","ⓑ","b","ḃ","ḅ","ḇ","ƀ","ƃ","ɓ","ⓒ","c","ć","ĉ","ċ","č","ç","ḉ","ƈ","ȼ","ꜿ","ↄ","ⓓ","d","ḋ","ď","ḍ","ḑ","ḓ","ḏ","đ","ƌ","ɖ","ɗ","ꝺ","dz","dž","ⓔ","e","è","é","ê","ề","ế","ễ","ể","ẽ","ē","ḕ","ḗ","ĕ","ė","ë","ẻ","ě","ȅ","ȇ","ẹ","ệ","ȩ","ḝ","ę","ḙ","ḛ","ɇ","ɛ","ǝ","ⓕ","f","ḟ","ƒ","ꝼ","ⓖ","g","ǵ","ĝ","ḡ","ğ","ġ","ǧ","ģ","ǥ","ɠ","ꞡ","ᵹ","ꝿ","ⓗ","h","ĥ","ḣ","ḧ","ȟ","ḥ","ḩ","ḫ","ẖ","ħ","ⱨ","ⱶ","ɥ","ƕ","ⓘ","i","ì","í","î","ĩ","ī","ĭ","ï","ḯ","ỉ","ǐ","ȉ","ȋ","ị","į","ḭ","ɨ","ı","ⓙ","j","ĵ","ǰ","ɉ","ⓚ","k","ḱ","ǩ","ḳ","ķ","ḵ","ƙ","ⱪ","ꝁ","ꝃ","ꝅ","ꞣ","ⓛ","l","ŀ","ĺ","ľ","ḷ","ḹ","ļ","ḽ","ḻ","ſ","ł","ƚ","ɫ","ⱡ","ꝉ","ꞁ","ꝇ","lj","ⓜ","m","ḿ","ṁ","ṃ","ɱ","ɯ","ⓝ","n","ǹ","ń","ñ","ṅ","ň","ṇ","ņ","ṋ","ṉ","ƞ","ɲ","ʼn","ꞑ","ꞥ","nj","ⓞ","o","ò","ó","ô","ồ","ố","ỗ","ổ","õ","ṍ","ȭ","ṏ","ō","ṑ","ṓ","ŏ","ȯ","ȱ","ö","ȫ","ỏ","ő","ǒ","ȍ","ȏ","ơ","ờ","ớ","ỡ","ở","ợ","ọ","ộ","ǫ","ǭ","ø","ǿ","ɔ","ꝋ","ꝍ","ɵ","ƣ","ȣ","ꝏ","ⓟ","p","ṕ","ṗ","ƥ","ᵽ","ꝑ","ꝓ","ꝕ","ⓠ","q","ɋ","ꝗ","ꝙ","ⓡ","r","ŕ","ṙ","ř","ȑ","ȓ","ṛ","ṝ","ŗ","ṟ","ɍ","ɽ","ꝛ","ꞧ","ꞃ","ⓢ","s","ß","ś","ṥ","ŝ","ṡ","š","ṧ","ṣ","ṩ","ș","ş","ȿ","ꞩ","ꞅ","ẛ","ⓣ","t","ṫ","ẗ","ť","ṭ","ț","ţ","ṱ","ṯ","ŧ","ƭ","ʈ","ⱦ","ꞇ","ꜩ","ⓤ","u","ù","ú","û","ũ","ṹ","ū","ṻ","ŭ","ü","ǜ","ǘ","ǖ","ǚ","ủ","ů","ű","ǔ","ȕ","ȗ","ư","ừ","ứ","ữ","ử","ự","ụ","ṳ","ų","ṷ","ṵ","ʉ","ⓥ","v","ṽ","ṿ","ʋ","ꝟ","ʌ","ꝡ","ⓦ","w","ẁ","ẃ","ŵ","ẇ","ẅ","ẘ","ẉ","ⱳ","ⓧ","x","ẋ","ẍ","ⓨ","y","ỳ","ý","ŷ","ỹ","ȳ","ẏ","ÿ","ỷ","ẙ","ỵ","ƴ","ɏ","ỿ","ⓩ","z","ź","ẑ","ż","ž","ẓ","ẕ","ƶ","ȥ","ɀ","ⱬ","ꝣ","counter","Object","bind","func","init","search","resultsSelector","prepareOpts","destroy","container","createContainer","containerId","containerSelector","body","closest","adaptContainerCssClass","containerCss","addClass","containerCssClass","elementTabIndex","before","dropdown","find","adaptDropdownCssClass","dropdownCssClass","queryCount","resultsPage","initContainer","highlightUnderEvent","loadMoreIfNeeded","mousewheel","delta","deltaX","deltaY","scrollTop","scrollHeight","updateResults","removeClass","selectHighlighted","initSelection","monitorSource","maximumInputLength","disabled","prop","enable","readonly","autofocus","nextSearchTerm","close","propertyObserver","off","tabindex","removeAttr","show","optionToData","locked","idKey","tagName","toLowerCase","populateResults","populate","depth","selectable","compound","node","label","innerContainer","formatted","sortResults","formatResultCssClass","formatResult","html","defaults","placeholderOption","more","elm","getPlaceholder","getPlaceholderOption","not","obj","sync","observer","mutationCallback","mutations","forEach","MutationObserver","WebKitMutationObserver","MozMutationObserver","observe","attributes","subtree","triggerSelect","evt","Event","object","isDefaultPrevented","triggerChange","details","click","blurOnChange","blur","isInterfaceEnabled","enabledInterface","enableInterface","enabled","_enabled","_readonly","toggleClass","disable","opened","hasClass","positionDropdown","bodyOffset","above","changeDirection","resultsListNode","$dropdown","outerHeight","dropHeight","$window","windowWidth","windowHeight","viewPortRight","scrollLeft","viewportBottom","dropTop","dropLeft","enoughRoomBelow","enoughRoomAbove","dropWidth","enoughRoomOnRight","aboveNow","hide","dropdownAutoWidth","bottom","dropdownCss","shouldOpen","clearDropdownAlignmentPreference","open","opening","mask","cid","scroll","resize","orient","last","detach","selectOnBlur","noFocus","prev","that","parents","add","empty","clearSearch","externalSearch","getMaximumSelectionSize","maximumSelectionSize","ensureHighlightVisible","child","hb","rb","highlight","findHighlightableChoices","moveHighlight","choices","choice","filter","removeHighlight","countSelectableResults","below","loadMorePadding","postprocessResults","formatLoadMore","items","tokenize","initial","postRender","render","queryNumber","lastTerm","showSearchInput","maxSelSize","formatSelectionTooBig","minimumInputLength","formatInputTooShort","showSearch","formatInputTooLong","formatSearching","def","unshift","formatNoMatches","cancel","focusSearch","highlighted","onSelect","placeholder","firstOption","first","initContainerWidth","resolveContainerWidth","attrs","matches","class","focusser","len","minimumResultsForSearch","isFocused","openOnEnter","altKey","ctrlKey","shiftKey","allowClear","clear","setPlaceholder","removed","isPlaceholderOptionSelected","updateSelection","selected","is_match","noop","noHighlightUpdate","min","old","oldData","added","cssClass","formatSelection","formatSelectionCssClass","ids","grep","ordered","splice","selectChoice","selector","searchContainer","_this","keydowns","next","selectedChoice","unselect","resizeSearch","clearPlaceholder","maxWidth","getMaxSearchWidth","getVal","addSelectedChoice","tokenizer","closeOnSelect","enableChoice","enabledItem","disabledItem","replaceWith","fadeOut","dequeue","insertBefore","setVal","minimumWidth","containerLeft","searchWidth","sideBorderPadding","Math","floor","unique","buildChangeDetails","current","slice","map","onSortStart","onSortEnd","values","method","multiple","Array","allowedMethods","valueMethods","propertyMethods","methodsMap","isi18nEnabledGuardian","n","inputTooLongMsg","max","limit","selectionTooBigMsg","pageNumber","selectedObject","currentSearchTerm","util","abstract","single","multi"],"mappings":"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,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,KAAKC,IAAS,KAAKC,IAAS,KAAKC,IAAS,KAAKC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,KAAKC,IAAS,KAAKC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,KAAKC,IAAS,KAAKC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,KAAKC,IAAS,KAAKC,IAAS,KAAKC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,KAAKC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,KAAKC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,KAAKC,IAAS,KAAKC,IAAS,KAAKC,IAAS,KAAKC,IAAS,KAAKC,IAAS,KAAKC,IAAS,KAAKC,IAAS,KAAKC,IAAS,KAAKC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,KAAKC,IAAS,KAAKC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,KAAKC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,KAAKC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,KAAKC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,KAAKC,IAAS,KAAKC,IAAS,KAAKC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC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","sourcesContent":["/*\r\nCopyright 2012 Igor Vaynberg\r\n\r\nVersion: 3.4.5 Timestamp: Mon Nov 4 08:22:42 PST 2013\r\n\r\nThis software is licensed under the Apache License, Version 2.0 (the \"Apache License\") or the GNU\r\nGeneral Public License version 2 (the \"GPL License\"). You may choose either license to govern your\r\nuse of this software only upon the condition that you accept all of the terms of either the Apache\r\nLicense or the GPL License.\r\n\r\nYou may obtain a copy of the Apache License and the GPL License at:\r\n\r\n http://www.apache.org/licenses/LICENSE-2.0\r\n http://www.gnu.org/licenses/gpl-2.0.html\r\n\r\nUnless required by applicable law or agreed to in writing, software distributed under the\r\nApache License or the GPL Licesnse is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR\r\nCONDITIONS OF ANY KIND, either express or implied. See the Apache License and the GPL License for\r\nthe specific language governing permissions and limitations under the Apache License and the GPL License.\r\n*/\r\n(function ($) {\r\n if(typeof $.fn.each2 == \"undefined\") {\r\n $.extend($.fn, {\r\n /*\r\n * 4-10 times faster .each replacement\r\n * use it carefully, as it overrides jQuery context of element on each iteration\r\n */\r\n each2 : function (c) {\r\n var j = $([0]), i = -1, l = this.length;\r\n while (\r\n ++i < l\r\n && (j.context = j[0] = this[i])\r\n && c.call(j[0], i, j) !== false //\"this\"=DOM, i=index, j=jQuery object\r\n );\r\n return this;\r\n }\r\n });\r\n }\r\n})(jQuery);\r\n\r\n(function ($, undefined) {\r\n \"use strict\";\r\n /*global document, window, jQuery, console */\r\n var messageKeys= {};\r\n\r\n if (window.Select2 !== undefined) {\r\n return;\r\n }\r\n\r\n var KEY, AbstractSelect2, SingleSelect2, MultiSelect2, nextUid, sizer,\r\n lastMousePosition={x:0,y:0}, $document, scrollBarDimensions,\r\n\r\n KEY = {\r\n TAB: 9,\r\n ENTER: 13,\r\n ESC: 27,\r\n SPACE: 32,\r\n LEFT: 37,\r\n UP: 38,\r\n RIGHT: 39,\r\n DOWN: 40,\r\n SHIFT: 16,\r\n CTRL: 17,\r\n ALT: 18,\r\n PAGE_UP: 33,\r\n PAGE_DOWN: 34,\r\n HOME: 36,\r\n END: 35,\r\n BACKSPACE: 8,\r\n DELETE: 46,\r\n isArrow: function (k) {\r\n k = k.which ? k.which : k;\r\n switch (k) {\r\n case KEY.LEFT:\r\n case KEY.RIGHT:\r\n case KEY.UP:\r\n case KEY.DOWN:\r\n return true;\r\n }\r\n return false;\r\n },\r\n isControl: function (e) {\r\n var k = e.which;\r\n switch (k) {\r\n case KEY.SHIFT:\r\n case KEY.CTRL:\r\n case KEY.ALT:\r\n return true;\r\n }\r\n\r\n if (e.metaKey) return true;\r\n\r\n return false;\r\n },\r\n isFunctionKey: function (k) {\r\n k = k.which ? k.which : k;\r\n return k >= 112 && k <= 123;\r\n }\r\n },\r\n MEASURE_SCROLLBAR_TEMPLATE = \"
\",\r\n\r\n DIACRITICS = {\"\\u24B6\":\"A\",\"\\uFF21\":\"A\",\"\\u00C0\":\"A\",\"\\u00C1\":\"A\",\"\\u00C2\":\"A\",\"\\u1EA6\":\"A\",\"\\u1EA4\":\"A\",\"\\u1EAA\":\"A\",\"\\u1EA8\":\"A\",\"\\u00C3\":\"A\",\"\\u0100\":\"A\",\"\\u0102\":\"A\",\"\\u1EB0\":\"A\",\"\\u1EAE\":\"A\",\"\\u1EB4\":\"A\",\"\\u1EB2\":\"A\",\"\\u0226\":\"A\",\"\\u01E0\":\"A\",\"\\u00C4\":\"A\",\"\\u01DE\":\"A\",\"\\u1EA2\":\"A\",\"\\u00C5\":\"A\",\"\\u01FA\":\"A\",\"\\u01CD\":\"A\",\"\\u0200\":\"A\",\"\\u0202\":\"A\",\"\\u1EA0\":\"A\",\"\\u1EAC\":\"A\",\"\\u1EB6\":\"A\",\"\\u1E00\":\"A\",\"\\u0104\":\"A\",\"\\u023A\":\"A\",\"\\u2C6F\":\"A\",\"\\uA732\":\"AA\",\"\\u00C6\":\"AE\",\"\\u01FC\":\"AE\",\"\\u01E2\":\"AE\",\"\\uA734\":\"AO\",\"\\uA736\":\"AU\",\"\\uA738\":\"AV\",\"\\uA73A\":\"AV\",\"\\uA73C\":\"AY\",\"\\u24B7\":\"B\",\"\\uFF22\":\"B\",\"\\u1E02\":\"B\",\"\\u1E04\":\"B\",\"\\u1E06\":\"B\",\"\\u0243\":\"B\",\"\\u0182\":\"B\",\"\\u0181\":\"B\",\"\\u24B8\":\"C\",\"\\uFF23\":\"C\",\"\\u0106\":\"C\",\"\\u0108\":\"C\",\"\\u010A\":\"C\",\"\\u010C\":\"C\",\"\\u00C7\":\"C\",\"\\u1E08\":\"C\",\"\\u0187\":\"C\",\"\\u023B\":\"C\",\"\\uA73E\":\"C\",\"\\u24B9\":\"D\",\"\\uFF24\":\"D\",\"\\u1E0A\":\"D\",\"\\u010E\":\"D\",\"\\u1E0C\":\"D\",\"\\u1E10\":\"D\",\"\\u1E12\":\"D\",\"\\u1E0E\":\"D\",\"\\u0110\":\"D\",\"\\u018B\":\"D\",\"\\u018A\":\"D\",\"\\u0189\":\"D\",\"\\uA779\":\"D\",\"\\u01F1\":\"DZ\",\"\\u01C4\":\"DZ\",\"\\u01F2\":\"Dz\",\"\\u01C5\":\"Dz\",\"\\u24BA\":\"E\",\"\\uFF25\":\"E\",\"\\u00C8\":\"E\",\"\\u00C9\":\"E\",\"\\u00CA\":\"E\",\"\\u1EC0\":\"E\",\"\\u1EBE\":\"E\",\"\\u1EC4\":\"E\",\"\\u1EC2\":\"E\",\"\\u1EBC\":\"E\",\"\\u0112\":\"E\",\"\\u1E14\":\"E\",\"\\u1E16\":\"E\",\"\\u0114\":\"E\",\"\\u0116\":\"E\",\"\\u00CB\":\"E\",\"\\u1EBA\":\"E\",\"\\u011A\":\"E\",\"\\u0204\":\"E\",\"\\u0206\":\"E\",\"\\u1EB8\":\"E\",\"\\u1EC6\":\"E\",\"\\u0228\":\"E\",\"\\u1E1C\":\"E\",\"\\u0118\":\"E\",\"\\u1E18\":\"E\",\"\\u1E1A\":\"E\",\"\\u0190\":\"E\",\"\\u018E\":\"E\",\"\\u24BB\":\"F\",\"\\uFF26\":\"F\",\"\\u1E1E\":\"F\",\"\\u0191\":\"F\",\"\\uA77B\":\"F\",\"\\u24BC\":\"G\",\"\\uFF27\":\"G\",\"\\u01F4\":\"G\",\"\\u011C\":\"G\",\"\\u1E20\":\"G\",\"\\u011E\":\"G\",\"\\u0120\":\"G\",\"\\u01E6\":\"G\",\"\\u0122\":\"G\",\"\\u01E4\":\"G\",\"\\u0193\":\"G\",\"\\uA7A0\":\"G\",\"\\uA77D\":\"G\",\"\\uA77E\":\"G\",\"\\u24BD\":\"H\",\"\\uFF28\":\"H\",\"\\u0124\":\"H\",\"\\u1E22\":\"H\",\"\\u1E26\":\"H\",\"\\u021E\":\"H\",\"\\u1E24\":\"H\",\"\\u1E28\":\"H\",\"\\u1E2A\":\"H\",\"\\u0126\":\"H\",\"\\u2C67\":\"H\",\"\\u2C75\":\"H\",\"\\uA78D\":\"H\",\"\\u24BE\":\"I\",\"\\uFF29\":\"I\",\"\\u00CC\":\"I\",\"\\u00CD\":\"I\",\"\\u00CE\":\"I\",\"\\u0128\":\"I\",\"\\u012A\":\"I\",\"\\u012C\":\"I\",\"\\u0130\":\"I\",\"\\u00CF\":\"I\",\"\\u1E2E\":\"I\",\"\\u1EC8\":\"I\",\"\\u01CF\":\"I\",\"\\u0208\":\"I\",\"\\u020A\":\"I\",\"\\u1ECA\":\"I\",\"\\u012E\":\"I\",\"\\u1E2C\":\"I\",\"\\u0197\":\"I\",\"\\u24BF\":\"J\",\"\\uFF2A\":\"J\",\"\\u0134\":\"J\",\"\\u0248\":\"J\",\"\\u24C0\":\"K\",\"\\uFF2B\":\"K\",\"\\u1E30\":\"K\",\"\\u01E8\":\"K\",\"\\u1E32\":\"K\",\"\\u0136\":\"K\",\"\\u1E34\":\"K\",\"\\u0198\":\"K\",\"\\u2C69\":\"K\",\"\\uA740\":\"K\",\"\\uA742\":\"K\",\"\\uA744\":\"K\",\"\\uA7A2\":\"K\",\"\\u24C1\":\"L\",\"\\uFF2C\":\"L\",\"\\u013F\":\"L\",\"\\u0139\":\"L\",\"\\u013D\":\"L\",\"\\u1E36\":\"L\",\"\\u1E38\":\"L\",\"\\u013B\":\"L\",\"\\u1E3C\":\"L\",\"\\u1E3A\":\"L\",\"\\u0141\":\"L\",\"\\u023D\":\"L\",\"\\u2C62\":\"L\",\"\\u2C60\":\"L\",\"\\uA748\":\"L\",\"\\uA746\":\"L\",\"\\uA780\":\"L\",\"\\u01C7\":\"LJ\",\"\\u01C8\":\"Lj\",\"\\u24C2\":\"M\",\"\\uFF2D\":\"M\",\"\\u1E3E\":\"M\",\"\\u1E40\":\"M\",\"\\u1E42\":\"M\",\"\\u2C6E\":\"M\",\"\\u019C\":\"M\",\"\\u24C3\":\"N\",\"\\uFF2E\":\"N\",\"\\u01F8\":\"N\",\"\\u0143\":\"N\",\"\\u00D1\":\"N\",\"\\u1E44\":\"N\",\"\\u0147\":\"N\",\"\\u1E46\":\"N\",\"\\u0145\":\"N\",\"\\u1E4A\":\"N\",\"\\u1E48\":\"N\",\"\\u0220\":\"N\",\"\\u019D\":\"N\",\"\\uA790\":\"N\",\"\\uA7A4\":\"N\",\"\\u01CA\":\"NJ\",\"\\u01CB\":\"Nj\",\"\\u24C4\":\"O\",\"\\uFF2F\":\"O\",\"\\u00D2\":\"O\",\"\\u00D3\":\"O\",\"\\u00D4\":\"O\",\"\\u1ED2\":\"O\",\"\\u1ED0\":\"O\",\"\\u1ED6\":\"O\",\"\\u1ED4\":\"O\",\"\\u00D5\":\"O\",\"\\u1E4C\":\"O\",\"\\u022C\":\"O\",\"\\u1E4E\":\"O\",\"\\u014C\":\"O\",\"\\u1E50\":\"O\",\"\\u1E52\":\"O\",\"\\u014E\":\"O\",\"\\u022E\":\"O\",\"\\u0230\":\"O\",\"\\u00D6\":\"O\",\"\\u022A\":\"O\",\"\\u1ECE\":\"O\",\"\\u0150\":\"O\",\"\\u01D1\":\"O\",\"\\u020C\":\"O\",\"\\u020E\":\"O\",\"\\u01A0\":\"O\",\"\\u1EDC\":\"O\",\"\\u1EDA\":\"O\",\"\\u1EE0\":\"O\",\"\\u1EDE\":\"O\",\"\\u1EE2\":\"O\",\"\\u1ECC\":\"O\",\"\\u1ED8\":\"O\",\"\\u01EA\":\"O\",\"\\u01EC\":\"O\",\"\\u00D8\":\"O\",\"\\u01FE\":\"O\",\"\\u0186\":\"O\",\"\\u019F\":\"O\",\"\\uA74A\":\"O\",\"\\uA74C\":\"O\",\"\\u01A2\":\"OI\",\"\\uA74E\":\"OO\",\"\\u0222\":\"OU\",\"\\u24C5\":\"P\",\"\\uFF30\":\"P\",\"\\u1E54\":\"P\",\"\\u1E56\":\"P\",\"\\u01A4\":\"P\",\"\\u2C63\":\"P\",\"\\uA750\":\"P\",\"\\uA752\":\"P\",\"\\uA754\":\"P\",\"\\u24C6\":\"Q\",\"\\uFF31\":\"Q\",\"\\uA756\":\"Q\",\"\\uA758\":\"Q\",\"\\u024A\":\"Q\",\"\\u24C7\":\"R\",\"\\uFF32\":\"R\",\"\\u0154\":\"R\",\"\\u1E58\":\"R\",\"\\u0158\":\"R\",\"\\u0210\":\"R\",\"\\u0212\":\"R\",\"\\u1E5A\":\"R\",\"\\u1E5C\":\"R\",\"\\u0156\":\"R\",\"\\u1E5E\":\"R\",\"\\u024C\":\"R\",\"\\u2C64\":\"R\",\"\\uA75A\":\"R\",\"\\uA7A6\":\"R\",\"\\uA782\":\"R\",\"\\u24C8\":\"S\",\"\\uFF33\":\"S\",\"\\u1E9E\":\"S\",\"\\u015A\":\"S\",\"\\u1E64\":\"S\",\"\\u015C\":\"S\",\"\\u1E60\":\"S\",\"\\u0160\":\"S\",\"\\u1E66\":\"S\",\"\\u1E62\":\"S\",\"\\u1E68\":\"S\",\"\\u0218\":\"S\",\"\\u015E\":\"S\",\"\\u2C7E\":\"S\",\"\\uA7A8\":\"S\",\"\\uA784\":\"S\",\"\\u24C9\":\"T\",\"\\uFF34\":\"T\",\"\\u1E6A\":\"T\",\"\\u0164\":\"T\",\"\\u1E6C\":\"T\",\"\\u021A\":\"T\",\"\\u0162\":\"T\",\"\\u1E70\":\"T\",\"\\u1E6E\":\"T\",\"\\u0166\":\"T\",\"\\u01AC\":\"T\",\"\\u01AE\":\"T\",\"\\u023E\":\"T\",\"\\uA786\":\"T\",\"\\uA728\":\"TZ\",\"\\u24CA\":\"U\",\"\\uFF35\":\"U\",\"\\u00D9\":\"U\",\"\\u00DA\":\"U\",\"\\u00DB\":\"U\",\"\\u0168\":\"U\",\"\\u1E78\":\"U\",\"\\u016A\":\"U\",\"\\u1E7A\":\"U\",\"\\u016C\":\"U\",\"\\u00DC\":\"U\",\"\\u01DB\":\"U\",\"\\u01D7\":\"U\",\"\\u01D5\":\"U\",\"\\u01D9\":\"U\",\"\\u1EE6\":\"U\",\"\\u016E\":\"U\",\"\\u0170\":\"U\",\"\\u01D3\":\"U\",\"\\u0214\":\"U\",\"\\u0216\":\"U\",\"\\u01AF\":\"U\",\"\\u1EEA\":\"U\",\"\\u1EE8\":\"U\",\"\\u1EEE\":\"U\",\"\\u1EEC\":\"U\",\"\\u1EF0\":\"U\",\"\\u1EE4\":\"U\",\"\\u1E72\":\"U\",\"\\u0172\":\"U\",\"\\u1E76\":\"U\",\"\\u1E74\":\"U\",\"\\u0244\":\"U\",\"\\u24CB\":\"V\",\"\\uFF36\":\"V\",\"\\u1E7C\":\"V\",\"\\u1E7E\":\"V\",\"\\u01B2\":\"V\",\"\\uA75E\":\"V\",\"\\u0245\":\"V\",\"\\uA760\":\"VY\",\"\\u24CC\":\"W\",\"\\uFF37\":\"W\",\"\\u1E80\":\"W\",\"\\u1E82\":\"W\",\"\\u0174\":\"W\",\"\\u1E86\":\"W\",\"\\u1E84\":\"W\",\"\\u1E88\":\"W\",\"\\u2C72\":\"W\",\"\\u24CD\":\"X\",\"\\uFF38\":\"X\",\"\\u1E8A\":\"X\",\"\\u1E8C\":\"X\",\"\\u24CE\":\"Y\",\"\\uFF39\":\"Y\",\"\\u1EF2\":\"Y\",\"\\u00DD\":\"Y\",\"\\u0176\":\"Y\",\"\\u1EF8\":\"Y\",\"\\u0232\":\"Y\",\"\\u1E8E\":\"Y\",\"\\u0178\":\"Y\",\"\\u1EF6\":\"Y\",\"\\u1EF4\":\"Y\",\"\\u01B3\":\"Y\",\"\\u024E\":\"Y\",\"\\u1EFE\":\"Y\",\"\\u24CF\":\"Z\",\"\\uFF3A\":\"Z\",\"\\u0179\":\"Z\",\"\\u1E90\":\"Z\",\"\\u017B\":\"Z\",\"\\u017D\":\"Z\",\"\\u1E92\":\"Z\",\"\\u1E94\":\"Z\",\"\\u01B5\":\"Z\",\"\\u0224\":\"Z\",\"\\u2C7F\":\"Z\",\"\\u2C6B\":\"Z\",\"\\uA762\":\"Z\",\"\\u24D0\":\"a\",\"\\uFF41\":\"a\",\"\\u1E9A\":\"a\",\"\\u00E0\":\"a\",\"\\u00E1\":\"a\",\"\\u00E2\":\"a\",\"\\u1EA7\":\"a\",\"\\u1EA5\":\"a\",\"\\u1EAB\":\"a\",\"\\u1EA9\":\"a\",\"\\u00E3\":\"a\",\"\\u0101\":\"a\",\"\\u0103\":\"a\",\"\\u1EB1\":\"a\",\"\\u1EAF\":\"a\",\"\\u1EB5\":\"a\",\"\\u1EB3\":\"a\",\"\\u0227\":\"a\",\"\\u01E1\":\"a\",\"\\u00E4\":\"a\",\"\\u01DF\":\"a\",\"\\u1EA3\":\"a\",\"\\u00E5\":\"a\",\"\\u01FB\":\"a\",\"\\u01CE\":\"a\",\"\\u0201\":\"a\",\"\\u0203\":\"a\",\"\\u1EA1\":\"a\",\"\\u1EAD\":\"a\",\"\\u1EB7\":\"a\",\"\\u1E01\":\"a\",\"\\u0105\":\"a\",\"\\u2C65\":\"a\",\"\\u0250\":\"a\",\"\\uA733\":\"aa\",\"\\u00E6\":\"ae\",\"\\u01FD\":\"ae\",\"\\u01E3\":\"ae\",\"\\uA735\":\"ao\",\"\\uA737\":\"au\",\"\\uA739\":\"av\",\"\\uA73B\":\"av\",\"\\uA73D\":\"ay\",\"\\u24D1\":\"b\",\"\\uFF42\":\"b\",\"\\u1E03\":\"b\",\"\\u1E05\":\"b\",\"\\u1E07\":\"b\",\"\\u0180\":\"b\",\"\\u0183\":\"b\",\"\\u0253\":\"b\",\"\\u24D2\":\"c\",\"\\uFF43\":\"c\",\"\\u0107\":\"c\",\"\\u0109\":\"c\",\"\\u010B\":\"c\",\"\\u010D\":\"c\",\"\\u00E7\":\"c\",\"\\u1E09\":\"c\",\"\\u0188\":\"c\",\"\\u023C\":\"c\",\"\\uA73F\":\"c\",\"\\u2184\":\"c\",\"\\u24D3\":\"d\",\"\\uFF44\":\"d\",\"\\u1E0B\":\"d\",\"\\u010F\":\"d\",\"\\u1E0D\":\"d\",\"\\u1E11\":\"d\",\"\\u1E13\":\"d\",\"\\u1E0F\":\"d\",\"\\u0111\":\"d\",\"\\u018C\":\"d\",\"\\u0256\":\"d\",\"\\u0257\":\"d\",\"\\uA77A\":\"d\",\"\\u01F3\":\"dz\",\"\\u01C6\":\"dz\",\"\\u24D4\":\"e\",\"\\uFF45\":\"e\",\"\\u00E8\":\"e\",\"\\u00E9\":\"e\",\"\\u00EA\":\"e\",\"\\u1EC1\":\"e\",\"\\u1EBF\":\"e\",\"\\u1EC5\":\"e\",\"\\u1EC3\":\"e\",\"\\u1EBD\":\"e\",\"\\u0113\":\"e\",\"\\u1E15\":\"e\",\"\\u1E17\":\"e\",\"\\u0115\":\"e\",\"\\u0117\":\"e\",\"\\u00EB\":\"e\",\"\\u1EBB\":\"e\",\"\\u011B\":\"e\",\"\\u0205\":\"e\",\"\\u0207\":\"e\",\"\\u1EB9\":\"e\",\"\\u1EC7\":\"e\",\"\\u0229\":\"e\",\"\\u1E1D\":\"e\",\"\\u0119\":\"e\",\"\\u1E19\":\"e\",\"\\u1E1B\":\"e\",\"\\u0247\":\"e\",\"\\u025B\":\"e\",\"\\u01DD\":\"e\",\"\\u24D5\":\"f\",\"\\uFF46\":\"f\",\"\\u1E1F\":\"f\",\"\\u0192\":\"f\",\"\\uA77C\":\"f\",\"\\u24D6\":\"g\",\"\\uFF47\":\"g\",\"\\u01F5\":\"g\",\"\\u011D\":\"g\",\"\\u1E21\":\"g\",\"\\u011F\":\"g\",\"\\u0121\":\"g\",\"\\u01E7\":\"g\",\"\\u0123\":\"g\",\"\\u01E5\":\"g\",\"\\u0260\":\"g\",\"\\uA7A1\":\"g\",\"\\u1D79\":\"g\",\"\\uA77F\":\"g\",\"\\u24D7\":\"h\",\"\\uFF48\":\"h\",\"\\u0125\":\"h\",\"\\u1E23\":\"h\",\"\\u1E27\":\"h\",\"\\u021F\":\"h\",\"\\u1E25\":\"h\",\"\\u1E29\":\"h\",\"\\u1E2B\":\"h\",\"\\u1E96\":\"h\",\"\\u0127\":\"h\",\"\\u2C68\":\"h\",\"\\u2C76\":\"h\",\"\\u0265\":\"h\",\"\\u0195\":\"hv\",\"\\u24D8\":\"i\",\"\\uFF49\":\"i\",\"\\u00EC\":\"i\",\"\\u00ED\":\"i\",\"\\u00EE\":\"i\",\"\\u0129\":\"i\",\"\\u012B\":\"i\",\"\\u012D\":\"i\",\"\\u00EF\":\"i\",\"\\u1E2F\":\"i\",\"\\u1EC9\":\"i\",\"\\u01D0\":\"i\",\"\\u0209\":\"i\",\"\\u020B\":\"i\",\"\\u1ECB\":\"i\",\"\\u012F\":\"i\",\"\\u1E2D\":\"i\",\"\\u0268\":\"i\",\"\\u0131\":\"i\",\"\\u24D9\":\"j\",\"\\uFF4A\":\"j\",\"\\u0135\":\"j\",\"\\u01F0\":\"j\",\"\\u0249\":\"j\",\"\\u24DA\":\"k\",\"\\uFF4B\":\"k\",\"\\u1E31\":\"k\",\"\\u01E9\":\"k\",\"\\u1E33\":\"k\",\"\\u0137\":\"k\",\"\\u1E35\":\"k\",\"\\u0199\":\"k\",\"\\u2C6A\":\"k\",\"\\uA741\":\"k\",\"\\uA743\":\"k\",\"\\uA745\":\"k\",\"\\uA7A3\":\"k\",\"\\u24DB\":\"l\",\"\\uFF4C\":\"l\",\"\\u0140\":\"l\",\"\\u013A\":\"l\",\"\\u013E\":\"l\",\"\\u1E37\":\"l\",\"\\u1E39\":\"l\",\"\\u013C\":\"l\",\"\\u1E3D\":\"l\",\"\\u1E3B\":\"l\",\"\\u017F\":\"l\",\"\\u0142\":\"l\",\"\\u019A\":\"l\",\"\\u026B\":\"l\",\"\\u2C61\":\"l\",\"\\uA749\":\"l\",\"\\uA781\":\"l\",\"\\uA747\":\"l\",\"\\u01C9\":\"lj\",\"\\u24DC\":\"m\",\"\\uFF4D\":\"m\",\"\\u1E3F\":\"m\",\"\\u1E41\":\"m\",\"\\u1E43\":\"m\",\"\\u0271\":\"m\",\"\\u026F\":\"m\",\"\\u24DD\":\"n\",\"\\uFF4E\":\"n\",\"\\u01F9\":\"n\",\"\\u0144\":\"n\",\"\\u00F1\":\"n\",\"\\u1E45\":\"n\",\"\\u0148\":\"n\",\"\\u1E47\":\"n\",\"\\u0146\":\"n\",\"\\u1E4B\":\"n\",\"\\u1E49\":\"n\",\"\\u019E\":\"n\",\"\\u0272\":\"n\",\"\\u0149\":\"n\",\"\\uA791\":\"n\",\"\\uA7A5\":\"n\",\"\\u01CC\":\"nj\",\"\\u24DE\":\"o\",\"\\uFF4F\":\"o\",\"\\u00F2\":\"o\",\"\\u00F3\":\"o\",\"\\u00F4\":\"o\",\"\\u1ED3\":\"o\",\"\\u1ED1\":\"o\",\"\\u1ED7\":\"o\",\"\\u1ED5\":\"o\",\"\\u00F5\":\"o\",\"\\u1E4D\":\"o\",\"\\u022D\":\"o\",\"\\u1E4F\":\"o\",\"\\u014D\":\"o\",\"\\u1E51\":\"o\",\"\\u1E53\":\"o\",\"\\u014F\":\"o\",\"\\u022F\":\"o\",\"\\u0231\":\"o\",\"\\u00F6\":\"o\",\"\\u022B\":\"o\",\"\\u1ECF\":\"o\",\"\\u0151\":\"o\",\"\\u01D2\":\"o\",\"\\u020D\":\"o\",\"\\u020F\":\"o\",\"\\u01A1\":\"o\",\"\\u1EDD\":\"o\",\"\\u1EDB\":\"o\",\"\\u1EE1\":\"o\",\"\\u1EDF\":\"o\",\"\\u1EE3\":\"o\",\"\\u1ECD\":\"o\",\"\\u1ED9\":\"o\",\"\\u01EB\":\"o\",\"\\u01ED\":\"o\",\"\\u00F8\":\"o\",\"\\u01FF\":\"o\",\"\\u0254\":\"o\",\"\\uA74B\":\"o\",\"\\uA74D\":\"o\",\"\\u0275\":\"o\",\"\\u01A3\":\"oi\",\"\\u0223\":\"ou\",\"\\uA74F\":\"oo\",\"\\u24DF\":\"p\",\"\\uFF50\":\"p\",\"\\u1E55\":\"p\",\"\\u1E57\":\"p\",\"\\u01A5\":\"p\",\"\\u1D7D\":\"p\",\"\\uA751\":\"p\",\"\\uA753\":\"p\",\"\\uA755\":\"p\",\"\\u24E0\":\"q\",\"\\uFF51\":\"q\",\"\\u024B\":\"q\",\"\\uA757\":\"q\",\"\\uA759\":\"q\",\"\\u24E1\":\"r\",\"\\uFF52\":\"r\",\"\\u0155\":\"r\",\"\\u1E59\":\"r\",\"\\u0159\":\"r\",\"\\u0211\":\"r\",\"\\u0213\":\"r\",\"\\u1E5B\":\"r\",\"\\u1E5D\":\"r\",\"\\u0157\":\"r\",\"\\u1E5F\":\"r\",\"\\u024D\":\"r\",\"\\u027D\":\"r\",\"\\uA75B\":\"r\",\"\\uA7A7\":\"r\",\"\\uA783\":\"r\",\"\\u24E2\":\"s\",\"\\uFF53\":\"s\",\"\\u00DF\":\"s\",\"\\u015B\":\"s\",\"\\u1E65\":\"s\",\"\\u015D\":\"s\",\"\\u1E61\":\"s\",\"\\u0161\":\"s\",\"\\u1E67\":\"s\",\"\\u1E63\":\"s\",\"\\u1E69\":\"s\",\"\\u0219\":\"s\",\"\\u015F\":\"s\",\"\\u023F\":\"s\",\"\\uA7A9\":\"s\",\"\\uA785\":\"s\",\"\\u1E9B\":\"s\",\"\\u24E3\":\"t\",\"\\uFF54\":\"t\",\"\\u1E6B\":\"t\",\"\\u1E97\":\"t\",\"\\u0165\":\"t\",\"\\u1E6D\":\"t\",\"\\u021B\":\"t\",\"\\u0163\":\"t\",\"\\u1E71\":\"t\",\"\\u1E6F\":\"t\",\"\\u0167\":\"t\",\"\\u01AD\":\"t\",\"\\u0288\":\"t\",\"\\u2C66\":\"t\",\"\\uA787\":\"t\",\"\\uA729\":\"tz\",\"\\u24E4\":\"u\",\"\\uFF55\":\"u\",\"\\u00F9\":\"u\",\"\\u00FA\":\"u\",\"\\u00FB\":\"u\",\"\\u0169\":\"u\",\"\\u1E79\":\"u\",\"\\u016B\":\"u\",\"\\u1E7B\":\"u\",\"\\u016D\":\"u\",\"\\u00FC\":\"u\",\"\\u01DC\":\"u\",\"\\u01D8\":\"u\",\"\\u01D6\":\"u\",\"\\u01DA\":\"u\",\"\\u1EE7\":\"u\",\"\\u016F\":\"u\",\"\\u0171\":\"u\",\"\\u01D4\":\"u\",\"\\u0215\":\"u\",\"\\u0217\":\"u\",\"\\u01B0\":\"u\",\"\\u1EEB\":\"u\",\"\\u1EE9\":\"u\",\"\\u1EEF\":\"u\",\"\\u1EED\":\"u\",\"\\u1EF1\":\"u\",\"\\u1EE5\":\"u\",\"\\u1E73\":\"u\",\"\\u0173\":\"u\",\"\\u1E77\":\"u\",\"\\u1E75\":\"u\",\"\\u0289\":\"u\",\"\\u24E5\":\"v\",\"\\uFF56\":\"v\",\"\\u1E7D\":\"v\",\"\\u1E7F\":\"v\",\"\\u028B\":\"v\",\"\\uA75F\":\"v\",\"\\u028C\":\"v\",\"\\uA761\":\"vy\",\"\\u24E6\":\"w\",\"\\uFF57\":\"w\",\"\\u1E81\":\"w\",\"\\u1E83\":\"w\",\"\\u0175\":\"w\",\"\\u1E87\":\"w\",\"\\u1E85\":\"w\",\"\\u1E98\":\"w\",\"\\u1E89\":\"w\",\"\\u2C73\":\"w\",\"\\u24E7\":\"x\",\"\\uFF58\":\"x\",\"\\u1E8B\":\"x\",\"\\u1E8D\":\"x\",\"\\u24E8\":\"y\",\"\\uFF59\":\"y\",\"\\u1EF3\":\"y\",\"\\u00FD\":\"y\",\"\\u0177\":\"y\",\"\\u1EF9\":\"y\",\"\\u0233\":\"y\",\"\\u1E8F\":\"y\",\"\\u00FF\":\"y\",\"\\u1EF7\":\"y\",\"\\u1E99\":\"y\",\"\\u1EF5\":\"y\",\"\\u01B4\":\"y\",\"\\u024F\":\"y\",\"\\u1EFF\":\"y\",\"\\u24E9\":\"z\",\"\\uFF5A\":\"z\",\"\\u017A\":\"z\",\"\\u1E91\":\"z\",\"\\u017C\":\"z\",\"\\u017E\":\"z\",\"\\u1E93\":\"z\",\"\\u1E95\":\"z\",\"\\u01B6\":\"z\",\"\\u0225\":\"z\",\"\\u0240\":\"z\",\"\\u2C6C\":\"z\",\"\\uA763\":\"z\"};\r\n\r\n $document = $(document);\r\n\r\n nextUid=(function() { var counter=1; return function() { return counter++; }; }());\r\n\r\n if(typeof(isi18nEnabledGuardian) !== 'undefined'){\r\n // function to get all the query parameters from the URL.(Pre-reg)\r\n function getUrlParameters() {\r\n var url = window.location.href,\r\n retParams = {},\r\n parameters;\r\n if (url.indexOf('?') === -1) {\r\n return null;\r\n }\r\n url = url.split('?')[1];\r\n parameters = url.split('&');\r\n for (var i = 0; i < parameters.length; i++) {\r\n retParams[parameters[i].split('=')[0]] = parameters[i].split('=')[1];\r\n }\r\n return retParams;\r\n }\r\n\r\n var urlParams = getUrlParameters();\r\n function getMessageKeys(messageKeyPrefix){\r\n var locale = 'en_US';\r\n //Prereg dropdown,multidd use select2.js in which case requestLocaleEEC is undefined for now. So adding the below check and handling this case.\r\n if(typeof(requestLocaleEEC) == 'undefined'){\r\n if(urlParams!=null && urlParams['request_locale']!='undefined')\r\n {\r\n locale=urlParams['request_locale'];\r\n }\r\n }\r\n else{\r\n locale = requestLocaleEEC;\r\n }\r\n var source = '/getMessages.action?prefix=' + messageKeyPrefix + '&locale=' + locale;\r\n $.ajax({\r\n url: source,\r\n success: function(result){\r\n messageKeys = result;\r\n }});\r\n };\r\n getMessageKeys('eec.js.scripts_formbuilder_ext_select2_345.select2');\r\n }\r\n function stripDiacritics(str) {\r\n var ret, i, l, c;\r\n\r\n if (!str || str.length < 1) return str;\r\n\r\n ret = \"\";\r\n for (i = 0, l = str.length; i < l; i++) {\r\n c = str.charAt(i);\r\n ret += DIACRITICS[c] || c;\r\n }\r\n return ret;\r\n }\r\n\r\n function indexOf(value, array) {\r\n var i = 0, l = array.length;\r\n for (; i < l; i = i + 1) {\r\n if (equal(value, array[i])) return i;\r\n }\r\n return -1;\r\n }\r\n\r\n function measureScrollbar () {\r\n var $template = $( MEASURE_SCROLLBAR_TEMPLATE );\r\n $template.appendTo('body');\r\n\r\n var dim = {\r\n width: $template.width() - $template[0].clientWidth,\r\n height: $template.height() - $template[0].clientHeight\r\n };\r\n $template.remove();\r\n\r\n return dim;\r\n }\r\n\r\n /**\r\n * Compares equality of a and b\r\n * @param a\r\n * @param b\r\n */\r\n function equal(a, b) {\r\n if (a === b) return true;\r\n if (a === undefined || b === undefined) return false;\r\n if (a === null || b === null) return false;\r\n // Check whether 'a' or 'b' is a string (primitive or object).\r\n // The concatenation of an empty string (+'') converts its argument to a string's primitive.\r\n if (a.constructor === String) return a+'' === b+''; // a+'' - in case 'a' is a String object\r\n if (b.constructor === String) return b+'' === a+''; // b+'' - in case 'b' is a String object\r\n return false;\r\n }\r\n\r\n /**\r\n * Splits the string into an array of values, trimming each value. An empty array is returned for nulls or empty\r\n * strings\r\n * @param string\r\n * @param separator\r\n */\r\n function splitVal(string, separator) {\r\n var val, i, l;\r\n if (string === null || string.length < 1) return [];\r\n val = string.split(separator);\r\n for (i = 0, l = val.length; i < l; i = i + 1) val[i] = $.trim(val[i]);\r\n return val;\r\n }\r\n\r\n function getSideBorderPadding(element) {\r\n return element.outerWidth(false) - element.width();\r\n }\r\n\r\n function installKeyUpChangeEvent(element) {\r\n var key=\"keyup-change-value\";\r\n element.on(\"keydown\", function () {\r\n if ($.data(element, key) === undefined) {\r\n $.data(element, key, element.val());\r\n }\r\n });\r\n element.on(\"keyup\", function () {\r\n var val= $.data(element, key);\r\n if (val !== undefined && element.val() !== val) {\r\n $.removeData(element, key);\r\n element.trigger(\"keyup-change\");\r\n }\r\n });\r\n }\r\n\r\n $document.on(\"mousemove\", function (e) {\r\n lastMousePosition.x = e.pageX;\r\n lastMousePosition.y = e.pageY;\r\n });\r\n\r\n /**\r\n * filters mouse events so an event is fired only if the mouse moved.\r\n *\r\n * filters out mouse events that occur when mouse is stationary but\r\n * the elements under the pointer are scrolled.\r\n */\r\n function installFilteredMouseMove(element) {\r\n element.on(\"mousemove\", function (e) {\r\n var lastpos = lastMousePosition;\r\n if (lastpos === undefined || lastpos.x !== e.pageX || lastpos.y !== e.pageY) {\r\n $(e.target).trigger(\"mousemove-filtered\", e);\r\n }\r\n });\r\n }\r\n\r\n /**\r\n * Debounces a function. Returns a function that calls the original fn function only if no invocations have been made\r\n * within the last quietMillis milliseconds.\r\n *\r\n * @param quietMillis number of milliseconds to wait before invoking fn\r\n * @param fn function to be debounced\r\n * @param ctx object to be used as this reference within fn\r\n * @return debounced version of fn\r\n */\r\n function debounce(quietMillis, fn, ctx) {\r\n ctx = ctx || undefined;\r\n var timeout;\r\n return function () {\r\n var args = arguments;\r\n window.clearTimeout(timeout);\r\n timeout = window.setTimeout(function() {\r\n fn.apply(ctx, args);\r\n }, quietMillis);\r\n };\r\n }\r\n\r\n /**\r\n * A simple implementation of a thunk\r\n * @param formula function used to lazily initialize the thunk\r\n * @return {Function}\r\n */\r\n function thunk(formula) {\r\n var evaluated = false,\r\n value;\r\n return function() {\r\n if (evaluated === false) { value = formula(); evaluated = true; }\r\n return value;\r\n };\r\n };\r\n\r\n function installDebouncedScroll(threshold, element) {\r\n var notify = debounce(threshold, function (e) { element.trigger(\"scroll-debounced\", e);});\r\n element.on(\"scroll\", function (e) {\r\n if (indexOf(e.target, element.get()) >= 0) notify(e);\r\n });\r\n }\r\n\r\n function focus($el) {\r\n if ($el[0] === document.activeElement) return;\r\n\r\n /* set the focus in a 0 timeout - that way the focus is set after the processing\r\n of the current event has finished - which seems like the only reliable way\r\n to set focus */\r\n window.setTimeout(function() {\r\n var el=$el[0], pos=$el.val().length, range;\r\n\r\n $el.focus();\r\n\r\n /* make sure el received focus so we do not error out when trying to manipulate the caret.\r\n sometimes modals or others listeners may steal it after its set */\r\n if ($el.is(\":visible\") && el === document.activeElement) {\r\n\r\n /* after the focus is set move the caret to the end, necessary when we val()\r\n just before setting focus */\r\n if(el.setSelectionRange)\r\n {\r\n el.setSelectionRange(pos, pos);\r\n }\r\n else if (el.createTextRange) {\r\n range = el.createTextRange();\r\n range.collapse(false);\r\n range.select();\r\n }\r\n }\r\n }, 0);\r\n }\r\n\r\n function getCursorInfo(el) {\r\n el = $(el)[0];\r\n var offset = 0;\r\n var length = 0;\r\n if ('selectionStart' in el) {\r\n offset = el.selectionStart;\r\n length = el.selectionEnd - offset;\r\n } else if ('selection' in document) {\r\n el.focus();\r\n var sel = document.selection.createRange();\r\n length = document.selection.createRange().text.length;\r\n sel.moveStart('character', -el.value.length);\r\n offset = sel.text.length - length;\r\n }\r\n return { offset: offset, length: length };\r\n }\r\n\r\n function killEvent(event) {\r\n event.preventDefault();\r\n event.stopPropagation();\r\n }\r\n function killEventImmediately(event) {\r\n event.preventDefault();\r\n event.stopImmediatePropagation();\r\n }\r\n\r\n function measureTextWidth(e) {\r\n if (!sizer){\r\n var style = e[0].currentStyle || window.getComputedStyle(e[0], null);\r\n sizer = $(document.createElement(\"div\")).css({\r\n position: \"absolute\",\r\n left: \"-10000px\",\r\n top: \"-10000px\",\r\n display: \"none\",\r\n fontSize: style.fontSize,\r\n fontFamily: style.fontFamily,\r\n fontStyle: style.fontStyle,\r\n fontWeight: style.fontWeight,\r\n letterSpacing: style.letterSpacing,\r\n textTransform: style.textTransform,\r\n whiteSpace: \"nowrap\"\r\n });\r\n sizer.attr(\"class\",\"select2-sizer\");\r\n $(\"body\").append(sizer);\r\n }\r\n sizer.text(e.val());\r\n return sizer.width();\r\n }\r\n\r\n function syncCssClasses(dest, src, adapter) {\r\n var classes, replacements = [], adapted;\r\n\r\n classes = dest.attr(\"class\");\r\n if (classes) {\r\n classes = '' + classes; // for IE which returns object\r\n $(classes.split(\" \")).each2(function() {\r\n if (this.indexOf(\"select2-\") === 0) {\r\n replacements.push(this);\r\n }\r\n });\r\n }\r\n classes = src.attr(\"class\");\r\n if (classes) {\r\n classes = '' + classes; // for IE which returns object\r\n $(classes.split(\" \")).each2(function() {\r\n if (this.indexOf(\"select2-\") !== 0) {\r\n adapted = adapter(this);\r\n if (adapted) {\r\n replacements.push(adapted);\r\n }\r\n }\r\n });\r\n }\r\n dest.attr(\"class\", replacements.join(\" \"));\r\n }\r\n\r\n\r\n function markMatch(text, term, markup, escapeMarkup) {\r\n var match=stripDiacritics(text.toUpperCase()).indexOf(stripDiacritics(term.toUpperCase())),\r\n tl=term.length;\r\n\r\n if (match<0) {\r\n markup.push(escapeMarkup(text));\r\n return;\r\n }\r\n\r\n markup.push(escapeMarkup(text.substring(0, match)));\r\n markup.push(\"\");\r\n markup.push(escapeMarkup(text.substring(match, match + tl)));\r\n markup.push(\"\");\r\n markup.push(escapeMarkup(text.substring(match + tl, text.length)));\r\n }\r\n\r\n function defaultEscapeMarkup(markup) {\r\n var replace_map = {\r\n '\\\\': '\',\r\n '&': '&',\r\n '<': '<',\r\n '>': '>',\r\n '\"': '"',\r\n \"'\": ''',\r\n \"/\": '/'\r\n };\r\n\r\n return String(markup).replace(/[&<>\"'\\/\\\\]/g, function (match) {\r\n return replace_map[match];\r\n });\r\n }\r\n\r\n /**\r\n * Produces an ajax-based query function\r\n *\r\n * @param options object containing configuration paramters\r\n * @param options.params parameter map for the transport ajax call, can contain such options as cache, jsonpCallback, etc. see $.ajax\r\n * @param options.transport function that will be used to execute the ajax request. must be compatible with parameters supported by $.ajax\r\n * @param options.url url for the data\r\n * @param options.data a function(searchTerm, pageNumber, context) that should return an object containing query string parameters for the above url.\r\n * @param options.dataType request data type: ajax, jsonp, other datatatypes supported by jQuery's $.ajax function or the transport function if specified\r\n * @param options.quietMillis (optional) milliseconds to wait before making the ajaxRequest, helps debounce the ajax function if invoked too often\r\n * @param options.results a function(remoteData, pageNumber) that converts data returned form the remote request to the format expected by Select2.\r\n * The expected format is an object containing the following keys:\r\n * results array of objects that will be used as choices\r\n * more (optional) boolean indicating whether there are more results available\r\n * Example: {results:[{id:1, text:'Red'},{id:2, text:'Blue'}], more:true}\r\n */\r\n function ajax(options) {\r\n var timeout, // current scheduled but not yet executed request\r\n handler = null,\r\n quietMillis = options.quietMillis || 100,\r\n ajaxUrl = options.url,\r\n self = this;\r\n\r\n return function (query) {\r\n window.clearTimeout(timeout);\r\n timeout = window.setTimeout(function () {\r\n var data = options.data, // ajax data function\r\n url = ajaxUrl, // ajax url string or function\r\n transport = options.transport || $.fn.select2.ajaxDefaults.transport,\r\n // deprecated - to be removed in 4.0 - use params instead\r\n deprecated = {\r\n type: options.type || 'GET', // set type of request (GET or POST)\r\n cache: options.cache || false,\r\n jsonpCallback: options.jsonpCallback||undefined,\r\n dataType: options.dataType||\"json\"\r\n },\r\n params = $.extend({}, $.fn.select2.ajaxDefaults.params, deprecated);\r\n\r\n data = data ? data.call(self, query.term, query.page, query.context) : null;\r\n url = (typeof url === 'function') ? url.call(self, query.term, query.page, query.context) : url;\r\n\r\n if (handler) { handler.abort(); }\r\n\r\n if (options.params) {\r\n if ($.isFunction(options.params)) {\r\n $.extend(params, options.params.call(self));\r\n } else {\r\n $.extend(params, options.params);\r\n }\r\n }\r\n\r\n $.extend(params, {\r\n url: url,\r\n dataType: options.dataType,\r\n data: data,\r\n success: function (data) {\r\n // TODO - replace query.page with query so users have access to term, page, etc.\r\n var results = options.results(data, query.page);\r\n query.callback(results);\r\n }\r\n });\r\n handler = transport.call(self, params);\r\n }, quietMillis);\r\n };\r\n }\r\n\r\n /**\r\n * Produces a query function that works with a local array\r\n *\r\n * @param options object containing configuration parameters. The options parameter can either be an array or an\r\n * object.\r\n *\r\n * If the array form is used it is assumed that it contains objects with 'id' and 'text' keys.\r\n *\r\n * If the object form is used ti is assumed that it contains 'data' and 'text' keys. The 'data' key should contain\r\n * an array of objects that will be used as choices. These objects must contain at least an 'id' key. The 'text'\r\n * key can either be a String in which case it is expected that each element in the 'data' array has a key with the\r\n * value of 'text' which will be used to match choices. Alternatively, text can be a function(item) that can extract\r\n * the text.\r\n */\r\n function local(options) {\r\n var data = options, // data elements\r\n dataText,\r\n tmp,\r\n text = function (item) { return \"\"+item.text; }; // function used to retrieve the text portion of a data item that is matched against the search\r\n\r\n if ($.isArray(data)) {\r\n tmp = data;\r\n data = { results: tmp };\r\n }\r\n\r\n if ($.isFunction(data) === false) {\r\n tmp = data;\r\n data = function() { return tmp; };\r\n }\r\n\r\n var dataItem = data();\r\n if (dataItem.text) {\r\n text = dataItem.text;\r\n // if text is not a function we assume it to be a key name\r\n if (!$.isFunction(text)) {\r\n dataText = dataItem.text; // we need to store this in a separate variable because in the next step data gets reset and data.text is no longer available\r\n text = function (item) { return item[dataText]; };\r\n }\r\n }\r\n\r\n return function (query) {\r\n var t = query.term, filtered = { results: [] }, process;\r\n if (t === \"\") {\r\n query.callback(data());\r\n return;\r\n }\r\n\r\n process = function(datum, collection) {\r\n var group, attr;\r\n datum = datum[0];\r\n if (datum.children) {\r\n group = {};\r\n for (attr in datum) {\r\n if (datum.hasOwnProperty(attr)) group[attr]=datum[attr];\r\n }\r\n group.children=[];\r\n $(datum.children).each2(function(i, childDatum) { process(childDatum, group.children); });\r\n if (group.children.length || query.matcher(t, text(group), datum)) {\r\n collection.push(group);\r\n }\r\n } else {\r\n if (query.matcher(t, text(datum), datum)) {\r\n collection.push(datum);\r\n }\r\n }\r\n };\r\n\r\n $(data().results).each2(function(i, datum) { process(datum, filtered.results); });\r\n query.callback(filtered);\r\n };\r\n }\r\n\r\n // TODO javadoc\r\n function tags(data) {\r\n var isFunc = $.isFunction(data);\r\n return function (query) {\r\n var t = query.term, filtered = {results: []};\r\n $(isFunc ? data() : data).each(function () {\r\n var isObject = this.text !== undefined,\r\n text = isObject ? this.text : this;\r\n if (t === \"\" || query.matcher(t, text)) {\r\n filtered.results.push(isObject ? this : {id: this, text: this});\r\n }\r\n });\r\n query.callback(filtered);\r\n };\r\n }\r\n\r\n /**\r\n * Checks if the formatter function should be used.\r\n *\r\n * Throws an error if it is not a function. Returns true if it should be used,\r\n * false if no formatting should be performed.\r\n *\r\n * @param formatter\r\n */\r\n function checkFormatter(formatter, formatterName) {\r\n if ($.isFunction(formatter)) return true;\r\n if (!formatter) return false;\r\n throw new Error(formatterName +\" must be a function or a falsy value\");\r\n }\r\n\r\n function evaluate(val) {\r\n return $.isFunction(val) ? val() : val;\r\n }\r\n\r\n function countResults(results) {\r\n var count = 0;\r\n $.each(results, function(i, item) {\r\n if (item.children) {\r\n count += countResults(item.children);\r\n } else {\r\n count++;\r\n }\r\n });\r\n return count;\r\n }\r\n\r\n /**\r\n * Default tokenizer. This function uses breaks the input on substring match of any string from the\r\n * opts.tokenSeparators array and uses opts.createSearchChoice to create the choice object. Both of those\r\n * two options have to be defined in order for the tokenizer to work.\r\n *\r\n * @param input text user has typed so far or pasted into the search field\r\n * @param selection currently selected choices\r\n * @param selectCallback function(choice) callback tho add the choice to selection\r\n * @param opts select2's opts\r\n * @return undefined/null to leave the current input unchanged, or a string to change the input to the returned value\r\n */\r\n function defaultTokenizer(input, selection, selectCallback, opts) {\r\n var original = input, // store the original so we can compare and know if we need to tell the search to update its text\r\n dupe = false, // check for whether a token we extracted represents a duplicate selected choice\r\n token, // token\r\n index, // position at which the separator was found\r\n i, l, // looping variables\r\n separator; // the matched separator\r\n\r\n if (!opts.createSearchChoice || !opts.tokenSeparators || opts.tokenSeparators.length < 1) return undefined;\r\n\r\n while (true) {\r\n index = -1;\r\n\r\n for (i = 0, l = opts.tokenSeparators.length; i < l; i++) {\r\n separator = opts.tokenSeparators[i];\r\n index = input.indexOf(separator);\r\n if (index >= 0) break;\r\n }\r\n\r\n if (index < 0) break; // did not find any token separator in the input string, bail\r\n\r\n token = input.substring(0, index);\r\n input = input.substring(index + separator.length);\r\n\r\n if (token.length > 0) {\r\n token = opts.createSearchChoice.call(this, token, selection);\r\n if (token !== undefined && token !== null && opts.id(token) !== undefined && opts.id(token) !== null) {\r\n dupe = false;\r\n for (i = 0, l = selection.length; i < l; i++) {\r\n if (equal(opts.id(token), opts.id(selection[i]))) {\r\n dupe = true; break;\r\n }\r\n }\r\n\r\n if (!dupe) selectCallback(token);\r\n }\r\n }\r\n }\r\n\r\n if (original!==input) return input;\r\n }\r\n\r\n /**\r\n * Creates a new class\r\n *\r\n * @param superClass\r\n * @param methods\r\n */\r\n function clazz(SuperClass, methods) {\r\n var constructor = function () {};\r\n constructor.prototype = new SuperClass;\r\n constructor.prototype.constructor = constructor;\r\n constructor.prototype.parent = SuperClass.prototype;\r\n constructor.prototype = $.extend(constructor.prototype, methods);\r\n return constructor;\r\n }\r\n\r\n AbstractSelect2 = clazz(Object, {\r\n\r\n // abstract\r\n bind: function (func) {\r\n var self = this;\r\n return function () {\r\n func.apply(self, arguments);\r\n };\r\n },\r\n\r\n // abstract\r\n init: function (opts) {\r\n var results, search, resultsSelector = \".select2-results\";\r\n\r\n // prepare options\r\n this.opts = opts = this.prepareOpts(opts);\r\n\r\n this.id=opts.id;\r\n\r\n // destroy if called on an existing component\r\n if (opts.element.data(\"select2\") !== undefined &&\r\n opts.element.data(\"select2\") !== null) {\r\n opts.element.data(\"select2\").destroy();\r\n }\r\n\r\n this.container = this.createContainer();\r\n\r\n this.containerId=\"s2id_\"+(opts.element.attr(\"id\") || \"autogen\"+nextUid());\r\n this.containerSelector=\"#\"+this.containerId.replace(/([;&,\\.\\+\\*\\~':\"\\!\\^#$%@\\[\\]\\(\\)=>\\|])/g, '\\\\$1');\r\n this.container.attr(\"id\", this.containerId);\r\n\r\n // cache the body so future lookups are cheap\r\n this.body = thunk(function() { return opts.element.closest(\"body\"); });\r\n\r\n syncCssClasses(this.container, this.opts.element, this.opts.adaptContainerCssClass);\r\n\r\n this.container.attr(\"style\", opts.element.attr(\"style\"));\r\n this.container.css(evaluate(opts.containerCss));\r\n this.container.addClass(evaluate(opts.containerCssClass));\r\n\r\n this.elementTabIndex = this.opts.element.attr(\"tabindex\");\r\n\r\n // swap container for the element\r\n this.opts.element\r\n .data(\"select2\", this)\r\n .attr(\"tabindex\", \"-1\")\r\n .before(this.container)\r\n .on(\"click.select2\", killEvent); // do not leak click events\r\n\r\n this.container.data(\"select2\", this);\r\n\r\n this.dropdown = this.container.find(\".select2-drop\");\r\n\r\n syncCssClasses(this.dropdown, this.opts.element, this.opts.adaptDropdownCssClass);\r\n\r\n this.dropdown.addClass(evaluate(opts.dropdownCssClass));\r\n this.dropdown.data(\"select2\", this);\r\n this.dropdown.on(\"click\", killEvent);\r\n\r\n this.results = results = this.container.find(resultsSelector);\r\n this.search = search = this.container.find(\"input.select2-input\");\r\n\r\n this.queryCount = 0;\r\n this.resultsPage = 0;\r\n this.context = null;\r\n\r\n // initialize the container\r\n this.initContainer();\r\n\r\n this.container.on(\"click\", killEvent);\r\n\r\n installFilteredMouseMove(this.results);\r\n this.dropdown.on(\"mousemove-filtered touchstart touchmove touchend\", resultsSelector, this.bind(this.highlightUnderEvent));\r\n\r\n installDebouncedScroll(80, this.results);\r\n this.dropdown.on(\"scroll-debounced\", resultsSelector, this.bind(this.loadMoreIfNeeded));\r\n\r\n // do not propagate change event from the search field out of the component\r\n $(this.container).on(\"change\", \".select2-input\", function(e) {e.stopPropagation();});\r\n $(this.dropdown).on(\"change\", \".select2-input\", function(e) {e.stopPropagation();});\r\n\r\n // if jquery.mousewheel plugin is installed we can prevent out-of-bounds scrolling of results via mousewheel\r\n if ($.fn.mousewheel) {\r\n results.mousewheel(function (e, delta, deltaX, deltaY) {\r\n var top = results.scrollTop();\r\n if (deltaY > 0 && top - deltaY <= 0) {\r\n results.scrollTop(0);\r\n killEvent(e);\r\n } else if (deltaY < 0 && results.get(0).scrollHeight - results.scrollTop() + deltaY <= results.height()) {\r\n results.scrollTop(results.get(0).scrollHeight - results.height());\r\n killEvent(e);\r\n }\r\n });\r\n }\r\n\r\n installKeyUpChangeEvent(search);\r\n search.on(\"keyup-change input paste\", this.bind(this.updateResults));\r\n search.on(\"focus\", function () { search.addClass(\"select2-focused\"); });\r\n search.on(\"blur\", function () { search.removeClass(\"select2-focused\");});\r\n\r\n this.dropdown.on(\"mouseup\", resultsSelector, this.bind(function (e) {\r\n if ($(e.target).closest(\".select2-result-selectable\").length > 0) {\r\n this.highlightUnderEvent(e);\r\n this.selectHighlighted(e);\r\n }\r\n }));\r\n\r\n // trap all mouse events from leaving the dropdown. sometimes there may be a modal that is listening\r\n // for mouse events outside of itself so it can close itself. since the dropdown is now outside the select2's\r\n // dom it will trigger the popup close, which is not what we want\r\n this.dropdown.on(\"click mouseup mousedown\", function (e) { e.stopPropagation(); });\r\n\r\n if ($.isFunction(this.opts.initSelection)) {\r\n // initialize selection based on the current value of the source element\r\n this.initSelection();\r\n\r\n // if the user has provided a function that can set selection based on the value of the source element\r\n // we monitor the change event on the element and trigger it, allowing for two way synchronization\r\n this.monitorSource();\r\n }\r\n\r\n if (opts.maximumInputLength !== null) {\r\n this.search.attr(\"maxlength\", opts.maximumInputLength);\r\n }\r\n\r\n var disabled = opts.element.prop(\"disabled\");\r\n if (disabled === undefined) disabled = false;\r\n this.enable(!disabled);\r\n\r\n var readonly = opts.element.prop(\"readonly\");\r\n if (readonly === undefined) readonly = false;\r\n this.readonly(readonly);\r\n\r\n // Calculate size of scrollbar\r\n scrollBarDimensions = scrollBarDimensions || measureScrollbar();\r\n\r\n this.autofocus = opts.element.prop(\"autofocus\");\r\n opts.element.prop(\"autofocus\", false);\r\n if (this.autofocus) this.focus();\r\n\r\n this.nextSearchTerm = undefined;\r\n },\r\n\r\n // abstract\r\n destroy: function () {\r\n var element=this.opts.element, select2 = element.data(\"select2\");\r\n\r\n this.close();\r\n\r\n if (this.propertyObserver) { delete this.propertyObserver; this.propertyObserver = null; }\r\n\r\n if (select2 !== undefined) {\r\n select2.container.remove();\r\n select2.dropdown.remove();\r\n element\r\n .removeClass(\"select2-offscreen\")\r\n .removeData(\"select2\")\r\n .off(\".select2\")\r\n .prop(\"autofocus\", this.autofocus || false);\r\n if (this.elementTabIndex) {\r\n element.attr({tabindex: this.elementTabIndex});\r\n } else {\r\n element.removeAttr(\"tabindex\");\r\n }\r\n element.show();\r\n }\r\n },\r\n\r\n // abstract\r\n optionToData: function(element) {\r\n if (element.is(\"option\")) {\r\n return {\r\n id:element.prop(\"value\"),\r\n text:element.text(),\r\n element: element.get(),\r\n css: element.attr(\"class\"),\r\n disabled: element.prop(\"disabled\"),\r\n locked: equal(element.attr(\"locked\"), \"locked\") || equal(element.data(\"locked\"), true)\r\n };\r\n } else if (element.is(\"optgroup\")) {\r\n return {\r\n text:element.attr(\"label\"),\r\n children:[],\r\n element: element.get(),\r\n css: element.attr(\"class\")\r\n };\r\n }\r\n },\r\n\r\n // abstract\r\n prepareOpts: function (opts) {\r\n var element, select, idKey, ajaxUrl, self = this;\r\n\r\n element = opts.element;\r\n\r\n if (element.get(0).tagName.toLowerCase() === \"select\") {\r\n this.select = select = opts.element;\r\n }\r\n\r\n if (select) {\r\n // these options are not allowed when attached to a select because they are picked up off the element itself\r\n $.each([\"id\", \"multiple\", \"ajax\", \"query\", \"createSearchChoice\", \"initSelection\", \"data\", \"tags\"], function () {\r\n if (this in opts) {\r\n throw new Error(\"Option '\" + this + \"' is not allowed for Select2 when attached to a \",\r\n \"
\",\r\n \" \",\r\n \" \",\r\n \"
\"].join(\"\"));\r\n return container;\r\n },\r\n\r\n // single\r\n enableInterface: function() {\r\n if (this.parent.enableInterface.apply(this, arguments)) {\r\n this.focusser.prop(\"disabled\", !this.isInterfaceEnabled());\r\n }\r\n },\r\n\r\n // single\r\n opening: function () {\r\n var el, range, len;\r\n\r\n if (this.opts.minimumResultsForSearch >= 0) {\r\n this.showSearch(true);\r\n }\r\n\r\n this.parent.opening.apply(this, arguments);\r\n\r\n if (this.showSearchInput !== false) {\r\n // IE appends focusser.val() at the end of field :/ so we manually insert it at the beginning using a range\r\n // all other browsers handle this just fine\r\n\r\n this.search.val(this.focusser.val());\r\n }\r\n this.search.focus();\r\n // move the cursor to the end after focussing, otherwise it will be at the beginning and\r\n // new text will appear *before* focusser.val()\r\n el = this.search.get(0);\r\n if (el.createTextRange) {\r\n range = el.createTextRange();\r\n range.collapse(false);\r\n range.select();\r\n } else if (el.setSelectionRange) {\r\n len = this.search.val().length;\r\n el.setSelectionRange(len, len);\r\n }\r\n\r\n // initializes search's value with nextSearchTerm (if defined by user)\r\n // ignore nextSearchTerm if the dropdown is opened by the user pressing a letter\r\n if(this.search.val() === \"\") {\r\n if(this.nextSearchTerm != undefined){\r\n this.search.val(this.nextSearchTerm);\r\n this.search.select();\r\n }\r\n }\r\n\r\n this.focusser.prop(\"disabled\", true).val(\"\");\r\n this.updateResults(true);\r\n this.opts.element.trigger($.Event(\"select2-open\"));\r\n },\r\n\r\n // single\r\n close: function (params) {\r\n if (!this.opened()) return;\r\n this.parent.close.apply(this, arguments);\r\n\r\n params = params || {focus: true};\r\n this.focusser.removeAttr(\"disabled\");\r\n\r\n if (params.focus) {\r\n this.focusser.focus();\r\n }\r\n },\r\n\r\n // single\r\n focus: function () {\r\n if (this.opened()) {\r\n this.close();\r\n } else {\r\n this.focusser.removeAttr(\"disabled\");\r\n this.focusser.focus();\r\n }\r\n },\r\n\r\n // single\r\n isFocused: function () {\r\n return this.container.hasClass(\"select2-container-active\");\r\n },\r\n\r\n // single\r\n cancel: function () {\r\n this.parent.cancel.apply(this, arguments);\r\n this.focusser.removeAttr(\"disabled\");\r\n this.focusser.focus();\r\n },\r\n\r\n // single\r\n destroy: function() {\r\n $(\"label[for='\" + this.focusser.attr('id') + \"']\")\r\n .attr('for', this.opts.element.attr(\"id\"));\r\n this.parent.destroy.apply(this, arguments);\r\n },\r\n\r\n // single\r\n initContainer: function () {\r\n\r\n var selection,\r\n container = this.container,\r\n dropdown = this.dropdown;\r\n\r\n if (this.opts.minimumResultsForSearch < 0) {\r\n this.showSearch(false);\r\n } else {\r\n this.showSearch(true);\r\n }\r\n\r\n this.selection = selection = container.find(\".select2-choice\");\r\n\r\n this.focusser = container.find(\".select2-focusser\");\r\n\r\n // rewrite labels from original element to focusser\r\n this.focusser.attr(\"id\", \"s2id_autogen\"+nextUid());\r\n\r\n $(\"label[for='\" + this.opts.element.attr(\"id\") + \"']\")\r\n .attr('for', this.focusser.attr('id'));\r\n\r\n this.focusser.attr(\"tabindex\", this.elementTabIndex);\r\n\r\n this.search.on(\"keydown\", this.bind(function (e) {\r\n if (!this.isInterfaceEnabled()) return;\r\n\r\n if (e.which === KEY.PAGE_UP || e.which === KEY.PAGE_DOWN) {\r\n // prevent the page from scrolling\r\n killEvent(e);\r\n return;\r\n }\r\n\r\n switch (e.which) {\r\n case KEY.UP:\r\n case KEY.DOWN:\r\n this.moveHighlight((e.which === KEY.UP) ? -1 : 1);\r\n killEvent(e);\r\n return;\r\n case KEY.ENTER:\r\n this.selectHighlighted();\r\n killEvent(e);\r\n return;\r\n case KEY.TAB:\r\n this.selectHighlighted({noFocus: true});\r\n return;\r\n case KEY.ESC:\r\n this.cancel(e);\r\n killEvent(e);\r\n return;\r\n }\r\n }));\r\n\r\n this.search.on(\"blur\", this.bind(function(e) {\r\n // a workaround for chrome to keep the search field focussed when the scroll bar is used to scroll the dropdown.\r\n // without this the search field loses focus which is annoying\r\n if (document.activeElement === this.body().get(0)) {\r\n window.setTimeout(this.bind(function() {\r\n this.search.focus();\r\n }), 0);\r\n }\r\n }));\r\n\r\n this.focusser.on(\"keydown\", this.bind(function (e) {\r\n if (!this.isInterfaceEnabled()) return;\r\n\r\n if (e.which === KEY.TAB || KEY.isControl(e) || KEY.isFunctionKey(e) || e.which === KEY.ESC) {\r\n return;\r\n }\r\n\r\n if (this.opts.openOnEnter === false && e.which === KEY.ENTER) {\r\n killEvent(e);\r\n return;\r\n }\r\n\r\n if (e.which == KEY.DOWN || e.which == KEY.UP\r\n || (e.which == KEY.ENTER && this.opts.openOnEnter)) {\r\n\r\n if (e.altKey || e.ctrlKey || e.shiftKey || e.metaKey) return;\r\n\r\n this.open();\r\n killEvent(e);\r\n return;\r\n }\r\n\r\n if (e.which == KEY.DELETE || e.which == KEY.BACKSPACE) {\r\n if (this.opts.allowClear) {\r\n this.clear();\r\n }\r\n killEvent(e);\r\n return;\r\n }\r\n }));\r\n\r\n\r\n installKeyUpChangeEvent(this.focusser);\r\n this.focusser.on(\"keyup-change input\", this.bind(function(e) {\r\n if (this.opts.minimumResultsForSearch >= 0) {\r\n e.stopPropagation();\r\n if (this.opened()) return;\r\n this.open();\r\n }\r\n }));\r\n\r\n selection.on(\"mousedown\", \"abbr\", this.bind(function (e) {\r\n if (!this.isInterfaceEnabled()) return;\r\n this.clear();\r\n killEventImmediately(e);\r\n this.close();\r\n this.selection.focus();\r\n }));\r\n\r\n selection.on(\"mousedown\", this.bind(function (e) {\r\n\r\n if (!this.container.hasClass(\"select2-container-active\")) {\r\n this.opts.element.trigger($.Event(\"select2-focus\"));\r\n }\r\n\r\n if (this.opened()) {\r\n this.close();\r\n } else if (this.isInterfaceEnabled()) {\r\n this.open();\r\n }\r\n\r\n killEvent(e);\r\n }));\r\n\r\n dropdown.on(\"mousedown\", this.bind(function() { this.search.focus(); }));\r\n\r\n selection.on(\"focus\", this.bind(function(e) {\r\n killEvent(e);\r\n }));\r\n\r\n this.focusser.on(\"focus\", this.bind(function(){\r\n if (!this.container.hasClass(\"select2-container-active\")) {\r\n this.opts.element.trigger($.Event(\"select2-focus\"));\r\n }\r\n this.container.addClass(\"select2-container-active\");\r\n })).on(\"blur\", this.bind(function() {\r\n if (!this.opened()) {\r\n this.container.removeClass(\"select2-container-active\");\r\n this.opts.element.trigger($.Event(\"select2-blur\"));\r\n }\r\n }));\r\n this.search.on(\"focus\", this.bind(function(){\r\n if (!this.container.hasClass(\"select2-container-active\")) {\r\n this.opts.element.trigger($.Event(\"select2-focus\"));\r\n }\r\n this.container.addClass(\"select2-container-active\");\r\n }));\r\n\r\n this.initContainerWidth();\r\n this.opts.element.addClass(\"select2-offscreen\");\r\n this.setPlaceholder();\r\n\r\n },\r\n\r\n // single\r\n clear: function(triggerChange) {\r\n var data=this.selection.data(\"select2-data\");\r\n if (data) { // guard against queued quick consecutive clicks\r\n var evt = $.Event(\"select2-clearing\");\r\n this.opts.element.trigger(evt);\r\n if (evt.isDefaultPrevented()) {\r\n return;\r\n }\r\n var placeholderOption = this.getPlaceholderOption();\r\n this.opts.element.val(placeholderOption ? placeholderOption.val() : \"\");\r\n this.selection.find(\".select2-chosen\").empty();\r\n this.selection.removeData(\"select2-data\");\r\n this.setPlaceholder();\r\n\r\n if (triggerChange !== false){\r\n this.opts.element.trigger({ type: \"select2-removed\", val: this.id(data), choice: data });\r\n this.triggerChange({removed:data});\r\n }\r\n }\r\n },\r\n\r\n /**\r\n * Sets selection based on source element's value\r\n */\r\n // single\r\n initSelection: function () {\r\n var selected;\r\n if (this.isPlaceholderOptionSelected()) {\r\n this.updateSelection(null);\r\n this.close();\r\n this.setPlaceholder();\r\n } else {\r\n var self = this;\r\n this.opts.initSelection.call(null, this.opts.element, function(selected){\r\n if (selected !== undefined && selected !== null) {\r\n self.updateSelection(selected);\r\n self.close();\r\n self.setPlaceholder();\r\n }\r\n });\r\n }\r\n },\r\n\r\n isPlaceholderOptionSelected: function() {\r\n var placeholderOption;\r\n if (!this.getPlaceholder()) return false; // no placeholder specified so no option should be considered\r\n return ((placeholderOption = this.getPlaceholderOption()) !== undefined && placeholderOption.prop(\"selected\"))\r\n || (this.opts.element.val() === \"\")\r\n || (this.opts.element.val() === undefined)\r\n || (this.opts.element.val() === null);\r\n },\r\n\r\n // single\r\n prepareOpts: function () {\r\n var opts = this.parent.prepareOpts.apply(this, arguments),\r\n self=this;\r\n\r\n if (opts.element.get(0).tagName.toLowerCase() === \"select\") {\r\n // install the selection initializer\r\n opts.initSelection = function (element, callback) {\r\n var selected = element.find(\"option\").filter(function() { return this.selected });\r\n // a single select box always has a value, no need to null check 'selected'\r\n callback(self.optionToData(selected));\r\n };\r\n } else if (\"data\" in opts) {\r\n // install default initSelection when applied to hidden input and data is local\r\n opts.initSelection = opts.initSelection || function (element, callback) {\r\n var id = element.val();\r\n //search in data by id, storing the actual matching item\r\n var match = null;\r\n opts.query({\r\n matcher: function(term, text, el){\r\n var is_match = equal(id, opts.id(el));\r\n if (is_match) {\r\n match = el;\r\n }\r\n return is_match;\r\n },\r\n callback: !$.isFunction(callback) ? $.noop : function() {\r\n callback(match);\r\n }\r\n });\r\n };\r\n }\r\n\r\n return opts;\r\n },\r\n\r\n // single\r\n getPlaceholder: function() {\r\n // if a placeholder is specified on a single select without a valid placeholder option ignore it\r\n if (this.select) {\r\n if (this.getPlaceholderOption() === undefined) {\r\n return undefined;\r\n }\r\n }\r\n\r\n return this.parent.getPlaceholder.apply(this, arguments);\r\n },\r\n\r\n // single\r\n setPlaceholder: function () {\r\n var placeholder = this.getPlaceholder();\r\n\r\n if (this.isPlaceholderOptionSelected() && placeholder !== undefined) {\r\n\r\n // check for a placeholder option if attached to a select\r\n if (this.select && this.getPlaceholderOption() === undefined) return;\r\n\r\n this.selection.find(\".select2-chosen\").html(this.opts.escapeMarkup(placeholder));\r\n\r\n this.selection.addClass(\"select2-default\");\r\n\r\n this.container.removeClass(\"select2-allowclear\");\r\n }\r\n },\r\n\r\n // single\r\n postprocessResults: function (data, initial, noHighlightUpdate) {\r\n var selected = 0, self = this, showSearchInput = true;\r\n\r\n // find the selected element in the result list\r\n\r\n this.findHighlightableChoices().each2(function (i, elm) {\r\n if (equal(self.id(elm.data(\"select2-data\")), self.opts.element.val())) {\r\n selected = i;\r\n return false;\r\n }\r\n });\r\n\r\n // and highlight it\r\n if (noHighlightUpdate !== false) {\r\n if (initial === true && selected >= 0) {\r\n this.highlight(selected);\r\n } else {\r\n this.highlight(0);\r\n }\r\n }\r\n\r\n // hide the search box if this is the first we got the results and there are enough of them for search\r\n\r\n if (initial === true) {\r\n var min = this.opts.minimumResultsForSearch;\r\n if (min >= 0) {\r\n this.showSearch(countResults(data.results) >= min);\r\n }\r\n }\r\n },\r\n\r\n // single\r\n showSearch: function(showSearchInput) {\r\n if (this.showSearchInput === showSearchInput) return;\r\n\r\n this.showSearchInput = showSearchInput;\r\n\r\n this.dropdown.find(\".select2-search\").toggleClass(\"select2-search-hidden\", !showSearchInput);\r\n this.dropdown.find(\".select2-search\").toggleClass(\"select2-offscreen\", !showSearchInput);\r\n //add \"select2-with-searchbox\" to the container if search box is shown\r\n $(this.dropdown, this.container).toggleClass(\"select2-with-searchbox\", showSearchInput);\r\n },\r\n\r\n // single\r\n onSelect: function (data, options) {\r\n\r\n if (!this.triggerSelect(data)) { return; }\r\n\r\n var old = this.opts.element.val(),\r\n oldData = this.data();\r\n\r\n this.opts.element.val(this.id(data));\r\n this.updateSelection(data);\r\n\r\n this.opts.element.trigger({ type: \"select2-selected\", val: this.id(data), choice: data });\r\n\r\n this.nextSearchTerm = this.opts.nextSearchTerm(data, this.search.val());\r\n this.close();\r\n\r\n if (!options || !options.noFocus)\r\n this.focusser.focus();\r\n\r\n if (!equal(old, this.id(data))) { this.triggerChange({added:data,removed:oldData}); }\r\n },\r\n\r\n // single\r\n updateSelection: function (data) {\r\n\r\n var container=this.selection.find(\".select2-chosen\"), formatted, cssClass;\r\n\r\n this.selection.data(\"select2-data\", data);\r\n\r\n container.empty();\r\n if (data !== null) {\r\n formatted=this.opts.formatSelection(data, container, this.opts.escapeMarkup);\r\n }\r\n if (formatted !== undefined) {\r\n container.append(formatted);\r\n }\r\n cssClass=this.opts.formatSelectionCssClass(data, container);\r\n if (cssClass !== undefined) {\r\n container.addClass(cssClass);\r\n }\r\n\r\n this.selection.removeClass(\"select2-default\");\r\n\r\n if (this.opts.allowClear && this.getPlaceholder() !== undefined) {\r\n this.container.addClass(\"select2-allowclear\");\r\n }\r\n },\r\n\r\n // single\r\n val: function () {\r\n var val,\r\n triggerChange = false,\r\n data = null,\r\n self = this,\r\n oldData = this.data();\r\n\r\n if (arguments.length === 0) {\r\n return this.opts.element.val();\r\n }\r\n\r\n val = arguments[0];\r\n\r\n if (arguments.length > 1) {\r\n triggerChange = arguments[1];\r\n }\r\n\r\n if (this.select) {\r\n this.select\r\n .val(val)\r\n .find(\"option\").filter(function() { return this.selected }).each2(function (i, elm) {\r\n data = self.optionToData(elm);\r\n return false;\r\n });\r\n this.updateSelection(data);\r\n this.setPlaceholder();\r\n if (triggerChange) {\r\n this.triggerChange({added: data, removed:oldData});\r\n }\r\n } else {\r\n // val is an id. !val is true for [undefined,null,'',0] - 0 is legal\r\n if (!val && val !== 0) {\r\n this.clear(triggerChange);\r\n return;\r\n }\r\n if (this.opts.initSelection === undefined) {\r\n throw new Error(\"cannot call val() if initSelection() is not defined\");\r\n }\r\n this.opts.element.val(val);\r\n this.opts.initSelection(this.opts.element, function(data){\r\n self.opts.element.val(!data ? \"\" : self.id(data));\r\n self.updateSelection(data);\r\n self.setPlaceholder();\r\n if (triggerChange) {\r\n self.triggerChange({added: data, removed:oldData});\r\n }\r\n });\r\n }\r\n },\r\n\r\n // single\r\n clearSearch: function () {\r\n this.search.val(\"\");\r\n this.focusser.val(\"\");\r\n },\r\n\r\n // single\r\n data: function(value) {\r\n var data,\r\n triggerChange = false;\r\n\r\n if (arguments.length === 0) {\r\n data = this.selection.data(\"select2-data\");\r\n if (data == undefined) data = null;\r\n return data;\r\n } else {\r\n if (arguments.length > 1) {\r\n triggerChange = arguments[1];\r\n }\r\n if (!value) {\r\n this.clear(triggerChange);\r\n } else {\r\n data = this.data();\r\n this.opts.element.val(!value ? \"\" : this.id(value));\r\n this.updateSelection(value);\r\n if (triggerChange) {\r\n this.triggerChange({added: value, removed:data});\r\n }\r\n }\r\n }\r\n }\r\n });\r\n\r\n MultiSelect2 = clazz(AbstractSelect2, {\r\n\r\n // multi\r\n createContainer: function () {\r\n var container = $(document.createElement(\"div\")).attr({\r\n \"class\": \"select2-container select2-container-multi\"\r\n }).html([\r\n \"\",\r\n \"
\",\r\n \" \",\r\n \"
\"].join(\"\"));\r\n return container;\r\n },\r\n\r\n // multi\r\n prepareOpts: function () {\r\n var opts = this.parent.prepareOpts.apply(this, arguments),\r\n self=this;\r\n\r\n // TODO validate placeholder is a string if specified\r\n\r\n if (opts.element.get(0).tagName.toLowerCase() === \"select\") {\r\n // install sthe selection initializer\r\n opts.initSelection = function (element, callback) {\r\n\r\n var data = [];\r\n\r\n element.find(\"option\").filter(function() { return this.selected }).each2(function (i, elm) {\r\n data.push(self.optionToData(elm));\r\n });\r\n callback(data);\r\n };\r\n } else if (\"data\" in opts) {\r\n // install default initSelection when applied to hidden input and data is local\r\n opts.initSelection = opts.initSelection || function (element, callback) {\r\n var ids = splitVal(element.val(), opts.separator);\r\n //search in data by array of ids, storing matching items in a list\r\n var matches = [];\r\n opts.query({\r\n matcher: function(term, text, el){\r\n var is_match = $.grep(ids, function(id) {\r\n return equal(id, opts.id(el));\r\n }).length;\r\n if (is_match) {\r\n matches.push(el);\r\n }\r\n return is_match;\r\n },\r\n callback: !$.isFunction(callback) ? $.noop : function() {\r\n // reorder matches based on the order they appear in the ids array because right now\r\n // they are in the order in which they appear in data array\r\n var ordered = [];\r\n for (var i = 0; i < ids.length; i++) {\r\n var id = ids[i];\r\n for (var j = 0; j < matches.length; j++) {\r\n var match = matches[j];\r\n if (equal(id, opts.id(match))) {\r\n ordered.push(match);\r\n matches.splice(j, 1);\r\n break;\r\n }\r\n }\r\n }\r\n callback(ordered);\r\n }\r\n });\r\n };\r\n }\r\n\r\n return opts;\r\n },\r\n\r\n // multi\r\n selectChoice: function (choice) {\r\n\r\n var selected = this.container.find(\".select2-search-choice-focus\");\r\n if (selected.length && choice && choice[0] == selected[0]) {\r\n\r\n } else {\r\n if (selected.length) {\r\n this.opts.element.trigger(\"choice-deselected\", selected);\r\n }\r\n selected.removeClass(\"select2-search-choice-focus\");\r\n if (choice && choice.length) {\r\n this.close();\r\n choice.addClass(\"select2-search-choice-focus\");\r\n this.opts.element.trigger(\"choice-selected\", choice);\r\n }\r\n }\r\n },\r\n\r\n // multi\r\n destroy: function() {\r\n $(\"label[for='\" + this.search.attr('id') + \"']\")\r\n .attr('for', this.opts.element.attr(\"id\"));\r\n this.parent.destroy.apply(this, arguments);\r\n },\r\n\r\n // multi\r\n initContainer: function () {\r\n\r\n var selector = \".select2-choices\", selection;\r\n\r\n this.searchContainer = this.container.find(\".select2-search-field\");\r\n this.selection = selection = this.container.find(selector);\r\n\r\n var _this = this;\r\n this.selection.on(\"click\", \".select2-search-choice:not(.select2-locked)\", function (e) {\r\n //killEvent(e);\r\n _this.search[0].focus();\r\n _this.selectChoice($(this));\r\n });\r\n\r\n // rewrite labels from original element to focusser\r\n this.search.attr(\"id\", \"s2id_autogen\"+nextUid());\r\n $(\"label[for='\" + this.opts.element.attr(\"id\") + \"']\")\r\n .attr('for', this.search.attr('id'));\r\n\r\n this.search.on(\"input paste\", this.bind(function() {\r\n if (!this.isInterfaceEnabled()) return;\r\n if (!this.opened()) {\r\n this.open();\r\n }\r\n }));\r\n\r\n this.search.attr(\"tabindex\", this.elementTabIndex);\r\n\r\n this.keydowns = 0;\r\n this.search.on(\"keydown\", this.bind(function (e) {\r\n if (!this.isInterfaceEnabled()) return;\r\n\r\n ++this.keydowns;\r\n var selected = selection.find(\".select2-search-choice-focus\");\r\n var prev = selected.prev(\".select2-search-choice:not(.select2-locked)\");\r\n var next = selected.next(\".select2-search-choice:not(.select2-locked)\");\r\n var pos = getCursorInfo(this.search);\r\n\r\n if (selected.length &&\r\n (e.which == KEY.LEFT || e.which == KEY.RIGHT || e.which == KEY.BACKSPACE || e.which == KEY.DELETE || e.which == KEY.ENTER)) {\r\n var selectedChoice = selected;\r\n if (e.which == KEY.LEFT && prev.length) {\r\n selectedChoice = prev;\r\n }\r\n else if (e.which == KEY.RIGHT) {\r\n selectedChoice = next.length ? next : null;\r\n }\r\n else if (e.which === KEY.BACKSPACE) {\r\n this.unselect(selected.first());\r\n this.search.width(10);\r\n selectedChoice = prev.length ? prev : next;\r\n } else if (e.which == KEY.DELETE) {\r\n this.unselect(selected.first());\r\n this.search.width(10);\r\n selectedChoice = next.length ? next : null;\r\n } else if (e.which == KEY.ENTER) {\r\n selectedChoice = null;\r\n }\r\n\r\n this.selectChoice(selectedChoice);\r\n killEvent(e);\r\n if (!selectedChoice || !selectedChoice.length) {\r\n this.open();\r\n }\r\n return;\r\n } else if (((e.which === KEY.BACKSPACE && this.keydowns == 1)\r\n || e.which == KEY.LEFT) && (pos.offset == 0 && !pos.length)) {\r\n\r\n this.selectChoice(selection.find(\".select2-search-choice:not(.select2-locked)\").last());\r\n killEvent(e);\r\n return;\r\n } else {\r\n this.selectChoice(null);\r\n }\r\n\r\n if (this.opened()) {\r\n switch (e.which) {\r\n case KEY.UP:\r\n case KEY.DOWN:\r\n this.moveHighlight((e.which === KEY.UP) ? -1 : 1);\r\n killEvent(e);\r\n return;\r\n case KEY.ENTER:\r\n this.selectHighlighted();\r\n killEvent(e);\r\n return;\r\n case KEY.TAB:\r\n this.selectHighlighted({noFocus:true});\r\n this.close();\r\n return;\r\n case KEY.ESC:\r\n this.cancel(e);\r\n killEvent(e);\r\n return;\r\n }\r\n }\r\n\r\n if (e.which === KEY.TAB || KEY.isControl(e) || KEY.isFunctionKey(e)\r\n || e.which === KEY.BACKSPACE || e.which === KEY.ESC) {\r\n return;\r\n }\r\n\r\n if (e.which === KEY.ENTER) {\r\n if (this.opts.openOnEnter === false) {\r\n return;\r\n } else if (e.altKey || e.ctrlKey || e.shiftKey || e.metaKey) {\r\n return;\r\n }\r\n }\r\n\r\n this.open();\r\n\r\n if (e.which === KEY.PAGE_UP || e.which === KEY.PAGE_DOWN) {\r\n // prevent the page from scrolling\r\n killEvent(e);\r\n }\r\n\r\n if (e.which === KEY.ENTER) {\r\n // prevent form from being submitted\r\n killEvent(e);\r\n }\r\n\r\n }));\r\n\r\n this.search.on(\"keyup\", this.bind(function (e) {\r\n this.keydowns = 0;\r\n this.resizeSearch();\r\n })\r\n );\r\n\r\n this.search.on(\"blur\", this.bind(function(e) {\r\n this.container.removeClass(\"select2-container-active\");\r\n this.search.removeClass(\"select2-focused\");\r\n this.selectChoice(null);\r\n if (!this.opened()) this.clearSearch();\r\n e.stopImmediatePropagation();\r\n this.opts.element.trigger($.Event(\"select2-blur\"));\r\n }));\r\n\r\n this.container.on(\"click\", selector, this.bind(function (e) {\r\n if (!this.isInterfaceEnabled()) return;\r\n if ($(e.target).closest(\".select2-search-choice\").length > 0) {\r\n // clicked inside a select2 search choice, do not open\r\n return;\r\n }\r\n this.selectChoice(null);\r\n this.clearPlaceholder();\r\n if (!this.container.hasClass(\"select2-container-active\")) {\r\n this.opts.element.trigger($.Event(\"select2-focus\"));\r\n }\r\n this.open();\r\n this.focusSearch();\r\n e.preventDefault();\r\n }));\r\n\r\n this.container.on(\"focus\", selector, this.bind(function () {\r\n if (!this.isInterfaceEnabled()) return;\r\n if (!this.container.hasClass(\"select2-container-active\")) {\r\n this.opts.element.trigger($.Event(\"select2-focus\"));\r\n }\r\n this.container.addClass(\"select2-container-active\");\r\n this.dropdown.addClass(\"select2-drop-active\");\r\n this.clearPlaceholder();\r\n }));\r\n\r\n this.initContainerWidth();\r\n this.opts.element.addClass(\"select2-offscreen\");\r\n\r\n // set the placeholder if necessary\r\n this.clearSearch();\r\n },\r\n\r\n // multi\r\n enableInterface: function() {\r\n if (this.parent.enableInterface.apply(this, arguments)) {\r\n this.search.prop(\"disabled\", !this.isInterfaceEnabled());\r\n }\r\n },\r\n\r\n // multi\r\n initSelection: function () {\r\n var data;\r\n if (this.opts.element.val() === \"\" && this.opts.element.text() === \"\") {\r\n this.updateSelection([]);\r\n this.close();\r\n // set the placeholder if necessary\r\n this.clearSearch();\r\n }\r\n if (this.select || this.opts.element.val() !== \"\") {\r\n var self = this;\r\n this.opts.initSelection.call(null, this.opts.element, function(data){\r\n if (data !== undefined && data !== null) {\r\n self.updateSelection(data);\r\n self.close();\r\n // set the placeholder if necessary\r\n self.clearSearch();\r\n }\r\n });\r\n }\r\n },\r\n\r\n // multi\r\n clearSearch: function () {\r\n var placeholder = this.getPlaceholder(),\r\n maxWidth = this.getMaxSearchWidth();\r\n\r\n if (placeholder !== undefined && this.getVal().length === 0 && this.search.hasClass(\"select2-focused\") === false) {\r\n this.search.val(placeholder).addClass(\"select2-default\");\r\n // stretch the search box to full width of the container so as much of the placeholder is visible as possible\r\n // we could call this.resizeSearch(), but we do not because that requires a sizer and we do not want to create one so early because of a firefox bug, see #944\r\n this.search.width(maxWidth > 0 ? maxWidth : this.container.css(\"width\"));\r\n } else {\r\n this.search.val(\"\").width(10);\r\n }\r\n },\r\n\r\n // multi\r\n clearPlaceholder: function () {\r\n if (this.search.hasClass(\"select2-default\")) {\r\n this.search.val(\"\").removeClass(\"select2-default\");\r\n }\r\n },\r\n\r\n // multi\r\n opening: function () {\r\n this.clearPlaceholder(); // should be done before super so placeholder is not used to search\r\n this.resizeSearch();\r\n\r\n this.parent.opening.apply(this, arguments);\r\n\r\n this.focusSearch();\r\n\r\n this.updateResults(true);\r\n this.search.focus();\r\n this.opts.element.trigger($.Event(\"select2-open\"));\r\n },\r\n\r\n // multi\r\n close: function () {\r\n if (!this.opened()) return;\r\n this.parent.close.apply(this, arguments);\r\n },\r\n\r\n // multi\r\n focus: function () {\r\n this.close();\r\n this.search.focus();\r\n },\r\n\r\n // multi\r\n isFocused: function () {\r\n return this.search.hasClass(\"select2-focused\");\r\n },\r\n\r\n // multi\r\n updateSelection: function (data) {\r\n var ids = [], filtered = [], self = this;\r\n\r\n // filter out duplicates\r\n $(data).each(function () {\r\n if (indexOf(self.id(this), ids) < 0) {\r\n ids.push(self.id(this));\r\n filtered.push(this);\r\n }\r\n });\r\n data = filtered;\r\n\r\n this.selection.find(\".select2-search-choice\").remove();\r\n $(data).each(function () {\r\n self.addSelectedChoice(this);\r\n });\r\n self.postprocessResults();\r\n },\r\n\r\n // multi\r\n tokenize: function() {\r\n var input = this.search.val();\r\n input = this.opts.tokenizer.call(this, input, this.data(), this.bind(this.onSelect), this.opts);\r\n if (input != null && input != undefined) {\r\n this.search.val(input);\r\n if (input.length > 0) {\r\n this.open();\r\n }\r\n }\r\n\r\n },\r\n\r\n // multi\r\n onSelect: function (data, options) {\r\n\r\n if (!this.triggerSelect(data)) { return; }\r\n\r\n this.addSelectedChoice(data);\r\n\r\n this.opts.element.trigger({ type: \"selected\", val: this.id(data), choice: data });\r\n\r\n if (this.select || !this.opts.closeOnSelect) this.postprocessResults(data, false, this.opts.closeOnSelect===true);\r\n\r\n if (this.opts.closeOnSelect) {\r\n this.close();\r\n this.search.width(10);\r\n } else {\r\n if (this.countSelectableResults()>0) {\r\n this.search.width(10);\r\n this.resizeSearch();\r\n if (this.getMaximumSelectionSize() > 0 && this.val().length >= this.getMaximumSelectionSize()) {\r\n // if we reached max selection size repaint the results so choices\r\n // are replaced with the max selection reached message\r\n this.updateResults(true);\r\n }\r\n this.positionDropdown();\r\n } else {\r\n // if nothing left to select close\r\n this.close();\r\n this.search.width(10);\r\n }\r\n }\r\n\r\n // since its not possible to select an element that has already been\r\n // added we do not need to check if this is a new element before firing change\r\n this.triggerChange({ added: data });\r\n\r\n if (!options || !options.noFocus)\r\n this.focusSearch();\r\n },\r\n\r\n // multi\r\n cancel: function () {\r\n this.close();\r\n this.focusSearch();\r\n },\r\n\r\n addSelectedChoice: function (data) {\r\n var enableChoice = !data.locked,\r\n enabledItem = $(\r\n \"
  • \" +\r\n \"
    \" +\r\n \" \" +\r\n \"
  • \"),\r\n disabledItem = $(\r\n \"
  • \" +\r\n \"
    \" +\r\n \"
  • \");\r\n var choice = enableChoice ? enabledItem : disabledItem,\r\n id = this.id(data),\r\n val = this.getVal(),\r\n formatted,\r\n cssClass;\r\n\r\n formatted=this.opts.formatSelection(data, choice.find(\"div\"), this.opts.escapeMarkup);\r\n if (formatted != undefined) {\r\n choice.find(\"div\").replaceWith(\"
    \"+formatted+\"
    \");\r\n }\r\n cssClass=this.opts.formatSelectionCssClass(data, choice.find(\"div\"));\r\n if (cssClass != undefined) {\r\n choice.addClass(cssClass);\r\n }\r\n\r\n if(enableChoice){\r\n choice.find(\".select2-search-choice-close\")\r\n .on(\"mousedown\", killEvent)\r\n .on(\"click dblclick\", this.bind(function (e) {\r\n if (!this.isInterfaceEnabled()) return;\r\n\r\n $(e.target).closest(\".select2-search-choice\").fadeOut('fast', this.bind(function(){\r\n this.unselect($(e.target));\r\n this.selection.find(\".select2-search-choice-focus\").removeClass(\"select2-search-choice-focus\");\r\n this.close();\r\n this.focusSearch();\r\n })).dequeue();\r\n killEvent(e);\r\n })).on(\"focus\", this.bind(function () {\r\n if (!this.isInterfaceEnabled()) return;\r\n this.container.addClass(\"select2-container-active\");\r\n this.dropdown.addClass(\"select2-drop-active\");\r\n }));\r\n }\r\n\r\n choice.data(\"select2-data\", data);\r\n choice.insertBefore(this.searchContainer);\r\n\r\n val.push(id);\r\n this.setVal(val);\r\n },\r\n\r\n // multi\r\n unselect: function (selected) {\r\n var val = this.getVal(),\r\n data,\r\n index;\r\n selected = selected.closest(\".select2-search-choice\");\r\n\r\n if (selected.length === 0) {\r\n throw \"Invalid argument: \" + selected + \". Must be .select2-search-choice\";\r\n }\r\n\r\n data = selected.data(\"select2-data\");\r\n\r\n if (!data) {\r\n // prevent a race condition when the 'x' is clicked really fast repeatedly the event can be queued\r\n // and invoked on an element already removed\r\n return;\r\n }\r\n\r\n while((index = indexOf(this.id(data), val)) >= 0) {\r\n val.splice(index, 1);\r\n this.setVal(val);\r\n if (this.select) this.postprocessResults();\r\n }\r\n\r\n var evt = $.Event(\"select2-removing\");\r\n evt.val = this.id(data);\r\n evt.choice = data;\r\n this.opts.element.trigger(evt);\r\n\r\n if (evt.isDefaultPrevented()) {\r\n return;\r\n }\r\n\r\n selected.remove();\r\n\r\n this.opts.element.trigger({ type: \"select2-removed\", val: this.id(data), choice: data });\r\n this.triggerChange({ removed: data });\r\n },\r\n\r\n // multi\r\n postprocessResults: function (data, initial, noHighlightUpdate) {\r\n var val = this.getVal(),\r\n choices = this.results.find(\".select2-result\"),\r\n compound = this.results.find(\".select2-result-with-children\"),\r\n self = this;\r\n\r\n choices.each2(function (i, choice) {\r\n var id = self.id(choice.data(\"select2-data\"));\r\n if (indexOf(id, val) >= 0) {\r\n choice.addClass(\"select2-selected\");\r\n // mark all children of the selected parent as selected\r\n choice.find(\".select2-result-selectable\").addClass(\"select2-selected\");\r\n }\r\n });\r\n\r\n compound.each2(function(i, choice) {\r\n // hide an optgroup if it doesnt have any selectable children\r\n if (!choice.is('.select2-result-selectable')\r\n && choice.find(\".select2-result-selectable:not(.select2-selected)\").length === 0) {\r\n choice.addClass(\"select2-selected\");\r\n }\r\n });\r\n\r\n if (this.highlight() == -1 && noHighlightUpdate !== false){\r\n self.highlight(0);\r\n }\r\n\r\n //If all results are chosen render formatNoMAtches\r\n if(!this.opts.createSearchChoice && !choices.filter('.select2-result:not(.select2-selected)').length > 0){\r\n if(!data || data && !data.more && this.results.find(\".select2-no-results\").length === 0) {\r\n if (checkFormatter(self.opts.formatNoMatches, \"formatNoMatches\")) {\r\n this.results.append(\"
  • \" + self.opts.formatNoMatches(self.search.val()) + \"
  • \");\r\n }\r\n }\r\n }\r\n\r\n },\r\n\r\n // multi\r\n getMaxSearchWidth: function() {\r\n return this.selection.width() - getSideBorderPadding(this.search);\r\n },\r\n\r\n // multi\r\n resizeSearch: function () {\r\n var minimumWidth, left, maxWidth, containerLeft, searchWidth,\r\n sideBorderPadding = getSideBorderPadding(this.search);\r\n\r\n minimumWidth = measureTextWidth(this.search) + 10;\r\n\r\n left = this.search.offset().left;\r\n\r\n maxWidth = this.selection.width();\r\n containerLeft = this.selection.offset().left;\r\n\r\n searchWidth = maxWidth - (left - containerLeft) - sideBorderPadding;\r\n\r\n if (searchWidth < minimumWidth) {\r\n searchWidth = maxWidth - sideBorderPadding;\r\n }\r\n\r\n if (searchWidth < 40) {\r\n searchWidth = maxWidth - sideBorderPadding;\r\n }\r\n\r\n if (searchWidth <= 0) {\r\n searchWidth = minimumWidth;\r\n }\r\n\r\n this.search.width(Math.floor(searchWidth));\r\n },\r\n\r\n // multi\r\n getVal: function () {\r\n var val;\r\n if (this.select) {\r\n val = this.select.val();\r\n return val === null ? [] : val;\r\n } else {\r\n val = this.opts.element.val();\r\n return splitVal(val, this.opts.separator);\r\n }\r\n },\r\n\r\n // multi\r\n setVal: function (val) {\r\n var unique;\r\n if (this.select) {\r\n this.select.val(val);\r\n } else {\r\n unique = [];\r\n // filter out duplicates\r\n $(val).each(function () {\r\n if (indexOf(this, unique) < 0) unique.push(this);\r\n });\r\n this.opts.element.val(unique.length === 0 ? \"\" : unique.join(this.opts.separator));\r\n }\r\n },\r\n\r\n // multi\r\n buildChangeDetails: function (old, current) {\r\n var current = current.slice(0),\r\n old = old.slice(0);\r\n\r\n // remove intersection from each array\r\n for (var i = 0; i < current.length; i++) {\r\n for (var j = 0; j < old.length; j++) {\r\n if (equal(this.opts.id(current[i]), this.opts.id(old[j]))) {\r\n current.splice(i, 1);\r\n if(i>0){\r\n i--;\r\n }\r\n old.splice(j, 1);\r\n j--;\r\n }\r\n }\r\n }\r\n\r\n return {added: current, removed: old};\r\n },\r\n\r\n\r\n // multi\r\n val: function (val, triggerChange) {\r\n var oldData, self=this;\r\n\r\n if (arguments.length === 0) {\r\n return this.getVal();\r\n }\r\n\r\n oldData=this.data();\r\n if (!oldData.length) oldData=[];\r\n\r\n // val is an id. !val is true for [undefined,null,'',0] - 0 is legal\r\n if (!val && val !== 0) {\r\n this.opts.element.val(\"\");\r\n this.updateSelection([]);\r\n this.clearSearch();\r\n if (triggerChange) {\r\n this.triggerChange({added: this.data(), removed: oldData});\r\n }\r\n return;\r\n }\r\n\r\n // val is a list of ids\r\n this.setVal(val);\r\n\r\n if (this.select) {\r\n this.opts.initSelection(this.select, this.bind(this.updateSelection));\r\n if (triggerChange) {\r\n this.triggerChange(this.buildChangeDetails(oldData, this.data()));\r\n }\r\n } else {\r\n if (this.opts.initSelection === undefined) {\r\n throw new Error(\"val() cannot be called if initSelection() is not defined\");\r\n }\r\n\r\n this.opts.initSelection(this.opts.element, function(data){\r\n var ids=$.map(data, self.id);\r\n self.setVal(ids);\r\n self.updateSelection(data);\r\n self.clearSearch();\r\n if (triggerChange) {\r\n self.triggerChange(self.buildChangeDetails(oldData, self.data()));\r\n }\r\n });\r\n }\r\n this.clearSearch();\r\n },\r\n\r\n // multi\r\n onSortStart: function() {\r\n if (this.select) {\r\n throw new Error(\"Sorting of elements is not supported when attached to instead.\");\r\n }\r\n\r\n // collapse search field into 0 width so its container can be collapsed as well\r\n this.search.width(0);\r\n // hide the container\r\n this.searchContainer.hide();\r\n },\r\n\r\n // multi\r\n onSortEnd:function() {\r\n\r\n var val=[], self=this;\r\n\r\n // show search and move it to the end of the list\r\n this.searchContainer.show();\r\n // make sure the search container is the last item in the list\r\n this.searchContainer.appendTo(this.searchContainer.parent());\r\n // since we collapsed the width in dragStarted, we resize it here\r\n this.resizeSearch();\r\n\r\n // update selection\r\n this.selection.find(\".select2-search-choice\").each(function() {\r\n val.push(self.opts.id($(this).data(\"select2-data\")));\r\n });\r\n this.setVal(val);\r\n this.triggerChange();\r\n },\r\n\r\n // multi\r\n data: function(values, triggerChange) {\r\n var self=this, ids, old;\r\n if (arguments.length === 0) {\r\n return this.selection\r\n .find(\".select2-search-choice\")\r\n .map(function() { return $(this).data(\"select2-data\"); })\r\n .get();\r\n } else {\r\n old = this.data();\r\n if (!values) { values = []; }\r\n ids = $.map(values, function(e) { return self.opts.id(e); });\r\n this.setVal(ids);\r\n this.updateSelection(values);\r\n this.clearSearch();\r\n if (triggerChange) {\r\n this.triggerChange(this.buildChangeDetails(old, this.data()));\r\n }\r\n }\r\n }\r\n });\r\n\r\n $.fn.select2 = function () {\r\n\r\n var args = Array.prototype.slice.call(arguments, 0),\r\n opts,\r\n select2,\r\n method, value, multiple,\r\n allowedMethods = [\"val\", \"destroy\", \"opened\", \"open\", \"close\", \"focus\", \"isFocused\", \"container\", \"dropdown\", \"onSortStart\", \"onSortEnd\", \"enable\", \"disable\", \"readonly\", \"positionDropdown\", \"data\", \"search\"],\r\n valueMethods = [\"opened\", \"isFocused\", \"container\", \"dropdown\"],\r\n propertyMethods = [\"val\", \"data\"],\r\n methodsMap = { search: \"externalSearch\" };\r\n\r\n this.each(function () {\r\n if (args.length === 0 || typeof(args[0]) === \"object\") {\r\n opts = args.length === 0 ? {} : $.extend({}, args[0]);\r\n opts.element = $(this);\r\n\r\n if (opts.element.get(0).tagName.toLowerCase() === \"select\") {\r\n multiple = opts.element.prop(\"multiple\");\r\n } else {\r\n multiple = opts.multiple || false;\r\n if (\"tags\" in opts) {opts.multiple = multiple = true;}\r\n }\r\n\r\n select2 = multiple ? new MultiSelect2() : new SingleSelect2();\r\n select2.init(opts);\r\n } else if (typeof(args[0]) === \"string\") {\r\n\r\n if (indexOf(args[0], allowedMethods) < 0) {\r\n throw \"Unknown method: \" + args[0];\r\n }\r\n\r\n value = undefined;\r\n select2 = $(this).data(\"select2\");\r\n if (select2 === undefined) return;\r\n\r\n method=args[0];\r\n\r\n if (method === \"container\") {\r\n value = select2.container;\r\n } else if (method === \"dropdown\") {\r\n value = select2.dropdown;\r\n } else {\r\n if (methodsMap[method]) method = methodsMap[method];\r\n\r\n value = select2[method].apply(select2, args.slice(1));\r\n }\r\n if (indexOf(args[0], valueMethods) >= 0\r\n || (indexOf(args[0], propertyMethods) && args.length == 1)) {\r\n return false; // abort the iteration, ready to return first matched value\r\n }\r\n } else {\r\n throw \"Invalid arguments to select2 plugin: \" + args;\r\n }\r\n });\r\n return (value === undefined) ? this : value;\r\n };\r\n\r\n // plugin defaults, accessible to users\r\n $.fn.select2.defaults = {\r\n width: \"copy\",\r\n loadMorePadding: 0,\r\n closeOnSelect: true,\r\n openOnEnter: true,\r\n containerCss: {},\r\n dropdownCss: {},\r\n containerCssClass: \"\",\r\n dropdownCssClass: \"\",\r\n formatResult: function(result, container, query, escapeMarkup) {\r\n var markup=[];\r\n markMatch(result.text, query.term, markup, escapeMarkup);\r\n return markup.join(\"\");\r\n },\r\n formatSelection: function (data, container, escapeMarkup) {\r\n return data ? escapeMarkup(data.text) : undefined;\r\n },\r\n sortResults: function (results, container, query) {\r\n return results;\r\n },\r\n formatResultCssClass: function(data) {return undefined;},\r\n formatSelectionCssClass: function(data, container) {return undefined;},\r\n formatNoMatches: function () { return isi18nEnabledGuardian ? messageKeys['eec.js.scripts_formbuilder_ext_select2_345.select2.nomatchesfound']: \"No matches found\"; },\r\n formatInputTooShort: function (input, min)\r\n {\r\n var n = min - input.length;\r\n if(isi18nEnabledGuardian && n == 1){\r\n var inputTooLongMsg = messageKeys['eec.js.scripts_formbuilder_ext_select2_345.select2.entermorechar'];\r\n return inputTooLongMsg.replace('{0}',n);\r\n }\r\n else if (isi18nEnabledGuardian && n > 1){\r\n var inputTooLongMsg = messageKeys['eec.js.scripts_formbuilder_ext_select2_345.select2.entermorechars'];\r\n return inputTooLongMsg.replace('{0}',n);\r\n }\r\n else{\r\n return \"Please enter \" + n + \" more character\" + (n == 1? \"\" : \"s\");\r\n }\r\n\r\n },\r\n formatInputTooLong: function (input, max)\r\n {\r\n var n = input.length - max;\r\n if(isi18nEnabledGuardian && n == 1)\r\n {\r\n var inputTooLongMsg = messageKeys['eec.js.scripts_formbuilder_ext_select2_345.select2.deletechar'];\r\n return inputTooLongMsg.replace('{0}',limit);\r\n\r\n }\r\n else if (isi18nEnabledGuardian && n > 1)\r\n {\r\n var inputTooLongMsg = messageKeys['eec.js.scripts_formbuilder_ext_select2_345.select2.deletechars'];\r\n return inputTooLongMsg.replace('{0}',limit);\r\n }\r\n else{\r\n return \"Please delete \" + n + \" character\" + (n == 1? \"\" : \"s\");\r\n }\r\n },\r\n formatSelectionTooBig: function (limit)\r\n { if(isi18nEnabledGuardian && limit == 1)\r\n {\r\n var selectionTooBigMsg = messageKeys['eec.js.scripts_formbuilder_ext_select2_345.select2.selectitem'];\r\n return selectionTooBigMsg.replace('{0}',limit);\r\n\r\n }\r\n else if (isi18nEnabledGuardian && limit > 1)\r\n {\r\n var selectionTooBigMsg = messageKeys['eec.js.scripts_formbuilder_ext_select2_345.select2.selectitems'];\r\n return selectionTooBigMsg.replace('{0}',limit);\r\n }\r\n else{\r\n return \"You can only select \" + limit + \" item\" + (limit == 1 ? \"\" : \"s\");\r\n }\r\n },\r\n formatLoadMore: function (pageNumber) { return isi18nEnabledGuardian ? messageKeys['eec.js.scripts_formbuilder_ext_select2_345.select2.loadingmoreresults']:\"Loading more results...\"; },\r\n formatSearching: function () { return isi18nEnabledGuardian ? messageKeys['eec.js.scripts_formbuilder_ext_select2_345.select2.searching']:\"Searching...\"; },\r\n minimumResultsForSearch: 0,\r\n minimumInputLength: 0,\r\n maximumInputLength: null,\r\n maximumSelectionSize: 0,\r\n id: function (e) { return e.id; },\r\n matcher: function(term, text) {\r\n return stripDiacritics(''+text).toUpperCase().indexOf(stripDiacritics(''+term).toUpperCase()) >= 0;\r\n },\r\n separator: \",\",\r\n tokenSeparators: [],\r\n tokenizer: defaultTokenizer,\r\n escapeMarkup: defaultEscapeMarkup,\r\n blurOnChange: false,\r\n selectOnBlur: false,\r\n adaptContainerCssClass: function(c) { return c; },\r\n adaptDropdownCssClass: function(c) { return null; },\r\n nextSearchTerm: function(selectedObject, currentSearchTerm) { return undefined; }\r\n };\r\n\r\n $.fn.select2.ajaxDefaults = {\r\n transport: $.ajax,\r\n params: {\r\n type: \"GET\",\r\n cache: false,\r\n dataType: \"json\"\r\n }\r\n };\r\n\r\n // exports\r\n window.Select2 = {\r\n query: {\r\n ajax: ajax,\r\n local: local,\r\n tags: tags\r\n }, util: {\r\n debounce: debounce,\r\n markMatch: markMatch,\r\n escapeMarkup: defaultEscapeMarkup,\r\n stripDiacritics: stripDiacritics\r\n }, \"class\": {\r\n \"abstract\": AbstractSelect2,\r\n \"single\": SingleSelect2,\r\n \"multi\": MultiSelect2\r\n }\r\n };\r\n\r\n\r\n}(jQuery));\r\n"]}