{"version":3,"sources":["Content/Scripts/vendors/better-dateinput-polyfill.js","Content/Scripts/vendors/daterangepicker.js","Content/Scripts/vendors/jssocials.js","Content/Scripts/vendors/moment.min.js","Content/Scripts/vendors/ofi.js","Content/Scripts/vendors/owl.carousel.js","Content/Scripts/vendors/picturefill.min.js","Content/Scripts/vendors/picturefill-background.js","Content/Scripts/vendors/what-input.js","Content/Scripts/vendors/smoothscroll.js","Content/Scripts/vendors/lightcase.js","Content/Scripts/vendors/select2.js","Content/Scripts/customs/carousel.js","Content/Scripts/customs/custom.js"],"names":["a","b","exports","module","define","amd","this","window","document","createElement","setAttribute","innerHTML","head","appendChild","TypeError","c","d","length","enumerable","configurable","writable","Object","defineProperty","key","prototype","instance","date","Date","input","isOpen","container","year","createRangeSelect","getFullYear","className","addEventListener","setYear","value","refreshDaysMatrix","month","setMonth","today","textContent","setInput","daysHead","days","target","hasAttribute","querySelector","removeAttribute","setDate","parseInt","hide","body","parentNode","getAttribute","getBoundingClientRect","style","top","height","documentElement","scrollTop","left","scrollLeft","show","sync","element","valueAsDate","absoluteDate","getMonth","slice","getDate","focus","setTimeout","pingInput","locale","localeText","push","join","months","refreshLocale","getDay","e","f","g","h","j","i","k","Event","createEvent","initEvent","dispatchEvent","text","selected","getTime","getTimezoneOffset","en_en-US","format","en-GB","zh_zh-CN","zh-Hans_zh-Hans-CN","zh-Hant_zh-Hant-TW","de_de-DE","da_da-DA","es","hi","pt","ja","nl_nl-NL_nl-BE","tr_tr-TR","fr_fr-FR","uk_uk-UA","it","pl","cs","ru","getLocaleText","defineProperties","get","polyfillValue","set","test","split","replace","toISOString","valueAsNumber","NaN","attachTo","keyCode","toLowerCase","map","indexOf","substr","currentScript","querySelectorAll","supportsDateInput","addPickerToDateInputs","readyState","root","factory","moment","jquery","fn","jQuery","undefined","require","daterangepicker","$","DateRangePicker","options","cb","parentEl","startDate","startOf","endDate","endOf","minDate","maxDate","maxSpan","autoApply","singleDatePicker","showDropdowns","minYear","subtract","maxYear","add","showWeekNumbers","showISOWeekNumbers","showCustomRangeLabel","timePicker","timePicker24Hour","timePickerIncrement","timePickerSeconds","linkedCalendars","autoUpdateInput","alwaysShowCalendars","ranges","opens","hasClass","drops","buttonClasses","applyButtonClasses","cancelButtonClasses","direction","localeData","longDateFormat","separator","applyLabel","cancelLabel","weekLabel","customRangeLabel","daysOfWeek","weekdaysMin","monthNames","monthsShort","firstDay","firstDayOfWeek","callback","isShowing","leftCalendar","rightCalendar","extend","data","template","appendTo","elem","rangeHtml","addClass","isBefore","clone","isAfter","applyClass","cancelClass","dateLimit","isInvalidDate","isCustomDate","iterator","shift","start","end","range","is","val","setStartDate","setEndDate","timepicker","list","find","prepend","html","on","proxy","clickPrev","clickNext","clickDate","hoverDate","monthOrYearChanged","timeChanged","clickRange","clickApply","clickCancel","click.daterangepicker","focus.daterangepicker","keyup.daterangepicker","elementChanged","keydown.daterangepicker","keydown","toggle","updateElement","constructor","minute","Math","round","floor","updateMonthsInView","previousRightTime","updateView","renderTimePicker","removeAttr","removeClass","attr","updateCalendars","updateFormInputs","hour","second","ampm","renderCalendar","calculateChosenLabel","side","calendar","daysInMonth","lastDay","lastMonth","lastYear","daysInLastMonth","dayOfWeek","day","startDay","col","row","curDate","right","dateHtml","currentMonth","currentYear","inMinYear","inMaxYear","monthHtml","m","yearHtml","y","each","index","maxLimit","week","isoWeek","classes","isSame","isoWeekday","isCustom","Array","apply","cname","disabled","timeSelector","i_in_24","time","padded","am_html","pm_html","move","containerTop","parentOffset","parentRightEdge","width","offset","clientWidth","outerHeight","css","outerWidth","_outsideClickProxy","outsideClick","oldStartDate","oldEndDate","trigger","chosenLabel","off","type","closest","showCalendars","hideCalendars","label","dates","cal","parents","title","el","dt","stopPropagation","customRange","isLeft","leftOrRight","dateString","isValid","preventDefault","newValue","remove","removeData","implementOptions","defaultOptions","Socials","config","$element","JSSOCIALS_DATA_KEY","_$element","shares","_init","_render","JSSOCIALS","getOrApply","context","isFunction","makeArray","arguments","IMG_SRC_REGEX","URL_PARAMS_REGEX","MEASURES","G","M","K","url","shareIn","showLabel","screenWidth","showCount","smallScreenWidth","largeScreenWidth","resizeTimeout","elementClass","sharesClass","shareClass","shareButtonClass","shareLinkClass","shareLogoClass","shareLabelClass","shareLinkCountClass","shareCountBoxClass","shareCountClass","shareZeroCountClass","_initDefaults","_initShares","_attachWindowResizeCallback","location","href","trim","shareConfig","share","renderer","Error","_windowResizeHandler","_detachWindowResizeCallback","clearTimeout","_resizeTimer","refresh","_clear","_defineOptionsByScreen","_$shares","_renderShares","_screenWidth","_showLabel","_showCount","_","_renderShare","$share","_createShare","$result","$shareLink","_createShareLink","isInsideCount","$countContainer","_renderShareCount","shareStrategy","_getShareStrategy","call","shareUrl","_getShareUrl","append","_createShareLogo","_createShareLabel","event","handler","result","shareStrategies","_formatShareUrl","logo","$container","$count","_loadCount","done","count","deferred","Deferred","countUrl","_getCountUrl","resolve","promise","handleSuccess","response","_getCountValue","getJSON","fail","getCount","_formatNumber","number","letter","parseFloat","toFixed","match","field","encodeURIComponent","empty","_passOptionToShares","optionName","_normalizeShare","isNumeric","grep","s","destroy","option","shareOption","jsSocials","args","methodArgs","methodResult","setDefaults","component","isPlainObject","popup","open","blank","self","email","twitter","facebook","share_count","vkontakte","googleplus","linkedin","pinterest","stumbleupon","views","telegram","whatsapp","line","viber","pocket","messenger","t","H","toString","F","hasOwnProperty","L","getOwnPropertyNames","w","V","n","E","valueOf","l","Wt","utc","p","_pf","unusedTokens","unusedInput","overflow","charsLeftOver","nullInput","invalidEra","invalidMonth","invalidFormat","userInvalidated","iso","parsedDateParts","era","meridiem","rfc2822","weekdayMismatch","A","_d","isNaN","invalidWeekday","_strict","bigHour","isFrozen","_isValid","I","q","r","Z","_isAMomentObject","_i","_f","_l","_tzm","_isUTC","_offset","_locale","z","updateOffset","B","suppressDeprecationWarnings","console","warn","o","deprecationHandler","stack","Q","J","Function","X","abs","pow","max","ie","ordinal","re","ae","se","te","invalidDate","ne","lastIndex","oe","ue","Ye","De","RegExp","ceil","isFinite","v","Se","Oe","_w","be","We","Re","Ue","Ce","getUTCMilliseconds","getMilliseconds","getUTCSeconds","getSeconds","getUTCMinutes","getMinutes","getUTCHours","getHours","getUTCDate","getUTCDay","getUTCMonth","getUTCFullYear","setUTCMilliseconds","setMilliseconds","setUTCSeconds","setSeconds","setUTCMinutes","setMinutes","setUTCHours","setHours","setUTCDate","setUTCFullYear","setFullYear","He","Ae","monthsParse","min","setUTCMonth","Ie","je","sort","_monthsRegex","_monthsShortRegex","_monthsStrictRegex","_monthsShortStrictRegex","Ze","ze","UTC","qe","$e","dayOfYear","Be","N","Je","concat","st","u","weekdaysShort","weekdays","_weekdaysRegex","_weekdaysShortRegex","_weekdaysMinRegex","_weekdaysStrictRegex","_weekdaysShortStrictRegex","_weekdaysMinStrictRegex","hours","rt","minutes","at","_meridiemParse","ht","ct","ot","W","_abbr","ft","P","mt","ut","abbr","_config","parentLocale","lt","name","forEach","_t","_a","Y","S","D","O","T","Te","_overflowDayOfYear","_overflowWeeks","xe","_overflowWeekday","Ne","Yt","yt","exec","gt","kt","wt","xt","St","Le","Ot","vt","Xe","Dt","bt","Tt","now","_useUTC","GG","R","_week","dow","doy","gg","_dayOfYear","_nextDay","ISO_8601","RFC_2822","_meridiem","meridiemHour","isPM","erasConvertYear","Nt","preparse","score","Mt","createFromInputFallback","millisecond","Pt","Ct","quarter","Rt","x","_milliseconds","_days","_months","_data","_bubble","Ut","Ht","Ft","utcOffset","Vt","Lt","Gt","setTime","local","Et","At","C","ms","milliseconds","It","jt","Zt","zt","from","to","qt","$t","Bt","String","Jt","filter","Qt","Xt","Kt","tn","nn","en","sn","rn","erasAbbrRegex","an","eras","narrow","_erasRegex","_erasNameRegex","_erasAbbrRegex","_erasNarrowRegex","un","dn","hn","cn","mn","yn","gn","wn","pn","kn","as","Mn","On","Yn","ss","relativeTime","Tn","xn","bn","asSeconds","some","momentProperties","ee","keys","weekday","isoweekdays","isoweekday","DDD","dayofyears","dayofyear","quarters","seconds","weekyears","weekyear","isoweekyears","isoweekyear","weeks","isoweeks","isoweek","years","le","weekYear","isoWeekYear","de","he","ce","fe","me","_e","ye","ge","we","pe","ke","Me","ve","parseTwoDigitYear","Pe","monthsShortRegex","monthsRegex","Fe","Ve","Ge","Ee","weekdaysMinRegex","weekdaysShortRegex","weekdaysRegex","weekdaysParse","Qe","Ke","et","tt","nt","_isPm","sameDay","nextDay","nextWeek","lastWeek","sameElse","LTS","LT","LL","LLL","LLLL","dayOfMonthOrdinalParse","future","past","mm","hh","dd","ww","MM","yy","meridiemParse","UT","GMT","EDT","EST","CDT","CST","MDT","MST","PDT","PST","invalid","defaultFormat","defaultFormatUtc","erasNameRegex","erasNarrowRegex","erasParse","_eraYearOrdinalRegex","eraYearOrdinalParse","_dayOfMonthOrdinalParse","_ordinalParse","_dayOfMonthOrdinalParseLenient","ln","calendarFormat","diff","isUtc","postformat","humanize","fromNow","toNow","invalidAt","isBetween","isSameOrAfter","isSameOrBefore","lang","parsingFlags","unit","priority","toArray","toObject","toDate","inspect","isLocal","Symbol","toJSON","unix","creationData","isUTC","strict","eraName","since","until","eraNarrow","eraAbbr","eraYear","isLeapYear","isoWeeks","weeksInYear","weeksInWeekYear","isoWeeksInYear","isoWeeksInISOWeekYear","_changeInProgress","parseZone","hasAlignedHourOffset","isDST","isUtcOffset","zoneAbbr","zoneName","zone","isDSTShifted","_isDSTShifted","_calendar","_longDateFormat","toUpperCase","_invalidDate","_ordinal","_relativeTime","pastFuture","source","_eras","isFormat","standalone","_monthsShort","_monthsParseExact","toLocaleLowerCase","_monthsParse","_longMonthsParse","_shortMonthsParse","firstDayOfYear","_weekdays","_weekdaysMin","_weekdaysShort","_weekdaysParseExact","_weekdaysParse","_shortWeekdaysParse","_minWeekdaysParse","_fullWeekdaysParse","charAt","langData","_n","vn","Dn","Sn","U","asMilliseconds","asMinutes","asHours","asDays","asWeeks","asMonths","asQuarters","asYears","assign","toIsoString","version","isDate","duration","isMoment","isDuration","defineLocale","updateLocale","locales","normalizeUnits","relativeTimeRounding","relativeTimeThreshold","HTML5_FMT","DATETIME_LOCAL","DATETIME_LOCAL_SECONDS","DATETIME_LOCAL_MS","DATE","TIME","TIME_SECONDS","TIME_MS","WEEK","MONTH","navigator","userAgent","objectFitPolyfill","getComputedStyle","getPropertyValue","position","display","clientHeight","max-width","max-height","min-width","min-height","bottom","margin-top","margin-right","margin-bottom","margin-left","dataset","objectFit","objectPosition","marginTop","marginLeft","nodeName","complete","Owl","settings","Defaults","_handlers","_plugins","_supress","_current","_speed","_coordinates","_breakpoint","_width","_items","_clones","_mergers","_widths","_invalidated","_pipe","_drag","pointer","stage","current","_states","tags","initializing","animating","dragging","Plugins","plugin","Workers","worker","run","setup","initialize","items","loop","center","rewind","mouseDrag","touchDrag","pullDrag","freeDrag","margin","stagePadding","merge","mergeFit","autoWidth","startPosition","rtl","smartSpeed","fluidSpeed","dragEndSpeed","responsive","responsiveRefreshRate","responsiveBaseElement","fallbackEasing","info","nestedItemSelector","itemElement","stageElement","refreshClass","loadedClass","loadingClass","rtlClass","responsiveClass","dragClass","itemClass","stageClass","stageOuterClass","grabClass","Width","Default","Inner","Outer","Type","State","cache","relative","$stage","children","grid","widths","clones","view","size","repeat","normalize","outerHTML","prependTo","previous","coordinates","padding","padding-left","padding-right","eq","minimum","maximum","reset","animate","inner","outer","begin","matches","op","enter","toggleClass","imgs","nestedSelector","preloadAutoWidthImages","wrap","parent","not","invalidate","registerEventHandlers","leave","viewport","overwrites","breakpoint","Number","property","optionsLogic","prepare","item","content","update","all","dimension","onThrottledResize","resizeTimer","onResize","isDefaultPrevented","support","transition","onTransitionEnd","onDragStart","onDragEnd","which","transform","stop","speed","one","delta","difference","onDragMove","pull","coordinate","transform3d","state","part","suppress","release","reciprocalItemsWidth","elementWidth","mergers","odd","even","multiplier","newPosition","factor","revert","distance","next","prev","srcElement","originalTarget","innerWidth","nodeType","addBack","after","before","splice","images","Image","src","unwrap","contents","listener","capture","attachEvent","removeEventListener","detachEvent","namespace","status","camelCase","relatedTarget","onTrigger","register","object","special","owl","_default","tag","inArray","events","originalEvent","touches","changedTouches","pageX","pageY","clientX","clientY","first","owlCarousel","$this","Constructor","Zepto","AutoRefresh","carousel","_core","_interval","_visible","initialized.owl.carousel","autoRefresh","watch","autoRefreshInterval","setInterval","clearInterval","Lazy","_loaded","initialized.owl.carousel change.owl.carousel resized.owl.carousel","lazyLoad","load","$item","$elements","image","devicePixelRatio","onload","background-image","opacity","handlers","AutoHeight","initialized.owl.carousel refreshed.owl.carousel","autoHeight","changed.owl.carousel","loaded.owl.lazy","autoHeightClass","visible","heights","maxheight","Video","_videos","_playing","resize.owl.carousel","video","isInFullScreen","refreshed.owl.carousel","prepared.owl.carousel","fetch","play","videoHeight","videoWidth","id","thumbnail","tnLink","icon","path","dimensions","customTn","srcType","lazyClass","create","ajax","jsonp","dataType","success","thumbnail_large","framegrab_url","insertAfter","fullscreenElement","mozFullScreenElement","webkitFullscreenElement","Animate","scope","core","swapping","change.owl.carousel","drag.owl.carousel dragged.owl.carousel translated.owl.carousel","translate.owl.carousel","animateOut","animateIn","swap","animation","clear","incoming","outgoing","Autoplay","_timeout","_paused","autoplay","_setAutoPlayInterval","play.owl.autoplay","stop.owl.autoplay","mouseover.owl.autoplay","autoplayHoverPause","pause","mouseleave.owl.autoplay","touchstart.owl.core","touchend.owl.core","autoplayTimeout","autoplaySpeed","timeout","_getNextTimeout","hidden","Navigation","_initialized","_pages","_controls","_templates","_overrides","dotsData","dotClass","added.owl.carousel","pop","remove.owl.carousel","draw","nav","navText","navSpeed","navElement","navContainer","navContainerClass","navClass","slideBy","dotsClass","dots","dotsEach","dotsSpeed","dotsContainer","override","$relative","$previous","$next","prop","$absolute","control","overides","lower","upper","page","getPosition","successor","standard","Hash","_hashes","hash","substring","URLhashListener","prefixed","prefixes","WebkitTransition","MozTransition","OTransition","WebkitAnimation","MozAnimation","OAnimation","tests","csstransforms","csstransforms3d","csstransitions","cssanimations","HTMLPictureElement","$1","cloneNode","insertBefore","firstElementChild","removeChild","_pfLastSize","offsetWidth","sizes","matchMedia","addListener","srcset","onerror","ba","DPR","innerHeight","vw","vh","em","getEmValue","rem","algorithm","sqrt","getSet","setRes","applySetCandidate","ns","evaled","res","sets","makeUrl","curSrc","curCan","aa","parseSet","getElementsByTagName","media","has1x","matchesMedia","picturefillCFG","px","in","cWidth","calcListLength","elements","qsa","reevaluate","reselect","sel","selShort","setupRun","fillImg","teardownRun","implementation","hasFeature","supSrcset","supSizes","supPicture","cfg","types","setSize","mMQ","calcLength","supportsType","parseSize","cands","cssText","uT","cached","setSrc","parseSets","pic","supported","parsed","fillImgs","picturefill","pf","escapeRegExp","string","picturefillBackgroundOptions","selector","picturefillBackground","picturefills","getElementsByClassName","il","sources","jl","exp","backgroundImage","backgroundSize","backgroundRepeat","backgroundPosition","modules","__webpack_require__","moduleId","installedModules","loaded","docElem","currentElement","currentInput","currentIntent","eventTimer","formInputs","functionList","ignoreMap","inputMap","keyup","mousedown","mousemove","MSPointerDown","MSPointerMove","pointerdown","pointermove","touchstart","isBuffering","isScrolling","mousePos","pointerMap","2","3","4","supportsPassive","opts","setUp","detectWheel","addListeners","doUpdate","passive","PointerEvent","setIntent","MSPointerEvent","eventBuffer","setElement","clearElement","eventKey","pointerType","shouldUpdate","activeElem","activeElement","notFormInput","fireFunctions","detectScrolling","classList","wheelType","onmousewheel","len","objPos","screenX","screenY","ask","opt","ignoreKeys","arr","registerOnChange","eventType","unRegisterOnChange","behavior","scrollHeight","scrollWidth","startTime","cos","PI","startX","startY","method","scrollable","requestAnimationFrame","bind","scrollX","pageXOffset","scrollY","pageYOffset","scroll","__forceSmoothScrollPolyfill__","HTMLElement","Element","scrollTo","scrollBy","elementScroll","scrollIntoView","performance","SyntaxError","polyfill","_self","objects","init","unbind","lightcase","origin","idPrefix","classPrefix","attrPrefix","transitionOpen","transitionClose","transitionIn","transitionOut","cssTransitions","speedIn","speedOut","maxWidth","maxHeight","forceWidth","forceHeight","liveResize","fullScreenModeForMobile","mobileMatchExpression","disableShrink","fixedRatio","shrinkFactor","overlayOpacity","slideshow","slideshowAutoStart","breakBeforeShow","swipe","useKeys","useCategories","useAsCollection","navigateEndless","closeOnOverlayClick","caption","showTitle","showCaption","showSequenceInfo","inline","iframe","frameborder","flash","wmode","poster","preload","controls","autobuffer","typeMapping","errorMessage","labels","sequenceInfo.of","close","navigator.prev","navigator.next","navigator.play","navigator.pause","markup","overlay","loading","contentInner","sequenceInfo","onInit","onStart","onBeforeCalculateDimensions","onAfterCalculateDimensions","onBeforeShow","onFinish","onClose","onCleanup","_callHooks","objectData","_setObjectData","_addElements","_open","getViewportDimensions","getObjectData","$object","_prefixAttributeName","_determineUrl","requestType","requestData","requestDataType","rel","_determineAttributeSelector","_verifyDataType","isPartOfSequence","_isPartOfSequence","isPartOfSequenceWithSlideshow","currentIndex","sequenceLength","prevIndex","nextIndex","_determineLinkTarget","$origin","categories","category","dataUrl","_verifyDataUrl","density","supportLevel","videoType","_getFileUrlSuffix","canPlayType","_devicePixelRatio","_matchMedia","_normalizeUrl","srcExp","urlParser","str","lastChar","intVal","floatVal","expression","getSimilarLinks","regexp","isSlideshowEnabled","_loadContent","originalObject","_restoreObject","_createObject","alt","_cloneObject","_addObject","_loadObject","_loading","_showContent","error","textStatus","jqXHR","getResponseHeader","errorThrown","_calculateDimensions","_cleanupDimensions","ratio","objectWidth","objectHeight","windowWidth","windowHeight","differenceWidthAsPercent","differenceHeightAsPercent","_adjustDimensions","process","suffixArr","suffix","_startInTransition","fade","zoom","isBusy","firstOpened","_processContent","_handleEvents","_unbindEvents","isSlideshowStarted","_stopTimeout","_startTimeout","_watchResizeInteraction","click","_addKeyEvents","_setNavigation","isFirst","action","isLast","swipeleft","swiperight","$links","prevItem","isFirstOpened","$clone","objectId","_cacheObjectData","isMobileDevice","deviceAgent","agentId","isTransitionSupported","transitionMapping","MsTransition","isInTransition","startTransition","startOpacity","endTransition","endOpacity","transitions","startOffset","endOffset","startScale","endScale","hooks","hook","resize","_unwatchResizeInteraction","_switchToFullScreenMode","mobileDevice","cleanup","msMatchMedia","_isPublicMethod","_export","S2","select2","requirejs","undef","hasProp","obj","hasOwn","baseName","nameParts","nameSegment","mapValue","foundMap","foundI","foundStarMap","starI","normalizedBaseParts","baseParts","starMap","nodeIdCompat","jsSuffixRegExp","makeRequire","relName","forceSync","aps","req","makeNormalize","makeLoad","depName","defined","callDep","waiting","defining","main","splitPrefix","prefix","makeRelParts","makeConfig","makeMap","relParts","parts","relResourceName","pr","uri","deps","cjsModule","ret","usingExports","callbackType","_defined","_$","getMethods","theClass","proto","methods","methodName","Utils","Extend","ChildClass","SuperClass","BaseConstructor","__hasProp","__super__","Decorate","DecoratorClass","DecoratedClass","unshift","argCount","calledConstructor","ctr","decoratedMethods","superMethods","displayName","superMethod","calledMethod","originalMethod","decoratedMethod","Observable","listeners","params","_type","invoke","generateChars","chars","randomChar","random","func","_convertData","originalKey","dataLevel","hasScroll","$el","overflowX","overflowY","escapeMarkup","replaceMap","\\","&","<",">","\"","'","/","appendMany","$nodes","$jqNodes","node","__cache","GetUniqueElementId","select2Id","StoreData","GetData","RemoveData","Results","dataAdapter","render","$results","displayMessage","hideLoading","$message","message","hideMessages","$options","results","$option","$dropdown","$resultsContainer","sorter","highlightFirstItem","$selected","ensureHighlightVisible","setClasses","selectedIds","showLoading","loadingMore","$loading","attrs","role","aria-selected","msMatchesSelector","webkitMatchesSelector","_resultId","$children","child","$child","$childrenContainer","class","$highlighted","getHighlightedResults","currentOffset","nextTop","nextOffset","nextBottom","mousewheel","deltaY","isAtTop","isAtBottom","evt","offsetDelta","KEYS","BACKSPACE","TAB","ENTER","SHIFT","CTRL","ALT","ESC","SPACE","PAGE_UP","PAGE_DOWN","END","HOME","LEFT","UP","RIGHT","DOWN","DELETE","BaseSelection","$selection","_tabindex","resultsId","_handleBlur","_attachCloseHandler","_detachCloseHandler","contains","$target","$select","$all","$selectionContainer","isEnabled","isDisabled","SingleSelection","$rendered","selectionContainer","selection","formatted","MultipleSelection","$remove","$selections","Placeholder","decorated","placeholder","normalizePlaceholder","createPlaceholder","$placeholder","singlePlaceholder","multipleSelections","AllowClear","_handleClear","_handleKeyboardClear","$clear","previousVal","unselectData","prevented","removeAll","Search","$search","$searchContainer","_transferTabIndex","_keyUpPrevented","$previousChoice","searchRemoveChoice","msie","documentMode","disableInputEvents","handleSearch","searchHadFocus","resizeSearch","term","minimumWidth","EventRelay","relayEvents","preventableEvents","Translation","dict","translation","_cache","loadPath","translations","diacritics","Ⓐ","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","ź","ẑ","ż","ž","ẓ","ẕ","ƶ","ȥ","ɀ","ⱬ","ꝣ","Ά","Έ","Ή","Ί","Ϊ","Ό","Ύ","Ϋ","Ώ","ά","έ","ή","ί","ϊ","ΐ","ό","ύ","ϋ","ΰ","ώ","ς","’","BaseAdapter","query","generateResultId","SelectAdapter","select","currentData","unselect","addOptions","innerText","normalizedData","_normalizeItem","defaults","matcher","ArrayAdapter","_dataToConvert","convertToOptions","elm","onlyItem","$existing","existingIds","$existingOption","existingData","newData","$newOption","replaceWith","AjaxAdapter","ajaxOptions","_applyDefaults","processResults","transport","failure","$request","then","request","isArray","_request","abort","delay","_queryTimeout","Tags","createTag","insertTag","wrapper","checkChildren","optionText","paramsTerm","checkText","_removeOldTags","Tokenizer","tokenizer","dropdown","createAndSelect","$existingOptions","tokenData","separators","termChar","partParams","MinimumInputLength","minimumInputLength","MaximumInputLength","maximumInputLength","MaximumSelectionLength","maximumSelectionLength","_checkIfMaximumSelected","successCallback","Dropdown","showSearch","HidePlaceholder","removePlaceholder","modifiedData","InfiniteScroll","lastParams","$loadingMore","createLoadingMore","showLoadingMore","loadMoreIfNeeded","isLoadMoreVisible","loadingMoreOffset","loadMore","pagination","more","AttachBody","$dropdownParent","_showDropdown","_attachPositioningHandler","_bindContainerResultHandlers","_hideDropdown","_detachPositioningHandler","$dropdownContainer","detach","_containerResultsHandlersBound","_positionDropdown","_resizeDropdown","scrollEvent","resizeEvent","orientationEvent","$watchers","ev","$window","isCurrentlyAbove","isCurrentlyBelow","newDirection","enoughRoomAbove","enoughRoomBelow","$offsetParent","offsetParent","isConnected","minWidth","countResults","MinimumResultsForSearch","minimumResultsForSearch","Infinity","SelectOnClose","_handleSelectOnClose","originalSelect2Event","$highlightedResults","CloseOnSelect","_selectTriggered","ctrlKey","metaKey","errorLoading","inputTooLong","overChars","inputTooShort","remainingChars","maximumSelected","noResults","searching","removeAllItems","ResultsList","SelectionSearch","DIACRITICS","SelectData","ArrayData","AjaxData","DropdownSearch","EnglishTranslation","tokenSeparators","Query","amdBase","initSelection","InitSelection","resultsAdapter","selectOnClose","dropdownAdapter","multiple","SearchableDropdown","closeOnSelect","dropdownCssClass","dropdownCss","adaptDropdownCssClass","DropdownCSS","selectionAdapter","allowClear","containerCssClass","containerCss","adaptContainerCssClass","ContainerCSS","language","_resolveLanguage","uniqueLanguages","_processTranslations","debug","stripDiacritics","original","amdLanguageBase","dropdownAutoWidth","scrollAfterSelect","templateResult","templateSelection","theme","applyFromElement","optionLanguage","defaultLanguage","elementLanguage","parentLanguage","languages","isEmptyObject","resolvedLanguages","languageParts","baseLanguage","languageData","ex","camelKey","convertedData","Options","fromElement","InputCompat","upperCaseLetter","excludedData","dir","attributes","attributeName","dataName","dataValue","camelDataName","Select2","_generateId","tabindex","DataAdapter","_placeContainer","SelectionAdapter","DropdownAdapter","ResultsAdapter","_bindAdapters","_registerDomEvents","_registerDataEvents","_registerSelectionEvents","_registerDropdownEvents","_registerResultsEvents","_registerEvents","initialData","_syncAttributes","_resolveWidth","WIDTH","styleWidth","computedStyle","_syncA","_syncS","_syncSubtree","observer","MutationObserver","WebKitMutationObserver","MozMutationObserver","_observer","mutations","observe","childList","subtree","nonRelayEvents","toggleDropdown","altKey","_isChangeMutation","changed","addedNodes","removedNodes","mutation","actualTrigger","preTriggerMap","preTriggerName","preTriggerArgs","hasFocus","enable","newVal","disconnect","thisMethods","instanceOptions","ready","slick","pauseOnHover","prevArrow","nextArrow","infinite","variableWidth","initialSlide","slidesToShow","getCookie","decodedCookie","decodeURIComponent","cookie","ca","collapse","hover","slideDown","slideUp","deviceWidth","coverId","mobileId","scrollDirection","effect","visibleOnly"],"mappings":"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AU,KACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,KACVC,IAAU,KACVC,IAAU,KACVC,IAAU,KACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,KACVC,IAAU,KACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,KACVC,IAAU,KACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,KACVC,IAAU,KACVC,IAAU,KACVC,IAAU,KACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,KACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,KACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,KACVC,IAAU,KACVC,IAAU,KACVC,IAAU,KACVC,IAAU,KACVC,IAAU,KACVC,IAAU,KACVC,IAAU,KACVC,IAAU,KACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,KACVC,IAAU,KACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,KACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,KACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,KACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,KACVC,IAAU,KACVC,IAAU,KACVC,IAAU,KACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU;AACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,KACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,KACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACV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","file":"scriptsBundleSecondary.js","sourcesContent":["(function (a, b) { 'object' == typeof exports && 'undefined' != typeof module ? b() : 'function' == typeof define && define.amd ? define(b) : b() })(this, function () { 'use strict'; (function (a) { if (a && 'undefined' != typeof window) { var b = document.createElement('style'); return b.setAttribute('type', 'text/css'), b.innerHTML = a, document.head.appendChild(b), a } })('date-input-polyfill {\\n background: #fff;\\n color: #000;\\n text-shadow: none;\\n border: 0;\\n padding: 0;\\n height: auto;\\n width: auto;\\n line-height: normal;\\n border-radius: 0;\\n font-family: sans-serif;\\n font-size: 14px;\\n position: absolute !important;\\n text-align: center;\\n box-shadow: 0 7px 8px -4px rgba(0, 0, 0, 0.2), 0 12px 17px 2px rgba(0, 0, 0, 0.14), 0 5px 22px 4px rgba(0, 0, 0, 0.12);\\n cursor: default;\\n z-index: 1; }\\n date-input-polyfill[data-open=\"false\"] {\\n display: none; }\\n date-input-polyfill[data-open=\"true\"] {\\n display: block; }\\n date-input-polyfill select, date-input-polyfill table, date-input-polyfill th, date-input-polyfill td {\\n background: #fff;\\n color: #000;\\n text-shadow: none;\\n border: 0;\\n padding: 0;\\n height: auto;\\n width: auto;\\n line-height: normal;\\n border-radius: 0;\\n font-family: sans-serif;\\n font-size: 14px;\\n box-shadow: none; }\\n date-input-polyfill select, date-input-polyfill button {\\n border: 0;\\n border-bottom: 1px solid #E0E0E0;\\n height: 24px;\\n vertical-align: top; }\\n date-input-polyfill select {\\n width: 50%; }\\n date-input-polyfill select:first-of-type {\\n border-right: 1px solid #E0E0E0;\\n width: 30%; }\\n date-input-polyfill button {\\n padding: 0;\\n width: 20%;\\n background: #E0E0E0; }\\n date-input-polyfill table {\\n border-collapse: collapse; }\\n date-input-polyfill th, date-input-polyfill td {\\n width: 32px;\\n padding: 4px;\\n text-align: center; }\\n date-input-polyfill td[data-day] {\\n cursor: pointer; }\\n date-input-polyfill td[data-day]:hover {\\n background: #E0E0E0; }\\n date-input-polyfill [data-selected] {\\n font-weight: bold;\\n background: #D8EAF6; }\\n\\ninput[data-has-picker]::-ms-clear {\\n display: none; }\\n'); var a = function (a, b) { if (!(a instanceof b)) throw new TypeError('Cannot call a class as a function') }, b = function () { function a(a, b) { for (var c, d = 0; d < b.length; d++)c = b[d], c.enumerable = c.enumerable || !1, c.configurable = !0, 'value' in c && (c.writable = !0), Object.defineProperty(a, c.key, c) } return function (b, c, d) { return c && a(b.prototype, c), d && a(b, d), b } }(), c = function () { function c() { var b = this; if (a(this, c), c.instance) return c.instance; this.date = new Date, this.input = null, this.isOpen = !1, this.container = document.createElement('date-input-polyfill'), this.year = document.createElement('select'), c.createRangeSelect(this.year, this.date.getFullYear() - 80, this.date.getFullYear() + 20), this.year.className = 'yearSelect', this.year.addEventListener('change', function () { b.date.setYear(b.year.value), b.refreshDaysMatrix() }), this.container.appendChild(this.year), this.month = document.createElement('select'), this.month.className = 'monthSelect', this.month.addEventListener('change', function () { b.date.setMonth(b.month.value), b.refreshDaysMatrix() }), this.container.appendChild(this.month), this.today = document.createElement('button'), this.today.textContent = 'Today', this.today.addEventListener('click', function () { b.date = new Date, b.setInput() }), this.container.appendChild(this.today); var d = document.createElement('table'); this.daysHead = document.createElement('thead'), this.days = document.createElement('tbody'), this.days.addEventListener('click', function (a) { var c = a.target; if (!c.hasAttribute('data-day')) return !1; var d = b.days.querySelector('[data-selected]'); d && d.removeAttribute('data-selected'), c.setAttribute('data-selected', ''), b.date.setDate(parseInt(c.textContent)), b.setInput() }), d.appendChild(this.daysHead), d.appendChild(this.days), this.container.appendChild(d), this.hide(), document.body.appendChild(this.container), document.addEventListener('click', function (a) { for (var c = a.target, d = c === b.container; !d && (c = c.parentNode);)d = c === b.container; 'date' === a.target.getAttribute('type') || d || b.hide() }) } return b(c, [{ key: 'hide', value: function () { this.container.setAttribute('data-open', this.isOpen = !1) } }, { key: 'show', value: function () { this.container.setAttribute('data-open', this.isOpen = !0) } }, { key: 'goto', value: function (a) { var b = a.getBoundingClientRect(); this.container.style.top = b.top + b.height + (document.documentElement.scrollTop || document.body.scrollTop) + 'px', this.container.style.left = b.left + (document.documentElement.scrollLeft || document.body.scrollLeft) + 'px', this.show() } }, { key: 'attachTo', value: function (a) { return a === this.input && this.isOpen ? !1 : void (this.input = a, this.sync(), this.goto(this.input.element)) } }, { key: 'sync', value: function () { this.date = this.input.element.valueAsDate ? c.absoluteDate(this.input.element.valueAsDate) : new Date, this.year.value = this.date.getFullYear(), this.month.value = this.date.getMonth(), this.refreshDaysMatrix() } }, { key: 'setInput', value: function () { var a = this; this.input.element.value = this.date.getFullYear() + '-' + ('0' + (this.date.getMonth() + 1)).slice(-2) + '-' + ('0' + this.date.getDate()).slice(-2), this.input.element.focus(), setTimeout(function () { a.hide() }, 100), this.pingInput() } }, { key: 'refreshLocale', value: function () { if (this.locale === this.input.locale) return !1; this.locale = this.input.locale; for (var a = [''], b = 0, d = this.input.localeText.days.length; b < d; ++b)a.push('' + this.input.localeText.days[b] + ''); this.daysHead.innerHTML = a.join(''), c.createRangeSelect(this.month, 0, 11, this.input.localeText.months, this.date.getMonth()), this.today.textContent = this.input.localeText.today } }, { key: 'refreshDaysMatrix', value: function () { this.refreshLocale(); for (var a = this.date.getFullYear(), b = this.date.getMonth(), d = new Date(a, b, 1).getDay(), e = new Date(this.date.getFullYear(), b + 1, 0).getDate(), f = c.absoluteDate(this.input.element.valueAsDate) || !1, g = f && a === f.getFullYear() && b === f.getMonth(), h = [], j = 0; j < e + d; ++j) { if (0 == j % 7 && h.push('\\n ' + (0 === j ? '' : '') + '\\n \\n '), j + 1 <= d) { h.push(''); continue } var i = j + 1 - d, k = g && f.getDate() === i; h.push('\\n ' + i + '\\n ') } this.days.innerHTML = h.join('') } }, { key: 'pingInput', value: function () { var a, b; try { a = new Event('input'), b = new Event('change') } catch (c) { a = document.createEvent('KeyboardEvent'), a.initEvent('input', !0, !1), b = document.createEvent('KeyboardEvent'), b.initEvent('change', !0, !1) } this.input.element.dispatchEvent(a), this.input.element.dispatchEvent(b) } }], [{ key: 'createRangeSelect', value: function (a, b, c, d, e) { a.innerHTML = ''; for (var f, g = b; g <= c; ++g) { f = document.createElement('option'), a.appendChild(f); var h = d ? d[g - b] : g; f.text = h, f.value = g, g === e && (f.selected = 'selected') } return a } }, { key: 'absoluteDate', value: function (a) { return a && new Date(a.getTime() + 1e3 * (60 * a.getTimezoneOffset())) } }]), c }(); c.instance = null; var d = { \"en_en-US\": { days: ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'], months: ['January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December'], today: 'Today', format: 'M/D/Y' }, \"en-GB\": { days: ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'], months: ['January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December'], today: 'Today', format: 'D/M/Y' }, \"zh_zh-CN\": { days: ['\\u661F\\u671F\\u5929', '\\u661F\\u671F\\u4E00', '\\u661F\\u671F\\u4E8C', '\\u661F\\u671F\\u4E09', '\\u661F\\u671F\\u56DB', '\\u661F\\u671F\\u4E94', '\\u661F\\u671F\\u516D'], months: ['\\u4E00\\u6708', '\\u4E8C\\u6708', '\\u4E09\\u6708', '\\u56DB\\u6708', '\\u4E94\\u6708', '\\u516D\\u6708', '\\u4E03\\u6708', '\\u516B\\u6708', '\\u4E5D\\u6708', '\\u5341\\u6708', '\\u5341\\u4E00\\u6708', '\\u5341\\u4E8C\\u6708'], today: '\\u4ECA\\u5929', format: 'Y/M/D' }, \"zh-Hans_zh-Hans-CN\": { days: ['\\u5468\\u65E5', '\\u5468\\u4E00', '\\u5468\\u4E8C', '\\u5468\\u4E09', '\\u5468\\u56DB', '\\u5468\\u4E94', '\\u5468\\u516D'], months: ['\\u4E00\\u6708', '\\u4E8C\\u6708', '\\u4E09\\u6708', '\\u56DB\\u6708', '\\u4E94\\u6708', '\\u516D\\u6708', '\\u4E03\\u6708', '\\u516B\\u6708', '\\u4E5D\\u6708', '\\u5341\\u6708', '\\u5341\\u4E00\\u6708', '\\u5341\\u4E8C\\u6708'], today: '\\u4ECA\\u5929', format: 'Y/M/D' }, \"zh-Hant_zh-Hant-TW\": { days: ['\\u9031\\u65E5', '\\u9031\\u4E00', '\\u9031\\u4E8C', '\\u9031\\u4E09', '\\u9031\\u56DB', '\\u9031\\u4E94', '\\u9031\\u516D'], months: ['\\u4E00\\u6708', '\\u4E8C\\u6708', '\\u4E09\\u6708', '\\u56DB\\u6708', '\\u4E94\\u6708', '\\u516D\\u6708', '\\u4E03\\u6708', '\\u516B\\u6708', '\\u4E5D\\u6708', '\\u5341\\u6708', '\\u5341\\u4E00\\u6708', '\\u5341\\u4E8C\\u6708'], today: '\\u4ECA\\u5929', format: 'Y/M/D' }, \"de_de-DE\": { days: ['So', 'Mo', 'Di', 'Mi', 'Do', 'Fr', 'Sa'], months: ['Januar', 'Februar', 'M\\xE4rz', 'April', 'Mai', 'Juni', 'Juli', 'August', 'September', 'Oktober', 'November', 'Dezember'], today: 'Heute', format: 'D.M.Y' }, \"da_da-DA\": { days: ['S\\xF8n', 'Man', 'Tirs', 'Ons', 'Tors', 'Fre', 'L\\xF8r'], months: ['Januar', 'Februar', 'Marts', 'April', 'Maj', 'Juni', 'Juli', 'August', 'September', 'Oktober', 'November', 'December'], today: 'I dag', format: 'D/M/Y' }, es: { days: ['Dom', 'Lun', 'Mar', 'Mi\\xE9', 'Jue', 'Vie', 'S\\xE1b'], months: ['Enero', 'Febrero', 'Marzo', 'Abril', 'Mayo', 'Junio', 'Julio', 'Agosto', 'Septiembre', 'Octubre', 'Noviembre', 'Diciembre'], today: 'Hoy', format: 'D/M/Y' }, hi: { days: ['\\u0930\\u0935\\u093F', '\\u0938\\u094B\\u092E', '\\u092E\\u0902\\u0917\\u0932', '\\u092C\\u0941\\u0927', '\\u0917\\u0941\\u0930\\u0941', '\\u0936\\u0941\\u0915\\u094D\\u0930', '\\u0936\\u0928\\u093F'], months: ['\\u091C\\u0928\\u0935\\u0930\\u0940', '\\u092B\\u0930\\u0935\\u0930\\u0940', '\\u092E\\u093E\\u0930\\u094D\\u091A', '\\u0905\\u092A\\u094D\\u0930\\u0947\\u0932', '\\u092E\\u0948', '\\u091C\\u0942\\u0928', '\\u091C\\u0942\\u0932\\u093E\\u0908', '\\u0905\\u0917\\u0938\\u094D\\u0924', '\\u0938\\u093F\\u0924\\u092E\\u094D\\u092C\\u0930', '\\u0906\\u0915\\u094D\\u091F\\u094B\\u092C\\u0930', '\\u0928\\u0935\\u092E\\u094D\\u092C\\u0930', '\\u0926\\u093F\\u0938\\u092E\\u094D\\u092C\\u0930'], today: '\\u0906\\u091C', format: 'D/M/Y' }, pt: { days: ['Dom', 'Seg', 'Ter', 'Qua', 'Qui', 'Sex', 'S\\xE1b'], months: ['Janeiro', 'Fevereiro', 'Mar\\xE7o', 'Abril', 'Maio', 'Junho', 'Julho', 'Agosto', 'Setembro', 'Outubro', 'Novembro', 'Dezembro'], today: 'Hoje', format: 'D/M/Y' }, ja: { days: ['\\u65E5', '\\u6708', '\\u706B', '\\u6C34', '\\u6728', '\\u91D1', '\\u571F'], months: ['1\\u6708', '2\\u6708', '3\\u6708', '4\\u6708', '5\\u6708', '6\\u6708', '7\\u6708', '8\\u6708', '9\\u6708', '10\\u6708', '11\\u6708', '12\\u6708'], today: '\\u4ECA\\u65E5', format: 'Y/M/D' }, \"nl_nl-NL_nl-BE\": { days: ['Zondag', 'Maandag', 'Dinsdag', 'Woensdag', 'Donderdag', 'Vrijdag', 'Zaterdag'], months: ['Januari', 'Februari', 'Maart', 'April', 'Mei', 'Juni', 'Juli', 'Augustus', 'September', 'Oktober', 'November', 'December'], today: 'Vandaag', format: 'D/M/Y' }, \"tr_tr-TR\": { days: ['Pzr', 'Pzt', 'Sal', '\\xC7r\\u015F', 'Pr\\u015F', 'Cum', 'Cmt'], months: ['Ocak', '\\u015Eubat', 'Mart', 'Nisan', 'May\\u0131s', 'Haziran', 'Temmuz', 'A\\u011Fustos', 'Eyl\\xFCl', 'Ekim', 'Kas\\u0131m', 'Aral\\u0131k'], today: 'Bug\\xFCn', format: 'D/M/Y' }, \"fr_fr-FR\": { days: ['Dim', 'Lun', 'Mar', 'Mer', 'Jeu', 'Ven', 'Sam'], months: ['Janvier', 'F\\xE9vrier', 'Mars', 'Avril', 'Mai', 'Juin', 'Juillet', 'Ao\\xFBt', 'Septembre', 'Octobre', 'Novembre', 'D\\xE9cembre'], today: 'Auj.', format: 'D/M/Y' }, \"uk_uk-UA\": { days: ['\\u041D\\u0434', '\\u041F\\u043D', '\\u0412\\u0442', '\\u0421\\u0440', '\\u0427\\u0442', '\\u041F\\u0442', '\\u0421\\u0431'], months: ['\\u0421\\u0456\\u0447\\u0435\\u043D\\u044C', '\\u041B\\u044E\\u0442\\u0438\\u0439', '\\u0411\\u0435\\u0440\\u0435\\u0437\\u0435\\u043D\\u044C', '\\u041A\\u0432\\u0456\\u0442\\u0435\\u043D\\u044C', '\\u0422\\u0440\\u0430\\u0432\\u0435\\u043D\\u044C', '\\u0427\\u0435\\u0440\\u0432\\u0435\\u043D\\u044C', '\\u041B\\u0438\\u043F\\u0435\\u043D\\u044C', '\\u0421\\u0435\\u0440\\u043F\\u0435\\u043D\\u044C', '\\u0412\\u0435\\u0440\\u0435\\u0441\\u0435\\u043D\\u044C', '\\u0416\\u043E\\u0432\\u0442\\u0435\\u043D\\u044C', '\\u041B\\u0438\\u0441\\u0442\\u043E\\u043F\\u0430\\u0434', '\\u0413\\u0440\\u0443\\u0434\\u0435\\u043D\\u044C'], today: '\\u0421\\u044C\\u043E\\u0433\\u043E\\u0434\\u043D\\u0456', format: 'D.M.Y' }, it: { days: ['Dom', 'Lun', 'Mar', 'Mer', 'Gio', 'Ven', 'Sab'], months: ['Gennaio', 'Febbraio', 'Marzo', 'Aprile', 'Maggio', 'Giugno', 'Luglio', 'Agosto', 'Settembre', 'ottobre', 'Novembre', 'Dicembre'], today: 'Oggi', format: 'D/M/Y' }, pl: { days: ['Nie', 'Pon', 'Wto', '\\u015Aro', 'Czw', 'Pt', 'Sob'], months: ['Stycze\\u0144', 'Luty', 'Marzec', 'Kwiecie\\u0144', 'Maj', 'Czerwiec', 'Lipiec', 'Sierpie\\u0144', 'Wrzesie\\u0144', 'Pa\\u017Adziernik', 'Listopad', 'Grudzie\\u0144'], today: 'Dzisiaj', format: 'D.M.Y' }, cs: { days: ['Po', '\\xDAt', 'St', '\\u010Ct', 'P\\xE1', 'So', 'Ne'], months: ['Leden', '\\xDAnor', 'B\\u0159ezen', 'Duben', 'Kv\\u011Bten', '\\u010Cerven', '\\u010Cervenec', 'Srpen', 'Z\\xE1\\u0159\\xED', '\\u0158\\xEDjen', 'Listopad', 'Prosinec'], today: 'Dnes', format: 'D.M.Y' }, ru: { days: ['\\u0412\\u0441', '\\u041F\\u043D', '\\u0412\\u0442', '\\u0421\\u0440', '\\u0427\\u0442', '\\u041F\\u0442', '\\u0421\\u0431'], months: ['\\u042F\\u043D\\u0432\\u0430\\u0440\\u044C', '\\u0424\\u0435\\u0432\\u0440\\u0430\\u043B\\u044C', '\\u041C\\u0430\\u0440\\u0442', '\\u0410\\u043F\\u0440\\u0435\\u043B\\u044C', '\\u041C\\u0430\\u0439', '\\u0418\\u044E\\u043D\\u044C', '\\u0418\\u044E\\u043B\\u044C', '\\u0410\\u0432\\u0433\\u0443\\u0441\\u0442', '\\u0421\\u0435\\u043D\\u0442\\u044F\\u0431\\u0440\\u044C', '\\u041E\\u043A\\u0442\\u044F\\u0431\\u0440\\u044C', '\\u041D\\u043E\\u044F\\u0431\\u0440\\u044C', '\\u0414\\u0435\\u043A\\u0430\\u0431\\u0440\\u044C'], today: '\\u0421\\u0435\\u0433\\u043E\\u0434\\u043D\\u044F', format: 'D.M.Y' } }, e = function () { function e(b) { var d = this; a(this, e), this.element = b, this.element.setAttribute('data-has-picker', ''); for (var f = this.element, g = ''; f.parentNode && (g = f.getAttribute('lang'), !g);)f = f.parentNode; this.locale = g || 'en', this.localeText = this.getLocaleText(), Object.defineProperties(this.element, { value: { get: function () { return d.element.polyfillValue }, set: function (a) { if (!/^\\d{4}-\\d{2}-\\d{2}$/.test(a)) return d.element.polyfillValue = '', d.element.setAttribute('value', ''), !1; d.element.polyfillValue = a; var b = a.split('-'); d.element.setAttribute('value', d.localeText.format.replace('Y', b[0]).replace('M', b[1]).replace('D', b[2])) } }, valueAsDate: { get: function () { return d.element.polyfillValue ? new Date(d.element.polyfillValue) : null }, set: function (a) { d.element.value = a.toISOString().slice(0, 10) } }, valueAsNumber: { get: function () { return d.element.value ? d.element.valueAsDate.getTime() : NaN }, set: function (a) { d.element.valueAsDate = new Date(a) } } }), this.element.value = this.element.getAttribute('value'); var h = function () { c.instance.attachTo(d) }; this.element.addEventListener('focus', h), this.element.addEventListener('mousedown', h), this.element.addEventListener('mouseup', h), this.element.addEventListener('keydown', function (a) { var b = new Date; switch (a.keyCode) { case 27: c.instance.hide(); break; case 38: d.element.valueAsDate && (b.setDate(d.element.valueAsDate.getDate() + 1), d.element.valueAsDate = b, c.instance.pingInput()); break; case 40: d.element.valueAsDate && (b.setDate(d.element.valueAsDate.getDate() - 1), d.element.valueAsDate = b, c.instance.pingInput()); break; default: }c.instance.sync() }) } return b(e, [{ key: 'getLocaleText', value: function () { var a = this.locale.toLowerCase(); for (var b in d) { var c = b.split('_').map(function (a) { return a.toLowerCase() }); if (!!~c.indexOf(a)) return d[b] } for (var e in d) { var f = e.split('_').map(function (a) { return a.toLowerCase() }); if (!!~f.indexOf(a.substr(0, 2))) return d[e] } return this.locale = 'en', this.getLocaleText() } }], [{ key: 'supportsDateInput', value: function () { var a = document.createElement('input'); a.setAttribute('type', 'date'); var b = 'not-a-date'; return a.setAttribute('value', b), document.currentScript && !document.currentScript.hasAttribute('data-nodep-date-input-polyfill-debug') && a.value !== b } }, { key: 'addPickerToDateInputs', value: function () { var a = document.querySelectorAll('input[type=\"date\"]:not([data-has-picker]):not([readonly])'), b = a.length; if (!b) return !1; for (var c = 0; c < b; ++c)new e(a[c]) } }]), e }(); if (!e.supportsDateInput()) { var f = function () { c.instance = new c, e.addPickerToDateInputs(), document.querySelector('body').addEventListener('mousedown', function () { e.addPickerToDateInputs() }) }; if ('complete' === document.readyState) f(); else { var g = !1; document.addEventListener('DOMContentLoaded', function () { g = !0, f() }), window.addEventListener('load', function () { g || f() }) } } });","/**\r\n* @version: 3.0.3\r\n* @author: Dan Grossman http://www.dangrossman.info/\r\n* @copyright: Copyright (c) 2012-2018 Dan Grossman. All rights reserved.\r\n* @license: Licensed under the MIT license. See http://www.opensource.org/licenses/mit-license.php\r\n* @website: http://www.daterangepicker.com/\r\n*/\r\n// Following the UMD template https://github.com/umdjs/umd/blob/master/templates/returnExportsGlobal.js\r\n(function (root, factory) {\r\n if (typeof define === 'function' && define.amd) {\r\n // AMD. Make globaly available as well\r\n define(['moment', 'jquery'], function (moment, jquery) {\r\n if (!jquery.fn) jquery.fn = {}; // webpack server rendering\r\n return factory(moment, jquery);\r\n });\r\n } else if (typeof module === 'object' && module.exports) {\r\n // Node / Browserify\r\n //isomorphic issue\r\n var jQuery = (typeof window != 'undefined') ? window.jQuery : undefined;\r\n if (!jQuery) {\r\n jQuery = require('jquery');\r\n if (!jQuery.fn) jQuery.fn = {};\r\n }\r\n var moment = (typeof window != 'undefined' && typeof window.moment != 'undefined') ? window.moment : require('moment');\r\n module.exports = factory(moment, jQuery);\r\n } else {\r\n // Browser globals\r\n root.daterangepicker = factory(root.moment, root.jQuery);\r\n }\r\n}(this, function(moment, $) {\r\n var DateRangePicker = function(element, options, cb) {\r\n\r\n //default settings for options\r\n this.parentEl = 'body';\r\n this.element = $(element);\r\n this.startDate = moment().startOf('day');\r\n this.endDate = moment().endOf('day');\r\n this.minDate = false;\r\n this.maxDate = false;\r\n this.maxSpan = false;\r\n this.autoApply = false;\r\n this.singleDatePicker = false;\r\n this.showDropdowns = false;\r\n this.minYear = moment().subtract(100, 'year').format('YYYY');\r\n this.maxYear = moment().add(100, 'year').format('YYYY');\r\n this.showWeekNumbers = false;\r\n this.showISOWeekNumbers = false;\r\n this.showCustomRangeLabel = true;\r\n this.timePicker = false;\r\n this.timePicker24Hour = false;\r\n this.timePickerIncrement = 1;\r\n this.timePickerSeconds = false;\r\n this.linkedCalendars = true;\r\n this.autoUpdateInput = true;\r\n this.alwaysShowCalendars = false;\r\n this.ranges = {};\r\n\r\n this.opens = 'right';\r\n if (this.element.hasClass('pull-right'))\r\n this.opens = 'left';\r\n\r\n this.drops = 'down';\r\n if (this.element.hasClass('dropup'))\r\n this.drops = 'up';\r\n\r\n this.buttonClasses = 'btn btn-sm';\r\n this.applyButtonClasses = 'btn-primary';\r\n this.cancelButtonClasses = 'btn-default';\r\n\r\n this.locale = {\r\n direction: 'ltr',\r\n format: moment.localeData().longDateFormat('L'),\r\n separator: ' - ',\r\n applyLabel: 'Apply',\r\n cancelLabel: 'Cancel',\r\n weekLabel: 'W',\r\n customRangeLabel: 'Custom Range',\r\n daysOfWeek: moment.weekdaysMin(),\r\n monthNames: moment.monthsShort(),\r\n firstDay: moment.localeData().firstDayOfWeek()\r\n };\r\n\r\n this.callback = function() { };\r\n\r\n //some state information\r\n this.isShowing = false;\r\n this.leftCalendar = {};\r\n this.rightCalendar = {};\r\n\r\n //custom options from user\r\n if (typeof options !== 'object' || options === null)\r\n options = {};\r\n\r\n //allow setting options with data attributes\r\n //data-api options will be overwritten with custom javascript options\r\n options = $.extend(this.element.data(), options);\r\n\r\n //html template for the picker UI\r\n if (typeof options.template !== 'string' && !(options.template instanceof $))\r\n options.template =\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '' +\r\n '' +\r\n ' ' +\r\n '
' +\r\n '
';\r\n\r\n this.parentEl = (options.parentEl && $(options.parentEl).length) ? $(options.parentEl) : $(this.parentEl);\r\n this.container = $(options.template).appendTo(this.parentEl);\r\n\r\n //\r\n // handle all the possible options overriding defaults\r\n //\r\n\r\n if (typeof options.locale === 'object') {\r\n\r\n if (typeof options.locale.direction === 'string')\r\n this.locale.direction = options.locale.direction;\r\n\r\n if (typeof options.locale.format === 'string')\r\n this.locale.format = options.locale.format;\r\n\r\n if (typeof options.locale.separator === 'string')\r\n this.locale.separator = options.locale.separator;\r\n\r\n if (typeof options.locale.daysOfWeek === 'object')\r\n this.locale.daysOfWeek = options.locale.daysOfWeek.slice();\r\n\r\n if (typeof options.locale.monthNames === 'object')\r\n this.locale.monthNames = options.locale.monthNames.slice();\r\n\r\n if (typeof options.locale.firstDay === 'number')\r\n this.locale.firstDay = options.locale.firstDay;\r\n\r\n if (typeof options.locale.applyLabel === 'string')\r\n this.locale.applyLabel = options.locale.applyLabel;\r\n\r\n if (typeof options.locale.cancelLabel === 'string')\r\n this.locale.cancelLabel = options.locale.cancelLabel;\r\n\r\n if (typeof options.locale.weekLabel === 'string')\r\n this.locale.weekLabel = options.locale.weekLabel;\r\n\r\n if (typeof options.locale.customRangeLabel === 'string'){\r\n //Support unicode chars in the custom range name.\r\n var elem = document.createElement('textarea');\r\n elem.innerHTML = options.locale.customRangeLabel;\r\n var rangeHtml = elem.value;\r\n this.locale.customRangeLabel = rangeHtml;\r\n }\r\n }\r\n this.container.addClass(this.locale.direction);\r\n\r\n if (typeof options.startDate === 'string')\r\n this.startDate = moment(options.startDate, this.locale.format);\r\n\r\n if (typeof options.endDate === 'string')\r\n this.endDate = moment(options.endDate, this.locale.format);\r\n\r\n if (typeof options.minDate === 'string')\r\n this.minDate = moment(options.minDate, this.locale.format);\r\n\r\n if (typeof options.maxDate === 'string')\r\n this.maxDate = moment(options.maxDate, this.locale.format);\r\n\r\n if (typeof options.startDate === 'object')\r\n this.startDate = moment(options.startDate);\r\n\r\n if (typeof options.endDate === 'object')\r\n this.endDate = moment(options.endDate);\r\n\r\n if (typeof options.minDate === 'object')\r\n this.minDate = moment(options.minDate);\r\n\r\n if (typeof options.maxDate === 'object')\r\n this.maxDate = moment(options.maxDate);\r\n\r\n // sanity check for bad options\r\n if (this.minDate && this.startDate.isBefore(this.minDate))\r\n this.startDate = this.minDate.clone();\r\n\r\n // sanity check for bad options\r\n if (this.maxDate && this.endDate.isAfter(this.maxDate))\r\n this.endDate = this.maxDate.clone();\r\n\r\n if (typeof options.applyButtonClasses === 'string')\r\n this.applyButtonClasses = options.applyButtonClasses;\r\n\r\n if (typeof options.applyClass === 'string') //backwards compat\r\n this.applyButtonClasses = options.applyClass;\r\n\r\n if (typeof options.cancelButtonClasses === 'string')\r\n this.cancelButtonClasses = options.cancelButtonClasses;\r\n\r\n if (typeof options.cancelClass === 'string') //backwards compat\r\n this.cancelButtonClasses = options.cancelClass;\r\n\r\n if (typeof options.maxSpan === 'object')\r\n this.maxSpan = options.maxSpan;\r\n\r\n if (typeof options.dateLimit === 'object') //backwards compat\r\n this.maxSpan = options.dateLimit;\r\n\r\n if (typeof options.opens === 'string')\r\n this.opens = options.opens;\r\n\r\n if (typeof options.drops === 'string')\r\n this.drops = options.drops;\r\n\r\n if (typeof options.showWeekNumbers === 'boolean')\r\n this.showWeekNumbers = options.showWeekNumbers;\r\n\r\n if (typeof options.showISOWeekNumbers === 'boolean')\r\n this.showISOWeekNumbers = options.showISOWeekNumbers;\r\n\r\n if (typeof options.buttonClasses === 'string')\r\n this.buttonClasses = options.buttonClasses;\r\n\r\n if (typeof options.buttonClasses === 'object')\r\n this.buttonClasses = options.buttonClasses.join(' ');\r\n\r\n if (typeof options.showDropdowns === 'boolean')\r\n this.showDropdowns = options.showDropdowns;\r\n\r\n if (typeof options.minYear === 'number')\r\n this.minYear = options.minYear;\r\n\r\n if (typeof options.maxYear === 'number')\r\n this.maxYear = options.maxYear;\r\n\r\n if (typeof options.showCustomRangeLabel === 'boolean')\r\n this.showCustomRangeLabel = options.showCustomRangeLabel;\r\n\r\n if (typeof options.singleDatePicker === 'boolean') {\r\n this.singleDatePicker = options.singleDatePicker;\r\n if (this.singleDatePicker)\r\n this.endDate = this.startDate.clone();\r\n }\r\n\r\n if (typeof options.timePicker === 'boolean')\r\n this.timePicker = options.timePicker;\r\n\r\n if (typeof options.timePickerSeconds === 'boolean')\r\n this.timePickerSeconds = options.timePickerSeconds;\r\n\r\n if (typeof options.timePickerIncrement === 'number')\r\n this.timePickerIncrement = options.timePickerIncrement;\r\n\r\n if (typeof options.timePicker24Hour === 'boolean')\r\n this.timePicker24Hour = options.timePicker24Hour;\r\n\r\n if (typeof options.autoApply === 'boolean')\r\n this.autoApply = options.autoApply;\r\n\r\n if (typeof options.autoUpdateInput === 'boolean')\r\n this.autoUpdateInput = options.autoUpdateInput;\r\n\r\n if (typeof options.linkedCalendars === 'boolean')\r\n this.linkedCalendars = options.linkedCalendars;\r\n\r\n if (typeof options.isInvalidDate === 'function')\r\n this.isInvalidDate = options.isInvalidDate;\r\n\r\n if (typeof options.isCustomDate === 'function')\r\n this.isCustomDate = options.isCustomDate;\r\n\r\n if (typeof options.alwaysShowCalendars === 'boolean')\r\n this.alwaysShowCalendars = options.alwaysShowCalendars;\r\n\r\n // update day names order to firstDay\r\n if (this.locale.firstDay != 0) {\r\n var iterator = this.locale.firstDay;\r\n while (iterator > 0) {\r\n this.locale.daysOfWeek.push(this.locale.daysOfWeek.shift());\r\n iterator--;\r\n }\r\n }\r\n\r\n var start, end, range;\r\n\r\n //if no start/end dates set, check if an input element contains initial values\r\n if (typeof options.startDate === 'undefined' && typeof options.endDate === 'undefined') {\r\n if ($(this.element).is(':text')) {\r\n var val = $(this.element).val(),\r\n split = val.split(this.locale.separator);\r\n\r\n start = end = null;\r\n\r\n if (split.length == 2) {\r\n start = moment(split[0], this.locale.format);\r\n end = moment(split[1], this.locale.format);\r\n } else if (this.singleDatePicker && val !== \"\") {\r\n start = moment(val, this.locale.format);\r\n end = moment(val, this.locale.format);\r\n }\r\n if (start !== null && end !== null) {\r\n this.setStartDate(start);\r\n this.setEndDate(end);\r\n }\r\n }\r\n }\r\n\r\n if (typeof options.ranges === 'object') {\r\n for (range in options.ranges) {\r\n\r\n if (typeof options.ranges[range][0] === 'string')\r\n start = moment(options.ranges[range][0], this.locale.format);\r\n else\r\n start = moment(options.ranges[range][0]);\r\n\r\n if (typeof options.ranges[range][1] === 'string')\r\n end = moment(options.ranges[range][1], this.locale.format);\r\n else\r\n end = moment(options.ranges[range][1]);\r\n\r\n // If the start or end date exceed those allowed by the minDate or maxSpan\r\n // options, shorten the range to the allowable period.\r\n if (this.minDate && start.isBefore(this.minDate))\r\n start = this.minDate.clone();\r\n\r\n var maxDate = this.maxDate;\r\n if (this.maxSpan && maxDate && start.clone().add(this.maxSpan).isAfter(maxDate))\r\n maxDate = start.clone().add(this.maxSpan);\r\n if (maxDate && end.isAfter(maxDate))\r\n end = maxDate.clone();\r\n\r\n // If the end of the range is before the minimum or the start of the range is\r\n // after the maximum, don't display this range option at all.\r\n if ((this.minDate && end.isBefore(this.minDate, this.timepicker ? 'minute' : 'day'))\r\n || (maxDate && start.isAfter(maxDate, this.timepicker ? 'minute' : 'day')))\r\n continue;\r\n\r\n //Support unicode chars in the range names.\r\n var elem = document.createElement('textarea');\r\n elem.innerHTML = range;\r\n var rangeHtml = elem.value;\r\n\r\n this.ranges[rangeHtml] = [start, end];\r\n }\r\n\r\n var list = '';\r\n this.container.find('.ranges').prepend(list);\r\n }\r\n\r\n if (typeof cb === 'function') {\r\n this.callback = cb;\r\n }\r\n\r\n if (!this.timePicker) {\r\n this.startDate = this.startDate.startOf('day');\r\n this.endDate = this.endDate.endOf('day');\r\n this.container.find('.calendar-time').hide();\r\n }\r\n\r\n //can't be used together for now\r\n if (this.timePicker && this.autoApply)\r\n this.autoApply = false;\r\n\r\n if (this.autoApply) {\r\n this.container.addClass('auto-apply');\r\n }\r\n\r\n if (typeof options.ranges === 'object')\r\n this.container.addClass('show-ranges');\r\n\r\n if (this.singleDatePicker) {\r\n this.container.addClass('single');\r\n this.container.find('.drp-calendar.left').addClass('single');\r\n this.container.find('.drp-calendar.left').show();\r\n this.container.find('.drp-calendar.right').hide();\r\n if (!this.timePicker) {\r\n this.container.addClass('auto-apply');\r\n }\r\n }\r\n\r\n if ((typeof options.ranges === 'undefined' && !this.singleDatePicker) || this.alwaysShowCalendars) {\r\n this.container.addClass('show-calendar');\r\n }\r\n\r\n this.container.addClass('opens' + this.opens);\r\n\r\n //apply CSS classes and labels to buttons\r\n this.container.find('.applyBtn, .cancelBtn').addClass(this.buttonClasses);\r\n if (this.applyButtonClasses.length)\r\n this.container.find('.applyBtn').addClass(this.applyButtonClasses);\r\n if (this.cancelButtonClasses.length)\r\n this.container.find('.cancelBtn').addClass(this.cancelButtonClasses);\r\n this.container.find('.applyBtn').html(this.locale.applyLabel);\r\n this.container.find('.cancelBtn').html(this.locale.cancelLabel);\r\n\r\n //\r\n // event listeners\r\n //\r\n\r\n this.container.find('.drp-calendar')\r\n .on('click.daterangepicker', '.prev', $.proxy(this.clickPrev, this))\r\n .on('click.daterangepicker', '.next', $.proxy(this.clickNext, this))\r\n .on('mousedown.daterangepicker', 'td.available', $.proxy(this.clickDate, this))\r\n .on('mouseenter.daterangepicker', 'td.available', $.proxy(this.hoverDate, this))\r\n .on('change.daterangepicker', 'select.yearselect', $.proxy(this.monthOrYearChanged, this))\r\n .on('change.daterangepicker', 'select.monthselect', $.proxy(this.monthOrYearChanged, this))\r\n .on('change.daterangepicker', 'select.hourselect,select.minuteselect,select.secondselect,select.ampmselect', $.proxy(this.timeChanged, this))\r\n\r\n this.container.find('.ranges')\r\n .on('click.daterangepicker', 'li', $.proxy(this.clickRange, this))\r\n\r\n this.container.find('.drp-buttons')\r\n .on('click.daterangepicker', 'button.applyBtn', $.proxy(this.clickApply, this))\r\n .on('click.daterangepicker', 'button.cancelBtn', $.proxy(this.clickCancel, this))\r\n\r\n if (this.element.is('input') || this.element.is('button')) {\r\n this.element.on({\r\n 'click.daterangepicker': $.proxy(this.show, this),\r\n 'focus.daterangepicker': $.proxy(this.show, this),\r\n 'keyup.daterangepicker': $.proxy(this.elementChanged, this),\r\n 'keydown.daterangepicker': $.proxy(this.keydown, this) //IE 11 compatibility\r\n });\r\n } else {\r\n this.element.on('click.daterangepicker', $.proxy(this.toggle, this));\r\n this.element.on('keydown.daterangepicker', $.proxy(this.toggle, this));\r\n }\r\n\r\n //\r\n // if attached to a text input, set the initial value\r\n //\r\n\r\n this.updateElement();\r\n\r\n };\r\n\r\n DateRangePicker.prototype = {\r\n\r\n constructor: DateRangePicker,\r\n\r\n setStartDate: function(startDate) {\r\n if (typeof startDate === 'string')\r\n this.startDate = moment(startDate, this.locale.format);\r\n\r\n if (typeof startDate === 'object')\r\n this.startDate = moment(startDate);\r\n\r\n if (!this.timePicker)\r\n this.startDate = this.startDate.startOf('day');\r\n\r\n if (this.timePicker && this.timePickerIncrement)\r\n this.startDate.minute(Math.round(this.startDate.minute() / this.timePickerIncrement) * this.timePickerIncrement);\r\n\r\n if (this.minDate && this.startDate.isBefore(this.minDate)) {\r\n this.startDate = this.minDate.clone();\r\n if (this.timePicker && this.timePickerIncrement)\r\n this.startDate.minute(Math.round(this.startDate.minute() / this.timePickerIncrement) * this.timePickerIncrement);\r\n }\r\n\r\n if (this.maxDate && this.startDate.isAfter(this.maxDate)) {\r\n this.startDate = this.maxDate.clone();\r\n if (this.timePicker && this.timePickerIncrement)\r\n this.startDate.minute(Math.floor(this.startDate.minute() / this.timePickerIncrement) * this.timePickerIncrement);\r\n }\r\n\r\n if (!this.isShowing)\r\n this.updateElement();\r\n\r\n this.updateMonthsInView();\r\n },\r\n\r\n setEndDate: function(endDate) {\r\n if (typeof endDate === 'string')\r\n this.endDate = moment(endDate, this.locale.format);\r\n\r\n if (typeof endDate === 'object')\r\n this.endDate = moment(endDate);\r\n\r\n if (!this.timePicker)\r\n this.endDate = this.endDate.add(1,'d').startOf('day').subtract(1,'second');\r\n\r\n if (this.timePicker && this.timePickerIncrement)\r\n this.endDate.minute(Math.round(this.endDate.minute() / this.timePickerIncrement) * this.timePickerIncrement);\r\n\r\n if (this.endDate.isBefore(this.startDate))\r\n this.endDate = this.startDate.clone();\r\n\r\n if (this.maxDate && this.endDate.isAfter(this.maxDate))\r\n this.endDate = this.maxDate.clone();\r\n\r\n if (this.maxSpan && this.startDate.clone().add(this.maxSpan).isBefore(this.endDate))\r\n this.endDate = this.startDate.clone().add(this.maxSpan);\r\n\r\n this.previousRightTime = this.endDate.clone();\r\n\r\n this.container.find('.drp-selected').html(this.startDate.format(this.locale.format) + this.locale.separator + this.endDate.format(this.locale.format));\r\n\r\n if (!this.isShowing)\r\n this.updateElement();\r\n\r\n this.updateMonthsInView();\r\n },\r\n\r\n isInvalidDate: function() {\r\n return false;\r\n },\r\n\r\n isCustomDate: function() {\r\n return false;\r\n },\r\n\r\n updateView: function() {\r\n if (this.timePicker) {\r\n this.renderTimePicker('left');\r\n this.renderTimePicker('right');\r\n if (!this.endDate) {\r\n this.container.find('.right .calendar-time select').attr('disabled', 'disabled').addClass('disabled');\r\n } else {\r\n this.container.find('.right .calendar-time select').removeAttr('disabled').removeClass('disabled');\r\n }\r\n }\r\n if (this.endDate)\r\n this.container.find('.drp-selected').html(this.startDate.format(this.locale.format) + this.locale.separator + this.endDate.format(this.locale.format));\r\n this.updateMonthsInView();\r\n this.updateCalendars();\r\n this.updateFormInputs();\r\n },\r\n\r\n updateMonthsInView: function() {\r\n if (this.endDate) {\r\n\r\n //if both dates are visible already, do nothing\r\n if (!this.singleDatePicker && this.leftCalendar.month && this.rightCalendar.month &&\r\n (this.startDate.format('YYYY-MM') == this.leftCalendar.month.format('YYYY-MM') || this.startDate.format('YYYY-MM') == this.rightCalendar.month.format('YYYY-MM'))\r\n &&\r\n (this.endDate.format('YYYY-MM') == this.leftCalendar.month.format('YYYY-MM') || this.endDate.format('YYYY-MM') == this.rightCalendar.month.format('YYYY-MM'))\r\n ) {\r\n return;\r\n }\r\n\r\n this.leftCalendar.month = this.startDate.clone().date(2);\r\n if (!this.linkedCalendars && (this.endDate.month() != this.startDate.month() || this.endDate.year() != this.startDate.year())) {\r\n this.rightCalendar.month = this.endDate.clone().date(2);\r\n } else {\r\n this.rightCalendar.month = this.startDate.clone().date(2).add(1, 'month');\r\n }\r\n\r\n } else {\r\n if (this.leftCalendar.month.format('YYYY-MM') != this.startDate.format('YYYY-MM') && this.rightCalendar.month.format('YYYY-MM') != this.startDate.format('YYYY-MM')) {\r\n this.leftCalendar.month = this.startDate.clone().date(2);\r\n this.rightCalendar.month = this.startDate.clone().date(2).add(1, 'month');\r\n }\r\n }\r\n if (this.maxDate && this.linkedCalendars && !this.singleDatePicker && this.rightCalendar.month > this.maxDate) {\r\n this.rightCalendar.month = this.maxDate.clone().date(2);\r\n this.leftCalendar.month = this.maxDate.clone().date(2).subtract(1, 'month');\r\n }\r\n },\r\n\r\n updateCalendars: function() {\r\n\r\n if (this.timePicker) {\r\n var hour, minute, second;\r\n if (this.endDate) {\r\n hour = parseInt(this.container.find('.left .hourselect').val(), 10);\r\n minute = parseInt(this.container.find('.left .minuteselect').val(), 10);\r\n second = this.timePickerSeconds ? parseInt(this.container.find('.left .secondselect').val(), 10) : 0;\r\n if (!this.timePicker24Hour) {\r\n var ampm = this.container.find('.left .ampmselect').val();\r\n if (ampm === 'PM' && hour < 12)\r\n hour += 12;\r\n if (ampm === 'AM' && hour === 12)\r\n hour = 0;\r\n }\r\n } else {\r\n hour = parseInt(this.container.find('.right .hourselect').val(), 10);\r\n minute = parseInt(this.container.find('.right .minuteselect').val(), 10);\r\n second = this.timePickerSeconds ? parseInt(this.container.find('.right .secondselect').val(), 10) : 0;\r\n if (!this.timePicker24Hour) {\r\n var ampm = this.container.find('.right .ampmselect').val();\r\n if (ampm === 'PM' && hour < 12)\r\n hour += 12;\r\n if (ampm === 'AM' && hour === 12)\r\n hour = 0;\r\n }\r\n }\r\n this.leftCalendar.month.hour(hour).minute(minute).second(second);\r\n this.rightCalendar.month.hour(hour).minute(minute).second(second);\r\n }\r\n\r\n this.renderCalendar('left');\r\n this.renderCalendar('right');\r\n\r\n //highlight any predefined range matching the current start and end dates\r\n this.container.find('.ranges li').removeClass('active');\r\n if (this.endDate == null) return;\r\n\r\n this.calculateChosenLabel();\r\n },\r\n\r\n renderCalendar: function(side) {\r\n\r\n //\r\n // Build the matrix of dates that will populate the calendar\r\n //\r\n\r\n var calendar = side == 'left' ? this.leftCalendar : this.rightCalendar;\r\n var month = calendar.month.month();\r\n var year = calendar.month.year();\r\n var hour = calendar.month.hour();\r\n var minute = calendar.month.minute();\r\n var second = calendar.month.second();\r\n var daysInMonth = moment([year, month]).daysInMonth();\r\n var firstDay = moment([year, month, 1]);\r\n var lastDay = moment([year, month, daysInMonth]);\r\n var lastMonth = moment(firstDay).subtract(1, 'month').month();\r\n var lastYear = moment(firstDay).subtract(1, 'month').year();\r\n var daysInLastMonth = moment([lastYear, lastMonth]).daysInMonth();\r\n var dayOfWeek = firstDay.day();\r\n\r\n //initialize a 6 rows x 7 columns array for the calendar\r\n var calendar = [];\r\n calendar.firstDay = firstDay;\r\n calendar.lastDay = lastDay;\r\n\r\n for (var i = 0; i < 6; i++) {\r\n calendar[i] = [];\r\n }\r\n\r\n //populate the calendar with date objects\r\n var startDay = daysInLastMonth - dayOfWeek + this.locale.firstDay + 1;\r\n if (startDay > daysInLastMonth)\r\n startDay -= 7;\r\n\r\n if (dayOfWeek == this.locale.firstDay)\r\n startDay = daysInLastMonth - 6;\r\n\r\n var curDate = moment([lastYear, lastMonth, startDay, 12, minute, second]);\r\n\r\n var col, row;\r\n for (var i = 0, col = 0, row = 0; i < 42; i++, col++, curDate = moment(curDate).add(24, 'hour')) {\r\n if (i > 0 && col % 7 === 0) {\r\n col = 0;\r\n row++;\r\n }\r\n calendar[row][col] = curDate.clone().hour(hour).minute(minute).second(second);\r\n curDate.hour(12);\r\n\r\n if (this.minDate && calendar[row][col].format('YYYY-MM-DD') == this.minDate.format('YYYY-MM-DD') && calendar[row][col].isBefore(this.minDate) && side == 'left') {\r\n calendar[row][col] = this.minDate.clone();\r\n }\r\n\r\n if (this.maxDate && calendar[row][col].format('YYYY-MM-DD') == this.maxDate.format('YYYY-MM-DD') && calendar[row][col].isAfter(this.maxDate) && side == 'right') {\r\n calendar[row][col] = this.maxDate.clone();\r\n }\r\n\r\n }\r\n\r\n //make the calendar object available to hoverDate/clickDate\r\n if (side == 'left') {\r\n this.leftCalendar.calendar = calendar;\r\n } else {\r\n this.rightCalendar.calendar = calendar;\r\n }\r\n\r\n //\r\n // Display the calendar\r\n //\r\n\r\n var minDate = side == 'left' ? this.minDate : this.startDate;\r\n var maxDate = this.maxDate;\r\n var selected = side == 'left' ? this.startDate : this.endDate;\r\n var arrow = this.locale.direction == 'ltr' ? {left: 'chevron-left', right: 'chevron-right'} : {left: 'chevron-right', right: 'chevron-left'};\r\n\r\n var html = '';\r\n html += '';\r\n html += '';\r\n\r\n // add empty cell for week number\r\n if (this.showWeekNumbers || this.showISOWeekNumbers)\r\n html += '';\r\n\r\n if ((!minDate || minDate.isBefore(calendar.firstDay)) && (!this.linkedCalendars || side == 'left')) {\r\n html += '';\r\n } else {\r\n html += '';\r\n }\r\n\r\n var dateHtml = this.locale.monthNames[calendar[1][1].month()] + calendar[1][1].format(\" YYYY\");\r\n\r\n if (this.showDropdowns) {\r\n var currentMonth = calendar[1][1].month();\r\n var currentYear = calendar[1][1].year();\r\n var maxYear = (maxDate && maxDate.year()) || (this.maxYear);\r\n var minYear = (minDate && minDate.year()) || (this.minYear);\r\n var inMinYear = currentYear == minYear;\r\n var inMaxYear = currentYear == maxYear;\r\n\r\n var monthHtml = '\";\r\n\r\n var yearHtml = '';\r\n\r\n dateHtml = monthHtml + yearHtml;\r\n }\r\n\r\n html += '';\r\n if ((!maxDate || maxDate.isAfter(calendar.lastDay)) && (!this.linkedCalendars || side == 'right' || this.singleDatePicker)) {\r\n html += '';\r\n } else {\r\n html += '';\r\n }\r\n\r\n html += '';\r\n html += '';\r\n\r\n // add week number label\r\n if (this.showWeekNumbers || this.showISOWeekNumbers)\r\n html += '';\r\n\r\n $.each(this.locale.daysOfWeek, function(index, dayOfWeek) {\r\n html += '';\r\n });\r\n\r\n html += '';\r\n html += '';\r\n html += '';\r\n\r\n //adjust maxDate to reflect the maxSpan setting in order to\r\n //grey out end dates beyond the maxSpan\r\n if (this.endDate == null && this.maxSpan) {\r\n var maxLimit = this.startDate.clone().add(this.maxSpan).endOf('day');\r\n if (!maxDate || maxLimit.isBefore(maxDate)) {\r\n maxDate = maxLimit;\r\n }\r\n }\r\n\r\n for (var row = 0; row < 5; row++) {\r\n html += '';\r\n\r\n // add week number\r\n if (this.showWeekNumbers)\r\n html += '';\r\n else if (this.showISOWeekNumbers)\r\n html += '';\r\n\r\n for (var col = 0; col < 7; col++) {\r\n\r\n var classes = [];\r\n\r\n //highlight today's date\r\n if (calendar[row][col].isSame(new Date(), \"day\"))\r\n classes.push('today');\r\n\r\n //highlight weekends\r\n if (calendar[row][col].isoWeekday() > 5)\r\n classes.push('weekend');\r\n\r\n //grey out the dates in other months displayed at beginning and end of this calendar\r\n if (calendar[row][col].month() != calendar[1][1].month())\r\n classes.push('off');\r\n\r\n //don't allow selection of dates before the minimum date\r\n if (this.minDate && calendar[row][col].isBefore(this.minDate, 'day'))\r\n classes.push('off', 'disabled');\r\n\r\n //don't allow selection of dates after the maximum date\r\n if (maxDate && calendar[row][col].isAfter(maxDate, 'day'))\r\n classes.push('off', 'disabled');\r\n\r\n //don't allow selection of date if a custom function decides it's invalid\r\n if (this.isInvalidDate(calendar[row][col]))\r\n classes.push('off', 'disabled');\r\n\r\n //highlight the currently selected start date\r\n if (calendar[row][col].format('YYYY-MM-DD') == this.startDate.format('YYYY-MM-DD'))\r\n classes.push('active', 'start-date');\r\n\r\n //highlight the currently selected end date\r\n if (this.endDate != null && calendar[row][col].format('YYYY-MM-DD') == this.endDate.format('YYYY-MM-DD'))\r\n classes.push('active', 'end-date');\r\n\r\n //highlight dates in-between the selected dates\r\n if (this.endDate != null && calendar[row][col] > this.startDate && calendar[row][col] < this.endDate)\r\n classes.push('in-range');\r\n\r\n //apply custom classes for this date\r\n var isCustom = this.isCustomDate(calendar[row][col]);\r\n if (isCustom !== false) {\r\n if (typeof isCustom === 'string')\r\n classes.push(isCustom);\r\n else\r\n Array.prototype.push.apply(classes, isCustom);\r\n }\r\n\r\n var cname = '', disabled = false;\r\n for (var i = 0; i < classes.length; i++) {\r\n cname += classes[i] + ' ';\r\n if (classes[i] == 'disabled')\r\n disabled = true;\r\n }\r\n if (!disabled)\r\n cname += 'available';\r\n\r\n html += '';\r\n\r\n }\r\n html += '';\r\n }\r\n\r\n html += '';\r\n html += '
' + dateHtml + '
' + this.locale.weekLabel + '' + dayOfWeek + '
' + calendar[row][0].week() + '' + calendar[row][0].isoWeek() + '' + calendar[row][col].date() + '
';\r\n\r\n this.container.find('.drp-calendar.' + side + ' .calendar-table').html(html);\r\n\r\n },\r\n\r\n renderTimePicker: function(side) {\r\n\r\n // Don't bother updating the time picker if it's currently disabled\r\n // because an end date hasn't been clicked yet\r\n if (side == 'right' && !this.endDate) return;\r\n\r\n var html, selected, minDate, maxDate = this.maxDate;\r\n\r\n if (this.maxSpan && (!this.maxDate || this.startDate.clone().add(this.maxSpan).isAfter(this.maxDate)))\r\n maxDate = this.startDate.clone().add(this.maxSpan);\r\n\r\n if (side == 'left') {\r\n selected = this.startDate.clone();\r\n minDate = this.minDate;\r\n } else if (side == 'right') {\r\n selected = this.endDate.clone();\r\n minDate = this.startDate;\r\n\r\n //Preserve the time already selected\r\n var timeSelector = this.container.find('.drp-calendar.right .calendar-time');\r\n if (timeSelector.html() != '') {\r\n\r\n selected.hour(selected.hour() || timeSelector.find('.hourselect option:selected').val());\r\n selected.minute(selected.minute() || timeSelector.find('.minuteselect option:selected').val());\r\n selected.second(selected.second() || timeSelector.find('.secondselect option:selected').val());\r\n\r\n if (!this.timePicker24Hour) {\r\n var ampm = timeSelector.find('.ampmselect option:selected').val();\r\n if (ampm === 'PM' && selected.hour() < 12)\r\n selected.hour(selected.hour() + 12);\r\n if (ampm === 'AM' && selected.hour() === 12)\r\n selected.hour(0);\r\n }\r\n\r\n }\r\n\r\n if (selected.isBefore(this.startDate))\r\n selected = this.startDate.clone();\r\n\r\n if (maxDate && selected.isAfter(maxDate))\r\n selected = maxDate.clone();\r\n\r\n }\r\n\r\n //\r\n // hours\r\n //\r\n\r\n html = ' ';\r\n\r\n //\r\n // minutes\r\n //\r\n\r\n html += ': ';\r\n\r\n //\r\n // seconds\r\n //\r\n\r\n if (this.timePickerSeconds) {\r\n html += ': ';\r\n }\r\n\r\n //\r\n // AM/PM\r\n //\r\n\r\n if (!this.timePicker24Hour) {\r\n html += '';\r\n }\r\n\r\n this.container.find('.drp-calendar.' + side + ' .calendar-time').html(html);\r\n\r\n },\r\n\r\n updateFormInputs: function() {\r\n\r\n if (this.singleDatePicker || (this.endDate && (this.startDate.isBefore(this.endDate) || this.startDate.isSame(this.endDate)))) {\r\n this.container.find('button.applyBtn').removeAttr('disabled');\r\n } else {\r\n this.container.find('button.applyBtn').attr('disabled', 'disabled');\r\n }\r\n\r\n },\r\n\r\n move: function() {\r\n var parentOffset = { top: 0, left: 0 },\r\n containerTop;\r\n var parentRightEdge = $(window).width();\r\n if (!this.parentEl.is('body')) {\r\n parentOffset = {\r\n top: this.parentEl.offset().top - this.parentEl.scrollTop(),\r\n left: this.parentEl.offset().left - this.parentEl.scrollLeft()\r\n };\r\n parentRightEdge = this.parentEl[0].clientWidth + this.parentEl.offset().left;\r\n }\r\n\r\n if (this.drops == 'up')\r\n containerTop = this.element.offset().top - this.container.outerHeight() - parentOffset.top;\r\n else\r\n containerTop = this.element.offset().top + this.element.outerHeight() - parentOffset.top;\r\n this.container[this.drops == 'up' ? 'addClass' : 'removeClass']('drop-up');\r\n\r\n if (this.opens == 'left') {\r\n this.container.css({\r\n top: containerTop,\r\n right: parentRightEdge - this.element.offset().left - this.element.outerWidth(),\r\n left: 'auto'\r\n });\r\n if (this.container.offset().left < 0) {\r\n this.container.css({\r\n right: 'auto',\r\n left: 9\r\n });\r\n }\r\n } else if (this.opens == 'center') {\r\n this.container.css({\r\n top: containerTop,\r\n left: this.element.offset().left - parentOffset.left + this.element.outerWidth() / 2\r\n - this.container.outerWidth() / 2,\r\n right: 'auto'\r\n });\r\n if (this.container.offset().left < 0) {\r\n this.container.css({\r\n right: 'auto',\r\n left: 9\r\n });\r\n }\r\n } else {\r\n this.container.css({\r\n top: containerTop,\r\n left: this.element.offset().left - parentOffset.left,\r\n right: 'auto'\r\n });\r\n if (this.container.offset().left + this.container.outerWidth() > $(window).width()) {\r\n this.container.css({\r\n left: 'auto',\r\n right: 0\r\n });\r\n }\r\n }\r\n },\r\n\r\n show: function(e) {\r\n if (this.isShowing) return;\r\n\r\n // Create a click proxy that is private to this instance of datepicker, for unbinding\r\n this._outsideClickProxy = $.proxy(function(e) { this.outsideClick(e); }, this);\r\n\r\n // Bind global datepicker mousedown for hiding and\r\n $(document)\r\n .on('mousedown.daterangepicker', this._outsideClickProxy)\r\n // also support mobile devices\r\n .on('touchend.daterangepicker', this._outsideClickProxy)\r\n // also explicitly play nice with Bootstrap dropdowns, which stopPropagation when clicking them\r\n .on('click.daterangepicker', '[data-toggle=dropdown]', this._outsideClickProxy)\r\n // and also close when focus changes to outside the picker (eg. tabbing between controls)\r\n .on('focusin.daterangepicker', this._outsideClickProxy);\r\n\r\n // Reposition the picker if the window is resized while it's open\r\n $(window).on('resize.daterangepicker', $.proxy(function(e) { this.move(e); }, this));\r\n\r\n this.oldStartDate = this.startDate.clone();\r\n this.oldEndDate = this.endDate.clone();\r\n this.previousRightTime = this.endDate.clone();\r\n\r\n this.updateView();\r\n this.container.show();\r\n this.move();\r\n this.element.trigger('show.daterangepicker', this);\r\n this.isShowing = true;\r\n },\r\n\r\n hide: function(e) {\r\n if (!this.isShowing) return;\r\n\r\n //incomplete date selection, revert to last values\r\n if (!this.endDate) {\r\n this.startDate = this.oldStartDate.clone();\r\n this.endDate = this.oldEndDate.clone();\r\n }\r\n\r\n //if a new date range was selected, invoke the user callback function\r\n if (!this.startDate.isSame(this.oldStartDate) || !this.endDate.isSame(this.oldEndDate))\r\n this.callback(this.startDate.clone(), this.endDate.clone(), this.chosenLabel);\r\n\r\n //if picker is attached to a text input, update it\r\n this.updateElement();\r\n\r\n $(document).off('.daterangepicker');\r\n $(window).off('.daterangepicker');\r\n this.container.hide();\r\n this.element.trigger('hide.daterangepicker', this);\r\n this.isShowing = false;\r\n },\r\n\r\n toggle: function(e) {\r\n if (this.isShowing) {\r\n this.hide();\r\n } else {\r\n this.show();\r\n }\r\n },\r\n\r\n outsideClick: function(e) {\r\n var target = $(e.target);\r\n // if the page is clicked anywhere except within the daterangerpicker/button\r\n // itself then call this.hide()\r\n if (\r\n // ie modal dialog fix\r\n e.type == \"focusin\" ||\r\n target.closest(this.element).length ||\r\n target.closest(this.container).length ||\r\n target.closest('.calendar-table').length\r\n ) return;\r\n this.hide();\r\n this.element.trigger('outsideClick.daterangepicker', this);\r\n },\r\n\r\n showCalendars: function() {\r\n this.container.addClass('show-calendar');\r\n this.move();\r\n this.element.trigger('showCalendar.daterangepicker', this);\r\n },\r\n\r\n hideCalendars: function() {\r\n this.container.removeClass('show-calendar');\r\n this.element.trigger('hideCalendar.daterangepicker', this);\r\n },\r\n\r\n clickRange: function(e) {\r\n var label = e.target.getAttribute('data-range-key');\r\n this.chosenLabel = label;\r\n if (label == this.locale.customRangeLabel) {\r\n this.showCalendars();\r\n } else {\r\n var dates = this.ranges[label];\r\n this.startDate = dates[0];\r\n this.endDate = dates[1];\r\n\r\n if (!this.timePicker) {\r\n this.startDate.startOf('day');\r\n this.endDate.endOf('day');\r\n }\r\n\r\n if (!this.alwaysShowCalendars)\r\n this.hideCalendars();\r\n this.clickApply();\r\n }\r\n },\r\n\r\n clickPrev: function(e) {\r\n var cal = $(e.target).parents('.drp-calendar');\r\n if (cal.hasClass('left')) {\r\n this.leftCalendar.month.subtract(1, 'month');\r\n if (this.linkedCalendars)\r\n this.rightCalendar.month.subtract(1, 'month');\r\n } else {\r\n this.rightCalendar.month.subtract(1, 'month');\r\n }\r\n this.updateCalendars();\r\n },\r\n\r\n clickNext: function(e) {\r\n var cal = $(e.target).parents('.drp-calendar');\r\n if (cal.hasClass('left')) {\r\n this.leftCalendar.month.add(1, 'month');\r\n } else {\r\n this.rightCalendar.month.add(1, 'month');\r\n if (this.linkedCalendars)\r\n this.leftCalendar.month.add(1, 'month');\r\n }\r\n this.updateCalendars();\r\n },\r\n\r\n hoverDate: function(e) {\r\n\r\n //ignore dates that can't be selected\r\n if (!$(e.target).hasClass('available')) return;\r\n\r\n var title = $(e.target).attr('data-title');\r\n var row = title.substr(1, 1);\r\n var col = title.substr(3, 1);\r\n var cal = $(e.target).parents('.drp-calendar');\r\n var date = cal.hasClass('left') ? this.leftCalendar.calendar[row][col] : this.rightCalendar.calendar[row][col];\r\n\r\n //highlight the dates between the start date and the date being hovered as a potential end date\r\n var leftCalendar = this.leftCalendar;\r\n var rightCalendar = this.rightCalendar;\r\n var startDate = this.startDate;\r\n if (!this.endDate) {\r\n this.container.find('.drp-calendar tbody td').each(function(index, el) {\r\n\r\n //skip week numbers, only look at dates\r\n if ($(el).hasClass('week')) return;\r\n\r\n var title = $(el).attr('data-title');\r\n var row = title.substr(1, 1);\r\n var col = title.substr(3, 1);\r\n var cal = $(el).parents('.drp-calendar');\r\n var dt = cal.hasClass('left') ? leftCalendar.calendar[row][col] : rightCalendar.calendar[row][col];\r\n\r\n if ((dt.isAfter(startDate) && dt.isBefore(date)) || dt.isSame(date, 'day')) {\r\n $(el).addClass('in-range');\r\n } else {\r\n $(el).removeClass('in-range');\r\n }\r\n\r\n });\r\n }\r\n\r\n },\r\n\r\n clickDate: function(e) {\r\n\r\n if (!$(e.target).hasClass('available')) return;\r\n\r\n var title = $(e.target).attr('data-title');\r\n var row = title.substr(1, 1);\r\n var col = title.substr(3, 1);\r\n var cal = $(e.target).parents('.drp-calendar');\r\n var date = cal.hasClass('left') ? this.leftCalendar.calendar[row][col] : this.rightCalendar.calendar[row][col];\r\n\r\n //\r\n // this function needs to do a few things:\r\n // * alternate between selecting a start and end date for the range,\r\n // * if the time picker is enabled, apply the hour/minute/second from the select boxes to the clicked date\r\n // * if autoapply is enabled, and an end date was chosen, apply the selection\r\n // * if single date picker mode, and time picker isn't enabled, apply the selection immediately\r\n // * if one of the inputs above the calendars was focused, cancel that manual input\r\n //\r\n\r\n if (this.endDate || date.isBefore(this.startDate, 'day')) { //picking start\r\n if (this.timePicker) {\r\n var hour = parseInt(this.container.find('.left .hourselect').val(), 10);\r\n if (!this.timePicker24Hour) {\r\n var ampm = this.container.find('.left .ampmselect').val();\r\n if (ampm === 'PM' && hour < 12)\r\n hour += 12;\r\n if (ampm === 'AM' && hour === 12)\r\n hour = 0;\r\n }\r\n var minute = parseInt(this.container.find('.left .minuteselect').val(), 10);\r\n var second = this.timePickerSeconds ? parseInt(this.container.find('.left .secondselect').val(), 10) : 0;\r\n date = date.clone().hour(hour).minute(minute).second(second);\r\n }\r\n this.endDate = null;\r\n this.setStartDate(date.clone());\r\n } else if (!this.endDate && date.isBefore(this.startDate)) {\r\n //special case: clicking the same date for start/end,\r\n //but the time of the end date is before the start date\r\n this.setEndDate(this.startDate.clone());\r\n } else { // picking end\r\n if (this.timePicker) {\r\n var hour = parseInt(this.container.find('.right .hourselect').val(), 10);\r\n if (!this.timePicker24Hour) {\r\n var ampm = this.container.find('.right .ampmselect').val();\r\n if (ampm === 'PM' && hour < 12)\r\n hour += 12;\r\n if (ampm === 'AM' && hour === 12)\r\n hour = 0;\r\n }\r\n var minute = parseInt(this.container.find('.right .minuteselect').val(), 10);\r\n var second = this.timePickerSeconds ? parseInt(this.container.find('.right .secondselect').val(), 10) : 0;\r\n date = date.clone().hour(hour).minute(minute).second(second);\r\n }\r\n this.setEndDate(date.clone());\r\n if (this.autoApply) {\r\n this.calculateChosenLabel();\r\n this.clickApply();\r\n }\r\n }\r\n\r\n if (this.singleDatePicker) {\r\n this.setEndDate(this.startDate);\r\n if (!this.timePicker)\r\n this.clickApply();\r\n }\r\n\r\n this.updateView();\r\n\r\n //This is to cancel the blur event handler if the mouse was in one of the inputs\r\n e.stopPropagation();\r\n\r\n },\r\n\r\n calculateChosenLabel: function () {\r\n var customRange = true;\r\n var i = 0;\r\n for (var range in this.ranges) {\r\n if (this.timePicker) {\r\n var format = this.timePickerSeconds ? \"YYYY-MM-DD hh:mm:ss\" : \"YYYY-MM-DD hh:mm\";\r\n //ignore times when comparing dates if time picker seconds is not enabled\r\n if (this.startDate.format(format) == this.ranges[range][0].format(format) && this.endDate.format(format) == this.ranges[range][1].format(format)) {\r\n customRange = false;\r\n this.chosenLabel = this.container.find('.ranges li:eq(' + i + ')').addClass('active').attr('data-range-key');\r\n break;\r\n }\r\n } else {\r\n //ignore times when comparing dates if time picker is not enabled\r\n if (this.startDate.format('YYYY-MM-DD') == this.ranges[range][0].format('YYYY-MM-DD') && this.endDate.format('YYYY-MM-DD') == this.ranges[range][1].format('YYYY-MM-DD')) {\r\n customRange = false;\r\n this.chosenLabel = this.container.find('.ranges li:eq(' + i + ')').addClass('active').attr('data-range-key');\r\n break;\r\n }\r\n }\r\n i++;\r\n }\r\n if (customRange) {\r\n if (this.showCustomRangeLabel) {\r\n this.chosenLabel = this.container.find('.ranges li:last').addClass('active').attr('data-range-key');\r\n } else {\r\n this.chosenLabel = null;\r\n }\r\n this.showCalendars();\r\n }\r\n },\r\n\r\n clickApply: function(e) {\r\n this.hide();\r\n this.element.trigger('apply.daterangepicker', this);\r\n },\r\n\r\n clickCancel: function(e) {\r\n this.startDate = this.oldStartDate;\r\n this.endDate = this.oldEndDate;\r\n this.hide();\r\n this.element.trigger('cancel.daterangepicker', this);\r\n },\r\n\r\n monthOrYearChanged: function(e) {\r\n var isLeft = $(e.target).closest('.drp-calendar').hasClass('left'),\r\n leftOrRight = isLeft ? 'left' : 'right',\r\n cal = this.container.find('.drp-calendar.'+leftOrRight);\r\n\r\n // Month must be Number for new moment versions\r\n var month = parseInt(cal.find('.monthselect').val(), 10);\r\n var year = cal.find('.yearselect').val();\r\n\r\n if (!isLeft) {\r\n if (year < this.startDate.year() || (year == this.startDate.year() && month < this.startDate.month())) {\r\n month = this.startDate.month();\r\n year = this.startDate.year();\r\n }\r\n }\r\n\r\n if (this.minDate) {\r\n if (year < this.minDate.year() || (year == this.minDate.year() && month < this.minDate.month())) {\r\n month = this.minDate.month();\r\n year = this.minDate.year();\r\n }\r\n }\r\n\r\n if (this.maxDate) {\r\n if (year > this.maxDate.year() || (year == this.maxDate.year() && month > this.maxDate.month())) {\r\n month = this.maxDate.month();\r\n year = this.maxDate.year();\r\n }\r\n }\r\n\r\n if (isLeft) {\r\n this.leftCalendar.month.month(month).year(year);\r\n if (this.linkedCalendars)\r\n this.rightCalendar.month = this.leftCalendar.month.clone().add(1, 'month');\r\n } else {\r\n this.rightCalendar.month.month(month).year(year);\r\n if (this.linkedCalendars)\r\n this.leftCalendar.month = this.rightCalendar.month.clone().subtract(1, 'month');\r\n }\r\n this.updateCalendars();\r\n },\r\n\r\n timeChanged: function(e) {\r\n\r\n var cal = $(e.target).closest('.drp-calendar'),\r\n isLeft = cal.hasClass('left');\r\n\r\n var hour = parseInt(cal.find('.hourselect').val(), 10);\r\n var minute = parseInt(cal.find('.minuteselect').val(), 10);\r\n var second = this.timePickerSeconds ? parseInt(cal.find('.secondselect').val(), 10) : 0;\r\n\r\n if (!this.timePicker24Hour) {\r\n var ampm = cal.find('.ampmselect').val();\r\n if (ampm === 'PM' && hour < 12)\r\n hour += 12;\r\n if (ampm === 'AM' && hour === 12)\r\n hour = 0;\r\n }\r\n\r\n if (isLeft) {\r\n var start = this.startDate.clone();\r\n start.hour(hour);\r\n start.minute(minute);\r\n start.second(second);\r\n this.setStartDate(start);\r\n if (this.singleDatePicker) {\r\n this.endDate = this.startDate.clone();\r\n } else if (this.endDate && this.endDate.format('YYYY-MM-DD') == start.format('YYYY-MM-DD') && this.endDate.isBefore(start)) {\r\n this.setEndDate(start.clone());\r\n }\r\n } else if (this.endDate) {\r\n var end = this.endDate.clone();\r\n end.hour(hour);\r\n end.minute(minute);\r\n end.second(second);\r\n this.setEndDate(end);\r\n }\r\n\r\n //update the calendars so all clickable dates reflect the new time component\r\n this.updateCalendars();\r\n\r\n //update the form inputs above the calendars with the new time\r\n this.updateFormInputs();\r\n\r\n //re-render the time pickers because changing one selection can affect what's enabled in another\r\n this.renderTimePicker('left');\r\n this.renderTimePicker('right');\r\n\r\n },\r\n\r\n elementChanged: function() {\r\n if (!this.element.is('input')) return;\r\n if (!this.element.val().length) return;\r\n\r\n var dateString = this.element.val().split(this.locale.separator),\r\n start = null,\r\n end = null;\r\n\r\n if (dateString.length === 2) {\r\n start = moment(dateString[0], this.locale.format);\r\n end = moment(dateString[1], this.locale.format);\r\n }\r\n\r\n if (this.singleDatePicker || start === null || end === null) {\r\n start = moment(this.element.val(), this.locale.format);\r\n end = start;\r\n }\r\n\r\n if (!start.isValid() || !end.isValid()) return;\r\n\r\n this.setStartDate(start);\r\n this.setEndDate(end);\r\n this.updateView();\r\n },\r\n\r\n keydown: function(e) {\r\n //hide on tab or enter\r\n if ((e.keyCode === 9) || (e.keyCode === 13)) {\r\n this.hide();\r\n }\r\n\r\n //hide on esc and prevent propagation\r\n if (e.keyCode === 27) {\r\n e.preventDefault();\r\n e.stopPropagation();\r\n\r\n this.hide();\r\n }\r\n },\r\n\r\n updateElement: function() {\r\n if (this.element.is('input') && this.autoUpdateInput) {\r\n var newValue = this.startDate.format(this.locale.format);\r\n if (!this.singleDatePicker) {\r\n newValue += this.locale.separator + this.endDate.format(this.locale.format);\r\n }\r\n if (newValue !== this.element.val()) {\r\n this.element.val(newValue).trigger('change');\r\n }\r\n }\r\n },\r\n\r\n remove: function() {\r\n this.container.remove();\r\n this.element.off('.daterangepicker');\r\n this.element.removeData();\r\n }\r\n\r\n };\r\n\r\n $.fn.daterangepicker = function(options, callback) {\r\n var implementOptions = $.extend(true, {}, $.fn.daterangepicker.defaultOptions, options);\r\n this.each(function() {\r\n var el = $(this);\r\n if (el.data('daterangepicker'))\r\n el.data('daterangepicker').remove();\r\n el.data('daterangepicker', new DateRangePicker(el, implementOptions, callback));\r\n });\r\n return this;\r\n };\r\n\r\n return DateRangePicker;\r\n\r\n}));\r\n","/*! jssocials - v1.4.0 - 2016-10-10\r\n* http://js-socials.com\r\n* Copyright (c) 2016 Artem Tabalin; Licensed MIT */\r\n(function(window, $, undefined) {\r\n\r\n var JSSOCIALS = \"JSSocials\",\r\n JSSOCIALS_DATA_KEY = JSSOCIALS;\r\n\r\n var getOrApply = function(value, context) {\r\n if($.isFunction(value)) {\r\n return value.apply(context, $.makeArray(arguments).slice(2));\r\n }\r\n return value;\r\n };\r\n\r\n var IMG_SRC_REGEX = /(\\.(jpeg|png|gif|bmp|svg)$|^data:image\\/(jpeg|png|gif|bmp|svg\\+xml);base64)/i;\r\n var URL_PARAMS_REGEX = /(&?[a-zA-Z0-9]+=)?\\{([a-zA-Z0-9]+)\\}/g;\r\n\r\n var MEASURES = {\r\n \"G\": 1000000000,\r\n \"M\": 1000000,\r\n \"K\": 1000\r\n };\r\n\r\n var shares = {};\r\n\r\n function Socials(element, config) {\r\n var $element = $(element);\r\n\r\n $element.data(JSSOCIALS_DATA_KEY, this);\r\n\r\n this._$element = $element;\r\n\r\n this.shares = [];\r\n\r\n this._init(config);\r\n this._render();\r\n }\r\n\r\n Socials.prototype = {\r\n url: \"\",\r\n text: \"\",\r\n shareIn: \"blank\",\r\n\r\n showLabel: function(screenWidth) {\r\n return (this.showCount === false) ?\r\n (screenWidth > this.smallScreenWidth) :\r\n (screenWidth >= this.largeScreenWidth);\r\n },\r\n\r\n showCount: function(screenWidth) {\r\n return (screenWidth <= this.smallScreenWidth) ? \"inside\" : true;\r\n },\r\n\r\n smallScreenWidth: 640,\r\n largeScreenWidth: 1024,\r\n\r\n resizeTimeout: 200,\r\n\r\n elementClass: \"jssocials\",\r\n sharesClass: \"jssocials-shares\",\r\n shareClass: \"jssocials-share\",\r\n shareButtonClass: \"jssocials-share-button\",\r\n shareLinkClass: \"jssocials-share-link\",\r\n shareLogoClass: \"jssocials-share-logo\",\r\n shareLabelClass: \"jssocials-share-label\",\r\n shareLinkCountClass: \"jssocials-share-link-count\",\r\n shareCountBoxClass: \"jssocials-share-count-box\",\r\n shareCountClass: \"jssocials-share-count\",\r\n shareZeroCountClass: \"jssocials-share-no-count\",\r\n\r\n _init: function(config) {\r\n this._initDefaults();\r\n $.extend(this, config);\r\n this._initShares();\r\n this._attachWindowResizeCallback();\r\n },\r\n\r\n _initDefaults: function() {\r\n this.url = window.location.href;\r\n this.text = $.trim($(\"meta[name=description]\").attr(\"content\") || $(\"title\").text());\r\n },\r\n\r\n _initShares: function() {\r\n this.shares = $.map(this.shares, $.proxy(function(shareConfig) {\r\n if(typeof shareConfig === \"string\") {\r\n shareConfig = { share: shareConfig };\r\n }\r\n\r\n var share = (shareConfig.share && shares[shareConfig.share]);\r\n\r\n if(!share && !shareConfig.renderer) {\r\n throw Error(\"Share '\" + shareConfig.share + \"' is not found\");\r\n }\r\n\r\n return $.extend({ url: this.url, text: this.text }, share, shareConfig);\r\n }, this));\r\n },\r\n\r\n _attachWindowResizeCallback: function() {\r\n $(window).on(\"resize\", $.proxy(this._windowResizeHandler, this));\r\n },\r\n\r\n _detachWindowResizeCallback: function() {\r\n $(window).off(\"resize\", this._windowResizeHandler);\r\n },\r\n\r\n _windowResizeHandler: function() {\r\n if($.isFunction(this.showLabel) || $.isFunction(this.showCount)) {\r\n window.clearTimeout(this._resizeTimer);\r\n this._resizeTimer = setTimeout($.proxy(this.refresh, this), this.resizeTimeout);\r\n }\r\n },\r\n\r\n _render: function() {\r\n this._clear();\r\n\r\n this._defineOptionsByScreen();\r\n\r\n this._$element.addClass(this.elementClass);\r\n\r\n this._$shares = $(\"
\").addClass(this.sharesClass)\r\n .appendTo(this._$element);\r\n\r\n this._renderShares();\r\n },\r\n\r\n _defineOptionsByScreen: function() {\r\n this._screenWidth = $(window).width();\r\n this._showLabel = getOrApply(this.showLabel, this, this._screenWidth);\r\n this._showCount = getOrApply(this.showCount, this, this._screenWidth);\r\n },\r\n\r\n _renderShares: function() {\r\n $.each(this.shares, $.proxy(function(_, share) {\r\n this._renderShare(share);\r\n }, this));\r\n },\r\n\r\n _renderShare: function(share) {\r\n var $share;\r\n\r\n if($.isFunction(share.renderer)) {\r\n $share = $(share.renderer());\r\n } else {\r\n $share = this._createShare(share);\r\n }\r\n\r\n $share.addClass(this.shareClass)\r\n .addClass(share.share ? \"jssocials-share-\" + share.share : \"\")\r\n .addClass(share.css)\r\n .appendTo(this._$shares);\r\n },\r\n\r\n _createShare: function(share) {\r\n var $result = $(\"
\");\r\n var $shareLink = this._createShareLink(share).appendTo($result);\r\n\r\n if(this._showCount) {\r\n var isInsideCount = (this._showCount === \"inside\");\r\n var $countContainer = isInsideCount ? $shareLink : $(\"
\").addClass(this.shareCountBoxClass).appendTo($result);\r\n $countContainer.addClass(isInsideCount ? this.shareLinkCountClass : this.shareCountBoxClass);\r\n this._renderShareCount(share, $countContainer);\r\n }\r\n\r\n return $result;\r\n },\r\n\r\n _createShareLink: function(share) {\r\n var shareStrategy = this._getShareStrategy(share);\r\n\r\n var $result = shareStrategy.call(share, {\r\n shareUrl: this._getShareUrl(share)\r\n });\r\n\r\n $result.addClass(this.shareLinkClass)\r\n .append(this._createShareLogo(share));\r\n\r\n if(this._showLabel) {\r\n $result.append(this._createShareLabel(share));\r\n }\r\n\r\n $.each(this.on || {}, function(event, handler) {\r\n if($.isFunction(handler)) {\r\n $result.on(event, $.proxy(handler, share));\r\n }\r\n });\r\n\r\n return $result;\r\n },\r\n\r\n _getShareStrategy: function(share) {\r\n var result = shareStrategies[share.shareIn || this.shareIn];\r\n\r\n if(!result)\r\n throw Error(\"Share strategy '\" + this.shareIn + \"' not found\");\r\n\r\n return result;\r\n },\r\n\r\n _getShareUrl: function(share) {\r\n var shareUrl = getOrApply(share.shareUrl, share);\r\n return this._formatShareUrl(shareUrl, share);\r\n },\r\n\r\n _createShareLogo: function(share) {\r\n var logo = share.logo;\r\n\r\n var $result = IMG_SRC_REGEX.test(logo) ?\r\n $(\"\").attr(\"src\", share.logo) :\r\n $(\"\").addClass(logo);\r\n\r\n $result.addClass(this.shareLogoClass);\r\n\r\n return $result;\r\n },\r\n\r\n _createShareLabel: function(share) {\r\n return $(\"\").addClass(this.shareLabelClass)\r\n .text(share.label);\r\n },\r\n\r\n _renderShareCount: function(share, $container) {\r\n var $count = $(\"\").addClass(this.shareCountClass);\r\n\r\n $container.addClass(this.shareZeroCountClass)\r\n .append($count);\r\n\r\n this._loadCount(share).done($.proxy(function(count) {\r\n if(count) {\r\n $container.removeClass(this.shareZeroCountClass);\r\n $count.text(count);\r\n }\r\n }, this));\r\n },\r\n\r\n _loadCount: function(share) {\r\n var deferred = $.Deferred();\r\n var countUrl = this._getCountUrl(share);\r\n\r\n if(!countUrl) {\r\n return deferred.resolve(0).promise();\r\n }\r\n\r\n var handleSuccess = $.proxy(function(response) {\r\n deferred.resolve(this._getCountValue(response, share));\r\n }, this);\r\n\r\n $.getJSON(countUrl).done(handleSuccess)\r\n .fail(function() {\r\n $.get(countUrl).done(handleSuccess)\r\n .fail(function() {\r\n deferred.resolve(0);\r\n });\r\n });\r\n\r\n return deferred.promise();\r\n },\r\n\r\n _getCountUrl: function(share) {\r\n var countUrl = getOrApply(share.countUrl, share);\r\n return this._formatShareUrl(countUrl, share);\r\n },\r\n\r\n _getCountValue: function(response, share) {\r\n var count = ($.isFunction(share.getCount) ? share.getCount(response) : response) || 0;\r\n return (typeof count === \"string\") ? count : this._formatNumber(count);\r\n },\r\n\r\n _formatNumber: function(number) {\r\n $.each(MEASURES, function(letter, value) {\r\n if(number >= value) {\r\n number = parseFloat((number / value).toFixed(2)) + letter;\r\n return false;\r\n }\r\n });\r\n\r\n return number;\r\n },\r\n\r\n _formatShareUrl: function(url, share) {\r\n return url.replace(URL_PARAMS_REGEX, function(match, key, field) {\r\n var value = share[field] || \"\";\r\n return value ? (key || \"\") + window.encodeURIComponent(value) : \"\";\r\n });\r\n },\r\n\r\n _clear: function() {\r\n window.clearTimeout(this._resizeTimer);\r\n this._$element.empty();\r\n },\r\n\r\n _passOptionToShares: function(key, value) {\r\n var shares = this.shares;\r\n\r\n $.each([\"url\", \"text\"], function(_, optionName) {\r\n if(optionName !== key)\r\n return;\r\n\r\n $.each(shares, function(_, share) {\r\n share[key] = value;\r\n });\r\n });\r\n },\r\n\r\n _normalizeShare: function(share) {\r\n if($.isNumeric(share)) {\r\n return this.shares[share];\r\n }\r\n\r\n if(typeof share === \"string\") {\r\n return $.grep(this.shares, function(s) {\r\n return s.share === share;\r\n })[0];\r\n }\r\n\r\n return share;\r\n },\r\n\r\n refresh: function() {\r\n this._render();\r\n },\r\n\r\n destroy: function() {\r\n this._clear();\r\n this._detachWindowResizeCallback();\r\n\r\n this._$element\r\n .removeClass(this.elementClass)\r\n .removeData(JSSOCIALS_DATA_KEY);\r\n },\r\n\r\n option: function(key, value) {\r\n if(arguments.length === 1) {\r\n return this[key];\r\n }\r\n\r\n this[key] = value;\r\n\r\n this._passOptionToShares(key, value);\r\n\r\n this.refresh();\r\n },\r\n\r\n shareOption: function(share, key, value) {\r\n share = this._normalizeShare(share);\r\n\r\n if(arguments.length === 2) {\r\n return share[key];\r\n }\r\n\r\n share[key] = value;\r\n this.refresh();\r\n }\r\n };\r\n\r\n\r\n $.fn.jsSocials = function(config) {\r\n var args = $.makeArray(arguments),\r\n methodArgs = args.slice(1),\r\n result = this;\r\n\r\n this.each(function() {\r\n var $element = $(this),\r\n instance = $element.data(JSSOCIALS_DATA_KEY),\r\n methodResult;\r\n\r\n if(instance) {\r\n if(typeof config === \"string\") {\r\n methodResult = instance[config].apply(instance, methodArgs);\r\n if(methodResult !== undefined && methodResult !== instance) {\r\n result = methodResult;\r\n return false;\r\n }\r\n } else {\r\n instance._detachWindowResizeCallback();\r\n instance._init(config);\r\n instance._render();\r\n }\r\n } else {\r\n new Socials($element, config);\r\n }\r\n });\r\n\r\n return result;\r\n };\r\n\r\n var setDefaults = function(config) {\r\n var component;\r\n\r\n if($.isPlainObject(config)) {\r\n component = Socials.prototype;\r\n } else {\r\n component = shares[config];\r\n config = arguments[1] || {};\r\n }\r\n\r\n $.extend(component, config);\r\n };\r\n\r\n var shareStrategies = {\r\n popup: function(args) {\r\n return $(\"\").attr(\"href\", \"#\")\r\n .on(\"click\", function() {\r\n window.open(args.shareUrl, null, \"width=600, height=400, location=0, menubar=0, resizeable=0, scrollbars=0, status=0, titlebar=0, toolbar=0\");\r\n return false;\r\n });\r\n },\r\n\r\n blank: function(args) {\r\n return $(\"\").attr({ target: \"_blank\", href: args.shareUrl });\r\n },\r\n\r\n self: function(args) {\r\n return $(\"\").attr({ target: \"_self\", href: args.shareUrl });\r\n }\r\n };\r\n\r\n window.jsSocials = {\r\n Socials: Socials,\r\n shares: shares,\r\n shareStrategies: shareStrategies,\r\n setDefaults: setDefaults\r\n };\r\n\r\n}(window, jQuery));\r\n\r\n\r\n(function(window, $, jsSocials, undefined) {\r\n\r\n $.extend(jsSocials.shares, {\r\n\r\n email: {\r\n label: \"E-mail\",\r\n logo: \"fa fa-at\",\r\n shareUrl: \"mailto:{to}?subject={text}&body={url}\",\r\n countUrl: \"\",\r\n shareIn: \"self\"\r\n },\r\n\r\n twitter: {\r\n label: \"Tweet\",\r\n logo: \"fa fa-twitter\",\r\n shareUrl: \"https://twitter.com/share?url={url}&text={text}&via={via}&hashtags={hashtags}\",\r\n countUrl: \"\"\r\n },\r\n\r\n facebook: {\r\n label: \"Like\",\r\n logo: \"fa fa-facebook\",\r\n shareUrl: \"https://facebook.com/sharer/sharer.php?u={url}\",\r\n countUrl: \"https://graph.facebook.com/?id={url}\",\r\n getCount: function(data) {\r\n return data.share && data.share.share_count || 0;\r\n }\r\n },\r\n\r\n vkontakte: {\r\n label: \"Like\",\r\n logo: \"fa fa-vk\",\r\n shareUrl: \"https://vk.com/share.php?url={url}&title={title}&description={text}\",\r\n countUrl: \"https://vk.com/share.php?act=count&index=1&url={url}\",\r\n getCount: function(data) {\r\n return parseInt(data.slice(15, -2).split(', ')[1]);\r\n }\r\n },\r\n\r\n googleplus: {\r\n label: \"+1\",\r\n logo: \"fa fa-google\",\r\n shareUrl: \"https://plus.google.com/share?url={url}\",\r\n countUrl: \"\"\r\n },\r\n\r\n linkedin: {\r\n label: \"Share\",\r\n logo: \"fa fa-linkedin\",\r\n shareUrl: \"https://www.linkedin.com/shareArticle?mini=true&url={url}\",\r\n countUrl: \"https://www.linkedin.com/countserv/count/share?format=jsonp&url={url}&callback=?\",\r\n getCount: function(data) {\r\n return data.count;\r\n }\r\n },\r\n\r\n pinterest: {\r\n label: \"Pin it\",\r\n logo: \"fa fa-pinterest\",\r\n shareUrl: \"https://pinterest.com/pin/create/bookmarklet/?media={media}&url={url}&description={text}\",\r\n countUrl: \"https://api.pinterest.com/v1/urls/count.json?&url={url}&callback=?\",\r\n getCount: function(data) {\r\n return data.count;\r\n }\r\n },\r\n\r\n stumbleupon: {\r\n label: \"Share\",\r\n logo: \"fa fa-stumbleupon\",\r\n shareUrl: \"http://www.stumbleupon.com/submit?url={url}&title={title}\",\r\n countUrl: \"https://cors-anywhere.herokuapp.com/https://www.stumbleupon.com/services/1.01/badge.getinfo?url={url}\",\r\n getCount: function(data) {\r\n return data.result.views;\r\n }\r\n },\r\n\r\n telegram: {\r\n label: \"Telegram\",\r\n logo: \"fa fa-paper-plane\",\r\n shareUrl: \"tg://msg?text={url} {text}\",\r\n countUrl: \"\",\r\n shareIn: \"self\"\r\n },\r\n\r\n whatsapp: {\r\n label: \"WhatsApp\",\r\n logo: \"fa fa-whatsapp\",\r\n shareUrl: \"whatsapp://send?text={url} {text}\",\r\n countUrl: \"\",\r\n shareIn: \"self\"\r\n },\r\n\r\n line: {\r\n label: \"LINE\",\r\n logo: \"fa fa-comment\",\r\n shareUrl: \"http://line.me/R/msg/text/?{text} {url}\",\r\n countUrl: \"\"\r\n },\r\n\r\n viber: {\r\n label: \"Viber\",\r\n logo: \"fa fa-volume-control-phone\",\r\n shareUrl: \"viber://forward?text={url} {text}\",\r\n countUrl: \"\",\r\n shareIn: \"self\"\r\n },\r\n\r\n pocket: {\r\n label: \"Pocket\",\r\n logo: \"fa fa-get-pocket\",\r\n shareUrl: \"https://getpocket.com/save?url={url}&title={title}\",\r\n countUrl: \"\"\r\n },\r\n\r\n messenger: {\r\n label: \"Share\",\r\n logo: \"fa fa-commenting\",\r\n shareUrl: \"fb-messenger://share?link={url}\",\r\n countUrl: \"\",\r\n shareIn: \"self\"\r\n }\r\n\r\n });\r\n\r\n}(window, jQuery, window.jsSocials));\r\n\r\n","!function(e,t){\"object\"==typeof exports&&\"undefined\"!=typeof module?module.exports=t():\"function\"==typeof define&&define.amd?define(t):e.moment=t()}(this,function(){\"use strict\";var H;function _(){return H.apply(null,arguments)}function y(e){return e instanceof Array||\"[object Array]\"===Object.prototype.toString.call(e)}function F(e){return null!=e&&\"[object Object]\"===Object.prototype.toString.call(e)}function c(e,t){return Object.prototype.hasOwnProperty.call(e,t)}function L(e){if(Object.getOwnPropertyNames)return 0===Object.getOwnPropertyNames(e).length;for(var t in e)if(c(e,t))return;return 1}function g(e){return void 0===e}function w(e){return\"number\"==typeof e||\"[object Number]\"===Object.prototype.toString.call(e)}function V(e){return e instanceof Date||\"[object Date]\"===Object.prototype.toString.call(e)}function G(e,t){for(var n=[],s=e.length,i=0;i>>0,s=0;sWe(e)?(r=e+1,t-We(e)):(r=e,t);return{year:r,dayOfYear:n}}function Be(e,t,n){var s,i,r=qe(e.year(),t,n),r=Math.floor((e.dayOfYear()-r-1)/7)+1;return r<1?s=r+N(i=e.year()-1,t,n):r>N(e.year(),t,n)?(s=r-N(e.year(),t,n),i=e.year()+1):(i=e.year(),s=r),{week:s,year:i}}function N(e,t,n){var s=qe(e,t,n),t=qe(e+1,t,n);return(We(e)-s+t)/7}s(\"w\",[\"ww\",2],\"wo\",\"week\"),s(\"W\",[\"WW\",2],\"Wo\",\"isoWeek\"),h(\"w\",n,u),h(\"ww\",n,t),h(\"W\",n,u),h(\"WW\",n,t),Oe([\"w\",\"ww\",\"W\",\"WW\"],function(e,t,n,s){t[s.substr(0,1)]=M(e)});function Je(e,t){return e.slice(t,7).concat(e.slice(0,t))}s(\"d\",0,\"do\",\"day\"),s(\"dd\",0,0,function(e){return this.localeData().weekdaysMin(this,e)}),s(\"ddd\",0,0,function(e){return this.localeData().weekdaysShort(this,e)}),s(\"dddd\",0,0,function(e){return this.localeData().weekdays(this,e)}),s(\"e\",0,0,\"weekday\"),s(\"E\",0,0,\"isoWeekday\"),h(\"d\",n),h(\"e\",n),h(\"E\",n),h(\"dd\",function(e,t){return t.weekdaysMinRegex(e)}),h(\"ddd\",function(e,t){return t.weekdaysShortRegex(e)}),h(\"dddd\",function(e,t){return t.weekdaysRegex(e)}),Oe([\"dd\",\"ddd\",\"dddd\"],function(e,t,n,s){s=n._locale.weekdaysParse(e,s,n._strict);null!=s?t.d=s:p(n).invalidWeekday=e}),Oe([\"d\",\"e\",\"E\"],function(e,t,n,s){t[s]=M(e)});var Qe=\"Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday\".split(\"_\"),Xe=\"Sun_Mon_Tue_Wed_Thu_Fri_Sat\".split(\"_\"),Ke=\"Su_Mo_Tu_We_Th_Fr_Sa\".split(\"_\"),et=i,tt=i,nt=i;function st(){function e(e,t){return t.length-e.length}for(var t,n,s,i=[],r=[],a=[],o=[],u=0;u<7;u++)s=l([2e3,1]).day(u),t=f(this.weekdaysMin(s,\"\")),n=f(this.weekdaysShort(s,\"\")),s=f(this.weekdays(s,\"\")),i.push(t),r.push(n),a.push(s),o.push(t),o.push(n),o.push(s);i.sort(e),r.sort(e),a.sort(e),o.sort(e),this._weekdaysRegex=new RegExp(\"^(\"+o.join(\"|\")+\")\",\"i\"),this._weekdaysShortRegex=this._weekdaysRegex,this._weekdaysMinRegex=this._weekdaysRegex,this._weekdaysStrictRegex=new RegExp(\"^(\"+a.join(\"|\")+\")\",\"i\"),this._weekdaysShortStrictRegex=new RegExp(\"^(\"+r.join(\"|\")+\")\",\"i\"),this._weekdaysMinStrictRegex=new RegExp(\"^(\"+i.join(\"|\")+\")\",\"i\")}function it(){return this.hours()%12||12}function rt(e,t){s(e,0,0,function(){return this.localeData().meridiem(this.hours(),this.minutes(),t)})}function at(e,t){return t._meridiemParse}s(\"H\",[\"HH\",2],0,\"hour\"),s(\"h\",[\"hh\",2],0,it),s(\"k\",[\"kk\",2],0,function(){return this.hours()||24}),s(\"hmm\",0,0,function(){return\"\"+it.apply(this)+r(this.minutes(),2)}),s(\"hmmss\",0,0,function(){return\"\"+it.apply(this)+r(this.minutes(),2)+r(this.seconds(),2)}),s(\"Hmm\",0,0,function(){return\"\"+this.hours()+r(this.minutes(),2)}),s(\"Hmmss\",0,0,function(){return\"\"+this.hours()+r(this.minutes(),2)+r(this.seconds(),2)}),rt(\"a\",!0),rt(\"A\",!1),h(\"a\",at),h(\"A\",at),h(\"H\",n,d),h(\"h\",n,u),h(\"k\",n,u),h(\"HH\",n,t),h(\"hh\",n,t),h(\"kk\",n,t),h(\"hmm\",me),h(\"hmmss\",_e),h(\"Hmm\",me),h(\"Hmmss\",_e),v([\"H\",\"HH\"],O),v([\"k\",\"kk\"],function(e,t,n){e=M(e);t[O]=24===e?0:e}),v([\"a\",\"A\"],function(e,t,n){n._isPm=n._locale.isPM(e),n._meridiem=e}),v([\"h\",\"hh\"],function(e,t,n){t[O]=M(e),p(n).bigHour=!0}),v(\"hmm\",function(e,t,n){var s=e.length-2;t[O]=M(e.substr(0,s)),t[b]=M(e.substr(s)),p(n).bigHour=!0}),v(\"hmmss\",function(e,t,n){var s=e.length-4,i=e.length-2;t[O]=M(e.substr(0,s)),t[b]=M(e.substr(s,2)),t[T]=M(e.substr(i)),p(n).bigHour=!0}),v(\"Hmm\",function(e,t,n){var s=e.length-2;t[O]=M(e.substr(0,s)),t[b]=M(e.substr(s))}),v(\"Hmmss\",function(e,t,n){var s=e.length-4,i=e.length-2;t[O]=M(e.substr(0,s)),t[b]=M(e.substr(s,2)),t[T]=M(e.substr(i))});i=Re(\"Hours\",!0);var ot,ut={calendar:{sameDay:\"[Today at] LT\",nextDay:\"[Tomorrow at] LT\",nextWeek:\"dddd [at] LT\",lastDay:\"[Yesterday at] LT\",lastWeek:\"[Last] dddd [at] LT\",sameElse:\"L\"},longDateFormat:{LTS:\"h:mm:ss A\",LT:\"h:mm A\",L:\"MM/DD/YYYY\",LL:\"MMMM D, YYYY\",LLL:\"MMMM D, YYYY h:mm A\",LLLL:\"dddd, MMMM D, YYYY h:mm A\"},invalidDate:\"Invalid date\",ordinal:\"%d\",dayOfMonthOrdinalParse:/\\d{1,2}/,relativeTime:{future:\"in %s\",past:\"%s ago\",s:\"a few seconds\",ss:\"%d seconds\",m:\"a minute\",mm:\"%d minutes\",h:\"an hour\",hh:\"%d hours\",d:\"a day\",dd:\"%d days\",w:\"a week\",ww:\"%d weeks\",M:\"a month\",MM:\"%d months\",y:\"a year\",yy:\"%d years\"},months:Fe,monthsShort:Le,week:{dow:0,doy:6},weekdays:Qe,weekdaysMin:Ke,weekdaysShort:Xe,meridiemParse:/[ap]\\.?m?\\.?/i},W={},lt={};function dt(e){return e&&e.toLowerCase().replace(\"_\",\"-\")}function ht(e){for(var t,n,s,i,r=0;r=t&&function(e,t){for(var n=Math.min(e.length,t.length),s=0;s=t-1)break;t--}r++}return ot}function ct(t){var e,n;if(void 0===W[t]&&\"undefined\"!=typeof module&&module&&module.exports&&(n=t)&&n.match(\"^[^/\\\\\\\\]*$\"))try{e=ot._abbr,require(\"./locale/\"+t),ft(e)}catch(e){W[t]=null}return W[t]}function ft(e,t){return e&&((t=g(t)?P(e):mt(e,t))?ot=t:\"undefined\"!=typeof console&&console.warn&&console.warn(\"Locale \"+e+\" not found. Did you forget to load it?\")),ot._abbr}function mt(e,t){if(null===t)return delete W[e],null;var n,s=ut;if(t.abbr=e,null!=W[e])Q(\"defineLocaleOverride\",\"use moment.updateLocale(localeName, config) to change an existing locale. moment.defineLocale(localeName, config) should only be used for creating a new locale See http://momentjs.com/guides/#/warnings/define-locale/ for more info.\"),s=W[e]._config;else if(null!=t.parentLocale)if(null!=W[t.parentLocale])s=W[t.parentLocale]._config;else{if(null==(n=ct(t.parentLocale)))return lt[t.parentLocale]||(lt[t.parentLocale]=[]),lt[t.parentLocale].push({name:e,config:t}),null;s=n._config}return W[e]=new K(X(s,t)),lt[e]&<[e].forEach(function(e){mt(e.name,e.config)}),ft(e),W[e]}function P(e){var t;if(!(e=e&&e._locale&&e._locale._abbr?e._locale._abbr:e))return ot;if(!y(e)){if(t=ct(e))return t;e=[e]}return ht(e)}function _t(e){var t=e._a;return t&&-2===p(e).overflow&&(t=t[Y]<0||11He(t[D],t[Y])?S:t[O]<0||24N(r,u,l)?p(s)._overflowWeeks=!0:null!=d?p(s)._overflowWeekday=!0:(h=$e(r,a,o,u,l),s._a[D]=h.year,s._dayOfYear=h.dayOfYear)),null!=e._dayOfYear&&(i=bt(e._a[D],n[D]),(e._dayOfYear>We(i)||0===e._dayOfYear)&&(p(e)._overflowDayOfYear=!0),d=ze(i,0,e._dayOfYear),e._a[Y]=d.getUTCMonth(),e._a[S]=d.getUTCDate()),t=0;t<3&&null==e._a[t];++t)e._a[t]=c[t]=n[t];for(;t<7;t++)e._a[t]=c[t]=null==e._a[t]?2===t?1:0:e._a[t];24===e._a[O]&&0===e._a[b]&&0===e._a[T]&&0===e._a[Te]&&(e._nextDay=!0,e._a[O]=0),e._d=(e._useUTC?ze:Ze).apply(null,c),r=e._useUTC?e._d.getUTCDay():e._d.getDay(),null!=e._tzm&&e._d.setUTCMinutes(e._d.getUTCMinutes()-e._tzm),e._nextDay&&(e._a[O]=24),e._w&&void 0!==e._w.d&&e._w.d!==r&&(p(e).weekdayMismatch=!0)}}function xt(e){if(e._f===_.ISO_8601)Yt(e);else if(e._f===_.RFC_2822)Ot(e);else{e._a=[],p(e).empty=!0;for(var t,n,s,i,r,a=\"\"+e._i,o=a.length,u=0,l=ae(e._f,e._locale).match(te)||[],d=l.length,h=0;he.valueOf():e.valueOf()\"}),u.toJSON=function(){return this.isValid()?this.toISOString():null},u.toString=function(){return this.clone().locale(\"en\").format(\"ddd MMM DD YYYY HH:mm:ss [GMT]ZZ\")},u.unix=function(){return Math.floor(this.valueOf()/1e3)},u.valueOf=function(){return this._d.valueOf()-6e4*(this._offset||0)},u.creationData=function(){return{input:this._i,format:this._f,locale:this._locale,isUTC:this._isUTC,strict:this._strict}},u.eraName=function(){for(var e,t=this.localeData().eras(),n=0,s=t.length;nthis.clone().month(0).utcOffset()||this.utcOffset()>this.clone().month(5).utcOffset()},u.isLocal=function(){return!!this.isValid()&&!this._isUTC},u.isUtcOffset=function(){return!!this.isValid()&&this._isUTC},u.isUtc=At,u.isUTC=At,u.zoneAbbr=function(){return this._isUTC?\"UTC\":\"\"},u.zoneName=function(){return this._isUTC?\"Coordinated Universal Time\":\"\"},u.dates=e(\"dates accessor is deprecated. Use date instead.\",ge),u.months=e(\"months accessor is deprecated. Use month instead\",Ie),u.years=e(\"years accessor is deprecated. Use year instead\",Pe),u.zone=e(\"moment().zone is deprecated, use moment().utcOffset instead. http://momentjs.com/guides/#/warnings/zone/\",function(e,t){return null!=e?(this.utcOffset(e=\"string\"!=typeof e?-e:e,t),this):-this.utcOffset()}),u.isDSTShifted=e(\"isDSTShifted is deprecated. See http://momentjs.com/guides/#/warnings/dst-shifted/ for more information\",function(){var e,t;return g(this._isDSTShifted)&&(q(e={},this),(e=Nt(e))._a?(t=(e._isUTC?l:R)(e._a),this._isDSTShifted=this.isValid()&&0= 16; if (\"objectFit\" in document.documentElement.style != !1 && !e) return void (window.objectFitPolyfill = function () { return !1 }); var i = function (t) { var e = window.getComputedStyle(t, null), i = e.getPropertyValue(\"position\"), n = e.getPropertyValue(\"overflow\"), o = e.getPropertyValue(\"display\"); i && \"static\" !== i || (t.style.position = \"relative\"), \"hidden\" !== n && (t.style.overflow = \"hidden\"), o && \"inline\" !== o || (t.style.display = \"block\"), 0 === t.clientHeight && (t.style.height = \"100%\"), -1 === t.className.indexOf(\"object-fit-polyfill\") && (t.className = t.className + \" object-fit-polyfill\") }, n = function (t) { var e = window.getComputedStyle(t, null), i = { \"max-width\": \"none\", \"max-height\": \"none\", \"min-width\": \"0px\", \"min-height\": \"0px\", top: \"auto\", right: \"auto\", bottom: \"auto\", left: \"auto\", \"margin-top\": \"0px\", \"margin-right\": \"0px\", \"margin-bottom\": \"0px\", \"margin-left\": \"0px\" }; for (var n in i) { e.getPropertyValue(n) !== i[n] && (t.style[n] = i[n]) } }, o = function (t, e, i) { var n, o, l, a, d; if (i = i.split(\" \"), i.length < 2 && (i[1] = i[0]), \"x\" === t) n = i[0], o = i[1], l = \"left\", a = \"right\", d = e.clientWidth; else { if (\"y\" !== t) return; n = i[1], o = i[0], l = \"top\", a = \"bottom\", d = e.clientHeight } return n === l || o === l ? void (e.style[l] = \"0\") : n === a || o === a ? void (e.style[a] = \"0\") : \"center\" === n || \"50%\" === n ? (e.style[l] = \"50%\", void (e.style[\"margin-\" + l] = d / -2 + \"px\")) : n.indexOf(\"%\") >= 0 ? (n = parseInt(n), void (n < 50 ? (e.style[l] = n + \"%\", e.style[\"margin-\" + l] = d * (n / -100) + \"px\") : (n = 100 - n, e.style[a] = n + \"%\", e.style[\"margin-\" + a] = d * (n / -100) + \"px\"))) : void (e.style[l] = n) }, l = function (t) { var e = t.dataset ? t.dataset.objectFit : t.getAttribute(\"data-object-fit\"), l = t.dataset ? t.dataset.objectPosition : t.getAttribute(\"data-object-position\"); e = e || \"cover\", l = l || \"50% 50%\"; var a = t.parentNode; i(a), n(t), t.style.position = \"absolute\", t.style.height = \"100%\", t.style.width = \"auto\", \"scale-down\" === e && (t.style.height = \"auto\", t.clientWidth < a.clientWidth && t.clientHeight < a.clientHeight ? (o(\"x\", t, l), o(\"y\", t, l)) : (e = \"contain\", t.style.height = \"100%\")), \"none\" === e ? (t.style.width = \"auto\", t.style.height = \"auto\", o(\"x\", t, l), o(\"y\", t, l)) : \"cover\" === e && t.clientWidth > a.clientWidth || \"contain\" === e && t.clientWidth < a.clientWidth ? (t.style.top = \"0\", t.style.marginTop = \"0\", o(\"x\", t, l)) : \"scale-down\" !== e && (t.style.width = \"100%\", t.style.height = \"auto\", t.style.left = \"0\", t.style.marginLeft = \"0\", o(\"y\", t, l)) }, a = function (t) { if (void 0 === t) t = document.querySelectorAll(\"[data-object-fit]\"); else if (t && t.nodeName) t = [t]; else { if (\"object\" != typeof t || !t.length || !t[0].nodeName) return !1; t = t } for (var i = 0; i < t.length; i++)if (t[i].nodeName) { var n = t[i].nodeName.toLowerCase(); \"img\" !== n || e ? \"video\" === n && (t[i].readyState > 0 ? l(t[i]) : t[i].addEventListener(\"loadedmetadata\", function () { l(this) })) : t[i].complete ? l(t[i]) : t[i].addEventListener(\"load\", function () { l(this) }) } return !0 }; document.addEventListener(\"DOMContentLoaded\", function () { a() }), window.addEventListener(\"resize\", function () { a() }), window.objectFitPolyfill = a } }();","/**\r\n * Owl Carousel v2.2.1\r\n * Copyright 2013-2017 David Deutsch\r\n * Licensed under ()\r\n */\r\n/**\r\n * Owl carousel\r\n * @version 2.1.6\r\n * @author Bartosz Wojciechowski\r\n * @author David Deutsch\r\n * @license The MIT License (MIT)\r\n * @todo Lazy Load Icon\r\n * @todo prevent animationend bubling\r\n * @todo itemsScaleUp\r\n * @todo Test Zepto\r\n * @todo stagePadding calculate wrong active classes\r\n */\r\n;(function($, window, document, undefined) {\r\n\r\n\t/**\r\n\t * Creates a carousel.\r\n\t * @class The Owl Carousel.\r\n\t * @public\r\n\t * @param {HTMLElement|jQuery} element - The element to create the carousel for.\r\n\t * @param {Object} [options] - The options\r\n\t */\r\n\tfunction Owl(element, options) {\r\n\r\n\t\t/**\r\n\t\t * Current settings for the carousel.\r\n\t\t * @public\r\n\t\t */\r\n\t\tthis.settings = null;\r\n\r\n\t\t/**\r\n\t\t * Current options set by the caller including defaults.\r\n\t\t * @public\r\n\t\t */\r\n\t\tthis.options = $.extend({}, Owl.Defaults, options);\r\n\r\n\t\t/**\r\n\t\t * Plugin element.\r\n\t\t * @public\r\n\t\t */\r\n\t\tthis.$element = $(element);\r\n\r\n\t\t/**\r\n\t\t * Proxied event handlers.\r\n\t\t * @protected\r\n\t\t */\r\n\t\tthis._handlers = {};\r\n\r\n\t\t/**\r\n\t\t * References to the running plugins of this carousel.\r\n\t\t * @protected\r\n\t\t */\r\n\t\tthis._plugins = {};\r\n\r\n\t\t/**\r\n\t\t * Currently suppressed events to prevent them from beeing retriggered.\r\n\t\t * @protected\r\n\t\t */\r\n\t\tthis._supress = {};\r\n\r\n\t\t/**\r\n\t\t * Absolute current position.\r\n\t\t * @protected\r\n\t\t */\r\n\t\tthis._current = null;\r\n\r\n\t\t/**\r\n\t\t * Animation speed in milliseconds.\r\n\t\t * @protected\r\n\t\t */\r\n\t\tthis._speed = null;\r\n\r\n\t\t/**\r\n\t\t * Coordinates of all items in pixel.\r\n\t\t * @todo The name of this member is missleading.\r\n\t\t * @protected\r\n\t\t */\r\n\t\tthis._coordinates = [];\r\n\r\n\t\t/**\r\n\t\t * Current breakpoint.\r\n\t\t * @todo Real media queries would be nice.\r\n\t\t * @protected\r\n\t\t */\r\n\t\tthis._breakpoint = null;\r\n\r\n\t\t/**\r\n\t\t * Current width of the plugin element.\r\n\t\t */\r\n\t\tthis._width = null;\r\n\r\n\t\t/**\r\n\t\t * All real items.\r\n\t\t * @protected\r\n\t\t */\r\n\t\tthis._items = [];\r\n\r\n\t\t/**\r\n\t\t * All cloned items.\r\n\t\t * @protected\r\n\t\t */\r\n\t\tthis._clones = [];\r\n\r\n\t\t/**\r\n\t\t * Merge values of all items.\r\n\t\t * @todo Maybe this could be part of a plugin.\r\n\t\t * @protected\r\n\t\t */\r\n\t\tthis._mergers = [];\r\n\r\n\t\t/**\r\n\t\t * Widths of all items.\r\n\t\t */\r\n\t\tthis._widths = [];\r\n\r\n\t\t/**\r\n\t\t * Invalidated parts within the update process.\r\n\t\t * @protected\r\n\t\t */\r\n\t\tthis._invalidated = {};\r\n\r\n\t\t/**\r\n\t\t * Ordered list of workers for the update process.\r\n\t\t * @protected\r\n\t\t */\r\n\t\tthis._pipe = [];\r\n\r\n\t\t/**\r\n\t\t * Current state information for the drag operation.\r\n\t\t * @todo #261\r\n\t\t * @protected\r\n\t\t */\r\n\t\tthis._drag = {\r\n\t\t\ttime: null,\r\n\t\t\ttarget: null,\r\n\t\t\tpointer: null,\r\n\t\t\tstage: {\r\n\t\t\t\tstart: null,\r\n\t\t\t\tcurrent: null\r\n\t\t\t},\r\n\t\t\tdirection: null\r\n\t\t};\r\n\r\n\t\t/**\r\n\t\t * Current state information and their tags.\r\n\t\t * @type {Object}\r\n\t\t * @protected\r\n\t\t */\r\n\t\tthis._states = {\r\n\t\t\tcurrent: {},\r\n\t\t\ttags: {\r\n\t\t\t\t'initializing': [ 'busy' ],\r\n\t\t\t\t'animating': [ 'busy' ],\r\n\t\t\t\t'dragging': [ 'interacting' ]\r\n\t\t\t}\r\n\t\t};\r\n\r\n\t\t$.each([ 'onResize', 'onThrottledResize' ], $.proxy(function(i, handler) {\r\n\t\t\tthis._handlers[handler] = $.proxy(this[handler], this);\r\n\t\t}, this));\r\n\r\n\t\t$.each(Owl.Plugins, $.proxy(function(key, plugin) {\r\n\t\t\tthis._plugins[key.charAt(0).toLowerCase() + key.slice(1)]\r\n\t\t\t\t= new plugin(this);\r\n\t\t}, this));\r\n\r\n\t\t$.each(Owl.Workers, $.proxy(function(priority, worker) {\r\n\t\t\tthis._pipe.push({\r\n\t\t\t\t'filter': worker.filter,\r\n\t\t\t\t'run': $.proxy(worker.run, this)\r\n\t\t\t});\r\n\t\t}, this));\r\n\r\n\t\tthis.setup();\r\n\t\tthis.initialize();\r\n\t}\r\n\r\n\t/**\r\n\t * Default options for the carousel.\r\n\t * @public\r\n\t */\r\n\tOwl.Defaults = {\r\n\t\titems: 3,\r\n\t\tloop: false,\r\n\t\tcenter: false,\r\n\t\trewind: false,\r\n\r\n\t\tmouseDrag: true,\r\n\t\ttouchDrag: true,\r\n\t\tpullDrag: true,\r\n\t\tfreeDrag: false,\r\n\r\n\t\tmargin: 0,\r\n\t\tstagePadding: 0,\r\n\r\n\t\tmerge: false,\r\n\t\tmergeFit: true,\r\n\t\tautoWidth: false,\r\n\r\n\t\tstartPosition: 0,\r\n\t\trtl: false,\r\n\r\n\t\tsmartSpeed: 250,\r\n\t\tfluidSpeed: false,\r\n\t\tdragEndSpeed: false,\r\n\r\n\t\tresponsive: {},\r\n\t\tresponsiveRefreshRate: 200,\r\n\t\tresponsiveBaseElement: window,\r\n\r\n\t\tfallbackEasing: 'swing',\r\n\r\n\t\tinfo: false,\r\n\r\n\t\tnestedItemSelector: false,\r\n\t\titemElement: 'div',\r\n\t\tstageElement: 'div',\r\n\r\n\t\trefreshClass: 'owl-refresh',\r\n\t\tloadedClass: 'owl-loaded',\r\n\t\tloadingClass: 'owl-loading',\r\n\t\trtlClass: 'owl-rtl',\r\n\t\tresponsiveClass: 'owl-responsive',\r\n\t\tdragClass: 'owl-drag',\r\n\t\titemClass: 'owl-item',\r\n\t\tstageClass: 'owl-stage',\r\n\t\tstageOuterClass: 'owl-stage-outer',\r\n\t\tgrabClass: 'owl-grab'\r\n\t};\r\n\r\n\t/**\r\n\t * Enumeration for width.\r\n\t * @public\r\n\t * @readonly\r\n\t * @enum {String}\r\n\t */\r\n\tOwl.Width = {\r\n\t\tDefault: 'default',\r\n\t\tInner: 'inner',\r\n\t\tOuter: 'outer'\r\n\t};\r\n\r\n\t/**\r\n\t * Enumeration for types.\r\n\t * @public\r\n\t * @readonly\r\n\t * @enum {String}\r\n\t */\r\n\tOwl.Type = {\r\n\t\tEvent: 'event',\r\n\t\tState: 'state'\r\n\t};\r\n\r\n\t/**\r\n\t * Contains all registered plugins.\r\n\t * @public\r\n\t */\r\n\tOwl.Plugins = {};\r\n\r\n\t/**\r\n\t * List of workers involved in the update process.\r\n\t */\r\n\tOwl.Workers = [ {\r\n\t\tfilter: [ 'width', 'settings' ],\r\n\t\trun: function() {\r\n\t\t\tthis._width = this.$element.width();\r\n\t\t}\r\n\t}, {\r\n\t\tfilter: [ 'width', 'items', 'settings' ],\r\n\t\trun: function(cache) {\r\n\t\t\tcache.current = this._items && this._items[this.relative(this._current)];\r\n\t\t}\r\n\t}, {\r\n\t\tfilter: [ 'items', 'settings' ],\r\n\t\trun: function() {\r\n\t\t\tthis.$stage.children('.cloned').remove();\r\n\t\t}\r\n\t}, {\r\n\t\tfilter: [ 'width', 'items', 'settings' ],\r\n\t\trun: function(cache) {\r\n\t\t\tvar margin = this.settings.margin || '',\r\n\t\t\t\tgrid = !this.settings.autoWidth,\r\n\t\t\t\trtl = this.settings.rtl,\r\n\t\t\t\tcss = {\r\n\t\t\t\t\t'width': 'auto',\r\n\t\t\t\t\t'margin-left': rtl ? margin : '',\r\n\t\t\t\t\t'margin-right': rtl ? '' : margin\r\n\t\t\t\t};\r\n\r\n\t\t\t!grid && this.$stage.children().css(css);\r\n\r\n\t\t\tcache.css = css;\r\n\t\t}\r\n\t}, {\r\n\t\tfilter: [ 'width', 'items', 'settings' ],\r\n\t\trun: function(cache) {\r\n\t\t\tvar width = (this.width() / this.settings.items).toFixed(3) - this.settings.margin,\r\n\t\t\t\tmerge = null,\r\n\t\t\t\titerator = this._items.length,\r\n\t\t\t\tgrid = !this.settings.autoWidth,\r\n\t\t\t\twidths = [];\r\n\r\n\t\t\tcache.items = {\r\n\t\t\t\tmerge: false,\r\n\t\t\t\twidth: width\r\n\t\t\t};\r\n\r\n\t\t\twhile (iterator--) {\r\n\t\t\t\tmerge = this._mergers[iterator];\r\n\t\t\t\tmerge = this.settings.mergeFit && Math.min(merge, this.settings.items) || merge;\r\n\r\n\t\t\t\tcache.items.merge = merge > 1 || cache.items.merge;\r\n\r\n\t\t\t\twidths[iterator] = !grid ? this._items[iterator].width() : width * merge;\r\n\t\t\t}\r\n\r\n\t\t\tthis._widths = widths;\r\n\t\t}\r\n\t}, {\r\n\t\tfilter: [ 'items', 'settings' ],\r\n\t\trun: function() {\r\n\t\t\tvar clones = [],\r\n\t\t\t\titems = this._items,\r\n\t\t\t\tsettings = this.settings,\r\n\t\t\t\t// TODO: Should be computed from number of min width items in stage\r\n\t\t\t\tview = Math.max(settings.items * 2, 4),\r\n\t\t\t\tsize = Math.ceil(items.length / 2) * 2,\r\n\t\t\t\trepeat = settings.loop && items.length ? settings.rewind ? view : Math.max(view, size) : 0,\r\n\t\t\t\tappend = '',\r\n\t\t\t\tprepend = '';\r\n\r\n\t\t\trepeat /= 2;\r\n\r\n\t\t\twhile (repeat--) {\r\n\t\t\t\t// Switch to only using appended clones\r\n\t\t\t\tclones.push(this.normalize(clones.length / 2, true));\r\n\t\t\t\tappend = append + items[clones[clones.length - 1]][0].outerHTML;\r\n\t\t\t\tclones.push(this.normalize(items.length - 1 - (clones.length - 1) / 2, true));\r\n\t\t\t\tprepend = items[clones[clones.length - 1]][0].outerHTML + prepend;\r\n\t\t\t}\r\n\r\n\t\t\tthis._clones = clones;\r\n\r\n\t\t\t$(append).addClass('cloned').appendTo(this.$stage);\r\n\t\t\t$(prepend).addClass('cloned').prependTo(this.$stage);\r\n\t\t}\r\n\t}, {\r\n\t\tfilter: [ 'width', 'items', 'settings' ],\r\n\t\trun: function() {\r\n\t\t\tvar rtl = this.settings.rtl ? 1 : -1,\r\n\t\t\t\tsize = this._clones.length + this._items.length,\r\n\t\t\t\titerator = -1,\r\n\t\t\t\tprevious = 0,\r\n\t\t\t\tcurrent = 0,\r\n\t\t\t\tcoordinates = [];\r\n\r\n\t\t\twhile (++iterator < size) {\r\n\t\t\t\tprevious = coordinates[iterator - 1] || 0;\r\n\t\t\t\tcurrent = this._widths[this.relative(iterator)] + this.settings.margin;\r\n\t\t\t\tcoordinates.push(previous + current * rtl);\r\n\t\t\t}\r\n\r\n\t\t\tthis._coordinates = coordinates;\r\n\t\t}\r\n\t}, {\r\n\t\tfilter: [ 'width', 'items', 'settings' ],\r\n\t\trun: function() {\r\n\t\t\tvar padding = this.settings.stagePadding,\r\n\t\t\t\tcoordinates = this._coordinates,\r\n\t\t\t\tcss = {\r\n\t\t\t\t\t'width': Math.ceil(Math.abs(coordinates[coordinates.length - 1])) + padding * 2,\r\n\t\t\t\t\t'padding-left': padding || '',\r\n\t\t\t\t\t'padding-right': padding || ''\r\n\t\t\t\t};\r\n\r\n\t\t\tthis.$stage.css(css);\r\n\t\t}\r\n\t}, {\r\n\t\tfilter: [ 'width', 'items', 'settings' ],\r\n\t\trun: function(cache) {\r\n\t\t\tvar iterator = this._coordinates.length,\r\n\t\t\t\tgrid = !this.settings.autoWidth,\r\n\t\t\t\titems = this.$stage.children();\r\n\r\n\t\t\tif (grid && cache.items.merge) {\r\n\t\t\t\twhile (iterator--) {\r\n\t\t\t\t\tcache.css.width = this._widths[this.relative(iterator)];\r\n\t\t\t\t\titems.eq(iterator).css(cache.css);\r\n\t\t\t\t}\r\n\t\t\t} else if (grid) {\r\n\t\t\t\tcache.css.width = cache.items.width;\r\n\t\t\t\titems.css(cache.css);\r\n\t\t\t}\r\n\t\t}\r\n\t}, {\r\n\t\tfilter: [ 'items' ],\r\n\t\trun: function() {\r\n\t\t\tthis._coordinates.length < 1 && this.$stage.removeAttr('style');\r\n\t\t}\r\n\t}, {\r\n\t\tfilter: [ 'width', 'items', 'settings' ],\r\n\t\trun: function(cache) {\r\n\t\t\tcache.current = cache.current ? this.$stage.children().index(cache.current) : 0;\r\n\t\t\tcache.current = Math.max(this.minimum(), Math.min(this.maximum(), cache.current));\r\n\t\t\tthis.reset(cache.current);\r\n\t\t}\r\n\t}, {\r\n\t\tfilter: [ 'position' ],\r\n\t\trun: function() {\r\n\t\t\tthis.animate(this.coordinates(this._current));\r\n\t\t}\r\n\t}, {\r\n\t\tfilter: [ 'width', 'position', 'items', 'settings' ],\r\n\t\trun: function() {\r\n\t\t\tvar rtl = this.settings.rtl ? 1 : -1,\r\n\t\t\t\tpadding = this.settings.stagePadding * 2,\r\n\t\t\t\tbegin = this.coordinates(this.current()) + padding,\r\n\t\t\t\tend = begin + this.width() * rtl,\r\n\t\t\t\tinner, outer, matches = [], i, n;\r\n\r\n\t\t\tfor (i = 0, n = this._coordinates.length; i < n; i++) {\r\n\t\t\t\tinner = this._coordinates[i - 1] || 0;\r\n\t\t\t\touter = Math.abs(this._coordinates[i]) + padding * rtl;\r\n\r\n\t\t\t\tif ((this.op(inner, '<=', begin) && (this.op(inner, '>', end)))\r\n\t\t\t\t\t|| (this.op(outer, '<', begin) && this.op(outer, '>', end))) {\r\n\t\t\t\t\tmatches.push(i);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tthis.$stage.children('.active').removeClass('active');\r\n\t\t\tthis.$stage.children(':eq(' + matches.join('), :eq(') + ')').addClass('active');\r\n\r\n\t\t\tif (this.settings.center) {\r\n\t\t\t\tthis.$stage.children('.center').removeClass('center');\r\n\t\t\t\tthis.$stage.children().eq(this.current()).addClass('center');\r\n\t\t\t}\r\n\t\t}\r\n\t} ];\r\n\r\n\t/**\r\n\t * Initializes the carousel.\r\n\t * @protected\r\n\t */\r\n\tOwl.prototype.initialize = function() {\r\n\t\tthis.enter('initializing');\r\n\t\tthis.trigger('initialize');\r\n\r\n\t\tthis.$element.toggleClass(this.settings.rtlClass, this.settings.rtl);\r\n\r\n\t\tif (this.settings.autoWidth && !this.is('pre-loading')) {\r\n\t\t\tvar imgs, nestedSelector, width;\r\n\t\t\timgs = this.$element.find('img');\r\n\t\t\tnestedSelector = this.settings.nestedItemSelector ? '.' + this.settings.nestedItemSelector : undefined;\r\n\t\t\twidth = this.$element.children(nestedSelector).width();\r\n\r\n\t\t\tif (imgs.length && width <= 0) {\r\n\t\t\t\tthis.preloadAutoWidthImages(imgs);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tthis.$element.addClass(this.options.loadingClass);\r\n\r\n\t\t// create stage\r\n\t\tthis.$stage = $('<' + this.settings.stageElement + ' class=\"' + this.settings.stageClass + '\"/>')\r\n\t\t\t.wrap('
');\r\n\r\n\t\t// append stage\r\n\t\tthis.$element.append(this.$stage.parent());\r\n\r\n\t\t// append content\r\n\t\tthis.replace(this.$element.children().not(this.$stage.parent()));\r\n\r\n\t\t// check visibility\r\n\t\tif (this.$element.is(':visible')) {\r\n\t\t\t// update view\r\n\t\t\tthis.refresh();\r\n\t\t} else {\r\n\t\t\t// invalidate width\r\n\t\t\tthis.invalidate('width');\r\n\t\t}\r\n\r\n\t\tthis.$element\r\n\t\t\t.removeClass(this.options.loadingClass)\r\n\t\t\t.addClass(this.options.loadedClass);\r\n\r\n\t\t// register event handlers\r\n\t\tthis.registerEventHandlers();\r\n\r\n\t\tthis.leave('initializing');\r\n\t\tthis.trigger('initialized');\r\n\t};\r\n\r\n\t/**\r\n\t * Setups the current settings.\r\n\t * @todo Remove responsive classes. Why should adaptive designs be brought into IE8?\r\n\t * @todo Support for media queries by using `matchMedia` would be nice.\r\n\t * @public\r\n\t */\r\n\tOwl.prototype.setup = function() {\r\n\t\tvar viewport = this.viewport(),\r\n\t\t\toverwrites = this.options.responsive,\r\n\t\t\tmatch = -1,\r\n\t\t\tsettings = null;\r\n\r\n\t\tif (!overwrites) {\r\n\t\t\tsettings = $.extend({}, this.options);\r\n\t\t} else {\r\n\t\t\t$.each(overwrites, function(breakpoint) {\r\n\t\t\t\tif (breakpoint <= viewport && breakpoint > match) {\r\n\t\t\t\t\tmatch = Number(breakpoint);\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\t\tsettings = $.extend({}, this.options, overwrites[match]);\r\n\t\t\tif (typeof settings.stagePadding === 'function') {\r\n\t\t\t\tsettings.stagePadding = settings.stagePadding();\r\n\t\t\t}\r\n\t\t\tdelete settings.responsive;\r\n\r\n\t\t\t// responsive class\r\n\t\t\tif (settings.responsiveClass) {\r\n\t\t\t\tthis.$element.attr('class',\r\n\t\t\t\t\tthis.$element.attr('class').replace(new RegExp('(' + this.options.responsiveClass + '-)\\\\S+\\\\s', 'g'), '$1' + match)\r\n\t\t\t\t);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tthis.trigger('change', { property: { name: 'settings', value: settings } });\r\n\t\tthis._breakpoint = match;\r\n\t\tthis.settings = settings;\r\n\t\tthis.invalidate('settings');\r\n\t\tthis.trigger('changed', { property: { name: 'settings', value: this.settings } });\r\n\t};\r\n\r\n\t/**\r\n\t * Updates option logic if necessery.\r\n\t * @protected\r\n\t */\r\n\tOwl.prototype.optionsLogic = function() {\r\n\t\tif (this.settings.autoWidth) {\r\n\t\t\tthis.settings.stagePadding = false;\r\n\t\t\tthis.settings.merge = false;\r\n\t\t}\r\n\t};\r\n\r\n\t/**\r\n\t * Prepares an item before add.\r\n\t * @todo Rename event parameter `content` to `item`.\r\n\t * @protected\r\n\t * @returns {jQuery|HTMLElement} - The item container.\r\n\t */\r\n\tOwl.prototype.prepare = function(item) {\r\n\t\tvar event = this.trigger('prepare', { content: item });\r\n\r\n\t\tif (!event.data) {\r\n\t\t\tevent.data = $('<' + this.settings.itemElement + '/>')\r\n\t\t\t\t.addClass(this.options.itemClass).append(item)\r\n\t\t}\r\n\r\n\t\tthis.trigger('prepared', { content: event.data });\r\n\r\n\t\treturn event.data;\r\n\t};\r\n\r\n\t/**\r\n\t * Updates the view.\r\n\t * @public\r\n\t */\r\n\tOwl.prototype.update = function() {\r\n\t\tvar i = 0,\r\n\t\t\tn = this._pipe.length,\r\n\t\t\tfilter = $.proxy(function(p) { return this[p] }, this._invalidated),\r\n\t\t\tcache = {};\r\n\r\n\t\twhile (i < n) {\r\n\t\t\tif (this._invalidated.all || $.grep(this._pipe[i].filter, filter).length > 0) {\r\n\t\t\t\tthis._pipe[i].run(cache);\r\n\t\t\t}\r\n\t\t\ti++;\r\n\t\t}\r\n\r\n\t\tthis._invalidated = {};\r\n\r\n\t\t!this.is('valid') && this.enter('valid');\r\n\t};\r\n\r\n\t/**\r\n\t * Gets the width of the view.\r\n\t * @public\r\n\t * @param {Owl.Width} [dimension=Owl.Width.Default] - The dimension to return.\r\n\t * @returns {Number} - The width of the view in pixel.\r\n\t */\r\n\tOwl.prototype.width = function(dimension) {\r\n\t\tdimension = dimension || Owl.Width.Default;\r\n\t\tswitch (dimension) {\r\n\t\t\tcase Owl.Width.Inner:\r\n\t\t\tcase Owl.Width.Outer:\r\n\t\t\t\treturn this._width;\r\n\t\t\tdefault:\r\n\t\t\t\treturn this._width - this.settings.stagePadding * 2 + this.settings.margin;\r\n\t\t}\r\n\t};\r\n\r\n\t/**\r\n\t * Refreshes the carousel primarily for adaptive purposes.\r\n\t * @public\r\n\t */\r\n\tOwl.prototype.refresh = function() {\r\n\t\tthis.enter('refreshing');\r\n\t\tthis.trigger('refresh');\r\n\r\n\t\tthis.setup();\r\n\r\n\t\tthis.optionsLogic();\r\n\r\n\t\tthis.$element.addClass(this.options.refreshClass);\r\n\r\n\t\tthis.update();\r\n\r\n\t\tthis.$element.removeClass(this.options.refreshClass);\r\n\r\n\t\tthis.leave('refreshing');\r\n\t\tthis.trigger('refreshed');\r\n\t};\r\n\r\n\t/**\r\n\t * Checks window `resize` event.\r\n\t * @protected\r\n\t */\r\n\tOwl.prototype.onThrottledResize = function() {\r\n\t\twindow.clearTimeout(this.resizeTimer);\r\n\t\tthis.resizeTimer = window.setTimeout(this._handlers.onResize, this.settings.responsiveRefreshRate);\r\n\t};\r\n\r\n\t/**\r\n\t * Checks window `resize` event.\r\n\t * @protected\r\n\t */\r\n\tOwl.prototype.onResize = function() {\r\n\t\tif (!this._items.length) {\r\n\t\t\treturn false;\r\n\t\t}\r\n\r\n\t\tif (this._width === this.$element.width()) {\r\n\t\t\treturn false;\r\n\t\t}\r\n\r\n\t\tif (!this.$element.is(':visible')) {\r\n\t\t\treturn false;\r\n\t\t}\r\n\r\n\t\tthis.enter('resizing');\r\n\r\n\t\tif (this.trigger('resize').isDefaultPrevented()) {\r\n\t\t\tthis.leave('resizing');\r\n\t\t\treturn false;\r\n\t\t}\r\n\r\n\t\tthis.invalidate('width');\r\n\r\n\t\tthis.refresh();\r\n\r\n\t\tthis.leave('resizing');\r\n\t\tthis.trigger('resized');\r\n\t};\r\n\r\n\t/**\r\n\t * Registers event handlers.\r\n\t * @todo Check `msPointerEnabled`\r\n\t * @todo #261\r\n\t * @protected\r\n\t */\r\n\tOwl.prototype.registerEventHandlers = function() {\r\n\t\tif ($.support.transition) {\r\n\t\t\tthis.$stage.on($.support.transition.end + '.owl.core', $.proxy(this.onTransitionEnd, this));\r\n\t\t}\r\n\r\n\t\tif (this.settings.responsive !== false) {\r\n\t\t\tthis.on(window, 'resize', this._handlers.onThrottledResize);\r\n\t\t}\r\n\r\n\t\tif (this.settings.mouseDrag) {\r\n\t\t\tthis.$element.addClass(this.options.dragClass);\r\n\t\t\tthis.$stage.on('mousedown.owl.core', $.proxy(this.onDragStart, this));\r\n\t\t\tthis.$stage.on('dragstart.owl.core selectstart.owl.core', function() { return false });\r\n\t\t}\r\n\r\n\t\tif (this.settings.touchDrag){\r\n\t\t\tthis.$stage.on('touchstart.owl.core', $.proxy(this.onDragStart, this));\r\n\t\t\tthis.$stage.on('touchcancel.owl.core', $.proxy(this.onDragEnd, this));\r\n\t\t}\r\n\t};\r\n\r\n\t/**\r\n\t * Handles `touchstart` and `mousedown` events.\r\n\t * @todo Horizontal swipe threshold as option\r\n\t * @todo #261\r\n\t * @protected\r\n\t * @param {Event} event - The event arguments.\r\n\t */\r\n\tOwl.prototype.onDragStart = function(event) {\r\n\t\tvar stage = null;\r\n\r\n\t\tif (event.which === 3) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tif ($.support.transform) {\r\n\t\t\tstage = this.$stage.css('transform').replace(/.*\\(|\\)| /g, '').split(',');\r\n\t\t\tstage = {\r\n\t\t\t\tx: stage[stage.length === 16 ? 12 : 4],\r\n\t\t\t\ty: stage[stage.length === 16 ? 13 : 5]\r\n\t\t\t};\r\n\t\t} else {\r\n\t\t\tstage = this.$stage.position();\r\n\t\t\tstage = {\r\n\t\t\t\tx: this.settings.rtl ?\r\n\t\t\t\t\tstage.left + this.$stage.width() - this.width() + this.settings.margin :\r\n\t\t\t\t\tstage.left,\r\n\t\t\t\ty: stage.top\r\n\t\t\t};\r\n\t\t}\r\n\r\n\t\tif (this.is('animating')) {\r\n\t\t\t$.support.transform ? this.animate(stage.x) : this.$stage.stop()\r\n\t\t\tthis.invalidate('position');\r\n\t\t}\r\n\r\n\t\tthis.$element.toggleClass(this.options.grabClass, event.type === 'mousedown');\r\n\r\n\t\tthis.speed(0);\r\n\r\n\t\tthis._drag.time = new Date().getTime();\r\n\t\tthis._drag.target = $(event.target);\r\n\t\tthis._drag.stage.start = stage;\r\n\t\tthis._drag.stage.current = stage;\r\n\t\tthis._drag.pointer = this.pointer(event);\r\n\r\n\t\t$(document).on('mouseup.owl.core touchend.owl.core', $.proxy(this.onDragEnd, this));\r\n\r\n\t\t$(document).one('mousemove.owl.core touchmove.owl.core', $.proxy(function(event) {\r\n\t\t\tvar delta = this.difference(this._drag.pointer, this.pointer(event));\r\n\r\n\t\t\t$(document).on('mousemove.owl.core touchmove.owl.core', $.proxy(this.onDragMove, this));\r\n\r\n\t\t\tif (Math.abs(delta.x) < Math.abs(delta.y) && this.is('valid')) {\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\r\n\t\t\tevent.preventDefault();\r\n\r\n\t\t\tthis.enter('dragging');\r\n\t\t\tthis.trigger('drag');\r\n\t\t}, this));\r\n\t};\r\n\r\n\t/**\r\n\t * Handles the `touchmove` and `mousemove` events.\r\n\t * @todo #261\r\n\t * @protected\r\n\t * @param {Event} event - The event arguments.\r\n\t */\r\n\tOwl.prototype.onDragMove = function(event) {\r\n\t\tvar minimum = null,\r\n\t\t\tmaximum = null,\r\n\t\t\tpull = null,\r\n\t\t\tdelta = this.difference(this._drag.pointer, this.pointer(event)),\r\n\t\t\tstage = this.difference(this._drag.stage.start, delta);\r\n\r\n\t\tif (!this.is('dragging')) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tevent.preventDefault();\r\n\r\n\t\tif (this.settings.loop) {\r\n\t\t\tminimum = this.coordinates(this.minimum());\r\n\t\t\tmaximum = this.coordinates(this.maximum() + 1) - minimum;\r\n\t\t\tstage.x = (((stage.x - minimum) % maximum + maximum) % maximum) + minimum;\r\n\t\t} else {\r\n\t\t\tminimum = this.settings.rtl ? this.coordinates(this.maximum()) : this.coordinates(this.minimum());\r\n\t\t\tmaximum = this.settings.rtl ? this.coordinates(this.minimum()) : this.coordinates(this.maximum());\r\n\t\t\tpull = this.settings.pullDrag ? -1 * delta.x / 5 : 0;\r\n\t\t\tstage.x = Math.max(Math.min(stage.x, minimum + pull), maximum + pull);\r\n\t\t}\r\n\r\n\t\tthis._drag.stage.current = stage;\r\n\r\n\t\tthis.animate(stage.x);\r\n\t};\r\n\r\n\t/**\r\n\t * Handles the `touchend` and `mouseup` events.\r\n\t * @todo #261\r\n\t * @todo Threshold for click event\r\n\t * @protected\r\n\t * @param {Event} event - The event arguments.\r\n\t */\r\n\tOwl.prototype.onDragEnd = function(event) {\r\n\t\tvar delta = this.difference(this._drag.pointer, this.pointer(event)),\r\n\t\t\tstage = this._drag.stage.current,\r\n\t\t\tdirection = delta.x > 0 ^ this.settings.rtl ? 'left' : 'right';\r\n\r\n\t\t$(document).off('.owl.core');\r\n\r\n\t\tthis.$element.removeClass(this.options.grabClass);\r\n\r\n\t\tif (delta.x !== 0 && this.is('dragging') || !this.is('valid')) {\r\n\t\t\tthis.speed(this.settings.dragEndSpeed || this.settings.smartSpeed);\r\n\t\t\tthis.current(this.closest(stage.x, delta.x !== 0 ? direction : this._drag.direction));\r\n\t\t\tthis.invalidate('position');\r\n\t\t\tthis.update();\r\n\r\n\t\t\tthis._drag.direction = direction;\r\n\r\n\t\t\tif (Math.abs(delta.x) > 3 || new Date().getTime() - this._drag.time > 300) {\r\n\t\t\t\tthis._drag.target.one('click.owl.core', function() { return false; });\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif (!this.is('dragging')) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tthis.leave('dragging');\r\n\t\tthis.trigger('dragged');\r\n\t};\r\n\r\n\t/**\r\n\t * Gets absolute position of the closest item for a coordinate.\r\n\t * @todo Setting `freeDrag` makes `closest` not reusable. See #165.\r\n\t * @protected\r\n\t * @param {Number} coordinate - The coordinate in pixel.\r\n\t * @param {String} direction - The direction to check for the closest item. Ether `left` or `right`.\r\n\t * @return {Number} - The absolute position of the closest item.\r\n\t */\r\n\tOwl.prototype.closest = function(coordinate, direction) {\r\n\t\tvar position = -1,\r\n\t\t\tpull = 30,\r\n\t\t\twidth = this.width(),\r\n\t\t\tcoordinates = this.coordinates();\r\n\r\n\t\tif (!this.settings.freeDrag) {\r\n\t\t\t// check closest item\r\n\t\t\t$.each(coordinates, $.proxy(function(index, value) {\r\n\t\t\t\t// on a left pull, check on current index\r\n\t\t\t\tif (direction === 'left' && coordinate > value - pull && coordinate < value + pull) {\r\n\t\t\t\t\tposition = index;\r\n\t\t\t\t// on a right pull, check on previous index\r\n\t\t\t\t// to do so, subtract width from value and set position = index + 1\r\n\t\t\t\t} else if (direction === 'right' && coordinate > value - width - pull && coordinate < value - width + pull) {\r\n\t\t\t\t\tposition = index + 1;\r\n\t\t\t\t} else if (this.op(coordinate, '<', value)\r\n\t\t\t\t\t&& this.op(coordinate, '>', coordinates[index + 1] || value - width)) {\r\n\t\t\t\t\tposition = direction === 'left' ? index + 1 : index;\r\n\t\t\t\t}\r\n\t\t\t\treturn position === -1;\r\n\t\t\t}, this));\r\n\t\t}\r\n\r\n\t\tif (!this.settings.loop) {\r\n\t\t\t// non loop boundries\r\n\t\t\tif (this.op(coordinate, '>', coordinates[this.minimum()])) {\r\n\t\t\t\tposition = coordinate = this.minimum();\r\n\t\t\t} else if (this.op(coordinate, '<', coordinates[this.maximum()])) {\r\n\t\t\t\tposition = coordinate = this.maximum();\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn position;\r\n\t};\r\n\r\n\t/**\r\n\t * Animates the stage.\r\n\t * @todo #270\r\n\t * @public\r\n\t * @param {Number} coordinate - The coordinate in pixels.\r\n\t */\r\n\tOwl.prototype.animate = function(coordinate) {\r\n\t\tvar animate = this.speed() > 0;\r\n\r\n\t\tthis.is('animating') && this.onTransitionEnd();\r\n\r\n\t\tif (animate) {\r\n\t\t\tthis.enter('animating');\r\n\t\t\tthis.trigger('translate');\r\n\t\t}\r\n\r\n\t\tif ($.support.transform3d && $.support.transition) {\r\n\t\t\tthis.$stage.css({\r\n\t\t\t\ttransform: 'translate3d(' + coordinate + 'px,0px,0px)',\r\n\t\t\t\ttransition: (this.speed() / 1000) + 's'\r\n\t\t\t});\r\n\t\t} else if (animate) {\r\n\t\t\tthis.$stage.animate({\r\n\t\t\t\tleft: coordinate + 'px'\r\n\t\t\t}, this.speed(), this.settings.fallbackEasing, $.proxy(this.onTransitionEnd, this));\r\n\t\t} else {\r\n\t\t\tthis.$stage.css({\r\n\t\t\t\tleft: coordinate + 'px'\r\n\t\t\t});\r\n\t\t}\r\n\t};\r\n\r\n\t/**\r\n\t * Checks whether the carousel is in a specific state or not.\r\n\t * @param {String} state - The state to check.\r\n\t * @returns {Boolean} - The flag which indicates if the carousel is busy.\r\n\t */\r\n\tOwl.prototype.is = function(state) {\r\n\t\treturn this._states.current[state] && this._states.current[state] > 0;\r\n\t};\r\n\r\n\t/**\r\n\t * Sets the absolute position of the current item.\r\n\t * @public\r\n\t * @param {Number} [position] - The new absolute position or nothing to leave it unchanged.\r\n\t * @returns {Number} - The absolute position of the current item.\r\n\t */\r\n\tOwl.prototype.current = function(position) {\r\n\t\tif (position === undefined) {\r\n\t\t\treturn this._current;\r\n\t\t}\r\n\r\n\t\tif (this._items.length === 0) {\r\n\t\t\treturn undefined;\r\n\t\t}\r\n\r\n\t\tposition = this.normalize(position);\r\n\r\n\t\tif (this._current !== position) {\r\n\t\t\tvar event = this.trigger('change', { property: { name: 'position', value: position } });\r\n\r\n\t\t\tif (event.data !== undefined) {\r\n\t\t\t\tposition = this.normalize(event.data);\r\n\t\t\t}\r\n\r\n\t\t\tthis._current = position;\r\n\r\n\t\t\tthis.invalidate('position');\r\n\r\n\t\t\tthis.trigger('changed', { property: { name: 'position', value: this._current } });\r\n\t\t}\r\n\r\n\t\treturn this._current;\r\n\t};\r\n\r\n\t/**\r\n\t * Invalidates the given part of the update routine.\r\n\t * @param {String} [part] - The part to invalidate.\r\n\t * @returns {Array.} - The invalidated parts.\r\n\t */\r\n\tOwl.prototype.invalidate = function(part) {\r\n\t\tif ($.type(part) === 'string') {\r\n\t\t\tthis._invalidated[part] = true;\r\n\t\t\tthis.is('valid') && this.leave('valid');\r\n\t\t}\r\n\t\treturn $.map(this._invalidated, function(v, i) { return i });\r\n\t};\r\n\r\n\t/**\r\n\t * Resets the absolute position of the current item.\r\n\t * @public\r\n\t * @param {Number} position - The absolute position of the new item.\r\n\t */\r\n\tOwl.prototype.reset = function(position) {\r\n\t\tposition = this.normalize(position);\r\n\r\n\t\tif (position === undefined) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tthis._speed = 0;\r\n\t\tthis._current = position;\r\n\r\n\t\tthis.suppress([ 'translate', 'translated' ]);\r\n\r\n\t\tthis.animate(this.coordinates(position));\r\n\r\n\t\tthis.release([ 'translate', 'translated' ]);\r\n\t};\r\n\r\n\t/**\r\n\t * Normalizes an absolute or a relative position of an item.\r\n\t * @public\r\n\t * @param {Number} position - The absolute or relative position to normalize.\r\n\t * @param {Boolean} [relative=false] - Whether the given position is relative or not.\r\n\t * @returns {Number} - The normalized position.\r\n\t */\r\n\tOwl.prototype.normalize = function(position, relative) {\r\n\t\tvar n = this._items.length,\r\n\t\t\tm = relative ? 0 : this._clones.length;\r\n\r\n\t\tif (!this.isNumeric(position) || n < 1) {\r\n\t\t\tposition = undefined;\r\n\t\t} else if (position < 0 || position >= n + m) {\r\n\t\t\tposition = ((position - m / 2) % n + n) % n + m / 2;\r\n\t\t}\r\n\r\n\t\treturn position;\r\n\t};\r\n\r\n\t/**\r\n\t * Converts an absolute position of an item into a relative one.\r\n\t * @public\r\n\t * @param {Number} position - The absolute position to convert.\r\n\t * @returns {Number} - The converted position.\r\n\t */\r\n\tOwl.prototype.relative = function(position) {\r\n\t\tposition -= this._clones.length / 2;\r\n\t\treturn this.normalize(position, true);\r\n\t};\r\n\r\n\t/**\r\n\t * Gets the maximum position for the current item.\r\n\t * @public\r\n\t * @param {Boolean} [relative=false] - Whether to return an absolute position or a relative position.\r\n\t * @returns {Number}\r\n\t */\r\n\tOwl.prototype.maximum = function(relative) {\r\n\t\tvar settings = this.settings,\r\n\t\t\tmaximum = this._coordinates.length,\r\n\t\t\titerator,\r\n\t\t\treciprocalItemsWidth,\r\n\t\t\telementWidth;\r\n\r\n\t\tif (settings.loop) {\r\n\t\t\tmaximum = this._clones.length / 2 + this._items.length - 1;\r\n\t\t} else if (settings.autoWidth || settings.merge) {\r\n\t\t\titerator = this._items.length;\r\n\t\t\treciprocalItemsWidth = this._items[--iterator].width();\r\n\t\t\telementWidth = this.$element.width();\r\n\t\t\twhile (iterator--) {\r\n\t\t\t\treciprocalItemsWidth += this._items[iterator].width() + this.settings.margin;\r\n\t\t\t\tif (reciprocalItemsWidth > elementWidth) {\r\n\t\t\t\t\tbreak;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\tmaximum = iterator + 1;\r\n\t\t} else if (settings.center) {\r\n\t\t\tmaximum = this._items.length - 1;\r\n\t\t} else {\r\n\t\t\tmaximum = this._items.length - settings.items;\r\n\t\t}\r\n\r\n\t\tif (relative) {\r\n\t\t\tmaximum -= this._clones.length / 2;\r\n\t\t}\r\n\r\n\t\treturn Math.max(maximum, 0);\r\n\t};\r\n\r\n\t/**\r\n\t * Gets the minimum position for the current item.\r\n\t * @public\r\n\t * @param {Boolean} [relative=false] - Whether to return an absolute position or a relative position.\r\n\t * @returns {Number}\r\n\t */\r\n\tOwl.prototype.minimum = function(relative) {\r\n\t\treturn relative ? 0 : this._clones.length / 2;\r\n\t};\r\n\r\n\t/**\r\n\t * Gets an item at the specified relative position.\r\n\t * @public\r\n\t * @param {Number} [position] - The relative position of the item.\r\n\t * @return {jQuery|Array.} - The item at the given position or all items if no position was given.\r\n\t */\r\n\tOwl.prototype.items = function(position) {\r\n\t\tif (position === undefined) {\r\n\t\t\treturn this._items.slice();\r\n\t\t}\r\n\r\n\t\tposition = this.normalize(position, true);\r\n\t\treturn this._items[position];\r\n\t};\r\n\r\n\t/**\r\n\t * Gets an item at the specified relative position.\r\n\t * @public\r\n\t * @param {Number} [position] - The relative position of the item.\r\n\t * @return {jQuery|Array.} - The item at the given position or all items if no position was given.\r\n\t */\r\n\tOwl.prototype.mergers = function(position) {\r\n\t\tif (position === undefined) {\r\n\t\t\treturn this._mergers.slice();\r\n\t\t}\r\n\r\n\t\tposition = this.normalize(position, true);\r\n\t\treturn this._mergers[position];\r\n\t};\r\n\r\n\t/**\r\n\t * Gets the absolute positions of clones for an item.\r\n\t * @public\r\n\t * @param {Number} [position] - The relative position of the item.\r\n\t * @returns {Array.} - The absolute positions of clones for the item or all if no position was given.\r\n\t */\r\n\tOwl.prototype.clones = function(position) {\r\n\t\tvar odd = this._clones.length / 2,\r\n\t\t\teven = odd + this._items.length,\r\n\t\t\tmap = function(index) { return index % 2 === 0 ? even + index / 2 : odd - (index + 1) / 2 };\r\n\r\n\t\tif (position === undefined) {\r\n\t\t\treturn $.map(this._clones, function(v, i) { return map(i) });\r\n\t\t}\r\n\r\n\t\treturn $.map(this._clones, function(v, i) { return v === position ? map(i) : null });\r\n\t};\r\n\r\n\t/**\r\n\t * Sets the current animation speed.\r\n\t * @public\r\n\t * @param {Number} [speed] - The animation speed in milliseconds or nothing to leave it unchanged.\r\n\t * @returns {Number} - The current animation speed in milliseconds.\r\n\t */\r\n\tOwl.prototype.speed = function(speed) {\r\n\t\tif (speed !== undefined) {\r\n\t\t\tthis._speed = speed;\r\n\t\t}\r\n\r\n\t\treturn this._speed;\r\n\t};\r\n\r\n\t/**\r\n\t * Gets the coordinate of an item.\r\n\t * @todo The name of this method is missleanding.\r\n\t * @public\r\n\t * @param {Number} position - The absolute position of the item within `minimum()` and `maximum()`.\r\n\t * @returns {Number|Array.} - The coordinate of the item in pixel or all coordinates.\r\n\t */\r\n\tOwl.prototype.coordinates = function(position) {\r\n\t\tvar multiplier = 1,\r\n\t\t\tnewPosition = position - 1,\r\n\t\t\tcoordinate;\r\n\r\n\t\tif (position === undefined) {\r\n\t\t\treturn $.map(this._coordinates, $.proxy(function(coordinate, index) {\r\n\t\t\t\treturn this.coordinates(index);\r\n\t\t\t}, this));\r\n\t\t}\r\n\r\n\t\tif (this.settings.center) {\r\n\t\t\tif (this.settings.rtl) {\r\n\t\t\t\tmultiplier = -1;\r\n\t\t\t\tnewPosition = position + 1;\r\n\t\t\t}\r\n\r\n\t\t\tcoordinate = this._coordinates[position];\r\n\t\t\tcoordinate += (this.width() - coordinate + (this._coordinates[newPosition] || 0)) / 2 * multiplier;\r\n\t\t} else {\r\n\t\t\tcoordinate = this._coordinates[newPosition] || 0;\r\n\t\t}\r\n\r\n\t\tcoordinate = Math.ceil(coordinate);\r\n\r\n\t\treturn coordinate;\r\n\t};\r\n\r\n\t/**\r\n\t * Calculates the speed for a translation.\r\n\t * @protected\r\n\t * @param {Number} from - The absolute position of the start item.\r\n\t * @param {Number} to - The absolute position of the target item.\r\n\t * @param {Number} [factor=undefined] - The time factor in milliseconds.\r\n\t * @returns {Number} - The time in milliseconds for the translation.\r\n\t */\r\n\tOwl.prototype.duration = function(from, to, factor) {\r\n\t\tif (factor === 0) {\r\n\t\t\treturn 0;\r\n\t\t}\r\n\r\n\t\treturn Math.min(Math.max(Math.abs(to - from), 1), 6) * Math.abs((factor || this.settings.smartSpeed));\r\n\t};\r\n\r\n\t/**\r\n\t * Slides to the specified item.\r\n\t * @public\r\n\t * @param {Number} position - The position of the item.\r\n\t * @param {Number} [speed] - The time in milliseconds for the transition.\r\n\t */\r\n\tOwl.prototype.to = function(position, speed) {\r\n\t\tvar current = this.current(),\r\n\t\t\trevert = null,\r\n\t\t\tdistance = position - this.relative(current),\r\n\t\t\tdirection = (distance > 0) - (distance < 0),\r\n\t\t\titems = this._items.length,\r\n\t\t\tminimum = this.minimum(),\r\n\t\t\tmaximum = this.maximum();\r\n\r\n\t\tif (this.settings.loop) {\r\n\t\t\tif (!this.settings.rewind && Math.abs(distance) > items / 2) {\r\n\t\t\t\tdistance += direction * -1 * items;\r\n\t\t\t}\r\n\r\n\t\t\tposition = current + distance;\r\n\t\t\trevert = ((position - minimum) % items + items) % items + minimum;\r\n\r\n\t\t\tif (revert !== position && revert - distance <= maximum && revert - distance > 0) {\r\n\t\t\t\tcurrent = revert - distance;\r\n\t\t\t\tposition = revert;\r\n\t\t\t\tthis.reset(current);\r\n\t\t\t}\r\n\t\t} else if (this.settings.rewind) {\r\n\t\t\tmaximum += 1;\r\n\t\t\tposition = (position % maximum + maximum) % maximum;\r\n\t\t} else {\r\n\t\t\tposition = Math.max(minimum, Math.min(maximum, position));\r\n\t\t}\r\n\r\n\t\tthis.speed(this.duration(current, position, speed));\r\n\t\tthis.current(position);\r\n\r\n\t\tif (this.$element.is(':visible')) {\r\n\t\t\tthis.update();\r\n\t\t}\r\n\t};\r\n\r\n\t/**\r\n\t * Slides to the next item.\r\n\t * @public\r\n\t * @param {Number} [speed] - The time in milliseconds for the transition.\r\n\t */\r\n\tOwl.prototype.next = function(speed) {\r\n\t\tspeed = speed || false;\r\n\t\tthis.to(this.relative(this.current()) + 1, speed);\r\n\t};\r\n\r\n\t/**\r\n\t * Slides to the previous item.\r\n\t * @public\r\n\t * @param {Number} [speed] - The time in milliseconds for the transition.\r\n\t */\r\n\tOwl.prototype.prev = function(speed) {\r\n\t\tspeed = speed || false;\r\n\t\tthis.to(this.relative(this.current()) - 1, speed);\r\n\t};\r\n\r\n\t/**\r\n\t * Handles the end of an animation.\r\n\t * @protected\r\n\t * @param {Event} event - The event arguments.\r\n\t */\r\n\tOwl.prototype.onTransitionEnd = function(event) {\r\n\r\n\t\t// if css2 animation then event object is undefined\r\n\t\tif (event !== undefined) {\r\n\t\t\tevent.stopPropagation();\r\n\r\n\t\t\t// Catch only owl-stage transitionEnd event\r\n\t\t\tif ((event.target || event.srcElement || event.originalTarget) !== this.$stage.get(0)) {\r\n\t\t\t\treturn false;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tthis.leave('animating');\r\n\t\tthis.trigger('translated');\r\n\t};\r\n\r\n\t/**\r\n\t * Gets viewport width.\r\n\t * @protected\r\n\t * @return {Number} - The width in pixel.\r\n\t */\r\n\tOwl.prototype.viewport = function() {\r\n\t\tvar width;\r\n\t\tif (this.options.responsiveBaseElement !== window) {\r\n\t\t\twidth = $(this.options.responsiveBaseElement).width();\r\n\t\t} else if (window.innerWidth) {\r\n\t\t\twidth = window.innerWidth;\r\n\t\t} else if (document.documentElement && document.documentElement.clientWidth) {\r\n\t\t\twidth = document.documentElement.clientWidth;\r\n\t\t} else {\r\n\t\t\tconsole.warn('Can not detect viewport width.');\r\n\t\t}\r\n\t\treturn width;\r\n\t};\r\n\r\n\t/**\r\n\t * Replaces the current content.\r\n\t * @public\r\n\t * @param {HTMLElement|jQuery|String} content - The new content.\r\n\t */\r\n\tOwl.prototype.replace = function(content) {\r\n\t\tthis.$stage.empty();\r\n\t\tthis._items = [];\r\n\r\n\t\tif (content) {\r\n\t\t\tcontent = (content instanceof jQuery) ? content : $(content);\r\n\t\t}\r\n\r\n\t\tif (this.settings.nestedItemSelector) {\r\n\t\t\tcontent = content.find('.' + this.settings.nestedItemSelector);\r\n\t\t}\r\n\r\n\t\tcontent.filter(function() {\r\n\t\t\treturn this.nodeType === 1;\r\n\t\t}).each($.proxy(function(index, item) {\r\n\t\t\titem = this.prepare(item);\r\n\t\t\tthis.$stage.append(item);\r\n\t\t\tthis._items.push(item);\r\n\t\t\tthis._mergers.push(item.find('[data-merge]').addBack('[data-merge]').attr('data-merge') * 1 || 1);\r\n\t\t}, this));\r\n\r\n\t\tthis.reset(this.isNumeric(this.settings.startPosition) ? this.settings.startPosition : 0);\r\n\r\n\t\tthis.invalidate('items');\r\n\t};\r\n\r\n\t/**\r\n\t * Adds an item.\r\n\t * @todo Use `item` instead of `content` for the event arguments.\r\n\t * @public\r\n\t * @param {HTMLElement|jQuery|String} content - The item content to add.\r\n\t * @param {Number} [position] - The relative position at which to insert the item otherwise the item will be added to the end.\r\n\t */\r\n\tOwl.prototype.add = function(content, position) {\r\n\t\tvar current = this.relative(this._current);\r\n\r\n\t\tposition = position === undefined ? this._items.length : this.normalize(position, true);\r\n\t\tcontent = content instanceof jQuery ? content : $(content);\r\n\r\n\t\tthis.trigger('add', { content: content, position: position });\r\n\r\n\t\tcontent = this.prepare(content);\r\n\r\n\t\tif (this._items.length === 0 || position === this._items.length) {\r\n\t\t\tthis._items.length === 0 && this.$stage.append(content);\r\n\t\t\tthis._items.length !== 0 && this._items[position - 1].after(content);\r\n\t\t\tthis._items.push(content);\r\n\t\t\tthis._mergers.push(content.find('[data-merge]').addBack('[data-merge]').attr('data-merge') * 1 || 1);\r\n\t\t} else {\r\n\t\t\tthis._items[position].before(content);\r\n\t\t\tthis._items.splice(position, 0, content);\r\n\t\t\tthis._mergers.splice(position, 0, content.find('[data-merge]').addBack('[data-merge]').attr('data-merge') * 1 || 1);\r\n\t\t}\r\n\r\n\t\tthis._items[current] && this.reset(this._items[current].index());\r\n\r\n\t\tthis.invalidate('items');\r\n\r\n\t\tthis.trigger('added', { content: content, position: position });\r\n\t};\r\n\r\n\t/**\r\n\t * Removes an item by its position.\r\n\t * @todo Use `item` instead of `content` for the event arguments.\r\n\t * @public\r\n\t * @param {Number} position - The relative position of the item to remove.\r\n\t */\r\n\tOwl.prototype.remove = function(position) {\r\n\t\tposition = this.normalize(position, true);\r\n\r\n\t\tif (position === undefined) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tthis.trigger('remove', { content: this._items[position], position: position });\r\n\r\n\t\tthis._items[position].remove();\r\n\t\tthis._items.splice(position, 1);\r\n\t\tthis._mergers.splice(position, 1);\r\n\r\n\t\tthis.invalidate('items');\r\n\r\n\t\tthis.trigger('removed', { content: null, position: position });\r\n\t};\r\n\r\n\t/**\r\n\t * Preloads images with auto width.\r\n\t * @todo Replace by a more generic approach\r\n\t * @protected\r\n\t */\r\n\tOwl.prototype.preloadAutoWidthImages = function(images) {\r\n\t\timages.each($.proxy(function(i, element) {\r\n\t\t\tthis.enter('pre-loading');\r\n\t\t\telement = $(element);\r\n\t\t\t$(new Image()).one('load', $.proxy(function(e) {\r\n\t\t\t\telement.attr('src', e.target.src);\r\n\t\t\t\telement.css('opacity', 1);\r\n\t\t\t\tthis.leave('pre-loading');\r\n\t\t\t\t!this.is('pre-loading') && !this.is('initializing') && this.refresh();\r\n\t\t\t}, this)).attr('src', element.attr('src') || element.attr('data-src') || element.attr('data-src-retina'));\r\n\t\t}, this));\r\n\t};\r\n\r\n\t/**\r\n\t * Destroys the carousel.\r\n\t * @public\r\n\t */\r\n\tOwl.prototype.destroy = function() {\r\n\r\n\t\tthis.$element.off('.owl.core');\r\n\t\tthis.$stage.off('.owl.core');\r\n\t\t$(document).off('.owl.core');\r\n\r\n\t\tif (this.settings.responsive !== false) {\r\n\t\t\twindow.clearTimeout(this.resizeTimer);\r\n\t\t\tthis.off(window, 'resize', this._handlers.onThrottledResize);\r\n\t\t}\r\n\r\n\t\tfor (var i in this._plugins) {\r\n\t\t\tthis._plugins[i].destroy();\r\n\t\t}\r\n\r\n\t\tthis.$stage.children('.cloned').remove();\r\n\r\n\t\tthis.$stage.unwrap();\r\n\t\tthis.$stage.children().contents().unwrap();\r\n\t\tthis.$stage.children().unwrap();\r\n\r\n\t\tthis.$element\r\n\t\t\t.removeClass(this.options.refreshClass)\r\n\t\t\t.removeClass(this.options.loadingClass)\r\n\t\t\t.removeClass(this.options.loadedClass)\r\n\t\t\t.removeClass(this.options.rtlClass)\r\n\t\t\t.removeClass(this.options.dragClass)\r\n\t\t\t.removeClass(this.options.grabClass)\r\n\t\t\t.attr('class', this.$element.attr('class').replace(new RegExp(this.options.responsiveClass + '-\\\\S+\\\\s', 'g'), ''))\r\n\t\t\t.removeData('owl.carousel');\r\n\t};\r\n\r\n\t/**\r\n\t * Operators to calculate right-to-left and left-to-right.\r\n\t * @protected\r\n\t * @param {Number} [a] - The left side operand.\r\n\t * @param {String} [o] - The operator.\r\n\t * @param {Number} [b] - The right side operand.\r\n\t */\r\n\tOwl.prototype.op = function(a, o, b) {\r\n\t\tvar rtl = this.settings.rtl;\r\n\t\tswitch (o) {\r\n\t\t\tcase '<':\r\n\t\t\t\treturn rtl ? a > b : a < b;\r\n\t\t\tcase '>':\r\n\t\t\t\treturn rtl ? a < b : a > b;\r\n\t\t\tcase '>=':\r\n\t\t\t\treturn rtl ? a <= b : a >= b;\r\n\t\t\tcase '<=':\r\n\t\t\t\treturn rtl ? a >= b : a <= b;\r\n\t\t\tdefault:\r\n\t\t\t\tbreak;\r\n\t\t}\r\n\t};\r\n\r\n\t/**\r\n\t * Attaches to an internal event.\r\n\t * @protected\r\n\t * @param {HTMLElement} element - The event source.\r\n\t * @param {String} event - The event name.\r\n\t * @param {Function} listener - The event handler to attach.\r\n\t * @param {Boolean} capture - Wether the event should be handled at the capturing phase or not.\r\n\t */\r\n\tOwl.prototype.on = function(element, event, listener, capture) {\r\n\t\tif (element.addEventListener) {\r\n\t\t\telement.addEventListener(event, listener, capture);\r\n\t\t} else if (element.attachEvent) {\r\n\t\t\telement.attachEvent('on' + event, listener);\r\n\t\t}\r\n\t};\r\n\r\n\t/**\r\n\t * Detaches from an internal event.\r\n\t * @protected\r\n\t * @param {HTMLElement} element - The event source.\r\n\t * @param {String} event - The event name.\r\n\t * @param {Function} listener - The attached event handler to detach.\r\n\t * @param {Boolean} capture - Wether the attached event handler was registered as a capturing listener or not.\r\n\t */\r\n\tOwl.prototype.off = function(element, event, listener, capture) {\r\n\t\tif (element.removeEventListener) {\r\n\t\t\telement.removeEventListener(event, listener, capture);\r\n\t\t} else if (element.detachEvent) {\r\n\t\t\telement.detachEvent('on' + event, listener);\r\n\t\t}\r\n\t};\r\n\r\n\t/**\r\n\t * Triggers a public event.\r\n\t * @todo Remove `status`, `relatedTarget` should be used instead.\r\n\t * @protected\r\n\t * @param {String} name - The event name.\r\n\t * @param {*} [data=null] - The event data.\r\n\t * @param {String} [namespace=carousel] - The event namespace.\r\n\t * @param {String} [state] - The state which is associated with the event.\r\n\t * @param {Boolean} [enter=false] - Indicates if the call enters the specified state or not.\r\n\t * @returns {Event} - The event arguments.\r\n\t */\r\n\tOwl.prototype.trigger = function(name, data, namespace, state, enter) {\r\n\t\tvar status = {\r\n\t\t\titem: { count: this._items.length, index: this.current() }\r\n\t\t}, handler = $.camelCase(\r\n\t\t\t$.grep([ 'on', name, namespace ], function(v) { return v })\r\n\t\t\t\t.join('-').toLowerCase()\r\n\t\t), event = $.Event(\r\n\t\t\t[ name, 'owl', namespace || 'carousel' ].join('.').toLowerCase(),\r\n\t\t\t$.extend({ relatedTarget: this }, status, data)\r\n\t\t);\r\n\r\n\t\tif (!this._supress[name]) {\r\n\t\t\t$.each(this._plugins, function(name, plugin) {\r\n\t\t\t\tif (plugin.onTrigger) {\r\n\t\t\t\t\tplugin.onTrigger(event);\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\t\tthis.register({ type: Owl.Type.Event, name: name });\r\n\t\t\tthis.$element.trigger(event);\r\n\r\n\t\t\tif (this.settings && typeof this.settings[handler] === 'function') {\r\n\t\t\t\tthis.settings[handler].call(this, event);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn event;\r\n\t};\r\n\r\n\t/**\r\n\t * Enters a state.\r\n\t * @param name - The state name.\r\n\t */\r\n\tOwl.prototype.enter = function(name) {\r\n\t\t$.each([ name ].concat(this._states.tags[name] || []), $.proxy(function(i, name) {\r\n\t\t\tif (this._states.current[name] === undefined) {\r\n\t\t\t\tthis._states.current[name] = 0;\r\n\t\t\t}\r\n\r\n\t\t\tthis._states.current[name]++;\r\n\t\t}, this));\r\n\t};\r\n\r\n\t/**\r\n\t * Leaves a state.\r\n\t * @param name - The state name.\r\n\t */\r\n\tOwl.prototype.leave = function(name) {\r\n\t\t$.each([ name ].concat(this._states.tags[name] || []), $.proxy(function(i, name) {\r\n\t\t\tthis._states.current[name]--;\r\n\t\t}, this));\r\n\t};\r\n\r\n\t/**\r\n\t * Registers an event or state.\r\n\t * @public\r\n\t * @param {Object} object - The event or state to register.\r\n\t */\r\n\tOwl.prototype.register = function(object) {\r\n\t\tif (object.type === Owl.Type.Event) {\r\n\t\t\tif (!$.event.special[object.name]) {\r\n\t\t\t\t$.event.special[object.name] = {};\r\n\t\t\t}\r\n\r\n\t\t\tif (!$.event.special[object.name].owl) {\r\n\t\t\t\tvar _default = $.event.special[object.name]._default;\r\n\t\t\t\t$.event.special[object.name]._default = function(e) {\r\n\t\t\t\t\tif (_default && _default.apply && (!e.namespace || e.namespace.indexOf('owl') === -1)) {\r\n\t\t\t\t\t\treturn _default.apply(this, arguments);\r\n\t\t\t\t\t}\r\n\t\t\t\t\treturn e.namespace && e.namespace.indexOf('owl') > -1;\r\n\t\t\t\t};\r\n\t\t\t\t$.event.special[object.name].owl = true;\r\n\t\t\t}\r\n\t\t} else if (object.type === Owl.Type.State) {\r\n\t\t\tif (!this._states.tags[object.name]) {\r\n\t\t\t\tthis._states.tags[object.name] = object.tags;\r\n\t\t\t} else {\r\n\t\t\t\tthis._states.tags[object.name] = this._states.tags[object.name].concat(object.tags);\r\n\t\t\t}\r\n\r\n\t\t\tthis._states.tags[object.name] = $.grep(this._states.tags[object.name], $.proxy(function(tag, i) {\r\n\t\t\t\treturn $.inArray(tag, this._states.tags[object.name]) === i;\r\n\t\t\t}, this));\r\n\t\t}\r\n\t};\r\n\r\n\t/**\r\n\t * Suppresses events.\r\n\t * @protected\r\n\t * @param {Array.} events - The events to suppress.\r\n\t */\r\n\tOwl.prototype.suppress = function(events) {\r\n\t\t$.each(events, $.proxy(function(index, event) {\r\n\t\t\tthis._supress[event] = true;\r\n\t\t}, this));\r\n\t};\r\n\r\n\t/**\r\n\t * Releases suppressed events.\r\n\t * @protected\r\n\t * @param {Array.} events - The events to release.\r\n\t */\r\n\tOwl.prototype.release = function(events) {\r\n\t\t$.each(events, $.proxy(function(index, event) {\r\n\t\t\tdelete this._supress[event];\r\n\t\t}, this));\r\n\t};\r\n\r\n\t/**\r\n\t * Gets unified pointer coordinates from event.\r\n\t * @todo #261\r\n\t * @protected\r\n\t * @param {Event} - The `mousedown` or `touchstart` event.\r\n\t * @returns {Object} - Contains `x` and `y` coordinates of current pointer position.\r\n\t */\r\n\tOwl.prototype.pointer = function(event) {\r\n\t\tvar result = { x: null, y: null };\r\n\r\n\t\tevent = event.originalEvent || event || window.event;\r\n\r\n\t\tevent = event.touches && event.touches.length ?\r\n\t\t\tevent.touches[0] : event.changedTouches && event.changedTouches.length ?\r\n\t\t\t\tevent.changedTouches[0] : event;\r\n\r\n\t\tif (event.pageX) {\r\n\t\t\tresult.x = event.pageX;\r\n\t\t\tresult.y = event.pageY;\r\n\t\t} else {\r\n\t\t\tresult.x = event.clientX;\r\n\t\t\tresult.y = event.clientY;\r\n\t\t}\r\n\r\n\t\treturn result;\r\n\t};\r\n\r\n\t/**\r\n\t * Determines if the input is a Number or something that can be coerced to a Number\r\n\t * @protected\r\n\t * @param {Number|String|Object|Array|Boolean|RegExp|Function|Symbol} - The input to be tested\r\n\t * @returns {Boolean} - An indication if the input is a Number or can be coerced to a Number\r\n\t */\r\n\tOwl.prototype.isNumeric = function(number) {\r\n\t\treturn !isNaN(parseFloat(number));\r\n\t};\r\n\r\n\t/**\r\n\t * Gets the difference of two vectors.\r\n\t * @todo #261\r\n\t * @protected\r\n\t * @param {Object} - The first vector.\r\n\t * @param {Object} - The second vector.\r\n\t * @returns {Object} - The difference.\r\n\t */\r\n\tOwl.prototype.difference = function(first, second) {\r\n\t\treturn {\r\n\t\t\tx: first.x - second.x,\r\n\t\t\ty: first.y - second.y\r\n\t\t};\r\n\t};\r\n\r\n\t/**\r\n\t * The jQuery Plugin for the Owl Carousel\r\n\t * @todo Navigation plugin `next` and `prev`\r\n\t * @public\r\n\t */\r\n\t$.fn.owlCarousel = function(option) {\r\n\t\tvar args = Array.prototype.slice.call(arguments, 1);\r\n\r\n\t\treturn this.each(function() {\r\n\t\t\tvar $this = $(this),\r\n\t\t\t\tdata = $this.data('owl.carousel');\r\n\r\n\t\t\tif (!data) {\r\n\t\t\t\tdata = new Owl(this, typeof option == 'object' && option);\r\n\t\t\t\t$this.data('owl.carousel', data);\r\n\r\n\t\t\t\t$.each([\r\n\t\t\t\t\t'next', 'prev', 'to', 'destroy', 'refresh', 'replace', 'add', 'remove'\r\n\t\t\t\t], function(i, event) {\r\n\t\t\t\t\tdata.register({ type: Owl.Type.Event, name: event });\r\n\t\t\t\t\tdata.$element.on(event + '.owl.carousel.core', $.proxy(function(e) {\r\n\t\t\t\t\t\tif (e.namespace && e.relatedTarget !== this) {\r\n\t\t\t\t\t\t\tthis.suppress([ event ]);\r\n\t\t\t\t\t\t\tdata[event].apply(this, [].slice.call(arguments, 1));\r\n\t\t\t\t\t\t\tthis.release([ event ]);\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}, data));\r\n\t\t\t\t});\r\n\t\t\t}\r\n\r\n\t\t\tif (typeof option == 'string' && option.charAt(0) !== '_') {\r\n\t\t\t\tdata[option].apply(data, args);\r\n\t\t\t}\r\n\t\t});\r\n\t};\r\n\r\n\t/**\r\n\t * The constructor for the jQuery Plugin\r\n\t * @public\r\n\t */\r\n\t$.fn.owlCarousel.Constructor = Owl;\r\n\r\n})(window.Zepto || window.jQuery, window, document);\r\n\r\n/**\r\n * AutoRefresh Plugin\r\n * @version 2.1.0\r\n * @author Artus Kolanowski\r\n * @author David Deutsch\r\n * @license The MIT License (MIT)\r\n */\r\n;(function($, window, document, undefined) {\r\n\r\n\t/**\r\n\t * Creates the auto refresh plugin.\r\n\t * @class The Auto Refresh Plugin\r\n\t * @param {Owl} carousel - The Owl Carousel\r\n\t */\r\n\tvar AutoRefresh = function(carousel) {\r\n\t\t/**\r\n\t\t * Reference to the core.\r\n\t\t * @protected\r\n\t\t * @type {Owl}\r\n\t\t */\r\n\t\tthis._core = carousel;\r\n\r\n\t\t/**\r\n\t\t * Refresh interval.\r\n\t\t * @protected\r\n\t\t * @type {number}\r\n\t\t */\r\n\t\tthis._interval = null;\r\n\r\n\t\t/**\r\n\t\t * Whether the element is currently visible or not.\r\n\t\t * @protected\r\n\t\t * @type {Boolean}\r\n\t\t */\r\n\t\tthis._visible = null;\r\n\r\n\t\t/**\r\n\t\t * All event handlers.\r\n\t\t * @protected\r\n\t\t * @type {Object}\r\n\t\t */\r\n\t\tthis._handlers = {\r\n\t\t\t'initialized.owl.carousel': $.proxy(function(e) {\r\n\t\t\t\tif (e.namespace && this._core.settings.autoRefresh) {\r\n\t\t\t\t\tthis.watch();\r\n\t\t\t\t}\r\n\t\t\t}, this)\r\n\t\t};\r\n\r\n\t\t// set default options\r\n\t\tthis._core.options = $.extend({}, AutoRefresh.Defaults, this._core.options);\r\n\r\n\t\t// register event handlers\r\n\t\tthis._core.$element.on(this._handlers);\r\n\t};\r\n\r\n\t/**\r\n\t * Default options.\r\n\t * @public\r\n\t */\r\n\tAutoRefresh.Defaults = {\r\n\t\tautoRefresh: true,\r\n\t\tautoRefreshInterval: 500\r\n\t};\r\n\r\n\t/**\r\n\t * Watches the element.\r\n\t */\r\n\tAutoRefresh.prototype.watch = function() {\r\n\t\tif (this._interval) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tthis._visible = this._core.$element.is(':visible');\r\n\t\tthis._interval = window.setInterval($.proxy(this.refresh, this), this._core.settings.autoRefreshInterval);\r\n\t};\r\n\r\n\t/**\r\n\t * Refreshes the element.\r\n\t */\r\n\tAutoRefresh.prototype.refresh = function() {\r\n\t\tif (this._core.$element.is(':visible') === this._visible) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tthis._visible = !this._visible;\r\n\r\n\t\tthis._core.$element.toggleClass('owl-hidden', !this._visible);\r\n\r\n\t\tthis._visible && (this._core.invalidate('width') && this._core.refresh());\r\n\t};\r\n\r\n\t/**\r\n\t * Destroys the plugin.\r\n\t */\r\n\tAutoRefresh.prototype.destroy = function() {\r\n\t\tvar handler, property;\r\n\r\n\t\twindow.clearInterval(this._interval);\r\n\r\n\t\tfor (handler in this._handlers) {\r\n\t\t\tthis._core.$element.off(handler, this._handlers[handler]);\r\n\t\t}\r\n\t\tfor (property in Object.getOwnPropertyNames(this)) {\r\n\t\t\ttypeof this[property] != 'function' && (this[property] = null);\r\n\t\t}\r\n\t};\r\n\r\n\t$.fn.owlCarousel.Constructor.Plugins.AutoRefresh = AutoRefresh;\r\n\r\n})(window.Zepto || window.jQuery, window, document);\r\n\r\n/**\r\n * Lazy Plugin\r\n * @version 2.1.0\r\n * @author Bartosz Wojciechowski\r\n * @author David Deutsch\r\n * @license The MIT License (MIT)\r\n */\r\n;(function($, window, document, undefined) {\r\n\r\n\t/**\r\n\t * Creates the lazy plugin.\r\n\t * @class The Lazy Plugin\r\n\t * @param {Owl} carousel - The Owl Carousel\r\n\t */\r\n\tvar Lazy = function(carousel) {\r\n\r\n\t\t/**\r\n\t\t * Reference to the core.\r\n\t\t * @protected\r\n\t\t * @type {Owl}\r\n\t\t */\r\n\t\tthis._core = carousel;\r\n\r\n\t\t/**\r\n\t\t * Already loaded items.\r\n\t\t * @protected\r\n\t\t * @type {Array.}\r\n\t\t */\r\n\t\tthis._loaded = [];\r\n\r\n\t\t/**\r\n\t\t * Event handlers.\r\n\t\t * @protected\r\n\t\t * @type {Object}\r\n\t\t */\r\n\t\tthis._handlers = {\r\n\t\t\t'initialized.owl.carousel change.owl.carousel resized.owl.carousel': $.proxy(function(e) {\r\n\t\t\t\tif (!e.namespace) {\r\n\t\t\t\t\treturn;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif (!this._core.settings || !this._core.settings.lazyLoad) {\r\n\t\t\t\t\treturn;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif ((e.property && e.property.name == 'position') || e.type == 'initialized') {\r\n\t\t\t\t\tvar settings = this._core.settings,\r\n\t\t\t\t\t\tn = (settings.center && Math.ceil(settings.items / 2) || settings.items),\r\n\t\t\t\t\t\ti = ((settings.center && n * -1) || 0),\r\n\t\t\t\t\t\tposition = (e.property && e.property.value !== undefined ? e.property.value : this._core.current()) + i,\r\n\t\t\t\t\t\tclones = this._core.clones().length,\r\n\t\t\t\t\t\tload = $.proxy(function(i, v) { this.load(v) }, this);\r\n\r\n\t\t\t\t\twhile (i++ < n) {\r\n\t\t\t\t\t\tthis.load(clones / 2 + this._core.relative(position));\r\n\t\t\t\t\t\tclones && $.each(this._core.clones(this._core.relative(position)), load);\r\n\t\t\t\t\t\tposition++;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}, this)\r\n\t\t};\r\n\r\n\t\t// set the default options\r\n\t\tthis._core.options = $.extend({}, Lazy.Defaults, this._core.options);\r\n\r\n\t\t// register event handler\r\n\t\tthis._core.$element.on(this._handlers);\r\n\t};\r\n\r\n\t/**\r\n\t * Default options.\r\n\t * @public\r\n\t */\r\n\tLazy.Defaults = {\r\n\t\tlazyLoad: false\r\n\t};\r\n\r\n\t/**\r\n\t * Loads all resources of an item at the specified position.\r\n\t * @param {Number} position - The absolute position of the item.\r\n\t * @protected\r\n\t */\r\n\tLazy.prototype.load = function(position) {\r\n\t\tvar $item = this._core.$stage.children().eq(position),\r\n\t\t\t$elements = $item && $item.find('.owl-lazy');\r\n\r\n\t\tif (!$elements || $.inArray($item.get(0), this._loaded) > -1) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\t$elements.each($.proxy(function(index, element) {\r\n\t\t\tvar $element = $(element), image,\r\n\t\t\t\turl = (window.devicePixelRatio > 1 && $element.attr('data-src-retina')) || $element.attr('data-src');\r\n\r\n\t\t\tthis._core.trigger('load', { element: $element, url: url }, 'lazy');\r\n\r\n\t\t\tif ($element.is('img')) {\r\n\t\t\t\t$element.one('load.owl.lazy', $.proxy(function() {\r\n\t\t\t\t\t$element.css('opacity', 1);\r\n\t\t\t\t\tthis._core.trigger('loaded', { element: $element, url: url }, 'lazy');\r\n\t\t\t\t}, this)).attr('src', url);\r\n\t\t\t} else {\r\n\t\t\t\timage = new Image();\r\n\t\t\t\timage.onload = $.proxy(function() {\r\n\t\t\t\t\t$element.css({\r\n\t\t\t\t\t\t'background-image': 'url(\"' + url + '\")',\r\n\t\t\t\t\t\t'opacity': '1'\r\n\t\t\t\t\t});\r\n\t\t\t\t\tthis._core.trigger('loaded', { element: $element, url: url }, 'lazy');\r\n\t\t\t\t}, this);\r\n\t\t\t\timage.src = url;\r\n\t\t\t}\r\n\t\t}, this));\r\n\r\n\t\tthis._loaded.push($item.get(0));\r\n\t};\r\n\r\n\t/**\r\n\t * Destroys the plugin.\r\n\t * @public\r\n\t */\r\n\tLazy.prototype.destroy = function() {\r\n\t\tvar handler, property;\r\n\r\n\t\tfor (handler in this.handlers) {\r\n\t\t\tthis._core.$element.off(handler, this.handlers[handler]);\r\n\t\t}\r\n\t\tfor (property in Object.getOwnPropertyNames(this)) {\r\n\t\t\ttypeof this[property] != 'function' && (this[property] = null);\r\n\t\t}\r\n\t};\r\n\r\n\t$.fn.owlCarousel.Constructor.Plugins.Lazy = Lazy;\r\n\r\n})(window.Zepto || window.jQuery, window, document);\r\n\r\n/**\r\n * AutoHeight Plugin\r\n * @version 2.1.0\r\n * @author Bartosz Wojciechowski\r\n * @author David Deutsch\r\n * @license The MIT License (MIT)\r\n */\r\n;(function($, window, document, undefined) {\r\n\r\n\t/**\r\n\t * Creates the auto height plugin.\r\n\t * @class The Auto Height Plugin\r\n\t * @param {Owl} carousel - The Owl Carousel\r\n\t */\r\n\tvar AutoHeight = function(carousel) {\r\n\t\t/**\r\n\t\t * Reference to the core.\r\n\t\t * @protected\r\n\t\t * @type {Owl}\r\n\t\t */\r\n\t\tthis._core = carousel;\r\n\r\n\t\t/**\r\n\t\t * All event handlers.\r\n\t\t * @protected\r\n\t\t * @type {Object}\r\n\t\t */\r\n\t\tthis._handlers = {\r\n\t\t\t'initialized.owl.carousel refreshed.owl.carousel': $.proxy(function(e) {\r\n\t\t\t\tif (e.namespace && this._core.settings.autoHeight) {\r\n\t\t\t\t\tthis.update();\r\n\t\t\t\t}\r\n\t\t\t}, this),\r\n\t\t\t'changed.owl.carousel': $.proxy(function(e) {\r\n\t\t\t\tif (e.namespace && this._core.settings.autoHeight && e.property.name == 'position'){\r\n\t\t\t\t\tthis.update();\r\n\t\t\t\t}\r\n\t\t\t}, this),\r\n\t\t\t'loaded.owl.lazy': $.proxy(function(e) {\r\n\t\t\t\tif (e.namespace && this._core.settings.autoHeight\r\n\t\t\t\t\t&& e.element.closest('.' + this._core.settings.itemClass).index() === this._core.current()) {\r\n\t\t\t\t\tthis.update();\r\n\t\t\t\t}\r\n\t\t\t}, this)\r\n\t\t};\r\n\r\n\t\t// set default options\r\n\t\tthis._core.options = $.extend({}, AutoHeight.Defaults, this._core.options);\r\n\r\n\t\t// register event handlers\r\n\t\tthis._core.$element.on(this._handlers);\r\n\t};\r\n\r\n\t/**\r\n\t * Default options.\r\n\t * @public\r\n\t */\r\n\tAutoHeight.Defaults = {\r\n\t\tautoHeight: false,\r\n\t\tautoHeightClass: 'owl-height'\r\n\t};\r\n\r\n\t/**\r\n\t * Updates the view.\r\n\t */\r\n\tAutoHeight.prototype.update = function() {\r\n\t\tvar start = this._core._current,\r\n\t\t\tend = start + this._core.settings.items,\r\n\t\t\tvisible = this._core.$stage.children().toArray().slice(start, end),\r\n\t\t\theights = [],\r\n\t\t\tmaxheight = 0;\r\n\r\n\t\t$.each(visible, function(index, item) {\r\n\t\t\theights.push($(item).height());\r\n\t\t});\r\n\r\n\t\tmaxheight = Math.max.apply(null, heights);\r\n\r\n\t\tthis._core.$stage.parent()\r\n\t\t\t.height(maxheight)\r\n\t\t\t.addClass(this._core.settings.autoHeightClass);\r\n\t};\r\n\r\n\tAutoHeight.prototype.destroy = function() {\r\n\t\tvar handler, property;\r\n\r\n\t\tfor (handler in this._handlers) {\r\n\t\t\tthis._core.$element.off(handler, this._handlers[handler]);\r\n\t\t}\r\n\t\tfor (property in Object.getOwnPropertyNames(this)) {\r\n\t\t\ttypeof this[property] != 'function' && (this[property] = null);\r\n\t\t}\r\n\t};\r\n\r\n\t$.fn.owlCarousel.Constructor.Plugins.AutoHeight = AutoHeight;\r\n\r\n})(window.Zepto || window.jQuery, window, document);\r\n\r\n/**\r\n * Video Plugin\r\n * @version 2.1.0\r\n * @author Bartosz Wojciechowski\r\n * @author David Deutsch\r\n * @license The MIT License (MIT)\r\n */\r\n;(function($, window, document, undefined) {\r\n\r\n\t/**\r\n\t * Creates the video plugin.\r\n\t * @class The Video Plugin\r\n\t * @param {Owl} carousel - The Owl Carousel\r\n\t */\r\n\tvar Video = function(carousel) {\r\n\t\t/**\r\n\t\t * Reference to the core.\r\n\t\t * @protected\r\n\t\t * @type {Owl}\r\n\t\t */\r\n\t\tthis._core = carousel;\r\n\r\n\t\t/**\r\n\t\t * Cache all video URLs.\r\n\t\t * @protected\r\n\t\t * @type {Object}\r\n\t\t */\r\n\t\tthis._videos = {};\r\n\r\n\t\t/**\r\n\t\t * Current playing item.\r\n\t\t * @protected\r\n\t\t * @type {jQuery}\r\n\t\t */\r\n\t\tthis._playing = null;\r\n\r\n\t\t/**\r\n\t\t * All event handlers.\r\n\t\t * @todo The cloned content removale is too late\r\n\t\t * @protected\r\n\t\t * @type {Object}\r\n\t\t */\r\n\t\tthis._handlers = {\r\n\t\t\t'initialized.owl.carousel': $.proxy(function(e) {\r\n\t\t\t\tif (e.namespace) {\r\n\t\t\t\t\tthis._core.register({ type: 'state', name: 'playing', tags: [ 'interacting' ] });\r\n\t\t\t\t}\r\n\t\t\t}, this),\r\n\t\t\t'resize.owl.carousel': $.proxy(function(e) {\r\n\t\t\t\tif (e.namespace && this._core.settings.video && this.isInFullScreen()) {\r\n\t\t\t\t\te.preventDefault();\r\n\t\t\t\t}\r\n\t\t\t}, this),\r\n\t\t\t'refreshed.owl.carousel': $.proxy(function(e) {\r\n\t\t\t\tif (e.namespace && this._core.is('resizing')) {\r\n\t\t\t\t\tthis._core.$stage.find('.cloned .owl-video-frame').remove();\r\n\t\t\t\t}\r\n\t\t\t}, this),\r\n\t\t\t'changed.owl.carousel': $.proxy(function(e) {\r\n\t\t\t\tif (e.namespace && e.property.name === 'position' && this._playing) {\r\n\t\t\t\t\tthis.stop();\r\n\t\t\t\t}\r\n\t\t\t}, this),\r\n\t\t\t'prepared.owl.carousel': $.proxy(function(e) {\r\n\t\t\t\tif (!e.namespace) {\r\n\t\t\t\t\treturn;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tvar $element = $(e.content).find('.owl-video');\r\n\r\n\t\t\t\tif ($element.length) {\r\n\t\t\t\t\t$element.css('display', 'none');\r\n\t\t\t\t\tthis.fetch($element, $(e.content));\r\n\t\t\t\t}\r\n\t\t\t}, this)\r\n\t\t};\r\n\r\n\t\t// set default options\r\n\t\tthis._core.options = $.extend({}, Video.Defaults, this._core.options);\r\n\r\n\t\t// register event handlers\r\n\t\tthis._core.$element.on(this._handlers);\r\n\r\n\t\tthis._core.$element.on('click.owl.video', '.owl-video-play-icon', $.proxy(function(e) {\r\n\t\t\tthis.play(e);\r\n\t\t}, this));\r\n\t};\r\n\r\n\t/**\r\n\t * Default options.\r\n\t * @public\r\n\t */\r\n\tVideo.Defaults = {\r\n\t\tvideo: false,\r\n\t\tvideoHeight: false,\r\n\t\tvideoWidth: false\r\n\t};\r\n\r\n\t/**\r\n\t * Gets the video ID and the type (YouTube/Vimeo/vzaar only).\r\n\t * @protected\r\n\t * @param {jQuery} target - The target containing the video data.\r\n\t * @param {jQuery} item - The item containing the video.\r\n\t */\r\n\tVideo.prototype.fetch = function(target, item) {\r\n\t\t\tvar type = (function() {\r\n\t\t\t\t\tif (target.attr('data-vimeo-id')) {\r\n\t\t\t\t\t\treturn 'vimeo';\r\n\t\t\t\t\t} else if (target.attr('data-vzaar-id')) {\r\n\t\t\t\t\t\treturn 'vzaar'\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\treturn 'youtube';\r\n\t\t\t\t\t}\r\n\t\t\t\t})(),\r\n\t\t\t\tid = target.attr('data-vimeo-id') || target.attr('data-youtube-id') || target.attr('data-vzaar-id'),\r\n\t\t\t\twidth = target.attr('data-width') || this._core.settings.videoWidth,\r\n\t\t\t\theight = target.attr('data-height') || this._core.settings.videoHeight,\r\n\t\t\t\turl = target.attr('href');\r\n\r\n\t\tif (url) {\r\n\r\n\t\t\t/*\r\n\t\t\t\t\tParses the id's out of the following urls (and probably more):\r\n\t\t\t\t\thttps://www.youtube.com/watch?v=:id\r\n\t\t\t\t\thttps://youtu.be/:id\r\n\t\t\t\t\thttps://vimeo.com/:id\r\n\t\t\t\t\thttps://vimeo.com/channels/:channel/:id\r\n\t\t\t\t\thttps://vimeo.com/groups/:group/videos/:id\r\n\t\t\t\t\thttps://app.vzaar.com/videos/:id\r\n\r\n\t\t\t\t\tVisual example: https://regexper.com/#(http%3A%7Chttps%3A%7C)%5C%2F%5C%2F(player.%7Cwww.%7Capp.)%3F(vimeo%5C.com%7Cyoutu(be%5C.com%7C%5C.be%7Cbe%5C.googleapis%5C.com)%7Cvzaar%5C.com)%5C%2F(video%5C%2F%7Cvideos%5C%2F%7Cembed%5C%2F%7Cchannels%5C%2F.%2B%5C%2F%7Cgroups%5C%2F.%2B%5C%2F%7Cwatch%5C%3Fv%3D%7Cv%5C%2F)%3F(%5BA-Za-z0-9._%25-%5D*)(%5C%26%5CS%2B)%3F\r\n\t\t\t*/\r\n\r\n\t\t\tid = url.match(/(http:|https:|)\\/\\/(player.|www.|app.)?(vimeo\\.com|youtu(be\\.com|\\.be|be\\.googleapis\\.com)|vzaar\\.com)\\/(video\\/|videos\\/|embed\\/|channels\\/.+\\/|groups\\/.+\\/|watch\\?v=|v\\/)?([A-Za-z0-9._%-]*)(\\&\\S+)?/);\r\n\r\n\t\t\tif (id[3].indexOf('youtu') > -1) {\r\n\t\t\t\ttype = 'youtube';\r\n\t\t\t} else if (id[3].indexOf('vimeo') > -1) {\r\n\t\t\t\ttype = 'vimeo';\r\n\t\t\t} else if (id[3].indexOf('vzaar') > -1) {\r\n\t\t\t\ttype = 'vzaar';\r\n\t\t\t} else {\r\n\t\t\t\tthrow new Error('Video URL not supported.');\r\n\t\t\t}\r\n\t\t\tid = id[6];\r\n\t\t} else {\r\n\t\t\tthrow new Error('Missing video URL.');\r\n\t\t}\r\n\r\n\t\tthis._videos[url] = {\r\n\t\t\ttype: type,\r\n\t\t\tid: id,\r\n\t\t\twidth: width,\r\n\t\t\theight: height\r\n\t\t};\r\n\r\n\t\titem.attr('data-video', url);\r\n\r\n\t\tthis.thumbnail(target, this._videos[url]);\r\n\t};\r\n\r\n\t/**\r\n\t * Creates video thumbnail.\r\n\t * @protected\r\n\t * @param {jQuery} target - The target containing the video data.\r\n\t * @param {Object} info - The video info object.\r\n\t * @see `fetch`\r\n\t */\r\n\tVideo.prototype.thumbnail = function(target, video) {\r\n\t\tvar tnLink,\r\n\t\t\ticon,\r\n\t\t\tpath,\r\n\t\t\tdimensions = video.width && video.height ? 'style=\"width:' + video.width + 'px;height:' + video.height + 'px;\"' : '',\r\n\t\t\tcustomTn = target.find('img'),\r\n\t\t\tsrcType = 'src',\r\n\t\t\tlazyClass = '',\r\n\t\t\tsettings = this._core.settings,\r\n\t\t\tcreate = function(path) {\r\n\t\t\t\ticon = '
';\r\n\r\n\t\t\t\tif (settings.lazyLoad) {\r\n\t\t\t\t\ttnLink = '
';\r\n\t\t\t\t} else {\r\n\t\t\t\t\ttnLink = '
';\r\n\t\t\t\t}\r\n\t\t\t\ttarget.after(tnLink);\r\n\t\t\t\ttarget.after(icon);\r\n\t\t\t};\r\n\r\n\t\t// wrap video content into owl-video-wrapper div\r\n\t\ttarget.wrap('
');\r\n\r\n\t\tif (this._core.settings.lazyLoad) {\r\n\t\t\tsrcType = 'data-src';\r\n\t\t\tlazyClass = 'owl-lazy';\r\n\t\t}\r\n\r\n\t\t// custom thumbnail\r\n\t\tif (customTn.length) {\r\n\t\t\tcreate(customTn.attr(srcType));\r\n\t\t\tcustomTn.remove();\r\n\t\t\treturn false;\r\n\t\t}\r\n\r\n\t\tif (video.type === 'youtube') {\r\n\t\t\tpath = \"//img.youtube.com/vi/\" + video.id + \"/hqdefault.jpg\";\r\n\t\t\tcreate(path);\r\n\t\t} else if (video.type === 'vimeo') {\r\n\t\t\t$.ajax({\r\n\t\t\t\ttype: 'GET',\r\n\t\t\t\turl: '//vimeo.com/api/v2/video/' + video.id + '.json',\r\n\t\t\t\tjsonp: 'callback',\r\n\t\t\t\tdataType: 'jsonp',\r\n\t\t\t\tsuccess: function(data) {\r\n\t\t\t\t\tpath = data[0].thumbnail_large;\r\n\t\t\t\t\tcreate(path);\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t} else if (video.type === 'vzaar') {\r\n\t\t\t$.ajax({\r\n\t\t\t\ttype: 'GET',\r\n\t\t\t\turl: '//vzaar.com/api/videos/' + video.id + '.json',\r\n\t\t\t\tjsonp: 'callback',\r\n\t\t\t\tdataType: 'jsonp',\r\n\t\t\t\tsuccess: function(data) {\r\n\t\t\t\t\tpath = data.framegrab_url;\r\n\t\t\t\t\tcreate(path);\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t}\r\n\t};\r\n\r\n\t/**\r\n\t * Stops the current video.\r\n\t * @public\r\n\t */\r\n\tVideo.prototype.stop = function() {\r\n\t\tthis._core.trigger('stop', null, 'video');\r\n\t\tthis._playing.find('.owl-video-frame').remove();\r\n\t\tthis._playing.removeClass('owl-video-playing');\r\n\t\tthis._playing = null;\r\n\t\tthis._core.leave('playing');\r\n\t\tthis._core.trigger('stopped', null, 'video');\r\n\t};\r\n\r\n\t/**\r\n\t * Starts the current video.\r\n\t * @public\r\n\t * @param {Event} event - The event arguments.\r\n\t */\r\n\tVideo.prototype.play = function(event) {\r\n\t\tvar target = $(event.target),\r\n\t\t\titem = target.closest('.' + this._core.settings.itemClass),\r\n\t\t\tvideo = this._videos[item.attr('data-video')],\r\n\t\t\twidth = video.width || '100%',\r\n\t\t\theight = video.height || this._core.$stage.height(),\r\n\t\t\thtml;\r\n\r\n\t\tif (this._playing) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tthis._core.enter('playing');\r\n\t\tthis._core.trigger('play', null, 'video');\r\n\r\n\t\titem = this._core.items(this._core.relative(item.index()));\r\n\r\n\t\tthis._core.reset(item.index());\r\n\r\n\t\tif (video.type === 'youtube') {\r\n\t\t\thtml = '';\r\n\t\t} else if (video.type === 'vimeo') {\r\n\t\t\thtml = '';\r\n\t\t} else if (video.type === 'vzaar') {\r\n\t\t\thtml = '';\r\n\t\t}\r\n\r\n\t\t$('
' + html + '
').insertAfter(item.find('.owl-video'));\r\n\r\n\t\tthis._playing = item.addClass('owl-video-playing');\r\n\t};\r\n\r\n\t/**\r\n\t * Checks whether an video is currently in full screen mode or not.\r\n\t * @todo Bad style because looks like a readonly method but changes members.\r\n\t * @protected\r\n\t * @returns {Boolean}\r\n\t */\r\n\tVideo.prototype.isInFullScreen = function() {\r\n\t\tvar element = document.fullscreenElement || document.mozFullScreenElement ||\r\n\t\t\t\tdocument.webkitFullscreenElement;\r\n\r\n\t\treturn element && $(element).parent().hasClass('owl-video-frame');\r\n\t};\r\n\r\n\t/**\r\n\t * Destroys the plugin.\r\n\t */\r\n\tVideo.prototype.destroy = function() {\r\n\t\tvar handler, property;\r\n\r\n\t\tthis._core.$element.off('click.owl.video');\r\n\r\n\t\tfor (handler in this._handlers) {\r\n\t\t\tthis._core.$element.off(handler, this._handlers[handler]);\r\n\t\t}\r\n\t\tfor (property in Object.getOwnPropertyNames(this)) {\r\n\t\t\ttypeof this[property] != 'function' && (this[property] = null);\r\n\t\t}\r\n\t};\r\n\r\n\t$.fn.owlCarousel.Constructor.Plugins.Video = Video;\r\n\r\n})(window.Zepto || window.jQuery, window, document);\r\n\r\n/**\r\n * Animate Plugin\r\n * @version 2.1.0\r\n * @author Bartosz Wojciechowski\r\n * @author David Deutsch\r\n * @license The MIT License (MIT)\r\n */\r\n;(function($, window, document, undefined) {\r\n\r\n\t/**\r\n\t * Creates the animate plugin.\r\n\t * @class The Navigation Plugin\r\n\t * @param {Owl} scope - The Owl Carousel\r\n\t */\r\n\tvar Animate = function(scope) {\r\n\t\tthis.core = scope;\r\n\t\tthis.core.options = $.extend({}, Animate.Defaults, this.core.options);\r\n\t\tthis.swapping = true;\r\n\t\tthis.previous = undefined;\r\n\t\tthis.next = undefined;\r\n\r\n\t\tthis.handlers = {\r\n\t\t\t'change.owl.carousel': $.proxy(function(e) {\r\n\t\t\t\tif (e.namespace && e.property.name == 'position') {\r\n\t\t\t\t\tthis.previous = this.core.current();\r\n\t\t\t\t\tthis.next = e.property.value;\r\n\t\t\t\t}\r\n\t\t\t}, this),\r\n\t\t\t'drag.owl.carousel dragged.owl.carousel translated.owl.carousel': $.proxy(function(e) {\r\n\t\t\t\tif (e.namespace) {\r\n\t\t\t\t\tthis.swapping = e.type == 'translated';\r\n\t\t\t\t}\r\n\t\t\t}, this),\r\n\t\t\t'translate.owl.carousel': $.proxy(function(e) {\r\n\t\t\t\tif (e.namespace && this.swapping && (this.core.options.animateOut || this.core.options.animateIn)) {\r\n\t\t\t\t\tthis.swap();\r\n\t\t\t\t}\r\n\t\t\t}, this)\r\n\t\t};\r\n\r\n\t\tthis.core.$element.on(this.handlers);\r\n\t};\r\n\r\n\t/**\r\n\t * Default options.\r\n\t * @public\r\n\t */\r\n\tAnimate.Defaults = {\r\n\t\tanimateOut: false,\r\n\t\tanimateIn: false\r\n\t};\r\n\r\n\t/**\r\n\t * Toggles the animation classes whenever an translations starts.\r\n\t * @protected\r\n\t * @returns {Boolean|undefined}\r\n\t */\r\n\tAnimate.prototype.swap = function() {\r\n\r\n\t\tif (this.core.settings.items !== 1) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tif (!$.support.animation || !$.support.transition) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tthis.core.speed(0);\r\n\r\n\t\tvar left,\r\n\t\t\tclear = $.proxy(this.clear, this),\r\n\t\t\tprevious = this.core.$stage.children().eq(this.previous),\r\n\t\t\tnext = this.core.$stage.children().eq(this.next),\r\n\t\t\tincoming = this.core.settings.animateIn,\r\n\t\t\toutgoing = this.core.settings.animateOut;\r\n\r\n\t\tif (this.core.current() === this.previous) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tif (outgoing) {\r\n\t\t\tleft = this.core.coordinates(this.previous) - this.core.coordinates(this.next);\r\n\t\t\tprevious.one($.support.animation.end, clear)\r\n\t\t\t\t.css( { 'left': left + 'px' } )\r\n\t\t\t\t.addClass('animated owl-animated-out')\r\n\t\t\t\t.addClass(outgoing);\r\n\t\t}\r\n\r\n\t\tif (incoming) {\r\n\t\t\tnext.one($.support.animation.end, clear)\r\n\t\t\t\t.addClass('animated owl-animated-in')\r\n\t\t\t\t.addClass(incoming);\r\n\t\t}\r\n\t};\r\n\r\n\tAnimate.prototype.clear = function(e) {\r\n\t\t$(e.target).css( { 'left': '' } )\r\n\t\t\t.removeClass('animated owl-animated-out owl-animated-in')\r\n\t\t\t.removeClass(this.core.settings.animateIn)\r\n\t\t\t.removeClass(this.core.settings.animateOut);\r\n\t\tthis.core.onTransitionEnd();\r\n\t};\r\n\r\n\t/**\r\n\t * Destroys the plugin.\r\n\t * @public\r\n\t */\r\n\tAnimate.prototype.destroy = function() {\r\n\t\tvar handler, property;\r\n\r\n\t\tfor (handler in this.handlers) {\r\n\t\t\tthis.core.$element.off(handler, this.handlers[handler]);\r\n\t\t}\r\n\t\tfor (property in Object.getOwnPropertyNames(this)) {\r\n\t\t\ttypeof this[property] != 'function' && (this[property] = null);\r\n\t\t}\r\n\t};\r\n\r\n\t$.fn.owlCarousel.Constructor.Plugins.Animate = Animate;\r\n\r\n})(window.Zepto || window.jQuery, window, document);\r\n\r\n/**\r\n * Autoplay Plugin\r\n * @version 2.1.0\r\n * @author Bartosz Wojciechowski\r\n * @author Artus Kolanowski\r\n * @author David Deutsch\r\n * @license The MIT License (MIT)\r\n */\r\n;(function($, window, document, undefined) {\r\n\r\n\t/**\r\n\t * Creates the autoplay plugin.\r\n\t * @class The Autoplay Plugin\r\n\t * @param {Owl} scope - The Owl Carousel\r\n\t */\r\n\tvar Autoplay = function(carousel) {\r\n\t\t/**\r\n\t\t * Reference to the core.\r\n\t\t * @protected\r\n\t\t * @type {Owl}\r\n\t\t */\r\n\t\tthis._core = carousel;\r\n\r\n\t\t/**\r\n\t\t * The autoplay timeout.\r\n\t\t * @type {Timeout}\r\n\t\t */\r\n\t\tthis._timeout = null;\r\n\r\n\t\t/**\r\n\t\t * Indicates whenever the autoplay is paused.\r\n\t\t * @type {Boolean}\r\n\t\t */\r\n\t\tthis._paused = false;\r\n\r\n\t\t/**\r\n\t\t * All event handlers.\r\n\t\t * @protected\r\n\t\t * @type {Object}\r\n\t\t */\r\n\t\tthis._handlers = {\r\n\t\t\t'changed.owl.carousel': $.proxy(function(e) {\r\n\t\t\t\tif (e.namespace && e.property.name === 'settings') {\r\n\t\t\t\t\tif (this._core.settings.autoplay) {\r\n\t\t\t\t\t\tthis.play();\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\tthis.stop();\r\n\t\t\t\t\t}\r\n\t\t\t\t} else if (e.namespace && e.property.name === 'position') {\r\n\t\t\t\t\t//console.log('play?', e);\r\n\t\t\t\t\tif (this._core.settings.autoplay) {\r\n\t\t\t\t\t\tthis._setAutoPlayInterval();\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}, this),\r\n\t\t\t'initialized.owl.carousel': $.proxy(function(e) {\r\n\t\t\t\tif (e.namespace && this._core.settings.autoplay) {\r\n\t\t\t\t\tthis.play();\r\n\t\t\t\t}\r\n\t\t\t}, this),\r\n\t\t\t'play.owl.autoplay': $.proxy(function(e, t, s) {\r\n\t\t\t\tif (e.namespace) {\r\n\t\t\t\t\tthis.play(t, s);\r\n\t\t\t\t}\r\n\t\t\t}, this),\r\n\t\t\t'stop.owl.autoplay': $.proxy(function(e) {\r\n\t\t\t\tif (e.namespace) {\r\n\t\t\t\t\tthis.stop();\r\n\t\t\t\t}\r\n\t\t\t}, this),\r\n\t\t\t'mouseover.owl.autoplay': $.proxy(function() {\r\n\t\t\t\tif (this._core.settings.autoplayHoverPause && this._core.is('rotating')) {\r\n\t\t\t\t\tthis.pause();\r\n\t\t\t\t}\r\n\t\t\t}, this),\r\n\t\t\t'mouseleave.owl.autoplay': $.proxy(function() {\r\n\t\t\t\tif (this._core.settings.autoplayHoverPause && this._core.is('rotating')) {\r\n\t\t\t\t\tthis.play();\r\n\t\t\t\t}\r\n\t\t\t}, this),\r\n\t\t\t'touchstart.owl.core': $.proxy(function() {\r\n\t\t\t\tif (this._core.settings.autoplayHoverPause && this._core.is('rotating')) {\r\n\t\t\t\t\tthis.pause();\r\n\t\t\t\t}\r\n\t\t\t}, this),\r\n\t\t\t'touchend.owl.core': $.proxy(function() {\r\n\t\t\t\tif (this._core.settings.autoplayHoverPause) {\r\n\t\t\t\t\tthis.play();\r\n\t\t\t\t}\r\n\t\t\t}, this)\r\n\t\t};\r\n\r\n\t\t// register event handlers\r\n\t\tthis._core.$element.on(this._handlers);\r\n\r\n\t\t// set default options\r\n\t\tthis._core.options = $.extend({}, Autoplay.Defaults, this._core.options);\r\n\t};\r\n\r\n\t/**\r\n\t * Default options.\r\n\t * @public\r\n\t */\r\n\tAutoplay.Defaults = {\r\n\t\tautoplay: false,\r\n\t\tautoplayTimeout: 5000,\r\n\t\tautoplayHoverPause: false,\r\n\t\tautoplaySpeed: false\r\n\t};\r\n\r\n\t/**\r\n\t * Starts the autoplay.\r\n\t * @public\r\n\t * @param {Number} [timeout] - The interval before the next animation starts.\r\n\t * @param {Number} [speed] - The animation speed for the animations.\r\n\t */\r\n\tAutoplay.prototype.play = function(timeout, speed) {\r\n\t\tthis._paused = false;\r\n\r\n\t\tif (this._core.is('rotating')) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tthis._core.enter('rotating');\r\n\r\n\t\tthis._setAutoPlayInterval();\r\n\t};\r\n\r\n\t/**\r\n\t * Gets a new timeout\r\n\t * @private\r\n\t * @param {Number} [timeout] - The interval before the next animation starts.\r\n\t * @param {Number} [speed] - The animation speed for the animations.\r\n\t * @return {Timeout}\r\n\t */\r\n\tAutoplay.prototype._getNextTimeout = function(timeout, speed) {\r\n\t\tif ( this._timeout ) {\r\n\t\t\twindow.clearTimeout(this._timeout);\r\n\t\t}\r\n\t\treturn window.setTimeout($.proxy(function() {\r\n\t\t\tif (this._paused || this._core.is('busy') || this._core.is('interacting') || document.hidden) {\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\t\t\tthis._core.next(speed || this._core.settings.autoplaySpeed);\r\n\t\t}, this), timeout || this._core.settings.autoplayTimeout);\r\n\t};\r\n\r\n\t/**\r\n\t * Sets autoplay in motion.\r\n\t * @private\r\n\t */\r\n\tAutoplay.prototype._setAutoPlayInterval = function() {\r\n\t\tthis._timeout = this._getNextTimeout();\r\n\t};\r\n\r\n\t/**\r\n\t * Stops the autoplay.\r\n\t * @public\r\n\t */\r\n\tAutoplay.prototype.stop = function() {\r\n\t\tif (!this._core.is('rotating')) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\twindow.clearTimeout(this._timeout);\r\n\t\tthis._core.leave('rotating');\r\n\t};\r\n\r\n\t/**\r\n\t * Stops the autoplay.\r\n\t * @public\r\n\t */\r\n\tAutoplay.prototype.pause = function() {\r\n\t\tif (!this._core.is('rotating')) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tthis._paused = true;\r\n\t};\r\n\r\n\t/**\r\n\t * Destroys the plugin.\r\n\t */\r\n\tAutoplay.prototype.destroy = function() {\r\n\t\tvar handler, property;\r\n\r\n\t\tthis.stop();\r\n\r\n\t\tfor (handler in this._handlers) {\r\n\t\t\tthis._core.$element.off(handler, this._handlers[handler]);\r\n\t\t}\r\n\t\tfor (property in Object.getOwnPropertyNames(this)) {\r\n\t\t\ttypeof this[property] != 'function' && (this[property] = null);\r\n\t\t}\r\n\t};\r\n\r\n\t$.fn.owlCarousel.Constructor.Plugins.autoplay = Autoplay;\r\n\r\n})(window.Zepto || window.jQuery, window, document);\r\n\r\n/**\r\n * Navigation Plugin\r\n * @version 2.1.0\r\n * @author Artus Kolanowski\r\n * @author David Deutsch\r\n * @license The MIT License (MIT)\r\n */\r\n;(function($, window, document, undefined) {\r\n\t'use strict';\r\n\r\n\t/**\r\n\t * Creates the navigation plugin.\r\n\t * @class The Navigation Plugin\r\n\t * @param {Owl} carousel - The Owl Carousel.\r\n\t */\r\n\tvar Navigation = function(carousel) {\r\n\t\t/**\r\n\t\t * Reference to the core.\r\n\t\t * @protected\r\n\t\t * @type {Owl}\r\n\t\t */\r\n\t\tthis._core = carousel;\r\n\r\n\t\t/**\r\n\t\t * Indicates whether the plugin is initialized or not.\r\n\t\t * @protected\r\n\t\t * @type {Boolean}\r\n\t\t */\r\n\t\tthis._initialized = false;\r\n\r\n\t\t/**\r\n\t\t * The current paging indexes.\r\n\t\t * @protected\r\n\t\t * @type {Array}\r\n\t\t */\r\n\t\tthis._pages = [];\r\n\r\n\t\t/**\r\n\t\t * All DOM elements of the user interface.\r\n\t\t * @protected\r\n\t\t * @type {Object}\r\n\t\t */\r\n\t\tthis._controls = {};\r\n\r\n\t\t/**\r\n\t\t * Markup for an indicator.\r\n\t\t * @protected\r\n\t\t * @type {Array.}\r\n\t\t */\r\n\t\tthis._templates = [];\r\n\r\n\t\t/**\r\n\t\t * The carousel element.\r\n\t\t * @type {jQuery}\r\n\t\t */\r\n\t\tthis.$element = this._core.$element;\r\n\r\n\t\t/**\r\n\t\t * Overridden methods of the carousel.\r\n\t\t * @protected\r\n\t\t * @type {Object}\r\n\t\t */\r\n\t\tthis._overrides = {\r\n\t\t\tnext: this._core.next,\r\n\t\t\tprev: this._core.prev,\r\n\t\t\tto: this._core.to\r\n\t\t};\r\n\r\n\t\t/**\r\n\t\t * All event handlers.\r\n\t\t * @protected\r\n\t\t * @type {Object}\r\n\t\t */\r\n\t\tthis._handlers = {\r\n\t\t\t'prepared.owl.carousel': $.proxy(function(e) {\r\n\t\t\t\tif (e.namespace && this._core.settings.dotsData) {\r\n\t\t\t\t\tthis._templates.push('
' +\r\n\t\t\t\t\t\t$(e.content).find('[data-dot]').addBack('[data-dot]').attr('data-dot') + '
');\r\n\t\t\t\t}\r\n\t\t\t}, this),\r\n\t\t\t'added.owl.carousel': $.proxy(function(e) {\r\n\t\t\t\tif (e.namespace && this._core.settings.dotsData) {\r\n\t\t\t\t\tthis._templates.splice(e.position, 0, this._templates.pop());\r\n\t\t\t\t}\r\n\t\t\t}, this),\r\n\t\t\t'remove.owl.carousel': $.proxy(function(e) {\r\n\t\t\t\tif (e.namespace && this._core.settings.dotsData) {\r\n\t\t\t\t\tthis._templates.splice(e.position, 1);\r\n\t\t\t\t}\r\n\t\t\t}, this),\r\n\t\t\t'changed.owl.carousel': $.proxy(function(e) {\r\n\t\t\t\tif (e.namespace && e.property.name == 'position') {\r\n\t\t\t\t\tthis.draw();\r\n\t\t\t\t}\r\n\t\t\t}, this),\r\n\t\t\t'initialized.owl.carousel': $.proxy(function(e) {\r\n\t\t\t\tif (e.namespace && !this._initialized) {\r\n\t\t\t\t\tthis._core.trigger('initialize', null, 'navigation');\r\n\t\t\t\t\tthis.initialize();\r\n\t\t\t\t\tthis.update();\r\n\t\t\t\t\tthis.draw();\r\n\t\t\t\t\tthis._initialized = true;\r\n\t\t\t\t\tthis._core.trigger('initialized', null, 'navigation');\r\n\t\t\t\t}\r\n\t\t\t}, this),\r\n\t\t\t'refreshed.owl.carousel': $.proxy(function(e) {\r\n\t\t\t\tif (e.namespace && this._initialized) {\r\n\t\t\t\t\tthis._core.trigger('refresh', null, 'navigation');\r\n\t\t\t\t\tthis.update();\r\n\t\t\t\t\tthis.draw();\r\n\t\t\t\t\tthis._core.trigger('refreshed', null, 'navigation');\r\n\t\t\t\t}\r\n\t\t\t}, this)\r\n\t\t};\r\n\r\n\t\t// set default options\r\n\t\tthis._core.options = $.extend({}, Navigation.Defaults, this._core.options);\r\n\r\n\t\t// register event handlers\r\n\t\tthis.$element.on(this._handlers);\r\n\t};\r\n\r\n\t/**\r\n\t * Default options.\r\n\t * @public\r\n\t * @todo Rename `slideBy` to `navBy`\r\n\t */\r\n\tNavigation.Defaults = {\r\n\t\tnav: false,\r\n\t\tnavText: [ 'prev', 'next' ],\r\n\t\tnavSpeed: false,\r\n\t\tnavElement: 'div',\r\n\t\tnavContainer: false,\r\n\t\tnavContainerClass: 'owl-nav',\r\n\t\tnavClass: [ 'owl-prev', 'owl-next' ],\r\n\t\tslideBy: 1,\r\n\t\tdotClass: 'owl-dot',\r\n\t\tdotsClass: 'owl-dots',\r\n\t\tdots: true,\r\n\t\tdotsEach: false,\r\n\t\tdotsData: false,\r\n\t\tdotsSpeed: false,\r\n\t\tdotsContainer: false\r\n\t};\r\n\r\n\t/**\r\n\t * Initializes the layout of the plugin and extends the carousel.\r\n\t * @protected\r\n\t */\r\n\tNavigation.prototype.initialize = function() {\r\n\t\tvar override,\r\n\t\t\tsettings = this._core.settings;\r\n\r\n\t\t// create DOM structure for relative navigation\r\n\t\tthis._controls.$relative = (settings.navContainer ? $(settings.navContainer)\r\n\t\t\t: $('
').addClass(settings.navContainerClass).appendTo(this.$element)).addClass('disabled');\r\n\r\n\t\tthis._controls.$previous = $('<' + settings.navElement + '>')\r\n\t\t\t.addClass(settings.navClass[0])\r\n\t\t\t.html(settings.navText[0])\r\n\t\t\t.prependTo(this._controls.$relative)\r\n\t\t\t.on('click', $.proxy(function(e) {\r\n\t\t\t\tthis.prev(settings.navSpeed);\r\n\t\t\t}, this));\r\n\t\tthis._controls.$next = $('<' + settings.navElement + '>')\r\n\t\t\t.addClass(settings.navClass[1])\r\n\t\t\t.html(settings.navText[1])\r\n\t\t\t.appendTo(this._controls.$relative)\r\n\t\t\t.on('click', $.proxy(function(e) {\r\n\t\t\t\tthis.next(settings.navSpeed);\r\n\t\t\t}, this));\r\n\r\n\t\t// create DOM structure for absolute navigation\r\n\t\tif (!settings.dotsData) {\r\n\t\t\tthis._templates = [ $('
')\r\n\t\t\t\t.addClass(settings.dotClass)\r\n\t\t\t\t.append($(''))\r\n\t\t\t\t.prop('outerHTML') ];\r\n\t\t}\r\n\r\n\t\tthis._controls.$absolute = (settings.dotsContainer ? $(settings.dotsContainer)\r\n\t\t\t: $('
').addClass(settings.dotsClass).appendTo(this.$element)).addClass('disabled');\r\n\r\n\t\tthis._controls.$absolute.on('click', 'div', $.proxy(function(e) {\r\n\t\t\tvar index = $(e.target).parent().is(this._controls.$absolute)\r\n\t\t\t\t? $(e.target).index() : $(e.target).parent().index();\r\n\r\n\t\t\te.preventDefault();\r\n\r\n\t\t\tthis.to(index, settings.dotsSpeed);\r\n\t\t}, this));\r\n\r\n\t\t// override public methods of the carousel\r\n\t\tfor (override in this._overrides) {\r\n\t\t\tthis._core[override] = $.proxy(this[override], this);\r\n\t\t}\r\n\t};\r\n\r\n\t/**\r\n\t * Destroys the plugin.\r\n\t * @protected\r\n\t */\r\n\tNavigation.prototype.destroy = function() {\r\n\t\tvar handler, control, property, override;\r\n\r\n\t\tfor (handler in this._handlers) {\r\n\t\t\tthis.$element.off(handler, this._handlers[handler]);\r\n\t\t}\r\n\t\tfor (control in this._controls) {\r\n\t\t\tthis._controls[control].remove();\r\n\t\t}\r\n\t\tfor (override in this.overides) {\r\n\t\t\tthis._core[override] = this._overrides[override];\r\n\t\t}\r\n\t\tfor (property in Object.getOwnPropertyNames(this)) {\r\n\t\t\ttypeof this[property] != 'function' && (this[property] = null);\r\n\t\t}\r\n\t};\r\n\r\n\t/**\r\n\t * Updates the internal state.\r\n\t * @protected\r\n\t */\r\n\tNavigation.prototype.update = function() {\r\n\t\tvar i, j, k,\r\n\t\t\tlower = this._core.clones().length / 2,\r\n\t\t\tupper = lower + this._core.items().length,\r\n\t\t\tmaximum = this._core.maximum(true),\r\n\t\t\tsettings = this._core.settings,\r\n\t\t\tsize = settings.center || settings.autoWidth || settings.dotsData\r\n\t\t\t\t? 1 : settings.dotsEach || settings.items;\r\n\r\n\t\tif (settings.slideBy !== 'page') {\r\n\t\t\tsettings.slideBy = Math.min(settings.slideBy, settings.items);\r\n\t\t}\r\n\r\n\t\tif (settings.dots || settings.slideBy == 'page') {\r\n\t\t\tthis._pages = [];\r\n\r\n\t\t\tfor (i = lower, j = 0, k = 0; i < upper; i++) {\r\n\t\t\t\tif (j >= size || j === 0) {\r\n\t\t\t\t\tthis._pages.push({\r\n\t\t\t\t\t\tstart: Math.min(maximum, i - lower),\r\n\t\t\t\t\t\tend: i - lower + size - 1\r\n\t\t\t\t\t});\r\n\t\t\t\t\tif (Math.min(maximum, i - lower) === maximum) {\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t}\r\n\t\t\t\t\tj = 0, ++k;\r\n\t\t\t\t}\r\n\t\t\t\tj += this._core.mergers(this._core.relative(i));\r\n\t\t\t}\r\n\t\t}\r\n\t};\r\n\r\n\t/**\r\n\t * Draws the user interface.\r\n\t * @todo The option `dotsData` wont work.\r\n\t * @protected\r\n\t */\r\n\tNavigation.prototype.draw = function() {\r\n\t\tvar difference,\r\n\t\t\tsettings = this._core.settings,\r\n\t\t\tdisabled = this._core.items().length <= settings.items,\r\n\t\t\tindex = this._core.relative(this._core.current()),\r\n\t\t\tloop = settings.loop || settings.rewind;\r\n\r\n\t\tthis._controls.$relative.toggleClass('disabled', !settings.nav || disabled);\r\n\r\n\t\tif (settings.nav) {\r\n\t\t\tthis._controls.$previous.toggleClass('disabled', !loop && index <= this._core.minimum(true));\r\n\t\t\tthis._controls.$next.toggleClass('disabled', !loop && index >= this._core.maximum(true));\r\n\t\t}\r\n\r\n\t\tthis._controls.$absolute.toggleClass('disabled', !settings.dots || disabled);\r\n\r\n\t\tif (settings.dots) {\r\n\t\t\tdifference = this._pages.length - this._controls.$absolute.children().length;\r\n\r\n\t\t\tif (settings.dotsData && difference !== 0) {\r\n\t\t\t\tthis._controls.$absolute.html(this._templates.join(''));\r\n\t\t\t} else if (difference > 0) {\r\n\t\t\t\tthis._controls.$absolute.append(new Array(difference + 1).join(this._templates[0]));\r\n\t\t\t} else if (difference < 0) {\r\n\t\t\t\tthis._controls.$absolute.children().slice(difference).remove();\r\n\t\t\t}\r\n\r\n\t\t\tthis._controls.$absolute.find('.active').removeClass('active');\r\n\t\t\tthis._controls.$absolute.children().eq($.inArray(this.current(), this._pages)).addClass('active');\r\n\t\t}\r\n\t};\r\n\r\n\t/**\r\n\t * Extends event data.\r\n\t * @protected\r\n\t * @param {Event} event - The event object which gets thrown.\r\n\t */\r\n\tNavigation.prototype.onTrigger = function(event) {\r\n\t\tvar settings = this._core.settings;\r\n\r\n\t\tevent.page = {\r\n\t\t\tindex: $.inArray(this.current(), this._pages),\r\n\t\t\tcount: this._pages.length,\r\n\t\t\tsize: settings && (settings.center || settings.autoWidth || settings.dotsData\r\n\t\t\t\t? 1 : settings.dotsEach || settings.items)\r\n\t\t};\r\n\t};\r\n\r\n\t/**\r\n\t * Gets the current page position of the carousel.\r\n\t * @protected\r\n\t * @returns {Number}\r\n\t */\r\n\tNavigation.prototype.current = function() {\r\n\t\tvar current = this._core.relative(this._core.current());\r\n\t\treturn $.grep(this._pages, $.proxy(function(page, index) {\r\n\t\t\treturn page.start <= current && page.end >= current;\r\n\t\t}, this)).pop();\r\n\t};\r\n\r\n\t/**\r\n\t * Gets the current succesor/predecessor position.\r\n\t * @protected\r\n\t * @returns {Number}\r\n\t */\r\n\tNavigation.prototype.getPosition = function(successor) {\r\n\t\tvar position, length,\r\n\t\t\tsettings = this._core.settings;\r\n\r\n\t\tif (settings.slideBy == 'page') {\r\n\t\t\tposition = $.inArray(this.current(), this._pages);\r\n\t\t\tlength = this._pages.length;\r\n\t\t\tsuccessor ? ++position : --position;\r\n\t\t\tposition = this._pages[((position % length) + length) % length].start;\r\n\t\t} else {\r\n\t\t\tposition = this._core.relative(this._core.current());\r\n\t\t\tlength = this._core.items().length;\r\n\t\t\tsuccessor ? position += settings.slideBy : position -= settings.slideBy;\r\n\t\t}\r\n\r\n\t\treturn position;\r\n\t};\r\n\r\n\t/**\r\n\t * Slides to the next item or page.\r\n\t * @public\r\n\t * @param {Number} [speed=false] - The time in milliseconds for the transition.\r\n\t */\r\n\tNavigation.prototype.next = function(speed) {\r\n\t\t$.proxy(this._overrides.to, this._core)(this.getPosition(true), speed);\r\n\t};\r\n\r\n\t/**\r\n\t * Slides to the previous item or page.\r\n\t * @public\r\n\t * @param {Number} [speed=false] - The time in milliseconds for the transition.\r\n\t */\r\n\tNavigation.prototype.prev = function(speed) {\r\n\t\t$.proxy(this._overrides.to, this._core)(this.getPosition(false), speed);\r\n\t};\r\n\r\n\t/**\r\n\t * Slides to the specified item or page.\r\n\t * @public\r\n\t * @param {Number} position - The position of the item or page.\r\n\t * @param {Number} [speed] - The time in milliseconds for the transition.\r\n\t * @param {Boolean} [standard=false] - Whether to use the standard behaviour or not.\r\n\t */\r\n\tNavigation.prototype.to = function(position, speed, standard) {\r\n\t\tvar length;\r\n\r\n\t\tif (!standard && this._pages.length) {\r\n\t\t\tlength = this._pages.length;\r\n\t\t\t$.proxy(this._overrides.to, this._core)(this._pages[((position % length) + length) % length].start, speed);\r\n\t\t} else {\r\n\t\t\t$.proxy(this._overrides.to, this._core)(position, speed);\r\n\t\t}\r\n\t};\r\n\r\n\t$.fn.owlCarousel.Constructor.Plugins.Navigation = Navigation;\r\n\r\n})(window.Zepto || window.jQuery, window, document);\r\n\r\n/**\r\n * Hash Plugin\r\n * @version 2.1.0\r\n * @author Artus Kolanowski\r\n * @author David Deutsch\r\n * @license The MIT License (MIT)\r\n */\r\n;(function($, window, document, undefined) {\r\n\t'use strict';\r\n\r\n\t/**\r\n\t * Creates the hash plugin.\r\n\t * @class The Hash Plugin\r\n\t * @param {Owl} carousel - The Owl Carousel\r\n\t */\r\n\tvar Hash = function(carousel) {\r\n\t\t/**\r\n\t\t * Reference to the core.\r\n\t\t * @protected\r\n\t\t * @type {Owl}\r\n\t\t */\r\n\t\tthis._core = carousel;\r\n\r\n\t\t/**\r\n\t\t * Hash index for the items.\r\n\t\t * @protected\r\n\t\t * @type {Object}\r\n\t\t */\r\n\t\tthis._hashes = {};\r\n\r\n\t\t/**\r\n\t\t * The carousel element.\r\n\t\t * @type {jQuery}\r\n\t\t */\r\n\t\tthis.$element = this._core.$element;\r\n\r\n\t\t/**\r\n\t\t * All event handlers.\r\n\t\t * @protected\r\n\t\t * @type {Object}\r\n\t\t */\r\n\t\tthis._handlers = {\r\n\t\t\t'initialized.owl.carousel': $.proxy(function(e) {\r\n\t\t\t\tif (e.namespace && this._core.settings.startPosition === 'URLHash') {\r\n\t\t\t\t\t$(window).trigger('hashchange.owl.navigation');\r\n\t\t\t\t}\r\n\t\t\t}, this),\r\n\t\t\t'prepared.owl.carousel': $.proxy(function(e) {\r\n\t\t\t\tif (e.namespace) {\r\n\t\t\t\t\tvar hash = $(e.content).find('[data-hash]').addBack('[data-hash]').attr('data-hash');\r\n\r\n\t\t\t\t\tif (!hash) {\r\n\t\t\t\t\t\treturn;\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tthis._hashes[hash] = e.content;\r\n\t\t\t\t}\r\n\t\t\t}, this),\r\n\t\t\t'changed.owl.carousel': $.proxy(function(e) {\r\n\t\t\t\tif (e.namespace && e.property.name === 'position') {\r\n\t\t\t\t\tvar current = this._core.items(this._core.relative(this._core.current())),\r\n\t\t\t\t\t\thash = $.map(this._hashes, function(item, hash) {\r\n\t\t\t\t\t\t\treturn item === current ? hash : null;\r\n\t\t\t\t\t\t}).join();\r\n\r\n\t\t\t\t\tif (!hash || window.location.hash.slice(1) === hash) {\r\n\t\t\t\t\t\treturn;\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\twindow.location.hash = hash;\r\n\t\t\t\t}\r\n\t\t\t}, this)\r\n\t\t};\r\n\r\n\t\t// set default options\r\n\t\tthis._core.options = $.extend({}, Hash.Defaults, this._core.options);\r\n\r\n\t\t// register the event handlers\r\n\t\tthis.$element.on(this._handlers);\r\n\r\n\t\t// register event listener for hash navigation\r\n\t\t$(window).on('hashchange.owl.navigation', $.proxy(function(e) {\r\n\t\t\tvar hash = window.location.hash.substring(1),\r\n\t\t\t\titems = this._core.$stage.children(),\r\n\t\t\t\tposition = this._hashes[hash] && items.index(this._hashes[hash]);\r\n\r\n\t\t\tif (position === undefined || position === this._core.current()) {\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\r\n\t\t\tthis._core.to(this._core.relative(position), false, true);\r\n\t\t}, this));\r\n\t};\r\n\r\n\t/**\r\n\t * Default options.\r\n\t * @public\r\n\t */\r\n\tHash.Defaults = {\r\n\t\tURLhashListener: false\r\n\t};\r\n\r\n\t/**\r\n\t * Destroys the plugin.\r\n\t * @public\r\n\t */\r\n\tHash.prototype.destroy = function() {\r\n\t\tvar handler, property;\r\n\r\n\t\t$(window).off('hashchange.owl.navigation');\r\n\r\n\t\tfor (handler in this._handlers) {\r\n\t\t\tthis._core.$element.off(handler, this._handlers[handler]);\r\n\t\t}\r\n\t\tfor (property in Object.getOwnPropertyNames(this)) {\r\n\t\t\ttypeof this[property] != 'function' && (this[property] = null);\r\n\t\t}\r\n\t};\r\n\r\n\t$.fn.owlCarousel.Constructor.Plugins.Hash = Hash;\r\n\r\n})(window.Zepto || window.jQuery, window, document);\r\n\r\n/**\r\n * Support Plugin\r\n *\r\n * @version 2.1.0\r\n * @author Vivid Planet Software GmbH\r\n * @author Artus Kolanowski\r\n * @author David Deutsch\r\n * @license The MIT License (MIT)\r\n */\r\n;(function($, window, document, undefined) {\r\n\r\n\tvar style = $('').get(0).style,\r\n\t\tprefixes = 'Webkit Moz O ms'.split(' '),\r\n\t\tevents = {\r\n\t\t\ttransition: {\r\n\t\t\t\tend: {\r\n\t\t\t\t\tWebkitTransition: 'webkitTransitionEnd',\r\n\t\t\t\t\tMozTransition: 'transitionend',\r\n\t\t\t\t\tOTransition: 'oTransitionEnd',\r\n\t\t\t\t\ttransition: 'transitionend'\r\n\t\t\t\t}\r\n\t\t\t},\r\n\t\t\tanimation: {\r\n\t\t\t\tend: {\r\n\t\t\t\t\tWebkitAnimation: 'webkitAnimationEnd',\r\n\t\t\t\t\tMozAnimation: 'animationend',\r\n\t\t\t\t\tOAnimation: 'oAnimationEnd',\r\n\t\t\t\t\tanimation: 'animationend'\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t},\r\n\t\ttests = {\r\n\t\t\tcsstransforms: function() {\r\n\t\t\t\treturn !!test('transform');\r\n\t\t\t},\r\n\t\t\tcsstransforms3d: function() {\r\n\t\t\t\treturn !!test('perspective');\r\n\t\t\t},\r\n\t\t\tcsstransitions: function() {\r\n\t\t\t\treturn !!test('transition');\r\n\t\t\t},\r\n\t\t\tcssanimations: function() {\r\n\t\t\t\treturn !!test('animation');\r\n\t\t\t}\r\n\t\t};\r\n\r\n\tfunction test(property, prefixed) {\r\n\t\tvar result = false,\r\n\t\t\tupper = property.charAt(0).toUpperCase() + property.slice(1);\r\n\r\n\t\t$.each((property + ' ' + prefixes.join(upper + ' ') + upper).split(' '), function(i, property) {\r\n\t\t\tif (style[property] !== undefined) {\r\n\t\t\t\tresult = prefixed ? property : true;\r\n\t\t\t\treturn false;\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\treturn result;\r\n\t}\r\n\r\n\tfunction prefixed(property) {\r\n\t\treturn test(property, true);\r\n\t}\r\n\r\n\tif (tests.csstransitions()) {\r\n\t\t/* jshint -W053 */\r\n\t\t$.support.transition = new String(prefixed('transition'))\r\n\t\t$.support.transition.end = events.transition.end[ $.support.transition ];\r\n\t}\r\n\r\n\tif (tests.cssanimations()) {\r\n\t\t/* jshint -W053 */\r\n\t\t$.support.animation = new String(prefixed('animation'))\r\n\t\t$.support.animation.end = events.animation.end[ $.support.animation ];\r\n\t}\r\n\r\n\tif (tests.csstransforms()) {\r\n\t\t/* jshint -W053 */\r\n\t\t$.support.transform = new String(prefixed('transform'));\r\n\t\t$.support.transform3d = tests.csstransforms3d();\r\n\t}\r\n\r\n})(window.Zepto || window.jQuery, window, document);\r\n","/*! picturefill - v3.0.2 - 2016-02-12\r\n * https://scottjehl.github.io/picturefill/\r\n * Copyright (c) 2016 https://github.com/scottjehl/picturefill/blob/master/Authors.txt; Licensed MIT\r\n */\r\n!function (a) { var b = navigator.userAgent; a.HTMLPictureElement && /ecko/.test(b) && b.match(/rv\\:(\\d+)/) && RegExp.$1 < 45 && addEventListener(\"resize\", function () { var b, c = document.createElement(\"source\"), d = function (a) { var b, d, e = a.parentNode; \"PICTURE\" === e.nodeName.toUpperCase() ? (b = c.cloneNode(), e.insertBefore(b, e.firstElementChild), setTimeout(function () { e.removeChild(b) })) : (!a._pfLastSize || a.offsetWidth > a._pfLastSize) && (a._pfLastSize = a.offsetWidth, d = a.sizes, a.sizes += \",100vw\", setTimeout(function () { a.sizes = d })) }, e = function () { var a, b = document.querySelectorAll(\"picture > img, img[srcset][sizes]\"); for (a = 0; a < b.length; a++)d(b[a]) }, f = function () { clearTimeout(b), b = setTimeout(e, 99) }, g = a.matchMedia && matchMedia(\"(orientation: landscape)\"), h = function () { f(), g && g.addListener && g.addListener(f) }; return c.srcset = \"data:image/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==\", /^[c|i]|d$/.test(document.readyState || \"\") ? h() : document.addEventListener(\"DOMContentLoaded\", h), f }()) }(window), function (a, b, c) { \"use strict\"; function d(a) { return \" \" === a || \" \" === a || \"\\n\" === a || \"\\f\" === a || \"\\r\" === a } function e(b, c) { var d = new a.Image; return d.onerror = function () { A[b] = !1, ba() }, d.onload = function () { A[b] = 1 === d.width, ba() }, d.src = c, \"pending\" } function f() { M = !1, P = a.devicePixelRatio, N = {}, O = {}, s.DPR = P || 1, Q.width = Math.max(a.innerWidth || 0, z.clientWidth), Q.height = Math.max(a.innerHeight || 0, z.clientHeight), Q.vw = Q.width / 100, Q.vh = Q.height / 100, r = [Q.height, Q.width, P].join(\"-\"), Q.em = s.getEmValue(), Q.rem = Q.em } function g(a, b, c, d) { var e, f, g, h; return \"saveData\" === B.algorithm ? a > 2.7 ? h = c + 1 : (f = b - c, e = Math.pow(a - .6, 1.5), g = f * e, d && (g += .1 * e), h = a + g) : h = c > 1 ? Math.sqrt(a * b) : a, h > c } function h(a) { var b, c = s.getSet(a), d = !1; \"pending\" !== c && (d = r, c && (b = s.setRes(c), s.applySetCandidate(b, a))), a[s.ns].evaled = d } function i(a, b) { return a.res - b.res } function j(a, b, c) { var d; return !c && b && (c = a[s.ns].sets, c = c && c[c.length - 1]), d = k(b, c), d && (b = s.makeUrl(b), a[s.ns].curSrc = b, a[s.ns].curCan = d, d.res || aa(d, d.set.sizes)), d } function k(a, b) { var c, d, e; if (a && b) for (e = s.parseSet(b), a = s.makeUrl(a), c = 0; c < e.length; c++)if (a === s.makeUrl(e[c].url)) { d = e[c]; break } return d } function l(a, b) { var c, d, e, f, g = a.getElementsByTagName(\"source\"); for (c = 0, d = g.length; d > c; c++)e = g[c], e[s.ns] = !0, f = e.getAttribute(\"srcset\"), f && b.push({ srcset: f, media: e.getAttribute(\"media\"), type: e.getAttribute(\"type\"), sizes: e.getAttribute(\"sizes\") }) } function m(a, b) { function c(b) { var c, d = b.exec(a.substring(m)); return d ? (c = d[0], m += c.length, c) : void 0 } function e() { var a, c, d, e, f, i, j, k, l, m = !1, o = {}; for (e = 0; e < h.length; e++)f = h[e], i = f[f.length - 1], j = f.substring(0, f.length - 1), k = parseInt(j, 10), l = parseFloat(j), X.test(j) && \"w\" === i ? ((a || c) && (m = !0), 0 === k ? m = !0 : a = k) : Y.test(j) && \"x\" === i ? ((a || c || d) && (m = !0), 0 > l ? m = !0 : c = l) : X.test(j) && \"h\" === i ? ((d || c) && (m = !0), 0 === k ? m = !0 : d = k) : m = !0; m || (o.url = g, a && (o.w = a), c && (o.d = c), d && (o.h = d), d || c || a || (o.d = 1), 1 === o.d && (b.has1x = !0), o.set = b, n.push(o)) } function f() { for (c(T), i = \"\", j = \"in descriptor\"; ;) { if (k = a.charAt(m), \"in descriptor\" === j) if (d(k)) i && (h.push(i), i = \"\", j = \"after descriptor\"); else { if (\",\" === k) return m += 1, i && h.push(i), void e(); if (\"(\" === k) i += k, j = \"in parens\"; else { if (\"\" === k) return i && h.push(i), void e(); i += k } } else if (\"in parens\" === j) if (\")\" === k) i += k, j = \"in descriptor\"; else { if (\"\" === k) return h.push(i), void e(); i += k } else if (\"after descriptor\" === j) if (d(k)); else { if (\"\" === k) return void e(); j = \"in descriptor\", m -= 1 } m += 1 } } for (var g, h, i, j, k, l = a.length, m = 0, n = []; ;) { if (c(U), m >= l) return n; g = c(V), h = [], \",\" === g.slice(-1) ? (g = g.replace(W, \"\"), e()) : f() } } function n(a) { function b(a) { function b() { f && (g.push(f), f = \"\") } function c() { g[0] && (h.push(g), g = []) } for (var e, f = \"\", g = [], h = [], i = 0, j = 0, k = !1; ;) { if (e = a.charAt(j), \"\" === e) return b(), c(), h; if (k) { if (\"*\" === e && \"/\" === a[j + 1]) { k = !1, j += 2, b(); continue } j += 1 } else { if (d(e)) { if (a.charAt(j - 1) && d(a.charAt(j - 1)) || !f) { j += 1; continue } if (0 === i) { b(), j += 1; continue } e = \" \" } else if (\"(\" === e) i += 1; else if (\")\" === e) i -= 1; else { if (\",\" === e) { b(), c(), j += 1; continue } if (\"/\" === e && \"*\" === a.charAt(j + 1)) { k = !0, j += 2; continue } } f += e, j += 1 } } } function c(a) { return k.test(a) && parseFloat(a) >= 0 ? !0 : l.test(a) ? !0 : \"0\" === a || \"-0\" === a || \"+0\" === a ? !0 : !1 } var e, f, g, h, i, j, k = /^(?:[+-]?[0-9]+|[0-9]*\\.[0-9]+)(?:[eE][+-]?[0-9]+)?(?:ch|cm|em|ex|in|mm|pc|pt|px|rem|vh|vmin|vmax|vw)$/i, l = /^calc\\((?:[0-9a-z \\.\\+\\-\\*\\/\\(\\)]+)\\)$/i; for (f = b(a), g = f.length, e = 0; g > e; e++)if (h = f[e], i = h[h.length - 1], c(i)) { if (j = i, h.pop(), 0 === h.length) return j; if (h = h.join(\" \"), s.matchesMedia(h)) return j } return \"100vw\" } b.createElement(\"picture\"); var o, p, q, r, s = {}, t = !1, u = function () { }, v = b.createElement(\"img\"), w = v.getAttribute, x = v.setAttribute, y = v.removeAttribute, z = b.documentElement, A = {}, B = { algorithm: \"\" }, C = \"data-pfsrc\", D = C + \"set\", E = navigator.userAgent, F = /rident/.test(E) || /ecko/.test(E) && E.match(/rv\\:(\\d+)/) && RegExp.$1 > 35, G = \"currentSrc\", H = /\\s+\\+?\\d+(e\\d+)?w/, I = /(\\([^)]+\\))?\\s*(.+)/, J = a.picturefillCFG, K = \"position:absolute;left:0;visibility:hidden;display:block;padding:0;border:none;font-size:1em;width:1em;overflow:hidden;clip:rect(0px, 0px, 0px, 0px)\", L = \"font-size:100%!important;\", M = !0, N = {}, O = {}, P = a.devicePixelRatio, Q = { px: 1, \"in\": 96 }, R = b.createElement(\"a\"), S = !1, T = /^[ \\t\\n\\r\\u000c]+/, U = /^[, \\t\\n\\r\\u000c]+/, V = /^[^ \\t\\n\\r\\u000c]+/, W = /[,]+$/, X = /^\\d+$/, Y = /^-?(?:[0-9]+|[0-9]*\\.[0-9]+)(?:[eE][+-]?[0-9]+)?$/, Z = function (a, b, c, d) { a.addEventListener ? a.addEventListener(b, c, d || !1) : a.attachEvent && a.attachEvent(\"on\" + b, c) }, $ = function (a) { var b = {}; return function (c) { return c in b || (b[c] = a(c)), b[c] } }, _ = function () { var a = /^([\\d\\.]+)(em|vw|px)$/, b = function () { for (var a = arguments, b = 0, c = a[0]; ++b in a;)c = c.replace(a[b], a[++b]); return c }, c = $(function (a) { return \"return \" + b((a || \"\").toLowerCase(), /\\band\\b/g, \"&&\", /,/g, \"||\", /min-([a-z-\\s]+):/g, \"e.$1>=\", /max-([a-z-\\s]+):/g, \"e.$1<=\", /calc([^)]+)/g, \"($1)\", /(\\d+[\\.]*[\\d]*)([a-z]+)/g, \"($1 * e.$2)\", /^(?!(e.[a-z]|[0-9\\.&=|><\\+\\-\\*\\(\\)\\/])).*/gi, \"\") + \";\" }); return function (b, d) { var e; if (!(b in N)) if (N[b] = !1, d && (e = b.match(a))) N[b] = e[1] * Q[e[2]]; else try { N[b] = new Function(\"e\", c(b))(Q) } catch (f) { } return N[b] } }(), aa = function (a, b) { return a.w ? (a.cWidth = s.calcListLength(b || \"100vw\"), a.res = a.w / a.cWidth) : a.res = a.d, a }, ba = function (a) { if (t) { var c, d, e, f = a || {}; if (f.elements && 1 === f.elements.nodeType && (\"IMG\" === f.elements.nodeName.toUpperCase() ? f.elements = [f.elements] : (f.context = f.elements, f.elements = null)), c = f.elements || s.qsa(f.context || b, f.reevaluate || f.reselect ? s.sel : s.selShort), e = c.length) { for (s.setupRun(f), S = !0, d = 0; e > d; d++)s.fillImg(c[d], f); s.teardownRun(f) } } }; o = a.console && console.warn ? function (a) { console.warn(a) } : u, G in v || (G = \"src\"), A[\"image/jpeg\"] = !0, A[\"image/gif\"] = !0, A[\"image/png\"] = !0, A[\"image/svg+xml\"] = b.implementation.hasFeature(\"http://www.w3.org/TR/SVG11/feature#Image\", \"1.1\"), s.ns = (\"pf\" + (new Date).getTime()).substr(0, 9), s.supSrcset = \"srcset\" in v, s.supSizes = \"sizes\" in v, s.supPicture = !!a.HTMLPictureElement, s.supSrcset && s.supPicture && !s.supSizes && !function (a) { v.srcset = \"data:,a\", a.src = \"data:,a\", s.supSrcset = v.complete === a.complete, s.supPicture = s.supSrcset && s.supPicture }(b.createElement(\"img\")), s.supSrcset && !s.supSizes ? !function () { var a = \"data:image/gif;base64,R0lGODlhAgABAPAAAP///wAAACH5BAAAAAAALAAAAAACAAEAAAICBAoAOw==\", c = \"data:image/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==\", d = b.createElement(\"img\"), e = function () { var a = d.width; 2 === a && (s.supSizes = !0), q = s.supSrcset && !s.supSizes, t = !0, setTimeout(ba) }; d.onload = e, d.onerror = e, d.setAttribute(\"sizes\", \"9px\"), d.srcset = c + \" 1w,\" + a + \" 9w\", d.src = c }() : t = !0, s.selShort = \"picture>img,img[srcset]\", s.sel = s.selShort, s.cfg = B, s.DPR = P || 1, s.u = Q, s.types = A, s.setSize = u, s.makeUrl = $(function (a) { return R.href = a, R.href }), s.qsa = function (a, b) { return \"querySelector\" in a ? a.querySelectorAll(b) : [] }, s.matchesMedia = function () { return a.matchMedia && (matchMedia(\"(min-width: 0.1em)\") || {}).matches ? s.matchesMedia = function (a) { return !a || matchMedia(a).matches } : s.matchesMedia = s.mMQ, s.matchesMedia.apply(this, arguments) }, s.mMQ = function (a) { return a ? _(a) : !0 }, s.calcLength = function (a) { var b = _(a, !0) || !1; return 0 > b && (b = !1), b }, s.supportsType = function (a) { return a ? A[a] : !0 }, s.parseSize = $(function (a) { var b = (a || \"\").match(I); return { media: b && b[1], length: b && b[2] } }), s.parseSet = function (a) { return a.cands || (a.cands = m(a.srcset, a)), a.cands }, s.getEmValue = function () { var a; if (!p && (a = b.body)) { var c = b.createElement(\"div\"), d = z.style.cssText, e = a.style.cssText; c.style.cssText = K, z.style.cssText = L, a.style.cssText = L, a.appendChild(c), p = c.offsetWidth, a.removeChild(c), p = parseFloat(p, 10), z.style.cssText = d, a.style.cssText = e } return p || 16 }, s.calcListLength = function (a) { if (!(a in O) || B.uT) { var b = s.calcLength(n(a)); O[a] = b ? b : Q.width } return O[a] }, s.setRes = function (a) { var b; if (a) { b = s.parseSet(a); for (var c = 0, d = b.length; d > c; c++)aa(b[c], a.sizes) } return b }, s.setRes.res = aa, s.applySetCandidate = function (a, b) { if (a.length) { var c, d, e, f, h, k, l, m, n, o = b[s.ns], p = s.DPR; if (k = o.curSrc || b[G], l = o.curCan || j(b, k, a[0].set), l && l.set === a[0].set && (n = F && !b.complete && l.res - .1 > p, n || (l.cached = !0, l.res >= p && (h = l))), !h) for (a.sort(i), f = a.length, h = a[f - 1], d = 0; f > d; d++)if (c = a[d], c.res >= p) { e = d - 1, h = a[e] && (n || k !== s.makeUrl(c.url)) && g(a[e].res, c.res, p, a[e].cached) ? a[e] : c; break } h && (m = s.makeUrl(h.url), o.curSrc = m, o.curCan = h, m !== k && s.setSrc(b, h), s.setSize(b)) } }, s.setSrc = function (a, b) { var c; a.src = b.url, \"image/svg+xml\" === b.set.type && (c = a.style.width, a.style.width = a.offsetWidth + 1 + \"px\", a.offsetWidth + 1 && (a.style.width = c)) }, s.getSet = function (a) { var b, c, d, e = !1, f = a[s.ns].sets; for (b = 0; b < f.length && !e; b++)if (c = f[b], c.srcset && s.matchesMedia(c.media) && (d = s.supportsType(c.type))) { \"pending\" === d && (c = d), e = c; break } return e }, s.parseSets = function (a, b, d) { var e, f, g, h, i = b && \"PICTURE\" === b.nodeName.toUpperCase(), j = a[s.ns]; (j.src === c || d.src) && (j.src = w.call(a, \"src\"), j.src ? x.call(a, C, j.src) : y.call(a, C)), (j.srcset === c || d.srcset || !s.supSrcset || a.srcset) && (e = w.call(a, \"srcset\"), j.srcset = e, h = !0), j.sets = [], i && (j.pic = !0, l(b, j.sets)), j.srcset ? (f = { srcset: j.srcset, sizes: w.call(a, \"sizes\") }, j.sets.push(f), g = (q || j.src) && H.test(j.srcset || \"\"), g || !j.src || k(j.src, f) || f.has1x || (f.srcset += \", \" + j.src, f.cands.push({ url: j.src, d: 1, set: f }))) : j.src && j.sets.push({ srcset: j.src, sizes: null }), j.curCan = null, j.curSrc = c, j.supported = !(i || f && !s.supSrcset || g && !s.supSizes), h && s.supSrcset && !j.supported && (e ? (x.call(a, D, e), a.srcset = \"\") : y.call(a, D)), j.supported && !j.srcset && (!j.src && a.src || a.src !== s.makeUrl(j.src)) && (null === j.src ? a.removeAttribute(\"src\") : a.src = j.src), j.parsed = !0 }, s.fillImg = function (a, b) { var c, d = b.reselect || b.reevaluate; a[s.ns] || (a[s.ns] = {}), c = a[s.ns], (d || c.evaled !== r) && ((!c.parsed || b.reevaluate) && s.parseSets(a, a.parentNode, b), c.supported ? c.evaled = r : h(a)) }, s.setupRun = function () { (!S || M || P !== a.devicePixelRatio) && f() }, s.supPicture ? (ba = u, s.fillImg = u) : !function () { var c, d = a.attachEvent ? /d$|^c/ : /d$|^c|^i/, e = function () { var a = b.readyState || \"\"; f = setTimeout(e, \"loading\" === a ? 200 : 999), b.body && (s.fillImgs(), c = c || d.test(a), c && clearTimeout(f)) }, f = setTimeout(e, b.body ? 9 : 99), g = function (a, b) { var c, d, e = function () { var f = new Date - d; b > f ? c = setTimeout(e, b - f) : (c = null, a()) }; return function () { d = new Date, c || (c = setTimeout(e, b)) } }, h = z.clientHeight, i = function () { M = Math.max(a.innerWidth || 0, z.clientWidth) !== Q.width || z.clientHeight !== h, h = z.clientHeight, M && s.fillImgs() }; Z(a, \"resize\", g(i, 99)), Z(b, \"readystatechange\", e) }(), s.picturefill = ba, s.fillImgs = ba, s.teardownRun = u, ba._ = s, a.picturefillCFG = { pf: s, push: function (a) { var b = a.shift(); \"function\" == typeof s[b] ? s[b].apply(s, a) : (B[b] = a[0], S && s.fillImgs({ reselect: !0 })) } }; for (; J && J.length;)a.picturefillCFG.push(J.shift()); a.picturefill = ba, \"object\" == typeof module && \"object\" == typeof module.exports ? module.exports = ba : \"function\" == typeof define && define.amd && define(\"picturefill\", function () { return ba }), s.supPicture || (A[\"image/webp\"] = e(\"image/webp\", \"data:image/webp;base64,UklGRkoAAABXRUJQVlA4WAoAAAAQAAAAAAAAAAAAQUxQSAwAAAABBxAR/Q9ERP8DAABWUDggGAAAADABAJ0BKgEAAQADADQlpAADcAD++/1QAA==\")) }(window, document);","(function( w ) {\r\n \"use strict\";\r\n\r\n /**\r\n * Utilities\r\n */\r\n var escapeRegExp = function( string ) {\r\n return string.replace( /[.*+?^${}()|[\\]\\\\]/g, '\\\\$&' );\r\n };\r\n\r\n /**\r\n * Default options\r\n * Redefine this value to replace some of the options\r\n * (ex: w.picturefillBackgroundOptions.selector = \"custom\";)\r\n */\r\n w.picturefillBackgroundOptions = {\r\n selector: \"picturefill-background\",\r\n //backgroundSize: \"cover\",\r\n //backgroundRepeat: \"no-repeat\",\r\n //backgroundPosition: \"50% 50%\"\r\n };\r\n\r\n /**\r\n * Apply a responsive background image\r\n */\r\n w.picturefillBackground = function() {\r\n var picturefills = w.document.getElementsByClassName( w.picturefillBackgroundOptions.selector );\r\n\r\n for ( var i = 0, il = picturefills.length; i < il; i++ ) {\r\n var sources = picturefills[ i ].getElementsByTagName( \"span\" ),\r\n matches = [];\r\n\r\n for( var j = 0, jl = sources.length; j < jl; j++ ) {\r\n var src = sources[ j ].getAttribute( \"data-src\" ),\r\n media = sources[ j ].getAttribute( \"data-media\" );\r\n\r\n if ( src && (!media || ( w.matchMedia && w.matchMedia( media ).matches )) ) {\r\n matches.push( src );\r\n }\r\n }\r\n\r\n if ( matches.length ) {\r\n src = matches.pop();\r\n var exp = new RegExp( escapeRegExp( src ) );\r\n\r\n // Update target element's background image, if necessary\r\n if ( !exp.test( picturefills[ i ].style.backgroundImage ) ) {\r\n picturefills[i].style.backgroundImage = \"url('\" + src + \"')\";\r\n picturefills[i].style.backgroundSize = w.picturefillBackgroundOptions.backgroundSize;\r\n picturefills[i].style.backgroundRepeat = w.picturefillBackgroundOptions.backgroundRepeat;\r\n picturefills[i].style.backgroundPosition = w.picturefillBackgroundOptions.backgroundPosition;\r\n }\r\n }\r\n }\r\n };\r\n\r\n /**\r\n * Run on resize and domready (w.load as a fallback)\r\n */\r\n if ( w.addEventListener ) {\r\n w.addEventListener( \"load\", w.picturefillBackground, false );\r\n w.addEventListener( \"resize\", w.picturefillBackground, false );\r\n w.addEventListener( \"DOMContentLoaded\", function() {\r\n w.picturefillBackground();\r\n w.removeEventListener( \"load\", w.picturefillBackground, false );\r\n }, false );\r\n }\r\n else if ( w.attachEvent ) {\r\n w.attachEvent( \"onload\", w.picturefillBackground );\r\n }\r\n\r\n}( this ));\r\n","/**\r\n * what-input - A global utility for tracking the current input method (mouse, keyboard or touch).\r\n * @version v5.0.3\r\n * @link https://github.com/ten1seven/what-input\r\n * @license MIT\r\n */\r\n(function webpackUniversalModuleDefinition(root, factory) {\r\n if (typeof exports === 'object' && typeof module === 'object')\r\n module.exports = factory();\r\n else if (typeof define === 'function' && define.amd)\r\n define(\"whatInput\", [], factory);\r\n else if (typeof exports === 'object')\r\n exports[\"whatInput\"] = factory();\r\n else\r\n root[\"whatInput\"] = factory();\r\n})(this, function () {\r\n return /******/ (function (modules) { // webpackBootstrap\r\n /******/ \t// The module cache\r\n /******/ \tvar installedModules = {};\r\n\r\n /******/ \t// The require function\r\n /******/ \tfunction __webpack_require__(moduleId) {\r\n\r\n /******/ \t\t// Check if module is in cache\r\n /******/ \t\tif (installedModules[moduleId])\r\n /******/ \t\t\treturn installedModules[moduleId].exports;\r\n\r\n /******/ \t\t// Create a new module (and put it into the cache)\r\n /******/ \t\tvar module = installedModules[moduleId] = {\r\n /******/ \t\t\texports: {},\r\n /******/ \t\t\tid: moduleId,\r\n /******/ \t\t\tloaded: false\r\n /******/\r\n };\r\n\r\n /******/ \t\t// Execute the module function\r\n /******/ \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\r\n\r\n /******/ \t\t// Flag the module as loaded\r\n /******/ \t\tmodule.loaded = true;\r\n\r\n /******/ \t\t// Return the exports of the module\r\n /******/ \t\treturn module.exports;\r\n /******/\r\n }\r\n\r\n\r\n /******/ \t// expose the modules object (__webpack_modules__)\r\n /******/ \t__webpack_require__.m = modules;\r\n\r\n /******/ \t// expose the module cache\r\n /******/ \t__webpack_require__.c = installedModules;\r\n\r\n /******/ \t// __webpack_public_path__\r\n /******/ \t__webpack_require__.p = \"\";\r\n\r\n /******/ \t// Load entry module and return exports\r\n /******/ \treturn __webpack_require__(0);\r\n /******/\r\n })\r\n /************************************************************************/\r\n /******/([\r\n /* 0 */\r\n /***/ (function (module, exports) {\r\n\r\n 'use strict';\r\n\r\n module.exports = function () {\r\n /*\r\n * variables\r\n */\r\n\r\n // cache document.documentElement\r\n var docElem = document.documentElement;\r\n\r\n // currently focused dom element\r\n var currentElement = null;\r\n\r\n // last used input type\r\n var currentInput = 'initial';\r\n\r\n // last used input intent\r\n var currentIntent = currentInput;\r\n\r\n // event buffer timer\r\n var eventTimer = null;\r\n\r\n // form input types\r\n var formInputs = ['input', 'select', 'textarea'];\r\n\r\n // empty array for holding callback functions\r\n var functionList = [];\r\n\r\n // list of modifier keys commonly used with the mouse and\r\n // can be safely ignored to prevent false keyboard detection\r\n var ignoreMap = [16, // shift\r\n 17, // control\r\n 18, // alt\r\n 91, // Windows key / left Apple cmd\r\n 93 // Windows menu / right Apple cmd\r\n ];\r\n\r\n // mapping of events to input types\r\n var inputMap = {\r\n keydown: 'keyboard',\r\n keyup: 'keyboard',\r\n mousedown: 'mouse',\r\n mousemove: 'mouse',\r\n MSPointerDown: 'pointer',\r\n MSPointerMove: 'pointer',\r\n pointerdown: 'pointer',\r\n pointermove: 'pointer',\r\n touchstart: 'touch'\r\n\r\n // boolean: true if touch buffer is active\r\n }; var isBuffering = false;\r\n\r\n // boolean: true if the page is being scrolled\r\n var isScrolling = false;\r\n\r\n // store current mouse position\r\n var mousePos = {\r\n x: null,\r\n y: null\r\n\r\n // map of IE 10 pointer events\r\n }; var pointerMap = {\r\n 2: 'touch',\r\n 3: 'touch', // treat pen like touch\r\n 4: 'mouse'\r\n\r\n // check support for passive event listeners\r\n }; var supportsPassive = false;\r\n\r\n try {\r\n var opts = Object.defineProperty({}, 'passive', {\r\n get: function get() {\r\n supportsPassive = true;\r\n }\r\n });\r\n\r\n window.addEventListener('test', null, opts);\r\n } catch (e) { }\r\n\r\n /*\r\n * set up\r\n */\r\n\r\n var setUp = function setUp() {\r\n // add correct mouse wheel event mapping to `inputMap`\r\n inputMap[detectWheel()] = 'mouse';\r\n\r\n addListeners();\r\n doUpdate('input');\r\n doUpdate('intent');\r\n };\r\n\r\n /*\r\n * events\r\n */\r\n\r\n var addListeners = function addListeners() {\r\n // `pointermove`, `MSPointerMove`, `mousemove` and mouse wheel event binding\r\n // can only demonstrate potential, but not actual, interaction\r\n // and are treated separately\r\n var options = supportsPassive ? { passive: true } : false;\r\n\r\n // pointer events (mouse, pen, touch)\r\n if (window.PointerEvent) {\r\n window.addEventListener('pointerdown', setInput);\r\n window.addEventListener('pointermove', setIntent);\r\n } else if (window.MSPointerEvent) {\r\n window.addEventListener('MSPointerDown', setInput);\r\n window.addEventListener('MSPointerMove', setIntent);\r\n } else {\r\n // mouse events\r\n window.addEventListener('mousedown', setInput);\r\n window.addEventListener('mousemove', setIntent);\r\n\r\n // touch events\r\n if ('ontouchstart' in window) {\r\n window.addEventListener('touchstart', eventBuffer, options);\r\n window.addEventListener('touchend', setInput);\r\n }\r\n }\r\n\r\n // mouse wheel\r\n window.addEventListener(detectWheel(), setIntent, options);\r\n\r\n // keyboard events\r\n window.addEventListener('keydown', eventBuffer);\r\n window.addEventListener('keyup', eventBuffer);\r\n\r\n // focus events\r\n window.addEventListener('focusin', setElement);\r\n window.addEventListener('focusout', clearElement);\r\n };\r\n\r\n // checks conditions before updating new input\r\n var setInput = function setInput(event) {\r\n // only execute if the event buffer timer isn't running\r\n if (!isBuffering) {\r\n var eventKey = event.which;\r\n var value = inputMap[event.type];\r\n\r\n if (value === 'pointer') {\r\n value = pointerType(event);\r\n }\r\n\r\n var shouldUpdate = value === 'keyboard' && eventKey && ignoreMap.indexOf(eventKey) === -1 || value === 'mouse' || value === 'touch';\r\n\r\n if (currentInput !== value && shouldUpdate) {\r\n currentInput = value;\r\n doUpdate('input');\r\n }\r\n\r\n if (currentIntent !== value && shouldUpdate) {\r\n // preserve intent for keyboard typing in form fields\r\n var activeElem = document.activeElement;\r\n var notFormInput = activeElem && activeElem.nodeName && formInputs.indexOf(activeElem.nodeName.toLowerCase()) === -1;\r\n\r\n if (notFormInput) {\r\n currentIntent = value;\r\n doUpdate('intent');\r\n }\r\n }\r\n }\r\n };\r\n\r\n // updates the doc and `inputTypes` array with new input\r\n var doUpdate = function doUpdate(which) {\r\n docElem.setAttribute('data-what' + which, which === 'input' ? currentInput : currentIntent);\r\n\r\n fireFunctions(which);\r\n };\r\n\r\n // updates input intent for `mousemove` and `pointermove`\r\n var setIntent = function setIntent(event) {\r\n // test to see if `mousemove` happened relative to the screen to detect scrolling versus mousemove\r\n detectScrolling(event);\r\n\r\n // only execute if the event buffer timer isn't running\r\n // or scrolling isn't happening\r\n if (!isBuffering && !isScrolling) {\r\n var value = inputMap[event.type];\r\n if (value === 'pointer') {\r\n value = pointerType(event);\r\n }\r\n\r\n if (currentIntent !== value) {\r\n currentIntent = value;\r\n doUpdate('intent');\r\n }\r\n }\r\n };\r\n\r\n var setElement = function setElement(event) {\r\n currentElement = event.target.nodeName.toLowerCase();\r\n docElem.setAttribute('data-whatelement', currentElement);\r\n\r\n if (event.target.classList && event.target.classList.length) {\r\n docElem.setAttribute('data-whatclasses', event.target.classList.toString().replace(' ', ','));\r\n }\r\n };\r\n\r\n var clearElement = function clearElement() {\r\n currentElement = null;\r\n\r\n docElem.removeAttribute('data-whatelement');\r\n docElem.removeAttribute('data-whatclasses');\r\n };\r\n\r\n // buffers events that frequently also fire mouse events\r\n var eventBuffer = function eventBuffer(event) {\r\n // set the current input\r\n setInput(event);\r\n\r\n // clear the timer if it happens to be running\r\n window.clearTimeout(eventTimer);\r\n\r\n // set the isBuffering to `true`\r\n isBuffering = true;\r\n\r\n // run the timer\r\n eventTimer = window.setTimeout(function () {\r\n // if the timer runs out, set isBuffering back to `false`\r\n isBuffering = false;\r\n }, 100);\r\n };\r\n\r\n /*\r\n * utilities\r\n */\r\n\r\n var pointerType = function pointerType(event) {\r\n if (typeof event.pointerType === 'number') {\r\n return pointerMap[event.pointerType];\r\n } else {\r\n // treat pen like touch\r\n return event.pointerType === 'pen' ? 'touch' : event.pointerType;\r\n }\r\n };\r\n\r\n // detect version of mouse wheel event to use\r\n // via https://developer.mozilla.org/en-US/docs/Web/Events/wheel\r\n var detectWheel = function detectWheel() {\r\n var wheelType = void 0;\r\n\r\n // Modern browsers support \"wheel\"\r\n if ('onwheel' in document.createElement('div')) {\r\n wheelType = 'wheel';\r\n } else {\r\n // Webkit and IE support at least \"mousewheel\"\r\n // or assume that remaining browsers are older Firefox\r\n wheelType = document.onmousewheel !== undefined ? 'mousewheel' : 'DOMMouseScroll';\r\n }\r\n\r\n return wheelType;\r\n };\r\n\r\n // runs callback functions\r\n var fireFunctions = function fireFunctions(type) {\r\n for (var i = 0, len = functionList.length; i < len; i++) {\r\n if (functionList[i].type === type) {\r\n functionList[i].fn.call(undefined, type === 'input' ? currentInput : currentIntent);\r\n }\r\n }\r\n };\r\n\r\n // finds matching element in an object\r\n var objPos = function objPos(match) {\r\n for (var i = 0, len = functionList.length; i < len; i++) {\r\n if (functionList[i].fn === match) {\r\n return i;\r\n }\r\n }\r\n };\r\n\r\n var detectScrolling = function detectScrolling(event) {\r\n if (mousePos['x'] !== event.screenX || mousePos['y'] !== event.screenY) {\r\n isScrolling = false;\r\n\r\n mousePos['x'] = event.screenX;\r\n mousePos['y'] = event.screenY;\r\n } else {\r\n isScrolling = true;\r\n }\r\n };\r\n\r\n /*\r\n * init\r\n */\r\n\r\n // don't start script unless browser cuts the mustard\r\n // (also passes if polyfills are used)\r\n if ('addEventListener' in window && Array.prototype.indexOf) {\r\n setUp();\r\n }\r\n\r\n /*\r\n * api\r\n */\r\n\r\n return {\r\n // returns string: the current input type\r\n // opt: 'intent'|'input'\r\n // 'input' (default): returns the same value as the `data-whatinput` attribute\r\n // 'intent': includes `data-whatintent` value if it's different than `data-whatinput`\r\n ask: function ask(opt) {\r\n return opt === 'intent' ? currentIntent : currentInput;\r\n },\r\n\r\n // returns string: the currently focused element or null\r\n element: function element() {\r\n return currentElement;\r\n },\r\n\r\n // overwrites ignored keys with provided array\r\n ignoreKeys: function ignoreKeys(arr) {\r\n ignoreMap = arr;\r\n },\r\n\r\n // attach functions to input and intent \"events\"\r\n // funct: function to fire on change\r\n // eventType: 'input'|'intent'\r\n registerOnChange: function registerOnChange(fn, eventType) {\r\n functionList.push({\r\n fn: fn,\r\n type: eventType || 'input'\r\n });\r\n },\r\n\r\n unRegisterOnChange: function unRegisterOnChange(fn) {\r\n var position = objPos(fn);\r\n\r\n if (position) {\r\n functionList.splice(position, 1);\r\n }\r\n }\r\n };\r\n }();\r\n\r\n /***/\r\n })\r\n /******/])\r\n});\r\n;","!function () { \"use strict\"; function o() { var o = window, t = document; if (!(\"scrollBehavior\" in t.documentElement.style && !0 !== o.__forceSmoothScrollPolyfill__)) { var l, e = o.HTMLElement || o.Element, r = 468, i = { scroll: o.scroll || o.scrollTo, scrollBy: o.scrollBy, elementScroll: e.prototype.scroll || n, scrollIntoView: e.prototype.scrollIntoView }, s = o.performance && o.performance.now ? o.performance.now.bind(o.performance) : Date.now, c = (l = o.navigator.userAgent, new RegExp([\"MSIE \", \"Trident/\", \"Edge/\"].join(\"|\")).test(l) ? 1 : 0); o.scroll = o.scrollTo = function () { void 0 !== arguments[0] && (!0 !== f(arguments[0]) ? h.call(o, t.body, void 0 !== arguments[0].left ? ~~arguments[0].left : o.scrollX || o.pageXOffset, void 0 !== arguments[0].top ? ~~arguments[0].top : o.scrollY || o.pageYOffset) : i.scroll.call(o, void 0 !== arguments[0].left ? arguments[0].left : \"object\" != typeof arguments[0] ? arguments[0] : o.scrollX || o.pageXOffset, void 0 !== arguments[0].top ? arguments[0].top : void 0 !== arguments[1] ? arguments[1] : o.scrollY || o.pageYOffset)) }, o.scrollBy = function () { void 0 !== arguments[0] && (f(arguments[0]) ? i.scrollBy.call(o, void 0 !== arguments[0].left ? arguments[0].left : \"object\" != typeof arguments[0] ? arguments[0] : 0, void 0 !== arguments[0].top ? arguments[0].top : void 0 !== arguments[1] ? arguments[1] : 0) : h.call(o, t.body, ~~arguments[0].left + (o.scrollX || o.pageXOffset), ~~arguments[0].top + (o.scrollY || o.pageYOffset))) }, e.prototype.scroll = e.prototype.scrollTo = function () { if (void 0 !== arguments[0]) if (!0 !== f(arguments[0])) { var o = arguments[0].left, t = arguments[0].top; h.call(this, this, void 0 === o ? this.scrollLeft : ~~o, void 0 === t ? this.scrollTop : ~~t) } else { if (\"number\" == typeof arguments[0] && void 0 === arguments[1]) throw new SyntaxError(\"Value could not be converted\"); i.elementScroll.call(this, void 0 !== arguments[0].left ? ~~arguments[0].left : \"object\" != typeof arguments[0] ? ~~arguments[0] : this.scrollLeft, void 0 !== arguments[0].top ? ~~arguments[0].top : void 0 !== arguments[1] ? ~~arguments[1] : this.scrollTop) } }, e.prototype.scrollBy = function () { void 0 !== arguments[0] && (!0 !== f(arguments[0]) ? this.scroll({ left: ~~arguments[0].left + this.scrollLeft, top: ~~arguments[0].top + this.scrollTop, behavior: arguments[0].behavior }) : i.elementScroll.call(this, void 0 !== arguments[0].left ? ~~arguments[0].left + this.scrollLeft : ~~arguments[0] + this.scrollLeft, void 0 !== arguments[0].top ? ~~arguments[0].top + this.scrollTop : ~~arguments[1] + this.scrollTop)) }, e.prototype.scrollIntoView = function () { if (!0 !== f(arguments[0])) { var l = function (o) { var l, e, r, i; do { l = (o = o.parentNode) === t.body } while (!1 === l && !1 === (r = p(e = o, \"Y\") && a(e, \"Y\"), i = p(e, \"X\") && a(e, \"X\"), r || i)); return l = null, o }(this), e = l.getBoundingClientRect(), r = this.getBoundingClientRect(); l !== t.body ? (h.call(this, l, l.scrollLeft + r.left - e.left, l.scrollTop + r.top - e.top), \"fixed\" !== o.getComputedStyle(l).position && o.scrollBy({ left: e.left, top: e.top, behavior: \"smooth\" })) : o.scrollBy({ left: r.left, top: r.top, behavior: \"smooth\" }) } else i.scrollIntoView.call(this, void 0 === arguments[0] || arguments[0]) } } function n(o, t) { this.scrollLeft = o, this.scrollTop = t } function f(o) { if (null === o || \"object\" != typeof o || void 0 === o.behavior || \"auto\" === o.behavior || \"instant\" === o.behavior) return !0; if (\"object\" == typeof o && \"smooth\" === o.behavior) return !1; throw new TypeError(\"behavior member of ScrollOptions \" + o.behavior + \" is not a valid value for enumeration ScrollBehavior.\") } function p(o, t) { return \"Y\" === t ? o.clientHeight + c < o.scrollHeight : \"X\" === t ? o.clientWidth + c < o.scrollWidth : void 0 } function a(t, l) { var e = o.getComputedStyle(t, null)[\"overflow\" + l]; return \"auto\" === e || \"scroll\" === e } function d(t) { var l, e, i, c, n = (s() - t.startTime) / r; c = n = n > 1 ? 1 : n, l = .5 * (1 - Math.cos(Math.PI * c)), e = t.startX + (t.x - t.startX) * l, i = t.startY + (t.y - t.startY) * l, t.method.call(t.scrollable, e, i), e === t.x && i === t.y || o.requestAnimationFrame(d.bind(o, t)) } function h(l, e, r) { var c, f, p, a, h = s(); l === t.body ? (c = o, f = o.scrollX || o.pageXOffset, p = o.scrollY || o.pageYOffset, a = i.scroll) : (c = l, f = l.scrollLeft, p = l.scrollTop, a = n), d({ scrollable: c, method: a, startTime: h, startX: f, startY: p, x: e, y: r }) } } \"object\" == typeof exports && \"undefined\" != typeof module ? module.exports = { polyfill: o } : o() }();","/*\r\n * Lightcase - jQuery Plugin\r\n * The smart and flexible Lightbox Plugin.\r\n *\r\n * @author\t\tCornel Boppart \r\n * @copyright\tAuthor\r\n *\r\n * @version\t\t2.5.0 (11/03/2018)\r\n */\r\n\r\n;(function ($) {\r\n\r\n\t'use strict';\r\n\r\n\tvar _self = {\r\n\t\tcache: {},\r\n\r\n\t\tsupport: {},\r\n\r\n\t\tobjects: {},\r\n\r\n\t\t/**\r\n\t\t * Initializes the plugin\r\n\t\t *\r\n\t\t * @param\t{object}\toptions\r\n\t\t * @return\t{object}\r\n\t\t */\r\n\t\tinit: function (options) {\r\n\t\t\treturn this.each(function () {\r\n\t\t\t\t$(this).unbind('click.lightcase').bind('click.lightcase', function (event) {\r\n\t\t\t\t\tevent.preventDefault();\r\n\t\t\t\t\t$(this).lightcase('start', options);\r\n\t\t\t\t});\r\n\t\t\t});\r\n\t\t},\r\n\r\n\t\t/**\r\n\t\t * Starts the plugin\r\n\t\t *\r\n\t\t * @param\t{object}\toptions\r\n\t\t * @return\t{void}\r\n\t\t */\r\n\t\tstart: function (options) {\r\n\t\t\t_self.origin = lightcase.origin = this;\r\n\r\n\t\t\t_self.settings = lightcase.settings = $.extend(true, {\r\n\t\t\t\tidPrefix: 'lightcase-',\r\n\t\t\t\tclassPrefix: 'lightcase-',\r\n\t\t\t\tattrPrefix: 'lc-',\r\n\t\t\t\ttransition: 'elastic',\r\n\t\t\t\ttransitionOpen: null,\r\n\t\t\t\ttransitionClose: null,\r\n\t\t\t\ttransitionIn: null,\r\n\t\t\t\ttransitionOut: null,\r\n\t\t\t\tcssTransitions: true,\r\n\t\t\t\tspeedIn: 250,\r\n\t\t\t\tspeedOut: 250,\r\n\t\t\t\twidth: null,\r\n\t\t\t\theight: null,\r\n\t\t\t\tmaxWidth: 1200,\r\n\t\t\t\tmaxHeight: 840,\r\n\t\t\t\tforceWidth: false,\r\n\t\t\t\tforceHeight: false,\r\n\t\t\t\tliveResize: true,\r\n\t\t\t\tfullScreenModeForMobile: true,\r\n\t\t\t\tmobileMatchExpression: /(iphone|ipod|ipad|android|blackberry|symbian)/,\r\n\t\t\t\tdisableShrink: false,\r\n\t\t\t\tfixedRatio: true,\r\n\t\t\t\tshrinkFactor: .75,\r\n\t\t\t\toverlayOpacity: .9,\r\n\t\t\t\tslideshow: false,\r\n\t\t\t\tslideshowAutoStart: true,\r\n\t\t\t\tbreakBeforeShow: false,\r\n\t\t\t\ttimeout: 5000,\r\n\t\t\t\tswipe: true,\r\n\t\t\t\tuseKeys: true,\r\n\t\t\t\tuseCategories: true,\r\n\t\t\t\tuseAsCollection: false,\r\n\t\t\t\tnavigateEndless: true,\r\n\t\t\t\tcloseOnOverlayClick: true,\r\n\t\t\t\ttitle: null,\r\n\t\t\t\tcaption: null,\r\n\t\t\t\tshowTitle: true,\r\n\t\t\t\tshowCaption: true,\r\n\t\t\t\tshowSequenceInfo: true,\r\n\t\t\t\tinline: {\r\n\t\t\t\t\twidth: 'auto',\r\n\t\t\t\t\theight: 'auto'\r\n\t\t\t\t},\r\n\t\t\t\tajax: {\r\n\t\t\t\t\twidth: 'auto',\r\n\t\t\t\t\theight: 'auto',\r\n\t\t\t\t\ttype: 'get',\r\n\t\t\t\t\tdataType: 'html',\r\n\t\t\t\t\tdata: {}\r\n\t\t\t\t},\r\n\t\t\t\tiframe: {\r\n\t\t\t\t\twidth: 800,\r\n\t\t\t\t\theight: 500,\r\n\t\t\t\t\tframeborder: 0\r\n\t\t\t\t},\r\n\t\t\t\tflash: {\r\n\t\t\t\t\twidth: 400,\r\n\t\t\t\t\theight: 205,\r\n\t\t\t\t\twmode: 'transparent'\r\n\t\t\t\t},\r\n\t\t\t\tvideo: {\r\n\t\t\t\t\twidth: 400,\r\n\t\t\t\t\theight: 225,\r\n\t\t\t\t\tposter: '',\r\n\t\t\t\t\tpreload: 'auto',\r\n\t\t\t\t\tcontrols: true,\r\n\t\t\t\t\tautobuffer: true,\r\n\t\t\t\t\tautoplay: true,\r\n\t\t\t\t\tloop: false\r\n\t\t\t\t},\r\n\t\t\t\tattr: 'data-rel',\r\n\t\t\t\thref: null,\r\n\t\t\t\ttype: null,\r\n\t\t\t\ttypeMapping: {\r\n\t\t\t\t\t'image': 'jpg,jpeg,gif,png,bmp',\r\n\t\t\t\t\t'flash': 'swf',\r\n\t\t\t\t\t'video': 'mp4,mov,ogv,ogg,webm',\r\n\t\t\t\t\t'iframe': 'html,php',\r\n\t\t\t\t\t'ajax': 'json,txt',\r\n\t\t\t\t\t'inline': '#'\r\n\t\t\t\t},\r\n\t\t\t\terrorMessage: function () {\r\n\t\t\t\t\treturn '

' + _self.settings.labels['errorMessage'] + '

';\r\n\t\t\t\t},\r\n\t\t\t\tlabels: {\r\n\t\t\t\t\t'errorMessage': 'Source could not be found...',\r\n\t\t\t\t\t'sequenceInfo.of': ' of ',\r\n\t\t\t\t\t'close': 'Close',\r\n\t\t\t\t\t'navigator.prev': 'Prev',\r\n\t\t\t\t\t'navigator.next': 'Next',\r\n \t\t\t\t\t'navigator.play': 'Play',\r\n\t\t\t\t\t'navigator.pause': 'Pause'\r\n\t\t\t\t},\r\n\t\t\t\tmarkup: function () {\r\n\t\t\t\t\t_self.objects.body.append(\r\n\t\t\t\t\t\t_self.objects.overlay = $('
'),\r\n\t\t\t\t\t\t_self.objects.loading = $('
'),\r\n\t\t\t\t\t\t_self.objects.case = $('
')\r\n\t\t\t\t\t);\r\n\t\t\t\t\t_self.objects.case.after(\r\n\t\t\t\t\t\t_self.objects.close = $('
' + _self.settings.labels['close'] + ''),\r\n\t\t\t\t\t\t_self.objects.nav = $('
')\r\n\t\t\t\t\t);\r\n\t\t\t\t\t_self.objects.nav.append(\r\n\t\t\t\t\t\t_self.objects.prev = $('' + _self.settings.labels['navigator.prev'] + '').hide(),\r\n\t\t\t\t\t\t_self.objects.next = $('' + _self.settings.labels['navigator.next'] + '').hide(),\r\n\t\t\t\t\t\t_self.objects.play = $('' + _self.settings.labels['navigator.play'] + '').hide(),\r\n\t\t\t\t\t\t_self.objects.pause = $('' + _self.settings.labels['navigator.pause'] + '').hide()\r\n\t\t\t\t\t);\r\n\t\t\t\t\t_self.objects.case.append(\r\n\t\t\t\t\t\t_self.objects.content = $('
'),\r\n\t\t\t\t\t\t_self.objects.info = $('
')\r\n\t\t\t\t\t);\r\n\t\t\t\t\t_self.objects.content.append(\r\n\t\t\t\t\t\t_self.objects.contentInner = $('
')\r\n\t\t\t\t\t);\r\n\t\t\t\t\t_self.objects.info.append(\r\n\t\t\t\t\t\t_self.objects.sequenceInfo = $('
'),\r\n\t\t\t\t\t\t_self.objects.title = $('

'),\r\n\t\t\t\t\t\t_self.objects.caption = $('

')\r\n\t\t\t\t\t);\r\n\t\t\t\t},\r\n\t\t\t\tonInit: {},\r\n\t\t\t\tonStart: {},\r\n\t\t\t\tonBeforeCalculateDimensions: {},\r\n\t\t\t\tonAfterCalculateDimensions: {},\r\n\t\t\t\tonBeforeShow: {},\r\n\t\t\t\tonFinish: {},\r\n\t\t\t\tonResize: {},\r\n\t\t\t\tonClose: {},\r\n\t\t\t\tonCleanup: {}\r\n\t\t\t},\r\n\t\t\toptions,\r\n\t\t\t// Load options from data-lc-options attribute\r\n\t\t\t_self.origin.data ? _self.origin.data('lc-options') : {});\r\n\r\n\t\t\t_self.objects.document = $('html');\r\n\t\t\t_self.objects.body = $('body');\r\n\r\n\t\t\t// Call onInit hook functions\r\n\t\t\t_self._callHooks(_self.settings.onInit);\r\n\r\n\t\t\t_self.objectData = _self._setObjectData(this);\r\n\r\n\t\t\t_self._addElements();\r\n\t\t\t_self._open();\r\n\r\n\t\t\t_self.dimensions = _self.getViewportDimensions();\r\n\t\t},\r\n\r\n\t\t/**\r\n\t\t * Getter method for objects\r\n\t\t *\r\n\t\t * @param\t{string}\tname\r\n\t\t * @return\t{object}\r\n\t\t */\r\n\t\tget: function (name) {\r\n\t\t\treturn _self.objects[name];\r\n\t\t},\r\n\r\n\t\t/**\r\n\t\t * Getter method for objectData\r\n\t\t *\r\n\t\t * @return\t{object}\r\n\t\t */\r\n\t\tgetObjectData: function () {\r\n\t\t\treturn _self.objectData;\r\n\t\t},\r\n\r\n\t\t/**\r\n\t\t * Sets the object data\r\n\t\t *\r\n\t\t * @param\t{object}\tobject\r\n\t\t * @return\t{object}\tobjectData\r\n\t\t */\r\n\t\t_setObjectData: function (object) {\r\n\t\t \tvar $object = $(object),\r\n\t\t\t\tobjectData = {\r\n\t\t\t\tthis: $(object),\r\n\t\t\t\ttitle: _self.settings.title || $object.attr(_self._prefixAttributeName('title')) || $object.attr('title'),\r\n\t\t\t\tcaption: _self.settings.caption || $object.attr(_self._prefixAttributeName('caption')) || $object.children('img').attr('alt'),\r\n\t\t\t\turl: _self._determineUrl(),\r\n\t\t\t\trequestType: _self.settings.ajax.type,\r\n\t\t\t\trequestData: _self.settings.ajax.data,\r\n\t\t\t\trequestDataType: _self.settings.ajax.dataType,\r\n\t\t\t\trel: $object.attr(_self._determineAttributeSelector()),\r\n\t\t\t\ttype: _self._verifyDataType(_self._determineUrl()),\r\n\t\t\t\tisPartOfSequence: _self.settings.useAsCollection || _self._isPartOfSequence($object.attr(_self.settings.attr), ':'),\r\n\t\t\t\tisPartOfSequenceWithSlideshow: _self._isPartOfSequence($object.attr(_self.settings.attr), ':slideshow'),\r\n\t\t\t\tcurrentIndex: $(_self._determineAttributeSelector()).index($object),\r\n\t\t\t\tsequenceLength: $(_self._determineAttributeSelector()).length\r\n\t\t\t};\r\n\r\n\t\t\t// Add sequence info to objectData\r\n\t\t\tobjectData.sequenceInfo = (objectData.currentIndex + 1) + _self.settings.labels['sequenceInfo.of'] + objectData.sequenceLength;\r\n\r\n\t\t\t// Add next/prev index\r\n\t\t\tobjectData.prevIndex = objectData.currentIndex - 1;\r\n\t\t\tobjectData.nextIndex = objectData.currentIndex + 1;\r\n\r\n\t\t\treturn objectData;\r\n\t\t},\r\n\r\n\t\t/**\r\n\t\t * Prefixes a data attribute name with defined name from 'settings.attrPrefix'\r\n\t\t * to ensure more uniqueness for all lightcase related/used attributes.\r\n\t\t *\r\n\t\t * @param\t{string}\tname\r\n\t\t * @return\t{string}\r\n\t\t */\r\n\t\t_prefixAttributeName: function (name) {\r\n\t\t\treturn 'data-' + _self.settings.attrPrefix + name;\r\n\t\t},\r\n\r\n\t\t/**\r\n\t\t * Determines the link target considering 'settings.href' and data attributes\r\n\t\t * but also with a fallback to the default 'href' value.\r\n\t\t *\r\n\t\t * @return\t{string}\r\n\t\t */\r\n\t\t_determineLinkTarget: function () {\r\n\t\t\treturn _self.settings.href || $(_self.origin).attr(_self._prefixAttributeName('href')) || $(_self.origin).attr('href');\r\n\t\t},\r\n\r\n\t\t/**\r\n\t\t * Determines the attribute selector to use, depending on\r\n\t\t * whether categorized collections are beeing used or not.\r\n\t\t *\r\n\t\t * @return\t{string}\tselector\r\n\t\t */\r\n\t\t_determineAttributeSelector: function () {\r\n\t\t\tvar\t$origin = $(_self.origin),\r\n\t\t\t\tselector = '';\r\n\r\n\t\t\tif (typeof _self.cache.selector !== 'undefined') {\r\n\t\t\t\tselector = _self.cache.selector;\r\n\t\t\t} else if (_self.settings.useCategories === true && $origin.attr(_self._prefixAttributeName('categories'))) {\r\n\t\t\t\tvar\tcategories = $origin.attr(_self._prefixAttributeName('categories')).split(' ');\r\n\r\n\t\t\t\t$.each(categories, function (index, category) {\r\n\t\t\t\t\tif (index > 0) {\r\n\t\t\t\t\t\tselector += ',';\r\n\t\t\t\t\t}\r\n\t\t\t\t\tselector += '[' + _self._prefixAttributeName('categories') + '~=\"' + category + '\"]';\r\n\t\t\t\t});\r\n\t\t\t} else {\r\n\t\t\t\tselector = '[' + _self.settings.attr + '=\"' + $origin.attr(_self.settings.attr) + '\"]';\r\n\t\t\t}\r\n\r\n\t\t\t_self.cache.selector = selector;\r\n\r\n\t\t\treturn selector;\r\n\t\t},\r\n\r\n\t\t/**\r\n\t\t * Determines the correct resource according to the\r\n\t\t * current viewport and density.\r\n\t\t *\r\n\t\t * @return\t{string}\turl\r\n\t\t */\r\n\t\t_determineUrl: function () {\r\n\t\t\tvar\tdataUrl = _self._verifyDataUrl(_self._determineLinkTarget()),\r\n\t\t\t\twidth = 0,\r\n\t\t\t\tdensity = 0,\r\n\t\t\t\tsupportLevel = '',\r\n\t\t\t\turl;\r\n\r\n\t\t\t$.each(dataUrl, function (index, src) {\r\n\t\t\t\tswitch (_self._verifyDataType(src.url)) {\r\n\t\t\t\t\tcase 'video':\r\n\t\t\t\t\t\tvar\tvideo = document.createElement('video'),\r\n\t\t\t\t\t\t\tvideoType = _self._verifyDataType(src.url) + '/' + _self._getFileUrlSuffix(src.url);\r\n\r\n\t\t\t\t\t\t// Check if browser can play this type of video format\r\n\t\t\t\t\t\tif (supportLevel !== 'probably' && supportLevel !== video.canPlayType(videoType) && video.canPlayType(videoType) !== '') {\r\n\t\t\t\t\t\t\tsupportLevel = video.canPlayType(videoType);\r\n\t\t\t\t\t\t\turl = src.url;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t\tdefault:\r\n\t\t\t\t\t\tif (\r\n\t\t\t\t\t\t\t// Check density\r\n\t\t\t\t\t\t\t_self._devicePixelRatio() >= src.density &&\r\n\t\t\t\t\t\t\tsrc.density >= density &&\r\n\t\t\t\t\t\t\t// Check viewport width\r\n\t\t\t\t\t\t\t_self._matchMedia()('screen and (min-width:' + src.width + 'px)').matches &&\r\n\t\t\t\t\t\t\tsrc.width >= width\r\n\t\t\t\t\t\t) {\r\n\t\t\t\t\t\t\twidth = src.width;\r\n\t\t\t\t\t\t\tdensity = src.density;\r\n\t\t\t\t\t\t\turl = src.url;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\t\treturn url;\r\n\t\t},\r\n\r\n\t\t/**\r\n\t\t * Normalizes an url and returns information about the resource path,\r\n\t\t * the viewport width as well as density if defined.\r\n\t\t *\r\n\t\t * @param\t{string}\turl\tPath to resource in format of an url or srcset\r\n\t\t * @return\t{object}\r\n\t\t */\r\n\t\t_normalizeUrl: function (url) {\r\n\t\t\tvar srcExp = /^\\d+$/;\r\n\r\n \t\tvar urlParser = function (str) {\r\n \t\tvar src = {\r\n \t\t\twidth: 0,\r\n \t\t\tdensity: 0\r\n \t\t};\r\n\r\n \t\tstr.trim().split(/\\s+/).forEach(function (url, i) {\r\n \t\t\tif (i === 0) {\r\n \t\t\treturn src.url = url;\r\n \t\t\t}\r\n\r\n \t\t\tvar value = url.substring(0, url.length - 1),\r\n \t\tlastChar = url[url.length - 1],\r\n \t\tintVal = parseInt(value, 10),\r\n \t\tfloatVal = parseFloat(value);\r\n\t\t\t\t\tif (lastChar === 'w' && srcExp.test(value)) {\r\n\t\t\t\t\t\tsrc.width = intVal;\r\n\t\t\t\t\t} else if (lastChar === 'h' && srcExp.test(value)) {\r\n\t\t\t\t\t\tsrc.height = intVal;\r\n\t\t\t\t\t} else if (lastChar === 'x' && !isNaN(floatVal)) {\r\n\t\t\t\t\t\tsrc.density = floatVal;\r\n\t\t\t\t\t}\r\n\t\t\t\t});\r\n\r\n \t\treturn src;\r\n \t\t};\r\n\r\n\t\t\t// Data URL detected (no split)\r\n\t\t\tif (url.indexOf('data:') === 0) {\r\n\t\t\t\treturn [urlParser(url)];\r\n\t\t\t}\r\n\r\n\t\t\t// Regular URL, normal behavior\r\n\t\t\treturn url.split(',').map(urlParser);\r\n\t\t},\r\n\r\n\t\t/**\r\n\t\t * Verifies if the link is part of a sequence\r\n\t\t *\r\n\t\t * @param\t{string}\trel\r\n\t\t * @param\t{string}\texpression\r\n\t\t * @return\t{boolean}\r\n\t\t */\r\n\t\t_isPartOfSequence: function (rel, expression) {\r\n\t\t\tvar getSimilarLinks = $('[' + _self.settings.attr + '=\"' + rel + '\"]'),\r\n\t\t\t\tregexp = new RegExp(expression);\r\n\r\n\t\t\treturn (regexp.test(rel) && getSimilarLinks.length > 1);\r\n\t\t},\r\n\r\n\t\t/**\r\n\t\t * Verifies if the slideshow should be enabled\r\n\t\t *\r\n\t\t * @return\t{boolean}\r\n\t\t */\r\n\t\tisSlideshowEnabled: function () {\r\n\t\t\treturn (_self.objectData.isPartOfSequence && (_self.settings.slideshow === true || _self.objectData.isPartOfSequenceWithSlideshow === true));\r\n\t\t},\r\n\r\n\t\t/**\r\n\t\t * Loads the new content to show\r\n\t\t *\r\n\t\t * @return\t{void}\r\n\t\t */\r\n\t\t_loadContent: function () {\r\n\t\t\tif (_self.cache.originalObject) {\r\n\t\t\t\t_self._restoreObject();\r\n\t\t\t}\r\n\r\n\t\t\t_self._createObject();\r\n\t\t},\r\n\r\n\t\t/**\r\n\t\t * Creates a new object\r\n\t\t *\r\n\t\t * @return\t{void}\r\n\t\t */\r\n\t\t_createObject: function () {\r\n\t\t\tvar $object;\r\n\r\n\t\t\t// Create object\r\n\t\t\tswitch (_self.objectData.type) {\r\n\t\t\t\tcase 'image':\r\n\t\t\t\t\t$object = $(new Image());\r\n\t\t\t\t\t$object.attr({\r\n\t\t\t\t\t\t// The time expression is required to prevent the binding of an image load\r\n\t\t\t\t\t\t'src': _self.objectData.url,\r\n\t\t\t\t\t\t'alt': _self.objectData.title\r\n\t\t\t\t\t});\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase 'inline':\r\n\t\t\t\t\t$object = $('
');\r\n\t\t\t\t\t$object.html(_self._cloneObject($(_self.objectData.url)));\r\n\r\n\t\t\t\t\t// Add custom attributes from _self.settings\r\n\t\t\t\t\t$.each(_self.settings.inline, function (name, value) {\r\n\t\t\t\t\t\t$object.attr(_self._prefixAttributeName(name), value);\r\n\t\t\t\t\t});\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase 'ajax':\r\n\t\t\t\t\t$object = $('
');\r\n\r\n\t\t\t\t\t// Add custom attributes from _self.settings\r\n\t\t\t\t\t$.each(_self.settings.ajax, function (name, value) {\r\n\t\t\t\t\t\tif (name !== 'data') {\r\n\t\t\t\t\t\t\t$object.attr(_self._prefixAttributeName(name), value);\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t});\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase 'flash':\r\n\t\t\t\t\t$object = $('');\r\n\r\n\t\t\t\t\t// Add custom attributes from _self.settings\r\n\t\t\t\t\t$.each(_self.settings.flash, function (name, value) {\r\n\t\t\t\t\t\t$object.attr(name, value);\r\n\t\t\t\t\t});\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase 'video':\r\n\t\t\t\t\t$object = $('');\r\n\t\t\t\t\t$object.attr('src', _self.objectData.url);\r\n\r\n\t\t\t\t\t// Add custom attributes from _self.settings\r\n\t\t\t\t\t$.each(_self.settings.video, function (name, value) {\r\n\t\t\t\t\t\t$object.attr(name, value);\r\n\t\t\t\t\t});\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tdefault:\r\n\t\t\t\t\t$object = $('');\r\n\t\t\t\t\t$object.attr({\r\n\t\t\t\t\t\t'src': _self.objectData.url\r\n\t\t\t\t\t});\r\n\r\n\t\t\t\t\t// Add custom attributes from _self.settings\r\n\t\t\t\t\t$.each(_self.settings.iframe, function (name, value) {\r\n\t\t\t\t\t\t$object.attr(name, value);\r\n\t\t\t\t\t});\r\n\t\t\t\t\tbreak;\r\n\t\t\t}\r\n\r\n\t\t\t_self._addObject($object);\r\n\t\t\t_self._loadObject($object);\r\n\t\t},\r\n\r\n\t\t/**\r\n\t\t * Adds the new object to the markup\r\n\t\t *\r\n\t\t * @param\t{object}\t$object\r\n\t\t * @return\t{void}\r\n\t\t */\r\n\t\t_addObject: function ($object) {\r\n\t\t\t// Add object to content holder\r\n\t\t\t_self.objects.contentInner.html($object);\r\n\r\n\t\t\t// Start loading\r\n\t\t\t_self._loading('start');\r\n\r\n\t\t\t// Call onStart hook functions\r\n\t\t\t_self._callHooks(_self.settings.onStart);\r\n\r\n\t\t\t// Add sequenceInfo to the content holder or hide if its empty\r\n\t\t\tif (_self.settings.showSequenceInfo === true && _self.objectData.isPartOfSequence) {\r\n\t\t\t\t_self.objects.sequenceInfo.html(_self.objectData.sequenceInfo);\r\n\t\t\t\t_self.objects.sequenceInfo.show();\r\n\t\t\t} else {\r\n\t\t\t\t_self.objects.sequenceInfo.empty();\r\n\t\t\t\t_self.objects.sequenceInfo.hide();\r\n\t\t\t}\r\n\t\t\t// Add title to the content holder or hide if its empty\r\n\t\t\tif (_self.settings.showTitle === true && _self.objectData.title !== undefined && _self.objectData.title !== '') {\r\n\t\t\t\t_self.objects.title.html(_self.objectData.title);\r\n\t\t\t\t_self.objects.title.show();\r\n\t\t\t} else {\r\n\t\t\t\t_self.objects.title.empty();\r\n\t\t\t\t_self.objects.title.hide();\r\n\t\t\t}\r\n\t\t\t// Add caption to the content holder or hide if its empty\r\n\t\t\tif (_self.settings.showCaption === true && _self.objectData.caption !== undefined && _self.objectData.caption !== '') {\r\n\t\t\t\t_self.objects.caption.html(_self.objectData.caption);\r\n\t\t\t\t_self.objects.caption.show();\r\n\t\t\t} else {\r\n\t\t\t\t_self.objects.caption.empty();\r\n\t\t\t\t_self.objects.caption.hide();\r\n\t\t\t}\r\n\t\t},\r\n\r\n\t\t/**\r\n\t\t * Loads the new object\r\n\t\t *\r\n\t\t * @param\t{object}\t$object\r\n\t\t * @return\t{void}\r\n\t\t */\r\n\t\t_loadObject: function ($object) {\r\n\t\t\t// Load the object\r\n\t\t\tswitch (_self.objectData.type) {\r\n\t\t\t\tcase 'inline':\r\n\t\t\t\t\tif ($(_self.objectData.url)) {\r\n\t\t\t\t\t\t_self._showContent($object);\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\t_self.error();\r\n\t\t\t\t\t}\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase 'ajax':\r\n\t\t\t\t\t$.ajax(\r\n\t\t\t\t\t\t$.extend({}, _self.settings.ajax, {\r\n\t\t\t\t\t\t\turl: _self.objectData.url,\r\n\t\t\t\t\t\t\ttype: _self.objectData.requestType,\r\n\t\t\t\t\t\t\tdataType: _self.objectData.requestDataType,\r\n\t\t\t\t\t\t\tdata: _self.objectData.requestData,\r\n\t\t\t\t\t\t\tsuccess: function (data, textStatus, jqXHR) {\r\n\t\t\t\t\t\t\t\t// Check for X-Ajax-Location\r\n\t\t\t\t\t\t\t\tif (jqXHR.getResponseHeader('X-Ajax-Location')) {\r\n\t\t\t\t\t\t\t\t\t_self.objectData.url = jqXHR.getResponseHeader('X-Ajax-Location');\r\n\t\t\t\t\t\t\t\t\t_self._loadObject($object);\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\telse {\r\n\t\t\t\t\t\t\t\t\t// Unserialize if data is transferred as json\r\n\t\t\t\t\t\t\t\t\tif (_self.objectData.requestDataType === 'json') {\r\n\t\t\t\t\t\t\t\t\t\t_self.objectData.data = data;\r\n\t\t\t\t\t\t\t\t\t} else {\r\n\t\t\t\t\t\t\t\t\t\t$object.html(data);\r\n\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\t_self._showContent($object);\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\terror: function (jqXHR, textStatus, errorThrown) {\r\n\t\t\t\t\t\t\t\t_self.error();\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t})\r\n\t\t\t\t\t);\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase 'flash':\r\n\t\t\t\t\t_self._showContent($object);\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase 'video':\r\n\t\t\t\t\tif (typeof($object.get(0).canPlayType) === 'function' || _self.objects.case.find('video').length === 0) {\r\n\t\t\t\t\t\t_self._showContent($object);\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\t_self.error();\r\n\t\t\t\t\t}\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tdefault:\r\n\t\t\t\t\tif (_self.objectData.url) {\r\n\t\t\t\t\t\t$object.on('load', function () {\r\n\t\t\t\t\t\t\t_self._showContent($object);\r\n\t\t\t\t\t\t});\r\n\t\t\t\t\t\t$object.on('error', function () {\r\n\t\t\t\t\t\t\t_self.error();\r\n\t\t\t\t\t\t});\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\t_self.error();\r\n\t\t\t\t\t}\r\n\t\t\t\t\tbreak;\r\n\t\t\t}\r\n\t\t},\r\n\r\n\t\t/**\r\n\t\t * Throws an error message if something went wrong\r\n\t\t *\r\n\t\t * @return\t{void}\r\n\t\t */\r\n\t\terror: function () {\r\n\t\t\t_self.objectData.type = 'error';\r\n\t\t\tvar $object = $('
');\r\n\r\n\t\t\t$object.html(_self.settings.errorMessage);\r\n\t\t\t_self.objects.contentInner.html($object);\r\n\r\n\t\t\t_self._showContent(_self.objects.contentInner);\r\n\t\t},\r\n\r\n\t\t/**\r\n\t\t * Calculates the dimensions to fit content\r\n\t\t *\r\n\t\t * @param\t{object}\t$object\r\n\t\t * @return\t{void}\r\n\t\t */\r\n\t\t_calculateDimensions: function ($object) {\r\n\t\t\t_self._cleanupDimensions();\r\n\r\n\t\t\tif (!$object) return;\r\n\r\n\t\t\t// Set default dimensions\r\n\t\t\tvar dimensions = {\r\n\t\t\t\tratio: 1,\r\n\t\t\t\tobjectWidth: $object.attr('width') ? $object.attr('width') : $object.attr(_self._prefixAttributeName('width')),\r\n\t\t\t\tobjectHeight: $object.attr('height') ? $object.attr('height') : $object.attr(_self._prefixAttributeName('height'))\r\n\t\t\t};\r\n\r\n\t\t\tif (!_self.settings.disableShrink) {\r\n\t\t\t\t// Add calculated maximum width/height to dimensions\r\n\t\t\t\tdimensions.maxWidth = parseInt(_self.dimensions.windowWidth * _self.settings.shrinkFactor);\r\n\t\t\t\tdimensions.maxHeight = parseInt(_self.dimensions.windowHeight * _self.settings.shrinkFactor);\r\n\r\n\t\t\t\t// If the auto calculated maxWidth/maxHeight greather than the user-defined one, use that.\r\n\t\t\t\tif (dimensions.maxWidth > _self.settings.maxWidth) {\r\n\t\t\t\t\tdimensions.maxWidth = _self.settings.maxWidth;\r\n\t\t\t\t}\r\n\t\t\t\tif (dimensions.maxHeight > _self.settings.maxHeight) {\r\n\t\t\t\t\tdimensions.maxHeight = _self.settings.maxHeight;\r\n\t\t\t\t}\r\n\r\n\t\t\t\t// Calculate the difference between screen width/height and image width/height\r\n\t\t\t\tdimensions.differenceWidthAsPercent = parseInt(100 / dimensions.maxWidth * dimensions.objectWidth);\r\n\t\t\t\tdimensions.differenceHeightAsPercent = parseInt(100 / dimensions.maxHeight * dimensions.objectHeight);\r\n\r\n\t\t\t\tswitch (_self.objectData.type) {\r\n\t\t\t\t\tcase 'image':\r\n\t\t\t\t\tcase 'flash':\r\n\t\t\t\t\tcase 'video':\r\n\t\t\t\t\tcase 'iframe':\r\n\t\t\t\t\tcase 'ajax':\r\n\t\t\t\t\tcase 'inline':\r\n\t\t\t\t\t\tif (_self.objectData.type === 'image' || _self.settings.fixedRatio === true) {\r\n\t\t\t\t\t\t\tif (dimensions.differenceWidthAsPercent > 100 && dimensions.differenceWidthAsPercent > dimensions.differenceHeightAsPercent) {\r\n\t\t\t\t\t\t\t\tdimensions.objectWidth = dimensions.maxWidth;\r\n\t\t\t\t\t\t\t\tdimensions.objectHeight = parseInt(dimensions.objectHeight / dimensions.differenceWidthAsPercent * 100);\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\tif (dimensions.differenceHeightAsPercent > 100 && dimensions.differenceHeightAsPercent > dimensions.differenceWidthAsPercent) {\r\n\t\t\t\t\t\t\t\tdimensions.objectWidth = parseInt(dimensions.objectWidth / dimensions.differenceHeightAsPercent * 100);\r\n\t\t\t\t\t\t\t\tdimensions.objectHeight = dimensions.maxHeight;\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\tif (dimensions.differenceHeightAsPercent > 100 && dimensions.differenceWidthAsPercent < dimensions.differenceHeightAsPercent) {\r\n\t\t\t\t\t\t\t\tdimensions.objectWidth = parseInt(dimensions.maxWidth / dimensions.differenceHeightAsPercent * dimensions.differenceWidthAsPercent);\r\n\t\t\t\t\t\t\t\tdimensions.objectHeight = dimensions.maxHeight;\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\tcase 'error':\r\n\t\t\t\t\t\tif (!isNaN(dimensions.objectWidth) && dimensions.objectWidth > dimensions.maxWidth) {\r\n\t\t\t\t\t\t\tdimensions.objectWidth = dimensions.maxWidth;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t\tdefault:\r\n\t\t\t\t\t\tif ((isNaN(dimensions.objectWidth) || dimensions.objectWidth > dimensions.maxWidth) && !_self.settings.forceWidth) {\r\n\t\t\t\t\t\t\tdimensions.objectWidth = dimensions.maxWidth;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\tif (((isNaN(dimensions.objectHeight) && dimensions.objectHeight !== 'auto') || dimensions.objectHeight > dimensions.maxHeight) && !_self.settings.forceHeight) {\r\n\t\t\t\t\t\t\tdimensions.objectHeight = dimensions.maxHeight;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tif (_self.settings.forceWidth) {\r\n\t\t\t\ttry {\r\n\t\t\t\t\tdimensions.objectWidth = _self.settings[_self.objectData.type].width;\r\n\t\t\t\t} catch (e) {\r\n\t\t\t\t\tdimensions.objectWidth = _self.settings.width || dimensions.objectWidth;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tdimensions.maxWidth = null;\r\n\t\t\t}\r\n\t\t\tif ($object.attr(_self._prefixAttributeName('max-width'))) {\r\n\t\t\t\tdimensions.maxWidth = $object.attr(_self._prefixAttributeName('max-width'));\r\n\t\t\t}\r\n\r\n\t\t\tif (_self.settings.forceHeight) {\r\n\t\t\t\ttry {\r\n\t\t\t\t\tdimensions.objectHeight = _self.settings[_self.objectData.type].height;\r\n\t\t\t\t} catch (e) {\r\n\t\t\t\t\tdimensions.objectHeight = _self.settings.height || dimensions.objectHeight;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tdimensions.maxHeight = null;\r\n\t\t\t}\r\n\t\t\tif ($object.attr(_self._prefixAttributeName('max-height'))) {\r\n\t\t\t\tdimensions.maxHeight = $object.attr(_self._prefixAttributeName('max-height'));\r\n\t\t\t}\r\n\t\t\t_self._adjustDimensions($object, dimensions);\r\n\t\t},\r\n\r\n\t\t/**\r\n\t\t * Adjusts the dimensions\r\n\t\t *\r\n\t\t * @param\t{object}\t$object\r\n\t\t * @param\t{object}\tdimensions\r\n\t\t * @return\t{void}\r\n\t\t */\r\n\t\t_adjustDimensions: function ($object, dimensions) {\r\n\t\t\t// Adjust width and height\r\n\t\t\t$object.css({\r\n\t\t\t\t'width': dimensions.objectWidth,\r\n\t\t\t\t'height': dimensions.objectHeight,\r\n\t\t\t\t'max-width': dimensions.maxWidth,\r\n\t\t\t\t'max-height': dimensions.maxHeight\r\n\t\t\t});\r\n\r\n\t\t\t_self.objects.contentInner.css({\r\n\t\t\t\t'width': $object.outerWidth(),\r\n\t\t\t\t'height': $object.outerHeight(),\r\n\t\t\t\t'max-width': '100%'\r\n\t\t\t});\r\n\r\n\t\t\t_self.objects.case.css({\r\n\t\t\t\t'width': _self.objects.contentInner.outerWidth(),\r\n\t\t\t\t'max-width': '100%'\r\n\t\t\t});\r\n\r\n\t\t\t// Adjust margin\r\n\t\t\t_self.objects.case.css({\r\n\t\t\t\t'margin-top': parseInt(-(_self.objects.case.outerHeight() / 2)),\r\n\t\t\t\t'margin-left': parseInt(-(_self.objects.case.outerWidth() / 2))\r\n\t\t\t});\r\n\t\t},\r\n\r\n\t\t/**\r\n\t\t * Handles the _loading\r\n\t\t *\r\n\t\t * @param\t{string}\tprocess\r\n\t\t * @return\t{void}\r\n\t\t */\r\n\t\t_loading: function (process) {\r\n\t\t\tif (process === 'start') {\r\n\t\t\t\t_self.objects.case.addClass(_self.settings.classPrefix + 'loading');\r\n\t\t\t\t_self.objects.loading.show();\r\n\t\t\t} else if (process === 'end') {\r\n\t\t\t\t_self.objects.case.removeClass(_self.settings.classPrefix + 'loading');\r\n\t\t\t\t_self.objects.loading.hide();\r\n\t\t\t}\r\n\t\t},\r\n\r\n\r\n\t\t/**\r\n\t\t * Gets the client screen dimensions\r\n\t\t *\r\n\t\t * @return\t{object}\tdimensions\r\n\t\t */\r\n\t\tgetViewportDimensions: function () {\r\n\t\t\treturn {\r\n\t\t\t\twindowWidth: $(window).innerWidth(),\r\n\t\t\t\twindowHeight: $(window).innerHeight()\r\n\t\t\t};\r\n\t\t},\r\n\r\n\t\t/**\r\n\t\t * Verifies the url\r\n\t\t *\r\n\t\t * @param\t{string}\tdataUrl\r\n\t\t * @return\t{object}\tdataUrl\tClean url for processing content\r\n\t\t */\r\n\t\t_verifyDataUrl: function (dataUrl) {\r\n\t\t\tif (!dataUrl || dataUrl === undefined || dataUrl === '') {\r\n\t\t\t\treturn false;\r\n\t\t\t}\r\n\r\n\t\t\tif (dataUrl.indexOf('#') > -1) {\r\n\t\t\t\tdataUrl = dataUrl.split('#');\r\n\t\t\t\tdataUrl = '#' + dataUrl[dataUrl.length - 1];\r\n\t\t\t}\r\n\r\n\t\t\treturn _self._normalizeUrl(dataUrl.toString());\r\n\t\t},\r\n\r\n\t\t\t//\r\n\t\t/**\r\n\t\t * Tries to get the (file) suffix of an url\r\n\t\t *\r\n\t\t * @param\t{string}\turl\r\n\t\t * @return\t{string}\r\n\t\t */\r\n\t\t_getFileUrlSuffix: function (url) {\r\n\t\t\tvar re = /(?:\\.([^.]+))?$/;\r\n\t\t\treturn re.exec(url.toLowerCase())[1];\r\n\t\t},\r\n\r\n\t\t/**\r\n\t\t * Verifies the data type of the content to load\r\n\t\t *\r\n\t\t * @param\t{string}\t\t\turl\r\n\t\t * @return\t{string|boolean}\tArray key if expression matched, else false\r\n\t\t */\r\n\t\t_verifyDataType: function (url) {\r\n\t\t\tvar typeMapping = _self.settings.typeMapping;\r\n\r\n\t\t\t// Early abort if dataUrl couldn't be verified\r\n\t\t\tif (!url) {\r\n\t\t\t\treturn false;\r\n\t\t\t}\r\n\t\t\t\r\n\t\t\t//checking if user defined type is valid\r\n\t\t\tif (_self.settings.type) {\r\n\t\t\t\tfor (var key in typeMapping) {\r\n\t\t\t\t\tif (key === _self.settings.type) {\r\n\t\t\t\t\t\treturn _self.settings.type;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\t// Verify the dataType of url according to typeMapping which\r\n\t\t\t// has been defined in settings.\r\n\t\t\tfor (var key in typeMapping) {\r\n\t\t\t\tif (typeMapping.hasOwnProperty(key)) {\r\n\t\t\t\t\tvar suffixArr = typeMapping[key].split(',');\r\n\r\n\t\t\t\t\tfor (var i = 0; i < suffixArr.length; i++) {\r\n\t\t\t\t\t\tvar suffix = suffixArr[i].toLowerCase(),\r\n\t\t\t\t\t\t\tregexp = new RegExp('\\.(' + suffix + ')$', 'i'),\r\n\t\t\t\t\t\t\tstr = url.toLowerCase().split('?')[0].substr(-5);\r\n\r\n\t\t\t\t\t\tif (regexp.test(str) === true || (key === 'inline' && (url.indexOf(suffix) > -1))) {\r\n\t\t\t\t\t\t\treturn key;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\t// If no expression matched, return 'iframe'.\r\n\t\t\treturn 'iframe';\r\n\t\t},\r\n\r\n\t\t/**\r\n\t\t * Extends html markup with the essential tags\r\n\t\t *\r\n\t\t * @return\t{void}\r\n\t\t */\r\n\t\t_addElements: function () {\r\n\t\t\tif (typeof _self.objects.case !== 'undefined' && $('#' + _self.objects.case.attr('id')).length) {\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\r\n\t\t\t_self.settings.markup();\r\n\t\t},\r\n\r\n\t\t/**\r\n\t\t * Shows the loaded content\r\n\t\t *\r\n\t\t * @param\t{object}\t$object\r\n\t\t * @return\t{void}\r\n\t\t */\r\n\t\t_showContent: function ($object) {\r\n\t\t\t// Add data attribute with the object type\r\n\t\t\t_self.objects.document.attr(_self._prefixAttributeName('type'), _self.objectData.type);\r\n\r\n\t\t\t_self.cache.object = $object;\r\n\r\n\t\t\t// Call onBeforeShow hook functions\r\n\t\t\t_self._callHooks(_self.settings.onBeforeShow);\r\n\r\n\t\t\tif (_self.settings.breakBeforeShow) return;\r\n\t\t\t_self.show();\r\n\t\t},\r\n\r\n\t\t/**\r\n\t\t * Starts the 'inTransition'\r\n\t\t * @return\t{void}\r\n\t\t */\r\n\t\t_startInTransition: function () {\r\n\t\t\tswitch (_self.transition.in()) {\r\n\t\t\t\tcase 'scrollTop':\r\n\t\t\t\tcase 'scrollRight':\r\n\t\t\t\tcase 'scrollBottom':\r\n\t\t\t\tcase 'scrollLeft':\r\n\t\t\t\tcase 'scrollHorizontal':\r\n\t\t\t\tcase 'scrollVertical':\r\n\t\t\t\t\t_self.transition.scroll(_self.objects.case, 'in', _self.settings.speedIn);\r\n\t\t\t\t\t_self.transition.fade(_self.objects.contentInner, 'in', _self.settings.speedIn);\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase 'elastic':\r\n\t\t\t\t\tif (_self.objects.case.css('opacity') < 1) {\r\n\t\t\t\t\t\t_self.transition.zoom(_self.objects.case, 'in', _self.settings.speedIn);\r\n\t\t\t\t\t\t_self.transition.fade(_self.objects.contentInner, 'in', _self.settings.speedIn);\r\n\t\t\t\t}\r\n\t\t\t\tcase 'fade':\r\n\t\t\t\tcase 'fadeInline':\r\n\t\t\t\t\t_self.transition.fade(_self.objects.case, 'in', _self.settings.speedIn);\r\n\t\t\t\t\t_self.transition.fade(_self.objects.contentInner, 'in', _self.settings.speedIn);\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tdefault:\r\n\t\t\t\t\t_self.transition.fade(_self.objects.case, 'in', 0);\r\n\t\t\t\t\tbreak;\r\n\t\t\t}\r\n\r\n\t\t\t// End loading.\r\n\t\t\t_self._loading('end');\r\n\t\t\t_self.isBusy = false;\r\n\r\n\t\t\t// Set index of the first item opened\r\n\t\t\tif (!_self.cache.firstOpened) {\r\n\t\t\t\t_self.cache.firstOpened = _self.objectData.this;\r\n\t\t\t}\r\n\r\n\t\t\t// Fade in the info with delay\r\n\t\t\t_self.objects.info.hide();\r\n\t\t\tsetTimeout(function () {\r\n\t\t\t\t _self.transition.fade(_self.objects.info, 'in', _self.settings.speedIn);\r\n\t\t\t}, _self.settings.speedIn);\r\n\r\n\t\t\t// Call onFinish hook functions\r\n\t\t\t_self._callHooks(_self.settings.onFinish);\r\n\t\t},\r\n\r\n\t\t/**\r\n\t\t * Processes the content to show\r\n\t\t *\r\n\t\t * @return\t{void}\r\n\t\t */\r\n\t\t_processContent: function () {\r\n\t\t\t_self.isBusy = true;\r\n\r\n\t\t\t// Fade out the info at first\r\n\t\t\t_self.transition.fade(_self.objects.info, 'out', 0);\r\n\r\n\t\t\tswitch (_self.settings.transitionOut) {\r\n\t\t\t\tcase 'scrollTop':\r\n\t\t\t\tcase 'scrollRight':\r\n\t\t\t\tcase 'scrollBottom':\r\n\t\t\t\tcase 'scrollLeft':\r\n\t\t\t\tcase 'scrollVertical':\r\n\t\t\t\tcase 'scrollHorizontal':\r\n\t\t\t\t\tif (_self.objects.case.is(':hidden')) {\r\n\t\t\t\t\t\t_self.transition.fade(_self.objects.contentInner, 'out', 0);\r\n\t\t\t\t\t\t_self.transition.fade(_self.objects.case, 'out', 0, 0, function () {\r\n\t\t\t\t\t\t\t_self._loadContent();\r\n\t\t\t\t\t\t});\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\t_self.transition.scroll(_self.objects.case, 'out', _self.settings.speedOut, function () {\r\n\t\t\t\t\t\t\t_self._loadContent();\r\n\t\t\t\t\t\t});\r\n\t\t\t\t\t}\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase 'fade':\r\n\t\t\t\t\tif (_self.objects.case.is(':hidden')) {\r\n\t\t\t\t\t\t_self.transition.fade(_self.objects.case, 'out', 0, 0, function () {\r\n\t\t\t\t\t\t\t_self._loadContent();\r\n\t\t\t\t\t\t});\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\t_self.transition.fade(_self.objects.case, 'out', _self.settings.speedOut, 0, function () {\r\n\t\t\t\t\t\t\t_self._loadContent();\r\n\t\t\t\t\t\t});\r\n\t\t\t\t\t}\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase 'fadeInline':\r\n\t\t\t\tcase 'elastic':\r\n\t\t\t\t\tif (_self.objects.case.is(':hidden')) {\r\n\t\t\t\t\t\t_self.transition.fade(_self.objects.case, 'out', 0, 0, function () {\r\n\t\t\t\t\t\t\t_self._loadContent();\r\n\t\t\t\t\t\t});\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\t_self.transition.fade(_self.objects.contentInner, 'out', _self.settings.speedOut, 0, function () {\r\n\t\t\t\t\t\t\t_self._loadContent();\r\n\t\t\t\t\t\t});\r\n\t\t\t\t\t}\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tdefault:\r\n\t\t\t\t\t_self.transition.fade(_self.objects.case, 'out', 0, 0, function () {\r\n\t\t\t\t\t\t_self._loadContent();\r\n\t\t\t\t\t});\r\n\t\t\t\t\tbreak;\r\n\t\t\t}\r\n\t\t},\r\n\r\n\t\t/**\r\n\t\t * Handles events for gallery buttons\r\n\t\t *\r\n\t\t * @return\t{void}\r\n\t\t */\r\n\t\t_handleEvents: function () {\r\n\t\t\t_self._unbindEvents();\r\n\r\n\t\t\t_self.objects.nav.children().not(_self.objects.close).hide();\r\n\r\n\t\t\t// If slideshow is enabled, show play/pause and start timeout.\r\n\t\t\tif (_self.isSlideshowEnabled()) {\r\n\t\t\t\t// Only start the timeout if slideshow autostart is enabled and slideshow is not pausing\r\n\t\t\t\tif (\r\n\t\t\t\t\t(_self.settings.slideshowAutoStart === true || _self.isSlideshowStarted) &&\r\n\t\t\t\t\t!_self.objects.nav.hasClass(_self.settings.classPrefix + 'paused')\r\n\t\t\t\t) {\r\n\t\t\t\t\t_self._startTimeout();\r\n\t\t\t\t} else {\r\n\t\t\t\t\t_self._stopTimeout();\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tif (_self.settings.liveResize) {\r\n\t\t\t\t_self._watchResizeInteraction();\r\n\t\t\t}\r\n\r\n\t\t\t_self.objects.close.click(function (event) {\r\n\t\t\t\tevent.preventDefault();\r\n\t\t\t\t_self.close();\r\n\t\t\t});\r\n\r\n\t\t\tif (_self.settings.closeOnOverlayClick === true) {\r\n\t\t\t\t_self.objects.overlay.css('cursor', 'pointer').click(function (event) {\r\n\t\t\t\t\tevent.preventDefault();\r\n\r\n\t\t\t\t\t_self.close();\r\n\t\t\t\t});\r\n\t\t\t}\r\n\r\n\t\t\tif (_self.settings.useKeys === true) {\r\n\t\t\t\t_self._addKeyEvents();\r\n\t\t\t}\r\n\r\n\t\t\tif (_self.objectData.isPartOfSequence) {\r\n\t\t\t\t_self.objects.nav.attr(_self._prefixAttributeName('ispartofsequence'), true);\r\n\t\t\t\t_self.objects.nav.data('items', _self._setNavigation());\r\n\r\n\t\t\t\t_self.objects.prev.click(function (event) {\r\n\t\t\t\t\tevent.preventDefault();\r\n\r\n\t\t\t\t\tif (_self.settings.navigateEndless === true || !_self.item.isFirst()) {\r\n\t\t\t\t\t\t_self.objects.prev.unbind('click');\r\n\t\t\t\t\t\t_self.cache.action = 'prev';\r\n\t\t\t\t\t\t_self.objects.nav.data('items').prev.click();\r\n\r\n\t\t\t\t\t\tif (_self.isSlideshowEnabled()) {\r\n\t\t\t\t\t\t\t_self._stopTimeout();\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t});\r\n\r\n\t\t\t\t_self.objects.next.click(function (event) {\r\n\t\t\t\t\tevent.preventDefault();\r\n\r\n\t\t\t\t\tif (_self.settings.navigateEndless === true || !_self.item.isLast()) {\r\n\t\t\t\t\t\t_self.objects.next.unbind('click');\r\n\t\t\t\t\t\t_self.cache.action = 'next';\r\n\t\t\t\t\t\t_self.objects.nav.data('items').next.click();\r\n\r\n\t\t\t\t\t\tif (_self.isSlideshowEnabled()) {\r\n\t\t\t\t\t\t\t_self._stopTimeout();\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t});\r\n\r\n\t\t\t\tif (_self.isSlideshowEnabled()) {\r\n\t\t\t\t\t_self.objects.play.click(function (event) {\r\n\t\t\t\t\t\tevent.preventDefault();\r\n\t\t\t\t\t\t_self._startTimeout();\r\n\t\t\t\t\t});\r\n\t\t\t\t\t_self.objects.pause.click(function (event) {\r\n\t\t\t\t\t\tevent.preventDefault();\r\n\t\t\t\t\t\t_self._stopTimeout();\r\n\t\t\t\t\t});\r\n\t\t\t\t}\r\n\r\n\t\t\t\t// Enable swiping if activated\r\n\t\t\t\tif (_self.settings.swipe === true) {\r\n\t\t\t\t\tif ($.isPlainObject($.event.special.swipeleft)) {\r\n\t\t\t\t\t\t_self.objects.case.on('swipeleft', function (event) {\r\n\t\t\t\t\t\t\tevent.preventDefault();\r\n\t\t\t\t\t\t\t_self.objects.next.click();\r\n\t\t\t\t\t\t\tif (_self.isSlideshowEnabled()) {\r\n\t\t\t\t\t\t\t\t_self._stopTimeout();\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t});\r\n\t\t\t\t\t}\r\n\t\t\t\t\tif ($.isPlainObject($.event.special.swiperight)) {\r\n\t\t\t\t\t\t_self.objects.case.on('swiperight', function (event) {\r\n\t\t\t\t\t\t\tevent.preventDefault();\r\n\t\t\t\t\t\t\t_self.objects.prev.click();\r\n\t\t\t\t\t\t\tif (_self.isSlideshowEnabled()) {\r\n\t\t\t\t\t\t\t\t_self._stopTimeout();\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t});\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t},\r\n\r\n\t\t/**\r\n\t\t * Adds the key events\r\n\t\t *\r\n\t\t * @return\t{void}\r\n\t\t */\r\n\t\t_addKeyEvents: function () {\r\n\t\t\t$(document).bind('keyup.lightcase', function (event) {\r\n\t\t\t\t// Do nothing if lightcase is in process\r\n\t\t\t\tif (_self.isBusy) {\r\n\t\t\t\t\treturn;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tswitch (event.keyCode) {\r\n\t\t\t\t\t// Escape key\r\n\t\t\t\t\tcase 27:\r\n\t\t\t\t\t\t_self.objects.close.click();\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t// Backward key\r\n\t\t\t\t\tcase 37:\r\n\t\t\t\t\t\tif (_self.objectData.isPartOfSequence) {\r\n\t\t\t\t\t\t\t_self.objects.prev.click();\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t// Forward key\r\n\t\t\t\t\tcase 39:\r\n\t\t\t\t\t\tif (_self.objectData.isPartOfSequence) {\r\n\t\t\t\t\t\t\t_self.objects.next.click();\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t},\r\n\r\n\t\t/**\r\n\t\t * Starts the slideshow timeout\r\n\t\t *\r\n\t\t * @return\t{void}\r\n\t\t */\r\n\t\t_startTimeout: function () {\r\n\t\t\t_self.isSlideshowStarted = true;\r\n\r\n\t\t\t_self.objects.play.hide();\r\n\t\t\t_self.objects.pause.show();\r\n\r\n\t\t\t_self.cache.action = 'next';\r\n\t\t\t_self.objects.nav.removeClass(_self.settings.classPrefix + 'paused');\r\n\r\n\t\t\t_self.timeout = setTimeout(function () {\r\n\t\t\t\t_self.objects.nav.data('items').next.click();\r\n\t\t\t}, _self.settings.timeout);\r\n\t\t},\r\n\r\n\t\t/**\r\n\t\t * Stops the slideshow timeout\r\n\t\t *\r\n\t\t * @return\t{void}\r\n\t\t */\r\n\t\t_stopTimeout: function () {\r\n\t\t\t_self.objects.play.show();\r\n\t\t\t_self.objects.pause.hide();\r\n\r\n\t\t\t_self.objects.nav.addClass(_self.settings.classPrefix + 'paused');\r\n\r\n\t\t\tclearTimeout(_self.timeout);\r\n\t\t},\r\n\r\n\t\t/**\r\n\t\t * Sets the navigator buttons (prev/next)\r\n\t\t *\r\n\t\t * @return\t{object}\titems\r\n\t\t */\r\n\t\t_setNavigation: function () {\r\n\t\t\tvar $links = $((_self.cache.selector || _self.settings.attr)),\r\n\t\t\t\tsequenceLength = _self.objectData.sequenceLength - 1,\r\n\t\t\t\titems = {\r\n\t\t\t\t\tprev: $links.eq(_self.objectData.prevIndex),\r\n\t\t\t\t\tnext: $links.eq(_self.objectData.nextIndex)\r\n\t\t\t\t};\r\n\r\n\t\t\tif (_self.objectData.currentIndex > 0) {\r\n\t\t\t\t_self.objects.prev.show();\r\n\t\t\t} else {\r\n\t\t\t\titems.prevItem = $links.eq(sequenceLength);\r\n\t\t\t}\r\n\t\t\tif (_self.objectData.nextIndex <= sequenceLength) {\r\n\t\t\t\t_self.objects.next.show();\r\n\t\t\t} else {\r\n\t\t\t\titems.next = $links.eq(0);\r\n\t\t\t}\r\n\r\n\t\t\tif (_self.settings.navigateEndless === true) {\r\n\t\t\t\t_self.objects.prev.show();\r\n\t\t\t\t_self.objects.next.show();\r\n\t\t\t}\r\n\r\n\t\t\treturn items;\r\n\t\t},\r\n\r\n\t\t/**\r\n\t\t * Item information/status\r\n\t\t *\r\n\t\t */\r\n\t\titem: {\r\n\t\t\t/**\r\n\t\t\t * Verifies if the current item is first item.\r\n\t\t\t *\r\n\t\t\t * @return\t{boolean}\r\n\t\t\t */\r\n\t\t\tisFirst: function () {\r\n\t\t\t\treturn (_self.objectData.currentIndex === 0);\r\n\t\t\t},\r\n\r\n\t\t\t/**\r\n\t\t\t * Verifies if the current item is first item opened.\r\n\t\t\t *\r\n\t\t\t * @return\t{boolean}\r\n\t\t\t */\r\n\t\t\tisFirstOpened: function () {\r\n\t\t\t\treturn _self.objectData.this.is(_self.cache.firstOpened);\r\n\t\t\t},\r\n\r\n\t\t\t/**\r\n\t\t\t * Verifies if the current item is last item.\r\n\t\t\t *\r\n\t\t\t * @return\t{boolean}\r\n\t\t\t */\r\n\t\t\tisLast: function () {\r\n\t\t\t\treturn (_self.objectData.currentIndex === (_self.objectData.sequenceLength - 1));\r\n\t\t\t}\r\n\t\t},\r\n\r\n\t\t/**\r\n\t\t * Clones the object for inline elements\r\n\t\t *\r\n\t\t * @param\t{object}\t$object\r\n\t\t * @return\t{object}\t$clone\r\n\t\t */\r\n\t\t_cloneObject: function ($object) {\r\n\t\t\tvar $clone = $object.clone(),\r\n\t\t\t\tobjectId = $object.attr('id');\r\n\r\n\t\t\t// If element is hidden, cache the object and remove\r\n\t\t\tif ($object.is(':hidden')) {\r\n\t\t\t\t_self._cacheObjectData($object);\r\n\t\t\t\t$object.attr('id', _self.settings.idPrefix + 'temp-' + objectId).empty();\r\n\t\t\t} else {\r\n\t\t\t\t// Prevent duplicated id's\r\n\t\t\t\t$clone.removeAttr('id');\r\n\t\t\t}\r\n\r\n\t\t\treturn $clone.show();\r\n\t\t},\r\n\r\n\t\t/**\r\n\t\t * Verifies if it is a mobile device\r\n\t\t *\r\n\t\t * @return\t{boolean}\r\n\t\t */\r\n\t\tisMobileDevice: function () {\r\n\t\t\tvar deviceAgent = navigator.userAgent.toLowerCase(),\r\n\t\t\t\tagentId = deviceAgent.match(_self.settings.mobileMatchExpression);\r\n\r\n\t\t\treturn agentId ? true : false;\r\n\t\t},\r\n\r\n\t\t/**\r\n\t\t * Verifies if css transitions are supported\r\n\t\t *\r\n\t\t * @return\t{string|boolean}\tThe transition prefix if supported, else false.\r\n\t\t */\r\n\t\tisTransitionSupported: function () {\r\n\t\t\tvar body = _self.objects.body.get(0),\r\n\t\t\t\tisTransitionSupported = false,\r\n\t\t\t\ttransitionMapping = {\r\n\t\t\t\t\t'transition': '',\r\n\t\t\t\t\t'WebkitTransition': '-webkit-',\r\n\t\t\t\t\t'MozTransition': '-moz-',\r\n\t\t\t\t\t'OTransition': '-o-',\r\n\t\t\t\t\t'MsTransition': '-ms-'\r\n\t\t\t\t};\r\n\r\n\t\t\tfor (var key in transitionMapping) {\r\n\t\t\t\tif (transitionMapping.hasOwnProperty(key) && key in body.style) {\r\n\t\t\t\t\t_self.support.transition = transitionMapping[key];\r\n\t\t\t\t\tisTransitionSupported = true;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\treturn isTransitionSupported;\r\n\t\t},\r\n\r\n\t\t/**\r\n\t\t * Transition types\r\n\t\t *\r\n\t\t */\r\n\t\ttransition: {\r\n\t\t\t/**\r\n\t\t\t * Returns the correct transition type according to the status of interaction.\r\n\t\t\t *\r\n\t\t\t * @return\t{string}\tTransition type\r\n\t\t\t */\r\n\t\t\tin: function () {\r\n\t\t\t\tif (_self.settings.transitionOpen && !_self.cache.firstOpened) {\r\n\t\t\t\t\treturn _self.settings.transitionOpen;\r\n\t\t\t\t}\r\n\t\t\t\treturn _self.settings.transitionIn;\r\n\t\t\t},\r\n\r\n\t\t\t/**\r\n\t\t\t * Fades in/out the object\r\n\t\t\t *\r\n\t\t\t * @param\t{object}\t$object\r\n\t\t\t * @param\t{string}\ttype\r\n\t\t\t * @param\t{number}\tspeed\r\n\t\t\t * @param\t{number}\topacity\r\n\t\t\t * @param\t{function}\tcallback\r\n\t\t\t * @return\t{void}\t\tAnimates an object\r\n\t\t\t */\r\n\t\t\tfade: function ($object, type, speed, opacity, callback) {\r\n\t\t\t\tvar isInTransition = type === 'in',\r\n\t\t\t\t\tstartTransition = {},\r\n\t\t\t\t\tstartOpacity = $object.css('opacity'),\r\n\t\t\t\t\tendTransition = {},\r\n\t\t\t\t\tendOpacity = opacity ? opacity: isInTransition ? 1 : 0;\r\n\r\n\t\t\t\tif (!_self.isOpen && isInTransition) return;\r\n\r\n\t\t\t\tstartTransition['opacity'] = startOpacity;\r\n\t\t\t\tendTransition['opacity'] = endOpacity;\r\n\r\n\t\t\t\t$object.css(_self.support.transition + 'transition', 'none');\r\n\t\t\t\t$object.css(startTransition).show();\r\n\r\n\t\t\t\t// Css transition\r\n\t\t\t\tif (_self.support.transitions) {\r\n\t\t\t\t\tendTransition[_self.support.transition + 'transition'] = speed + 'ms ease';\r\n\r\n\t\t\t\t\tsetTimeout(function () {\r\n\t\t\t\t\t\t$object.css(endTransition);\r\n\r\n\t\t\t\t\t\tsetTimeout(function () {\r\n\t\t\t\t\t\t\t$object.css(_self.support.transition + 'transition', '');\r\n\r\n\t\t\t\t\t\t\tif (callback && (_self.isOpen || !isInTransition)) {\r\n\t\t\t\t\t\t\t\tcallback();\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t}, speed);\r\n\t\t\t\t\t}, 15);\r\n\t\t\t\t} else {\r\n\t\t\t\t\t// Fallback to js transition\r\n\t\t\t\t\t$object.stop();\r\n\t\t\t\t\t$object.animate(endTransition, speed, callback);\r\n\t\t\t\t}\r\n\t\t\t},\r\n\r\n\t\t\t/**\r\n\t\t\t * Scrolls in/out the object\r\n\t\t\t *\r\n\t\t\t * @param\t{object}\t$object\r\n\t\t\t * @param\t{string}\ttype\r\n\t\t\t * @param\t{number}\tspeed\r\n\t\t\t * @param\t{function}\tcallback\r\n\t\t\t * @return\t{void}\t\tAnimates an object\r\n\t\t\t */\r\n\t\t\tscroll: function ($object, type, speed, callback) {\r\n\t\t\t\tvar isInTransition = type === 'in',\r\n\t\t\t\t\ttransition = isInTransition ? _self.settings.transitionIn : _self.settings.transitionOut,\r\n\t\t\t\t\tdirection = 'left',\r\n\t\t\t\t\tstartTransition = {},\r\n\t\t\t\t\tstartOpacity = isInTransition ? 0 : 1,\r\n\t\t\t\t\tstartOffset = isInTransition ? '-50%' : '50%',\r\n\t\t\t\t\tendTransition = {},\r\n\t\t\t\t\tendOpacity = isInTransition ? 1 : 0,\r\n\t\t\t\t\tendOffset = isInTransition ? '50%' : '-50%';\r\n\r\n\t\t\t\tif (!_self.isOpen && isInTransition) return;\r\n\r\n\t\t\t\tswitch (transition) {\r\n\t\t\t\t\tcase 'scrollTop':\r\n\t\t\t\t\t\tdirection = 'top';\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t\tcase 'scrollRight':\r\n\t\t\t\t\t\tstartOffset = isInTransition ? '150%' : '50%';\r\n\t\t\t\t\t\tendOffset = isInTransition ? '50%' : '150%';\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t\tcase 'scrollBottom':\r\n\t\t\t\t\t\tdirection = 'top';\r\n\t\t\t\t\t\tstartOffset = isInTransition ? '150%' : '50%';\r\n\t\t\t\t\t\tendOffset = isInTransition ? '50%' : '150%';\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t\tcase 'scrollHorizontal':\r\n\t\t\t\t\t\tstartOffset = isInTransition ? '150%' : '50%';\r\n\t\t\t\t\t\tendOffset = isInTransition ? '50%' : '-50%';\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t\tcase 'scrollVertical':\r\n\t\t\t\t\t\tdirection = 'top';\r\n\t\t\t\t\t\tstartOffset = isInTransition ? '-50%' : '50%';\r\n\t\t\t\t\t\tendOffset = isInTransition ? '50%' : '150%';\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif (_self.cache.action === 'prev') {\r\n\t\t\t\t\tswitch (transition) {\r\n\t\t\t\t\t\tcase 'scrollHorizontal':\r\n\t\t\t\t\t\t\tstartOffset = isInTransition ? '-50%' : '50%';\r\n\t\t\t\t\t\t\tendOffset = isInTransition ? '50%' : '150%';\r\n\t\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t\tcase 'scrollVertical':\r\n\t\t\t\t\t\t\tstartOffset = isInTransition ? '150%' : '50%';\r\n\t\t\t\t\t\t\tendOffset = isInTransition ? '50%' : '-50%';\r\n\t\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\tstartTransition['opacity'] = startOpacity;\r\n\t\t\t\tstartTransition[direction] = startOffset;\r\n\r\n\t\t\t\tendTransition['opacity'] = endOpacity;\r\n\t\t\t\tendTransition[direction] = endOffset;\r\n\r\n\t\t\t\t$object.css(_self.support.transition + 'transition', 'none');\r\n\t\t\t\t$object.css(startTransition).show();\r\n\r\n\t\t\t\t// Css transition\r\n\t\t\t\tif (_self.support.transitions) {\r\n\t\t\t\t\tendTransition[_self.support.transition + 'transition'] = speed + 'ms ease';\r\n\r\n\t\t\t\t\tsetTimeout(function () {\r\n\t\t\t\t\t\t$object.css(endTransition);\r\n\r\n\t\t\t\t\t\tsetTimeout(function () {\r\n\t\t\t\t\t\t\t$object.css(_self.support.transition + 'transition', '');\r\n\r\n\t\t\t\t\t\t\tif (callback && (_self.isOpen || !isInTransition)) {\r\n\t\t\t\t\t\t\t\tcallback();\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t}, speed);\r\n\t\t\t\t\t}, 15);\r\n\t\t\t\t} else {\r\n\t\t\t\t\t// Fallback to js transition\r\n\t\t\t\t\t$object.stop();\r\n\t\t\t\t\t$object.animate(endTransition, speed, callback);\r\n\t\t\t\t}\r\n\t\t\t},\r\n\r\n\t\t\t/**\r\n\t\t\t * Zooms in/out the object\r\n\t\t\t *\r\n\t\t\t * @param\t{object}\t$object\r\n\t\t\t * @param\t{string}\ttype\r\n\t\t\t * @param\t{number}\tspeed\r\n\t\t\t * @param\t{function}\tcallback\r\n\t\t\t * @return\t{void}\t\tAnimates an object\r\n\t\t\t */\r\n\t\t\tzoom: function ($object, type, speed, callback) {\r\n\t\t\t\tvar isInTransition = type === 'in',\r\n\t\t\t\t\tstartTransition = {},\r\n\t\t\t\t\tstartOpacity = $object.css('opacity'),\r\n\t\t\t\t\tstartScale = isInTransition ? 'scale(0.75)' : 'scale(1)',\r\n\t\t\t\t\tendTransition = {},\r\n\t\t\t\t\tendOpacity = isInTransition ? 1 : 0,\r\n\t\t\t\t\tendScale = isInTransition ? 'scale(1)' : 'scale(0.75)';\r\n\r\n\t\t\t\tif (!_self.isOpen && isInTransition) return;\r\n\r\n\t\t\t\tstartTransition['opacity'] = startOpacity;\r\n\t\t\t\tstartTransition[_self.support.transition + 'transform'] = startScale;\r\n\r\n\t\t\t\tendTransition['opacity'] = endOpacity;\r\n\r\n\t\t\t\t$object.css(_self.support.transition + 'transition', 'none');\r\n\t\t\t\t$object.css(startTransition).show();\r\n\r\n\t\t\t\t// Css transition\r\n\t\t\t\tif (_self.support.transitions) {\r\n\t\t\t\t\tendTransition[_self.support.transition + 'transform'] = endScale;\r\n\t\t\t\t\tendTransition[_self.support.transition + 'transition'] = speed + 'ms ease';\r\n\r\n\t\t\t\t\tsetTimeout(function () {\r\n\t\t\t\t\t\t$object.css(endTransition);\r\n\r\n\t\t\t\t\t\tsetTimeout(function () {\r\n\t\t\t\t\t\t\t$object.css(_self.support.transition + 'transform', '');\r\n\t\t\t\t\t\t\t$object.css(_self.support.transition + 'transition', '');\r\n\r\n\t\t\t\t\t\t\tif (callback && (_self.isOpen || !isInTransition)) {\r\n\t\t\t\t\t\t\t\tcallback();\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t}, speed);\r\n\t\t\t\t\t}, 15);\r\n\t\t\t\t} else {\r\n\t\t\t\t\t// Fallback to js transition\r\n\t\t\t\t\t$object.stop();\r\n\t\t\t\t\t$object.animate(endTransition, speed, callback);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t},\r\n\r\n\t\t/**\r\n\t\t * Calls all the registered functions of a specific hook\r\n\t\t *\r\n\t\t * @param\t{object}\thooks\r\n\t\t * @return\t{void}\r\n\t\t */\r\n\t\t_callHooks: function (hooks) {\r\n\t\t\tif (typeof(hooks) === 'object') {\r\n\t\t\t\t$.each(hooks, function(index, hook) {\r\n\t\t\t\t\tif (typeof(hook) === 'function') {\r\n\t\t\t\t\t\thook.call(_self.origin);\r\n\t\t\t\t\t}\r\n\t\t\t\t});\r\n\t\t\t}\r\n\t\t},\r\n\r\n\t\t/**\r\n\t\t * Caches the object data\r\n\t\t *\r\n\t\t * @param\t{object}\t$object\r\n\t\t * @return\t{void}\r\n\t\t */\r\n\t\t_cacheObjectData: function ($object) {\r\n\t\t\t$.data($object, 'cache', {\r\n\t\t\t\tid: $object.attr('id'),\r\n\t\t\t\tcontent: $object.html()\r\n\t\t\t});\r\n\r\n\t\t\t_self.cache.originalObject = $object;\r\n\t\t},\r\n\r\n\t\t/**\r\n\t\t * Restores the object from cache\r\n\t\t *\r\n\t\t * @return\tvoid\r\n\t\t */\r\n\t\t_restoreObject: function () {\r\n\t\t\tvar $object = $('[id^=\"' + _self.settings.idPrefix + 'temp-\"]');\r\n\r\n\t\t\t$object.attr('id', $.data(_self.cache.originalObject, 'cache').id);\r\n\t\t\t$object.html($.data(_self.cache.originalObject, 'cache').content);\r\n\t\t},\r\n\r\n\t\t/**\r\n\t\t * Executes functions for a window resize.\r\n\t\t * It stops an eventual timeout and recalculates dimensions.\r\n\t\t *\r\n\t\t * @param\t{object}\tdimensions\r\n\t\t * @return\t{void}\r\n\t\t */\r\n\t\tresize: function (event, dimensions) {\r\n\t\t\tif (!_self.isOpen) return;\r\n\r\n\t\t\tif (_self.isSlideshowEnabled()) {\r\n\t\t\t\t_self._stopTimeout();\r\n\t\t\t}\r\n\r\n\t\t\tif (typeof dimensions === 'object' && dimensions !== null) {\r\n\t\t\t\tif (dimensions.width) {\r\n\t\t\t\t\t_self.cache.object.attr(\r\n\t\t\t\t\t\t_self._prefixAttributeName('width'),\r\n\t\t\t\t\t\tdimensions.width\r\n\t\t\t\t\t);\r\n\t\t\t\t}\r\n\t\t\t\tif (dimensions.maxWidth) {\r\n\t\t\t\t\t_self.cache.object.attr(\r\n\t\t\t\t\t\t_self._prefixAttributeName('max-width'),\r\n\t\t\t\t\t\tdimensions.maxWidth\r\n\t\t\t\t\t);\r\n\t\t\t\t}\r\n\t\t\t\tif (dimensions.height) {\r\n\t\t\t\t\t_self.cache.object.attr(\r\n\t\t\t\t\t\t_self._prefixAttributeName('height'),\r\n\t\t\t\t\t\tdimensions.height\r\n\t\t\t\t\t);\r\n\t\t\t\t}\r\n\t\t\t\tif (dimensions.maxHeight) {\r\n\t\t\t\t\t_self.cache.object.attr(\r\n\t\t\t\t\t\t_self._prefixAttributeName('max-height'),\r\n\t\t\t\t\t\tdimensions.maxHeight\r\n\t\t\t\t\t);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\t_self.dimensions = _self.getViewportDimensions();\r\n\t\t\t_self._calculateDimensions(_self.cache.object);\r\n\r\n\t\t\t// Call onResize hook functions\r\n\t\t\t_self._callHooks(_self.settings.onResize);\r\n\t\t},\r\n\r\n\t\t/**\r\n\t\t * Watches for any resize interaction and caches the new sizes.\r\n\t\t *\r\n\t\t * @return\t{void}\r\n\t\t */\r\n\t\t_watchResizeInteraction: function () {\r\n\t\t\t$(window).resize(_self.resize);\r\n\t\t},\r\n\r\n\t\t/**\r\n\t\t * Stop watching any resize interaction related to _self.\r\n\t\t *\r\n\t\t * @return\t{void}\r\n\t\t */\r\n\t\t_unwatchResizeInteraction: function () {\r\n\t\t\t$(window).off('resize', _self.resize);\r\n\t\t},\r\n\r\n\t\t/**\r\n\t\t * Switches to the fullscreen mode\r\n\t\t *\r\n\t\t * @return\t{void}\r\n\t\t */\r\n\t\t_switchToFullScreenMode: function () {\r\n\t\t\t_self.settings.shrinkFactor = 1;\r\n\t\t\t_self.settings.overlayOpacity = 1;\r\n\r\n\t\t\t$('html').addClass(_self.settings.classPrefix + 'fullScreenMode');\r\n\t\t},\r\n\r\n\t\t/**\r\n\t\t * Enters into the lightcase view\r\n\t\t *\r\n\t\t * @return\t{void}\r\n\t\t */\r\n\t\t_open: function () {\r\n\t\t\t_self.isOpen = true;\r\n\r\n\t\t\t_self.support.transitions = _self.settings.cssTransitions ? _self.isTransitionSupported() : false;\r\n\t\t\t_self.support.mobileDevice = _self.isMobileDevice();\r\n\r\n\t\t\tif (_self.support.mobileDevice) {\r\n\t\t\t\t$('html').addClass(_self.settings.classPrefix + 'isMobileDevice');\r\n\r\n\t\t\t\tif (_self.settings.fullScreenModeForMobile) {\r\n\t\t\t\t\t_self._switchToFullScreenMode();\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tif (!_self.settings.transitionIn) {\r\n\t\t\t\t_self.settings.transitionIn = _self.settings.transition;\r\n\t\t\t}\r\n\t\t\tif (!_self.settings.transitionOut) {\r\n\t\t\t\t_self.settings.transitionOut = _self.settings.transition;\r\n\t\t\t}\r\n\r\n\t\t\tswitch (_self.transition.in()) {\r\n\t\t\t\tcase 'fade':\r\n\t\t\t\tcase 'fadeInline':\r\n\t\t\t\tcase 'elastic':\r\n\t\t\t\tcase 'scrollTop':\r\n\t\t\t\tcase 'scrollRight':\r\n\t\t\t\tcase 'scrollBottom':\r\n\t\t\t\tcase 'scrollLeft':\r\n\t\t\t\tcase 'scrollVertical':\r\n\t\t\t\tcase 'scrollHorizontal':\r\n\t\t\t\t\tif (_self.objects.case.is(':hidden')) {\r\n\t\t\t\t\t\t_self.objects.close.css('opacity', 0);\r\n\t\t\t\t\t\t_self.objects.overlay.css('opacity', 0);\r\n\t\t\t\t\t\t_self.objects.case.css('opacity', 0);\r\n\t\t\t\t\t\t_self.objects.contentInner.css('opacity', 0);\r\n\t\t\t\t\t}\r\n\t\t\t\t\t_self.transition.fade(_self.objects.overlay, 'in', _self.settings.speedIn, _self.settings.overlayOpacity, function () {\r\n\t\t\t\t\t\t_self.transition.fade(_self.objects.close, 'in', _self.settings.speedIn);\r\n\t\t\t\t\t\t_self._handleEvents();\r\n\t\t\t\t\t\t_self._processContent();\r\n\t\t\t\t\t});\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tdefault:\r\n\t\t\t\t\t_self.transition.fade(_self.objects.overlay, 'in', 0, _self.settings.overlayOpacity, function () {\r\n\t\t\t\t\t\t_self.transition.fade(_self.objects.close, 'in', 0);\r\n\t\t\t\t\t\t_self._handleEvents();\r\n\t\t\t\t\t\t_self._processContent();\r\n\t\t\t\t\t});\r\n\t\t\t\t\tbreak;\r\n\t\t\t}\r\n\r\n\t\t\t_self.objects.document.addClass(_self.settings.classPrefix + 'open');\r\n\t\t\t_self.objects.case.attr('aria-hidden', 'false');\r\n\t\t},\r\n\r\n\t\t/**\r\n\t\t * Shows the lightcase by starting the transition\r\n\t\t */\r\n\t\tshow: function () {\r\n\t\t\t// Call onCalculateDimensions hook functions\r\n\t\t\t_self._callHooks(_self.settings.onBeforeCalculateDimensions);\r\n\r\n\t\t\t_self._calculateDimensions(_self.cache.object);\r\n\r\n\t\t\t// Call onAfterCalculateDimensions hook functions\r\n\t\t\t_self._callHooks(_self.settings.onAfterCalculateDimensions);\r\n\r\n\t\t\t_self._startInTransition();\r\n\t\t},\r\n\r\n\t\t/**\r\n\t\t * Escapes from the lightcase view\r\n\t\t *\r\n\t\t * @return\t{void}\r\n\t\t */\r\n\t\tclose: function () {\r\n\t\t\t_self.isOpen = false;\r\n\r\n\t\t\tif (_self.isSlideshowEnabled()) {\r\n\t\t\t\t_self._stopTimeout();\r\n\t\t\t\t_self.isSlideshowStarted = false;\r\n\t\t\t\t_self.objects.nav.removeClass(_self.settings.classPrefix + 'paused');\r\n\t\t\t}\r\n\r\n\t\t\t_self.objects.loading.hide();\r\n\r\n\t\t\t_self._unbindEvents();\r\n\r\n\t\t\t_self._unwatchResizeInteraction();\r\n\r\n\t\t\t$('html').removeClass(_self.settings.classPrefix + 'open');\r\n\t\t\t_self.objects.case.attr('aria-hidden', 'true');\r\n\r\n\t\t\t_self.objects.nav.children().hide();\r\n\t\t\t_self.objects.close.hide();\r\n\r\n\t\t\t// Call onClose hook functions\r\n\t\t\t_self._callHooks(_self.settings.onClose);\r\n\r\n\t\t\t// Fade out the info at first\r\n\t\t\t_self.transition.fade(_self.objects.info, 'out', 0);\r\n\r\n\t\t\tswitch (_self.settings.transitionClose || _self.settings.transitionOut) {\r\n\t\t\t\tcase 'fade':\r\n\t\t\t\tcase 'fadeInline':\r\n\t\t\t\tcase 'scrollTop':\r\n\t\t\t\tcase 'scrollRight':\r\n\t\t\t\tcase 'scrollBottom':\r\n\t\t\t\tcase 'scrollLeft':\r\n\t\t\t\tcase 'scrollHorizontal':\r\n\t\t\t\tcase 'scrollVertical':\r\n\t\t\t\t\t_self.transition.fade(_self.objects.case, 'out', _self.settings.speedOut, 0, function () {\r\n\t\t\t\t\t\t_self.transition.fade(_self.objects.overlay, 'out', _self.settings.speedOut, 0, function () {\r\n\t\t\t\t\t\t\t_self.cleanup();\r\n\t\t\t\t\t\t});\r\n\t\t\t\t\t});\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase 'elastic':\r\n\t\t\t\t\t_self.transition.zoom(_self.objects.case, 'out', _self.settings.speedOut, function () {\r\n\t\t\t\t\t\t_self.transition.fade(_self.objects.overlay, 'out', _self.settings.speedOut, 0, function () {\r\n\t\t\t\t\t\t\t_self.cleanup();\r\n\t\t\t\t\t\t});\r\n\t\t\t\t\t});\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tdefault:\r\n\t\t\t\t\t_self.cleanup();\r\n\t\t\t\t\tbreak;\r\n\t\t\t}\r\n\t\t},\r\n\r\n\t\t/**\r\n\t\t * Unbinds all given events\r\n\t\t *\r\n\t\t * @return\t{void}\r\n\t\t */\r\n\t\t_unbindEvents: function () {\r\n\t\t\t// Unbind overlay event\r\n\t\t\t_self.objects.overlay.unbind('click');\r\n\r\n\t\t\t// Unbind key events\r\n\t\t\t$(document).unbind('keyup.lightcase');\r\n\r\n\t\t\t// Unbind swipe events\r\n\t\t\t_self.objects.case.unbind('swipeleft').unbind('swiperight');\r\n\r\n\t\t\t// Unbind navigator events\r\n\t\t\t_self.objects.prev.unbind('click');\r\n\t\t\t_self.objects.next.unbind('click');\r\n\t\t\t_self.objects.play.unbind('click');\r\n\t\t\t_self.objects.pause.unbind('click');\r\n\r\n\t\t\t// Unbind close event\r\n\t\t\t_self.objects.close.unbind('click');\r\n\t\t},\r\n\r\n\t\t/**\r\n\t\t * Cleans up the dimensions\r\n\t\t *\r\n\t\t * @return\t{void}\r\n\t\t */\r\n\t\t_cleanupDimensions: function () {\r\n\t\t\tvar opacity = _self.objects.contentInner.css('opacity');\r\n\r\n\t\t\t_self.objects.case.css({\r\n\t\t\t\t'width': '',\r\n\t\t\t\t'height': '',\r\n\t\t\t\t'top': '',\r\n\t\t\t\t'left': '',\r\n\t\t\t\t'margin-top': '',\r\n\t\t\t\t'margin-left': ''\r\n\t\t\t});\r\n\r\n\t\t\t_self.objects.contentInner.removeAttr('style').css('opacity', opacity);\r\n\t\t\t_self.objects.contentInner.children().removeAttr('style');\r\n\t\t},\r\n\r\n\t\t/**\r\n\t\t * Cleanup after aborting lightcase\r\n\t\t *\r\n\t\t * @return\t{void}\r\n\t\t */\r\n\t\tcleanup: function () {\r\n\t\t\t_self._cleanupDimensions();\r\n\r\n\t\t\t_self.objects.loading.hide();\r\n\t\t\t_self.objects.overlay.hide();\r\n\t\t\t_self.objects.case.hide();\r\n\t\t\t_self.objects.prev.hide();\r\n\t\t\t_self.objects.next.hide();\r\n\t\t\t_self.objects.play.hide();\r\n\t\t\t_self.objects.pause.hide();\r\n\r\n\t\t\t_self.objects.document.removeAttr(_self._prefixAttributeName('type'));\r\n\t\t\t_self.objects.nav.removeAttr(_self._prefixAttributeName('ispartofsequence'));\r\n\r\n\t\t\t_self.objects.contentInner.empty().hide();\r\n\t\t\t_self.objects.info.children().empty();\r\n\r\n\t\t\tif (_self.cache.originalObject) {\r\n\t\t\t\t_self._restoreObject();\r\n\t\t\t}\r\n\r\n\t\t\t// Call onCleanup hook functions\r\n\t\t\t_self._callHooks(_self.settings.onCleanup);\r\n\r\n\t\t\t// Restore cache\r\n\t\t\t_self.cache = {};\r\n\t\t},\r\n\r\n\t\t/**\r\n\t\t * Returns the supported match media or undefined if the browser\r\n\t\t * doesn't support match media.\r\n\t\t *\r\n\t\t * @return\t{mixed}\r\n\t\t */\r\n\t\t_matchMedia: function () {\r\n\t\t\treturn window.matchMedia || window.msMatchMedia;\r\n\t\t},\r\n\r\n\t\t/**\r\n\t\t * Returns the devicePixelRatio if supported. Else, it simply returns\r\n\t\t * 1 as the default.\r\n\t\t *\r\n\t\t * @return\t{number}\r\n\t\t */\r\n\t\t_devicePixelRatio: function () {\r\n\t\t\treturn window.devicePixelRatio || 1;\r\n\t\t},\r\n\r\n\t\t/**\r\n\t\t * Checks if method is public\r\n\t\t *\r\n\t\t * @return\t{boolean}\r\n\t\t */\r\n\t\t_isPublicMethod: function (method) {\r\n\t\t\treturn (typeof _self[method] === 'function' && method.charAt(0) !== '_');\r\n\t\t},\r\n\r\n\t\t/**\r\n\t\t * Exports all public methods to be accessible, callable\r\n\t\t * from global scope.\r\n\t\t *\r\n\t\t * @return\t{void}\r\n\t\t */\r\n\t\t_export: function () {\r\n\t\t\twindow.lightcase = {};\r\n\r\n\t\t\t$.each(_self, function (property) {\r\n\t\t\t\tif (_self._isPublicMethod(property)) {\r\n\t\t\t\t\tlightcase[property] = _self[property];\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t}\r\n\t};\r\n\r\n\t_self._export();\r\n\r\n\t$.fn.lightcase = function (method) {\r\n\t\t// Method calling logic (only public methods are applied)\r\n\t\tif (_self._isPublicMethod(method)) {\r\n\t\t\treturn _self[method].apply(this, Array.prototype.slice.call(arguments, 1));\r\n\t\t} else if (typeof method === 'object' || !method) {\r\n\t\t\treturn _self.init.apply(this, arguments);\r\n\t\t} else {\r\n\t\t\t$.error('Method ' + method + ' does not exist on jQuery.lightcase');\r\n\t\t}\r\n\t};\r\n})(jQuery);\r\n","/*!\r\n * Select2 4.0.13\r\n * https://select2.github.io\r\n *\r\n * Released under the MIT license\r\n * https://github.com/select2/select2/blob/master/LICENSE.md\r\n */\r\n;(function (factory) {\r\n if (typeof define === 'function' && define.amd) {\r\n // AMD. Register as an anonymous module.\r\n define(['jquery'], factory);\r\n } else if (typeof module === 'object' && module.exports) {\r\n // Node/CommonJS\r\n module.exports = function (root, jQuery) {\r\n if (jQuery === undefined) {\r\n // require('jQuery') returns a factory that requires window to\r\n // build a jQuery instance, we normalize how we use modules\r\n // that require this pattern but the window provided is a noop\r\n // if it's defined (how jquery works)\r\n if (typeof window !== 'undefined') {\r\n jQuery = require('jquery');\r\n }\r\n else {\r\n jQuery = require('jquery')(root);\r\n }\r\n }\r\n factory(jQuery);\r\n return jQuery;\r\n };\r\n } else {\r\n // Browser globals\r\n factory(jQuery);\r\n }\r\n} (function (jQuery) {\r\n // This is needed so we can catch the AMD loader configuration and use it\r\n // The inner file should be wrapped (by `banner.start.js`) in a function that\r\n // returns the AMD loader references.\r\n var S2 =(function () {\r\n // Restore the Select2 AMD loader so it can be used\r\n // Needed mostly in the language files, where the loader is not inserted\r\n if (jQuery && jQuery.fn && jQuery.fn.select2 && jQuery.fn.select2.amd) {\r\n var S2 = jQuery.fn.select2.amd;\r\n }\r\nvar S2;(function () { if (!S2 || !S2.requirejs) {\r\nif (!S2) { S2 = {}; } else { require = S2; }\r\n/**\r\n * @license almond 0.3.3 Copyright jQuery Foundation and other contributors.\r\n * Released under MIT license, http://github.com/requirejs/almond/LICENSE\r\n */\r\n//Going sloppy to avoid 'use strict' string cost, but strict practices should\r\n//be followed.\r\n/*global setTimeout: false */\r\n\r\nvar requirejs, require, define;\r\n(function (undef) {\r\n var main, req, makeMap, handlers,\r\n defined = {},\r\n waiting = {},\r\n config = {},\r\n defining = {},\r\n hasOwn = Object.prototype.hasOwnProperty,\r\n aps = [].slice,\r\n jsSuffixRegExp = /\\.js$/;\r\n\r\n function hasProp(obj, prop) {\r\n return hasOwn.call(obj, prop);\r\n }\r\n\r\n /**\r\n * Given a relative module name, like ./something, normalize it to\r\n * a real name that can be mapped to a path.\r\n * @param {String} name the relative name\r\n * @param {String} baseName a real name that the name arg is relative\r\n * to.\r\n * @returns {String} normalized name\r\n */\r\n function normalize(name, baseName) {\r\n var nameParts, nameSegment, mapValue, foundMap, lastIndex,\r\n foundI, foundStarMap, starI, i, j, part, normalizedBaseParts,\r\n baseParts = baseName && baseName.split(\"/\"),\r\n map = config.map,\r\n starMap = (map && map['*']) || {};\r\n\r\n //Adjust any relative paths.\r\n if (name) {\r\n name = name.split('/');\r\n lastIndex = name.length - 1;\r\n\r\n // If wanting node ID compatibility, strip .js from end\r\n // of IDs. Have to do this here, and not in nameToUrl\r\n // because node allows either .js or non .js to map\r\n // to same file.\r\n if (config.nodeIdCompat && jsSuffixRegExp.test(name[lastIndex])) {\r\n name[lastIndex] = name[lastIndex].replace(jsSuffixRegExp, '');\r\n }\r\n\r\n // Starts with a '.' so need the baseName\r\n if (name[0].charAt(0) === '.' && baseParts) {\r\n //Convert baseName to array, and lop off the last part,\r\n //so that . matches that 'directory' and not name of the baseName's\r\n //module. For instance, baseName of 'one/two/three', maps to\r\n //'one/two/three.js', but we want the directory, 'one/two' for\r\n //this normalization.\r\n normalizedBaseParts = baseParts.slice(0, baseParts.length - 1);\r\n name = normalizedBaseParts.concat(name);\r\n }\r\n\r\n //start trimDots\r\n for (i = 0; i < name.length; i++) {\r\n part = name[i];\r\n if (part === '.') {\r\n name.splice(i, 1);\r\n i -= 1;\r\n } else if (part === '..') {\r\n // If at the start, or previous value is still ..,\r\n // keep them so that when converted to a path it may\r\n // still work when converted to a path, even though\r\n // as an ID it is less than ideal. In larger point\r\n // releases, may be better to just kick out an error.\r\n if (i === 0 || (i === 1 && name[2] === '..') || name[i - 1] === '..') {\r\n continue;\r\n } else if (i > 0) {\r\n name.splice(i - 1, 2);\r\n i -= 2;\r\n }\r\n }\r\n }\r\n //end trimDots\r\n\r\n name = name.join('/');\r\n }\r\n\r\n //Apply map config if available.\r\n if ((baseParts || starMap) && map) {\r\n nameParts = name.split('/');\r\n\r\n for (i = nameParts.length; i > 0; i -= 1) {\r\n nameSegment = nameParts.slice(0, i).join(\"/\");\r\n\r\n if (baseParts) {\r\n //Find the longest baseName segment match in the config.\r\n //So, do joins on the biggest to smallest lengths of baseParts.\r\n for (j = baseParts.length; j > 0; j -= 1) {\r\n mapValue = map[baseParts.slice(0, j).join('/')];\r\n\r\n //baseName segment has config, find if it has one for\r\n //this name.\r\n if (mapValue) {\r\n mapValue = mapValue[nameSegment];\r\n if (mapValue) {\r\n //Match, update name to the new value.\r\n foundMap = mapValue;\r\n foundI = i;\r\n break;\r\n }\r\n }\r\n }\r\n }\r\n\r\n if (foundMap) {\r\n break;\r\n }\r\n\r\n //Check for a star map match, but just hold on to it,\r\n //if there is a shorter segment match later in a matching\r\n //config, then favor over this star map.\r\n if (!foundStarMap && starMap && starMap[nameSegment]) {\r\n foundStarMap = starMap[nameSegment];\r\n starI = i;\r\n }\r\n }\r\n\r\n if (!foundMap && foundStarMap) {\r\n foundMap = foundStarMap;\r\n foundI = starI;\r\n }\r\n\r\n if (foundMap) {\r\n nameParts.splice(0, foundI, foundMap);\r\n name = nameParts.join('/');\r\n }\r\n }\r\n\r\n return name;\r\n }\r\n\r\n function makeRequire(relName, forceSync) {\r\n return function () {\r\n //A version of a require function that passes a moduleName\r\n //value for items that may need to\r\n //look up paths relative to the moduleName\r\n var args = aps.call(arguments, 0);\r\n\r\n //If first arg is not require('string'), and there is only\r\n //one arg, it is the array form without a callback. Insert\r\n //a null so that the following concat is correct.\r\n if (typeof args[0] !== 'string' && args.length === 1) {\r\n args.push(null);\r\n }\r\n return req.apply(undef, args.concat([relName, forceSync]));\r\n };\r\n }\r\n\r\n function makeNormalize(relName) {\r\n return function (name) {\r\n return normalize(name, relName);\r\n };\r\n }\r\n\r\n function makeLoad(depName) {\r\n return function (value) {\r\n defined[depName] = value;\r\n };\r\n }\r\n\r\n function callDep(name) {\r\n if (hasProp(waiting, name)) {\r\n var args = waiting[name];\r\n delete waiting[name];\r\n defining[name] = true;\r\n main.apply(undef, args);\r\n }\r\n\r\n if (!hasProp(defined, name) && !hasProp(defining, name)) {\r\n throw new Error('No ' + name);\r\n }\r\n return defined[name];\r\n }\r\n\r\n //Turns a plugin!resource to [plugin, resource]\r\n //with the plugin being undefined if the name\r\n //did not have a plugin prefix.\r\n function splitPrefix(name) {\r\n var prefix,\r\n index = name ? name.indexOf('!') : -1;\r\n if (index > -1) {\r\n prefix = name.substring(0, index);\r\n name = name.substring(index + 1, name.length);\r\n }\r\n return [prefix, name];\r\n }\r\n\r\n //Creates a parts array for a relName where first part is plugin ID,\r\n //second part is resource ID. Assumes relName has already been normalized.\r\n function makeRelParts(relName) {\r\n return relName ? splitPrefix(relName) : [];\r\n }\r\n\r\n /**\r\n * Makes a name map, normalizing the name, and using a plugin\r\n * for normalization if necessary. Grabs a ref to plugin\r\n * too, as an optimization.\r\n */\r\n makeMap = function (name, relParts) {\r\n var plugin,\r\n parts = splitPrefix(name),\r\n prefix = parts[0],\r\n relResourceName = relParts[1];\r\n\r\n name = parts[1];\r\n\r\n if (prefix) {\r\n prefix = normalize(prefix, relResourceName);\r\n plugin = callDep(prefix);\r\n }\r\n\r\n //Normalize according\r\n if (prefix) {\r\n if (plugin && plugin.normalize) {\r\n name = plugin.normalize(name, makeNormalize(relResourceName));\r\n } else {\r\n name = normalize(name, relResourceName);\r\n }\r\n } else {\r\n name = normalize(name, relResourceName);\r\n parts = splitPrefix(name);\r\n prefix = parts[0];\r\n name = parts[1];\r\n if (prefix) {\r\n plugin = callDep(prefix);\r\n }\r\n }\r\n\r\n //Using ridiculous property names for space reasons\r\n return {\r\n f: prefix ? prefix + '!' + name : name, //fullName\r\n n: name,\r\n pr: prefix,\r\n p: plugin\r\n };\r\n };\r\n\r\n function makeConfig(name) {\r\n return function () {\r\n return (config && config.config && config.config[name]) || {};\r\n };\r\n }\r\n\r\n handlers = {\r\n require: function (name) {\r\n return makeRequire(name);\r\n },\r\n exports: function (name) {\r\n var e = defined[name];\r\n if (typeof e !== 'undefined') {\r\n return e;\r\n } else {\r\n return (defined[name] = {});\r\n }\r\n },\r\n module: function (name) {\r\n return {\r\n id: name,\r\n uri: '',\r\n exports: defined[name],\r\n config: makeConfig(name)\r\n };\r\n }\r\n };\r\n\r\n main = function (name, deps, callback, relName) {\r\n var cjsModule, depName, ret, map, i, relParts,\r\n args = [],\r\n callbackType = typeof callback,\r\n usingExports;\r\n\r\n //Use name if no relName\r\n relName = relName || name;\r\n relParts = makeRelParts(relName);\r\n\r\n //Call the callback to define the module, if necessary.\r\n if (callbackType === 'undefined' || callbackType === 'function') {\r\n //Pull out the defined dependencies and pass the ordered\r\n //values to the callback.\r\n //Default to [require, exports, module] if no deps\r\n deps = !deps.length && callback.length ? ['require', 'exports', 'module'] : deps;\r\n for (i = 0; i < deps.length; i += 1) {\r\n map = makeMap(deps[i], relParts);\r\n depName = map.f;\r\n\r\n //Fast path CommonJS standard dependencies.\r\n if (depName === \"require\") {\r\n args[i] = handlers.require(name);\r\n } else if (depName === \"exports\") {\r\n //CommonJS module spec 1.1\r\n args[i] = handlers.exports(name);\r\n usingExports = true;\r\n } else if (depName === \"module\") {\r\n //CommonJS module spec 1.1\r\n cjsModule = args[i] = handlers.module(name);\r\n } else if (hasProp(defined, depName) ||\r\n hasProp(waiting, depName) ||\r\n hasProp(defining, depName)) {\r\n args[i] = callDep(depName);\r\n } else if (map.p) {\r\n map.p.load(map.n, makeRequire(relName, true), makeLoad(depName), {});\r\n args[i] = defined[depName];\r\n } else {\r\n throw new Error(name + ' missing ' + depName);\r\n }\r\n }\r\n\r\n ret = callback ? callback.apply(defined[name], args) : undefined;\r\n\r\n if (name) {\r\n //If setting exports via \"module\" is in play,\r\n //favor that over return value and exports. After that,\r\n //favor a non-undefined return value over exports use.\r\n if (cjsModule && cjsModule.exports !== undef &&\r\n cjsModule.exports !== defined[name]) {\r\n defined[name] = cjsModule.exports;\r\n } else if (ret !== undef || !usingExports) {\r\n //Use the return value from the function.\r\n defined[name] = ret;\r\n }\r\n }\r\n } else if (name) {\r\n //May just be an object definition for the module. Only\r\n //worry about defining if have a module name.\r\n defined[name] = callback;\r\n }\r\n };\r\n\r\n requirejs = require = req = function (deps, callback, relName, forceSync, alt) {\r\n if (typeof deps === \"string\") {\r\n if (handlers[deps]) {\r\n //callback in this case is really relName\r\n return handlers[deps](callback);\r\n }\r\n //Just return the module wanted. In this scenario, the\r\n //deps arg is the module name, and second arg (if passed)\r\n //is just the relName.\r\n //Normalize module name, if it contains . or ..\r\n return callDep(makeMap(deps, makeRelParts(callback)).f);\r\n } else if (!deps.splice) {\r\n //deps is a config object, not an array.\r\n config = deps;\r\n if (config.deps) {\r\n req(config.deps, config.callback);\r\n }\r\n if (!callback) {\r\n return;\r\n }\r\n\r\n if (callback.splice) {\r\n //callback is an array, which means it is a dependency list.\r\n //Adjust args if there are dependencies\r\n deps = callback;\r\n callback = relName;\r\n relName = null;\r\n } else {\r\n deps = undef;\r\n }\r\n }\r\n\r\n //Support require(['a'])\r\n callback = callback || function () {};\r\n\r\n //If relName is a function, it is an errback handler,\r\n //so remove it.\r\n if (typeof relName === 'function') {\r\n relName = forceSync;\r\n forceSync = alt;\r\n }\r\n\r\n //Simulate async callback;\r\n if (forceSync) {\r\n main(undef, deps, callback, relName);\r\n } else {\r\n //Using a non-zero value because of concern for what old browsers\r\n //do, and latest browsers \"upgrade\" to 4 if lower value is used:\r\n //http://www.whatwg.org/specs/web-apps/current-work/multipage/timers.html#dom-windowtimers-settimeout:\r\n //If want a value immediately, use require('id') instead -- something\r\n //that works in almond on the global level, but not guaranteed and\r\n //unlikely to work in other AMD implementations.\r\n setTimeout(function () {\r\n main(undef, deps, callback, relName);\r\n }, 4);\r\n }\r\n\r\n return req;\r\n };\r\n\r\n /**\r\n * Just drops the config on the floor, but returns req in case\r\n * the config return value is used.\r\n */\r\n req.config = function (cfg) {\r\n return req(cfg);\r\n };\r\n\r\n /**\r\n * Expose module registry for debugging and tooling\r\n */\r\n requirejs._defined = defined;\r\n\r\n define = function (name, deps, callback) {\r\n if (typeof name !== 'string') {\r\n throw new Error('See almond README: incorrect module build, no module name');\r\n }\r\n\r\n //This module may not have dependencies\r\n if (!deps.splice) {\r\n //deps is not an array, so probably means\r\n //an object literal or factory function for\r\n //the value. Adjust args.\r\n callback = deps;\r\n deps = [];\r\n }\r\n\r\n if (!hasProp(defined, name) && !hasProp(waiting, name)) {\r\n waiting[name] = [name, deps, callback];\r\n }\r\n };\r\n\r\n define.amd = {\r\n jQuery: true\r\n };\r\n}());\r\n\r\nS2.requirejs = requirejs;S2.require = require;S2.define = define;\r\n}\r\n}());\r\nS2.define(\"almond\", function(){});\r\n\r\n/* global jQuery:false, $:false */\r\nS2.define('jquery',[],function () {\r\n var _$ = jQuery || $;\r\n\r\n if (_$ == null && console && console.error) {\r\n console.error(\r\n 'Select2: An instance of jQuery or a jQuery-compatible library was not ' +\r\n 'found. Make sure that you are including jQuery before Select2 on your ' +\r\n 'web page.'\r\n );\r\n }\r\n\r\n return _$;\r\n});\r\n\r\nS2.define('select2/utils',[\r\n 'jquery'\r\n], function ($) {\r\n var Utils = {};\r\n\r\n Utils.Extend = function (ChildClass, SuperClass) {\r\n var __hasProp = {}.hasOwnProperty;\r\n\r\n function BaseConstructor () {\r\n this.constructor = ChildClass;\r\n }\r\n\r\n for (var key in SuperClass) {\r\n if (__hasProp.call(SuperClass, key)) {\r\n ChildClass[key] = SuperClass[key];\r\n }\r\n }\r\n\r\n BaseConstructor.prototype = SuperClass.prototype;\r\n ChildClass.prototype = new BaseConstructor();\r\n ChildClass.__super__ = SuperClass.prototype;\r\n\r\n return ChildClass;\r\n };\r\n\r\n function getMethods (theClass) {\r\n var proto = theClass.prototype;\r\n\r\n var methods = [];\r\n\r\n for (var methodName in proto) {\r\n var m = proto[methodName];\r\n\r\n if (typeof m !== 'function') {\r\n continue;\r\n }\r\n\r\n if (methodName === 'constructor') {\r\n continue;\r\n }\r\n\r\n methods.push(methodName);\r\n }\r\n\r\n return methods;\r\n }\r\n\r\n Utils.Decorate = function (SuperClass, DecoratorClass) {\r\n var decoratedMethods = getMethods(DecoratorClass);\r\n var superMethods = getMethods(SuperClass);\r\n\r\n function DecoratedClass () {\r\n var unshift = Array.prototype.unshift;\r\n\r\n var argCount = DecoratorClass.prototype.constructor.length;\r\n\r\n var calledConstructor = SuperClass.prototype.constructor;\r\n\r\n if (argCount > 0) {\r\n unshift.call(arguments, SuperClass.prototype.constructor);\r\n\r\n calledConstructor = DecoratorClass.prototype.constructor;\r\n }\r\n\r\n calledConstructor.apply(this, arguments);\r\n }\r\n\r\n DecoratorClass.displayName = SuperClass.displayName;\r\n\r\n function ctr () {\r\n this.constructor = DecoratedClass;\r\n }\r\n\r\n DecoratedClass.prototype = new ctr();\r\n\r\n for (var m = 0; m < superMethods.length; m++) {\r\n var superMethod = superMethods[m];\r\n\r\n DecoratedClass.prototype[superMethod] =\r\n SuperClass.prototype[superMethod];\r\n }\r\n\r\n var calledMethod = function (methodName) {\r\n // Stub out the original method if it's not decorating an actual method\r\n var originalMethod = function () {};\r\n\r\n if (methodName in DecoratedClass.prototype) {\r\n originalMethod = DecoratedClass.prototype[methodName];\r\n }\r\n\r\n var decoratedMethod = DecoratorClass.prototype[methodName];\r\n\r\n return function () {\r\n var unshift = Array.prototype.unshift;\r\n\r\n unshift.call(arguments, originalMethod);\r\n\r\n return decoratedMethod.apply(this, arguments);\r\n };\r\n };\r\n\r\n for (var d = 0; d < decoratedMethods.length; d++) {\r\n var decoratedMethod = decoratedMethods[d];\r\n\r\n DecoratedClass.prototype[decoratedMethod] = calledMethod(decoratedMethod);\r\n }\r\n\r\n return DecoratedClass;\r\n };\r\n\r\n var Observable = function () {\r\n this.listeners = {};\r\n };\r\n\r\n Observable.prototype.on = function (event, callback) {\r\n this.listeners = this.listeners || {};\r\n\r\n if (event in this.listeners) {\r\n this.listeners[event].push(callback);\r\n } else {\r\n this.listeners[event] = [callback];\r\n }\r\n };\r\n\r\n Observable.prototype.trigger = function (event) {\r\n var slice = Array.prototype.slice;\r\n var params = slice.call(arguments, 1);\r\n\r\n this.listeners = this.listeners || {};\r\n\r\n // Params should always come in as an array\r\n if (params == null) {\r\n params = [];\r\n }\r\n\r\n // If there are no arguments to the event, use a temporary object\r\n if (params.length === 0) {\r\n params.push({});\r\n }\r\n\r\n // Set the `_type` of the first object to the event\r\n params[0]._type = event;\r\n\r\n if (event in this.listeners) {\r\n this.invoke(this.listeners[event], slice.call(arguments, 1));\r\n }\r\n\r\n if ('*' in this.listeners) {\r\n this.invoke(this.listeners['*'], arguments);\r\n }\r\n };\r\n\r\n Observable.prototype.invoke = function (listeners, params) {\r\n for (var i = 0, len = listeners.length; i < len; i++) {\r\n listeners[i].apply(this, params);\r\n }\r\n };\r\n\r\n Utils.Observable = Observable;\r\n\r\n Utils.generateChars = function (length) {\r\n var chars = '';\r\n\r\n for (var i = 0; i < length; i++) {\r\n var randomChar = Math.floor(Math.random() * 36);\r\n chars += randomChar.toString(36);\r\n }\r\n\r\n return chars;\r\n };\r\n\r\n Utils.bind = function (func, context) {\r\n return function () {\r\n func.apply(context, arguments);\r\n };\r\n };\r\n\r\n Utils._convertData = function (data) {\r\n for (var originalKey in data) {\r\n var keys = originalKey.split('-');\r\n\r\n var dataLevel = data;\r\n\r\n if (keys.length === 1) {\r\n continue;\r\n }\r\n\r\n for (var k = 0; k < keys.length; k++) {\r\n var key = keys[k];\r\n\r\n // Lowercase the first letter\r\n // By default, dash-separated becomes camelCase\r\n key = key.substring(0, 1).toLowerCase() + key.substring(1);\r\n\r\n if (!(key in dataLevel)) {\r\n dataLevel[key] = {};\r\n }\r\n\r\n if (k == keys.length - 1) {\r\n dataLevel[key] = data[originalKey];\r\n }\r\n\r\n dataLevel = dataLevel[key];\r\n }\r\n\r\n delete data[originalKey];\r\n }\r\n\r\n return data;\r\n };\r\n\r\n Utils.hasScroll = function (index, el) {\r\n // Adapted from the function created by @ShadowScripter\r\n // and adapted by @BillBarry on the Stack Exchange Code Review website.\r\n // The original code can be found at\r\n // http://codereview.stackexchange.com/q/13338\r\n // and was designed to be used with the Sizzle selector engine.\r\n\r\n var $el = $(el);\r\n var overflowX = el.style.overflowX;\r\n var overflowY = el.style.overflowY;\r\n\r\n //Check both x and y declarations\r\n if (overflowX === overflowY &&\r\n (overflowY === 'hidden' || overflowY === 'visible')) {\r\n return false;\r\n }\r\n\r\n if (overflowX === 'scroll' || overflowY === 'scroll') {\r\n return true;\r\n }\r\n\r\n return ($el.innerHeight() < el.scrollHeight ||\r\n $el.innerWidth() < el.scrollWidth);\r\n };\r\n\r\n Utils.escapeMarkup = function (markup) {\r\n var replaceMap = {\r\n '\\\\': '\',\r\n '&': '&',\r\n '<': '<',\r\n '>': '>',\r\n '\"': '"',\r\n '\\'': ''',\r\n '/': '/'\r\n };\r\n\r\n // Do not try to escape the markup if it's not a string\r\n if (typeof markup !== 'string') {\r\n return markup;\r\n }\r\n\r\n return String(markup).replace(/[&<>\"'\\/\\\\]/g, function (match) {\r\n return replaceMap[match];\r\n });\r\n };\r\n\r\n // Append an array of jQuery nodes to a given element.\r\n Utils.appendMany = function ($element, $nodes) {\r\n // jQuery 1.7.x does not support $.fn.append() with an array\r\n // Fall back to a jQuery object collection using $.fn.add()\r\n if ($.fn.jquery.substr(0, 3) === '1.7') {\r\n var $jqNodes = $();\r\n\r\n $.map($nodes, function (node) {\r\n $jqNodes = $jqNodes.add(node);\r\n });\r\n\r\n $nodes = $jqNodes;\r\n }\r\n\r\n $element.append($nodes);\r\n };\r\n\r\n // Cache objects in Utils.__cache instead of $.data (see #4346)\r\n Utils.__cache = {};\r\n\r\n var id = 0;\r\n Utils.GetUniqueElementId = function (element) {\r\n // Get a unique element Id. If element has no id,\r\n // creates a new unique number, stores it in the id\r\n // attribute and returns the new id.\r\n // If an id already exists, it simply returns it.\r\n\r\n var select2Id = element.getAttribute('data-select2-id');\r\n if (select2Id == null) {\r\n // If element has id, use it.\r\n if (element.id) {\r\n select2Id = element.id;\r\n element.setAttribute('data-select2-id', select2Id);\r\n } else {\r\n element.setAttribute('data-select2-id', ++id);\r\n select2Id = id.toString();\r\n }\r\n }\r\n return select2Id;\r\n };\r\n\r\n Utils.StoreData = function (element, name, value) {\r\n // Stores an item in the cache for a specified element.\r\n // name is the cache key.\r\n var id = Utils.GetUniqueElementId(element);\r\n if (!Utils.__cache[id]) {\r\n Utils.__cache[id] = {};\r\n }\r\n\r\n Utils.__cache[id][name] = value;\r\n };\r\n\r\n Utils.GetData = function (element, name) {\r\n // Retrieves a value from the cache by its key (name)\r\n // name is optional. If no name specified, return\r\n // all cache items for the specified element.\r\n // and for a specified element.\r\n var id = Utils.GetUniqueElementId(element);\r\n if (name) {\r\n if (Utils.__cache[id]) {\r\n if (Utils.__cache[id][name] != null) {\r\n return Utils.__cache[id][name];\r\n }\r\n return $(element).data(name); // Fallback to HTML5 data attribs.\r\n }\r\n return $(element).data(name); // Fallback to HTML5 data attribs.\r\n } else {\r\n return Utils.__cache[id];\r\n }\r\n };\r\n\r\n Utils.RemoveData = function (element) {\r\n // Removes all cached items for a specified element.\r\n var id = Utils.GetUniqueElementId(element);\r\n if (Utils.__cache[id] != null) {\r\n delete Utils.__cache[id];\r\n }\r\n\r\n element.removeAttribute('data-select2-id');\r\n };\r\n\r\n return Utils;\r\n});\r\n\r\nS2.define('select2/results',[\r\n 'jquery',\r\n './utils'\r\n], function ($, Utils) {\r\n function Results ($element, options, dataAdapter) {\r\n this.$element = $element;\r\n this.data = dataAdapter;\r\n this.options = options;\r\n\r\n Results.__super__.constructor.call(this);\r\n }\r\n\r\n Utils.Extend(Results, Utils.Observable);\r\n\r\n Results.prototype.render = function () {\r\n var $results = $(\r\n '
    '\r\n );\r\n\r\n if (this.options.get('multiple')) {\r\n $results.attr('aria-multiselectable', 'true');\r\n }\r\n\r\n this.$results = $results;\r\n\r\n return $results;\r\n };\r\n\r\n Results.prototype.clear = function () {\r\n this.$results.empty();\r\n };\r\n\r\n Results.prototype.displayMessage = function (params) {\r\n var escapeMarkup = this.options.get('escapeMarkup');\r\n\r\n this.clear();\r\n this.hideLoading();\r\n\r\n var $message = $(\r\n '
  • '\r\n );\r\n\r\n var message = this.options.get('translations').get(params.message);\r\n\r\n $message.append(\r\n escapeMarkup(\r\n message(params.args)\r\n )\r\n );\r\n\r\n $message[0].className += ' select2-results__message';\r\n\r\n this.$results.append($message);\r\n };\r\n\r\n Results.prototype.hideMessages = function () {\r\n this.$results.find('.select2-results__message').remove();\r\n };\r\n\r\n Results.prototype.append = function (data) {\r\n this.hideLoading();\r\n\r\n var $options = [];\r\n\r\n if (data.results == null || data.results.length === 0) {\r\n if (this.$results.children().length === 0) {\r\n this.trigger('results:message', {\r\n message: 'noResults'\r\n });\r\n }\r\n\r\n return;\r\n }\r\n\r\n data.results = this.sort(data.results);\r\n\r\n for (var d = 0; d < data.results.length; d++) {\r\n var item = data.results[d];\r\n\r\n var $option = this.option(item);\r\n\r\n $options.push($option);\r\n }\r\n\r\n this.$results.append($options);\r\n };\r\n\r\n Results.prototype.position = function ($results, $dropdown) {\r\n var $resultsContainer = $dropdown.find('.select2-results');\r\n $resultsContainer.append($results);\r\n };\r\n\r\n Results.prototype.sort = function (data) {\r\n var sorter = this.options.get('sorter');\r\n\r\n return sorter(data);\r\n };\r\n\r\n Results.prototype.highlightFirstItem = function () {\r\n var $options = this.$results\r\n .find('.select2-results__option[aria-selected]');\r\n\r\n var $selected = $options.filter('[aria-selected=true]');\r\n\r\n // Check if there are any selected options\r\n if ($selected.length > 0) {\r\n // If there are selected options, highlight the first\r\n $selected.first().trigger('mouseenter');\r\n } else {\r\n // If there are no selected options, highlight the first option\r\n // in the dropdown\r\n $options.first().trigger('mouseenter');\r\n }\r\n\r\n this.ensureHighlightVisible();\r\n };\r\n\r\n Results.prototype.setClasses = function () {\r\n var self = this;\r\n\r\n this.data.current(function (selected) {\r\n var selectedIds = $.map(selected, function (s) {\r\n return s.id.toString();\r\n });\r\n\r\n var $options = self.$results\r\n .find('.select2-results__option[aria-selected]');\r\n\r\n $options.each(function () {\r\n var $option = $(this);\r\n\r\n var item = Utils.GetData(this, 'data');\r\n\r\n // id needs to be converted to a string when comparing\r\n var id = '' + item.id;\r\n\r\n if ((item.element != null && item.element.selected) ||\r\n (item.element == null && $.inArray(id, selectedIds) > -1)) {\r\n $option.attr('aria-selected', 'true');\r\n } else {\r\n $option.attr('aria-selected', 'false');\r\n }\r\n });\r\n\r\n });\r\n };\r\n\r\n Results.prototype.showLoading = function (params) {\r\n this.hideLoading();\r\n\r\n var loadingMore = this.options.get('translations').get('searching');\r\n\r\n var loading = {\r\n disabled: true,\r\n loading: true,\r\n text: loadingMore(params)\r\n };\r\n var $loading = this.option(loading);\r\n $loading.className += ' loading-results';\r\n\r\n this.$results.prepend($loading);\r\n };\r\n\r\n Results.prototype.hideLoading = function () {\r\n this.$results.find('.loading-results').remove();\r\n };\r\n\r\n Results.prototype.option = function (data) {\r\n var option = document.createElement('li');\r\n option.className = 'select2-results__option';\r\n\r\n var attrs = {\r\n 'role': 'option',\r\n 'aria-selected': 'false'\r\n };\r\n\r\n var matches = window.Element.prototype.matches ||\r\n window.Element.prototype.msMatchesSelector ||\r\n window.Element.prototype.webkitMatchesSelector;\r\n\r\n if ((data.element != null && matches.call(data.element, ':disabled')) ||\r\n (data.element == null && data.disabled)) {\r\n delete attrs['aria-selected'];\r\n attrs['aria-disabled'] = 'true';\r\n }\r\n\r\n if (data.id == null) {\r\n delete attrs['aria-selected'];\r\n }\r\n\r\n if (data._resultId != null) {\r\n option.id = data._resultId;\r\n }\r\n\r\n if (data.title) {\r\n option.title = data.title;\r\n }\r\n\r\n if (data.children) {\r\n attrs.role = 'group';\r\n attrs['aria-label'] = data.text;\r\n delete attrs['aria-selected'];\r\n }\r\n\r\n for (var attr in attrs) {\r\n var val = attrs[attr];\r\n\r\n option.setAttribute(attr, val);\r\n }\r\n\r\n if (data.children) {\r\n var $option = $(option);\r\n\r\n var label = document.createElement('strong');\r\n label.className = 'select2-results__group';\r\n\r\n var $label = $(label);\r\n this.template(data, label);\r\n\r\n var $children = [];\r\n\r\n for (var c = 0; c < data.children.length; c++) {\r\n var child = data.children[c];\r\n\r\n var $child = this.option(child);\r\n\r\n $children.push($child);\r\n }\r\n\r\n var $childrenContainer = $('
      ', {\r\n 'class': 'select2-results__options select2-results__options--nested'\r\n });\r\n\r\n $childrenContainer.append($children);\r\n\r\n $option.append(label);\r\n $option.append($childrenContainer);\r\n } else {\r\n this.template(data, option);\r\n }\r\n\r\n Utils.StoreData(option, 'data', data);\r\n\r\n return option;\r\n };\r\n\r\n Results.prototype.bind = function (container, $container) {\r\n var self = this;\r\n\r\n var id = container.id + '-results';\r\n\r\n this.$results.attr('id', id);\r\n\r\n container.on('results:all', function (params) {\r\n self.clear();\r\n self.append(params.data);\r\n\r\n if (container.isOpen()) {\r\n self.setClasses();\r\n self.highlightFirstItem();\r\n }\r\n });\r\n\r\n container.on('results:append', function (params) {\r\n self.append(params.data);\r\n\r\n if (container.isOpen()) {\r\n self.setClasses();\r\n }\r\n });\r\n\r\n container.on('query', function (params) {\r\n self.hideMessages();\r\n self.showLoading(params);\r\n });\r\n\r\n container.on('select', function () {\r\n if (!container.isOpen()) {\r\n return;\r\n }\r\n\r\n self.setClasses();\r\n\r\n if (self.options.get('scrollAfterSelect')) {\r\n self.highlightFirstItem();\r\n }\r\n });\r\n\r\n container.on('unselect', function () {\r\n if (!container.isOpen()) {\r\n return;\r\n }\r\n\r\n self.setClasses();\r\n\r\n if (self.options.get('scrollAfterSelect')) {\r\n self.highlightFirstItem();\r\n }\r\n });\r\n\r\n container.on('open', function () {\r\n // When the dropdown is open, aria-expended=\"true\"\r\n self.$results.attr('aria-expanded', 'true');\r\n self.$results.attr('aria-hidden', 'false');\r\n\r\n self.setClasses();\r\n self.ensureHighlightVisible();\r\n });\r\n\r\n container.on('close', function () {\r\n // When the dropdown is closed, aria-expended=\"false\"\r\n self.$results.attr('aria-expanded', 'false');\r\n self.$results.attr('aria-hidden', 'true');\r\n self.$results.removeAttr('aria-activedescendant');\r\n });\r\n\r\n container.on('results:toggle', function () {\r\n var $highlighted = self.getHighlightedResults();\r\n\r\n if ($highlighted.length === 0) {\r\n return;\r\n }\r\n\r\n $highlighted.trigger('mouseup');\r\n });\r\n\r\n container.on('results:select', function () {\r\n var $highlighted = self.getHighlightedResults();\r\n\r\n if ($highlighted.length === 0) {\r\n return;\r\n }\r\n\r\n var data = Utils.GetData($highlighted[0], 'data');\r\n\r\n if ($highlighted.attr('aria-selected') == 'true') {\r\n self.trigger('close', {});\r\n } else {\r\n self.trigger('select', {\r\n data: data\r\n });\r\n }\r\n });\r\n\r\n container.on('results:previous', function () {\r\n var $highlighted = self.getHighlightedResults();\r\n\r\n var $options = self.$results.find('[aria-selected]');\r\n\r\n var currentIndex = $options.index($highlighted);\r\n\r\n // If we are already at the top, don't move further\r\n // If no options, currentIndex will be -1\r\n if (currentIndex <= 0) {\r\n return;\r\n }\r\n\r\n var nextIndex = currentIndex - 1;\r\n\r\n // If none are highlighted, highlight the first\r\n if ($highlighted.length === 0) {\r\n nextIndex = 0;\r\n }\r\n\r\n var $next = $options.eq(nextIndex);\r\n\r\n $next.trigger('mouseenter');\r\n\r\n var currentOffset = self.$results.offset().top;\r\n var nextTop = $next.offset().top;\r\n var nextOffset = self.$results.scrollTop() + (nextTop - currentOffset);\r\n\r\n if (nextIndex === 0) {\r\n self.$results.scrollTop(0);\r\n } else if (nextTop - currentOffset < 0) {\r\n self.$results.scrollTop(nextOffset);\r\n }\r\n });\r\n\r\n container.on('results:next', function () {\r\n var $highlighted = self.getHighlightedResults();\r\n\r\n var $options = self.$results.find('[aria-selected]');\r\n\r\n var currentIndex = $options.index($highlighted);\r\n\r\n var nextIndex = currentIndex + 1;\r\n\r\n // If we are at the last option, stay there\r\n if (nextIndex >= $options.length) {\r\n return;\r\n }\r\n\r\n var $next = $options.eq(nextIndex);\r\n\r\n $next.trigger('mouseenter');\r\n\r\n var currentOffset = self.$results.offset().top +\r\n self.$results.outerHeight(false);\r\n var nextBottom = $next.offset().top + $next.outerHeight(false);\r\n var nextOffset = self.$results.scrollTop() + nextBottom - currentOffset;\r\n\r\n if (nextIndex === 0) {\r\n self.$results.scrollTop(0);\r\n } else if (nextBottom > currentOffset) {\r\n self.$results.scrollTop(nextOffset);\r\n }\r\n });\r\n\r\n container.on('results:focus', function (params) {\r\n params.element.addClass('select2-results__option--highlighted');\r\n });\r\n\r\n container.on('results:message', function (params) {\r\n self.displayMessage(params);\r\n });\r\n\r\n if ($.fn.mousewheel) {\r\n this.$results.on('mousewheel', function (e) {\r\n var top = self.$results.scrollTop();\r\n\r\n var bottom = self.$results.get(0).scrollHeight - top + e.deltaY;\r\n\r\n var isAtTop = e.deltaY > 0 && top - e.deltaY <= 0;\r\n var isAtBottom = e.deltaY < 0 && bottom <= self.$results.height();\r\n\r\n if (isAtTop) {\r\n self.$results.scrollTop(0);\r\n\r\n e.preventDefault();\r\n e.stopPropagation();\r\n } else if (isAtBottom) {\r\n self.$results.scrollTop(\r\n self.$results.get(0).scrollHeight - self.$results.height()\r\n );\r\n\r\n e.preventDefault();\r\n e.stopPropagation();\r\n }\r\n });\r\n }\r\n\r\n this.$results.on('mouseup', '.select2-results__option[aria-selected]',\r\n function (evt) {\r\n var $this = $(this);\r\n\r\n var data = Utils.GetData(this, 'data');\r\n\r\n if ($this.attr('aria-selected') === 'true') {\r\n if (self.options.get('multiple')) {\r\n self.trigger('unselect', {\r\n originalEvent: evt,\r\n data: data\r\n });\r\n } else {\r\n self.trigger('close', {});\r\n }\r\n\r\n return;\r\n }\r\n\r\n self.trigger('select', {\r\n originalEvent: evt,\r\n data: data\r\n });\r\n });\r\n\r\n this.$results.on('mouseenter', '.select2-results__option[aria-selected]',\r\n function (evt) {\r\n var data = Utils.GetData(this, 'data');\r\n\r\n self.getHighlightedResults()\r\n .removeClass('select2-results__option--highlighted');\r\n\r\n self.trigger('results:focus', {\r\n data: data,\r\n element: $(this)\r\n });\r\n });\r\n };\r\n\r\n Results.prototype.getHighlightedResults = function () {\r\n var $highlighted = this.$results\r\n .find('.select2-results__option--highlighted');\r\n\r\n return $highlighted;\r\n };\r\n\r\n Results.prototype.destroy = function () {\r\n this.$results.remove();\r\n };\r\n\r\n Results.prototype.ensureHighlightVisible = function () {\r\n var $highlighted = this.getHighlightedResults();\r\n\r\n if ($highlighted.length === 0) {\r\n return;\r\n }\r\n\r\n var $options = this.$results.find('[aria-selected]');\r\n\r\n var currentIndex = $options.index($highlighted);\r\n\r\n var currentOffset = this.$results.offset().top;\r\n var nextTop = $highlighted.offset().top;\r\n var nextOffset = this.$results.scrollTop() + (nextTop - currentOffset);\r\n\r\n var offsetDelta = nextTop - currentOffset;\r\n nextOffset -= $highlighted.outerHeight(false) * 2;\r\n\r\n if (currentIndex <= 2) {\r\n this.$results.scrollTop(0);\r\n } else if (offsetDelta > this.$results.outerHeight() || offsetDelta < 0) {\r\n this.$results.scrollTop(nextOffset);\r\n }\r\n };\r\n\r\n Results.prototype.template = function (result, container) {\r\n var template = this.options.get('templateResult');\r\n var escapeMarkup = this.options.get('escapeMarkup');\r\n\r\n var content = template(result, container);\r\n\r\n if (content == null) {\r\n container.style.display = 'none';\r\n } else if (typeof content === 'string') {\r\n container.innerHTML = escapeMarkup(content);\r\n } else {\r\n $(container).append(content);\r\n }\r\n };\r\n\r\n return Results;\r\n});\r\n\r\nS2.define('select2/keys',[\r\n\r\n], function () {\r\n var KEYS = {\r\n BACKSPACE: 8,\r\n TAB: 9,\r\n ENTER: 13,\r\n SHIFT: 16,\r\n CTRL: 17,\r\n ALT: 18,\r\n ESC: 27,\r\n SPACE: 32,\r\n PAGE_UP: 33,\r\n PAGE_DOWN: 34,\r\n END: 35,\r\n HOME: 36,\r\n LEFT: 37,\r\n UP: 38,\r\n RIGHT: 39,\r\n DOWN: 40,\r\n DELETE: 46\r\n };\r\n\r\n return KEYS;\r\n});\r\n\r\nS2.define('select2/selection/base',[\r\n 'jquery',\r\n '../utils',\r\n '../keys'\r\n], function ($, Utils, KEYS) {\r\n function BaseSelection ($element, options) {\r\n this.$element = $element;\r\n this.options = options;\r\n\r\n BaseSelection.__super__.constructor.call(this);\r\n }\r\n\r\n Utils.Extend(BaseSelection, Utils.Observable);\r\n\r\n BaseSelection.prototype.render = function () {\r\n var $selection = $(\r\n '' +\r\n ''\r\n );\r\n\r\n this._tabindex = 0;\r\n\r\n if (Utils.GetData(this.$element[0], 'old-tabindex') != null) {\r\n this._tabindex = Utils.GetData(this.$element[0], 'old-tabindex');\r\n } else if (this.$element.attr('tabindex') != null) {\r\n this._tabindex = this.$element.attr('tabindex');\r\n }\r\n\r\n $selection.attr('title', this.$element.attr('title'));\r\n $selection.attr('tabindex', this._tabindex);\r\n $selection.attr('aria-disabled', 'false');\r\n\r\n this.$selection = $selection;\r\n\r\n return $selection;\r\n };\r\n\r\n BaseSelection.prototype.bind = function (container, $container) {\r\n var self = this;\r\n\r\n var resultsId = container.id + '-results';\r\n\r\n this.container = container;\r\n\r\n this.$selection.on('focus', function (evt) {\r\n self.trigger('focus', evt);\r\n });\r\n\r\n this.$selection.on('blur', function (evt) {\r\n self._handleBlur(evt);\r\n });\r\n\r\n this.$selection.on('keydown', function (evt) {\r\n self.trigger('keypress', evt);\r\n\r\n if (evt.which === KEYS.SPACE) {\r\n evt.preventDefault();\r\n }\r\n });\r\n\r\n container.on('results:focus', function (params) {\r\n self.$selection.attr('aria-activedescendant', params.data._resultId);\r\n });\r\n\r\n container.on('selection:update', function (params) {\r\n self.update(params.data);\r\n });\r\n\r\n container.on('open', function () {\r\n // When the dropdown is open, aria-expanded=\"true\"\r\n self.$selection.attr('aria-expanded', 'true');\r\n self.$selection.attr('aria-owns', resultsId);\r\n\r\n self._attachCloseHandler(container);\r\n });\r\n\r\n container.on('close', function () {\r\n // When the dropdown is closed, aria-expanded=\"false\"\r\n self.$selection.attr('aria-expanded', 'false');\r\n self.$selection.removeAttr('aria-activedescendant');\r\n self.$selection.removeAttr('aria-owns');\r\n\r\n self.$selection.trigger('focus');\r\n\r\n self._detachCloseHandler(container);\r\n });\r\n\r\n container.on('enable', function () {\r\n self.$selection.attr('tabindex', self._tabindex);\r\n self.$selection.attr('aria-disabled', 'false');\r\n });\r\n\r\n container.on('disable', function () {\r\n self.$selection.attr('tabindex', '-1');\r\n self.$selection.attr('aria-disabled', 'true');\r\n });\r\n };\r\n\r\n BaseSelection.prototype._handleBlur = function (evt) {\r\n var self = this;\r\n\r\n // This needs to be delayed as the active element is the body when the tab\r\n // key is pressed, possibly along with others.\r\n window.setTimeout(function () {\r\n // Don't trigger `blur` if the focus is still in the selection\r\n if (\r\n (document.activeElement == self.$selection[0]) ||\r\n ($.contains(self.$selection[0], document.activeElement))\r\n ) {\r\n return;\r\n }\r\n\r\n self.trigger('blur', evt);\r\n }, 1);\r\n };\r\n\r\n BaseSelection.prototype._attachCloseHandler = function (container) {\r\n\r\n $(document.body).on('mousedown.select2.' + container.id, function (e) {\r\n var $target = $(e.target);\r\n\r\n var $select = $target.closest('.select2');\r\n\r\n var $all = $('.select2.select2-container--open');\r\n\r\n $all.each(function () {\r\n if (this == $select[0]) {\r\n return;\r\n }\r\n\r\n var $element = Utils.GetData(this, 'element');\r\n\r\n $element.select2('close');\r\n });\r\n });\r\n };\r\n\r\n BaseSelection.prototype._detachCloseHandler = function (container) {\r\n $(document.body).off('mousedown.select2.' + container.id);\r\n };\r\n\r\n BaseSelection.prototype.position = function ($selection, $container) {\r\n var $selectionContainer = $container.find('.selection');\r\n $selectionContainer.append($selection);\r\n };\r\n\r\n BaseSelection.prototype.destroy = function () {\r\n this._detachCloseHandler(this.container);\r\n };\r\n\r\n BaseSelection.prototype.update = function (data) {\r\n throw new Error('The `update` method must be defined in child classes.');\r\n };\r\n\r\n /**\r\n * Helper method to abstract the \"enabled\" (not \"disabled\") state of this\r\n * object.\r\n *\r\n * @return {true} if the instance is not disabled.\r\n * @return {false} if the instance is disabled.\r\n */\r\n BaseSelection.prototype.isEnabled = function () {\r\n return !this.isDisabled();\r\n };\r\n\r\n /**\r\n * Helper method to abstract the \"disabled\" state of this object.\r\n *\r\n * @return {true} if the disabled option is true.\r\n * @return {false} if the disabled option is false.\r\n */\r\n BaseSelection.prototype.isDisabled = function () {\r\n return this.options.get('disabled');\r\n };\r\n\r\n return BaseSelection;\r\n});\r\n\r\nS2.define('select2/selection/single',[\r\n 'jquery',\r\n './base',\r\n '../utils',\r\n '../keys'\r\n], function ($, BaseSelection, Utils, KEYS) {\r\n function SingleSelection () {\r\n SingleSelection.__super__.constructor.apply(this, arguments);\r\n }\r\n\r\n Utils.Extend(SingleSelection, BaseSelection);\r\n\r\n SingleSelection.prototype.render = function () {\r\n var $selection = SingleSelection.__super__.render.call(this);\r\n\r\n $selection.addClass('select2-selection--single');\r\n\r\n $selection.html(\r\n '' +\r\n '' +\r\n '' +\r\n ''\r\n );\r\n\r\n return $selection;\r\n };\r\n\r\n SingleSelection.prototype.bind = function (container, $container) {\r\n var self = this;\r\n\r\n SingleSelection.__super__.bind.apply(this, arguments);\r\n\r\n var id = container.id + '-container';\r\n\r\n this.$selection.find('.select2-selection__rendered')\r\n .attr('id', id)\r\n .attr('role', 'textbox')\r\n .attr('aria-readonly', 'true');\r\n this.$selection.attr('aria-labelledby', id);\r\n\r\n this.$selection.on('mousedown', function (evt) {\r\n // Only respond to left clicks\r\n if (evt.which !== 1) {\r\n return;\r\n }\r\n\r\n self.trigger('toggle', {\r\n originalEvent: evt\r\n });\r\n });\r\n\r\n this.$selection.on('focus', function (evt) {\r\n // User focuses on the container\r\n });\r\n\r\n this.$selection.on('blur', function (evt) {\r\n // User exits the container\r\n });\r\n\r\n container.on('focus', function (evt) {\r\n if (!container.isOpen()) {\r\n self.$selection.trigger('focus');\r\n }\r\n });\r\n };\r\n\r\n SingleSelection.prototype.clear = function () {\r\n var $rendered = this.$selection.find('.select2-selection__rendered');\r\n $rendered.empty();\r\n $rendered.removeAttr('title'); // clear tooltip on empty\r\n };\r\n\r\n SingleSelection.prototype.display = function (data, container) {\r\n var template = this.options.get('templateSelection');\r\n var escapeMarkup = this.options.get('escapeMarkup');\r\n\r\n return escapeMarkup(template(data, container));\r\n };\r\n\r\n SingleSelection.prototype.selectionContainer = function () {\r\n return $('');\r\n };\r\n\r\n SingleSelection.prototype.update = function (data) {\r\n if (data.length === 0) {\r\n this.clear();\r\n return;\r\n }\r\n\r\n var selection = data[0];\r\n\r\n var $rendered = this.$selection.find('.select2-selection__rendered');\r\n var formatted = this.display(selection, $rendered);\r\n\r\n $rendered.empty().append(formatted);\r\n\r\n var title = selection.title || selection.text;\r\n\r\n if (title) {\r\n $rendered.attr('title', title);\r\n } else {\r\n $rendered.removeAttr('title');\r\n }\r\n };\r\n\r\n return SingleSelection;\r\n});\r\n\r\nS2.define('select2/selection/multiple',[\r\n 'jquery',\r\n './base',\r\n '../utils'\r\n], function ($, BaseSelection, Utils) {\r\n function MultipleSelection ($element, options) {\r\n MultipleSelection.__super__.constructor.apply(this, arguments);\r\n }\r\n\r\n Utils.Extend(MultipleSelection, BaseSelection);\r\n\r\n MultipleSelection.prototype.render = function () {\r\n var $selection = MultipleSelection.__super__.render.call(this);\r\n\r\n $selection.addClass('select2-selection--multiple');\r\n\r\n $selection.html(\r\n '
        '\r\n );\r\n\r\n return $selection;\r\n };\r\n\r\n MultipleSelection.prototype.bind = function (container, $container) {\r\n var self = this;\r\n\r\n MultipleSelection.__super__.bind.apply(this, arguments);\r\n\r\n this.$selection.on('click', function (evt) {\r\n self.trigger('toggle', {\r\n originalEvent: evt\r\n });\r\n });\r\n\r\n this.$selection.on(\r\n 'click',\r\n '.select2-selection__choice__remove',\r\n function (evt) {\r\n // Ignore the event if it is disabled\r\n if (self.isDisabled()) {\r\n return;\r\n }\r\n\r\n var $remove = $(this);\r\n var $selection = $remove.parent();\r\n\r\n var data = Utils.GetData($selection[0], 'data');\r\n\r\n self.trigger('unselect', {\r\n originalEvent: evt,\r\n data: data\r\n });\r\n }\r\n );\r\n };\r\n\r\n MultipleSelection.prototype.clear = function () {\r\n var $rendered = this.$selection.find('.select2-selection__rendered');\r\n $rendered.empty();\r\n $rendered.removeAttr('title');\r\n };\r\n\r\n MultipleSelection.prototype.display = function (data, container) {\r\n var template = this.options.get('templateSelection');\r\n var escapeMarkup = this.options.get('escapeMarkup');\r\n\r\n return escapeMarkup(template(data, container));\r\n };\r\n\r\n MultipleSelection.prototype.selectionContainer = function () {\r\n var $container = $(\r\n '
      • ' +\r\n '' +\r\n '×' +\r\n '' +\r\n '
      • '\r\n );\r\n\r\n return $container;\r\n };\r\n\r\n MultipleSelection.prototype.update = function (data) {\r\n this.clear();\r\n\r\n if (data.length === 0) {\r\n return;\r\n }\r\n\r\n var $selections = [];\r\n\r\n for (var d = 0; d < data.length; d++) {\r\n var selection = data[d];\r\n\r\n var $selection = this.selectionContainer();\r\n var formatted = this.display(selection, $selection);\r\n\r\n $selection.append(formatted);\r\n\r\n var title = selection.title || selection.text;\r\n\r\n if (title) {\r\n $selection.attr('title', title);\r\n }\r\n\r\n Utils.StoreData($selection[0], 'data', selection);\r\n\r\n $selections.push($selection);\r\n }\r\n\r\n var $rendered = this.$selection.find('.select2-selection__rendered');\r\n\r\n Utils.appendMany($rendered, $selections);\r\n };\r\n\r\n return MultipleSelection;\r\n});\r\n\r\nS2.define('select2/selection/placeholder',[\r\n '../utils'\r\n], function (Utils) {\r\n function Placeholder (decorated, $element, options) {\r\n this.placeholder = this.normalizePlaceholder(options.get('placeholder'));\r\n\r\n decorated.call(this, $element, options);\r\n }\r\n\r\n Placeholder.prototype.normalizePlaceholder = function (_, placeholder) {\r\n if (typeof placeholder === 'string') {\r\n placeholder = {\r\n id: '',\r\n text: placeholder\r\n };\r\n }\r\n\r\n return placeholder;\r\n };\r\n\r\n Placeholder.prototype.createPlaceholder = function (decorated, placeholder) {\r\n var $placeholder = this.selectionContainer();\r\n\r\n $placeholder.html(this.display(placeholder));\r\n $placeholder.addClass('select2-selection__placeholder')\r\n .removeClass('select2-selection__choice');\r\n\r\n return $placeholder;\r\n };\r\n\r\n Placeholder.prototype.update = function (decorated, data) {\r\n var singlePlaceholder = (\r\n data.length == 1 && data[0].id != this.placeholder.id\r\n );\r\n var multipleSelections = data.length > 1;\r\n\r\n if (multipleSelections || singlePlaceholder) {\r\n return decorated.call(this, data);\r\n }\r\n\r\n this.clear();\r\n\r\n var $placeholder = this.createPlaceholder(this.placeholder);\r\n\r\n this.$selection.find('.select2-selection__rendered').append($placeholder);\r\n };\r\n\r\n return Placeholder;\r\n});\r\n\r\nS2.define('select2/selection/allowClear',[\r\n 'jquery',\r\n '../keys',\r\n '../utils'\r\n], function ($, KEYS, Utils) {\r\n function AllowClear () { }\r\n\r\n AllowClear.prototype.bind = function (decorated, container, $container) {\r\n var self = this;\r\n\r\n decorated.call(this, container, $container);\r\n\r\n if (this.placeholder == null) {\r\n if (this.options.get('debug') && window.console && console.error) {\r\n console.error(\r\n 'Select2: The `allowClear` option should be used in combination ' +\r\n 'with the `placeholder` option.'\r\n );\r\n }\r\n }\r\n\r\n this.$selection.on('mousedown', '.select2-selection__clear',\r\n function (evt) {\r\n self._handleClear(evt);\r\n });\r\n\r\n container.on('keypress', function (evt) {\r\n self._handleKeyboardClear(evt, container);\r\n });\r\n };\r\n\r\n AllowClear.prototype._handleClear = function (_, evt) {\r\n // Ignore the event if it is disabled\r\n if (this.isDisabled()) {\r\n return;\r\n }\r\n\r\n var $clear = this.$selection.find('.select2-selection__clear');\r\n\r\n // Ignore the event if nothing has been selected\r\n if ($clear.length === 0) {\r\n return;\r\n }\r\n\r\n evt.stopPropagation();\r\n\r\n var data = Utils.GetData($clear[0], 'data');\r\n\r\n var previousVal = this.$element.val();\r\n this.$element.val(this.placeholder.id);\r\n\r\n var unselectData = {\r\n data: data\r\n };\r\n this.trigger('clear', unselectData);\r\n if (unselectData.prevented) {\r\n this.$element.val(previousVal);\r\n return;\r\n }\r\n\r\n for (var d = 0; d < data.length; d++) {\r\n unselectData = {\r\n data: data[d]\r\n };\r\n\r\n // Trigger the `unselect` event, so people can prevent it from being\r\n // cleared.\r\n this.trigger('unselect', unselectData);\r\n\r\n // If the event was prevented, don't clear it out.\r\n if (unselectData.prevented) {\r\n this.$element.val(previousVal);\r\n return;\r\n }\r\n }\r\n\r\n this.$element.trigger('input').trigger('change');\r\n\r\n this.trigger('toggle', {});\r\n };\r\n\r\n AllowClear.prototype._handleKeyboardClear = function (_, evt, container) {\r\n if (container.isOpen()) {\r\n return;\r\n }\r\n\r\n if (evt.which == KEYS.DELETE || evt.which == KEYS.BACKSPACE) {\r\n this._handleClear(evt);\r\n }\r\n };\r\n\r\n AllowClear.prototype.update = function (decorated, data) {\r\n decorated.call(this, data);\r\n\r\n if (this.$selection.find('.select2-selection__placeholder').length > 0 ||\r\n data.length === 0) {\r\n return;\r\n }\r\n\r\n var removeAll = this.options.get('translations').get('removeAllItems');\r\n\r\n var $remove = $(\r\n '' +\r\n '×' +\r\n ''\r\n );\r\n Utils.StoreData($remove[0], 'data', data);\r\n\r\n this.$selection.find('.select2-selection__rendered').prepend($remove);\r\n };\r\n\r\n return AllowClear;\r\n});\r\n\r\nS2.define('select2/selection/search',[\r\n 'jquery',\r\n '../utils',\r\n '../keys'\r\n], function ($, Utils, KEYS) {\r\n function Search (decorated, $element, options) {\r\n decorated.call(this, $element, options);\r\n }\r\n\r\n Search.prototype.render = function (decorated) {\r\n var $search = $(\r\n ''\r\n );\r\n\r\n this.$searchContainer = $search;\r\n this.$search = $search.find('input');\r\n\r\n var $rendered = decorated.call(this);\r\n\r\n this._transferTabIndex();\r\n\r\n return $rendered;\r\n };\r\n\r\n Search.prototype.bind = function (decorated, container, $container) {\r\n var self = this;\r\n\r\n var resultsId = container.id + '-results';\r\n\r\n decorated.call(this, container, $container);\r\n\r\n container.on('open', function () {\r\n self.$search.attr('aria-controls', resultsId);\r\n self.$search.trigger('focus');\r\n });\r\n\r\n container.on('close', function () {\r\n self.$search.val('');\r\n self.$search.removeAttr('aria-controls');\r\n self.$search.removeAttr('aria-activedescendant');\r\n self.$search.trigger('focus');\r\n });\r\n\r\n container.on('enable', function () {\r\n self.$search.prop('disabled', false);\r\n\r\n self._transferTabIndex();\r\n });\r\n\r\n container.on('disable', function () {\r\n self.$search.prop('disabled', true);\r\n });\r\n\r\n container.on('focus', function (evt) {\r\n self.$search.trigger('focus');\r\n });\r\n\r\n container.on('results:focus', function (params) {\r\n if (params.data._resultId) {\r\n self.$search.attr('aria-activedescendant', params.data._resultId);\r\n } else {\r\n self.$search.removeAttr('aria-activedescendant');\r\n }\r\n });\r\n\r\n this.$selection.on('focusin', '.select2-search--inline', function (evt) {\r\n self.trigger('focus', evt);\r\n });\r\n\r\n this.$selection.on('focusout', '.select2-search--inline', function (evt) {\r\n self._handleBlur(evt);\r\n });\r\n\r\n this.$selection.on('keydown', '.select2-search--inline', function (evt) {\r\n evt.stopPropagation();\r\n\r\n self.trigger('keypress', evt);\r\n\r\n self._keyUpPrevented = evt.isDefaultPrevented();\r\n\r\n var key = evt.which;\r\n\r\n if (key === KEYS.BACKSPACE && self.$search.val() === '') {\r\n var $previousChoice = self.$searchContainer\r\n .prev('.select2-selection__choice');\r\n\r\n if ($previousChoice.length > 0) {\r\n var item = Utils.GetData($previousChoice[0], 'data');\r\n\r\n self.searchRemoveChoice(item);\r\n\r\n evt.preventDefault();\r\n }\r\n }\r\n });\r\n\r\n this.$selection.on('click', '.select2-search--inline', function (evt) {\r\n if (self.$search.val()) {\r\n evt.stopPropagation();\r\n }\r\n });\r\n\r\n // Try to detect the IE version should the `documentMode` property that\r\n // is stored on the document. This is only implemented in IE and is\r\n // slightly cleaner than doing a user agent check.\r\n // This property is not available in Edge, but Edge also doesn't have\r\n // this bug.\r\n var msie = document.documentMode;\r\n var disableInputEvents = msie && msie <= 11;\r\n\r\n // Workaround for browsers which do not support the `input` event\r\n // This will prevent double-triggering of events for browsers which support\r\n // both the `keyup` and `input` events.\r\n this.$selection.on(\r\n 'input.searchcheck',\r\n '.select2-search--inline',\r\n function (evt) {\r\n // IE will trigger the `input` event when a placeholder is used on a\r\n // search box. To get around this issue, we are forced to ignore all\r\n // `input` events in IE and keep using `keyup`.\r\n if (disableInputEvents) {\r\n self.$selection.off('input.search input.searchcheck');\r\n return;\r\n }\r\n\r\n // Unbind the duplicated `keyup` event\r\n self.$selection.off('keyup.search');\r\n }\r\n );\r\n\r\n this.$selection.on(\r\n 'keyup.search input.search',\r\n '.select2-search--inline',\r\n function (evt) {\r\n // IE will trigger the `input` event when a placeholder is used on a\r\n // search box. To get around this issue, we are forced to ignore all\r\n // `input` events in IE and keep using `keyup`.\r\n if (disableInputEvents && evt.type === 'input') {\r\n self.$selection.off('input.search input.searchcheck');\r\n return;\r\n }\r\n\r\n var key = evt.which;\r\n\r\n // We can freely ignore events from modifier keys\r\n if (key == KEYS.SHIFT || key == KEYS.CTRL || key == KEYS.ALT) {\r\n return;\r\n }\r\n\r\n // Tabbing will be handled during the `keydown` phase\r\n if (key == KEYS.TAB) {\r\n return;\r\n }\r\n\r\n self.handleSearch(evt);\r\n }\r\n );\r\n };\r\n\r\n /**\r\n * This method will transfer the tabindex attribute from the rendered\r\n * selection to the search box. This allows for the search box to be used as\r\n * the primary focus instead of the selection container.\r\n *\r\n * @private\r\n */\r\n Search.prototype._transferTabIndex = function (decorated) {\r\n this.$search.attr('tabindex', this.$selection.attr('tabindex'));\r\n this.$selection.attr('tabindex', '-1');\r\n };\r\n\r\n Search.prototype.createPlaceholder = function (decorated, placeholder) {\r\n this.$search.attr('placeholder', placeholder.text);\r\n };\r\n\r\n Search.prototype.update = function (decorated, data) {\r\n var searchHadFocus = this.$search[0] == document.activeElement;\r\n\r\n this.$search.attr('placeholder', '');\r\n\r\n decorated.call(this, data);\r\n\r\n this.$selection.find('.select2-selection__rendered')\r\n .append(this.$searchContainer);\r\n\r\n this.resizeSearch();\r\n if (searchHadFocus) {\r\n this.$search.trigger('focus');\r\n }\r\n };\r\n\r\n Search.prototype.handleSearch = function () {\r\n this.resizeSearch();\r\n\r\n if (!this._keyUpPrevented) {\r\n var input = this.$search.val();\r\n\r\n this.trigger('query', {\r\n term: input\r\n });\r\n }\r\n\r\n this._keyUpPrevented = false;\r\n };\r\n\r\n Search.prototype.searchRemoveChoice = function (decorated, item) {\r\n this.trigger('unselect', {\r\n data: item\r\n });\r\n\r\n this.$search.val(item.text);\r\n this.handleSearch();\r\n };\r\n\r\n Search.prototype.resizeSearch = function () {\r\n this.$search.css('width', '25px');\r\n\r\n var width = '';\r\n\r\n if (this.$search.attr('placeholder') !== '') {\r\n width = this.$selection.find('.select2-selection__rendered').width();\r\n } else {\r\n var minimumWidth = this.$search.val().length + 1;\r\n\r\n width = (minimumWidth * 0.75) + 'em';\r\n }\r\n\r\n this.$search.css('width', width);\r\n };\r\n\r\n return Search;\r\n});\r\n\r\nS2.define('select2/selection/eventRelay',[\r\n 'jquery'\r\n], function ($) {\r\n function EventRelay () { }\r\n\r\n EventRelay.prototype.bind = function (decorated, container, $container) {\r\n var self = this;\r\n var relayEvents = [\r\n 'open', 'opening',\r\n 'close', 'closing',\r\n 'select', 'selecting',\r\n 'unselect', 'unselecting',\r\n 'clear', 'clearing'\r\n ];\r\n\r\n var preventableEvents = [\r\n 'opening', 'closing', 'selecting', 'unselecting', 'clearing'\r\n ];\r\n\r\n decorated.call(this, container, $container);\r\n\r\n container.on('*', function (name, params) {\r\n // Ignore events that should not be relayed\r\n if ($.inArray(name, relayEvents) === -1) {\r\n return;\r\n }\r\n\r\n // The parameters should always be an object\r\n params = params || {};\r\n\r\n // Generate the jQuery event for the Select2 event\r\n var evt = $.Event('select2:' + name, {\r\n params: params\r\n });\r\n\r\n self.$element.trigger(evt);\r\n\r\n // Only handle preventable events if it was one\r\n if ($.inArray(name, preventableEvents) === -1) {\r\n return;\r\n }\r\n\r\n params.prevented = evt.isDefaultPrevented();\r\n });\r\n };\r\n\r\n return EventRelay;\r\n});\r\n\r\nS2.define('select2/translation',[\r\n 'jquery',\r\n 'require'\r\n], function ($, require) {\r\n function Translation (dict) {\r\n this.dict = dict || {};\r\n }\r\n\r\n Translation.prototype.all = function () {\r\n return this.dict;\r\n };\r\n\r\n Translation.prototype.get = function (key) {\r\n return this.dict[key];\r\n };\r\n\r\n Translation.prototype.extend = function (translation) {\r\n this.dict = $.extend({}, translation.all(), this.dict);\r\n };\r\n\r\n // Static functions\r\n\r\n Translation._cache = {};\r\n\r\n Translation.loadPath = function (path) {\r\n if (!(path in Translation._cache)) {\r\n var translations = require(path);\r\n\r\n Translation._cache[path] = translations;\r\n }\r\n\r\n return new Translation(Translation._cache[path]);\r\n };\r\n\r\n return Translation;\r\n});\r\n\r\nS2.define('select2/diacritics',[\r\n\r\n], function () {\r\n var diacritics = {\r\n '\\u24B6': 'A',\r\n '\\uFF21': 'A',\r\n '\\u00C0': 'A',\r\n '\\u00C1': 'A',\r\n '\\u00C2': 'A',\r\n '\\u1EA6': 'A',\r\n '\\u1EA4': 'A',\r\n '\\u1EAA': 'A',\r\n '\\u1EA8': 'A',\r\n '\\u00C3': 'A',\r\n '\\u0100': 'A',\r\n '\\u0102': 'A',\r\n '\\u1EB0': 'A',\r\n '\\u1EAE': 'A',\r\n '\\u1EB4': 'A',\r\n '\\u1EB2': 'A',\r\n '\\u0226': 'A',\r\n '\\u01E0': 'A',\r\n '\\u00C4': 'A',\r\n '\\u01DE': 'A',\r\n '\\u1EA2': 'A',\r\n '\\u00C5': 'A',\r\n '\\u01FA': 'A',\r\n '\\u01CD': 'A',\r\n '\\u0200': 'A',\r\n '\\u0202': 'A',\r\n '\\u1EA0': 'A',\r\n '\\u1EAC': 'A',\r\n '\\u1EB6': 'A',\r\n '\\u1E00': 'A',\r\n '\\u0104': 'A',\r\n '\\u023A': 'A',\r\n '\\u2C6F': 'A',\r\n '\\uA732': 'AA',\r\n '\\u00C6': 'AE',\r\n '\\u01FC': 'AE',\r\n '\\u01E2': 'AE',\r\n '\\uA734': 'AO',\r\n '\\uA736': 'AU',\r\n '\\uA738': 'AV',\r\n '\\uA73A': 'AV',\r\n '\\uA73C': 'AY',\r\n '\\u24B7': 'B',\r\n '\\uFF22': 'B',\r\n '\\u1E02': 'B',\r\n '\\u1E04': 'B',\r\n '\\u1E06': 'B',\r\n '\\u0243': 'B',\r\n '\\u0182': 'B',\r\n '\\u0181': 'B',\r\n '\\u24B8': 'C',\r\n '\\uFF23': 'C',\r\n '\\u0106': 'C',\r\n '\\u0108': 'C',\r\n '\\u010A': 'C',\r\n '\\u010C': 'C',\r\n '\\u00C7': 'C',\r\n '\\u1E08': 'C',\r\n '\\u0187': 'C',\r\n '\\u023B': 'C',\r\n '\\uA73E': 'C',\r\n '\\u24B9': 'D',\r\n '\\uFF24': 'D',\r\n '\\u1E0A': 'D',\r\n '\\u010E': 'D',\r\n '\\u1E0C': 'D',\r\n '\\u1E10': 'D',\r\n '\\u1E12': 'D',\r\n '\\u1E0E': 'D',\r\n '\\u0110': 'D',\r\n '\\u018B': 'D',\r\n '\\u018A': 'D',\r\n '\\u0189': 'D',\r\n '\\uA779': 'D',\r\n '\\u01F1': 'DZ',\r\n '\\u01C4': 'DZ',\r\n '\\u01F2': 'Dz',\r\n '\\u01C5': 'Dz',\r\n '\\u24BA': 'E',\r\n '\\uFF25': 'E',\r\n '\\u00C8': 'E',\r\n '\\u00C9': 'E',\r\n '\\u00CA': 'E',\r\n '\\u1EC0': 'E',\r\n '\\u1EBE': 'E',\r\n '\\u1EC4': 'E',\r\n '\\u1EC2': 'E',\r\n '\\u1EBC': 'E',\r\n '\\u0112': 'E',\r\n '\\u1E14': 'E',\r\n '\\u1E16': 'E',\r\n '\\u0114': 'E',\r\n '\\u0116': 'E',\r\n '\\u00CB': 'E',\r\n '\\u1EBA': 'E',\r\n '\\u011A': 'E',\r\n '\\u0204': 'E',\r\n '\\u0206': 'E',\r\n '\\u1EB8': 'E',\r\n '\\u1EC6': 'E',\r\n '\\u0228': 'E',\r\n '\\u1E1C': 'E',\r\n '\\u0118': 'E',\r\n '\\u1E18': 'E',\r\n '\\u1E1A': 'E',\r\n '\\u0190': 'E',\r\n '\\u018E': 'E',\r\n '\\u24BB': 'F',\r\n '\\uFF26': 'F',\r\n '\\u1E1E': 'F',\r\n '\\u0191': 'F',\r\n '\\uA77B': 'F',\r\n '\\u24BC': 'G',\r\n '\\uFF27': 'G',\r\n '\\u01F4': 'G',\r\n '\\u011C': 'G',\r\n '\\u1E20': 'G',\r\n '\\u011E': 'G',\r\n '\\u0120': 'G',\r\n '\\u01E6': 'G',\r\n '\\u0122': 'G',\r\n '\\u01E4': 'G',\r\n '\\u0193': 'G',\r\n '\\uA7A0': 'G',\r\n '\\uA77D': 'G',\r\n '\\uA77E': 'G',\r\n '\\u24BD': 'H',\r\n '\\uFF28': 'H',\r\n '\\u0124': 'H',\r\n '\\u1E22': 'H',\r\n '\\u1E26': 'H',\r\n '\\u021E': 'H',\r\n '\\u1E24': 'H',\r\n '\\u1E28': 'H',\r\n '\\u1E2A': 'H',\r\n '\\u0126': 'H',\r\n '\\u2C67': 'H',\r\n '\\u2C75': 'H',\r\n '\\uA78D': 'H',\r\n '\\u24BE': 'I',\r\n '\\uFF29': 'I',\r\n '\\u00CC': 'I',\r\n '\\u00CD': 'I',\r\n '\\u00CE': 'I',\r\n '\\u0128': 'I',\r\n '\\u012A': 'I',\r\n '\\u012C': 'I',\r\n '\\u0130': 'I',\r\n '\\u00CF': 'I',\r\n '\\u1E2E': 'I',\r\n '\\u1EC8': 'I',\r\n '\\u01CF': 'I',\r\n '\\u0208': 'I',\r\n '\\u020A': 'I',\r\n '\\u1ECA': 'I',\r\n '\\u012E': 'I',\r\n '\\u1E2C': 'I',\r\n '\\u0197': 'I',\r\n '\\u24BF': 'J',\r\n '\\uFF2A': 'J',\r\n '\\u0134': 'J',\r\n '\\u0248': 'J',\r\n '\\u24C0': 'K',\r\n '\\uFF2B': 'K',\r\n '\\u1E30': 'K',\r\n '\\u01E8': 'K',\r\n '\\u1E32': 'K',\r\n '\\u0136': 'K',\r\n '\\u1E34': 'K',\r\n '\\u0198': 'K',\r\n '\\u2C69': 'K',\r\n '\\uA740': 'K',\r\n '\\uA742': 'K',\r\n '\\uA744': 'K',\r\n '\\uA7A2': 'K',\r\n '\\u24C1': 'L',\r\n '\\uFF2C': 'L',\r\n '\\u013F': 'L',\r\n '\\u0139': 'L',\r\n '\\u013D': 'L',\r\n '\\u1E36': 'L',\r\n '\\u1E38': 'L',\r\n '\\u013B': 'L',\r\n '\\u1E3C': 'L',\r\n '\\u1E3A': 'L',\r\n '\\u0141': 'L',\r\n '\\u023D': 'L',\r\n '\\u2C62': 'L',\r\n '\\u2C60': 'L',\r\n '\\uA748': 'L',\r\n '\\uA746': 'L',\r\n '\\uA780': 'L',\r\n '\\u01C7': 'LJ',\r\n '\\u01C8': 'Lj',\r\n '\\u24C2': 'M',\r\n '\\uFF2D': 'M',\r\n '\\u1E3E': 'M',\r\n '\\u1E40': 'M',\r\n '\\u1E42': 'M',\r\n '\\u2C6E': 'M',\r\n '\\u019C': 'M',\r\n '\\u24C3': 'N',\r\n '\\uFF2E': 'N',\r\n '\\u01F8': 'N',\r\n '\\u0143': 'N',\r\n '\\u00D1': 'N',\r\n '\\u1E44': 'N',\r\n '\\u0147': 'N',\r\n '\\u1E46': 'N',\r\n '\\u0145': 'N',\r\n '\\u1E4A': 'N',\r\n '\\u1E48': 'N',\r\n '\\u0220': 'N',\r\n '\\u019D': 'N',\r\n '\\uA790': 'N',\r\n '\\uA7A4': 'N',\r\n '\\u01CA': 'NJ',\r\n '\\u01CB': 'Nj',\r\n '\\u24C4': 'O',\r\n '\\uFF2F': 'O',\r\n '\\u00D2': 'O',\r\n '\\u00D3': 'O',\r\n '\\u00D4': 'O',\r\n '\\u1ED2': 'O',\r\n '\\u1ED0': 'O',\r\n '\\u1ED6': 'O',\r\n '\\u1ED4': 'O',\r\n '\\u00D5': 'O',\r\n '\\u1E4C': 'O',\r\n '\\u022C': 'O',\r\n '\\u1E4E': 'O',\r\n '\\u014C': 'O',\r\n '\\u1E50': 'O',\r\n '\\u1E52': 'O',\r\n '\\u014E': 'O',\r\n '\\u022E': 'O',\r\n '\\u0230': 'O',\r\n '\\u00D6': 'O',\r\n '\\u022A': 'O',\r\n '\\u1ECE': 'O',\r\n '\\u0150': 'O',\r\n '\\u01D1': 'O',\r\n '\\u020C': 'O',\r\n '\\u020E': 'O',\r\n '\\u01A0': 'O',\r\n '\\u1EDC': 'O',\r\n '\\u1EDA': 'O',\r\n '\\u1EE0': 'O',\r\n '\\u1EDE': 'O',\r\n '\\u1EE2': 'O',\r\n '\\u1ECC': 'O',\r\n '\\u1ED8': 'O',\r\n '\\u01EA': 'O',\r\n '\\u01EC': 'O',\r\n '\\u00D8': 'O',\r\n '\\u01FE': 'O',\r\n '\\u0186': 'O',\r\n '\\u019F': 'O',\r\n '\\uA74A': 'O',\r\n '\\uA74C': 'O',\r\n '\\u0152': 'OE',\r\n '\\u01A2': 'OI',\r\n '\\uA74E': 'OO',\r\n '\\u0222': 'OU',\r\n '\\u24C5': 'P',\r\n '\\uFF30': 'P',\r\n '\\u1E54': 'P',\r\n '\\u1E56': 'P',\r\n '\\u01A4': 'P',\r\n '\\u2C63': 'P',\r\n '\\uA750': 'P',\r\n '\\uA752': 'P',\r\n '\\uA754': 'P',\r\n '\\u24C6': 'Q',\r\n '\\uFF31': 'Q',\r\n '\\uA756': 'Q',\r\n '\\uA758': 'Q',\r\n '\\u024A': 'Q',\r\n '\\u24C7': 'R',\r\n '\\uFF32': 'R',\r\n '\\u0154': 'R',\r\n '\\u1E58': 'R',\r\n '\\u0158': 'R',\r\n '\\u0210': 'R',\r\n '\\u0212': 'R',\r\n '\\u1E5A': 'R',\r\n '\\u1E5C': 'R',\r\n '\\u0156': 'R',\r\n '\\u1E5E': 'R',\r\n '\\u024C': 'R',\r\n '\\u2C64': 'R',\r\n '\\uA75A': 'R',\r\n '\\uA7A6': 'R',\r\n '\\uA782': 'R',\r\n '\\u24C8': 'S',\r\n '\\uFF33': 'S',\r\n '\\u1E9E': 'S',\r\n '\\u015A': 'S',\r\n '\\u1E64': 'S',\r\n '\\u015C': 'S',\r\n '\\u1E60': 'S',\r\n '\\u0160': 'S',\r\n '\\u1E66': 'S',\r\n '\\u1E62': 'S',\r\n '\\u1E68': 'S',\r\n '\\u0218': 'S',\r\n '\\u015E': 'S',\r\n '\\u2C7E': 'S',\r\n '\\uA7A8': 'S',\r\n '\\uA784': 'S',\r\n '\\u24C9': 'T',\r\n '\\uFF34': 'T',\r\n '\\u1E6A': 'T',\r\n '\\u0164': 'T',\r\n '\\u1E6C': 'T',\r\n '\\u021A': 'T',\r\n '\\u0162': 'T',\r\n '\\u1E70': 'T',\r\n '\\u1E6E': 'T',\r\n '\\u0166': 'T',\r\n '\\u01AC': 'T',\r\n '\\u01AE': 'T',\r\n '\\u023E': 'T',\r\n '\\uA786': 'T',\r\n '\\uA728': 'TZ',\r\n '\\u24CA': 'U',\r\n '\\uFF35': 'U',\r\n '\\u00D9': 'U',\r\n '\\u00DA': 'U',\r\n '\\u00DB': 'U',\r\n '\\u0168': 'U',\r\n '\\u1E78': 'U',\r\n '\\u016A': 'U',\r\n '\\u1E7A': 'U',\r\n '\\u016C': 'U',\r\n '\\u00DC': 'U',\r\n '\\u01DB': 'U',\r\n '\\u01D7': 'U',\r\n '\\u01D5': 'U',\r\n '\\u01D9': 'U',\r\n '\\u1EE6': 'U',\r\n '\\u016E': 'U',\r\n '\\u0170': 'U',\r\n '\\u01D3': 'U',\r\n '\\u0214': 'U',\r\n '\\u0216': 'U',\r\n '\\u01AF': 'U',\r\n '\\u1EEA': 'U',\r\n '\\u1EE8': 'U',\r\n '\\u1EEE': 'U',\r\n '\\u1EEC': 'U',\r\n '\\u1EF0': 'U',\r\n '\\u1EE4': 'U',\r\n '\\u1E72': 'U',\r\n '\\u0172': 'U',\r\n '\\u1E76': 'U',\r\n '\\u1E74': 'U',\r\n '\\u0244': 'U',\r\n '\\u24CB': 'V',\r\n '\\uFF36': 'V',\r\n '\\u1E7C': 'V',\r\n '\\u1E7E': 'V',\r\n '\\u01B2': 'V',\r\n '\\uA75E': 'V',\r\n '\\u0245': 'V',\r\n '\\uA760': 'VY',\r\n '\\u24CC': 'W',\r\n '\\uFF37': 'W',\r\n '\\u1E80': 'W',\r\n '\\u1E82': 'W',\r\n '\\u0174': 'W',\r\n '\\u1E86': 'W',\r\n '\\u1E84': 'W',\r\n '\\u1E88': 'W',\r\n '\\u2C72': 'W',\r\n '\\u24CD': 'X',\r\n '\\uFF38': 'X',\r\n '\\u1E8A': 'X',\r\n '\\u1E8C': 'X',\r\n '\\u24CE': 'Y',\r\n '\\uFF39': 'Y',\r\n '\\u1EF2': 'Y',\r\n '\\u00DD': 'Y',\r\n '\\u0176': 'Y',\r\n '\\u1EF8': 'Y',\r\n '\\u0232': 'Y',\r\n '\\u1E8E': 'Y',\r\n '\\u0178': 'Y',\r\n '\\u1EF6': 'Y',\r\n '\\u1EF4': 'Y',\r\n '\\u01B3': 'Y',\r\n '\\u024E': 'Y',\r\n '\\u1EFE': 'Y',\r\n '\\u24CF': 'Z',\r\n '\\uFF3A': 'Z',\r\n '\\u0179': 'Z',\r\n '\\u1E90': 'Z',\r\n '\\u017B': 'Z',\r\n '\\u017D': 'Z',\r\n '\\u1E92': 'Z',\r\n '\\u1E94': 'Z',\r\n '\\u01B5': 'Z',\r\n '\\u0224': 'Z',\r\n '\\u2C7F': 'Z',\r\n '\\u2C6B': 'Z',\r\n '\\uA762': 'Z',\r\n '\\u24D0': 'a',\r\n '\\uFF41': 'a',\r\n '\\u1E9A': 'a',\r\n '\\u00E0': 'a',\r\n '\\u00E1': 'a',\r\n '\\u00E2': 'a',\r\n '\\u1EA7': 'a',\r\n '\\u1EA5': 'a',\r\n '\\u1EAB': 'a',\r\n '\\u1EA9': 'a',\r\n '\\u00E3': 'a',\r\n '\\u0101': 'a',\r\n '\\u0103': 'a',\r\n '\\u1EB1': 'a',\r\n '\\u1EAF': 'a',\r\n '\\u1EB5': 'a',\r\n '\\u1EB3': 'a',\r\n '\\u0227': 'a',\r\n '\\u01E1': 'a',\r\n '\\u00E4': 'a',\r\n '\\u01DF': 'a',\r\n '\\u1EA3': 'a',\r\n '\\u00E5': 'a',\r\n '\\u01FB': 'a',\r\n '\\u01CE': 'a',\r\n '\\u0201': 'a',\r\n '\\u0203': 'a',\r\n '\\u1EA1': 'a',\r\n '\\u1EAD': 'a',\r\n '\\u1EB7': 'a',\r\n '\\u1E01': 'a',\r\n '\\u0105': 'a',\r\n '\\u2C65': 'a',\r\n '\\u0250': 'a',\r\n '\\uA733': 'aa',\r\n '\\u00E6': 'ae',\r\n '\\u01FD': 'ae',\r\n '\\u01E3': 'ae',\r\n '\\uA735': 'ao',\r\n '\\uA737': 'au',\r\n '\\uA739': 'av',\r\n '\\uA73B': 'av',\r\n '\\uA73D': 'ay',\r\n '\\u24D1': 'b',\r\n '\\uFF42': 'b',\r\n '\\u1E03': 'b',\r\n '\\u1E05': 'b',\r\n '\\u1E07': 'b',\r\n '\\u0180': 'b',\r\n '\\u0183': 'b',\r\n '\\u0253': 'b',\r\n '\\u24D2': 'c',\r\n '\\uFF43': 'c',\r\n '\\u0107': 'c',\r\n '\\u0109': 'c',\r\n '\\u010B': 'c',\r\n '\\u010D': 'c',\r\n '\\u00E7': 'c',\r\n '\\u1E09': 'c',\r\n '\\u0188': 'c',\r\n '\\u023C': 'c',\r\n '\\uA73F': 'c',\r\n '\\u2184': 'c',\r\n '\\u24D3': 'd',\r\n '\\uFF44': 'd',\r\n '\\u1E0B': 'd',\r\n '\\u010F': 'd',\r\n '\\u1E0D': 'd',\r\n '\\u1E11': 'd',\r\n '\\u1E13': 'd',\r\n '\\u1E0F': 'd',\r\n '\\u0111': 'd',\r\n '\\u018C': 'd',\r\n '\\u0256': 'd',\r\n '\\u0257': 'd',\r\n '\\uA77A': 'd',\r\n '\\u01F3': 'dz',\r\n '\\u01C6': 'dz',\r\n '\\u24D4': 'e',\r\n '\\uFF45': 'e',\r\n '\\u00E8': 'e',\r\n '\\u00E9': 'e',\r\n '\\u00EA': 'e',\r\n '\\u1EC1': 'e',\r\n '\\u1EBF': 'e',\r\n '\\u1EC5': 'e',\r\n '\\u1EC3': 'e',\r\n '\\u1EBD': 'e',\r\n '\\u0113': 'e',\r\n '\\u1E15': 'e',\r\n '\\u1E17': 'e',\r\n '\\u0115': 'e',\r\n '\\u0117': 'e',\r\n '\\u00EB': 'e',\r\n '\\u1EBB': 'e',\r\n '\\u011B': 'e',\r\n '\\u0205': 'e',\r\n '\\u0207': 'e',\r\n '\\u1EB9': 'e',\r\n '\\u1EC7': 'e',\r\n '\\u0229': 'e',\r\n '\\u1E1D': 'e',\r\n '\\u0119': 'e',\r\n '\\u1E19': 'e',\r\n '\\u1E1B': 'e',\r\n '\\u0247': 'e',\r\n '\\u025B': 'e',\r\n '\\u01DD': 'e',\r\n '\\u24D5': 'f',\r\n '\\uFF46': 'f',\r\n '\\u1E1F': 'f',\r\n '\\u0192': 'f',\r\n '\\uA77C': 'f',\r\n '\\u24D6': 'g',\r\n '\\uFF47': 'g',\r\n '\\u01F5': 'g',\r\n '\\u011D': 'g',\r\n '\\u1E21': 'g',\r\n '\\u011F': 'g',\r\n '\\u0121': 'g',\r\n '\\u01E7': 'g',\r\n '\\u0123': 'g',\r\n '\\u01E5': 'g',\r\n '\\u0260': 'g',\r\n '\\uA7A1': 'g',\r\n '\\u1D79': 'g',\r\n '\\uA77F': 'g',\r\n '\\u24D7': 'h',\r\n '\\uFF48': 'h',\r\n '\\u0125': 'h',\r\n '\\u1E23': 'h',\r\n '\\u1E27': 'h',\r\n '\\u021F': 'h',\r\n '\\u1E25': 'h',\r\n '\\u1E29': 'h',\r\n '\\u1E2B': 'h',\r\n '\\u1E96': 'h',\r\n '\\u0127': 'h',\r\n '\\u2C68': 'h',\r\n '\\u2C76': 'h',\r\n '\\u0265': 'h',\r\n '\\u0195': 'hv',\r\n '\\u24D8': 'i',\r\n '\\uFF49': 'i',\r\n '\\u00EC': 'i',\r\n '\\u00ED': 'i',\r\n '\\u00EE': 'i',\r\n '\\u0129': 'i',\r\n '\\u012B': 'i',\r\n '\\u012D': 'i',\r\n '\\u00EF': 'i',\r\n '\\u1E2F': 'i',\r\n '\\u1EC9': 'i',\r\n '\\u01D0': 'i',\r\n '\\u0209': 'i',\r\n '\\u020B': 'i',\r\n '\\u1ECB': 'i',\r\n '\\u012F': 'i',\r\n '\\u1E2D': 'i',\r\n '\\u0268': 'i',\r\n '\\u0131': 'i',\r\n '\\u24D9': 'j',\r\n '\\uFF4A': 'j',\r\n '\\u0135': 'j',\r\n '\\u01F0': 'j',\r\n '\\u0249': 'j',\r\n '\\u24DA': 'k',\r\n '\\uFF4B': 'k',\r\n '\\u1E31': 'k',\r\n '\\u01E9': 'k',\r\n '\\u1E33': 'k',\r\n '\\u0137': 'k',\r\n '\\u1E35': 'k',\r\n '\\u0199': 'k',\r\n '\\u2C6A': 'k',\r\n '\\uA741': 'k',\r\n '\\uA743': 'k',\r\n '\\uA745': 'k',\r\n '\\uA7A3': 'k',\r\n '\\u24DB': 'l',\r\n '\\uFF4C': 'l',\r\n '\\u0140': 'l',\r\n '\\u013A': 'l',\r\n '\\u013E': 'l',\r\n '\\u1E37': 'l',\r\n '\\u1E39': 'l',\r\n '\\u013C': 'l',\r\n '\\u1E3D': 'l',\r\n '\\u1E3B': 'l',\r\n '\\u017F': 'l',\r\n '\\u0142': 'l',\r\n '\\u019A': 'l',\r\n '\\u026B': 'l',\r\n '\\u2C61': 'l',\r\n '\\uA749': 'l',\r\n '\\uA781': 'l',\r\n '\\uA747': 'l',\r\n '\\u01C9': 'lj',\r\n '\\u24DC': 'm',\r\n '\\uFF4D': 'm',\r\n '\\u1E3F': 'm',\r\n '\\u1E41': 'm',\r\n '\\u1E43': 'm',\r\n '\\u0271': 'm',\r\n '\\u026F': 'm',\r\n '\\u24DD': 'n',\r\n '\\uFF4E': 'n',\r\n '\\u01F9': 'n',\r\n '\\u0144': 'n',\r\n '\\u00F1': 'n',\r\n '\\u1E45': 'n',\r\n '\\u0148': 'n',\r\n '\\u1E47': 'n',\r\n '\\u0146': 'n',\r\n '\\u1E4B': 'n',\r\n '\\u1E49': 'n',\r\n '\\u019E': 'n',\r\n '\\u0272': 'n',\r\n '\\u0149': 'n',\r\n '\\uA791': 'n',\r\n '\\uA7A5': 'n',\r\n '\\u01CC': 'nj',\r\n '\\u24DE': 'o',\r\n '\\uFF4F': 'o',\r\n '\\u00F2': 'o',\r\n '\\u00F3': 'o',\r\n '\\u00F4': 'o',\r\n '\\u1ED3': 'o',\r\n '\\u1ED1': 'o',\r\n '\\u1ED7': 'o',\r\n '\\u1ED5': 'o',\r\n '\\u00F5': 'o',\r\n '\\u1E4D': 'o',\r\n '\\u022D': 'o',\r\n '\\u1E4F': 'o',\r\n '\\u014D': 'o',\r\n '\\u1E51': 'o',\r\n '\\u1E53': 'o',\r\n '\\u014F': 'o',\r\n '\\u022F': 'o',\r\n '\\u0231': 'o',\r\n '\\u00F6': 'o',\r\n '\\u022B': 'o',\r\n '\\u1ECF': 'o',\r\n '\\u0151': 'o',\r\n '\\u01D2': 'o',\r\n '\\u020D': 'o',\r\n '\\u020F': 'o',\r\n '\\u01A1': 'o',\r\n '\\u1EDD': 'o',\r\n '\\u1EDB': 'o',\r\n '\\u1EE1': 'o',\r\n '\\u1EDF': 'o',\r\n '\\u1EE3': 'o',\r\n '\\u1ECD': 'o',\r\n '\\u1ED9': 'o',\r\n '\\u01EB': 'o',\r\n '\\u01ED': 'o',\r\n '\\u00F8': 'o',\r\n '\\u01FF': 'o',\r\n '\\u0254': 'o',\r\n '\\uA74B': 'o',\r\n '\\uA74D': 'o',\r\n '\\u0275': 'o',\r\n '\\u0153': 'oe',\r\n '\\u01A3': 'oi',\r\n '\\u0223': 'ou',\r\n '\\uA74F': 'oo',\r\n '\\u24DF': 'p',\r\n '\\uFF50': 'p',\r\n '\\u1E55': 'p',\r\n '\\u1E57': 'p',\r\n '\\u01A5': 'p',\r\n '\\u1D7D': 'p',\r\n '\\uA751': 'p',\r\n '\\uA753': 'p',\r\n '\\uA755': 'p',\r\n '\\u24E0': 'q',\r\n '\\uFF51': 'q',\r\n '\\u024B': 'q',\r\n '\\uA757': 'q',\r\n '\\uA759': 'q',\r\n '\\u24E1': 'r',\r\n '\\uFF52': 'r',\r\n '\\u0155': 'r',\r\n '\\u1E59': 'r',\r\n '\\u0159': 'r',\r\n '\\u0211': 'r',\r\n '\\u0213': 'r',\r\n '\\u1E5B': 'r',\r\n '\\u1E5D': 'r',\r\n '\\u0157': 'r',\r\n '\\u1E5F': 'r',\r\n '\\u024D': 'r',\r\n '\\u027D': 'r',\r\n '\\uA75B': 'r',\r\n '\\uA7A7': 'r',\r\n '\\uA783': 'r',\r\n '\\u24E2': 's',\r\n '\\uFF53': 's',\r\n '\\u00DF': 's',\r\n '\\u015B': 's',\r\n '\\u1E65': 's',\r\n '\\u015D': 's',\r\n '\\u1E61': 's',\r\n '\\u0161': 's',\r\n '\\u1E67': 's',\r\n '\\u1E63': 's',\r\n '\\u1E69': 's',\r\n '\\u0219': 's',\r\n '\\u015F': 's',\r\n '\\u023F': 's',\r\n '\\uA7A9': 's',\r\n '\\uA785': 's',\r\n '\\u1E9B': 's',\r\n '\\u24E3': 't',\r\n '\\uFF54': 't',\r\n '\\u1E6B': 't',\r\n '\\u1E97': 't',\r\n '\\u0165': 't',\r\n '\\u1E6D': 't',\r\n '\\u021B': 't',\r\n '\\u0163': 't',\r\n '\\u1E71': 't',\r\n '\\u1E6F': 't',\r\n '\\u0167': 't',\r\n '\\u01AD': 't',\r\n '\\u0288': 't',\r\n '\\u2C66': 't',\r\n '\\uA787': 't',\r\n '\\uA729': 'tz',\r\n '\\u24E4': 'u',\r\n '\\uFF55': 'u',\r\n '\\u00F9': 'u',\r\n '\\u00FA': 'u',\r\n '\\u00FB': 'u',\r\n '\\u0169': 'u',\r\n '\\u1E79': 'u',\r\n '\\u016B': 'u',\r\n '\\u1E7B': 'u',\r\n '\\u016D': 'u',\r\n '\\u00FC': 'u',\r\n '\\u01DC': 'u',\r\n '\\u01D8': 'u',\r\n '\\u01D6': 'u',\r\n '\\u01DA': 'u',\r\n '\\u1EE7': 'u',\r\n '\\u016F': 'u',\r\n '\\u0171': 'u',\r\n '\\u01D4': 'u',\r\n '\\u0215': 'u',\r\n '\\u0217': 'u',\r\n '\\u01B0': 'u',\r\n '\\u1EEB': 'u',\r\n '\\u1EE9': 'u',\r\n '\\u1EEF': 'u',\r\n '\\u1EED': 'u',\r\n '\\u1EF1': 'u',\r\n '\\u1EE5': 'u',\r\n '\\u1E73': 'u',\r\n '\\u0173': 'u',\r\n '\\u1E77': 'u',\r\n '\\u1E75': 'u',\r\n '\\u0289': 'u',\r\n '\\u24E5': 'v',\r\n '\\uFF56': 'v',\r\n '\\u1E7D': 'v',\r\n '\\u1E7F': 'v',\r\n '\\u028B': 'v',\r\n '\\uA75F': 'v',\r\n '\\u028C': 'v',\r\n '\\uA761': 'vy',\r\n '\\u24E6': 'w',\r\n '\\uFF57': 'w',\r\n '\\u1E81': 'w',\r\n '\\u1E83': 'w',\r\n '\\u0175': 'w',\r\n '\\u1E87': 'w',\r\n '\\u1E85': 'w',\r\n '\\u1E98': 'w',\r\n '\\u1E89': 'w',\r\n '\\u2C73': 'w',\r\n '\\u24E7': 'x',\r\n '\\uFF58': 'x',\r\n '\\u1E8B': 'x',\r\n '\\u1E8D': 'x',\r\n '\\u24E8': 'y',\r\n '\\uFF59': 'y',\r\n '\\u1EF3': 'y',\r\n '\\u00FD': 'y',\r\n '\\u0177': 'y',\r\n '\\u1EF9': 'y',\r\n '\\u0233': 'y',\r\n '\\u1E8F': 'y',\r\n '\\u00FF': 'y',\r\n '\\u1EF7': 'y',\r\n '\\u1E99': 'y',\r\n '\\u1EF5': 'y',\r\n '\\u01B4': 'y',\r\n '\\u024F': 'y',\r\n '\\u1EFF': 'y',\r\n '\\u24E9': 'z',\r\n '\\uFF5A': 'z',\r\n '\\u017A': 'z',\r\n '\\u1E91': 'z',\r\n '\\u017C': 'z',\r\n '\\u017E': 'z',\r\n '\\u1E93': 'z',\r\n '\\u1E95': 'z',\r\n '\\u01B6': 'z',\r\n '\\u0225': 'z',\r\n '\\u0240': 'z',\r\n '\\u2C6C': 'z',\r\n '\\uA763': 'z',\r\n '\\u0386': '\\u0391',\r\n '\\u0388': '\\u0395',\r\n '\\u0389': '\\u0397',\r\n '\\u038A': '\\u0399',\r\n '\\u03AA': '\\u0399',\r\n '\\u038C': '\\u039F',\r\n '\\u038E': '\\u03A5',\r\n '\\u03AB': '\\u03A5',\r\n '\\u038F': '\\u03A9',\r\n '\\u03AC': '\\u03B1',\r\n '\\u03AD': '\\u03B5',\r\n '\\u03AE': '\\u03B7',\r\n '\\u03AF': '\\u03B9',\r\n '\\u03CA': '\\u03B9',\r\n '\\u0390': '\\u03B9',\r\n '\\u03CC': '\\u03BF',\r\n '\\u03CD': '\\u03C5',\r\n '\\u03CB': '\\u03C5',\r\n '\\u03B0': '\\u03C5',\r\n '\\u03CE': '\\u03C9',\r\n '\\u03C2': '\\u03C3',\r\n '\\u2019': '\\''\r\n };\r\n\r\n return diacritics;\r\n});\r\n\r\nS2.define('select2/data/base',[\r\n '../utils'\r\n], function (Utils) {\r\n function BaseAdapter ($element, options) {\r\n BaseAdapter.__super__.constructor.call(this);\r\n }\r\n\r\n Utils.Extend(BaseAdapter, Utils.Observable);\r\n\r\n BaseAdapter.prototype.current = function (callback) {\r\n throw new Error('The `current` method must be defined in child classes.');\r\n };\r\n\r\n BaseAdapter.prototype.query = function (params, callback) {\r\n throw new Error('The `query` method must be defined in child classes.');\r\n };\r\n\r\n BaseAdapter.prototype.bind = function (container, $container) {\r\n // Can be implemented in subclasses\r\n };\r\n\r\n BaseAdapter.prototype.destroy = function () {\r\n // Can be implemented in subclasses\r\n };\r\n\r\n BaseAdapter.prototype.generateResultId = function (container, data) {\r\n var id = container.id + '-result-';\r\n\r\n id += Utils.generateChars(4);\r\n\r\n if (data.id != null) {\r\n id += '-' + data.id.toString();\r\n } else {\r\n id += '-' + Utils.generateChars(4);\r\n }\r\n return id;\r\n };\r\n\r\n return BaseAdapter;\r\n});\r\n\r\nS2.define('select2/data/select',[\r\n './base',\r\n '../utils',\r\n 'jquery'\r\n], function (BaseAdapter, Utils, $) {\r\n function SelectAdapter ($element, options) {\r\n this.$element = $element;\r\n this.options = options;\r\n\r\n SelectAdapter.__super__.constructor.call(this);\r\n }\r\n\r\n Utils.Extend(SelectAdapter, BaseAdapter);\r\n\r\n SelectAdapter.prototype.current = function (callback) {\r\n var data = [];\r\n var self = this;\r\n\r\n this.$element.find(':selected').each(function () {\r\n var $option = $(this);\r\n\r\n var option = self.item($option);\r\n\r\n data.push(option);\r\n });\r\n\r\n callback(data);\r\n };\r\n\r\n SelectAdapter.prototype.select = function (data) {\r\n var self = this;\r\n\r\n data.selected = true;\r\n\r\n // If data.element is a DOM node, use it instead\r\n if ($(data.element).is('option')) {\r\n data.element.selected = true;\r\n\r\n this.$element.trigger('input').trigger('change');\r\n\r\n return;\r\n }\r\n\r\n if (this.$element.prop('multiple')) {\r\n this.current(function (currentData) {\r\n var val = [];\r\n\r\n data = [data];\r\n data.push.apply(data, currentData);\r\n\r\n for (var d = 0; d < data.length; d++) {\r\n var id = data[d].id;\r\n\r\n if ($.inArray(id, val) === -1) {\r\n val.push(id);\r\n }\r\n }\r\n\r\n self.$element.val(val);\r\n self.$element.trigger('input').trigger('change');\r\n });\r\n } else {\r\n var val = data.id;\r\n\r\n this.$element.val(val);\r\n this.$element.trigger('input').trigger('change');\r\n }\r\n };\r\n\r\n SelectAdapter.prototype.unselect = function (data) {\r\n var self = this;\r\n\r\n if (!this.$element.prop('multiple')) {\r\n return;\r\n }\r\n\r\n data.selected = false;\r\n\r\n if ($(data.element).is('option')) {\r\n data.element.selected = false;\r\n\r\n this.$element.trigger('input').trigger('change');\r\n\r\n return;\r\n }\r\n\r\n this.current(function (currentData) {\r\n var val = [];\r\n\r\n for (var d = 0; d < currentData.length; d++) {\r\n var id = currentData[d].id;\r\n\r\n if (id !== data.id && $.inArray(id, val) === -1) {\r\n val.push(id);\r\n }\r\n }\r\n\r\n self.$element.val(val);\r\n\r\n self.$element.trigger('input').trigger('change');\r\n });\r\n };\r\n\r\n SelectAdapter.prototype.bind = function (container, $container) {\r\n var self = this;\r\n\r\n this.container = container;\r\n\r\n container.on('select', function (params) {\r\n self.select(params.data);\r\n });\r\n\r\n container.on('unselect', function (params) {\r\n self.unselect(params.data);\r\n });\r\n };\r\n\r\n SelectAdapter.prototype.destroy = function () {\r\n // Remove anything added to child elements\r\n this.$element.find('*').each(function () {\r\n // Remove any custom data set by Select2\r\n Utils.RemoveData(this);\r\n });\r\n };\r\n\r\n SelectAdapter.prototype.query = function (params, callback) {\r\n var data = [];\r\n var self = this;\r\n\r\n var $options = this.$element.children();\r\n\r\n $options.each(function () {\r\n var $option = $(this);\r\n\r\n if (!$option.is('option') && !$option.is('optgroup')) {\r\n return;\r\n }\r\n\r\n var option = self.item($option);\r\n\r\n var matches = self.matches(params, option);\r\n\r\n if (matches !== null) {\r\n data.push(matches);\r\n }\r\n });\r\n\r\n callback({\r\n results: data\r\n });\r\n };\r\n\r\n SelectAdapter.prototype.addOptions = function ($options) {\r\n Utils.appendMany(this.$element, $options);\r\n };\r\n\r\n SelectAdapter.prototype.option = function (data) {\r\n var option;\r\n\r\n if (data.children) {\r\n option = document.createElement('optgroup');\r\n option.label = data.text;\r\n } else {\r\n option = document.createElement('option');\r\n\r\n if (option.textContent !== undefined) {\r\n option.textContent = data.text;\r\n } else {\r\n option.innerText = data.text;\r\n }\r\n }\r\n\r\n if (data.id !== undefined) {\r\n option.value = data.id;\r\n }\r\n\r\n if (data.disabled) {\r\n option.disabled = true;\r\n }\r\n\r\n if (data.selected) {\r\n option.selected = true;\r\n }\r\n\r\n if (data.title) {\r\n option.title = data.title;\r\n }\r\n\r\n var $option = $(option);\r\n\r\n var normalizedData = this._normalizeItem(data);\r\n normalizedData.element = option;\r\n\r\n // Override the option's data with the combined data\r\n Utils.StoreData(option, 'data', normalizedData);\r\n\r\n return $option;\r\n };\r\n\r\n SelectAdapter.prototype.item = function ($option) {\r\n var data = {};\r\n\r\n data = Utils.GetData($option[0], 'data');\r\n\r\n if (data != null) {\r\n return data;\r\n }\r\n\r\n if ($option.is('option')) {\r\n data = {\r\n id: $option.val(),\r\n text: $option.text(),\r\n disabled: $option.prop('disabled'),\r\n selected: $option.prop('selected'),\r\n title: $option.prop('title')\r\n };\r\n } else if ($option.is('optgroup')) {\r\n data = {\r\n text: $option.prop('label'),\r\n children: [],\r\n title: $option.prop('title')\r\n };\r\n\r\n var $children = $option.children('option');\r\n var children = [];\r\n\r\n for (var c = 0; c < $children.length; c++) {\r\n var $child = $($children[c]);\r\n\r\n var child = this.item($child);\r\n\r\n children.push(child);\r\n }\r\n\r\n data.children = children;\r\n }\r\n\r\n data = this._normalizeItem(data);\r\n data.element = $option[0];\r\n\r\n Utils.StoreData($option[0], 'data', data);\r\n\r\n return data;\r\n };\r\n\r\n SelectAdapter.prototype._normalizeItem = function (item) {\r\n if (item !== Object(item)) {\r\n item = {\r\n id: item,\r\n text: item\r\n };\r\n }\r\n\r\n item = $.extend({}, {\r\n text: ''\r\n }, item);\r\n\r\n var defaults = {\r\n selected: false,\r\n disabled: false\r\n };\r\n\r\n if (item.id != null) {\r\n item.id = item.id.toString();\r\n }\r\n\r\n if (item.text != null) {\r\n item.text = item.text.toString();\r\n }\r\n\r\n if (item._resultId == null && item.id && this.container != null) {\r\n item._resultId = this.generateResultId(this.container, item);\r\n }\r\n\r\n return $.extend({}, defaults, item);\r\n };\r\n\r\n SelectAdapter.prototype.matches = function (params, data) {\r\n var matcher = this.options.get('matcher');\r\n\r\n return matcher(params, data);\r\n };\r\n\r\n return SelectAdapter;\r\n});\r\n\r\nS2.define('select2/data/array',[\r\n './select',\r\n '../utils',\r\n 'jquery'\r\n], function (SelectAdapter, Utils, $) {\r\n function ArrayAdapter ($element, options) {\r\n this._dataToConvert = options.get('data') || [];\r\n\r\n ArrayAdapter.__super__.constructor.call(this, $element, options);\r\n }\r\n\r\n Utils.Extend(ArrayAdapter, SelectAdapter);\r\n\r\n ArrayAdapter.prototype.bind = function (container, $container) {\r\n ArrayAdapter.__super__.bind.call(this, container, $container);\r\n\r\n this.addOptions(this.convertToOptions(this._dataToConvert));\r\n };\r\n\r\n ArrayAdapter.prototype.select = function (data) {\r\n var $option = this.$element.find('option').filter(function (i, elm) {\r\n return elm.value == data.id.toString();\r\n });\r\n\r\n if ($option.length === 0) {\r\n $option = this.option(data);\r\n\r\n this.addOptions($option);\r\n }\r\n\r\n ArrayAdapter.__super__.select.call(this, data);\r\n };\r\n\r\n ArrayAdapter.prototype.convertToOptions = function (data) {\r\n var self = this;\r\n\r\n var $existing = this.$element.find('option');\r\n var existingIds = $existing.map(function () {\r\n return self.item($(this)).id;\r\n }).get();\r\n\r\n var $options = [];\r\n\r\n // Filter out all items except for the one passed in the argument\r\n function onlyItem (item) {\r\n return function () {\r\n return $(this).val() == item.id;\r\n };\r\n }\r\n\r\n for (var d = 0; d < data.length; d++) {\r\n var item = this._normalizeItem(data[d]);\r\n\r\n // Skip items which were pre-loaded, only merge the data\r\n if ($.inArray(item.id, existingIds) >= 0) {\r\n var $existingOption = $existing.filter(onlyItem(item));\r\n\r\n var existingData = this.item($existingOption);\r\n var newData = $.extend(true, {}, item, existingData);\r\n\r\n var $newOption = this.option(newData);\r\n\r\n $existingOption.replaceWith($newOption);\r\n\r\n continue;\r\n }\r\n\r\n var $option = this.option(item);\r\n\r\n if (item.children) {\r\n var $children = this.convertToOptions(item.children);\r\n\r\n Utils.appendMany($option, $children);\r\n }\r\n\r\n $options.push($option);\r\n }\r\n\r\n return $options;\r\n };\r\n\r\n return ArrayAdapter;\r\n});\r\n\r\nS2.define('select2/data/ajax',[\r\n './array',\r\n '../utils',\r\n 'jquery'\r\n], function (ArrayAdapter, Utils, $) {\r\n function AjaxAdapter ($element, options) {\r\n this.ajaxOptions = this._applyDefaults(options.get('ajax'));\r\n\r\n if (this.ajaxOptions.processResults != null) {\r\n this.processResults = this.ajaxOptions.processResults;\r\n }\r\n\r\n AjaxAdapter.__super__.constructor.call(this, $element, options);\r\n }\r\n\r\n Utils.Extend(AjaxAdapter, ArrayAdapter);\r\n\r\n AjaxAdapter.prototype._applyDefaults = function (options) {\r\n var defaults = {\r\n data: function (params) {\r\n return $.extend({}, params, {\r\n q: params.term\r\n });\r\n },\r\n transport: function (params, success, failure) {\r\n var $request = $.ajax(params);\r\n\r\n $request.then(success);\r\n $request.fail(failure);\r\n\r\n return $request;\r\n }\r\n };\r\n\r\n return $.extend({}, defaults, options, true);\r\n };\r\n\r\n AjaxAdapter.prototype.processResults = function (results) {\r\n return results;\r\n };\r\n\r\n AjaxAdapter.prototype.query = function (params, callback) {\r\n var matches = [];\r\n var self = this;\r\n\r\n if (this._request != null) {\r\n // JSONP requests cannot always be aborted\r\n if ($.isFunction(this._request.abort)) {\r\n this._request.abort();\r\n }\r\n\r\n this._request = null;\r\n }\r\n\r\n var options = $.extend({\r\n type: 'GET'\r\n }, this.ajaxOptions);\r\n\r\n if (typeof options.url === 'function') {\r\n options.url = options.url.call(this.$element, params);\r\n }\r\n\r\n if (typeof options.data === 'function') {\r\n options.data = options.data.call(this.$element, params);\r\n }\r\n\r\n function request () {\r\n var $request = options.transport(options, function (data) {\r\n var results = self.processResults(data, params);\r\n\r\n if (self.options.get('debug') && window.console && console.error) {\r\n // Check to make sure that the response included a `results` key.\r\n if (!results || !results.results || !$.isArray(results.results)) {\r\n console.error(\r\n 'Select2: The AJAX results did not return an array in the ' +\r\n '`results` key of the response.'\r\n );\r\n }\r\n }\r\n\r\n callback(results);\r\n }, function () {\r\n // Attempt to detect if a request was aborted\r\n // Only works if the transport exposes a status property\r\n if ('status' in $request &&\r\n ($request.status === 0 || $request.status === '0')) {\r\n return;\r\n }\r\n\r\n self.trigger('results:message', {\r\n message: 'errorLoading'\r\n });\r\n });\r\n\r\n self._request = $request;\r\n }\r\n\r\n if (this.ajaxOptions.delay && params.term != null) {\r\n if (this._queryTimeout) {\r\n window.clearTimeout(this._queryTimeout);\r\n }\r\n\r\n this._queryTimeout = window.setTimeout(request, this.ajaxOptions.delay);\r\n } else {\r\n request();\r\n }\r\n };\r\n\r\n return AjaxAdapter;\r\n});\r\n\r\nS2.define('select2/data/tags',[\r\n 'jquery'\r\n], function ($) {\r\n function Tags (decorated, $element, options) {\r\n var tags = options.get('tags');\r\n\r\n var createTag = options.get('createTag');\r\n\r\n if (createTag !== undefined) {\r\n this.createTag = createTag;\r\n }\r\n\r\n var insertTag = options.get('insertTag');\r\n\r\n if (insertTag !== undefined) {\r\n this.insertTag = insertTag;\r\n }\r\n\r\n decorated.call(this, $element, options);\r\n\r\n if ($.isArray(tags)) {\r\n for (var t = 0; t < tags.length; t++) {\r\n var tag = tags[t];\r\n var item = this._normalizeItem(tag);\r\n\r\n var $option = this.option(item);\r\n\r\n this.$element.append($option);\r\n }\r\n }\r\n }\r\n\r\n Tags.prototype.query = function (decorated, params, callback) {\r\n var self = this;\r\n\r\n this._removeOldTags();\r\n\r\n if (params.term == null || params.page != null) {\r\n decorated.call(this, params, callback);\r\n return;\r\n }\r\n\r\n function wrapper (obj, child) {\r\n var data = obj.results;\r\n\r\n for (var i = 0; i < data.length; i++) {\r\n var option = data[i];\r\n\r\n var checkChildren = (\r\n option.children != null &&\r\n !wrapper({\r\n results: option.children\r\n }, true)\r\n );\r\n\r\n var optionText = (option.text || '').toUpperCase();\r\n var paramsTerm = (params.term || '').toUpperCase();\r\n\r\n var checkText = optionText === paramsTerm;\r\n\r\n if (checkText || checkChildren) {\r\n if (child) {\r\n return false;\r\n }\r\n\r\n obj.data = data;\r\n callback(obj);\r\n\r\n return;\r\n }\r\n }\r\n\r\n if (child) {\r\n return true;\r\n }\r\n\r\n var tag = self.createTag(params);\r\n\r\n if (tag != null) {\r\n var $option = self.option(tag);\r\n $option.attr('data-select2-tag', true);\r\n\r\n self.addOptions([$option]);\r\n\r\n self.insertTag(data, tag);\r\n }\r\n\r\n obj.results = data;\r\n\r\n callback(obj);\r\n }\r\n\r\n decorated.call(this, params, wrapper);\r\n };\r\n\r\n Tags.prototype.createTag = function (decorated, params) {\r\n var term = $.trim(params.term);\r\n\r\n if (term === '') {\r\n return null;\r\n }\r\n\r\n return {\r\n id: term,\r\n text: term\r\n };\r\n };\r\n\r\n Tags.prototype.insertTag = function (_, data, tag) {\r\n data.unshift(tag);\r\n };\r\n\r\n Tags.prototype._removeOldTags = function (_) {\r\n var $options = this.$element.find('option[data-select2-tag]');\r\n\r\n $options.each(function () {\r\n if (this.selected) {\r\n return;\r\n }\r\n\r\n $(this).remove();\r\n });\r\n };\r\n\r\n return Tags;\r\n});\r\n\r\nS2.define('select2/data/tokenizer',[\r\n 'jquery'\r\n], function ($) {\r\n function Tokenizer (decorated, $element, options) {\r\n var tokenizer = options.get('tokenizer');\r\n\r\n if (tokenizer !== undefined) {\r\n this.tokenizer = tokenizer;\r\n }\r\n\r\n decorated.call(this, $element, options);\r\n }\r\n\r\n Tokenizer.prototype.bind = function (decorated, container, $container) {\r\n decorated.call(this, container, $container);\r\n\r\n this.$search = container.dropdown.$search || container.selection.$search ||\r\n $container.find('.select2-search__field');\r\n };\r\n\r\n Tokenizer.prototype.query = function (decorated, params, callback) {\r\n var self = this;\r\n\r\n function createAndSelect (data) {\r\n // Normalize the data object so we can use it for checks\r\n var item = self._normalizeItem(data);\r\n\r\n // Check if the data object already exists as a tag\r\n // Select it if it doesn't\r\n var $existingOptions = self.$element.find('option').filter(function () {\r\n return $(this).val() === item.id;\r\n });\r\n\r\n // If an existing option wasn't found for it, create the option\r\n if (!$existingOptions.length) {\r\n var $option = self.option(item);\r\n $option.attr('data-select2-tag', true);\r\n\r\n self._removeOldTags();\r\n self.addOptions([$option]);\r\n }\r\n\r\n // Select the item, now that we know there is an option for it\r\n select(item);\r\n }\r\n\r\n function select (data) {\r\n self.trigger('select', {\r\n data: data\r\n });\r\n }\r\n\r\n params.term = params.term || '';\r\n\r\n var tokenData = this.tokenizer(params, this.options, createAndSelect);\r\n\r\n if (tokenData.term !== params.term) {\r\n // Replace the search term if we have the search box\r\n if (this.$search.length) {\r\n this.$search.val(tokenData.term);\r\n this.$search.trigger('focus');\r\n }\r\n\r\n params.term = tokenData.term;\r\n }\r\n\r\n decorated.call(this, params, callback);\r\n };\r\n\r\n Tokenizer.prototype.tokenizer = function (_, params, options, callback) {\r\n var separators = options.get('tokenSeparators') || [];\r\n var term = params.term;\r\n var i = 0;\r\n\r\n var createTag = this.createTag || function (params) {\r\n return {\r\n id: params.term,\r\n text: params.term\r\n };\r\n };\r\n\r\n while (i < term.length) {\r\n var termChar = term[i];\r\n\r\n if ($.inArray(termChar, separators) === -1) {\r\n i++;\r\n\r\n continue;\r\n }\r\n\r\n var part = term.substr(0, i);\r\n var partParams = $.extend({}, params, {\r\n term: part\r\n });\r\n\r\n var data = createTag(partParams);\r\n\r\n if (data == null) {\r\n i++;\r\n continue;\r\n }\r\n\r\n callback(data);\r\n\r\n // Reset the term to not include the tokenized portion\r\n term = term.substr(i + 1) || '';\r\n i = 0;\r\n }\r\n\r\n return {\r\n term: term\r\n };\r\n };\r\n\r\n return Tokenizer;\r\n});\r\n\r\nS2.define('select2/data/minimumInputLength',[\r\n\r\n], function () {\r\n function MinimumInputLength (decorated, $e, options) {\r\n this.minimumInputLength = options.get('minimumInputLength');\r\n\r\n decorated.call(this, $e, options);\r\n }\r\n\r\n MinimumInputLength.prototype.query = function (decorated, params, callback) {\r\n params.term = params.term || '';\r\n\r\n if (params.term.length < this.minimumInputLength) {\r\n this.trigger('results:message', {\r\n message: 'inputTooShort',\r\n args: {\r\n minimum: this.minimumInputLength,\r\n input: params.term,\r\n params: params\r\n }\r\n });\r\n\r\n return;\r\n }\r\n\r\n decorated.call(this, params, callback);\r\n };\r\n\r\n return MinimumInputLength;\r\n});\r\n\r\nS2.define('select2/data/maximumInputLength',[\r\n\r\n], function () {\r\n function MaximumInputLength (decorated, $e, options) {\r\n this.maximumInputLength = options.get('maximumInputLength');\r\n\r\n decorated.call(this, $e, options);\r\n }\r\n\r\n MaximumInputLength.prototype.query = function (decorated, params, callback) {\r\n params.term = params.term || '';\r\n\r\n if (this.maximumInputLength > 0 &&\r\n params.term.length > this.maximumInputLength) {\r\n this.trigger('results:message', {\r\n message: 'inputTooLong',\r\n args: {\r\n maximum: this.maximumInputLength,\r\n input: params.term,\r\n params: params\r\n }\r\n });\r\n\r\n return;\r\n }\r\n\r\n decorated.call(this, params, callback);\r\n };\r\n\r\n return MaximumInputLength;\r\n});\r\n\r\nS2.define('select2/data/maximumSelectionLength',[\r\n\r\n], function (){\r\n function MaximumSelectionLength (decorated, $e, options) {\r\n this.maximumSelectionLength = options.get('maximumSelectionLength');\r\n\r\n decorated.call(this, $e, options);\r\n }\r\n\r\n MaximumSelectionLength.prototype.bind =\r\n function (decorated, container, $container) {\r\n var self = this;\r\n\r\n decorated.call(this, container, $container);\r\n\r\n container.on('select', function () {\r\n self._checkIfMaximumSelected();\r\n });\r\n };\r\n\r\n MaximumSelectionLength.prototype.query =\r\n function (decorated, params, callback) {\r\n var self = this;\r\n\r\n this._checkIfMaximumSelected(function () {\r\n decorated.call(self, params, callback);\r\n });\r\n };\r\n\r\n MaximumSelectionLength.prototype._checkIfMaximumSelected =\r\n function (_, successCallback) {\r\n var self = this;\r\n\r\n this.current(function (currentData) {\r\n var count = currentData != null ? currentData.length : 0;\r\n if (self.maximumSelectionLength > 0 &&\r\n count >= self.maximumSelectionLength) {\r\n self.trigger('results:message', {\r\n message: 'maximumSelected',\r\n args: {\r\n maximum: self.maximumSelectionLength\r\n }\r\n });\r\n return;\r\n }\r\n\r\n if (successCallback) {\r\n successCallback();\r\n }\r\n });\r\n };\r\n\r\n return MaximumSelectionLength;\r\n});\r\n\r\nS2.define('select2/dropdown',[\r\n 'jquery',\r\n './utils'\r\n], function ($, Utils) {\r\n function Dropdown ($element, options) {\r\n this.$element = $element;\r\n this.options = options;\r\n\r\n Dropdown.__super__.constructor.call(this);\r\n }\r\n\r\n Utils.Extend(Dropdown, Utils.Observable);\r\n\r\n Dropdown.prototype.render = function () {\r\n var $dropdown = $(\r\n '' +\r\n '' +\r\n ''\r\n );\r\n\r\n $dropdown.attr('dir', this.options.get('dir'));\r\n\r\n this.$dropdown = $dropdown;\r\n\r\n return $dropdown;\r\n };\r\n\r\n Dropdown.prototype.bind = function () {\r\n // Should be implemented in subclasses\r\n };\r\n\r\n Dropdown.prototype.position = function ($dropdown, $container) {\r\n // Should be implemented in subclasses\r\n };\r\n\r\n Dropdown.prototype.destroy = function () {\r\n // Remove the dropdown from the DOM\r\n this.$dropdown.remove();\r\n };\r\n\r\n return Dropdown;\r\n});\r\n\r\nS2.define('select2/dropdown/search',[\r\n 'jquery',\r\n '../utils'\r\n], function ($, Utils) {\r\n function Search () { }\r\n\r\n Search.prototype.render = function (decorated) {\r\n var $rendered = decorated.call(this);\r\n\r\n var $search = $(\r\n '' +\r\n '' +\r\n ''\r\n );\r\n\r\n this.$searchContainer = $search;\r\n this.$search = $search.find('input');\r\n\r\n $rendered.prepend($search);\r\n\r\n return $rendered;\r\n };\r\n\r\n Search.prototype.bind = function (decorated, container, $container) {\r\n var self = this;\r\n\r\n var resultsId = container.id + '-results';\r\n\r\n decorated.call(this, container, $container);\r\n\r\n this.$search.on('keydown', function (evt) {\r\n self.trigger('keypress', evt);\r\n\r\n self._keyUpPrevented = evt.isDefaultPrevented();\r\n });\r\n\r\n // Workaround for browsers which do not support the `input` event\r\n // This will prevent double-triggering of events for browsers which support\r\n // both the `keyup` and `input` events.\r\n this.$search.on('input', function (evt) {\r\n // Unbind the duplicated `keyup` event\r\n $(this).off('keyup');\r\n });\r\n\r\n this.$search.on('keyup input', function (evt) {\r\n self.handleSearch(evt);\r\n });\r\n\r\n container.on('open', function () {\r\n self.$search.attr('tabindex', 0);\r\n self.$search.attr('aria-controls', resultsId);\r\n\r\n self.$search.trigger('focus');\r\n\r\n window.setTimeout(function () {\r\n self.$search.trigger('focus');\r\n }, 0);\r\n });\r\n\r\n container.on('close', function () {\r\n self.$search.attr('tabindex', -1);\r\n self.$search.removeAttr('aria-controls');\r\n self.$search.removeAttr('aria-activedescendant');\r\n\r\n self.$search.val('');\r\n self.$search.trigger('blur');\r\n });\r\n\r\n container.on('focus', function () {\r\n if (!container.isOpen()) {\r\n self.$search.trigger('focus');\r\n }\r\n });\r\n\r\n container.on('results:all', function (params) {\r\n if (params.query.term == null || params.query.term === '') {\r\n var showSearch = self.showSearch(params);\r\n\r\n if (showSearch) {\r\n self.$searchContainer.removeClass('select2-search--hide');\r\n } else {\r\n self.$searchContainer.addClass('select2-search--hide');\r\n }\r\n }\r\n });\r\n\r\n container.on('results:focus', function (params) {\r\n if (params.data._resultId) {\r\n self.$search.attr('aria-activedescendant', params.data._resultId);\r\n } else {\r\n self.$search.removeAttr('aria-activedescendant');\r\n }\r\n });\r\n };\r\n\r\n Search.prototype.handleSearch = function (evt) {\r\n if (!this._keyUpPrevented) {\r\n var input = this.$search.val();\r\n\r\n this.trigger('query', {\r\n term: input\r\n });\r\n }\r\n\r\n this._keyUpPrevented = false;\r\n };\r\n\r\n Search.prototype.showSearch = function (_, params) {\r\n return true;\r\n };\r\n\r\n return Search;\r\n});\r\n\r\nS2.define('select2/dropdown/hidePlaceholder',[\r\n\r\n], function () {\r\n function HidePlaceholder (decorated, $element, options, dataAdapter) {\r\n this.placeholder = this.normalizePlaceholder(options.get('placeholder'));\r\n\r\n decorated.call(this, $element, options, dataAdapter);\r\n }\r\n\r\n HidePlaceholder.prototype.append = function (decorated, data) {\r\n data.results = this.removePlaceholder(data.results);\r\n\r\n decorated.call(this, data);\r\n };\r\n\r\n HidePlaceholder.prototype.normalizePlaceholder = function (_, placeholder) {\r\n if (typeof placeholder === 'string') {\r\n placeholder = {\r\n id: '',\r\n text: placeholder\r\n };\r\n }\r\n\r\n return placeholder;\r\n };\r\n\r\n HidePlaceholder.prototype.removePlaceholder = function (_, data) {\r\n var modifiedData = data.slice(0);\r\n\r\n for (var d = data.length - 1; d >= 0; d--) {\r\n var item = data[d];\r\n\r\n if (this.placeholder.id === item.id) {\r\n modifiedData.splice(d, 1);\r\n }\r\n }\r\n\r\n return modifiedData;\r\n };\r\n\r\n return HidePlaceholder;\r\n});\r\n\r\nS2.define('select2/dropdown/infiniteScroll',[\r\n 'jquery'\r\n], function ($) {\r\n function InfiniteScroll (decorated, $element, options, dataAdapter) {\r\n this.lastParams = {};\r\n\r\n decorated.call(this, $element, options, dataAdapter);\r\n\r\n this.$loadingMore = this.createLoadingMore();\r\n this.loading = false;\r\n }\r\n\r\n InfiniteScroll.prototype.append = function (decorated, data) {\r\n this.$loadingMore.remove();\r\n this.loading = false;\r\n\r\n decorated.call(this, data);\r\n\r\n if (this.showLoadingMore(data)) {\r\n this.$results.append(this.$loadingMore);\r\n this.loadMoreIfNeeded();\r\n }\r\n };\r\n\r\n InfiniteScroll.prototype.bind = function (decorated, container, $container) {\r\n var self = this;\r\n\r\n decorated.call(this, container, $container);\r\n\r\n container.on('query', function (params) {\r\n self.lastParams = params;\r\n self.loading = true;\r\n });\r\n\r\n container.on('query:append', function (params) {\r\n self.lastParams = params;\r\n self.loading = true;\r\n });\r\n\r\n this.$results.on('scroll', this.loadMoreIfNeeded.bind(this));\r\n };\r\n\r\n InfiniteScroll.prototype.loadMoreIfNeeded = function () {\r\n var isLoadMoreVisible = $.contains(\r\n document.documentElement,\r\n this.$loadingMore[0]\r\n );\r\n\r\n if (this.loading || !isLoadMoreVisible) {\r\n return;\r\n }\r\n\r\n var currentOffset = this.$results.offset().top +\r\n this.$results.outerHeight(false);\r\n var loadingMoreOffset = this.$loadingMore.offset().top +\r\n this.$loadingMore.outerHeight(false);\r\n\r\n if (currentOffset + 50 >= loadingMoreOffset) {\r\n this.loadMore();\r\n }\r\n };\r\n\r\n InfiniteScroll.prototype.loadMore = function () {\r\n this.loading = true;\r\n\r\n var params = $.extend({}, {page: 1}, this.lastParams);\r\n\r\n params.page++;\r\n\r\n this.trigger('query:append', params);\r\n };\r\n\r\n InfiniteScroll.prototype.showLoadingMore = function (_, data) {\r\n return data.pagination && data.pagination.more;\r\n };\r\n\r\n InfiniteScroll.prototype.createLoadingMore = function () {\r\n var $option = $(\r\n '
      • '\r\n );\r\n\r\n var message = this.options.get('translations').get('loadingMore');\r\n\r\n $option.html(message(this.lastParams));\r\n\r\n return $option;\r\n };\r\n\r\n return InfiniteScroll;\r\n});\r\n\r\nS2.define('select2/dropdown/attachBody',[\r\n 'jquery',\r\n '../utils'\r\n], function ($, Utils) {\r\n function AttachBody (decorated, $element, options) {\r\n this.$dropdownParent = $(options.get('dropdownParent') || document.body);\r\n\r\n decorated.call(this, $element, options);\r\n }\r\n\r\n AttachBody.prototype.bind = function (decorated, container, $container) {\r\n var self = this;\r\n\r\n decorated.call(this, container, $container);\r\n\r\n container.on('open', function () {\r\n self._showDropdown();\r\n self._attachPositioningHandler(container);\r\n\r\n // Must bind after the results handlers to ensure correct sizing\r\n self._bindContainerResultHandlers(container);\r\n });\r\n\r\n container.on('close', function () {\r\n self._hideDropdown();\r\n self._detachPositioningHandler(container);\r\n });\r\n\r\n this.$dropdownContainer.on('mousedown', function (evt) {\r\n evt.stopPropagation();\r\n });\r\n };\r\n\r\n AttachBody.prototype.destroy = function (decorated) {\r\n decorated.call(this);\r\n\r\n this.$dropdownContainer.remove();\r\n };\r\n\r\n AttachBody.prototype.position = function (decorated, $dropdown, $container) {\r\n // Clone all of the container classes\r\n $dropdown.attr('class', $container.attr('class'));\r\n\r\n $dropdown.removeClass('select2');\r\n $dropdown.addClass('select2-container--open');\r\n\r\n $dropdown.css({\r\n position: 'absolute',\r\n top: -999999\r\n });\r\n\r\n this.$container = $container;\r\n };\r\n\r\n AttachBody.prototype.render = function (decorated) {\r\n var $container = $('');\r\n\r\n var $dropdown = decorated.call(this);\r\n $container.append($dropdown);\r\n\r\n this.$dropdownContainer = $container;\r\n\r\n return $container;\r\n };\r\n\r\n AttachBody.prototype._hideDropdown = function (decorated) {\r\n this.$dropdownContainer.detach();\r\n };\r\n\r\n AttachBody.prototype._bindContainerResultHandlers =\r\n function (decorated, container) {\r\n\r\n // These should only be bound once\r\n if (this._containerResultsHandlersBound) {\r\n return;\r\n }\r\n\r\n var self = this;\r\n\r\n container.on('results:all', function () {\r\n self._positionDropdown();\r\n self._resizeDropdown();\r\n });\r\n\r\n container.on('results:append', function () {\r\n self._positionDropdown();\r\n self._resizeDropdown();\r\n });\r\n\r\n container.on('results:message', function () {\r\n self._positionDropdown();\r\n self._resizeDropdown();\r\n });\r\n\r\n container.on('select', function () {\r\n self._positionDropdown();\r\n self._resizeDropdown();\r\n });\r\n\r\n container.on('unselect', function () {\r\n self._positionDropdown();\r\n self._resizeDropdown();\r\n });\r\n\r\n this._containerResultsHandlersBound = true;\r\n };\r\n\r\n AttachBody.prototype._attachPositioningHandler =\r\n function (decorated, container) {\r\n var self = this;\r\n\r\n var scrollEvent = 'scroll.select2.' + container.id;\r\n var resizeEvent = 'resize.select2.' + container.id;\r\n var orientationEvent = 'orientationchange.select2.' + container.id;\r\n\r\n var $watchers = this.$container.parents().filter(Utils.hasScroll);\r\n $watchers.each(function () {\r\n Utils.StoreData(this, 'select2-scroll-position', {\r\n x: $(this).scrollLeft(),\r\n y: $(this).scrollTop()\r\n });\r\n });\r\n\r\n $watchers.on(scrollEvent, function (ev) {\r\n var position = Utils.GetData(this, 'select2-scroll-position');\r\n $(this).scrollTop(position.y);\r\n });\r\n\r\n $(window).on(scrollEvent + ' ' + resizeEvent + ' ' + orientationEvent,\r\n function (e) {\r\n self._positionDropdown();\r\n self._resizeDropdown();\r\n });\r\n };\r\n\r\n AttachBody.prototype._detachPositioningHandler =\r\n function (decorated, container) {\r\n var scrollEvent = 'scroll.select2.' + container.id;\r\n var resizeEvent = 'resize.select2.' + container.id;\r\n var orientationEvent = 'orientationchange.select2.' + container.id;\r\n\r\n var $watchers = this.$container.parents().filter(Utils.hasScroll);\r\n $watchers.off(scrollEvent);\r\n\r\n $(window).off(scrollEvent + ' ' + resizeEvent + ' ' + orientationEvent);\r\n };\r\n\r\n AttachBody.prototype._positionDropdown = function () {\r\n var $window = $(window);\r\n\r\n var isCurrentlyAbove = this.$dropdown.hasClass('select2-dropdown--above');\r\n var isCurrentlyBelow = this.$dropdown.hasClass('select2-dropdown--below');\r\n\r\n var newDirection = null;\r\n\r\n var offset = this.$container.offset();\r\n\r\n offset.bottom = offset.top + this.$container.outerHeight(false);\r\n\r\n var container = {\r\n height: this.$container.outerHeight(false)\r\n };\r\n\r\n container.top = offset.top;\r\n container.bottom = offset.top + container.height;\r\n\r\n var dropdown = {\r\n height: this.$dropdown.outerHeight(false)\r\n };\r\n\r\n var viewport = {\r\n top: $window.scrollTop(),\r\n bottom: $window.scrollTop() + $window.height()\r\n };\r\n\r\n var enoughRoomAbove = viewport.top < (offset.top - dropdown.height);\r\n var enoughRoomBelow = viewport.bottom > (offset.bottom + dropdown.height);\r\n\r\n var css = {\r\n left: offset.left,\r\n top: container.bottom\r\n };\r\n\r\n // Determine what the parent element is to use for calculating the offset\r\n var $offsetParent = this.$dropdownParent;\r\n\r\n // For statically positioned elements, we need to get the element\r\n // that is determining the offset\r\n if ($offsetParent.css('position') === 'static') {\r\n $offsetParent = $offsetParent.offsetParent();\r\n }\r\n\r\n var parentOffset = {\r\n top: 0,\r\n left: 0\r\n };\r\n\r\n if (\r\n $.contains(document.body, $offsetParent[0]) ||\r\n $offsetParent[0].isConnected\r\n ) {\r\n parentOffset = $offsetParent.offset();\r\n }\r\n\r\n css.top -= parentOffset.top;\r\n css.left -= parentOffset.left;\r\n\r\n if (!isCurrentlyAbove && !isCurrentlyBelow) {\r\n newDirection = 'below';\r\n }\r\n\r\n if (!enoughRoomBelow && enoughRoomAbove && !isCurrentlyAbove) {\r\n newDirection = 'above';\r\n } else if (!enoughRoomAbove && enoughRoomBelow && isCurrentlyAbove) {\r\n newDirection = 'below';\r\n }\r\n\r\n if (newDirection == 'above' ||\r\n (isCurrentlyAbove && newDirection !== 'below')) {\r\n css.top = container.top - parentOffset.top - dropdown.height;\r\n }\r\n\r\n if (newDirection != null) {\r\n this.$dropdown\r\n .removeClass('select2-dropdown--below select2-dropdown--above')\r\n .addClass('select2-dropdown--' + newDirection);\r\n this.$container\r\n .removeClass('select2-container--below select2-container--above')\r\n .addClass('select2-container--' + newDirection);\r\n }\r\n\r\n this.$dropdownContainer.css(css);\r\n };\r\n\r\n AttachBody.prototype._resizeDropdown = function () {\r\n var css = {\r\n width: this.$container.outerWidth(false) + 'px'\r\n };\r\n\r\n if (this.options.get('dropdownAutoWidth')) {\r\n css.minWidth = css.width;\r\n css.position = 'relative';\r\n css.width = 'auto';\r\n }\r\n\r\n this.$dropdown.css(css);\r\n };\r\n\r\n AttachBody.prototype._showDropdown = function (decorated) {\r\n this.$dropdownContainer.appendTo(this.$dropdownParent);\r\n\r\n this._positionDropdown();\r\n this._resizeDropdown();\r\n };\r\n\r\n return AttachBody;\r\n});\r\n\r\nS2.define('select2/dropdown/minimumResultsForSearch',[\r\n\r\n], function () {\r\n function countResults (data) {\r\n var count = 0;\r\n\r\n for (var d = 0; d < data.length; d++) {\r\n var item = data[d];\r\n\r\n if (item.children) {\r\n count += countResults(item.children);\r\n } else {\r\n count++;\r\n }\r\n }\r\n\r\n return count;\r\n }\r\n\r\n function MinimumResultsForSearch (decorated, $element, options, dataAdapter) {\r\n this.minimumResultsForSearch = options.get('minimumResultsForSearch');\r\n\r\n if (this.minimumResultsForSearch < 0) {\r\n this.minimumResultsForSearch = Infinity;\r\n }\r\n\r\n decorated.call(this, $element, options, dataAdapter);\r\n }\r\n\r\n MinimumResultsForSearch.prototype.showSearch = function (decorated, params) {\r\n if (countResults(params.data.results) < this.minimumResultsForSearch) {\r\n return false;\r\n }\r\n\r\n return decorated.call(this, params);\r\n };\r\n\r\n return MinimumResultsForSearch;\r\n});\r\n\r\nS2.define('select2/dropdown/selectOnClose',[\r\n '../utils'\r\n], function (Utils) {\r\n function SelectOnClose () { }\r\n\r\n SelectOnClose.prototype.bind = function (decorated, container, $container) {\r\n var self = this;\r\n\r\n decorated.call(this, container, $container);\r\n\r\n container.on('close', function (params) {\r\n self._handleSelectOnClose(params);\r\n });\r\n };\r\n\r\n SelectOnClose.prototype._handleSelectOnClose = function (_, params) {\r\n if (params && params.originalSelect2Event != null) {\r\n var event = params.originalSelect2Event;\r\n\r\n // Don't select an item if the close event was triggered from a select or\r\n // unselect event\r\n if (event._type === 'select' || event._type === 'unselect') {\r\n return;\r\n }\r\n }\r\n\r\n var $highlightedResults = this.getHighlightedResults();\r\n\r\n // Only select highlighted results\r\n if ($highlightedResults.length < 1) {\r\n return;\r\n }\r\n\r\n var data = Utils.GetData($highlightedResults[0], 'data');\r\n\r\n // Don't re-select already selected resulte\r\n if (\r\n (data.element != null && data.element.selected) ||\r\n (data.element == null && data.selected)\r\n ) {\r\n return;\r\n }\r\n\r\n this.trigger('select', {\r\n data: data\r\n });\r\n };\r\n\r\n return SelectOnClose;\r\n});\r\n\r\nS2.define('select2/dropdown/closeOnSelect',[\r\n\r\n], function () {\r\n function CloseOnSelect () { }\r\n\r\n CloseOnSelect.prototype.bind = function (decorated, container, $container) {\r\n var self = this;\r\n\r\n decorated.call(this, container, $container);\r\n\r\n container.on('select', function (evt) {\r\n self._selectTriggered(evt);\r\n });\r\n\r\n container.on('unselect', function (evt) {\r\n self._selectTriggered(evt);\r\n });\r\n };\r\n\r\n CloseOnSelect.prototype._selectTriggered = function (_, evt) {\r\n var originalEvent = evt.originalEvent;\r\n\r\n // Don't close if the control key is being held\r\n if (originalEvent && (originalEvent.ctrlKey || originalEvent.metaKey)) {\r\n return;\r\n }\r\n\r\n this.trigger('close', {\r\n originalEvent: originalEvent,\r\n originalSelect2Event: evt\r\n });\r\n };\r\n\r\n return CloseOnSelect;\r\n});\r\n\r\nS2.define('select2/i18n/en',[],function () {\r\n // English\r\n return {\r\n errorLoading: function () {\r\n return 'The results could not be loaded.';\r\n },\r\n inputTooLong: function (args) {\r\n var overChars = args.input.length - args.maximum;\r\n\r\n var message = 'Please delete ' + overChars + ' character';\r\n\r\n if (overChars != 1) {\r\n message += 's';\r\n }\r\n\r\n return message;\r\n },\r\n inputTooShort: function (args) {\r\n var remainingChars = args.minimum - args.input.length;\r\n\r\n var message = 'Please enter ' + remainingChars + ' or more characters';\r\n\r\n return message;\r\n },\r\n loadingMore: function () {\r\n return 'Loading more results…';\r\n },\r\n maximumSelected: function (args) {\r\n var message = 'You can only select ' + args.maximum + ' item';\r\n\r\n if (args.maximum != 1) {\r\n message += 's';\r\n }\r\n\r\n return message;\r\n },\r\n noResults: function () {\r\n return 'No results found';\r\n },\r\n searching: function () {\r\n return 'Searching…';\r\n },\r\n removeAllItems: function () {\r\n return 'Remove all items';\r\n }\r\n };\r\n});\r\n\r\nS2.define('select2/defaults',[\r\n 'jquery',\r\n 'require',\r\n\r\n './results',\r\n\r\n './selection/single',\r\n './selection/multiple',\r\n './selection/placeholder',\r\n './selection/allowClear',\r\n './selection/search',\r\n './selection/eventRelay',\r\n\r\n './utils',\r\n './translation',\r\n './diacritics',\r\n\r\n './data/select',\r\n './data/array',\r\n './data/ajax',\r\n './data/tags',\r\n './data/tokenizer',\r\n './data/minimumInputLength',\r\n './data/maximumInputLength',\r\n './data/maximumSelectionLength',\r\n\r\n './dropdown',\r\n './dropdown/search',\r\n './dropdown/hidePlaceholder',\r\n './dropdown/infiniteScroll',\r\n './dropdown/attachBody',\r\n './dropdown/minimumResultsForSearch',\r\n './dropdown/selectOnClose',\r\n './dropdown/closeOnSelect',\r\n\r\n './i18n/en'\r\n], function ($, require,\r\n\r\n ResultsList,\r\n\r\n SingleSelection, MultipleSelection, Placeholder, AllowClear,\r\n SelectionSearch, EventRelay,\r\n\r\n Utils, Translation, DIACRITICS,\r\n\r\n SelectData, ArrayData, AjaxData, Tags, Tokenizer,\r\n MinimumInputLength, MaximumInputLength, MaximumSelectionLength,\r\n\r\n Dropdown, DropdownSearch, HidePlaceholder, InfiniteScroll,\r\n AttachBody, MinimumResultsForSearch, SelectOnClose, CloseOnSelect,\r\n\r\n EnglishTranslation) {\r\n function Defaults () {\r\n this.reset();\r\n }\r\n\r\n Defaults.prototype.apply = function (options) {\r\n options = $.extend(true, {}, this.defaults, options);\r\n\r\n if (options.dataAdapter == null) {\r\n if (options.ajax != null) {\r\n options.dataAdapter = AjaxData;\r\n } else if (options.data != null) {\r\n options.dataAdapter = ArrayData;\r\n } else {\r\n options.dataAdapter = SelectData;\r\n }\r\n\r\n if (options.minimumInputLength > 0) {\r\n options.dataAdapter = Utils.Decorate(\r\n options.dataAdapter,\r\n MinimumInputLength\r\n );\r\n }\r\n\r\n if (options.maximumInputLength > 0) {\r\n options.dataAdapter = Utils.Decorate(\r\n options.dataAdapter,\r\n MaximumInputLength\r\n );\r\n }\r\n\r\n if (options.maximumSelectionLength > 0) {\r\n options.dataAdapter = Utils.Decorate(\r\n options.dataAdapter,\r\n MaximumSelectionLength\r\n );\r\n }\r\n\r\n if (options.tags) {\r\n options.dataAdapter = Utils.Decorate(options.dataAdapter, Tags);\r\n }\r\n\r\n if (options.tokenSeparators != null || options.tokenizer != null) {\r\n options.dataAdapter = Utils.Decorate(\r\n options.dataAdapter,\r\n Tokenizer\r\n );\r\n }\r\n\r\n if (options.query != null) {\r\n var Query = require(options.amdBase + 'compat/query');\r\n\r\n options.dataAdapter = Utils.Decorate(\r\n options.dataAdapter,\r\n Query\r\n );\r\n }\r\n\r\n if (options.initSelection != null) {\r\n var InitSelection = require(options.amdBase + 'compat/initSelection');\r\n\r\n options.dataAdapter = Utils.Decorate(\r\n options.dataAdapter,\r\n InitSelection\r\n );\r\n }\r\n }\r\n\r\n if (options.resultsAdapter == null) {\r\n options.resultsAdapter = ResultsList;\r\n\r\n if (options.ajax != null) {\r\n options.resultsAdapter = Utils.Decorate(\r\n options.resultsAdapter,\r\n InfiniteScroll\r\n );\r\n }\r\n\r\n if (options.placeholder != null) {\r\n options.resultsAdapter = Utils.Decorate(\r\n options.resultsAdapter,\r\n HidePlaceholder\r\n );\r\n }\r\n\r\n if (options.selectOnClose) {\r\n options.resultsAdapter = Utils.Decorate(\r\n options.resultsAdapter,\r\n SelectOnClose\r\n );\r\n }\r\n }\r\n\r\n if (options.dropdownAdapter == null) {\r\n if (options.multiple) {\r\n options.dropdownAdapter = Dropdown;\r\n } else {\r\n var SearchableDropdown = Utils.Decorate(Dropdown, DropdownSearch);\r\n\r\n options.dropdownAdapter = SearchableDropdown;\r\n }\r\n\r\n if (options.minimumResultsForSearch !== 0) {\r\n options.dropdownAdapter = Utils.Decorate(\r\n options.dropdownAdapter,\r\n MinimumResultsForSearch\r\n );\r\n }\r\n\r\n if (options.closeOnSelect) {\r\n options.dropdownAdapter = Utils.Decorate(\r\n options.dropdownAdapter,\r\n CloseOnSelect\r\n );\r\n }\r\n\r\n if (\r\n options.dropdownCssClass != null ||\r\n options.dropdownCss != null ||\r\n options.adaptDropdownCssClass != null\r\n ) {\r\n var DropdownCSS = require(options.amdBase + 'compat/dropdownCss');\r\n\r\n options.dropdownAdapter = Utils.Decorate(\r\n options.dropdownAdapter,\r\n DropdownCSS\r\n );\r\n }\r\n\r\n options.dropdownAdapter = Utils.Decorate(\r\n options.dropdownAdapter,\r\n AttachBody\r\n );\r\n }\r\n\r\n if (options.selectionAdapter == null) {\r\n if (options.multiple) {\r\n options.selectionAdapter = MultipleSelection;\r\n } else {\r\n options.selectionAdapter = SingleSelection;\r\n }\r\n\r\n // Add the placeholder mixin if a placeholder was specified\r\n if (options.placeholder != null) {\r\n options.selectionAdapter = Utils.Decorate(\r\n options.selectionAdapter,\r\n Placeholder\r\n );\r\n }\r\n\r\n if (options.allowClear) {\r\n options.selectionAdapter = Utils.Decorate(\r\n options.selectionAdapter,\r\n AllowClear\r\n );\r\n }\r\n\r\n if (options.multiple) {\r\n options.selectionAdapter = Utils.Decorate(\r\n options.selectionAdapter,\r\n SelectionSearch\r\n );\r\n }\r\n\r\n if (\r\n options.containerCssClass != null ||\r\n options.containerCss != null ||\r\n options.adaptContainerCssClass != null\r\n ) {\r\n var ContainerCSS = require(options.amdBase + 'compat/containerCss');\r\n\r\n options.selectionAdapter = Utils.Decorate(\r\n options.selectionAdapter,\r\n ContainerCSS\r\n );\r\n }\r\n\r\n options.selectionAdapter = Utils.Decorate(\r\n options.selectionAdapter,\r\n EventRelay\r\n );\r\n }\r\n\r\n // If the defaults were not previously applied from an element, it is\r\n // possible for the language option to have not been resolved\r\n options.language = this._resolveLanguage(options.language);\r\n\r\n // Always fall back to English since it will always be complete\r\n options.language.push('en');\r\n\r\n var uniqueLanguages = [];\r\n\r\n for (var l = 0; l < options.language.length; l++) {\r\n var language = options.language[l];\r\n\r\n if (uniqueLanguages.indexOf(language) === -1) {\r\n uniqueLanguages.push(language);\r\n }\r\n }\r\n\r\n options.language = uniqueLanguages;\r\n\r\n options.translations = this._processTranslations(\r\n options.language,\r\n options.debug\r\n );\r\n\r\n return options;\r\n };\r\n\r\n Defaults.prototype.reset = function () {\r\n function stripDiacritics (text) {\r\n // Used 'uni range + named function' from http://jsperf.com/diacritics/18\r\n function match(a) {\r\n return DIACRITICS[a] || a;\r\n }\r\n\r\n return text.replace(/[^\\u0000-\\u007E]/g, match);\r\n }\r\n\r\n function matcher (params, data) {\r\n // Always return the object if there is nothing to compare\r\n if ($.trim(params.term) === '') {\r\n return data;\r\n }\r\n\r\n // Do a recursive check for options with children\r\n if (data.children && data.children.length > 0) {\r\n // Clone the data object if there are children\r\n // This is required as we modify the object to remove any non-matches\r\n var match = $.extend(true, {}, data);\r\n\r\n // Check each child of the option\r\n for (var c = data.children.length - 1; c >= 0; c--) {\r\n var child = data.children[c];\r\n\r\n var matches = matcher(params, child);\r\n\r\n // If there wasn't a match, remove the object in the array\r\n if (matches == null) {\r\n match.children.splice(c, 1);\r\n }\r\n }\r\n\r\n // If any children matched, return the new object\r\n if (match.children.length > 0) {\r\n return match;\r\n }\r\n\r\n // If there were no matching children, check just the plain object\r\n return matcher(params, match);\r\n }\r\n\r\n var original = stripDiacritics(data.text).toUpperCase();\r\n var term = stripDiacritics(params.term).toUpperCase();\r\n\r\n // Check if the text contains the term\r\n if (original.indexOf(term) > -1) {\r\n return data;\r\n }\r\n\r\n // If it doesn't contain the term, don't return anything\r\n return null;\r\n }\r\n\r\n this.defaults = {\r\n amdBase: './',\r\n amdLanguageBase: './i18n/',\r\n closeOnSelect: true,\r\n debug: false,\r\n dropdownAutoWidth: false,\r\n escapeMarkup: Utils.escapeMarkup,\r\n language: {},\r\n matcher: matcher,\r\n minimumInputLength: 0,\r\n maximumInputLength: 0,\r\n maximumSelectionLength: 0,\r\n minimumResultsForSearch: 0,\r\n selectOnClose: false,\r\n scrollAfterSelect: false,\r\n sorter: function (data) {\r\n return data;\r\n },\r\n templateResult: function (result) {\r\n return result.text;\r\n },\r\n templateSelection: function (selection) {\r\n return selection.text;\r\n },\r\n theme: 'default',\r\n width: 'resolve'\r\n };\r\n };\r\n\r\n Defaults.prototype.applyFromElement = function (options, $element) {\r\n var optionLanguage = options.language;\r\n var defaultLanguage = this.defaults.language;\r\n var elementLanguage = $element.prop('lang');\r\n var parentLanguage = $element.closest('[lang]').prop('lang');\r\n\r\n var languages = Array.prototype.concat.call(\r\n this._resolveLanguage(elementLanguage),\r\n this._resolveLanguage(optionLanguage),\r\n this._resolveLanguage(defaultLanguage),\r\n this._resolveLanguage(parentLanguage)\r\n );\r\n\r\n options.language = languages;\r\n\r\n return options;\r\n };\r\n\r\n Defaults.prototype._resolveLanguage = function (language) {\r\n if (!language) {\r\n return [];\r\n }\r\n\r\n if ($.isEmptyObject(language)) {\r\n return [];\r\n }\r\n\r\n if ($.isPlainObject(language)) {\r\n return [language];\r\n }\r\n\r\n var languages;\r\n\r\n if (!$.isArray(language)) {\r\n languages = [language];\r\n } else {\r\n languages = language;\r\n }\r\n\r\n var resolvedLanguages = [];\r\n\r\n for (var l = 0; l < languages.length; l++) {\r\n resolvedLanguages.push(languages[l]);\r\n\r\n if (typeof languages[l] === 'string' && languages[l].indexOf('-') > 0) {\r\n // Extract the region information if it is included\r\n var languageParts = languages[l].split('-');\r\n var baseLanguage = languageParts[0];\r\n\r\n resolvedLanguages.push(baseLanguage);\r\n }\r\n }\r\n\r\n return resolvedLanguages;\r\n };\r\n\r\n Defaults.prototype._processTranslations = function (languages, debug) {\r\n var translations = new Translation();\r\n\r\n for (var l = 0; l < languages.length; l++) {\r\n var languageData = new Translation();\r\n\r\n var language = languages[l];\r\n\r\n if (typeof language === 'string') {\r\n try {\r\n // Try to load it with the original name\r\n languageData = Translation.loadPath(language);\r\n } catch (e) {\r\n try {\r\n // If we couldn't load it, check if it wasn't the full path\r\n language = this.defaults.amdLanguageBase + language;\r\n languageData = Translation.loadPath(language);\r\n } catch (ex) {\r\n // The translation could not be loaded at all. Sometimes this is\r\n // because of a configuration problem, other times this can be\r\n // because of how Select2 helps load all possible translation files\r\n if (debug && window.console && console.warn) {\r\n console.warn(\r\n 'Select2: The language file for \"' + language + '\" could ' +\r\n 'not be automatically loaded. A fallback will be used instead.'\r\n );\r\n }\r\n }\r\n }\r\n } else if ($.isPlainObject(language)) {\r\n languageData = new Translation(language);\r\n } else {\r\n languageData = language;\r\n }\r\n\r\n translations.extend(languageData);\r\n }\r\n\r\n return translations;\r\n };\r\n\r\n Defaults.prototype.set = function (key, value) {\r\n var camelKey = $.camelCase(key);\r\n\r\n var data = {};\r\n data[camelKey] = value;\r\n\r\n var convertedData = Utils._convertData(data);\r\n\r\n $.extend(true, this.defaults, convertedData);\r\n };\r\n\r\n var defaults = new Defaults();\r\n\r\n return defaults;\r\n});\r\n\r\nS2.define('select2/options',[\r\n 'require',\r\n 'jquery',\r\n './defaults',\r\n './utils'\r\n], function (require, $, Defaults, Utils) {\r\n function Options (options, $element) {\r\n this.options = options;\r\n\r\n if ($element != null) {\r\n this.fromElement($element);\r\n }\r\n\r\n if ($element != null) {\r\n this.options = Defaults.applyFromElement(this.options, $element);\r\n }\r\n\r\n this.options = Defaults.apply(this.options);\r\n\r\n if ($element && $element.is('input')) {\r\n var InputCompat = require(this.get('amdBase') + 'compat/inputData');\r\n\r\n this.options.dataAdapter = Utils.Decorate(\r\n this.options.dataAdapter,\r\n InputCompat\r\n );\r\n }\r\n }\r\n\r\n Options.prototype.fromElement = function ($e) {\r\n var excludedData = ['select2'];\r\n\r\n if (this.options.multiple == null) {\r\n this.options.multiple = $e.prop('multiple');\r\n }\r\n\r\n if (this.options.disabled == null) {\r\n this.options.disabled = $e.prop('disabled');\r\n }\r\n\r\n if (this.options.dir == null) {\r\n if ($e.prop('dir')) {\r\n this.options.dir = $e.prop('dir');\r\n } else if ($e.closest('[dir]').prop('dir')) {\r\n this.options.dir = $e.closest('[dir]').prop('dir');\r\n } else {\r\n this.options.dir = 'ltr';\r\n }\r\n }\r\n\r\n $e.prop('disabled', this.options.disabled);\r\n $e.prop('multiple', this.options.multiple);\r\n\r\n if (Utils.GetData($e[0], 'select2Tags')) {\r\n if (this.options.debug && window.console && console.warn) {\r\n console.warn(\r\n 'Select2: The `data-select2-tags` attribute has been changed to ' +\r\n 'use the `data-data` and `data-tags=\"true\"` attributes and will be ' +\r\n 'removed in future versions of Select2.'\r\n );\r\n }\r\n\r\n Utils.StoreData($e[0], 'data', Utils.GetData($e[0], 'select2Tags'));\r\n Utils.StoreData($e[0], 'tags', true);\r\n }\r\n\r\n if (Utils.GetData($e[0], 'ajaxUrl')) {\r\n if (this.options.debug && window.console && console.warn) {\r\n console.warn(\r\n 'Select2: The `data-ajax-url` attribute has been changed to ' +\r\n '`data-ajax--url` and support for the old attribute will be removed' +\r\n ' in future versions of Select2.'\r\n );\r\n }\r\n\r\n $e.attr('ajax--url', Utils.GetData($e[0], 'ajaxUrl'));\r\n Utils.StoreData($e[0], 'ajax-Url', Utils.GetData($e[0], 'ajaxUrl'));\r\n }\r\n\r\n var dataset = {};\r\n\r\n function upperCaseLetter(_, letter) {\r\n return letter.toUpperCase();\r\n }\r\n\r\n // Pre-load all of the attributes which are prefixed with `data-`\r\n for (var attr = 0; attr < $e[0].attributes.length; attr++) {\r\n var attributeName = $e[0].attributes[attr].name;\r\n var prefix = 'data-';\r\n\r\n if (attributeName.substr(0, prefix.length) == prefix) {\r\n // Get the contents of the attribute after `data-`\r\n var dataName = attributeName.substring(prefix.length);\r\n\r\n // Get the data contents from the consistent source\r\n // This is more than likely the jQuery data helper\r\n var dataValue = Utils.GetData($e[0], dataName);\r\n\r\n // camelCase the attribute name to match the spec\r\n var camelDataName = dataName.replace(/-([a-z])/g, upperCaseLetter);\r\n\r\n // Store the data attribute contents into the dataset since\r\n dataset[camelDataName] = dataValue;\r\n }\r\n }\r\n\r\n // Prefer the element's `dataset` attribute if it exists\r\n // jQuery 1.x does not correctly handle data attributes with multiple dashes\r\n if ($.fn.jquery && $.fn.jquery.substr(0, 2) == '1.' && $e[0].dataset) {\r\n dataset = $.extend(true, {}, $e[0].dataset, dataset);\r\n }\r\n\r\n // Prefer our internal data cache if it exists\r\n var data = $.extend(true, {}, Utils.GetData($e[0]), dataset);\r\n\r\n data = Utils._convertData(data);\r\n\r\n for (var key in data) {\r\n if ($.inArray(key, excludedData) > -1) {\r\n continue;\r\n }\r\n\r\n if ($.isPlainObject(this.options[key])) {\r\n $.extend(this.options[key], data[key]);\r\n } else {\r\n this.options[key] = data[key];\r\n }\r\n }\r\n\r\n return this;\r\n };\r\n\r\n Options.prototype.get = function (key) {\r\n return this.options[key];\r\n };\r\n\r\n Options.prototype.set = function (key, val) {\r\n this.options[key] = val;\r\n };\r\n\r\n return Options;\r\n});\r\n\r\nS2.define('select2/core',[\r\n 'jquery',\r\n './options',\r\n './utils',\r\n './keys'\r\n], function ($, Options, Utils, KEYS) {\r\n var Select2 = function ($element, options) {\r\n if (Utils.GetData($element[0], 'select2') != null) {\r\n Utils.GetData($element[0], 'select2').destroy();\r\n }\r\n\r\n this.$element = $element;\r\n\r\n this.id = this._generateId($element);\r\n\r\n options = options || {};\r\n\r\n this.options = new Options(options, $element);\r\n\r\n Select2.__super__.constructor.call(this);\r\n\r\n // Set up the tabindex\r\n\r\n var tabindex = $element.attr('tabindex') || 0;\r\n Utils.StoreData($element[0], 'old-tabindex', tabindex);\r\n $element.attr('tabindex', '-1');\r\n\r\n // Set up containers and adapters\r\n\r\n var DataAdapter = this.options.get('dataAdapter');\r\n this.dataAdapter = new DataAdapter($element, this.options);\r\n\r\n var $container = this.render();\r\n\r\n this._placeContainer($container);\r\n\r\n var SelectionAdapter = this.options.get('selectionAdapter');\r\n this.selection = new SelectionAdapter($element, this.options);\r\n this.$selection = this.selection.render();\r\n\r\n this.selection.position(this.$selection, $container);\r\n\r\n var DropdownAdapter = this.options.get('dropdownAdapter');\r\n this.dropdown = new DropdownAdapter($element, this.options);\r\n this.$dropdown = this.dropdown.render();\r\n\r\n this.dropdown.position(this.$dropdown, $container);\r\n\r\n var ResultsAdapter = this.options.get('resultsAdapter');\r\n this.results = new ResultsAdapter($element, this.options, this.dataAdapter);\r\n this.$results = this.results.render();\r\n\r\n this.results.position(this.$results, this.$dropdown);\r\n\r\n // Bind events\r\n\r\n var self = this;\r\n\r\n // Bind the container to all of the adapters\r\n this._bindAdapters();\r\n\r\n // Register any DOM event handlers\r\n this._registerDomEvents();\r\n\r\n // Register any internal event handlers\r\n this._registerDataEvents();\r\n this._registerSelectionEvents();\r\n this._registerDropdownEvents();\r\n this._registerResultsEvents();\r\n this._registerEvents();\r\n\r\n // Set the initial state\r\n this.dataAdapter.current(function (initialData) {\r\n self.trigger('selection:update', {\r\n data: initialData\r\n });\r\n });\r\n\r\n // Hide the original select\r\n $element.addClass('select2-hidden-accessible');\r\n $element.attr('aria-hidden', 'true');\r\n\r\n // Synchronize any monitored attributes\r\n this._syncAttributes();\r\n\r\n Utils.StoreData($element[0], 'select2', this);\r\n\r\n // Ensure backwards compatibility with $element.data('select2').\r\n $element.data('select2', this);\r\n };\r\n\r\n Utils.Extend(Select2, Utils.Observable);\r\n\r\n Select2.prototype._generateId = function ($element) {\r\n var id = '';\r\n\r\n if ($element.attr('id') != null) {\r\n id = $element.attr('id');\r\n } else if ($element.attr('name') != null) {\r\n id = $element.attr('name') + '-' + Utils.generateChars(2);\r\n } else {\r\n id = Utils.generateChars(4);\r\n }\r\n\r\n id = id.replace(/(:|\\.|\\[|\\]|,)/g, '');\r\n id = 'select2-' + id;\r\n\r\n return id;\r\n };\r\n\r\n Select2.prototype._placeContainer = function ($container) {\r\n $container.insertAfter(this.$element);\r\n\r\n var width = this._resolveWidth(this.$element, this.options.get('width'));\r\n\r\n if (width != null) {\r\n $container.css('width', width);\r\n }\r\n };\r\n\r\n Select2.prototype._resolveWidth = function ($element, method) {\r\n var WIDTH = /^width:(([-+]?([0-9]*\\.)?[0-9]+)(px|em|ex|%|in|cm|mm|pt|pc))/i;\r\n\r\n if (method == 'resolve') {\r\n var styleWidth = this._resolveWidth($element, 'style');\r\n\r\n if (styleWidth != null) {\r\n return styleWidth;\r\n }\r\n\r\n return this._resolveWidth($element, 'element');\r\n }\r\n\r\n if (method == 'element') {\r\n var elementWidth = $element.outerWidth(false);\r\n\r\n if (elementWidth <= 0) {\r\n return 'auto';\r\n }\r\n\r\n return elementWidth + 'px';\r\n }\r\n\r\n if (method == 'style') {\r\n var style = $element.attr('style');\r\n\r\n if (typeof(style) !== 'string') {\r\n return null;\r\n }\r\n\r\n var attrs = style.split(';');\r\n\r\n for (var i = 0, l = attrs.length; i < l; i = i + 1) {\r\n var attr = attrs[i].replace(/\\s/g, '');\r\n var matches = attr.match(WIDTH);\r\n\r\n if (matches !== null && matches.length >= 1) {\r\n return matches[1];\r\n }\r\n }\r\n\r\n return null;\r\n }\r\n\r\n if (method == 'computedstyle') {\r\n var computedStyle = window.getComputedStyle($element[0]);\r\n\r\n return computedStyle.width;\r\n }\r\n\r\n return method;\r\n };\r\n\r\n Select2.prototype._bindAdapters = function () {\r\n this.dataAdapter.bind(this, this.$container);\r\n this.selection.bind(this, this.$container);\r\n\r\n this.dropdown.bind(this, this.$container);\r\n this.results.bind(this, this.$container);\r\n };\r\n\r\n Select2.prototype._registerDomEvents = function () {\r\n var self = this;\r\n\r\n this.$element.on('change.select2', function () {\r\n self.dataAdapter.current(function (data) {\r\n self.trigger('selection:update', {\r\n data: data\r\n });\r\n });\r\n });\r\n\r\n this.$element.on('focus.select2', function (evt) {\r\n self.trigger('focus', evt);\r\n });\r\n\r\n this._syncA = Utils.bind(this._syncAttributes, this);\r\n this._syncS = Utils.bind(this._syncSubtree, this);\r\n\r\n if (this.$element[0].attachEvent) {\r\n this.$element[0].attachEvent('onpropertychange', this._syncA);\r\n }\r\n\r\n var observer = window.MutationObserver ||\r\n window.WebKitMutationObserver ||\r\n window.MozMutationObserver\r\n ;\r\n\r\n if (observer != null) {\r\n this._observer = new observer(function (mutations) {\r\n self._syncA();\r\n self._syncS(null, mutations);\r\n });\r\n this._observer.observe(this.$element[0], {\r\n attributes: true,\r\n childList: true,\r\n subtree: false\r\n });\r\n } else if (this.$element[0].addEventListener) {\r\n this.$element[0].addEventListener(\r\n 'DOMAttrModified',\r\n self._syncA,\r\n false\r\n );\r\n this.$element[0].addEventListener(\r\n 'DOMNodeInserted',\r\n self._syncS,\r\n false\r\n );\r\n this.$element[0].addEventListener(\r\n 'DOMNodeRemoved',\r\n self._syncS,\r\n false\r\n );\r\n }\r\n };\r\n\r\n Select2.prototype._registerDataEvents = function () {\r\n var self = this;\r\n\r\n this.dataAdapter.on('*', function (name, params) {\r\n self.trigger(name, params);\r\n });\r\n };\r\n\r\n Select2.prototype._registerSelectionEvents = function () {\r\n var self = this;\r\n var nonRelayEvents = ['toggle', 'focus'];\r\n\r\n this.selection.on('toggle', function () {\r\n self.toggleDropdown();\r\n });\r\n\r\n this.selection.on('focus', function (params) {\r\n self.focus(params);\r\n });\r\n\r\n this.selection.on('*', function (name, params) {\r\n if ($.inArray(name, nonRelayEvents) !== -1) {\r\n return;\r\n }\r\n\r\n self.trigger(name, params);\r\n });\r\n };\r\n\r\n Select2.prototype._registerDropdownEvents = function () {\r\n var self = this;\r\n\r\n this.dropdown.on('*', function (name, params) {\r\n self.trigger(name, params);\r\n });\r\n };\r\n\r\n Select2.prototype._registerResultsEvents = function () {\r\n var self = this;\r\n\r\n this.results.on('*', function (name, params) {\r\n self.trigger(name, params);\r\n });\r\n };\r\n\r\n Select2.prototype._registerEvents = function () {\r\n var self = this;\r\n\r\n this.on('open', function () {\r\n self.$container.addClass('select2-container--open');\r\n });\r\n\r\n this.on('close', function () {\r\n self.$container.removeClass('select2-container--open');\r\n });\r\n\r\n this.on('enable', function () {\r\n self.$container.removeClass('select2-container--disabled');\r\n });\r\n\r\n this.on('disable', function () {\r\n self.$container.addClass('select2-container--disabled');\r\n });\r\n\r\n this.on('blur', function () {\r\n self.$container.removeClass('select2-container--focus');\r\n });\r\n\r\n this.on('query', function (params) {\r\n if (!self.isOpen()) {\r\n self.trigger('open', {});\r\n }\r\n\r\n this.dataAdapter.query(params, function (data) {\r\n self.trigger('results:all', {\r\n data: data,\r\n query: params\r\n });\r\n });\r\n });\r\n\r\n this.on('query:append', function (params) {\r\n this.dataAdapter.query(params, function (data) {\r\n self.trigger('results:append', {\r\n data: data,\r\n query: params\r\n });\r\n });\r\n });\r\n\r\n this.on('keypress', function (evt) {\r\n var key = evt.which;\r\n\r\n if (self.isOpen()) {\r\n if (key === KEYS.ESC || key === KEYS.TAB ||\r\n (key === KEYS.UP && evt.altKey)) {\r\n self.close(evt);\r\n\r\n evt.preventDefault();\r\n } else if (key === KEYS.ENTER) {\r\n self.trigger('results:select', {});\r\n\r\n evt.preventDefault();\r\n } else if ((key === KEYS.SPACE && evt.ctrlKey)) {\r\n self.trigger('results:toggle', {});\r\n\r\n evt.preventDefault();\r\n } else if (key === KEYS.UP) {\r\n self.trigger('results:previous', {});\r\n\r\n evt.preventDefault();\r\n } else if (key === KEYS.DOWN) {\r\n self.trigger('results:next', {});\r\n\r\n evt.preventDefault();\r\n }\r\n } else {\r\n if (key === KEYS.ENTER || key === KEYS.SPACE ||\r\n (key === KEYS.DOWN && evt.altKey)) {\r\n self.open();\r\n\r\n evt.preventDefault();\r\n }\r\n }\r\n });\r\n };\r\n\r\n Select2.prototype._syncAttributes = function () {\r\n this.options.set('disabled', this.$element.prop('disabled'));\r\n\r\n if (this.isDisabled()) {\r\n if (this.isOpen()) {\r\n this.close();\r\n }\r\n\r\n this.trigger('disable', {});\r\n } else {\r\n this.trigger('enable', {});\r\n }\r\n };\r\n\r\n Select2.prototype._isChangeMutation = function (evt, mutations) {\r\n var changed = false;\r\n var self = this;\r\n\r\n // Ignore any mutation events raised for elements that aren't options or\r\n // optgroups. This handles the case when the select element is destroyed\r\n if (\r\n evt && evt.target && (\r\n evt.target.nodeName !== 'OPTION' && evt.target.nodeName !== 'OPTGROUP'\r\n )\r\n ) {\r\n return;\r\n }\r\n\r\n if (!mutations) {\r\n // If mutation events aren't supported, then we can only assume that the\r\n // change affected the selections\r\n changed = true;\r\n } else if (mutations.addedNodes && mutations.addedNodes.length > 0) {\r\n for (var n = 0; n < mutations.addedNodes.length; n++) {\r\n var node = mutations.addedNodes[n];\r\n\r\n if (node.selected) {\r\n changed = true;\r\n }\r\n }\r\n } else if (mutations.removedNodes && mutations.removedNodes.length > 0) {\r\n changed = true;\r\n } else if ($.isArray(mutations)) {\r\n $.each(mutations, function(evt, mutation) {\r\n if (self._isChangeMutation(evt, mutation)) {\r\n // We've found a change mutation.\r\n // Let's escape from the loop and continue\r\n changed = true;\r\n return false;\r\n }\r\n });\r\n }\r\n return changed;\r\n };\r\n\r\n Select2.prototype._syncSubtree = function (evt, mutations) {\r\n var changed = this._isChangeMutation(evt, mutations);\r\n var self = this;\r\n\r\n // Only re-pull the data if we think there is a change\r\n if (changed) {\r\n this.dataAdapter.current(function (currentData) {\r\n self.trigger('selection:update', {\r\n data: currentData\r\n });\r\n });\r\n }\r\n };\r\n\r\n /**\r\n * Override the trigger method to automatically trigger pre-events when\r\n * there are events that can be prevented.\r\n */\r\n Select2.prototype.trigger = function (name, args) {\r\n var actualTrigger = Select2.__super__.trigger;\r\n var preTriggerMap = {\r\n 'open': 'opening',\r\n 'close': 'closing',\r\n 'select': 'selecting',\r\n 'unselect': 'unselecting',\r\n 'clear': 'clearing'\r\n };\r\n\r\n if (args === undefined) {\r\n args = {};\r\n }\r\n\r\n if (name in preTriggerMap) {\r\n var preTriggerName = preTriggerMap[name];\r\n var preTriggerArgs = {\r\n prevented: false,\r\n name: name,\r\n args: args\r\n };\r\n\r\n actualTrigger.call(this, preTriggerName, preTriggerArgs);\r\n\r\n if (preTriggerArgs.prevented) {\r\n args.prevented = true;\r\n\r\n return;\r\n }\r\n }\r\n\r\n actualTrigger.call(this, name, args);\r\n };\r\n\r\n Select2.prototype.toggleDropdown = function () {\r\n if (this.isDisabled()) {\r\n return;\r\n }\r\n\r\n if (this.isOpen()) {\r\n this.close();\r\n } else {\r\n this.open();\r\n }\r\n };\r\n\r\n Select2.prototype.open = function () {\r\n if (this.isOpen()) {\r\n return;\r\n }\r\n\r\n if (this.isDisabled()) {\r\n return;\r\n }\r\n\r\n this.trigger('query', {});\r\n };\r\n\r\n Select2.prototype.close = function (evt) {\r\n if (!this.isOpen()) {\r\n return;\r\n }\r\n\r\n this.trigger('close', { originalEvent : evt });\r\n };\r\n\r\n /**\r\n * Helper method to abstract the \"enabled\" (not \"disabled\") state of this\r\n * object.\r\n *\r\n * @return {true} if the instance is not disabled.\r\n * @return {false} if the instance is disabled.\r\n */\r\n Select2.prototype.isEnabled = function () {\r\n return !this.isDisabled();\r\n };\r\n\r\n /**\r\n * Helper method to abstract the \"disabled\" state of this object.\r\n *\r\n * @return {true} if the disabled option is true.\r\n * @return {false} if the disabled option is false.\r\n */\r\n Select2.prototype.isDisabled = function () {\r\n return this.options.get('disabled');\r\n };\r\n\r\n Select2.prototype.isOpen = function () {\r\n return this.$container.hasClass('select2-container--open');\r\n };\r\n\r\n Select2.prototype.hasFocus = function () {\r\n return this.$container.hasClass('select2-container--focus');\r\n };\r\n\r\n Select2.prototype.focus = function (data) {\r\n // No need to re-trigger focus events if we are already focused\r\n if (this.hasFocus()) {\r\n return;\r\n }\r\n\r\n this.$container.addClass('select2-container--focus');\r\n this.trigger('focus', {});\r\n };\r\n\r\n Select2.prototype.enable = function (args) {\r\n if (this.options.get('debug') && window.console && console.warn) {\r\n console.warn(\r\n 'Select2: The `select2(\"enable\")` method has been deprecated and will' +\r\n ' be removed in later Select2 versions. Use $element.prop(\"disabled\")' +\r\n ' instead.'\r\n );\r\n }\r\n\r\n if (args == null || args.length === 0) {\r\n args = [true];\r\n }\r\n\r\n var disabled = !args[0];\r\n\r\n this.$element.prop('disabled', disabled);\r\n };\r\n\r\n Select2.prototype.data = function () {\r\n if (this.options.get('debug') &&\r\n arguments.length > 0 && window.console && console.warn) {\r\n console.warn(\r\n 'Select2: Data can no longer be set using `select2(\"data\")`. You ' +\r\n 'should consider setting the value instead using `$element.val()`.'\r\n );\r\n }\r\n\r\n var data = [];\r\n\r\n this.dataAdapter.current(function (currentData) {\r\n data = currentData;\r\n });\r\n\r\n return data;\r\n };\r\n\r\n Select2.prototype.val = function (args) {\r\n if (this.options.get('debug') && window.console && console.warn) {\r\n console.warn(\r\n 'Select2: The `select2(\"val\")` method has been deprecated and will be' +\r\n ' removed in later Select2 versions. Use $element.val() instead.'\r\n );\r\n }\r\n\r\n if (args == null || args.length === 0) {\r\n return this.$element.val();\r\n }\r\n\r\n var newVal = args[0];\r\n\r\n if ($.isArray(newVal)) {\r\n newVal = $.map(newVal, function (obj) {\r\n return obj.toString();\r\n });\r\n }\r\n\r\n this.$element.val(newVal).trigger('input').trigger('change');\r\n };\r\n\r\n Select2.prototype.destroy = function () {\r\n this.$container.remove();\r\n\r\n if (this.$element[0].detachEvent) {\r\n this.$element[0].detachEvent('onpropertychange', this._syncA);\r\n }\r\n\r\n if (this._observer != null) {\r\n this._observer.disconnect();\r\n this._observer = null;\r\n } else if (this.$element[0].removeEventListener) {\r\n this.$element[0]\r\n .removeEventListener('DOMAttrModified', this._syncA, false);\r\n this.$element[0]\r\n .removeEventListener('DOMNodeInserted', this._syncS, false);\r\n this.$element[0]\r\n .removeEventListener('DOMNodeRemoved', this._syncS, false);\r\n }\r\n\r\n this._syncA = null;\r\n this._syncS = null;\r\n\r\n this.$element.off('.select2');\r\n this.$element.attr('tabindex',\r\n Utils.GetData(this.$element[0], 'old-tabindex'));\r\n\r\n this.$element.removeClass('select2-hidden-accessible');\r\n this.$element.attr('aria-hidden', 'false');\r\n Utils.RemoveData(this.$element[0]);\r\n this.$element.removeData('select2');\r\n\r\n this.dataAdapter.destroy();\r\n this.selection.destroy();\r\n this.dropdown.destroy();\r\n this.results.destroy();\r\n\r\n this.dataAdapter = null;\r\n this.selection = null;\r\n this.dropdown = null;\r\n this.results = null;\r\n };\r\n\r\n Select2.prototype.render = function () {\r\n var $container = $(\r\n '' +\r\n '' +\r\n '' +\r\n ''\r\n );\r\n\r\n $container.attr('dir', this.options.get('dir'));\r\n\r\n this.$container = $container;\r\n\r\n this.$container.addClass('select2-container--' + this.options.get('theme'));\r\n\r\n Utils.StoreData($container[0], 'element', this.$element);\r\n\r\n return $container;\r\n };\r\n\r\n return Select2;\r\n});\r\n\r\nS2.define('jquery-mousewheel',[\r\n 'jquery'\r\n], function ($) {\r\n // Used to shim jQuery.mousewheel for non-full builds.\r\n return $;\r\n});\r\n\r\nS2.define('jquery.select2',[\r\n 'jquery',\r\n 'jquery-mousewheel',\r\n\r\n './select2/core',\r\n './select2/defaults',\r\n './select2/utils'\r\n], function ($, _, Select2, Defaults, Utils) {\r\n if ($.fn.select2 == null) {\r\n // All methods that should return the element\r\n var thisMethods = ['open', 'close', 'destroy'];\r\n\r\n $.fn.select2 = function (options) {\r\n options = options || {};\r\n\r\n if (typeof options === 'object') {\r\n this.each(function () {\r\n var instanceOptions = $.extend(true, {}, options);\r\n\r\n var instance = new Select2($(this), instanceOptions);\r\n });\r\n\r\n return this;\r\n } else if (typeof options === 'string') {\r\n var ret;\r\n var args = Array.prototype.slice.call(arguments, 1);\r\n\r\n this.each(function () {\r\n var instance = Utils.GetData(this, 'select2');\r\n\r\n if (instance == null && window.console && console.error) {\r\n console.error(\r\n 'The select2(\\'' + options + '\\') method was called on an ' +\r\n 'element that is not using Select2.'\r\n );\r\n }\r\n\r\n ret = instance[options].apply(instance, args);\r\n });\r\n\r\n // Check if we should be returning `this`\r\n if ($.inArray(options, thisMethods) > -1) {\r\n return this;\r\n }\r\n\r\n return ret;\r\n } else {\r\n throw new Error('Invalid arguments for Select2: ' + options);\r\n }\r\n };\r\n }\r\n\r\n if ($.fn.select2.defaults == null) {\r\n $.fn.select2.defaults = Defaults;\r\n }\r\n\r\n return Select2;\r\n});\r\n\r\n // Return the AMD loader configuration so it can be used outside of this file\r\n return {\r\n define: S2.define,\r\n require: S2.require\r\n };\r\n}());\r\n\r\n // Autoload the jQuery bindings\r\n // We know that all of the modules exist above this, so we're safe\r\n var select2 = S2.require('jquery.select2');\r\n\r\n // Hold the AMD module references on the jQuery function that was just loaded\r\n // This allows Select2 to use the internal loader outside of this file, such\r\n // as in the language files.\r\n jQuery.fn.select2.amd = S2;\r\n\r\n // Return the Select2 instance for anyone who is importing it.\r\n return select2;\r\n}));\r\n","$(document).ready(function() {\r\n\t$('#slider-container').slick({\r\n\t\tdots: false,\r\n\t\tautoplay: true,\r\n\t\tpauseOnHover: true,\r\n\t\tspeed: 1600,\r\n\t\tprevArrow: false,\r\n\t\tnextArrow: false\r\n\t});\r\n\r\n\t$('.mobile-cover-types').slick({\r\n\t\tdots: true,\r\n\t\tinfinite: false,\r\n\t\tspeed: 1000,\r\n\t\tvariableWidth: true,\r\n\t\tprevArrow: false,\r\n\t\tnextArrow: false,\r\n\t\tinitialSlide: 0,\r\n\t\tslidesToShow: 2,\r\n\r\n\t\tresponsive: [\r\n\t\t\t{\r\n\t\t\t\tbreakpoint: 700,\r\n\t\t\t\tsettings: {\r\n\t\t\t\t\tslidesToShow: 1,\r\n\t\t\t\t\t//initialSlide: 1,\r\n\t\t\t\t\tinfinite: false,\r\n\t\t\t\t\tdots: true\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t]\r\n\t});\r\n\r\n});","$(document).ready(function () {\r\n\t// Main navigation\r\n\t// Opens menu\r\n\t//$(\".navbar-collapse\").toggleClass(\"show\");\r\n\r\n\tfunction getCookie(cname) {\r\n\t\tvar name = cname + \"=\";\r\n\t\tvar decodedCookie = decodeURIComponent(document.cookie);\r\n\t\tvar ca = decodedCookie.split(';');\r\n\t\tfor (var i = 0; i < ca.length; i++) {\r\n\t\t\tvar c = ca[i];\r\n\t\t\twhile (c.charAt(0) == ' ') {\r\n\t\t\t\tc = c.substring(1);\r\n\t\t\t}\r\n\t\t\tif (c.indexOf(name) == 0) {\r\n\t\t\t\treturn c.substring(name.length, c.length);\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn \"\";\r\n\t}\r\n\r\n\t$(\".sourcecode input\").val(getCookie(\"SourceTracking\"));\r\n\t$(\".referrer input\").val(getCookie(\"Httpreferrer\"));\r\n\t\r\n\r\n\t$('[data-toggle=\"slide-collapse\"]').on('click', function () {\r\n\t\t$(\".navbar-toggler\").toggleClass(\"expanded\");\r\n\t\t$(\".navbar-collapse\").toggleClass(\"show\");\r\n\t\t$(\".navbar-nav\").toggleClass(\"active\");\r\n\t\t$(\".navbar-collapse\").toggleClass(\"active\");\r\n\t\t//$(\".dropdown-menu\").toggleClass(\"active\").show();\r\n\t\t//$(\".dropdown-menu\").toggleClass(\"show\");\r\n\t});\r\n\r\n\t// Close 2nd level dropdown on click\r\n\t$('li.nav-item').on('click', function () {\r\n\t\t$(this).find(\".dropdown-menu\").toggleClass(\"show\");\r\n\t});\r\n\r\n\t// Closes all menus on click\r\n\t$('.dropdown-item').on('click', function () {\r\n\t\t$(\".navbar-toggler\").toggleClass(\"expanded\");\r\n\t\t$(\".navbar-nav\").toggleClass(\"active\");\r\n\t\t$(\".navbar-collapse\").toggleClass(\"active\");\r\n\t});\r\n\t// END of Main navigation\r\n\r\n\t// Gallery lightbox invoke\r\n\t$('.showcase').lightcase();\r\n\r\n\t$('.collapse').collapse();\r\n\r\n\t// For navigation to make parent element clickable\r\n\tjQuery(function ($) {\r\n\t\t$('.navbar .dropdown').hover(function () {\r\n\t\t\t$(this).find('.dropdown-menu').first().stop(true, true).delay(250).slideDown();\r\n\r\n\t\t}, function () {\r\n\t\t\t$(this).find('.dropdown-menu').first().stop(true, true).delay(100).slideUp();\r\n\r\n\t\t});\r\n\r\n\t\t$('.navbar .dropdown > a').click(function () {\r\n\t\t\tlocation.href = this.href;\r\n\t\t});\r\n\r\n\t});\r\n\t// End of navigation fix\r\n\r\n\t// Cover Level hide/show\r\n\tvar deviceWidth = $(window).width();\r\n\r\n\t$(\"[id^='label-']\").click(function () {\r\n\r\n\t\tif (deviceWidth > 1024) {\r\n\t\t\tvar coverId = $(this).attr(\"coverId\");\r\n\r\n\t\t\tif ($(this).hasClass(\"show\")) {\r\n\t\t\t\t$(this).toggleClass(\"show\");\r\n\t\t\t\t$(this).toggleClass(\"collapsed\");\r\n\t\t\t} else {\r\n\t\t\t\t$(\".show\").toggleClass(\"collapsed\");\r\n\t\t\t\t$(\".collapsed\").removeClass(\"show\");\r\n\t\t\t\t$(this).toggleClass(\"collapsed\");\r\n\t\t\t\t$(this).addClass(\"show\");\r\n\t\t\t}\r\n\r\n\t\t\t$(\".expandible-desktop\").each(function () {\r\n\t\t\t\tif ($(this).attr(\"coverId\") == coverId) {\r\n\t\t\t\t\t$(this).toggleClass(\"collapsed\");\r\n\t\t\t\t} else {\r\n\t\t\t\t\t$(this).addClass(\"collapsed\");\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t}\r\n\t\tif (deviceWidth < 1025) {\r\n\t\t\tvar mobileId = $(this).attr(\"coverId\");\r\n\r\n\t\t\tif ($(this).hasClass(\"show\")) {\r\n\t\t\t\t$(this).toggleClass(\"show\");\r\n\t\t\t\t$(this).toggleClass(\"collapsed\");\r\n\t\t\t} else {\r\n\t\t\t\t$(\".show\").toggleClass(\"collapsed\");\r\n\t\t\t\t$(\".collapsed\").removeClass(\"show\");\r\n\t\t\t\t$(this).toggleClass(\"collapsed\");\r\n\t\t\t\t$(this).addClass(\"show\");\r\n\t\t\t}\r\n\r\n\t\t\t$(\".expandible-mobile\").each(function () {\r\n\t\t\t\tif ($(this).attr(\"mobileId\") == mobileId) {\r\n\t\t\t\t\t$(this).toggleClass(\"collapsed-mobile\");\r\n\t\t\t\t} else {\r\n\t\t\t\t\t$(this).addClass(\"collapsed-mobile\");\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t}\r\n\t});\r\n\r\n\t//End of Cover Level hide/show\r\n\r\n\t// Cover levels accordion\r\n\t$('.accordion-expand').click(function () {\r\n\t\tif ($(this).hasClass('active')) {\r\n\t\t\t$(this).children(\".show-hide\").text('Click to show less');\r\n\t\t} else {\r\n\t\t\t$(this).children(\".show-hide\").text('Click to show more');\r\n\t\t}\r\n\t});\r\n\t// End of Cover levels accordion\r\n\r\n\t// Trigger lazy loading\r\n\t$(function () {\r\n\t\t$('.lazy').Lazy({\r\n\t\t\tscrollDirection: 'vertical',\r\n\t\t\teffect: 'fadeIn',\r\n\t\t\tvisibleOnly: true,\r\n\t\t});\r\n\t});\r\n});"],"sourceRoot":"/source/"}