{"version":3,"sources":["bootstrap.min.js","matchheight.js","main.js","accordion.js","addEvent.js","appBar.js","appModal.js","appTimer.js","datePicker.js","datPickerTest.js","dropit.js","flexslider.js","floatlabel.js","mainTimer.js","nav-toggle.js","progressBar.js","proTest2.js","rangeSlider.js","rangeTest.js","selectize.js","swipebox.js","timer.js","toast.js","view-frame.js","site.min.js"],"names":["jQuery","Error","a","b","document","createElement","WebkitTransition","MozTransition","OTransition","transition","c","style","end","fn","emulateTransitionEnd","d","this","one","support","e","trigger","setTimeout","on","close","prototype","f","remove","attr","replace","preventDefault","length","hasClass","parent","Event","isDefaultPrevented","removeClass","alert","each","data","call","Constructor","noConflict","$element","options","extend","DEFAULTS","isLoading","loadingText","setState","is","resetText","proxy","addClass","removeAttr","toggle","closest","find","prop","toggleClass","button","target","$indicators","paused","sliding","interval","$active","$items","pause","cycle","wrap","clearInterval","setInterval","next","getActiveIndex","children","index","to","slide","prev","g","h","i","j","relatedTarget","direction","offsetWidth","join","css","slice","carousel","window","transitioning","$parent","dimension","show","collapse","camelCase","hide","offsetHeight","not","test","documentElement","insertAfter","focus","keydown","keyCode","stopPropagation","which","click","filter","eq","dropdown","$backdrop","isShown","remote","load","backdrop","keyboard","escape","appendTo","body","scrollTop","enforceFocus","off","hideModal","has","removeBackdrop","currentTarget","modal","type","enabled","timeout","hoverState","init","animation","placement","selector","template","title","delay","html","container","getOptions","split","enter","leave","_options","fixTitle","getDefaults","getDelegateOptions","constructor","clearTimeout","hasContent","tip","setContent","detach","top","left","display","getPosition","k","l","m","n","innerWidth","outerWidth","o","innerHeight","outerHeight","p","offset","height","right","q","getCalculatedOffset","applyPlacement","r","$tip","parseInt","isNaN","setOffset","using","Math","round","replaceArrow","arrow","getTitle","getBoundingClientRect","width","$arrow","validate","parentNode","enable","disable","toggleEnabled","destroy","removeData","tooltip","content","getContent","popover","process","$body","$scrollElement","offsets","targets","activeTarget","refresh","map","isWindow","get","sort","push","scrollHeight","last","activate","parentsUntil","parents","scrollspy","element","tab","$window","checkPosition","checkPositionWithEventLoop","affixed","unpin","pinnedOffset","RESET","getPinnedOffset","bottom","affix","offsetBottom","offsetTop","$","_previousResizeWidth","_updateTimeout","_parse","value","parseFloat","_rows","elements","tolerance","$elements","lastTop","rows","$that","lastRow","floor","abs","add","_parseOptions","opts","byRow","property","matchHeight","that","_groups","key","group","_apply","_throttle","_maintainScroll","_beforeUpdate","_afterUpdate","htmlHeight","$hiddenParents","padding-top","padding-bottom","margin-top","margin-bottom","border-top-width","border-bottom-width","row","$row","targetHeight","verticalPadding","_applyDataApi","groups","$this","groupId","_update","event","throttle","windowWidth","bind","ready","winWidth","ajaxSetup","headers","X-CSRF-TOKEN","$timer","$hour","$minute","$second","sec","Number","val","min","hour","trim","submit","confirm","location","href","indexOf","hash","origin","pathname","substring","question","answer","slideUp","slideDown","fadeIn","fadeOut","mouseup","factory","define","amd","exports","module","require","Picker","PickerConstructor","ELEMENT","NAME","COMPONENT","OPTIONS","createWrappedComponent","_","node","P","component","nodes","STATE","open","CLASSES","box","frame","holder","prepareElement","$ELEMENT","input","SETTINGS","format","editable","id","handleKeydownEvent","aria","haspopup","expanded","readonly","owns","prepareElementRoot","$root","prepareElementHolder","$holder","focus.toOpen","handleFocusToOpenEvent","blur","focusin","focused","mousedown click","$target","targetData","targetDisabled","navDisabled","disabled","activeElement","getActiveElement","contains","nav","set","item","highlight","pick","closeOnSelect","clear","closeOnClear","prepareElementHidden","name","hiddenName","hiddenPrefix","hiddenSuffix","_hidden","formatSubmit","focusPickerOnceOpened","IS_DEFAULT_THEME","supportsTransitions","keycode","isKeycodeDelete","random","Date","defaults","klasses","klass","PickerInstance","start","$node","methods","autofocus","readOnly","picker","containerHidden","append","after","onStart","render","onRender","stop","onStop","onOpen","onClose","onSet","isUsingDefaultTheme","entireComponent","removeChild","dontGiveFocus","active","opened","$html","getScrollbarWidth","$document","keycodeToMove","go","highlighted","giveFocus","thing","thingItem","thingValue","thingIsObject","isPlainObject","thingObject","undefined","muted","formats","toString","method","internal","thingName","thingMethod","names","arguments","namesCount","_trigger","methodList","theme","currentStyle","getComputedStyle","$outer","widthWithoutScroll","$inner","widthWithScroll","attribute","ariaSet","setAttribute","ariaAttr","attrVal","err","prefix","groupObject","loopObjectScope","nodesList","counter","max","wrapper","isArray","lead","number","callback","scope","args","apply","digits","string","isDate","isInteger","getDate","Component","action","componentData","DatePicker","settings","calendar","elementValue","elementDataValue","valueString","formatString","isRTL","queue","now","select","view","collectionDisabled","shift","defaultValue","40","38","39","37","timeChange","highlightedObject","targetDate","year","month","date","selectMonth","selectYear","includeToday","buttonToday","DAYS_IN_WEEK","WEEKS_IN_CALENDAR","calendarItem","pop","match","create","isInfiniteValue","Infinity","obj","normalize","getFullYear","getMonth","day","getDay","getTime","createRange","from","createDate","withinRange","range","dateUnit","overlapRanges","two","rel","setDate","navigate","targetDateObject","targetYear","targetMonth","isTargetArray","isTargetObject","viewsetObject","setHours","measure","parse","viewset","dateObject","hasEnabledBeforeTarget","hasEnabledAfterTarget","reachedMin","reachedMax","originalDateObject","isFlippedBase","minLimitObject","maxLimitObject","hasEnabledWeekdays","dateTime","dateToVerify","isDisabledMatch","dateToDisable","firstDay","inverted","parsingObject","toArray","label","formattingLabel","formatLength","substr","yyyy","yy","mm","dd","getWordLengthFromCollection","collection","word","getFirstWordLength","ddd","weekdaysShort","dddd","weekdaysFull","mmm","monthsShort","mmmm","monthsFull","itemObject","isDateExact","isDateOverlap","flipEnable","deactivate","datesToDisable","disabledItems","unitToDisable","matchFound","datesToEnable","disabledItemsCount","unitToEnable","disabledUnit","isExactRange","isOpen","nowObject","selectedObject","disabledCollection","tableHead","fullCollection","weekdays","showWeekdaysFull","createMonthNav","role","controls","labelMonthNext","labelMonthPrev","createMonthLabel","monthsCollection","showMonthsShort","selectMonths","loopedMonth","labelMonthSelect","createYearLabel","focusedYear","numberYears","selectYears","minYear","maxYear","lowestYear","highestYear","availableYears","neededYears","loopedYear","labelYearSelect","header","rowCounter","shiftDateBy","isSelected","isHighlighted","isDisabled","formattedDate","infocus","outfocus","selected","activedescendant","table","today","buttonClear","buttonClose","footer","navPrev","navNext","TimePicker","clock","$pickerHolder","$viewset","vendors","vendor","animations","$el","state","position","clientHeight","HOURS_IN_DAY","MINUTES_IN_HOUR","HOURS_TO_NOON","MINUTES_IN_DAY","clockItem","getHours","getMinutes","mins","time","createTime","timeUnit","isBelowInterval","nowMinutes","isValueInteger","minTime","timeObject","timeToVerify","timeToDisable","minLimit","maxLimit","minutes","isPM","parseValue","hh","H","HH","A","isTimeExact","isTimeOverlap","timesToDisable","timesToEnable","isRangeMatched","loopedTime","timeMinutes","formattedTime","formatLabel","listItem","list","datetimepicker","autoclose","todayBtn","minuteStep","minView","dropit","triggerParentEl","submenuEl","triggerEl","beforeHide","afterHide","beforeShow","afterShow","afterLoad","Array","error","flexslider","t","vars","namespace","s","navigator","msPointerEnabled","MSGesture","DocumentTouch","touch","u","reverse","itemWidth","asNavFor","v","animating","currentSlide","startAt","animatingTo","atEnd","containerSelector","search","slides","count","syncExists","sync","manualPause","stopped","started","startTimeout","transitions","video","useCSS","pfx","toLowerCase","controlsContainer","manualControls","randomize","empty","doMath","setup","controlNav","directionNav","multipleKeyboard","getTarget","flexAnimate","pauseOnAction","mousewheel","pausePlay","slideshow","pauseInvisible","pauseOnHover","hover","manualPlay","play","isHidden","initDelay","asNav","smoothHeight","resize","move","currentItem","_slider","_gesture","addEventListener","addPointer","pointerId","scrollLeft","setupManual","setupPaging","controlNavScaffold","pagingCount","thumbCaptions","delegate","setToClearWatchedEvent","update","prevText","nextText","animationLoop","playText","pauseText","touches","w","pageX","pageY","limit","itemW","itemMargin","cloneOffset","y","setProps","removeEventListener","canAdvance","E","translationX","translationY","detail","MSGESTURE_FLAG_INERTIA","setImmediate","S","msTouchAction","computedW","viewport","newSlides","animate","playing","uniqueID","visProp","ceil","visible","before","opacity","zIndex","wrapup","animationSpeed","easing","unbind","animateSlides","animatedSlides","slideshowSpeed","float","marginRight","webkitTransition","overflow","cloneCount","makeArray","first","clone","prepend","prependTo","minItems","maxItems","boxPadding","itemT","minW","maxW","addSlide","added","removeSlide","removed","allowOneSlide","onClass","showClass","labelOn","hasTimer","timer","slideToggle","CircleProgress","config","size","startAngle","PI","thickness","fill","gradient","emptyFill","duration","animationStartValue","lineCap","insertMode","el","canvas","ctx","radius","arcFill","lastFrameValue","initWidget","initFill","draw","getContext","devicePixelRatio","scaleBy","scale","setImageFill","bg","self","drawImage","img","createPattern","drawFrame","color","gr","ga","gradientAngle","gd","gradientDirection","cos","sin","lg","createLinearGradient","pos","addColorStop","image","Image","src","complete","onload","drawAnimated","clearRect","drawEmptyArc","drawArc","getThickness","save","beginPath","arc","lineWidth","strokeStyle","stroke","restore","animationProgress","step","stepValue","promise","always","isNumeric","getValue","setValue","newValue","circleProgress","circleProgressEasing","x","configOrCommand","commandArgument","dataName","firstInstance","instance","initialConfig","JSON","progress","text","toFixed","supportsRange","wait","debounce","debounceDuration","debouncing","lastReturnVal","debounceTimeout","getHiddenParentNodes","getDimension","toggleOpenProperty","hiddenParentNodes","hiddenParentNodesLength","inlineStyle","cssText","setProperty","visibility","tryParseFloat","str","ucfirst","charAt","toUpperCase","Plugin","polyfill","orientation","getAttribute","onInit","onSlide","onSlideEnd","DIMENSION","constants","DIRECTION","DIRECTION_STYLE","directionStyle","COORDINATE","coordinate","hasInputRangeSupport","identifier","pluginName","pluginIdentifier","startEvent","moveEvent","endEvent","$fill","fillClass","$handle","handleClass","$range","rangeClass","handleDown","handleMove","handleEnd","_this","disabledClass","getPositionFromValue","setPosition","activeClass","horizontalClass","verticalClass","horizontal","vertical","updateAttributes","triggerSlide","handleDimension","rangeDimension","maxHandlePos","grabPos","className","getRelativePosition","rangePos","handlePos","getPositionFromNode","setPos","cap","newPos","getValueFromPosition","offsetLeft","offsetParent","ucCoordinate","pageCoordinate","originalEvent","currentPoint","percentage","rangeslider","output","root","Sifter","items","diacritics","tokenize","query","String","regex","letter","tokens","words","escape_regex","DIACRITICS","hasOwnProperty","RegExp","iterator","object","is_array","forEach","getScoreFunction","fields","token_count","prepareSearch","scoreValue","token","score","scoreObject","field_count","sum","conjunction","getSortFunction","field","fields_count","multiplier","multipliers","get_field","implicit_score","sort_empty","result","unshift","splice","cmp","option_fields","option_sort","option_sort_empty","total","fn_sort","fn_score","asciifold","Object","z","chunk","foreignletters","lookup","regexp","foreignletter","MicroPlugin","mixin","Interface","plugins","initializePlugins","requested","loaded","utils","loadPlugin","plugin","vArg","Selectize","pattern","skip","nodeType","spannode","middlebit","splitText","middleclone","cloneNode","appendChild","replaceChild","childNodes","tagName","MicroEvent","fct","_events","destObject","props","IS_MAC","userAgent","KEY_A","KEY_RETURN","KEY_ESC","KEY_LEFT","KEY_UP","KEY_P","KEY_RIGHT","KEY_DOWN","KEY_N","KEY_BACKSPACE","KEY_DELETE","KEY_SHIFT","KEY_CMD","KEY_CTRL","KEY_TAB","TAG_SELECT","TAG_INPUT","SUPPORTS_VALIDITY_API","validity","isset","hash_key","escape_html","escape_replace","hook","original","once","called","debounce_events","types","event_args","watchChildEvent","child","getSelection","selectionStart","selectionEnd","selection","sel","selLen","moveStart","transferStyles","$from","$to","properties","styles","measureString","$test","padding","whiteSpace","autoGrow","$input","currentWidth","printable","placeholder","character","metaKey","altKey","force","shiftKey","fromCharCode","triggerHandler","dir","selectize","computedStyle","getPropertyValue","order","tabIndex","tagType","rtl","eventNS","highlightedValue","isRequired","isInvalid","isLocked","isFocused","isInputHidden","isSetup","isShiftDown","isCmdDown","isCtrlDown","ignoreFocus","ignoreBlur","ignoreHover","hasOptions","currentResults","lastValue","caretPos","loading","loadedSearches","$activeOption","$activeItems","optgroups","userOptions","renderCache","onSearchChange","loadThrottle","sifter","registerOption","registerOptionGroup","mode","hideSelected","setupCallbacks","setupTemplates","$wrapper","$control","$control_input","$dropdown","$dropdown_content","$dropdown_parent","inputMode","classes","classes_plugins","wrapperClass","inputClass","dropdownParent","dropdownClass","dropdownContentClass","copyClassesToDropdown","splitOn","delimiter","delimiterEscaped","onOptionHover","onOptionSelect","onItemSelect","mousedown","onMouseDown","onClick","onKeyDown","keyup","onKeyUp","keypress","onKeyPress","positionDropdown","onBlur","onFocus","paste","onPaste","revertSettings","$children","tabindex","refreshState","updateOriginalInput","refreshItems","updatePlaceholder","onChange","preload","field_label","labelField","field_optgroup","optgroupLabelField","templates","optgroup","optgroup_header","option","option_create","callbacks","initialize","change","item_add","item_remove","option_add","option_remove","option_clear","optgroup_add","optgroup_remove","optgroup_clear","dropdown_open","dropdown_close","defaultPrevented","setActiveItem","isFull","splitInput","createItem","selectAll","ctrlKey","$next","getAdjacentOption","setActiveOption","$prev","advanceSelection","selectOnTab","deleteSelection","refreshOptions","wasFocused","showInput","openOnFocus","dest","setTextboxValue","setCaret","createOnBlur","closeAfterSelect","lastQuery","addItem","getOption","loadingClass","results","addOption","changed","silent","events","addItems","$item","eventName","idx","begin","swap","$last","hideInput","$option","scroll","height_menu","height_item","scroll_top","scroll_bottom","scrollDuration","getSearchOptions","sortField","searchField","searchConjunction","calculateScore","triggerDropdown","groups_order","option_html","html_children","has_create_option","$active_before","$create","active_before","maxOptions","optgroupField","lockOptgroupOrder","a_order","$order","b_order","canCreate","addPrecedence","valueField","optgroupValueField","addOptionGroup","removeOptionGroup","clearOptionGroups","updateOption","$item_new","value_new","index_item","cache_items","cache_options","order_old","getItem","replaceWith","removeOption","removeItem","clearOptions","getElementWithValue","$options","$els","values","isPending","value_next","wasFull","insertAtCaret","persist","caret","lock","unlock","invalid","refreshClasses","isEmptyObject","option_select","$option_select","$tail","onDelete","tail","valueLength","cursorAtEdge","advanceCaret","$adj","$child","templateName","cache","regex_tag","clearCache","createFilter","allowEmptyOption","dataAttr","settings_user","attr_data","field_value","field_optgroup_label","field_optgroup_value","init_textbox","settings_element","data_raw","init_select","optionsMap","readData","arr","addGroup","$optgroup","tag_name","sortable","forcePlaceholderSize","ui","helper","headerClass","titleRowClass","labelClass","closeClass","$dropdown_header","equalizeWidth","equalizeHeight","div","doc","innerHTML","firstChild","clientWidth","equalizeSizes","height_max","width_last","width_parent","$optgroups","html_container","html_element","render_item","swipebox","elem","$elem","useSVG","initialIndexOnArray","removeBarsOnMobile","hideCloseButtonOnMobile","hideBarsDelay","videoMaxWidth","vimeoColor","beforeOpen","afterOpen","afterClose","nextSlide","prevSlide","loopAtEnd","autoplayVideos","queryStringData","toggleClassOnLoad","$selector","isMobile","isTouch","createTouch","msMaxTouchPoints","supportSVG","createElementNS","createSVGRect","winHeight","currentX","closeSlide","actions","relType","relVal","build","openSlide","openMedia","preloadMedia","background-image","setDim","gesture","animBars","sliderCss","supportTransition","prefixes","doCssTrans","hDistance","vDistance","hDistanceLast","vDistanceLast","hDistancePercent","vSwipe","hSwipe","hSwipMinDistance","vSwipMinDistance","startCoords","endCoords","bars","slider","targetTouches","-webkit-transform","transform","-webkit-transition","vOffset","getPrev","getNext","hideBars","showBars","setSlide","isFirst","setTitle","isVideo","getVideo","loadMedia","parseUri","uri","customData","qs","decodeURIComponent","encodeURIComponent","url","iframe","youtubeUrl","youtubeShortUrl","vimeoUrl","autoplay","byline","portrait","class","contents","modules","__webpack_require__","moduleId","installedModules","_interopRequireDefault","__esModule","default","_Timer","_Timer2","_constants","_constants2","PLUGIN_NAME","_classCallCheck","TypeError","defineProperty","_createClass","defineProperties","descriptor","enumerable","configurable","writable","protoProps","staticProps","_utils","_utils2","Timer","originalConfig","totalSeconds","intervalId","getDefaultConfig","durationTimeToSeconds","seconds","makeEditable","startTime","unixSeconds","repeat","updateFrequency","countdown","TIMER_RUNNING","intervalHandler","TIMER_PAUSED","secondsToFormattedTime","secondsToPrettyTime","Constants","DAYINSECONDS","THIRTYSIXHUNDRED","SIXTY","TEN","_secondsToTimeObj","days","hours","totalMinutes","_paddedValue","num","console","log","timeObj","prettyTime","formatDef","fmt","timeFormat","hrs","secs","prettyTimeToSeconds","editedTime","timerInstance","newState","resume","TIMER_STOPPED","dequeue","swipe","swipeRight","distance","fingerCount","threshold","swipeLeft"],"mappings":"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","file":"../site.min.js","sourcesContent":["/*!\r\n * Bootstrap v3.1.1 (http://getbootstrap.com)\r\n * Copyright 2011-2014 Twitter, Inc.\r\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\r\n */\r\nif(\"undefined\"==typeof jQuery)throw new Error(\"Bootstrap's JavaScript requires jQuery\");+function(a){\"use strict\";function b(){var a=document.createElement(\"bootstrap\"),b={WebkitTransition:\"webkitTransitionEnd\",MozTransition:\"transitionend\",OTransition:\"oTransitionEnd otransitionend\",transition:\"transitionend\"};for(var c in b)if(void 0!==a.style[c])return{end:b[c]};return!1}a.fn.emulateTransitionEnd=function(b){var c=!1,d=this;a(this).one(a.support.transition.end,function(){c=!0});var e=function(){c||a(d).trigger(a.support.transition.end)};return setTimeout(e,b),this},a(function(){a.support.transition=b()})}(jQuery),+function(a){\"use strict\";var b='[data-dismiss=\"alert\"]',c=function(c){a(c).on(\"click\",b,this.close)};c.prototype.close=function(b){function c(){f.trigger(\"closed.bs.alert\").remove()}var d=a(this),e=d.attr(\"data-target\");e||(e=d.attr(\"href\"),e=e&&e.replace(/.*(?=#[^\\s]*$)/,\"\"));var f=a(e);b&&b.preventDefault(),f.length||(f=d.hasClass(\"alert\")?d:d.parent()),f.trigger(b=a.Event(\"close.bs.alert\")),b.isDefaultPrevented()||(f.removeClass(\"in\"),a.support.transition&&f.hasClass(\"fade\")?f.one(a.support.transition.end,c).emulateTransitionEnd(150):c())};var d=a.fn.alert;a.fn.alert=function(b){return this.each(function(){var d=a(this),e=d.data(\"bs.alert\");e||d.data(\"bs.alert\",e=new c(this)),\"string\"==typeof b&&e[b].call(d)})},a.fn.alert.Constructor=c,a.fn.alert.noConflict=function(){return a.fn.alert=d,this},a(document).on(\"click.bs.alert.data-api\",b,c.prototype.close)}(jQuery),+function(a){\"use strict\";var b=function(c,d){this.$element=a(c),this.options=a.extend({},b.DEFAULTS,d),this.isLoading=!1};b.DEFAULTS={loadingText:\"loading...\"},b.prototype.setState=function(b){var c=\"disabled\",d=this.$element,e=d.is(\"input\")?\"val\":\"html\",f=d.data();b+=\"Text\",f.resetText||d.data(\"resetText\",d[e]()),d[e](f[b]||this.options[b]),setTimeout(a.proxy(function(){\"loadingText\"==b?(this.isLoading=!0,d.addClass(c).attr(c,c)):this.isLoading&&(this.isLoading=!1,d.removeClass(c).removeAttr(c))},this),0)},b.prototype.toggle=function(){var a=!0,b=this.$element.closest('[data-toggle=\"buttons\"]');if(b.length){var c=this.$element.find(\"input\");\"radio\"==c.prop(\"type\")&&(c.prop(\"checked\")&&this.$element.hasClass(\"active\")?a=!1:b.find(\".active\").removeClass(\"active\")),a&&c.prop(\"checked\",!this.$element.hasClass(\"active\")).trigger(\"change\")}a&&this.$element.toggleClass(\"active\")};var c=a.fn.button;a.fn.button=function(c){return this.each(function(){var d=a(this),e=d.data(\"bs.button\"),f=\"object\"==typeof c&&c;e||d.data(\"bs.button\",e=new b(this,f)),\"toggle\"==c?e.toggle():c&&e.setState(c)})},a.fn.button.Constructor=b,a.fn.button.noConflict=function(){return a.fn.button=c,this},a(document).on(\"click.bs.button.data-api\",\"[data-toggle^=button]\",function(b){var c=a(b.target);c.hasClass(\"btn\")||(c=c.closest(\".btn\")),c.button(\"toggle\"),b.preventDefault()})}(jQuery),+function(a){\"use strict\";var b=function(b,c){this.$element=a(b),this.$indicators=this.$element.find(\".carousel-indicators\"),this.options=c,this.paused=this.sliding=this.interval=this.$active=this.$items=null,\"hover\"==this.options.pause&&this.$element.on(\"mouseenter\",a.proxy(this.pause,this)).on(\"mouseleave\",a.proxy(this.cycle,this))};b.DEFAULTS={interval:5e3,pause:\"hover\",wrap:!0},b.prototype.cycle=function(b){return b||(this.paused=!1),this.interval&&clearInterval(this.interval),this.options.interval&&!this.paused&&(this.interval=setInterval(a.proxy(this.next,this),this.options.interval)),this},b.prototype.getActiveIndex=function(){return this.$active=this.$element.find(\".item.active\"),this.$items=this.$active.parent().children(),this.$items.index(this.$active)},b.prototype.to=function(b){var c=this,d=this.getActiveIndex();return b>this.$items.length-1||0>b?void 0:this.sliding?this.$element.one(\"slid.bs.carousel\",function(){c.to(b)}):d==b?this.pause().cycle():this.slide(b>d?\"next\":\"prev\",a(this.$items[b]))},b.prototype.pause=function(b){return b||(this.paused=!0),this.$element.find(\".next, .prev\").length&&a.support.transition&&(this.$element.trigger(a.support.transition.end),this.cycle(!0)),this.interval=clearInterval(this.interval),this},b.prototype.next=function(){return this.sliding?void 0:this.slide(\"next\")},b.prototype.prev=function(){return this.sliding?void 0:this.slide(\"prev\")},b.prototype.slide=function(b,c){var d=this.$element.find(\".item.active\"),e=c||d[b](),f=this.interval,g=\"next\"==b?\"left\":\"right\",h=\"next\"==b?\"first\":\"last\",i=this;if(!e.length){if(!this.options.wrap)return;e=this.$element.find(\".item\")[h]()}if(e.hasClass(\"active\"))return this.sliding=!1;var j=a.Event(\"slide.bs.carousel\",{relatedTarget:e[0],direction:g});return this.$element.trigger(j),j.isDefaultPrevented()?void 0:(this.sliding=!0,f&&this.pause(),this.$indicators.length&&(this.$indicators.find(\".active\").removeClass(\"active\"),this.$element.one(\"slid.bs.carousel\",function(){var b=a(i.$indicators.children()[i.getActiveIndex()]);b&&b.addClass(\"active\")})),a.support.transition&&this.$element.hasClass(\"slide\")?(e.addClass(b),e[0].offsetWidth,d.addClass(g),e.addClass(g),d.one(a.support.transition.end,function(){e.removeClass([b,g].join(\" \")).addClass(\"active\"),d.removeClass([\"active\",g].join(\" \")),i.sliding=!1,setTimeout(function(){i.$element.trigger(\"slid.bs.carousel\")},0)}).emulateTransitionEnd(1e3*d.css(\"transition-duration\").slice(0,-1))):(d.removeClass(\"active\"),e.addClass(\"active\"),this.sliding=!1,this.$element.trigger(\"slid.bs.carousel\")),f&&this.cycle(),this)};var c=a.fn.carousel;a.fn.carousel=function(c){return this.each(function(){var d=a(this),e=d.data(\"bs.carousel\"),f=a.extend({},b.DEFAULTS,d.data(),\"object\"==typeof c&&c),g=\"string\"==typeof c?c:f.slide;e||d.data(\"bs.carousel\",e=new b(this,f)),\"number\"==typeof c?e.to(c):g?e[g]():f.interval&&e.pause().cycle()})},a.fn.carousel.Constructor=b,a.fn.carousel.noConflict=function(){return a.fn.carousel=c,this},a(document).on(\"click.bs.carousel.data-api\",\"[data-slide], [data-slide-to]\",function(b){var c,d=a(this),e=a(d.attr(\"data-target\")||(c=d.attr(\"href\"))&&c.replace(/.*(?=#[^\\s]+$)/,\"\")),f=a.extend({},e.data(),d.data()),g=d.attr(\"data-slide-to\");g&&(f.interval=!1),e.carousel(f),(g=d.attr(\"data-slide-to\"))&&e.data(\"bs.carousel\").to(g),b.preventDefault()}),a(window).on(\"load\",function(){a('[data-ride=\"carousel\"]').each(function(){var b=a(this);b.carousel(b.data())})})}(jQuery),+function(a){\"use strict\";var b=function(c,d){this.$element=a(c),this.options=a.extend({},b.DEFAULTS,d),this.transitioning=null,this.options.parent&&(this.$parent=a(this.options.parent)),this.options.toggle&&this.toggle()};b.DEFAULTS={toggle:!0},b.prototype.dimension=function(){var a=this.$element.hasClass(\"width\");return a?\"width\":\"height\"},b.prototype.show=function(){if(!this.transitioning&&!this.$element.hasClass(\"in\")){var b=a.Event(\"show.bs.collapse\");if(this.$element.trigger(b),!b.isDefaultPrevented()){var c=this.$parent&&this.$parent.find(\"> .panel > .in\");if(c&&c.length){var d=c.data(\"bs.collapse\");if(d&&d.transitioning)return;c.collapse(\"hide\"),d||c.data(\"bs.collapse\",null)}var e=this.dimension();this.$element.removeClass(\"collapse\").addClass(\"collapsing\")[e](0),this.transitioning=1;var f=function(){this.$element.removeClass(\"collapsing\").addClass(\"collapse in\")[e](\"auto\"),this.transitioning=0,this.$element.trigger(\"shown.bs.collapse\")};if(!a.support.transition)return f.call(this);var g=a.camelCase([\"scroll\",e].join(\"-\"));this.$element.one(a.support.transition.end,a.proxy(f,this)).emulateTransitionEnd(350)[e](this.$element[0][g])}}},b.prototype.hide=function(){if(!this.transitioning&&this.$element.hasClass(\"in\")){var b=a.Event(\"hide.bs.collapse\");if(this.$element.trigger(b),!b.isDefaultPrevented()){var c=this.dimension();this.$element[c](this.$element[c]())[0].offsetHeight,this.$element.addClass(\"collapsing\").removeClass(\"collapse\").removeClass(\"in\"),this.transitioning=1;var d=function(){this.transitioning=0,this.$element.trigger(\"hidden.bs.collapse\").removeClass(\"collapsing\").addClass(\"collapse\")};return a.support.transition?void this.$element[c](0).one(a.support.transition.end,a.proxy(d,this)).emulateTransitionEnd(350):d.call(this)}}},b.prototype.toggle=function(){this[this.$element.hasClass(\"in\")?\"hide\":\"show\"]()};var c=a.fn.collapse;a.fn.collapse=function(c){return this.each(function(){var d=a(this),e=d.data(\"bs.collapse\"),f=a.extend({},b.DEFAULTS,d.data(),\"object\"==typeof c&&c);!e&&f.toggle&&\"show\"==c&&(c=!c),e||d.data(\"bs.collapse\",e=new b(this,f)),\"string\"==typeof c&&e[c]()})},a.fn.collapse.Constructor=b,a.fn.collapse.noConflict=function(){return a.fn.collapse=c,this},a(document).on(\"click.bs.collapse.data-api\",\"[data-toggle=collapse]\",function(b){var c,d=a(this),e=d.attr(\"data-target\")||b.preventDefault()||(c=d.attr(\"href\"))&&c.replace(/.*(?=#[^\\s]+$)/,\"\"),f=a(e),g=f.data(\"bs.collapse\"),h=g?\"toggle\":d.data(),i=d.attr(\"data-parent\"),j=i&&a(i);g&&g.transitioning||(j&&j.find('[data-toggle=collapse][data-parent=\"'+i+'\"]').not(d).addClass(\"collapsed\"),d[f.hasClass(\"in\")?\"addClass\":\"removeClass\"](\"collapsed\")),f.collapse(h)})}(jQuery),+function(a){\"use strict\";function b(b){a(d).remove(),a(e).each(function(){var d=c(a(this)),e={relatedTarget:this};d.hasClass(\"open\")&&(d.trigger(b=a.Event(\"hide.bs.dropdown\",e)),b.isDefaultPrevented()||d.removeClass(\"open\").trigger(\"hidden.bs.dropdown\",e))})}function c(b){var c=b.attr(\"data-target\");c||(c=b.attr(\"href\"),c=c&&/#[A-Za-z]/.test(c)&&c.replace(/.*(?=#[^\\s]*$)/,\"\"));var d=c&&a(c);return d&&d.length?d:b.parent()}var d=\".dropdown-backdrop\",e=\"[data-toggle=dropdown]\",f=function(b){a(b).on(\"click.bs.dropdown\",this.toggle)};f.prototype.toggle=function(d){var e=a(this);if(!e.is(\".disabled, :disabled\")){var f=c(e),g=f.hasClass(\"open\");if(b(),!g){\"ontouchstart\"in document.documentElement&&!f.closest(\".navbar-nav\").length&&a('
').insertAfter(a(this)).on(\"click\",b);var h={relatedTarget:this};if(f.trigger(d=a.Event(\"show.bs.dropdown\",h)),d.isDefaultPrevented())return;f.toggleClass(\"open\").trigger(\"shown.bs.dropdown\",h),e.focus()}return!1}},f.prototype.keydown=function(b){if(/(38|40|27)/.test(b.keyCode)){var d=a(this);if(b.preventDefault(),b.stopPropagation(),!d.is(\".disabled, :disabled\")){var f=c(d),g=f.hasClass(\"open\");if(!g||g&&27==b.keyCode)return 27==b.which&&f.find(e).focus(),d.click();var h=\" li:not(.divider):visible a\",i=f.find(\"[role=menu]\"+h+\", [role=listbox]\"+h);if(i.length){var j=i.index(i.filter(\":focus\"));38==b.keyCode&&j>0&&j--,40==b.keyCode&&j').appendTo(document.body),this.$element.on(\"click.dismiss.bs.modal\",a.proxy(function(a){a.target===a.currentTarget&&(\"static\"==this.options.backdrop?this.$element[0].focus.call(this.$element[0]):this.hide.call(this))},this)),d&&this.$backdrop[0].offsetWidth,this.$backdrop.addClass(\"in\"),!b)return;d?this.$backdrop.one(a.support.transition.end,b).emulateTransitionEnd(150):b()}else!this.isShown&&this.$backdrop?(this.$backdrop.removeClass(\"in\"),a.support.transition&&this.$element.hasClass(\"fade\")?this.$backdrop.one(a.support.transition.end,b).emulateTransitionEnd(150):b()):b&&b()};var c=a.fn.modal;a.fn.modal=function(c,d){return this.each(function(){var e=a(this),f=e.data(\"bs.modal\"),g=a.extend({},b.DEFAULTS,e.data(),\"object\"==typeof c&&c);f||e.data(\"bs.modal\",f=new b(this,g)),\"string\"==typeof c?f[c](d):g.show&&f.show(d)})},a.fn.modal.Constructor=b,a.fn.modal.noConflict=function(){return a.fn.modal=c,this},a(document).on(\"click.bs.modal.data-api\",'[data-toggle=\"modal\"]',function(b){var c=a(this),d=c.attr(\"href\"),e=a(c.attr(\"data-target\")||d&&d.replace(/.*(?=#[^\\s]+$)/,\"\")),f=e.data(\"bs.modal\")?\"toggle\":a.extend({remote:!/#/.test(d)&&d},e.data(),c.data());c.is(\"a\")&&b.preventDefault(),e.modal(f,this).one(\"hide\",function(){c.is(\":visible\")&&c.focus()})}),a(document).on(\"show.bs.modal\",\".modal\",function(){a(document.body).addClass(\"modal-open\")}).on(\"hidden.bs.modal\",\".modal\",function(){a(document.body).removeClass(\"modal-open\")})}(jQuery),+function(a){\"use strict\";var b=function(a,b){this.type=this.options=this.enabled=this.timeout=this.hoverState=this.$element=null,this.init(\"tooltip\",a,b)};b.DEFAULTS={animation:!0,placement:\"top\",selector:!1,template:'
',trigger:\"hover focus\",title:\"\",delay:0,html:!1,container:!1},b.prototype.init=function(b,c,d){this.enabled=!0,this.type=b,this.$element=a(c),this.options=this.getOptions(d);for(var e=this.options.trigger.split(\" \"),f=e.length;f--;){var g=e[f];if(\"click\"==g)this.$element.on(\"click.\"+this.type,this.options.selector,a.proxy(this.toggle,this));else if(\"manual\"!=g){var h=\"hover\"==g?\"mouseenter\":\"focusin\",i=\"hover\"==g?\"mouseleave\":\"focusout\";this.$element.on(h+\".\"+this.type,this.options.selector,a.proxy(this.enter,this)),this.$element.on(i+\".\"+this.type,this.options.selector,a.proxy(this.leave,this))}}this.options.selector?this._options=a.extend({},this.options,{trigger:\"manual\",selector:\"\"}):this.fixTitle()},b.prototype.getDefaults=function(){return b.DEFAULTS},b.prototype.getOptions=function(b){return b=a.extend({},this.getDefaults(),this.$element.data(),b),b.delay&&\"number\"==typeof b.delay&&(b.delay={show:b.delay,hide:b.delay}),b},b.prototype.getDelegateOptions=function(){var b={},c=this.getDefaults();return this._options&&a.each(this._options,function(a,d){c[a]!=d&&(b[a]=d)}),b},b.prototype.enter=function(b){var c=b instanceof this.constructor?b:a(b.currentTarget)[this.type](this.getDelegateOptions()).data(\"bs.\"+this.type);return clearTimeout(c.timeout),c.hoverState=\"in\",c.options.delay&&c.options.delay.show?void(c.timeout=setTimeout(function(){\"in\"==c.hoverState&&c.show()},c.options.delay.show)):c.show()},b.prototype.leave=function(b){var c=b instanceof this.constructor?b:a(b.currentTarget)[this.type](this.getDelegateOptions()).data(\"bs.\"+this.type);return clearTimeout(c.timeout),c.hoverState=\"out\",c.options.delay&&c.options.delay.hide?void(c.timeout=setTimeout(function(){\"out\"==c.hoverState&&c.hide()},c.options.delay.hide)):c.hide()},b.prototype.show=function(){var b=a.Event(\"show.bs.\"+this.type);if(this.hasContent()&&this.enabled){if(this.$element.trigger(b),b.isDefaultPrevented())return;var c=this,d=this.tip();this.setContent(),this.options.animation&&d.addClass(\"fade\");var e=\"function\"==typeof this.options.placement?this.options.placement.call(this,d[0],this.$element[0]):this.options.placement,f=/\\s?auto?\\s?/i,g=f.test(e);g&&(e=e.replace(f,\"\")||\"top\"),d.detach().css({top:0,left:0,display:\"block\"}).addClass(e),this.options.container?d.appendTo(this.options.container):d.insertAfter(this.$element);var h=this.getPosition(),i=d[0].offsetWidth,j=d[0].offsetHeight;if(g){var k=this.$element.parent(),l=e,m=document.documentElement.scrollTop||document.body.scrollTop,n=\"body\"==this.options.container?window.innerWidth:k.outerWidth(),o=\"body\"==this.options.container?window.innerHeight:k.outerHeight(),p=\"body\"==this.options.container?0:k.offset().left;e=\"bottom\"==e&&h.top+h.height+j-m>o?\"top\":\"top\"==e&&h.top-m-j<0?\"bottom\":\"right\"==e&&h.right+i>n?\"left\":\"left\"==e&&h.left-i

'}),b.prototype=a.extend({},a.fn.tooltip.Constructor.prototype),b.prototype.constructor=b,b.prototype.getDefaults=function(){return b.DEFAULTS},b.prototype.setContent=function(){var a=this.tip(),b=this.getTitle(),c=this.getContent();a.find(\".popover-title\")[this.options.html?\"html\":\"text\"](b),a.find(\".popover-content\")[this.options.html?\"string\"==typeof c?\"html\":\"append\":\"text\"](c),a.removeClass(\"fade top bottom left right in\"),a.find(\".popover-title\").html()||a.find(\".popover-title\").hide()},b.prototype.hasContent=function(){return this.getTitle()||this.getContent()},b.prototype.getContent=function(){var a=this.$element,b=this.options;return a.attr(\"data-content\")||(\"function\"==typeof b.content?b.content.call(a[0]):b.content)},b.prototype.arrow=function(){return this.$arrow=this.$arrow||this.tip().find(\".arrow\")},b.prototype.tip=function(){return this.$tip||(this.$tip=a(this.options.template)),this.$tip};var c=a.fn.popover;a.fn.popover=function(c){return this.each(function(){var d=a(this),e=d.data(\"bs.popover\"),f=\"object\"==typeof c&&c;(e||\"destroy\"!=c)&&(e||d.data(\"bs.popover\",e=new b(this,f)),\"string\"==typeof c&&e[c]())})},a.fn.popover.Constructor=b,a.fn.popover.noConflict=function(){return a.fn.popover=c,this}}(jQuery),+function(a){\"use strict\";function b(c,d){var e,f=a.proxy(this.process,this);this.$element=a(a(c).is(\"body\")?window:c),this.$body=a(\"body\"),this.$scrollElement=this.$element.on(\"scroll.bs.scroll-spy.data-api\",f),this.options=a.extend({},b.DEFAULTS,d),this.selector=(this.options.target||(e=a(c).attr(\"href\"))&&e.replace(/.*(?=#[^\\s]+$)/,\"\")||\"\")+\" .nav li > a\",this.offsets=a([]),this.targets=a([]),this.activeTarget=null,this.refresh(),this.process()}b.DEFAULTS={offset:10},b.prototype.refresh=function(){var b=this.$element[0]==window?\"offset\":\"position\";this.offsets=a([]),this.targets=a([]);{var c=this;this.$body.find(this.selector).map(function(){var d=a(this),e=d.data(\"target\")||d.attr(\"href\"),f=/^#./.test(e)&&a(e);return f&&f.length&&f.is(\":visible\")&&[[f[b]().top+(!a.isWindow(c.$scrollElement.get(0))&&c.$scrollElement.scrollTop()),e]]||null}).sort(function(a,b){return a[0]-b[0]}).each(function(){c.offsets.push(this[0]),c.targets.push(this[1])})}},b.prototype.process=function(){var a,b=this.$scrollElement.scrollTop()+this.options.offset,c=this.$scrollElement[0].scrollHeight||this.$body[0].scrollHeight,d=c-this.$scrollElement.height(),e=this.offsets,f=this.targets,g=this.activeTarget;if(b>=d)return g!=(a=f.last()[0])&&this.activate(a);if(g&&b<=e[0])return g!=(a=f[0])&&this.activate(a);for(a=e.length;a--;)g!=f[a]&&b>=e[a]&&(!e[a+1]||b<=e[a+1])&&this.activate(f[a])},b.prototype.activate=function(b){this.activeTarget=b,a(this.selector).parentsUntil(this.options.target,\".active\").removeClass(\"active\");var c=this.selector+'[data-target=\"'+b+'\"],'+this.selector+'[href=\"'+b+'\"]',d=a(c).parents(\"li\").addClass(\"active\");d.parent(\".dropdown-menu\").length&&(d=d.closest(\"li.dropdown\").addClass(\"active\")),d.trigger(\"activate.bs.scrollspy\")};var c=a.fn.scrollspy;a.fn.scrollspy=function(c){return this.each(function(){var d=a(this),e=d.data(\"bs.scrollspy\"),f=\"object\"==typeof c&&c;e||d.data(\"bs.scrollspy\",e=new b(this,f)),\"string\"==typeof c&&e[c]()})},a.fn.scrollspy.Constructor=b,a.fn.scrollspy.noConflict=function(){return a.fn.scrollspy=c,this},a(window).on(\"load\",function(){a('[data-spy=\"scroll\"]').each(function(){var b=a(this);b.scrollspy(b.data())})})}(jQuery),+function(a){\"use strict\";var b=function(b){this.element=a(b)};b.prototype.show=function(){var b=this.element,c=b.closest(\"ul:not(.dropdown-menu)\"),d=b.data(\"target\");if(d||(d=b.attr(\"href\"),d=d&&d.replace(/.*(?=#[^\\s]*$)/,\"\")),!b.parent(\"li\").hasClass(\"active\")){var e=c.find(\".active:last a\")[0],f=a.Event(\"show.bs.tab\",{relatedTarget:e});if(b.trigger(f),!f.isDefaultPrevented()){var g=a(d);this.activate(b.parent(\"li\"),c),this.activate(g,g.parent(),function(){b.trigger({type:\"shown.bs.tab\",relatedTarget:e})})}}},b.prototype.activate=function(b,c,d){function e(){f.removeClass(\"active\").find(\"> .dropdown-menu > .active\").removeClass(\"active\"),b.addClass(\"active\"),g?(b[0].offsetWidth,b.addClass(\"in\")):b.removeClass(\"fade\"),b.parent(\".dropdown-menu\")&&b.closest(\"li.dropdown\").addClass(\"active\"),d&&d()}var f=c.find(\"> .active\"),g=d&&a.support.transition&&f.hasClass(\"fade\");g?f.one(a.support.transition.end,e).emulateTransitionEnd(150):e(),f.removeClass(\"in\")};var c=a.fn.tab;a.fn.tab=function(c){return this.each(function(){var d=a(this),e=d.data(\"bs.tab\");e||d.data(\"bs.tab\",e=new b(this)),\"string\"==typeof c&&e[c]()})},a.fn.tab.Constructor=b,a.fn.tab.noConflict=function(){return a.fn.tab=c,this},a(document).on(\"click.bs.tab.data-api\",'[data-toggle=\"tab\"], [data-toggle=\"pill\"]',function(b){b.preventDefault(),a(this).tab(\"show\")})}(jQuery),+function(a){\"use strict\";var b=function(c,d){this.options=a.extend({},b.DEFAULTS,d),this.$window=a(window).on(\"scroll.bs.affix.data-api\",a.proxy(this.checkPosition,this)).on(\"click.bs.affix.data-api\",a.proxy(this.checkPositionWithEventLoop,this)),this.$element=a(c),this.affixed=this.unpin=this.pinnedOffset=null,this.checkPosition()};b.RESET=\"affix affix-top affix-bottom\",b.DEFAULTS={offset:0},b.prototype.getPinnedOffset=function(){if(this.pinnedOffset)return this.pinnedOffset;this.$element.removeClass(b.RESET).addClass(\"affix\");var a=this.$window.scrollTop(),c=this.$element.offset();return this.pinnedOffset=c.top-a},b.prototype.checkPositionWithEventLoop=function(){setTimeout(a.proxy(this.checkPosition,this),1)},b.prototype.checkPosition=function(){if(this.$element.is(\":visible\")){var c=a(document).height(),d=this.$window.scrollTop(),e=this.$element.offset(),f=this.options.offset,g=f.top,h=f.bottom;\"top\"==this.affixed&&(e.top+=d),\"object\"!=typeof f&&(h=g=f),\"function\"==typeof g&&(g=f.top(this.$element)),\"function\"==typeof h&&(h=f.bottom(this.$element));var i=null!=this.unpin&&d+this.unpin<=e.top?!1:null!=h&&e.top+this.$element.height()>=c-h?\"bottom\":null!=g&&g>=d?\"top\":!1;if(this.affixed!==i){this.unpin&&this.$element.css(\"top\",\"\");var j=\"affix\"+(i?\"-\"+i:\"\"),k=a.Event(j+\".bs.affix\");this.$element.trigger(k),k.isDefaultPrevented()||(this.affixed=i,this.unpin=\"bottom\"==i?this.getPinnedOffset():null,this.$element.removeClass(b.RESET).addClass(j).trigger(a.Event(j.replace(\"affix\",\"affixed\"))),\"bottom\"==i&&this.$element.offset({top:c-h-this.$element.height()}))}}};var c=a.fn.affix;a.fn.affix=function(c){return this.each(function(){var d=a(this),e=d.data(\"bs.affix\"),f=\"object\"==typeof c&&c;e||d.data(\"bs.affix\",e=new b(this,f)),\"string\"==typeof c&&e[c]()})},a.fn.affix.Constructor=b,a.fn.affix.noConflict=function(){return a.fn.affix=c,this},a(window).on(\"load\",function(){a('[data-spy=\"affix\"]').each(function(){var b=a(this),c=b.data();c.offset=c.offset||{},c.offsetBottom&&(c.offset.bottom=c.offsetBottom),c.offsetTop&&(c.offset.top=c.offsetTop),b.affix(c)})})}(jQuery);","/**\r\n* jquery.matchHeight.js master\r\n* http://brm.io/jquery-match-height/\r\n* License: MIT\r\n*/\r\n\r\n;(function($) {\r\n /*\r\n * internal\r\n */\r\n\r\n var _previousResizeWidth = -1,\r\n _updateTimeout = -1;\r\n\r\n /*\r\n * _parse\r\n * value parse utility function\r\n */\r\n\r\n var _parse = function(value) {\r\n // parse value and convert NaN to 0\r\n return parseFloat(value) || 0;\r\n };\r\n\r\n /*\r\n * _rows\r\n * utility function returns array of jQuery selections representing each row\r\n * (as displayed after float wrapping applied by browser)\r\n */\r\n\r\n var _rows = function(elements) {\r\n var tolerance = 1,\r\n $elements = $(elements),\r\n lastTop = null,\r\n rows = [];\r\n\r\n // group elements by their top position\r\n $elements.each(function(){\r\n var $that = $(this),\r\n top = $that.offset().top - _parse($that.css('margin-top')),\r\n lastRow = rows.length > 0 ? rows[rows.length - 1] : null;\r\n\r\n if (lastRow === null) {\r\n // first item on the row, so just push it\r\n rows.push($that);\r\n } else {\r\n // if the row top is the same, add to the row group\r\n if (Math.floor(Math.abs(lastTop - top)) <= tolerance) {\r\n rows[rows.length - 1] = lastRow.add($that);\r\n } else {\r\n // otherwise start a new row group\r\n rows.push($that);\r\n }\r\n }\r\n\r\n // keep track of the last row top\r\n lastTop = top;\r\n });\r\n\r\n return rows;\r\n };\r\n\r\n /*\r\n * _parseOptions\r\n * handle plugin options\r\n */\r\n\r\n var _parseOptions = function(options) {\r\n var opts = {\r\n byRow: true,\r\n property: 'height',\r\n target: null,\r\n remove: false\r\n };\r\n\r\n if (typeof options === 'object') {\r\n return $.extend(opts, options);\r\n }\r\n\r\n if (typeof options === 'boolean') {\r\n opts.byRow = options;\r\n } else if (options === 'remove') {\r\n opts.remove = true;\r\n }\r\n\r\n return opts;\r\n };\r\n\r\n /*\r\n * matchHeight\r\n * plugin definition\r\n */\r\n\r\n var matchHeight = $.fn.matchHeight = function(options) {\r\n var opts = _parseOptions(options);\r\n\r\n // handle remove\r\n if (opts.remove) {\r\n var that = this;\r\n\r\n // remove fixed height from all selected elements\r\n this.css(opts.property, '');\r\n\r\n // remove selected elements from all groups\r\n $.each(matchHeight._groups, function(key, group) {\r\n group.elements = group.elements.not(that);\r\n });\r\n\r\n // TODO: cleanup empty groups\r\n\r\n return this;\r\n }\r\n\r\n if (this.length <= 1 && !opts.target) {\r\n return this;\r\n }\r\n\r\n // keep track of this group so we can re-apply later on load and resize events\r\n matchHeight._groups.push({\r\n elements: this,\r\n options: opts\r\n });\r\n\r\n // match each element's height to the tallest element in the selection\r\n matchHeight._apply(this, opts);\r\n\r\n return this;\r\n };\r\n\r\n /*\r\n * plugin global options\r\n */\r\n\r\n matchHeight._groups = [];\r\n matchHeight._throttle = 80;\r\n matchHeight._maintainScroll = false;\r\n matchHeight._beforeUpdate = null;\r\n matchHeight._afterUpdate = null;\r\n\r\n /*\r\n * matchHeight._apply\r\n * apply matchHeight to given elements\r\n */\r\n\r\n matchHeight._apply = function(elements, options) {\r\n var opts = _parseOptions(options),\r\n $elements = $(elements),\r\n rows = [$elements];\r\n\r\n // take note of scroll position\r\n var scrollTop = $(window).scrollTop(),\r\n htmlHeight = $('html').outerHeight(true);\r\n\r\n // get hidden parents\r\n var $hiddenParents = $elements.parents().filter(':hidden');\r\n\r\n // cache the original inline style\r\n $hiddenParents.each(function() {\r\n var $that = $(this);\r\n $that.data('style-cache', $that.attr('style'));\r\n });\r\n\r\n // temporarily must force hidden parents visible\r\n $hiddenParents.css('display', 'block');\r\n\r\n // get rows if using byRow, otherwise assume one row\r\n if (opts.byRow && !opts.target) {\r\n\r\n // must first force an arbitrary equal height so floating elements break evenly\r\n $elements.each(function() {\r\n var $that = $(this),\r\n display = $that.css('display');\r\n\r\n // temporarily force a usable display value\r\n if (display !== 'inline-block' && display !== 'inline-flex') {\r\n display = 'block';\r\n }\r\n\r\n // cache the original inline style\r\n $that.data('style-cache', $that.attr('style'));\r\n\r\n $that.css({\r\n 'display': display,\r\n 'padding-top': '0',\r\n 'padding-bottom': '0',\r\n 'margin-top': '0',\r\n 'margin-bottom': '0',\r\n 'border-top-width': '0',\r\n 'border-bottom-width': '0',\r\n 'height': '100px'\r\n });\r\n });\r\n\r\n // get the array of rows (based on element top position)\r\n rows = _rows($elements);\r\n\r\n // revert original inline styles\r\n $elements.each(function() {\r\n var $that = $(this);\r\n $that.attr('style', $that.data('style-cache') || '');\r\n });\r\n }\r\n\r\n $.each(rows, function(key, row) {\r\n var $row = $(row),\r\n targetHeight = 0;\r\n\r\n if (!opts.target) {\r\n // skip apply to rows with only one item\r\n if (opts.byRow && $row.length <= 1) {\r\n $row.css(opts.property, '');\r\n return;\r\n }\r\n\r\n // iterate the row and find the max height\r\n $row.each(function(){\r\n var $that = $(this),\r\n display = $that.css('display');\r\n\r\n // temporarily force a usable display value\r\n if (display !== 'inline-block' && display !== 'inline-flex') {\r\n display = 'block';\r\n }\r\n\r\n // ensure we get the correct actual height (and not a previously set height value)\r\n var css = { 'display': display };\r\n css[opts.property] = '';\r\n $that.css(css);\r\n\r\n // find the max height (including padding, but not margin)\r\n if ($that.outerHeight(false) > targetHeight) {\r\n targetHeight = $that.outerHeight(false);\r\n }\r\n\r\n // revert display block\r\n $that.css('display', '');\r\n });\r\n } else {\r\n // if target set, use the height of the target element\r\n targetHeight = opts.target.outerHeight(false);\r\n }\r\n\r\n // iterate the row and apply the height to all elements\r\n $row.each(function(){\r\n var $that = $(this),\r\n verticalPadding = 0;\r\n\r\n // don't apply to a target\r\n if (opts.target && $that.is(opts.target)) {\r\n return;\r\n }\r\n\r\n // handle padding and border correctly (required when not using border-box)\r\n if ($that.css('box-sizing') !== 'border-box') {\r\n verticalPadding += _parse($that.css('border-top-width')) + _parse($that.css('border-bottom-width'));\r\n verticalPadding += _parse($that.css('padding-top')) + _parse($that.css('padding-bottom'));\r\n }\r\n\r\n // set the height (accounting for padding and border)\r\n $that.css(opts.property, (targetHeight - verticalPadding) + 'px');\r\n });\r\n });\r\n\r\n // revert hidden parents\r\n $hiddenParents.each(function() {\r\n var $that = $(this);\r\n $that.attr('style', $that.data('style-cache') || null);\r\n });\r\n\r\n // restore scroll position if enabled\r\n if (matchHeight._maintainScroll) {\r\n $(window).scrollTop((scrollTop / htmlHeight) * $('html').outerHeight(true));\r\n }\r\n\r\n return this;\r\n };\r\n\r\n /*\r\n * matchHeight._applyDataApi\r\n * applies matchHeight to all elements with a data-match-height attribute\r\n */\r\n\r\n matchHeight._applyDataApi = function() {\r\n var groups = {};\r\n\r\n // generate groups by their groupId set by elements using data-match-height\r\n $('[data-match-height], [data-mh]').each(function() {\r\n var $this = $(this),\r\n groupId = $this.attr('data-mh') || $this.attr('data-match-height');\r\n\r\n if (groupId in groups) {\r\n groups[groupId] = groups[groupId].add($this);\r\n } else {\r\n groups[groupId] = $this;\r\n }\r\n });\r\n\r\n // apply matchHeight to each group\r\n $.each(groups, function() {\r\n this.matchHeight(true);\r\n });\r\n };\r\n\r\n /*\r\n * matchHeight._update\r\n * updates matchHeight on all current groups with their correct options\r\n */\r\n\r\n var _update = function(event) {\r\n if (matchHeight._beforeUpdate) {\r\n matchHeight._beforeUpdate(event, matchHeight._groups);\r\n }\r\n\r\n $.each(matchHeight._groups, function() {\r\n matchHeight._apply(this.elements, this.options);\r\n });\r\n\r\n if (matchHeight._afterUpdate) {\r\n matchHeight._afterUpdate(event, matchHeight._groups);\r\n }\r\n };\r\n\r\n matchHeight._update = function(throttle, event) {\r\n // prevent update if fired from a resize event\r\n // where the viewport width hasn't actually changed\r\n // fixes an event looping bug in IE8\r\n if (event && event.type === 'resize') {\r\n var windowWidth = $(window).width();\r\n if (windowWidth === _previousResizeWidth) {\r\n return;\r\n }\r\n _previousResizeWidth = windowWidth;\r\n }\r\n\r\n // throttle updates\r\n if (!throttle) {\r\n _update(event);\r\n } else if (_updateTimeout === -1) {\r\n _updateTimeout = setTimeout(function() {\r\n _update(event);\r\n _updateTimeout = -1;\r\n }, matchHeight._throttle);\r\n }\r\n };\r\n\r\n /*\r\n * bind events\r\n */\r\n\r\n // apply on DOM ready event\r\n $(matchHeight._applyDataApi);\r\n\r\n // update heights on load and resize events\r\n $(window).bind('load', function(event) {\r\n matchHeight._update(false, event);\r\n });\r\n\r\n // throttled update heights on resize events\r\n $(window).bind('resize orientationchange', function(event) {\r\n matchHeight._update(true, event);\r\n });\r\n\r\n})(jQuery);\r\n","jQuery(document).ready(function ($) {\r\n\r\n\r\n\r\n var winWidth = $( 'body' ).width();\r\n\r\n\r\n $('.underlay').css('max-width', winWidth);\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n $('.mh-item').matchHeight();\r\n\r\n $('.controlBox__title').matchHeight();\r\n\r\n\r\n $('.appRow__item').matchHeight();\r\n\r\n\r\n\r\n\r\n // Makes sure all AJAX calls have the token\r\n $.ajaxSetup({\r\n headers: {\r\n 'X-CSRF-TOKEN': $('meta[name=\"csrf-token\"]').attr('content')\r\n }\r\n });\r\n\r\n // Sets up the timer (big top of the page timer)\r\n var $timer = $('.timer:not(.static)');\r\n if($timer.length>0) {\r\n var $hour=$timer.find('input[name=hour]');\r\n var $minute=$timer.find('input[name=minute]');\r\n var $second=$timer.find('input[name=second]');\r\n\r\n window.setInterval(function(){\r\n if(!$timer.hasClass('static')) { // allows us to pause the timer\r\n var sec = Number($second.val());\r\n var min = Number($minute.val());\r\n var hour = Number($hour.val());\r\n sec++;\r\n if(sec==60) {sec=0; min++;}\r\n if(min==60) {min=0; hour++;}\r\n $hour.val($.trim(hour).length === 1 ? '0' + hour : hour);\r\n $minute.val($.trim(min).length === 1 ? '0' + min : min);\r\n $second.val($.trim(sec).length === 1 ? '0' + sec : sec);\r\n }\r\n }, 1000);\r\n }\r\n\r\n\r\n // stops the timer if the numbers are changed manually (might not be something we want, but ¯\\_(ツ)_/¯ )\r\n $('.timer').on('change',':input',function(){\r\n $('.timer').removeClass('static').addClass('static');\r\n });\r\n $('.appForm').on('click','button[type=submit]',function(e){\r\n e.preventDefault();\r\n $(this).closest('.appForm').attr('action',$(this).data('action')).submit();\r\n });\r\n\r\n $('.confirm-action').on('click',function(e){\r\n if(!confirm($(this).data('confirm'))) e.preventDefault();\r\n });\r\n\r\n\r\n});\r\n\r\n\r\n\r\nif(window.location.href.indexOf('api/fitbit/auth')>=0 && window.location.hash!='') {\r\n window.location.replace(window.location.origin+window.location.pathname+'?'+window.location.hash.substring(1));\r\n}","jQuery( document ).ready(function( $ ) {\r\n \r\n var question = $('.nAccordian .question');\r\n var answer = $('.nAccordian .answer');\r\n \r\n $(question).click(function(){\r\n $(answer).slideUp('fast');\r\n $(this).parent().removeClass('nAccordian-open');\r\n \r\n if($(this).next().is(':hidden')){\r\n $(this).next().slideDown('fast');\r\n $(this).parent().addClass('nAccordian-open');\r\n }\r\n \r\n }); \r\n \r\n});","/* js/addEvent.js */\r\n\r\n$('.js_conditionalTrigger').on('change',function(){\r\n if( $(this).val()===\"other\"){\r\n $(this).closest('.js_conditionalGroup').find('.js_conditionalTarget').fadeIn().find('.formInput').focus();\r\n }\r\n else{\r\n $(this).closest('.js_conditionalGroup').find('.js_conditionalTarget').fadeOut();\r\n }\r\n});","/* js/appBar.js */\r\n\r\n\r\njQuery(document).ready(function ($) {\r\n\r\n\r\n $('.js-navBoxTrigger').click(function () {\r\n $('body').toggleClass('nav-is-open');\r\n });\r\n\r\n\r\n $(document).mouseup(function (e) {\r\n var container = $('.appBar');\r\n\r\n if (!container.is(e.target) // if the target of the click isn't the container...\r\n && container.has(e.target).length === 0) // ... nor a descendant of the container\r\n {\r\n $('body').removeClass('nav-is-open');\r\n }\r\n });\r\n\r\n\r\n});","/* js/appModal.js */\r\n\r\njQuery( document ).ready(function( $ ) {\r\n\r\n $('.js-modalTrigger').click(function () {\r\n $('body').addClass('modal-is-open');\r\n });\r\n\r\n\r\n\r\n $(document).mouseup(function (e)\r\n {\r\n var container = $('.appModal__content');\r\n\r\n if (!container.is(e.target) // if the target of the click isn't the container...\r\n && container.has(e.target).length === 0) // ... nor a descendant of the container\r\n {\r\n $('body').removeClass('modal-is-open');\r\n }\r\n });\r\n\r\n\r\n\r\n});","/* js/appTimer.js */\r\n\r\njQuery( document ).ready(function( $ ) {\r\n\r\n $('.js-timerTrigger').click(function () {\r\n $(this).css('display', 'none');\r\n $('.btnStack').css('display','block');\r\n });\r\n\r\n $('.js-timerActionsClose').click(function () {\r\n $('.js-timerTrigger').css('display', 'inline-block');\r\n $('.btnStack').css('display','none');\r\n });\r\n\r\n\r\n\r\n});","/* js/datePicker.js */\r\n\r\n/*!\r\n * pickadate.js v3.5.6, 2015/04/20\r\n * By Amsul, http://amsul.ca\r\n * Hosted on http://amsul.github.io/pickadate.js\r\n * Licensed under MIT\r\n */\r\n\r\n(function ( factory ) {\r\n\r\n // AMD.\r\n if ( typeof define == 'function' && define.amd )\r\n define( 'picker', ['jquery'], factory )\r\n\r\n // Node.js/browserify.\r\n else if ( typeof exports == 'object' )\r\n module.exports = factory( require('jquery') )\r\n\r\n // Browser globals.\r\n else this.Picker = factory( jQuery )\r\n\r\n}(function( $ ) {\r\n\r\nvar $window = $( window )\r\nvar $document = $( document )\r\nvar $html = $( document.documentElement )\r\nvar supportsTransitions = document.documentElement.style.transition != null\r\n\r\n\r\n/**\r\n * The picker constructor that creates a blank picker.\r\n */\r\nfunction PickerConstructor( ELEMENT, NAME, COMPONENT, OPTIONS ) {\r\n\r\n // If there’s no element, return the picker constructor.\r\n if ( !ELEMENT ) return PickerConstructor\r\n\r\n\r\n var\r\n IS_DEFAULT_THEME = false,\r\n\r\n\r\n // The state of the picker.\r\n STATE = {\r\n id: ELEMENT.id || 'P' + Math.abs( ~~(Math.random() * new Date()) )\r\n },\r\n\r\n\r\n // Merge the defaults and options passed.\r\n SETTINGS = COMPONENT ? $.extend( true, {}, COMPONENT.defaults, OPTIONS ) : OPTIONS || {},\r\n\r\n\r\n // Merge the default classes with the settings classes.\r\n CLASSES = $.extend( {}, PickerConstructor.klasses(), SETTINGS.klass ),\r\n\r\n\r\n // The element node wrapper into a jQuery object.\r\n $ELEMENT = $( ELEMENT ),\r\n\r\n\r\n // Pseudo picker constructor.\r\n PickerInstance = function() {\r\n return this.start()\r\n },\r\n\r\n\r\n // The picker prototype.\r\n P = PickerInstance.prototype = {\r\n\r\n constructor: PickerInstance,\r\n\r\n $node: $ELEMENT,\r\n\r\n\r\n /**\r\n * Initialize everything\r\n */\r\n start: function() {\r\n\r\n // If it’s already started, do nothing.\r\n if ( STATE && STATE.start ) return P\r\n\r\n\r\n // Update the picker states.\r\n STATE.methods = {}\r\n STATE.start = true\r\n STATE.open = false\r\n STATE.type = ELEMENT.type\r\n\r\n\r\n // Confirm focus state, convert into text input to remove UA stylings,\r\n // and set as readonly to prevent keyboard popup.\r\n ELEMENT.autofocus = ELEMENT == getActiveElement()\r\n ELEMENT.readOnly = !SETTINGS.editable\r\n ELEMENT.id = ELEMENT.id || STATE.id\r\n if ( ELEMENT.type != 'text' ) {\r\n ELEMENT.type = 'text'\r\n }\r\n\r\n\r\n // Create a new picker component with the settings.\r\n P.component = new COMPONENT(P, SETTINGS)\r\n\r\n\r\n // Create the picker root and then prepare it.\r\n P.$root = $( '
' )\r\n prepareElementRoot()\r\n\r\n\r\n // Create the picker holder and then prepare it.\r\n P.$holder = $( createWrappedComponent() ).appendTo( P.$root )\r\n prepareElementHolder()\r\n\r\n\r\n // If there’s a format for the hidden input element, create the element.\r\n if ( SETTINGS.formatSubmit ) {\r\n prepareElementHidden()\r\n }\r\n\r\n\r\n // Prepare the input element.\r\n prepareElement()\r\n\r\n\r\n // Insert the hidden input as specified in the settings.\r\n if ( SETTINGS.containerHidden ) $( SETTINGS.containerHidden ).append( P._hidden )\r\n else $ELEMENT.after( P._hidden )\r\n\r\n\r\n // Insert the root as specified in the settings.\r\n if ( SETTINGS.container ) $( SETTINGS.container ).append( P.$root )\r\n else $ELEMENT.after( P.$root )\r\n\r\n\r\n // Bind the default component and settings events.\r\n P.on({\r\n start: P.component.onStart,\r\n render: P.component.onRender,\r\n stop: P.component.onStop,\r\n open: P.component.onOpen,\r\n close: P.component.onClose,\r\n set: P.component.onSet\r\n }).on({\r\n start: SETTINGS.onStart,\r\n render: SETTINGS.onRender,\r\n stop: SETTINGS.onStop,\r\n open: SETTINGS.onOpen,\r\n close: SETTINGS.onClose,\r\n set: SETTINGS.onSet\r\n })\r\n\r\n\r\n // Once we’re all set, check the theme in use.\r\n IS_DEFAULT_THEME = isUsingDefaultTheme( P.$holder[0] )\r\n\r\n\r\n // If the element has autofocus, open the picker.\r\n if ( ELEMENT.autofocus ) {\r\n P.open()\r\n }\r\n\r\n\r\n // Trigger queued the “start” and “render” events.\r\n return P.trigger( 'start' ).trigger( 'render' )\r\n }, //start\r\n\r\n\r\n /**\r\n * Render a new picker\r\n */\r\n render: function( entireComponent ) {\r\n\r\n // Insert a new component holder in the root or box.\r\n if ( entireComponent ) {\r\n P.$holder = $( createWrappedComponent() )\r\n prepareElementHolder()\r\n P.$root.html( P.$holder )\r\n }\r\n else P.$root.find( '.' + CLASSES.box ).html( P.component.nodes( STATE.open ) )\r\n\r\n // Trigger the queued “render” events.\r\n return P.trigger( 'render' )\r\n }, //render\r\n\r\n\r\n /**\r\n * Destroy everything\r\n */\r\n stop: function() {\r\n\r\n // If it’s already stopped, do nothing.\r\n if ( !STATE.start ) return P\r\n\r\n // Then close the picker.\r\n P.close()\r\n\r\n // Remove the hidden field.\r\n if ( P._hidden ) {\r\n P._hidden.parentNode.removeChild( P._hidden )\r\n }\r\n\r\n // Remove the root.\r\n P.$root.remove()\r\n\r\n // Remove the input class, remove the stored data, and unbind\r\n // the events (after a tick for IE - see `P.close`).\r\n $ELEMENT.removeClass( CLASSES.input ).removeData( NAME )\r\n setTimeout( function() {\r\n $ELEMENT.off( '.' + STATE.id )\r\n }, 0)\r\n\r\n // Restore the element state\r\n ELEMENT.type = STATE.type\r\n ELEMENT.readOnly = false\r\n\r\n // Trigger the queued “stop” events.\r\n P.trigger( 'stop' )\r\n\r\n // Reset the picker states.\r\n STATE.methods = {}\r\n STATE.start = false\r\n\r\n return P\r\n }, //stop\r\n\r\n\r\n /**\r\n * Open up the picker\r\n */\r\n open: function( dontGiveFocus ) {\r\n\r\n // If it’s already open, do nothing.\r\n if ( STATE.open ) return P\r\n\r\n // Add the “active” class.\r\n $ELEMENT.addClass( CLASSES.active )\r\n aria( ELEMENT, 'expanded', true )\r\n\r\n // * A Firefox bug, when `html` has `overflow:hidden`, results in\r\n // killing transitions :(. So add the “opened” state on the next tick.\r\n // Bug: https://bugzilla.mozilla.org/show_bug.cgi?id=625289\r\n setTimeout( function() {\r\n\r\n // Add the “opened” class to the picker root.\r\n P.$root.addClass( CLASSES.opened )\r\n aria( P.$root[0], 'hidden', false )\r\n\r\n }, 0 )\r\n\r\n // If we have to give focus, bind the element and doc events.\r\n if ( dontGiveFocus !== false ) {\r\n\r\n // Set it as open.\r\n STATE.open = true\r\n\r\n // Prevent the page from scrolling.\r\n if ( IS_DEFAULT_THEME ) {\r\n $html.\r\n css( 'overflow', 'hidden' ).\r\n css( 'padding-right', '+=' + getScrollbarWidth() )\r\n }\r\n\r\n // Pass focus to the root element’s jQuery object.\r\n focusPickerOnceOpened()\r\n\r\n // Bind the document events.\r\n $document.on( 'click.' + STATE.id + ' focusin.' + STATE.id, function( event ) {\r\n\r\n var target = event.target\r\n\r\n // If the target of the event is not the element, close the picker picker.\r\n // * Don’t worry about clicks or focusins on the root because those don’t bubble up.\r\n // Also, for Firefox, a click on an `option` element bubbles up directly\r\n // to the doc. So make sure the target wasn't the doc.\r\n // * In Firefox stopPropagation() doesn’t prevent right-click events from bubbling,\r\n // which causes the picker to unexpectedly close when right-clicking it. So make\r\n // sure the event wasn’t a right-click.\r\n if ( target != ELEMENT && target != document && event.which != 3 ) {\r\n\r\n // If the target was the holder that covers the screen,\r\n // keep the element focused to maintain tabindex.\r\n P.close( target === P.$holder[0] )\r\n }\r\n\r\n }).on( 'keydown.' + STATE.id, function( event ) {\r\n\r\n var\r\n // Get the keycode.\r\n keycode = event.keyCode,\r\n\r\n // Translate that to a selection change.\r\n keycodeToMove = P.component.key[ keycode ],\r\n\r\n // Grab the target.\r\n target = event.target\r\n\r\n\r\n // On escape, close the picker and give focus.\r\n if ( keycode == 27 ) {\r\n P.close( true )\r\n }\r\n\r\n\r\n // Check if there is a key movement or “enter” keypress on the element.\r\n else if ( target == P.$holder[0] && ( keycodeToMove || keycode == 13 ) ) {\r\n\r\n // Prevent the default action to stop page movement.\r\n event.preventDefault()\r\n\r\n // Trigger the key movement action.\r\n if ( keycodeToMove ) {\r\n PickerConstructor._.trigger( P.component.key.go, P, [ PickerConstructor._.trigger( keycodeToMove ) ] )\r\n }\r\n\r\n // On “enter”, if the highlighted item isn’t disabled, set the value and close.\r\n else if ( !P.$root.find( '.' + CLASSES.highlighted ).hasClass( CLASSES.disabled ) ) {\r\n P.set( 'select', P.component.item.highlight )\r\n if ( SETTINGS.closeOnSelect ) {\r\n P.close( true )\r\n }\r\n }\r\n }\r\n\r\n\r\n // If the target is within the root and “enter” is pressed,\r\n // prevent the default action and trigger a click on the target instead.\r\n else if ( $.contains( P.$root[0], target ) && keycode == 13 ) {\r\n event.preventDefault()\r\n target.click()\r\n }\r\n })\r\n }\r\n\r\n // Trigger the queued “open” events.\r\n return P.trigger( 'open' )\r\n }, //open\r\n\r\n\r\n /**\r\n * Close the picker\r\n */\r\n close: function( giveFocus ) {\r\n\r\n // If we need to give focus, do it before changing states.\r\n if ( giveFocus ) {\r\n if ( SETTINGS.editable ) {\r\n ELEMENT.focus()\r\n }\r\n else {\r\n // ....ah yes! It would’ve been incomplete without a crazy workaround for IE :|\r\n // The focus is triggered *after* the close has completed - causing it\r\n // to open again. So unbind and rebind the event at the next tick.\r\n P.$holder.off( 'focus.toOpen' ).focus()\r\n setTimeout( function() {\r\n P.$holder.on( 'focus.toOpen', handleFocusToOpenEvent )\r\n }, 0 )\r\n }\r\n }\r\n\r\n // Remove the “active” class.\r\n $ELEMENT.removeClass( CLASSES.active )\r\n aria( ELEMENT, 'expanded', false )\r\n\r\n // * A Firefox bug, when `html` has `overflow:hidden`, results in\r\n // killing transitions :(. So remove the “opened” state on the next tick.\r\n // Bug: https://bugzilla.mozilla.org/show_bug.cgi?id=625289\r\n setTimeout( function() {\r\n\r\n // Remove the “opened” and “focused” class from the picker root.\r\n P.$root.removeClass( CLASSES.opened + ' ' + CLASSES.focused )\r\n aria( P.$root[0], 'hidden', true )\r\n\r\n }, 0 )\r\n\r\n // If it’s already closed, do nothing more.\r\n if ( !STATE.open ) return P\r\n\r\n // Set it as closed.\r\n STATE.open = false\r\n\r\n // Allow the page to scroll.\r\n if ( IS_DEFAULT_THEME ) {\r\n $html.\r\n css( 'overflow', '' ).\r\n css( 'padding-right', '-=' + getScrollbarWidth() )\r\n }\r\n\r\n // Unbind the document events.\r\n $document.off( '.' + STATE.id )\r\n\r\n // Trigger the queued “close” events.\r\n return P.trigger( 'close' )\r\n }, //close\r\n\r\n\r\n /**\r\n * Clear the values\r\n */\r\n clear: function( options ) {\r\n return P.set( 'clear', null, options )\r\n }, //clear\r\n\r\n\r\n /**\r\n * Set something\r\n */\r\n set: function( thing, value, options ) {\r\n\r\n var thingItem, thingValue,\r\n thingIsObject = $.isPlainObject( thing ),\r\n thingObject = thingIsObject ? thing : {}\r\n\r\n // Make sure we have usable options.\r\n options = thingIsObject && $.isPlainObject( value ) ? value : options || {}\r\n\r\n if ( thing ) {\r\n\r\n // If the thing isn’t an object, make it one.\r\n if ( !thingIsObject ) {\r\n thingObject[ thing ] = value\r\n }\r\n\r\n // Go through the things of items to set.\r\n for ( thingItem in thingObject ) {\r\n\r\n // Grab the value of the thing.\r\n thingValue = thingObject[ thingItem ]\r\n\r\n // First, if the item exists and there’s a value, set it.\r\n if ( thingItem in P.component.item ) {\r\n if ( thingValue === undefined ) thingValue = null\r\n P.component.set( thingItem, thingValue, options )\r\n }\r\n\r\n // Then, check to update the element value and broadcast a change.\r\n if ( thingItem == 'select' || thingItem == 'clear' ) {\r\n $ELEMENT.\r\n val( thingItem == 'clear' ? '' : P.get( thingItem, SETTINGS.format ) ).\r\n trigger( 'change' )\r\n }\r\n }\r\n\r\n // Render a new picker.\r\n P.render()\r\n }\r\n\r\n // When the method isn’t muted, trigger queued “set” events and pass the `thingObject`.\r\n return options.muted ? P : P.trigger( 'set', thingObject )\r\n }, //set\r\n\r\n\r\n /**\r\n * Get something\r\n */\r\n get: function( thing, format ) {\r\n\r\n // Make sure there’s something to get.\r\n thing = thing || 'value'\r\n\r\n // If a picker state exists, return that.\r\n if ( STATE[ thing ] != null ) {\r\n return STATE[ thing ]\r\n }\r\n\r\n // Return the submission value, if that.\r\n if ( thing == 'valueSubmit' ) {\r\n if ( P._hidden ) {\r\n return P._hidden.value\r\n }\r\n thing = 'value'\r\n }\r\n\r\n // Return the value, if that.\r\n if ( thing == 'value' ) {\r\n return ELEMENT.value\r\n }\r\n\r\n // Check if a component item exists, return that.\r\n if ( thing in P.component.item ) {\r\n if ( typeof format == 'string' ) {\r\n var thingValue = P.component.get( thing )\r\n return thingValue ?\r\n PickerConstructor._.trigger(\r\n P.component.formats.toString,\r\n P.component,\r\n [ format, thingValue ]\r\n ) : ''\r\n }\r\n return P.component.get( thing )\r\n }\r\n }, //get\r\n\r\n\r\n\r\n /**\r\n * Bind events on the things.\r\n */\r\n on: function( thing, method, internal ) {\r\n\r\n var thingName, thingMethod,\r\n thingIsObject = $.isPlainObject( thing ),\r\n thingObject = thingIsObject ? thing : {}\r\n\r\n if ( thing ) {\r\n\r\n // If the thing isn’t an object, make it one.\r\n if ( !thingIsObject ) {\r\n thingObject[ thing ] = method\r\n }\r\n\r\n // Go through the things to bind to.\r\n for ( thingName in thingObject ) {\r\n\r\n // Grab the method of the thing.\r\n thingMethod = thingObject[ thingName ]\r\n\r\n // If it was an internal binding, prefix it.\r\n if ( internal ) {\r\n thingName = '_' + thingName\r\n }\r\n\r\n // Make sure the thing methods collection exists.\r\n STATE.methods[ thingName ] = STATE.methods[ thingName ] || []\r\n\r\n // Add the method to the relative method collection.\r\n STATE.methods[ thingName ].push( thingMethod )\r\n }\r\n }\r\n\r\n return P\r\n }, //on\r\n\r\n\r\n\r\n /**\r\n * Unbind events on the things.\r\n */\r\n off: function() {\r\n var i, thingName,\r\n names = arguments;\r\n for ( i = 0, namesCount = names.length; i < namesCount; i += 1 ) {\r\n thingName = names[i]\r\n if ( thingName in STATE.methods ) {\r\n delete STATE.methods[thingName]\r\n }\r\n }\r\n return P\r\n },\r\n\r\n\r\n /**\r\n * Fire off method events.\r\n */\r\n trigger: function( name, data ) {\r\n var _trigger = function( name ) {\r\n var methodList = STATE.methods[ name ]\r\n if ( methodList ) {\r\n methodList.map( function( method ) {\r\n PickerConstructor._.trigger( method, P, [ data ] )\r\n })\r\n }\r\n }\r\n _trigger( '_' + name )\r\n _trigger( name )\r\n return P\r\n } //trigger\r\n } //PickerInstance.prototype\r\n\r\n\r\n /**\r\n * Wrap the picker holder components together.\r\n */\r\n function createWrappedComponent() {\r\n\r\n // Create a picker wrapper holder\r\n return PickerConstructor._.node( 'div',\r\n\r\n // Create a picker wrapper node\r\n PickerConstructor._.node( 'div',\r\n\r\n // Create a picker frame\r\n PickerConstructor._.node( 'div',\r\n\r\n // Create a picker box node\r\n PickerConstructor._.node( 'div',\r\n\r\n // Create the components nodes.\r\n P.component.nodes( STATE.open ),\r\n\r\n // The picker box class\r\n CLASSES.box\r\n ),\r\n\r\n // Picker wrap class\r\n CLASSES.wrap\r\n ),\r\n\r\n // Picker frame class\r\n CLASSES.frame\r\n ),\r\n\r\n // Picker holder class\r\n CLASSES.holder,\r\n\r\n 'tabindex=\"-1\"'\r\n ) //endreturn\r\n } //createWrappedComponent\r\n\r\n\r\n\r\n /**\r\n * Prepare the input element with all bindings.\r\n */\r\n function prepareElement() {\r\n\r\n $ELEMENT.\r\n\r\n // Store the picker data by component name.\r\n data(NAME, P).\r\n\r\n // Add the “input” class name.\r\n addClass(CLASSES.input).\r\n\r\n // If there’s a `data-value`, update the value of the element.\r\n val( $ELEMENT.data('value') ?\r\n P.get('select', SETTINGS.format) :\r\n ELEMENT.value\r\n )\r\n\r\n\r\n // Only bind keydown events if the element isn’t editable.\r\n if ( !SETTINGS.editable ) {\r\n\r\n $ELEMENT.\r\n\r\n // On focus/click, open the picker.\r\n on( 'focus.' + STATE.id + ' click.' + STATE.id, function(event) {\r\n event.preventDefault()\r\n P.open()\r\n }).\r\n\r\n // Handle keyboard event based on the picker being opened or not.\r\n on( 'keydown.' + STATE.id, handleKeydownEvent )\r\n }\r\n\r\n\r\n // Update the aria attributes.\r\n aria(ELEMENT, {\r\n haspopup: true,\r\n expanded: false,\r\n readonly: false,\r\n owns: ELEMENT.id + '_root'\r\n })\r\n }\r\n\r\n\r\n /**\r\n * Prepare the root picker element with all bindings.\r\n */\r\n function prepareElementRoot() {\r\n aria( P.$root[0], 'hidden', true )\r\n }\r\n\r\n\r\n /**\r\n * Prepare the holder picker element with all bindings.\r\n */\r\n function prepareElementHolder() {\r\n\r\n P.$holder.\r\n\r\n on({\r\n\r\n // For iOS8.\r\n keydown: handleKeydownEvent,\r\n\r\n 'focus.toOpen': handleFocusToOpenEvent,\r\n\r\n blur: function() {\r\n // Remove the “target” class.\r\n $ELEMENT.removeClass( CLASSES.target )\r\n },\r\n\r\n // When something within the holder is focused, stop from bubbling\r\n // to the doc and remove the “focused” state from the root.\r\n focusin: function( event ) {\r\n P.$root.removeClass( CLASSES.focused )\r\n event.stopPropagation()\r\n },\r\n\r\n // When something within the holder is clicked, stop it\r\n // from bubbling to the doc.\r\n 'mousedown click': function( event ) {\r\n\r\n var target = event.target\r\n\r\n // Make sure the target isn’t the root holder so it can bubble up.\r\n if ( target != P.$holder[0] ) {\r\n\r\n event.stopPropagation()\r\n\r\n // * For mousedown events, cancel the default action in order to\r\n // prevent cases where focus is shifted onto external elements\r\n // when using things like jQuery mobile or MagnificPopup (ref: #249 & #120).\r\n // Also, for Firefox, don’t prevent action on the `option` element.\r\n if ( event.type == 'mousedown' && !$( target ).is( 'input, select, textarea, button, option' )) {\r\n\r\n event.preventDefault()\r\n\r\n // Re-focus onto the holder so that users can click away\r\n // from elements focused within the picker.\r\n P.$holder[0].focus()\r\n }\r\n }\r\n }\r\n\r\n }).\r\n\r\n // If there’s a click on an actionable element, carry out the actions.\r\n on( 'click', '[data-pick], [data-nav], [data-clear], [data-close]', function() {\r\n\r\n var $target = $( this ),\r\n targetData = $target.data(),\r\n targetDisabled = $target.hasClass( CLASSES.navDisabled ) || $target.hasClass( CLASSES.disabled ),\r\n\r\n // * For IE, non-focusable elements can be active elements as well\r\n // (http://stackoverflow.com/a/2684561).\r\n activeElement = getActiveElement()\r\n activeElement = activeElement && ( activeElement.type || activeElement.href )\r\n\r\n // If it’s disabled or nothing inside is actively focused, re-focus the element.\r\n if ( targetDisabled || activeElement && !$.contains( P.$root[0], activeElement ) ) {\r\n P.$holder[0].focus()\r\n }\r\n\r\n // If something is superficially changed, update the `highlight` based on the `nav`.\r\n if ( !targetDisabled && targetData.nav ) {\r\n P.set( 'highlight', P.component.item.highlight, { nav: targetData.nav } )\r\n }\r\n\r\n // If something is picked, set `select` then close with focus.\r\n else if ( !targetDisabled && 'pick' in targetData ) {\r\n P.set( 'select', targetData.pick )\r\n if ( SETTINGS.closeOnSelect ) {\r\n P.close( true )\r\n }\r\n }\r\n\r\n // If a “clear” button is pressed, empty the values and close with focus.\r\n else if ( targetData.clear ) {\r\n P.clear()\r\n if ( SETTINGS.closeOnClear ) {\r\n P.close( true )\r\n }\r\n }\r\n\r\n else if ( targetData.close ) {\r\n P.close( true )\r\n }\r\n\r\n }) //P.$holder\r\n\r\n }\r\n\r\n\r\n /**\r\n * Prepare the hidden input element along with all bindings.\r\n */\r\n function prepareElementHidden() {\r\n\r\n var name\r\n\r\n if ( SETTINGS.hiddenName === true ) {\r\n name = ELEMENT.name\r\n ELEMENT.name = ''\r\n }\r\n else {\r\n name = [\r\n typeof SETTINGS.hiddenPrefix == 'string' ? SETTINGS.hiddenPrefix : '',\r\n typeof SETTINGS.hiddenSuffix == 'string' ? SETTINGS.hiddenSuffix : '_submit'\r\n ]\r\n name = name[0] + ELEMENT.name + name[1]\r\n }\r\n\r\n P._hidden = $(\r\n ''\r\n )[0]\r\n\r\n $ELEMENT.\r\n\r\n // If the value changes, update the hidden input with the correct format.\r\n on('change.' + STATE.id, function() {\r\n P._hidden.value = ELEMENT.value ?\r\n P.get('select', SETTINGS.formatSubmit) :\r\n ''\r\n })\r\n }\r\n\r\n\r\n // Wait for transitions to end before focusing the holder. Otherwise, while\r\n // using the `container` option, the view jumps to the container.\r\n function focusPickerOnceOpened() {\r\n\r\n if (IS_DEFAULT_THEME && supportsTransitions) {\r\n P.$holder.find('.' + CLASSES.frame).one('transitionend', function() {\r\n P.$holder[0].focus()\r\n })\r\n }\r\n else {\r\n P.$holder[0].focus()\r\n }\r\n }\r\n\r\n\r\n function handleFocusToOpenEvent(event) {\r\n\r\n // Stop the event from propagating to the doc.\r\n event.stopPropagation()\r\n\r\n // Add the “target” class.\r\n $ELEMENT.addClass( CLASSES.target )\r\n\r\n // Add the “focused” class to the root.\r\n P.$root.addClass( CLASSES.focused )\r\n\r\n // And then finally open the picker.\r\n P.open()\r\n }\r\n\r\n\r\n // For iOS8.\r\n function handleKeydownEvent( event ) {\r\n\r\n var keycode = event.keyCode,\r\n\r\n // Check if one of the delete keys was pressed.\r\n isKeycodeDelete = /^(8|46)$/.test(keycode)\r\n\r\n // For some reason IE clears the input value on “escape”.\r\n if ( keycode == 27 ) {\r\n P.close( true )\r\n return false\r\n }\r\n\r\n // Check if `space` or `delete` was pressed or the picker is closed with a key movement.\r\n if ( keycode == 32 || isKeycodeDelete || !STATE.open && P.component.key[keycode] ) {\r\n\r\n // Prevent it from moving the page and bubbling to doc.\r\n event.preventDefault()\r\n event.stopPropagation()\r\n\r\n // If `delete` was pressed, clear the values and close the picker.\r\n // Otherwise open the picker.\r\n if ( isKeycodeDelete ) { P.clear().close() }\r\n else { P.open() }\r\n }\r\n }\r\n\r\n\r\n // Return a new picker instance.\r\n return new PickerInstance()\r\n} //PickerConstructor\r\n\r\n\r\n\r\n/**\r\n * The default classes and prefix to use for the HTML classes.\r\n */\r\nPickerConstructor.klasses = function( prefix ) {\r\n prefix = prefix || 'picker'\r\n return {\r\n\r\n picker: prefix,\r\n opened: prefix + '--opened',\r\n focused: prefix + '--focused',\r\n\r\n input: prefix + '__input',\r\n active: prefix + '__input--active',\r\n target: prefix + '__input--target',\r\n\r\n holder: prefix + '__holder',\r\n\r\n frame: prefix + '__frame',\r\n wrap: prefix + '__wrap',\r\n\r\n box: prefix + '__box'\r\n }\r\n} //PickerConstructor.klasses\r\n\r\n\r\n\r\n/**\r\n * Check if the default theme is being used.\r\n */\r\nfunction isUsingDefaultTheme( element ) {\r\n\r\n var theme,\r\n prop = 'position'\r\n\r\n // For IE.\r\n if ( element.currentStyle ) {\r\n theme = element.currentStyle[prop]\r\n }\r\n\r\n // For normal browsers.\r\n else if ( window.getComputedStyle ) {\r\n theme = getComputedStyle( element )[prop]\r\n }\r\n\r\n return theme == 'fixed'\r\n}\r\n\r\n\r\n\r\n/**\r\n * Get the width of the browser’s scrollbar.\r\n * Taken from: https://github.com/VodkaBears/Remodal/blob/master/src/jquery.remodal.js\r\n */\r\nfunction getScrollbarWidth() {\r\n\r\n if ( $html.height() <= $window.height() ) {\r\n return 0\r\n }\r\n\r\n var $outer = $( '
' ).\r\n appendTo( 'body' )\r\n\r\n // Get the width without scrollbars.\r\n var widthWithoutScroll = $outer[0].offsetWidth\r\n\r\n // Force adding scrollbars.\r\n $outer.css( 'overflow', 'scroll' )\r\n\r\n // Add the inner div.\r\n var $inner = $( '
' ).appendTo( $outer )\r\n\r\n // Get the width with scrollbars.\r\n var widthWithScroll = $inner[0].offsetWidth\r\n\r\n // Remove the divs.\r\n $outer.remove()\r\n\r\n // Return the difference between the widths.\r\n return widthWithoutScroll - widthWithScroll\r\n}\r\n\r\n\r\n\r\n/**\r\n * PickerConstructor helper methods.\r\n */\r\nPickerConstructor._ = {\r\n\r\n /**\r\n * Create a group of nodes. Expects:\r\n * `\r\n {\r\n min: {Integer},\r\n max: {Integer},\r\n i: {Integer},\r\n node: {String},\r\n item: {Function}\r\n }\r\n * `\r\n */\r\n group: function( groupObject ) {\r\n\r\n var\r\n // Scope for the looped object\r\n loopObjectScope,\r\n\r\n // Create the nodes list\r\n nodesList = '',\r\n\r\n // The counter starts from the `min`\r\n counter = PickerConstructor._.trigger( groupObject.min, groupObject )\r\n\r\n\r\n // Loop from the `min` to `max`, incrementing by `i`\r\n for ( ; counter <= PickerConstructor._.trigger( groupObject.max, groupObject, [ counter ] ); counter += groupObject.i ) {\r\n\r\n // Trigger the `item` function within scope of the object\r\n loopObjectScope = PickerConstructor._.trigger( groupObject.item, groupObject, [ counter ] )\r\n\r\n // Splice the subgroup and create nodes out of the sub nodes\r\n nodesList += PickerConstructor._.node(\r\n groupObject.node,\r\n loopObjectScope[ 0 ], // the node\r\n loopObjectScope[ 1 ], // the classes\r\n loopObjectScope[ 2 ] // the attributes\r\n )\r\n }\r\n\r\n // Return the list of nodes\r\n return nodesList\r\n }, //group\r\n\r\n\r\n /**\r\n * Create a dom node string\r\n */\r\n node: function( wrapper, item, klass, attribute ) {\r\n\r\n // If the item is false-y, just return an empty string\r\n if ( !item ) return ''\r\n\r\n // If the item is an array, do a join\r\n item = $.isArray( item ) ? item.join( '' ) : item\r\n\r\n // Check for the class\r\n klass = klass ? ' class=\"' + klass + '\"' : ''\r\n\r\n // Check for any attributes\r\n attribute = attribute ? ' ' + attribute : ''\r\n\r\n // Return the wrapped item\r\n return '<' + wrapper + klass + attribute + '>' + item + ''\r\n }, //node\r\n\r\n\r\n /**\r\n * Lead numbers below 10 with a zero.\r\n */\r\n lead: function( number ) {\r\n return ( number < 10 ? '0': '' ) + number\r\n },\r\n\r\n\r\n /**\r\n * Trigger a function otherwise return the value.\r\n */\r\n trigger: function( callback, scope, args ) {\r\n return typeof callback == 'function' ? callback.apply( scope, args || [] ) : callback\r\n },\r\n\r\n\r\n /**\r\n * If the second character is a digit, length is 2 otherwise 1.\r\n */\r\n digits: function( string ) {\r\n return ( /\\d/ ).test( string[ 1 ] ) ? 2 : 1\r\n },\r\n\r\n\r\n /**\r\n * Tell if something is a date object.\r\n */\r\n isDate: function( value ) {\r\n return {}.toString.call( value ).indexOf( 'Date' ) > -1 && this.isInteger( value.getDate() )\r\n },\r\n\r\n\r\n /**\r\n * Tell if something is an integer.\r\n */\r\n isInteger: function( value ) {\r\n return {}.toString.call( value ).indexOf( 'Number' ) > -1 && value % 1 === 0\r\n },\r\n\r\n\r\n /**\r\n * Create ARIA attribute strings.\r\n */\r\n ariaAttr: ariaAttr\r\n} //PickerConstructor._\r\n\r\n\r\n\r\n/**\r\n * Extend the picker with a component and defaults.\r\n */\r\nPickerConstructor.extend = function( name, Component ) {\r\n\r\n // Extend jQuery.\r\n $.fn[ name ] = function( options, action ) {\r\n\r\n // Grab the component data.\r\n var componentData = this.data( name )\r\n\r\n // If the picker is requested, return the data object.\r\n if ( options == 'picker' ) {\r\n return componentData\r\n }\r\n\r\n // If the component data exists and `options` is a string, carry out the action.\r\n if ( componentData && typeof options == 'string' ) {\r\n return PickerConstructor._.trigger( componentData[ options ], componentData, [ action ] )\r\n }\r\n\r\n // Otherwise go through each matched element and if the component\r\n // doesn’t exist, create a new picker using `this` element\r\n // and merging the defaults and options with a deep copy.\r\n return this.each( function() {\r\n var $this = $( this )\r\n if ( !$this.data( name ) ) {\r\n new PickerConstructor( this, name, Component, options )\r\n }\r\n })\r\n }\r\n\r\n // Set the defaults.\r\n $.fn[ name ].defaults = Component.defaults\r\n} //PickerConstructor.extend\r\n\r\n\r\n\r\nfunction aria(element, attribute, value) {\r\n if ( $.isPlainObject(attribute) ) {\r\n for ( var key in attribute ) {\r\n ariaSet(element, key, attribute[key])\r\n }\r\n }\r\n else {\r\n ariaSet(element, attribute, value)\r\n }\r\n}\r\nfunction ariaSet(element, attribute, value) {\r\n element.setAttribute(\r\n (attribute == 'role' ? '' : 'aria-') + attribute,\r\n value\r\n )\r\n}\r\nfunction ariaAttr(attribute, data) {\r\n if ( !$.isPlainObject(attribute) ) {\r\n attribute = { attribute: data }\r\n }\r\n data = ''\r\n for ( var key in attribute ) {\r\n var attr = (key == 'role' ? '' : 'aria-') + key,\r\n attrVal = attribute[key]\r\n data += attrVal == null ? '' : attr + '=\"' + attribute[key] + '\"'\r\n }\r\n return data\r\n}\r\n\r\n// IE8 bug throws an error for activeElements within iframes.\r\nfunction getActiveElement() {\r\n try {\r\n return document.activeElement\r\n } catch ( err ) { }\r\n}\r\n\r\n\r\n\r\n// Expose the picker constructor.\r\nreturn PickerConstructor\r\n\r\n\r\n}));\r\n\r\n\r\n/*!\r\n * Date picker for pickadate.js v3.5.6\r\n * http://amsul.github.io/pickadate.js/date.htm\r\n */\r\n\r\n(function ( factory ) {\r\n\r\n // AMD.\r\n if ( typeof define == 'function' && define.amd )\r\n define( ['./picker', 'jquery'], factory )\r\n\r\n // Node.js/browserify.\r\n else if ( typeof exports == 'object' )\r\n module.exports = factory( require('./picker.js'), require('jquery') )\r\n\r\n // Browser globals.\r\n else factory( Picker, jQuery )\r\n\r\n}(function( Picker, $ ) {\r\n\r\n\r\n/**\r\n * Globals and constants\r\n */\r\nvar DAYS_IN_WEEK = 7,\r\n WEEKS_IN_CALENDAR = 6,\r\n _ = Picker._\r\n\r\n\r\n\r\n/**\r\n * The date picker constructor\r\n */\r\nfunction DatePicker( picker, settings ) {\r\n\r\n var calendar = this,\r\n element = picker.$node[ 0 ],\r\n elementValue = element.value,\r\n elementDataValue = picker.$node.data( 'value' ),\r\n valueString = elementDataValue || elementValue,\r\n formatString = elementDataValue ? settings.formatSubmit : settings.format,\r\n isRTL = function() {\r\n\r\n return element.currentStyle ?\r\n\r\n // For IE.\r\n element.currentStyle.direction == 'rtl' :\r\n\r\n // For normal browsers.\r\n getComputedStyle( picker.$root[0] ).direction == 'rtl'\r\n }\r\n\r\n calendar.settings = settings\r\n calendar.$node = picker.$node\r\n\r\n // The queue of methods that will be used to build item objects.\r\n calendar.queue = {\r\n min: 'measure create',\r\n max: 'measure create',\r\n now: 'now create',\r\n select: 'parse create validate',\r\n highlight: 'parse navigate create validate',\r\n view: 'parse create validate viewset',\r\n disable: 'deactivate',\r\n enable: 'activate'\r\n }\r\n\r\n // The component's item object.\r\n calendar.item = {}\r\n\r\n calendar.item.clear = null\r\n calendar.item.disable = ( settings.disable || [] ).slice( 0 )\r\n calendar.item.enable = -(function( collectionDisabled ) {\r\n return collectionDisabled[ 0 ] === true ? collectionDisabled.shift() : -1\r\n })( calendar.item.disable )\r\n\r\n calendar.\r\n set( 'min', settings.min ).\r\n set( 'max', settings.max ).\r\n set( 'now' )\r\n\r\n // When there’s a value, set the `select`, which in turn\r\n // also sets the `highlight` and `view`.\r\n if ( valueString ) {\r\n calendar.set( 'select', valueString, {\r\n format: formatString,\r\n defaultValue: true\r\n })\r\n }\r\n\r\n // If there’s no value, default to highlighting “today”.\r\n else {\r\n calendar.\r\n set( 'select', null ).\r\n set( 'highlight', calendar.item.now )\r\n }\r\n\r\n\r\n // The keycode to movement mapping.\r\n calendar.key = {\r\n 40: 7, // Down\r\n 38: -7, // Up\r\n 39: function() { return isRTL() ? -1 : 1 }, // Right\r\n 37: function() { return isRTL() ? 1 : -1 }, // Left\r\n go: function( timeChange ) {\r\n var highlightedObject = calendar.item.highlight,\r\n targetDate = new Date( highlightedObject.year, highlightedObject.month, highlightedObject.date + timeChange )\r\n calendar.set(\r\n 'highlight',\r\n targetDate,\r\n { interval: timeChange }\r\n )\r\n this.render()\r\n }\r\n }\r\n\r\n\r\n // Bind some picker events.\r\n picker.\r\n on( 'render', function() {\r\n picker.$root.find( '.' + settings.klass.selectMonth ).on( 'change', function() {\r\n var value = this.value\r\n if ( value ) {\r\n picker.set( 'highlight', [ picker.get( 'view' ).year, value, picker.get( 'highlight' ).date ] )\r\n picker.$root.find( '.' + settings.klass.selectMonth ).trigger( 'focus' )\r\n }\r\n })\r\n picker.$root.find( '.' + settings.klass.selectYear ).on( 'change', function() {\r\n var value = this.value\r\n if ( value ) {\r\n picker.set( 'highlight', [ value, picker.get( 'view' ).month, picker.get( 'highlight' ).date ] )\r\n picker.$root.find( '.' + settings.klass.selectYear ).trigger( 'focus' )\r\n }\r\n })\r\n }, 1 ).\r\n on( 'open', function() {\r\n var includeToday = ''\r\n if ( calendar.disabled( calendar.get('now') ) ) {\r\n includeToday = ':not(.' + settings.klass.buttonToday + ')'\r\n }\r\n picker.$root.find( 'button' + includeToday + ', select' ).attr( 'disabled', false )\r\n }, 1 ).\r\n on( 'close', function() {\r\n picker.$root.find( 'button, select' ).attr( 'disabled', true )\r\n }, 1 )\r\n\r\n} //DatePicker\r\n\r\n\r\n/**\r\n * Set a datepicker item object.\r\n */\r\nDatePicker.prototype.set = function( type, value, options ) {\r\n\r\n var calendar = this,\r\n calendarItem = calendar.item\r\n\r\n // If the value is `null` just set it immediately.\r\n if ( value === null ) {\r\n if ( type == 'clear' ) type = 'select'\r\n calendarItem[ type ] = value\r\n return calendar\r\n }\r\n\r\n // Otherwise go through the queue of methods, and invoke the functions.\r\n // Update this as the time unit, and set the final value as this item.\r\n // * In the case of `enable`, keep the queue but set `disable` instead.\r\n // And in the case of `flip`, keep the queue but set `enable` instead.\r\n calendarItem[ ( type == 'enable' ? 'disable' : type == 'flip' ? 'enable' : type ) ] = calendar.queue[ type ].split( ' ' ).map( function( method ) {\r\n value = calendar[ method ]( type, value, options )\r\n return value\r\n }).pop()\r\n\r\n // Check if we need to cascade through more updates.\r\n if ( type == 'select' ) {\r\n calendar.set( 'highlight', calendarItem.select, options )\r\n }\r\n else if ( type == 'highlight' ) {\r\n calendar.set( 'view', calendarItem.highlight, options )\r\n }\r\n else if ( type.match( /^(flip|min|max|disable|enable)$/ ) ) {\r\n if ( calendarItem.select && calendar.disabled( calendarItem.select ) ) {\r\n calendar.set( 'select', calendarItem.select, options )\r\n }\r\n if ( calendarItem.highlight && calendar.disabled( calendarItem.highlight ) ) {\r\n calendar.set( 'highlight', calendarItem.highlight, options )\r\n }\r\n }\r\n\r\n return calendar\r\n} //DatePicker.prototype.set\r\n\r\n\r\n/**\r\n * Get a datepicker item object.\r\n */\r\nDatePicker.prototype.get = function( type ) {\r\n return this.item[ type ]\r\n} //DatePicker.prototype.get\r\n\r\n\r\n/**\r\n * Create a picker date object.\r\n */\r\nDatePicker.prototype.create = function( type, value, options ) {\r\n\r\n var isInfiniteValue,\r\n calendar = this\r\n\r\n // If there’s no value, use the type as the value.\r\n value = value === undefined ? type : value\r\n\r\n\r\n // If it’s infinity, update the value.\r\n if ( value == -Infinity || value == Infinity ) {\r\n isInfiniteValue = value\r\n }\r\n\r\n // If it’s an object, use the native date object.\r\n else if ( $.isPlainObject( value ) && _.isInteger( value.pick ) ) {\r\n value = value.obj\r\n }\r\n\r\n // If it’s an array, convert it into a date and make sure\r\n // that it’s a valid date – otherwise default to today.\r\n else if ( $.isArray( value ) ) {\r\n value = new Date( value[ 0 ], value[ 1 ], value[ 2 ] )\r\n value = _.isDate( value ) ? value : calendar.create().obj\r\n }\r\n\r\n // If it’s a number or date object, make a normalized date.\r\n else if ( _.isInteger( value ) || _.isDate( value ) ) {\r\n value = calendar.normalize( new Date( value ), options )\r\n }\r\n\r\n // If it’s a literal true or any other case, set it to now.\r\n else /*if ( value === true )*/ {\r\n value = calendar.now( type, value, options )\r\n }\r\n\r\n // Return the compiled object.\r\n return {\r\n year: isInfiniteValue || value.getFullYear(),\r\n month: isInfiniteValue || value.getMonth(),\r\n date: isInfiniteValue || value.getDate(),\r\n day: isInfiniteValue || value.getDay(),\r\n obj: isInfiniteValue || value,\r\n pick: isInfiniteValue || value.getTime()\r\n }\r\n} //DatePicker.prototype.create\r\n\r\n\r\n/**\r\n * Create a range limit object using an array, date object,\r\n * literal “true”, or integer relative to another time.\r\n */\r\nDatePicker.prototype.createRange = function( from, to ) {\r\n\r\n var calendar = this,\r\n createDate = function( date ) {\r\n if ( date === true || $.isArray( date ) || _.isDate( date ) ) {\r\n return calendar.create( date )\r\n }\r\n return date\r\n }\r\n\r\n // Create objects if possible.\r\n if ( !_.isInteger( from ) ) {\r\n from = createDate( from )\r\n }\r\n if ( !_.isInteger( to ) ) {\r\n to = createDate( to )\r\n }\r\n\r\n // Create relative dates.\r\n if ( _.isInteger( from ) && $.isPlainObject( to ) ) {\r\n from = [ to.year, to.month, to.date + from ];\r\n }\r\n else if ( _.isInteger( to ) && $.isPlainObject( from ) ) {\r\n to = [ from.year, from.month, from.date + to ];\r\n }\r\n\r\n return {\r\n from: createDate( from ),\r\n to: createDate( to )\r\n }\r\n} //DatePicker.prototype.createRange\r\n\r\n\r\n/**\r\n * Check if a date unit falls within a date range object.\r\n */\r\nDatePicker.prototype.withinRange = function( range, dateUnit ) {\r\n range = this.createRange(range.from, range.to)\r\n return dateUnit.pick >= range.from.pick && dateUnit.pick <= range.to.pick\r\n}\r\n\r\n\r\n/**\r\n * Check if two date range objects overlap.\r\n */\r\nDatePicker.prototype.overlapRanges = function( one, two ) {\r\n\r\n var calendar = this\r\n\r\n // Convert the ranges into comparable dates.\r\n one = calendar.createRange( one.from, one.to )\r\n two = calendar.createRange( two.from, two.to )\r\n\r\n return calendar.withinRange( one, two.from ) || calendar.withinRange( one, two.to ) ||\r\n calendar.withinRange( two, one.from ) || calendar.withinRange( two, one.to )\r\n}\r\n\r\n\r\n/**\r\n * Get the date today.\r\n */\r\nDatePicker.prototype.now = function( type, value, options ) {\r\n value = new Date()\r\n if ( options && options.rel ) {\r\n value.setDate( value.getDate() + options.rel )\r\n }\r\n return this.normalize( value, options )\r\n}\r\n\r\n\r\n/**\r\n * Navigate to next/prev month.\r\n */\r\nDatePicker.prototype.navigate = function( type, value, options ) {\r\n\r\n var targetDateObject,\r\n targetYear,\r\n targetMonth,\r\n targetDate,\r\n isTargetArray = $.isArray( value ),\r\n isTargetObject = $.isPlainObject( value ),\r\n viewsetObject = this.item.view/*,\r\n safety = 100*/\r\n\r\n\r\n if ( isTargetArray || isTargetObject ) {\r\n\r\n if ( isTargetObject ) {\r\n targetYear = value.year\r\n targetMonth = value.month\r\n targetDate = value.date\r\n }\r\n else {\r\n targetYear = +value[0]\r\n targetMonth = +value[1]\r\n targetDate = +value[2]\r\n }\r\n\r\n // If we’re navigating months but the view is in a different\r\n // month, navigate to the view’s year and month.\r\n if ( options && options.nav && viewsetObject && viewsetObject.month !== targetMonth ) {\r\n targetYear = viewsetObject.year\r\n targetMonth = viewsetObject.month\r\n }\r\n\r\n // Figure out the expected target year and month.\r\n targetDateObject = new Date( targetYear, targetMonth + ( options && options.nav ? options.nav : 0 ), 1 )\r\n targetYear = targetDateObject.getFullYear()\r\n targetMonth = targetDateObject.getMonth()\r\n\r\n // If the month we’re going to doesn’t have enough days,\r\n // keep decreasing the date until we reach the month’s last date.\r\n while ( /*safety &&*/ new Date( targetYear, targetMonth, targetDate ).getMonth() !== targetMonth ) {\r\n targetDate -= 1\r\n /*safety -= 1\r\n if ( !safety ) {\r\n throw 'Fell into an infinite loop while navigating to ' + new Date( targetYear, targetMonth, targetDate ) + '.'\r\n }*/\r\n }\r\n\r\n value = [ targetYear, targetMonth, targetDate ]\r\n }\r\n\r\n return value\r\n} //DatePicker.prototype.navigate\r\n\r\n\r\n/**\r\n * Normalize a date by setting the hours to midnight.\r\n */\r\nDatePicker.prototype.normalize = function( value/*, options*/ ) {\r\n value.setHours( 0, 0, 0, 0 )\r\n return value\r\n}\r\n\r\n\r\n/**\r\n * Measure the range of dates.\r\n */\r\nDatePicker.prototype.measure = function( type, value/*, options*/ ) {\r\n\r\n var calendar = this\r\n\r\n // If it’s anything false-y, remove the limits.\r\n if ( !value ) {\r\n value = type == 'min' ? -Infinity : Infinity\r\n }\r\n\r\n // If it’s a string, parse it.\r\n else if ( typeof value == 'string' ) {\r\n value = calendar.parse( type, value )\r\n }\r\n\r\n // If it's an integer, get a date relative to today.\r\n else if ( _.isInteger( value ) ) {\r\n value = calendar.now( type, value, { rel: value } )\r\n }\r\n\r\n return value\r\n} ///DatePicker.prototype.measure\r\n\r\n\r\n/**\r\n * Create a viewset object based on navigation.\r\n */\r\nDatePicker.prototype.viewset = function( type, dateObject/*, options*/ ) {\r\n return this.create([ dateObject.year, dateObject.month, 1 ])\r\n}\r\n\r\n\r\n/**\r\n * Validate a date as enabled and shift if needed.\r\n */\r\nDatePicker.prototype.validate = function( type, dateObject, options ) {\r\n\r\n var calendar = this,\r\n\r\n // Keep a reference to the original date.\r\n originalDateObject = dateObject,\r\n\r\n // Make sure we have an interval.\r\n interval = options && options.interval ? options.interval : 1,\r\n\r\n // Check if the calendar enabled dates are inverted.\r\n isFlippedBase = calendar.item.enable === -1,\r\n\r\n // Check if we have any enabled dates after/before now.\r\n hasEnabledBeforeTarget, hasEnabledAfterTarget,\r\n\r\n // The min & max limits.\r\n minLimitObject = calendar.item.min,\r\n maxLimitObject = calendar.item.max,\r\n\r\n // Check if we’ve reached the limit during shifting.\r\n reachedMin, reachedMax,\r\n\r\n // Check if the calendar is inverted and at least one weekday is enabled.\r\n hasEnabledWeekdays = isFlippedBase && calendar.item.disable.filter( function( value ) {\r\n\r\n // If there’s a date, check where it is relative to the target.\r\n if ( $.isArray( value ) ) {\r\n var dateTime = calendar.create( value ).pick\r\n if ( dateTime < dateObject.pick ) hasEnabledBeforeTarget = true\r\n else if ( dateTime > dateObject.pick ) hasEnabledAfterTarget = true\r\n }\r\n\r\n // Return only integers for enabled weekdays.\r\n return _.isInteger( value )\r\n }).length/*,\r\n\r\n safety = 100*/\r\n\r\n\r\n\r\n // Cases to validate for:\r\n // [1] Not inverted and date disabled.\r\n // [2] Inverted and some dates enabled.\r\n // [3] Not inverted and out of range.\r\n //\r\n // Cases to **not** validate for:\r\n // • Navigating months.\r\n // • Not inverted and date enabled.\r\n // • Inverted and all dates disabled.\r\n // • ..and anything else.\r\n if ( !options || (!options.nav && !options.defaultValue) ) if (\r\n /* 1 */ ( !isFlippedBase && calendar.disabled( dateObject ) ) ||\r\n /* 2 */ ( isFlippedBase && calendar.disabled( dateObject ) && ( hasEnabledWeekdays || hasEnabledBeforeTarget || hasEnabledAfterTarget ) ) ||\r\n /* 3 */ ( !isFlippedBase && (dateObject.pick <= minLimitObject.pick || dateObject.pick >= maxLimitObject.pick) )\r\n ) {\r\n\r\n\r\n // When inverted, flip the direction if there aren’t any enabled weekdays\r\n // and there are no enabled dates in the direction of the interval.\r\n if ( isFlippedBase && !hasEnabledWeekdays && ( ( !hasEnabledAfterTarget && interval > 0 ) || ( !hasEnabledBeforeTarget && interval < 0 ) ) ) {\r\n interval *= -1\r\n }\r\n\r\n\r\n // Keep looping until we reach an enabled date.\r\n while ( /*safety &&*/ calendar.disabled( dateObject ) ) {\r\n\r\n /*safety -= 1\r\n if ( !safety ) {\r\n throw 'Fell into an infinite loop while validating ' + dateObject.obj + '.'\r\n }*/\r\n\r\n\r\n // If we’ve looped into the next/prev month with a large interval, return to the original date and flatten the interval.\r\n if ( Math.abs( interval ) > 1 && ( dateObject.month < originalDateObject.month || dateObject.month > originalDateObject.month ) ) {\r\n dateObject = originalDateObject\r\n interval = interval > 0 ? 1 : -1\r\n }\r\n\r\n\r\n // If we’ve reached the min/max limit, reverse the direction, flatten the interval and set it to the limit.\r\n if ( dateObject.pick <= minLimitObject.pick ) {\r\n reachedMin = true\r\n interval = 1\r\n dateObject = calendar.create([\r\n minLimitObject.year,\r\n minLimitObject.month,\r\n minLimitObject.date + (dateObject.pick === minLimitObject.pick ? 0 : -1)\r\n ])\r\n }\r\n else if ( dateObject.pick >= maxLimitObject.pick ) {\r\n reachedMax = true\r\n interval = -1\r\n dateObject = calendar.create([\r\n maxLimitObject.year,\r\n maxLimitObject.month,\r\n maxLimitObject.date + (dateObject.pick === maxLimitObject.pick ? 0 : 1)\r\n ])\r\n }\r\n\r\n\r\n // If we’ve reached both limits, just break out of the loop.\r\n if ( reachedMin && reachedMax ) {\r\n break\r\n }\r\n\r\n\r\n // Finally, create the shifted date using the interval and keep looping.\r\n dateObject = calendar.create([ dateObject.year, dateObject.month, dateObject.date + interval ])\r\n }\r\n\r\n } //endif\r\n\r\n\r\n // Return the date object settled on.\r\n return dateObject\r\n} //DatePicker.prototype.validate\r\n\r\n\r\n/**\r\n * Check if a date is disabled.\r\n */\r\nDatePicker.prototype.disabled = function( dateToVerify ) {\r\n\r\n var\r\n calendar = this,\r\n\r\n // Filter through the disabled dates to check if this is one.\r\n isDisabledMatch = calendar.item.disable.filter( function( dateToDisable ) {\r\n\r\n // If the date is a number, match the weekday with 0index and `firstDay` check.\r\n if ( _.isInteger( dateToDisable ) ) {\r\n return dateToVerify.day === ( calendar.settings.firstDay ? dateToDisable : dateToDisable - 1 ) % 7\r\n }\r\n\r\n // If it’s an array or a native JS date, create and match the exact date.\r\n if ( $.isArray( dateToDisable ) || _.isDate( dateToDisable ) ) {\r\n return dateToVerify.pick === calendar.create( dateToDisable ).pick\r\n }\r\n\r\n // If it’s an object, match a date within the “from” and “to” range.\r\n if ( $.isPlainObject( dateToDisable ) ) {\r\n return calendar.withinRange( dateToDisable, dateToVerify )\r\n }\r\n })\r\n\r\n // If this date matches a disabled date, confirm it’s not inverted.\r\n isDisabledMatch = isDisabledMatch.length && !isDisabledMatch.filter(function( dateToDisable ) {\r\n return $.isArray( dateToDisable ) && dateToDisable[3] == 'inverted' ||\r\n $.isPlainObject( dateToDisable ) && dateToDisable.inverted\r\n }).length\r\n\r\n // Check the calendar “enabled” flag and respectively flip the\r\n // disabled state. Then also check if it’s beyond the min/max limits.\r\n return calendar.item.enable === -1 ? !isDisabledMatch : isDisabledMatch ||\r\n dateToVerify.pick < calendar.item.min.pick ||\r\n dateToVerify.pick > calendar.item.max.pick\r\n\r\n} //DatePicker.prototype.disabled\r\n\r\n\r\n/**\r\n * Parse a string into a usable type.\r\n */\r\nDatePicker.prototype.parse = function( type, value, options ) {\r\n\r\n var calendar = this,\r\n parsingObject = {}\r\n\r\n // If it’s already parsed, we’re good.\r\n if ( !value || typeof value != 'string' ) {\r\n return value\r\n }\r\n\r\n // We need a `.format` to parse the value with.\r\n if ( !( options && options.format ) ) {\r\n options = options || {}\r\n options.format = calendar.settings.format\r\n }\r\n\r\n // Convert the format into an array and then map through it.\r\n calendar.formats.toArray( options.format ).map( function( label ) {\r\n\r\n var\r\n // Grab the formatting label.\r\n formattingLabel = calendar.formats[ label ],\r\n\r\n // The format length is from the formatting label function or the\r\n // label length without the escaping exclamation (!) mark.\r\n formatLength = formattingLabel ? _.trigger( formattingLabel, calendar, [ value, parsingObject ] ) : label.replace( /^!/, '' ).length\r\n\r\n // If there's a format label, split the value up to the format length.\r\n // Then add it to the parsing object with appropriate label.\r\n if ( formattingLabel ) {\r\n parsingObject[ label ] = value.substr( 0, formatLength )\r\n }\r\n\r\n // Update the value as the substring from format length to end.\r\n value = value.substr( formatLength )\r\n })\r\n\r\n // Compensate for month 0index.\r\n return [\r\n parsingObject.yyyy || parsingObject.yy,\r\n +( parsingObject.mm || parsingObject.m ) - 1,\r\n parsingObject.dd || parsingObject.d\r\n ]\r\n} //DatePicker.prototype.parse\r\n\r\n\r\n/**\r\n * Various formats to display the object in.\r\n */\r\nDatePicker.prototype.formats = (function() {\r\n\r\n // Return the length of the first word in a collection.\r\n function getWordLengthFromCollection( string, collection, dateObject ) {\r\n\r\n // Grab the first word from the string.\r\n // Regex pattern from http://stackoverflow.com/q/150033\r\n var word = string.match( /[^\\x00-\\x7F]+|\\w+/ )[ 0 ]\r\n\r\n // If there's no month index, add it to the date object\r\n if ( !dateObject.mm && !dateObject.m ) {\r\n dateObject.m = collection.indexOf( word ) + 1\r\n }\r\n\r\n // Return the length of the word.\r\n return word.length\r\n }\r\n\r\n // Get the length of the first word in a string.\r\n function getFirstWordLength( string ) {\r\n return string.match( /\\w+/ )[ 0 ].length\r\n }\r\n\r\n return {\r\n\r\n d: function( string, dateObject ) {\r\n\r\n // If there's string, then get the digits length.\r\n // Otherwise return the selected date.\r\n return string ? _.digits( string ) : dateObject.date\r\n },\r\n dd: function( string, dateObject ) {\r\n\r\n // If there's a string, then the length is always 2.\r\n // Otherwise return the selected date with a leading zero.\r\n return string ? 2 : _.lead( dateObject.date )\r\n },\r\n ddd: function( string, dateObject ) {\r\n\r\n // If there's a string, then get the length of the first word.\r\n // Otherwise return the short selected weekday.\r\n return string ? getFirstWordLength( string ) : this.settings.weekdaysShort[ dateObject.day ]\r\n },\r\n dddd: function( string, dateObject ) {\r\n\r\n // If there's a string, then get the length of the first word.\r\n // Otherwise return the full selected weekday.\r\n return string ? getFirstWordLength( string ) : this.settings.weekdaysFull[ dateObject.day ]\r\n },\r\n m: function( string, dateObject ) {\r\n\r\n // If there's a string, then get the length of the digits\r\n // Otherwise return the selected month with 0index compensation.\r\n return string ? _.digits( string ) : dateObject.month + 1\r\n },\r\n mm: function( string, dateObject ) {\r\n\r\n // If there's a string, then the length is always 2.\r\n // Otherwise return the selected month with 0index and leading zero.\r\n return string ? 2 : _.lead( dateObject.month + 1 )\r\n },\r\n mmm: function( string, dateObject ) {\r\n\r\n var collection = this.settings.monthsShort\r\n\r\n // If there's a string, get length of the relevant month from the short\r\n // months collection. Otherwise return the selected month from that collection.\r\n return string ? getWordLengthFromCollection( string, collection, dateObject ) : collection[ dateObject.month ]\r\n },\r\n mmmm: function( string, dateObject ) {\r\n\r\n var collection = this.settings.monthsFull\r\n\r\n // If there's a string, get length of the relevant month from the full\r\n // months collection. Otherwise return the selected month from that collection.\r\n return string ? getWordLengthFromCollection( string, collection, dateObject ) : collection[ dateObject.month ]\r\n },\r\n yy: function( string, dateObject ) {\r\n\r\n // If there's a string, then the length is always 2.\r\n // Otherwise return the selected year by slicing out the first 2 digits.\r\n return string ? 2 : ( '' + dateObject.year ).slice( 2 )\r\n },\r\n yyyy: function( string, dateObject ) {\r\n\r\n // If there's a string, then the length is always 4.\r\n // Otherwise return the selected year.\r\n return string ? 4 : dateObject.year\r\n },\r\n\r\n // Create an array by splitting the formatting string passed.\r\n toArray: function( formatString ) { return formatString.split( /(d{1,4}|m{1,4}|y{4}|yy|!.)/g ) },\r\n\r\n // Format an object into a string using the formatting options.\r\n toString: function ( formatString, itemObject ) {\r\n var calendar = this\r\n return calendar.formats.toArray( formatString ).map( function( label ) {\r\n return _.trigger( calendar.formats[ label ], calendar, [ 0, itemObject ] ) || label.replace( /^!/, '' )\r\n }).join( '' )\r\n }\r\n }\r\n})() //DatePicker.prototype.formats\r\n\r\n\r\n\r\n\r\n/**\r\n * Check if two date units are the exact.\r\n */\r\nDatePicker.prototype.isDateExact = function( one, two ) {\r\n\r\n var calendar = this\r\n\r\n // When we’re working with weekdays, do a direct comparison.\r\n if (\r\n ( _.isInteger( one ) && _.isInteger( two ) ) ||\r\n ( typeof one == 'boolean' && typeof two == 'boolean' )\r\n ) {\r\n return one === two\r\n }\r\n\r\n // When we’re working with date representations, compare the “pick” value.\r\n if (\r\n ( _.isDate( one ) || $.isArray( one ) ) &&\r\n ( _.isDate( two ) || $.isArray( two ) )\r\n ) {\r\n return calendar.create( one ).pick === calendar.create( two ).pick\r\n }\r\n\r\n // When we’re working with range objects, compare the “from” and “to”.\r\n if ( $.isPlainObject( one ) && $.isPlainObject( two ) ) {\r\n return calendar.isDateExact( one.from, two.from ) && calendar.isDateExact( one.to, two.to )\r\n }\r\n\r\n return false\r\n}\r\n\r\n\r\n/**\r\n * Check if two date units overlap.\r\n */\r\nDatePicker.prototype.isDateOverlap = function( one, two ) {\r\n\r\n var calendar = this,\r\n firstDay = calendar.settings.firstDay ? 1 : 0\r\n\r\n // When we’re working with a weekday index, compare the days.\r\n if ( _.isInteger( one ) && ( _.isDate( two ) || $.isArray( two ) ) ) {\r\n one = one % 7 + firstDay\r\n return one === calendar.create( two ).day + 1\r\n }\r\n if ( _.isInteger( two ) && ( _.isDate( one ) || $.isArray( one ) ) ) {\r\n two = two % 7 + firstDay\r\n return two === calendar.create( one ).day + 1\r\n }\r\n\r\n // When we’re working with range objects, check if the ranges overlap.\r\n if ( $.isPlainObject( one ) && $.isPlainObject( two ) ) {\r\n return calendar.overlapRanges( one, two )\r\n }\r\n\r\n return false\r\n}\r\n\r\n\r\n/**\r\n * Flip the “enabled” state.\r\n */\r\nDatePicker.prototype.flipEnable = function(val) {\r\n var itemObject = this.item\r\n itemObject.enable = val || (itemObject.enable == -1 ? 1 : -1)\r\n}\r\n\r\n\r\n/**\r\n * Mark a collection of dates as “disabled”.\r\n */\r\nDatePicker.prototype.deactivate = function( type, datesToDisable ) {\r\n\r\n var calendar = this,\r\n disabledItems = calendar.item.disable.slice(0)\r\n\r\n\r\n // If we’re flipping, that’s all we need to do.\r\n if ( datesToDisable == 'flip' ) {\r\n calendar.flipEnable()\r\n }\r\n\r\n else if ( datesToDisable === false ) {\r\n calendar.flipEnable(1)\r\n disabledItems = []\r\n }\r\n\r\n else if ( datesToDisable === true ) {\r\n calendar.flipEnable(-1)\r\n disabledItems = []\r\n }\r\n\r\n // Otherwise go through the dates to disable.\r\n else {\r\n\r\n datesToDisable.map(function( unitToDisable ) {\r\n\r\n var matchFound\r\n\r\n // When we have disabled items, check for matches.\r\n // If something is matched, immediately break out.\r\n for ( var index = 0; index < disabledItems.length; index += 1 ) {\r\n if ( calendar.isDateExact( unitToDisable, disabledItems[index] ) ) {\r\n matchFound = true\r\n break\r\n }\r\n }\r\n\r\n // If nothing was found, add the validated unit to the collection.\r\n if ( !matchFound ) {\r\n if (\r\n _.isInteger( unitToDisable ) ||\r\n _.isDate( unitToDisable ) ||\r\n $.isArray( unitToDisable ) ||\r\n ( $.isPlainObject( unitToDisable ) && unitToDisable.from && unitToDisable.to )\r\n ) {\r\n disabledItems.push( unitToDisable )\r\n }\r\n }\r\n })\r\n }\r\n\r\n // Return the updated collection.\r\n return disabledItems\r\n} //DatePicker.prototype.deactivate\r\n\r\n\r\n/**\r\n * Mark a collection of dates as “enabled”.\r\n */\r\nDatePicker.prototype.activate = function( type, datesToEnable ) {\r\n\r\n var calendar = this,\r\n disabledItems = calendar.item.disable,\r\n disabledItemsCount = disabledItems.length\r\n\r\n // If we’re flipping, that’s all we need to do.\r\n if ( datesToEnable == 'flip' ) {\r\n calendar.flipEnable()\r\n }\r\n\r\n else if ( datesToEnable === true ) {\r\n calendar.flipEnable(1)\r\n disabledItems = []\r\n }\r\n\r\n else if ( datesToEnable === false ) {\r\n calendar.flipEnable(-1)\r\n disabledItems = []\r\n }\r\n\r\n // Otherwise go through the disabled dates.\r\n else {\r\n\r\n datesToEnable.map(function( unitToEnable ) {\r\n\r\n var matchFound,\r\n disabledUnit,\r\n index,\r\n isExactRange\r\n\r\n // Go through the disabled items and try to find a match.\r\n for ( index = 0; index < disabledItemsCount; index += 1 ) {\r\n\r\n disabledUnit = disabledItems[index]\r\n\r\n // When an exact match is found, remove it from the collection.\r\n if ( calendar.isDateExact( disabledUnit, unitToEnable ) ) {\r\n matchFound = disabledItems[index] = null\r\n isExactRange = true\r\n break\r\n }\r\n\r\n // When an overlapped match is found, add the “inverted” state to it.\r\n else if ( calendar.isDateOverlap( disabledUnit, unitToEnable ) ) {\r\n if ( $.isPlainObject( unitToEnable ) ) {\r\n unitToEnable.inverted = true\r\n matchFound = unitToEnable\r\n }\r\n else if ( $.isArray( unitToEnable ) ) {\r\n matchFound = unitToEnable\r\n if ( !matchFound[3] ) matchFound.push( 'inverted' )\r\n }\r\n else if ( _.isDate( unitToEnable ) ) {\r\n matchFound = [ unitToEnable.getFullYear(), unitToEnable.getMonth(), unitToEnable.getDate(), 'inverted' ]\r\n }\r\n break\r\n }\r\n }\r\n\r\n // If a match was found, remove a previous duplicate entry.\r\n if ( matchFound ) for ( index = 0; index < disabledItemsCount; index += 1 ) {\r\n if ( calendar.isDateExact( disabledItems[index], unitToEnable ) ) {\r\n disabledItems[index] = null\r\n break\r\n }\r\n }\r\n\r\n // In the event that we’re dealing with an exact range of dates,\r\n // make sure there are no “inverted” dates because of it.\r\n if ( isExactRange ) for ( index = 0; index < disabledItemsCount; index += 1 ) {\r\n if ( calendar.isDateOverlap( disabledItems[index], unitToEnable ) ) {\r\n disabledItems[index] = null\r\n break\r\n }\r\n }\r\n\r\n // If something is still matched, add it into the collection.\r\n if ( matchFound ) {\r\n disabledItems.push( matchFound )\r\n }\r\n })\r\n }\r\n\r\n // Return the updated collection.\r\n return disabledItems.filter(function( val ) { return val != null })\r\n} //DatePicker.prototype.activate\r\n\r\n\r\n/**\r\n * Create a string for the nodes in the picker.\r\n */\r\nDatePicker.prototype.nodes = function( isOpen ) {\r\n\r\n var\r\n calendar = this,\r\n settings = calendar.settings,\r\n calendarItem = calendar.item,\r\n nowObject = calendarItem.now,\r\n selectedObject = calendarItem.select,\r\n highlightedObject = calendarItem.highlight,\r\n viewsetObject = calendarItem.view,\r\n disabledCollection = calendarItem.disable,\r\n minLimitObject = calendarItem.min,\r\n maxLimitObject = calendarItem.max,\r\n\r\n\r\n // Create the calendar table head using a copy of weekday labels collection.\r\n // * We do a copy so we don't mutate the original array.\r\n tableHead = (function( collection, fullCollection ) {\r\n\r\n // If the first day should be Monday, move Sunday to the end.\r\n if ( settings.firstDay ) {\r\n collection.push( collection.shift() )\r\n fullCollection.push( fullCollection.shift() )\r\n }\r\n\r\n // Create and return the table head group.\r\n return _.node(\r\n 'thead',\r\n _.node(\r\n 'tr',\r\n _.group({\r\n min: 0,\r\n max: DAYS_IN_WEEK - 1,\r\n i: 1,\r\n node: 'th',\r\n item: function( counter ) {\r\n return [\r\n collection[ counter ],\r\n settings.klass.weekdays,\r\n 'scope=col title=\"' + fullCollection[ counter ] + '\"'\r\n ]\r\n }\r\n })\r\n )\r\n ) //endreturn\r\n })( ( settings.showWeekdaysFull ? settings.weekdaysFull : settings.weekdaysShort ).slice( 0 ), settings.weekdaysFull.slice( 0 ) ), //tableHead\r\n\r\n\r\n // Create the nav for next/prev month.\r\n createMonthNav = function( next ) {\r\n\r\n // Otherwise, return the created month tag.\r\n return _.node(\r\n 'div',\r\n ' ',\r\n settings.klass[ 'nav' + ( next ? 'Next' : 'Prev' ) ] + (\r\n\r\n // If the focused month is outside the range, disabled the button.\r\n ( next && viewsetObject.year >= maxLimitObject.year && viewsetObject.month >= maxLimitObject.month ) ||\r\n ( !next && viewsetObject.year <= minLimitObject.year && viewsetObject.month <= minLimitObject.month ) ?\r\n ' ' + settings.klass.navDisabled : ''\r\n ),\r\n 'data-nav=' + ( next || -1 ) + ' ' +\r\n _.ariaAttr({\r\n role: 'button',\r\n controls: calendar.$node[0].id + '_table'\r\n }) + ' ' +\r\n 'title=\"' + (next ? settings.labelMonthNext : settings.labelMonthPrev ) + '\"'\r\n ) //endreturn\r\n }, //createMonthNav\r\n\r\n\r\n // Create the month label.\r\n createMonthLabel = function() {\r\n\r\n var monthsCollection = settings.showMonthsShort ? settings.monthsShort : settings.monthsFull\r\n\r\n // If there are months to select, add a dropdown menu.\r\n if ( settings.selectMonths ) {\r\n\r\n return _.node( 'select',\r\n _.group({\r\n min: 0,\r\n max: 11,\r\n i: 1,\r\n node: 'option',\r\n item: function( loopedMonth ) {\r\n\r\n return [\r\n\r\n // The looped month and no classes.\r\n monthsCollection[ loopedMonth ], 0,\r\n\r\n // Set the value and selected index.\r\n 'value=' + loopedMonth +\r\n ( viewsetObject.month == loopedMonth ? ' selected' : '' ) +\r\n (\r\n (\r\n ( viewsetObject.year == minLimitObject.year && loopedMonth < minLimitObject.month ) ||\r\n ( viewsetObject.year == maxLimitObject.year && loopedMonth > maxLimitObject.month )\r\n ) ?\r\n ' disabled' : ''\r\n )\r\n ]\r\n }\r\n }),\r\n settings.klass.selectMonth,\r\n ( isOpen ? '' : 'disabled' ) + ' ' +\r\n _.ariaAttr({ controls: calendar.$node[0].id + '_table' }) + ' ' +\r\n 'title=\"' + settings.labelMonthSelect + '\"'\r\n )\r\n }\r\n\r\n // If there's a need for a month selector\r\n return _.node( 'div', monthsCollection[ viewsetObject.month ], settings.klass.month )\r\n }, //createMonthLabel\r\n\r\n\r\n // Create the year label.\r\n createYearLabel = function() {\r\n\r\n var focusedYear = viewsetObject.year,\r\n\r\n // If years selector is set to a literal \"true\", set it to 5. Otherwise\r\n // divide in half to get half before and half after focused year.\r\n numberYears = settings.selectYears === true ? 5 : ~~( settings.selectYears / 2 )\r\n\r\n // If there are years to select, add a dropdown menu.\r\n if ( numberYears ) {\r\n\r\n var\r\n minYear = minLimitObject.year,\r\n maxYear = maxLimitObject.year,\r\n lowestYear = focusedYear - numberYears,\r\n highestYear = focusedYear + numberYears\r\n\r\n // If the min year is greater than the lowest year, increase the highest year\r\n // by the difference and set the lowest year to the min year.\r\n if ( minYear > lowestYear ) {\r\n highestYear += minYear - lowestYear\r\n lowestYear = minYear\r\n }\r\n\r\n // If the max year is less than the highest year, decrease the lowest year\r\n // by the lower of the two: available and needed years. Then set the\r\n // highest year to the max year.\r\n if ( maxYear < highestYear ) {\r\n\r\n var availableYears = lowestYear - minYear,\r\n neededYears = highestYear - maxYear\r\n\r\n lowestYear -= availableYears > neededYears ? neededYears : availableYears\r\n highestYear = maxYear\r\n }\r\n\r\n return _.node( 'select',\r\n _.group({\r\n min: lowestYear,\r\n max: highestYear,\r\n i: 1,\r\n node: 'option',\r\n item: function( loopedYear ) {\r\n return [\r\n\r\n // The looped year and no classes.\r\n loopedYear, 0,\r\n\r\n // Set the value and selected index.\r\n 'value=' + loopedYear + ( focusedYear == loopedYear ? ' selected' : '' )\r\n ]\r\n }\r\n }),\r\n settings.klass.selectYear,\r\n ( isOpen ? '' : 'disabled' ) + ' ' + _.ariaAttr({ controls: calendar.$node[0].id + '_table' }) + ' ' +\r\n 'title=\"' + settings.labelYearSelect + '\"'\r\n )\r\n }\r\n\r\n // Otherwise just return the year focused\r\n return _.node( 'div', focusedYear, settings.klass.year )\r\n } //createYearLabel\r\n\r\n\r\n // Create and return the entire calendar.\r\n return _.node(\r\n 'div',\r\n ( settings.selectYears ? createYearLabel() + createMonthLabel() : createMonthLabel() + createYearLabel() ) +\r\n createMonthNav() + createMonthNav( 1 ),\r\n settings.klass.header\r\n ) + _.node(\r\n 'table',\r\n tableHead +\r\n _.node(\r\n 'tbody',\r\n _.group({\r\n min: 0,\r\n max: WEEKS_IN_CALENDAR - 1,\r\n i: 1,\r\n node: 'tr',\r\n item: function( rowCounter ) {\r\n\r\n // If Monday is the first day and the month starts on Sunday, shift the date back a week.\r\n var shiftDateBy = settings.firstDay && calendar.create([ viewsetObject.year, viewsetObject.month, 1 ]).day === 0 ? -7 : 0\r\n\r\n return [\r\n _.group({\r\n min: DAYS_IN_WEEK * rowCounter - viewsetObject.day + shiftDateBy + 1, // Add 1 for weekday 0index\r\n max: function() {\r\n return this.min + DAYS_IN_WEEK - 1\r\n },\r\n i: 1,\r\n node: 'td',\r\n item: function( targetDate ) {\r\n\r\n // Convert the time date from a relative date to a target date.\r\n targetDate = calendar.create([ viewsetObject.year, viewsetObject.month, targetDate + ( settings.firstDay ? 1 : 0 ) ])\r\n\r\n var isSelected = selectedObject && selectedObject.pick == targetDate.pick,\r\n isHighlighted = highlightedObject && highlightedObject.pick == targetDate.pick,\r\n isDisabled = disabledCollection && calendar.disabled( targetDate ) || targetDate.pick < minLimitObject.pick || targetDate.pick > maxLimitObject.pick,\r\n formattedDate = _.trigger( calendar.formats.toString, calendar, [ settings.format, targetDate ] )\r\n\r\n return [\r\n _.node(\r\n 'div',\r\n targetDate.date,\r\n (function( klasses ) {\r\n\r\n // Add the `infocus` or `outfocus` classes based on month in view.\r\n klasses.push( viewsetObject.month == targetDate.month ? settings.klass.infocus : settings.klass.outfocus )\r\n\r\n // Add the `today` class if needed.\r\n if ( nowObject.pick == targetDate.pick ) {\r\n klasses.push( settings.klass.now )\r\n }\r\n\r\n // Add the `selected` class if something's selected and the time matches.\r\n if ( isSelected ) {\r\n klasses.push( settings.klass.selected )\r\n }\r\n\r\n // Add the `highlighted` class if something's highlighted and the time matches.\r\n if ( isHighlighted ) {\r\n klasses.push( settings.klass.highlighted )\r\n }\r\n\r\n // Add the `disabled` class if something's disabled and the object matches.\r\n if ( isDisabled ) {\r\n klasses.push( settings.klass.disabled )\r\n }\r\n\r\n return klasses.join( ' ' )\r\n })([ settings.klass.day ]),\r\n 'data-pick=' + targetDate.pick + ' ' + _.ariaAttr({\r\n role: 'gridcell',\r\n label: formattedDate,\r\n selected: isSelected && calendar.$node.val() === formattedDate ? true : null,\r\n activedescendant: isHighlighted ? true : null,\r\n disabled: isDisabled ? true : null\r\n })\r\n ),\r\n '',\r\n _.ariaAttr({ role: 'presentation' })\r\n ] //endreturn\r\n }\r\n })\r\n ] //endreturn\r\n }\r\n })\r\n ),\r\n settings.klass.table,\r\n 'id=\"' + calendar.$node[0].id + '_table' + '\" ' + _.ariaAttr({\r\n role: 'grid',\r\n controls: calendar.$node[0].id,\r\n readonly: true\r\n })\r\n ) +\r\n\r\n // * For Firefox forms to submit, make sure to set the buttons’ `type` attributes as “button”.\r\n _.node(\r\n 'div',\r\n _.node( 'button', settings.today, settings.klass.buttonToday,\r\n 'type=button data-pick=' + nowObject.pick +\r\n ( isOpen && !calendar.disabled(nowObject) ? '' : ' disabled' ) + ' ' +\r\n _.ariaAttr({ controls: calendar.$node[0].id }) ) +\r\n _.node( 'button', settings.clear, settings.klass.buttonClear,\r\n 'type=button data-clear=1' +\r\n ( isOpen ? '' : ' disabled' ) + ' ' +\r\n _.ariaAttr({ controls: calendar.$node[0].id }) ) +\r\n _.node('button', settings.close, settings.klass.buttonClose,\r\n 'type=button data-close=true ' +\r\n ( isOpen ? '' : ' disabled' ) + ' ' +\r\n _.ariaAttr({ controls: calendar.$node[0].id }) ),\r\n settings.klass.footer\r\n ) //endreturn\r\n} //DatePicker.prototype.nodes\r\n\r\n\r\n\r\n\r\n/**\r\n * The date picker defaults.\r\n */\r\nDatePicker.defaults = (function( prefix ) {\r\n\r\n return {\r\n\r\n // The title label to use for the month nav buttons\r\n labelMonthNext: 'Next month',\r\n labelMonthPrev: 'Previous month',\r\n\r\n // The title label to use for the dropdown selectors\r\n labelMonthSelect: 'Select a month',\r\n labelYearSelect: 'Select a year',\r\n\r\n // Months and weekdays\r\n monthsFull: [ 'January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December' ],\r\n monthsShort: [ 'Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec' ],\r\n weekdaysFull: [ 'Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday' ],\r\n weekdaysShort: [ 'Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat' ],\r\n\r\n // Today and clear\r\n today: 'Today',\r\n clear: 'Clear',\r\n close: 'Close',\r\n\r\n // Picker close behavior\r\n closeOnSelect: true,\r\n closeOnClear: true,\r\n\r\n // The format to show on the `input` element\r\n format: 'd mmmm, yyyy',\r\n\r\n // Classes\r\n klass: {\r\n\r\n table: prefix + 'table',\r\n\r\n header: prefix + 'header',\r\n\r\n navPrev: prefix + 'nav--prev',\r\n navNext: prefix + 'nav--next',\r\n navDisabled: prefix + 'nav--disabled',\r\n\r\n month: prefix + 'month',\r\n year: prefix + 'year',\r\n\r\n selectMonth: prefix + 'select--month',\r\n selectYear: prefix + 'select--year',\r\n\r\n weekdays: prefix + 'weekday',\r\n\r\n day: prefix + 'day',\r\n disabled: prefix + 'day--disabled',\r\n selected: prefix + 'day--selected',\r\n highlighted: prefix + 'day--highlighted',\r\n now: prefix + 'day--today',\r\n infocus: prefix + 'day--infocus',\r\n outfocus: prefix + 'day--outfocus',\r\n\r\n footer: prefix + 'footer',\r\n\r\n buttonClear: prefix + 'button--clear',\r\n buttonToday: prefix + 'button--today',\r\n buttonClose: prefix + 'button--close'\r\n }\r\n }\r\n})( Picker.klasses().picker + '__' )\r\n\r\n\r\n\r\n\r\n\r\n/**\r\n * Extend the picker to add the date picker.\r\n */\r\nPicker.extend( 'pickadate', DatePicker )\r\n\r\n\r\n}));\r\n\r\n\r\n/*!\r\n * Time picker for pickadate.js v3.5.6\r\n * http://amsul.github.io/pickadate.js/time.htm\r\n */\r\n\r\n(function ( factory ) {\r\n\r\n // AMD.\r\n if ( typeof define == 'function' && define.amd )\r\n define( ['./picker', 'jquery'], factory )\r\n\r\n // Node.js/browserify.\r\n else if ( typeof exports == 'object' )\r\n module.exports = factory( require('./picker.js'), require('jquery') )\r\n\r\n // Browser globals.\r\n else factory( Picker, jQuery )\r\n\r\n}(function( Picker, $ ) {\r\n\r\n\r\n/**\r\n * Globals and constants\r\n */\r\nvar HOURS_IN_DAY = 24,\r\n MINUTES_IN_HOUR = 60,\r\n HOURS_TO_NOON = 12,\r\n MINUTES_IN_DAY = HOURS_IN_DAY * MINUTES_IN_HOUR,\r\n _ = Picker._\r\n\r\n\r\n\r\n/**\r\n * The time picker constructor\r\n */\r\nfunction TimePicker( picker, settings ) {\r\n\r\n var clock = this,\r\n elementValue = picker.$node[ 0 ].value,\r\n elementDataValue = picker.$node.data( 'value' ),\r\n valueString = elementDataValue || elementValue,\r\n formatString = elementDataValue ? settings.formatSubmit : settings.format\r\n\r\n clock.settings = settings\r\n clock.$node = picker.$node\r\n\r\n // The queue of methods that will be used to build item objects.\r\n clock.queue = {\r\n interval: 'i',\r\n min: 'measure create',\r\n max: 'measure create',\r\n now: 'now create',\r\n select: 'parse create validate',\r\n highlight: 'parse create validate',\r\n view: 'parse create validate',\r\n disable: 'deactivate',\r\n enable: 'activate'\r\n }\r\n\r\n // The component's item object.\r\n clock.item = {}\r\n\r\n clock.item.clear = null\r\n clock.item.interval = settings.interval || 30\r\n clock.item.disable = ( settings.disable || [] ).slice( 0 )\r\n clock.item.enable = -(function( collectionDisabled ) {\r\n return collectionDisabled[ 0 ] === true ? collectionDisabled.shift() : -1\r\n })( clock.item.disable )\r\n\r\n clock.\r\n set( 'min', settings.min ).\r\n set( 'max', settings.max ).\r\n set( 'now' )\r\n\r\n // When there’s a value, set the `select`, which in turn\r\n // also sets the `highlight` and `view`.\r\n if ( valueString ) {\r\n clock.set( 'select', valueString, {\r\n format: formatString\r\n })\r\n }\r\n\r\n // If there’s no value, default to highlighting “today”.\r\n else {\r\n clock.\r\n set( 'select', null ).\r\n set( 'highlight', clock.item.now )\r\n }\r\n\r\n // The keycode to movement mapping.\r\n clock.key = {\r\n 40: 1, // Down\r\n 38: -1, // Up\r\n 39: 1, // Right\r\n 37: -1, // Left\r\n go: function( timeChange ) {\r\n clock.set(\r\n 'highlight',\r\n clock.item.highlight.pick + timeChange * clock.item.interval,\r\n { interval: timeChange * clock.item.interval }\r\n )\r\n this.render()\r\n }\r\n }\r\n\r\n\r\n // Bind some picker events.\r\n picker.\r\n on( 'render', function() {\r\n var $pickerHolder = picker.$root.children(),\r\n $viewset = $pickerHolder.find( '.' + settings.klass.viewset ),\r\n vendors = function( prop ) {\r\n return ['webkit', 'moz', 'ms', 'o', ''].map(function( vendor ) {\r\n return ( vendor ? '-' + vendor + '-' : '' ) + prop\r\n })\r\n },\r\n animations = function( $el, state ) {\r\n vendors( 'transform' ).map(function( prop ) {\r\n $el.css( prop, state )\r\n })\r\n vendors( 'transition' ).map(function( prop ) {\r\n $el.css( prop, state )\r\n })\r\n }\r\n if ( $viewset.length ) {\r\n animations( $pickerHolder, 'none' )\r\n $pickerHolder[ 0 ].scrollTop = ~~$viewset.position().top - ( $viewset[ 0 ].clientHeight * 2 )\r\n animations( $pickerHolder, '' )\r\n }\r\n }, 1 ).\r\n on( 'open', function() {\r\n picker.$root.find( 'button' ).attr( 'disabled', false )\r\n }, 1 ).\r\n on( 'close', function() {\r\n picker.$root.find( 'button' ).attr( 'disabled', true )\r\n }, 1 )\r\n\r\n} //TimePicker\r\n\r\n\r\n/**\r\n * Set a timepicker item object.\r\n */\r\nTimePicker.prototype.set = function( type, value, options ) {\r\n\r\n var clock = this,\r\n clockItem = clock.item\r\n\r\n // If the value is `null` just set it immediately.\r\n if ( value === null ) {\r\n if ( type == 'clear' ) type = 'select'\r\n clockItem[ type ] = value\r\n return clock\r\n }\r\n\r\n // Otherwise go through the queue of methods, and invoke the functions.\r\n // Update this as the time unit, and set the final value as this item.\r\n // * In the case of `enable`, keep the queue but set `disable` instead.\r\n // And in the case of `flip`, keep the queue but set `enable` instead.\r\n clockItem[ ( type == 'enable' ? 'disable' : type == 'flip' ? 'enable' : type ) ] = clock.queue[ type ].split( ' ' ).map( function( method ) {\r\n value = clock[ method ]( type, value, options )\r\n return value\r\n }).pop()\r\n\r\n // Check if we need to cascade through more updates.\r\n if ( type == 'select' ) {\r\n clock.set( 'highlight', clockItem.select, options )\r\n }\r\n else if ( type == 'highlight' ) {\r\n clock.set( 'view', clockItem.highlight, options )\r\n }\r\n else if ( type == 'interval' ) {\r\n clock.\r\n set( 'min', clockItem.min, options ).\r\n set( 'max', clockItem.max, options )\r\n }\r\n else if ( type.match( /^(flip|min|max|disable|enable)$/ ) ) {\r\n if ( clockItem.select && clock.disabled( clockItem.select ) ) {\r\n clock.set( 'select', value, options )\r\n }\r\n if ( clockItem.highlight && clock.disabled( clockItem.highlight ) ) {\r\n clock.set( 'highlight', value, options )\r\n }\r\n if ( type == 'min' ) {\r\n clock.set( 'max', clockItem.max, options )\r\n }\r\n }\r\n\r\n return clock\r\n} //TimePicker.prototype.set\r\n\r\n\r\n/**\r\n * Get a timepicker item object.\r\n */\r\nTimePicker.prototype.get = function( type ) {\r\n return this.item[ type ]\r\n} //TimePicker.prototype.get\r\n\r\n\r\n/**\r\n * Create a picker time object.\r\n */\r\nTimePicker.prototype.create = function( type, value, options ) {\r\n\r\n var clock = this\r\n\r\n // If there’s no value, use the type as the value.\r\n value = value === undefined ? type : value\r\n\r\n // If it’s a date object, convert it into an array.\r\n if ( _.isDate( value ) ) {\r\n value = [ value.getHours(), value.getMinutes() ]\r\n }\r\n\r\n // If it’s an object, use the “pick” value.\r\n if ( $.isPlainObject( value ) && _.isInteger( value.pick ) ) {\r\n value = value.pick\r\n }\r\n\r\n // If it’s an array, convert it into minutes.\r\n else if ( $.isArray( value ) ) {\r\n value = +value[ 0 ] * MINUTES_IN_HOUR + (+value[ 1 ])\r\n }\r\n\r\n // If no valid value is passed, set it to “now”.\r\n else if ( !_.isInteger( value ) ) {\r\n value = clock.now( type, value, options )\r\n }\r\n\r\n // If we’re setting the max, make sure it’s greater than the min.\r\n if ( type == 'max' && value < clock.item.min.pick ) {\r\n value += MINUTES_IN_DAY\r\n }\r\n\r\n // If the value doesn’t fall directly on the interval,\r\n // add one interval to indicate it as “passed”.\r\n if ( type != 'min' && type != 'max' && (value - clock.item.min.pick) % clock.item.interval !== 0 ) {\r\n value += clock.item.interval\r\n }\r\n\r\n // Normalize it into a “reachable” interval.\r\n value = clock.normalize( type, value, options )\r\n\r\n // Return the compiled object.\r\n return {\r\n\r\n // Divide to get hours from minutes.\r\n hour: ~~( HOURS_IN_DAY + value / MINUTES_IN_HOUR ) % HOURS_IN_DAY,\r\n\r\n // The remainder is the minutes.\r\n mins: ( MINUTES_IN_HOUR + value % MINUTES_IN_HOUR ) % MINUTES_IN_HOUR,\r\n\r\n // The time in total minutes.\r\n time: ( MINUTES_IN_DAY + value ) % MINUTES_IN_DAY,\r\n\r\n // Reference to the “relative” value to pick.\r\n pick: value % MINUTES_IN_DAY\r\n }\r\n} //TimePicker.prototype.create\r\n\r\n\r\n/**\r\n * Create a range limit object using an array, date object,\r\n * literal “true”, or integer relative to another time.\r\n */\r\nTimePicker.prototype.createRange = function( from, to ) {\r\n\r\n var clock = this,\r\n createTime = function( time ) {\r\n if ( time === true || $.isArray( time ) || _.isDate( time ) ) {\r\n return clock.create( time )\r\n }\r\n return time\r\n }\r\n\r\n // Create objects if possible.\r\n if ( !_.isInteger( from ) ) {\r\n from = createTime( from )\r\n }\r\n if ( !_.isInteger( to ) ) {\r\n to = createTime( to )\r\n }\r\n\r\n // Create relative times.\r\n if ( _.isInteger( from ) && $.isPlainObject( to ) ) {\r\n from = [ to.hour, to.mins + ( from * clock.settings.interval ) ];\r\n }\r\n else if ( _.isInteger( to ) && $.isPlainObject( from ) ) {\r\n to = [ from.hour, from.mins + ( to * clock.settings.interval ) ];\r\n }\r\n\r\n return {\r\n from: createTime( from ),\r\n to: createTime( to )\r\n }\r\n} //TimePicker.prototype.createRange\r\n\r\n\r\n/**\r\n * Check if a time unit falls within a time range object.\r\n */\r\nTimePicker.prototype.withinRange = function( range, timeUnit ) {\r\n range = this.createRange(range.from, range.to)\r\n return timeUnit.pick >= range.from.pick && timeUnit.pick <= range.to.pick\r\n}\r\n\r\n\r\n/**\r\n * Check if two time range objects overlap.\r\n */\r\nTimePicker.prototype.overlapRanges = function( one, two ) {\r\n\r\n var clock = this\r\n\r\n // Convert the ranges into comparable times.\r\n one = clock.createRange( one.from, one.to )\r\n two = clock.createRange( two.from, two.to )\r\n\r\n return clock.withinRange( one, two.from ) || clock.withinRange( one, two.to ) ||\r\n clock.withinRange( two, one.from ) || clock.withinRange( two, one.to )\r\n}\r\n\r\n\r\n/**\r\n * Get the time relative to now.\r\n */\r\nTimePicker.prototype.now = function( type, value/*, options*/ ) {\r\n\r\n var interval = this.item.interval,\r\n date = new Date(),\r\n nowMinutes = date.getHours() * MINUTES_IN_HOUR + date.getMinutes(),\r\n isValueInteger = _.isInteger( value ),\r\n isBelowInterval\r\n\r\n // Make sure “now” falls within the interval range.\r\n nowMinutes -= nowMinutes % interval\r\n\r\n // Check if the difference is less than the interval itself.\r\n isBelowInterval = value < 0 && interval * value + nowMinutes <= -interval\r\n\r\n // Add an interval because the time has “passed”.\r\n nowMinutes += type == 'min' && isBelowInterval ? 0 : interval\r\n\r\n // If the value is a number, adjust by that many intervals.\r\n if ( isValueInteger ) {\r\n nowMinutes += interval * (\r\n isBelowInterval && type != 'max' ?\r\n value + 1 :\r\n value\r\n )\r\n }\r\n\r\n // Return the final calculation.\r\n return nowMinutes\r\n} //TimePicker.prototype.now\r\n\r\n\r\n/**\r\n * Normalize minutes to be “reachable” based on the min and interval.\r\n */\r\nTimePicker.prototype.normalize = function( type, value/*, options*/ ) {\r\n\r\n var interval = this.item.interval,\r\n minTime = this.item.min && this.item.min.pick || 0\r\n\r\n // If setting min time, don’t shift anything.\r\n // Otherwise get the value and min difference and then\r\n // normalize the difference with the interval.\r\n value -= type == 'min' ? 0 : ( value - minTime ) % interval\r\n\r\n // Return the adjusted value.\r\n return value\r\n} //TimePicker.prototype.normalize\r\n\r\n\r\n/**\r\n * Measure the range of minutes.\r\n */\r\nTimePicker.prototype.measure = function( type, value, options ) {\r\n\r\n var clock = this\r\n\r\n // If it’s anything false-y, set it to the default.\r\n if ( !value ) {\r\n value = type == 'min' ? [ 0, 0 ] : [ HOURS_IN_DAY - 1, MINUTES_IN_HOUR - 1 ]\r\n }\r\n\r\n // If it’s a string, parse it.\r\n if ( typeof value == 'string' ) {\r\n value = clock.parse( type, value )\r\n }\r\n\r\n // If it’s a literal true, or an integer, make it relative to now.\r\n else if ( value === true || _.isInteger( value ) ) {\r\n value = clock.now( type, value, options )\r\n }\r\n\r\n // If it’s an object already, just normalize it.\r\n else if ( $.isPlainObject( value ) && _.isInteger( value.pick ) ) {\r\n value = clock.normalize( type, value.pick, options )\r\n }\r\n\r\n return value\r\n} ///TimePicker.prototype.measure\r\n\r\n\r\n/**\r\n * Validate an object as enabled.\r\n */\r\nTimePicker.prototype.validate = function( type, timeObject, options ) {\r\n\r\n var clock = this,\r\n interval = options && options.interval ? options.interval : clock.item.interval\r\n\r\n // Check if the object is disabled.\r\n if ( clock.disabled( timeObject ) ) {\r\n\r\n // Shift with the interval until we reach an enabled time.\r\n timeObject = clock.shift( timeObject, interval )\r\n }\r\n\r\n // Scope the object into range.\r\n timeObject = clock.scope( timeObject )\r\n\r\n // Do a second check to see if we landed on a disabled min/max.\r\n // In that case, shift using the opposite interval as before.\r\n if ( clock.disabled( timeObject ) ) {\r\n timeObject = clock.shift( timeObject, interval * -1 )\r\n }\r\n\r\n // Return the final object.\r\n return timeObject\r\n} //TimePicker.prototype.validate\r\n\r\n\r\n/**\r\n * Check if an object is disabled.\r\n */\r\nTimePicker.prototype.disabled = function( timeToVerify ) {\r\n\r\n var clock = this,\r\n\r\n // Filter through the disabled times to check if this is one.\r\n isDisabledMatch = clock.item.disable.filter( function( timeToDisable ) {\r\n\r\n // If the time is a number, match the hours.\r\n if ( _.isInteger( timeToDisable ) ) {\r\n return timeToVerify.hour == timeToDisable\r\n }\r\n\r\n // If it’s an array, create the object and match the times.\r\n if ( $.isArray( timeToDisable ) || _.isDate( timeToDisable ) ) {\r\n return timeToVerify.pick == clock.create( timeToDisable ).pick\r\n }\r\n\r\n // If it’s an object, match a time within the “from” and “to” range.\r\n if ( $.isPlainObject( timeToDisable ) ) {\r\n return clock.withinRange( timeToDisable, timeToVerify )\r\n }\r\n })\r\n\r\n // If this time matches a disabled time, confirm it’s not inverted.\r\n isDisabledMatch = isDisabledMatch.length && !isDisabledMatch.filter(function( timeToDisable ) {\r\n return $.isArray( timeToDisable ) && timeToDisable[2] == 'inverted' ||\r\n $.isPlainObject( timeToDisable ) && timeToDisable.inverted\r\n }).length\r\n\r\n // If the clock is \"enabled\" flag is flipped, flip the condition.\r\n return clock.item.enable === -1 ? !isDisabledMatch : isDisabledMatch ||\r\n timeToVerify.pick < clock.item.min.pick ||\r\n timeToVerify.pick > clock.item.max.pick\r\n} //TimePicker.prototype.disabled\r\n\r\n\r\n/**\r\n * Shift an object by an interval until we reach an enabled object.\r\n */\r\nTimePicker.prototype.shift = function( timeObject, interval ) {\r\n\r\n var clock = this,\r\n minLimit = clock.item.min.pick,\r\n maxLimit = clock.item.max.pick/*,\r\n safety = 1000*/\r\n\r\n interval = interval || clock.item.interval\r\n\r\n // Keep looping as long as the time is disabled.\r\n while ( /*safety &&*/ clock.disabled( timeObject ) ) {\r\n\r\n /*safety -= 1\r\n if ( !safety ) {\r\n throw 'Fell into an infinite loop while shifting to ' + timeObject.hour + ':' + timeObject.mins + '.'\r\n }*/\r\n\r\n // Increase/decrease the time by the interval and keep looping.\r\n timeObject = clock.create( timeObject.pick += interval )\r\n\r\n // If we've looped beyond the limits, break out of the loop.\r\n if ( timeObject.pick <= minLimit || timeObject.pick >= maxLimit ) {\r\n break\r\n }\r\n }\r\n\r\n // Return the final object.\r\n return timeObject\r\n} //TimePicker.prototype.shift\r\n\r\n\r\n/**\r\n * Scope an object to be within range of min and max.\r\n */\r\nTimePicker.prototype.scope = function( timeObject ) {\r\n var minLimit = this.item.min.pick,\r\n maxLimit = this.item.max.pick\r\n return this.create( timeObject.pick > maxLimit ? maxLimit : timeObject.pick < minLimit ? minLimit : timeObject )\r\n} //TimePicker.prototype.scope\r\n\r\n\r\n/**\r\n * Parse a string into a usable type.\r\n */\r\nTimePicker.prototype.parse = function( type, value, options ) {\r\n\r\n var hour, minutes, isPM, item, parseValue,\r\n clock = this,\r\n parsingObject = {}\r\n\r\n // If it’s already parsed, we’re good.\r\n if ( !value || typeof value != 'string' ) {\r\n return value\r\n }\r\n\r\n // We need a `.format` to parse the value with.\r\n if ( !( options && options.format ) ) {\r\n options = options || {}\r\n options.format = clock.settings.format\r\n }\r\n\r\n // Convert the format into an array and then map through it.\r\n clock.formats.toArray( options.format ).map( function( label ) {\r\n\r\n var\r\n substring,\r\n\r\n // Grab the formatting label.\r\n formattingLabel = clock.formats[ label ],\r\n\r\n // The format length is from the formatting label function or the\r\n // label length without the escaping exclamation (!) mark.\r\n formatLength = formattingLabel ?\r\n _.trigger( formattingLabel, clock, [ value, parsingObject ] ) :\r\n label.replace( /^!/, '' ).length\r\n\r\n // If there's a format label, split the value up to the format length.\r\n // Then add it to the parsing object with appropriate label.\r\n if ( formattingLabel ) {\r\n substring = value.substr( 0, formatLength )\r\n parsingObject[ label ] = substring.match(/^\\d+$/) ? +substring : substring\r\n }\r\n\r\n // Update the time value as the substring from format length to end.\r\n value = value.substr( formatLength )\r\n })\r\n\r\n // Grab the hour and minutes from the parsing object.\r\n for ( item in parsingObject ) {\r\n parseValue = parsingObject[item]\r\n if ( _.isInteger(parseValue) ) {\r\n if ( item.match(/^(h|hh)$/i) ) {\r\n hour = parseValue\r\n if ( item == 'h' || item == 'hh' ) {\r\n hour %= 12\r\n }\r\n }\r\n else if ( item == 'i' ) {\r\n minutes = parseValue\r\n }\r\n }\r\n else if ( item.match(/^a$/i) && parseValue.match(/^p/i) && ('h' in parsingObject || 'hh' in parsingObject) ) {\r\n isPM = true\r\n }\r\n }\r\n\r\n // Calculate it in minutes and return.\r\n return (isPM ? hour + 12 : hour) * MINUTES_IN_HOUR + minutes\r\n} //TimePicker.prototype.parse\r\n\r\n\r\n/**\r\n * Various formats to display the object in.\r\n */\r\nTimePicker.prototype.formats = {\r\n\r\n h: function( string, timeObject ) {\r\n\r\n // If there's string, then get the digits length.\r\n // Otherwise return the selected hour in \"standard\" format.\r\n return string ? _.digits( string ) : timeObject.hour % HOURS_TO_NOON || HOURS_TO_NOON\r\n },\r\n hh: function( string, timeObject ) {\r\n\r\n // If there's a string, then the length is always 2.\r\n // Otherwise return the selected hour in \"standard\" format with a leading zero.\r\n return string ? 2 : _.lead( timeObject.hour % HOURS_TO_NOON || HOURS_TO_NOON )\r\n },\r\n H: function( string, timeObject ) {\r\n\r\n // If there's string, then get the digits length.\r\n // Otherwise return the selected hour in \"military\" format as a string.\r\n return string ? _.digits( string ) : '' + ( timeObject.hour % 24 )\r\n },\r\n HH: function( string, timeObject ) {\r\n\r\n // If there's string, then get the digits length.\r\n // Otherwise return the selected hour in \"military\" format with a leading zero.\r\n return string ? _.digits( string ) : _.lead( timeObject.hour % 24 )\r\n },\r\n i: function( string, timeObject ) {\r\n\r\n // If there's a string, then the length is always 2.\r\n // Otherwise return the selected minutes.\r\n return string ? 2 : _.lead( timeObject.mins )\r\n },\r\n a: function( string, timeObject ) {\r\n\r\n // If there's a string, then the length is always 4.\r\n // Otherwise check if it's more than \"noon\" and return either am/pm.\r\n return string ? 4 : MINUTES_IN_DAY / 2 > timeObject.time % MINUTES_IN_DAY ? 'a.m.' : 'p.m.'\r\n },\r\n A: function( string, timeObject ) {\r\n\r\n // If there's a string, then the length is always 2.\r\n // Otherwise check if it's more than \"noon\" and return either am/pm.\r\n return string ? 2 : MINUTES_IN_DAY / 2 > timeObject.time % MINUTES_IN_DAY ? 'AM' : 'PM'\r\n },\r\n\r\n // Create an array by splitting the formatting string passed.\r\n toArray: function( formatString ) { return formatString.split( /(h{1,2}|H{1,2}|i|a|A|!.)/g ) },\r\n\r\n // Format an object into a string using the formatting options.\r\n toString: function ( formatString, itemObject ) {\r\n var clock = this\r\n return clock.formats.toArray( formatString ).map( function( label ) {\r\n return _.trigger( clock.formats[ label ], clock, [ 0, itemObject ] ) || label.replace( /^!/, '' )\r\n }).join( '' )\r\n }\r\n} //TimePicker.prototype.formats\r\n\r\n\r\n\r\n\r\n/**\r\n * Check if two time units are the exact.\r\n */\r\nTimePicker.prototype.isTimeExact = function( one, two ) {\r\n\r\n var clock = this\r\n\r\n // When we’re working with minutes, do a direct comparison.\r\n if (\r\n ( _.isInteger( one ) && _.isInteger( two ) ) ||\r\n ( typeof one == 'boolean' && typeof two == 'boolean' )\r\n ) {\r\n return one === two\r\n }\r\n\r\n // When we’re working with time representations, compare the “pick” value.\r\n if (\r\n ( _.isDate( one ) || $.isArray( one ) ) &&\r\n ( _.isDate( two ) || $.isArray( two ) )\r\n ) {\r\n return clock.create( one ).pick === clock.create( two ).pick\r\n }\r\n\r\n // When we’re working with range objects, compare the “from” and “to”.\r\n if ( $.isPlainObject( one ) && $.isPlainObject( two ) ) {\r\n return clock.isTimeExact( one.from, two.from ) && clock.isTimeExact( one.to, two.to )\r\n }\r\n\r\n return false\r\n}\r\n\r\n\r\n/**\r\n * Check if two time units overlap.\r\n */\r\nTimePicker.prototype.isTimeOverlap = function( one, two ) {\r\n\r\n var clock = this\r\n\r\n // When we’re working with an integer, compare the hours.\r\n if ( _.isInteger( one ) && ( _.isDate( two ) || $.isArray( two ) ) ) {\r\n return one === clock.create( two ).hour\r\n }\r\n if ( _.isInteger( two ) && ( _.isDate( one ) || $.isArray( one ) ) ) {\r\n return two === clock.create( one ).hour\r\n }\r\n\r\n // When we’re working with range objects, check if the ranges overlap.\r\n if ( $.isPlainObject( one ) && $.isPlainObject( two ) ) {\r\n return clock.overlapRanges( one, two )\r\n }\r\n\r\n return false\r\n}\r\n\r\n\r\n/**\r\n * Flip the “enabled” state.\r\n */\r\nTimePicker.prototype.flipEnable = function(val) {\r\n var itemObject = this.item\r\n itemObject.enable = val || (itemObject.enable == -1 ? 1 : -1)\r\n}\r\n\r\n\r\n/**\r\n * Mark a collection of times as “disabled”.\r\n */\r\nTimePicker.prototype.deactivate = function( type, timesToDisable ) {\r\n\r\n var clock = this,\r\n disabledItems = clock.item.disable.slice(0)\r\n\r\n\r\n // If we’re flipping, that’s all we need to do.\r\n if ( timesToDisable == 'flip' ) {\r\n clock.flipEnable()\r\n }\r\n\r\n else if ( timesToDisable === false ) {\r\n clock.flipEnable(1)\r\n disabledItems = []\r\n }\r\n\r\n else if ( timesToDisable === true ) {\r\n clock.flipEnable(-1)\r\n disabledItems = []\r\n }\r\n\r\n // Otherwise go through the times to disable.\r\n else {\r\n\r\n timesToDisable.map(function( unitToDisable ) {\r\n\r\n var matchFound\r\n\r\n // When we have disabled items, check for matches.\r\n // If something is matched, immediately break out.\r\n for ( var index = 0; index < disabledItems.length; index += 1 ) {\r\n if ( clock.isTimeExact( unitToDisable, disabledItems[index] ) ) {\r\n matchFound = true\r\n break\r\n }\r\n }\r\n\r\n // If nothing was found, add the validated unit to the collection.\r\n if ( !matchFound ) {\r\n if (\r\n _.isInteger( unitToDisable ) ||\r\n _.isDate( unitToDisable ) ||\r\n $.isArray( unitToDisable ) ||\r\n ( $.isPlainObject( unitToDisable ) && unitToDisable.from && unitToDisable.to )\r\n ) {\r\n disabledItems.push( unitToDisable )\r\n }\r\n }\r\n })\r\n }\r\n\r\n // Return the updated collection.\r\n return disabledItems\r\n} //TimePicker.prototype.deactivate\r\n\r\n\r\n/**\r\n * Mark a collection of times as “enabled”.\r\n */\r\nTimePicker.prototype.activate = function( type, timesToEnable ) {\r\n\r\n var clock = this,\r\n disabledItems = clock.item.disable,\r\n disabledItemsCount = disabledItems.length\r\n\r\n // If we’re flipping, that’s all we need to do.\r\n if ( timesToEnable == 'flip' ) {\r\n clock.flipEnable()\r\n }\r\n\r\n else if ( timesToEnable === true ) {\r\n clock.flipEnable(1)\r\n disabledItems = []\r\n }\r\n\r\n else if ( timesToEnable === false ) {\r\n clock.flipEnable(-1)\r\n disabledItems = []\r\n }\r\n\r\n // Otherwise go through the disabled times.\r\n else {\r\n\r\n timesToEnable.map(function( unitToEnable ) {\r\n\r\n var matchFound,\r\n disabledUnit,\r\n index,\r\n isRangeMatched\r\n\r\n // Go through the disabled items and try to find a match.\r\n for ( index = 0; index < disabledItemsCount; index += 1 ) {\r\n\r\n disabledUnit = disabledItems[index]\r\n\r\n // When an exact match is found, remove it from the collection.\r\n if ( clock.isTimeExact( disabledUnit, unitToEnable ) ) {\r\n matchFound = disabledItems[index] = null\r\n isRangeMatched = true\r\n break\r\n }\r\n\r\n // When an overlapped match is found, add the “inverted” state to it.\r\n else if ( clock.isTimeOverlap( disabledUnit, unitToEnable ) ) {\r\n if ( $.isPlainObject( unitToEnable ) ) {\r\n unitToEnable.inverted = true\r\n matchFound = unitToEnable\r\n }\r\n else if ( $.isArray( unitToEnable ) ) {\r\n matchFound = unitToEnable\r\n if ( !matchFound[2] ) matchFound.push( 'inverted' )\r\n }\r\n else if ( _.isDate( unitToEnable ) ) {\r\n matchFound = [ unitToEnable.getFullYear(), unitToEnable.getMonth(), unitToEnable.getDate(), 'inverted' ]\r\n }\r\n break\r\n }\r\n }\r\n\r\n // If a match was found, remove a previous duplicate entry.\r\n if ( matchFound ) for ( index = 0; index < disabledItemsCount; index += 1 ) {\r\n if ( clock.isTimeExact( disabledItems[index], unitToEnable ) ) {\r\n disabledItems[index] = null\r\n break\r\n }\r\n }\r\n\r\n // In the event that we’re dealing with an overlap of range times,\r\n // make sure there are no “inverted” times because of it.\r\n if ( isRangeMatched ) for ( index = 0; index < disabledItemsCount; index += 1 ) {\r\n if ( clock.isTimeOverlap( disabledItems[index], unitToEnable ) ) {\r\n disabledItems[index] = null\r\n break\r\n }\r\n }\r\n\r\n // If something is still matched, add it into the collection.\r\n if ( matchFound ) {\r\n disabledItems.push( matchFound )\r\n }\r\n })\r\n }\r\n\r\n // Return the updated collection.\r\n return disabledItems.filter(function( val ) { return val != null })\r\n} //TimePicker.prototype.activate\r\n\r\n\r\n/**\r\n * The division to use for the range intervals.\r\n */\r\nTimePicker.prototype.i = function( type, value/*, options*/ ) {\r\n return _.isInteger( value ) && value > 0 ? value : this.item.interval\r\n}\r\n\r\n\r\n/**\r\n * Create a string for the nodes in the picker.\r\n */\r\nTimePicker.prototype.nodes = function( isOpen ) {\r\n\r\n var\r\n clock = this,\r\n settings = clock.settings,\r\n selectedObject = clock.item.select,\r\n highlightedObject = clock.item.highlight,\r\n viewsetObject = clock.item.view,\r\n disabledCollection = clock.item.disable\r\n\r\n return _.node(\r\n 'ul',\r\n _.group({\r\n min: clock.item.min.pick,\r\n max: clock.item.max.pick,\r\n i: clock.item.interval,\r\n node: 'li',\r\n item: function( loopedTime ) {\r\n loopedTime = clock.create( loopedTime )\r\n var timeMinutes = loopedTime.pick,\r\n isSelected = selectedObject && selectedObject.pick == timeMinutes,\r\n isHighlighted = highlightedObject && highlightedObject.pick == timeMinutes,\r\n isDisabled = disabledCollection && clock.disabled( loopedTime ),\r\n formattedTime = _.trigger( clock.formats.toString, clock, [ settings.format, loopedTime ] )\r\n return [\r\n _.trigger( clock.formats.toString, clock, [ _.trigger( settings.formatLabel, clock, [ loopedTime ] ) || settings.format, loopedTime ] ),\r\n (function( klasses ) {\r\n\r\n if ( isSelected ) {\r\n klasses.push( settings.klass.selected )\r\n }\r\n\r\n if ( isHighlighted ) {\r\n klasses.push( settings.klass.highlighted )\r\n }\r\n\r\n if ( viewsetObject && viewsetObject.pick == timeMinutes ) {\r\n klasses.push( settings.klass.viewset )\r\n }\r\n\r\n if ( isDisabled ) {\r\n klasses.push( settings.klass.disabled )\r\n }\r\n\r\n return klasses.join( ' ' )\r\n })( [ settings.klass.listItem ] ),\r\n 'data-pick=' + loopedTime.pick + ' ' + _.ariaAttr({\r\n role: 'option',\r\n label: formattedTime,\r\n selected: isSelected && clock.$node.val() === formattedTime ? true : null,\r\n activedescendant: isHighlighted ? true : null,\r\n disabled: isDisabled ? true : null\r\n })\r\n ]\r\n }\r\n }) +\r\n\r\n // * For Firefox forms to submit, make sure to set the button’s `type` attribute as “button”.\r\n _.node(\r\n 'li',\r\n _.node(\r\n 'button',\r\n settings.clear,\r\n settings.klass.buttonClear,\r\n 'type=button data-clear=1' + ( isOpen ? '' : ' disabled' ) + ' ' +\r\n _.ariaAttr({ controls: clock.$node[0].id })\r\n ),\r\n '', _.ariaAttr({ role: 'presentation' })\r\n ),\r\n settings.klass.list,\r\n _.ariaAttr({ role: 'listbox', controls: clock.$node[0].id })\r\n )\r\n} //TimePicker.prototype.nodes\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n/**\r\n * Extend the picker to add the component with the defaults.\r\n */\r\nTimePicker.defaults = (function( prefix ) {\r\n\r\n return {\r\n\r\n // Clear\r\n clear: 'Clear',\r\n\r\n // The format to show on the `input` element\r\n format: 'h:i A',\r\n\r\n // The interval between each time\r\n interval: 30,\r\n\r\n // Picker close behavior\r\n closeOnSelect: true,\r\n closeOnClear: true,\r\n\r\n // Classes\r\n klass: {\r\n\r\n picker: prefix + ' ' + prefix + '--time',\r\n holder: prefix + '__holder',\r\n\r\n list: prefix + '__list',\r\n listItem: prefix + '__list-item',\r\n\r\n disabled: prefix + '__list-item--disabled',\r\n selected: prefix + '__list-item--selected',\r\n highlighted: prefix + '__list-item--highlighted',\r\n viewset: prefix + '__list-item--viewset',\r\n now: prefix + '__list-item--now',\r\n\r\n buttonClear: prefix + '__button--clear'\r\n }\r\n }\r\n})( Picker.klasses().picker )\r\n\r\n\r\n\r\n\r\n\r\n/**\r\n * Extend the picker to add the time picker.\r\n */\r\nPicker.extend( 'pickatime', TimePicker )\r\n\r\n\r\n}));\r\n\r\n\r\n\r\n\r\n\r\n","/* js/datPickerTest.js */\r\n/*\r\n$('.datepicker').pickadate();\r\n$('.datepicker-start').pickadate();\r\n$('.datepicker-end').pickadate();*/\r\n\r\n$('.datepicker:not(.no-time), .datepicker-start:not(.no-time), .datepicker-end:not(.no-time)').datetimepicker({\r\n format: \"yyyy-mm-dd hh:ii:ss\",\r\n autoclose: true,\r\n todayBtn: true,\r\n minuteStep: 10\r\n});\r\n$('.datepicker.no-time, .datepicker-start.no-time, .datepicker-end.no-time').datetimepicker({\r\n format: \"yyyy-mm-dd\",\r\n autoclose: true,\r\n todayBtn: true,\r\n minView:2\r\n});","/*\r\n * Dropit v1.1.0\r\n * http://dev7studios.com/dropit\r\n *\r\n * Copyright 2012, Dev7studios\r\n * Free to use and abuse under the MIT license.\r\n * http://www.opensource.org/licenses/mit-license.php\r\n */\r\n\r\n;(function($) {\r\n\r\n $.fn.dropit = function(method) {\r\n\r\n var methods = {\r\n\r\n init : function(options) {\r\n this.dropit.settings = $.extend({}, this.dropit.defaults, options);\r\n return this.each(function() {\r\n var $el = $(this),\r\n el = this,\r\n settings = $.fn.dropit.settings;\r\n\r\n // Hide initial submenus\r\n $el.addClass('dropit')\r\n .find('>'+ settings.triggerParentEl +':has('+ settings.submenuEl +')').addClass('dropit-trigger')\r\n .find(settings.submenuEl).addClass('dropit-submenu').hide();\r\n\r\n // Open on click\r\n $el.off(settings.action).on(settings.action, settings.triggerParentEl +':has('+ settings.submenuEl +') > '+ settings.triggerEl +'', function(){\r\n // Close click menu's if clicked again\r\n if(settings.action == 'click' && $(this).parents(settings.triggerParentEl).hasClass('dropit-open')){\r\n settings.beforeHide.call(this);\r\n $(this).parents(settings.triggerParentEl).removeClass('dropit-open').find(settings.submenuEl).hide();\r\n settings.afterHide.call(this);\r\n return false;\r\n }\r\n\r\n // Hide open menus\r\n settings.beforeHide.call(this);\r\n $('.dropit-open').removeClass('dropit-open').find('.dropit-submenu').hide();\r\n settings.afterHide.call(this);\r\n\r\n // Open this menu\r\n settings.beforeShow.call(this);\r\n $(this).parents(settings.triggerParentEl).addClass('dropit-open').find(settings.submenuEl).show();\r\n settings.afterShow.call(this);\r\n\r\n return false;\r\n });\r\n\r\n // Close if outside click\r\n $(document).on('click', function(){\r\n settings.beforeHide.call(this);\r\n $('.dropit-open').removeClass('dropit-open').find('.dropit-submenu').hide();\r\n settings.afterHide.call(this);\r\n });\r\n\r\n // If hover\r\n if(settings.action == 'mouseenter'){\r\n $el.on('mouseleave', '.dropit-open', function(){\r\n settings.beforeHide.call(this);\r\n $(this).removeClass('dropit-open').find(settings.submenuEl).hide();\r\n settings.afterHide.call(this);\r\n });\r\n }\r\n\r\n settings.afterLoad.call(this);\r\n });\r\n }\r\n\r\n };\r\n\r\n if (methods[method]) {\r\n return methods[method].apply(this, Array.prototype.slice.call(arguments, 1));\r\n } else if (typeof method === 'object' || !method) {\r\n return methods.init.apply(this, arguments);\r\n } else {\r\n $.error( 'Method \"' + method + '\" does not exist in dropit plugin!');\r\n }\r\n\r\n };\r\n\r\n $.fn.dropit.defaults = {\r\n action: 'click', // The open action for the trigger\r\n submenuEl: 'ul', // The submenu element\r\n triggerEl: 'a', // The trigger element\r\n triggerParentEl: 'li', // The trigger parent element\r\n afterLoad: function(){}, // Triggers when plugin has loaded\r\n beforeShow: function(){}, // Triggers before submenu is shown\r\n afterShow: function(){}, // Triggers after submenu is shown\r\n beforeHide: function(){}, // Triggers before submenu is hidden\r\n afterHide: function(){} // Triggers before submenu is hidden\r\n };\r\n\r\n $.fn.dropit.settings = {};\r\n\r\n})(jQuery);\r\n","/*\r\n * jQuery FlexSlider v2.2.2\r\n * Copyright 2012 WooThemes\r\n * Contributing Author: Tyler Smith\r\n */(function(e){e.flexslider=function(t,n){var r=e(t);r.vars=e.extend({},e.flexslider.defaults,n);var i=r.vars.namespace,s=window.navigator&&window.navigator.msPointerEnabled&&window.MSGesture,o=(\"ontouchstart\"in window||s||window.DocumentTouch&&document instanceof DocumentTouch)&&r.vars.touch,u=\"click touchend MSPointerUp\",a=\"\",f,l=r.vars.direction===\"vertical\",c=r.vars.reverse,h=r.vars.itemWidth>0,p=r.vars.animation===\"fade\",d=r.vars.asNavFor!==\"\",v={},m=!0;e.data(t,\"flexslider\",r);v={init:function(){r.animating=!1;r.currentSlide=parseInt(r.vars.startAt?r.vars.startAt:0,10);isNaN(r.currentSlide)&&(r.currentSlide=0);r.animatingTo=r.currentSlide;r.atEnd=r.currentSlide===0||r.currentSlide===r.last;r.containerSelector=r.vars.selector.substr(0,r.vars.selector.search(\" \"));r.slides=e(r.vars.selector,r);r.container=e(r.containerSelector,r);r.count=r.slides.length;r.syncExists=e(r.vars.sync).length>0;r.vars.animation===\"slide\"&&(r.vars.animation=\"swing\");r.prop=l?\"top\":\"marginLeft\";r.args={};r.manualPause=!1;r.stopped=!1;r.started=!1;r.startTimeout=null;r.transitions=!r.vars.video&&!p&&r.vars.useCSS&&function(){var e=document.createElement(\"div\"),t=[\"perspectiveProperty\",\"WebkitPerspective\",\"MozPerspective\",\"OPerspective\",\"msPerspective\"];for(var n in t)if(e.style[t[n]]!==undefined){r.pfx=t[n].replace(\"Perspective\",\"\").toLowerCase();r.prop=\"-\"+r.pfx+\"-transform\";return!0}return!1}();r.vars.controlsContainer!==\"\"&&(r.controlsContainer=e(r.vars.controlsContainer).length>0&&e(r.vars.controlsContainer));r.vars.manualControls!==\"\"&&(r.manualControls=e(r.vars.manualControls).length>0&&e(r.vars.manualControls));if(r.vars.randomize){r.slides.sort(function(){return Math.round(Math.random())-.5});r.container.empty().append(r.slides)}r.doMath();r.setup(\"init\");r.vars.controlNav&&v.controlNav.setup();r.vars.directionNav&&v.directionNav.setup();r.vars.keyboard&&(e(r.containerSelector).length===1||r.vars.multipleKeyboard)&&e(document).bind(\"keyup\",function(e){var t=e.keyCode;if(!r.animating&&(t===39||t===37)){var n=t===39?r.getTarget(\"next\"):t===37?r.getTarget(\"prev\"):!1;r.flexAnimate(n,r.vars.pauseOnAction)}});r.vars.mousewheel&&r.bind(\"mousewheel\",function(e,t,n,i){e.preventDefault();var s=t<0?r.getTarget(\"next\"):r.getTarget(\"prev\");r.flexAnimate(s,r.vars.pauseOnAction)});r.vars.pausePlay&&v.pausePlay.setup();r.vars.slideshow&&r.vars.pauseInvisible&&v.pauseInvisible.init();if(r.vars.slideshow){r.vars.pauseOnHover&&r.hover(function(){!r.manualPlay&&!r.manualPause&&r.pause()},function(){!r.manualPause&&!r.manualPlay&&!r.stopped&&r.play()});if(!r.vars.pauseInvisible||!v.pauseInvisible.isHidden())r.vars.initDelay>0?r.startTimeout=setTimeout(r.play,r.vars.initDelay):r.play()}d&&v.asNav.setup();o&&r.vars.touch&&v.touch();(!p||p&&r.vars.smoothHeight)&&e(window).bind(\"resize orientationchange focus\",v.resize);r.find(\"img\").attr(\"draggable\",\"false\");setTimeout(function(){r.vars.start(r)},200)},asNav:{setup:function(){r.asNav=!0;r.animatingTo=Math.floor(r.currentSlide/r.move);r.currentItem=r.currentSlide;r.slides.removeClass(i+\"active-slide\").eq(r.currentItem).addClass(i+\"active-slide\");if(!s)r.slides.on(u,function(t){t.preventDefault();var n=e(this),s=n.index(),o=n.offset().left-e(r).scrollLeft();if(o<=0&&n.hasClass(i+\"active-slide\"))r.flexAnimate(r.getTarget(\"prev\"),!0);else if(!e(r.vars.asNavFor).data(\"flexslider\").animating&&!n.hasClass(i+\"active-slide\")){r.direction=r.currentItem');if(r.pagingCount>1)for(var f=0;f':\"\"+n+\"\";if(\"thumbnails\"===r.vars.controlNav&&!0===r.vars.thumbCaptions){var l=o.attr(\"data-thumbcaption\");\"\"!=l&&undefined!=l&&(s+=''+l+\"\")}r.controlNavScaffold.append(\"
  • \"+s+\"
  • \");n++}r.controlsContainer?e(r.controlsContainer).append(r.controlNavScaffold):r.append(r.controlNavScaffold);v.controlNav.set();v.controlNav.active();r.controlNavScaffold.delegate(\"a, img\",u,function(t){t.preventDefault();if(a===\"\"||a===t.type){var n=e(this),s=r.controlNav.index(n);if(!n.hasClass(i+\"active\")){r.direction=s>r.currentSlide?\"next\":\"prev\";r.flexAnimate(s,r.vars.pauseOnAction)}}a===\"\"&&(a=t.type);v.setToClearWatchedEvent()})},setupManual:function(){r.controlNav=r.manualControls;v.controlNav.active();r.controlNav.bind(u,function(t){t.preventDefault();if(a===\"\"||a===t.type){var n=e(this),s=r.controlNav.index(n);if(!n.hasClass(i+\"active\")){s>r.currentSlide?r.direction=\"next\":r.direction=\"prev\";r.flexAnimate(s,r.vars.pauseOnAction)}}a===\"\"&&(a=t.type);v.setToClearWatchedEvent()})},set:function(){var t=r.vars.controlNav===\"thumbnails\"?\"img\":\"a\";r.controlNav=e(\".\"+i+\"control-nav li \"+t,r.controlsContainer?r.controlsContainer:r)},active:function(){r.controlNav.removeClass(i+\"active\").eq(r.animatingTo).addClass(i+\"active\")},update:function(t,n){r.pagingCount>1&&t===\"add\"?r.controlNavScaffold.append(e(\"
  • \"+r.count+\"
  • \")):r.pagingCount===1?r.controlNavScaffold.find(\"li\").remove():r.controlNav.eq(n).closest(\"li\").remove();v.controlNav.set();r.pagingCount>1&&r.pagingCount!==r.controlNav.length?r.update(n,t):v.controlNav.active()}},directionNav:{setup:function(){var t=e('\");if(r.controlsContainer){e(r.controlsContainer).append(t);r.directionNav=e(\".\"+i+\"direction-nav li a\",r.controlsContainer)}else{r.append(t);r.directionNav=e(\".\"+i+\"direction-nav li a\",r)}v.directionNav.update();r.directionNav.bind(u,function(t){t.preventDefault();var n;if(a===\"\"||a===t.type){n=e(this).hasClass(i+\"next\")?r.getTarget(\"next\"):r.getTarget(\"prev\");r.flexAnimate(n,r.vars.pauseOnAction)}a===\"\"&&(a=t.type);v.setToClearWatchedEvent()})},update:function(){var e=i+\"disabled\";r.pagingCount===1?r.directionNav.addClass(e).attr(\"tabindex\",\"-1\"):r.vars.animationLoop?r.directionNav.removeClass(e).removeAttr(\"tabindex\"):r.animatingTo===0?r.directionNav.removeClass(e).filter(\".\"+i+\"prev\").addClass(e).attr(\"tabindex\",\"-1\"):r.animatingTo===r.last?r.directionNav.removeClass(e).filter(\".\"+i+\"next\").addClass(e).attr(\"tabindex\",\"-1\"):r.directionNav.removeClass(e).removeAttr(\"tabindex\")}},pausePlay:{setup:function(){var t=e('
    ');if(r.controlsContainer){r.controlsContainer.append(t);r.pausePlay=e(\".\"+i+\"pauseplay a\",r.controlsContainer)}else{r.append(t);r.pausePlay=e(\".\"+i+\"pauseplay a\",r)}v.pausePlay.update(r.vars.slideshow?i+\"pause\":i+\"play\");r.pausePlay.bind(u,function(t){t.preventDefault();if(a===\"\"||a===t.type)if(e(this).hasClass(i+\"pause\")){r.manualPause=!0;r.manualPlay=!1;r.pause()}else{r.manualPause=!1;r.manualPlay=!0;r.play()}a===\"\"&&(a=t.type);v.setToClearWatchedEvent()})},update:function(e){e===\"play\"?r.pausePlay.removeClass(i+\"pause\").addClass(i+\"play\").html(r.vars.playText):r.pausePlay.removeClass(i+\"play\").addClass(i+\"pause\").html(r.vars.pauseText)}},touch:function(){var e,n,i,o,u,a,f=!1,d=0,v=0,m=0;if(!s){t.addEventListener(\"touchstart\",g,!1);function g(s){if(r.animating)s.preventDefault();else if(window.navigator.msPointerEnabled||s.touches.length===1){r.pause();o=l?r.h:r.w;a=Number(new Date);d=s.touches[0].pageX;v=s.touches[0].pageY;i=h&&c&&r.animatingTo===r.last?0:h&&c?r.limit-(r.itemW+r.vars.itemMargin)*r.move*r.animatingTo:h&&r.currentSlide===r.last?r.limit:h?(r.itemW+r.vars.itemMargin)*r.move*r.currentSlide:c?(r.last-r.currentSlide+r.cloneOffset)*o:(r.currentSlide+r.cloneOffset)*o;e=l?v:d;n=l?d:v;t.addEventListener(\"touchmove\",y,!1);t.addEventListener(\"touchend\",b,!1)}}function y(t){d=t.touches[0].pageX;v=t.touches[0].pageY;u=l?e-v:e-d;f=l?Math.abs(u)s){t.preventDefault();if(!p&&r.transitions){r.vars.animationLoop||(u/=r.currentSlide===0&&u<0||r.currentSlide===r.last&&u>0?Math.abs(u)/o+2:1);r.setProps(i+u,\"setTouch\")}}}function b(s){t.removeEventListener(\"touchmove\",y,!1);if(r.animatingTo===r.currentSlide&&!f&&u!==null){var l=c?-u:u,h=l>0?r.getTarget(\"next\"):r.getTarget(\"prev\");r.canAdvance(h)&&(Number(new Date)-a<550&&Math.abs(l)>50||Math.abs(l)>o/2)?r.flexAnimate(h,r.vars.pauseOnAction):p||r.flexAnimate(r.currentSlide,r.vars.pauseOnAction,!0)}t.removeEventListener(\"touchend\",b,!1);e=null;n=null;u=null;i=null}}else{t.style.msTouchAction=\"none\";t._gesture=new MSGesture;t._gesture.target=t;t.addEventListener(\"MSPointerDown\",w,!1);t._slider=r;t.addEventListener(\"MSGestureChange\",E,!1);t.addEventListener(\"MSGestureEnd\",S,!1);function w(e){e.stopPropagation();if(r.animating)e.preventDefault();else{r.pause();t._gesture.addPointer(e.pointerId);m=0;o=l?r.h:r.w;a=Number(new Date);i=h&&c&&r.animatingTo===r.last?0:h&&c?r.limit-(r.itemW+r.vars.itemMargin)*r.move*r.animatingTo:h&&r.currentSlide===r.last?r.limit:h?(r.itemW+r.vars.itemMargin)*r.move*r.currentSlide:c?(r.last-r.currentSlide+r.cloneOffset)*o:(r.currentSlide+r.cloneOffset)*o}}function E(e){e.stopPropagation();var n=e.target._slider;if(!n)return;var r=-e.translationX,s=-e.translationY;m+=l?s:r;u=m;f=l?Math.abs(m)500){e.preventDefault();if(!p&&n.transitions){n.vars.animationLoop||(u=m/(n.currentSlide===0&&m<0||n.currentSlide===n.last&&m>0?Math.abs(m)/o+2:1));n.setProps(i+u,\"setTouch\")}}}function S(t){t.stopPropagation();var r=t.target._slider;if(!r)return;if(r.animatingTo===r.currentSlide&&!f&&u!==null){var s=c?-u:u,l=s>0?r.getTarget(\"next\"):r.getTarget(\"prev\");r.canAdvance(l)&&(Number(new Date)-a<550&&Math.abs(s)>50||Math.abs(s)>o/2)?r.flexAnimate(l,r.vars.pauseOnAction):p||r.flexAnimate(r.currentSlide,r.vars.pauseOnAction,!0)}e=null;n=null;u=null;i=null;m=0}}},resize:function(){if(!r.animating&&r.is(\":visible\")){h||r.doMath();if(p)v.smoothHeight();else if(h){r.slides.width(r.computedW);r.update(r.pagingCount);r.setProps()}else if(l){r.viewport.height(r.h);r.setProps(r.h,\"setTotal\")}else{r.vars.smoothHeight&&v.smoothHeight();r.newSlides.width(r.computedW);r.setProps(r.computedW,\"setTotal\")}}},smoothHeight:function(e){if(!l||p){var t=p?r:r.viewport;e?t.animate({height:r.slides.eq(r.animatingTo).height()},e):t.height(r.slides.eq(r.animatingTo).height())}},sync:function(t){var n=e(r.vars.sync).data(\"flexslider\"),i=r.animatingTo;switch(t){case\"animate\":n.flexAnimate(i,r.vars.pauseOnAction,!1,!0);break;case\"play\":!n.playing&&!n.asNav&&n.play();break;case\"pause\":n.pause()}},uniqueID:function(t){t.find(\"[id]\").each(function(){var t=e(this);t.attr(\"id\",t.attr(\"id\")+\"_clone\")});return t},pauseInvisible:{visProp:null,init:function(){var e=[\"webkit\",\"moz\",\"ms\",\"o\"];if(\"hidden\"in document)return\"hidden\";for(var t=0;t0?setTimeout(r.play,r.vars.initDelay):r.play()})}},isHidden:function(){return document[v.pauseInvisible.visProp]||!1}},setToClearWatchedEvent:function(){clearTimeout(f);f=setTimeout(function(){a=\"\"},3e3)}};r.flexAnimate=function(t,n,s,u,a){!r.vars.animationLoop&&t!==r.currentSlide&&(r.direction=t>r.currentSlide?\"next\":\"prev\");d&&r.pagingCount===1&&(r.direction=r.currentItemr.limit&&r.visible!==1?r.limit:b}else r.currentSlide===0&&t===r.count-1&&r.vars.animationLoop&&r.direction!==\"next\"?y=c?(r.count+r.cloneOffset)*m:0:r.currentSlide===r.last&&t===0&&r.vars.animationLoop&&r.direction!==\"prev\"?y=c?0:(r.count+1)*m:y=c?(r.count-1-t+r.cloneOffset)*m:(t+r.cloneOffset)*m;r.setProps(y,\"\",r.vars.animationSpeed);if(r.transitions){if(!r.vars.animationLoop||!r.atEnd){r.animating=!1;r.currentSlide=r.animatingTo}r.container.unbind(\"webkitTransitionEnd transitionend\");r.container.bind(\"webkitTransitionEnd transitionend\",function(){r.wrapup(m)})}else r.container.animate(r.args,r.vars.animationSpeed,r.vars.easing,function(){r.wrapup(m)})}else if(!o){r.slides.eq(r.currentSlide).css({zIndex:1}).animate({opacity:0},r.vars.animationSpeed,r.vars.easing);r.slides.eq(t).css({zIndex:2}).animate({opacity:1},r.vars.animationSpeed,r.vars.easing,r.wrapup)}else{r.slides.eq(r.currentSlide).css({opacity:0,zIndex:1});r.slides.eq(t).css({opacity:1,zIndex:2});r.wrapup(m)}r.vars.smoothHeight&&v.smoothHeight(r.vars.animationSpeed)}};r.wrapup=function(e){!p&&!h&&(r.currentSlide===0&&r.animatingTo===r.last&&r.vars.animationLoop?r.setProps(e,\"jumpEnd\"):r.currentSlide===r.last&&r.animatingTo===0&&r.vars.animationLoop&&r.setProps(e,\"jumpStart\"));r.animating=!1;r.currentSlide=r.animatingTo;r.vars.after(r)};r.animateSlides=function(){!r.animating&&m&&r.flexAnimate(r.getTarget(\"next\"))};r.pause=function(){clearInterval(r.animatedSlides);r.animatedSlides=null;r.playing=!1;r.vars.pausePlay&&v.pausePlay.update(\"play\");r.syncExists&&v.sync(\"pause\")};r.play=function(){r.playing&&clearInterval(r.animatedSlides);r.animatedSlides=r.animatedSlides||setInterval(r.animateSlides,r.vars.slideshowSpeed);r.started=r.playing=!0;r.vars.pausePlay&&v.pausePlay.update(\"pause\");r.syncExists&&v.sync(\"play\")};r.stop=function(){r.pause();r.stopped=!0};r.canAdvance=function(e,t){var n=d?r.pagingCount-1:r.last;return t?!0:d&&r.currentItem===r.count-1&&e===0&&r.direction===\"prev\"?!0:d&&r.currentItem===0&&e===r.pagingCount-1&&r.direction!==\"next\"?!1:e===r.currentSlide&&!d?!1:r.vars.animationLoop?!0:r.atEnd&&r.currentSlide===0&&e===n&&r.direction!==\"next\"?!1:r.atEnd&&r.currentSlide===n&&e===0&&r.direction===\"next\"?!1:!0};r.getTarget=function(e){r.direction=e;return e===\"next\"?r.currentSlide===r.last?0:r.currentSlide+1:r.currentSlide===0?r.last:r.currentSlide-1};r.setProps=function(e,t,n){var i=function(){var n=e?e:(r.itemW+r.vars.itemMargin)*r.move*r.animatingTo,i=function(){if(h)return t===\"setTouch\"?e:c&&r.animatingTo===r.last?0:c?r.limit-(r.itemW+r.vars.itemMargin)*r.move*r.animatingTo:r.animatingTo===r.last?r.limit:n;switch(t){case\"setTotal\":return c?(r.count-1-r.currentSlide+r.cloneOffset)*e:(r.currentSlide+r.cloneOffset)*e;case\"setTouch\":return c?e:e;case\"jumpEnd\":return c?e:r.count*e;case\"jumpStart\":return c?r.count*e:e;default:return e}}();return i*-1+\"px\"}();if(r.transitions){i=l?\"translate3d(0,\"+i+\",0)\":\"translate3d(\"+i+\",0,0)\";n=n!==undefined?n/1e3+\"s\":\"0s\";r.container.css(\"-\"+r.pfx+\"-transition-duration\",n);r.container.css(\"transition-duration\",n)}r.args[r.prop]=i;(r.transitions||n===undefined)&&r.container.css(r.args);r.container.css(\"transform\",i)};r.setup=function(t){if(!p){var n,s;if(t===\"init\"){r.viewport=e('
    ').css({overflow:\"hidden\",position:\"relative\"}).appendTo(r).append(r.container);r.cloneCount=0;r.cloneOffset=0;if(c){s=e.makeArray(r.slides).reverse();r.slides=e(s);r.container.empty().append(r.slides)}}if(r.vars.animationLoop&&!h){r.cloneCount=2;r.cloneOffset=1;t!==\"init\"&&r.container.find(\".clone\").remove();r.container.append(r.slides.first().clone().addClass(\"clone\").attr(\"aria-hidden\",\"true\")).prepend(r.slides.last().clone().addClass(\"clone\").attr(\"aria-hidden\",\"true\"));v.uniqueID(r.slides.first().clone().addClass(\"clone\")).appendTo(r.container);v.uniqueID(r.slides.last().clone().addClass(\"clone\")).prependTo(r.container)}r.newSlides=e(r.vars.selector,r);n=c?r.count-1-r.currentSlide+r.cloneOffset:r.currentSlide+r.cloneOffset;if(l&&!h){r.container.height((r.count+r.cloneCount)*200+\"%\").css(\"position\",\"absolute\").width(\"100%\");setTimeout(function(){r.newSlides.css({display:\"block\"});r.doMath();r.viewport.height(r.h);r.setProps(n*r.h,\"init\")},t===\"init\"?100:0)}else{r.container.width((r.count+r.cloneCount)*200+\"%\");r.setProps(n*r.computedW,\"init\");setTimeout(function(){r.doMath();r.newSlides.css({width:r.computedW,\"float\":\"left\",display:\"block\"});r.vars.smoothHeight&&v.smoothHeight()},t===\"init\"?100:0)}}else{r.slides.css({width:\"100%\",\"float\":\"left\",marginRight:\"-100%\",position:\"relative\"});t===\"init\"&&(o?r.slides.css({opacity:0,display:\"block\",webkitTransition:\"opacity \"+r.vars.animationSpeed/1e3+\"s ease\",zIndex:1}).eq(r.currentSlide).css({opacity:1,zIndex:2}):r.slides.css({opacity:0,display:\"block\",zIndex:1}).eq(r.currentSlide).css({zIndex:2}).animate({opacity:1},r.vars.animationSpeed,r.vars.easing));r.vars.smoothHeight&&v.smoothHeight()}h||r.slides.removeClass(i+\"active-slide\").eq(r.currentSlide).addClass(i+\"active-slide\");r.vars.init(r)};r.doMath=function(){var e=r.slides.first(),t=r.vars.itemMargin,n=r.vars.minItems,i=r.vars.maxItems;r.w=r.viewport===undefined?r.width():r.viewport.width();r.h=e.height();r.boxPadding=e.outerWidth()-e.width();if(h){r.itemT=r.vars.itemWidth+t;r.minW=n?n*r.itemT:r.w;r.maxW=i?i*r.itemT-t:r.w;r.itemW=r.minW>r.w?(r.w-t*(n-1))/n:r.maxWr.w?r.w:r.vars.itemWidth;r.visible=Math.floor(r.w/r.itemW);r.move=r.vars.move>0&&r.vars.mover.w?r.itemW*(r.count-1)+t*(r.count-1):(r.itemW+t)*r.count-r.w-t}else{r.itemW=r.w;r.pagingCount=r.count;r.last=r.count-1}r.computedW=r.itemW-r.boxPadding};r.update=function(e,t){r.doMath();if(!h){er.controlNav.length)v.controlNav.update(\"add\");else if(t===\"remove\"&&!h||r.pagingCountr.last){r.currentSlide-=1;r.animatingTo-=1}v.controlNav.update(\"remove\",r.last)}r.vars.directionNav&&v.directionNav.update()};r.addSlide=function(t,n){var i=e(t);r.count+=1;r.last=r.count-1;l&&c?n!==undefined?r.slides.eq(r.count-n).after(i):r.container.prepend(i):n!==undefined?r.slides.eq(n).before(i):r.container.append(i);r.update(n,\"add\");r.slides=e(r.vars.selector+\":not(.clone)\",r);r.setup();r.vars.added(r)};r.removeSlide=function(t){var n=isNaN(t)?r.slides.index(e(t)):t;r.count-=1;r.last=r.count-1;isNaN(t)?e(t,r.slides).remove():l&&c?r.slides.eq(r.last).remove():r.slides.eq(t).remove();r.doMath();r.update(n,\"remove\");r.slides=e(r.vars.selector+\":not(.clone)\",r);r.setup();r.vars.removed(r)};v.init()};e(window).blur(function(e){focused=!1}).focus(function(e){focused=!0});e.flexslider.defaults={namespace:\"flex-\",selector:\".slides > li\",animation:\"fade\",easing:\"swing\",direction:\"horizontal\",reverse:!1,animationLoop:!0,smoothHeight:!1,startAt:0,slideshow:!0,slideshowSpeed:7e3,animationSpeed:600,initDelay:0,randomize:!1,thumbCaptions:!1,pauseOnAction:!0,pauseOnHover:!1,pauseInvisible:!0,useCSS:!0,touch:!0,video:!1,controlNav:!0,directionNav:!0,prevText:\"Previous\",nextText:\"Next\",keyboard:!0,multipleKeyboard:!1,mousewheel:!1,pausePlay:!1,pauseText:\"Pause\",playText:\"Play\",controlsContainer:\"\",manualControls:\"\",sync:\"\",asNavFor:\"\",itemWidth:0,itemMargin:0,minItems:1,maxItems:0,move:0,allowOneSlide:!0,start:function(){},before:function(){},after:function(){},end:function(){},added:function(){},removed:function(){},init:function(){}};e.fn.flexslider=function(t){t===undefined&&(t={});if(typeof t==\"object\")return this.each(function(){var n=e(this),r=t.selector?t.selector:\".slides > li\",i=n.find(r);if(i.length===1&&t.allowOneSlide===!0||i.length===0){i.fadeIn(400);t.start&&t.start(n)}else n.data(\"flexslider\")===undefined&&new e.flexslider(this,t)});var n=e(this).data(\"flexslider\");switch(t){case\"play\":n.play();break;case\"pause\":n.pause();break;case\"stop\":n.stop();break;case\"next\":n.flexAnimate(n.getTarget(\"next\"),!0);break;case\"prev\":case\"previous\":n.flexAnimate(n.getTarget(\"prev\"),!0);break;default:typeof t==\"number\"&&n.flexAnimate(t,!0)}}})(jQuery);(function(e){e.flexslider=function(t,n){var r=e(t);r.vars=e.extend({},e.flexslider.defaults,n);var i=r.vars.namespace,s=window.navigator&&window.navigator.msPointerEnabled&&window.MSGesture,o=(\"ontouchstart\"in window||s||window.DocumentTouch&&document instanceof DocumentTouch)&&r.vars.touch,u=\"click touchend MSPointerUp\",a=\"\",f,l=r.vars.direction===\"vertical\",c=r.vars.reverse,h=r.vars.itemWidth>0,p=r.vars.animation===\"fade\",d=r.vars.asNavFor!==\"\",v={},m=!0;e.data(t,\"flexslider\",r);v={init:function(){r.animating=!1;r.currentSlide=parseInt(r.vars.startAt?r.vars.startAt:0,10);isNaN(r.currentSlide)&&(r.currentSlide=0);r.animatingTo=r.currentSlide;r.atEnd=r.currentSlide===0||r.currentSlide===r.last;r.containerSelector=r.vars.selector.substr(0,r.vars.selector.search(\" \"));r.slides=e(r.vars.selector,r);r.container=e(r.containerSelector,r);r.count=r.slides.length;r.syncExists=e(r.vars.sync).length>0;r.vars.animation===\"slide\"&&(r.vars.animation=\"swing\");r.prop=l?\"top\":\"marginLeft\";r.args={};r.manualPause=!1;r.stopped=!1;r.started=!1;r.startTimeout=null;r.transitions=!r.vars.video&&!p&&r.vars.useCSS&&function(){var e=document.createElement(\"div\"),t=[\"perspectiveProperty\",\"WebkitPerspective\",\"MozPerspective\",\"OPerspective\",\"msPerspective\"];for(var n in t)if(e.style[t[n]]!==undefined){r.pfx=t[n].replace(\"Perspective\",\"\").toLowerCase();r.prop=\"-\"+r.pfx+\"-transform\";return!0}return!1}();r.vars.controlsContainer!==\"\"&&(r.controlsContainer=e(r.vars.controlsContainer).length>0&&e(r.vars.controlsContainer));r.vars.manualControls!==\"\"&&(r.manualControls=e(r.vars.manualControls).length>0&&e(r.vars.manualControls));if(r.vars.randomize){r.slides.sort(function(){return Math.round(Math.random())-.5});r.container.empty().append(r.slides)}r.doMath();r.setup(\"init\");r.vars.controlNav&&v.controlNav.setup();r.vars.directionNav&&v.directionNav.setup();r.vars.keyboard&&(e(r.containerSelector).length===1||r.vars.multipleKeyboard)&&e(document).bind(\"keyup\",function(e){var t=e.keyCode;if(!r.animating&&(t===39||t===37)){var n=t===39?r.getTarget(\"next\"):t===37?r.getTarget(\"prev\"):!1;r.flexAnimate(n,r.vars.pauseOnAction)}});r.vars.mousewheel&&r.bind(\"mousewheel\",function(e,t,n,i){e.preventDefault();var s=t<0?r.getTarget(\"next\"):r.getTarget(\"prev\");r.flexAnimate(s,r.vars.pauseOnAction)});r.vars.pausePlay&&v.pausePlay.setup();r.vars.slideshow&&r.vars.pauseInvisible&&v.pauseInvisible.init();if(r.vars.slideshow){r.vars.pauseOnHover&&r.hover(function(){!r.manualPlay&&!r.manualPause&&r.pause()},function(){!r.manualPause&&!r.manualPlay&&!r.stopped&&r.play()});if(!r.vars.pauseInvisible||!v.pauseInvisible.isHidden())r.vars.initDelay>0?r.startTimeout=setTimeout(r.play,r.vars.initDelay):r.play()}d&&v.asNav.setup();o&&r.vars.touch&&v.touch();(!p||p&&r.vars.smoothHeight)&&e(window).bind(\"resize orientationchange focus\",v.resize);r.find(\"img\").attr(\"draggable\",\"false\");setTimeout(function(){r.vars.start(r)},200)},asNav:{setup:function(){r.asNav=!0;r.animatingTo=Math.floor(r.currentSlide/r.move);r.currentItem=r.currentSlide;r.slides.removeClass(i+\"active-slide\").eq(r.currentItem).addClass(i+\"active-slide\");if(!s)r.slides.on(u,function(t){t.preventDefault();var n=e(this),s=n.index(),o=n.offset().left-e(r).scrollLeft();if(o<=0&&n.hasClass(i+\"active-slide\"))r.flexAnimate(r.getTarget(\"prev\"),!0);else if(!e(r.vars.asNavFor).data(\"flexslider\").animating&&!n.hasClass(i+\"active-slide\")){r.direction=r.currentItem');if(r.pagingCount>1)for(var f=0;f':\"\"+n+\"\";if(\"thumbnails\"===r.vars.controlNav&&!0===r.vars.thumbCaptions){var l=o.attr(\"data-thumbcaption\");\"\"!=l&&undefined!=l&&(s+=''+l+\"\")}r.controlNavScaffold.append(\"
  • \"+s+\"
  • \");n++}r.controlsContainer?e(r.controlsContainer).append(r.controlNavScaffold):r.append(r.controlNavScaffold);v.controlNav.set();v.controlNav.active();r.controlNavScaffold.delegate(\"a, img\",u,function(t){t.preventDefault();if(a===\"\"||a===t.type){var n=e(this),s=r.controlNav.index(n);if(!n.hasClass(i+\"active\")){r.direction=s>r.currentSlide?\"next\":\"prev\";r.flexAnimate(s,r.vars.pauseOnAction)}}a===\"\"&&(a=t.type);v.setToClearWatchedEvent()})},setupManual:function(){r.controlNav=r.manualControls;v.controlNav.active();r.controlNav.bind(u,function(t){t.preventDefault();if(a===\"\"||a===t.type){var n=e(this),s=r.controlNav.index(n);if(!n.hasClass(i+\"active\")){s>r.currentSlide?r.direction=\"next\":r.direction=\"prev\";r.flexAnimate(s,r.vars.pauseOnAction)}}a===\"\"&&(a=t.type);v.setToClearWatchedEvent()})},set:function(){var t=r.vars.controlNav===\"thumbnails\"?\"img\":\"a\";r.controlNav=e(\".\"+i+\"control-nav li \"+t,r.controlsContainer?r.controlsContainer:r)},active:function(){r.controlNav.removeClass(i+\"active\").eq(r.animatingTo).addClass(i+\"active\")},update:function(t,n){r.pagingCount>1&&t===\"add\"?r.controlNavScaffold.append(e(\"
  • \"+r.count+\"
  • \")):r.pagingCount===1?r.controlNavScaffold.find(\"li\").remove():r.controlNav.eq(n).closest(\"li\").remove();v.controlNav.set();r.pagingCount>1&&r.pagingCount!==r.controlNav.length?r.update(n,t):v.controlNav.active()}},directionNav:{setup:function(){var t=e('\");if(r.controlsContainer){e(r.controlsContainer).append(t);r.directionNav=e(\".\"+i+\"direction-nav li a\",r.controlsContainer)}else{r.append(t);r.directionNav=e(\".\"+i+\"direction-nav li a\",r)}v.directionNav.update();r.directionNav.bind(u,function(t){t.preventDefault();var n;if(a===\"\"||a===t.type){n=e(this).hasClass(i+\"next\")?r.getTarget(\"next\"):r.getTarget(\"prev\");r.flexAnimate(n,r.vars.pauseOnAction)}a===\"\"&&(a=t.type);v.setToClearWatchedEvent()})},update:function(){var e=i+\"disabled\";r.pagingCount===1?r.directionNav.addClass(e).attr(\"tabindex\",\"-1\"):r.vars.animationLoop?r.directionNav.removeClass(e).removeAttr(\"tabindex\"):r.animatingTo===0?r.directionNav.removeClass(e).filter(\".\"+i+\"prev\").addClass(e).attr(\"tabindex\",\"-1\"):r.animatingTo===r.last?r.directionNav.removeClass(e).filter(\".\"+i+\"next\").addClass(e).attr(\"tabindex\",\"-1\"):r.directionNav.removeClass(e).removeAttr(\"tabindex\")}},pausePlay:{setup:function(){var t=e('
    ');if(r.controlsContainer){r.controlsContainer.append(t);r.pausePlay=e(\".\"+i+\"pauseplay a\",r.controlsContainer)}else{r.append(t);r.pausePlay=e(\".\"+i+\"pauseplay a\",r)}v.pausePlay.update(r.vars.slideshow?i+\"pause\":i+\"play\");r.pausePlay.bind(u,function(t){t.preventDefault();if(a===\"\"||a===t.type)if(e(this).hasClass(i+\"pause\")){r.manualPause=!0;r.manualPlay=!1;r.pause()}else{r.manualPause=!1;r.manualPlay=!0;r.play()}a===\"\"&&(a=t.type);v.setToClearWatchedEvent()})},update:function(e){e===\"play\"?r.pausePlay.removeClass(i+\"pause\").addClass(i+\"play\").html(r.vars.playText):r.pausePlay.removeClass(i+\"play\").addClass(i+\"pause\").html(r.vars.pauseText)}},touch:function(){var e,n,i,o,u,a,f=!1,d=0,v=0,m=0;if(!s){t.addEventListener(\"touchstart\",g,!1);function g(s){if(r.animating)s.preventDefault();else if(window.navigator.msPointerEnabled||s.touches.length===1){r.pause();o=l?r.h:r.w;a=Number(new Date);d=s.touches[0].pageX;v=s.touches[0].pageY;i=h&&c&&r.animatingTo===r.last?0:h&&c?r.limit-(r.itemW+r.vars.itemMargin)*r.move*r.animatingTo:h&&r.currentSlide===r.last?r.limit:h?(r.itemW+r.vars.itemMargin)*r.move*r.currentSlide:c?(r.last-r.currentSlide+r.cloneOffset)*o:(r.currentSlide+r.cloneOffset)*o;e=l?v:d;n=l?d:v;t.addEventListener(\"touchmove\",y,!1);t.addEventListener(\"touchend\",b,!1)}}function y(t){d=t.touches[0].pageX;v=t.touches[0].pageY;u=l?e-v:e-d;f=l?Math.abs(u)s){t.preventDefault();if(!p&&r.transitions){r.vars.animationLoop||(u/=r.currentSlide===0&&u<0||r.currentSlide===r.last&&u>0?Math.abs(u)/o+2:1);r.setProps(i+u,\"setTouch\")}}}function b(s){t.removeEventListener(\"touchmove\",y,!1);if(r.animatingTo===r.currentSlide&&!f&&u!==null){var l=c?-u:u,h=l>0?r.getTarget(\"next\"):r.getTarget(\"prev\");r.canAdvance(h)&&(Number(new Date)-a<550&&Math.abs(l)>50||Math.abs(l)>o/2)?r.flexAnimate(h,r.vars.pauseOnAction):p||r.flexAnimate(r.currentSlide,r.vars.pauseOnAction,!0)}t.removeEventListener(\"touchend\",b,!1);e=null;n=null;u=null;i=null}}else{t.style.msTouchAction=\"none\";t._gesture=new MSGesture;t._gesture.target=t;t.addEventListener(\"MSPointerDown\",w,!1);t._slider=r;t.addEventListener(\"MSGestureChange\",E,!1);t.addEventListener(\"MSGestureEnd\",S,!1);function w(e){e.stopPropagation();if(r.animating)e.preventDefault();else{r.pause();t._gesture.addPointer(e.pointerId);m=0;o=l?r.h:r.w;a=Number(new Date);i=h&&c&&r.animatingTo===r.last?0:h&&c?r.limit-(r.itemW+r.vars.itemMargin)*r.move*r.animatingTo:h&&r.currentSlide===r.last?r.limit:h?(r.itemW+r.vars.itemMargin)*r.move*r.currentSlide:c?(r.last-r.currentSlide+r.cloneOffset)*o:(r.currentSlide+r.cloneOffset)*o}}function E(e){e.stopPropagation();var n=e.target._slider;if(!n)return;var r=-e.translationX,s=-e.translationY;m+=l?s:r;u=m;f=l?Math.abs(m)500){e.preventDefault();if(!p&&n.transitions){n.vars.animationLoop||(u=m/(n.currentSlide===0&&m<0||n.currentSlide===n.last&&m>0?Math.abs(m)/o+2:1));n.setProps(i+u,\"setTouch\")}}}function S(t){t.stopPropagation();var r=t.target._slider;if(!r)return;if(r.animatingTo===r.currentSlide&&!f&&u!==null){var s=c?-u:u,l=s>0?r.getTarget(\"next\"):r.getTarget(\"prev\");r.canAdvance(l)&&(Number(new Date)-a<550&&Math.abs(s)>50||Math.abs(s)>o/2)?r.flexAnimate(l,r.vars.pauseOnAction):p||r.flexAnimate(r.currentSlide,r.vars.pauseOnAction,!0)}e=null;n=null;u=null;i=null;m=0}}},resize:function(){if(!r.animating&&r.is(\":visible\")){h||r.doMath();if(p)v.smoothHeight();else if(h){r.slides.width(r.computedW);r.update(r.pagingCount);r.setProps()}else if(l){r.viewport.height(r.h);r.setProps(r.h,\"setTotal\")}else{r.vars.smoothHeight&&v.smoothHeight();r.newSlides.width(r.computedW\r\n);r.setProps(r.computedW,\"setTotal\")}}},smoothHeight:function(e){if(!l||p){var t=p?r:r.viewport;e?t.animate({height:r.slides.eq(r.animatingTo).height()},e):t.height(r.slides.eq(r.animatingTo).height())}},sync:function(t){var n=e(r.vars.sync).data(\"flexslider\"),i=r.animatingTo;switch(t){case\"animate\":n.flexAnimate(i,r.vars.pauseOnAction,!1,!0);break;case\"play\":!n.playing&&!n.asNav&&n.play();break;case\"pause\":n.pause()}},uniqueID:function(t){t.find(\"[id]\").each(function(){var t=e(this);t.attr(\"id\",t.attr(\"id\")+\"_clone\")});return t},pauseInvisible:{visProp:null,init:function(){var e=[\"webkit\",\"moz\",\"ms\",\"o\"];if(\"hidden\"in document)return\"hidden\";for(var t=0;t0?setTimeout(r.play,r.vars.initDelay):r.play()})}},isHidden:function(){return document[v.pauseInvisible.visProp]||!1}},setToClearWatchedEvent:function(){clearTimeout(f);f=setTimeout(function(){a=\"\"},3e3)}};r.flexAnimate=function(t,n,s,u,a){!r.vars.animationLoop&&t!==r.currentSlide&&(r.direction=t>r.currentSlide?\"next\":\"prev\");d&&r.pagingCount===1&&(r.direction=r.currentItemr.limit&&r.visible!==1?r.limit:b}else r.currentSlide===0&&t===r.count-1&&r.vars.animationLoop&&r.direction!==\"next\"?y=c?(r.count+r.cloneOffset)*m:0:r.currentSlide===r.last&&t===0&&r.vars.animationLoop&&r.direction!==\"prev\"?y=c?0:(r.count+1)*m:y=c?(r.count-1-t+r.cloneOffset)*m:(t+r.cloneOffset)*m;r.setProps(y,\"\",r.vars.animationSpeed);if(r.transitions){if(!r.vars.animationLoop||!r.atEnd){r.animating=!1;r.currentSlide=r.animatingTo}r.container.unbind(\"webkitTransitionEnd transitionend\");r.container.bind(\"webkitTransitionEnd transitionend\",function(){r.wrapup(m)})}else r.container.animate(r.args,r.vars.animationSpeed,r.vars.easing,function(){r.wrapup(m)})}else if(!o){r.slides.eq(r.currentSlide).css({zIndex:1}).animate({opacity:0},r.vars.animationSpeed,r.vars.easing);r.slides.eq(t).css({zIndex:2}).animate({opacity:1},r.vars.animationSpeed,r.vars.easing,r.wrapup)}else{r.slides.eq(r.currentSlide).css({opacity:0,zIndex:1});r.slides.eq(t).css({opacity:1,zIndex:2});r.wrapup(m)}r.vars.smoothHeight&&v.smoothHeight(r.vars.animationSpeed)}};r.wrapup=function(e){!p&&!h&&(r.currentSlide===0&&r.animatingTo===r.last&&r.vars.animationLoop?r.setProps(e,\"jumpEnd\"):r.currentSlide===r.last&&r.animatingTo===0&&r.vars.animationLoop&&r.setProps(e,\"jumpStart\"));r.animating=!1;r.currentSlide=r.animatingTo;r.vars.after(r)};r.animateSlides=function(){!r.animating&&m&&r.flexAnimate(r.getTarget(\"next\"))};r.pause=function(){clearInterval(r.animatedSlides);r.animatedSlides=null;r.playing=!1;r.vars.pausePlay&&v.pausePlay.update(\"play\");r.syncExists&&v.sync(\"pause\")};r.play=function(){r.playing&&clearInterval(r.animatedSlides);r.animatedSlides=r.animatedSlides||setInterval(r.animateSlides,r.vars.slideshowSpeed);r.started=r.playing=!0;r.vars.pausePlay&&v.pausePlay.update(\"pause\");r.syncExists&&v.sync(\"play\")};r.stop=function(){r.pause();r.stopped=!0};r.canAdvance=function(e,t){var n=d?r.pagingCount-1:r.last;return t?!0:d&&r.currentItem===r.count-1&&e===0&&r.direction===\"prev\"?!0:d&&r.currentItem===0&&e===r.pagingCount-1&&r.direction!==\"next\"?!1:e===r.currentSlide&&!d?!1:r.vars.animationLoop?!0:r.atEnd&&r.currentSlide===0&&e===n&&r.direction!==\"next\"?!1:r.atEnd&&r.currentSlide===n&&e===0&&r.direction===\"next\"?!1:!0};r.getTarget=function(e){r.direction=e;return e===\"next\"?r.currentSlide===r.last?0:r.currentSlide+1:r.currentSlide===0?r.last:r.currentSlide-1};r.setProps=function(e,t,n){var i=function(){var n=e?e:(r.itemW+r.vars.itemMargin)*r.move*r.animatingTo,i=function(){if(h)return t===\"setTouch\"?e:c&&r.animatingTo===r.last?0:c?r.limit-(r.itemW+r.vars.itemMargin)*r.move*r.animatingTo:r.animatingTo===r.last?r.limit:n;switch(t){case\"setTotal\":return c?(r.count-1-r.currentSlide+r.cloneOffset)*e:(r.currentSlide+r.cloneOffset)*e;case\"setTouch\":return c?e:e;case\"jumpEnd\":return c?e:r.count*e;case\"jumpStart\":return c?r.count*e:e;default:return e}}();return i*-1+\"px\"}();if(r.transitions){i=l?\"translate3d(0,\"+i+\",0)\":\"translate3d(\"+i+\",0,0)\";n=n!==undefined?n/1e3+\"s\":\"0s\";r.container.css(\"-\"+r.pfx+\"-transition-duration\",n);r.container.css(\"transition-duration\",n)}r.args[r.prop]=i;(r.transitions||n===undefined)&&r.container.css(r.args);r.container.css(\"transform\",i)};r.setup=function(t){if(!p){var n,s;if(t===\"init\"){r.viewport=e('
    ').css({overflow:\"hidden\",position:\"relative\"}).appendTo(r).append(r.container);r.cloneCount=0;r.cloneOffset=0;if(c){s=e.makeArray(r.slides).reverse();r.slides=e(s);r.container.empty().append(r.slides)}}if(r.vars.animationLoop&&!h){r.cloneCount=2;r.cloneOffset=1;t!==\"init\"&&r.container.find(\".clone\").remove();r.container.append(r.slides.first().clone().addClass(\"clone\").attr(\"aria-hidden\",\"true\")).prepend(r.slides.last().clone().addClass(\"clone\").attr(\"aria-hidden\",\"true\"));v.uniqueID(r.slides.first().clone().addClass(\"clone\")).appendTo(r.container);v.uniqueID(r.slides.last().clone().addClass(\"clone\")).prependTo(r.container)}r.newSlides=e(r.vars.selector,r);n=c?r.count-1-r.currentSlide+r.cloneOffset:r.currentSlide+r.cloneOffset;if(l&&!h){r.container.height((r.count+r.cloneCount)*200+\"%\").css(\"position\",\"absolute\").width(\"100%\");setTimeout(function(){r.newSlides.css({display:\"block\"});r.doMath();r.viewport.height(r.h);r.setProps(n*r.h,\"init\")},t===\"init\"?100:0)}else{r.container.width((r.count+r.cloneCount)*200+\"%\");r.setProps(n*r.computedW,\"init\");setTimeout(function(){r.doMath();r.newSlides.css({width:r.computedW,\"float\":\"left\",display:\"block\"});r.vars.smoothHeight&&v.smoothHeight()},t===\"init\"?100:0)}}else{r.slides.css({width:\"100%\",\"float\":\"left\",marginRight:\"-100%\",position:\"relative\"});t===\"init\"&&(o?r.slides.css({opacity:0,display:\"block\",webkitTransition:\"opacity \"+r.vars.animationSpeed/1e3+\"s ease\",zIndex:1}).eq(r.currentSlide).css({opacity:1,zIndex:2}):r.slides.css({opacity:0,display:\"block\",zIndex:1}).eq(r.currentSlide).css({zIndex:2}).animate({opacity:1},r.vars.animationSpeed,r.vars.easing));r.vars.smoothHeight&&v.smoothHeight()}h||r.slides.removeClass(i+\"active-slide\").eq(r.currentSlide).addClass(i+\"active-slide\");r.vars.init(r)};r.doMath=function(){var e=r.slides.first(),t=r.vars.itemMargin,n=r.vars.minItems,i=r.vars.maxItems;r.w=r.viewport===undefined?r.width():r.viewport.width();r.h=e.height();r.boxPadding=e.outerWidth()-e.width();if(h){r.itemT=r.vars.itemWidth+t;r.minW=n?n*r.itemT:r.w;r.maxW=i?i*r.itemT-t:r.w;r.itemW=r.minW>r.w?(r.w-t*(n-1))/n:r.maxWr.w?r.w:r.vars.itemWidth;r.visible=Math.floor(r.w/r.itemW);r.move=r.vars.move>0&&r.vars.mover.w?r.itemW*(r.count-1)+t*(r.count-1):(r.itemW+t)*r.count-r.w-t}else{r.itemW=r.w;r.pagingCount=r.count;r.last=r.count-1}r.computedW=r.itemW-r.boxPadding};r.update=function(e,t){r.doMath();if(!h){er.controlNav.length)v.controlNav.update(\"add\");else if(t===\"remove\"&&!h||r.pagingCountr.last){r.currentSlide-=1;r.animatingTo-=1}v.controlNav.update(\"remove\",r.last)}r.vars.directionNav&&v.directionNav.update()};r.addSlide=function(t,n){var i=e(t);r.count+=1;r.last=r.count-1;l&&c?n!==undefined?r.slides.eq(r.count-n).after(i):r.container.prepend(i):n!==undefined?r.slides.eq(n).before(i):r.container.append(i);r.update(n,\"add\");r.slides=e(r.vars.selector+\":not(.clone)\",r);r.setup();r.vars.added(r)};r.removeSlide=function(t){var n=isNaN(t)?r.slides.index(e(t)):t;r.count-=1;r.last=r.count-1;isNaN(t)?e(t,r.slides).remove():l&&c?r.slides.eq(r.last).remove():r.slides.eq(t).remove();r.doMath();r.update(n,\"remove\");r.slides=e(r.vars.selector+\":not(.clone)\",r);r.setup();r.vars.removed(r)};v.init()};e(window).blur(function(e){focused=!1}).focus(function(e){focused=!0});e.flexslider.defaults={namespace:\"flex-\",selector:\".slides > li\",animation:\"fade\",easing:\"swing\",direction:\"horizontal\",reverse:!1,animationLoop:!0,smoothHeight:!1,startAt:0,slideshow:!0,slideshowSpeed:7e3,animationSpeed:600,initDelay:0,randomize:!1,thumbCaptions:!1,pauseOnAction:!0,pauseOnHover:!1,pauseInvisible:!0,useCSS:!0,touch:!0,video:!1,controlNav:!0,directionNav:!0,prevText:\"Previous\",nextText:\"Next\",keyboard:!0,multipleKeyboard:!1,mousewheel:!1,pausePlay:!1,pauseText:\"Pause\",playText:\"Play\",controlsContainer:\"\",manualControls:\"\",sync:\"\",asNavFor:\"\",itemWidth:0,itemMargin:0,minItems:1,maxItems:0,move:0,allowOneSlide:!0,start:function(){},before:function(){},after:function(){},end:function(){},added:function(){},removed:function(){},init:function(){}};e.fn.flexslider=function(t){t===undefined&&(t={});if(typeof t==\"object\")return this.each(function(){var n=e(this),r=t.selector?t.selector:\".slides > li\",i=n.find(r);if(i.length===1&&t.allowOneSlide===!0||i.length===0){i.fadeIn(400);t.start&&t.start(n)}else n.data(\"flexslider\")===undefined&&new e.flexslider(this,t)});var n=e(this).data(\"flexslider\");switch(t){case\"play\":n.play();break;case\"pause\":n.pause();break;case\"stop\":n.stop();break;case\"next\":n.flexAnimate(n.getTarget(\"next\"),!0);break;case\"prev\":case\"previous\":n.flexAnimate(n.getTarget(\"prev\"),!0);break;default:typeof t==\"number\"&&n.flexAnimate(t,!0)}}})(jQuery);\r\n","jQuery( document ).ready(function( $ ) {\r\n\r\n\r\n$(function(){\r\n var onClass = \"on\";\r\n var showClass = \"show\";\r\n var labelOn = \"labelOn\";\r\n \r\n $(\".js-floatInput\").bind(\"checkval\",function(){\r\n var label = $(this).prev(\".js-floatLabel\");\r\n if(this.value !== \"\"){\r\n label.addClass(showClass);\r\n $(this).parent().addClass(labelOn);\r\n } else {\r\n label.removeClass(showClass);\r\n $(this).parent().removeClass(labelOn);\r\n }\r\n }).on(\"keyup\",function(){\r\n $(this).trigger(\"checkval\");\r\n }).on(\"focus\",function(){\r\n $(this).prev(\".js-floatLabel\").addClass(onClass);\r\n \r\n }).on(\"blur\",function(){\r\n $(this).prev(\".js-floatLabel\").removeClass(onClass);\r\n }).trigger(\"checkval\");\r\n});\r\n\r\n\r\n});\r\n\r\n\r\n\r\n\r\n//$(function(){\r\n// var onClass = \"on\";\r\n// var showClass = \"show\";\r\n// var labelOn = \"labelOn\";\r\n// \r\n// $(\"textarea\").bind(\"checkval\",function(){\r\n// var label = $(this).prev(\"label\");\r\n// if(this.value !== \"\"){\r\n// label.addClass(showClass);\r\n// $(this).parent().addClass(labelOn);\r\n// } else {\r\n// label.removeClass(showClass);\r\n// $(this).parent().removeClass(labelOn);\r\n// }\r\n// }).on(\"keyup\",function(){\r\n// $(this).trigger(\"checkval\");\r\n// }).on(\"focus\",function(){\r\n// $(this).prev(\"label\").addClass(onClass);\r\n// \r\n// }).on(\"blur\",function(){\r\n// $(this).prev(\"label\").removeClass(onClass);\r\n// }).trigger(\"checkval\");\r\n//});","/* js/mainTimer.js */\r\n\r\n(function(){\r\n\t\t\tvar hasTimer = false;\r\n\t\t\t// Init timer start\r\n\t\t\t$('.start-timer-btn').on('click', function() {\r\n\t\t\t\thasTimer = true;\r\n\t\t\t\t//$('.timer').timer({\r\n\t\t\t\t//\teditable: true,\r\n\t\t\t\t//\tformat: '%M:%S'\r\n\t\t\t\t//});\r\n\t\t\t\t$(this).addClass('hidden');\r\n\t\t\t\t$('.pause-timer-btn, .remove-timer-btn').removeClass('hidden');\r\n\t\t\t});\r\n\r\n\t\t\t// Init timer resume\r\n\t\t\t$('.resume-timer-btn').on('click', function() {\r\n\t\t\t\t$('.timer').timer('resume');\r\n\t\t\t\t$(this).addClass('hidden');\r\n\t\t\t\t$('.pause-timer-btn, .remove-timer-btn').removeClass('hidden');\r\n\t\t\t});\r\n\r\n\r\n\t\t\t// Init timer pause\r\n\t\t\t$('.pause-timer-btn').on('click', function() {\r\n\t\t\t\t$('.timer').timer('pause');\r\n\t\t\t\t$(this).addClass('hidden');\r\n\t\t\t\t$('.resume-timer-btn').removeClass('hidden');\r\n\t\t\t});\r\n\r\n\t\t\t// Remove timer\r\n\t\t\t$('.remove-timer-btn').on('click', function() {\r\n\t\t\t\thasTimer = false;\r\n\t\t\t\t$('.timer').timer('remove');\r\n\t\t\t\t$(this).addClass('hidden');\r\n\t\t\t\t$('.start-timer-btn').removeClass('hidden');\r\n\t\t\t\t$('.pause-timer-btn, .resume-timer-btn').addClass('hidden');\r\n\t\t\t});\r\n\r\n\t\t\t// Additional focus event for this demo\r\n\t\t\t$('.timer').on('focus', function() {\r\n\t\t\t\tif(hasTimer) {\r\n\t\t\t\t\t$('.pause-timer-btn').addClass('hidden');\r\n\t\t\t\t\t$('.resume-timer-btn').removeClass('hidden');\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\t\t// Additional blur event for this demo\r\n\t\t\t$('.timer').on('blur', function() {\r\n\t\t\t\tif(hasTimer) {\r\n\t\t\t\t\t$('.pause-timer-btn').removeClass('hidden');\r\n\t\t\t\t\t$('.resume-timer-btn').addClass('hidden');\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t})();","jQuery( document ).ready(function( $ ) {\r\n\r\n //$( '.toggle' ).click(function() {\r\n// $(this).toggleClass('toggle-open');\r\n// $('.navMain__cover').toggleClass('navMain-open');\r\n// });\r\n\r\n $( '.toggle' ).click(function() {\r\n $(this).toggleClass('toggle-open');\r\n $('.navMain__standard').find('.navMain-inner').slideToggle();\r\n });\r\n\r\n\r\n\r\n\r\n\r\n\r\n});","/**\r\n * jquery-circle-progress - jQuery Plugin to draw animated circular progress bars:\r\n * {@link http://kottenator.github.io/jquery-circle-progress/}\r\n *\r\n * @author Rostyslav Bryzgunov \r\n * @version 1.2.1\r\n * @licence MIT\r\n * @preserve\r\n */\r\n// UMD factory - https://github.com/umdjs/umd/blob/d31bb6ee7098715e019f52bdfe27b3e4bfd2b97e/templates/jqueryPlugin.js\r\n// Uses AMD, CommonJS or browser globals to create a jQuery plugin.\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 var $ = require('jquery');\r\n factory($);\r\n module.exports = $;\r\n } else {\r\n // Browser globals\r\n factory(jQuery);\r\n }\r\n})(function($) {\r\n /**\r\n * Inner implementation of the circle progress bar.\r\n * The class is not exposed _yet_ but you can create an instance through jQuery method call.\r\n *\r\n * @param {object} config - You can customize any class member (property or method).\r\n * @class\r\n * @alias CircleProgress\r\n */\r\n function CircleProgress(config) {\r\n this.init(config);\r\n }\r\n\r\n CircleProgress.prototype = {\r\n //--------------------------------------- public options ---------------------------------------\r\n /**\r\n * This is the only required option. It should be from `0.0` to `1.0`.\r\n * @type {number}\r\n * @default 0.0\r\n */\r\n value: 0.0,\r\n\r\n /**\r\n * Size of the canvas in pixels.\r\n * It's a square so we need only one dimension.\r\n * @type {number}\r\n * @default 100.0\r\n */\r\n size: 100.0,\r\n\r\n /**\r\n * Initial angle for `0.0` value in radians.\r\n * @type {number}\r\n * @default -Math.PI\r\n */\r\n startAngle: -Math.PI,\r\n\r\n /**\r\n * Width of the arc in pixels.\r\n * If it's `'auto'` - the value is calculated as `[this.size]{@link CircleProgress#size} / 14`.\r\n * @type {number|string}\r\n * @default 'auto'\r\n */\r\n thickness: 'auto',\r\n\r\n /**\r\n * Fill of the arc. You may set it to:\r\n *\r\n * - solid color:\r\n * - `'#3aeabb'`\r\n * - `{ color: '#3aeabb' }`\r\n * - `{ color: 'rgba(255, 255, 255, .3)' }`\r\n * - linear gradient _(left to right)_:\r\n * - `{ gradient: ['#3aeabb', '#fdd250'], gradientAngle: Math.PI / 4 }`\r\n * - `{ gradient: ['red', 'green', 'blue'], gradientDirection: [x0, y0, x1, y1] }`\r\n * - `{ gradient: [[\"red\", .2], [\"green\", .3], [\"blue\", .8]] }`\r\n * - image:\r\n * - `{ image: 'http://i.imgur.com/pT0i89v.png' }`\r\n * - `{ image: imageObject }`\r\n * - `{ color: 'lime', image: 'http://i.imgur.com/pT0i89v.png' }` -\r\n * color displayed until the image is loaded\r\n *\r\n * @default {gradient: ['#3aeabb', '#fdd250']}\r\n */\r\n fill: {\r\n gradient: ['#3aeabb', '#fdd250']\r\n },\r\n\r\n /**\r\n * Color of the \"empty\" arc. Only a color fill supported by now.\r\n * @type {string}\r\n * @default 'rgba(0, 0, 0, .1)'\r\n */\r\n emptyFill: 'rgba(0, 0, 0, .1)',\r\n\r\n /**\r\n * jQuery Animation config.\r\n * You can pass `false` to disable the animation.\r\n * @see http://api.jquery.com/animate/\r\n * @type {object|boolean}\r\n * @default {duration: 1200, easing: 'circleProgressEasing'}\r\n */\r\n animation: {\r\n duration: 1200,\r\n easing: 'circleProgressEasing'\r\n },\r\n\r\n /**\r\n * Default animation starts at `0.0` and ends at specified `value`. Let's call this _direct animation_.\r\n * If you want to make _reversed animation_ - set `animationStartValue: 1.0`.\r\n * Also you may specify any other value from `0.0` to `1.0`.\r\n * @type {number}\r\n * @default 0.0\r\n */\r\n animationStartValue: 0.0,\r\n\r\n /**\r\n * Reverse animation and arc draw.\r\n * By default, the arc is filled from `0.0` to `value`, _clockwise_.\r\n * With `reverse: true` the arc is filled from `1.0` to `value`, _counter-clockwise_.\r\n * @type {boolean}\r\n * @default false\r\n */\r\n reverse: false,\r\n\r\n /**\r\n * Arc line cap: `'butt'`, `'round'` or `'square'` -\r\n * [read more]{@link https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D.lineCap}.\r\n * @type {string}\r\n * @default 'butt'\r\n */\r\n lineCap: 'butt',\r\n\r\n /**\r\n * Canvas insertion mode: append or prepend it into the parent element?\r\n * @type {string}\r\n * @default 'prepend'\r\n */\r\n insertMode: 'prepend',\r\n\r\n //------------------------------ protected properties and methods ------------------------------\r\n /**\r\n * Link to {@link CircleProgress} constructor.\r\n * @protected\r\n */\r\n constructor: CircleProgress,\r\n\r\n /**\r\n * Container element. Should be passed into constructor config.\r\n * @protected\r\n * @type {jQuery}\r\n */\r\n el: null,\r\n\r\n /**\r\n * Canvas element. Automatically generated and prepended to [this.el]{@link CircleProgress#el}.\r\n * @protected\r\n * @type {HTMLCanvasElement}\r\n */\r\n canvas: null,\r\n\r\n /**\r\n * 2D-context of [this.canvas]{@link CircleProgress#canvas}.\r\n * @protected\r\n * @type {CanvasRenderingContext2D}\r\n */\r\n ctx: null,\r\n\r\n /**\r\n * Radius of the outer circle. Automatically calculated as `[this.size]{@link CircleProgress#size} / 2`.\r\n * @protected\r\n * @type {number}\r\n */\r\n radius: 0.0,\r\n\r\n /**\r\n * Fill of the main arc. Automatically calculated, depending on [this.fill]{@link CircleProgress#fill} option.\r\n * @protected\r\n * @type {string|CanvasGradient|CanvasPattern}\r\n */\r\n arcFill: null,\r\n\r\n /**\r\n * Last rendered frame value.\r\n * @protected\r\n * @type {number}\r\n */\r\n lastFrameValue: 0.0,\r\n\r\n /**\r\n * Init/re-init the widget.\r\n *\r\n * Throws a jQuery event:\r\n *\r\n * - `circle-inited(jqEvent)`\r\n *\r\n * @param {object} config - You can customize any class member (property or method).\r\n */\r\n init: function(config) {\r\n $.extend(this, config);\r\n this.radius = this.size / 2;\r\n this.initWidget();\r\n this.initFill();\r\n this.draw();\r\n this.el.trigger('circle-inited');\r\n },\r\n\r\n /**\r\n * Initialize ``.\r\n * @protected\r\n */\r\n initWidget: function() {\r\n if (!this.canvas)\r\n this.canvas = $('')[this.insertMode == 'prepend' ? 'prependTo' : 'appendTo'](this.el)[0];\r\n\r\n var canvas = this.canvas;\r\n canvas.width = this.size;\r\n canvas.height = this.size;\r\n this.ctx = canvas.getContext('2d');\r\n\r\n if (window.devicePixelRatio > 1) {\r\n var scaleBy = window.devicePixelRatio;\r\n canvas.style.width = canvas.style.height = this.size + 'px';\r\n canvas.width = canvas.height = this.size * scaleBy;\r\n this.ctx.scale(scaleBy, scaleBy);\r\n }\r\n },\r\n\r\n /**\r\n * This method sets [this.arcFill]{@link CircleProgress#arcFill}.\r\n * It could do this async (on image load).\r\n * @protected\r\n */\r\n initFill: function() {\r\n var self = this,\r\n fill = this.fill,\r\n ctx = this.ctx,\r\n size = this.size;\r\n\r\n if (!fill)\r\n throw Error(\"The fill is not specified!\");\r\n\r\n if (typeof fill == 'string')\r\n fill = {color: fill};\r\n\r\n if (fill.color)\r\n this.arcFill = fill.color;\r\n\r\n if (fill.gradient) {\r\n var gr = fill.gradient;\r\n\r\n if (gr.length == 1) {\r\n this.arcFill = gr[0];\r\n } else if (gr.length > 1) {\r\n var ga = fill.gradientAngle || 0, // gradient direction angle; 0 by default\r\n gd = fill.gradientDirection || [\r\n size / 2 * (1 - Math.cos(ga)), // x0\r\n size / 2 * (1 + Math.sin(ga)), // y0\r\n size / 2 * (1 + Math.cos(ga)), // x1\r\n size / 2 * (1 - Math.sin(ga)) // y1\r\n ];\r\n\r\n var lg = ctx.createLinearGradient.apply(ctx, gd);\r\n\r\n for (var i = 0; i < gr.length; i++) {\r\n var color = gr[i],\r\n pos = i / (gr.length - 1);\r\n\r\n if ($.isArray(color)) {\r\n pos = color[1];\r\n color = color[0];\r\n }\r\n\r\n lg.addColorStop(pos, color);\r\n }\r\n\r\n this.arcFill = lg;\r\n }\r\n }\r\n\r\n if (fill.image) {\r\n var img;\r\n\r\n if (fill.image instanceof Image) {\r\n img = fill.image;\r\n } else {\r\n img = new Image();\r\n img.src = fill.image;\r\n }\r\n\r\n if (img.complete)\r\n setImageFill();\r\n else\r\n img.onload = setImageFill;\r\n }\r\n\r\n function setImageFill() {\r\n var bg = $('')[0];\r\n bg.width = self.size;\r\n bg.height = self.size;\r\n bg.getContext('2d').drawImage(img, 0, 0, size, size);\r\n self.arcFill = self.ctx.createPattern(bg, 'no-repeat');\r\n self.drawFrame(self.lastFrameValue);\r\n }\r\n },\r\n\r\n /**\r\n * Draw the circle.\r\n * @protected\r\n */\r\n draw: function() {\r\n if (this.animation)\r\n this.drawAnimated(this.value);\r\n else\r\n this.drawFrame(this.value);\r\n },\r\n\r\n /**\r\n * Draw a single animation frame.\r\n * @protected\r\n * @param {number} v - Frame value.\r\n */\r\n drawFrame: function(v) {\r\n this.lastFrameValue = v;\r\n this.ctx.clearRect(0, 0, this.size, this.size);\r\n this.drawEmptyArc(v);\r\n this.drawArc(v);\r\n },\r\n\r\n /**\r\n * Draw the arc (part of the circle).\r\n * @protected\r\n * @param {number} v - Frame value.\r\n */\r\n drawArc: function(v) {\r\n if (v === 0)\r\n return;\r\n\r\n var ctx = this.ctx,\r\n r = this.radius,\r\n t = this.getThickness(),\r\n a = this.startAngle;\r\n\r\n ctx.save();\r\n ctx.beginPath();\r\n\r\n if (!this.reverse) {\r\n ctx.arc(r, r, r - t / 2, a, a + Math.PI * 2 * v);\r\n } else {\r\n ctx.arc(r, r, r - t / 2, a - Math.PI * 2 * v, a);\r\n }\r\n\r\n ctx.lineWidth = t;\r\n ctx.lineCap = this.lineCap;\r\n ctx.strokeStyle = this.arcFill;\r\n ctx.stroke();\r\n ctx.restore();\r\n },\r\n\r\n /**\r\n * Draw the _empty (background)_ arc (part of the circle).\r\n * @protected\r\n * @param {number} v - Frame value.\r\n */\r\n drawEmptyArc: function(v) {\r\n var ctx = this.ctx,\r\n r = this.radius,\r\n t = this.getThickness(),\r\n a = this.startAngle;\r\n\r\n if (v < 1) {\r\n ctx.save();\r\n ctx.beginPath();\r\n\r\n if (v <= 0) {\r\n ctx.arc(r, r, r - t / 2, 0, Math.PI * 2);\r\n } else {\r\n if (!this.reverse) {\r\n ctx.arc(r, r, r - t / 2, a + Math.PI * 2 * v, a);\r\n } else {\r\n ctx.arc(r, r, r - t / 2, a, a - Math.PI * 2 * v);\r\n }\r\n }\r\n\r\n ctx.lineWidth = t;\r\n ctx.strokeStyle = this.emptyFill;\r\n ctx.stroke();\r\n ctx.restore();\r\n }\r\n },\r\n\r\n /**\r\n * Animate the progress bar.\r\n *\r\n * Throws 3 jQuery events:\r\n *\r\n * - `circle-animation-start(jqEvent)`\r\n * - `circle-animation-progress(jqEvent, animationProgress, stepValue)` - multiple event\r\n * animationProgress: from `0.0` to `1.0`; stepValue: from `0.0` to `value`\r\n * - `circle-animation-end(jqEvent)`\r\n *\r\n * @protected\r\n * @param {number} v - Final value.\r\n */\r\n drawAnimated: function(v) {\r\n var self = this,\r\n el = this.el,\r\n canvas = $(this.canvas);\r\n\r\n // stop previous animation before new \"start\" event is triggered\r\n canvas.stop(true, false);\r\n el.trigger('circle-animation-start');\r\n\r\n canvas\r\n .css({animationProgress: 0})\r\n .animate({animationProgress: 1}, $.extend({}, this.animation, {\r\n step: function(animationProgress) {\r\n var stepValue = self.animationStartValue * (1 - animationProgress) + v * animationProgress;\r\n self.drawFrame(stepValue);\r\n el.trigger('circle-animation-progress', [animationProgress, stepValue]);\r\n }\r\n }))\r\n .promise()\r\n .always(function() {\r\n // trigger on both successful & failure animation end\r\n el.trigger('circle-animation-end');\r\n });\r\n },\r\n\r\n /**\r\n * Get the circle thickness.\r\n * @see CircleProgress#thickness\r\n * @protected\r\n * @returns {number}\r\n */\r\n getThickness: function() {\r\n return $.isNumeric(this.thickness) ? this.thickness : this.size / 14;\r\n },\r\n\r\n /**\r\n * Get current value.\r\n * @protected\r\n * @return {number}\r\n */\r\n getValue: function() {\r\n return this.value;\r\n },\r\n\r\n /**\r\n * Set current value (with smooth animation transition).\r\n * @protected\r\n * @param {number} newValue\r\n */\r\n setValue: function(newValue) {\r\n if (this.animation)\r\n this.animationStartValue = this.lastFrameValue;\r\n this.value = newValue;\r\n this.draw();\r\n }\r\n };\r\n\r\n //----------------------------------- Initiating jQuery plugin -----------------------------------\r\n $.circleProgress = {\r\n // Default options (you may override them)\r\n defaults: CircleProgress.prototype\r\n };\r\n\r\n // ease-in-out-cubic\r\n $.easing.circleProgressEasing = function(x, t, b, c, d) {\r\n if ((t /= d / 2) < 1)\r\n return c / 2 * t * t * t + b;\r\n return c / 2 * ((t -= 2) * t * t + 2) + b;\r\n };\r\n\r\n /**\r\n * Creates an instance of {@link CircleProgress}.\r\n * Produces [init event]{@link CircleProgress#init} and [animation events]{@link CircleProgress#drawAnimated}.\r\n *\r\n * @param {object} [configOrCommand] - Config object or command name.\r\n *\r\n * Config example (you can specify any {@link CircleProgress} property):\r\n *\r\n * ```js\r\n * { value: 0.75, size: 50, animation: false }\r\n * ```\r\n *\r\n * Commands:\r\n *\r\n * ```js\r\n * el.circleProgress('widget'); // get the \r\n * el.circleProgress('value'); // get the value\r\n * el.circleProgress('value', newValue); // update the value\r\n * el.circleProgress('redraw'); // redraw the circle\r\n * el.circleProgress(); // the same as 'redraw'\r\n * ```\r\n *\r\n * @param {string} [commandArgument] - Some commands (like `'value'`) may require an argument.\r\n * @see CircleProgress\r\n * @alias \"$(...).circleProgress\"\r\n */\r\n $.fn.circleProgress = function(configOrCommand, commandArgument) {\r\n var dataName = 'circle-progress',\r\n firstInstance = this.data(dataName);\r\n\r\n if (configOrCommand == 'widget') {\r\n if (!firstInstance)\r\n throw Error('Calling \"widget\" method on not initialized instance is forbidden');\r\n return firstInstance.canvas;\r\n }\r\n\r\n if (configOrCommand == 'value') {\r\n if (!firstInstance)\r\n throw Error('Calling \"value\" method on not initialized instance is forbidden');\r\n if (typeof commandArgument == 'undefined') {\r\n return firstInstance.getValue();\r\n } else {\r\n var newValue = arguments[1];\r\n return this.each(function() {\r\n $(this).data(dataName).setValue(newValue);\r\n });\r\n }\r\n }\r\n\r\n return this.each(function() {\r\n var el = $(this),\r\n instance = el.data(dataName),\r\n config = $.isPlainObject(configOrCommand) ? configOrCommand : {};\r\n\r\n if (instance) {\r\n instance.init(config);\r\n } else {\r\n var initialConfig = $.extend({}, el.data());\r\n if (typeof initialConfig.fill == 'string')\r\n initialConfig.fill = JSON.parse(initialConfig.fill);\r\n if (typeof initialConfig.animation == 'string')\r\n initialConfig.animation = JSON.parse(initialConfig.animation);\r\n config = $.extend(initialConfig, config);\r\n config.el = el;\r\n instance = new CircleProgress(config);\r\n el.data(dataName, instance);\r\n }\r\n });\r\n };\r\n});","/* js/proTest2.js */\r\n\r\n\r\n $('.test').circleProgress({\r\n value: 0.75,\r\n fill: {\r\n gradient: [\"red\", \"orange\"]\r\n }\r\n }).on('circle-animation-progress', function(event, progress, stepValue) {\r\n $(this).find('strong').text(stepValue.toFixed(2).substr(1));\r\n });\r\n\r\n\r\n $('.new').circleProgress({\r\n size: 40,\r\n fill: {\r\n gradient: [\"#00aff0\", \"#00f078\"]\r\n }\r\n }).on('circle-animation-progress', function(event, progress, stepValue) {\r\n $(this).find('strong').text(stepValue.toFixed(2).substr(1));\r\n });\r\n \r\n$('.circle-light').circleProgress({\r\n value: 0.75,\r\n size: 150,\r\n fill: {\r\n gradient: [\"#fff\", \"#fff\"]\r\n }\r\n }).on('circle-animation-progress', function(event, progress, stepValue) {\r\n $(this).find('strong').text(stepValue.toFixed(2).substr(1));\r\n });","/* js/rangeSlider.js */\r\n\r\n/*! rangeslider.js - v2.3.0 | (c) 2016 @andreruffert | MIT license | https://github.com/andreruffert/rangeslider.js */\r\n(function(factory) {\r\n 'use strict';\r\n\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 exports === 'object') {\r\n // CommonJS\r\n module.exports = factory(require('jquery'));\r\n } else {\r\n // Browser globals\r\n factory(jQuery);\r\n }\r\n}(function($) {\r\n 'use strict';\r\n\r\n // Polyfill Number.isNaN(value)\r\n // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Number/isNaN\r\n Number.isNaN = Number.isNaN || function(value) {\r\n return typeof value === 'number' && value !== value;\r\n };\r\n\r\n /**\r\n * Range feature detection\r\n * @return {Boolean}\r\n */\r\n function supportsRange() {\r\n var input = document.createElement('input');\r\n input.setAttribute('type', 'range');\r\n return input.type !== 'text';\r\n }\r\n\r\n var pluginName = 'rangeslider',\r\n pluginIdentifier = 0,\r\n hasInputRangeSupport = supportsRange(),\r\n defaults = {\r\n polyfill: true,\r\n orientation: 'horizontal',\r\n rangeClass: 'rangeslider',\r\n disabledClass: 'rangeslider--disabled',\r\n activeClass: 'rangeslider--active',\r\n horizontalClass: 'rangeslider--horizontal',\r\n verticalClass: 'rangeslider--vertical',\r\n fillClass: 'rangeslider__fill',\r\n handleClass: 'rangeslider__handle',\r\n startEvent: ['mousedown', 'touchstart', 'pointerdown'],\r\n moveEvent: ['mousemove', 'touchmove', 'pointermove'],\r\n endEvent: ['mouseup', 'touchend', 'pointerup']\r\n },\r\n constants = {\r\n orientation: {\r\n horizontal: {\r\n dimension: 'width',\r\n direction: 'left',\r\n directionStyle: 'left',\r\n coordinate: 'x'\r\n },\r\n vertical: {\r\n dimension: 'height',\r\n direction: 'top',\r\n directionStyle: 'bottom',\r\n coordinate: 'y'\r\n }\r\n }\r\n };\r\n\r\n /**\r\n * Delays a function for the given number of milliseconds, and then calls\r\n * it with the arguments supplied.\r\n *\r\n * @param {Function} fn [description]\r\n * @param {Number} wait [description]\r\n * @return {Function}\r\n */\r\n function delay(fn, wait) {\r\n var args = Array.prototype.slice.call(arguments, 2);\r\n return setTimeout(function(){ return fn.apply(null, args); }, wait);\r\n }\r\n\r\n /**\r\n * Returns a debounced function that will make sure the given\r\n * function is not triggered too much.\r\n *\r\n * @param {Function} fn Function to debounce.\r\n * @param {Number} debounceDuration OPTIONAL. The amount of time in milliseconds for which we will debounce the function. (defaults to 100ms)\r\n * @return {Function}\r\n */\r\n function debounce(fn, debounceDuration) {\r\n debounceDuration = debounceDuration || 100;\r\n return function() {\r\n if (!fn.debouncing) {\r\n var args = Array.prototype.slice.apply(arguments);\r\n fn.lastReturnVal = fn.apply(window, args);\r\n fn.debouncing = true;\r\n }\r\n clearTimeout(fn.debounceTimeout);\r\n fn.debounceTimeout = setTimeout(function(){\r\n fn.debouncing = false;\r\n }, debounceDuration);\r\n return fn.lastReturnVal;\r\n };\r\n }\r\n\r\n /**\r\n * Check if a `element` is visible in the DOM\r\n *\r\n * @param {Element} element\r\n * @return {Boolean}\r\n */\r\n function isHidden(element) {\r\n return (\r\n element && (\r\n element.offsetWidth === 0 ||\r\n element.offsetHeight === 0 ||\r\n // Also Consider native `
    ` elements.\r\n element.open === false\r\n )\r\n );\r\n }\r\n\r\n /**\r\n * Get hidden parentNodes of an `element`\r\n *\r\n * @param {Element} element\r\n * @return {[type]}\r\n */\r\n function getHiddenParentNodes(element) {\r\n var parents = [],\r\n node = element.parentNode;\r\n\r\n while (isHidden(node)) {\r\n parents.push(node);\r\n node = node.parentNode;\r\n }\r\n return parents;\r\n }\r\n\r\n /**\r\n * Returns dimensions for an element even if it is not visible in the DOM.\r\n *\r\n * @param {Element} element\r\n * @param {String} key (e.g. offsetWidth …)\r\n * @return {Number}\r\n */\r\n function getDimension(element, key) {\r\n var hiddenParentNodes = getHiddenParentNodes(element),\r\n hiddenParentNodesLength = hiddenParentNodes.length,\r\n inlineStyle = [],\r\n dimension = element[key];\r\n\r\n // Used for native `
    ` elements\r\n function toggleOpenProperty(element) {\r\n if (typeof element.open !== 'undefined') {\r\n element.open = (element.open) ? false : true;\r\n }\r\n }\r\n\r\n if (hiddenParentNodesLength) {\r\n for (var i = 0; i < hiddenParentNodesLength; i++) {\r\n\r\n // Cache style attribute to restore it later.\r\n inlineStyle[i] = hiddenParentNodes[i].style.cssText;\r\n\r\n // visually hide\r\n if (hiddenParentNodes[i].style.setProperty) {\r\n hiddenParentNodes[i].style.setProperty('display', 'block', 'important');\r\n } else {\r\n hiddenParentNodes[i].style.cssText += ';display: block !important';\r\n }\r\n hiddenParentNodes[i].style.height = '0';\r\n hiddenParentNodes[i].style.overflow = 'hidden';\r\n hiddenParentNodes[i].style.visibility = 'hidden';\r\n toggleOpenProperty(hiddenParentNodes[i]);\r\n }\r\n\r\n // Update dimension\r\n dimension = element[key];\r\n\r\n for (var j = 0; j < hiddenParentNodesLength; j++) {\r\n\r\n // Restore the style attribute\r\n hiddenParentNodes[j].style.cssText = inlineStyle[j];\r\n toggleOpenProperty(hiddenParentNodes[j]);\r\n }\r\n }\r\n return dimension;\r\n }\r\n\r\n /**\r\n * Returns the parsed float or the default if it failed.\r\n *\r\n * @param {String} str\r\n * @param {Number} defaultValue\r\n * @return {Number}\r\n */\r\n function tryParseFloat(str, defaultValue) {\r\n var value = parseFloat(str);\r\n return Number.isNaN(value) ? defaultValue : value;\r\n }\r\n\r\n /**\r\n * Capitalize the first letter of string\r\n *\r\n * @param {String} str\r\n * @return {String}\r\n */\r\n function ucfirst(str) {\r\n return str.charAt(0).toUpperCase() + str.substr(1);\r\n }\r\n\r\n /**\r\n * Plugin\r\n * @param {String} element\r\n * @param {Object} options\r\n */\r\n function Plugin(element, options) {\r\n this.$window = $(window);\r\n this.$document = $(document);\r\n this.$element = $(element);\r\n this.options = $.extend( {}, defaults, options );\r\n this.polyfill = this.options.polyfill;\r\n this.orientation = this.$element[0].getAttribute('data-orientation') || this.options.orientation;\r\n this.onInit = this.options.onInit;\r\n this.onSlide = this.options.onSlide;\r\n this.onSlideEnd = this.options.onSlideEnd;\r\n this.DIMENSION = constants.orientation[this.orientation].dimension;\r\n this.DIRECTION = constants.orientation[this.orientation].direction;\r\n this.DIRECTION_STYLE = constants.orientation[this.orientation].directionStyle;\r\n this.COORDINATE = constants.orientation[this.orientation].coordinate;\r\n\r\n // Plugin should only be used as a polyfill\r\n if (this.polyfill) {\r\n // Input range support?\r\n if (hasInputRangeSupport) { return false; }\r\n }\r\n\r\n this.identifier = 'js-' + pluginName + '-' +(pluginIdentifier++);\r\n this.startEvent = this.options.startEvent.join('.' + this.identifier + ' ') + '.' + this.identifier;\r\n this.moveEvent = this.options.moveEvent.join('.' + this.identifier + ' ') + '.' + this.identifier;\r\n this.endEvent = this.options.endEvent.join('.' + this.identifier + ' ') + '.' + this.identifier;\r\n this.toFixed = (this.step + '').replace('.', '').length - 1;\r\n this.$fill = $('
    ');\r\n this.$handle = $('
    ');\r\n this.$range = $('
    ').insertAfter(this.$element).prepend(this.$fill, this.$handle);\r\n\r\n // visually hide the input\r\n this.$element.css({\r\n 'position': 'absolute',\r\n 'width': '1px',\r\n 'height': '1px',\r\n 'overflow': 'hidden',\r\n 'opacity': '0'\r\n });\r\n\r\n // Store context\r\n this.handleDown = $.proxy(this.handleDown, this);\r\n this.handleMove = $.proxy(this.handleMove, this);\r\n this.handleEnd = $.proxy(this.handleEnd, this);\r\n\r\n this.init();\r\n\r\n // Attach Events\r\n var _this = this;\r\n this.$window.on('resize.' + this.identifier, debounce(function() {\r\n // Simulate resizeEnd event.\r\n delay(function() { _this.update(false, false); }, 300);\r\n }, 20));\r\n\r\n this.$document.on(this.startEvent, '#' + this.identifier + ':not(.' + this.options.disabledClass + ')', this.handleDown);\r\n\r\n // Listen to programmatic value changes\r\n this.$element.on('change.' + this.identifier, function(e, data) {\r\n if (data && data.origin === _this.identifier) {\r\n return;\r\n }\r\n\r\n var value = e.target.value,\r\n pos = _this.getPositionFromValue(value);\r\n _this.setPosition(pos);\r\n });\r\n }\r\n\r\n Plugin.prototype.init = function() {\r\n this.update(true, false);\r\n\r\n if (this.onInit && typeof this.onInit === 'function') {\r\n this.onInit();\r\n }\r\n };\r\n\r\n Plugin.prototype.update = function(updateAttributes, triggerSlide) {\r\n updateAttributes = updateAttributes || false;\r\n\r\n if (updateAttributes) {\r\n this.min = tryParseFloat(this.$element[0].getAttribute('min'), 0);\r\n this.max = tryParseFloat(this.$element[0].getAttribute('max'), 100);\r\n this.value = tryParseFloat(this.$element[0].value, Math.round(this.min + (this.max-this.min)/2));\r\n this.step = tryParseFloat(this.$element[0].getAttribute('step'), 1);\r\n }\r\n\r\n this.handleDimension = getDimension(this.$handle[0], 'offset' + ucfirst(this.DIMENSION));\r\n this.rangeDimension = getDimension(this.$range[0], 'offset' + ucfirst(this.DIMENSION));\r\n this.maxHandlePos = this.rangeDimension - this.handleDimension;\r\n this.grabPos = this.handleDimension / 2;\r\n this.position = this.getPositionFromValue(this.value);\r\n\r\n // Consider disabled state\r\n if (this.$element[0].disabled) {\r\n this.$range.addClass(this.options.disabledClass);\r\n } else {\r\n this.$range.removeClass(this.options.disabledClass);\r\n }\r\n\r\n this.setPosition(this.position, triggerSlide);\r\n };\r\n\r\n Plugin.prototype.handleDown = function(e) {\r\n e.preventDefault();\r\n this.$document.on(this.moveEvent, this.handleMove);\r\n this.$document.on(this.endEvent, this.handleEnd);\r\n\r\n // add active class because Firefox is ignoring\r\n // the handle:active pseudo selector because of `e.preventDefault();`\r\n this.$range.addClass(this.options.activeClass);\r\n\r\n // If we click on the handle don't set the new position\r\n if ((' ' + e.target.className + ' ').replace(/[\\n\\t]/g, ' ').indexOf(this.options.handleClass) > -1) {\r\n return;\r\n }\r\n\r\n var pos = this.getRelativePosition(e),\r\n rangePos = this.$range[0].getBoundingClientRect()[this.DIRECTION],\r\n handlePos = this.getPositionFromNode(this.$handle[0]) - rangePos,\r\n setPos = (this.orientation === 'vertical') ? (this.maxHandlePos - (pos - this.grabPos)) : (pos - this.grabPos);\r\n\r\n this.setPosition(setPos);\r\n\r\n if (pos >= handlePos && pos < handlePos + this.handleDimension) {\r\n this.grabPos = pos - handlePos;\r\n }\r\n };\r\n\r\n Plugin.prototype.handleMove = function(e) {\r\n e.preventDefault();\r\n var pos = this.getRelativePosition(e);\r\n var setPos = (this.orientation === 'vertical') ? (this.maxHandlePos - (pos - this.grabPos)) : (pos - this.grabPos);\r\n this.setPosition(setPos);\r\n };\r\n\r\n Plugin.prototype.handleEnd = function(e) {\r\n e.preventDefault();\r\n this.$document.off(this.moveEvent, this.handleMove);\r\n this.$document.off(this.endEvent, this.handleEnd);\r\n\r\n this.$range.removeClass(this.options.activeClass);\r\n\r\n // Ok we're done fire the change event\r\n this.$element.trigger('change', { origin: this.identifier });\r\n\r\n if (this.onSlideEnd && typeof this.onSlideEnd === 'function') {\r\n this.onSlideEnd(this.position, this.value);\r\n }\r\n };\r\n\r\n Plugin.prototype.cap = function(pos, min, max) {\r\n if (pos < min) { return min; }\r\n if (pos > max) { return max; }\r\n return pos;\r\n };\r\n\r\n Plugin.prototype.setPosition = function(pos, triggerSlide) {\r\n var value, newPos;\r\n\r\n if (triggerSlide === undefined) {\r\n triggerSlide = true;\r\n }\r\n\r\n // Snapping steps\r\n value = this.getValueFromPosition(this.cap(pos, 0, this.maxHandlePos));\r\n newPos = this.getPositionFromValue(value);\r\n\r\n // Update ui\r\n this.$fill[0].style[this.DIMENSION] = (newPos + this.grabPos) + 'px';\r\n this.$handle[0].style[this.DIRECTION_STYLE] = newPos + 'px';\r\n this.setValue(value);\r\n\r\n // Update globals\r\n this.position = newPos;\r\n this.value = value;\r\n\r\n if (triggerSlide && this.onSlide && typeof this.onSlide === 'function') {\r\n this.onSlide(newPos, value);\r\n }\r\n };\r\n\r\n // Returns element position relative to the parent\r\n Plugin.prototype.getPositionFromNode = function(node) {\r\n var i = 0;\r\n while (node !== null) {\r\n i += node.offsetLeft;\r\n node = node.offsetParent;\r\n }\r\n return i;\r\n };\r\n\r\n Plugin.prototype.getRelativePosition = function(e) {\r\n // Get the offset DIRECTION relative to the viewport\r\n var ucCoordinate = ucfirst(this.COORDINATE),\r\n rangePos = this.$range[0].getBoundingClientRect()[this.DIRECTION],\r\n pageCoordinate = 0;\r\n\r\n if (typeof e.originalEvent['client' + ucCoordinate] !== 'undefined') {\r\n pageCoordinate = e.originalEvent['client' + ucCoordinate];\r\n }\r\n else if (\r\n e.originalEvent.touches &&\r\n e.originalEvent.touches[0] &&\r\n typeof e.originalEvent.touches[0]['client' + ucCoordinate] !== 'undefined'\r\n ) {\r\n pageCoordinate = e.originalEvent.touches[0]['client' + ucCoordinate];\r\n }\r\n else if(e.currentPoint && typeof e.currentPoint[this.COORDINATE] !== 'undefined') {\r\n pageCoordinate = e.currentPoint[this.COORDINATE];\r\n }\r\n\r\n return pageCoordinate - rangePos;\r\n };\r\n\r\n Plugin.prototype.getPositionFromValue = function(value) {\r\n var percentage, pos;\r\n percentage = (value - this.min)/(this.max - this.min);\r\n pos = (!Number.isNaN(percentage)) ? percentage * this.maxHandlePos : 0;\r\n return pos;\r\n };\r\n\r\n Plugin.prototype.getValueFromPosition = function(pos) {\r\n var percentage, value;\r\n percentage = ((pos) / (this.maxHandlePos || 1));\r\n value = this.step * Math.round(percentage * (this.max - this.min) / this.step) + this.min;\r\n return Number((value).toFixed(this.toFixed));\r\n };\r\n\r\n Plugin.prototype.setValue = function(value) {\r\n if (value === this.value && this.$element[0].value !== '') {\r\n return;\r\n }\r\n\r\n // Set the new value and fire the `input` event\r\n this.$element\r\n .val(value)\r\n .trigger('input', { origin: this.identifier });\r\n };\r\n\r\n Plugin.prototype.destroy = function() {\r\n this.$document.off('.' + this.identifier);\r\n this.$window.off('.' + this.identifier);\r\n\r\n this.$element\r\n .off('.' + this.identifier)\r\n .removeAttr('style')\r\n .removeData('plugin_' + pluginName);\r\n\r\n // Remove the generated markup\r\n if (this.$range && this.$range.length) {\r\n this.$range[0].parentNode.removeChild(this.$range[0]);\r\n }\r\n };\r\n\r\n // A really lightweight plugin wrapper around the constructor,\r\n // preventing against multiple instantiations\r\n $.fn[pluginName] = function(options) {\r\n var args = Array.prototype.slice.call(arguments, 1);\r\n\r\n return this.each(function() {\r\n var $this = $(this),\r\n data = $this.data('plugin_' + pluginName);\r\n\r\n // Create a new instance.\r\n if (!data) {\r\n $this.data('plugin_' + pluginName, (data = new Plugin(this, options)));\r\n }\r\n\r\n // Make it possible to access methods from public.\r\n // e.g `$element.rangeslider('method');`\r\n if (typeof options === 'string') {\r\n data[options].apply(data, args);\r\n }\r\n });\r\n };\r\n\r\n return 'rangeslider.js is available in jQuery context e.g $(selector).rangeslider(options);';\r\n\r\n}));","/* js/rangeTest.js */\r\n\r\n\r\n$('input[type=\"range\"]').rangeslider({\r\n polyfill : false,\r\n onInit : function() {\r\n \r\n \r\n this.output = $( '
    ' ).insertAfter( this.$range ).html( this.$element.val() );\r\n },\r\n onSlide : function( position, value ) {\r\n this.output.html( value );\r\n }\r\n});","/**\r\n * sifter.js\r\n * Copyright (c) 2013 Brian Reavis & contributors\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\"); you may not use this\r\n * file except in compliance with the License. You may obtain a copy of the License at:\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software distributed under\r\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF\r\n * ANY KIND, either express or implied. See the License for the specific language\r\n * governing permissions and limitations under the License.\r\n *\r\n * @author Brian Reavis \r\n */\r\n\r\n(function(root, factory) {\r\n\tif (typeof define === 'function' && define.amd) {\r\n\t\tdefine('sifter', factory);\r\n\t} else if (typeof exports === 'object') {\r\n\t\tmodule.exports = factory();\r\n\t} else {\r\n\t\troot.Sifter = factory();\r\n\t}\r\n}(this, function() {\r\n\r\n\t/**\r\n\t * Textually searches arrays and hashes of objects\r\n\t * by property (or multiple properties). Designed\r\n\t * specifically for autocomplete.\r\n\t *\r\n\t * @constructor\r\n\t * @param {array|object} items\r\n\t * @param {object} items\r\n\t */\r\n\tvar Sifter = function(items, settings) {\r\n\t\tthis.items = items;\r\n\t\tthis.settings = settings || {diacritics: true};\r\n\t};\r\n\r\n\t/**\r\n\t * Splits a search string into an array of individual\r\n\t * regexps to be used to match results.\r\n\t *\r\n\t * @param {string} query\r\n\t * @returns {array}\r\n\t */\r\n\tSifter.prototype.tokenize = function(query) {\r\n\t\tquery = trim(String(query || '').toLowerCase());\r\n\t\tif (!query || !query.length) return [];\r\n\r\n\t\tvar i, n, regex, letter;\r\n\t\tvar tokens = [];\r\n\t\tvar words = query.split(/ +/);\r\n\r\n\t\tfor (i = 0, n = words.length; i < n; i++) {\r\n\t\t\tregex = escape_regex(words[i]);\r\n\t\t\tif (this.settings.diacritics) {\r\n\t\t\t\tfor (letter in DIACRITICS) {\r\n\t\t\t\t\tif (DIACRITICS.hasOwnProperty(letter)) {\r\n\t\t\t\t\t\tregex = regex.replace(new RegExp(letter, 'g'), DIACRITICS[letter]);\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\ttokens.push({\r\n\t\t\t\tstring : words[i],\r\n\t\t\t\tregex : new RegExp(regex, 'i')\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\treturn tokens;\r\n\t};\r\n\r\n\t/**\r\n\t * Iterates over arrays and hashes.\r\n\t *\r\n\t * ```\r\n\t * this.iterator(this.items, function(item, id) {\r\n\t * // invoked for each item\r\n\t * });\r\n\t * ```\r\n\t *\r\n\t * @param {array|object} object\r\n\t */\r\n\tSifter.prototype.iterator = function(object, callback) {\r\n\t\tvar iterator;\r\n\t\tif (is_array(object)) {\r\n\t\t\titerator = Array.prototype.forEach || function(callback) {\r\n\t\t\t\tfor (var i = 0, n = this.length; i < n; i++) {\r\n\t\t\t\t\tcallback(this[i], i, this);\r\n\t\t\t\t}\r\n\t\t\t};\r\n\t\t} else {\r\n\t\t\titerator = function(callback) {\r\n\t\t\t\tfor (var key in this) {\r\n\t\t\t\t\tif (this.hasOwnProperty(key)) {\r\n\t\t\t\t\t\tcallback(this[key], key, this);\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\titerator.apply(object, [callback]);\r\n\t};\r\n\r\n\t/**\r\n\t * Returns a function to be used to score individual results.\r\n\t *\r\n\t * Good matches will have a higher score than poor matches.\r\n\t * If an item is not a match, 0 will be returned by the function.\r\n\t *\r\n\t * @param {object|string} search\r\n\t * @param {object} options (optional)\r\n\t * @returns {function}\r\n\t */\r\n\tSifter.prototype.getScoreFunction = function(search, options) {\r\n\t\tvar self, fields, tokens, token_count;\r\n\r\n\t\tself = this;\r\n\t\tsearch = self.prepareSearch(search, options);\r\n\t\ttokens = search.tokens;\r\n\t\tfields = search.options.fields;\r\n\t\ttoken_count = tokens.length;\r\n\r\n\t\t/**\r\n\t\t * Calculates how close of a match the\r\n\t\t * given value is against a search token.\r\n\t\t *\r\n\t\t * @param {mixed} value\r\n\t\t * @param {object} token\r\n\t\t * @return {number}\r\n\t\t */\r\n\t\tvar scoreValue = function(value, token) {\r\n\t\t\tvar score, pos;\r\n\r\n\t\t\tif (!value) return 0;\r\n\t\t\tvalue = String(value || '');\r\n\t\t\tpos = value.search(token.regex);\r\n\t\t\tif (pos === -1) return 0;\r\n\t\t\tscore = token.string.length / value.length;\r\n\t\t\tif (pos === 0) score += 0.5;\r\n\t\t\treturn score;\r\n\t\t};\r\n\r\n\t\t/**\r\n\t\t * Calculates the score of an object\r\n\t\t * against the search query.\r\n\t\t *\r\n\t\t * @param {object} token\r\n\t\t * @param {object} data\r\n\t\t * @return {number}\r\n\t\t */\r\n\t\tvar scoreObject = (function() {\r\n\t\t\tvar field_count = fields.length;\r\n\t\t\tif (!field_count) {\r\n\t\t\t\treturn function() { return 0; };\r\n\t\t\t}\r\n\t\t\tif (field_count === 1) {\r\n\t\t\t\treturn function(token, data) {\r\n\t\t\t\t\treturn scoreValue(data[fields[0]], token);\r\n\t\t\t\t};\r\n\t\t\t}\r\n\t\t\treturn function(token, data) {\r\n\t\t\t\tfor (var i = 0, sum = 0; i < field_count; i++) {\r\n\t\t\t\t\tsum += scoreValue(data[fields[i]], token);\r\n\t\t\t\t}\r\n\t\t\t\treturn sum / field_count;\r\n\t\t\t};\r\n\t\t})();\r\n\r\n\t\tif (!token_count) {\r\n\t\t\treturn function() { return 0; };\r\n\t\t}\r\n\t\tif (token_count === 1) {\r\n\t\t\treturn function(data) {\r\n\t\t\t\treturn scoreObject(tokens[0], data);\r\n\t\t\t};\r\n\t\t}\r\n\r\n\t\tif (search.options.conjunction === 'and') {\r\n\t\t\treturn function(data) {\r\n\t\t\t\tvar score;\r\n\t\t\t\tfor (var i = 0, sum = 0; i < token_count; i++) {\r\n\t\t\t\t\tscore = scoreObject(tokens[i], data);\r\n\t\t\t\t\tif (score <= 0) return 0;\r\n\t\t\t\t\tsum += score;\r\n\t\t\t\t}\r\n\t\t\t\treturn sum / token_count;\r\n\t\t\t};\r\n\t\t} else {\r\n\t\t\treturn function(data) {\r\n\t\t\t\tfor (var i = 0, sum = 0; i < token_count; i++) {\r\n\t\t\t\t\tsum += scoreObject(tokens[i], data);\r\n\t\t\t\t}\r\n\t\t\t\treturn sum / token_count;\r\n\t\t\t};\r\n\t\t}\r\n\t};\r\n\r\n\t/**\r\n\t * Returns a function that can be used to compare two\r\n\t * results, for sorting purposes. If no sorting should\r\n\t * be performed, `null` will be returned.\r\n\t *\r\n\t * @param {string|object} search\r\n\t * @param {object} options\r\n\t * @return function(a,b)\r\n\t */\r\n\tSifter.prototype.getSortFunction = function(search, options) {\r\n\t\tvar i, n, self, field, fields, fields_count, multiplier, multipliers, get_field, implicit_score, sort;\r\n\r\n\t\tself = this;\r\n\t\tsearch = self.prepareSearch(search, options);\r\n\t\tsort = (!search.query && options.sort_empty) || options.sort;\r\n\r\n\t\t/**\r\n\t\t * Fetches the specified sort field value\r\n\t\t * from a search result item.\r\n\t\t *\r\n\t\t * @param {string} name\r\n\t\t * @param {object} result\r\n\t\t * @return {mixed}\r\n\t\t */\r\n\t\tget_field = function(name, result) {\r\n\t\t\tif (name === '$score') return result.score;\r\n\t\t\treturn self.items[result.id][name];\r\n\t\t};\r\n\r\n\t\t// parse options\r\n\t\tfields = [];\r\n\t\tif (sort) {\r\n\t\t\tfor (i = 0, n = sort.length; i < n; i++) {\r\n\t\t\t\tif (search.query || sort[i].field !== '$score') {\r\n\t\t\t\t\tfields.push(sort[i]);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t// the \"$score\" field is implied to be the primary\r\n\t\t// sort field, unless it's manually specified\r\n\t\tif (search.query) {\r\n\t\t\timplicit_score = true;\r\n\t\t\tfor (i = 0, n = fields.length; i < n; i++) {\r\n\t\t\t\tif (fields[i].field === '$score') {\r\n\t\t\t\t\timplicit_score = false;\r\n\t\t\t\t\tbreak;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\tif (implicit_score) {\r\n\t\t\t\tfields.unshift({field: '$score', direction: 'desc'});\r\n\t\t\t}\r\n\t\t} else {\r\n\t\t\tfor (i = 0, n = fields.length; i < n; i++) {\r\n\t\t\t\tif (fields[i].field === '$score') {\r\n\t\t\t\t\tfields.splice(i, 1);\r\n\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\tmultipliers = [];\r\n\t\tfor (i = 0, n = fields.length; i < n; i++) {\r\n\t\t\tmultipliers.push(fields[i].direction === 'desc' ? -1 : 1);\r\n\t\t}\r\n\r\n\t\t// build function\r\n\t\tfields_count = fields.length;\r\n\t\tif (!fields_count) {\r\n\t\t\treturn null;\r\n\t\t} else if (fields_count === 1) {\r\n\t\t\tfield = fields[0].field;\r\n\t\t\tmultiplier = multipliers[0];\r\n\t\t\treturn function(a, b) {\r\n\t\t\t\treturn multiplier * cmp(\r\n\t\t\t\t\tget_field(field, a),\r\n\t\t\t\t\tget_field(field, b)\r\n\t\t\t\t);\r\n\t\t\t};\r\n\t\t} else {\r\n\t\t\treturn function(a, b) {\r\n\t\t\t\tvar i, result, a_value, b_value, field;\r\n\t\t\t\tfor (i = 0; i < fields_count; i++) {\r\n\t\t\t\t\tfield = fields[i].field;\r\n\t\t\t\t\tresult = multipliers[i] * cmp(\r\n\t\t\t\t\t\tget_field(field, a),\r\n\t\t\t\t\t\tget_field(field, b)\r\n\t\t\t\t\t);\r\n\t\t\t\t\tif (result) return result;\r\n\t\t\t\t}\r\n\t\t\t\treturn 0;\r\n\t\t\t};\r\n\t\t}\r\n\t};\r\n\r\n\t/**\r\n\t * Parses a search query and returns an object\r\n\t * with tokens and fields ready to be populated\r\n\t * with results.\r\n\t *\r\n\t * @param {string} query\r\n\t * @param {object} options\r\n\t * @returns {object}\r\n\t */\r\n\tSifter.prototype.prepareSearch = function(query, options) {\r\n\t\tif (typeof query === 'object') return query;\r\n\r\n\t\toptions = extend({}, options);\r\n\r\n\t\tvar option_fields = options.fields;\r\n\t\tvar option_sort = options.sort;\r\n\t\tvar option_sort_empty = options.sort_empty;\r\n\r\n\t\tif (option_fields && !is_array(option_fields)) options.fields = [option_fields];\r\n\t\tif (option_sort && !is_array(option_sort)) options.sort = [option_sort];\r\n\t\tif (option_sort_empty && !is_array(option_sort_empty)) options.sort_empty = [option_sort_empty];\r\n\r\n\t\treturn {\r\n\t\t\toptions : options,\r\n\t\t\tquery : String(query || '').toLowerCase(),\r\n\t\t\ttokens : this.tokenize(query),\r\n\t\t\ttotal : 0,\r\n\t\t\titems : []\r\n\t\t};\r\n\t};\r\n\r\n\t/**\r\n\t * Searches through all items and returns a sorted array of matches.\r\n\t *\r\n\t * The `options` parameter can contain:\r\n\t *\r\n\t * - fields {string|array}\r\n\t * - sort {array}\r\n\t * - score {function}\r\n\t * - filter {bool}\r\n\t * - limit {integer}\r\n\t *\r\n\t * Returns an object containing:\r\n\t *\r\n\t * - options {object}\r\n\t * - query {string}\r\n\t * - tokens {array}\r\n\t * - total {int}\r\n\t * - items {array}\r\n\t *\r\n\t * @param {string} query\r\n\t * @param {object} options\r\n\t * @returns {object}\r\n\t */\r\n\tSifter.prototype.search = function(query, options) {\r\n\t\tvar self = this, value, score, search, calculateScore;\r\n\t\tvar fn_sort;\r\n\t\tvar fn_score;\r\n\r\n\t\tsearch = this.prepareSearch(query, options);\r\n\t\toptions = search.options;\r\n\t\tquery = search.query;\r\n\r\n\t\t// generate result scoring function\r\n\t\tfn_score = options.score || self.getScoreFunction(search);\r\n\r\n\t\t// perform search and sort\r\n\t\tif (query.length) {\r\n\t\t\tself.iterator(self.items, function(item, id) {\r\n\t\t\t\tscore = fn_score(item);\r\n\t\t\t\tif (options.filter === false || score > 0) {\r\n\t\t\t\t\tsearch.items.push({'score': score, 'id': id});\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t} else {\r\n\t\t\tself.iterator(self.items, function(item, id) {\r\n\t\t\t\tsearch.items.push({'score': 1, 'id': id});\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\tfn_sort = self.getSortFunction(search, options);\r\n\t\tif (fn_sort) search.items.sort(fn_sort);\r\n\r\n\t\t// apply limits\r\n\t\tsearch.total = search.items.length;\r\n\t\tif (typeof options.limit === 'number') {\r\n\t\t\tsearch.items = search.items.slice(0, options.limit);\r\n\t\t}\r\n\r\n\t\treturn search;\r\n\t};\r\n\r\n\t// utilities\r\n\t// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -\r\n\r\n\tvar cmp = function(a, b) {\r\n\t\tif (typeof a === 'number' && typeof b === 'number') {\r\n\t\t\treturn a > b ? 1 : (a < b ? -1 : 0);\r\n\t\t}\r\n\t\ta = asciifold(String(a || ''));\r\n\t\tb = asciifold(String(b || ''));\r\n\t\tif (a > b) return 1;\r\n\t\tif (b > a) return -1;\r\n\t\treturn 0;\r\n\t};\r\n\r\n\tvar extend = function(a, b) {\r\n\t\tvar i, n, k, object;\r\n\t\tfor (i = 1, n = arguments.length; i < n; i++) {\r\n\t\t\tobject = arguments[i];\r\n\t\t\tif (!object) continue;\r\n\t\t\tfor (k in object) {\r\n\t\t\t\tif (object.hasOwnProperty(k)) {\r\n\t\t\t\t\ta[k] = object[k];\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn a;\r\n\t};\r\n\r\n\tvar trim = function(str) {\r\n\t\treturn (str + '').replace(/^\\s+|\\s+$|/g, '');\r\n\t};\r\n\r\n\tvar escape_regex = function(str) {\r\n\t\treturn (str + '').replace(/([.?*+^$[\\]\\\\(){}|-])/g, '\\\\$1');\r\n\t};\r\n\r\n\tvar is_array = Array.isArray || ($ && $.isArray) || function(object) {\r\n\t\treturn Object.prototype.toString.call(object) === '[object Array]';\r\n\t};\r\n\r\n\tvar DIACRITICS = {\r\n\t\t'a': '[aÀÁÂÃÄÅàáâãäåĀāąĄ]',\r\n\t\t'c': '[cÇçćĆčČ]',\r\n\t\t'd': '[dđĐďĎ]',\r\n\t\t'e': '[eÈÉÊËèéêëěĚĒēęĘ]',\r\n\t\t'i': '[iÌÍÎÏìíîïĪī]',\r\n\t\t'l': '[lłŁ]',\r\n\t\t'n': '[nÑñňŇńŃ]',\r\n\t\t'o': '[oÒÓÔÕÕÖØòóôõöøŌō]',\r\n\t\t'r': '[rřŘ]',\r\n\t\t's': '[sŠšśŚ]',\r\n\t\t't': '[tťŤ]',\r\n\t\t'u': '[uÙÚÛÜùúûüůŮŪū]',\r\n\t\t'y': '[yŸÿýÝ]',\r\n\t\t'z': '[zŽžżŻźŹ]'\r\n\t};\r\n\r\n\tvar asciifold = (function() {\r\n\t\tvar i, n, k, chunk;\r\n\t\tvar foreignletters = '';\r\n\t\tvar lookup = {};\r\n\t\tfor (k in DIACRITICS) {\r\n\t\t\tif (DIACRITICS.hasOwnProperty(k)) {\r\n\t\t\t\tchunk = DIACRITICS[k].substring(2, DIACRITICS[k].length - 1);\r\n\t\t\t\tforeignletters += chunk;\r\n\t\t\t\tfor (i = 0, n = chunk.length; i < n; i++) {\r\n\t\t\t\t\tlookup[chunk.charAt(i)] = k;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t\tvar regexp = new RegExp('[' + foreignletters + ']', 'g');\r\n\t\treturn function(str) {\r\n\t\t\treturn str.replace(regexp, function(foreignletter) {\r\n\t\t\t\treturn lookup[foreignletter];\r\n\t\t\t}).toLowerCase();\r\n\t\t};\r\n\t})();\r\n\r\n\r\n\t// export\r\n\t// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -\r\n\r\n\treturn Sifter;\r\n}));\r\n\r\n\r\n\r\n/**\r\n * microplugin.js\r\n * Copyright (c) 2013 Brian Reavis & contributors\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\"); you may not use this\r\n * file except in compliance with the License. You may obtain a copy of the License at:\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software distributed under\r\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF\r\n * ANY KIND, either express or implied. See the License for the specific language\r\n * governing permissions and limitations under the License.\r\n *\r\n * @author Brian Reavis \r\n */\r\n\r\n(function(root, factory) {\r\n\tif (typeof define === 'function' && define.amd) {\r\n\t\tdefine('microplugin', factory);\r\n\t} else if (typeof exports === 'object') {\r\n\t\tmodule.exports = factory();\r\n\t} else {\r\n\t\troot.MicroPlugin = factory();\r\n\t}\r\n}(this, function() {\r\n\tvar MicroPlugin = {};\r\n\r\n\tMicroPlugin.mixin = function(Interface) {\r\n\t\tInterface.plugins = {};\r\n\r\n\t\t/**\r\n\t\t * Initializes the listed plugins (with options).\r\n\t\t * Acceptable formats:\r\n\t\t *\r\n\t\t * List (without options):\r\n\t\t * ['a', 'b', 'c']\r\n\t\t *\r\n\t\t * List (with options):\r\n\t\t * [{'name': 'a', options: {}}, {'name': 'b', options: {}}]\r\n\t\t *\r\n\t\t * Hash (with options):\r\n\t\t * {'a': { ... }, 'b': { ... }, 'c': { ... }}\r\n\t\t *\r\n\t\t * @param {mixed} plugins\r\n\t\t */\r\n\t\tInterface.prototype.initializePlugins = function(plugins) {\r\n\t\t\tvar i, n, key;\r\n\t\t\tvar self = this;\r\n\t\t\tvar queue = [];\r\n\r\n\t\t\tself.plugins = {\r\n\t\t\t\tnames : [],\r\n\t\t\t\tsettings : {},\r\n\t\t\t\trequested : {},\r\n\t\t\t\tloaded : {}\r\n\t\t\t};\r\n\r\n\t\t\tif (utils.isArray(plugins)) {\r\n\t\t\t\tfor (i = 0, n = plugins.length; i < n; i++) {\r\n\t\t\t\t\tif (typeof plugins[i] === 'string') {\r\n\t\t\t\t\t\tqueue.push(plugins[i]);\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\tself.plugins.settings[plugins[i].name] = plugins[i].options;\r\n\t\t\t\t\t\tqueue.push(plugins[i].name);\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t} else if (plugins) {\r\n\t\t\t\tfor (key in plugins) {\r\n\t\t\t\t\tif (plugins.hasOwnProperty(key)) {\r\n\t\t\t\t\t\tself.plugins.settings[key] = plugins[key];\r\n\t\t\t\t\t\tqueue.push(key);\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\twhile (queue.length) {\r\n\t\t\t\tself.require(queue.shift());\r\n\t\t\t}\r\n\t\t};\r\n\r\n\t\tInterface.prototype.loadPlugin = function(name) {\r\n\t\t\tvar self = this;\r\n\t\t\tvar plugins = self.plugins;\r\n\t\t\tvar plugin = Interface.plugins[name];\r\n\r\n\t\t\tif (!Interface.plugins.hasOwnProperty(name)) {\r\n\t\t\t\tthrow new Error('Unable to find \"' + name + '\" plugin');\r\n\t\t\t}\r\n\r\n\t\t\tplugins.requested[name] = true;\r\n\t\t\tplugins.loaded[name] = plugin.fn.apply(self, [self.plugins.settings[name] || {}]);\r\n\t\t\tplugins.names.push(name);\r\n\t\t};\r\n\r\n\t\t/**\r\n\t\t * Initializes a plugin.\r\n\t\t *\r\n\t\t * @param {string} name\r\n\t\t */\r\n\t\tInterface.prototype.require = function(name) {\r\n\t\t\tvar self = this;\r\n\t\t\tvar plugins = self.plugins;\r\n\r\n\t\t\tif (!self.plugins.loaded.hasOwnProperty(name)) {\r\n\t\t\t\tif (plugins.requested[name]) {\r\n\t\t\t\t\tthrow new Error('Plugin has circular dependency (\"' + name + '\")');\r\n\t\t\t\t}\r\n\t\t\t\tself.loadPlugin(name);\r\n\t\t\t}\r\n\r\n\t\t\treturn plugins.loaded[name];\r\n\t\t};\r\n\r\n\t\t/**\r\n\t\t * Registers a plugin.\r\n\t\t *\r\n\t\t * @param {string} name\r\n\t\t * @param {function} fn\r\n\t\t */\r\n\t\tInterface.define = function(name, fn) {\r\n\t\t\tInterface.plugins[name] = {\r\n\t\t\t\t'name' : name,\r\n\t\t\t\t'fn' : fn\r\n\t\t\t};\r\n\t\t};\r\n\t};\r\n\r\n\tvar utils = {\r\n\t\tisArray: Array.isArray || function(vArg) {\r\n\t\t\treturn Object.prototype.toString.call(vArg) === '[object Array]';\r\n\t\t}\r\n\t};\r\n\r\n\treturn MicroPlugin;\r\n}));\r\n\r\n/**\r\n * selectize.js (v0.12.1)\r\n * Copyright (c) 2013–2015 Brian Reavis & contributors\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\"); you may not use this\r\n * file except in compliance with the License. You may obtain a copy of the License at:\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software distributed under\r\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF\r\n * ANY KIND, either express or implied. See the License for the specific language\r\n * governing permissions and limitations under the License.\r\n *\r\n * @author Brian Reavis \r\n */\r\n\r\n/*jshint curly:false */\r\n/*jshint browser:true */\r\n\r\n(function(root, factory) {\r\n\tif (typeof define === 'function' && define.amd) {\r\n\t\tdefine('selectize', ['jquery','sifter','microplugin'], factory);\r\n\t} else if (typeof exports === 'object') {\r\n\t\tmodule.exports = factory(require('jquery'), require('sifter'), require('microplugin'));\r\n\t} else {\r\n\t\troot.Selectize = factory(root.jQuery, root.Sifter, root.MicroPlugin);\r\n\t}\r\n}(this, function($, Sifter, MicroPlugin) {\r\n\t'use strict';\r\n\r\n\tvar highlight = function($element, pattern) {\r\n\t\tif (typeof pattern === 'string' && !pattern.length) return;\r\n\t\tvar regex = (typeof pattern === 'string') ? new RegExp(pattern, 'i') : pattern;\r\n\t\r\n\t\tvar highlight = function(node) {\r\n\t\t\tvar skip = 0;\r\n\t\t\tif (node.nodeType === 3) {\r\n\t\t\t\tvar pos = node.data.search(regex);\r\n\t\t\t\tif (pos >= 0 && node.data.length > 0) {\r\n\t\t\t\t\tvar match = node.data.match(regex);\r\n\t\t\t\t\tvar spannode = document.createElement('span');\r\n\t\t\t\t\tspannode.className = 'highlight';\r\n\t\t\t\t\tvar middlebit = node.splitText(pos);\r\n\t\t\t\t\tvar endbit = middlebit.splitText(match[0].length);\r\n\t\t\t\t\tvar middleclone = middlebit.cloneNode(true);\r\n\t\t\t\t\tspannode.appendChild(middleclone);\r\n\t\t\t\t\tmiddlebit.parentNode.replaceChild(spannode, middlebit);\r\n\t\t\t\t\tskip = 1;\r\n\t\t\t\t}\r\n\t\t\t} else if (node.nodeType === 1 && node.childNodes && !/(script|style)/i.test(node.tagName)) {\r\n\t\t\t\tfor (var i = 0; i < node.childNodes.length; ++i) {\r\n\t\t\t\t\ti += highlight(node.childNodes[i]);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\treturn skip;\r\n\t\t};\r\n\t\r\n\t\treturn $element.each(function() {\r\n\t\t\thighlight(this);\r\n\t\t});\r\n\t};\r\n\t\r\n\tvar MicroEvent = function() {};\r\n\tMicroEvent.prototype = {\r\n\t\ton: function(event, fct){\r\n\t\t\tthis._events = this._events || {};\r\n\t\t\tthis._events[event] = this._events[event] || [];\r\n\t\t\tthis._events[event].push(fct);\r\n\t\t},\r\n\t\toff: function(event, fct){\r\n\t\t\tvar n = arguments.length;\r\n\t\t\tif (n === 0) return delete this._events;\r\n\t\t\tif (n === 1) return delete this._events[event];\r\n\t\r\n\t\t\tthis._events = this._events || {};\r\n\t\t\tif (event in this._events === false) return;\r\n\t\t\tthis._events[event].splice(this._events[event].indexOf(fct), 1);\r\n\t\t},\r\n\t\ttrigger: function(event /* , args... */){\r\n\t\t\tthis._events = this._events || {};\r\n\t\t\tif (event in this._events === false) return;\r\n\t\t\tfor (var i = 0; i < this._events[event].length; i++){\r\n\t\t\t\tthis._events[event][i].apply(this, Array.prototype.slice.call(arguments, 1));\r\n\t\t\t}\r\n\t\t}\r\n\t};\r\n\t\r\n\t/**\r\n\t * Mixin will delegate all MicroEvent.js function in the destination object.\r\n\t *\r\n\t * - MicroEvent.mixin(Foobar) will make Foobar able to use MicroEvent\r\n\t *\r\n\t * @param {object} the object which will support MicroEvent\r\n\t */\r\n\tMicroEvent.mixin = function(destObject){\r\n\t\tvar props = ['on', 'off', 'trigger'];\r\n\t\tfor (var i = 0; i < props.length; i++){\r\n\t\t\tdestObject.prototype[props[i]] = MicroEvent.prototype[props[i]];\r\n\t\t}\r\n\t};\r\n\t\r\n\tvar IS_MAC = /Mac/.test(navigator.userAgent);\r\n\t\r\n\tvar KEY_A = 65;\r\n\tvar KEY_COMMA = 188;\r\n\tvar KEY_RETURN = 13;\r\n\tvar KEY_ESC = 27;\r\n\tvar KEY_LEFT = 37;\r\n\tvar KEY_UP = 38;\r\n\tvar KEY_P = 80;\r\n\tvar KEY_RIGHT = 39;\r\n\tvar KEY_DOWN = 40;\r\n\tvar KEY_N = 78;\r\n\tvar KEY_BACKSPACE = 8;\r\n\tvar KEY_DELETE = 46;\r\n\tvar KEY_SHIFT = 16;\r\n\tvar KEY_CMD = IS_MAC ? 91 : 17;\r\n\tvar KEY_CTRL = IS_MAC ? 18 : 17;\r\n\tvar KEY_TAB = 9;\r\n\t\r\n\tvar TAG_SELECT = 1;\r\n\tvar TAG_INPUT = 2;\r\n\t\r\n\t// for now, android support in general is too spotty to support validity\r\n\tvar SUPPORTS_VALIDITY_API = !/android/i.test(window.navigator.userAgent) && !!document.createElement('form').validity;\r\n\t\r\n\tvar isset = function(object) {\r\n\t\treturn typeof object !== 'undefined';\r\n\t};\r\n\t\r\n\t/**\r\n\t * Converts a scalar to its best string representation\r\n\t * for hash keys and HTML attribute values.\r\n\t *\r\n\t * Transformations:\r\n\t * 'str' -> 'str'\r\n\t * null -> ''\r\n\t * undefined -> ''\r\n\t * true -> '1'\r\n\t * false -> '0'\r\n\t * 0 -> '0'\r\n\t * 1 -> '1'\r\n\t *\r\n\t * @param {string} value\r\n\t * @returns {string|null}\r\n\t */\r\n\tvar hash_key = function(value) {\r\n\t\tif (typeof value === 'undefined' || value === null) return null;\r\n\t\tif (typeof value === 'boolean') return value ? '1' : '0';\r\n\t\treturn value + '';\r\n\t};\r\n\t\r\n\t/**\r\n\t * Escapes a string for use within HTML.\r\n\t *\r\n\t * @param {string} str\r\n\t * @returns {string}\r\n\t */\r\n\tvar escape_html = function(str) {\r\n\t\treturn (str + '')\r\n\t\t\t.replace(/&/g, '&')\r\n\t\t\t.replace(//g, '>')\r\n\t\t\t.replace(/\"/g, '"');\r\n\t};\r\n\t\r\n\t/**\r\n\t * Escapes \"$\" characters in replacement strings.\r\n\t *\r\n\t * @param {string} str\r\n\t * @returns {string}\r\n\t */\r\n\tvar escape_replace = function(str) {\r\n\t\treturn (str + '').replace(/\\$/g, '$$$$');\r\n\t};\r\n\t\r\n\tvar hook = {};\r\n\t\r\n\t/**\r\n\t * Wraps `method` on `self` so that `fn`\r\n\t * is invoked before the original method.\r\n\t *\r\n\t * @param {object} self\r\n\t * @param {string} method\r\n\t * @param {function} fn\r\n\t */\r\n\thook.before = function(self, method, fn) {\r\n\t\tvar original = self[method];\r\n\t\tself[method] = function() {\r\n\t\t\tfn.apply(self, arguments);\r\n\t\t\treturn original.apply(self, arguments);\r\n\t\t};\r\n\t};\r\n\t\r\n\t/**\r\n\t * Wraps `method` on `self` so that `fn`\r\n\t * is invoked after the original method.\r\n\t *\r\n\t * @param {object} self\r\n\t * @param {string} method\r\n\t * @param {function} fn\r\n\t */\r\n\thook.after = function(self, method, fn) {\r\n\t\tvar original = self[method];\r\n\t\tself[method] = function() {\r\n\t\t\tvar result = original.apply(self, arguments);\r\n\t\t\tfn.apply(self, arguments);\r\n\t\t\treturn result;\r\n\t\t};\r\n\t};\r\n\t\r\n\t/**\r\n\t * Wraps `fn` so that it can only be invoked once.\r\n\t *\r\n\t * @param {function} fn\r\n\t * @returns {function}\r\n\t */\r\n\tvar once = function(fn) {\r\n\t\tvar called = false;\r\n\t\treturn function() {\r\n\t\t\tif (called) return;\r\n\t\t\tcalled = true;\r\n\t\t\tfn.apply(this, arguments);\r\n\t\t};\r\n\t};\r\n\t\r\n\t/**\r\n\t * Wraps `fn` so that it can only be called once\r\n\t * every `delay` milliseconds (invoked on the falling edge).\r\n\t *\r\n\t * @param {function} fn\r\n\t * @param {int} delay\r\n\t * @returns {function}\r\n\t */\r\n\tvar debounce = function(fn, delay) {\r\n\t\tvar timeout;\r\n\t\treturn function() {\r\n\t\t\tvar self = this;\r\n\t\t\tvar args = arguments;\r\n\t\t\twindow.clearTimeout(timeout);\r\n\t\t\ttimeout = window.setTimeout(function() {\r\n\t\t\t\tfn.apply(self, args);\r\n\t\t\t}, delay);\r\n\t\t};\r\n\t};\r\n\t\r\n\t/**\r\n\t * Debounce all fired events types listed in `types`\r\n\t * while executing the provided `fn`.\r\n\t *\r\n\t * @param {object} self\r\n\t * @param {array} types\r\n\t * @param {function} fn\r\n\t */\r\n\tvar debounce_events = function(self, types, fn) {\r\n\t\tvar type;\r\n\t\tvar trigger = self.trigger;\r\n\t\tvar event_args = {};\r\n\t\r\n\t\t// override trigger method\r\n\t\tself.trigger = function() {\r\n\t\t\tvar type = arguments[0];\r\n\t\t\tif (types.indexOf(type) !== -1) {\r\n\t\t\t\tevent_args[type] = arguments;\r\n\t\t\t} else {\r\n\t\t\t\treturn trigger.apply(self, arguments);\r\n\t\t\t}\r\n\t\t};\r\n\t\r\n\t\t// invoke provided function\r\n\t\tfn.apply(self, []);\r\n\t\tself.trigger = trigger;\r\n\t\r\n\t\t// trigger queued events\r\n\t\tfor (type in event_args) {\r\n\t\t\tif (event_args.hasOwnProperty(type)) {\r\n\t\t\t\ttrigger.apply(self, event_args[type]);\r\n\t\t\t}\r\n\t\t}\r\n\t};\r\n\t\r\n\t/**\r\n\t * A workaround for http://bugs.jquery.com/ticket/6696\r\n\t *\r\n\t * @param {object} $parent - Parent element to listen on.\r\n\t * @param {string} event - Event name.\r\n\t * @param {string} selector - Descendant selector to filter by.\r\n\t * @param {function} fn - Event handler.\r\n\t */\r\n\tvar watchChildEvent = function($parent, event, selector, fn) {\r\n\t\t$parent.on(event, selector, function(e) {\r\n\t\t\tvar child = e.target;\r\n\t\t\twhile (child && child.parentNode !== $parent[0]) {\r\n\t\t\t\tchild = child.parentNode;\r\n\t\t\t}\r\n\t\t\te.currentTarget = child;\r\n\t\t\treturn fn.apply(this, [e]);\r\n\t\t});\r\n\t};\r\n\t\r\n\t/**\r\n\t * Determines the current selection within a text input control.\r\n\t * Returns an object containing:\r\n\t * - start\r\n\t * - length\r\n\t *\r\n\t * @param {object} input\r\n\t * @returns {object}\r\n\t */\r\n\tvar getSelection = function(input) {\r\n\t\tvar result = {};\r\n\t\tif ('selectionStart' in input) {\r\n\t\t\tresult.start = input.selectionStart;\r\n\t\t\tresult.length = input.selectionEnd - result.start;\r\n\t\t} else if (document.selection) {\r\n\t\t\tinput.focus();\r\n\t\t\tvar sel = document.selection.createRange();\r\n\t\t\tvar selLen = document.selection.createRange().text.length;\r\n\t\t\tsel.moveStart('character', -input.value.length);\r\n\t\t\tresult.start = sel.text.length - selLen;\r\n\t\t\tresult.length = selLen;\r\n\t\t}\r\n\t\treturn result;\r\n\t};\r\n\t\r\n\t/**\r\n\t * Copies CSS properties from one element to another.\r\n\t *\r\n\t * @param {object} $from\r\n\t * @param {object} $to\r\n\t * @param {array} properties\r\n\t */\r\n\tvar transferStyles = function($from, $to, properties) {\r\n\t\tvar i, n, styles = {};\r\n\t\tif (properties) {\r\n\t\t\tfor (i = 0, n = properties.length; i < n; i++) {\r\n\t\t\t\tstyles[properties[i]] = $from.css(properties[i]);\r\n\t\t\t}\r\n\t\t} else {\r\n\t\t\tstyles = $from.css();\r\n\t\t}\r\n\t\t$to.css(styles);\r\n\t};\r\n\t\r\n\t/**\r\n\t * Measures the width of a string within a\r\n\t * parent element (in pixels).\r\n\t *\r\n\t * @param {string} str\r\n\t * @param {object} $parent\r\n\t * @returns {int}\r\n\t */\r\n\tvar measureString = function(str, $parent) {\r\n\t\tif (!str) {\r\n\t\t\treturn 0;\r\n\t\t}\r\n\t\r\n\t\tvar $test = $('').css({\r\n\t\t\tposition: 'absolute',\r\n\t\t\ttop: -99999,\r\n\t\t\tleft: -99999,\r\n\t\t\twidth: 'auto',\r\n\t\t\tpadding: 0,\r\n\t\t\twhiteSpace: 'pre'\r\n\t\t}).text(str).appendTo('body');\r\n\t\r\n\t\ttransferStyles($parent, $test, [\r\n\t\t\t'letterSpacing',\r\n\t\t\t'fontSize',\r\n\t\t\t'fontFamily',\r\n\t\t\t'fontWeight',\r\n\t\t\t'textTransform'\r\n\t\t]);\r\n\t\r\n\t\tvar width = $test.width();\r\n\t\t$test.remove();\r\n\t\r\n\t\treturn width;\r\n\t};\r\n\t\r\n\t/**\r\n\t * Sets up an input to grow horizontally as the user\r\n\t * types. If the value is changed manually, you can\r\n\t * trigger the \"update\" handler to resize:\r\n\t *\r\n\t * $input.trigger('update');\r\n\t *\r\n\t * @param {object} $input\r\n\t */\r\n\tvar autoGrow = function($input) {\r\n\t\tvar currentWidth = null;\r\n\t\r\n\t\tvar update = function(e, options) {\r\n\t\t\tvar value, keyCode, printable, placeholder, width;\r\n\t\t\tvar shift, character, selection;\r\n\t\t\te = e || window.event || {};\r\n\t\t\toptions = options || {};\r\n\t\r\n\t\t\tif (e.metaKey || e.altKey) return;\r\n\t\t\tif (!options.force && $input.data('grow') === false) return;\r\n\t\r\n\t\t\tvalue = $input.val();\r\n\t\t\tif (e.type && e.type.toLowerCase() === 'keydown') {\r\n\t\t\t\tkeyCode = e.keyCode;\r\n\t\t\t\tprintable = (\r\n\t\t\t\t\t(keyCode >= 97 && keyCode <= 122) || // a-z\r\n\t\t\t\t\t(keyCode >= 65 && keyCode <= 90) || // A-Z\r\n\t\t\t\t\t(keyCode >= 48 && keyCode <= 57) || // 0-9\r\n\t\t\t\t\tkeyCode === 32 // space\r\n\t\t\t\t);\r\n\t\r\n\t\t\t\tif (keyCode === KEY_DELETE || keyCode === KEY_BACKSPACE) {\r\n\t\t\t\t\tselection = getSelection($input[0]);\r\n\t\t\t\t\tif (selection.length) {\r\n\t\t\t\t\t\tvalue = value.substring(0, selection.start) + value.substring(selection.start + selection.length);\r\n\t\t\t\t\t} else if (keyCode === KEY_BACKSPACE && selection.start) {\r\n\t\t\t\t\t\tvalue = value.substring(0, selection.start - 1) + value.substring(selection.start + 1);\r\n\t\t\t\t\t} else if (keyCode === KEY_DELETE && typeof selection.start !== 'undefined') {\r\n\t\t\t\t\t\tvalue = value.substring(0, selection.start) + value.substring(selection.start + 1);\r\n\t\t\t\t\t}\r\n\t\t\t\t} else if (printable) {\r\n\t\t\t\t\tshift = e.shiftKey;\r\n\t\t\t\t\tcharacter = String.fromCharCode(e.keyCode);\r\n\t\t\t\t\tif (shift) character = character.toUpperCase();\r\n\t\t\t\t\telse character = character.toLowerCase();\r\n\t\t\t\t\tvalue += character;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\r\n\t\t\tplaceholder = $input.attr('placeholder');\r\n\t\t\tif (!value && placeholder) {\r\n\t\t\t\tvalue = placeholder;\r\n\t\t\t}\r\n\t\r\n\t\t\twidth = measureString(value, $input) + 4;\r\n\t\t\tif (width !== currentWidth) {\r\n\t\t\t\tcurrentWidth = width;\r\n\t\t\t\t$input.width(width);\r\n\t\t\t\t$input.triggerHandler('resize');\r\n\t\t\t}\r\n\t\t};\r\n\t\r\n\t\t$input.on('keydown keyup update blur', update);\r\n\t\tupdate();\r\n\t};\r\n\t\r\n\tvar Selectize = function($input, settings) {\r\n\t\tvar key, i, n, dir, input, self = this;\r\n\t\tinput = $input[0];\r\n\t\tinput.selectize = self;\r\n\t\r\n\t\t// detect rtl environment\r\n\t\tvar computedStyle = window.getComputedStyle && window.getComputedStyle(input, null);\r\n\t\tdir = computedStyle ? computedStyle.getPropertyValue('direction') : input.currentStyle && input.currentStyle.direction;\r\n\t\tdir = dir || $input.parents('[dir]:first').attr('dir') || '';\r\n\t\r\n\t\t// setup default state\r\n\t\t$.extend(self, {\r\n\t\t\torder : 0,\r\n\t\t\tsettings : settings,\r\n\t\t\t$input : $input,\r\n\t\t\ttabIndex : $input.attr('tabindex') || '',\r\n\t\t\ttagType : input.tagName.toLowerCase() === 'select' ? TAG_SELECT : TAG_INPUT,\r\n\t\t\trtl : /rtl/i.test(dir),\r\n\t\r\n\t\t\teventNS : '.selectize' + (++Selectize.count),\r\n\t\t\thighlightedValue : null,\r\n\t\t\tisOpen : false,\r\n\t\t\tisDisabled : false,\r\n\t\t\tisRequired : $input.is('[required]'),\r\n\t\t\tisInvalid : false,\r\n\t\t\tisLocked : false,\r\n\t\t\tisFocused : false,\r\n\t\t\tisInputHidden : false,\r\n\t\t\tisSetup : false,\r\n\t\t\tisShiftDown : false,\r\n\t\t\tisCmdDown : false,\r\n\t\t\tisCtrlDown : false,\r\n\t\t\tignoreFocus : false,\r\n\t\t\tignoreBlur : false,\r\n\t\t\tignoreHover : false,\r\n\t\t\thasOptions : false,\r\n\t\t\tcurrentResults : null,\r\n\t\t\tlastValue : '',\r\n\t\t\tcaretPos : 0,\r\n\t\t\tloading : 0,\r\n\t\t\tloadedSearches : {},\r\n\t\r\n\t\t\t$activeOption : null,\r\n\t\t\t$activeItems : [],\r\n\t\r\n\t\t\toptgroups : {},\r\n\t\t\toptions : {},\r\n\t\t\tuserOptions : {},\r\n\t\t\titems : [],\r\n\t\t\trenderCache : {},\r\n\t\t\tonSearchChange : settings.loadThrottle === null ? self.onSearchChange : debounce(self.onSearchChange, settings.loadThrottle)\r\n\t\t});\r\n\t\r\n\t\t// search system\r\n\t\tself.sifter = new Sifter(this.options, {diacritics: settings.diacritics});\r\n\t\r\n\t\t// build options table\r\n\t\tif (self.settings.options) {\r\n\t\t\tfor (i = 0, n = self.settings.options.length; i < n; i++) {\r\n\t\t\t\tself.registerOption(self.settings.options[i]);\r\n\t\t\t}\r\n\t\t\tdelete self.settings.options;\r\n\t\t}\r\n\t\r\n\t\t// build optgroup table\r\n\t\tif (self.settings.optgroups) {\r\n\t\t\tfor (i = 0, n = self.settings.optgroups.length; i < n; i++) {\r\n\t\t\t\tself.registerOptionGroup(self.settings.optgroups[i]);\r\n\t\t\t}\r\n\t\t\tdelete self.settings.optgroups;\r\n\t\t}\r\n\t\r\n\t\t// option-dependent defaults\r\n\t\tself.settings.mode = self.settings.mode || (self.settings.maxItems === 1 ? 'single' : 'multi');\r\n\t\tif (typeof self.settings.hideSelected !== 'boolean') {\r\n\t\t\tself.settings.hideSelected = self.settings.mode === 'multi';\r\n\t\t}\r\n\t\r\n\t\tself.initializePlugins(self.settings.plugins);\r\n\t\tself.setupCallbacks();\r\n\t\tself.setupTemplates();\r\n\t\tself.setup();\r\n\t};\r\n\t\r\n\t// mixins\r\n\t// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -\r\n\t\r\n\tMicroEvent.mixin(Selectize);\r\n\tMicroPlugin.mixin(Selectize);\r\n\t\r\n\t// methods\r\n\t// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -\r\n\t\r\n\t$.extend(Selectize.prototype, {\r\n\t\r\n\t\t/**\r\n\t\t * Creates all elements and sets up event bindings.\r\n\t\t */\r\n\t\tsetup: function() {\r\n\t\t\tvar self = this;\r\n\t\t\tvar settings = self.settings;\r\n\t\t\tvar eventNS = self.eventNS;\r\n\t\t\tvar $window = $(window);\r\n\t\t\tvar $document = $(document);\r\n\t\t\tvar $input = self.$input;\r\n\t\r\n\t\t\tvar $wrapper;\r\n\t\t\tvar $control;\r\n\t\t\tvar $control_input;\r\n\t\t\tvar $dropdown;\r\n\t\t\tvar $dropdown_content;\r\n\t\t\tvar $dropdown_parent;\r\n\t\t\tvar inputMode;\r\n\t\t\tvar timeout_blur;\r\n\t\t\tvar timeout_focus;\r\n\t\t\tvar classes;\r\n\t\t\tvar classes_plugins;\r\n\t\r\n\t\t\tinputMode = self.settings.mode;\r\n\t\t\tclasses = $input.attr('class') || '';\r\n\t\r\n\t\t\t$wrapper = $('
    ').addClass(settings.wrapperClass).addClass(classes).addClass(inputMode);\r\n\t\t\t$control = $('
    ').addClass(settings.inputClass).addClass('items').appendTo($wrapper);\r\n\t\t\t$control_input = $('').appendTo($control).attr('tabindex', $input.is(':disabled') ? '-1' : self.tabIndex);\r\n\t\t\t$dropdown_parent = $(settings.dropdownParent || $wrapper);\r\n\t\t\t$dropdown = $('
    ').addClass(settings.dropdownClass).addClass(inputMode).hide().appendTo($dropdown_parent);\r\n\t\t\t$dropdown_content = $('
    ').addClass(settings.dropdownContentClass).appendTo($dropdown);\r\n\t\r\n\t\t\tif(self.settings.copyClassesToDropdown) {\r\n\t\t\t\t$dropdown.addClass(classes);\r\n\t\t\t}\r\n\t\r\n\t\t\t$wrapper.css({\r\n\t\t\t\twidth: $input[0].style.width\r\n\t\t\t});\r\n\t\r\n\t\t\tif (self.plugins.names.length) {\r\n\t\t\t\tclasses_plugins = 'plugin-' + self.plugins.names.join(' plugin-');\r\n\t\t\t\t$wrapper.addClass(classes_plugins);\r\n\t\t\t\t$dropdown.addClass(classes_plugins);\r\n\t\t\t}\r\n\t\r\n\t\t\tif ((settings.maxItems === null || settings.maxItems > 1) && self.tagType === TAG_SELECT) {\r\n\t\t\t\t$input.attr('multiple', 'multiple');\r\n\t\t\t}\r\n\t\r\n\t\t\tif (self.settings.placeholder) {\r\n\t\t\t\t$control_input.attr('placeholder', settings.placeholder);\r\n\t\t\t}\r\n\t\r\n\t\t\t// if splitOn was not passed in, construct it from the delimiter to allow pasting universally\r\n\t\t\tif (!self.settings.splitOn && self.settings.delimiter) {\r\n\t\t\t\tvar delimiterEscaped = self.settings.delimiter.replace(/[-\\/\\\\^$*+?.()|[\\]{}]/g, '\\\\$&');\r\n\t\t\t\tself.settings.splitOn = new RegExp('\\\\s*' + delimiterEscaped + '+\\\\s*');\r\n\t\t\t}\r\n\t\r\n\t\t\tif ($input.attr('autocorrect')) {\r\n\t\t\t\t$control_input.attr('autocorrect', $input.attr('autocorrect'));\r\n\t\t\t}\r\n\t\r\n\t\t\tif ($input.attr('autocapitalize')) {\r\n\t\t\t\t$control_input.attr('autocapitalize', $input.attr('autocapitalize'));\r\n\t\t\t}\r\n\t\r\n\t\t\tself.$wrapper = $wrapper;\r\n\t\t\tself.$control = $control;\r\n\t\t\tself.$control_input = $control_input;\r\n\t\t\tself.$dropdown = $dropdown;\r\n\t\t\tself.$dropdown_content = $dropdown_content;\r\n\t\r\n\t\t\t$dropdown.on('mouseenter', '[data-selectable]', function() { return self.onOptionHover.apply(self, arguments); });\r\n\t\t\t$dropdown.on('mousedown click', '[data-selectable]', function() { return self.onOptionSelect.apply(self, arguments); });\r\n\t\t\twatchChildEvent($control, 'mousedown', '*:not(input)', function() { return self.onItemSelect.apply(self, arguments); });\r\n\t\t\tautoGrow($control_input);\r\n\t\r\n\t\t\t$control.on({\r\n\t\t\t\tmousedown : function() { return self.onMouseDown.apply(self, arguments); },\r\n\t\t\t\tclick : function() { return self.onClick.apply(self, arguments); }\r\n\t\t\t});\r\n\t\r\n\t\t\t$control_input.on({\r\n\t\t\t\tmousedown : function(e) { e.stopPropagation(); },\r\n\t\t\t\tkeydown : function() { return self.onKeyDown.apply(self, arguments); },\r\n\t\t\t\tkeyup : function() { return self.onKeyUp.apply(self, arguments); },\r\n\t\t\t\tkeypress : function() { return self.onKeyPress.apply(self, arguments); },\r\n\t\t\t\tresize : function() { self.positionDropdown.apply(self, []); },\r\n\t\t\t\tblur : function() { return self.onBlur.apply(self, arguments); },\r\n\t\t\t\tfocus : function() { self.ignoreBlur = false; return self.onFocus.apply(self, arguments); },\r\n\t\t\t\tpaste : function() { return self.onPaste.apply(self, arguments); }\r\n\t\t\t});\r\n\t\r\n\t\t\t$document.on('keydown' + eventNS, function(e) {\r\n\t\t\t\tself.isCmdDown = e[IS_MAC ? 'metaKey' : 'ctrlKey'];\r\n\t\t\t\tself.isCtrlDown = e[IS_MAC ? 'altKey' : 'ctrlKey'];\r\n\t\t\t\tself.isShiftDown = e.shiftKey;\r\n\t\t\t});\r\n\t\r\n\t\t\t$document.on('keyup' + eventNS, function(e) {\r\n\t\t\t\tif (e.keyCode === KEY_CTRL) self.isCtrlDown = false;\r\n\t\t\t\tif (e.keyCode === KEY_SHIFT) self.isShiftDown = false;\r\n\t\t\t\tif (e.keyCode === KEY_CMD) self.isCmdDown = false;\r\n\t\t\t});\r\n\t\r\n\t\t\t$document.on('mousedown' + eventNS, function(e) {\r\n\t\t\t\tif (self.isFocused) {\r\n\t\t\t\t\t// prevent events on the dropdown scrollbar from causing the control to blur\r\n\t\t\t\t\tif (e.target === self.$dropdown[0] || e.target.parentNode === self.$dropdown[0]) {\r\n\t\t\t\t\t\treturn false;\r\n\t\t\t\t\t}\r\n\t\t\t\t\t// blur on click outside\r\n\t\t\t\t\tif (!self.$control.has(e.target).length && e.target !== self.$control[0]) {\r\n\t\t\t\t\t\tself.blur(e.target);\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\r\n\t\t\t$window.on(['scroll' + eventNS, 'resize' + eventNS].join(' '), function() {\r\n\t\t\t\tif (self.isOpen) {\r\n\t\t\t\t\tself.positionDropdown.apply(self, arguments);\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t\t$window.on('mousemove' + eventNS, function() {\r\n\t\t\t\tself.ignoreHover = false;\r\n\t\t\t});\r\n\t\r\n\t\t\t// store original children and tab index so that they can be\r\n\t\t\t// restored when the destroy() method is called.\r\n\t\t\tthis.revertSettings = {\r\n\t\t\t\t$children : $input.children().detach(),\r\n\t\t\t\ttabindex : $input.attr('tabindex')\r\n\t\t\t};\r\n\t\r\n\t\t\t$input.attr('tabindex', -1).hide().after(self.$wrapper);\r\n\t\r\n\t\t\tif ($.isArray(settings.items)) {\r\n\t\t\t\tself.setValue(settings.items);\r\n\t\t\t\tdelete settings.items;\r\n\t\t\t}\r\n\t\r\n\t\t\t// feature detect for the validation API\r\n\t\t\tif (SUPPORTS_VALIDITY_API) {\r\n\t\t\t\t$input.on('invalid' + eventNS, function(e) {\r\n\t\t\t\t\te.preventDefault();\r\n\t\t\t\t\tself.isInvalid = true;\r\n\t\t\t\t\tself.refreshState();\r\n\t\t\t\t});\r\n\t\t\t}\r\n\t\r\n\t\t\tself.updateOriginalInput();\r\n\t\t\tself.refreshItems();\r\n\t\t\tself.refreshState();\r\n\t\t\tself.updatePlaceholder();\r\n\t\t\tself.isSetup = true;\r\n\t\r\n\t\t\tif ($input.is(':disabled')) {\r\n\t\t\t\tself.disable();\r\n\t\t\t}\r\n\t\r\n\t\t\tself.on('change', this.onChange);\r\n\t\r\n\t\t\t$input.data('selectize', self);\r\n\t\t\t$input.addClass('selectized');\r\n\t\t\tself.trigger('initialize');\r\n\t\r\n\t\t\t// preload options\r\n\t\t\tif (settings.preload === true) {\r\n\t\t\t\tself.onSearchChange('');\r\n\t\t\t}\r\n\t\r\n\t\t},\r\n\t\r\n\t\t/**\r\n\t\t * Sets up default rendering functions.\r\n\t\t */\r\n\t\tsetupTemplates: function() {\r\n\t\t\tvar self = this;\r\n\t\t\tvar field_label = self.settings.labelField;\r\n\t\t\tvar field_optgroup = self.settings.optgroupLabelField;\r\n\t\r\n\t\t\tvar templates = {\r\n\t\t\t\t'optgroup': function(data) {\r\n\t\t\t\t\treturn '
    ' + data.html + '
    ';\r\n\t\t\t\t},\r\n\t\t\t\t'optgroup_header': function(data, escape) {\r\n\t\t\t\t\treturn '
    ' + escape(data[field_optgroup]) + '
    ';\r\n\t\t\t\t},\r\n\t\t\t\t'option': function(data, escape) {\r\n\t\t\t\t\treturn '
    ' + escape(data[field_label]) + '
    ';\r\n\t\t\t\t},\r\n\t\t\t\t'item': function(data, escape) {\r\n\t\t\t\t\treturn '
    ' + escape(data[field_label]) + '
    ';\r\n\t\t\t\t},\r\n\t\t\t\t'option_create': function(data, escape) {\r\n\t\t\t\t\treturn '
    Add ' + escape(data.input) + '
    ';\r\n\t\t\t\t}\r\n\t\t\t};\r\n\t\r\n\t\t\tself.settings.render = $.extend({}, templates, self.settings.render);\r\n\t\t},\r\n\t\r\n\t\t/**\r\n\t\t * Maps fired events to callbacks provided\r\n\t\t * in the settings used when creating the control.\r\n\t\t */\r\n\t\tsetupCallbacks: function() {\r\n\t\t\tvar key, fn, callbacks = {\r\n\t\t\t\t'initialize' : 'onInitialize',\r\n\t\t\t\t'change' : 'onChange',\r\n\t\t\t\t'item_add' : 'onItemAdd',\r\n\t\t\t\t'item_remove' : 'onItemRemove',\r\n\t\t\t\t'clear' : 'onClear',\r\n\t\t\t\t'option_add' : 'onOptionAdd',\r\n\t\t\t\t'option_remove' : 'onOptionRemove',\r\n\t\t\t\t'option_clear' : 'onOptionClear',\r\n\t\t\t\t'optgroup_add' : 'onOptionGroupAdd',\r\n\t\t\t\t'optgroup_remove' : 'onOptionGroupRemove',\r\n\t\t\t\t'optgroup_clear' : 'onOptionGroupClear',\r\n\t\t\t\t'dropdown_open' : 'onDropdownOpen',\r\n\t\t\t\t'dropdown_close' : 'onDropdownClose',\r\n\t\t\t\t'type' : 'onType',\r\n\t\t\t\t'load' : 'onLoad',\r\n\t\t\t\t'focus' : 'onFocus',\r\n\t\t\t\t'blur' : 'onBlur'\r\n\t\t\t};\r\n\t\r\n\t\t\tfor (key in callbacks) {\r\n\t\t\t\tif (callbacks.hasOwnProperty(key)) {\r\n\t\t\t\t\tfn = this.settings[callbacks[key]];\r\n\t\t\t\t\tif (fn) this.on(key, fn);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t},\r\n\t\r\n\t\t/**\r\n\t\t * Triggered when the main control element\r\n\t\t * has a click event.\r\n\t\t *\r\n\t\t * @param {object} e\r\n\t\t * @return {boolean}\r\n\t\t */\r\n\t\tonClick: function(e) {\r\n\t\t\tvar self = this;\r\n\t\r\n\t\t\t// necessary for mobile webkit devices (manual focus triggering\r\n\t\t\t// is ignored unless invoked within a click event)\r\n\t\t\tif (!self.isFocused) {\r\n\t\t\t\tself.focus();\r\n\t\t\t\te.preventDefault();\r\n\t\t\t}\r\n\t\t},\r\n\t\r\n\t\t/**\r\n\t\t * Triggered when the main control element\r\n\t\t * has a mouse down event.\r\n\t\t *\r\n\t\t * @param {object} e\r\n\t\t * @return {boolean}\r\n\t\t */\r\n\t\tonMouseDown: function(e) {\r\n\t\t\tvar self = this;\r\n\t\t\tvar defaultPrevented = e.isDefaultPrevented();\r\n\t\t\tvar $target = $(e.target);\r\n\t\r\n\t\t\tif (self.isFocused) {\r\n\t\t\t\t// retain focus by preventing native handling. if the\r\n\t\t\t\t// event target is the input it should not be modified.\r\n\t\t\t\t// otherwise, text selection within the input won't work.\r\n\t\t\t\tif (e.target !== self.$control_input[0]) {\r\n\t\t\t\t\tif (self.settings.mode === 'single') {\r\n\t\t\t\t\t\t// toggle dropdown\r\n\t\t\t\t\t\tself.isOpen ? self.close() : self.open();\r\n\t\t\t\t\t} else if (!defaultPrevented) {\r\n\t\t\t\t\t\tself.setActiveItem(null);\r\n\t\t\t\t\t}\r\n\t\t\t\t\treturn false;\r\n\t\t\t\t}\r\n\t\t\t} else {\r\n\t\t\t\t// give control focus\r\n\t\t\t\tif (!defaultPrevented) {\r\n\t\t\t\t\twindow.setTimeout(function() {\r\n\t\t\t\t\t\tself.focus();\r\n\t\t\t\t\t}, 0);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t},\r\n\t\r\n\t\t/**\r\n\t\t * Triggered when the value of the control has been changed.\r\n\t\t * This should propagate the event to the original DOM\r\n\t\t * input / select element.\r\n\t\t */\r\n\t\tonChange: function() {\r\n\t\t\tthis.$input.trigger('change');\r\n\t\t},\r\n\t\r\n\t\t/**\r\n\t\t * Triggered on paste.\r\n\t\t *\r\n\t\t * @param {object} e\r\n\t\t * @returns {boolean}\r\n\t\t */\r\n\t\tonPaste: function(e) {\r\n\t\t\tvar self = this;\r\n\t\t\tif (self.isFull() || self.isInputHidden || self.isLocked) {\r\n\t\t\t\te.preventDefault();\r\n\t\t\t} else {\r\n\t\t\t\t// If a regex or string is included, this will split the pasted\r\n\t\t\t\t// input and create Items for each separate value\r\n\t\t\t\tif (self.settings.splitOn) {\r\n\t\t\t\t\tsetTimeout(function() {\r\n\t\t\t\t\t\tvar splitInput = $.trim(self.$control_input.val() || '').split(self.settings.splitOn);\r\n\t\t\t\t\t\tfor (var i = 0, n = splitInput.length; i < n; i++) {\r\n\t\t\t\t\t\t\tself.createItem(splitInput[i]);\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}, 0);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t},\r\n\t\r\n\t\t/**\r\n\t\t * Triggered on keypress.\r\n\t\t *\r\n\t\t * @param {object} e\r\n\t\t * @returns {boolean}\r\n\t\t */\r\n\t\tonKeyPress: function(e) {\r\n\t\t\tif (this.isLocked) return e && e.preventDefault();\r\n\t\t\tvar character = String.fromCharCode(e.keyCode || e.which);\r\n\t\t\tif (this.settings.create && this.settings.mode === 'multi' && character === this.settings.delimiter) {\r\n\t\t\t\tthis.createItem();\r\n\t\t\t\te.preventDefault();\r\n\t\t\t\treturn false;\r\n\t\t\t}\r\n\t\t},\r\n\t\r\n\t\t/**\r\n\t\t * Triggered on keydown.\r\n\t\t *\r\n\t\t * @param {object} e\r\n\t\t * @returns {boolean}\r\n\t\t */\r\n\t\tonKeyDown: function(e) {\r\n\t\t\tvar isInput = e.target === this.$control_input[0];\r\n\t\t\tvar self = this;\r\n\t\r\n\t\t\tif (self.isLocked) {\r\n\t\t\t\tif (e.keyCode !== KEY_TAB) {\r\n\t\t\t\t\te.preventDefault();\r\n\t\t\t\t}\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\t\r\n\t\t\tswitch (e.keyCode) {\r\n\t\t\t\tcase KEY_A:\r\n\t\t\t\t\tif (self.isCmdDown) {\r\n\t\t\t\t\t\tself.selectAll();\r\n\t\t\t\t\t\treturn;\r\n\t\t\t\t\t}\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase KEY_ESC:\r\n\t\t\t\t\tif (self.isOpen) {\r\n\t\t\t\t\t\te.preventDefault();\r\n\t\t\t\t\t\te.stopPropagation();\r\n\t\t\t\t\t\tself.close();\r\n\t\t\t\t\t}\r\n\t\t\t\t\treturn;\r\n\t\t\t\tcase KEY_N:\r\n\t\t\t\t\tif (!e.ctrlKey || e.altKey) break;\r\n\t\t\t\tcase KEY_DOWN:\r\n\t\t\t\t\tif (!self.isOpen && self.hasOptions) {\r\n\t\t\t\t\t\tself.open();\r\n\t\t\t\t\t} else if (self.$activeOption) {\r\n\t\t\t\t\t\tself.ignoreHover = true;\r\n\t\t\t\t\t\tvar $next = self.getAdjacentOption(self.$activeOption, 1);\r\n\t\t\t\t\t\tif ($next.length) self.setActiveOption($next, true, true);\r\n\t\t\t\t\t}\r\n\t\t\t\t\te.preventDefault();\r\n\t\t\t\t\treturn;\r\n\t\t\t\tcase KEY_P:\r\n\t\t\t\t\tif (!e.ctrlKey || e.altKey) break;\r\n\t\t\t\tcase KEY_UP:\r\n\t\t\t\t\tif (self.$activeOption) {\r\n\t\t\t\t\t\tself.ignoreHover = true;\r\n\t\t\t\t\t\tvar $prev = self.getAdjacentOption(self.$activeOption, -1);\r\n\t\t\t\t\t\tif ($prev.length) self.setActiveOption($prev, true, true);\r\n\t\t\t\t\t}\r\n\t\t\t\t\te.preventDefault();\r\n\t\t\t\t\treturn;\r\n\t\t\t\tcase KEY_RETURN:\r\n\t\t\t\t\tif (self.isOpen && self.$activeOption) {\r\n\t\t\t\t\t\tself.onOptionSelect({currentTarget: self.$activeOption});\r\n\t\t\t\t\t\te.preventDefault();\r\n\t\t\t\t\t}\r\n\t\t\t\t\treturn;\r\n\t\t\t\tcase KEY_LEFT:\r\n\t\t\t\t\tself.advanceSelection(-1, e);\r\n\t\t\t\t\treturn;\r\n\t\t\t\tcase KEY_RIGHT:\r\n\t\t\t\t\tself.advanceSelection(1, e);\r\n\t\t\t\t\treturn;\r\n\t\t\t\tcase KEY_TAB:\r\n\t\t\t\t\tif (self.settings.selectOnTab && self.isOpen && self.$activeOption) {\r\n\t\t\t\t\t\tself.onOptionSelect({currentTarget: self.$activeOption});\r\n\t\r\n\t\t\t\t\t\t// Default behaviour is to jump to the next field, we only want this\r\n\t\t\t\t\t\t// if the current field doesn't accept any more entries\r\n\t\t\t\t\t\tif (!self.isFull()) {\r\n\t\t\t\t\t\t\te.preventDefault();\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t\tif (self.settings.create && self.createItem()) {\r\n\t\t\t\t\t\te.preventDefault();\r\n\t\t\t\t\t}\r\n\t\t\t\t\treturn;\r\n\t\t\t\tcase KEY_BACKSPACE:\r\n\t\t\t\tcase KEY_DELETE:\r\n\t\t\t\t\tself.deleteSelection(e);\r\n\t\t\t\t\treturn;\r\n\t\t\t}\r\n\t\r\n\t\t\tif ((self.isFull() || self.isInputHidden) && !(IS_MAC ? e.metaKey : e.ctrlKey)) {\r\n\t\t\t\te.preventDefault();\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\t\t},\r\n\t\r\n\t\t/**\r\n\t\t * Triggered on keyup.\r\n\t\t *\r\n\t\t * @param {object} e\r\n\t\t * @returns {boolean}\r\n\t\t */\r\n\t\tonKeyUp: function(e) {\r\n\t\t\tvar self = this;\r\n\t\r\n\t\t\tif (self.isLocked) return e && e.preventDefault();\r\n\t\t\tvar value = self.$control_input.val() || '';\r\n\t\t\tif (self.lastValue !== value) {\r\n\t\t\t\tself.lastValue = value;\r\n\t\t\t\tself.onSearchChange(value);\r\n\t\t\t\tself.refreshOptions();\r\n\t\t\t\tself.trigger('type', value);\r\n\t\t\t}\r\n\t\t},\r\n\t\r\n\t\t/**\r\n\t\t * Invokes the user-provide option provider / loader.\r\n\t\t *\r\n\t\t * Note: this function is debounced in the Selectize\r\n\t\t * constructor (by `settings.loadDelay` milliseconds)\r\n\t\t *\r\n\t\t * @param {string} value\r\n\t\t */\r\n\t\tonSearchChange: function(value) {\r\n\t\t\tvar self = this;\r\n\t\t\tvar fn = self.settings.load;\r\n\t\t\tif (!fn) return;\r\n\t\t\tif (self.loadedSearches.hasOwnProperty(value)) return;\r\n\t\t\tself.loadedSearches[value] = true;\r\n\t\t\tself.load(function(callback) {\r\n\t\t\t\tfn.apply(self, [value, callback]);\r\n\t\t\t});\r\n\t\t},\r\n\t\r\n\t\t/**\r\n\t\t * Triggered on focus.\r\n\t\t *\r\n\t\t * @param {object} e (optional)\r\n\t\t * @returns {boolean}\r\n\t\t */\r\n\t\tonFocus: function(e) {\r\n\t\t\tvar self = this;\r\n\t\t\tvar wasFocused = self.isFocused;\r\n\t\r\n\t\t\tif (self.isDisabled) {\r\n\t\t\t\tself.blur();\r\n\t\t\t\te && e.preventDefault();\r\n\t\t\t\treturn false;\r\n\t\t\t}\r\n\t\r\n\t\t\tif (self.ignoreFocus) return;\r\n\t\t\tself.isFocused = true;\r\n\t\t\tif (self.settings.preload === 'focus') self.onSearchChange('');\r\n\t\r\n\t\t\tif (!wasFocused) self.trigger('focus');\r\n\t\r\n\t\t\tif (!self.$activeItems.length) {\r\n\t\t\t\tself.showInput();\r\n\t\t\t\tself.setActiveItem(null);\r\n\t\t\t\tself.refreshOptions(!!self.settings.openOnFocus);\r\n\t\t\t}\r\n\t\r\n\t\t\tself.refreshState();\r\n\t\t},\r\n\t\r\n\t\t/**\r\n\t\t * Triggered on blur.\r\n\t\t *\r\n\t\t * @param {object} e\r\n\t\t * @param {Element} dest\r\n\t\t */\r\n\t\tonBlur: function(e, dest) {\r\n\t\t\tvar self = this;\r\n\t\t\tif (!self.isFocused) return;\r\n\t\t\tself.isFocused = false;\r\n\t\r\n\t\t\tif (self.ignoreFocus) {\r\n\t\t\t\treturn;\r\n\t\t\t} else if (!self.ignoreBlur && document.activeElement === self.$dropdown_content[0]) {\r\n\t\t\t\t// necessary to prevent IE closing the dropdown when the scrollbar is clicked\r\n\t\t\t\tself.ignoreBlur = true;\r\n\t\t\t\tself.onFocus(e);\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\t\r\n\t\t\tvar deactivate = function() {\r\n\t\t\t\tself.close();\r\n\t\t\t\tself.setTextboxValue('');\r\n\t\t\t\tself.setActiveItem(null);\r\n\t\t\t\tself.setActiveOption(null);\r\n\t\t\t\tself.setCaret(self.items.length);\r\n\t\t\t\tself.refreshState();\r\n\t\r\n\t\t\t\t// IE11 bug: element still marked as active\r\n\t\t\t\t(dest || document.body).focus();\r\n\t\r\n\t\t\t\tself.ignoreFocus = false;\r\n\t\t\t\tself.trigger('blur');\r\n\t\t\t};\r\n\t\r\n\t\t\tself.ignoreFocus = true;\r\n\t\t\tif (self.settings.create && self.settings.createOnBlur) {\r\n\t\t\t\tself.createItem(null, false, deactivate);\r\n\t\t\t} else {\r\n\t\t\t\tdeactivate();\r\n\t\t\t}\r\n\t\t},\r\n\t\r\n\t\t/**\r\n\t\t * Triggered when the user rolls over\r\n\t\t * an option in the autocomplete dropdown menu.\r\n\t\t *\r\n\t\t * @param {object} e\r\n\t\t * @returns {boolean}\r\n\t\t */\r\n\t\tonOptionHover: function(e) {\r\n\t\t\tif (this.ignoreHover) return;\r\n\t\t\tthis.setActiveOption(e.currentTarget, false);\r\n\t\t},\r\n\t\r\n\t\t/**\r\n\t\t * Triggered when the user clicks on an option\r\n\t\t * in the autocomplete dropdown menu.\r\n\t\t *\r\n\t\t * @param {object} e\r\n\t\t * @returns {boolean}\r\n\t\t */\r\n\t\tonOptionSelect: function(e) {\r\n\t\t\tvar value, $target, $option, self = this;\r\n\t\r\n\t\t\tif (e.preventDefault) {\r\n\t\t\t\te.preventDefault();\r\n\t\t\t\te.stopPropagation();\r\n\t\t\t}\r\n\t\r\n\t\t\t$target = $(e.currentTarget);\r\n\t\t\tif ($target.hasClass('create')) {\r\n\t\t\t\tself.createItem(null, function() {\r\n\t\t\t\t\tif (self.settings.closeAfterSelect) {\r\n\t\t\t\t\t\tself.close();\r\n\t\t\t\t\t}\r\n\t\t\t\t});\r\n\t\t\t} else {\r\n\t\t\t\tvalue = $target.attr('data-value');\r\n\t\t\t\tif (typeof value !== 'undefined') {\r\n\t\t\t\t\tself.lastQuery = null;\r\n\t\t\t\t\tself.setTextboxValue('');\r\n\t\t\t\t\tself.addItem(value);\r\n\t\t\t\t\tif (self.settings.closeAfterSelect) {\r\n\t\t\t\t\t\tself.close();\r\n\t\t\t\t\t} else if (!self.settings.hideSelected && e.type && /mouse/.test(e.type)) {\r\n\t\t\t\t\t\tself.setActiveOption(self.getOption(value));\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t},\r\n\t\r\n\t\t/**\r\n\t\t * Triggered when the user clicks on an item\r\n\t\t * that has been selected.\r\n\t\t *\r\n\t\t * @param {object} e\r\n\t\t * @returns {boolean}\r\n\t\t */\r\n\t\tonItemSelect: function(e) {\r\n\t\t\tvar self = this;\r\n\t\r\n\t\t\tif (self.isLocked) return;\r\n\t\t\tif (self.settings.mode === 'multi') {\r\n\t\t\t\te.preventDefault();\r\n\t\t\t\tself.setActiveItem(e.currentTarget, e);\r\n\t\t\t}\r\n\t\t},\r\n\t\r\n\t\t/**\r\n\t\t * Invokes the provided method that provides\r\n\t\t * results to a callback---which are then added\r\n\t\t * as options to the control.\r\n\t\t *\r\n\t\t * @param {function} fn\r\n\t\t */\r\n\t\tload: function(fn) {\r\n\t\t\tvar self = this;\r\n\t\t\tvar $wrapper = self.$wrapper.addClass(self.settings.loadingClass);\r\n\t\r\n\t\t\tself.loading++;\r\n\t\t\tfn.apply(self, [function(results) {\r\n\t\t\t\tself.loading = Math.max(self.loading - 1, 0);\r\n\t\t\t\tif (results && results.length) {\r\n\t\t\t\t\tself.addOption(results);\r\n\t\t\t\t\tself.refreshOptions(self.isFocused && !self.isInputHidden);\r\n\t\t\t\t}\r\n\t\t\t\tif (!self.loading) {\r\n\t\t\t\t\t$wrapper.removeClass(self.settings.loadingClass);\r\n\t\t\t\t}\r\n\t\t\t\tself.trigger('load', results);\r\n\t\t\t}]);\r\n\t\t},\r\n\t\r\n\t\t/**\r\n\t\t * Sets the input field of the control to the specified value.\r\n\t\t *\r\n\t\t * @param {string} value\r\n\t\t */\r\n\t\tsetTextboxValue: function(value) {\r\n\t\t\tvar $input = this.$control_input;\r\n\t\t\tvar changed = $input.val() !== value;\r\n\t\t\tif (changed) {\r\n\t\t\t\t$input.val(value).triggerHandler('update');\r\n\t\t\t\tthis.lastValue = value;\r\n\t\t\t}\r\n\t\t},\r\n\t\r\n\t\t/**\r\n\t\t * Returns the value of the control. If multiple items\r\n\t\t * can be selected (e.g. or \r\n\t\t * element to reflect the current state.\r\n\t\t */\r\n\t\tupdateOriginalInput: function(opts) {\r\n\t\t\tvar i, n, options, label, self = this;\r\n\t\t\topts = opts || {};\r\n\t\r\n\t\t\tif (self.tagType === TAG_SELECT) {\r\n\t\t\t\toptions = [];\r\n\t\t\t\tfor (i = 0, n = self.items.length; i < n; i++) {\r\n\t\t\t\t\tlabel = self.options[self.items[i]][self.settings.labelField] || '';\r\n\t\t\t\t\toptions.push('');\r\n\t\t\t\t}\r\n\t\t\t\tif (!options.length && !this.$input.attr('multiple')) {\r\n\t\t\t\t\toptions.push('');\r\n\t\t\t\t}\r\n\t\t\t\tself.$input.html(options.join(''));\r\n\t\t\t} else {\r\n\t\t\t\tself.$input.val(self.getValue());\r\n\t\t\t\tself.$input.attr('value',self.$input.val());\r\n\t\t\t}\r\n\t\r\n\t\t\tif (self.isSetup) {\r\n\t\t\t\tif (!opts.silent) {\r\n\t\t\t\t\tself.trigger('change', self.$input.val());\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t},\r\n\t\r\n\t\t/**\r\n\t\t * Shows/hide the input placeholder depending\r\n\t\t * on if there items in the list already.\r\n\t\t */\r\n\t\tupdatePlaceholder: function() {\r\n\t\t\tif (!this.settings.placeholder) return;\r\n\t\t\tvar $input = this.$control_input;\r\n\t\r\n\t\t\tif (this.items.length) {\r\n\t\t\t\t$input.removeAttr('placeholder');\r\n\t\t\t} else {\r\n\t\t\t\t$input.attr('placeholder', this.settings.placeholder);\r\n\t\t\t}\r\n\t\t\t$input.triggerHandler('update', {force: true});\r\n\t\t},\r\n\t\r\n\t\t/**\r\n\t\t * Shows the autocomplete dropdown containing\r\n\t\t * the available options.\r\n\t\t */\r\n\t\topen: function() {\r\n\t\t\tvar self = this;\r\n\t\r\n\t\t\tif (self.isLocked || self.isOpen || (self.settings.mode === 'multi' && self.isFull())) return;\r\n\t\t\tself.focus();\r\n\t\t\tself.isOpen = true;\r\n\t\t\tself.refreshState();\r\n\t\t\tself.$dropdown.css({visibility: 'hidden', display: 'block'});\r\n\t\t\tself.positionDropdown();\r\n\t\t\tself.$dropdown.css({visibility: 'visible'});\r\n\t\t\tself.trigger('dropdown_open', self.$dropdown);\r\n\t\t},\r\n\t\r\n\t\t/**\r\n\t\t * Closes the autocomplete dropdown menu.\r\n\t\t */\r\n\t\tclose: function() {\r\n\t\t\tvar self = this;\r\n\t\t\tvar trigger = self.isOpen;\r\n\t\r\n\t\t\tif (self.settings.mode === 'single' && self.items.length) {\r\n\t\t\t\tself.hideInput();\r\n\t\t\t}\r\n\t\r\n\t\t\tself.isOpen = false;\r\n\t\t\tself.$dropdown.hide();\r\n\t\t\tself.setActiveOption(null);\r\n\t\t\tself.refreshState();\r\n\t\r\n\t\t\tif (trigger) self.trigger('dropdown_close', self.$dropdown);\r\n\t\t},\r\n\t\r\n\t\t/**\r\n\t\t * Calculates and applies the appropriate\r\n\t\t * position of the dropdown.\r\n\t\t */\r\n\t\tpositionDropdown: function() {\r\n\t\t\tvar $control = this.$control;\r\n\t\t\tvar offset = this.settings.dropdownParent === 'body' ? $control.offset() : $control.position();\r\n\t\t\toffset.top += $control.outerHeight(true);\r\n\t\r\n\t\t\tthis.$dropdown.css({\r\n\t\t\t\twidth : $control.outerWidth(),\r\n\t\t\t\ttop : offset.top,\r\n\t\t\t\tleft : offset.left\r\n\t\t\t});\r\n\t\t},\r\n\t\r\n\t\t/**\r\n\t\t * Resets / clears all selected items\r\n\t\t * from the control.\r\n\t\t *\r\n\t\t * @param {boolean} silent\r\n\t\t */\r\n\t\tclear: function(silent) {\r\n\t\t\tvar self = this;\r\n\t\r\n\t\t\tif (!self.items.length) return;\r\n\t\t\tself.$control.children(':not(input)').remove();\r\n\t\t\tself.items = [];\r\n\t\t\tself.lastQuery = null;\r\n\t\t\tself.setCaret(0);\r\n\t\t\tself.setActiveItem(null);\r\n\t\t\tself.updatePlaceholder();\r\n\t\t\tself.updateOriginalInput({silent: silent});\r\n\t\t\tself.refreshState();\r\n\t\t\tself.showInput();\r\n\t\t\tself.trigger('clear');\r\n\t\t},\r\n\t\r\n\t\t/**\r\n\t\t * A helper method for inserting an element\r\n\t\t * at the current caret position.\r\n\t\t *\r\n\t\t * @param {object} $el\r\n\t\t */\r\n\t\tinsertAtCaret: function($el) {\r\n\t\t\tvar caret = Math.min(this.caretPos, this.items.length);\r\n\t\t\tif (caret === 0) {\r\n\t\t\t\tthis.$control.prepend($el);\r\n\t\t\t} else {\r\n\t\t\t\t$(this.$control[0].childNodes[caret]).before($el);\r\n\t\t\t}\r\n\t\t\tthis.setCaret(caret + 1);\r\n\t\t},\r\n\t\r\n\t\t/**\r\n\t\t * Removes the current selected item(s).\r\n\t\t *\r\n\t\t * @param {object} e (optional)\r\n\t\t * @returns {boolean}\r\n\t\t */\r\n\t\tdeleteSelection: function(e) {\r\n\t\t\tvar i, n, direction, selection, values, caret, option_select, $option_select, $tail;\r\n\t\t\tvar self = this;\r\n\t\r\n\t\t\tdirection = (e && e.keyCode === KEY_BACKSPACE) ? -1 : 1;\r\n\t\t\tselection = getSelection(self.$control_input[0]);\r\n\t\r\n\t\t\tif (self.$activeOption && !self.settings.hideSelected) {\r\n\t\t\t\toption_select = self.getAdjacentOption(self.$activeOption, -1).attr('data-value');\r\n\t\t\t}\r\n\t\r\n\t\t\t// determine items that will be removed\r\n\t\t\tvalues = [];\r\n\t\r\n\t\t\tif (self.$activeItems.length) {\r\n\t\t\t\t$tail = self.$control.children('.active:' + (direction > 0 ? 'last' : 'first'));\r\n\t\t\t\tcaret = self.$control.children(':not(input)').index($tail);\r\n\t\t\t\tif (direction > 0) { caret++; }\r\n\t\r\n\t\t\t\tfor (i = 0, n = self.$activeItems.length; i < n; i++) {\r\n\t\t\t\t\tvalues.push($(self.$activeItems[i]).attr('data-value'));\r\n\t\t\t\t}\r\n\t\t\t\tif (e) {\r\n\t\t\t\t\te.preventDefault();\r\n\t\t\t\t\te.stopPropagation();\r\n\t\t\t\t}\r\n\t\t\t} else if ((self.isFocused || self.settings.mode === 'single') && self.items.length) {\r\n\t\t\t\tif (direction < 0 && selection.start === 0 && selection.length === 0) {\r\n\t\t\t\t\tvalues.push(self.items[self.caretPos - 1]);\r\n\t\t\t\t} else if (direction > 0 && selection.start === self.$control_input.val().length) {\r\n\t\t\t\t\tvalues.push(self.items[self.caretPos]);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\r\n\t\t\t// allow the callback to abort\r\n\t\t\tif (!values.length || (typeof self.settings.onDelete === 'function' && self.settings.onDelete.apply(self, [values]) === false)) {\r\n\t\t\t\treturn false;\r\n\t\t\t}\r\n\t\r\n\t\t\t// perform removal\r\n\t\t\tif (typeof caret !== 'undefined') {\r\n\t\t\t\tself.setCaret(caret);\r\n\t\t\t}\r\n\t\t\twhile (values.length) {\r\n\t\t\t\tself.removeItem(values.pop());\r\n\t\t\t}\r\n\t\r\n\t\t\tself.showInput();\r\n\t\t\tself.positionDropdown();\r\n\t\t\tself.refreshOptions(true);\r\n\t\r\n\t\t\t// select previous option\r\n\t\t\tif (option_select) {\r\n\t\t\t\t$option_select = self.getOption(option_select);\r\n\t\t\t\tif ($option_select.length) {\r\n\t\t\t\t\tself.setActiveOption($option_select);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\r\n\t\t\treturn true;\r\n\t\t},\r\n\t\r\n\t\t/**\r\n\t\t * Selects the previous / next item (depending\r\n\t\t * on the `direction` argument).\r\n\t\t *\r\n\t\t * > 0 - right\r\n\t\t * < 0 - left\r\n\t\t *\r\n\t\t * @param {int} direction\r\n\t\t * @param {object} e (optional)\r\n\t\t */\r\n\t\tadvanceSelection: function(direction, e) {\r\n\t\t\tvar tail, selection, idx, valueLength, cursorAtEdge, $tail;\r\n\t\t\tvar self = this;\r\n\t\r\n\t\t\tif (direction === 0) return;\r\n\t\t\tif (self.rtl) direction *= -1;\r\n\t\r\n\t\t\ttail = direction > 0 ? 'last' : 'first';\r\n\t\t\tselection = getSelection(self.$control_input[0]);\r\n\t\r\n\t\t\tif (self.isFocused && !self.isInputHidden) {\r\n\t\t\t\tvalueLength = self.$control_input.val().length;\r\n\t\t\t\tcursorAtEdge = direction < 0\r\n\t\t\t\t\t? selection.start === 0 && selection.length === 0\r\n\t\t\t\t\t: selection.start === valueLength;\r\n\t\r\n\t\t\t\tif (cursorAtEdge && !valueLength) {\r\n\t\t\t\t\tself.advanceCaret(direction, e);\r\n\t\t\t\t}\r\n\t\t\t} else {\r\n\t\t\t\t$tail = self.$control.children('.active:' + tail);\r\n\t\t\t\tif ($tail.length) {\r\n\t\t\t\t\tidx = self.$control.children(':not(input)').index($tail);\r\n\t\t\t\t\tself.setActiveItem(null);\r\n\t\t\t\t\tself.setCaret(direction > 0 ? idx + 1 : idx);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t},\r\n\t\r\n\t\t/**\r\n\t\t * Moves the caret left / right.\r\n\t\t *\r\n\t\t * @param {int} direction\r\n\t\t * @param {object} e (optional)\r\n\t\t */\r\n\t\tadvanceCaret: function(direction, e) {\r\n\t\t\tvar self = this, fn, $adj;\r\n\t\r\n\t\t\tif (direction === 0) return;\r\n\t\r\n\t\t\tfn = direction > 0 ? 'next' : 'prev';\r\n\t\t\tif (self.isShiftDown) {\r\n\t\t\t\t$adj = self.$control_input[fn]();\r\n\t\t\t\tif ($adj.length) {\r\n\t\t\t\t\tself.hideInput();\r\n\t\t\t\t\tself.setActiveItem($adj);\r\n\t\t\t\t\te && e.preventDefault();\r\n\t\t\t\t}\r\n\t\t\t} else {\r\n\t\t\t\tself.setCaret(self.caretPos + direction);\r\n\t\t\t}\r\n\t\t},\r\n\t\r\n\t\t/**\r\n\t\t * Moves the caret to the specified index.\r\n\t\t *\r\n\t\t * @param {int} i\r\n\t\t */\r\n\t\tsetCaret: function(i) {\r\n\t\t\tvar self = this;\r\n\t\r\n\t\t\tif (self.settings.mode === 'single') {\r\n\t\t\t\ti = self.items.length;\r\n\t\t\t} else {\r\n\t\t\t\ti = Math.max(0, Math.min(self.items.length, i));\r\n\t\t\t}\r\n\t\r\n\t\t\tif(!self.isPending) {\r\n\t\t\t\t// the input must be moved by leaving it in place and moving the\r\n\t\t\t\t// siblings, due to the fact that focus cannot be restored once lost\r\n\t\t\t\t// on mobile webkit devices\r\n\t\t\t\tvar j, n, fn, $children, $child;\r\n\t\t\t\t$children = self.$control.children(':not(input)');\r\n\t\t\t\tfor (j = 0, n = $children.length; j < n; j++) {\r\n\t\t\t\t\t$child = $($children[j]).detach();\r\n\t\t\t\t\tif (j < i) {\r\n\t\t\t\t\t\tself.$control_input.before($child);\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\tself.$control.append($child);\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\r\n\t\t\tself.caretPos = i;\r\n\t\t},\r\n\t\r\n\t\t/**\r\n\t\t * Disables user input on the control. Used while\r\n\t\t * items are being asynchronously created.\r\n\t\t */\r\n\t\tlock: function() {\r\n\t\t\tthis.close();\r\n\t\t\tthis.isLocked = true;\r\n\t\t\tthis.refreshState();\r\n\t\t},\r\n\t\r\n\t\t/**\r\n\t\t * Re-enables user input on the control.\r\n\t\t */\r\n\t\tunlock: function() {\r\n\t\t\tthis.isLocked = false;\r\n\t\t\tthis.refreshState();\r\n\t\t},\r\n\t\r\n\t\t/**\r\n\t\t * Disables user input on the control completely.\r\n\t\t * While disabled, it cannot receive focus.\r\n\t\t */\r\n\t\tdisable: function() {\r\n\t\t\tvar self = this;\r\n\t\t\tself.$input.prop('disabled', true);\r\n\t\t\tself.$control_input.prop('disabled', true).prop('tabindex', -1);\r\n\t\t\tself.isDisabled = true;\r\n\t\t\tself.lock();\r\n\t\t},\r\n\t\r\n\t\t/**\r\n\t\t * Enables the control so that it can respond\r\n\t\t * to focus and user input.\r\n\t\t */\r\n\t\tenable: function() {\r\n\t\t\tvar self = this;\r\n\t\t\tself.$input.prop('disabled', false);\r\n\t\t\tself.$control_input.prop('disabled', false).prop('tabindex', self.tabIndex);\r\n\t\t\tself.isDisabled = false;\r\n\t\t\tself.unlock();\r\n\t\t},\r\n\t\r\n\t\t/**\r\n\t\t * Completely destroys the control and\r\n\t\t * unbinds all event listeners so that it can\r\n\t\t * be garbage collected.\r\n\t\t */\r\n\t\tdestroy: function() {\r\n\t\t\tvar self = this;\r\n\t\t\tvar eventNS = self.eventNS;\r\n\t\t\tvar revertSettings = self.revertSettings;\r\n\t\r\n\t\t\tself.trigger('destroy');\r\n\t\t\tself.off();\r\n\t\t\tself.$wrapper.remove();\r\n\t\t\tself.$dropdown.remove();\r\n\t\r\n\t\t\tself.$input\r\n\t\t\t\t.html('')\r\n\t\t\t\t.append(revertSettings.$children)\r\n\t\t\t\t.removeAttr('tabindex')\r\n\t\t\t\t.removeClass('selectized')\r\n\t\t\t\t.attr({tabindex: revertSettings.tabindex})\r\n\t\t\t\t.show();\r\n\t\r\n\t\t\tself.$control_input.removeData('grow');\r\n\t\t\tself.$input.removeData('selectize');\r\n\t\r\n\t\t\t$(window).off(eventNS);\r\n\t\t\t$(document).off(eventNS);\r\n\t\t\t$(document.body).off(eventNS);\r\n\t\r\n\t\t\tdelete self.$input[0].selectize;\r\n\t\t},\r\n\t\r\n\t\t/**\r\n\t\t * A helper method for rendering \"item\" and\r\n\t\t * \"option\" templates, given the data.\r\n\t\t *\r\n\t\t * @param {string} templateName\r\n\t\t * @param {object} data\r\n\t\t * @returns {string}\r\n\t\t */\r\n\t\trender: function(templateName, data) {\r\n\t\t\tvar value, id, label;\r\n\t\t\tvar html = '';\r\n\t\t\tvar cache = false;\r\n\t\t\tvar self = this;\r\n\t\t\tvar regex_tag = /^[\\t \\r\\n]*<([a-z][a-z0-9\\-_]*(?:\\:[a-z][a-z0-9\\-_]*)?)/i;\r\n\t\r\n\t\t\tif (templateName === 'option' || templateName === 'item') {\r\n\t\t\t\tvalue = hash_key(data[self.settings.valueField]);\r\n\t\t\t\tcache = !!value;\r\n\t\t\t}\r\n\t\r\n\t\t\t// pull markup from cache if it exists\r\n\t\t\tif (cache) {\r\n\t\t\t\tif (!isset(self.renderCache[templateName])) {\r\n\t\t\t\t\tself.renderCache[templateName] = {};\r\n\t\t\t\t}\r\n\t\t\t\tif (self.renderCache[templateName].hasOwnProperty(value)) {\r\n\t\t\t\t\treturn self.renderCache[templateName][value];\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\r\n\t\t\t// render markup\r\n\t\t\thtml = self.settings.render[templateName].apply(this, [data, escape_html]);\r\n\t\r\n\t\t\t// add mandatory attributes\r\n\t\t\tif (templateName === 'option' || templateName === 'option_create') {\r\n\t\t\t\thtml = html.replace(regex_tag, '<$1 data-selectable');\r\n\t\t\t}\r\n\t\t\tif (templateName === 'optgroup') {\r\n\t\t\t\tid = data[self.settings.optgroupValueField] || '';\r\n\t\t\t\thtml = html.replace(regex_tag, '<$1 data-group=\"' + escape_replace(escape_html(id)) + '\"');\r\n\t\t\t}\r\n\t\t\tif (templateName === 'option' || templateName === 'item') {\r\n\t\t\t\thtml = html.replace(regex_tag, '<$1 data-value=\"' + escape_replace(escape_html(value || '')) + '\"');\r\n\t\t\t}\r\n\t\r\n\t\t\t// update cache\r\n\t\t\tif (cache) {\r\n\t\t\t\tself.renderCache[templateName][value] = html;\r\n\t\t\t}\r\n\t\r\n\t\t\treturn html;\r\n\t\t},\r\n\t\r\n\t\t/**\r\n\t\t * Clears the render cache for a template. If\r\n\t\t * no template is given, clears all render\r\n\t\t * caches.\r\n\t\t *\r\n\t\t * @param {string} templateName\r\n\t\t */\r\n\t\tclearCache: function(templateName) {\r\n\t\t\tvar self = this;\r\n\t\t\tif (typeof templateName === 'undefined') {\r\n\t\t\t\tself.renderCache = {};\r\n\t\t\t} else {\r\n\t\t\t\tdelete self.renderCache[templateName];\r\n\t\t\t}\r\n\t\t},\r\n\t\r\n\t\t/**\r\n\t\t * Determines whether or not to display the\r\n\t\t * create item prompt, given a user input.\r\n\t\t *\r\n\t\t * @param {string} input\r\n\t\t * @return {boolean}\r\n\t\t */\r\n\t\tcanCreate: function(input) {\r\n\t\t\tvar self = this;\r\n\t\t\tif (!self.settings.create) return false;\r\n\t\t\tvar filter = self.settings.createFilter;\r\n\t\t\treturn input.length\r\n\t\t\t\t&& (typeof filter !== 'function' || filter.apply(self, [input]))\r\n\t\t\t\t&& (typeof filter !== 'string' || new RegExp(filter).test(input))\r\n\t\t\t\t&& (!(filter instanceof RegExp) || filter.test(input));\r\n\t\t}\r\n\t\r\n\t});\r\n\t\r\n\t\r\n\tSelectize.count = 0;\r\n\tSelectize.defaults = {\r\n\t\toptions: [],\r\n\t\toptgroups: [],\r\n\t\r\n\t\tplugins: [],\r\n\t\tdelimiter: ',',\r\n\t\tsplitOn: null, // regexp or string for splitting up values from a paste command\r\n\t\tpersist: true,\r\n\t\tdiacritics: true,\r\n\t\tcreate: false,\r\n\t\tcreateOnBlur: false,\r\n\t\tcreateFilter: null,\r\n\t\thighlight: true,\r\n\t\topenOnFocus: true,\r\n\t\tmaxOptions: 1000,\r\n\t\tmaxItems: null,\r\n\t\thideSelected: null,\r\n\t\taddPrecedence: false,\r\n\t\tselectOnTab: false,\r\n\t\tpreload: false,\r\n\t\tallowEmptyOption: false,\r\n\t\tcloseAfterSelect: false,\r\n\t\r\n\t\tscrollDuration: 60,\r\n\t\tloadThrottle: 300,\r\n\t\tloadingClass: 'loading',\r\n\t\r\n\t\tdataAttr: 'data-data',\r\n\t\toptgroupField: 'optgroup',\r\n\t\tvalueField: 'value',\r\n\t\tlabelField: 'text',\r\n\t\toptgroupLabelField: 'label',\r\n\t\toptgroupValueField: 'value',\r\n\t\tlockOptgroupOrder: false,\r\n\t\r\n\t\tsortField: '$order',\r\n\t\tsearchField: ['text'],\r\n\t\tsearchConjunction: 'and',\r\n\t\r\n\t\tmode: null,\r\n\t\twrapperClass: 'selectize-control',\r\n\t\tinputClass: 'selectize-input',\r\n\t\tdropdownClass: 'selectize-dropdown',\r\n\t\tdropdownContentClass: 'selectize-dropdown-content',\r\n\t\r\n\t\tdropdownParent: null,\r\n\t\r\n\t\tcopyClassesToDropdown: true,\r\n\t\r\n\t\t/*\r\n\t\tload : null, // function(query, callback) { ... }\r\n\t\tscore : null, // function(search) { ... }\r\n\t\tonInitialize : null, // function() { ... }\r\n\t\tonChange : null, // function(value) { ... }\r\n\t\tonItemAdd : null, // function(value, $item) { ... }\r\n\t\tonItemRemove : null, // function(value) { ... }\r\n\t\tonClear : null, // function() { ... }\r\n\t\tonOptionAdd : null, // function(value, data) { ... }\r\n\t\tonOptionRemove : null, // function(value) { ... }\r\n\t\tonOptionClear : null, // function() { ... }\r\n\t\tonOptionGroupAdd : null, // function(id, data) { ... }\r\n\t\tonOptionGroupRemove : null, // function(id) { ... }\r\n\t\tonOptionGroupClear : null, // function() { ... }\r\n\t\tonDropdownOpen : null, // function($dropdown) { ... }\r\n\t\tonDropdownClose : null, // function($dropdown) { ... }\r\n\t\tonType : null, // function(str) { ... }\r\n\t\tonDelete : null, // function(values) { ... }\r\n\t\t*/\r\n\t\r\n\t\trender: {\r\n\t\t\t/*\r\n\t\t\titem: null,\r\n\t\t\toptgroup: null,\r\n\t\t\toptgroup_header: null,\r\n\t\t\toption: null,\r\n\t\t\toption_create: null\r\n\t\t\t*/\r\n\t\t}\r\n\t};\r\n\t\r\n\t\r\n\t$.fn.selectize = function(settings_user) {\r\n\t\tvar defaults = $.fn.selectize.defaults;\r\n\t\tvar settings = $.extend({}, defaults, settings_user);\r\n\t\tvar attr_data = settings.dataAttr;\r\n\t\tvar field_label = settings.labelField;\r\n\t\tvar field_value = settings.valueField;\r\n\t\tvar field_optgroup = settings.optgroupField;\r\n\t\tvar field_optgroup_label = settings.optgroupLabelField;\r\n\t\tvar field_optgroup_value = settings.optgroupValueField;\r\n\t\r\n\t\t/**\r\n\t\t * Initializes selectize from a element.\r\n\t\t *\r\n\t\t * @param {object} $input\r\n\t\t * @param {object} settings_element\r\n\r\n\t\t */\r\n\t\tvar init_textbox = function($input, settings_element) {\r\n\t\t\tvar i, n, values, option;\r\n\t\r\n\t\t\tvar data_raw = $input.attr(attr_data);\r\n\t\r\n\t\t\tif (!data_raw) {\r\n\t\t\t\tvar value = $.trim($input.val() || '');\r\n\t\t\t\tif (!settings.allowEmptyOption && !value.length) return;\r\n\t\t\t\tvalues = value.split(settings.delimiter);\r\n\t\t\t\tfor (i = 0, n = values.length; i < n; i++) {\r\n\t\t\t\t\toption = {};\r\n\t\t\t\t\toption[field_label] = values[i];\r\n\t\t\t\t\toption[field_value] = values[i];\r\n\t\t\t\t\tsettings_element.options.push(option);\r\n\t\t\t\t}\r\n\t\t\t\tsettings_element.items = values;\r\n\t\t\t} else {\r\n\t\t\t\tsettings_element.options = JSON.parse(data_raw);\r\n\t\t\t\tfor (i = 0, n = settings_element.options.length; i < n; i++) {\r\n\t\t\t\t\tsettings_element.items.push(settings_element.options[i][field_value]);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t};\r\n\t\r\n\t\t/**\r\n\t\t * Initializes selectize from a '\r\n )[0]\r\n\r\n $ELEMENT.\r\n\r\n // If the value changes, update the hidden input with the correct format.\r\n on('change.' + STATE.id, function() {\r\n P._hidden.value = ELEMENT.value ?\r\n P.get('select', SETTINGS.formatSubmit) :\r\n ''\r\n })\r\n }\r\n\r\n\r\n // Wait for transitions to end before focusing the holder. Otherwise, while\r\n // using the `container` option, the view jumps to the container.\r\n function focusPickerOnceOpened() {\r\n\r\n if (IS_DEFAULT_THEME && supportsTransitions) {\r\n P.$holder.find('.' + CLASSES.frame).one('transitionend', function() {\r\n P.$holder[0].focus()\r\n })\r\n }\r\n else {\r\n P.$holder[0].focus()\r\n }\r\n }\r\n\r\n\r\n function handleFocusToOpenEvent(event) {\r\n\r\n // Stop the event from propagating to the doc.\r\n event.stopPropagation()\r\n\r\n // Add the “target” class.\r\n $ELEMENT.addClass( CLASSES.target )\r\n\r\n // Add the “focused” class to the root.\r\n P.$root.addClass( CLASSES.focused )\r\n\r\n // And then finally open the picker.\r\n P.open()\r\n }\r\n\r\n\r\n // For iOS8.\r\n function handleKeydownEvent( event ) {\r\n\r\n var keycode = event.keyCode,\r\n\r\n // Check if one of the delete keys was pressed.\r\n isKeycodeDelete = /^(8|46)$/.test(keycode)\r\n\r\n // For some reason IE clears the input value on “escape”.\r\n if ( keycode == 27 ) {\r\n P.close( true )\r\n return false\r\n }\r\n\r\n // Check if `space` or `delete` was pressed or the picker is closed with a key movement.\r\n if ( keycode == 32 || isKeycodeDelete || !STATE.open && P.component.key[keycode] ) {\r\n\r\n // Prevent it from moving the page and bubbling to doc.\r\n event.preventDefault()\r\n event.stopPropagation()\r\n\r\n // If `delete` was pressed, clear the values and close the picker.\r\n // Otherwise open the picker.\r\n if ( isKeycodeDelete ) { P.clear().close() }\r\n else { P.open() }\r\n }\r\n }\r\n\r\n\r\n // Return a new picker instance.\r\n return new PickerInstance()\r\n} //PickerConstructor\r\n\r\n\r\n\r\n/**\r\n * The default classes and prefix to use for the HTML classes.\r\n */\r\nPickerConstructor.klasses = function( prefix ) {\r\n prefix = prefix || 'picker'\r\n return {\r\n\r\n picker: prefix,\r\n opened: prefix + '--opened',\r\n focused: prefix + '--focused',\r\n\r\n input: prefix + '__input',\r\n active: prefix + '__input--active',\r\n target: prefix + '__input--target',\r\n\r\n holder: prefix + '__holder',\r\n\r\n frame: prefix + '__frame',\r\n wrap: prefix + '__wrap',\r\n\r\n box: prefix + '__box'\r\n }\r\n} //PickerConstructor.klasses\r\n\r\n\r\n\r\n/**\r\n * Check if the default theme is being used.\r\n */\r\nfunction isUsingDefaultTheme( element ) {\r\n\r\n var theme,\r\n prop = 'position'\r\n\r\n // For IE.\r\n if ( element.currentStyle ) {\r\n theme = element.currentStyle[prop]\r\n }\r\n\r\n // For normal browsers.\r\n else if ( window.getComputedStyle ) {\r\n theme = getComputedStyle( element )[prop]\r\n }\r\n\r\n return theme == 'fixed'\r\n}\r\n\r\n\r\n\r\n/**\r\n * Get the width of the browser’s scrollbar.\r\n * Taken from: https://github.com/VodkaBears/Remodal/blob/master/src/jquery.remodal.js\r\n */\r\nfunction getScrollbarWidth() {\r\n\r\n if ( $html.height() <= $window.height() ) {\r\n return 0\r\n }\r\n\r\n var $outer = $( '
    ' ).\r\n appendTo( 'body' )\r\n\r\n // Get the width without scrollbars.\r\n var widthWithoutScroll = $outer[0].offsetWidth\r\n\r\n // Force adding scrollbars.\r\n $outer.css( 'overflow', 'scroll' )\r\n\r\n // Add the inner div.\r\n var $inner = $( '
    ' ).appendTo( $outer )\r\n\r\n // Get the width with scrollbars.\r\n var widthWithScroll = $inner[0].offsetWidth\r\n\r\n // Remove the divs.\r\n $outer.remove()\r\n\r\n // Return the difference between the widths.\r\n return widthWithoutScroll - widthWithScroll\r\n}\r\n\r\n\r\n\r\n/**\r\n * PickerConstructor helper methods.\r\n */\r\nPickerConstructor._ = {\r\n\r\n /**\r\n * Create a group of nodes. Expects:\r\n * `\r\n {\r\n min: {Integer},\r\n max: {Integer},\r\n i: {Integer},\r\n node: {String},\r\n item: {Function}\r\n }\r\n * `\r\n */\r\n group: function( groupObject ) {\r\n\r\n var\r\n // Scope for the looped object\r\n loopObjectScope,\r\n\r\n // Create the nodes list\r\n nodesList = '',\r\n\r\n // The counter starts from the `min`\r\n counter = PickerConstructor._.trigger( groupObject.min, groupObject )\r\n\r\n\r\n // Loop from the `min` to `max`, incrementing by `i`\r\n for ( ; counter <= PickerConstructor._.trigger( groupObject.max, groupObject, [ counter ] ); counter += groupObject.i ) {\r\n\r\n // Trigger the `item` function within scope of the object\r\n loopObjectScope = PickerConstructor._.trigger( groupObject.item, groupObject, [ counter ] )\r\n\r\n // Splice the subgroup and create nodes out of the sub nodes\r\n nodesList += PickerConstructor._.node(\r\n groupObject.node,\r\n loopObjectScope[ 0 ], // the node\r\n loopObjectScope[ 1 ], // the classes\r\n loopObjectScope[ 2 ] // the attributes\r\n )\r\n }\r\n\r\n // Return the list of nodes\r\n return nodesList\r\n }, //group\r\n\r\n\r\n /**\r\n * Create a dom node string\r\n */\r\n node: function( wrapper, item, klass, attribute ) {\r\n\r\n // If the item is false-y, just return an empty string\r\n if ( !item ) return ''\r\n\r\n // If the item is an array, do a join\r\n item = $.isArray( item ) ? item.join( '' ) : item\r\n\r\n // Check for the class\r\n klass = klass ? ' class=\"' + klass + '\"' : ''\r\n\r\n // Check for any attributes\r\n attribute = attribute ? ' ' + attribute : ''\r\n\r\n // Return the wrapped item\r\n return '<' + wrapper + klass + attribute + '>' + item + ''\r\n }, //node\r\n\r\n\r\n /**\r\n * Lead numbers below 10 with a zero.\r\n */\r\n lead: function( number ) {\r\n return ( number < 10 ? '0': '' ) + number\r\n },\r\n\r\n\r\n /**\r\n * Trigger a function otherwise return the value.\r\n */\r\n trigger: function( callback, scope, args ) {\r\n return typeof callback == 'function' ? callback.apply( scope, args || [] ) : callback\r\n },\r\n\r\n\r\n /**\r\n * If the second character is a digit, length is 2 otherwise 1.\r\n */\r\n digits: function( string ) {\r\n return ( /\\d/ ).test( string[ 1 ] ) ? 2 : 1\r\n },\r\n\r\n\r\n /**\r\n * Tell if something is a date object.\r\n */\r\n isDate: function( value ) {\r\n return {}.toString.call( value ).indexOf( 'Date' ) > -1 && this.isInteger( value.getDate() )\r\n },\r\n\r\n\r\n /**\r\n * Tell if something is an integer.\r\n */\r\n isInteger: function( value ) {\r\n return {}.toString.call( value ).indexOf( 'Number' ) > -1 && value % 1 === 0\r\n },\r\n\r\n\r\n /**\r\n * Create ARIA attribute strings.\r\n */\r\n ariaAttr: ariaAttr\r\n} //PickerConstructor._\r\n\r\n\r\n\r\n/**\r\n * Extend the picker with a component and defaults.\r\n */\r\nPickerConstructor.extend = function( name, Component ) {\r\n\r\n // Extend jQuery.\r\n $.fn[ name ] = function( options, action ) {\r\n\r\n // Grab the component data.\r\n var componentData = this.data( name )\r\n\r\n // If the picker is requested, return the data object.\r\n if ( options == 'picker' ) {\r\n return componentData\r\n }\r\n\r\n // If the component data exists and `options` is a string, carry out the action.\r\n if ( componentData && typeof options == 'string' ) {\r\n return PickerConstructor._.trigger( componentData[ options ], componentData, [ action ] )\r\n }\r\n\r\n // Otherwise go through each matched element and if the component\r\n // doesn’t exist, create a new picker using `this` element\r\n // and merging the defaults and options with a deep copy.\r\n return this.each( function() {\r\n var $this = $( this )\r\n if ( !$this.data( name ) ) {\r\n new PickerConstructor( this, name, Component, options )\r\n }\r\n })\r\n }\r\n\r\n // Set the defaults.\r\n $.fn[ name ].defaults = Component.defaults\r\n} //PickerConstructor.extend\r\n\r\n\r\n\r\nfunction aria(element, attribute, value) {\r\n if ( $.isPlainObject(attribute) ) {\r\n for ( var key in attribute ) {\r\n ariaSet(element, key, attribute[key])\r\n }\r\n }\r\n else {\r\n ariaSet(element, attribute, value)\r\n }\r\n}\r\nfunction ariaSet(element, attribute, value) {\r\n element.setAttribute(\r\n (attribute == 'role' ? '' : 'aria-') + attribute,\r\n value\r\n )\r\n}\r\nfunction ariaAttr(attribute, data) {\r\n if ( !$.isPlainObject(attribute) ) {\r\n attribute = { attribute: data }\r\n }\r\n data = ''\r\n for ( var key in attribute ) {\r\n var attr = (key == 'role' ? '' : 'aria-') + key,\r\n attrVal = attribute[key]\r\n data += attrVal == null ? '' : attr + '=\"' + attribute[key] + '\"'\r\n }\r\n return data\r\n}\r\n\r\n// IE8 bug throws an error for activeElements within iframes.\r\nfunction getActiveElement() {\r\n try {\r\n return document.activeElement\r\n } catch ( err ) { }\r\n}\r\n\r\n\r\n\r\n// Expose the picker constructor.\r\nreturn PickerConstructor\r\n\r\n\r\n}));\r\n\r\n\r\n/*!\r\n * Date picker for pickadate.js v3.5.6\r\n * http://amsul.github.io/pickadate.js/date.htm\r\n */\r\n\r\n(function ( factory ) {\r\n\r\n // AMD.\r\n if ( typeof define == 'function' && define.amd )\r\n define( ['./picker', 'jquery'], factory )\r\n\r\n // Node.js/browserify.\r\n else if ( typeof exports == 'object' )\r\n module.exports = factory( require('./picker.js'), require('jquery') )\r\n\r\n // Browser globals.\r\n else factory( Picker, jQuery )\r\n\r\n}(function( Picker, $ ) {\r\n\r\n\r\n/**\r\n * Globals and constants\r\n */\r\nvar DAYS_IN_WEEK = 7,\r\n WEEKS_IN_CALENDAR = 6,\r\n _ = Picker._\r\n\r\n\r\n\r\n/**\r\n * The date picker constructor\r\n */\r\nfunction DatePicker( picker, settings ) {\r\n\r\n var calendar = this,\r\n element = picker.$node[ 0 ],\r\n elementValue = element.value,\r\n elementDataValue = picker.$node.data( 'value' ),\r\n valueString = elementDataValue || elementValue,\r\n formatString = elementDataValue ? settings.formatSubmit : settings.format,\r\n isRTL = function() {\r\n\r\n return element.currentStyle ?\r\n\r\n // For IE.\r\n element.currentStyle.direction == 'rtl' :\r\n\r\n // For normal browsers.\r\n getComputedStyle( picker.$root[0] ).direction == 'rtl'\r\n }\r\n\r\n calendar.settings = settings\r\n calendar.$node = picker.$node\r\n\r\n // The queue of methods that will be used to build item objects.\r\n calendar.queue = {\r\n min: 'measure create',\r\n max: 'measure create',\r\n now: 'now create',\r\n select: 'parse create validate',\r\n highlight: 'parse navigate create validate',\r\n view: 'parse create validate viewset',\r\n disable: 'deactivate',\r\n enable: 'activate'\r\n }\r\n\r\n // The component's item object.\r\n calendar.item = {}\r\n\r\n calendar.item.clear = null\r\n calendar.item.disable = ( settings.disable || [] ).slice( 0 )\r\n calendar.item.enable = -(function( collectionDisabled ) {\r\n return collectionDisabled[ 0 ] === true ? collectionDisabled.shift() : -1\r\n })( calendar.item.disable )\r\n\r\n calendar.\r\n set( 'min', settings.min ).\r\n set( 'max', settings.max ).\r\n set( 'now' )\r\n\r\n // When there’s a value, set the `select`, which in turn\r\n // also sets the `highlight` and `view`.\r\n if ( valueString ) {\r\n calendar.set( 'select', valueString, {\r\n format: formatString,\r\n defaultValue: true\r\n })\r\n }\r\n\r\n // If there’s no value, default to highlighting “today”.\r\n else {\r\n calendar.\r\n set( 'select', null ).\r\n set( 'highlight', calendar.item.now )\r\n }\r\n\r\n\r\n // The keycode to movement mapping.\r\n calendar.key = {\r\n 40: 7, // Down\r\n 38: -7, // Up\r\n 39: function() { return isRTL() ? -1 : 1 }, // Right\r\n 37: function() { return isRTL() ? 1 : -1 }, // Left\r\n go: function( timeChange ) {\r\n var highlightedObject = calendar.item.highlight,\r\n targetDate = new Date( highlightedObject.year, highlightedObject.month, highlightedObject.date + timeChange )\r\n calendar.set(\r\n 'highlight',\r\n targetDate,\r\n { interval: timeChange }\r\n )\r\n this.render()\r\n }\r\n }\r\n\r\n\r\n // Bind some picker events.\r\n picker.\r\n on( 'render', function() {\r\n picker.$root.find( '.' + settings.klass.selectMonth ).on( 'change', function() {\r\n var value = this.value\r\n if ( value ) {\r\n picker.set( 'highlight', [ picker.get( 'view' ).year, value, picker.get( 'highlight' ).date ] )\r\n picker.$root.find( '.' + settings.klass.selectMonth ).trigger( 'focus' )\r\n }\r\n })\r\n picker.$root.find( '.' + settings.klass.selectYear ).on( 'change', function() {\r\n var value = this.value\r\n if ( value ) {\r\n picker.set( 'highlight', [ value, picker.get( 'view' ).month, picker.get( 'highlight' ).date ] )\r\n picker.$root.find( '.' + settings.klass.selectYear ).trigger( 'focus' )\r\n }\r\n })\r\n }, 1 ).\r\n on( 'open', function() {\r\n var includeToday = ''\r\n if ( calendar.disabled( calendar.get('now') ) ) {\r\n includeToday = ':not(.' + settings.klass.buttonToday + ')'\r\n }\r\n picker.$root.find( 'button' + includeToday + ', select' ).attr( 'disabled', false )\r\n }, 1 ).\r\n on( 'close', function() {\r\n picker.$root.find( 'button, select' ).attr( 'disabled', true )\r\n }, 1 )\r\n\r\n} //DatePicker\r\n\r\n\r\n/**\r\n * Set a datepicker item object.\r\n */\r\nDatePicker.prototype.set = function( type, value, options ) {\r\n\r\n var calendar = this,\r\n calendarItem = calendar.item\r\n\r\n // If the value is `null` just set it immediately.\r\n if ( value === null ) {\r\n if ( type == 'clear' ) type = 'select'\r\n calendarItem[ type ] = value\r\n return calendar\r\n }\r\n\r\n // Otherwise go through the queue of methods, and invoke the functions.\r\n // Update this as the time unit, and set the final value as this item.\r\n // * In the case of `enable`, keep the queue but set `disable` instead.\r\n // And in the case of `flip`, keep the queue but set `enable` instead.\r\n calendarItem[ ( type == 'enable' ? 'disable' : type == 'flip' ? 'enable' : type ) ] = calendar.queue[ type ].split( ' ' ).map( function( method ) {\r\n value = calendar[ method ]( type, value, options )\r\n return value\r\n }).pop()\r\n\r\n // Check if we need to cascade through more updates.\r\n if ( type == 'select' ) {\r\n calendar.set( 'highlight', calendarItem.select, options )\r\n }\r\n else if ( type == 'highlight' ) {\r\n calendar.set( 'view', calendarItem.highlight, options )\r\n }\r\n else if ( type.match( /^(flip|min|max|disable|enable)$/ ) ) {\r\n if ( calendarItem.select && calendar.disabled( calendarItem.select ) ) {\r\n calendar.set( 'select', calendarItem.select, options )\r\n }\r\n if ( calendarItem.highlight && calendar.disabled( calendarItem.highlight ) ) {\r\n calendar.set( 'highlight', calendarItem.highlight, options )\r\n }\r\n }\r\n\r\n return calendar\r\n} //DatePicker.prototype.set\r\n\r\n\r\n/**\r\n * Get a datepicker item object.\r\n */\r\nDatePicker.prototype.get = function( type ) {\r\n return this.item[ type ]\r\n} //DatePicker.prototype.get\r\n\r\n\r\n/**\r\n * Create a picker date object.\r\n */\r\nDatePicker.prototype.create = function( type, value, options ) {\r\n\r\n var isInfiniteValue,\r\n calendar = this\r\n\r\n // If there’s no value, use the type as the value.\r\n value = value === undefined ? type : value\r\n\r\n\r\n // If it’s infinity, update the value.\r\n if ( value == -Infinity || value == Infinity ) {\r\n isInfiniteValue = value\r\n }\r\n\r\n // If it’s an object, use the native date object.\r\n else if ( $.isPlainObject( value ) && _.isInteger( value.pick ) ) {\r\n value = value.obj\r\n }\r\n\r\n // If it’s an array, convert it into a date and make sure\r\n // that it’s a valid date – otherwise default to today.\r\n else if ( $.isArray( value ) ) {\r\n value = new Date( value[ 0 ], value[ 1 ], value[ 2 ] )\r\n value = _.isDate( value ) ? value : calendar.create().obj\r\n }\r\n\r\n // If it’s a number or date object, make a normalized date.\r\n else if ( _.isInteger( value ) || _.isDate( value ) ) {\r\n value = calendar.normalize( new Date( value ), options )\r\n }\r\n\r\n // If it’s a literal true or any other case, set it to now.\r\n else /*if ( value === true )*/ {\r\n value = calendar.now( type, value, options )\r\n }\r\n\r\n // Return the compiled object.\r\n return {\r\n year: isInfiniteValue || value.getFullYear(),\r\n month: isInfiniteValue || value.getMonth(),\r\n date: isInfiniteValue || value.getDate(),\r\n day: isInfiniteValue || value.getDay(),\r\n obj: isInfiniteValue || value,\r\n pick: isInfiniteValue || value.getTime()\r\n }\r\n} //DatePicker.prototype.create\r\n\r\n\r\n/**\r\n * Create a range limit object using an array, date object,\r\n * literal “true”, or integer relative to another time.\r\n */\r\nDatePicker.prototype.createRange = function( from, to ) {\r\n\r\n var calendar = this,\r\n createDate = function( date ) {\r\n if ( date === true || $.isArray( date ) || _.isDate( date ) ) {\r\n return calendar.create( date )\r\n }\r\n return date\r\n }\r\n\r\n // Create objects if possible.\r\n if ( !_.isInteger( from ) ) {\r\n from = createDate( from )\r\n }\r\n if ( !_.isInteger( to ) ) {\r\n to = createDate( to )\r\n }\r\n\r\n // Create relative dates.\r\n if ( _.isInteger( from ) && $.isPlainObject( to ) ) {\r\n from = [ to.year, to.month, to.date + from ];\r\n }\r\n else if ( _.isInteger( to ) && $.isPlainObject( from ) ) {\r\n to = [ from.year, from.month, from.date + to ];\r\n }\r\n\r\n return {\r\n from: createDate( from ),\r\n to: createDate( to )\r\n }\r\n} //DatePicker.prototype.createRange\r\n\r\n\r\n/**\r\n * Check if a date unit falls within a date range object.\r\n */\r\nDatePicker.prototype.withinRange = function( range, dateUnit ) {\r\n range = this.createRange(range.from, range.to)\r\n return dateUnit.pick >= range.from.pick && dateUnit.pick <= range.to.pick\r\n}\r\n\r\n\r\n/**\r\n * Check if two date range objects overlap.\r\n */\r\nDatePicker.prototype.overlapRanges = function( one, two ) {\r\n\r\n var calendar = this\r\n\r\n // Convert the ranges into comparable dates.\r\n one = calendar.createRange( one.from, one.to )\r\n two = calendar.createRange( two.from, two.to )\r\n\r\n return calendar.withinRange( one, two.from ) || calendar.withinRange( one, two.to ) ||\r\n calendar.withinRange( two, one.from ) || calendar.withinRange( two, one.to )\r\n}\r\n\r\n\r\n/**\r\n * Get the date today.\r\n */\r\nDatePicker.prototype.now = function( type, value, options ) {\r\n value = new Date()\r\n if ( options && options.rel ) {\r\n value.setDate( value.getDate() + options.rel )\r\n }\r\n return this.normalize( value, options )\r\n}\r\n\r\n\r\n/**\r\n * Navigate to next/prev month.\r\n */\r\nDatePicker.prototype.navigate = function( type, value, options ) {\r\n\r\n var targetDateObject,\r\n targetYear,\r\n targetMonth,\r\n targetDate,\r\n isTargetArray = $.isArray( value ),\r\n isTargetObject = $.isPlainObject( value ),\r\n viewsetObject = this.item.view/*,\r\n safety = 100*/\r\n\r\n\r\n if ( isTargetArray || isTargetObject ) {\r\n\r\n if ( isTargetObject ) {\r\n targetYear = value.year\r\n targetMonth = value.month\r\n targetDate = value.date\r\n }\r\n else {\r\n targetYear = +value[0]\r\n targetMonth = +value[1]\r\n targetDate = +value[2]\r\n }\r\n\r\n // If we’re navigating months but the view is in a different\r\n // month, navigate to the view’s year and month.\r\n if ( options && options.nav && viewsetObject && viewsetObject.month !== targetMonth ) {\r\n targetYear = viewsetObject.year\r\n targetMonth = viewsetObject.month\r\n }\r\n\r\n // Figure out the expected target year and month.\r\n targetDateObject = new Date( targetYear, targetMonth + ( options && options.nav ? options.nav : 0 ), 1 )\r\n targetYear = targetDateObject.getFullYear()\r\n targetMonth = targetDateObject.getMonth()\r\n\r\n // If the month we’re going to doesn’t have enough days,\r\n // keep decreasing the date until we reach the month’s last date.\r\n while ( /*safety &&*/ new Date( targetYear, targetMonth, targetDate ).getMonth() !== targetMonth ) {\r\n targetDate -= 1\r\n /*safety -= 1\r\n if ( !safety ) {\r\n throw 'Fell into an infinite loop while navigating to ' + new Date( targetYear, targetMonth, targetDate ) + '.'\r\n }*/\r\n }\r\n\r\n value = [ targetYear, targetMonth, targetDate ]\r\n }\r\n\r\n return value\r\n} //DatePicker.prototype.navigate\r\n\r\n\r\n/**\r\n * Normalize a date by setting the hours to midnight.\r\n */\r\nDatePicker.prototype.normalize = function( value/*, options*/ ) {\r\n value.setHours( 0, 0, 0, 0 )\r\n return value\r\n}\r\n\r\n\r\n/**\r\n * Measure the range of dates.\r\n */\r\nDatePicker.prototype.measure = function( type, value/*, options*/ ) {\r\n\r\n var calendar = this\r\n\r\n // If it’s anything false-y, remove the limits.\r\n if ( !value ) {\r\n value = type == 'min' ? -Infinity : Infinity\r\n }\r\n\r\n // If it’s a string, parse it.\r\n else if ( typeof value == 'string' ) {\r\n value = calendar.parse( type, value )\r\n }\r\n\r\n // If it's an integer, get a date relative to today.\r\n else if ( _.isInteger( value ) ) {\r\n value = calendar.now( type, value, { rel: value } )\r\n }\r\n\r\n return value\r\n} ///DatePicker.prototype.measure\r\n\r\n\r\n/**\r\n * Create a viewset object based on navigation.\r\n */\r\nDatePicker.prototype.viewset = function( type, dateObject/*, options*/ ) {\r\n return this.create([ dateObject.year, dateObject.month, 1 ])\r\n}\r\n\r\n\r\n/**\r\n * Validate a date as enabled and shift if needed.\r\n */\r\nDatePicker.prototype.validate = function( type, dateObject, options ) {\r\n\r\n var calendar = this,\r\n\r\n // Keep a reference to the original date.\r\n originalDateObject = dateObject,\r\n\r\n // Make sure we have an interval.\r\n interval = options && options.interval ? options.interval : 1,\r\n\r\n // Check if the calendar enabled dates are inverted.\r\n isFlippedBase = calendar.item.enable === -1,\r\n\r\n // Check if we have any enabled dates after/before now.\r\n hasEnabledBeforeTarget, hasEnabledAfterTarget,\r\n\r\n // The min & max limits.\r\n minLimitObject = calendar.item.min,\r\n maxLimitObject = calendar.item.max,\r\n\r\n // Check if we’ve reached the limit during shifting.\r\n reachedMin, reachedMax,\r\n\r\n // Check if the calendar is inverted and at least one weekday is enabled.\r\n hasEnabledWeekdays = isFlippedBase && calendar.item.disable.filter( function( value ) {\r\n\r\n // If there’s a date, check where it is relative to the target.\r\n if ( $.isArray( value ) ) {\r\n var dateTime = calendar.create( value ).pick\r\n if ( dateTime < dateObject.pick ) hasEnabledBeforeTarget = true\r\n else if ( dateTime > dateObject.pick ) hasEnabledAfterTarget = true\r\n }\r\n\r\n // Return only integers for enabled weekdays.\r\n return _.isInteger( value )\r\n }).length/*,\r\n\r\n safety = 100*/\r\n\r\n\r\n\r\n // Cases to validate for:\r\n // [1] Not inverted and date disabled.\r\n // [2] Inverted and some dates enabled.\r\n // [3] Not inverted and out of range.\r\n //\r\n // Cases to **not** validate for:\r\n // • Navigating months.\r\n // • Not inverted and date enabled.\r\n // • Inverted and all dates disabled.\r\n // • ..and anything else.\r\n if ( !options || (!options.nav && !options.defaultValue) ) if (\r\n /* 1 */ ( !isFlippedBase && calendar.disabled( dateObject ) ) ||\r\n /* 2 */ ( isFlippedBase && calendar.disabled( dateObject ) && ( hasEnabledWeekdays || hasEnabledBeforeTarget || hasEnabledAfterTarget ) ) ||\r\n /* 3 */ ( !isFlippedBase && (dateObject.pick <= minLimitObject.pick || dateObject.pick >= maxLimitObject.pick) )\r\n ) {\r\n\r\n\r\n // When inverted, flip the direction if there aren’t any enabled weekdays\r\n // and there are no enabled dates in the direction of the interval.\r\n if ( isFlippedBase && !hasEnabledWeekdays && ( ( !hasEnabledAfterTarget && interval > 0 ) || ( !hasEnabledBeforeTarget && interval < 0 ) ) ) {\r\n interval *= -1\r\n }\r\n\r\n\r\n // Keep looping until we reach an enabled date.\r\n while ( /*safety &&*/ calendar.disabled( dateObject ) ) {\r\n\r\n /*safety -= 1\r\n if ( !safety ) {\r\n throw 'Fell into an infinite loop while validating ' + dateObject.obj + '.'\r\n }*/\r\n\r\n\r\n // If we’ve looped into the next/prev month with a large interval, return to the original date and flatten the interval.\r\n if ( Math.abs( interval ) > 1 && ( dateObject.month < originalDateObject.month || dateObject.month > originalDateObject.month ) ) {\r\n dateObject = originalDateObject\r\n interval = interval > 0 ? 1 : -1\r\n }\r\n\r\n\r\n // If we’ve reached the min/max limit, reverse the direction, flatten the interval and set it to the limit.\r\n if ( dateObject.pick <= minLimitObject.pick ) {\r\n reachedMin = true\r\n interval = 1\r\n dateObject = calendar.create([\r\n minLimitObject.year,\r\n minLimitObject.month,\r\n minLimitObject.date + (dateObject.pick === minLimitObject.pick ? 0 : -1)\r\n ])\r\n }\r\n else if ( dateObject.pick >= maxLimitObject.pick ) {\r\n reachedMax = true\r\n interval = -1\r\n dateObject = calendar.create([\r\n maxLimitObject.year,\r\n maxLimitObject.month,\r\n maxLimitObject.date + (dateObject.pick === maxLimitObject.pick ? 0 : 1)\r\n ])\r\n }\r\n\r\n\r\n // If we’ve reached both limits, just break out of the loop.\r\n if ( reachedMin && reachedMax ) {\r\n break\r\n }\r\n\r\n\r\n // Finally, create the shifted date using the interval and keep looping.\r\n dateObject = calendar.create([ dateObject.year, dateObject.month, dateObject.date + interval ])\r\n }\r\n\r\n } //endif\r\n\r\n\r\n // Return the date object settled on.\r\n return dateObject\r\n} //DatePicker.prototype.validate\r\n\r\n\r\n/**\r\n * Check if a date is disabled.\r\n */\r\nDatePicker.prototype.disabled = function( dateToVerify ) {\r\n\r\n var\r\n calendar = this,\r\n\r\n // Filter through the disabled dates to check if this is one.\r\n isDisabledMatch = calendar.item.disable.filter( function( dateToDisable ) {\r\n\r\n // If the date is a number, match the weekday with 0index and `firstDay` check.\r\n if ( _.isInteger( dateToDisable ) ) {\r\n return dateToVerify.day === ( calendar.settings.firstDay ? dateToDisable : dateToDisable - 1 ) % 7\r\n }\r\n\r\n // If it’s an array or a native JS date, create and match the exact date.\r\n if ( $.isArray( dateToDisable ) || _.isDate( dateToDisable ) ) {\r\n return dateToVerify.pick === calendar.create( dateToDisable ).pick\r\n }\r\n\r\n // If it’s an object, match a date within the “from” and “to” range.\r\n if ( $.isPlainObject( dateToDisable ) ) {\r\n return calendar.withinRange( dateToDisable, dateToVerify )\r\n }\r\n })\r\n\r\n // If this date matches a disabled date, confirm it’s not inverted.\r\n isDisabledMatch = isDisabledMatch.length && !isDisabledMatch.filter(function( dateToDisable ) {\r\n return $.isArray( dateToDisable ) && dateToDisable[3] == 'inverted' ||\r\n $.isPlainObject( dateToDisable ) && dateToDisable.inverted\r\n }).length\r\n\r\n // Check the calendar “enabled” flag and respectively flip the\r\n // disabled state. Then also check if it’s beyond the min/max limits.\r\n return calendar.item.enable === -1 ? !isDisabledMatch : isDisabledMatch ||\r\n dateToVerify.pick < calendar.item.min.pick ||\r\n dateToVerify.pick > calendar.item.max.pick\r\n\r\n} //DatePicker.prototype.disabled\r\n\r\n\r\n/**\r\n * Parse a string into a usable type.\r\n */\r\nDatePicker.prototype.parse = function( type, value, options ) {\r\n\r\n var calendar = this,\r\n parsingObject = {}\r\n\r\n // If it’s already parsed, we’re good.\r\n if ( !value || typeof value != 'string' ) {\r\n return value\r\n }\r\n\r\n // We need a `.format` to parse the value with.\r\n if ( !( options && options.format ) ) {\r\n options = options || {}\r\n options.format = calendar.settings.format\r\n }\r\n\r\n // Convert the format into an array and then map through it.\r\n calendar.formats.toArray( options.format ).map( function( label ) {\r\n\r\n var\r\n // Grab the formatting label.\r\n formattingLabel = calendar.formats[ label ],\r\n\r\n // The format length is from the formatting label function or the\r\n // label length without the escaping exclamation (!) mark.\r\n formatLength = formattingLabel ? _.trigger( formattingLabel, calendar, [ value, parsingObject ] ) : label.replace( /^!/, '' ).length\r\n\r\n // If there's a format label, split the value up to the format length.\r\n // Then add it to the parsing object with appropriate label.\r\n if ( formattingLabel ) {\r\n parsingObject[ label ] = value.substr( 0, formatLength )\r\n }\r\n\r\n // Update the value as the substring from format length to end.\r\n value = value.substr( formatLength )\r\n })\r\n\r\n // Compensate for month 0index.\r\n return [\r\n parsingObject.yyyy || parsingObject.yy,\r\n +( parsingObject.mm || parsingObject.m ) - 1,\r\n parsingObject.dd || parsingObject.d\r\n ]\r\n} //DatePicker.prototype.parse\r\n\r\n\r\n/**\r\n * Various formats to display the object in.\r\n */\r\nDatePicker.prototype.formats = (function() {\r\n\r\n // Return the length of the first word in a collection.\r\n function getWordLengthFromCollection( string, collection, dateObject ) {\r\n\r\n // Grab the first word from the string.\r\n // Regex pattern from http://stackoverflow.com/q/150033\r\n var word = string.match( /[^\\x00-\\x7F]+|\\w+/ )[ 0 ]\r\n\r\n // If there's no month index, add it to the date object\r\n if ( !dateObject.mm && !dateObject.m ) {\r\n dateObject.m = collection.indexOf( word ) + 1\r\n }\r\n\r\n // Return the length of the word.\r\n return word.length\r\n }\r\n\r\n // Get the length of the first word in a string.\r\n function getFirstWordLength( string ) {\r\n return string.match( /\\w+/ )[ 0 ].length\r\n }\r\n\r\n return {\r\n\r\n d: function( string, dateObject ) {\r\n\r\n // If there's string, then get the digits length.\r\n // Otherwise return the selected date.\r\n return string ? _.digits( string ) : dateObject.date\r\n },\r\n dd: function( string, dateObject ) {\r\n\r\n // If there's a string, then the length is always 2.\r\n // Otherwise return the selected date with a leading zero.\r\n return string ? 2 : _.lead( dateObject.date )\r\n },\r\n ddd: function( string, dateObject ) {\r\n\r\n // If there's a string, then get the length of the first word.\r\n // Otherwise return the short selected weekday.\r\n return string ? getFirstWordLength( string ) : this.settings.weekdaysShort[ dateObject.day ]\r\n },\r\n dddd: function( string, dateObject ) {\r\n\r\n // If there's a string, then get the length of the first word.\r\n // Otherwise return the full selected weekday.\r\n return string ? getFirstWordLength( string ) : this.settings.weekdaysFull[ dateObject.day ]\r\n },\r\n m: function( string, dateObject ) {\r\n\r\n // If there's a string, then get the length of the digits\r\n // Otherwise return the selected month with 0index compensation.\r\n return string ? _.digits( string ) : dateObject.month + 1\r\n },\r\n mm: function( string, dateObject ) {\r\n\r\n // If there's a string, then the length is always 2.\r\n // Otherwise return the selected month with 0index and leading zero.\r\n return string ? 2 : _.lead( dateObject.month + 1 )\r\n },\r\n mmm: function( string, dateObject ) {\r\n\r\n var collection = this.settings.monthsShort\r\n\r\n // If there's a string, get length of the relevant month from the short\r\n // months collection. Otherwise return the selected month from that collection.\r\n return string ? getWordLengthFromCollection( string, collection, dateObject ) : collection[ dateObject.month ]\r\n },\r\n mmmm: function( string, dateObject ) {\r\n\r\n var collection = this.settings.monthsFull\r\n\r\n // If there's a string, get length of the relevant month from the full\r\n // months collection. Otherwise return the selected month from that collection.\r\n return string ? getWordLengthFromCollection( string, collection, dateObject ) : collection[ dateObject.month ]\r\n },\r\n yy: function( string, dateObject ) {\r\n\r\n // If there's a string, then the length is always 2.\r\n // Otherwise return the selected year by slicing out the first 2 digits.\r\n return string ? 2 : ( '' + dateObject.year ).slice( 2 )\r\n },\r\n yyyy: function( string, dateObject ) {\r\n\r\n // If there's a string, then the length is always 4.\r\n // Otherwise return the selected year.\r\n return string ? 4 : dateObject.year\r\n },\r\n\r\n // Create an array by splitting the formatting string passed.\r\n toArray: function( formatString ) { return formatString.split( /(d{1,4}|m{1,4}|y{4}|yy|!.)/g ) },\r\n\r\n // Format an object into a string using the formatting options.\r\n toString: function ( formatString, itemObject ) {\r\n var calendar = this\r\n return calendar.formats.toArray( formatString ).map( function( label ) {\r\n return _.trigger( calendar.formats[ label ], calendar, [ 0, itemObject ] ) || label.replace( /^!/, '' )\r\n }).join( '' )\r\n }\r\n }\r\n})() //DatePicker.prototype.formats\r\n\r\n\r\n\r\n\r\n/**\r\n * Check if two date units are the exact.\r\n */\r\nDatePicker.prototype.isDateExact = function( one, two ) {\r\n\r\n var calendar = this\r\n\r\n // When we’re working with weekdays, do a direct comparison.\r\n if (\r\n ( _.isInteger( one ) && _.isInteger( two ) ) ||\r\n ( typeof one == 'boolean' && typeof two == 'boolean' )\r\n ) {\r\n return one === two\r\n }\r\n\r\n // When we’re working with date representations, compare the “pick” value.\r\n if (\r\n ( _.isDate( one ) || $.isArray( one ) ) &&\r\n ( _.isDate( two ) || $.isArray( two ) )\r\n ) {\r\n return calendar.create( one ).pick === calendar.create( two ).pick\r\n }\r\n\r\n // When we’re working with range objects, compare the “from” and “to”.\r\n if ( $.isPlainObject( one ) && $.isPlainObject( two ) ) {\r\n return calendar.isDateExact( one.from, two.from ) && calendar.isDateExact( one.to, two.to )\r\n }\r\n\r\n return false\r\n}\r\n\r\n\r\n/**\r\n * Check if two date units overlap.\r\n */\r\nDatePicker.prototype.isDateOverlap = function( one, two ) {\r\n\r\n var calendar = this,\r\n firstDay = calendar.settings.firstDay ? 1 : 0\r\n\r\n // When we’re working with a weekday index, compare the days.\r\n if ( _.isInteger( one ) && ( _.isDate( two ) || $.isArray( two ) ) ) {\r\n one = one % 7 + firstDay\r\n return one === calendar.create( two ).day + 1\r\n }\r\n if ( _.isInteger( two ) && ( _.isDate( one ) || $.isArray( one ) ) ) {\r\n two = two % 7 + firstDay\r\n return two === calendar.create( one ).day + 1\r\n }\r\n\r\n // When we’re working with range objects, check if the ranges overlap.\r\n if ( $.isPlainObject( one ) && $.isPlainObject( two ) ) {\r\n return calendar.overlapRanges( one, two )\r\n }\r\n\r\n return false\r\n}\r\n\r\n\r\n/**\r\n * Flip the “enabled” state.\r\n */\r\nDatePicker.prototype.flipEnable = function(val) {\r\n var itemObject = this.item\r\n itemObject.enable = val || (itemObject.enable == -1 ? 1 : -1)\r\n}\r\n\r\n\r\n/**\r\n * Mark a collection of dates as “disabled”.\r\n */\r\nDatePicker.prototype.deactivate = function( type, datesToDisable ) {\r\n\r\n var calendar = this,\r\n disabledItems = calendar.item.disable.slice(0)\r\n\r\n\r\n // If we’re flipping, that’s all we need to do.\r\n if ( datesToDisable == 'flip' ) {\r\n calendar.flipEnable()\r\n }\r\n\r\n else if ( datesToDisable === false ) {\r\n calendar.flipEnable(1)\r\n disabledItems = []\r\n }\r\n\r\n else if ( datesToDisable === true ) {\r\n calendar.flipEnable(-1)\r\n disabledItems = []\r\n }\r\n\r\n // Otherwise go through the dates to disable.\r\n else {\r\n\r\n datesToDisable.map(function( unitToDisable ) {\r\n\r\n var matchFound\r\n\r\n // When we have disabled items, check for matches.\r\n // If something is matched, immediately break out.\r\n for ( var index = 0; index < disabledItems.length; index += 1 ) {\r\n if ( calendar.isDateExact( unitToDisable, disabledItems[index] ) ) {\r\n matchFound = true\r\n break\r\n }\r\n }\r\n\r\n // If nothing was found, add the validated unit to the collection.\r\n if ( !matchFound ) {\r\n if (\r\n _.isInteger( unitToDisable ) ||\r\n _.isDate( unitToDisable ) ||\r\n $.isArray( unitToDisable ) ||\r\n ( $.isPlainObject( unitToDisable ) && unitToDisable.from && unitToDisable.to )\r\n ) {\r\n disabledItems.push( unitToDisable )\r\n }\r\n }\r\n })\r\n }\r\n\r\n // Return the updated collection.\r\n return disabledItems\r\n} //DatePicker.prototype.deactivate\r\n\r\n\r\n/**\r\n * Mark a collection of dates as “enabled”.\r\n */\r\nDatePicker.prototype.activate = function( type, datesToEnable ) {\r\n\r\n var calendar = this,\r\n disabledItems = calendar.item.disable,\r\n disabledItemsCount = disabledItems.length\r\n\r\n // If we’re flipping, that’s all we need to do.\r\n if ( datesToEnable == 'flip' ) {\r\n calendar.flipEnable()\r\n }\r\n\r\n else if ( datesToEnable === true ) {\r\n calendar.flipEnable(1)\r\n disabledItems = []\r\n }\r\n\r\n else if ( datesToEnable === false ) {\r\n calendar.flipEnable(-1)\r\n disabledItems = []\r\n }\r\n\r\n // Otherwise go through the disabled dates.\r\n else {\r\n\r\n datesToEnable.map(function( unitToEnable ) {\r\n\r\n var matchFound,\r\n disabledUnit,\r\n index,\r\n isExactRange\r\n\r\n // Go through the disabled items and try to find a match.\r\n for ( index = 0; index < disabledItemsCount; index += 1 ) {\r\n\r\n disabledUnit = disabledItems[index]\r\n\r\n // When an exact match is found, remove it from the collection.\r\n if ( calendar.isDateExact( disabledUnit, unitToEnable ) ) {\r\n matchFound = disabledItems[index] = null\r\n isExactRange = true\r\n break\r\n }\r\n\r\n // When an overlapped match is found, add the “inverted” state to it.\r\n else if ( calendar.isDateOverlap( disabledUnit, unitToEnable ) ) {\r\n if ( $.isPlainObject( unitToEnable ) ) {\r\n unitToEnable.inverted = true\r\n matchFound = unitToEnable\r\n }\r\n else if ( $.isArray( unitToEnable ) ) {\r\n matchFound = unitToEnable\r\n if ( !matchFound[3] ) matchFound.push( 'inverted' )\r\n }\r\n else if ( _.isDate( unitToEnable ) ) {\r\n matchFound = [ unitToEnable.getFullYear(), unitToEnable.getMonth(), unitToEnable.getDate(), 'inverted' ]\r\n }\r\n break\r\n }\r\n }\r\n\r\n // If a match was found, remove a previous duplicate entry.\r\n if ( matchFound ) for ( index = 0; index < disabledItemsCount; index += 1 ) {\r\n if ( calendar.isDateExact( disabledItems[index], unitToEnable ) ) {\r\n disabledItems[index] = null\r\n break\r\n }\r\n }\r\n\r\n // In the event that we’re dealing with an exact range of dates,\r\n // make sure there are no “inverted” dates because of it.\r\n if ( isExactRange ) for ( index = 0; index < disabledItemsCount; index += 1 ) {\r\n if ( calendar.isDateOverlap( disabledItems[index], unitToEnable ) ) {\r\n disabledItems[index] = null\r\n break\r\n }\r\n }\r\n\r\n // If something is still matched, add it into the collection.\r\n if ( matchFound ) {\r\n disabledItems.push( matchFound )\r\n }\r\n })\r\n }\r\n\r\n // Return the updated collection.\r\n return disabledItems.filter(function( val ) { return val != null })\r\n} //DatePicker.prototype.activate\r\n\r\n\r\n/**\r\n * Create a string for the nodes in the picker.\r\n */\r\nDatePicker.prototype.nodes = function( isOpen ) {\r\n\r\n var\r\n calendar = this,\r\n settings = calendar.settings,\r\n calendarItem = calendar.item,\r\n nowObject = calendarItem.now,\r\n selectedObject = calendarItem.select,\r\n highlightedObject = calendarItem.highlight,\r\n viewsetObject = calendarItem.view,\r\n disabledCollection = calendarItem.disable,\r\n minLimitObject = calendarItem.min,\r\n maxLimitObject = calendarItem.max,\r\n\r\n\r\n // Create the calendar table head using a copy of weekday labels collection.\r\n // * We do a copy so we don't mutate the original array.\r\n tableHead = (function( collection, fullCollection ) {\r\n\r\n // If the first day should be Monday, move Sunday to the end.\r\n if ( settings.firstDay ) {\r\n collection.push( collection.shift() )\r\n fullCollection.push( fullCollection.shift() )\r\n }\r\n\r\n // Create and return the table head group.\r\n return _.node(\r\n 'thead',\r\n _.node(\r\n 'tr',\r\n _.group({\r\n min: 0,\r\n max: DAYS_IN_WEEK - 1,\r\n i: 1,\r\n node: 'th',\r\n item: function( counter ) {\r\n return [\r\n collection[ counter ],\r\n settings.klass.weekdays,\r\n 'scope=col title=\"' + fullCollection[ counter ] + '\"'\r\n ]\r\n }\r\n })\r\n )\r\n ) //endreturn\r\n })( ( settings.showWeekdaysFull ? settings.weekdaysFull : settings.weekdaysShort ).slice( 0 ), settings.weekdaysFull.slice( 0 ) ), //tableHead\r\n\r\n\r\n // Create the nav for next/prev month.\r\n createMonthNav = function( next ) {\r\n\r\n // Otherwise, return the created month tag.\r\n return _.node(\r\n 'div',\r\n ' ',\r\n settings.klass[ 'nav' + ( next ? 'Next' : 'Prev' ) ] + (\r\n\r\n // If the focused month is outside the range, disabled the button.\r\n ( next && viewsetObject.year >= maxLimitObject.year && viewsetObject.month >= maxLimitObject.month ) ||\r\n ( !next && viewsetObject.year <= minLimitObject.year && viewsetObject.month <= minLimitObject.month ) ?\r\n ' ' + settings.klass.navDisabled : ''\r\n ),\r\n 'data-nav=' + ( next || -1 ) + ' ' +\r\n _.ariaAttr({\r\n role: 'button',\r\n controls: calendar.$node[0].id + '_table'\r\n }) + ' ' +\r\n 'title=\"' + (next ? settings.labelMonthNext : settings.labelMonthPrev ) + '\"'\r\n ) //endreturn\r\n }, //createMonthNav\r\n\r\n\r\n // Create the month label.\r\n createMonthLabel = function() {\r\n\r\n var monthsCollection = settings.showMonthsShort ? settings.monthsShort : settings.monthsFull\r\n\r\n // If there are months to select, add a dropdown menu.\r\n if ( settings.selectMonths ) {\r\n\r\n return _.node( 'select',\r\n _.group({\r\n min: 0,\r\n max: 11,\r\n i: 1,\r\n node: 'option',\r\n item: function( loopedMonth ) {\r\n\r\n return [\r\n\r\n // The looped month and no classes.\r\n monthsCollection[ loopedMonth ], 0,\r\n\r\n // Set the value and selected index.\r\n 'value=' + loopedMonth +\r\n ( viewsetObject.month == loopedMonth ? ' selected' : '' ) +\r\n (\r\n (\r\n ( viewsetObject.year == minLimitObject.year && loopedMonth < minLimitObject.month ) ||\r\n ( viewsetObject.year == maxLimitObject.year && loopedMonth > maxLimitObject.month )\r\n ) ?\r\n ' disabled' : ''\r\n )\r\n ]\r\n }\r\n }),\r\n settings.klass.selectMonth,\r\n ( isOpen ? '' : 'disabled' ) + ' ' +\r\n _.ariaAttr({ controls: calendar.$node[0].id + '_table' }) + ' ' +\r\n 'title=\"' + settings.labelMonthSelect + '\"'\r\n )\r\n }\r\n\r\n // If there's a need for a month selector\r\n return _.node( 'div', monthsCollection[ viewsetObject.month ], settings.klass.month )\r\n }, //createMonthLabel\r\n\r\n\r\n // Create the year label.\r\n createYearLabel = function() {\r\n\r\n var focusedYear = viewsetObject.year,\r\n\r\n // If years selector is set to a literal \"true\", set it to 5. Otherwise\r\n // divide in half to get half before and half after focused year.\r\n numberYears = settings.selectYears === true ? 5 : ~~( settings.selectYears / 2 )\r\n\r\n // If there are years to select, add a dropdown menu.\r\n if ( numberYears ) {\r\n\r\n var\r\n minYear = minLimitObject.year,\r\n maxYear = maxLimitObject.year,\r\n lowestYear = focusedYear - numberYears,\r\n highestYear = focusedYear + numberYears\r\n\r\n // If the min year is greater than the lowest year, increase the highest year\r\n // by the difference and set the lowest year to the min year.\r\n if ( minYear > lowestYear ) {\r\n highestYear += minYear - lowestYear\r\n lowestYear = minYear\r\n }\r\n\r\n // If the max year is less than the highest year, decrease the lowest year\r\n // by the lower of the two: available and needed years. Then set the\r\n // highest year to the max year.\r\n if ( maxYear < highestYear ) {\r\n\r\n var availableYears = lowestYear - minYear,\r\n neededYears = highestYear - maxYear\r\n\r\n lowestYear -= availableYears > neededYears ? neededYears : availableYears\r\n highestYear = maxYear\r\n }\r\n\r\n return _.node( 'select',\r\n _.group({\r\n min: lowestYear,\r\n max: highestYear,\r\n i: 1,\r\n node: 'option',\r\n item: function( loopedYear ) {\r\n return [\r\n\r\n // The looped year and no classes.\r\n loopedYear, 0,\r\n\r\n // Set the value and selected index.\r\n 'value=' + loopedYear + ( focusedYear == loopedYear ? ' selected' : '' )\r\n ]\r\n }\r\n }),\r\n settings.klass.selectYear,\r\n ( isOpen ? '' : 'disabled' ) + ' ' + _.ariaAttr({ controls: calendar.$node[0].id + '_table' }) + ' ' +\r\n 'title=\"' + settings.labelYearSelect + '\"'\r\n )\r\n }\r\n\r\n // Otherwise just return the year focused\r\n return _.node( 'div', focusedYear, settings.klass.year )\r\n } //createYearLabel\r\n\r\n\r\n // Create and return the entire calendar.\r\n return _.node(\r\n 'div',\r\n ( settings.selectYears ? createYearLabel() + createMonthLabel() : createMonthLabel() + createYearLabel() ) +\r\n createMonthNav() + createMonthNav( 1 ),\r\n settings.klass.header\r\n ) + _.node(\r\n 'table',\r\n tableHead +\r\n _.node(\r\n 'tbody',\r\n _.group({\r\n min: 0,\r\n max: WEEKS_IN_CALENDAR - 1,\r\n i: 1,\r\n node: 'tr',\r\n item: function( rowCounter ) {\r\n\r\n // If Monday is the first day and the month starts on Sunday, shift the date back a week.\r\n var shiftDateBy = settings.firstDay && calendar.create([ viewsetObject.year, viewsetObject.month, 1 ]).day === 0 ? -7 : 0\r\n\r\n return [\r\n _.group({\r\n min: DAYS_IN_WEEK * rowCounter - viewsetObject.day + shiftDateBy + 1, // Add 1 for weekday 0index\r\n max: function() {\r\n return this.min + DAYS_IN_WEEK - 1\r\n },\r\n i: 1,\r\n node: 'td',\r\n item: function( targetDate ) {\r\n\r\n // Convert the time date from a relative date to a target date.\r\n targetDate = calendar.create([ viewsetObject.year, viewsetObject.month, targetDate + ( settings.firstDay ? 1 : 0 ) ])\r\n\r\n var isSelected = selectedObject && selectedObject.pick == targetDate.pick,\r\n isHighlighted = highlightedObject && highlightedObject.pick == targetDate.pick,\r\n isDisabled = disabledCollection && calendar.disabled( targetDate ) || targetDate.pick < minLimitObject.pick || targetDate.pick > maxLimitObject.pick,\r\n formattedDate = _.trigger( calendar.formats.toString, calendar, [ settings.format, targetDate ] )\r\n\r\n return [\r\n _.node(\r\n 'div',\r\n targetDate.date,\r\n (function( klasses ) {\r\n\r\n // Add the `infocus` or `outfocus` classes based on month in view.\r\n klasses.push( viewsetObject.month == targetDate.month ? settings.klass.infocus : settings.klass.outfocus )\r\n\r\n // Add the `today` class if needed.\r\n if ( nowObject.pick == targetDate.pick ) {\r\n klasses.push( settings.klass.now )\r\n }\r\n\r\n // Add the `selected` class if something's selected and the time matches.\r\n if ( isSelected ) {\r\n klasses.push( settings.klass.selected )\r\n }\r\n\r\n // Add the `highlighted` class if something's highlighted and the time matches.\r\n if ( isHighlighted ) {\r\n klasses.push( settings.klass.highlighted )\r\n }\r\n\r\n // Add the `disabled` class if something's disabled and the object matches.\r\n if ( isDisabled ) {\r\n klasses.push( settings.klass.disabled )\r\n }\r\n\r\n return klasses.join( ' ' )\r\n })([ settings.klass.day ]),\r\n 'data-pick=' + targetDate.pick + ' ' + _.ariaAttr({\r\n role: 'gridcell',\r\n label: formattedDate,\r\n selected: isSelected && calendar.$node.val() === formattedDate ? true : null,\r\n activedescendant: isHighlighted ? true : null,\r\n disabled: isDisabled ? true : null\r\n })\r\n ),\r\n '',\r\n _.ariaAttr({ role: 'presentation' })\r\n ] //endreturn\r\n }\r\n })\r\n ] //endreturn\r\n }\r\n })\r\n ),\r\n settings.klass.table,\r\n 'id=\"' + calendar.$node[0].id + '_table' + '\" ' + _.ariaAttr({\r\n role: 'grid',\r\n controls: calendar.$node[0].id,\r\n readonly: true\r\n })\r\n ) +\r\n\r\n // * For Firefox forms to submit, make sure to set the buttons’ `type` attributes as “button”.\r\n _.node(\r\n 'div',\r\n _.node( 'button', settings.today, settings.klass.buttonToday,\r\n 'type=button data-pick=' + nowObject.pick +\r\n ( isOpen && !calendar.disabled(nowObject) ? '' : ' disabled' ) + ' ' +\r\n _.ariaAttr({ controls: calendar.$node[0].id }) ) +\r\n _.node( 'button', settings.clear, settings.klass.buttonClear,\r\n 'type=button data-clear=1' +\r\n ( isOpen ? '' : ' disabled' ) + ' ' +\r\n _.ariaAttr({ controls: calendar.$node[0].id }) ) +\r\n _.node('button', settings.close, settings.klass.buttonClose,\r\n 'type=button data-close=true ' +\r\n ( isOpen ? '' : ' disabled' ) + ' ' +\r\n _.ariaAttr({ controls: calendar.$node[0].id }) ),\r\n settings.klass.footer\r\n ) //endreturn\r\n} //DatePicker.prototype.nodes\r\n\r\n\r\n\r\n\r\n/**\r\n * The date picker defaults.\r\n */\r\nDatePicker.defaults = (function( prefix ) {\r\n\r\n return {\r\n\r\n // The title label to use for the month nav buttons\r\n labelMonthNext: 'Next month',\r\n labelMonthPrev: 'Previous month',\r\n\r\n // The title label to use for the dropdown selectors\r\n labelMonthSelect: 'Select a month',\r\n labelYearSelect: 'Select a year',\r\n\r\n // Months and weekdays\r\n monthsFull: [ 'January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December' ],\r\n monthsShort: [ 'Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec' ],\r\n weekdaysFull: [ 'Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday' ],\r\n weekdaysShort: [ 'Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat' ],\r\n\r\n // Today and clear\r\n today: 'Today',\r\n clear: 'Clear',\r\n close: 'Close',\r\n\r\n // Picker close behavior\r\n closeOnSelect: true,\r\n closeOnClear: true,\r\n\r\n // The format to show on the `input` element\r\n format: 'd mmmm, yyyy',\r\n\r\n // Classes\r\n klass: {\r\n\r\n table: prefix + 'table',\r\n\r\n header: prefix + 'header',\r\n\r\n navPrev: prefix + 'nav--prev',\r\n navNext: prefix + 'nav--next',\r\n navDisabled: prefix + 'nav--disabled',\r\n\r\n month: prefix + 'month',\r\n year: prefix + 'year',\r\n\r\n selectMonth: prefix + 'select--month',\r\n selectYear: prefix + 'select--year',\r\n\r\n weekdays: prefix + 'weekday',\r\n\r\n day: prefix + 'day',\r\n disabled: prefix + 'day--disabled',\r\n selected: prefix + 'day--selected',\r\n highlighted: prefix + 'day--highlighted',\r\n now: prefix + 'day--today',\r\n infocus: prefix + 'day--infocus',\r\n outfocus: prefix + 'day--outfocus',\r\n\r\n footer: prefix + 'footer',\r\n\r\n buttonClear: prefix + 'button--clear',\r\n buttonToday: prefix + 'button--today',\r\n buttonClose: prefix + 'button--close'\r\n }\r\n }\r\n})( Picker.klasses().picker + '__' )\r\n\r\n\r\n\r\n\r\n\r\n/**\r\n * Extend the picker to add the date picker.\r\n */\r\nPicker.extend( 'pickadate', DatePicker )\r\n\r\n\r\n}));\r\n\r\n\r\n/*!\r\n * Time picker for pickadate.js v3.5.6\r\n * http://amsul.github.io/pickadate.js/time.htm\r\n */\r\n\r\n(function ( factory ) {\r\n\r\n // AMD.\r\n if ( typeof define == 'function' && define.amd )\r\n define( ['./picker', 'jquery'], factory )\r\n\r\n // Node.js/browserify.\r\n else if ( typeof exports == 'object' )\r\n module.exports = factory( require('./picker.js'), require('jquery') )\r\n\r\n // Browser globals.\r\n else factory( Picker, jQuery )\r\n\r\n}(function( Picker, $ ) {\r\n\r\n\r\n/**\r\n * Globals and constants\r\n */\r\nvar HOURS_IN_DAY = 24,\r\n MINUTES_IN_HOUR = 60,\r\n HOURS_TO_NOON = 12,\r\n MINUTES_IN_DAY = HOURS_IN_DAY * MINUTES_IN_HOUR,\r\n _ = Picker._\r\n\r\n\r\n\r\n/**\r\n * The time picker constructor\r\n */\r\nfunction TimePicker( picker, settings ) {\r\n\r\n var clock = this,\r\n elementValue = picker.$node[ 0 ].value,\r\n elementDataValue = picker.$node.data( 'value' ),\r\n valueString = elementDataValue || elementValue,\r\n formatString = elementDataValue ? settings.formatSubmit : settings.format\r\n\r\n clock.settings = settings\r\n clock.$node = picker.$node\r\n\r\n // The queue of methods that will be used to build item objects.\r\n clock.queue = {\r\n interval: 'i',\r\n min: 'measure create',\r\n max: 'measure create',\r\n now: 'now create',\r\n select: 'parse create validate',\r\n highlight: 'parse create validate',\r\n view: 'parse create validate',\r\n disable: 'deactivate',\r\n enable: 'activate'\r\n }\r\n\r\n // The component's item object.\r\n clock.item = {}\r\n\r\n clock.item.clear = null\r\n clock.item.interval = settings.interval || 30\r\n clock.item.disable = ( settings.disable || [] ).slice( 0 )\r\n clock.item.enable = -(function( collectionDisabled ) {\r\n return collectionDisabled[ 0 ] === true ? collectionDisabled.shift() : -1\r\n })( clock.item.disable )\r\n\r\n clock.\r\n set( 'min', settings.min ).\r\n set( 'max', settings.max ).\r\n set( 'now' )\r\n\r\n // When there’s a value, set the `select`, which in turn\r\n // also sets the `highlight` and `view`.\r\n if ( valueString ) {\r\n clock.set( 'select', valueString, {\r\n format: formatString\r\n })\r\n }\r\n\r\n // If there’s no value, default to highlighting “today”.\r\n else {\r\n clock.\r\n set( 'select', null ).\r\n set( 'highlight', clock.item.now )\r\n }\r\n\r\n // The keycode to movement mapping.\r\n clock.key = {\r\n 40: 1, // Down\r\n 38: -1, // Up\r\n 39: 1, // Right\r\n 37: -1, // Left\r\n go: function( timeChange ) {\r\n clock.set(\r\n 'highlight',\r\n clock.item.highlight.pick + timeChange * clock.item.interval,\r\n { interval: timeChange * clock.item.interval }\r\n )\r\n this.render()\r\n }\r\n }\r\n\r\n\r\n // Bind some picker events.\r\n picker.\r\n on( 'render', function() {\r\n var $pickerHolder = picker.$root.children(),\r\n $viewset = $pickerHolder.find( '.' + settings.klass.viewset ),\r\n vendors = function( prop ) {\r\n return ['webkit', 'moz', 'ms', 'o', ''].map(function( vendor ) {\r\n return ( vendor ? '-' + vendor + '-' : '' ) + prop\r\n })\r\n },\r\n animations = function( $el, state ) {\r\n vendors( 'transform' ).map(function( prop ) {\r\n $el.css( prop, state )\r\n })\r\n vendors( 'transition' ).map(function( prop ) {\r\n $el.css( prop, state )\r\n })\r\n }\r\n if ( $viewset.length ) {\r\n animations( $pickerHolder, 'none' )\r\n $pickerHolder[ 0 ].scrollTop = ~~$viewset.position().top - ( $viewset[ 0 ].clientHeight * 2 )\r\n animations( $pickerHolder, '' )\r\n }\r\n }, 1 ).\r\n on( 'open', function() {\r\n picker.$root.find( 'button' ).attr( 'disabled', false )\r\n }, 1 ).\r\n on( 'close', function() {\r\n picker.$root.find( 'button' ).attr( 'disabled', true )\r\n }, 1 )\r\n\r\n} //TimePicker\r\n\r\n\r\n/**\r\n * Set a timepicker item object.\r\n */\r\nTimePicker.prototype.set = function( type, value, options ) {\r\n\r\n var clock = this,\r\n clockItem = clock.item\r\n\r\n // If the value is `null` just set it immediately.\r\n if ( value === null ) {\r\n if ( type == 'clear' ) type = 'select'\r\n clockItem[ type ] = value\r\n return clock\r\n }\r\n\r\n // Otherwise go through the queue of methods, and invoke the functions.\r\n // Update this as the time unit, and set the final value as this item.\r\n // * In the case of `enable`, keep the queue but set `disable` instead.\r\n // And in the case of `flip`, keep the queue but set `enable` instead.\r\n clockItem[ ( type == 'enable' ? 'disable' : type == 'flip' ? 'enable' : type ) ] = clock.queue[ type ].split( ' ' ).map( function( method ) {\r\n value = clock[ method ]( type, value, options )\r\n return value\r\n }).pop()\r\n\r\n // Check if we need to cascade through more updates.\r\n if ( type == 'select' ) {\r\n clock.set( 'highlight', clockItem.select, options )\r\n }\r\n else if ( type == 'highlight' ) {\r\n clock.set( 'view', clockItem.highlight, options )\r\n }\r\n else if ( type == 'interval' ) {\r\n clock.\r\n set( 'min', clockItem.min, options ).\r\n set( 'max', clockItem.max, options )\r\n }\r\n else if ( type.match( /^(flip|min|max|disable|enable)$/ ) ) {\r\n if ( clockItem.select && clock.disabled( clockItem.select ) ) {\r\n clock.set( 'select', value, options )\r\n }\r\n if ( clockItem.highlight && clock.disabled( clockItem.highlight ) ) {\r\n clock.set( 'highlight', value, options )\r\n }\r\n if ( type == 'min' ) {\r\n clock.set( 'max', clockItem.max, options )\r\n }\r\n }\r\n\r\n return clock\r\n} //TimePicker.prototype.set\r\n\r\n\r\n/**\r\n * Get a timepicker item object.\r\n */\r\nTimePicker.prototype.get = function( type ) {\r\n return this.item[ type ]\r\n} //TimePicker.prototype.get\r\n\r\n\r\n/**\r\n * Create a picker time object.\r\n */\r\nTimePicker.prototype.create = function( type, value, options ) {\r\n\r\n var clock = this\r\n\r\n // If there’s no value, use the type as the value.\r\n value = value === undefined ? type : value\r\n\r\n // If it’s a date object, convert it into an array.\r\n if ( _.isDate( value ) ) {\r\n value = [ value.getHours(), value.getMinutes() ]\r\n }\r\n\r\n // If it’s an object, use the “pick” value.\r\n if ( $.isPlainObject( value ) && _.isInteger( value.pick ) ) {\r\n value = value.pick\r\n }\r\n\r\n // If it’s an array, convert it into minutes.\r\n else if ( $.isArray( value ) ) {\r\n value = +value[ 0 ] * MINUTES_IN_HOUR + (+value[ 1 ])\r\n }\r\n\r\n // If no valid value is passed, set it to “now”.\r\n else if ( !_.isInteger( value ) ) {\r\n value = clock.now( type, value, options )\r\n }\r\n\r\n // If we’re setting the max, make sure it’s greater than the min.\r\n if ( type == 'max' && value < clock.item.min.pick ) {\r\n value += MINUTES_IN_DAY\r\n }\r\n\r\n // If the value doesn’t fall directly on the interval,\r\n // add one interval to indicate it as “passed”.\r\n if ( type != 'min' && type != 'max' && (value - clock.item.min.pick) % clock.item.interval !== 0 ) {\r\n value += clock.item.interval\r\n }\r\n\r\n // Normalize it into a “reachable” interval.\r\n value = clock.normalize( type, value, options )\r\n\r\n // Return the compiled object.\r\n return {\r\n\r\n // Divide to get hours from minutes.\r\n hour: ~~( HOURS_IN_DAY + value / MINUTES_IN_HOUR ) % HOURS_IN_DAY,\r\n\r\n // The remainder is the minutes.\r\n mins: ( MINUTES_IN_HOUR + value % MINUTES_IN_HOUR ) % MINUTES_IN_HOUR,\r\n\r\n // The time in total minutes.\r\n time: ( MINUTES_IN_DAY + value ) % MINUTES_IN_DAY,\r\n\r\n // Reference to the “relative” value to pick.\r\n pick: value % MINUTES_IN_DAY\r\n }\r\n} //TimePicker.prototype.create\r\n\r\n\r\n/**\r\n * Create a range limit object using an array, date object,\r\n * literal “true”, or integer relative to another time.\r\n */\r\nTimePicker.prototype.createRange = function( from, to ) {\r\n\r\n var clock = this,\r\n createTime = function( time ) {\r\n if ( time === true || $.isArray( time ) || _.isDate( time ) ) {\r\n return clock.create( time )\r\n }\r\n return time\r\n }\r\n\r\n // Create objects if possible.\r\n if ( !_.isInteger( from ) ) {\r\n from = createTime( from )\r\n }\r\n if ( !_.isInteger( to ) ) {\r\n to = createTime( to )\r\n }\r\n\r\n // Create relative times.\r\n if ( _.isInteger( from ) && $.isPlainObject( to ) ) {\r\n from = [ to.hour, to.mins + ( from * clock.settings.interval ) ];\r\n }\r\n else if ( _.isInteger( to ) && $.isPlainObject( from ) ) {\r\n to = [ from.hour, from.mins + ( to * clock.settings.interval ) ];\r\n }\r\n\r\n return {\r\n from: createTime( from ),\r\n to: createTime( to )\r\n }\r\n} //TimePicker.prototype.createRange\r\n\r\n\r\n/**\r\n * Check if a time unit falls within a time range object.\r\n */\r\nTimePicker.prototype.withinRange = function( range, timeUnit ) {\r\n range = this.createRange(range.from, range.to)\r\n return timeUnit.pick >= range.from.pick && timeUnit.pick <= range.to.pick\r\n}\r\n\r\n\r\n/**\r\n * Check if two time range objects overlap.\r\n */\r\nTimePicker.prototype.overlapRanges = function( one, two ) {\r\n\r\n var clock = this\r\n\r\n // Convert the ranges into comparable times.\r\n one = clock.createRange( one.from, one.to )\r\n two = clock.createRange( two.from, two.to )\r\n\r\n return clock.withinRange( one, two.from ) || clock.withinRange( one, two.to ) ||\r\n clock.withinRange( two, one.from ) || clock.withinRange( two, one.to )\r\n}\r\n\r\n\r\n/**\r\n * Get the time relative to now.\r\n */\r\nTimePicker.prototype.now = function( type, value/*, options*/ ) {\r\n\r\n var interval = this.item.interval,\r\n date = new Date(),\r\n nowMinutes = date.getHours() * MINUTES_IN_HOUR + date.getMinutes(),\r\n isValueInteger = _.isInteger( value ),\r\n isBelowInterval\r\n\r\n // Make sure “now” falls within the interval range.\r\n nowMinutes -= nowMinutes % interval\r\n\r\n // Check if the difference is less than the interval itself.\r\n isBelowInterval = value < 0 && interval * value + nowMinutes <= -interval\r\n\r\n // Add an interval because the time has “passed”.\r\n nowMinutes += type == 'min' && isBelowInterval ? 0 : interval\r\n\r\n // If the value is a number, adjust by that many intervals.\r\n if ( isValueInteger ) {\r\n nowMinutes += interval * (\r\n isBelowInterval && type != 'max' ?\r\n value + 1 :\r\n value\r\n )\r\n }\r\n\r\n // Return the final calculation.\r\n return nowMinutes\r\n} //TimePicker.prototype.now\r\n\r\n\r\n/**\r\n * Normalize minutes to be “reachable” based on the min and interval.\r\n */\r\nTimePicker.prototype.normalize = function( type, value/*, options*/ ) {\r\n\r\n var interval = this.item.interval,\r\n minTime = this.item.min && this.item.min.pick || 0\r\n\r\n // If setting min time, don’t shift anything.\r\n // Otherwise get the value and min difference and then\r\n // normalize the difference with the interval.\r\n value -= type == 'min' ? 0 : ( value - minTime ) % interval\r\n\r\n // Return the adjusted value.\r\n return value\r\n} //TimePicker.prototype.normalize\r\n\r\n\r\n/**\r\n * Measure the range of minutes.\r\n */\r\nTimePicker.prototype.measure = function( type, value, options ) {\r\n\r\n var clock = this\r\n\r\n // If it’s anything false-y, set it to the default.\r\n if ( !value ) {\r\n value = type == 'min' ? [ 0, 0 ] : [ HOURS_IN_DAY - 1, MINUTES_IN_HOUR - 1 ]\r\n }\r\n\r\n // If it’s a string, parse it.\r\n if ( typeof value == 'string' ) {\r\n value = clock.parse( type, value )\r\n }\r\n\r\n // If it’s a literal true, or an integer, make it relative to now.\r\n else if ( value === true || _.isInteger( value ) ) {\r\n value = clock.now( type, value, options )\r\n }\r\n\r\n // If it’s an object already, just normalize it.\r\n else if ( $.isPlainObject( value ) && _.isInteger( value.pick ) ) {\r\n value = clock.normalize( type, value.pick, options )\r\n }\r\n\r\n return value\r\n} ///TimePicker.prototype.measure\r\n\r\n\r\n/**\r\n * Validate an object as enabled.\r\n */\r\nTimePicker.prototype.validate = function( type, timeObject, options ) {\r\n\r\n var clock = this,\r\n interval = options && options.interval ? options.interval : clock.item.interval\r\n\r\n // Check if the object is disabled.\r\n if ( clock.disabled( timeObject ) ) {\r\n\r\n // Shift with the interval until we reach an enabled time.\r\n timeObject = clock.shift( timeObject, interval )\r\n }\r\n\r\n // Scope the object into range.\r\n timeObject = clock.scope( timeObject )\r\n\r\n // Do a second check to see if we landed on a disabled min/max.\r\n // In that case, shift using the opposite interval as before.\r\n if ( clock.disabled( timeObject ) ) {\r\n timeObject = clock.shift( timeObject, interval * -1 )\r\n }\r\n\r\n // Return the final object.\r\n return timeObject\r\n} //TimePicker.prototype.validate\r\n\r\n\r\n/**\r\n * Check if an object is disabled.\r\n */\r\nTimePicker.prototype.disabled = function( timeToVerify ) {\r\n\r\n var clock = this,\r\n\r\n // Filter through the disabled times to check if this is one.\r\n isDisabledMatch = clock.item.disable.filter( function( timeToDisable ) {\r\n\r\n // If the time is a number, match the hours.\r\n if ( _.isInteger( timeToDisable ) ) {\r\n return timeToVerify.hour == timeToDisable\r\n }\r\n\r\n // If it’s an array, create the object and match the times.\r\n if ( $.isArray( timeToDisable ) || _.isDate( timeToDisable ) ) {\r\n return timeToVerify.pick == clock.create( timeToDisable ).pick\r\n }\r\n\r\n // If it’s an object, match a time within the “from” and “to” range.\r\n if ( $.isPlainObject( timeToDisable ) ) {\r\n return clock.withinRange( timeToDisable, timeToVerify )\r\n }\r\n })\r\n\r\n // If this time matches a disabled time, confirm it’s not inverted.\r\n isDisabledMatch = isDisabledMatch.length && !isDisabledMatch.filter(function( timeToDisable ) {\r\n return $.isArray( timeToDisable ) && timeToDisable[2] == 'inverted' ||\r\n $.isPlainObject( timeToDisable ) && timeToDisable.inverted\r\n }).length\r\n\r\n // If the clock is \"enabled\" flag is flipped, flip the condition.\r\n return clock.item.enable === -1 ? !isDisabledMatch : isDisabledMatch ||\r\n timeToVerify.pick < clock.item.min.pick ||\r\n timeToVerify.pick > clock.item.max.pick\r\n} //TimePicker.prototype.disabled\r\n\r\n\r\n/**\r\n * Shift an object by an interval until we reach an enabled object.\r\n */\r\nTimePicker.prototype.shift = function( timeObject, interval ) {\r\n\r\n var clock = this,\r\n minLimit = clock.item.min.pick,\r\n maxLimit = clock.item.max.pick/*,\r\n safety = 1000*/\r\n\r\n interval = interval || clock.item.interval\r\n\r\n // Keep looping as long as the time is disabled.\r\n while ( /*safety &&*/ clock.disabled( timeObject ) ) {\r\n\r\n /*safety -= 1\r\n if ( !safety ) {\r\n throw 'Fell into an infinite loop while shifting to ' + timeObject.hour + ':' + timeObject.mins + '.'\r\n }*/\r\n\r\n // Increase/decrease the time by the interval and keep looping.\r\n timeObject = clock.create( timeObject.pick += interval )\r\n\r\n // If we've looped beyond the limits, break out of the loop.\r\n if ( timeObject.pick <= minLimit || timeObject.pick >= maxLimit ) {\r\n break\r\n }\r\n }\r\n\r\n // Return the final object.\r\n return timeObject\r\n} //TimePicker.prototype.shift\r\n\r\n\r\n/**\r\n * Scope an object to be within range of min and max.\r\n */\r\nTimePicker.prototype.scope = function( timeObject ) {\r\n var minLimit = this.item.min.pick,\r\n maxLimit = this.item.max.pick\r\n return this.create( timeObject.pick > maxLimit ? maxLimit : timeObject.pick < minLimit ? minLimit : timeObject )\r\n} //TimePicker.prototype.scope\r\n\r\n\r\n/**\r\n * Parse a string into a usable type.\r\n */\r\nTimePicker.prototype.parse = function( type, value, options ) {\r\n\r\n var hour, minutes, isPM, item, parseValue,\r\n clock = this,\r\n parsingObject = {}\r\n\r\n // If it’s already parsed, we’re good.\r\n if ( !value || typeof value != 'string' ) {\r\n return value\r\n }\r\n\r\n // We need a `.format` to parse the value with.\r\n if ( !( options && options.format ) ) {\r\n options = options || {}\r\n options.format = clock.settings.format\r\n }\r\n\r\n // Convert the format into an array and then map through it.\r\n clock.formats.toArray( options.format ).map( function( label ) {\r\n\r\n var\r\n substring,\r\n\r\n // Grab the formatting label.\r\n formattingLabel = clock.formats[ label ],\r\n\r\n // The format length is from the formatting label function or the\r\n // label length without the escaping exclamation (!) mark.\r\n formatLength = formattingLabel ?\r\n _.trigger( formattingLabel, clock, [ value, parsingObject ] ) :\r\n label.replace( /^!/, '' ).length\r\n\r\n // If there's a format label, split the value up to the format length.\r\n // Then add it to the parsing object with appropriate label.\r\n if ( formattingLabel ) {\r\n substring = value.substr( 0, formatLength )\r\n parsingObject[ label ] = substring.match(/^\\d+$/) ? +substring : substring\r\n }\r\n\r\n // Update the time value as the substring from format length to end.\r\n value = value.substr( formatLength )\r\n })\r\n\r\n // Grab the hour and minutes from the parsing object.\r\n for ( item in parsingObject ) {\r\n parseValue = parsingObject[item]\r\n if ( _.isInteger(parseValue) ) {\r\n if ( item.match(/^(h|hh)$/i) ) {\r\n hour = parseValue\r\n if ( item == 'h' || item == 'hh' ) {\r\n hour %= 12\r\n }\r\n }\r\n else if ( item == 'i' ) {\r\n minutes = parseValue\r\n }\r\n }\r\n else if ( item.match(/^a$/i) && parseValue.match(/^p/i) && ('h' in parsingObject || 'hh' in parsingObject) ) {\r\n isPM = true\r\n }\r\n }\r\n\r\n // Calculate it in minutes and return.\r\n return (isPM ? hour + 12 : hour) * MINUTES_IN_HOUR + minutes\r\n} //TimePicker.prototype.parse\r\n\r\n\r\n/**\r\n * Various formats to display the object in.\r\n */\r\nTimePicker.prototype.formats = {\r\n\r\n h: function( string, timeObject ) {\r\n\r\n // If there's string, then get the digits length.\r\n // Otherwise return the selected hour in \"standard\" format.\r\n return string ? _.digits( string ) : timeObject.hour % HOURS_TO_NOON || HOURS_TO_NOON\r\n },\r\n hh: function( string, timeObject ) {\r\n\r\n // If there's a string, then the length is always 2.\r\n // Otherwise return the selected hour in \"standard\" format with a leading zero.\r\n return string ? 2 : _.lead( timeObject.hour % HOURS_TO_NOON || HOURS_TO_NOON )\r\n },\r\n H: function( string, timeObject ) {\r\n\r\n // If there's string, then get the digits length.\r\n // Otherwise return the selected hour in \"military\" format as a string.\r\n return string ? _.digits( string ) : '' + ( timeObject.hour % 24 )\r\n },\r\n HH: function( string, timeObject ) {\r\n\r\n // If there's string, then get the digits length.\r\n // Otherwise return the selected hour in \"military\" format with a leading zero.\r\n return string ? _.digits( string ) : _.lead( timeObject.hour % 24 )\r\n },\r\n i: function( string, timeObject ) {\r\n\r\n // If there's a string, then the length is always 2.\r\n // Otherwise return the selected minutes.\r\n return string ? 2 : _.lead( timeObject.mins )\r\n },\r\n a: function( string, timeObject ) {\r\n\r\n // If there's a string, then the length is always 4.\r\n // Otherwise check if it's more than \"noon\" and return either am/pm.\r\n return string ? 4 : MINUTES_IN_DAY / 2 > timeObject.time % MINUTES_IN_DAY ? 'a.m.' : 'p.m.'\r\n },\r\n A: function( string, timeObject ) {\r\n\r\n // If there's a string, then the length is always 2.\r\n // Otherwise check if it's more than \"noon\" and return either am/pm.\r\n return string ? 2 : MINUTES_IN_DAY / 2 > timeObject.time % MINUTES_IN_DAY ? 'AM' : 'PM'\r\n },\r\n\r\n // Create an array by splitting the formatting string passed.\r\n toArray: function( formatString ) { return formatString.split( /(h{1,2}|H{1,2}|i|a|A|!.)/g ) },\r\n\r\n // Format an object into a string using the formatting options.\r\n toString: function ( formatString, itemObject ) {\r\n var clock = this\r\n return clock.formats.toArray( formatString ).map( function( label ) {\r\n return _.trigger( clock.formats[ label ], clock, [ 0, itemObject ] ) || label.replace( /^!/, '' )\r\n }).join( '' )\r\n }\r\n} //TimePicker.prototype.formats\r\n\r\n\r\n\r\n\r\n/**\r\n * Check if two time units are the exact.\r\n */\r\nTimePicker.prototype.isTimeExact = function( one, two ) {\r\n\r\n var clock = this\r\n\r\n // When we’re working with minutes, do a direct comparison.\r\n if (\r\n ( _.isInteger( one ) && _.isInteger( two ) ) ||\r\n ( typeof one == 'boolean' && typeof two == 'boolean' )\r\n ) {\r\n return one === two\r\n }\r\n\r\n // When we’re working with time representations, compare the “pick” value.\r\n if (\r\n ( _.isDate( one ) || $.isArray( one ) ) &&\r\n ( _.isDate( two ) || $.isArray( two ) )\r\n ) {\r\n return clock.create( one ).pick === clock.create( two ).pick\r\n }\r\n\r\n // When we’re working with range objects, compare the “from” and “to”.\r\n if ( $.isPlainObject( one ) && $.isPlainObject( two ) ) {\r\n return clock.isTimeExact( one.from, two.from ) && clock.isTimeExact( one.to, two.to )\r\n }\r\n\r\n return false\r\n}\r\n\r\n\r\n/**\r\n * Check if two time units overlap.\r\n */\r\nTimePicker.prototype.isTimeOverlap = function( one, two ) {\r\n\r\n var clock = this\r\n\r\n // When we’re working with an integer, compare the hours.\r\n if ( _.isInteger( one ) && ( _.isDate( two ) || $.isArray( two ) ) ) {\r\n return one === clock.create( two ).hour\r\n }\r\n if ( _.isInteger( two ) && ( _.isDate( one ) || $.isArray( one ) ) ) {\r\n return two === clock.create( one ).hour\r\n }\r\n\r\n // When we’re working with range objects, check if the ranges overlap.\r\n if ( $.isPlainObject( one ) && $.isPlainObject( two ) ) {\r\n return clock.overlapRanges( one, two )\r\n }\r\n\r\n return false\r\n}\r\n\r\n\r\n/**\r\n * Flip the “enabled” state.\r\n */\r\nTimePicker.prototype.flipEnable = function(val) {\r\n var itemObject = this.item\r\n itemObject.enable = val || (itemObject.enable == -1 ? 1 : -1)\r\n}\r\n\r\n\r\n/**\r\n * Mark a collection of times as “disabled”.\r\n */\r\nTimePicker.prototype.deactivate = function( type, timesToDisable ) {\r\n\r\n var clock = this,\r\n disabledItems = clock.item.disable.slice(0)\r\n\r\n\r\n // If we’re flipping, that’s all we need to do.\r\n if ( timesToDisable == 'flip' ) {\r\n clock.flipEnable()\r\n }\r\n\r\n else if ( timesToDisable === false ) {\r\n clock.flipEnable(1)\r\n disabledItems = []\r\n }\r\n\r\n else if ( timesToDisable === true ) {\r\n clock.flipEnable(-1)\r\n disabledItems = []\r\n }\r\n\r\n // Otherwise go through the times to disable.\r\n else {\r\n\r\n timesToDisable.map(function( unitToDisable ) {\r\n\r\n var matchFound\r\n\r\n // When we have disabled items, check for matches.\r\n // If something is matched, immediately break out.\r\n for ( var index = 0; index < disabledItems.length; index += 1 ) {\r\n if ( clock.isTimeExact( unitToDisable, disabledItems[index] ) ) {\r\n matchFound = true\r\n break\r\n }\r\n }\r\n\r\n // If nothing was found, add the validated unit to the collection.\r\n if ( !matchFound ) {\r\n if (\r\n _.isInteger( unitToDisable ) ||\r\n _.isDate( unitToDisable ) ||\r\n $.isArray( unitToDisable ) ||\r\n ( $.isPlainObject( unitToDisable ) && unitToDisable.from && unitToDisable.to )\r\n ) {\r\n disabledItems.push( unitToDisable )\r\n }\r\n }\r\n })\r\n }\r\n\r\n // Return the updated collection.\r\n return disabledItems\r\n} //TimePicker.prototype.deactivate\r\n\r\n\r\n/**\r\n * Mark a collection of times as “enabled”.\r\n */\r\nTimePicker.prototype.activate = function( type, timesToEnable ) {\r\n\r\n var clock = this,\r\n disabledItems = clock.item.disable,\r\n disabledItemsCount = disabledItems.length\r\n\r\n // If we’re flipping, that’s all we need to do.\r\n if ( timesToEnable == 'flip' ) {\r\n clock.flipEnable()\r\n }\r\n\r\n else if ( timesToEnable === true ) {\r\n clock.flipEnable(1)\r\n disabledItems = []\r\n }\r\n\r\n else if ( timesToEnable === false ) {\r\n clock.flipEnable(-1)\r\n disabledItems = []\r\n }\r\n\r\n // Otherwise go through the disabled times.\r\n else {\r\n\r\n timesToEnable.map(function( unitToEnable ) {\r\n\r\n var matchFound,\r\n disabledUnit,\r\n index,\r\n isRangeMatched\r\n\r\n // Go through the disabled items and try to find a match.\r\n for ( index = 0; index < disabledItemsCount; index += 1 ) {\r\n\r\n disabledUnit = disabledItems[index]\r\n\r\n // When an exact match is found, remove it from the collection.\r\n if ( clock.isTimeExact( disabledUnit, unitToEnable ) ) {\r\n matchFound = disabledItems[index] = null\r\n isRangeMatched = true\r\n break\r\n }\r\n\r\n // When an overlapped match is found, add the “inverted” state to it.\r\n else if ( clock.isTimeOverlap( disabledUnit, unitToEnable ) ) {\r\n if ( $.isPlainObject( unitToEnable ) ) {\r\n unitToEnable.inverted = true\r\n matchFound = unitToEnable\r\n }\r\n else if ( $.isArray( unitToEnable ) ) {\r\n matchFound = unitToEnable\r\n if ( !matchFound[2] ) matchFound.push( 'inverted' )\r\n }\r\n else if ( _.isDate( unitToEnable ) ) {\r\n matchFound = [ unitToEnable.getFullYear(), unitToEnable.getMonth(), unitToEnable.getDate(), 'inverted' ]\r\n }\r\n break\r\n }\r\n }\r\n\r\n // If a match was found, remove a previous duplicate entry.\r\n if ( matchFound ) for ( index = 0; index < disabledItemsCount; index += 1 ) {\r\n if ( clock.isTimeExact( disabledItems[index], unitToEnable ) ) {\r\n disabledItems[index] = null\r\n break\r\n }\r\n }\r\n\r\n // In the event that we’re dealing with an overlap of range times,\r\n // make sure there are no “inverted” times because of it.\r\n if ( isRangeMatched ) for ( index = 0; index < disabledItemsCount; index += 1 ) {\r\n if ( clock.isTimeOverlap( disabledItems[index], unitToEnable ) ) {\r\n disabledItems[index] = null\r\n break\r\n }\r\n }\r\n\r\n // If something is still matched, add it into the collection.\r\n if ( matchFound ) {\r\n disabledItems.push( matchFound )\r\n }\r\n })\r\n }\r\n\r\n // Return the updated collection.\r\n return disabledItems.filter(function( val ) { return val != null })\r\n} //TimePicker.prototype.activate\r\n\r\n\r\n/**\r\n * The division to use for the range intervals.\r\n */\r\nTimePicker.prototype.i = function( type, value/*, options*/ ) {\r\n return _.isInteger( value ) && value > 0 ? value : this.item.interval\r\n}\r\n\r\n\r\n/**\r\n * Create a string for the nodes in the picker.\r\n */\r\nTimePicker.prototype.nodes = function( isOpen ) {\r\n\r\n var\r\n clock = this,\r\n settings = clock.settings,\r\n selectedObject = clock.item.select,\r\n highlightedObject = clock.item.highlight,\r\n viewsetObject = clock.item.view,\r\n disabledCollection = clock.item.disable\r\n\r\n return _.node(\r\n 'ul',\r\n _.group({\r\n min: clock.item.min.pick,\r\n max: clock.item.max.pick,\r\n i: clock.item.interval,\r\n node: 'li',\r\n item: function( loopedTime ) {\r\n loopedTime = clock.create( loopedTime )\r\n var timeMinutes = loopedTime.pick,\r\n isSelected = selectedObject && selectedObject.pick == timeMinutes,\r\n isHighlighted = highlightedObject && highlightedObject.pick == timeMinutes,\r\n isDisabled = disabledCollection && clock.disabled( loopedTime ),\r\n formattedTime = _.trigger( clock.formats.toString, clock, [ settings.format, loopedTime ] )\r\n return [\r\n _.trigger( clock.formats.toString, clock, [ _.trigger( settings.formatLabel, clock, [ loopedTime ] ) || settings.format, loopedTime ] ),\r\n (function( klasses ) {\r\n\r\n if ( isSelected ) {\r\n klasses.push( settings.klass.selected )\r\n }\r\n\r\n if ( isHighlighted ) {\r\n klasses.push( settings.klass.highlighted )\r\n }\r\n\r\n if ( viewsetObject && viewsetObject.pick == timeMinutes ) {\r\n klasses.push( settings.klass.viewset )\r\n }\r\n\r\n if ( isDisabled ) {\r\n klasses.push( settings.klass.disabled )\r\n }\r\n\r\n return klasses.join( ' ' )\r\n })( [ settings.klass.listItem ] ),\r\n 'data-pick=' + loopedTime.pick + ' ' + _.ariaAttr({\r\n role: 'option',\r\n label: formattedTime,\r\n selected: isSelected && clock.$node.val() === formattedTime ? true : null,\r\n activedescendant: isHighlighted ? true : null,\r\n disabled: isDisabled ? true : null\r\n })\r\n ]\r\n }\r\n }) +\r\n\r\n // * For Firefox forms to submit, make sure to set the button’s `type` attribute as “button”.\r\n _.node(\r\n 'li',\r\n _.node(\r\n 'button',\r\n settings.clear,\r\n settings.klass.buttonClear,\r\n 'type=button data-clear=1' + ( isOpen ? '' : ' disabled' ) + ' ' +\r\n _.ariaAttr({ controls: clock.$node[0].id })\r\n ),\r\n '', _.ariaAttr({ role: 'presentation' })\r\n ),\r\n settings.klass.list,\r\n _.ariaAttr({ role: 'listbox', controls: clock.$node[0].id })\r\n )\r\n} //TimePicker.prototype.nodes\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n/**\r\n * Extend the picker to add the component with the defaults.\r\n */\r\nTimePicker.defaults = (function( prefix ) {\r\n\r\n return {\r\n\r\n // Clear\r\n clear: 'Clear',\r\n\r\n // The format to show on the `input` element\r\n format: 'h:i A',\r\n\r\n // The interval between each time\r\n interval: 30,\r\n\r\n // Picker close behavior\r\n closeOnSelect: true,\r\n closeOnClear: true,\r\n\r\n // Classes\r\n klass: {\r\n\r\n picker: prefix + ' ' + prefix + '--time',\r\n holder: prefix + '__holder',\r\n\r\n list: prefix + '__list',\r\n listItem: prefix + '__list-item',\r\n\r\n disabled: prefix + '__list-item--disabled',\r\n selected: prefix + '__list-item--selected',\r\n highlighted: prefix + '__list-item--highlighted',\r\n viewset: prefix + '__list-item--viewset',\r\n now: prefix + '__list-item--now',\r\n\r\n buttonClear: prefix + '__button--clear'\r\n }\r\n }\r\n})( Picker.klasses().picker )\r\n\r\n\r\n\r\n\r\n\r\n/**\r\n * Extend the picker to add the time picker.\r\n */\r\nPicker.extend( 'pickatime', TimePicker )\r\n\r\n\r\n}));\r\n\r\n\r\n\r\n\r\n\r\n\n/* js/datPickerTest.js */\r\n/*\r\n$('.datepicker').pickadate();\r\n$('.datepicker-start').pickadate();\r\n$('.datepicker-end').pickadate();*/\r\n\r\n$('.datepicker:not(.no-time), .datepicker-start:not(.no-time), .datepicker-end:not(.no-time)').datetimepicker({\r\n format: \"yyyy-mm-dd hh:ii:ss\",\r\n autoclose: true,\r\n todayBtn: true,\r\n minuteStep: 10\r\n});\r\n$('.datepicker.no-time, .datepicker-start.no-time, .datepicker-end.no-time').datetimepicker({\r\n format: \"yyyy-mm-dd\",\r\n autoclose: true,\r\n todayBtn: true,\r\n minView:2\r\n});\n/*\r\n * Dropit v1.1.0\r\n * http://dev7studios.com/dropit\r\n *\r\n * Copyright 2012, Dev7studios\r\n * Free to use and abuse under the MIT license.\r\n * http://www.opensource.org/licenses/mit-license.php\r\n */\r\n\r\n;(function($) {\r\n\r\n $.fn.dropit = function(method) {\r\n\r\n var methods = {\r\n\r\n init : function(options) {\r\n this.dropit.settings = $.extend({}, this.dropit.defaults, options);\r\n return this.each(function() {\r\n var $el = $(this),\r\n el = this,\r\n settings = $.fn.dropit.settings;\r\n\r\n // Hide initial submenus\r\n $el.addClass('dropit')\r\n .find('>'+ settings.triggerParentEl +':has('+ settings.submenuEl +')').addClass('dropit-trigger')\r\n .find(settings.submenuEl).addClass('dropit-submenu').hide();\r\n\r\n // Open on click\r\n $el.off(settings.action).on(settings.action, settings.triggerParentEl +':has('+ settings.submenuEl +') > '+ settings.triggerEl +'', function(){\r\n // Close click menu's if clicked again\r\n if(settings.action == 'click' && $(this).parents(settings.triggerParentEl).hasClass('dropit-open')){\r\n settings.beforeHide.call(this);\r\n $(this).parents(settings.triggerParentEl).removeClass('dropit-open').find(settings.submenuEl).hide();\r\n settings.afterHide.call(this);\r\n return false;\r\n }\r\n\r\n // Hide open menus\r\n settings.beforeHide.call(this);\r\n $('.dropit-open').removeClass('dropit-open').find('.dropit-submenu').hide();\r\n settings.afterHide.call(this);\r\n\r\n // Open this menu\r\n settings.beforeShow.call(this);\r\n $(this).parents(settings.triggerParentEl).addClass('dropit-open').find(settings.submenuEl).show();\r\n settings.afterShow.call(this);\r\n\r\n return false;\r\n });\r\n\r\n // Close if outside click\r\n $(document).on('click', function(){\r\n settings.beforeHide.call(this);\r\n $('.dropit-open').removeClass('dropit-open').find('.dropit-submenu').hide();\r\n settings.afterHide.call(this);\r\n });\r\n\r\n // If hover\r\n if(settings.action == 'mouseenter'){\r\n $el.on('mouseleave', '.dropit-open', function(){\r\n settings.beforeHide.call(this);\r\n $(this).removeClass('dropit-open').find(settings.submenuEl).hide();\r\n settings.afterHide.call(this);\r\n });\r\n }\r\n\r\n settings.afterLoad.call(this);\r\n });\r\n }\r\n\r\n };\r\n\r\n if (methods[method]) {\r\n return methods[method].apply(this, Array.prototype.slice.call(arguments, 1));\r\n } else if (typeof method === 'object' || !method) {\r\n return methods.init.apply(this, arguments);\r\n } else {\r\n $.error( 'Method \"' + method + '\" does not exist in dropit plugin!');\r\n }\r\n\r\n };\r\n\r\n $.fn.dropit.defaults = {\r\n action: 'click', // The open action for the trigger\r\n submenuEl: 'ul', // The submenu element\r\n triggerEl: 'a', // The trigger element\r\n triggerParentEl: 'li', // The trigger parent element\r\n afterLoad: function(){}, // Triggers when plugin has loaded\r\n beforeShow: function(){}, // Triggers before submenu is shown\r\n afterShow: function(){}, // Triggers after submenu is shown\r\n beforeHide: function(){}, // Triggers before submenu is hidden\r\n afterHide: function(){} // Triggers before submenu is hidden\r\n };\r\n\r\n $.fn.dropit.settings = {};\r\n\r\n})(jQuery);\r\n\n/*\r\n * jQuery FlexSlider v2.2.2\r\n * Copyright 2012 WooThemes\r\n * Contributing Author: Tyler Smith\r\n */(function(e){e.flexslider=function(t,n){var r=e(t);r.vars=e.extend({},e.flexslider.defaults,n);var i=r.vars.namespace,s=window.navigator&&window.navigator.msPointerEnabled&&window.MSGesture,o=(\"ontouchstart\"in window||s||window.DocumentTouch&&document instanceof DocumentTouch)&&r.vars.touch,u=\"click touchend MSPointerUp\",a=\"\",f,l=r.vars.direction===\"vertical\",c=r.vars.reverse,h=r.vars.itemWidth>0,p=r.vars.animation===\"fade\",d=r.vars.asNavFor!==\"\",v={},m=!0;e.data(t,\"flexslider\",r);v={init:function(){r.animating=!1;r.currentSlide=parseInt(r.vars.startAt?r.vars.startAt:0,10);isNaN(r.currentSlide)&&(r.currentSlide=0);r.animatingTo=r.currentSlide;r.atEnd=r.currentSlide===0||r.currentSlide===r.last;r.containerSelector=r.vars.selector.substr(0,r.vars.selector.search(\" \"));r.slides=e(r.vars.selector,r);r.container=e(r.containerSelector,r);r.count=r.slides.length;r.syncExists=e(r.vars.sync).length>0;r.vars.animation===\"slide\"&&(r.vars.animation=\"swing\");r.prop=l?\"top\":\"marginLeft\";r.args={};r.manualPause=!1;r.stopped=!1;r.started=!1;r.startTimeout=null;r.transitions=!r.vars.video&&!p&&r.vars.useCSS&&function(){var e=document.createElement(\"div\"),t=[\"perspectiveProperty\",\"WebkitPerspective\",\"MozPerspective\",\"OPerspective\",\"msPerspective\"];for(var n in t)if(e.style[t[n]]!==undefined){r.pfx=t[n].replace(\"Perspective\",\"\").toLowerCase();r.prop=\"-\"+r.pfx+\"-transform\";return!0}return!1}();r.vars.controlsContainer!==\"\"&&(r.controlsContainer=e(r.vars.controlsContainer).length>0&&e(r.vars.controlsContainer));r.vars.manualControls!==\"\"&&(r.manualControls=e(r.vars.manualControls).length>0&&e(r.vars.manualControls));if(r.vars.randomize){r.slides.sort(function(){return Math.round(Math.random())-.5});r.container.empty().append(r.slides)}r.doMath();r.setup(\"init\");r.vars.controlNav&&v.controlNav.setup();r.vars.directionNav&&v.directionNav.setup();r.vars.keyboard&&(e(r.containerSelector).length===1||r.vars.multipleKeyboard)&&e(document).bind(\"keyup\",function(e){var t=e.keyCode;if(!r.animating&&(t===39||t===37)){var n=t===39?r.getTarget(\"next\"):t===37?r.getTarget(\"prev\"):!1;r.flexAnimate(n,r.vars.pauseOnAction)}});r.vars.mousewheel&&r.bind(\"mousewheel\",function(e,t,n,i){e.preventDefault();var s=t<0?r.getTarget(\"next\"):r.getTarget(\"prev\");r.flexAnimate(s,r.vars.pauseOnAction)});r.vars.pausePlay&&v.pausePlay.setup();r.vars.slideshow&&r.vars.pauseInvisible&&v.pauseInvisible.init();if(r.vars.slideshow){r.vars.pauseOnHover&&r.hover(function(){!r.manualPlay&&!r.manualPause&&r.pause()},function(){!r.manualPause&&!r.manualPlay&&!r.stopped&&r.play()});if(!r.vars.pauseInvisible||!v.pauseInvisible.isHidden())r.vars.initDelay>0?r.startTimeout=setTimeout(r.play,r.vars.initDelay):r.play()}d&&v.asNav.setup();o&&r.vars.touch&&v.touch();(!p||p&&r.vars.smoothHeight)&&e(window).bind(\"resize orientationchange focus\",v.resize);r.find(\"img\").attr(\"draggable\",\"false\");setTimeout(function(){r.vars.start(r)},200)},asNav:{setup:function(){r.asNav=!0;r.animatingTo=Math.floor(r.currentSlide/r.move);r.currentItem=r.currentSlide;r.slides.removeClass(i+\"active-slide\").eq(r.currentItem).addClass(i+\"active-slide\");if(!s)r.slides.on(u,function(t){t.preventDefault();var n=e(this),s=n.index(),o=n.offset().left-e(r).scrollLeft();if(o<=0&&n.hasClass(i+\"active-slide\"))r.flexAnimate(r.getTarget(\"prev\"),!0);else if(!e(r.vars.asNavFor).data(\"flexslider\").animating&&!n.hasClass(i+\"active-slide\")){r.direction=r.currentItem');if(r.pagingCount>1)for(var f=0;f':\"\"+n+\"\";if(\"thumbnails\"===r.vars.controlNav&&!0===r.vars.thumbCaptions){var l=o.attr(\"data-thumbcaption\");\"\"!=l&&undefined!=l&&(s+=''+l+\"\")}r.controlNavScaffold.append(\"
  • \"+s+\"
  • \");n++}r.controlsContainer?e(r.controlsContainer).append(r.controlNavScaffold):r.append(r.controlNavScaffold);v.controlNav.set();v.controlNav.active();r.controlNavScaffold.delegate(\"a, img\",u,function(t){t.preventDefault();if(a===\"\"||a===t.type){var n=e(this),s=r.controlNav.index(n);if(!n.hasClass(i+\"active\")){r.direction=s>r.currentSlide?\"next\":\"prev\";r.flexAnimate(s,r.vars.pauseOnAction)}}a===\"\"&&(a=t.type);v.setToClearWatchedEvent()})},setupManual:function(){r.controlNav=r.manualControls;v.controlNav.active();r.controlNav.bind(u,function(t){t.preventDefault();if(a===\"\"||a===t.type){var n=e(this),s=r.controlNav.index(n);if(!n.hasClass(i+\"active\")){s>r.currentSlide?r.direction=\"next\":r.direction=\"prev\";r.flexAnimate(s,r.vars.pauseOnAction)}}a===\"\"&&(a=t.type);v.setToClearWatchedEvent()})},set:function(){var t=r.vars.controlNav===\"thumbnails\"?\"img\":\"a\";r.controlNav=e(\".\"+i+\"control-nav li \"+t,r.controlsContainer?r.controlsContainer:r)},active:function(){r.controlNav.removeClass(i+\"active\").eq(r.animatingTo).addClass(i+\"active\")},update:function(t,n){r.pagingCount>1&&t===\"add\"?r.controlNavScaffold.append(e(\"
  • \"+r.count+\"
  • \")):r.pagingCount===1?r.controlNavScaffold.find(\"li\").remove():r.controlNav.eq(n).closest(\"li\").remove();v.controlNav.set();r.pagingCount>1&&r.pagingCount!==r.controlNav.length?r.update(n,t):v.controlNav.active()}},directionNav:{setup:function(){var t=e('\");if(r.controlsContainer){e(r.controlsContainer).append(t);r.directionNav=e(\".\"+i+\"direction-nav li a\",r.controlsContainer)}else{r.append(t);r.directionNav=e(\".\"+i+\"direction-nav li a\",r)}v.directionNav.update();r.directionNav.bind(u,function(t){t.preventDefault();var n;if(a===\"\"||a===t.type){n=e(this).hasClass(i+\"next\")?r.getTarget(\"next\"):r.getTarget(\"prev\");r.flexAnimate(n,r.vars.pauseOnAction)}a===\"\"&&(a=t.type);v.setToClearWatchedEvent()})},update:function(){var e=i+\"disabled\";r.pagingCount===1?r.directionNav.addClass(e).attr(\"tabindex\",\"-1\"):r.vars.animationLoop?r.directionNav.removeClass(e).removeAttr(\"tabindex\"):r.animatingTo===0?r.directionNav.removeClass(e).filter(\".\"+i+\"prev\").addClass(e).attr(\"tabindex\",\"-1\"):r.animatingTo===r.last?r.directionNav.removeClass(e).filter(\".\"+i+\"next\").addClass(e).attr(\"tabindex\",\"-1\"):r.directionNav.removeClass(e).removeAttr(\"tabindex\")}},pausePlay:{setup:function(){var t=e('
    ');if(r.controlsContainer){r.controlsContainer.append(t);r.pausePlay=e(\".\"+i+\"pauseplay a\",r.controlsContainer)}else{r.append(t);r.pausePlay=e(\".\"+i+\"pauseplay a\",r)}v.pausePlay.update(r.vars.slideshow?i+\"pause\":i+\"play\");r.pausePlay.bind(u,function(t){t.preventDefault();if(a===\"\"||a===t.type)if(e(this).hasClass(i+\"pause\")){r.manualPause=!0;r.manualPlay=!1;r.pause()}else{r.manualPause=!1;r.manualPlay=!0;r.play()}a===\"\"&&(a=t.type);v.setToClearWatchedEvent()})},update:function(e){e===\"play\"?r.pausePlay.removeClass(i+\"pause\").addClass(i+\"play\").html(r.vars.playText):r.pausePlay.removeClass(i+\"play\").addClass(i+\"pause\").html(r.vars.pauseText)}},touch:function(){var e,n,i,o,u,a,f=!1,d=0,v=0,m=0;if(!s){t.addEventListener(\"touchstart\",g,!1);function g(s){if(r.animating)s.preventDefault();else if(window.navigator.msPointerEnabled||s.touches.length===1){r.pause();o=l?r.h:r.w;a=Number(new Date);d=s.touches[0].pageX;v=s.touches[0].pageY;i=h&&c&&r.animatingTo===r.last?0:h&&c?r.limit-(r.itemW+r.vars.itemMargin)*r.move*r.animatingTo:h&&r.currentSlide===r.last?r.limit:h?(r.itemW+r.vars.itemMargin)*r.move*r.currentSlide:c?(r.last-r.currentSlide+r.cloneOffset)*o:(r.currentSlide+r.cloneOffset)*o;e=l?v:d;n=l?d:v;t.addEventListener(\"touchmove\",y,!1);t.addEventListener(\"touchend\",b,!1)}}function y(t){d=t.touches[0].pageX;v=t.touches[0].pageY;u=l?e-v:e-d;f=l?Math.abs(u)s){t.preventDefault();if(!p&&r.transitions){r.vars.animationLoop||(u/=r.currentSlide===0&&u<0||r.currentSlide===r.last&&u>0?Math.abs(u)/o+2:1);r.setProps(i+u,\"setTouch\")}}}function b(s){t.removeEventListener(\"touchmove\",y,!1);if(r.animatingTo===r.currentSlide&&!f&&u!==null){var l=c?-u:u,h=l>0?r.getTarget(\"next\"):r.getTarget(\"prev\");r.canAdvance(h)&&(Number(new Date)-a<550&&Math.abs(l)>50||Math.abs(l)>o/2)?r.flexAnimate(h,r.vars.pauseOnAction):p||r.flexAnimate(r.currentSlide,r.vars.pauseOnAction,!0)}t.removeEventListener(\"touchend\",b,!1);e=null;n=null;u=null;i=null}}else{t.style.msTouchAction=\"none\";t._gesture=new MSGesture;t._gesture.target=t;t.addEventListener(\"MSPointerDown\",w,!1);t._slider=r;t.addEventListener(\"MSGestureChange\",E,!1);t.addEventListener(\"MSGestureEnd\",S,!1);function w(e){e.stopPropagation();if(r.animating)e.preventDefault();else{r.pause();t._gesture.addPointer(e.pointerId);m=0;o=l?r.h:r.w;a=Number(new Date);i=h&&c&&r.animatingTo===r.last?0:h&&c?r.limit-(r.itemW+r.vars.itemMargin)*r.move*r.animatingTo:h&&r.currentSlide===r.last?r.limit:h?(r.itemW+r.vars.itemMargin)*r.move*r.currentSlide:c?(r.last-r.currentSlide+r.cloneOffset)*o:(r.currentSlide+r.cloneOffset)*o}}function E(e){e.stopPropagation();var n=e.target._slider;if(!n)return;var r=-e.translationX,s=-e.translationY;m+=l?s:r;u=m;f=l?Math.abs(m)500){e.preventDefault();if(!p&&n.transitions){n.vars.animationLoop||(u=m/(n.currentSlide===0&&m<0||n.currentSlide===n.last&&m>0?Math.abs(m)/o+2:1));n.setProps(i+u,\"setTouch\")}}}function S(t){t.stopPropagation();var r=t.target._slider;if(!r)return;if(r.animatingTo===r.currentSlide&&!f&&u!==null){var s=c?-u:u,l=s>0?r.getTarget(\"next\"):r.getTarget(\"prev\");r.canAdvance(l)&&(Number(new Date)-a<550&&Math.abs(s)>50||Math.abs(s)>o/2)?r.flexAnimate(l,r.vars.pauseOnAction):p||r.flexAnimate(r.currentSlide,r.vars.pauseOnAction,!0)}e=null;n=null;u=null;i=null;m=0}}},resize:function(){if(!r.animating&&r.is(\":visible\")){h||r.doMath();if(p)v.smoothHeight();else if(h){r.slides.width(r.computedW);r.update(r.pagingCount);r.setProps()}else if(l){r.viewport.height(r.h);r.setProps(r.h,\"setTotal\")}else{r.vars.smoothHeight&&v.smoothHeight();r.newSlides.width(r.computedW);r.setProps(r.computedW,\"setTotal\")}}},smoothHeight:function(e){if(!l||p){var t=p?r:r.viewport;e?t.animate({height:r.slides.eq(r.animatingTo).height()},e):t.height(r.slides.eq(r.animatingTo).height())}},sync:function(t){var n=e(r.vars.sync).data(\"flexslider\"),i=r.animatingTo;switch(t){case\"animate\":n.flexAnimate(i,r.vars.pauseOnAction,!1,!0);break;case\"play\":!n.playing&&!n.asNav&&n.play();break;case\"pause\":n.pause()}},uniqueID:function(t){t.find(\"[id]\").each(function(){var t=e(this);t.attr(\"id\",t.attr(\"id\")+\"_clone\")});return t},pauseInvisible:{visProp:null,init:function(){var e=[\"webkit\",\"moz\",\"ms\",\"o\"];if(\"hidden\"in document)return\"hidden\";for(var t=0;t0?setTimeout(r.play,r.vars.initDelay):r.play()})}},isHidden:function(){return document[v.pauseInvisible.visProp]||!1}},setToClearWatchedEvent:function(){clearTimeout(f);f=setTimeout(function(){a=\"\"},3e3)}};r.flexAnimate=function(t,n,s,u,a){!r.vars.animationLoop&&t!==r.currentSlide&&(r.direction=t>r.currentSlide?\"next\":\"prev\");d&&r.pagingCount===1&&(r.direction=r.currentItemr.limit&&r.visible!==1?r.limit:b}else r.currentSlide===0&&t===r.count-1&&r.vars.animationLoop&&r.direction!==\"next\"?y=c?(r.count+r.cloneOffset)*m:0:r.currentSlide===r.last&&t===0&&r.vars.animationLoop&&r.direction!==\"prev\"?y=c?0:(r.count+1)*m:y=c?(r.count-1-t+r.cloneOffset)*m:(t+r.cloneOffset)*m;r.setProps(y,\"\",r.vars.animationSpeed);if(r.transitions){if(!r.vars.animationLoop||!r.atEnd){r.animating=!1;r.currentSlide=r.animatingTo}r.container.unbind(\"webkitTransitionEnd transitionend\");r.container.bind(\"webkitTransitionEnd transitionend\",function(){r.wrapup(m)})}else r.container.animate(r.args,r.vars.animationSpeed,r.vars.easing,function(){r.wrapup(m)})}else if(!o){r.slides.eq(r.currentSlide).css({zIndex:1}).animate({opacity:0},r.vars.animationSpeed,r.vars.easing);r.slides.eq(t).css({zIndex:2}).animate({opacity:1},r.vars.animationSpeed,r.vars.easing,r.wrapup)}else{r.slides.eq(r.currentSlide).css({opacity:0,zIndex:1});r.slides.eq(t).css({opacity:1,zIndex:2});r.wrapup(m)}r.vars.smoothHeight&&v.smoothHeight(r.vars.animationSpeed)}};r.wrapup=function(e){!p&&!h&&(r.currentSlide===0&&r.animatingTo===r.last&&r.vars.animationLoop?r.setProps(e,\"jumpEnd\"):r.currentSlide===r.last&&r.animatingTo===0&&r.vars.animationLoop&&r.setProps(e,\"jumpStart\"));r.animating=!1;r.currentSlide=r.animatingTo;r.vars.after(r)};r.animateSlides=function(){!r.animating&&m&&r.flexAnimate(r.getTarget(\"next\"))};r.pause=function(){clearInterval(r.animatedSlides);r.animatedSlides=null;r.playing=!1;r.vars.pausePlay&&v.pausePlay.update(\"play\");r.syncExists&&v.sync(\"pause\")};r.play=function(){r.playing&&clearInterval(r.animatedSlides);r.animatedSlides=r.animatedSlides||setInterval(r.animateSlides,r.vars.slideshowSpeed);r.started=r.playing=!0;r.vars.pausePlay&&v.pausePlay.update(\"pause\");r.syncExists&&v.sync(\"play\")};r.stop=function(){r.pause();r.stopped=!0};r.canAdvance=function(e,t){var n=d?r.pagingCount-1:r.last;return t?!0:d&&r.currentItem===r.count-1&&e===0&&r.direction===\"prev\"?!0:d&&r.currentItem===0&&e===r.pagingCount-1&&r.direction!==\"next\"?!1:e===r.currentSlide&&!d?!1:r.vars.animationLoop?!0:r.atEnd&&r.currentSlide===0&&e===n&&r.direction!==\"next\"?!1:r.atEnd&&r.currentSlide===n&&e===0&&r.direction===\"next\"?!1:!0};r.getTarget=function(e){r.direction=e;return e===\"next\"?r.currentSlide===r.last?0:r.currentSlide+1:r.currentSlide===0?r.last:r.currentSlide-1};r.setProps=function(e,t,n){var i=function(){var n=e?e:(r.itemW+r.vars.itemMargin)*r.move*r.animatingTo,i=function(){if(h)return t===\"setTouch\"?e:c&&r.animatingTo===r.last?0:c?r.limit-(r.itemW+r.vars.itemMargin)*r.move*r.animatingTo:r.animatingTo===r.last?r.limit:n;switch(t){case\"setTotal\":return c?(r.count-1-r.currentSlide+r.cloneOffset)*e:(r.currentSlide+r.cloneOffset)*e;case\"setTouch\":return c?e:e;case\"jumpEnd\":return c?e:r.count*e;case\"jumpStart\":return c?r.count*e:e;default:return e}}();return i*-1+\"px\"}();if(r.transitions){i=l?\"translate3d(0,\"+i+\",0)\":\"translate3d(\"+i+\",0,0)\";n=n!==undefined?n/1e3+\"s\":\"0s\";r.container.css(\"-\"+r.pfx+\"-transition-duration\",n);r.container.css(\"transition-duration\",n)}r.args[r.prop]=i;(r.transitions||n===undefined)&&r.container.css(r.args);r.container.css(\"transform\",i)};r.setup=function(t){if(!p){var n,s;if(t===\"init\"){r.viewport=e('
    ').css({overflow:\"hidden\",position:\"relative\"}).appendTo(r).append(r.container);r.cloneCount=0;r.cloneOffset=0;if(c){s=e.makeArray(r.slides).reverse();r.slides=e(s);r.container.empty().append(r.slides)}}if(r.vars.animationLoop&&!h){r.cloneCount=2;r.cloneOffset=1;t!==\"init\"&&r.container.find(\".clone\").remove();r.container.append(r.slides.first().clone().addClass(\"clone\").attr(\"aria-hidden\",\"true\")).prepend(r.slides.last().clone().addClass(\"clone\").attr(\"aria-hidden\",\"true\"));v.uniqueID(r.slides.first().clone().addClass(\"clone\")).appendTo(r.container);v.uniqueID(r.slides.last().clone().addClass(\"clone\")).prependTo(r.container)}r.newSlides=e(r.vars.selector,r);n=c?r.count-1-r.currentSlide+r.cloneOffset:r.currentSlide+r.cloneOffset;if(l&&!h){r.container.height((r.count+r.cloneCount)*200+\"%\").css(\"position\",\"absolute\").width(\"100%\");setTimeout(function(){r.newSlides.css({display:\"block\"});r.doMath();r.viewport.height(r.h);r.setProps(n*r.h,\"init\")},t===\"init\"?100:0)}else{r.container.width((r.count+r.cloneCount)*200+\"%\");r.setProps(n*r.computedW,\"init\");setTimeout(function(){r.doMath();r.newSlides.css({width:r.computedW,\"float\":\"left\",display:\"block\"});r.vars.smoothHeight&&v.smoothHeight()},t===\"init\"?100:0)}}else{r.slides.css({width:\"100%\",\"float\":\"left\",marginRight:\"-100%\",position:\"relative\"});t===\"init\"&&(o?r.slides.css({opacity:0,display:\"block\",webkitTransition:\"opacity \"+r.vars.animationSpeed/1e3+\"s ease\",zIndex:1}).eq(r.currentSlide).css({opacity:1,zIndex:2}):r.slides.css({opacity:0,display:\"block\",zIndex:1}).eq(r.currentSlide).css({zIndex:2}).animate({opacity:1},r.vars.animationSpeed,r.vars.easing));r.vars.smoothHeight&&v.smoothHeight()}h||r.slides.removeClass(i+\"active-slide\").eq(r.currentSlide).addClass(i+\"active-slide\");r.vars.init(r)};r.doMath=function(){var e=r.slides.first(),t=r.vars.itemMargin,n=r.vars.minItems,i=r.vars.maxItems;r.w=r.viewport===undefined?r.width():r.viewport.width();r.h=e.height();r.boxPadding=e.outerWidth()-e.width();if(h){r.itemT=r.vars.itemWidth+t;r.minW=n?n*r.itemT:r.w;r.maxW=i?i*r.itemT-t:r.w;r.itemW=r.minW>r.w?(r.w-t*(n-1))/n:r.maxWr.w?r.w:r.vars.itemWidth;r.visible=Math.floor(r.w/r.itemW);r.move=r.vars.move>0&&r.vars.mover.w?r.itemW*(r.count-1)+t*(r.count-1):(r.itemW+t)*r.count-r.w-t}else{r.itemW=r.w;r.pagingCount=r.count;r.last=r.count-1}r.computedW=r.itemW-r.boxPadding};r.update=function(e,t){r.doMath();if(!h){er.controlNav.length)v.controlNav.update(\"add\");else if(t===\"remove\"&&!h||r.pagingCountr.last){r.currentSlide-=1;r.animatingTo-=1}v.controlNav.update(\"remove\",r.last)}r.vars.directionNav&&v.directionNav.update()};r.addSlide=function(t,n){var i=e(t);r.count+=1;r.last=r.count-1;l&&c?n!==undefined?r.slides.eq(r.count-n).after(i):r.container.prepend(i):n!==undefined?r.slides.eq(n).before(i):r.container.append(i);r.update(n,\"add\");r.slides=e(r.vars.selector+\":not(.clone)\",r);r.setup();r.vars.added(r)};r.removeSlide=function(t){var n=isNaN(t)?r.slides.index(e(t)):t;r.count-=1;r.last=r.count-1;isNaN(t)?e(t,r.slides).remove():l&&c?r.slides.eq(r.last).remove():r.slides.eq(t).remove();r.doMath();r.update(n,\"remove\");r.slides=e(r.vars.selector+\":not(.clone)\",r);r.setup();r.vars.removed(r)};v.init()};e(window).blur(function(e){focused=!1}).focus(function(e){focused=!0});e.flexslider.defaults={namespace:\"flex-\",selector:\".slides > li\",animation:\"fade\",easing:\"swing\",direction:\"horizontal\",reverse:!1,animationLoop:!0,smoothHeight:!1,startAt:0,slideshow:!0,slideshowSpeed:7e3,animationSpeed:600,initDelay:0,randomize:!1,thumbCaptions:!1,pauseOnAction:!0,pauseOnHover:!1,pauseInvisible:!0,useCSS:!0,touch:!0,video:!1,controlNav:!0,directionNav:!0,prevText:\"Previous\",nextText:\"Next\",keyboard:!0,multipleKeyboard:!1,mousewheel:!1,pausePlay:!1,pauseText:\"Pause\",playText:\"Play\",controlsContainer:\"\",manualControls:\"\",sync:\"\",asNavFor:\"\",itemWidth:0,itemMargin:0,minItems:1,maxItems:0,move:0,allowOneSlide:!0,start:function(){},before:function(){},after:function(){},end:function(){},added:function(){},removed:function(){},init:function(){}};e.fn.flexslider=function(t){t===undefined&&(t={});if(typeof t==\"object\")return this.each(function(){var n=e(this),r=t.selector?t.selector:\".slides > li\",i=n.find(r);if(i.length===1&&t.allowOneSlide===!0||i.length===0){i.fadeIn(400);t.start&&t.start(n)}else n.data(\"flexslider\")===undefined&&new e.flexslider(this,t)});var n=e(this).data(\"flexslider\");switch(t){case\"play\":n.play();break;case\"pause\":n.pause();break;case\"stop\":n.stop();break;case\"next\":n.flexAnimate(n.getTarget(\"next\"),!0);break;case\"prev\":case\"previous\":n.flexAnimate(n.getTarget(\"prev\"),!0);break;default:typeof t==\"number\"&&n.flexAnimate(t,!0)}}})(jQuery);(function(e){e.flexslider=function(t,n){var r=e(t);r.vars=e.extend({},e.flexslider.defaults,n);var i=r.vars.namespace,s=window.navigator&&window.navigator.msPointerEnabled&&window.MSGesture,o=(\"ontouchstart\"in window||s||window.DocumentTouch&&document instanceof DocumentTouch)&&r.vars.touch,u=\"click touchend MSPointerUp\",a=\"\",f,l=r.vars.direction===\"vertical\",c=r.vars.reverse,h=r.vars.itemWidth>0,p=r.vars.animation===\"fade\",d=r.vars.asNavFor!==\"\",v={},m=!0;e.data(t,\"flexslider\",r);v={init:function(){r.animating=!1;r.currentSlide=parseInt(r.vars.startAt?r.vars.startAt:0,10);isNaN(r.currentSlide)&&(r.currentSlide=0);r.animatingTo=r.currentSlide;r.atEnd=r.currentSlide===0||r.currentSlide===r.last;r.containerSelector=r.vars.selector.substr(0,r.vars.selector.search(\" \"));r.slides=e(r.vars.selector,r);r.container=e(r.containerSelector,r);r.count=r.slides.length;r.syncExists=e(r.vars.sync).length>0;r.vars.animation===\"slide\"&&(r.vars.animation=\"swing\");r.prop=l?\"top\":\"marginLeft\";r.args={};r.manualPause=!1;r.stopped=!1;r.started=!1;r.startTimeout=null;r.transitions=!r.vars.video&&!p&&r.vars.useCSS&&function(){var e=document.createElement(\"div\"),t=[\"perspectiveProperty\",\"WebkitPerspective\",\"MozPerspective\",\"OPerspective\",\"msPerspective\"];for(var n in t)if(e.style[t[n]]!==undefined){r.pfx=t[n].replace(\"Perspective\",\"\").toLowerCase();r.prop=\"-\"+r.pfx+\"-transform\";return!0}return!1}();r.vars.controlsContainer!==\"\"&&(r.controlsContainer=e(r.vars.controlsContainer).length>0&&e(r.vars.controlsContainer));r.vars.manualControls!==\"\"&&(r.manualControls=e(r.vars.manualControls).length>0&&e(r.vars.manualControls));if(r.vars.randomize){r.slides.sort(function(){return Math.round(Math.random())-.5});r.container.empty().append(r.slides)}r.doMath();r.setup(\"init\");r.vars.controlNav&&v.controlNav.setup();r.vars.directionNav&&v.directionNav.setup();r.vars.keyboard&&(e(r.containerSelector).length===1||r.vars.multipleKeyboard)&&e(document).bind(\"keyup\",function(e){var t=e.keyCode;if(!r.animating&&(t===39||t===37)){var n=t===39?r.getTarget(\"next\"):t===37?r.getTarget(\"prev\"):!1;r.flexAnimate(n,r.vars.pauseOnAction)}});r.vars.mousewheel&&r.bind(\"mousewheel\",function(e,t,n,i){e.preventDefault();var s=t<0?r.getTarget(\"next\"):r.getTarget(\"prev\");r.flexAnimate(s,r.vars.pauseOnAction)});r.vars.pausePlay&&v.pausePlay.setup();r.vars.slideshow&&r.vars.pauseInvisible&&v.pauseInvisible.init();if(r.vars.slideshow){r.vars.pauseOnHover&&r.hover(function(){!r.manualPlay&&!r.manualPause&&r.pause()},function(){!r.manualPause&&!r.manualPlay&&!r.stopped&&r.play()});if(!r.vars.pauseInvisible||!v.pauseInvisible.isHidden())r.vars.initDelay>0?r.startTimeout=setTimeout(r.play,r.vars.initDelay):r.play()}d&&v.asNav.setup();o&&r.vars.touch&&v.touch();(!p||p&&r.vars.smoothHeight)&&e(window).bind(\"resize orientationchange focus\",v.resize);r.find(\"img\").attr(\"draggable\",\"false\");setTimeout(function(){r.vars.start(r)},200)},asNav:{setup:function(){r.asNav=!0;r.animatingTo=Math.floor(r.currentSlide/r.move);r.currentItem=r.currentSlide;r.slides.removeClass(i+\"active-slide\").eq(r.currentItem).addClass(i+\"active-slide\");if(!s)r.slides.on(u,function(t){t.preventDefault();var n=e(this),s=n.index(),o=n.offset().left-e(r).scrollLeft();if(o<=0&&n.hasClass(i+\"active-slide\"))r.flexAnimate(r.getTarget(\"prev\"),!0);else if(!e(r.vars.asNavFor).data(\"flexslider\").animating&&!n.hasClass(i+\"active-slide\")){r.direction=r.currentItem');if(r.pagingCount>1)for(var f=0;f':\"\"+n+\"\";if(\"thumbnails\"===r.vars.controlNav&&!0===r.vars.thumbCaptions){var l=o.attr(\"data-thumbcaption\");\"\"!=l&&undefined!=l&&(s+=''+l+\"\")}r.controlNavScaffold.append(\"
  • \"+s+\"
  • \");n++}r.controlsContainer?e(r.controlsContainer).append(r.controlNavScaffold):r.append(r.controlNavScaffold);v.controlNav.set();v.controlNav.active();r.controlNavScaffold.delegate(\"a, img\",u,function(t){t.preventDefault();if(a===\"\"||a===t.type){var n=e(this),s=r.controlNav.index(n);if(!n.hasClass(i+\"active\")){r.direction=s>r.currentSlide?\"next\":\"prev\";r.flexAnimate(s,r.vars.pauseOnAction)}}a===\"\"&&(a=t.type);v.setToClearWatchedEvent()})},setupManual:function(){r.controlNav=r.manualControls;v.controlNav.active();r.controlNav.bind(u,function(t){t.preventDefault();if(a===\"\"||a===t.type){var n=e(this),s=r.controlNav.index(n);if(!n.hasClass(i+\"active\")){s>r.currentSlide?r.direction=\"next\":r.direction=\"prev\";r.flexAnimate(s,r.vars.pauseOnAction)}}a===\"\"&&(a=t.type);v.setToClearWatchedEvent()})},set:function(){var t=r.vars.controlNav===\"thumbnails\"?\"img\":\"a\";r.controlNav=e(\".\"+i+\"control-nav li \"+t,r.controlsContainer?r.controlsContainer:r)},active:function(){r.controlNav.removeClass(i+\"active\").eq(r.animatingTo).addClass(i+\"active\")},update:function(t,n){r.pagingCount>1&&t===\"add\"?r.controlNavScaffold.append(e(\"
  • \"+r.count+\"
  • \")):r.pagingCount===1?r.controlNavScaffold.find(\"li\").remove():r.controlNav.eq(n).closest(\"li\").remove();v.controlNav.set();r.pagingCount>1&&r.pagingCount!==r.controlNav.length?r.update(n,t):v.controlNav.active()}},directionNav:{setup:function(){var t=e('\");if(r.controlsContainer){e(r.controlsContainer).append(t);r.directionNav=e(\".\"+i+\"direction-nav li a\",r.controlsContainer)}else{r.append(t);r.directionNav=e(\".\"+i+\"direction-nav li a\",r)}v.directionNav.update();r.directionNav.bind(u,function(t){t.preventDefault();var n;if(a===\"\"||a===t.type){n=e(this).hasClass(i+\"next\")?r.getTarget(\"next\"):r.getTarget(\"prev\");r.flexAnimate(n,r.vars.pauseOnAction)}a===\"\"&&(a=t.type);v.setToClearWatchedEvent()})},update:function(){var e=i+\"disabled\";r.pagingCount===1?r.directionNav.addClass(e).attr(\"tabindex\",\"-1\"):r.vars.animationLoop?r.directionNav.removeClass(e).removeAttr(\"tabindex\"):r.animatingTo===0?r.directionNav.removeClass(e).filter(\".\"+i+\"prev\").addClass(e).attr(\"tabindex\",\"-1\"):r.animatingTo===r.last?r.directionNav.removeClass(e).filter(\".\"+i+\"next\").addClass(e).attr(\"tabindex\",\"-1\"):r.directionNav.removeClass(e).removeAttr(\"tabindex\")}},pausePlay:{setup:function(){var t=e('
    ');if(r.controlsContainer){r.controlsContainer.append(t);r.pausePlay=e(\".\"+i+\"pauseplay a\",r.controlsContainer)}else{r.append(t);r.pausePlay=e(\".\"+i+\"pauseplay a\",r)}v.pausePlay.update(r.vars.slideshow?i+\"pause\":i+\"play\");r.pausePlay.bind(u,function(t){t.preventDefault();if(a===\"\"||a===t.type)if(e(this).hasClass(i+\"pause\")){r.manualPause=!0;r.manualPlay=!1;r.pause()}else{r.manualPause=!1;r.manualPlay=!0;r.play()}a===\"\"&&(a=t.type);v.setToClearWatchedEvent()})},update:function(e){e===\"play\"?r.pausePlay.removeClass(i+\"pause\").addClass(i+\"play\").html(r.vars.playText):r.pausePlay.removeClass(i+\"play\").addClass(i+\"pause\").html(r.vars.pauseText)}},touch:function(){var e,n,i,o,u,a,f=!1,d=0,v=0,m=0;if(!s){t.addEventListener(\"touchstart\",g,!1);function g(s){if(r.animating)s.preventDefault();else if(window.navigator.msPointerEnabled||s.touches.length===1){r.pause();o=l?r.h:r.w;a=Number(new Date);d=s.touches[0].pageX;v=s.touches[0].pageY;i=h&&c&&r.animatingTo===r.last?0:h&&c?r.limit-(r.itemW+r.vars.itemMargin)*r.move*r.animatingTo:h&&r.currentSlide===r.last?r.limit:h?(r.itemW+r.vars.itemMargin)*r.move*r.currentSlide:c?(r.last-r.currentSlide+r.cloneOffset)*o:(r.currentSlide+r.cloneOffset)*o;e=l?v:d;n=l?d:v;t.addEventListener(\"touchmove\",y,!1);t.addEventListener(\"touchend\",b,!1)}}function y(t){d=t.touches[0].pageX;v=t.touches[0].pageY;u=l?e-v:e-d;f=l?Math.abs(u)s){t.preventDefault();if(!p&&r.transitions){r.vars.animationLoop||(u/=r.currentSlide===0&&u<0||r.currentSlide===r.last&&u>0?Math.abs(u)/o+2:1);r.setProps(i+u,\"setTouch\")}}}function b(s){t.removeEventListener(\"touchmove\",y,!1);if(r.animatingTo===r.currentSlide&&!f&&u!==null){var l=c?-u:u,h=l>0?r.getTarget(\"next\"):r.getTarget(\"prev\");r.canAdvance(h)&&(Number(new Date)-a<550&&Math.abs(l)>50||Math.abs(l)>o/2)?r.flexAnimate(h,r.vars.pauseOnAction):p||r.flexAnimate(r.currentSlide,r.vars.pauseOnAction,!0)}t.removeEventListener(\"touchend\",b,!1);e=null;n=null;u=null;i=null}}else{t.style.msTouchAction=\"none\";t._gesture=new MSGesture;t._gesture.target=t;t.addEventListener(\"MSPointerDown\",w,!1);t._slider=r;t.addEventListener(\"MSGestureChange\",E,!1);t.addEventListener(\"MSGestureEnd\",S,!1);function w(e){e.stopPropagation();if(r.animating)e.preventDefault();else{r.pause();t._gesture.addPointer(e.pointerId);m=0;o=l?r.h:r.w;a=Number(new Date);i=h&&c&&r.animatingTo===r.last?0:h&&c?r.limit-(r.itemW+r.vars.itemMargin)*r.move*r.animatingTo:h&&r.currentSlide===r.last?r.limit:h?(r.itemW+r.vars.itemMargin)*r.move*r.currentSlide:c?(r.last-r.currentSlide+r.cloneOffset)*o:(r.currentSlide+r.cloneOffset)*o}}function E(e){e.stopPropagation();var n=e.target._slider;if(!n)return;var r=-e.translationX,s=-e.translationY;m+=l?s:r;u=m;f=l?Math.abs(m)500){e.preventDefault();if(!p&&n.transitions){n.vars.animationLoop||(u=m/(n.currentSlide===0&&m<0||n.currentSlide===n.last&&m>0?Math.abs(m)/o+2:1));n.setProps(i+u,\"setTouch\")}}}function S(t){t.stopPropagation();var r=t.target._slider;if(!r)return;if(r.animatingTo===r.currentSlide&&!f&&u!==null){var s=c?-u:u,l=s>0?r.getTarget(\"next\"):r.getTarget(\"prev\");r.canAdvance(l)&&(Number(new Date)-a<550&&Math.abs(s)>50||Math.abs(s)>o/2)?r.flexAnimate(l,r.vars.pauseOnAction):p||r.flexAnimate(r.currentSlide,r.vars.pauseOnAction,!0)}e=null;n=null;u=null;i=null;m=0}}},resize:function(){if(!r.animating&&r.is(\":visible\")){h||r.doMath();if(p)v.smoothHeight();else if(h){r.slides.width(r.computedW);r.update(r.pagingCount);r.setProps()}else if(l){r.viewport.height(r.h);r.setProps(r.h,\"setTotal\")}else{r.vars.smoothHeight&&v.smoothHeight();r.newSlides.width(r.computedW\r\n);r.setProps(r.computedW,\"setTotal\")}}},smoothHeight:function(e){if(!l||p){var t=p?r:r.viewport;e?t.animate({height:r.slides.eq(r.animatingTo).height()},e):t.height(r.slides.eq(r.animatingTo).height())}},sync:function(t){var n=e(r.vars.sync).data(\"flexslider\"),i=r.animatingTo;switch(t){case\"animate\":n.flexAnimate(i,r.vars.pauseOnAction,!1,!0);break;case\"play\":!n.playing&&!n.asNav&&n.play();break;case\"pause\":n.pause()}},uniqueID:function(t){t.find(\"[id]\").each(function(){var t=e(this);t.attr(\"id\",t.attr(\"id\")+\"_clone\")});return t},pauseInvisible:{visProp:null,init:function(){var e=[\"webkit\",\"moz\",\"ms\",\"o\"];if(\"hidden\"in document)return\"hidden\";for(var t=0;t0?setTimeout(r.play,r.vars.initDelay):r.play()})}},isHidden:function(){return document[v.pauseInvisible.visProp]||!1}},setToClearWatchedEvent:function(){clearTimeout(f);f=setTimeout(function(){a=\"\"},3e3)}};r.flexAnimate=function(t,n,s,u,a){!r.vars.animationLoop&&t!==r.currentSlide&&(r.direction=t>r.currentSlide?\"next\":\"prev\");d&&r.pagingCount===1&&(r.direction=r.currentItemr.limit&&r.visible!==1?r.limit:b}else r.currentSlide===0&&t===r.count-1&&r.vars.animationLoop&&r.direction!==\"next\"?y=c?(r.count+r.cloneOffset)*m:0:r.currentSlide===r.last&&t===0&&r.vars.animationLoop&&r.direction!==\"prev\"?y=c?0:(r.count+1)*m:y=c?(r.count-1-t+r.cloneOffset)*m:(t+r.cloneOffset)*m;r.setProps(y,\"\",r.vars.animationSpeed);if(r.transitions){if(!r.vars.animationLoop||!r.atEnd){r.animating=!1;r.currentSlide=r.animatingTo}r.container.unbind(\"webkitTransitionEnd transitionend\");r.container.bind(\"webkitTransitionEnd transitionend\",function(){r.wrapup(m)})}else r.container.animate(r.args,r.vars.animationSpeed,r.vars.easing,function(){r.wrapup(m)})}else if(!o){r.slides.eq(r.currentSlide).css({zIndex:1}).animate({opacity:0},r.vars.animationSpeed,r.vars.easing);r.slides.eq(t).css({zIndex:2}).animate({opacity:1},r.vars.animationSpeed,r.vars.easing,r.wrapup)}else{r.slides.eq(r.currentSlide).css({opacity:0,zIndex:1});r.slides.eq(t).css({opacity:1,zIndex:2});r.wrapup(m)}r.vars.smoothHeight&&v.smoothHeight(r.vars.animationSpeed)}};r.wrapup=function(e){!p&&!h&&(r.currentSlide===0&&r.animatingTo===r.last&&r.vars.animationLoop?r.setProps(e,\"jumpEnd\"):r.currentSlide===r.last&&r.animatingTo===0&&r.vars.animationLoop&&r.setProps(e,\"jumpStart\"));r.animating=!1;r.currentSlide=r.animatingTo;r.vars.after(r)};r.animateSlides=function(){!r.animating&&m&&r.flexAnimate(r.getTarget(\"next\"))};r.pause=function(){clearInterval(r.animatedSlides);r.animatedSlides=null;r.playing=!1;r.vars.pausePlay&&v.pausePlay.update(\"play\");r.syncExists&&v.sync(\"pause\")};r.play=function(){r.playing&&clearInterval(r.animatedSlides);r.animatedSlides=r.animatedSlides||setInterval(r.animateSlides,r.vars.slideshowSpeed);r.started=r.playing=!0;r.vars.pausePlay&&v.pausePlay.update(\"pause\");r.syncExists&&v.sync(\"play\")};r.stop=function(){r.pause();r.stopped=!0};r.canAdvance=function(e,t){var n=d?r.pagingCount-1:r.last;return t?!0:d&&r.currentItem===r.count-1&&e===0&&r.direction===\"prev\"?!0:d&&r.currentItem===0&&e===r.pagingCount-1&&r.direction!==\"next\"?!1:e===r.currentSlide&&!d?!1:r.vars.animationLoop?!0:r.atEnd&&r.currentSlide===0&&e===n&&r.direction!==\"next\"?!1:r.atEnd&&r.currentSlide===n&&e===0&&r.direction===\"next\"?!1:!0};r.getTarget=function(e){r.direction=e;return e===\"next\"?r.currentSlide===r.last?0:r.currentSlide+1:r.currentSlide===0?r.last:r.currentSlide-1};r.setProps=function(e,t,n){var i=function(){var n=e?e:(r.itemW+r.vars.itemMargin)*r.move*r.animatingTo,i=function(){if(h)return t===\"setTouch\"?e:c&&r.animatingTo===r.last?0:c?r.limit-(r.itemW+r.vars.itemMargin)*r.move*r.animatingTo:r.animatingTo===r.last?r.limit:n;switch(t){case\"setTotal\":return c?(r.count-1-r.currentSlide+r.cloneOffset)*e:(r.currentSlide+r.cloneOffset)*e;case\"setTouch\":return c?e:e;case\"jumpEnd\":return c?e:r.count*e;case\"jumpStart\":return c?r.count*e:e;default:return e}}();return i*-1+\"px\"}();if(r.transitions){i=l?\"translate3d(0,\"+i+\",0)\":\"translate3d(\"+i+\",0,0)\";n=n!==undefined?n/1e3+\"s\":\"0s\";r.container.css(\"-\"+r.pfx+\"-transition-duration\",n);r.container.css(\"transition-duration\",n)}r.args[r.prop]=i;(r.transitions||n===undefined)&&r.container.css(r.args);r.container.css(\"transform\",i)};r.setup=function(t){if(!p){var n,s;if(t===\"init\"){r.viewport=e('
    ').css({overflow:\"hidden\",position:\"relative\"}).appendTo(r).append(r.container);r.cloneCount=0;r.cloneOffset=0;if(c){s=e.makeArray(r.slides).reverse();r.slides=e(s);r.container.empty().append(r.slides)}}if(r.vars.animationLoop&&!h){r.cloneCount=2;r.cloneOffset=1;t!==\"init\"&&r.container.find(\".clone\").remove();r.container.append(r.slides.first().clone().addClass(\"clone\").attr(\"aria-hidden\",\"true\")).prepend(r.slides.last().clone().addClass(\"clone\").attr(\"aria-hidden\",\"true\"));v.uniqueID(r.slides.first().clone().addClass(\"clone\")).appendTo(r.container);v.uniqueID(r.slides.last().clone().addClass(\"clone\")).prependTo(r.container)}r.newSlides=e(r.vars.selector,r);n=c?r.count-1-r.currentSlide+r.cloneOffset:r.currentSlide+r.cloneOffset;if(l&&!h){r.container.height((r.count+r.cloneCount)*200+\"%\").css(\"position\",\"absolute\").width(\"100%\");setTimeout(function(){r.newSlides.css({display:\"block\"});r.doMath();r.viewport.height(r.h);r.setProps(n*r.h,\"init\")},t===\"init\"?100:0)}else{r.container.width((r.count+r.cloneCount)*200+\"%\");r.setProps(n*r.computedW,\"init\");setTimeout(function(){r.doMath();r.newSlides.css({width:r.computedW,\"float\":\"left\",display:\"block\"});r.vars.smoothHeight&&v.smoothHeight()},t===\"init\"?100:0)}}else{r.slides.css({width:\"100%\",\"float\":\"left\",marginRight:\"-100%\",position:\"relative\"});t===\"init\"&&(o?r.slides.css({opacity:0,display:\"block\",webkitTransition:\"opacity \"+r.vars.animationSpeed/1e3+\"s ease\",zIndex:1}).eq(r.currentSlide).css({opacity:1,zIndex:2}):r.slides.css({opacity:0,display:\"block\",zIndex:1}).eq(r.currentSlide).css({zIndex:2}).animate({opacity:1},r.vars.animationSpeed,r.vars.easing));r.vars.smoothHeight&&v.smoothHeight()}h||r.slides.removeClass(i+\"active-slide\").eq(r.currentSlide).addClass(i+\"active-slide\");r.vars.init(r)};r.doMath=function(){var e=r.slides.first(),t=r.vars.itemMargin,n=r.vars.minItems,i=r.vars.maxItems;r.w=r.viewport===undefined?r.width():r.viewport.width();r.h=e.height();r.boxPadding=e.outerWidth()-e.width();if(h){r.itemT=r.vars.itemWidth+t;r.minW=n?n*r.itemT:r.w;r.maxW=i?i*r.itemT-t:r.w;r.itemW=r.minW>r.w?(r.w-t*(n-1))/n:r.maxWr.w?r.w:r.vars.itemWidth;r.visible=Math.floor(r.w/r.itemW);r.move=r.vars.move>0&&r.vars.mover.w?r.itemW*(r.count-1)+t*(r.count-1):(r.itemW+t)*r.count-r.w-t}else{r.itemW=r.w;r.pagingCount=r.count;r.last=r.count-1}r.computedW=r.itemW-r.boxPadding};r.update=function(e,t){r.doMath();if(!h){er.controlNav.length)v.controlNav.update(\"add\");else if(t===\"remove\"&&!h||r.pagingCountr.last){r.currentSlide-=1;r.animatingTo-=1}v.controlNav.update(\"remove\",r.last)}r.vars.directionNav&&v.directionNav.update()};r.addSlide=function(t,n){var i=e(t);r.count+=1;r.last=r.count-1;l&&c?n!==undefined?r.slides.eq(r.count-n).after(i):r.container.prepend(i):n!==undefined?r.slides.eq(n).before(i):r.container.append(i);r.update(n,\"add\");r.slides=e(r.vars.selector+\":not(.clone)\",r);r.setup();r.vars.added(r)};r.removeSlide=function(t){var n=isNaN(t)?r.slides.index(e(t)):t;r.count-=1;r.last=r.count-1;isNaN(t)?e(t,r.slides).remove():l&&c?r.slides.eq(r.last).remove():r.slides.eq(t).remove();r.doMath();r.update(n,\"remove\");r.slides=e(r.vars.selector+\":not(.clone)\",r);r.setup();r.vars.removed(r)};v.init()};e(window).blur(function(e){focused=!1}).focus(function(e){focused=!0});e.flexslider.defaults={namespace:\"flex-\",selector:\".slides > li\",animation:\"fade\",easing:\"swing\",direction:\"horizontal\",reverse:!1,animationLoop:!0,smoothHeight:!1,startAt:0,slideshow:!0,slideshowSpeed:7e3,animationSpeed:600,initDelay:0,randomize:!1,thumbCaptions:!1,pauseOnAction:!0,pauseOnHover:!1,pauseInvisible:!0,useCSS:!0,touch:!0,video:!1,controlNav:!0,directionNav:!0,prevText:\"Previous\",nextText:\"Next\",keyboard:!0,multipleKeyboard:!1,mousewheel:!1,pausePlay:!1,pauseText:\"Pause\",playText:\"Play\",controlsContainer:\"\",manualControls:\"\",sync:\"\",asNavFor:\"\",itemWidth:0,itemMargin:0,minItems:1,maxItems:0,move:0,allowOneSlide:!0,start:function(){},before:function(){},after:function(){},end:function(){},added:function(){},removed:function(){},init:function(){}};e.fn.flexslider=function(t){t===undefined&&(t={});if(typeof t==\"object\")return this.each(function(){var n=e(this),r=t.selector?t.selector:\".slides > li\",i=n.find(r);if(i.length===1&&t.allowOneSlide===!0||i.length===0){i.fadeIn(400);t.start&&t.start(n)}else n.data(\"flexslider\")===undefined&&new e.flexslider(this,t)});var n=e(this).data(\"flexslider\");switch(t){case\"play\":n.play();break;case\"pause\":n.pause();break;case\"stop\":n.stop();break;case\"next\":n.flexAnimate(n.getTarget(\"next\"),!0);break;case\"prev\":case\"previous\":n.flexAnimate(n.getTarget(\"prev\"),!0);break;default:typeof t==\"number\"&&n.flexAnimate(t,!0)}}})(jQuery);\r\n\njQuery( document ).ready(function( $ ) {\r\n\r\n\r\n$(function(){\r\n var onClass = \"on\";\r\n var showClass = \"show\";\r\n var labelOn = \"labelOn\";\r\n \r\n $(\".js-floatInput\").bind(\"checkval\",function(){\r\n var label = $(this).prev(\".js-floatLabel\");\r\n if(this.value !== \"\"){\r\n label.addClass(showClass);\r\n $(this).parent().addClass(labelOn);\r\n } else {\r\n label.removeClass(showClass);\r\n $(this).parent().removeClass(labelOn);\r\n }\r\n }).on(\"keyup\",function(){\r\n $(this).trigger(\"checkval\");\r\n }).on(\"focus\",function(){\r\n $(this).prev(\".js-floatLabel\").addClass(onClass);\r\n \r\n }).on(\"blur\",function(){\r\n $(this).prev(\".js-floatLabel\").removeClass(onClass);\r\n }).trigger(\"checkval\");\r\n});\r\n\r\n\r\n});\r\n\r\n\r\n\r\n\r\n//$(function(){\r\n// var onClass = \"on\";\r\n// var showClass = \"show\";\r\n// var labelOn = \"labelOn\";\r\n// \r\n// $(\"textarea\").bind(\"checkval\",function(){\r\n// var label = $(this).prev(\"label\");\r\n// if(this.value !== \"\"){\r\n// label.addClass(showClass);\r\n// $(this).parent().addClass(labelOn);\r\n// } else {\r\n// label.removeClass(showClass);\r\n// $(this).parent().removeClass(labelOn);\r\n// }\r\n// }).on(\"keyup\",function(){\r\n// $(this).trigger(\"checkval\");\r\n// }).on(\"focus\",function(){\r\n// $(this).prev(\"label\").addClass(onClass);\r\n// \r\n// }).on(\"blur\",function(){\r\n// $(this).prev(\"label\").removeClass(onClass);\r\n// }).trigger(\"checkval\");\r\n//});\n/* js/form-elements.js */\r\n\n\n/* js/mainTimer.js */\r\n\r\n(function(){\r\n\t\t\tvar hasTimer = false;\r\n\t\t\t// Init timer start\r\n\t\t\t$('.start-timer-btn').on('click', function() {\r\n\t\t\t\thasTimer = true;\r\n\t\t\t\t//$('.timer').timer({\r\n\t\t\t\t//\teditable: true,\r\n\t\t\t\t//\tformat: '%M:%S'\r\n\t\t\t\t//});\r\n\t\t\t\t$(this).addClass('hidden');\r\n\t\t\t\t$('.pause-timer-btn, .remove-timer-btn').removeClass('hidden');\r\n\t\t\t});\r\n\r\n\t\t\t// Init timer resume\r\n\t\t\t$('.resume-timer-btn').on('click', function() {\r\n\t\t\t\t$('.timer').timer('resume');\r\n\t\t\t\t$(this).addClass('hidden');\r\n\t\t\t\t$('.pause-timer-btn, .remove-timer-btn').removeClass('hidden');\r\n\t\t\t});\r\n\r\n\r\n\t\t\t// Init timer pause\r\n\t\t\t$('.pause-timer-btn').on('click', function() {\r\n\t\t\t\t$('.timer').timer('pause');\r\n\t\t\t\t$(this).addClass('hidden');\r\n\t\t\t\t$('.resume-timer-btn').removeClass('hidden');\r\n\t\t\t});\r\n\r\n\t\t\t// Remove timer\r\n\t\t\t$('.remove-timer-btn').on('click', function() {\r\n\t\t\t\thasTimer = false;\r\n\t\t\t\t$('.timer').timer('remove');\r\n\t\t\t\t$(this).addClass('hidden');\r\n\t\t\t\t$('.start-timer-btn').removeClass('hidden');\r\n\t\t\t\t$('.pause-timer-btn, .resume-timer-btn').addClass('hidden');\r\n\t\t\t});\r\n\r\n\t\t\t// Additional focus event for this demo\r\n\t\t\t$('.timer').on('focus', function() {\r\n\t\t\t\tif(hasTimer) {\r\n\t\t\t\t\t$('.pause-timer-btn').addClass('hidden');\r\n\t\t\t\t\t$('.resume-timer-btn').removeClass('hidden');\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\t\t// Additional blur event for this demo\r\n\t\t\t$('.timer').on('blur', function() {\r\n\t\t\t\tif(hasTimer) {\r\n\t\t\t\t\t$('.pause-timer-btn').removeClass('hidden');\r\n\t\t\t\t\t$('.resume-timer-btn').addClass('hidden');\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t})();\njQuery( document ).ready(function( $ ) {\r\n\r\n //$( '.toggle' ).click(function() {\r\n// $(this).toggleClass('toggle-open');\r\n// $('.navMain__cover').toggleClass('navMain-open');\r\n// });\r\n\r\n $( '.toggle' ).click(function() {\r\n $(this).toggleClass('toggle-open');\r\n $('.navMain__standard').find('.navMain-inner').slideToggle();\r\n });\r\n\r\n\r\n\r\n\r\n\r\n\r\n});\n/**\r\n * jquery-circle-progress - jQuery Plugin to draw animated circular progress bars:\r\n * {@link http://kottenator.github.io/jquery-circle-progress/}\r\n *\r\n * @author Rostyslav Bryzgunov \r\n * @version 1.2.1\r\n * @licence MIT\r\n * @preserve\r\n */\r\n// UMD factory - https://github.com/umdjs/umd/blob/d31bb6ee7098715e019f52bdfe27b3e4bfd2b97e/templates/jqueryPlugin.js\r\n// Uses AMD, CommonJS or browser globals to create a jQuery plugin.\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 var $ = require('jquery');\r\n factory($);\r\n module.exports = $;\r\n } else {\r\n // Browser globals\r\n factory(jQuery);\r\n }\r\n})(function($) {\r\n /**\r\n * Inner implementation of the circle progress bar.\r\n * The class is not exposed _yet_ but you can create an instance through jQuery method call.\r\n *\r\n * @param {object} config - You can customize any class member (property or method).\r\n * @class\r\n * @alias CircleProgress\r\n */\r\n function CircleProgress(config) {\r\n this.init(config);\r\n }\r\n\r\n CircleProgress.prototype = {\r\n //--------------------------------------- public options ---------------------------------------\r\n /**\r\n * This is the only required option. It should be from `0.0` to `1.0`.\r\n * @type {number}\r\n * @default 0.0\r\n */\r\n value: 0.0,\r\n\r\n /**\r\n * Size of the canvas in pixels.\r\n * It's a square so we need only one dimension.\r\n * @type {number}\r\n * @default 100.0\r\n */\r\n size: 100.0,\r\n\r\n /**\r\n * Initial angle for `0.0` value in radians.\r\n * @type {number}\r\n * @default -Math.PI\r\n */\r\n startAngle: -Math.PI,\r\n\r\n /**\r\n * Width of the arc in pixels.\r\n * If it's `'auto'` - the value is calculated as `[this.size]{@link CircleProgress#size} / 14`.\r\n * @type {number|string}\r\n * @default 'auto'\r\n */\r\n thickness: 'auto',\r\n\r\n /**\r\n * Fill of the arc. You may set it to:\r\n *\r\n * - solid color:\r\n * - `'#3aeabb'`\r\n * - `{ color: '#3aeabb' }`\r\n * - `{ color: 'rgba(255, 255, 255, .3)' }`\r\n * - linear gradient _(left to right)_:\r\n * - `{ gradient: ['#3aeabb', '#fdd250'], gradientAngle: Math.PI / 4 }`\r\n * - `{ gradient: ['red', 'green', 'blue'], gradientDirection: [x0, y0, x1, y1] }`\r\n * - `{ gradient: [[\"red\", .2], [\"green\", .3], [\"blue\", .8]] }`\r\n * - image:\r\n * - `{ image: 'http://i.imgur.com/pT0i89v.png' }`\r\n * - `{ image: imageObject }`\r\n * - `{ color: 'lime', image: 'http://i.imgur.com/pT0i89v.png' }` -\r\n * color displayed until the image is loaded\r\n *\r\n * @default {gradient: ['#3aeabb', '#fdd250']}\r\n */\r\n fill: {\r\n gradient: ['#3aeabb', '#fdd250']\r\n },\r\n\r\n /**\r\n * Color of the \"empty\" arc. Only a color fill supported by now.\r\n * @type {string}\r\n * @default 'rgba(0, 0, 0, .1)'\r\n */\r\n emptyFill: 'rgba(0, 0, 0, .1)',\r\n\r\n /**\r\n * jQuery Animation config.\r\n * You can pass `false` to disable the animation.\r\n * @see http://api.jquery.com/animate/\r\n * @type {object|boolean}\r\n * @default {duration: 1200, easing: 'circleProgressEasing'}\r\n */\r\n animation: {\r\n duration: 1200,\r\n easing: 'circleProgressEasing'\r\n },\r\n\r\n /**\r\n * Default animation starts at `0.0` and ends at specified `value`. Let's call this _direct animation_.\r\n * If you want to make _reversed animation_ - set `animationStartValue: 1.0`.\r\n * Also you may specify any other value from `0.0` to `1.0`.\r\n * @type {number}\r\n * @default 0.0\r\n */\r\n animationStartValue: 0.0,\r\n\r\n /**\r\n * Reverse animation and arc draw.\r\n * By default, the arc is filled from `0.0` to `value`, _clockwise_.\r\n * With `reverse: true` the arc is filled from `1.0` to `value`, _counter-clockwise_.\r\n * @type {boolean}\r\n * @default false\r\n */\r\n reverse: false,\r\n\r\n /**\r\n * Arc line cap: `'butt'`, `'round'` or `'square'` -\r\n * [read more]{@link https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D.lineCap}.\r\n * @type {string}\r\n * @default 'butt'\r\n */\r\n lineCap: 'butt',\r\n\r\n /**\r\n * Canvas insertion mode: append or prepend it into the parent element?\r\n * @type {string}\r\n * @default 'prepend'\r\n */\r\n insertMode: 'prepend',\r\n\r\n //------------------------------ protected properties and methods ------------------------------\r\n /**\r\n * Link to {@link CircleProgress} constructor.\r\n * @protected\r\n */\r\n constructor: CircleProgress,\r\n\r\n /**\r\n * Container element. Should be passed into constructor config.\r\n * @protected\r\n * @type {jQuery}\r\n */\r\n el: null,\r\n\r\n /**\r\n * Canvas element. Automatically generated and prepended to [this.el]{@link CircleProgress#el}.\r\n * @protected\r\n * @type {HTMLCanvasElement}\r\n */\r\n canvas: null,\r\n\r\n /**\r\n * 2D-context of [this.canvas]{@link CircleProgress#canvas}.\r\n * @protected\r\n * @type {CanvasRenderingContext2D}\r\n */\r\n ctx: null,\r\n\r\n /**\r\n * Radius of the outer circle. Automatically calculated as `[this.size]{@link CircleProgress#size} / 2`.\r\n * @protected\r\n * @type {number}\r\n */\r\n radius: 0.0,\r\n\r\n /**\r\n * Fill of the main arc. Automatically calculated, depending on [this.fill]{@link CircleProgress#fill} option.\r\n * @protected\r\n * @type {string|CanvasGradient|CanvasPattern}\r\n */\r\n arcFill: null,\r\n\r\n /**\r\n * Last rendered frame value.\r\n * @protected\r\n * @type {number}\r\n */\r\n lastFrameValue: 0.0,\r\n\r\n /**\r\n * Init/re-init the widget.\r\n *\r\n * Throws a jQuery event:\r\n *\r\n * - `circle-inited(jqEvent)`\r\n *\r\n * @param {object} config - You can customize any class member (property or method).\r\n */\r\n init: function(config) {\r\n $.extend(this, config);\r\n this.radius = this.size / 2;\r\n this.initWidget();\r\n this.initFill();\r\n this.draw();\r\n this.el.trigger('circle-inited');\r\n },\r\n\r\n /**\r\n * Initialize ``.\r\n * @protected\r\n */\r\n initWidget: function() {\r\n if (!this.canvas)\r\n this.canvas = $('')[this.insertMode == 'prepend' ? 'prependTo' : 'appendTo'](this.el)[0];\r\n\r\n var canvas = this.canvas;\r\n canvas.width = this.size;\r\n canvas.height = this.size;\r\n this.ctx = canvas.getContext('2d');\r\n\r\n if (window.devicePixelRatio > 1) {\r\n var scaleBy = window.devicePixelRatio;\r\n canvas.style.width = canvas.style.height = this.size + 'px';\r\n canvas.width = canvas.height = this.size * scaleBy;\r\n this.ctx.scale(scaleBy, scaleBy);\r\n }\r\n },\r\n\r\n /**\r\n * This method sets [this.arcFill]{@link CircleProgress#arcFill}.\r\n * It could do this async (on image load).\r\n * @protected\r\n */\r\n initFill: function() {\r\n var self = this,\r\n fill = this.fill,\r\n ctx = this.ctx,\r\n size = this.size;\r\n\r\n if (!fill)\r\n throw Error(\"The fill is not specified!\");\r\n\r\n if (typeof fill == 'string')\r\n fill = {color: fill};\r\n\r\n if (fill.color)\r\n this.arcFill = fill.color;\r\n\r\n if (fill.gradient) {\r\n var gr = fill.gradient;\r\n\r\n if (gr.length == 1) {\r\n this.arcFill = gr[0];\r\n } else if (gr.length > 1) {\r\n var ga = fill.gradientAngle || 0, // gradient direction angle; 0 by default\r\n gd = fill.gradientDirection || [\r\n size / 2 * (1 - Math.cos(ga)), // x0\r\n size / 2 * (1 + Math.sin(ga)), // y0\r\n size / 2 * (1 + Math.cos(ga)), // x1\r\n size / 2 * (1 - Math.sin(ga)) // y1\r\n ];\r\n\r\n var lg = ctx.createLinearGradient.apply(ctx, gd);\r\n\r\n for (var i = 0; i < gr.length; i++) {\r\n var color = gr[i],\r\n pos = i / (gr.length - 1);\r\n\r\n if ($.isArray(color)) {\r\n pos = color[1];\r\n color = color[0];\r\n }\r\n\r\n lg.addColorStop(pos, color);\r\n }\r\n\r\n this.arcFill = lg;\r\n }\r\n }\r\n\r\n if (fill.image) {\r\n var img;\r\n\r\n if (fill.image instanceof Image) {\r\n img = fill.image;\r\n } else {\r\n img = new Image();\r\n img.src = fill.image;\r\n }\r\n\r\n if (img.complete)\r\n setImageFill();\r\n else\r\n img.onload = setImageFill;\r\n }\r\n\r\n function setImageFill() {\r\n var bg = $('')[0];\r\n bg.width = self.size;\r\n bg.height = self.size;\r\n bg.getContext('2d').drawImage(img, 0, 0, size, size);\r\n self.arcFill = self.ctx.createPattern(bg, 'no-repeat');\r\n self.drawFrame(self.lastFrameValue);\r\n }\r\n },\r\n\r\n /**\r\n * Draw the circle.\r\n * @protected\r\n */\r\n draw: function() {\r\n if (this.animation)\r\n this.drawAnimated(this.value);\r\n else\r\n this.drawFrame(this.value);\r\n },\r\n\r\n /**\r\n * Draw a single animation frame.\r\n * @protected\r\n * @param {number} v - Frame value.\r\n */\r\n drawFrame: function(v) {\r\n this.lastFrameValue = v;\r\n this.ctx.clearRect(0, 0, this.size, this.size);\r\n this.drawEmptyArc(v);\r\n this.drawArc(v);\r\n },\r\n\r\n /**\r\n * Draw the arc (part of the circle).\r\n * @protected\r\n * @param {number} v - Frame value.\r\n */\r\n drawArc: function(v) {\r\n if (v === 0)\r\n return;\r\n\r\n var ctx = this.ctx,\r\n r = this.radius,\r\n t = this.getThickness(),\r\n a = this.startAngle;\r\n\r\n ctx.save();\r\n ctx.beginPath();\r\n\r\n if (!this.reverse) {\r\n ctx.arc(r, r, r - t / 2, a, a + Math.PI * 2 * v);\r\n } else {\r\n ctx.arc(r, r, r - t / 2, a - Math.PI * 2 * v, a);\r\n }\r\n\r\n ctx.lineWidth = t;\r\n ctx.lineCap = this.lineCap;\r\n ctx.strokeStyle = this.arcFill;\r\n ctx.stroke();\r\n ctx.restore();\r\n },\r\n\r\n /**\r\n * Draw the _empty (background)_ arc (part of the circle).\r\n * @protected\r\n * @param {number} v - Frame value.\r\n */\r\n drawEmptyArc: function(v) {\r\n var ctx = this.ctx,\r\n r = this.radius,\r\n t = this.getThickness(),\r\n a = this.startAngle;\r\n\r\n if (v < 1) {\r\n ctx.save();\r\n ctx.beginPath();\r\n\r\n if (v <= 0) {\r\n ctx.arc(r, r, r - t / 2, 0, Math.PI * 2);\r\n } else {\r\n if (!this.reverse) {\r\n ctx.arc(r, r, r - t / 2, a + Math.PI * 2 * v, a);\r\n } else {\r\n ctx.arc(r, r, r - t / 2, a, a - Math.PI * 2 * v);\r\n }\r\n }\r\n\r\n ctx.lineWidth = t;\r\n ctx.strokeStyle = this.emptyFill;\r\n ctx.stroke();\r\n ctx.restore();\r\n }\r\n },\r\n\r\n /**\r\n * Animate the progress bar.\r\n *\r\n * Throws 3 jQuery events:\r\n *\r\n * - `circle-animation-start(jqEvent)`\r\n * - `circle-animation-progress(jqEvent, animationProgress, stepValue)` - multiple event\r\n * animationProgress: from `0.0` to `1.0`; stepValue: from `0.0` to `value`\r\n * - `circle-animation-end(jqEvent)`\r\n *\r\n * @protected\r\n * @param {number} v - Final value.\r\n */\r\n drawAnimated: function(v) {\r\n var self = this,\r\n el = this.el,\r\n canvas = $(this.canvas);\r\n\r\n // stop previous animation before new \"start\" event is triggered\r\n canvas.stop(true, false);\r\n el.trigger('circle-animation-start');\r\n\r\n canvas\r\n .css({animationProgress: 0})\r\n .animate({animationProgress: 1}, $.extend({}, this.animation, {\r\n step: function(animationProgress) {\r\n var stepValue = self.animationStartValue * (1 - animationProgress) + v * animationProgress;\r\n self.drawFrame(stepValue);\r\n el.trigger('circle-animation-progress', [animationProgress, stepValue]);\r\n }\r\n }))\r\n .promise()\r\n .always(function() {\r\n // trigger on both successful & failure animation end\r\n el.trigger('circle-animation-end');\r\n });\r\n },\r\n\r\n /**\r\n * Get the circle thickness.\r\n * @see CircleProgress#thickness\r\n * @protected\r\n * @returns {number}\r\n */\r\n getThickness: function() {\r\n return $.isNumeric(this.thickness) ? this.thickness : this.size / 14;\r\n },\r\n\r\n /**\r\n * Get current value.\r\n * @protected\r\n * @return {number}\r\n */\r\n getValue: function() {\r\n return this.value;\r\n },\r\n\r\n /**\r\n * Set current value (with smooth animation transition).\r\n * @protected\r\n * @param {number} newValue\r\n */\r\n setValue: function(newValue) {\r\n if (this.animation)\r\n this.animationStartValue = this.lastFrameValue;\r\n this.value = newValue;\r\n this.draw();\r\n }\r\n };\r\n\r\n //----------------------------------- Initiating jQuery plugin -----------------------------------\r\n $.circleProgress = {\r\n // Default options (you may override them)\r\n defaults: CircleProgress.prototype\r\n };\r\n\r\n // ease-in-out-cubic\r\n $.easing.circleProgressEasing = function(x, t, b, c, d) {\r\n if ((t /= d / 2) < 1)\r\n return c / 2 * t * t * t + b;\r\n return c / 2 * ((t -= 2) * t * t + 2) + b;\r\n };\r\n\r\n /**\r\n * Creates an instance of {@link CircleProgress}.\r\n * Produces [init event]{@link CircleProgress#init} and [animation events]{@link CircleProgress#drawAnimated}.\r\n *\r\n * @param {object} [configOrCommand] - Config object or command name.\r\n *\r\n * Config example (you can specify any {@link CircleProgress} property):\r\n *\r\n * ```js\r\n * { value: 0.75, size: 50, animation: false }\r\n * ```\r\n *\r\n * Commands:\r\n *\r\n * ```js\r\n * el.circleProgress('widget'); // get the \r\n * el.circleProgress('value'); // get the value\r\n * el.circleProgress('value', newValue); // update the value\r\n * el.circleProgress('redraw'); // redraw the circle\r\n * el.circleProgress(); // the same as 'redraw'\r\n * ```\r\n *\r\n * @param {string} [commandArgument] - Some commands (like `'value'`) may require an argument.\r\n * @see CircleProgress\r\n * @alias \"$(...).circleProgress\"\r\n */\r\n $.fn.circleProgress = function(configOrCommand, commandArgument) {\r\n var dataName = 'circle-progress',\r\n firstInstance = this.data(dataName);\r\n\r\n if (configOrCommand == 'widget') {\r\n if (!firstInstance)\r\n throw Error('Calling \"widget\" method on not initialized instance is forbidden');\r\n return firstInstance.canvas;\r\n }\r\n\r\n if (configOrCommand == 'value') {\r\n if (!firstInstance)\r\n throw Error('Calling \"value\" method on not initialized instance is forbidden');\r\n if (typeof commandArgument == 'undefined') {\r\n return firstInstance.getValue();\r\n } else {\r\n var newValue = arguments[1];\r\n return this.each(function() {\r\n $(this).data(dataName).setValue(newValue);\r\n });\r\n }\r\n }\r\n\r\n return this.each(function() {\r\n var el = $(this),\r\n instance = el.data(dataName),\r\n config = $.isPlainObject(configOrCommand) ? configOrCommand : {};\r\n\r\n if (instance) {\r\n instance.init(config);\r\n } else {\r\n var initialConfig = $.extend({}, el.data());\r\n if (typeof initialConfig.fill == 'string')\r\n initialConfig.fill = JSON.parse(initialConfig.fill);\r\n if (typeof initialConfig.animation == 'string')\r\n initialConfig.animation = JSON.parse(initialConfig.animation);\r\n config = $.extend(initialConfig, config);\r\n config.el = el;\r\n instance = new CircleProgress(config);\r\n el.data(dataName, instance);\r\n }\r\n });\r\n };\r\n});\n/* js/proTest2.js */\r\n\r\n\r\n $('.test').circleProgress({\r\n value: 0.75,\r\n fill: {\r\n gradient: [\"red\", \"orange\"]\r\n }\r\n }).on('circle-animation-progress', function(event, progress, stepValue) {\r\n $(this).find('strong').text(stepValue.toFixed(2).substr(1));\r\n });\r\n\r\n\r\n $('.new').circleProgress({\r\n size: 40,\r\n fill: {\r\n gradient: [\"#00aff0\", \"#00f078\"]\r\n }\r\n }).on('circle-animation-progress', function(event, progress, stepValue) {\r\n $(this).find('strong').text(stepValue.toFixed(2).substr(1));\r\n });\r\n \r\n$('.circle-light').circleProgress({\r\n value: 0.75,\r\n size: 150,\r\n fill: {\r\n gradient: [\"#fff\", \"#fff\"]\r\n }\r\n }).on('circle-animation-progress', function(event, progress, stepValue) {\r\n $(this).find('strong').text(stepValue.toFixed(2).substr(1));\r\n });\n/* js/rangeSlider.js */\r\n\r\n/*! rangeslider.js - v2.3.0 | (c) 2016 @andreruffert | MIT license | https://github.com/andreruffert/rangeslider.js */\r\n(function(factory) {\r\n 'use strict';\r\n\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 exports === 'object') {\r\n // CommonJS\r\n module.exports = factory(require('jquery'));\r\n } else {\r\n // Browser globals\r\n factory(jQuery);\r\n }\r\n}(function($) {\r\n 'use strict';\r\n\r\n // Polyfill Number.isNaN(value)\r\n // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Number/isNaN\r\n Number.isNaN = Number.isNaN || function(value) {\r\n return typeof value === 'number' && value !== value;\r\n };\r\n\r\n /**\r\n * Range feature detection\r\n * @return {Boolean}\r\n */\r\n function supportsRange() {\r\n var input = document.createElement('input');\r\n input.setAttribute('type', 'range');\r\n return input.type !== 'text';\r\n }\r\n\r\n var pluginName = 'rangeslider',\r\n pluginIdentifier = 0,\r\n hasInputRangeSupport = supportsRange(),\r\n defaults = {\r\n polyfill: true,\r\n orientation: 'horizontal',\r\n rangeClass: 'rangeslider',\r\n disabledClass: 'rangeslider--disabled',\r\n activeClass: 'rangeslider--active',\r\n horizontalClass: 'rangeslider--horizontal',\r\n verticalClass: 'rangeslider--vertical',\r\n fillClass: 'rangeslider__fill',\r\n handleClass: 'rangeslider__handle',\r\n startEvent: ['mousedown', 'touchstart', 'pointerdown'],\r\n moveEvent: ['mousemove', 'touchmove', 'pointermove'],\r\n endEvent: ['mouseup', 'touchend', 'pointerup']\r\n },\r\n constants = {\r\n orientation: {\r\n horizontal: {\r\n dimension: 'width',\r\n direction: 'left',\r\n directionStyle: 'left',\r\n coordinate: 'x'\r\n },\r\n vertical: {\r\n dimension: 'height',\r\n direction: 'top',\r\n directionStyle: 'bottom',\r\n coordinate: 'y'\r\n }\r\n }\r\n };\r\n\r\n /**\r\n * Delays a function for the given number of milliseconds, and then calls\r\n * it with the arguments supplied.\r\n *\r\n * @param {Function} fn [description]\r\n * @param {Number} wait [description]\r\n * @return {Function}\r\n */\r\n function delay(fn, wait) {\r\n var args = Array.prototype.slice.call(arguments, 2);\r\n return setTimeout(function(){ return fn.apply(null, args); }, wait);\r\n }\r\n\r\n /**\r\n * Returns a debounced function that will make sure the given\r\n * function is not triggered too much.\r\n *\r\n * @param {Function} fn Function to debounce.\r\n * @param {Number} debounceDuration OPTIONAL. The amount of time in milliseconds for which we will debounce the function. (defaults to 100ms)\r\n * @return {Function}\r\n */\r\n function debounce(fn, debounceDuration) {\r\n debounceDuration = debounceDuration || 100;\r\n return function() {\r\n if (!fn.debouncing) {\r\n var args = Array.prototype.slice.apply(arguments);\r\n fn.lastReturnVal = fn.apply(window, args);\r\n fn.debouncing = true;\r\n }\r\n clearTimeout(fn.debounceTimeout);\r\n fn.debounceTimeout = setTimeout(function(){\r\n fn.debouncing = false;\r\n }, debounceDuration);\r\n return fn.lastReturnVal;\r\n };\r\n }\r\n\r\n /**\r\n * Check if a `element` is visible in the DOM\r\n *\r\n * @param {Element} element\r\n * @return {Boolean}\r\n */\r\n function isHidden(element) {\r\n return (\r\n element && (\r\n element.offsetWidth === 0 ||\r\n element.offsetHeight === 0 ||\r\n // Also Consider native `
    ` elements.\r\n element.open === false\r\n )\r\n );\r\n }\r\n\r\n /**\r\n * Get hidden parentNodes of an `element`\r\n *\r\n * @param {Element} element\r\n * @return {[type]}\r\n */\r\n function getHiddenParentNodes(element) {\r\n var parents = [],\r\n node = element.parentNode;\r\n\r\n while (isHidden(node)) {\r\n parents.push(node);\r\n node = node.parentNode;\r\n }\r\n return parents;\r\n }\r\n\r\n /**\r\n * Returns dimensions for an element even if it is not visible in the DOM.\r\n *\r\n * @param {Element} element\r\n * @param {String} key (e.g. offsetWidth …)\r\n * @return {Number}\r\n */\r\n function getDimension(element, key) {\r\n var hiddenParentNodes = getHiddenParentNodes(element),\r\n hiddenParentNodesLength = hiddenParentNodes.length,\r\n inlineStyle = [],\r\n dimension = element[key];\r\n\r\n // Used for native `
    ` elements\r\n function toggleOpenProperty(element) {\r\n if (typeof element.open !== 'undefined') {\r\n element.open = (element.open) ? false : true;\r\n }\r\n }\r\n\r\n if (hiddenParentNodesLength) {\r\n for (var i = 0; i < hiddenParentNodesLength; i++) {\r\n\r\n // Cache style attribute to restore it later.\r\n inlineStyle[i] = hiddenParentNodes[i].style.cssText;\r\n\r\n // visually hide\r\n if (hiddenParentNodes[i].style.setProperty) {\r\n hiddenParentNodes[i].style.setProperty('display', 'block', 'important');\r\n } else {\r\n hiddenParentNodes[i].style.cssText += ';display: block !important';\r\n }\r\n hiddenParentNodes[i].style.height = '0';\r\n hiddenParentNodes[i].style.overflow = 'hidden';\r\n hiddenParentNodes[i].style.visibility = 'hidden';\r\n toggleOpenProperty(hiddenParentNodes[i]);\r\n }\r\n\r\n // Update dimension\r\n dimension = element[key];\r\n\r\n for (var j = 0; j < hiddenParentNodesLength; j++) {\r\n\r\n // Restore the style attribute\r\n hiddenParentNodes[j].style.cssText = inlineStyle[j];\r\n toggleOpenProperty(hiddenParentNodes[j]);\r\n }\r\n }\r\n return dimension;\r\n }\r\n\r\n /**\r\n * Returns the parsed float or the default if it failed.\r\n *\r\n * @param {String} str\r\n * @param {Number} defaultValue\r\n * @return {Number}\r\n */\r\n function tryParseFloat(str, defaultValue) {\r\n var value = parseFloat(str);\r\n return Number.isNaN(value) ? defaultValue : value;\r\n }\r\n\r\n /**\r\n * Capitalize the first letter of string\r\n *\r\n * @param {String} str\r\n * @return {String}\r\n */\r\n function ucfirst(str) {\r\n return str.charAt(0).toUpperCase() + str.substr(1);\r\n }\r\n\r\n /**\r\n * Plugin\r\n * @param {String} element\r\n * @param {Object} options\r\n */\r\n function Plugin(element, options) {\r\n this.$window = $(window);\r\n this.$document = $(document);\r\n this.$element = $(element);\r\n this.options = $.extend( {}, defaults, options );\r\n this.polyfill = this.options.polyfill;\r\n this.orientation = this.$element[0].getAttribute('data-orientation') || this.options.orientation;\r\n this.onInit = this.options.onInit;\r\n this.onSlide = this.options.onSlide;\r\n this.onSlideEnd = this.options.onSlideEnd;\r\n this.DIMENSION = constants.orientation[this.orientation].dimension;\r\n this.DIRECTION = constants.orientation[this.orientation].direction;\r\n this.DIRECTION_STYLE = constants.orientation[this.orientation].directionStyle;\r\n this.COORDINATE = constants.orientation[this.orientation].coordinate;\r\n\r\n // Plugin should only be used as a polyfill\r\n if (this.polyfill) {\r\n // Input range support?\r\n if (hasInputRangeSupport) { return false; }\r\n }\r\n\r\n this.identifier = 'js-' + pluginName + '-' +(pluginIdentifier++);\r\n this.startEvent = this.options.startEvent.join('.' + this.identifier + ' ') + '.' + this.identifier;\r\n this.moveEvent = this.options.moveEvent.join('.' + this.identifier + ' ') + '.' + this.identifier;\r\n this.endEvent = this.options.endEvent.join('.' + this.identifier + ' ') + '.' + this.identifier;\r\n this.toFixed = (this.step + '').replace('.', '').length - 1;\r\n this.$fill = $('
    ');\r\n this.$handle = $('
    ');\r\n this.$range = $('
    ').insertAfter(this.$element).prepend(this.$fill, this.$handle);\r\n\r\n // visually hide the input\r\n this.$element.css({\r\n 'position': 'absolute',\r\n 'width': '1px',\r\n 'height': '1px',\r\n 'overflow': 'hidden',\r\n 'opacity': '0'\r\n });\r\n\r\n // Store context\r\n this.handleDown = $.proxy(this.handleDown, this);\r\n this.handleMove = $.proxy(this.handleMove, this);\r\n this.handleEnd = $.proxy(this.handleEnd, this);\r\n\r\n this.init();\r\n\r\n // Attach Events\r\n var _this = this;\r\n this.$window.on('resize.' + this.identifier, debounce(function() {\r\n // Simulate resizeEnd event.\r\n delay(function() { _this.update(false, false); }, 300);\r\n }, 20));\r\n\r\n this.$document.on(this.startEvent, '#' + this.identifier + ':not(.' + this.options.disabledClass + ')', this.handleDown);\r\n\r\n // Listen to programmatic value changes\r\n this.$element.on('change.' + this.identifier, function(e, data) {\r\n if (data && data.origin === _this.identifier) {\r\n return;\r\n }\r\n\r\n var value = e.target.value,\r\n pos = _this.getPositionFromValue(value);\r\n _this.setPosition(pos);\r\n });\r\n }\r\n\r\n Plugin.prototype.init = function() {\r\n this.update(true, false);\r\n\r\n if (this.onInit && typeof this.onInit === 'function') {\r\n this.onInit();\r\n }\r\n };\r\n\r\n Plugin.prototype.update = function(updateAttributes, triggerSlide) {\r\n updateAttributes = updateAttributes || false;\r\n\r\n if (updateAttributes) {\r\n this.min = tryParseFloat(this.$element[0].getAttribute('min'), 0);\r\n this.max = tryParseFloat(this.$element[0].getAttribute('max'), 100);\r\n this.value = tryParseFloat(this.$element[0].value, Math.round(this.min + (this.max-this.min)/2));\r\n this.step = tryParseFloat(this.$element[0].getAttribute('step'), 1);\r\n }\r\n\r\n this.handleDimension = getDimension(this.$handle[0], 'offset' + ucfirst(this.DIMENSION));\r\n this.rangeDimension = getDimension(this.$range[0], 'offset' + ucfirst(this.DIMENSION));\r\n this.maxHandlePos = this.rangeDimension - this.handleDimension;\r\n this.grabPos = this.handleDimension / 2;\r\n this.position = this.getPositionFromValue(this.value);\r\n\r\n // Consider disabled state\r\n if (this.$element[0].disabled) {\r\n this.$range.addClass(this.options.disabledClass);\r\n } else {\r\n this.$range.removeClass(this.options.disabledClass);\r\n }\r\n\r\n this.setPosition(this.position, triggerSlide);\r\n };\r\n\r\n Plugin.prototype.handleDown = function(e) {\r\n e.preventDefault();\r\n this.$document.on(this.moveEvent, this.handleMove);\r\n this.$document.on(this.endEvent, this.handleEnd);\r\n\r\n // add active class because Firefox is ignoring\r\n // the handle:active pseudo selector because of `e.preventDefault();`\r\n this.$range.addClass(this.options.activeClass);\r\n\r\n // If we click on the handle don't set the new position\r\n if ((' ' + e.target.className + ' ').replace(/[\\n\\t]/g, ' ').indexOf(this.options.handleClass) > -1) {\r\n return;\r\n }\r\n\r\n var pos = this.getRelativePosition(e),\r\n rangePos = this.$range[0].getBoundingClientRect()[this.DIRECTION],\r\n handlePos = this.getPositionFromNode(this.$handle[0]) - rangePos,\r\n setPos = (this.orientation === 'vertical') ? (this.maxHandlePos - (pos - this.grabPos)) : (pos - this.grabPos);\r\n\r\n this.setPosition(setPos);\r\n\r\n if (pos >= handlePos && pos < handlePos + this.handleDimension) {\r\n this.grabPos = pos - handlePos;\r\n }\r\n };\r\n\r\n Plugin.prototype.handleMove = function(e) {\r\n e.preventDefault();\r\n var pos = this.getRelativePosition(e);\r\n var setPos = (this.orientation === 'vertical') ? (this.maxHandlePos - (pos - this.grabPos)) : (pos - this.grabPos);\r\n this.setPosition(setPos);\r\n };\r\n\r\n Plugin.prototype.handleEnd = function(e) {\r\n e.preventDefault();\r\n this.$document.off(this.moveEvent, this.handleMove);\r\n this.$document.off(this.endEvent, this.handleEnd);\r\n\r\n this.$range.removeClass(this.options.activeClass);\r\n\r\n // Ok we're done fire the change event\r\n this.$element.trigger('change', { origin: this.identifier });\r\n\r\n if (this.onSlideEnd && typeof this.onSlideEnd === 'function') {\r\n this.onSlideEnd(this.position, this.value);\r\n }\r\n };\r\n\r\n Plugin.prototype.cap = function(pos, min, max) {\r\n if (pos < min) { return min; }\r\n if (pos > max) { return max; }\r\n return pos;\r\n };\r\n\r\n Plugin.prototype.setPosition = function(pos, triggerSlide) {\r\n var value, newPos;\r\n\r\n if (triggerSlide === undefined) {\r\n triggerSlide = true;\r\n }\r\n\r\n // Snapping steps\r\n value = this.getValueFromPosition(this.cap(pos, 0, this.maxHandlePos));\r\n newPos = this.getPositionFromValue(value);\r\n\r\n // Update ui\r\n this.$fill[0].style[this.DIMENSION] = (newPos + this.grabPos) + 'px';\r\n this.$handle[0].style[this.DIRECTION_STYLE] = newPos + 'px';\r\n this.setValue(value);\r\n\r\n // Update globals\r\n this.position = newPos;\r\n this.value = value;\r\n\r\n if (triggerSlide && this.onSlide && typeof this.onSlide === 'function') {\r\n this.onSlide(newPos, value);\r\n }\r\n };\r\n\r\n // Returns element position relative to the parent\r\n Plugin.prototype.getPositionFromNode = function(node) {\r\n var i = 0;\r\n while (node !== null) {\r\n i += node.offsetLeft;\r\n node = node.offsetParent;\r\n }\r\n return i;\r\n };\r\n\r\n Plugin.prototype.getRelativePosition = function(e) {\r\n // Get the offset DIRECTION relative to the viewport\r\n var ucCoordinate = ucfirst(this.COORDINATE),\r\n rangePos = this.$range[0].getBoundingClientRect()[this.DIRECTION],\r\n pageCoordinate = 0;\r\n\r\n if (typeof e.originalEvent['client' + ucCoordinate] !== 'undefined') {\r\n pageCoordinate = e.originalEvent['client' + ucCoordinate];\r\n }\r\n else if (\r\n e.originalEvent.touches &&\r\n e.originalEvent.touches[0] &&\r\n typeof e.originalEvent.touches[0]['client' + ucCoordinate] !== 'undefined'\r\n ) {\r\n pageCoordinate = e.originalEvent.touches[0]['client' + ucCoordinate];\r\n }\r\n else if(e.currentPoint && typeof e.currentPoint[this.COORDINATE] !== 'undefined') {\r\n pageCoordinate = e.currentPoint[this.COORDINATE];\r\n }\r\n\r\n return pageCoordinate - rangePos;\r\n };\r\n\r\n Plugin.prototype.getPositionFromValue = function(value) {\r\n var percentage, pos;\r\n percentage = (value - this.min)/(this.max - this.min);\r\n pos = (!Number.isNaN(percentage)) ? percentage * this.maxHandlePos : 0;\r\n return pos;\r\n };\r\n\r\n Plugin.prototype.getValueFromPosition = function(pos) {\r\n var percentage, value;\r\n percentage = ((pos) / (this.maxHandlePos || 1));\r\n value = this.step * Math.round(percentage * (this.max - this.min) / this.step) + this.min;\r\n return Number((value).toFixed(this.toFixed));\r\n };\r\n\r\n Plugin.prototype.setValue = function(value) {\r\n if (value === this.value && this.$element[0].value !== '') {\r\n return;\r\n }\r\n\r\n // Set the new value and fire the `input` event\r\n this.$element\r\n .val(value)\r\n .trigger('input', { origin: this.identifier });\r\n };\r\n\r\n Plugin.prototype.destroy = function() {\r\n this.$document.off('.' + this.identifier);\r\n this.$window.off('.' + this.identifier);\r\n\r\n this.$element\r\n .off('.' + this.identifier)\r\n .removeAttr('style')\r\n .removeData('plugin_' + pluginName);\r\n\r\n // Remove the generated markup\r\n if (this.$range && this.$range.length) {\r\n this.$range[0].parentNode.removeChild(this.$range[0]);\r\n }\r\n };\r\n\r\n // A really lightweight plugin wrapper around the constructor,\r\n // preventing against multiple instantiations\r\n $.fn[pluginName] = function(options) {\r\n var args = Array.prototype.slice.call(arguments, 1);\r\n\r\n return this.each(function() {\r\n var $this = $(this),\r\n data = $this.data('plugin_' + pluginName);\r\n\r\n // Create a new instance.\r\n if (!data) {\r\n $this.data('plugin_' + pluginName, (data = new Plugin(this, options)));\r\n }\r\n\r\n // Make it possible to access methods from public.\r\n // e.g `$element.rangeslider('method');`\r\n if (typeof options === 'string') {\r\n data[options].apply(data, args);\r\n }\r\n });\r\n };\r\n\r\n return 'rangeslider.js is available in jQuery context e.g $(selector).rangeslider(options);';\r\n\r\n}));\n/* js/rangeTest.js */\r\n\r\n\r\n$('input[type=\"range\"]').rangeslider({\r\n polyfill : false,\r\n onInit : function() {\r\n \r\n \r\n this.output = $( '
    ' ).insertAfter( this.$range ).html( this.$element.val() );\r\n },\r\n onSlide : function( position, value ) {\r\n this.output.html( value );\r\n }\r\n});\n/**\r\n * sifter.js\r\n * Copyright (c) 2013 Brian Reavis & contributors\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\"); you may not use this\r\n * file except in compliance with the License. You may obtain a copy of the License at:\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software distributed under\r\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF\r\n * ANY KIND, either express or implied. See the License for the specific language\r\n * governing permissions and limitations under the License.\r\n *\r\n * @author Brian Reavis \r\n */\r\n\r\n(function(root, factory) {\r\n\tif (typeof define === 'function' && define.amd) {\r\n\t\tdefine('sifter', factory);\r\n\t} else if (typeof exports === 'object') {\r\n\t\tmodule.exports = factory();\r\n\t} else {\r\n\t\troot.Sifter = factory();\r\n\t}\r\n}(this, function() {\r\n\r\n\t/**\r\n\t * Textually searches arrays and hashes of objects\r\n\t * by property (or multiple properties). Designed\r\n\t * specifically for autocomplete.\r\n\t *\r\n\t * @constructor\r\n\t * @param {array|object} items\r\n\t * @param {object} items\r\n\t */\r\n\tvar Sifter = function(items, settings) {\r\n\t\tthis.items = items;\r\n\t\tthis.settings = settings || {diacritics: true};\r\n\t};\r\n\r\n\t/**\r\n\t * Splits a search string into an array of individual\r\n\t * regexps to be used to match results.\r\n\t *\r\n\t * @param {string} query\r\n\t * @returns {array}\r\n\t */\r\n\tSifter.prototype.tokenize = function(query) {\r\n\t\tquery = trim(String(query || '').toLowerCase());\r\n\t\tif (!query || !query.length) return [];\r\n\r\n\t\tvar i, n, regex, letter;\r\n\t\tvar tokens = [];\r\n\t\tvar words = query.split(/ +/);\r\n\r\n\t\tfor (i = 0, n = words.length; i < n; i++) {\r\n\t\t\tregex = escape_regex(words[i]);\r\n\t\t\tif (this.settings.diacritics) {\r\n\t\t\t\tfor (letter in DIACRITICS) {\r\n\t\t\t\t\tif (DIACRITICS.hasOwnProperty(letter)) {\r\n\t\t\t\t\t\tregex = regex.replace(new RegExp(letter, 'g'), DIACRITICS[letter]);\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\ttokens.push({\r\n\t\t\t\tstring : words[i],\r\n\t\t\t\tregex : new RegExp(regex, 'i')\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\treturn tokens;\r\n\t};\r\n\r\n\t/**\r\n\t * Iterates over arrays and hashes.\r\n\t *\r\n\t * ```\r\n\t * this.iterator(this.items, function(item, id) {\r\n\t * // invoked for each item\r\n\t * });\r\n\t * ```\r\n\t *\r\n\t * @param {array|object} object\r\n\t */\r\n\tSifter.prototype.iterator = function(object, callback) {\r\n\t\tvar iterator;\r\n\t\tif (is_array(object)) {\r\n\t\t\titerator = Array.prototype.forEach || function(callback) {\r\n\t\t\t\tfor (var i = 0, n = this.length; i < n; i++) {\r\n\t\t\t\t\tcallback(this[i], i, this);\r\n\t\t\t\t}\r\n\t\t\t};\r\n\t\t} else {\r\n\t\t\titerator = function(callback) {\r\n\t\t\t\tfor (var key in this) {\r\n\t\t\t\t\tif (this.hasOwnProperty(key)) {\r\n\t\t\t\t\t\tcallback(this[key], key, this);\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\titerator.apply(object, [callback]);\r\n\t};\r\n\r\n\t/**\r\n\t * Returns a function to be used to score individual results.\r\n\t *\r\n\t * Good matches will have a higher score than poor matches.\r\n\t * If an item is not a match, 0 will be returned by the function.\r\n\t *\r\n\t * @param {object|string} search\r\n\t * @param {object} options (optional)\r\n\t * @returns {function}\r\n\t */\r\n\tSifter.prototype.getScoreFunction = function(search, options) {\r\n\t\tvar self, fields, tokens, token_count;\r\n\r\n\t\tself = this;\r\n\t\tsearch = self.prepareSearch(search, options);\r\n\t\ttokens = search.tokens;\r\n\t\tfields = search.options.fields;\r\n\t\ttoken_count = tokens.length;\r\n\r\n\t\t/**\r\n\t\t * Calculates how close of a match the\r\n\t\t * given value is against a search token.\r\n\t\t *\r\n\t\t * @param {mixed} value\r\n\t\t * @param {object} token\r\n\t\t * @return {number}\r\n\t\t */\r\n\t\tvar scoreValue = function(value, token) {\r\n\t\t\tvar score, pos;\r\n\r\n\t\t\tif (!value) return 0;\r\n\t\t\tvalue = String(value || '');\r\n\t\t\tpos = value.search(token.regex);\r\n\t\t\tif (pos === -1) return 0;\r\n\t\t\tscore = token.string.length / value.length;\r\n\t\t\tif (pos === 0) score += 0.5;\r\n\t\t\treturn score;\r\n\t\t};\r\n\r\n\t\t/**\r\n\t\t * Calculates the score of an object\r\n\t\t * against the search query.\r\n\t\t *\r\n\t\t * @param {object} token\r\n\t\t * @param {object} data\r\n\t\t * @return {number}\r\n\t\t */\r\n\t\tvar scoreObject = (function() {\r\n\t\t\tvar field_count = fields.length;\r\n\t\t\tif (!field_count) {\r\n\t\t\t\treturn function() { return 0; };\r\n\t\t\t}\r\n\t\t\tif (field_count === 1) {\r\n\t\t\t\treturn function(token, data) {\r\n\t\t\t\t\treturn scoreValue(data[fields[0]], token);\r\n\t\t\t\t};\r\n\t\t\t}\r\n\t\t\treturn function(token, data) {\r\n\t\t\t\tfor (var i = 0, sum = 0; i < field_count; i++) {\r\n\t\t\t\t\tsum += scoreValue(data[fields[i]], token);\r\n\t\t\t\t}\r\n\t\t\t\treturn sum / field_count;\r\n\t\t\t};\r\n\t\t})();\r\n\r\n\t\tif (!token_count) {\r\n\t\t\treturn function() { return 0; };\r\n\t\t}\r\n\t\tif (token_count === 1) {\r\n\t\t\treturn function(data) {\r\n\t\t\t\treturn scoreObject(tokens[0], data);\r\n\t\t\t};\r\n\t\t}\r\n\r\n\t\tif (search.options.conjunction === 'and') {\r\n\t\t\treturn function(data) {\r\n\t\t\t\tvar score;\r\n\t\t\t\tfor (var i = 0, sum = 0; i < token_count; i++) {\r\n\t\t\t\t\tscore = scoreObject(tokens[i], data);\r\n\t\t\t\t\tif (score <= 0) return 0;\r\n\t\t\t\t\tsum += score;\r\n\t\t\t\t}\r\n\t\t\t\treturn sum / token_count;\r\n\t\t\t};\r\n\t\t} else {\r\n\t\t\treturn function(data) {\r\n\t\t\t\tfor (var i = 0, sum = 0; i < token_count; i++) {\r\n\t\t\t\t\tsum += scoreObject(tokens[i], data);\r\n\t\t\t\t}\r\n\t\t\t\treturn sum / token_count;\r\n\t\t\t};\r\n\t\t}\r\n\t};\r\n\r\n\t/**\r\n\t * Returns a function that can be used to compare two\r\n\t * results, for sorting purposes. If no sorting should\r\n\t * be performed, `null` will be returned.\r\n\t *\r\n\t * @param {string|object} search\r\n\t * @param {object} options\r\n\t * @return function(a,b)\r\n\t */\r\n\tSifter.prototype.getSortFunction = function(search, options) {\r\n\t\tvar i, n, self, field, fields, fields_count, multiplier, multipliers, get_field, implicit_score, sort;\r\n\r\n\t\tself = this;\r\n\t\tsearch = self.prepareSearch(search, options);\r\n\t\tsort = (!search.query && options.sort_empty) || options.sort;\r\n\r\n\t\t/**\r\n\t\t * Fetches the specified sort field value\r\n\t\t * from a search result item.\r\n\t\t *\r\n\t\t * @param {string} name\r\n\t\t * @param {object} result\r\n\t\t * @return {mixed}\r\n\t\t */\r\n\t\tget_field = function(name, result) {\r\n\t\t\tif (name === '$score') return result.score;\r\n\t\t\treturn self.items[result.id][name];\r\n\t\t};\r\n\r\n\t\t// parse options\r\n\t\tfields = [];\r\n\t\tif (sort) {\r\n\t\t\tfor (i = 0, n = sort.length; i < n; i++) {\r\n\t\t\t\tif (search.query || sort[i].field !== '$score') {\r\n\t\t\t\t\tfields.push(sort[i]);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t// the \"$score\" field is implied to be the primary\r\n\t\t// sort field, unless it's manually specified\r\n\t\tif (search.query) {\r\n\t\t\timplicit_score = true;\r\n\t\t\tfor (i = 0, n = fields.length; i < n; i++) {\r\n\t\t\t\tif (fields[i].field === '$score') {\r\n\t\t\t\t\timplicit_score = false;\r\n\t\t\t\t\tbreak;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\tif (implicit_score) {\r\n\t\t\t\tfields.unshift({field: '$score', direction: 'desc'});\r\n\t\t\t}\r\n\t\t} else {\r\n\t\t\tfor (i = 0, n = fields.length; i < n; i++) {\r\n\t\t\t\tif (fields[i].field === '$score') {\r\n\t\t\t\t\tfields.splice(i, 1);\r\n\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\tmultipliers = [];\r\n\t\tfor (i = 0, n = fields.length; i < n; i++) {\r\n\t\t\tmultipliers.push(fields[i].direction === 'desc' ? -1 : 1);\r\n\t\t}\r\n\r\n\t\t// build function\r\n\t\tfields_count = fields.length;\r\n\t\tif (!fields_count) {\r\n\t\t\treturn null;\r\n\t\t} else if (fields_count === 1) {\r\n\t\t\tfield = fields[0].field;\r\n\t\t\tmultiplier = multipliers[0];\r\n\t\t\treturn function(a, b) {\r\n\t\t\t\treturn multiplier * cmp(\r\n\t\t\t\t\tget_field(field, a),\r\n\t\t\t\t\tget_field(field, b)\r\n\t\t\t\t);\r\n\t\t\t};\r\n\t\t} else {\r\n\t\t\treturn function(a, b) {\r\n\t\t\t\tvar i, result, a_value, b_value, field;\r\n\t\t\t\tfor (i = 0; i < fields_count; i++) {\r\n\t\t\t\t\tfield = fields[i].field;\r\n\t\t\t\t\tresult = multipliers[i] * cmp(\r\n\t\t\t\t\t\tget_field(field, a),\r\n\t\t\t\t\t\tget_field(field, b)\r\n\t\t\t\t\t);\r\n\t\t\t\t\tif (result) return result;\r\n\t\t\t\t}\r\n\t\t\t\treturn 0;\r\n\t\t\t};\r\n\t\t}\r\n\t};\r\n\r\n\t/**\r\n\t * Parses a search query and returns an object\r\n\t * with tokens and fields ready to be populated\r\n\t * with results.\r\n\t *\r\n\t * @param {string} query\r\n\t * @param {object} options\r\n\t * @returns {object}\r\n\t */\r\n\tSifter.prototype.prepareSearch = function(query, options) {\r\n\t\tif (typeof query === 'object') return query;\r\n\r\n\t\toptions = extend({}, options);\r\n\r\n\t\tvar option_fields = options.fields;\r\n\t\tvar option_sort = options.sort;\r\n\t\tvar option_sort_empty = options.sort_empty;\r\n\r\n\t\tif (option_fields && !is_array(option_fields)) options.fields = [option_fields];\r\n\t\tif (option_sort && !is_array(option_sort)) options.sort = [option_sort];\r\n\t\tif (option_sort_empty && !is_array(option_sort_empty)) options.sort_empty = [option_sort_empty];\r\n\r\n\t\treturn {\r\n\t\t\toptions : options,\r\n\t\t\tquery : String(query || '').toLowerCase(),\r\n\t\t\ttokens : this.tokenize(query),\r\n\t\t\ttotal : 0,\r\n\t\t\titems : []\r\n\t\t};\r\n\t};\r\n\r\n\t/**\r\n\t * Searches through all items and returns a sorted array of matches.\r\n\t *\r\n\t * The `options` parameter can contain:\r\n\t *\r\n\t * - fields {string|array}\r\n\t * - sort {array}\r\n\t * - score {function}\r\n\t * - filter {bool}\r\n\t * - limit {integer}\r\n\t *\r\n\t * Returns an object containing:\r\n\t *\r\n\t * - options {object}\r\n\t * - query {string}\r\n\t * - tokens {array}\r\n\t * - total {int}\r\n\t * - items {array}\r\n\t *\r\n\t * @param {string} query\r\n\t * @param {object} options\r\n\t * @returns {object}\r\n\t */\r\n\tSifter.prototype.search = function(query, options) {\r\n\t\tvar self = this, value, score, search, calculateScore;\r\n\t\tvar fn_sort;\r\n\t\tvar fn_score;\r\n\r\n\t\tsearch = this.prepareSearch(query, options);\r\n\t\toptions = search.options;\r\n\t\tquery = search.query;\r\n\r\n\t\t// generate result scoring function\r\n\t\tfn_score = options.score || self.getScoreFunction(search);\r\n\r\n\t\t// perform search and sort\r\n\t\tif (query.length) {\r\n\t\t\tself.iterator(self.items, function(item, id) {\r\n\t\t\t\tscore = fn_score(item);\r\n\t\t\t\tif (options.filter === false || score > 0) {\r\n\t\t\t\t\tsearch.items.push({'score': score, 'id': id});\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t} else {\r\n\t\t\tself.iterator(self.items, function(item, id) {\r\n\t\t\t\tsearch.items.push({'score': 1, 'id': id});\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\tfn_sort = self.getSortFunction(search, options);\r\n\t\tif (fn_sort) search.items.sort(fn_sort);\r\n\r\n\t\t// apply limits\r\n\t\tsearch.total = search.items.length;\r\n\t\tif (typeof options.limit === 'number') {\r\n\t\t\tsearch.items = search.items.slice(0, options.limit);\r\n\t\t}\r\n\r\n\t\treturn search;\r\n\t};\r\n\r\n\t// utilities\r\n\t// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -\r\n\r\n\tvar cmp = function(a, b) {\r\n\t\tif (typeof a === 'number' && typeof b === 'number') {\r\n\t\t\treturn a > b ? 1 : (a < b ? -1 : 0);\r\n\t\t}\r\n\t\ta = asciifold(String(a || ''));\r\n\t\tb = asciifold(String(b || ''));\r\n\t\tif (a > b) return 1;\r\n\t\tif (b > a) return -1;\r\n\t\treturn 0;\r\n\t};\r\n\r\n\tvar extend = function(a, b) {\r\n\t\tvar i, n, k, object;\r\n\t\tfor (i = 1, n = arguments.length; i < n; i++) {\r\n\t\t\tobject = arguments[i];\r\n\t\t\tif (!object) continue;\r\n\t\t\tfor (k in object) {\r\n\t\t\t\tif (object.hasOwnProperty(k)) {\r\n\t\t\t\t\ta[k] = object[k];\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn a;\r\n\t};\r\n\r\n\tvar trim = function(str) {\r\n\t\treturn (str + '').replace(/^\\s+|\\s+$|/g, '');\r\n\t};\r\n\r\n\tvar escape_regex = function(str) {\r\n\t\treturn (str + '').replace(/([.?*+^$[\\]\\\\(){}|-])/g, '\\\\$1');\r\n\t};\r\n\r\n\tvar is_array = Array.isArray || ($ && $.isArray) || function(object) {\r\n\t\treturn Object.prototype.toString.call(object) === '[object Array]';\r\n\t};\r\n\r\n\tvar DIACRITICS = {\r\n\t\t'a': '[aÀÁÂÃÄÅàáâãäåĀāąĄ]',\r\n\t\t'c': '[cÇçćĆčČ]',\r\n\t\t'd': '[dđĐďĎ]',\r\n\t\t'e': '[eÈÉÊËèéêëěĚĒēęĘ]',\r\n\t\t'i': '[iÌÍÎÏìíîïĪī]',\r\n\t\t'l': '[lłŁ]',\r\n\t\t'n': '[nÑñňŇńŃ]',\r\n\t\t'o': '[oÒÓÔÕÕÖØòóôõöøŌō]',\r\n\t\t'r': '[rřŘ]',\r\n\t\t's': '[sŠšśŚ]',\r\n\t\t't': '[tťŤ]',\r\n\t\t'u': '[uÙÚÛÜùúûüůŮŪū]',\r\n\t\t'y': '[yŸÿýÝ]',\r\n\t\t'z': '[zŽžżŻźŹ]'\r\n\t};\r\n\r\n\tvar asciifold = (function() {\r\n\t\tvar i, n, k, chunk;\r\n\t\tvar foreignletters = '';\r\n\t\tvar lookup = {};\r\n\t\tfor (k in DIACRITICS) {\r\n\t\t\tif (DIACRITICS.hasOwnProperty(k)) {\r\n\t\t\t\tchunk = DIACRITICS[k].substring(2, DIACRITICS[k].length - 1);\r\n\t\t\t\tforeignletters += chunk;\r\n\t\t\t\tfor (i = 0, n = chunk.length; i < n; i++) {\r\n\t\t\t\t\tlookup[chunk.charAt(i)] = k;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t\tvar regexp = new RegExp('[' + foreignletters + ']', 'g');\r\n\t\treturn function(str) {\r\n\t\t\treturn str.replace(regexp, function(foreignletter) {\r\n\t\t\t\treturn lookup[foreignletter];\r\n\t\t\t}).toLowerCase();\r\n\t\t};\r\n\t})();\r\n\r\n\r\n\t// export\r\n\t// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -\r\n\r\n\treturn Sifter;\r\n}));\r\n\r\n\r\n\r\n/**\r\n * microplugin.js\r\n * Copyright (c) 2013 Brian Reavis & contributors\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\"); you may not use this\r\n * file except in compliance with the License. You may obtain a copy of the License at:\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software distributed under\r\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF\r\n * ANY KIND, either express or implied. See the License for the specific language\r\n * governing permissions and limitations under the License.\r\n *\r\n * @author Brian Reavis \r\n */\r\n\r\n(function(root, factory) {\r\n\tif (typeof define === 'function' && define.amd) {\r\n\t\tdefine('microplugin', factory);\r\n\t} else if (typeof exports === 'object') {\r\n\t\tmodule.exports = factory();\r\n\t} else {\r\n\t\troot.MicroPlugin = factory();\r\n\t}\r\n}(this, function() {\r\n\tvar MicroPlugin = {};\r\n\r\n\tMicroPlugin.mixin = function(Interface) {\r\n\t\tInterface.plugins = {};\r\n\r\n\t\t/**\r\n\t\t * Initializes the listed plugins (with options).\r\n\t\t * Acceptable formats:\r\n\t\t *\r\n\t\t * List (without options):\r\n\t\t * ['a', 'b', 'c']\r\n\t\t *\r\n\t\t * List (with options):\r\n\t\t * [{'name': 'a', options: {}}, {'name': 'b', options: {}}]\r\n\t\t *\r\n\t\t * Hash (with options):\r\n\t\t * {'a': { ... }, 'b': { ... }, 'c': { ... }}\r\n\t\t *\r\n\t\t * @param {mixed} plugins\r\n\t\t */\r\n\t\tInterface.prototype.initializePlugins = function(plugins) {\r\n\t\t\tvar i, n, key;\r\n\t\t\tvar self = this;\r\n\t\t\tvar queue = [];\r\n\r\n\t\t\tself.plugins = {\r\n\t\t\t\tnames : [],\r\n\t\t\t\tsettings : {},\r\n\t\t\t\trequested : {},\r\n\t\t\t\tloaded : {}\r\n\t\t\t};\r\n\r\n\t\t\tif (utils.isArray(plugins)) {\r\n\t\t\t\tfor (i = 0, n = plugins.length; i < n; i++) {\r\n\t\t\t\t\tif (typeof plugins[i] === 'string') {\r\n\t\t\t\t\t\tqueue.push(plugins[i]);\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\tself.plugins.settings[plugins[i].name] = plugins[i].options;\r\n\t\t\t\t\t\tqueue.push(plugins[i].name);\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t} else if (plugins) {\r\n\t\t\t\tfor (key in plugins) {\r\n\t\t\t\t\tif (plugins.hasOwnProperty(key)) {\r\n\t\t\t\t\t\tself.plugins.settings[key] = plugins[key];\r\n\t\t\t\t\t\tqueue.push(key);\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\twhile (queue.length) {\r\n\t\t\t\tself.require(queue.shift());\r\n\t\t\t}\r\n\t\t};\r\n\r\n\t\tInterface.prototype.loadPlugin = function(name) {\r\n\t\t\tvar self = this;\r\n\t\t\tvar plugins = self.plugins;\r\n\t\t\tvar plugin = Interface.plugins[name];\r\n\r\n\t\t\tif (!Interface.plugins.hasOwnProperty(name)) {\r\n\t\t\t\tthrow new Error('Unable to find \"' + name + '\" plugin');\r\n\t\t\t}\r\n\r\n\t\t\tplugins.requested[name] = true;\r\n\t\t\tplugins.loaded[name] = plugin.fn.apply(self, [self.plugins.settings[name] || {}]);\r\n\t\t\tplugins.names.push(name);\r\n\t\t};\r\n\r\n\t\t/**\r\n\t\t * Initializes a plugin.\r\n\t\t *\r\n\t\t * @param {string} name\r\n\t\t */\r\n\t\tInterface.prototype.require = function(name) {\r\n\t\t\tvar self = this;\r\n\t\t\tvar plugins = self.plugins;\r\n\r\n\t\t\tif (!self.plugins.loaded.hasOwnProperty(name)) {\r\n\t\t\t\tif (plugins.requested[name]) {\r\n\t\t\t\t\tthrow new Error('Plugin has circular dependency (\"' + name + '\")');\r\n\t\t\t\t}\r\n\t\t\t\tself.loadPlugin(name);\r\n\t\t\t}\r\n\r\n\t\t\treturn plugins.loaded[name];\r\n\t\t};\r\n\r\n\t\t/**\r\n\t\t * Registers a plugin.\r\n\t\t *\r\n\t\t * @param {string} name\r\n\t\t * @param {function} fn\r\n\t\t */\r\n\t\tInterface.define = function(name, fn) {\r\n\t\t\tInterface.plugins[name] = {\r\n\t\t\t\t'name' : name,\r\n\t\t\t\t'fn' : fn\r\n\t\t\t};\r\n\t\t};\r\n\t};\r\n\r\n\tvar utils = {\r\n\t\tisArray: Array.isArray || function(vArg) {\r\n\t\t\treturn Object.prototype.toString.call(vArg) === '[object Array]';\r\n\t\t}\r\n\t};\r\n\r\n\treturn MicroPlugin;\r\n}));\r\n\r\n/**\r\n * selectize.js (v0.12.1)\r\n * Copyright (c) 2013–2015 Brian Reavis & contributors\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\"); you may not use this\r\n * file except in compliance with the License. You may obtain a copy of the License at:\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software distributed under\r\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF\r\n * ANY KIND, either express or implied. See the License for the specific language\r\n * governing permissions and limitations under the License.\r\n *\r\n * @author Brian Reavis \r\n */\r\n\r\n/*jshint curly:false */\r\n/*jshint browser:true */\r\n\r\n(function(root, factory) {\r\n\tif (typeof define === 'function' && define.amd) {\r\n\t\tdefine('selectize', ['jquery','sifter','microplugin'], factory);\r\n\t} else if (typeof exports === 'object') {\r\n\t\tmodule.exports = factory(require('jquery'), require('sifter'), require('microplugin'));\r\n\t} else {\r\n\t\troot.Selectize = factory(root.jQuery, root.Sifter, root.MicroPlugin);\r\n\t}\r\n}(this, function($, Sifter, MicroPlugin) {\r\n\t'use strict';\r\n\r\n\tvar highlight = function($element, pattern) {\r\n\t\tif (typeof pattern === 'string' && !pattern.length) return;\r\n\t\tvar regex = (typeof pattern === 'string') ? new RegExp(pattern, 'i') : pattern;\r\n\t\r\n\t\tvar highlight = function(node) {\r\n\t\t\tvar skip = 0;\r\n\t\t\tif (node.nodeType === 3) {\r\n\t\t\t\tvar pos = node.data.search(regex);\r\n\t\t\t\tif (pos >= 0 && node.data.length > 0) {\r\n\t\t\t\t\tvar match = node.data.match(regex);\r\n\t\t\t\t\tvar spannode = document.createElement('span');\r\n\t\t\t\t\tspannode.className = 'highlight';\r\n\t\t\t\t\tvar middlebit = node.splitText(pos);\r\n\t\t\t\t\tvar endbit = middlebit.splitText(match[0].length);\r\n\t\t\t\t\tvar middleclone = middlebit.cloneNode(true);\r\n\t\t\t\t\tspannode.appendChild(middleclone);\r\n\t\t\t\t\tmiddlebit.parentNode.replaceChild(spannode, middlebit);\r\n\t\t\t\t\tskip = 1;\r\n\t\t\t\t}\r\n\t\t\t} else if (node.nodeType === 1 && node.childNodes && !/(script|style)/i.test(node.tagName)) {\r\n\t\t\t\tfor (var i = 0; i < node.childNodes.length; ++i) {\r\n\t\t\t\t\ti += highlight(node.childNodes[i]);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\treturn skip;\r\n\t\t};\r\n\t\r\n\t\treturn $element.each(function() {\r\n\t\t\thighlight(this);\r\n\t\t});\r\n\t};\r\n\t\r\n\tvar MicroEvent = function() {};\r\n\tMicroEvent.prototype = {\r\n\t\ton: function(event, fct){\r\n\t\t\tthis._events = this._events || {};\r\n\t\t\tthis._events[event] = this._events[event] || [];\r\n\t\t\tthis._events[event].push(fct);\r\n\t\t},\r\n\t\toff: function(event, fct){\r\n\t\t\tvar n = arguments.length;\r\n\t\t\tif (n === 0) return delete this._events;\r\n\t\t\tif (n === 1) return delete this._events[event];\r\n\t\r\n\t\t\tthis._events = this._events || {};\r\n\t\t\tif (event in this._events === false) return;\r\n\t\t\tthis._events[event].splice(this._events[event].indexOf(fct), 1);\r\n\t\t},\r\n\t\ttrigger: function(event /* , args... */){\r\n\t\t\tthis._events = this._events || {};\r\n\t\t\tif (event in this._events === false) return;\r\n\t\t\tfor (var i = 0; i < this._events[event].length; i++){\r\n\t\t\t\tthis._events[event][i].apply(this, Array.prototype.slice.call(arguments, 1));\r\n\t\t\t}\r\n\t\t}\r\n\t};\r\n\t\r\n\t/**\r\n\t * Mixin will delegate all MicroEvent.js function in the destination object.\r\n\t *\r\n\t * - MicroEvent.mixin(Foobar) will make Foobar able to use MicroEvent\r\n\t *\r\n\t * @param {object} the object which will support MicroEvent\r\n\t */\r\n\tMicroEvent.mixin = function(destObject){\r\n\t\tvar props = ['on', 'off', 'trigger'];\r\n\t\tfor (var i = 0; i < props.length; i++){\r\n\t\t\tdestObject.prototype[props[i]] = MicroEvent.prototype[props[i]];\r\n\t\t}\r\n\t};\r\n\t\r\n\tvar IS_MAC = /Mac/.test(navigator.userAgent);\r\n\t\r\n\tvar KEY_A = 65;\r\n\tvar KEY_COMMA = 188;\r\n\tvar KEY_RETURN = 13;\r\n\tvar KEY_ESC = 27;\r\n\tvar KEY_LEFT = 37;\r\n\tvar KEY_UP = 38;\r\n\tvar KEY_P = 80;\r\n\tvar KEY_RIGHT = 39;\r\n\tvar KEY_DOWN = 40;\r\n\tvar KEY_N = 78;\r\n\tvar KEY_BACKSPACE = 8;\r\n\tvar KEY_DELETE = 46;\r\n\tvar KEY_SHIFT = 16;\r\n\tvar KEY_CMD = IS_MAC ? 91 : 17;\r\n\tvar KEY_CTRL = IS_MAC ? 18 : 17;\r\n\tvar KEY_TAB = 9;\r\n\t\r\n\tvar TAG_SELECT = 1;\r\n\tvar TAG_INPUT = 2;\r\n\t\r\n\t// for now, android support in general is too spotty to support validity\r\n\tvar SUPPORTS_VALIDITY_API = !/android/i.test(window.navigator.userAgent) && !!document.createElement('form').validity;\r\n\t\r\n\tvar isset = function(object) {\r\n\t\treturn typeof object !== 'undefined';\r\n\t};\r\n\t\r\n\t/**\r\n\t * Converts a scalar to its best string representation\r\n\t * for hash keys and HTML attribute values.\r\n\t *\r\n\t * Transformations:\r\n\t * 'str' -> 'str'\r\n\t * null -> ''\r\n\t * undefined -> ''\r\n\t * true -> '1'\r\n\t * false -> '0'\r\n\t * 0 -> '0'\r\n\t * 1 -> '1'\r\n\t *\r\n\t * @param {string} value\r\n\t * @returns {string|null}\r\n\t */\r\n\tvar hash_key = function(value) {\r\n\t\tif (typeof value === 'undefined' || value === null) return null;\r\n\t\tif (typeof value === 'boolean') return value ? '1' : '0';\r\n\t\treturn value + '';\r\n\t};\r\n\t\r\n\t/**\r\n\t * Escapes a string for use within HTML.\r\n\t *\r\n\t * @param {string} str\r\n\t * @returns {string}\r\n\t */\r\n\tvar escape_html = function(str) {\r\n\t\treturn (str + '')\r\n\t\t\t.replace(/&/g, '&')\r\n\t\t\t.replace(//g, '>')\r\n\t\t\t.replace(/\"/g, '"');\r\n\t};\r\n\t\r\n\t/**\r\n\t * Escapes \"$\" characters in replacement strings.\r\n\t *\r\n\t * @param {string} str\r\n\t * @returns {string}\r\n\t */\r\n\tvar escape_replace = function(str) {\r\n\t\treturn (str + '').replace(/\\$/g, '$$$$');\r\n\t};\r\n\t\r\n\tvar hook = {};\r\n\t\r\n\t/**\r\n\t * Wraps `method` on `self` so that `fn`\r\n\t * is invoked before the original method.\r\n\t *\r\n\t * @param {object} self\r\n\t * @param {string} method\r\n\t * @param {function} fn\r\n\t */\r\n\thook.before = function(self, method, fn) {\r\n\t\tvar original = self[method];\r\n\t\tself[method] = function() {\r\n\t\t\tfn.apply(self, arguments);\r\n\t\t\treturn original.apply(self, arguments);\r\n\t\t};\r\n\t};\r\n\t\r\n\t/**\r\n\t * Wraps `method` on `self` so that `fn`\r\n\t * is invoked after the original method.\r\n\t *\r\n\t * @param {object} self\r\n\t * @param {string} method\r\n\t * @param {function} fn\r\n\t */\r\n\thook.after = function(self, method, fn) {\r\n\t\tvar original = self[method];\r\n\t\tself[method] = function() {\r\n\t\t\tvar result = original.apply(self, arguments);\r\n\t\t\tfn.apply(self, arguments);\r\n\t\t\treturn result;\r\n\t\t};\r\n\t};\r\n\t\r\n\t/**\r\n\t * Wraps `fn` so that it can only be invoked once.\r\n\t *\r\n\t * @param {function} fn\r\n\t * @returns {function}\r\n\t */\r\n\tvar once = function(fn) {\r\n\t\tvar called = false;\r\n\t\treturn function() {\r\n\t\t\tif (called) return;\r\n\t\t\tcalled = true;\r\n\t\t\tfn.apply(this, arguments);\r\n\t\t};\r\n\t};\r\n\t\r\n\t/**\r\n\t * Wraps `fn` so that it can only be called once\r\n\t * every `delay` milliseconds (invoked on the falling edge).\r\n\t *\r\n\t * @param {function} fn\r\n\t * @param {int} delay\r\n\t * @returns {function}\r\n\t */\r\n\tvar debounce = function(fn, delay) {\r\n\t\tvar timeout;\r\n\t\treturn function() {\r\n\t\t\tvar self = this;\r\n\t\t\tvar args = arguments;\r\n\t\t\twindow.clearTimeout(timeout);\r\n\t\t\ttimeout = window.setTimeout(function() {\r\n\t\t\t\tfn.apply(self, args);\r\n\t\t\t}, delay);\r\n\t\t};\r\n\t};\r\n\t\r\n\t/**\r\n\t * Debounce all fired events types listed in `types`\r\n\t * while executing the provided `fn`.\r\n\t *\r\n\t * @param {object} self\r\n\t * @param {array} types\r\n\t * @param {function} fn\r\n\t */\r\n\tvar debounce_events = function(self, types, fn) {\r\n\t\tvar type;\r\n\t\tvar trigger = self.trigger;\r\n\t\tvar event_args = {};\r\n\t\r\n\t\t// override trigger method\r\n\t\tself.trigger = function() {\r\n\t\t\tvar type = arguments[0];\r\n\t\t\tif (types.indexOf(type) !== -1) {\r\n\t\t\t\tevent_args[type] = arguments;\r\n\t\t\t} else {\r\n\t\t\t\treturn trigger.apply(self, arguments);\r\n\t\t\t}\r\n\t\t};\r\n\t\r\n\t\t// invoke provided function\r\n\t\tfn.apply(self, []);\r\n\t\tself.trigger = trigger;\r\n\t\r\n\t\t// trigger queued events\r\n\t\tfor (type in event_args) {\r\n\t\t\tif (event_args.hasOwnProperty(type)) {\r\n\t\t\t\ttrigger.apply(self, event_args[type]);\r\n\t\t\t}\r\n\t\t}\r\n\t};\r\n\t\r\n\t/**\r\n\t * A workaround for http://bugs.jquery.com/ticket/6696\r\n\t *\r\n\t * @param {object} $parent - Parent element to listen on.\r\n\t * @param {string} event - Event name.\r\n\t * @param {string} selector - Descendant selector to filter by.\r\n\t * @param {function} fn - Event handler.\r\n\t */\r\n\tvar watchChildEvent = function($parent, event, selector, fn) {\r\n\t\t$parent.on(event, selector, function(e) {\r\n\t\t\tvar child = e.target;\r\n\t\t\twhile (child && child.parentNode !== $parent[0]) {\r\n\t\t\t\tchild = child.parentNode;\r\n\t\t\t}\r\n\t\t\te.currentTarget = child;\r\n\t\t\treturn fn.apply(this, [e]);\r\n\t\t});\r\n\t};\r\n\t\r\n\t/**\r\n\t * Determines the current selection within a text input control.\r\n\t * Returns an object containing:\r\n\t * - start\r\n\t * - length\r\n\t *\r\n\t * @param {object} input\r\n\t * @returns {object}\r\n\t */\r\n\tvar getSelection = function(input) {\r\n\t\tvar result = {};\r\n\t\tif ('selectionStart' in input) {\r\n\t\t\tresult.start = input.selectionStart;\r\n\t\t\tresult.length = input.selectionEnd - result.start;\r\n\t\t} else if (document.selection) {\r\n\t\t\tinput.focus();\r\n\t\t\tvar sel = document.selection.createRange();\r\n\t\t\tvar selLen = document.selection.createRange().text.length;\r\n\t\t\tsel.moveStart('character', -input.value.length);\r\n\t\t\tresult.start = sel.text.length - selLen;\r\n\t\t\tresult.length = selLen;\r\n\t\t}\r\n\t\treturn result;\r\n\t};\r\n\t\r\n\t/**\r\n\t * Copies CSS properties from one element to another.\r\n\t *\r\n\t * @param {object} $from\r\n\t * @param {object} $to\r\n\t * @param {array} properties\r\n\t */\r\n\tvar transferStyles = function($from, $to, properties) {\r\n\t\tvar i, n, styles = {};\r\n\t\tif (properties) {\r\n\t\t\tfor (i = 0, n = properties.length; i < n; i++) {\r\n\t\t\t\tstyles[properties[i]] = $from.css(properties[i]);\r\n\t\t\t}\r\n\t\t} else {\r\n\t\t\tstyles = $from.css();\r\n\t\t}\r\n\t\t$to.css(styles);\r\n\t};\r\n\t\r\n\t/**\r\n\t * Measures the width of a string within a\r\n\t * parent element (in pixels).\r\n\t *\r\n\t * @param {string} str\r\n\t * @param {object} $parent\r\n\t * @returns {int}\r\n\t */\r\n\tvar measureString = function(str, $parent) {\r\n\t\tif (!str) {\r\n\t\t\treturn 0;\r\n\t\t}\r\n\t\r\n\t\tvar $test = $('').css({\r\n\t\t\tposition: 'absolute',\r\n\t\t\ttop: -99999,\r\n\t\t\tleft: -99999,\r\n\t\t\twidth: 'auto',\r\n\t\t\tpadding: 0,\r\n\t\t\twhiteSpace: 'pre'\r\n\t\t}).text(str).appendTo('body');\r\n\t\r\n\t\ttransferStyles($parent, $test, [\r\n\t\t\t'letterSpacing',\r\n\t\t\t'fontSize',\r\n\t\t\t'fontFamily',\r\n\t\t\t'fontWeight',\r\n\t\t\t'textTransform'\r\n\t\t]);\r\n\t\r\n\t\tvar width = $test.width();\r\n\t\t$test.remove();\r\n\t\r\n\t\treturn width;\r\n\t};\r\n\t\r\n\t/**\r\n\t * Sets up an input to grow horizontally as the user\r\n\t * types. If the value is changed manually, you can\r\n\t * trigger the \"update\" handler to resize:\r\n\t *\r\n\t * $input.trigger('update');\r\n\t *\r\n\t * @param {object} $input\r\n\t */\r\n\tvar autoGrow = function($input) {\r\n\t\tvar currentWidth = null;\r\n\t\r\n\t\tvar update = function(e, options) {\r\n\t\t\tvar value, keyCode, printable, placeholder, width;\r\n\t\t\tvar shift, character, selection;\r\n\t\t\te = e || window.event || {};\r\n\t\t\toptions = options || {};\r\n\t\r\n\t\t\tif (e.metaKey || e.altKey) return;\r\n\t\t\tif (!options.force && $input.data('grow') === false) return;\r\n\t\r\n\t\t\tvalue = $input.val();\r\n\t\t\tif (e.type && e.type.toLowerCase() === 'keydown') {\r\n\t\t\t\tkeyCode = e.keyCode;\r\n\t\t\t\tprintable = (\r\n\t\t\t\t\t(keyCode >= 97 && keyCode <= 122) || // a-z\r\n\t\t\t\t\t(keyCode >= 65 && keyCode <= 90) || // A-Z\r\n\t\t\t\t\t(keyCode >= 48 && keyCode <= 57) || // 0-9\r\n\t\t\t\t\tkeyCode === 32 // space\r\n\t\t\t\t);\r\n\t\r\n\t\t\t\tif (keyCode === KEY_DELETE || keyCode === KEY_BACKSPACE) {\r\n\t\t\t\t\tselection = getSelection($input[0]);\r\n\t\t\t\t\tif (selection.length) {\r\n\t\t\t\t\t\tvalue = value.substring(0, selection.start) + value.substring(selection.start + selection.length);\r\n\t\t\t\t\t} else if (keyCode === KEY_BACKSPACE && selection.start) {\r\n\t\t\t\t\t\tvalue = value.substring(0, selection.start - 1) + value.substring(selection.start + 1);\r\n\t\t\t\t\t} else if (keyCode === KEY_DELETE && typeof selection.start !== 'undefined') {\r\n\t\t\t\t\t\tvalue = value.substring(0, selection.start) + value.substring(selection.start + 1);\r\n\t\t\t\t\t}\r\n\t\t\t\t} else if (printable) {\r\n\t\t\t\t\tshift = e.shiftKey;\r\n\t\t\t\t\tcharacter = String.fromCharCode(e.keyCode);\r\n\t\t\t\t\tif (shift) character = character.toUpperCase();\r\n\t\t\t\t\telse character = character.toLowerCase();\r\n\t\t\t\t\tvalue += character;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\r\n\t\t\tplaceholder = $input.attr('placeholder');\r\n\t\t\tif (!value && placeholder) {\r\n\t\t\t\tvalue = placeholder;\r\n\t\t\t}\r\n\t\r\n\t\t\twidth = measureString(value, $input) + 4;\r\n\t\t\tif (width !== currentWidth) {\r\n\t\t\t\tcurrentWidth = width;\r\n\t\t\t\t$input.width(width);\r\n\t\t\t\t$input.triggerHandler('resize');\r\n\t\t\t}\r\n\t\t};\r\n\t\r\n\t\t$input.on('keydown keyup update blur', update);\r\n\t\tupdate();\r\n\t};\r\n\t\r\n\tvar Selectize = function($input, settings) {\r\n\t\tvar key, i, n, dir, input, self = this;\r\n\t\tinput = $input[0];\r\n\t\tinput.selectize = self;\r\n\t\r\n\t\t// detect rtl environment\r\n\t\tvar computedStyle = window.getComputedStyle && window.getComputedStyle(input, null);\r\n\t\tdir = computedStyle ? computedStyle.getPropertyValue('direction') : input.currentStyle && input.currentStyle.direction;\r\n\t\tdir = dir || $input.parents('[dir]:first').attr('dir') || '';\r\n\t\r\n\t\t// setup default state\r\n\t\t$.extend(self, {\r\n\t\t\torder : 0,\r\n\t\t\tsettings : settings,\r\n\t\t\t$input : $input,\r\n\t\t\ttabIndex : $input.attr('tabindex') || '',\r\n\t\t\ttagType : input.tagName.toLowerCase() === 'select' ? TAG_SELECT : TAG_INPUT,\r\n\t\t\trtl : /rtl/i.test(dir),\r\n\t\r\n\t\t\teventNS : '.selectize' + (++Selectize.count),\r\n\t\t\thighlightedValue : null,\r\n\t\t\tisOpen : false,\r\n\t\t\tisDisabled : false,\r\n\t\t\tisRequired : $input.is('[required]'),\r\n\t\t\tisInvalid : false,\r\n\t\t\tisLocked : false,\r\n\t\t\tisFocused : false,\r\n\t\t\tisInputHidden : false,\r\n\t\t\tisSetup : false,\r\n\t\t\tisShiftDown : false,\r\n\t\t\tisCmdDown : false,\r\n\t\t\tisCtrlDown : false,\r\n\t\t\tignoreFocus : false,\r\n\t\t\tignoreBlur : false,\r\n\t\t\tignoreHover : false,\r\n\t\t\thasOptions : false,\r\n\t\t\tcurrentResults : null,\r\n\t\t\tlastValue : '',\r\n\t\t\tcaretPos : 0,\r\n\t\t\tloading : 0,\r\n\t\t\tloadedSearches : {},\r\n\t\r\n\t\t\t$activeOption : null,\r\n\t\t\t$activeItems : [],\r\n\t\r\n\t\t\toptgroups : {},\r\n\t\t\toptions : {},\r\n\t\t\tuserOptions : {},\r\n\t\t\titems : [],\r\n\t\t\trenderCache : {},\r\n\t\t\tonSearchChange : settings.loadThrottle === null ? self.onSearchChange : debounce(self.onSearchChange, settings.loadThrottle)\r\n\t\t});\r\n\t\r\n\t\t// search system\r\n\t\tself.sifter = new Sifter(this.options, {diacritics: settings.diacritics});\r\n\t\r\n\t\t// build options table\r\n\t\tif (self.settings.options) {\r\n\t\t\tfor (i = 0, n = self.settings.options.length; i < n; i++) {\r\n\t\t\t\tself.registerOption(self.settings.options[i]);\r\n\t\t\t}\r\n\t\t\tdelete self.settings.options;\r\n\t\t}\r\n\t\r\n\t\t// build optgroup table\r\n\t\tif (self.settings.optgroups) {\r\n\t\t\tfor (i = 0, n = self.settings.optgroups.length; i < n; i++) {\r\n\t\t\t\tself.registerOptionGroup(self.settings.optgroups[i]);\r\n\t\t\t}\r\n\t\t\tdelete self.settings.optgroups;\r\n\t\t}\r\n\t\r\n\t\t// option-dependent defaults\r\n\t\tself.settings.mode = self.settings.mode || (self.settings.maxItems === 1 ? 'single' : 'multi');\r\n\t\tif (typeof self.settings.hideSelected !== 'boolean') {\r\n\t\t\tself.settings.hideSelected = self.settings.mode === 'multi';\r\n\t\t}\r\n\t\r\n\t\tself.initializePlugins(self.settings.plugins);\r\n\t\tself.setupCallbacks();\r\n\t\tself.setupTemplates();\r\n\t\tself.setup();\r\n\t};\r\n\t\r\n\t// mixins\r\n\t// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -\r\n\t\r\n\tMicroEvent.mixin(Selectize);\r\n\tMicroPlugin.mixin(Selectize);\r\n\t\r\n\t// methods\r\n\t// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -\r\n\t\r\n\t$.extend(Selectize.prototype, {\r\n\t\r\n\t\t/**\r\n\t\t * Creates all elements and sets up event bindings.\r\n\t\t */\r\n\t\tsetup: function() {\r\n\t\t\tvar self = this;\r\n\t\t\tvar settings = self.settings;\r\n\t\t\tvar eventNS = self.eventNS;\r\n\t\t\tvar $window = $(window);\r\n\t\t\tvar $document = $(document);\r\n\t\t\tvar $input = self.$input;\r\n\t\r\n\t\t\tvar $wrapper;\r\n\t\t\tvar $control;\r\n\t\t\tvar $control_input;\r\n\t\t\tvar $dropdown;\r\n\t\t\tvar $dropdown_content;\r\n\t\t\tvar $dropdown_parent;\r\n\t\t\tvar inputMode;\r\n\t\t\tvar timeout_blur;\r\n\t\t\tvar timeout_focus;\r\n\t\t\tvar classes;\r\n\t\t\tvar classes_plugins;\r\n\t\r\n\t\t\tinputMode = self.settings.mode;\r\n\t\t\tclasses = $input.attr('class') || '';\r\n\t\r\n\t\t\t$wrapper = $('
    ').addClass(settings.wrapperClass).addClass(classes).addClass(inputMode);\r\n\t\t\t$control = $('
    ').addClass(settings.inputClass).addClass('items').appendTo($wrapper);\r\n\t\t\t$control_input = $('').appendTo($control).attr('tabindex', $input.is(':disabled') ? '-1' : self.tabIndex);\r\n\t\t\t$dropdown_parent = $(settings.dropdownParent || $wrapper);\r\n\t\t\t$dropdown = $('
    ').addClass(settings.dropdownClass).addClass(inputMode).hide().appendTo($dropdown_parent);\r\n\t\t\t$dropdown_content = $('
    ').addClass(settings.dropdownContentClass).appendTo($dropdown);\r\n\t\r\n\t\t\tif(self.settings.copyClassesToDropdown) {\r\n\t\t\t\t$dropdown.addClass(classes);\r\n\t\t\t}\r\n\t\r\n\t\t\t$wrapper.css({\r\n\t\t\t\twidth: $input[0].style.width\r\n\t\t\t});\r\n\t\r\n\t\t\tif (self.plugins.names.length) {\r\n\t\t\t\tclasses_plugins = 'plugin-' + self.plugins.names.join(' plugin-');\r\n\t\t\t\t$wrapper.addClass(classes_plugins);\r\n\t\t\t\t$dropdown.addClass(classes_plugins);\r\n\t\t\t}\r\n\t\r\n\t\t\tif ((settings.maxItems === null || settings.maxItems > 1) && self.tagType === TAG_SELECT) {\r\n\t\t\t\t$input.attr('multiple', 'multiple');\r\n\t\t\t}\r\n\t\r\n\t\t\tif (self.settings.placeholder) {\r\n\t\t\t\t$control_input.attr('placeholder', settings.placeholder);\r\n\t\t\t}\r\n\t\r\n\t\t\t// if splitOn was not passed in, construct it from the delimiter to allow pasting universally\r\n\t\t\tif (!self.settings.splitOn && self.settings.delimiter) {\r\n\t\t\t\tvar delimiterEscaped = self.settings.delimiter.replace(/[-\\/\\\\^$*+?.()|[\\]{}]/g, '\\\\$&');\r\n\t\t\t\tself.settings.splitOn = new RegExp('\\\\s*' + delimiterEscaped + '+\\\\s*');\r\n\t\t\t}\r\n\t\r\n\t\t\tif ($input.attr('autocorrect')) {\r\n\t\t\t\t$control_input.attr('autocorrect', $input.attr('autocorrect'));\r\n\t\t\t}\r\n\t\r\n\t\t\tif ($input.attr('autocapitalize')) {\r\n\t\t\t\t$control_input.attr('autocapitalize', $input.attr('autocapitalize'));\r\n\t\t\t}\r\n\t\r\n\t\t\tself.$wrapper = $wrapper;\r\n\t\t\tself.$control = $control;\r\n\t\t\tself.$control_input = $control_input;\r\n\t\t\tself.$dropdown = $dropdown;\r\n\t\t\tself.$dropdown_content = $dropdown_content;\r\n\t\r\n\t\t\t$dropdown.on('mouseenter', '[data-selectable]', function() { return self.onOptionHover.apply(self, arguments); });\r\n\t\t\t$dropdown.on('mousedown click', '[data-selectable]', function() { return self.onOptionSelect.apply(self, arguments); });\r\n\t\t\twatchChildEvent($control, 'mousedown', '*:not(input)', function() { return self.onItemSelect.apply(self, arguments); });\r\n\t\t\tautoGrow($control_input);\r\n\t\r\n\t\t\t$control.on({\r\n\t\t\t\tmousedown : function() { return self.onMouseDown.apply(self, arguments); },\r\n\t\t\t\tclick : function() { return self.onClick.apply(self, arguments); }\r\n\t\t\t});\r\n\t\r\n\t\t\t$control_input.on({\r\n\t\t\t\tmousedown : function(e) { e.stopPropagation(); },\r\n\t\t\t\tkeydown : function() { return self.onKeyDown.apply(self, arguments); },\r\n\t\t\t\tkeyup : function() { return self.onKeyUp.apply(self, arguments); },\r\n\t\t\t\tkeypress : function() { return self.onKeyPress.apply(self, arguments); },\r\n\t\t\t\tresize : function() { self.positionDropdown.apply(self, []); },\r\n\t\t\t\tblur : function() { return self.onBlur.apply(self, arguments); },\r\n\t\t\t\tfocus : function() { self.ignoreBlur = false; return self.onFocus.apply(self, arguments); },\r\n\t\t\t\tpaste : function() { return self.onPaste.apply(self, arguments); }\r\n\t\t\t});\r\n\t\r\n\t\t\t$document.on('keydown' + eventNS, function(e) {\r\n\t\t\t\tself.isCmdDown = e[IS_MAC ? 'metaKey' : 'ctrlKey'];\r\n\t\t\t\tself.isCtrlDown = e[IS_MAC ? 'altKey' : 'ctrlKey'];\r\n\t\t\t\tself.isShiftDown = e.shiftKey;\r\n\t\t\t});\r\n\t\r\n\t\t\t$document.on('keyup' + eventNS, function(e) {\r\n\t\t\t\tif (e.keyCode === KEY_CTRL) self.isCtrlDown = false;\r\n\t\t\t\tif (e.keyCode === KEY_SHIFT) self.isShiftDown = false;\r\n\t\t\t\tif (e.keyCode === KEY_CMD) self.isCmdDown = false;\r\n\t\t\t});\r\n\t\r\n\t\t\t$document.on('mousedown' + eventNS, function(e) {\r\n\t\t\t\tif (self.isFocused) {\r\n\t\t\t\t\t// prevent events on the dropdown scrollbar from causing the control to blur\r\n\t\t\t\t\tif (e.target === self.$dropdown[0] || e.target.parentNode === self.$dropdown[0]) {\r\n\t\t\t\t\t\treturn false;\r\n\t\t\t\t\t}\r\n\t\t\t\t\t// blur on click outside\r\n\t\t\t\t\tif (!self.$control.has(e.target).length && e.target !== self.$control[0]) {\r\n\t\t\t\t\t\tself.blur(e.target);\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\r\n\t\t\t$window.on(['scroll' + eventNS, 'resize' + eventNS].join(' '), function() {\r\n\t\t\t\tif (self.isOpen) {\r\n\t\t\t\t\tself.positionDropdown.apply(self, arguments);\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t\t$window.on('mousemove' + eventNS, function() {\r\n\t\t\t\tself.ignoreHover = false;\r\n\t\t\t});\r\n\t\r\n\t\t\t// store original children and tab index so that they can be\r\n\t\t\t// restored when the destroy() method is called.\r\n\t\t\tthis.revertSettings = {\r\n\t\t\t\t$children : $input.children().detach(),\r\n\t\t\t\ttabindex : $input.attr('tabindex')\r\n\t\t\t};\r\n\t\r\n\t\t\t$input.attr('tabindex', -1).hide().after(self.$wrapper);\r\n\t\r\n\t\t\tif ($.isArray(settings.items)) {\r\n\t\t\t\tself.setValue(settings.items);\r\n\t\t\t\tdelete settings.items;\r\n\t\t\t}\r\n\t\r\n\t\t\t// feature detect for the validation API\r\n\t\t\tif (SUPPORTS_VALIDITY_API) {\r\n\t\t\t\t$input.on('invalid' + eventNS, function(e) {\r\n\t\t\t\t\te.preventDefault();\r\n\t\t\t\t\tself.isInvalid = true;\r\n\t\t\t\t\tself.refreshState();\r\n\t\t\t\t});\r\n\t\t\t}\r\n\t\r\n\t\t\tself.updateOriginalInput();\r\n\t\t\tself.refreshItems();\r\n\t\t\tself.refreshState();\r\n\t\t\tself.updatePlaceholder();\r\n\t\t\tself.isSetup = true;\r\n\t\r\n\t\t\tif ($input.is(':disabled')) {\r\n\t\t\t\tself.disable();\r\n\t\t\t}\r\n\t\r\n\t\t\tself.on('change', this.onChange);\r\n\t\r\n\t\t\t$input.data('selectize', self);\r\n\t\t\t$input.addClass('selectized');\r\n\t\t\tself.trigger('initialize');\r\n\t\r\n\t\t\t// preload options\r\n\t\t\tif (settings.preload === true) {\r\n\t\t\t\tself.onSearchChange('');\r\n\t\t\t}\r\n\t\r\n\t\t},\r\n\t\r\n\t\t/**\r\n\t\t * Sets up default rendering functions.\r\n\t\t */\r\n\t\tsetupTemplates: function() {\r\n\t\t\tvar self = this;\r\n\t\t\tvar field_label = self.settings.labelField;\r\n\t\t\tvar field_optgroup = self.settings.optgroupLabelField;\r\n\t\r\n\t\t\tvar templates = {\r\n\t\t\t\t'optgroup': function(data) {\r\n\t\t\t\t\treturn '
    ' + data.html + '
    ';\r\n\t\t\t\t},\r\n\t\t\t\t'optgroup_header': function(data, escape) {\r\n\t\t\t\t\treturn '
    ' + escape(data[field_optgroup]) + '
    ';\r\n\t\t\t\t},\r\n\t\t\t\t'option': function(data, escape) {\r\n\t\t\t\t\treturn '
    ' + escape(data[field_label]) + '
    ';\r\n\t\t\t\t},\r\n\t\t\t\t'item': function(data, escape) {\r\n\t\t\t\t\treturn '
    ' + escape(data[field_label]) + '
    ';\r\n\t\t\t\t},\r\n\t\t\t\t'option_create': function(data, escape) {\r\n\t\t\t\t\treturn '
    Add ' + escape(data.input) + '
    ';\r\n\t\t\t\t}\r\n\t\t\t};\r\n\t\r\n\t\t\tself.settings.render = $.extend({}, templates, self.settings.render);\r\n\t\t},\r\n\t\r\n\t\t/**\r\n\t\t * Maps fired events to callbacks provided\r\n\t\t * in the settings used when creating the control.\r\n\t\t */\r\n\t\tsetupCallbacks: function() {\r\n\t\t\tvar key, fn, callbacks = {\r\n\t\t\t\t'initialize' : 'onInitialize',\r\n\t\t\t\t'change' : 'onChange',\r\n\t\t\t\t'item_add' : 'onItemAdd',\r\n\t\t\t\t'item_remove' : 'onItemRemove',\r\n\t\t\t\t'clear' : 'onClear',\r\n\t\t\t\t'option_add' : 'onOptionAdd',\r\n\t\t\t\t'option_remove' : 'onOptionRemove',\r\n\t\t\t\t'option_clear' : 'onOptionClear',\r\n\t\t\t\t'optgroup_add' : 'onOptionGroupAdd',\r\n\t\t\t\t'optgroup_remove' : 'onOptionGroupRemove',\r\n\t\t\t\t'optgroup_clear' : 'onOptionGroupClear',\r\n\t\t\t\t'dropdown_open' : 'onDropdownOpen',\r\n\t\t\t\t'dropdown_close' : 'onDropdownClose',\r\n\t\t\t\t'type' : 'onType',\r\n\t\t\t\t'load' : 'onLoad',\r\n\t\t\t\t'focus' : 'onFocus',\r\n\t\t\t\t'blur' : 'onBlur'\r\n\t\t\t};\r\n\t\r\n\t\t\tfor (key in callbacks) {\r\n\t\t\t\tif (callbacks.hasOwnProperty(key)) {\r\n\t\t\t\t\tfn = this.settings[callbacks[key]];\r\n\t\t\t\t\tif (fn) this.on(key, fn);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t},\r\n\t\r\n\t\t/**\r\n\t\t * Triggered when the main control element\r\n\t\t * has a click event.\r\n\t\t *\r\n\t\t * @param {object} e\r\n\t\t * @return {boolean}\r\n\t\t */\r\n\t\tonClick: function(e) {\r\n\t\t\tvar self = this;\r\n\t\r\n\t\t\t// necessary for mobile webkit devices (manual focus triggering\r\n\t\t\t// is ignored unless invoked within a click event)\r\n\t\t\tif (!self.isFocused) {\r\n\t\t\t\tself.focus();\r\n\t\t\t\te.preventDefault();\r\n\t\t\t}\r\n\t\t},\r\n\t\r\n\t\t/**\r\n\t\t * Triggered when the main control element\r\n\t\t * has a mouse down event.\r\n\t\t *\r\n\t\t * @param {object} e\r\n\t\t * @return {boolean}\r\n\t\t */\r\n\t\tonMouseDown: function(e) {\r\n\t\t\tvar self = this;\r\n\t\t\tvar defaultPrevented = e.isDefaultPrevented();\r\n\t\t\tvar $target = $(e.target);\r\n\t\r\n\t\t\tif (self.isFocused) {\r\n\t\t\t\t// retain focus by preventing native handling. if the\r\n\t\t\t\t// event target is the input it should not be modified.\r\n\t\t\t\t// otherwise, text selection within the input won't work.\r\n\t\t\t\tif (e.target !== self.$control_input[0]) {\r\n\t\t\t\t\tif (self.settings.mode === 'single') {\r\n\t\t\t\t\t\t// toggle dropdown\r\n\t\t\t\t\t\tself.isOpen ? self.close() : self.open();\r\n\t\t\t\t\t} else if (!defaultPrevented) {\r\n\t\t\t\t\t\tself.setActiveItem(null);\r\n\t\t\t\t\t}\r\n\t\t\t\t\treturn false;\r\n\t\t\t\t}\r\n\t\t\t} else {\r\n\t\t\t\t// give control focus\r\n\t\t\t\tif (!defaultPrevented) {\r\n\t\t\t\t\twindow.setTimeout(function() {\r\n\t\t\t\t\t\tself.focus();\r\n\t\t\t\t\t}, 0);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t},\r\n\t\r\n\t\t/**\r\n\t\t * Triggered when the value of the control has been changed.\r\n\t\t * This should propagate the event to the original DOM\r\n\t\t * input / select element.\r\n\t\t */\r\n\t\tonChange: function() {\r\n\t\t\tthis.$input.trigger('change');\r\n\t\t},\r\n\t\r\n\t\t/**\r\n\t\t * Triggered on paste.\r\n\t\t *\r\n\t\t * @param {object} e\r\n\t\t * @returns {boolean}\r\n\t\t */\r\n\t\tonPaste: function(e) {\r\n\t\t\tvar self = this;\r\n\t\t\tif (self.isFull() || self.isInputHidden || self.isLocked) {\r\n\t\t\t\te.preventDefault();\r\n\t\t\t} else {\r\n\t\t\t\t// If a regex or string is included, this will split the pasted\r\n\t\t\t\t// input and create Items for each separate value\r\n\t\t\t\tif (self.settings.splitOn) {\r\n\t\t\t\t\tsetTimeout(function() {\r\n\t\t\t\t\t\tvar splitInput = $.trim(self.$control_input.val() || '').split(self.settings.splitOn);\r\n\t\t\t\t\t\tfor (var i = 0, n = splitInput.length; i < n; i++) {\r\n\t\t\t\t\t\t\tself.createItem(splitInput[i]);\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}, 0);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t},\r\n\t\r\n\t\t/**\r\n\t\t * Triggered on keypress.\r\n\t\t *\r\n\t\t * @param {object} e\r\n\t\t * @returns {boolean}\r\n\t\t */\r\n\t\tonKeyPress: function(e) {\r\n\t\t\tif (this.isLocked) return e && e.preventDefault();\r\n\t\t\tvar character = String.fromCharCode(e.keyCode || e.which);\r\n\t\t\tif (this.settings.create && this.settings.mode === 'multi' && character === this.settings.delimiter) {\r\n\t\t\t\tthis.createItem();\r\n\t\t\t\te.preventDefault();\r\n\t\t\t\treturn false;\r\n\t\t\t}\r\n\t\t},\r\n\t\r\n\t\t/**\r\n\t\t * Triggered on keydown.\r\n\t\t *\r\n\t\t * @param {object} e\r\n\t\t * @returns {boolean}\r\n\t\t */\r\n\t\tonKeyDown: function(e) {\r\n\t\t\tvar isInput = e.target === this.$control_input[0];\r\n\t\t\tvar self = this;\r\n\t\r\n\t\t\tif (self.isLocked) {\r\n\t\t\t\tif (e.keyCode !== KEY_TAB) {\r\n\t\t\t\t\te.preventDefault();\r\n\t\t\t\t}\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\t\r\n\t\t\tswitch (e.keyCode) {\r\n\t\t\t\tcase KEY_A:\r\n\t\t\t\t\tif (self.isCmdDown) {\r\n\t\t\t\t\t\tself.selectAll();\r\n\t\t\t\t\t\treturn;\r\n\t\t\t\t\t}\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase KEY_ESC:\r\n\t\t\t\t\tif (self.isOpen) {\r\n\t\t\t\t\t\te.preventDefault();\r\n\t\t\t\t\t\te.stopPropagation();\r\n\t\t\t\t\t\tself.close();\r\n\t\t\t\t\t}\r\n\t\t\t\t\treturn;\r\n\t\t\t\tcase KEY_N:\r\n\t\t\t\t\tif (!e.ctrlKey || e.altKey) break;\r\n\t\t\t\tcase KEY_DOWN:\r\n\t\t\t\t\tif (!self.isOpen && self.hasOptions) {\r\n\t\t\t\t\t\tself.open();\r\n\t\t\t\t\t} else if (self.$activeOption) {\r\n\t\t\t\t\t\tself.ignoreHover = true;\r\n\t\t\t\t\t\tvar $next = self.getAdjacentOption(self.$activeOption, 1);\r\n\t\t\t\t\t\tif ($next.length) self.setActiveOption($next, true, true);\r\n\t\t\t\t\t}\r\n\t\t\t\t\te.preventDefault();\r\n\t\t\t\t\treturn;\r\n\t\t\t\tcase KEY_P:\r\n\t\t\t\t\tif (!e.ctrlKey || e.altKey) break;\r\n\t\t\t\tcase KEY_UP:\r\n\t\t\t\t\tif (self.$activeOption) {\r\n\t\t\t\t\t\tself.ignoreHover = true;\r\n\t\t\t\t\t\tvar $prev = self.getAdjacentOption(self.$activeOption, -1);\r\n\t\t\t\t\t\tif ($prev.length) self.setActiveOption($prev, true, true);\r\n\t\t\t\t\t}\r\n\t\t\t\t\te.preventDefault();\r\n\t\t\t\t\treturn;\r\n\t\t\t\tcase KEY_RETURN:\r\n\t\t\t\t\tif (self.isOpen && self.$activeOption) {\r\n\t\t\t\t\t\tself.onOptionSelect({currentTarget: self.$activeOption});\r\n\t\t\t\t\t\te.preventDefault();\r\n\t\t\t\t\t}\r\n\t\t\t\t\treturn;\r\n\t\t\t\tcase KEY_LEFT:\r\n\t\t\t\t\tself.advanceSelection(-1, e);\r\n\t\t\t\t\treturn;\r\n\t\t\t\tcase KEY_RIGHT:\r\n\t\t\t\t\tself.advanceSelection(1, e);\r\n\t\t\t\t\treturn;\r\n\t\t\t\tcase KEY_TAB:\r\n\t\t\t\t\tif (self.settings.selectOnTab && self.isOpen && self.$activeOption) {\r\n\t\t\t\t\t\tself.onOptionSelect({currentTarget: self.$activeOption});\r\n\t\r\n\t\t\t\t\t\t// Default behaviour is to jump to the next field, we only want this\r\n\t\t\t\t\t\t// if the current field doesn't accept any more entries\r\n\t\t\t\t\t\tif (!self.isFull()) {\r\n\t\t\t\t\t\t\te.preventDefault();\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t\tif (self.settings.create && self.createItem()) {\r\n\t\t\t\t\t\te.preventDefault();\r\n\t\t\t\t\t}\r\n\t\t\t\t\treturn;\r\n\t\t\t\tcase KEY_BACKSPACE:\r\n\t\t\t\tcase KEY_DELETE:\r\n\t\t\t\t\tself.deleteSelection(e);\r\n\t\t\t\t\treturn;\r\n\t\t\t}\r\n\t\r\n\t\t\tif ((self.isFull() || self.isInputHidden) && !(IS_MAC ? e.metaKey : e.ctrlKey)) {\r\n\t\t\t\te.preventDefault();\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\t\t},\r\n\t\r\n\t\t/**\r\n\t\t * Triggered on keyup.\r\n\t\t *\r\n\t\t * @param {object} e\r\n\t\t * @returns {boolean}\r\n\t\t */\r\n\t\tonKeyUp: function(e) {\r\n\t\t\tvar self = this;\r\n\t\r\n\t\t\tif (self.isLocked) return e && e.preventDefault();\r\n\t\t\tvar value = self.$control_input.val() || '';\r\n\t\t\tif (self.lastValue !== value) {\r\n\t\t\t\tself.lastValue = value;\r\n\t\t\t\tself.onSearchChange(value);\r\n\t\t\t\tself.refreshOptions();\r\n\t\t\t\tself.trigger('type', value);\r\n\t\t\t}\r\n\t\t},\r\n\t\r\n\t\t/**\r\n\t\t * Invokes the user-provide option provider / loader.\r\n\t\t *\r\n\t\t * Note: this function is debounced in the Selectize\r\n\t\t * constructor (by `settings.loadDelay` milliseconds)\r\n\t\t *\r\n\t\t * @param {string} value\r\n\t\t */\r\n\t\tonSearchChange: function(value) {\r\n\t\t\tvar self = this;\r\n\t\t\tvar fn = self.settings.load;\r\n\t\t\tif (!fn) return;\r\n\t\t\tif (self.loadedSearches.hasOwnProperty(value)) return;\r\n\t\t\tself.loadedSearches[value] = true;\r\n\t\t\tself.load(function(callback) {\r\n\t\t\t\tfn.apply(self, [value, callback]);\r\n\t\t\t});\r\n\t\t},\r\n\t\r\n\t\t/**\r\n\t\t * Triggered on focus.\r\n\t\t *\r\n\t\t * @param {object} e (optional)\r\n\t\t * @returns {boolean}\r\n\t\t */\r\n\t\tonFocus: function(e) {\r\n\t\t\tvar self = this;\r\n\t\t\tvar wasFocused = self.isFocused;\r\n\t\r\n\t\t\tif (self.isDisabled) {\r\n\t\t\t\tself.blur();\r\n\t\t\t\te && e.preventDefault();\r\n\t\t\t\treturn false;\r\n\t\t\t}\r\n\t\r\n\t\t\tif (self.ignoreFocus) return;\r\n\t\t\tself.isFocused = true;\r\n\t\t\tif (self.settings.preload === 'focus') self.onSearchChange('');\r\n\t\r\n\t\t\tif (!wasFocused) self.trigger('focus');\r\n\t\r\n\t\t\tif (!self.$activeItems.length) {\r\n\t\t\t\tself.showInput();\r\n\t\t\t\tself.setActiveItem(null);\r\n\t\t\t\tself.refreshOptions(!!self.settings.openOnFocus);\r\n\t\t\t}\r\n\t\r\n\t\t\tself.refreshState();\r\n\t\t},\r\n\t\r\n\t\t/**\r\n\t\t * Triggered on blur.\r\n\t\t *\r\n\t\t * @param {object} e\r\n\t\t * @param {Element} dest\r\n\t\t */\r\n\t\tonBlur: function(e, dest) {\r\n\t\t\tvar self = this;\r\n\t\t\tif (!self.isFocused) return;\r\n\t\t\tself.isFocused = false;\r\n\t\r\n\t\t\tif (self.ignoreFocus) {\r\n\t\t\t\treturn;\r\n\t\t\t} else if (!self.ignoreBlur && document.activeElement === self.$dropdown_content[0]) {\r\n\t\t\t\t// necessary to prevent IE closing the dropdown when the scrollbar is clicked\r\n\t\t\t\tself.ignoreBlur = true;\r\n\t\t\t\tself.onFocus(e);\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\t\r\n\t\t\tvar deactivate = function() {\r\n\t\t\t\tself.close();\r\n\t\t\t\tself.setTextboxValue('');\r\n\t\t\t\tself.setActiveItem(null);\r\n\t\t\t\tself.setActiveOption(null);\r\n\t\t\t\tself.setCaret(self.items.length);\r\n\t\t\t\tself.refreshState();\r\n\t\r\n\t\t\t\t// IE11 bug: element still marked as active\r\n\t\t\t\t(dest || document.body).focus();\r\n\t\r\n\t\t\t\tself.ignoreFocus = false;\r\n\t\t\t\tself.trigger('blur');\r\n\t\t\t};\r\n\t\r\n\t\t\tself.ignoreFocus = true;\r\n\t\t\tif (self.settings.create && self.settings.createOnBlur) {\r\n\t\t\t\tself.createItem(null, false, deactivate);\r\n\t\t\t} else {\r\n\t\t\t\tdeactivate();\r\n\t\t\t}\r\n\t\t},\r\n\t\r\n\t\t/**\r\n\t\t * Triggered when the user rolls over\r\n\t\t * an option in the autocomplete dropdown menu.\r\n\t\t *\r\n\t\t * @param {object} e\r\n\t\t * @returns {boolean}\r\n\t\t */\r\n\t\tonOptionHover: function(e) {\r\n\t\t\tif (this.ignoreHover) return;\r\n\t\t\tthis.setActiveOption(e.currentTarget, false);\r\n\t\t},\r\n\t\r\n\t\t/**\r\n\t\t * Triggered when the user clicks on an option\r\n\t\t * in the autocomplete dropdown menu.\r\n\t\t *\r\n\t\t * @param {object} e\r\n\t\t * @returns {boolean}\r\n\t\t */\r\n\t\tonOptionSelect: function(e) {\r\n\t\t\tvar value, $target, $option, self = this;\r\n\t\r\n\t\t\tif (e.preventDefault) {\r\n\t\t\t\te.preventDefault();\r\n\t\t\t\te.stopPropagation();\r\n\t\t\t}\r\n\t\r\n\t\t\t$target = $(e.currentTarget);\r\n\t\t\tif ($target.hasClass('create')) {\r\n\t\t\t\tself.createItem(null, function() {\r\n\t\t\t\t\tif (self.settings.closeAfterSelect) {\r\n\t\t\t\t\t\tself.close();\r\n\t\t\t\t\t}\r\n\t\t\t\t});\r\n\t\t\t} else {\r\n\t\t\t\tvalue = $target.attr('data-value');\r\n\t\t\t\tif (typeof value !== 'undefined') {\r\n\t\t\t\t\tself.lastQuery = null;\r\n\t\t\t\t\tself.setTextboxValue('');\r\n\t\t\t\t\tself.addItem(value);\r\n\t\t\t\t\tif (self.settings.closeAfterSelect) {\r\n\t\t\t\t\t\tself.close();\r\n\t\t\t\t\t} else if (!self.settings.hideSelected && e.type && /mouse/.test(e.type)) {\r\n\t\t\t\t\t\tself.setActiveOption(self.getOption(value));\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t},\r\n\t\r\n\t\t/**\r\n\t\t * Triggered when the user clicks on an item\r\n\t\t * that has been selected.\r\n\t\t *\r\n\t\t * @param {object} e\r\n\t\t * @returns {boolean}\r\n\t\t */\r\n\t\tonItemSelect: function(e) {\r\n\t\t\tvar self = this;\r\n\t\r\n\t\t\tif (self.isLocked) return;\r\n\t\t\tif (self.settings.mode === 'multi') {\r\n\t\t\t\te.preventDefault();\r\n\t\t\t\tself.setActiveItem(e.currentTarget, e);\r\n\t\t\t}\r\n\t\t},\r\n\t\r\n\t\t/**\r\n\t\t * Invokes the provided method that provides\r\n\t\t * results to a callback---which are then added\r\n\t\t * as options to the control.\r\n\t\t *\r\n\t\t * @param {function} fn\r\n\t\t */\r\n\t\tload: function(fn) {\r\n\t\t\tvar self = this;\r\n\t\t\tvar $wrapper = self.$wrapper.addClass(self.settings.loadingClass);\r\n\t\r\n\t\t\tself.loading++;\r\n\t\t\tfn.apply(self, [function(results) {\r\n\t\t\t\tself.loading = Math.max(self.loading - 1, 0);\r\n\t\t\t\tif (results && results.length) {\r\n\t\t\t\t\tself.addOption(results);\r\n\t\t\t\t\tself.refreshOptions(self.isFocused && !self.isInputHidden);\r\n\t\t\t\t}\r\n\t\t\t\tif (!self.loading) {\r\n\t\t\t\t\t$wrapper.removeClass(self.settings.loadingClass);\r\n\t\t\t\t}\r\n\t\t\t\tself.trigger('load', results);\r\n\t\t\t}]);\r\n\t\t},\r\n\t\r\n\t\t/**\r\n\t\t * Sets the input field of the control to the specified value.\r\n\t\t *\r\n\t\t * @param {string} value\r\n\t\t */\r\n\t\tsetTextboxValue: function(value) {\r\n\t\t\tvar $input = this.$control_input;\r\n\t\t\tvar changed = $input.val() !== value;\r\n\t\t\tif (changed) {\r\n\t\t\t\t$input.val(value).triggerHandler('update');\r\n\t\t\t\tthis.lastValue = value;\r\n\t\t\t}\r\n\t\t},\r\n\t\r\n\t\t/**\r\n\t\t * Returns the value of the control. If multiple items\r\n\t\t * can be selected (e.g. or \r\n\t\t * element to reflect the current state.\r\n\t\t */\r\n\t\tupdateOriginalInput: function(opts) {\r\n\t\t\tvar i, n, options, label, self = this;\r\n\t\t\topts = opts || {};\r\n\t\r\n\t\t\tif (self.tagType === TAG_SELECT) {\r\n\t\t\t\toptions = [];\r\n\t\t\t\tfor (i = 0, n = self.items.length; i < n; i++) {\r\n\t\t\t\t\tlabel = self.options[self.items[i]][self.settings.labelField] || '';\r\n\t\t\t\t\toptions.push('');\r\n\t\t\t\t}\r\n\t\t\t\tif (!options.length && !this.$input.attr('multiple')) {\r\n\t\t\t\t\toptions.push('');\r\n\t\t\t\t}\r\n\t\t\t\tself.$input.html(options.join(''));\r\n\t\t\t} else {\r\n\t\t\t\tself.$input.val(self.getValue());\r\n\t\t\t\tself.$input.attr('value',self.$input.val());\r\n\t\t\t}\r\n\t\r\n\t\t\tif (self.isSetup) {\r\n\t\t\t\tif (!opts.silent) {\r\n\t\t\t\t\tself.trigger('change', self.$input.val());\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t},\r\n\t\r\n\t\t/**\r\n\t\t * Shows/hide the input placeholder depending\r\n\t\t * on if there items in the list already.\r\n\t\t */\r\n\t\tupdatePlaceholder: function() {\r\n\t\t\tif (!this.settings.placeholder) return;\r\n\t\t\tvar $input = this.$control_input;\r\n\t\r\n\t\t\tif (this.items.length) {\r\n\t\t\t\t$input.removeAttr('placeholder');\r\n\t\t\t} else {\r\n\t\t\t\t$input.attr('placeholder', this.settings.placeholder);\r\n\t\t\t}\r\n\t\t\t$input.triggerHandler('update', {force: true});\r\n\t\t},\r\n\t\r\n\t\t/**\r\n\t\t * Shows the autocomplete dropdown containing\r\n\t\t * the available options.\r\n\t\t */\r\n\t\topen: function() {\r\n\t\t\tvar self = this;\r\n\t\r\n\t\t\tif (self.isLocked || self.isOpen || (self.settings.mode === 'multi' && self.isFull())) return;\r\n\t\t\tself.focus();\r\n\t\t\tself.isOpen = true;\r\n\t\t\tself.refreshState();\r\n\t\t\tself.$dropdown.css({visibility: 'hidden', display: 'block'});\r\n\t\t\tself.positionDropdown();\r\n\t\t\tself.$dropdown.css({visibility: 'visible'});\r\n\t\t\tself.trigger('dropdown_open', self.$dropdown);\r\n\t\t},\r\n\t\r\n\t\t/**\r\n\t\t * Closes the autocomplete dropdown menu.\r\n\t\t */\r\n\t\tclose: function() {\r\n\t\t\tvar self = this;\r\n\t\t\tvar trigger = self.isOpen;\r\n\t\r\n\t\t\tif (self.settings.mode === 'single' && self.items.length) {\r\n\t\t\t\tself.hideInput();\r\n\t\t\t}\r\n\t\r\n\t\t\tself.isOpen = false;\r\n\t\t\tself.$dropdown.hide();\r\n\t\t\tself.setActiveOption(null);\r\n\t\t\tself.refreshState();\r\n\t\r\n\t\t\tif (trigger) self.trigger('dropdown_close', self.$dropdown);\r\n\t\t},\r\n\t\r\n\t\t/**\r\n\t\t * Calculates and applies the appropriate\r\n\t\t * position of the dropdown.\r\n\t\t */\r\n\t\tpositionDropdown: function() {\r\n\t\t\tvar $control = this.$control;\r\n\t\t\tvar offset = this.settings.dropdownParent === 'body' ? $control.offset() : $control.position();\r\n\t\t\toffset.top += $control.outerHeight(true);\r\n\t\r\n\t\t\tthis.$dropdown.css({\r\n\t\t\t\twidth : $control.outerWidth(),\r\n\t\t\t\ttop : offset.top,\r\n\t\t\t\tleft : offset.left\r\n\t\t\t});\r\n\t\t},\r\n\t\r\n\t\t/**\r\n\t\t * Resets / clears all selected items\r\n\t\t * from the control.\r\n\t\t *\r\n\t\t * @param {boolean} silent\r\n\t\t */\r\n\t\tclear: function(silent) {\r\n\t\t\tvar self = this;\r\n\t\r\n\t\t\tif (!self.items.length) return;\r\n\t\t\tself.$control.children(':not(input)').remove();\r\n\t\t\tself.items = [];\r\n\t\t\tself.lastQuery = null;\r\n\t\t\tself.setCaret(0);\r\n\t\t\tself.setActiveItem(null);\r\n\t\t\tself.updatePlaceholder();\r\n\t\t\tself.updateOriginalInput({silent: silent});\r\n\t\t\tself.refreshState();\r\n\t\t\tself.showInput();\r\n\t\t\tself.trigger('clear');\r\n\t\t},\r\n\t\r\n\t\t/**\r\n\t\t * A helper method for inserting an element\r\n\t\t * at the current caret position.\r\n\t\t *\r\n\t\t * @param {object} $el\r\n\t\t */\r\n\t\tinsertAtCaret: function($el) {\r\n\t\t\tvar caret = Math.min(this.caretPos, this.items.length);\r\n\t\t\tif (caret === 0) {\r\n\t\t\t\tthis.$control.prepend($el);\r\n\t\t\t} else {\r\n\t\t\t\t$(this.$control[0].childNodes[caret]).before($el);\r\n\t\t\t}\r\n\t\t\tthis.setCaret(caret + 1);\r\n\t\t},\r\n\t\r\n\t\t/**\r\n\t\t * Removes the current selected item(s).\r\n\t\t *\r\n\t\t * @param {object} e (optional)\r\n\t\t * @returns {boolean}\r\n\t\t */\r\n\t\tdeleteSelection: function(e) {\r\n\t\t\tvar i, n, direction, selection, values, caret, option_select, $option_select, $tail;\r\n\t\t\tvar self = this;\r\n\t\r\n\t\t\tdirection = (e && e.keyCode === KEY_BACKSPACE) ? -1 : 1;\r\n\t\t\tselection = getSelection(self.$control_input[0]);\r\n\t\r\n\t\t\tif (self.$activeOption && !self.settings.hideSelected) {\r\n\t\t\t\toption_select = self.getAdjacentOption(self.$activeOption, -1).attr('data-value');\r\n\t\t\t}\r\n\t\r\n\t\t\t// determine items that will be removed\r\n\t\t\tvalues = [];\r\n\t\r\n\t\t\tif (self.$activeItems.length) {\r\n\t\t\t\t$tail = self.$control.children('.active:' + (direction > 0 ? 'last' : 'first'));\r\n\t\t\t\tcaret = self.$control.children(':not(input)').index($tail);\r\n\t\t\t\tif (direction > 0) { caret++; }\r\n\t\r\n\t\t\t\tfor (i = 0, n = self.$activeItems.length; i < n; i++) {\r\n\t\t\t\t\tvalues.push($(self.$activeItems[i]).attr('data-value'));\r\n\t\t\t\t}\r\n\t\t\t\tif (e) {\r\n\t\t\t\t\te.preventDefault();\r\n\t\t\t\t\te.stopPropagation();\r\n\t\t\t\t}\r\n\t\t\t} else if ((self.isFocused || self.settings.mode === 'single') && self.items.length) {\r\n\t\t\t\tif (direction < 0 && selection.start === 0 && selection.length === 0) {\r\n\t\t\t\t\tvalues.push(self.items[self.caretPos - 1]);\r\n\t\t\t\t} else if (direction > 0 && selection.start === self.$control_input.val().length) {\r\n\t\t\t\t\tvalues.push(self.items[self.caretPos]);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\r\n\t\t\t// allow the callback to abort\r\n\t\t\tif (!values.length || (typeof self.settings.onDelete === 'function' && self.settings.onDelete.apply(self, [values]) === false)) {\r\n\t\t\t\treturn false;\r\n\t\t\t}\r\n\t\r\n\t\t\t// perform removal\r\n\t\t\tif (typeof caret !== 'undefined') {\r\n\t\t\t\tself.setCaret(caret);\r\n\t\t\t}\r\n\t\t\twhile (values.length) {\r\n\t\t\t\tself.removeItem(values.pop());\r\n\t\t\t}\r\n\t\r\n\t\t\tself.showInput();\r\n\t\t\tself.positionDropdown();\r\n\t\t\tself.refreshOptions(true);\r\n\t\r\n\t\t\t// select previous option\r\n\t\t\tif (option_select) {\r\n\t\t\t\t$option_select = self.getOption(option_select);\r\n\t\t\t\tif ($option_select.length) {\r\n\t\t\t\t\tself.setActiveOption($option_select);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\r\n\t\t\treturn true;\r\n\t\t},\r\n\t\r\n\t\t/**\r\n\t\t * Selects the previous / next item (depending\r\n\t\t * on the `direction` argument).\r\n\t\t *\r\n\t\t * > 0 - right\r\n\t\t * < 0 - left\r\n\t\t *\r\n\t\t * @param {int} direction\r\n\t\t * @param {object} e (optional)\r\n\t\t */\r\n\t\tadvanceSelection: function(direction, e) {\r\n\t\t\tvar tail, selection, idx, valueLength, cursorAtEdge, $tail;\r\n\t\t\tvar self = this;\r\n\t\r\n\t\t\tif (direction === 0) return;\r\n\t\t\tif (self.rtl) direction *= -1;\r\n\t\r\n\t\t\ttail = direction > 0 ? 'last' : 'first';\r\n\t\t\tselection = getSelection(self.$control_input[0]);\r\n\t\r\n\t\t\tif (self.isFocused && !self.isInputHidden) {\r\n\t\t\t\tvalueLength = self.$control_input.val().length;\r\n\t\t\t\tcursorAtEdge = direction < 0\r\n\t\t\t\t\t? selection.start === 0 && selection.length === 0\r\n\t\t\t\t\t: selection.start === valueLength;\r\n\t\r\n\t\t\t\tif (cursorAtEdge && !valueLength) {\r\n\t\t\t\t\tself.advanceCaret(direction, e);\r\n\t\t\t\t}\r\n\t\t\t} else {\r\n\t\t\t\t$tail = self.$control.children('.active:' + tail);\r\n\t\t\t\tif ($tail.length) {\r\n\t\t\t\t\tidx = self.$control.children(':not(input)').index($tail);\r\n\t\t\t\t\tself.setActiveItem(null);\r\n\t\t\t\t\tself.setCaret(direction > 0 ? idx + 1 : idx);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t},\r\n\t\r\n\t\t/**\r\n\t\t * Moves the caret left / right.\r\n\t\t *\r\n\t\t * @param {int} direction\r\n\t\t * @param {object} e (optional)\r\n\t\t */\r\n\t\tadvanceCaret: function(direction, e) {\r\n\t\t\tvar self = this, fn, $adj;\r\n\t\r\n\t\t\tif (direction === 0) return;\r\n\t\r\n\t\t\tfn = direction > 0 ? 'next' : 'prev';\r\n\t\t\tif (self.isShiftDown) {\r\n\t\t\t\t$adj = self.$control_input[fn]();\r\n\t\t\t\tif ($adj.length) {\r\n\t\t\t\t\tself.hideInput();\r\n\t\t\t\t\tself.setActiveItem($adj);\r\n\t\t\t\t\te && e.preventDefault();\r\n\t\t\t\t}\r\n\t\t\t} else {\r\n\t\t\t\tself.setCaret(self.caretPos + direction);\r\n\t\t\t}\r\n\t\t},\r\n\t\r\n\t\t/**\r\n\t\t * Moves the caret to the specified index.\r\n\t\t *\r\n\t\t * @param {int} i\r\n\t\t */\r\n\t\tsetCaret: function(i) {\r\n\t\t\tvar self = this;\r\n\t\r\n\t\t\tif (self.settings.mode === 'single') {\r\n\t\t\t\ti = self.items.length;\r\n\t\t\t} else {\r\n\t\t\t\ti = Math.max(0, Math.min(self.items.length, i));\r\n\t\t\t}\r\n\t\r\n\t\t\tif(!self.isPending) {\r\n\t\t\t\t// the input must be moved by leaving it in place and moving the\r\n\t\t\t\t// siblings, due to the fact that focus cannot be restored once lost\r\n\t\t\t\t// on mobile webkit devices\r\n\t\t\t\tvar j, n, fn, $children, $child;\r\n\t\t\t\t$children = self.$control.children(':not(input)');\r\n\t\t\t\tfor (j = 0, n = $children.length; j < n; j++) {\r\n\t\t\t\t\t$child = $($children[j]).detach();\r\n\t\t\t\t\tif (j < i) {\r\n\t\t\t\t\t\tself.$control_input.before($child);\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\tself.$control.append($child);\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\r\n\t\t\tself.caretPos = i;\r\n\t\t},\r\n\t\r\n\t\t/**\r\n\t\t * Disables user input on the control. Used while\r\n\t\t * items are being asynchronously created.\r\n\t\t */\r\n\t\tlock: function() {\r\n\t\t\tthis.close();\r\n\t\t\tthis.isLocked = true;\r\n\t\t\tthis.refreshState();\r\n\t\t},\r\n\t\r\n\t\t/**\r\n\t\t * Re-enables user input on the control.\r\n\t\t */\r\n\t\tunlock: function() {\r\n\t\t\tthis.isLocked = false;\r\n\t\t\tthis.refreshState();\r\n\t\t},\r\n\t\r\n\t\t/**\r\n\t\t * Disables user input on the control completely.\r\n\t\t * While disabled, it cannot receive focus.\r\n\t\t */\r\n\t\tdisable: function() {\r\n\t\t\tvar self = this;\r\n\t\t\tself.$input.prop('disabled', true);\r\n\t\t\tself.$control_input.prop('disabled', true).prop('tabindex', -1);\r\n\t\t\tself.isDisabled = true;\r\n\t\t\tself.lock();\r\n\t\t},\r\n\t\r\n\t\t/**\r\n\t\t * Enables the control so that it can respond\r\n\t\t * to focus and user input.\r\n\t\t */\r\n\t\tenable: function() {\r\n\t\t\tvar self = this;\r\n\t\t\tself.$input.prop('disabled', false);\r\n\t\t\tself.$control_input.prop('disabled', false).prop('tabindex', self.tabIndex);\r\n\t\t\tself.isDisabled = false;\r\n\t\t\tself.unlock();\r\n\t\t},\r\n\t\r\n\t\t/**\r\n\t\t * Completely destroys the control and\r\n\t\t * unbinds all event listeners so that it can\r\n\t\t * be garbage collected.\r\n\t\t */\r\n\t\tdestroy: function() {\r\n\t\t\tvar self = this;\r\n\t\t\tvar eventNS = self.eventNS;\r\n\t\t\tvar revertSettings = self.revertSettings;\r\n\t\r\n\t\t\tself.trigger('destroy');\r\n\t\t\tself.off();\r\n\t\t\tself.$wrapper.remove();\r\n\t\t\tself.$dropdown.remove();\r\n\t\r\n\t\t\tself.$input\r\n\t\t\t\t.html('')\r\n\t\t\t\t.append(revertSettings.$children)\r\n\t\t\t\t.removeAttr('tabindex')\r\n\t\t\t\t.removeClass('selectized')\r\n\t\t\t\t.attr({tabindex: revertSettings.tabindex})\r\n\t\t\t\t.show();\r\n\t\r\n\t\t\tself.$control_input.removeData('grow');\r\n\t\t\tself.$input.removeData('selectize');\r\n\t\r\n\t\t\t$(window).off(eventNS);\r\n\t\t\t$(document).off(eventNS);\r\n\t\t\t$(document.body).off(eventNS);\r\n\t\r\n\t\t\tdelete self.$input[0].selectize;\r\n\t\t},\r\n\t\r\n\t\t/**\r\n\t\t * A helper method for rendering \"item\" and\r\n\t\t * \"option\" templates, given the data.\r\n\t\t *\r\n\t\t * @param {string} templateName\r\n\t\t * @param {object} data\r\n\t\t * @returns {string}\r\n\t\t */\r\n\t\trender: function(templateName, data) {\r\n\t\t\tvar value, id, label;\r\n\t\t\tvar html = '';\r\n\t\t\tvar cache = false;\r\n\t\t\tvar self = this;\r\n\t\t\tvar regex_tag = /^[\\t \\r\\n]*<([a-z][a-z0-9\\-_]*(?:\\:[a-z][a-z0-9\\-_]*)?)/i;\r\n\t\r\n\t\t\tif (templateName === 'option' || templateName === 'item') {\r\n\t\t\t\tvalue = hash_key(data[self.settings.valueField]);\r\n\t\t\t\tcache = !!value;\r\n\t\t\t}\r\n\t\r\n\t\t\t// pull markup from cache if it exists\r\n\t\t\tif (cache) {\r\n\t\t\t\tif (!isset(self.renderCache[templateName])) {\r\n\t\t\t\t\tself.renderCache[templateName] = {};\r\n\t\t\t\t}\r\n\t\t\t\tif (self.renderCache[templateName].hasOwnProperty(value)) {\r\n\t\t\t\t\treturn self.renderCache[templateName][value];\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\r\n\t\t\t// render markup\r\n\t\t\thtml = self.settings.render[templateName].apply(this, [data, escape_html]);\r\n\t\r\n\t\t\t// add mandatory attributes\r\n\t\t\tif (templateName === 'option' || templateName === 'option_create') {\r\n\t\t\t\thtml = html.replace(regex_tag, '<$1 data-selectable');\r\n\t\t\t}\r\n\t\t\tif (templateName === 'optgroup') {\r\n\t\t\t\tid = data[self.settings.optgroupValueField] || '';\r\n\t\t\t\thtml = html.replace(regex_tag, '<$1 data-group=\"' + escape_replace(escape_html(id)) + '\"');\r\n\t\t\t}\r\n\t\t\tif (templateName === 'option' || templateName === 'item') {\r\n\t\t\t\thtml = html.replace(regex_tag, '<$1 data-value=\"' + escape_replace(escape_html(value || '')) + '\"');\r\n\t\t\t}\r\n\t\r\n\t\t\t// update cache\r\n\t\t\tif (cache) {\r\n\t\t\t\tself.renderCache[templateName][value] = html;\r\n\t\t\t}\r\n\t\r\n\t\t\treturn html;\r\n\t\t},\r\n\t\r\n\t\t/**\r\n\t\t * Clears the render cache for a template. If\r\n\t\t * no template is given, clears all render\r\n\t\t * caches.\r\n\t\t *\r\n\t\t * @param {string} templateName\r\n\t\t */\r\n\t\tclearCache: function(templateName) {\r\n\t\t\tvar self = this;\r\n\t\t\tif (typeof templateName === 'undefined') {\r\n\t\t\t\tself.renderCache = {};\r\n\t\t\t} else {\r\n\t\t\t\tdelete self.renderCache[templateName];\r\n\t\t\t}\r\n\t\t},\r\n\t\r\n\t\t/**\r\n\t\t * Determines whether or not to display the\r\n\t\t * create item prompt, given a user input.\r\n\t\t *\r\n\t\t * @param {string} input\r\n\t\t * @return {boolean}\r\n\t\t */\r\n\t\tcanCreate: function(input) {\r\n\t\t\tvar self = this;\r\n\t\t\tif (!self.settings.create) return false;\r\n\t\t\tvar filter = self.settings.createFilter;\r\n\t\t\treturn input.length\r\n\t\t\t\t&& (typeof filter !== 'function' || filter.apply(self, [input]))\r\n\t\t\t\t&& (typeof filter !== 'string' || new RegExp(filter).test(input))\r\n\t\t\t\t&& (!(filter instanceof RegExp) || filter.test(input));\r\n\t\t}\r\n\t\r\n\t});\r\n\t\r\n\t\r\n\tSelectize.count = 0;\r\n\tSelectize.defaults = {\r\n\t\toptions: [],\r\n\t\toptgroups: [],\r\n\t\r\n\t\tplugins: [],\r\n\t\tdelimiter: ',',\r\n\t\tsplitOn: null, // regexp or string for splitting up values from a paste command\r\n\t\tpersist: true,\r\n\t\tdiacritics: true,\r\n\t\tcreate: false,\r\n\t\tcreateOnBlur: false,\r\n\t\tcreateFilter: null,\r\n\t\thighlight: true,\r\n\t\topenOnFocus: true,\r\n\t\tmaxOptions: 1000,\r\n\t\tmaxItems: null,\r\n\t\thideSelected: null,\r\n\t\taddPrecedence: false,\r\n\t\tselectOnTab: false,\r\n\t\tpreload: false,\r\n\t\tallowEmptyOption: false,\r\n\t\tcloseAfterSelect: false,\r\n\t\r\n\t\tscrollDuration: 60,\r\n\t\tloadThrottle: 300,\r\n\t\tloadingClass: 'loading',\r\n\t\r\n\t\tdataAttr: 'data-data',\r\n\t\toptgroupField: 'optgroup',\r\n\t\tvalueField: 'value',\r\n\t\tlabelField: 'text',\r\n\t\toptgroupLabelField: 'label',\r\n\t\toptgroupValueField: 'value',\r\n\t\tlockOptgroupOrder: false,\r\n\t\r\n\t\tsortField: '$order',\r\n\t\tsearchField: ['text'],\r\n\t\tsearchConjunction: 'and',\r\n\t\r\n\t\tmode: null,\r\n\t\twrapperClass: 'selectize-control',\r\n\t\tinputClass: 'selectize-input',\r\n\t\tdropdownClass: 'selectize-dropdown',\r\n\t\tdropdownContentClass: 'selectize-dropdown-content',\r\n\t\r\n\t\tdropdownParent: null,\r\n\t\r\n\t\tcopyClassesToDropdown: true,\r\n\t\r\n\t\t/*\r\n\t\tload : null, // function(query, callback) { ... }\r\n\t\tscore : null, // function(search) { ... }\r\n\t\tonInitialize : null, // function() { ... }\r\n\t\tonChange : null, // function(value) { ... }\r\n\t\tonItemAdd : null, // function(value, $item) { ... }\r\n\t\tonItemRemove : null, // function(value) { ... }\r\n\t\tonClear : null, // function() { ... }\r\n\t\tonOptionAdd : null, // function(value, data) { ... }\r\n\t\tonOptionRemove : null, // function(value) { ... }\r\n\t\tonOptionClear : null, // function() { ... }\r\n\t\tonOptionGroupAdd : null, // function(id, data) { ... }\r\n\t\tonOptionGroupRemove : null, // function(id) { ... }\r\n\t\tonOptionGroupClear : null, // function() { ... }\r\n\t\tonDropdownOpen : null, // function($dropdown) { ... }\r\n\t\tonDropdownClose : null, // function($dropdown) { ... }\r\n\t\tonType : null, // function(str) { ... }\r\n\t\tonDelete : null, // function(values) { ... }\r\n\t\t*/\r\n\t\r\n\t\trender: {\r\n\t\t\t/*\r\n\t\t\titem: null,\r\n\t\t\toptgroup: null,\r\n\t\t\toptgroup_header: null,\r\n\t\t\toption: null,\r\n\t\t\toption_create: null\r\n\t\t\t*/\r\n\t\t}\r\n\t};\r\n\t\r\n\t\r\n\t$.fn.selectize = function(settings_user) {\r\n\t\tvar defaults = $.fn.selectize.defaults;\r\n\t\tvar settings = $.extend({}, defaults, settings_user);\r\n\t\tvar attr_data = settings.dataAttr;\r\n\t\tvar field_label = settings.labelField;\r\n\t\tvar field_value = settings.valueField;\r\n\t\tvar field_optgroup = settings.optgroupField;\r\n\t\tvar field_optgroup_label = settings.optgroupLabelField;\r\n\t\tvar field_optgroup_value = settings.optgroupValueField;\r\n\t\r\n\t\t/**\r\n\t\t * Initializes selectize from a element.\r\n\t\t *\r\n\t\t * @param {object} $input\r\n\t\t * @param {object} settings_element\r\n\r\n\t\t */\r\n\t\tvar init_textbox = function($input, settings_element) {\r\n\t\t\tvar i, n, values, option;\r\n\t\r\n\t\t\tvar data_raw = $input.attr(attr_data);\r\n\t\r\n\t\t\tif (!data_raw) {\r\n\t\t\t\tvar value = $.trim($input.val() || '');\r\n\t\t\t\tif (!settings.allowEmptyOption && !value.length) return;\r\n\t\t\t\tvalues = value.split(settings.delimiter);\r\n\t\t\t\tfor (i = 0, n = values.length; i < n; i++) {\r\n\t\t\t\t\toption = {};\r\n\t\t\t\t\toption[field_label] = values[i];\r\n\t\t\t\t\toption[field_value] = values[i];\r\n\t\t\t\t\tsettings_element.options.push(option);\r\n\t\t\t\t}\r\n\t\t\t\tsettings_element.items = values;\r\n\t\t\t} else {\r\n\t\t\t\tsettings_element.options = JSON.parse(data_raw);\r\n\t\t\t\tfor (i = 0, n = settings_element.options.length; i < n; i++) {\r\n\t\t\t\t\tsettings_element.items.push(settings_element.options[i][field_value]);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t};\r\n\t\r\n\t\t/**\r\n\t\t * Initializes selectize from a