{"version":3,"sources":["utilityscripts.js","generic-utilities.js","marketo-utilities.js","jquery-ui.js","sitecore-utilities.js","slick-utilities.js","jquery-ajax-defaults.js","login-status.js","isIntegerPolyfill.js","slick.js","easy-responsive-tabs.js","jquery.fancybox.js","featured-hero-slider.js","jquery.validate.js","jquery.validate.unobtrusive.js","global-directory.js","_1900-620-content-intro.js","_1900-careers-stats-module.js","_1910-tabbed-parent.js","page-modal.js","dropdown-filter.js","210-flexible-content-card-with-grid.js","216-content-grid-with-flexible-title.js","column-directory-content.js","column-directory-list.js","column-list-links.js","column-related-content.js","external-search-box.js","1900-214-extended-content-contacts.js","_1900-202-interactive-content-column-carousel.js","featured-services.js","featured-elements.js","featured-hero-jumplink.js","trending-insights.js","header-locations.js","header-menu.js","header-search.js","header-sticky.js","insight-asset-detail.js","accordion-content.js","article-header.js","tabbed-content.js","forms.js","ourfirms.js","list-with-filter.js","310-grid-with-filter.js","contact-directory.js","reports.js","search.js","product-navigation.js","jquery-validators.js","navigation-cards.js","tabbed-section-navigation.js","810-twitter-timeline.js","901-map.js"],"names":["e","t","n","r","s","o","u","a","require","i","Error","f","exports","call","length","1","module","global","factory","document","w","window","this","noGlobal","isFunction","obj","nodeType","item","isWindow","arr","getProto","Object","getPrototypeOf","slice","flat","array","concat","apply","push","indexOf","class2type","toString","hasOwn","hasOwnProperty","fnToString","ObjectFunctionString","support","preservedScriptAttributes","type","src","nonce","noModule","DOMEval","code","node","doc","val","script","createElement","text","getAttribute","setAttribute","head","appendChild","parentNode","removeChild","toType","version","rhtmlSuffix","jQuery","selector","context","fn","init","isArrayLike","nodeName","elem","name","toLowerCase","prototype","jquery","constructor","toArray","get","num","pushStack","elems","ret","merge","prevObject","each","callback","map","arguments","first","eq","last","even","grep","_elem","odd","len","j","end","sort","splice","extend","options","copy","copyIsArray","clone","target","deep","isPlainObject","Array","isArray","undefined","expando","Math","random","replace","isReady","error","msg","noop","proto","Ctor","isEmptyObject","globalEval","textContent","nodeValue","makeArray","results","inArray","isXMLDoc","namespace","namespaceURI","docElem","ownerDocument","documentElement","test","second","invert","matches","callbackExpect","arg","value","guid","Symbol","iterator","split","_i","pop","whitespace","rtrimCSS","RegExp","rcssescape","contains","b","bup","compareDocumentPosition","fcssescape","ch","asCodePoint","charCodeAt","escapeSelector","sel","Expr","outermostContext","sortInput","hasDuplicate","documentIsHTML","rbuggyQSA","preferredDoc","pushNative","dirruns","done","classCache","createCache","tokenCache","compilerCache","nonnativeSelectorCache","sortOrder","booleans","identifier","attributes","pseudos","rwhitespace","rcomma","rleadingCombinator","rdescend","rpseudo","ridentifier","matchExpr","ID","CLASS","TAG","ATTR","PSEUDO","CHILD","bool","needsContext","rinputs","rheader","rquickExpr","rsibling","runescape","funescape","escape","nonHex","high","String","fromCharCode","unloadHandler","setDocument","inDisabledFieldset","addCombinator","disabled","dir","next","childNodes","els","find","seed","m","nid","match","groups","newSelector","newContext","exec","getElementById","id","getElementsByTagName","getElementsByClassName","testContext","scope","tokenize","toSelector","join","querySelectorAll","qsaError","removeAttribute","select","keys","cache","key","cacheLength","shift","markFunction","assert","el","createDisabledPseudo","isDisabled","createPositionalPseudo","argument","matchIndexes","webkitMatchesSelector","msMatchesSelector","subWindow","defaultView","top","addEventListener","getById","getElementsByName","disconnectedMatch","cssHas","querySelector","filter","attrId","getAttributeNode","tag","className","input","innerHTML","compare","sortDetached","expr","elements","matchesSelector","attr","attrHandle","uniqueSort","duplicates","sortStable","createPseudo","relative",">"," ","+","~","preFilter","excess","unquoted","nodeNameSelector","expectedNodeName","pattern","operator","check","result","what","_argument","simple","forward","ofType","_context","xml","outerCache","nodeIndex","start","parent","useCache","diff","firstChild","lastChild","pseudo","args","setFilters","idx","matched","not","matcher","compile","unmatched","has","lang","elemLang","hash","location","root","focus","activeElement","err","hasFocus","href","tabIndex","enabled","checked","selected","selectedIndex","empty","nextSibling","header","button","_matchIndexes","lt","gt","nth","radio","checkbox","file","password","image","submit","reset","parseOnly","tokens","soFar","preFilters","cached","combinator","base","skip","checkNonElements","doneName","oldCache","newCache","elementMatcher","matchers","condense","newUnmatched","mapped","setMatcher","postFilter","postFinder","postSelector","temp","matcherOut","preMap","postMap","preexisting","contexts","matcherIn","matcherFromGroupMatchers","elementMatchers","setMatchers","superMatcher","outermost","matchedCount","setMatched","contextBackup","byElement","dirrunsUnique","bySet","matcherFromTokens","checkContext","leadingRelative","implicitRelative","matchContext","matchAnyContext","token","compiled","filters","unique","getText","isXML","selectors","until","truncate","is","siblings","rneedsContext","rsingleTag","winnow","qualifier","self","rootjQuery","rparentsprev","ready","parseHTML","guaranteedUnique","children","contents","prev","sibling","cur","targets","l","closest","index","prevAll","add","addBack","parents","parentsUntil","nextAll","nextUntil","prevUntil","contentDocument","content","reverse","rnothtmlwhite","Identity","v","Thrower","ex","adoptValue","resolve","reject","noValue","method","promise","fail","then","Callbacks","object","_","flag","fire","locked","once","fired","firing","queue","firingIndex","memory","list","stopOnFalse","remove","disable","lock","fireWith","Deferred","func","tuples","state","always","deferred","catch","pipe","fns","newDefer","tuple","returned","progress","notify","onFulfilled","onRejected","onProgress","maxDepth","depth","handler","special","mightThrow","that","TypeError","notifyWith","resolveWith","process","exceptionHook","rejectWith","getErrorHook","getStackHook","setTimeout","stateString","when","singleValue","updateFunc","resolveContexts","resolveValues","remaining","primary","rerrorNames","readyList","asyncError","console","warn","message","stack","readyException","completed","removeEventListener","readyWait","wait","readyState","doScroll","access","chainable","emptyGet","raw","bulk","_key","rmsPrefix","rdashAlpha","fcamelCase","_all","letter","toUpperCase","camelCase","string","acceptData","owner","Data","uid","defineProperty","configurable","set","data","prop","hasData","dataPriv","dataUser","rbrace","rmultiDash","dataAttr","JSON","parse","removeData","_data","_removeData","attrs","dequeue","startLength","hooks","_queueHooks","unshift","stop","setter","clearQueue","count","defer","tmp","isHiddenWithinTree","style","display","isAttached","css","pnum","source","rcssNum","cssExpand","composed","getRootNode","adjustCSS","valueParts","tween","adjusted","scale","maxIterations","currentValue","initial","unit","cssNumber","initialInUnit","defaultDisplayMap","showHide","show","values","body","hide","toggle","rcheckableType","rtagName","rscriptType","wrapMap","div","createDocumentFragment","checkClone","cloneNode","noCloneChecked","defaultValue","option","thead","col","tr","td","_default","getAll","setGlobalEval","refElements","tbody","tfoot","colgroup","caption","th","optgroup","rhtml","buildFragment","scripts","selection","ignored","wrap","attached","fragment","nodes","htmlPrefilter","createTextNode","rtypenamespace","returnTrue","returnFalse","on","types","one","origFn","event","off","leverageNative","isSetup","saved","isTrigger","delegateType","stopPropagation","stopImmediatePropagation","preventDefault","trigger","isImmediatePropagationStopped","handleObjIn","eventHandle","events","handlers","namespaces","origType","elemData","create","handle","triggered","dispatch","bindType","handleObj","delegateCount","setup","mappedTypes","origCount","teardown","removeEvent","nativeEvent","handlerQueue","fix","delegateTarget","preDispatch","isPropagationStopped","currentTarget","rnamespace","postDispatch","matchedHandlers","matchedSelectors","addProp","hook","Event","enumerable","originalEvent","writable","load","noBubble","click","beforeunload","returnValue","props","isDefaultPrevented","defaultPrevented","relatedTarget","timeStamp","Date","now","isSimulated","altKey","bubbles","cancelable","changedTouches","ctrlKey","detail","eventPhase","metaKey","pageX","pageY","shiftKey","view","char","charCode","keyCode","buttons","clientX","clientY","offsetX","offsetY","pointerId","pointerType","screenX","screenY","targetTouches","toElement","touches","which","blur","focusMappedHandler","documentMode","simulate","attaches","dataHolder","mouseenter","mouseleave","pointerenter","pointerleave","orig","related","rnoInnerhtml","rchecked","rcleanScript","manipulationTarget","disableScript","restoreScript","cloneCopyEvent","dest","udataOld","udataCur","domManip","collection","hasScripts","iNoClone","valueIsFunction","html","_evalUrl","keepData","cleanData","dataAndEvents","deepDataAndEvents","srcElements","destElements","inPage","detach","append","prepend","insertBefore","before","after","replaceWith","replaceChild","appendTo","prependTo","insertAfter","replaceAll","original","insert","getStyles","opener","getComputedStyle","swap","old","pixelPositionVal","boxSizingReliableVal","scrollboxSizeVal","pixelBoxStylesVal","reliableTrDimensionsVal","reliableMarginLeftVal","container","rnumnonpx","rcustomProp","rboxStyle","computeStyleTests","divStyle","cssText","roundPixelMeasures","marginLeft","right","width","position","offsetWidth","measure","round","parseFloat","curCSS","computed","isCustomProp","getPropertyValue","pixelBoxStyles","minWidth","maxWidth","addGetHookIf","conditionFn","hookFn","backgroundClip","clearCloneStyle","boxSizingReliable","pixelPosition","reliableMarginLeft","scrollboxSize","reliableTrDimensions","table","trStyle","trChild","height","parseInt","borderTopWidth","borderBottomWidth","offsetHeight","cssPrefixes","emptyStyle","vendorProps","finalPropName","final","cssProps","capName","rdisplayswap","cssShow","visibility","cssNormalTransform","letterSpacing","fontWeight","setPositiveNumber","subtract","max","boxModelAdjustment","dimension","box","isBorderBox","styles","computedVal","extra","delta","marginDelta","ceil","getWidthOrHeight","valueIsBorderBox","offsetProp","getClientRects","Tween","easing","cssHooks","opacity","animationIterationCount","aspectRatio","borderImageSlice","columnCount","flexGrow","flexShrink","gridArea","gridColumn","gridColumnEnd","gridColumnStart","gridRow","gridRowEnd","gridRowStart","lineHeight","order","orphans","widows","zIndex","zoom","fillOpacity","floodOpacity","stopOpacity","strokeMiterlimit","strokeOpacity","origName","setProperty","isFinite","getBoundingClientRect","scrollboxSizeBuggy","left","margin","padding","border","prefix","suffix","expand","expanded","parts","propHooks","run","percent","eased","duration","pos","step","fx","scrollTop","scrollLeft","linear","p","swing","cos","PI","fxNow","inProgress","rfxtypes","rrun","schedule","hidden","requestAnimationFrame","interval","tick","createFxNow","genFx","includeWidth","createTween","animation","Animation","tweeners","properties","stopped","prefilters","currentTime","startTime","tweens","opts","specialEasing","originalProperties","originalOptions","gotoEnd","bind","complete","timer","anim","*","tweener","oldfire","propTween","restoreDisplay","isBox","dataShow","unqueued","overflow","overflowX","overflowY","prefilter","speed","opt","speeds","fadeTo","to","animate","doAnimation","optall","finish","stopQueue","timers","cssFn","slideDown","slideUp","slideToggle","fadeIn","fadeOut","fadeToggle","slow","fast","delay","time","timeout","clearTimeout","checkOn","optSelected","radioValue","boolHook","rfocusable","removeAttr","nType","attrHooks","attrNames","getter","lowercaseName","rclickable","stripAndCollapse","getClass","classesToArray","removeProp","propFix","tabindex","for","class","addClass","classNames","curValue","finalValue","removeClass","toggleClass","stateVal","isValidValue","hasClass","stopPropagationCallback","rreturn","valHooks","optionSet","rquery","rfocusMorph","parseXML","parserErrorElem","DOMParser","parseFromString","rbracket","onlyHandlers","bubbleType","ontype","lastElement","eventPath","parentWindow","triggerHandler","rCRLF","rsubmitterTypes","rsubmittable","param","traditional","valueOrFunction","encodeURIComponent","buildParams","serialize","serializeArray","r20","rhash","rantiCache","rheaders","rnoContent","rprotocol","transports","allTypes","originAnchor","addToPrefiltersOrTransports","structure","dataTypeExpression","dataType","dataTypes","inspectPrefiltersOrTransports","jqXHR","inspected","seekingTransport","inspect","prefilterOrFactory","dataTypeOrTransport","ajaxExtend","flatOptions","ajaxSettings","active","lastModified","etag","url","isLocal","protocol","processData","async","contentType","accepts","json","responseFields","converters","* text","text html","text json","text xml","ajaxSetup","settings","ajaxPrefilter","ajaxTransport","ajax","transport","cacheURL","responseHeadersString","responseHeaders","timeoutTimer","fireGlobals","callbackContext","globalEventContext","completeDeferred","statusCode","requestHeaders","requestHeadersNames","strAbort","getResponseHeader","getAllResponseHeaders","setRequestHeader","overrideMimeType","mimeType","status","abort","statusText","finalText","crossDomain","urlAnchor","host","hasContent","uncached","ifModified","headers","beforeSend","success","send","nativeStatusText","responses","response","isSuccess","ct","finalDataType","firstDataType","conv2","current","conv","dataFilter","throws","modified","getJSON","getScript","text script","wrapAll","firstElementChild","wrapInner","htmlIsFunction","unwrap","visible","xhr","XMLHttpRequest","xhrSuccessStatus","0","1223","xhrSupported","oldCallbacks","cors","errorCallback","open","username","xhrFields","onload","onerror","onabort","ontimeout","onreadystatechange","responseType","responseText","binary","scriptAttrs","charset","scriptCharset","evt","rjsonp","rtrim","jsonp","jsonpCallback","originalSettings","callbackName","overwritten","responseContainer","jsonProp","createHTMLDocument","implementation","keepScripts","parsed","params","animated","offset","setOffset","curCSSTop","curTop","curOffset","curCSSLeft","curElem","curLeft","curPosition","using","rect","win","pageYOffset","pageXOffset","offsetParent","parentOffset","scrollTo","Height","Width","","defaultExtra","funcName","unbind","delegate","undelegate","hover","fnOver","fnOut","_jQuery","proxy","holdReady","hold","parseJSON","isNumeric","isNaN","trim","define","amd","_$","$","noConflict","2","QueryString","paramsArray","let","decodeURIComponent","search","substr","QueryStringTabActivation","tabName","tabCount","AnimatedScroll","ScrollToLocation","scrollToTab","hashElement","GenericUtilities","isRTL","getCookieByName","cname","ca","cookie","c","charAt","substring","setSessionVariables","cookieName","urlParams","itemContext","getQueryString","createFileUploadIframe","confirmationBody","iframeWrapper","iframe","classList","includes","behavior","uploadOrigin","URL","origin","resizeIframe","MarketoUtilities","wrapLabelContent","startsWith","allUrlParams","decode","pl","query","allCookieParams","cookieParams","prefillFields","contentElements","element","elementNameLower","SitecoreUtilities","isPageEditor","Sitecore","PageModes","PageEditor","SlickUtilities","Initialize","slick","_ajax","Number","isInteger","floor","authenticationWrapper","contextId","contextLang","responseHtml","ui","cachedScrollbarWidth","abs","rhorizontal","rvertical","roffset","rposition","rpercent","_position","widgetUuid","widgetSlice","widget","existingConstructor","basePrototype","proxiedPrototype","fullName","Widget","_createWidget","_proto","_childConstructors","_super","_superApply","__super","__superApply","widgetEventPrefix","widgetName","widgetFullName","child","childPrototype","bridge","inputIndex","inputLength","isMethodCall","methodValue","instance","_init","defaultElement","classes","uuid","eventNamespace","bindings","hoverable","focusable","classesElementLookup","_on","destroy","_getCreateOptions","_create","_setOptionDisabled","_trigger","_getCreateEventData","_destroy","_removeClass","curOption","_setOptions","_setOption","_setOptionClasses","classKey","currentElements","_classes","_toggleClass","enable","full","processClassString","checkOption","_untrackClassesElement","_addClass","suppressDisabledCheck","delegateElement","handlerProxy","eventName","_off","_delay","_hoverable","_focusable","focusin","focusout","defaultEffect","effectName","effect","hasOptions","effects","getOffsets","offsets","parseCss","property","scrollbarWidth","w1","innerDiv","w2","clientWidth","getScrollInfo","within","isDocument","hasOverflowX","scrollWidth","scrollHeight","getWithinInfo","withinElement","outerWidth","outerHeight","of","atOffset","targetWidth","targetHeight","targetOffset","basePosition","scrollInfo","collision","dimensions","at","horizontalOffset","verticalOffset","collisionPosition","elemWidth","elemHeight","marginTop","collisionWidth","collisionHeight","myOffset","my","bottom","feedback","horizontal","vertical","important","fit","newOverRight","withinOffset","collisionPosLeft","overLeft","overRight","newOverBottom","collisionPosTop","overTop","overBottom","flip","offsetLeft","newOverLeft","offsetTop","newOverTop","flipfit","datepicker_instActive","BACKSPACE","COMMA","DELETE","DOWN","END","ENTER","ESCAPE","HOME","LEFT","PAGE_DOWN","PAGE_UP","PERIOD","RIGHT","SPACE","TAB","UP","uniqueId","removeUniqueId","safeActiveElement","icons","submenu","items","menus","role","activeMenu","mouseHandled","mousedown .ui-menu-item","click .ui-menu-item","mouseenter .ui-menu-item","actualTarget","previousFilter","mouseleave .ui-menu","keepActiveItem","collapseAll","keydown","refresh","_closeOnDocumentClick","submenus","_keydown","character","previousPage","nextPage","_move","previous","collapse","_activate","filterTimer","_filterMenuItems","newSubmenus","newWrappers","icon","aria-hidden","aria-expanded","menu","submenuCaret","_isDivider","newItems","_itemRole","listbox","activeParent","_scrollIntoView","focused","_close","nested","_startOpening","scroll","elementHeight","_hasScroll","borderTop","paddingTop","itemHeight","fromFocus","_open","all","currentMenu","startMenu","newItem","isFirstItem","isLastItem","direction","escapedCharacter","regex","autoFocus","minLength","change","close","requestIndex","pending","suppressKeyPress","suppressKeyPressRepeat","suppressInput","isTextarea","isInput","isMultiLine","_isContentEditable","valueMethod","isNewMenu","_keyEvent","_value","term","_searchTimeout","keypress","selectedItem","cancelBlur","searching","_change","_initSource","_appendTo","mousedown","menufocus","label","liveRegion","menuselect","aria-live","aria-relevant","_isEventTargetInWidget","menuElement","_closeOnClickOutside","request","autocomplete","equalValues","menuVisible","modifierKey","_search","cancelSearch","_response","__response","_normalize","_suggest","ul","_renderMenu","_resizeMenu","_renderItemData","_renderItem","keyEvent","editable","escapeRegex","messages","noResults","amount","Datepicker","_curInst","_disabledInputs","_datepickerShowing","_inDialog","_mainDivId","_inlineClass","_appendClass","_triggerClass","_dialogClass","_disableClass","_unselectableClass","_currentClass","_dayOverClass","regional","closeText","prevText","nextText","currentText","monthNames","monthNamesShort","dayNames","dayNamesShort","dayNamesMin","weekHeader","dateFormat","firstDay","showMonthAfterYear","yearSuffix","_defaults","showOn","showAnim","showOptions","defaultDate","appendText","buttonText","buttonImage","buttonImageOnly","hideIfNoPrevNext","navigationAsDateFormat","gotoCurrent","changeMonth","changeYear","yearRange","showOtherMonths","selectOtherMonths","showWeek","calculateWeek","iso8601Week","shortYearCutoff","minDate","maxDate","beforeShowDay","beforeShow","onSelect","onChangeMonthYear","onClose","numberOfMonths","showCurrentAtPos","stepMonths","stepBigMonths","altField","altFormat","constrainInput","showButtonPanel","autoSize","en","dpDiv","datepicker_bindHover","datepicker_handleMouseover","datepicker","_isDisabledDatepicker","inline","datepicker_extendRemove","markerClassName","maxRows","_widgetDatepicker","setDefaults","_attachDatepicker","inst","_newInst","_connectDatepicker","_inlineDatepicker","selectedDay","selectedMonth","selectedYear","drawMonth","drawYear","_attachments","_doKeyDown","_doKeyPress","_doKeyUp","_autoSize","_disableDatepicker","_get","_showDatepicker","alt","title","_lastInput","_hideDatepicker","findMax","maxI","date","setMonth","names","setDate","getDay","_formatDate","divSpan","_setDate","_getDefaultDate","_updateDatepicker","_updateAlternate","_dialogDatepicker","browserWidth","_dialogInst","_dialogInput","_pos","browserHeight","clientHeight","scrollX","scrollY","blockUI","_destroyDatepicker","$target","_enableDatepicker","cursor","_getInst","_optionDatepicker","_getDateDatepicker","_getMinMaxDate","_changeDatepicker","_refreshDatepicker","_setDateDatepicker","noDefault","_setDateFromField","_getDate","dateStr","handled","_selectDay","_adjustDate","_clearDate","_gotoToday","chr","chars","_possibleChars","lastVal","parseDate","_getFormatConfig","isFixed","beforeShowSettings","_findPos","_checkOffset","_shouldFocusInput","_generateHTML","_attachHandlers","origyearshtml","numMonths","_getNumberOfMonths","cols","activeCell","yearshtml","dpWidth","dpHeight","inputWidth","inputHeight","viewWidth","viewHeight","min","postProcess","_tidyDialog","unblockUI","_checkExternalClick","period","_adjustInstDate","currentDay","currentMonth","currentYear","getDate","getMonth","getFullYear","_notifyChange","_selectMonthYear","month","year","_selectDate","formatDate","noWeekends","day","checkDate","getTime","format","getNumber","isDoubled","lookAhead","size","digits","iValue","getName","shortNames","longNames","k","pair","checkLiteral","iFormat","dim","shortYearCutoffTemp","doy","literal","_ticksTo1970","_getDaysInMonth","_daylightSavingAdjust","ATOM","COOKIE","ISO_8601","RFC_822","RFC_850","RFC_1036","RFC_1123","RFC_2822","RSS","TICKS","TIMESTAMP","W3C","formatNumber","formatName","output","dates","_restrictMinMax","_determineDate","newDate","setHours","setMinutes","setSeconds","setMilliseconds","getHours","noChange","clear","origMonth","origYear","today","selectDay","selectMonth","selectYear","maxDraw","dow","row","group","selectedDate","cornerClass","calender","leadDays","curRows","numRows","printDate","dRow","daySettings","otherMonth","unselectable","tempDate","isMultiMonth","currentDate","_canAdjustMonth","gotoDate","controls","buttonPanel","_isInRange","_generateMonthYearHeader","daysInMonth","_getFirstDayOfMonth","secondary","inMinYear","inMaxYear","thisYear","determineYear","endYear","monthHtml","years","onChange","minMax","curYear","curMonth","minYear","maxYear","yearSplit","initialized","otherArgs","instanceUid","Slick","defaults","accessibility","adaptiveHeight","appendArrows","appendDots","arrows","asNavFor","prevArrow","nextArrow","autoplay","autoplaySpeed","centerMode","centerPadding","cssEase","customPaging","slider","dots","dotsClass","draggable","edgeFriction","fade","focusOnSelect","infinite","initialSlide","lazyLoad","mobileFirst","pauseOnHover","pauseOnFocus","pauseOnDotsHover","respondTo","responsive","rows","rtl","slide","slidesPerRow","slidesToShow","slidesToScroll","swipe","swipeToSlide","touchMove","touchThreshold","useCSS","useTransform","variableWidth","verticalSwiping","waitForAnimate","initials","animating","dragging","autoPlayTimer","currentDirection","currentLeft","currentSlide","$dots","listWidth","listHeight","loadIndex","$nextArrow","$prevArrow","slideCount","slideWidth","$slideTrack","$slides","sliding","slideOffset","swipeLeft","$list","touchObject","transformsEnabled","unslicked","activeBreakpoint","animType","animProp","breakpoints","breakpointSettings","cssTransitions","focussed","interrupted","paused","positionProp","rowCount","shouldClick","$slider","$slidesCache","transformType","transitionType","visibilityChange","windowWidth","windowTimer","dataSettings","mozHidden","webkitHidden","autoPlay","autoPlayClear","autoPlayIterator","changeSlide","clickHandler","selectHandler","setPosition","swipeHandler","dragHandler","keyHandler","htmlExpr","registerBreakpoints","activateADA","addSlide","slickAdd","markup","addBefore","unload","reinit","animateHeight","animateSlide","targetLeft","animProps","animStart","applyTransition","disableTransition","getNavTarget","slideHandler","transition","setInterval","clearInterval","slideTo","buildArrows","aria-disabled","buildDots","dot","getDotCount","buildOut","setupInfinite","updateDots","setSlideClasses","buildRows","numOfSlides","slidesPerSection","newSlides","originalSlides","checkResponsive","forceUpdate","breakpoint","targetBreakpoint","respondToWidth","triggerBreakpoint","sliderWidth","innerWidth","unslick","dontAnimate","indexOffset","checkNavigable","navigables","getNavigableIndexes","prevNavigable","cleanUpEvents","interrupt","cleanUpSlideEvents","orientationChange","resize","cleanUpRows","fadeSlide","slideIndex","fadeSlideOut","filterSlides","slickFilter","focusHandler","$sf","getCurrent","slickCurrentSlide","breakPoint","counter","pagerQty","getLeft","verticalHeight","targetSlide","getOption","slickGetOption","indexes","getSlick","getSlideCount","swipedSlide","centerOffset","goTo","slickGoTo","creation","setProps","startLoad","loadSlider","initializeEvents","updateArrows","initADA","aria-describedby","aria-selected","aria-controls","initArrowEvents","initDotEvents","initSlideEvents","action","initUI","tagName","rangeStart","rangeEnd","loadImages","imagesScope","imageSource","imageToLoad","progressiveLazyLoad","slickNext","pause","slickPause","play","slickPlay","postSlide","slickPrev","tryCount","$imgsToLoad","initializing","lastVisibleIndex","currentBreakpoint","responsiveSettings","windowDelay","removeSlide","slickRemove","removeBefore","removeAll","setCSS","x","y","positionProps","setDimensions","setFade","setHeight","setOption","slickSetOption","bodyStyle","WebkitTransition","MozTransition","msTransition","OTransform","perspectiveProperty","webkitPerspective","MozTransform","MozPerspective","webkitTransform","msTransform","transform","remainder","allSlides","infiniteCount","targetElement","sync","animSlide","navTarget","slideLeft","oldSlide","swipeDirection","xDist","startX","curX","yDist","startY","curY","atan2","swipeAngle","swipeEnd","swipeLength","edgeHit","minSwipe","fingerCount","swipeStart","swipeMove","sqrt","pow","positionOffset","unfilterSlides","slickUnfilter","fromBreakpoint","easyResponsiveTabs","jtype","closed","activate","jfit","jwidth","currentTab","$tabItemh2","$respTabs","$respTabsList","itemCount","innertext","$tabItem","tabcount","$currentTab","cookieHeight","$tabAria","innerHeight"],"mappings":"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","file":"global-theme.min.js","sourcesContent":["var $ = require('jquery');\r\n\r\n$.QueryString = (function (paramsArray) {\r\n let params = {};\r\n\r\n for (let i = 0; i < paramsArray.length; ++i) {\r\n let param = paramsArray[i]\r\n .split('=', 2);\r\n\r\n if (param.length !== 2)\r\n continue;\r\n\r\n params[param[0]] = decodeURIComponent(param[1].replace(/\\+/g, \" \"));\r\n }\r\n\r\n return params;\r\n})(window.location.search.substr(1).split('&'));\r\n\r\n$.QueryStringTabActivation = (function (tabName, tabCount) {\r\n var querystringValue = $.QueryString[tabName];\r\n if (querystringValue <= tabCount && $.QueryString[tabName] > 0) {\r\n return $.QueryString[tabName];\r\n }\r\n return 999;\r\n});\r\n\r\n$.AnimatedScroll = (function (position, duration) {\r\n $('html, body').animate({\r\n scrollTop: position\r\n }, duration);\r\n});\r\n\r\n\r\n$.ScrollToLocation = (function (object, duration, scrollToTab) {\r\n var hash = window.location.hash;\r\n var hashElement = document.getElementById(hash.replace('#', ''));\r\n\r\n if (hash && $.contains(object.get(0), hashElement)) {\r\n $.AnimatedScroll($(hash).offset().top - $('.header').height(), duration);\r\n }\r\n else if (scrollToTab){\r\n $.AnimatedScroll(object.offset().top - $('.header').height(), duration);\r\n }\r\n});\r\n\r\n","var $ = require('jquery');\r\n\r\nwindow.GenericUtilities = {\r\n isRTL: function () {\r\n var direction = $('html').attr('data-dir'),\r\n isRtl = false;\r\n\r\n if (direction == 'rtl') {\r\n isRtl = true;\r\n }\r\n return isRtl;\r\n },\r\n\r\n getCookieByName: function (cname) {\r\n var name = cname + \"=\";\r\n var decodedCookie = decodeURIComponent(document.cookie);\r\n var ca = decodedCookie.split(';');\r\n for (var i = 0; i < ca.length; i++) {\r\n var c = ca[i];\r\n while (c.charAt(0) == ' ') {\r\n c = c.substring(1);\r\n }\r\n if (c.indexOf(name) == 0) {\r\n return c.substring(name.length, c.length);\r\n }\r\n }\r\n return \"\";\r\n },\r\n\r\n setSessionVariables: function (url, cookieName, id) {\r\n if (cookieName !== 'undefined' && cookieName != '') {\r\n $.ajax({\r\n url: '/api/sitecore/sessiondata/storesesiondata',\r\n type: 'POST',\r\n data: {\r\n urlParams: url,\r\n cookieName: cookieName,\r\n itemContext: id\r\n }\r\n });\r\n }\r\n },\r\n\r\n getQueryString: function (key) {\r\n var paramsArray = window.location.search.substr(1).split('&');\r\n let params = {};\r\n\r\n for (let i = 0; i < paramsArray.length; ++i) {\r\n let param = paramsArray[i]\r\n .split('=', 2);\r\n\r\n if (param.length !== 2)\r\n continue;\r\n\r\n params[param[0]] = decodeURIComponent(param[1].replace(/\\+/g, \" \"));\r\n }\r\n\r\n return params[key];\r\n },\r\n\r\n createFileUploadIframe: function (confirmationBody, url) {\r\n if (url) {\r\n // Crowe.Forms expects lowercase urls\r\n url = url.toLowerCase();\r\n }\r\n \r\n let iframeWrapper = document.createElement('div');\r\n iframeWrapper.setAttribute('style', 'display: flex; width: 100%; height: 100%; overflow: hidden;');\r\n iframeWrapper.classList.add(\"file-upload-iframe\");\r\n iframeWrapper.classList.add('padding-top-16');\r\n let iframe = document.createElement('iframe');\r\n iframe.src = url;\r\n iframe.setAttribute('id', 'fileUpload');\r\n if (url.includes('ds=1')) {\r\n iframe.setAttribute('style', 'border: 2px solid #DFDFDF; border-radius: 10px; width: 100%;');\r\n } else {\r\n iframe.setAttribute('style', 'border: 2px solid #DFDFDF; width: 100%;');\r\n } \r\n iframeWrapper.appendChild(iframe);\r\n confirmationBody.appendChild(iframeWrapper);\r\n window.scrollTo({ top: 0, behavior: 'smooth' });\r\n let uploadOrigin = new URL(url).origin;\r\n\r\n window.addEventListener('message', (event) => {\r\n if (event.origin == uploadOrigin) {\r\n window.GenericUtilities.resizeIframe(document.getElementById('fileUpload'), (event.data + 64));\r\n }\r\n }, uploadOrigin)\r\n },\r\n\r\n resizeIframe: function (el, padding) {\r\n if (el) {\r\n if (padding && padding !== 'undefined' && padding !== '') {\r\n el.height = padding + \"px\";\r\n }\r\n }\r\n }\r\n}","var $ = require('jquery');\r\n\r\nwindow.MarketoUtilities = {\r\n wrapLabelContent: function (obj) {\r\n if (obj.length) {\r\n var contentElements = obj;\r\n $.each(contentElements, function () {\r\n var content = this.innerHTML;\r\n if (content !== 'undefined' && content !== '' && !content.startsWith('<p')) {\r\n this.innerHTML = '<p>' + content + '</p>';\r\n }\r\n });\r\n }\r\n },\r\n\r\n allUrlParams: function () {\r\n var urlParams;\r\n var match,\r\n pl = /\\+/g,\r\n search = /([^&=]+)=?([^&]*)/g,\r\n decode = function (s) { return decodeURIComponent(s.replace(pl, \" \").replace(\"_\", \"\")); },\r\n query = window.location.search.substring(1);\r\n\r\n urlParams = {};\r\n while (match = search.exec(query))\r\n urlParams[decode(match[1])] = decode(match[2]);\r\n\r\n return urlParams;\r\n },\r\n\r\n allCookieParams: function () {\r\n var cookieParams;\r\n var match,\r\n pl = /\\+/g,\r\n search = /([^&=]+)=?([^&]*)/g,\r\n decode = function (s) { return decodeURIComponent(s.replace(pl, \" \").replace(\"_\", \"\")); },\r\n query = window.GenericUtilities.getCookieByName(\"CroweLLP_session\");\r\n\r\n cookieParams = {};\r\n while (match = search.exec(query))\r\n cookieParams[decode(match[1])] = decode(match[2]);\r\n\r\n return cookieParams;\r\n },\r\n\r\n prefillFields: function (obj) {\r\n if (obj.length) {\r\n var contentElements = obj;\r\n var urlParams = MarketoUtilities.allUrlParams();\r\n var cookieParams = MarketoUtilities.allCookieParams();\r\n $.each(contentElements, function (index, element) {\r\n var elementNameLower = element.name.toLowerCase();\r\n if (urlParams[element.name]) {\r\n if (elementNameLower === 'contact') {\r\n $.ajax({\r\n type: \"GET\",\r\n url: '/api/sitecore/ContactDetails/GetContactName',\r\n traditional: true,\r\n data: {\r\n guid: urlParams[element.name]\r\n },\r\n success: function (data) {\r\n element.value = data;\r\n },\r\n error: function (e) {\r\n },\r\n complete: function (e) {\r\n }\r\n });\r\n }\r\n }\r\n\r\n if (cookieParams[elementNameLower]) {\r\n if (Object.keys(urlParams) == 0) {\r\n element.value = cookieParams[elementNameLower];\r\n } else if (typeof urlParams[elementNameLower] === 'undefined') {\r\n element.value = cookieParams[elementNameLower];\r\n }\r\n }\r\n });\r\n }\r\n }\r\n}","var $ = require('jquery');\r\n\r\n/*! jQuery UI - v1.12.1 - 2018-02-01\r\n* http://jqueryui.com\r\n* Includes: widget.js, position.js, keycode.js, unique-id.js, widgets/autocomplete.js, widgets/datepicker.js, widgets/menu.js\r\n* Copyright jQuery Foundation and other contributors; Licensed MIT */\r\n\r\n(function (factory) {\r\n if (typeof define === \"function\" && define.amd) {\r\n\r\n // AMD. Register as an anonymous module.\r\n define([\"jquery\"], factory);\r\n } else {\r\n\r\n // Browser globals\r\n factory($);\r\n }\r\n}(function ($) {\r\n\r\n $.ui = $.ui || {};\r\n\r\n var version = $.ui.version = \"1.12.1\";\r\n\r\n\r\n /*!\r\n * jQuery UI Widget 1.12.1\r\n * http://jqueryui.com\r\n *\r\n * Copyright jQuery Foundation and other contributors\r\n * Released under the MIT license.\r\n * http://jquery.org/license\r\n */\r\n\r\n //>>label: Widget\r\n //>>group: Core\r\n //>>description: Provides a factory for creating stateful widgets with a common API.\r\n //>>docs: http://api.jqueryui.com/jQuery.widget/\r\n //>>demos: http://jqueryui.com/widget/\r\n\r\n\r\n\r\n var widgetUuid = 0;\r\n var widgetSlice = Array.prototype.slice;\r\n\r\n $.cleanData = (function (orig) {\r\n return function (elems) {\r\n var events, elem, i;\r\n for (i = 0; (elem = elems[i]) != null; i++) {\r\n try {\r\n\r\n // Only trigger remove when necessary to save time\r\n events = $._data(elem, \"events\");\r\n if (events && events.remove) {\r\n $(elem).triggerHandler(\"remove\");\r\n }\r\n\r\n // Http://bugs.jquery.com/ticket/8235\r\n } catch (e) { }\r\n }\r\n orig(elems);\r\n };\r\n })($.cleanData);\r\n\r\n $.widget = function (name, base, prototype) {\r\n var existingConstructor, constructor, basePrototype;\r\n\r\n // ProxiedPrototype allows the provided prototype to remain unmodified\r\n // so that it can be used as a mixin for multiple widgets (#8876)\r\n var proxiedPrototype = {};\r\n\r\n var namespace = name.split(\".\")[0];\r\n name = name.split(\".\")[1];\r\n var fullName = namespace + \"-\" + name;\r\n\r\n if (!prototype) {\r\n prototype = base;\r\n base = $.Widget;\r\n }\r\n\r\n if ($.isArray(prototype)) {\r\n prototype = $.extend.apply(null, [{}].concat(prototype));\r\n }\r\n\r\n // Create selector for plugin\r\n $.expr[\":\"][fullName.toLowerCase()] = function (elem) {\r\n return !!$.data(elem, fullName);\r\n };\r\n\r\n $[namespace] = $[namespace] || {};\r\n existingConstructor = $[namespace][name];\r\n constructor = $[namespace][name] = function (options, element) {\r\n\r\n // Allow instantiation without \"new\" keyword\r\n if (!this._createWidget) {\r\n return new constructor(options, element);\r\n }\r\n\r\n // Allow instantiation without initializing for simple inheritance\r\n // must use \"new\" keyword (the code above always passes args)\r\n if (arguments.length) {\r\n this._createWidget(options, element);\r\n }\r\n };\r\n\r\n // Extend with the existing constructor to carry over any static properties\r\n $.extend(constructor, existingConstructor, {\r\n version: prototype.version,\r\n\r\n // Copy the object used to create the prototype in case we need to\r\n // redefine the widget later\r\n _proto: $.extend({}, prototype),\r\n\r\n // Track widgets that inherit from this widget in case this widget is\r\n // redefined after a widget inherits from it\r\n _childConstructors: []\r\n });\r\n\r\n basePrototype = new base();\r\n\r\n // We need to make the options hash a property directly on the new instance\r\n // otherwise we'll modify the options hash on the prototype that we're\r\n // inheriting from\r\n basePrototype.options = $.widget.extend({}, basePrototype.options);\r\n $.each(prototype, function (prop, value) {\r\n if (!$.isFunction(value)) {\r\n proxiedPrototype[prop] = value;\r\n return;\r\n }\r\n proxiedPrototype[prop] = (function () {\r\n function _super() {\r\n return base.prototype[prop].apply(this, arguments);\r\n }\r\n\r\n function _superApply(args) {\r\n return base.prototype[prop].apply(this, args);\r\n }\r\n\r\n return function () {\r\n var __super = this._super;\r\n var __superApply = this._superApply;\r\n var returnValue;\r\n\r\n this._super = _super;\r\n this._superApply = _superApply;\r\n\r\n returnValue = value.apply(this, arguments);\r\n\r\n this._super = __super;\r\n this._superApply = __superApply;\r\n\r\n return returnValue;\r\n };\r\n })();\r\n });\r\n constructor.prototype = $.widget.extend(basePrototype, {\r\n\r\n // TODO: remove support for widgetEventPrefix\r\n // always use the name + a colon as the prefix, e.g., draggable:start\r\n // don't prefix for widgets that aren't DOM-based\r\n widgetEventPrefix: existingConstructor ? (basePrototype.widgetEventPrefix || name) : name\r\n }, proxiedPrototype, {\r\n constructor: constructor,\r\n namespace: namespace,\r\n widgetName: name,\r\n widgetFullName: fullName\r\n });\r\n\r\n // If this widget is being redefined then we need to find all widgets that\r\n // are inheriting from it and redefine all of them so that they inherit from\r\n // the new version of this widget. We're essentially trying to replace one\r\n // level in the prototype chain.\r\n if (existingConstructor) {\r\n $.each(existingConstructor._childConstructors, function (i, child) {\r\n var childPrototype = child.prototype;\r\n\r\n // Redefine the child widget using the same prototype that was\r\n // originally used, but inherit from the new version of the base\r\n $.widget(childPrototype.namespace + \".\" + childPrototype.widgetName, constructor,\r\n child._proto);\r\n });\r\n\r\n // Remove the list of existing child constructors from the old constructor\r\n // so the old child constructors can be garbage collected\r\n delete existingConstructor._childConstructors;\r\n } else {\r\n base._childConstructors.push(constructor);\r\n }\r\n\r\n $.widget.bridge(name, constructor);\r\n\r\n return constructor;\r\n };\r\n\r\n $.widget.extend = function (target) {\r\n var input = widgetSlice.call(arguments, 1);\r\n var inputIndex = 0;\r\n var inputLength = input.length;\r\n var key;\r\n var value;\r\n\r\n for (; inputIndex < inputLength; inputIndex++) {\r\n for (key in input[inputIndex]) {\r\n value = input[inputIndex][key];\r\n if (input[inputIndex].hasOwnProperty(key) && value !== undefined) {\r\n\r\n // Clone objects\r\n if ($.isPlainObject(value)) {\r\n target[key] = $.isPlainObject(target[key]) ?\r\n $.widget.extend({}, target[key], value) :\r\n\r\n // Don't extend strings, arrays, etc. with objects\r\n $.widget.extend({}, value);\r\n\r\n // Copy everything else by reference\r\n } else {\r\n target[key] = value;\r\n }\r\n }\r\n }\r\n }\r\n return target;\r\n };\r\n\r\n $.widget.bridge = function (name, object) {\r\n var fullName = object.prototype.widgetFullName || name;\r\n $.fn[name] = function (options) {\r\n var isMethodCall = typeof options === \"string\";\r\n var args = widgetSlice.call(arguments, 1);\r\n var returnValue = this;\r\n\r\n if (isMethodCall) {\r\n\r\n // If this is an empty collection, we need to have the instance method\r\n // return undefined instead of the jQuery instance\r\n if (!this.length && options === \"instance\") {\r\n returnValue = undefined;\r\n } else {\r\n this.each(function () {\r\n var methodValue;\r\n var instance = $.data(this, fullName);\r\n\r\n if (options === \"instance\") {\r\n returnValue = instance;\r\n return false;\r\n }\r\n\r\n if (!instance) {\r\n return $.error(\"cannot call methods on \" + name +\r\n \" prior to initialization; \" +\r\n \"attempted to call method '\" + options + \"'\");\r\n }\r\n\r\n if (!$.isFunction(instance[options]) || options.charAt(0) === \"_\") {\r\n return $.error(\"no such method '\" + options + \"' for \" + name +\r\n \" widget instance\");\r\n }\r\n\r\n methodValue = instance[options].apply(instance, args);\r\n\r\n if (methodValue !== instance && methodValue !== undefined) {\r\n returnValue = methodValue && methodValue.jquery ?\r\n returnValue.pushStack(methodValue.get()) :\r\n methodValue;\r\n return false;\r\n }\r\n });\r\n }\r\n } else {\r\n\r\n // Allow multiple hashes to be passed on init\r\n if (args.length) {\r\n options = $.widget.extend.apply(null, [options].concat(args));\r\n }\r\n\r\n this.each(function () {\r\n var instance = $.data(this, fullName);\r\n if (instance) {\r\n instance.option(options || {});\r\n if (instance._init) {\r\n instance._init();\r\n }\r\n } else {\r\n $.data(this, fullName, new object(options, this));\r\n }\r\n });\r\n }\r\n\r\n return returnValue;\r\n };\r\n };\r\n\r\n $.Widget = function ( /* options, element */) { };\r\n $.Widget._childConstructors = [];\r\n\r\n $.Widget.prototype = {\r\n widgetName: \"widget\",\r\n widgetEventPrefix: \"\",\r\n defaultElement: \"<div>\",\r\n\r\n options: {\r\n classes: {},\r\n disabled: false,\r\n\r\n // Callbacks\r\n create: null\r\n },\r\n\r\n _createWidget: function (options, element) {\r\n element = $(element || this.defaultElement || this)[0];\r\n this.element = $(element);\r\n this.uuid = widgetUuid++;\r\n this.eventNamespace = \".\" + this.widgetName + this.uuid;\r\n\r\n this.bindings = $();\r\n this.hoverable = $();\r\n this.focusable = $();\r\n this.classesElementLookup = {};\r\n\r\n if (element !== this) {\r\n $.data(element, this.widgetFullName, this);\r\n this._on(true, this.element, {\r\n remove: function (event) {\r\n if (event.target === element) {\r\n this.destroy();\r\n }\r\n }\r\n });\r\n this.document = $(element.style ?\r\n\r\n // Element within the document\r\n element.ownerDocument :\r\n\r\n // Element is window or document\r\n element.document || element);\r\n this.window = $(this.document[0].defaultView || this.document[0].parentWindow);\r\n }\r\n\r\n this.options = $.widget.extend({},\r\n this.options,\r\n this._getCreateOptions(),\r\n options);\r\n\r\n this._create();\r\n\r\n if (this.options.disabled) {\r\n this._setOptionDisabled(this.options.disabled);\r\n }\r\n\r\n this._trigger(\"create\", null, this._getCreateEventData());\r\n this._init();\r\n },\r\n\r\n _getCreateOptions: function () {\r\n return {};\r\n },\r\n\r\n _getCreateEventData: $.noop,\r\n\r\n _create: $.noop,\r\n\r\n _init: $.noop,\r\n\r\n destroy: function () {\r\n var that = this;\r\n\r\n this._destroy();\r\n $.each(this.classesElementLookup, function (key, value) {\r\n that._removeClass(value, key);\r\n });\r\n\r\n // We can probably remove the unbind calls in 2.0\r\n // all event bindings should go through this._on()\r\n this.element\r\n .off(this.eventNamespace)\r\n .removeData(this.widgetFullName);\r\n this.widget()\r\n .off(this.eventNamespace)\r\n .removeAttr(\"aria-disabled\");\r\n\r\n // Clean up events and states\r\n this.bindings.off(this.eventNamespace);\r\n },\r\n\r\n _destroy: $.noop,\r\n\r\n widget: function () {\r\n return this.element;\r\n },\r\n\r\n option: function (key, value) {\r\n var options = key;\r\n var parts;\r\n var curOption;\r\n var i;\r\n\r\n if (arguments.length === 0) {\r\n\r\n // Don't return a reference to the internal hash\r\n return $.widget.extend({}, this.options);\r\n }\r\n\r\n if (typeof key === \"string\") {\r\n\r\n // Handle nested keys, e.g., \"foo.bar\" => { foo: { bar: ___ } }\r\n options = {};\r\n parts = key.split(\".\");\r\n key = parts.shift();\r\n if (parts.length) {\r\n curOption = options[key] = $.widget.extend({}, this.options[key]);\r\n for (i = 0; i < parts.length - 1; i++) {\r\n curOption[parts[i]] = curOption[parts[i]] || {};\r\n curOption = curOption[parts[i]];\r\n }\r\n key = parts.pop();\r\n if (arguments.length === 1) {\r\n return curOption[key] === undefined ? null : curOption[key];\r\n }\r\n curOption[key] = value;\r\n } else {\r\n if (arguments.length === 1) {\r\n return this.options[key] === undefined ? null : this.options[key];\r\n }\r\n options[key] = value;\r\n }\r\n }\r\n\r\n this._setOptions(options);\r\n\r\n return this;\r\n },\r\n\r\n _setOptions: function (options) {\r\n var key;\r\n\r\n for (key in options) {\r\n this._setOption(key, options[key]);\r\n }\r\n\r\n return this;\r\n },\r\n\r\n _setOption: function (key, value) {\r\n if (key === \"classes\") {\r\n this._setOptionClasses(value);\r\n }\r\n\r\n this.options[key] = value;\r\n\r\n if (key === \"disabled\") {\r\n this._setOptionDisabled(value);\r\n }\r\n\r\n return this;\r\n },\r\n\r\n _setOptionClasses: function (value) {\r\n var classKey, elements, currentElements;\r\n\r\n for (classKey in value) {\r\n currentElements = this.classesElementLookup[classKey];\r\n if (value[classKey] === this.options.classes[classKey] ||\r\n !currentElements ||\r\n !currentElements.length) {\r\n continue;\r\n }\r\n\r\n // We are doing this to create a new jQuery object because the _removeClass() call\r\n // on the next line is going to destroy the reference to the current elements being\r\n // tracked. We need to save a copy of this collection so that we can add the new classes\r\n // below.\r\n elements = $(currentElements.get());\r\n this._removeClass(currentElements, classKey);\r\n\r\n // We don't use _addClass() here, because that uses this.options.classes\r\n // for generating the string of classes. We want to use the value passed in from\r\n // _setOption(), this is the new value of the classes option which was passed to\r\n // _setOption(). We pass this value directly to _classes().\r\n elements.addClass(this._classes({\r\n element: elements,\r\n keys: classKey,\r\n classes: value,\r\n add: true\r\n }));\r\n }\r\n },\r\n\r\n _setOptionDisabled: function (value) {\r\n this._toggleClass(this.widget(), this.widgetFullName + \"-disabled\", null, !!value);\r\n\r\n // If the widget is becoming disabled, then nothing is interactive\r\n if (value) {\r\n this._removeClass(this.hoverable, null, \"ui-state-hover\");\r\n this._removeClass(this.focusable, null, \"ui-state-focus\");\r\n }\r\n },\r\n\r\n enable: function () {\r\n return this._setOptions({ disabled: false });\r\n },\r\n\r\n disable: function () {\r\n return this._setOptions({ disabled: true });\r\n },\r\n\r\n _classes: function (options) {\r\n var full = [];\r\n var that = this;\r\n\r\n options = $.extend({\r\n element: this.element,\r\n classes: this.options.classes || {}\r\n }, options);\r\n\r\n function processClassString(classes, checkOption) {\r\n var current, i;\r\n for (i = 0; i < classes.length; i++) {\r\n current = that.classesElementLookup[classes[i]] || $();\r\n if (options.add) {\r\n current = $($.unique(current.get().concat(options.element.get())));\r\n } else {\r\n current = $(current.not(options.element).get());\r\n }\r\n that.classesElementLookup[classes[i]] = current;\r\n full.push(classes[i]);\r\n if (checkOption && options.classes[classes[i]]) {\r\n full.push(options.classes[classes[i]]);\r\n }\r\n }\r\n }\r\n\r\n this._on(options.element, {\r\n \"remove\": \"_untrackClassesElement\"\r\n });\r\n\r\n if (options.keys) {\r\n processClassString(options.keys.match(/\\S+/g) || [], true);\r\n }\r\n if (options.extra) {\r\n processClassString(options.extra.match(/\\S+/g) || []);\r\n }\r\n\r\n return full.join(\" \");\r\n },\r\n\r\n _untrackClassesElement: function (event) {\r\n var that = this;\r\n $.each(that.classesElementLookup, function (key, value) {\r\n if ($.inArray(event.target, value) !== -1) {\r\n that.classesElementLookup[key] = $(value.not(event.target).get());\r\n }\r\n });\r\n },\r\n\r\n _removeClass: function (element, keys, extra) {\r\n return this._toggleClass(element, keys, extra, false);\r\n },\r\n\r\n _addClass: function (element, keys, extra) {\r\n return this._toggleClass(element, keys, extra, true);\r\n },\r\n\r\n _toggleClass: function (element, keys, extra, add) {\r\n add = (typeof add === \"boolean\") ? add : extra;\r\n var shift = (typeof element === \"string\" || element === null),\r\n options = {\r\n extra: shift ? keys : extra,\r\n keys: shift ? element : keys,\r\n element: shift ? this.element : element,\r\n add: add\r\n };\r\n options.element.toggleClass(this._classes(options), add);\r\n return this;\r\n },\r\n\r\n _on: function (suppressDisabledCheck, element, handlers) {\r\n var delegateElement;\r\n var instance = this;\r\n\r\n // No suppressDisabledCheck flag, shuffle arguments\r\n if (typeof suppressDisabledCheck !== \"boolean\") {\r\n handlers = element;\r\n element = suppressDisabledCheck;\r\n suppressDisabledCheck = false;\r\n }\r\n\r\n // No element argument, shuffle and use this.element\r\n if (!handlers) {\r\n handlers = element;\r\n element = this.element;\r\n delegateElement = this.widget();\r\n } else {\r\n element = delegateElement = $(element);\r\n this.bindings = this.bindings.add(element);\r\n }\r\n\r\n $.each(handlers, function (event, handler) {\r\n function handlerProxy() {\r\n\r\n // Allow widgets to customize the disabled handling\r\n // - disabled as an array instead of boolean\r\n // - disabled class as method for disabling individual parts\r\n if (!suppressDisabledCheck &&\r\n (instance.options.disabled === true ||\r\n $(this).hasClass(\"ui-state-disabled\"))) {\r\n return;\r\n }\r\n return (typeof handler === \"string\" ? instance[handler] : handler)\r\n .apply(instance, arguments);\r\n }\r\n\r\n // Copy the guid so direct unbinding works\r\n if (typeof handler !== \"string\") {\r\n handlerProxy.guid = handler.guid =\r\n handler.guid || handlerProxy.guid || $.guid++;\r\n }\r\n\r\n var match = event.match(/^([\\w:-]*)\\s*(.*)$/);\r\n var eventName = match[1] + instance.eventNamespace;\r\n var selector = match[2];\r\n\r\n if (selector) {\r\n delegateElement.on(eventName, selector, handlerProxy);\r\n } else {\r\n element.on(eventName, handlerProxy);\r\n }\r\n });\r\n },\r\n\r\n _off: function (element, eventName) {\r\n eventName = (eventName || \"\").split(\" \").join(this.eventNamespace + \" \") +\r\n this.eventNamespace;\r\n element.off(eventName).off(eventName);\r\n\r\n // Clear the stack to avoid memory leaks (#10056)\r\n this.bindings = $(this.bindings.not(element).get());\r\n this.focusable = $(this.focusable.not(element).get());\r\n this.hoverable = $(this.hoverable.not(element).get());\r\n },\r\n\r\n _delay: function (handler, delay) {\r\n function handlerProxy() {\r\n return (typeof handler === \"string\" ? instance[handler] : handler)\r\n .apply(instance, arguments);\r\n }\r\n var instance = this;\r\n return setTimeout(handlerProxy, delay || 0);\r\n },\r\n\r\n _hoverable: function (element) {\r\n this.hoverable = this.hoverable.add(element);\r\n this._on(element, {\r\n mouseenter: function (event) {\r\n this._addClass($(event.currentTarget), null, \"ui-state-hover\");\r\n },\r\n mouseleave: function (event) {\r\n this._removeClass($(event.currentTarget), null, \"ui-state-hover\");\r\n }\r\n });\r\n },\r\n\r\n _focusable: function (element) {\r\n this.focusable = this.focusable.add(element);\r\n this._on(element, {\r\n focusin: function (event) {\r\n this._addClass($(event.currentTarget), null, \"ui-state-focus\");\r\n },\r\n focusout: function (event) {\r\n this._removeClass($(event.currentTarget), null, \"ui-state-focus\");\r\n }\r\n });\r\n },\r\n\r\n _trigger: function (type, event, data) {\r\n var prop, orig;\r\n var callback = this.options[type];\r\n\r\n data = data || {};\r\n event = $.Event(event);\r\n event.type = (type === this.widgetEventPrefix ?\r\n type :\r\n this.widgetEventPrefix + type).toLowerCase();\r\n\r\n // The original event may come from any element\r\n // so we need to reset the target on the new event\r\n event.target = this.element[0];\r\n\r\n // Copy original event properties over to the new event\r\n orig = event.originalEvent;\r\n if (orig) {\r\n for (prop in orig) {\r\n if (!(prop in event)) {\r\n event[prop] = orig[prop];\r\n }\r\n }\r\n }\r\n\r\n this.element.trigger(event, data);\r\n return !($.isFunction(callback) &&\r\n callback.apply(this.element[0], [event].concat(data)) === false ||\r\n event.isDefaultPrevented());\r\n }\r\n };\r\n\r\n $.each({ show: \"fadeIn\", hide: \"fadeOut\" }, function (method, defaultEffect) {\r\n $.Widget.prototype[\"_\" + method] = function (element, options, callback) {\r\n if (typeof options === \"string\") {\r\n options = { effect: options };\r\n }\r\n\r\n var hasOptions;\r\n var effectName = !options ?\r\n method :\r\n options === true || typeof options === \"number\" ?\r\n defaultEffect :\r\n options.effect || defaultEffect;\r\n\r\n options = options || {};\r\n if (typeof options === \"number\") {\r\n options = { duration: options };\r\n }\r\n\r\n hasOptions = !$.isEmptyObject(options);\r\n options.complete = callback;\r\n\r\n if (options.delay) {\r\n element.delay(options.delay);\r\n }\r\n\r\n if (hasOptions && $.effects && $.effects.effect[effectName]) {\r\n element[method](options);\r\n } else if (effectName !== method && element[effectName]) {\r\n element[effectName](options.duration, options.easing, callback);\r\n } else {\r\n element.queue(function (next) {\r\n $(this)[method]();\r\n if (callback) {\r\n callback.call(element[0]);\r\n }\r\n next();\r\n });\r\n }\r\n };\r\n });\r\n\r\n var widget = $.widget;\r\n\r\n\r\n /*!\r\n * jQuery UI Position 1.12.1\r\n * http://jqueryui.com\r\n *\r\n * Copyright jQuery Foundation and other contributors\r\n * Released under the MIT license.\r\n * http://jquery.org/license\r\n *\r\n * http://api.jqueryui.com/position/\r\n */\r\n\r\n //>>label: Position\r\n //>>group: Core\r\n //>>description: Positions elements relative to other elements.\r\n //>>docs: http://api.jqueryui.com/position/\r\n //>>demos: http://jqueryui.com/position/\r\n\r\n\r\n (function () {\r\n var cachedScrollbarWidth,\r\n max = Math.max,\r\n abs = Math.abs,\r\n rhorizontal = /left|center|right/,\r\n rvertical = /top|center|bottom/,\r\n roffset = /[\\+\\-]\\d+(\\.[\\d]+)?%?/,\r\n rposition = /^\\w+/,\r\n rpercent = /%$/,\r\n _position = $.fn.position;\r\n\r\n function getOffsets(offsets, width, height) {\r\n return [\r\n parseFloat(offsets[0]) * (rpercent.test(offsets[0]) ? width / 100 : 1),\r\n parseFloat(offsets[1]) * (rpercent.test(offsets[1]) ? height / 100 : 1)\r\n ];\r\n }\r\n\r\n function parseCss(element, property) {\r\n return parseInt($.css(element, property), 10) || 0;\r\n }\r\n\r\n function getDimensions(elem) {\r\n var raw = elem[0];\r\n if (raw.nodeType === 9) {\r\n return {\r\n width: elem.width(),\r\n height: elem.height(),\r\n offset: { top: 0, left: 0 }\r\n };\r\n }\r\n if ($.isWindow(raw)) {\r\n return {\r\n width: elem.width(),\r\n height: elem.height(),\r\n offset: { top: elem.scrollTop(), left: elem.scrollLeft() }\r\n };\r\n }\r\n if (raw.preventDefault) {\r\n return {\r\n width: 0,\r\n height: 0,\r\n offset: { top: raw.pageY, left: raw.pageX }\r\n };\r\n }\r\n return {\r\n width: elem.outerWidth(),\r\n height: elem.outerHeight(),\r\n offset: elem.offset()\r\n };\r\n }\r\n\r\n $.position = {\r\n scrollbarWidth: function () {\r\n if (cachedScrollbarWidth !== undefined) {\r\n return cachedScrollbarWidth;\r\n }\r\n var w1, w2,\r\n div = $(\"<div \" +\r\n \"style='display:block;position:absolute;width:50px;height:50px;overflow:hidden;'>\" +\r\n \"<div style='height:100px;width:auto;'></div></div>\"),\r\n innerDiv = div.children()[0];\r\n\r\n $(\"body\").append(div);\r\n w1 = innerDiv.offsetWidth;\r\n div.css(\"overflow\", \"scroll\");\r\n\r\n w2 = innerDiv.offsetWidth;\r\n\r\n if (w1 === w2) {\r\n w2 = div[0].clientWidth;\r\n }\r\n\r\n div.remove();\r\n\r\n return (cachedScrollbarWidth = w1 - w2);\r\n },\r\n getScrollInfo: function (within) {\r\n var overflowX = within.isWindow || within.isDocument ? \"\" :\r\n within.element.css(\"overflow-x\"),\r\n overflowY = within.isWindow || within.isDocument ? \"\" :\r\n within.element.css(\"overflow-y\"),\r\n hasOverflowX = overflowX === \"scroll\" ||\r\n (overflowX === \"auto\" && within.width < within.element[0].scrollWidth),\r\n hasOverflowY = overflowY === \"scroll\" ||\r\n (overflowY === \"auto\" && within.height < within.element[0].scrollHeight);\r\n return {\r\n width: hasOverflowY ? $.position.scrollbarWidth() : 0,\r\n height: hasOverflowX ? $.position.scrollbarWidth() : 0\r\n };\r\n },\r\n getWithinInfo: function (element) {\r\n var withinElement = $(element || window),\r\n isWindow = $.isWindow(withinElement[0]),\r\n isDocument = !!withinElement[0] && withinElement[0].nodeType === 9,\r\n hasOffset = !isWindow && !isDocument;\r\n return {\r\n element: withinElement,\r\n isWindow: isWindow,\r\n isDocument: isDocument,\r\n offset: hasOffset ? $(element).offset() : { left: 0, top: 0 },\r\n scrollLeft: withinElement.scrollLeft(),\r\n scrollTop: withinElement.scrollTop(),\r\n width: withinElement.outerWidth(),\r\n height: withinElement.outerHeight()\r\n };\r\n }\r\n };\r\n\r\n $.fn.position = function (options) {\r\n if (!options || !options.of) {\r\n return _position.apply(this, arguments);\r\n }\r\n\r\n // Make a copy, we don't want to modify arguments\r\n options = $.extend({}, options);\r\n\r\n var atOffset, targetWidth, targetHeight, targetOffset, basePosition, dimensions,\r\n target = $(options.of),\r\n within = $.position.getWithinInfo(options.within),\r\n scrollInfo = $.position.getScrollInfo(within),\r\n collision = (options.collision || \"flip\").split(\" \"),\r\n offsets = {};\r\n\r\n dimensions = getDimensions(target);\r\n if (target[0].preventDefault) {\r\n\r\n // Force left top to allow flipping\r\n options.at = \"left top\";\r\n }\r\n targetWidth = dimensions.width;\r\n targetHeight = dimensions.height;\r\n targetOffset = dimensions.offset;\r\n\r\n // Clone to reuse original targetOffset later\r\n basePosition = $.extend({}, targetOffset);\r\n\r\n // Force my and at to have valid horizontal and vertical positions\r\n // if a value is missing or invalid, it will be converted to center\r\n $.each([\"my\", \"at\"], function () {\r\n var pos = (options[this] || \"\").split(\" \"),\r\n horizontalOffset,\r\n verticalOffset;\r\n\r\n if (pos.length === 1) {\r\n pos = rhorizontal.test(pos[0]) ?\r\n pos.concat([\"center\"]) :\r\n rvertical.test(pos[0]) ?\r\n [\"center\"].concat(pos) :\r\n [\"center\", \"center\"];\r\n }\r\n pos[0] = rhorizontal.test(pos[0]) ? pos[0] : \"center\";\r\n pos[1] = rvertical.test(pos[1]) ? pos[1] : \"center\";\r\n\r\n // Calculate offsets\r\n horizontalOffset = roffset.exec(pos[0]);\r\n verticalOffset = roffset.exec(pos[1]);\r\n offsets[this] = [\r\n horizontalOffset ? horizontalOffset[0] : 0,\r\n verticalOffset ? verticalOffset[0] : 0\r\n ];\r\n\r\n // Reduce to just the positions without the offsets\r\n options[this] = [\r\n rposition.exec(pos[0])[0],\r\n rposition.exec(pos[1])[0]\r\n ];\r\n });\r\n\r\n // Normalize collision option\r\n if (collision.length === 1) {\r\n collision[1] = collision[0];\r\n }\r\n\r\n if (options.at[0] === \"right\") {\r\n basePosition.left += targetWidth;\r\n } else if (options.at[0] === \"center\") {\r\n basePosition.left += targetWidth / 2;\r\n }\r\n\r\n if (options.at[1] === \"bottom\") {\r\n basePosition.top += targetHeight;\r\n } else if (options.at[1] === \"center\") {\r\n basePosition.top += targetHeight / 2;\r\n }\r\n\r\n atOffset = getOffsets(offsets.at, targetWidth, targetHeight);\r\n basePosition.left += atOffset[0];\r\n basePosition.top += atOffset[1];\r\n\r\n return this.each(function () {\r\n var collisionPosition, using,\r\n elem = $(this),\r\n elemWidth = elem.outerWidth(),\r\n elemHeight = elem.outerHeight(),\r\n marginLeft = parseCss(this, \"marginLeft\"),\r\n marginTop = parseCss(this, \"marginTop\"),\r\n collisionWidth = elemWidth + marginLeft + parseCss(this, \"marginRight\") +\r\n scrollInfo.width,\r\n collisionHeight = elemHeight + marginTop + parseCss(this, \"marginBottom\") +\r\n scrollInfo.height,\r\n position = $.extend({}, basePosition),\r\n myOffset = getOffsets(offsets.my, elem.outerWidth(), elem.outerHeight());\r\n\r\n if (options.my[0] === \"right\") {\r\n position.left -= elemWidth;\r\n } else if (options.my[0] === \"center\") {\r\n position.left -= elemWidth / 2;\r\n }\r\n\r\n if (options.my[1] === \"bottom\") {\r\n position.top -= elemHeight;\r\n } else if (options.my[1] === \"center\") {\r\n position.top -= elemHeight / 2;\r\n }\r\n\r\n position.left += myOffset[0];\r\n position.top += myOffset[1];\r\n\r\n collisionPosition = {\r\n marginLeft: marginLeft,\r\n marginTop: marginTop\r\n };\r\n\r\n $.each([\"left\", \"top\"], function (i, dir) {\r\n if ($.ui.position[collision[i]]) {\r\n $.ui.position[collision[i]][dir](position, {\r\n targetWidth: targetWidth,\r\n targetHeight: targetHeight,\r\n elemWidth: elemWidth,\r\n elemHeight: elemHeight,\r\n collisionPosition: collisionPosition,\r\n collisionWidth: collisionWidth,\r\n collisionHeight: collisionHeight,\r\n offset: [atOffset[0] + myOffset[0], atOffset[1] + myOffset[1]],\r\n my: options.my,\r\n at: options.at,\r\n within: within,\r\n elem: elem\r\n });\r\n }\r\n });\r\n\r\n if (options.using) {\r\n\r\n // Adds feedback as second argument to using callback, if present\r\n using = function (props) {\r\n var left = targetOffset.left - position.left,\r\n right = left + targetWidth - elemWidth,\r\n top = targetOffset.top - position.top,\r\n bottom = top + targetHeight - elemHeight,\r\n feedback = {\r\n target: {\r\n element: target,\r\n left: targetOffset.left,\r\n top: targetOffset.top,\r\n width: targetWidth,\r\n height: targetHeight\r\n },\r\n element: {\r\n element: elem,\r\n left: position.left,\r\n top: position.top,\r\n width: elemWidth,\r\n height: elemHeight\r\n },\r\n horizontal: right < 0 ? \"left\" : left > 0 ? \"right\" : \"center\",\r\n vertical: bottom < 0 ? \"top\" : top > 0 ? \"bottom\" : \"middle\"\r\n };\r\n if (targetWidth < elemWidth && abs(left + right) < targetWidth) {\r\n feedback.horizontal = \"center\";\r\n }\r\n if (targetHeight < elemHeight && abs(top + bottom) < targetHeight) {\r\n feedback.vertical = \"middle\";\r\n }\r\n if (max(abs(left), abs(right)) > max(abs(top), abs(bottom))) {\r\n feedback.important = \"horizontal\";\r\n } else {\r\n feedback.important = \"vertical\";\r\n }\r\n options.using.call(this, props, feedback);\r\n };\r\n }\r\n\r\n elem.offset($.extend(position, { using: using }));\r\n });\r\n };\r\n\r\n $.ui.position = {\r\n fit: {\r\n left: function (position, data) {\r\n var within = data.within,\r\n withinOffset = within.isWindow ? within.scrollLeft : within.offset.left,\r\n outerWidth = within.width,\r\n collisionPosLeft = position.left - data.collisionPosition.marginLeft,\r\n overLeft = withinOffset - collisionPosLeft,\r\n overRight = collisionPosLeft + data.collisionWidth - outerWidth - withinOffset,\r\n newOverRight;\r\n\r\n // Element is wider than within\r\n if (data.collisionWidth > outerWidth) {\r\n\r\n // Element is initially over the left side of within\r\n if (overLeft > 0 && overRight <= 0) {\r\n newOverRight = position.left + overLeft + data.collisionWidth - outerWidth -\r\n withinOffset;\r\n position.left += overLeft - newOverRight;\r\n\r\n // Element is initially over right side of within\r\n } else if (overRight > 0 && overLeft <= 0) {\r\n position.left = withinOffset;\r\n\r\n // Element is initially over both left and right sides of within\r\n } else {\r\n if (overLeft > overRight) {\r\n position.left = withinOffset + outerWidth - data.collisionWidth;\r\n } else {\r\n position.left = withinOffset;\r\n }\r\n }\r\n\r\n // Too far left -> align with left edge\r\n } else if (overLeft > 0) {\r\n position.left += overLeft;\r\n\r\n // Too far right -> align with right edge\r\n } else if (overRight > 0) {\r\n position.left -= overRight;\r\n\r\n // Adjust based on position and margin\r\n } else {\r\n position.left = max(position.left - collisionPosLeft, position.left);\r\n }\r\n },\r\n top: function (position, data) {\r\n var within = data.within,\r\n withinOffset = within.isWindow ? within.scrollTop : within.offset.top,\r\n outerHeight = data.within.height,\r\n collisionPosTop = position.top - data.collisionPosition.marginTop,\r\n overTop = withinOffset - collisionPosTop,\r\n overBottom = collisionPosTop + data.collisionHeight - outerHeight - withinOffset,\r\n newOverBottom;\r\n\r\n // Element is taller than within\r\n if (data.collisionHeight > outerHeight) {\r\n\r\n // Element is initially over the top of within\r\n if (overTop > 0 && overBottom <= 0) {\r\n newOverBottom = position.top + overTop + data.collisionHeight - outerHeight -\r\n withinOffset;\r\n position.top += overTop - newOverBottom;\r\n\r\n // Element is initially over bottom of within\r\n } else if (overBottom > 0 && overTop <= 0) {\r\n position.top = withinOffset;\r\n\r\n // Element is initially over both top and bottom of within\r\n } else {\r\n if (overTop > overBottom) {\r\n position.top = withinOffset + outerHeight - data.collisionHeight;\r\n } else {\r\n position.top = withinOffset;\r\n }\r\n }\r\n\r\n // Too far up -> align with top\r\n } else if (overTop > 0) {\r\n position.top += overTop;\r\n\r\n // Too far down -> align with bottom edge\r\n } else if (overBottom > 0) {\r\n position.top -= overBottom;\r\n\r\n // Adjust based on position and margin\r\n } else {\r\n position.top = max(position.top - collisionPosTop, position.top);\r\n }\r\n }\r\n },\r\n flip: {\r\n left: function (position, data) {\r\n var within = data.within,\r\n withinOffset = within.offset.left + within.scrollLeft,\r\n outerWidth = within.width,\r\n offsetLeft = within.isWindow ? within.scrollLeft : within.offset.left,\r\n collisionPosLeft = position.left - data.collisionPosition.marginLeft,\r\n overLeft = collisionPosLeft - offsetLeft,\r\n overRight = collisionPosLeft + data.collisionWidth - outerWidth - offsetLeft,\r\n myOffset = data.my[0] === \"left\" ?\r\n -data.elemWidth :\r\n data.my[0] === \"right\" ?\r\n data.elemWidth :\r\n 0,\r\n atOffset = data.at[0] === \"left\" ?\r\n data.targetWidth :\r\n data.at[0] === \"right\" ?\r\n -data.targetWidth :\r\n 0,\r\n offset = -2 * data.offset[0],\r\n newOverRight,\r\n newOverLeft;\r\n\r\n if (overLeft < 0) {\r\n newOverRight = position.left + myOffset + atOffset + offset + data.collisionWidth -\r\n outerWidth - withinOffset;\r\n if (newOverRight < 0 || newOverRight < abs(overLeft)) {\r\n position.left += myOffset + atOffset + offset;\r\n }\r\n } else if (overRight > 0) {\r\n newOverLeft = position.left - data.collisionPosition.marginLeft + myOffset +\r\n atOffset + offset - offsetLeft;\r\n if (newOverLeft > 0 || abs(newOverLeft) < overRight) {\r\n position.left += myOffset + atOffset + offset;\r\n }\r\n }\r\n },\r\n top: function (position, data) {\r\n var within = data.within,\r\n withinOffset = within.offset.top + within.scrollTop,\r\n outerHeight = within.height,\r\n offsetTop = within.isWindow ? within.scrollTop : within.offset.top,\r\n collisionPosTop = position.top - data.collisionPosition.marginTop,\r\n overTop = collisionPosTop - offsetTop,\r\n overBottom = collisionPosTop + data.collisionHeight - outerHeight - offsetTop,\r\n top = data.my[1] === \"top\",\r\n myOffset = top ?\r\n -data.elemHeight :\r\n data.my[1] === \"bottom\" ?\r\n data.elemHeight :\r\n 0,\r\n atOffset = data.at[1] === \"top\" ?\r\n data.targetHeight :\r\n data.at[1] === \"bottom\" ?\r\n -data.targetHeight :\r\n 0,\r\n offset = -2 * data.offset[1],\r\n newOverTop,\r\n newOverBottom;\r\n if (overTop < 0) {\r\n newOverBottom = position.top + myOffset + atOffset + offset + data.collisionHeight -\r\n outerHeight - withinOffset;\r\n if (newOverBottom < 0 || newOverBottom < abs(overTop)) {\r\n position.top += myOffset + atOffset + offset;\r\n }\r\n } else if (overBottom > 0) {\r\n newOverTop = position.top - data.collisionPosition.marginTop + myOffset + atOffset +\r\n offset - offsetTop;\r\n if (newOverTop > 0 || abs(newOverTop) < overBottom) {\r\n position.top += myOffset + atOffset + offset;\r\n }\r\n }\r\n }\r\n },\r\n flipfit: {\r\n left: function () {\r\n $.ui.position.flip.left.apply(this, arguments);\r\n $.ui.position.fit.left.apply(this, arguments);\r\n },\r\n top: function () {\r\n $.ui.position.flip.top.apply(this, arguments);\r\n $.ui.position.fit.top.apply(this, arguments);\r\n }\r\n }\r\n };\r\n\r\n })();\r\n\r\n var position = $.ui.position;\r\n\r\n\r\n /*!\r\n * jQuery UI Keycode 1.12.1\r\n * http://jqueryui.com\r\n *\r\n * Copyright jQuery Foundation and other contributors\r\n * Released under the MIT license.\r\n * http://jquery.org/license\r\n */\r\n\r\n //>>label: Keycode\r\n //>>group: Core\r\n //>>description: Provide keycodes as keynames\r\n //>>docs: http://api.jqueryui.com/jQuery.ui.keyCode/\r\n\r\n\r\n var keycode = $.ui.keyCode = {\r\n BACKSPACE: 8,\r\n COMMA: 188,\r\n DELETE: 46,\r\n DOWN: 40,\r\n END: 35,\r\n ENTER: 13,\r\n ESCAPE: 27,\r\n HOME: 36,\r\n LEFT: 37,\r\n PAGE_DOWN: 34,\r\n PAGE_UP: 33,\r\n PERIOD: 190,\r\n RIGHT: 39,\r\n SPACE: 32,\r\n TAB: 9,\r\n UP: 38\r\n };\r\n\r\n\r\n /*!\r\n * jQuery UI Unique ID 1.12.1\r\n * http://jqueryui.com\r\n *\r\n * Copyright jQuery Foundation and other contributors\r\n * Released under the MIT license.\r\n * http://jquery.org/license\r\n */\r\n\r\n //>>label: uniqueId\r\n //>>group: Core\r\n //>>description: Functions to generate and remove uniqueId's\r\n //>>docs: http://api.jqueryui.com/uniqueId/\r\n\r\n\r\n\r\n var uniqueId = $.fn.extend({\r\n uniqueId: (function () {\r\n var uuid = 0;\r\n\r\n return function () {\r\n return this.each(function () {\r\n if (!this.id) {\r\n this.id = \"ui-id-\" + (++uuid);\r\n }\r\n });\r\n };\r\n })(),\r\n\r\n removeUniqueId: function () {\r\n return this.each(function () {\r\n if (/^ui-id-\\d+$/.test(this.id)) {\r\n $(this).removeAttr(\"id\");\r\n }\r\n });\r\n }\r\n });\r\n\r\n\r\n\r\n var safeActiveElement = $.ui.safeActiveElement = function (document) {\r\n var activeElement;\r\n\r\n // Support: IE 9 only\r\n // IE9 throws an \"Unspecified error\" accessing document.activeElement from an <iframe>\r\n try {\r\n activeElement = document.activeElement;\r\n } catch (error) {\r\n activeElement = document.body;\r\n }\r\n\r\n // Support: IE 9 - 11 only\r\n // IE may return null instead of an element\r\n // Interestingly, this only seems to occur when NOT in an iframe\r\n if (!activeElement) {\r\n activeElement = document.body;\r\n }\r\n\r\n // Support: IE 11 only\r\n // IE11 returns a seemingly empty object in some cases when accessing\r\n // document.activeElement from an <iframe>\r\n if (!activeElement.nodeName) {\r\n activeElement = document.body;\r\n }\r\n\r\n return activeElement;\r\n };\r\n\r\n\r\n /*!\r\n * jQuery UI Menu 1.12.1\r\n * http://jqueryui.com\r\n *\r\n * Copyright jQuery Foundation and other contributors\r\n * Released under the MIT license.\r\n * http://jquery.org/license\r\n */\r\n\r\n //>>label: Menu\r\n //>>group: Widgets\r\n //>>description: Creates nestable menus.\r\n //>>docs: http://api.jqueryui.com/menu/\r\n //>>demos: http://jqueryui.com/menu/\r\n //>>css.structure: ../../themes/base/core.css\r\n //>>css.structure: ../../themes/base/menu.css\r\n //>>css.theme: ../../themes/base/theme.css\r\n\r\n\r\n\r\n var widgetsMenu = $.widget(\"ui.menu\", {\r\n version: \"1.12.1\",\r\n defaultElement: \"<ul>\",\r\n delay: 300,\r\n options: {\r\n icons: {\r\n submenu: \"ui-icon-caret-1-e\"\r\n },\r\n items: \"> *\",\r\n menus: \"ul\",\r\n position: {\r\n my: \"left top\",\r\n at: \"right top\"\r\n },\r\n role: \"menu\",\r\n\r\n // Callbacks\r\n blur: null,\r\n focus: null,\r\n select: null\r\n },\r\n\r\n _create: function () {\r\n this.activeMenu = this.element;\r\n\r\n // Flag used to prevent firing of the click handler\r\n // as the event bubbles up through nested menus\r\n this.mouseHandled = false;\r\n this.element\r\n .uniqueId()\r\n .attr({\r\n role: this.options.role,\r\n tabIndex: 0\r\n });\r\n\r\n this._addClass(\"ui-menu\", \"ui-widget ui-widget-content\");\r\n this._on({\r\n\r\n // Prevent focus from sticking to links inside menu after clicking\r\n // them (focus should always stay on UL during navigation).\r\n \"mousedown .ui-menu-item\": function (event) {\r\n event.preventDefault();\r\n },\r\n \"click .ui-menu-item\": function (event) {\r\n var target = $(event.target);\r\n var active = $($.ui.safeActiveElement(this.document[0]));\r\n if (!this.mouseHandled && target.not(\".ui-state-disabled\").length) {\r\n this.select(event);\r\n\r\n // Only set the mouseHandled flag if the event will bubble, see #9469.\r\n if (!event.isPropagationStopped()) {\r\n this.mouseHandled = true;\r\n }\r\n\r\n // Open submenu on click\r\n if (target.has(\".ui-menu\").length) {\r\n this.expand(event);\r\n } else if (!this.element.is(\":focus\") &&\r\n active.closest(\".ui-menu\").length) {\r\n\r\n // Redirect focus to the menu\r\n this.element.trigger(\"focus\", [true]);\r\n\r\n // If the active item is on the top level, let it stay active.\r\n // Otherwise, blur the active item since it is no longer visible.\r\n if (this.active && this.active.parents(\".ui-menu\").length === 1) {\r\n clearTimeout(this.timer);\r\n }\r\n }\r\n }\r\n },\r\n \"mouseenter .ui-menu-item\": function (event) {\r\n\r\n // Ignore mouse events while typeahead is active, see #10458.\r\n // Prevents focusing the wrong item when typeahead causes a scroll while the mouse\r\n // is over an item in the menu\r\n if (this.previousFilter) {\r\n return;\r\n }\r\n\r\n var actualTarget = $(event.target).closest(\".ui-menu-item\"),\r\n target = $(event.currentTarget);\r\n\r\n // Ignore bubbled events on parent items, see #11641\r\n if (actualTarget[0] !== target[0]) {\r\n return;\r\n }\r\n\r\n // Remove ui-state-active class from siblings of the newly focused menu item\r\n // to avoid a jump caused by adjacent elements both having a class with a border\r\n this._removeClass(target.siblings().children(\".ui-state-active\"),\r\n null, \"ui-state-active\");\r\n this.focus(event, target);\r\n },\r\n mouseleave: \"collapseAll\",\r\n \"mouseleave .ui-menu\": \"collapseAll\",\r\n focus: function (event, keepActiveItem) {\r\n\r\n // If there's already an active item, keep it active\r\n // If not, activate the first item\r\n var item = this.active || this.element.find(this.options.items).eq(0);\r\n\r\n if (!keepActiveItem) {\r\n this.focus(event, item);\r\n }\r\n },\r\n blur: function (event) {\r\n this._delay(function () {\r\n var notContained = !$.contains(\r\n this.element[0],\r\n $.ui.safeActiveElement(this.document[0])\r\n );\r\n if (notContained) {\r\n this.collapseAll(event);\r\n }\r\n });\r\n },\r\n keydown: \"_keydown\"\r\n });\r\n\r\n this.refresh();\r\n\r\n // Clicks outside of a menu collapse any open menus\r\n this._on(this.document, {\r\n click: function (event) {\r\n if (this._closeOnDocumentClick(event)) {\r\n this.collapseAll(event);\r\n }\r\n\r\n // Reset the mouseHandled flag\r\n this.mouseHandled = false;\r\n }\r\n });\r\n },\r\n\r\n _destroy: function () {\r\n var items = this.element.find(\".ui-menu-item\")\r\n .removeAttr(\"role aria-disabled\"),\r\n submenus = items.children(\".ui-menu-item-wrapper\")\r\n .removeUniqueId()\r\n .removeAttr(\"tabIndex role aria-haspopup\");\r\n\r\n // Destroy (sub)menus\r\n this.element\r\n .removeAttr(\"aria-activedescendant\")\r\n .find(\".ui-menu\").addBack()\r\n .removeAttr(\"role aria-labelledby aria-expanded aria-hidden aria-disabled \" +\r\n \"tabIndex\")\r\n .removeUniqueId()\r\n .show();\r\n\r\n submenus.children().each(function () {\r\n var elem = $(this);\r\n if (elem.data(\"ui-menu-submenu-caret\")) {\r\n elem.remove();\r\n }\r\n });\r\n },\r\n\r\n _keydown: function (event) {\r\n var match, prev, character, skip,\r\n preventDefault = true;\r\n\r\n switch (event.keyCode) {\r\n case $.ui.keyCode.PAGE_UP:\r\n this.previousPage(event);\r\n break;\r\n case $.ui.keyCode.PAGE_DOWN:\r\n this.nextPage(event);\r\n break;\r\n case $.ui.keyCode.HOME:\r\n this._move(\"first\", \"first\", event);\r\n break;\r\n case $.ui.keyCode.END:\r\n this._move(\"last\", \"last\", event);\r\n break;\r\n case $.ui.keyCode.UP:\r\n this.previous(event);\r\n break;\r\n case $.ui.keyCode.DOWN:\r\n this.next(event);\r\n break;\r\n case $.ui.keyCode.LEFT:\r\n this.collapse(event);\r\n break;\r\n case $.ui.keyCode.RIGHT:\r\n if (this.active && !this.active.is(\".ui-state-disabled\")) {\r\n this.expand(event);\r\n }\r\n break;\r\n case $.ui.keyCode.ENTER:\r\n case $.ui.keyCode.SPACE:\r\n this._activate(event);\r\n break;\r\n case $.ui.keyCode.ESCAPE:\r\n this.collapse(event);\r\n break;\r\n default:\r\n preventDefault = false;\r\n prev = this.previousFilter || \"\";\r\n skip = false;\r\n\r\n // Support number pad values\r\n character = event.keyCode >= 96 && event.keyCode <= 105 ?\r\n (event.keyCode - 96).toString() : String.fromCharCode(event.keyCode);\r\n\r\n clearTimeout(this.filterTimer);\r\n\r\n if (character === prev) {\r\n skip = true;\r\n } else {\r\n character = prev + character;\r\n }\r\n\r\n match = this._filterMenuItems(character);\r\n match = skip && match.index(this.active.next()) !== -1 ?\r\n this.active.nextAll(\".ui-menu-item\") :\r\n match;\r\n\r\n // If no matches on the current filter, reset to the last character pressed\r\n // to move down the menu to the first item that starts with that character\r\n if (!match.length) {\r\n character = String.fromCharCode(event.keyCode);\r\n match = this._filterMenuItems(character);\r\n }\r\n\r\n if (match.length) {\r\n this.focus(event, match);\r\n this.previousFilter = character;\r\n this.filterTimer = this._delay(function () {\r\n delete this.previousFilter;\r\n }, 1000);\r\n } else {\r\n delete this.previousFilter;\r\n }\r\n }\r\n\r\n if (preventDefault) {\r\n event.preventDefault();\r\n }\r\n },\r\n\r\n _activate: function (event) {\r\n if (this.active && !this.active.is(\".ui-state-disabled\")) {\r\n if (this.active.children(\"[aria-haspopup='true']\").length) {\r\n this.expand(event);\r\n } else {\r\n this.select(event);\r\n }\r\n }\r\n },\r\n\r\n refresh: function () {\r\n var menus, items, newSubmenus, newItems, newWrappers,\r\n that = this,\r\n icon = this.options.icons.submenu,\r\n submenus = this.element.find(this.options.menus);\r\n\r\n this._toggleClass(\"ui-menu-icons\", null, !!this.element.find(\".ui-icon\").length);\r\n\r\n // Initialize nested menus\r\n newSubmenus = submenus.filter(\":not(.ui-menu)\")\r\n .hide()\r\n .attr({\r\n role: this.options.role,\r\n \"aria-hidden\": \"true\",\r\n \"aria-expanded\": \"false\"\r\n })\r\n .each(function () {\r\n var menu = $(this),\r\n item = menu.prev(),\r\n submenuCaret = $(\"<span>\").data(\"ui-menu-submenu-caret\", true);\r\n\r\n that._addClass(submenuCaret, \"ui-menu-icon\", \"ui-icon \" + icon);\r\n item\r\n .attr(\"aria-haspopup\", \"true\")\r\n .prepend(submenuCaret);\r\n menu.attr(\"aria-labelledby\", item.attr(\"id\"));\r\n });\r\n\r\n this._addClass(newSubmenus, \"ui-menu\", \"ui-widget ui-widget-content ui-front\");\r\n\r\n menus = submenus.add(this.element);\r\n items = menus.find(this.options.items);\r\n\r\n // Initialize menu-items containing spaces and/or dashes only as dividers\r\n items.not(\".ui-menu-item\").each(function () {\r\n var item = $(this);\r\n if (that._isDivider(item)) {\r\n that._addClass(item, \"ui-menu-divider\", \"ui-widget-content\");\r\n }\r\n });\r\n\r\n // Don't refresh list items that are already adapted\r\n newItems = items.not(\".ui-menu-item, .ui-menu-divider\");\r\n newWrappers = newItems.children()\r\n .not(\".ui-menu\")\r\n .uniqueId()\r\n .attr({\r\n tabIndex: -1,\r\n role: this._itemRole()\r\n });\r\n this._addClass(newItems, \"ui-menu-item\")\r\n ._addClass(newWrappers, \"ui-menu-item-wrapper\");\r\n\r\n // Add aria-disabled attribute to any disabled menu item\r\n items.filter(\".ui-state-disabled\").attr(\"aria-disabled\", \"true\");\r\n\r\n // If the active item has been removed, blur the menu\r\n if (this.active && !$.contains(this.element[0], this.active[0])) {\r\n this.blur();\r\n }\r\n },\r\n\r\n _itemRole: function () {\r\n return {\r\n menu: \"menuitem\",\r\n listbox: \"option\"\r\n }[this.options.role];\r\n },\r\n\r\n _setOption: function (key, value) {\r\n if (key === \"icons\") {\r\n var icons = this.element.find(\".ui-menu-icon\");\r\n this._removeClass(icons, null, this.options.icons.submenu)\r\n ._addClass(icons, null, value.submenu);\r\n }\r\n this._super(key, value);\r\n },\r\n\r\n _setOptionDisabled: function (value) {\r\n this._super(value);\r\n\r\n this.element.attr(\"aria-disabled\", String(value));\r\n this._toggleClass(null, \"ui-state-disabled\", !!value);\r\n },\r\n\r\n focus: function (event, item) {\r\n var nested, focused, activeParent;\r\n this.blur(event, event && event.type === \"focus\");\r\n\r\n this._scrollIntoView(item);\r\n\r\n this.active = item.first();\r\n\r\n focused = this.active.children(\".ui-menu-item-wrapper\");\r\n this._addClass(focused, null, \"ui-state-active\");\r\n\r\n // Only update aria-activedescendant if there's a role\r\n // otherwise we assume focus is managed elsewhere\r\n if (this.options.role) {\r\n this.element.attr(\"aria-activedescendant\", focused.attr(\"id\"));\r\n }\r\n\r\n // Highlight active parent menu item, if any\r\n activeParent = this.active\r\n .parent()\r\n .closest(\".ui-menu-item\")\r\n .children(\".ui-menu-item-wrapper\");\r\n this._addClass(activeParent, null, \"ui-state-active\");\r\n\r\n if (event && event.type === \"keydown\") {\r\n this._close();\r\n } else {\r\n this.timer = this._delay(function () {\r\n this._close();\r\n }, this.delay);\r\n }\r\n\r\n nested = item.children(\".ui-menu\");\r\n if (nested.length && event && (/^mouse/.test(event.type))) {\r\n this._startOpening(nested);\r\n }\r\n this.activeMenu = item.parent();\r\n\r\n this._trigger(\"focus\", event, { item: item });\r\n },\r\n\r\n _scrollIntoView: function (item) {\r\n var borderTop, paddingTop, offset, scroll, elementHeight, itemHeight;\r\n if (this._hasScroll()) {\r\n borderTop = parseFloat($.css(this.activeMenu[0], \"borderTopWidth\")) || 0;\r\n paddingTop = parseFloat($.css(this.activeMenu[0], \"paddingTop\")) || 0;\r\n offset = item.offset().top - this.activeMenu.offset().top - borderTop - paddingTop;\r\n scroll = this.activeMenu.scrollTop();\r\n elementHeight = this.activeMenu.height();\r\n itemHeight = item.outerHeight();\r\n\r\n if (offset < 0) {\r\n this.activeMenu.scrollTop(scroll + offset);\r\n } else if (offset + itemHeight > elementHeight) {\r\n this.activeMenu.scrollTop(scroll + offset - elementHeight + itemHeight);\r\n }\r\n }\r\n },\r\n\r\n blur: function (event, fromFocus) {\r\n if (!fromFocus) {\r\n clearTimeout(this.timer);\r\n }\r\n\r\n if (!this.active) {\r\n return;\r\n }\r\n\r\n this._removeClass(this.active.children(\".ui-menu-item-wrapper\"),\r\n null, \"ui-state-active\");\r\n\r\n this._trigger(\"blur\", event, { item: this.active });\r\n this.active = null;\r\n },\r\n\r\n _startOpening: function (submenu) {\r\n clearTimeout(this.timer);\r\n\r\n // Don't open if already open fixes a Firefox bug that caused a .5 pixel\r\n // shift in the submenu position when mousing over the caret icon\r\n if (submenu.attr(\"aria-hidden\") !== \"true\") {\r\n return;\r\n }\r\n\r\n this.timer = this._delay(function () {\r\n this._close();\r\n this._open(submenu);\r\n }, this.delay);\r\n },\r\n\r\n _open: function (submenu) {\r\n var position = $.extend({\r\n of: this.active\r\n }, this.options.position);\r\n\r\n clearTimeout(this.timer);\r\n this.element.find(\".ui-menu\").not(submenu.parents(\".ui-menu\"))\r\n .hide()\r\n .attr(\"aria-hidden\", \"true\");\r\n\r\n submenu\r\n .show()\r\n .removeAttr(\"aria-hidden\")\r\n .attr(\"aria-expanded\", \"true\")\r\n .position(position);\r\n },\r\n\r\n collapseAll: function (event, all) {\r\n clearTimeout(this.timer);\r\n this.timer = this._delay(function () {\r\n\r\n // If we were passed an event, look for the submenu that contains the event\r\n var currentMenu = all ? this.element :\r\n $(event && event.target).closest(this.element.find(\".ui-menu\"));\r\n\r\n // If we found no valid submenu ancestor, use the main menu to close all\r\n // sub menus anyway\r\n if (!currentMenu.length) {\r\n currentMenu = this.element;\r\n }\r\n\r\n this._close(currentMenu);\r\n\r\n this.blur(event);\r\n\r\n // Work around active item staying active after menu is blurred\r\n this._removeClass(currentMenu.find(\".ui-state-active\"), null, \"ui-state-active\");\r\n\r\n this.activeMenu = currentMenu;\r\n }, this.delay);\r\n },\r\n\r\n // With no arguments, closes the currently active menu - if nothing is active\r\n // it closes all menus. If passed an argument, it will search for menus BELOW\r\n _close: function (startMenu) {\r\n if (!startMenu) {\r\n startMenu = this.active ? this.active.parent() : this.element;\r\n }\r\n\r\n startMenu.find(\".ui-menu\")\r\n .hide()\r\n .attr(\"aria-hidden\", \"true\")\r\n .attr(\"aria-expanded\", \"false\");\r\n },\r\n\r\n _closeOnDocumentClick: function (event) {\r\n return !$(event.target).closest(\".ui-menu\").length;\r\n },\r\n\r\n _isDivider: function (item) {\r\n\r\n // Match hyphen, em dash, en dash\r\n return !/[^\\-\\u2014\\u2013\\s]/.test(item.text());\r\n },\r\n\r\n collapse: function (event) {\r\n var newItem = this.active &&\r\n this.active.parent().closest(\".ui-menu-item\", this.element);\r\n if (newItem && newItem.length) {\r\n this._close();\r\n this.focus(event, newItem);\r\n }\r\n },\r\n\r\n expand: function (event) {\r\n var newItem = this.active &&\r\n this.active\r\n .children(\".ui-menu \")\r\n .find(this.options.items)\r\n .first();\r\n\r\n if (newItem && newItem.length) {\r\n this._open(newItem.parent());\r\n\r\n // Delay so Firefox will not hide activedescendant change in expanding submenu from AT\r\n this._delay(function () {\r\n this.focus(event, newItem);\r\n });\r\n }\r\n },\r\n\r\n next: function (event) {\r\n this._move(\"next\", \"first\", event);\r\n },\r\n\r\n previous: function (event) {\r\n this._move(\"prev\", \"last\", event);\r\n },\r\n\r\n isFirstItem: function () {\r\n return this.active && !this.active.prevAll(\".ui-menu-item\").length;\r\n },\r\n\r\n isLastItem: function () {\r\n return this.active && !this.active.nextAll(\".ui-menu-item\").length;\r\n },\r\n\r\n _move: function (direction, filter, event) {\r\n var next;\r\n if (this.active) {\r\n if (direction === \"first\" || direction === \"last\") {\r\n next = this.active\r\n [direction === \"first\" ? \"prevAll\" : \"nextAll\"](\".ui-menu-item\")\r\n .eq(-1);\r\n } else {\r\n next = this.active\r\n [direction + \"All\"](\".ui-menu-item\")\r\n .eq(0);\r\n }\r\n }\r\n if (!next || !next.length || !this.active) {\r\n next = this.activeMenu.find(this.options.items)[filter]();\r\n }\r\n\r\n this.focus(event, next);\r\n },\r\n\r\n nextPage: function (event) {\r\n var item, base, height;\r\n\r\n if (!this.active) {\r\n this.next(event);\r\n return;\r\n }\r\n if (this.isLastItem()) {\r\n return;\r\n }\r\n if (this._hasScroll()) {\r\n base = this.active.offset().top;\r\n height = this.element.height();\r\n this.active.nextAll(\".ui-menu-item\").each(function () {\r\n item = $(this);\r\n return item.offset().top - base - height < 0;\r\n });\r\n\r\n this.focus(event, item);\r\n } else {\r\n this.focus(event, this.activeMenu.find(this.options.items)\r\n [!this.active ? \"first\" : \"last\"]());\r\n }\r\n },\r\n\r\n previousPage: function (event) {\r\n var item, base, height;\r\n if (!this.active) {\r\n this.next(event);\r\n return;\r\n }\r\n if (this.isFirstItem()) {\r\n return;\r\n }\r\n if (this._hasScroll()) {\r\n base = this.active.offset().top;\r\n height = this.element.height();\r\n this.active.prevAll(\".ui-menu-item\").each(function () {\r\n item = $(this);\r\n return item.offset().top - base + height > 0;\r\n });\r\n\r\n this.focus(event, item);\r\n } else {\r\n this.focus(event, this.activeMenu.find(this.options.items).first());\r\n }\r\n },\r\n\r\n _hasScroll: function () {\r\n return this.element.outerHeight() < this.element.prop(\"scrollHeight\");\r\n },\r\n\r\n select: function (event) {\r\n\r\n // TODO: It should never be possible to not have an active item at this\r\n // point, but the tests don't trigger mouseenter before click.\r\n this.active = this.active || $(event.target).closest(\".ui-menu-item\");\r\n var ui = { item: this.active };\r\n if (!this.active.has(\".ui-menu\").length) {\r\n this.collapseAll(event, true);\r\n }\r\n this._trigger(\"select\", event, ui);\r\n },\r\n\r\n _filterMenuItems: function (character) {\r\n var escapedCharacter = character.replace(/[\\-\\[\\]{}()*+?.,\\\\\\^$|#\\s]/g, \"\\\\$&\"),\r\n regex = new RegExp(\"^\" + escapedCharacter, \"i\");\r\n\r\n return this.activeMenu\r\n .find(this.options.items)\r\n\r\n // Only match on items, not dividers or other content (#10571)\r\n .filter(\".ui-menu-item\")\r\n .filter(function () {\r\n return regex.test(\r\n $.trim($(this).children(\".ui-menu-item-wrapper\").text()));\r\n });\r\n }\r\n });\r\n\r\n\r\n /*!\r\n * jQuery UI Autocomplete 1.12.1\r\n * http://jqueryui.com\r\n *\r\n * Copyright jQuery Foundation and other contributors\r\n * Released under the MIT license.\r\n * http://jquery.org/license\r\n */\r\n\r\n //>>label: Autocomplete\r\n //>>group: Widgets\r\n //>>description: Lists suggested words as the user is typing.\r\n //>>docs: http://api.jqueryui.com/autocomplete/\r\n //>>demos: http://jqueryui.com/autocomplete/\r\n //>>css.structure: ../../themes/base/core.css\r\n //>>css.structure: ../../themes/base/autocomplete.css\r\n //>>css.theme: ../../themes/base/theme.css\r\n\r\n\r\n\r\n $.widget(\"ui.autocomplete\", {\r\n version: \"1.12.1\",\r\n defaultElement: \"<input>\",\r\n options: {\r\n appendTo: null,\r\n autoFocus: false,\r\n delay: 300,\r\n minLength: 1,\r\n position: {\r\n my: \"left top\",\r\n at: \"left bottom\",\r\n collision: \"none\"\r\n },\r\n source: null,\r\n\r\n // Callbacks\r\n change: null,\r\n close: null,\r\n focus: null,\r\n open: null,\r\n response: null,\r\n search: null,\r\n select: null\r\n },\r\n\r\n requestIndex: 0,\r\n pending: 0,\r\n\r\n _create: function () {\r\n\r\n // Some browsers only repeat keydown events, not keypress events,\r\n // so we use the suppressKeyPress flag to determine if we've already\r\n // handled the keydown event. #7269\r\n // Unfortunately the code for & in keypress is the same as the up arrow,\r\n // so we use the suppressKeyPressRepeat flag to avoid handling keypress\r\n // events when we know the keydown event was used to modify the\r\n // search term. #7799\r\n var suppressKeyPress, suppressKeyPressRepeat, suppressInput,\r\n nodeName = this.element[0].nodeName.toLowerCase(),\r\n isTextarea = nodeName === \"textarea\",\r\n isInput = nodeName === \"input\";\r\n\r\n // Textareas are always multi-line\r\n // Inputs are always single-line, even if inside a contentEditable element\r\n // IE also treats inputs as contentEditable\r\n // All other element types are determined by whether or not they're contentEditable\r\n this.isMultiLine = isTextarea || !isInput && this._isContentEditable(this.element);\r\n\r\n this.valueMethod = this.element[isTextarea || isInput ? \"val\" : \"text\"];\r\n this.isNewMenu = true;\r\n\r\n this._addClass(\"ui-autocomplete-input\");\r\n this.element.attr(\"autocomplete\", \"off\");\r\n\r\n this._on(this.element, {\r\n keydown: function (event) {\r\n if (this.element.prop(\"readOnly\")) {\r\n suppressKeyPress = true;\r\n suppressInput = true;\r\n suppressKeyPressRepeat = true;\r\n return;\r\n }\r\n\r\n suppressKeyPress = false;\r\n suppressInput = false;\r\n suppressKeyPressRepeat = false;\r\n var keyCode = $.ui.keyCode;\r\n switch (event.keyCode) {\r\n case keyCode.PAGE_UP:\r\n suppressKeyPress = true;\r\n this._move(\"previousPage\", event);\r\n break;\r\n case keyCode.PAGE_DOWN:\r\n suppressKeyPress = true;\r\n this._move(\"nextPage\", event);\r\n break;\r\n case keyCode.UP:\r\n suppressKeyPress = true;\r\n this._keyEvent(\"previous\", event);\r\n break;\r\n case keyCode.DOWN:\r\n suppressKeyPress = true;\r\n this._keyEvent(\"next\", event);\r\n break;\r\n case keyCode.ENTER:\r\n\r\n // when menu is open and has focus\r\n if (this.menu.active) {\r\n\r\n // #6055 - Opera still allows the keypress to occur\r\n // which causes forms to submit\r\n suppressKeyPress = true;\r\n event.preventDefault();\r\n this.menu.select(event);\r\n }\r\n break;\r\n case keyCode.TAB:\r\n if (this.menu.active) {\r\n this.menu.select(event);\r\n }\r\n break;\r\n case keyCode.ESCAPE:\r\n if (this.menu.element.is(\":visible\")) {\r\n if (!this.isMultiLine) {\r\n this._value(this.term);\r\n }\r\n this.close(event);\r\n\r\n // Different browsers have different default behavior for escape\r\n // Single press can mean undo or clear\r\n // Double press in IE means clear the whole form\r\n event.preventDefault();\r\n }\r\n break;\r\n default:\r\n suppressKeyPressRepeat = true;\r\n\r\n // search timeout should be triggered before the input value is changed\r\n this._searchTimeout(event);\r\n break;\r\n }\r\n },\r\n keypress: function (event) {\r\n if (suppressKeyPress) {\r\n suppressKeyPress = false;\r\n if (!this.isMultiLine || this.menu.element.is(\":visible\")) {\r\n event.preventDefault();\r\n }\r\n return;\r\n }\r\n if (suppressKeyPressRepeat) {\r\n return;\r\n }\r\n\r\n // Replicate some key handlers to allow them to repeat in Firefox and Opera\r\n var keyCode = $.ui.keyCode;\r\n switch (event.keyCode) {\r\n case keyCode.PAGE_UP:\r\n this._move(\"previousPage\", event);\r\n break;\r\n case keyCode.PAGE_DOWN:\r\n this._move(\"nextPage\", event);\r\n break;\r\n case keyCode.UP:\r\n this._keyEvent(\"previous\", event);\r\n break;\r\n case keyCode.DOWN:\r\n this._keyEvent(\"next\", event);\r\n break;\r\n }\r\n },\r\n input: function (event) {\r\n if (suppressInput) {\r\n suppressInput = false;\r\n event.preventDefault();\r\n return;\r\n }\r\n this._searchTimeout(event);\r\n },\r\n focus: function () {\r\n this.selectedItem = null;\r\n this.previous = this._value();\r\n },\r\n blur: function (event) {\r\n if (this.cancelBlur) {\r\n delete this.cancelBlur;\r\n return;\r\n }\r\n\r\n clearTimeout(this.searching);\r\n this.close(event);\r\n this._change(event);\r\n }\r\n });\r\n\r\n this._initSource();\r\n this.menu = $(\"<ul>\")\r\n .appendTo(this._appendTo())\r\n .menu({\r\n\r\n // disable ARIA support, the live region takes care of that\r\n role: null\r\n })\r\n .hide()\r\n .menu(\"instance\");\r\n\r\n this._addClass(this.menu.element, \"ui-autocomplete\", \"ui-front\");\r\n this._on(this.menu.element, {\r\n mousedown: function (event) {\r\n\r\n // prevent moving focus out of the text field\r\n event.preventDefault();\r\n\r\n // IE doesn't prevent moving focus even with event.preventDefault()\r\n // so we set a flag to know when we should ignore the blur event\r\n this.cancelBlur = true;\r\n this._delay(function () {\r\n delete this.cancelBlur;\r\n\r\n // Support: IE 8 only\r\n // Right clicking a menu item or selecting text from the menu items will\r\n // result in focus moving out of the input. However, we've already received\r\n // and ignored the blur event because of the cancelBlur flag set above. So\r\n // we restore focus to ensure that the menu closes properly based on the user's\r\n // next actions.\r\n if (this.element[0] !== $.ui.safeActiveElement(this.document[0])) {\r\n this.element.trigger(\"focus\");\r\n }\r\n });\r\n },\r\n menufocus: function (event, ui) {\r\n var label, item;\r\n\r\n // support: Firefox\r\n // Prevent accidental activation of menu items in Firefox (#7024 #9118)\r\n if (this.isNewMenu) {\r\n this.isNewMenu = false;\r\n if (event.originalEvent && /^mouse/.test(event.originalEvent.type)) {\r\n this.menu.blur();\r\n\r\n this.document.one(\"mousemove\", function () {\r\n $(event.target).trigger(event.originalEvent);\r\n });\r\n\r\n return;\r\n }\r\n }\r\n\r\n item = ui.item.data(\"ui-autocomplete-item\");\r\n if (false !== this._trigger(\"focus\", event, { item: item })) {\r\n\r\n // use value to match what will end up in the input, if it was a key event\r\n if (event.originalEvent && /^key/.test(event.originalEvent.type)) {\r\n this._value(item.value);\r\n }\r\n }\r\n\r\n // Announce the value in the liveRegion\r\n label = ui.item.attr(\"aria-label\") || item.value;\r\n if (label && $.trim(label).length) {\r\n this.liveRegion.children().hide();\r\n $(\"<div>\").text(label).appendTo(this.liveRegion);\r\n }\r\n },\r\n menuselect: function (event, ui) {\r\n var item = ui.item.data(\"ui-autocomplete-item\"),\r\n previous = this.previous;\r\n\r\n // Only trigger when focus was lost (click on menu)\r\n if (this.element[0] !== $.ui.safeActiveElement(this.document[0])) {\r\n this.element.trigger(\"focus\");\r\n this.previous = previous;\r\n\r\n // #6109 - IE triggers two focus events and the second\r\n // is asynchronous, so we need to reset the previous\r\n // term synchronously and asynchronously :-(\r\n this._delay(function () {\r\n this.previous = previous;\r\n this.selectedItem = item;\r\n });\r\n }\r\n\r\n if (false !== this._trigger(\"select\", event, { item: item })) {\r\n this._value(item.value);\r\n }\r\n\r\n // reset the term after the select event\r\n // this allows custom select handling to work properly\r\n this.term = this._value();\r\n\r\n this.close(event);\r\n this.selectedItem = item;\r\n }\r\n });\r\n\r\n this.liveRegion = $(\"<div>\", {\r\n role: \"status\",\r\n \"aria-live\": \"assertive\",\r\n \"aria-relevant\": \"additions\"\r\n })\r\n .appendTo(this.document[0].body);\r\n\r\n this._addClass(this.liveRegion, null, \"ui-helper-hidden-accessible\");\r\n\r\n // Turning off autocomplete prevents the browser from remembering the\r\n // value when navigating through history, so we re-enable autocomplete\r\n // if the page is unloaded before the widget is destroyed. #7790\r\n this._on(this.window, {\r\n beforeunload: function () {\r\n this.element.removeAttr(\"autocomplete\");\r\n }\r\n });\r\n },\r\n\r\n _destroy: function () {\r\n clearTimeout(this.searching);\r\n this.element.removeAttr(\"autocomplete\");\r\n this.menu.element.remove();\r\n this.liveRegion.remove();\r\n },\r\n\r\n _setOption: function (key, value) {\r\n this._super(key, value);\r\n if (key === \"source\") {\r\n this._initSource();\r\n }\r\n if (key === \"appendTo\") {\r\n this.menu.element.appendTo(this._appendTo());\r\n }\r\n if (key === \"disabled\" && value && this.xhr) {\r\n this.xhr.abort();\r\n }\r\n },\r\n\r\n _isEventTargetInWidget: function (event) {\r\n var menuElement = this.menu.element[0];\r\n\r\n return event.target === this.element[0] ||\r\n event.target === menuElement ||\r\n $.contains(menuElement, event.target);\r\n },\r\n\r\n _closeOnClickOutside: function (event) {\r\n if (!this._isEventTargetInWidget(event)) {\r\n this.close();\r\n }\r\n },\r\n\r\n _appendTo: function () {\r\n var element = this.options.appendTo;\r\n\r\n if (element) {\r\n element = element.jquery || element.nodeType ?\r\n $(element) :\r\n this.document.find(element).eq(0);\r\n }\r\n\r\n if (!element || !element[0]) {\r\n element = this.element.closest(\".ui-front, dialog\");\r\n }\r\n\r\n if (!element.length) {\r\n element = this.document[0].body;\r\n }\r\n\r\n return element;\r\n },\r\n\r\n _initSource: function () {\r\n var array, url,\r\n that = this;\r\n if ($.isArray(this.options.source)) {\r\n array = this.options.source;\r\n this.source = function (request, response) {\r\n response($.ui.autocomplete.filter(array, request.term));\r\n };\r\n } else if (typeof this.options.source === \"string\") {\r\n url = this.options.source;\r\n this.source = function (request, response) {\r\n if (that.xhr) {\r\n that.xhr.abort();\r\n }\r\n that.xhr = $.ajax({\r\n url: url,\r\n data: request,\r\n dataType: \"json\",\r\n success: function (data) {\r\n response(data);\r\n },\r\n error: function () {\r\n response([]);\r\n }\r\n });\r\n };\r\n } else {\r\n this.source = this.options.source;\r\n }\r\n },\r\n\r\n _searchTimeout: function (event) {\r\n clearTimeout(this.searching);\r\n this.searching = this._delay(function () {\r\n\r\n // Search if the value has changed, or if the user retypes the same value (see #7434)\r\n var equalValues = this.term === this._value(),\r\n menuVisible = this.menu.element.is(\":visible\"),\r\n modifierKey = event.altKey || event.ctrlKey || event.metaKey || event.shiftKey;\r\n\r\n if (!equalValues || (equalValues && !menuVisible && !modifierKey)) {\r\n this.selectedItem = null;\r\n this.search(null, event);\r\n }\r\n }, this.options.delay);\r\n },\r\n\r\n search: function (value, event) {\r\n value = value != null ? value : this._value();\r\n\r\n // Always save the actual value, not the one passed as an argument\r\n this.term = this._value();\r\n\r\n if (value.length < this.options.minLength) {\r\n return this.close(event);\r\n }\r\n\r\n if (this._trigger(\"search\", event) === false) {\r\n return;\r\n }\r\n\r\n return this._search(value);\r\n },\r\n\r\n _search: function (value) {\r\n this.pending++;\r\n this._addClass(\"ui-autocomplete-loading\");\r\n this.cancelSearch = false;\r\n\r\n this.source({ term: value }, this._response());\r\n },\r\n\r\n _response: function () {\r\n var index = ++this.requestIndex;\r\n\r\n return $.proxy(function (content) {\r\n if (index === this.requestIndex) {\r\n this.__response(content);\r\n }\r\n\r\n this.pending--;\r\n if (!this.pending) {\r\n this._removeClass(\"ui-autocomplete-loading\");\r\n }\r\n }, this);\r\n },\r\n\r\n __response: function (content) {\r\n if (content) {\r\n content = this._normalize(content);\r\n }\r\n this._trigger(\"response\", null, { content: content });\r\n if (!this.options.disabled && content && content.length && !this.cancelSearch) {\r\n this._suggest(content);\r\n this._trigger(\"open\");\r\n } else {\r\n\r\n // use ._close() instead of .close() so we don't cancel future searches\r\n this._close();\r\n }\r\n },\r\n\r\n close: function (event) {\r\n this.cancelSearch = true;\r\n this._close(event);\r\n },\r\n\r\n _close: function (event) {\r\n\r\n // Remove the handler that closes the menu on outside clicks\r\n this._off(this.document, \"mousedown\");\r\n\r\n if (this.menu.element.is(\":visible\")) {\r\n this.menu.element.hide();\r\n this.menu.blur();\r\n this.isNewMenu = true;\r\n this._trigger(\"close\", event);\r\n }\r\n },\r\n\r\n _change: function (event) {\r\n if (this.previous !== this._value()) {\r\n this._trigger(\"change\", event, { item: this.selectedItem });\r\n }\r\n },\r\n\r\n _normalize: function (items) {\r\n\r\n // assume all items have the right format when the first item is complete\r\n if (items.length && items[0].label && items[0].value) {\r\n return items;\r\n }\r\n return $.map(items, function (item) {\r\n if (typeof item === \"string\") {\r\n return {\r\n label: item,\r\n value: item\r\n };\r\n }\r\n return $.extend({}, item, {\r\n label: item.label || item.value,\r\n value: item.value || item.label\r\n });\r\n });\r\n },\r\n\r\n _suggest: function (items) {\r\n var ul = this.menu.element.empty();\r\n this._renderMenu(ul, items);\r\n this.isNewMenu = true;\r\n this.menu.refresh();\r\n\r\n // Size and position menu\r\n ul.show();\r\n this._resizeMenu();\r\n ul.position($.extend({\r\n of: this.element\r\n }, this.options.position));\r\n\r\n if (this.options.autoFocus) {\r\n this.menu.next();\r\n }\r\n\r\n // Listen for interactions outside of the widget (#6642)\r\n this._on(this.document, {\r\n mousedown: \"_closeOnClickOutside\"\r\n });\r\n },\r\n\r\n _resizeMenu: function () {\r\n var ul = this.menu.element;\r\n ul.outerWidth(Math.max(\r\n\r\n // Firefox wraps long text (possibly a rounding bug)\r\n // so we add 1px to avoid the wrapping (#7513)\r\n ul.width(\"\").outerWidth() + 1,\r\n this.element.outerWidth()\r\n ));\r\n },\r\n\r\n _renderMenu: function (ul, items) {\r\n var that = this;\r\n $.each(items, function (index, item) {\r\n that._renderItemData(ul, item);\r\n });\r\n },\r\n\r\n _renderItemData: function (ul, item) {\r\n return this._renderItem(ul, item).data(\"ui-autocomplete-item\", item);\r\n },\r\n\r\n _renderItem: function (ul, item) {\r\n return $(\"<li>\")\r\n .append($(\"<div>\").text(item.label))\r\n .appendTo(ul);\r\n },\r\n\r\n _move: function (direction, event) {\r\n if (!this.menu.element.is(\":visible\")) {\r\n this.search(null, event);\r\n return;\r\n }\r\n if (this.menu.isFirstItem() && /^previous/.test(direction) ||\r\n this.menu.isLastItem() && /^next/.test(direction)) {\r\n\r\n if (!this.isMultiLine) {\r\n this._value(this.term);\r\n }\r\n\r\n this.menu.blur();\r\n return;\r\n }\r\n this.menu[direction](event);\r\n },\r\n\r\n widget: function () {\r\n return this.menu.element;\r\n },\r\n\r\n _value: function () {\r\n return this.valueMethod.apply(this.element, arguments);\r\n },\r\n\r\n _keyEvent: function (keyEvent, event) {\r\n if (!this.isMultiLine || this.menu.element.is(\":visible\")) {\r\n this._move(keyEvent, event);\r\n\r\n // Prevents moving cursor to beginning/end of the text field in some browsers\r\n event.preventDefault();\r\n }\r\n },\r\n\r\n // Support: Chrome <=50\r\n // We should be able to just use this.element.prop( \"isContentEditable\" )\r\n // but hidden elements always report false in Chrome.\r\n // https://code.google.com/p/chromium/issues/detail?id=313082\r\n _isContentEditable: function (element) {\r\n if (!element.length) {\r\n return false;\r\n }\r\n\r\n var editable = element.prop(\"contentEditable\");\r\n\r\n if (editable === \"inherit\") {\r\n return this._isContentEditable(element.parent());\r\n }\r\n\r\n return editable === \"true\";\r\n }\r\n });\r\n\r\n $.extend($.ui.autocomplete, {\r\n escapeRegex: function (value) {\r\n return value.replace(/[\\-\\[\\]{}()*+?.,\\\\\\^$|#\\s]/g, \"\\\\$&\");\r\n },\r\n filter: function (array, term) {\r\n var matcher = new RegExp($.ui.autocomplete.escapeRegex(term), \"i\");\r\n return $.grep(array, function (value) {\r\n return matcher.test(value.label || value.value || value);\r\n });\r\n }\r\n });\r\n\r\n // Live region extension, adding a `messages` option\r\n // NOTE: This is an experimental API. We are still investigating\r\n // a full solution for string manipulation and internationalization.\r\n $.widget(\"ui.autocomplete\", $.ui.autocomplete, {\r\n options: {\r\n messages: {\r\n noResults: \"No search results.\",\r\n results: function (amount) {\r\n return amount + (amount > 1 ? \" results are\" : \" result is\") +\r\n \" available, use up and down arrow keys to navigate.\";\r\n }\r\n }\r\n },\r\n\r\n __response: function (content) {\r\n var message;\r\n this._superApply(arguments);\r\n if (this.options.disabled || this.cancelSearch) {\r\n return;\r\n }\r\n if (content && content.length) {\r\n message = this.options.messages.results(content.length);\r\n } else {\r\n message = this.options.messages.noResults;\r\n }\r\n this.liveRegion.children().hide();\r\n $(\"<div>\").text(message).appendTo(this.liveRegion);\r\n }\r\n });\r\n\r\n var widgetsAutocomplete = $.ui.autocomplete;\r\n\r\n\r\n // jscs:disable maximumLineLength\r\n /* jscs:disable requireCamelCaseOrUpperCaseIdentifiers */\r\n /*!\r\n * jQuery UI Datepicker 1.12.1\r\n * http://jqueryui.com\r\n *\r\n * Copyright jQuery Foundation and other contributors\r\n * Released under the MIT license.\r\n * http://jquery.org/license\r\n */\r\n\r\n //>>label: Datepicker\r\n //>>group: Widgets\r\n //>>description: Displays a calendar from an input or inline for selecting dates.\r\n //>>docs: http://api.jqueryui.com/datepicker/\r\n //>>demos: http://jqueryui.com/datepicker/\r\n //>>css.structure: ../../themes/base/core.css\r\n //>>css.structure: ../../themes/base/datepicker.css\r\n //>>css.theme: ../../themes/base/theme.css\r\n\r\n\r\n\r\n $.extend($.ui, { datepicker: { version: \"1.12.1\" } });\r\n\r\n var datepicker_instActive;\r\n\r\n function datepicker_getZindex(elem) {\r\n var position, value;\r\n while (elem.length && elem[0] !== document) {\r\n\r\n // Ignore z-index if position is set to a value where z-index is ignored by the browser\r\n // This makes behavior of this function consistent across browsers\r\n // WebKit always returns auto if the element is positioned\r\n position = elem.css(\"position\");\r\n if (position === \"absolute\" || position === \"relative\" || position === \"fixed\") {\r\n\r\n // IE returns 0 when zIndex is not specified\r\n // other browsers return a string\r\n // we ignore the case of nested elements with an explicit value of 0\r\n // <div style=\"z-index: -10;\"><div style=\"z-index: 0;\"></div></div>\r\n value = parseInt(elem.css(\"zIndex\"), 10);\r\n if (!isNaN(value) && value !== 0) {\r\n return value;\r\n }\r\n }\r\n elem = elem.parent();\r\n }\r\n\r\n return 0;\r\n }\r\n /* Date picker manager.\r\n Use the singleton instance of this class, $.datepicker, to interact with the date picker.\r\n Settings for (groups of) date pickers are maintained in an instance object,\r\n allowing multiple different settings on the same page. */\r\n\r\n function Datepicker() {\r\n this._curInst = null; // The current instance in use\r\n this._keyEvent = false; // If the last event was a key event\r\n this._disabledInputs = []; // List of date picker inputs that have been disabled\r\n this._datepickerShowing = false; // True if the popup picker is showing , false if not\r\n this._inDialog = false; // True if showing within a \"dialog\", false if not\r\n this._mainDivId = \"ui-datepicker-div\"; // The ID of the main datepicker division\r\n this._inlineClass = \"ui-datepicker-inline\"; // The name of the inline marker class\r\n this._appendClass = \"ui-datepicker-append\"; // The name of the append marker class\r\n this._triggerClass = \"ui-datepicker-trigger\"; // The name of the trigger marker class\r\n this._dialogClass = \"ui-datepicker-dialog\"; // The name of the dialog marker class\r\n this._disableClass = \"ui-datepicker-disabled\"; // The name of the disabled covering marker class\r\n this._unselectableClass = \"ui-datepicker-unselectable\"; // The name of the unselectable cell marker class\r\n this._currentClass = \"ui-datepicker-current-day\"; // The name of the current day marker class\r\n this._dayOverClass = \"ui-datepicker-days-cell-over\"; // The name of the day hover marker class\r\n this.regional = []; // Available regional settings, indexed by language code\r\n this.regional[\"\"] = { // Default regional settings\r\n closeText: \"Done\", // Display text for close link\r\n prevText: \"Prev\", // Display text for previous month link\r\n nextText: \"Next\", // Display text for next month link\r\n currentText: \"Today\", // Display text for current month link\r\n monthNames: [\"January\", \"February\", \"March\", \"April\", \"May\", \"June\",\r\n \"July\", \"August\", \"September\", \"October\", \"November\", \"December\"], // Names of months for drop-down and formatting\r\n monthNamesShort: [\"Jan\", \"Feb\", \"Mar\", \"Apr\", \"May\", \"Jun\", \"Jul\", \"Aug\", \"Sep\", \"Oct\", \"Nov\", \"Dec\"], // For formatting\r\n dayNames: [\"Sunday\", \"Monday\", \"Tuesday\", \"Wednesday\", \"Thursday\", \"Friday\", \"Saturday\"], // For formatting\r\n dayNamesShort: [\"Sun\", \"Mon\", \"Tue\", \"Wed\", \"Thu\", \"Fri\", \"Sat\"], // For formatting\r\n dayNamesMin: [\"Su\", \"Mo\", \"Tu\", \"We\", \"Th\", \"Fr\", \"Sa\"], // Column headings for days starting at Sunday\r\n weekHeader: \"Wk\", // Column header for week of the year\r\n dateFormat: \"mm/dd/yy\", // See format options on parseDate\r\n firstDay: 0, // The first day of the week, Sun = 0, Mon = 1, ...\r\n isRTL: false, // True if right-to-left language, false if left-to-right\r\n showMonthAfterYear: false, // True if the year select precedes month, false for month then year\r\n yearSuffix: \"\" // Additional text to append to the year in the month headers\r\n };\r\n this._defaults = { // Global defaults for all the date picker instances\r\n showOn: \"focus\", // \"focus\" for popup on focus,\r\n // \"button\" for trigger button, or \"both\" for either\r\n showAnim: \"fadeIn\", // Name of jQuery animation for popup\r\n showOptions: {}, // Options for enhanced animations\r\n defaultDate: null, // Used when field is blank: actual date,\r\n // +/-number for offset from today, null for today\r\n appendText: \"\", // Display text following the input box, e.g. showing the format\r\n buttonText: \"...\", // Text for trigger button\r\n buttonImage: \"\", // URL for trigger button image\r\n buttonImageOnly: false, // True if the image appears alone, false if it appears on a button\r\n hideIfNoPrevNext: false, // True to hide next/previous month links\r\n // if not applicable, false to just disable them\r\n navigationAsDateFormat: false, // True if date formatting applied to prev/today/next links\r\n gotoCurrent: false, // True if today link goes back to current selection instead\r\n changeMonth: false, // True if month can be selected directly, false if only prev/next\r\n changeYear: false, // True if year can be selected directly, false if only prev/next\r\n yearRange: \"c-10:c+10\", // Range of years to display in drop-down,\r\n // either relative to today's year (-nn:+nn), relative to currently displayed year\r\n // (c-nn:c+nn), absolute (nnnn:nnnn), or a combination of the above (nnnn:-n)\r\n showOtherMonths: false, // True to show dates in other months, false to leave blank\r\n selectOtherMonths: false, // True to allow selection of dates in other months, false for unselectable\r\n showWeek: false, // True to show week of the year, false to not show it\r\n calculateWeek: this.iso8601Week, // How to calculate the week of the year,\r\n // takes a Date and returns the number of the week for it\r\n shortYearCutoff: \"+10\", // Short year values < this are in the current century,\r\n // > this are in the previous century,\r\n // string value starting with \"+\" for current year + value\r\n minDate: null, // The earliest selectable date, or null for no limit\r\n maxDate: null, // The latest selectable date, or null for no limit\r\n duration: \"fast\", // Duration of display/closure\r\n beforeShowDay: null, // Function that takes a date and returns an array with\r\n // [0] = true if selectable, false if not, [1] = custom CSS class name(s) or \"\",\r\n // [2] = cell title (optional), e.g. $.datepicker.noWeekends\r\n beforeShow: null, // Function that takes an input field and\r\n // returns a set of custom settings for the date picker\r\n onSelect: null, // Define a callback function when a date is selected\r\n onChangeMonthYear: null, // Define a callback function when the month or year is changed\r\n onClose: null, // Define a callback function when the datepicker is closed\r\n numberOfMonths: 1, // Number of months to show at a time\r\n showCurrentAtPos: 0, // The position in multipe months at which to show the current month (starting at 0)\r\n stepMonths: 1, // Number of months to step back/forward\r\n stepBigMonths: 12, // Number of months to step back/forward for the big links\r\n altField: \"\", // Selector for an alternate field to store selected dates into\r\n altFormat: \"\", // The date format to use for the alternate field\r\n constrainInput: true, // The input is constrained by the current date format\r\n showButtonPanel: false, // True to show button panel, false to not show it\r\n autoSize: false, // True to size the input for the date format, false to leave as is\r\n disabled: false // The initial disabled state\r\n };\r\n $.extend(this._defaults, this.regional[\"\"]);\r\n this.regional.en = $.extend(true, {}, this.regional[\"\"]);\r\n this.regional[\"en-US\"] = $.extend(true, {}, this.regional.en);\r\n this.dpDiv = datepicker_bindHover($(\"<div id='\" + this._mainDivId + \"' class='ui-datepicker ui-widget ui-widget-content ui-helper-clearfix ui-corner-all'></div>\"));\r\n }\r\n\r\n $.extend(Datepicker.prototype, {\r\n /* Class name added to elements to indicate already configured with a date picker. */\r\n markerClassName: \"hasDatepicker\",\r\n\r\n //Keep track of the maximum number of rows displayed (see #7043)\r\n maxRows: 4,\r\n\r\n // TODO rename to \"widget\" when switching to widget factory\r\n _widgetDatepicker: function () {\r\n return this.dpDiv;\r\n },\r\n\r\n /* Override the default settings for all instances of the date picker.\r\n * @param settings object - the new settings to use as defaults (anonymous object)\r\n * @return the manager object\r\n */\r\n setDefaults: function (settings) {\r\n datepicker_extendRemove(this._defaults, settings || {});\r\n return this;\r\n },\r\n\r\n /* Attach the date picker to a jQuery selection.\r\n * @param target\telement - the target input field or division or span\r\n * @param settings object - the new settings to use for this date picker instance (anonymous)\r\n */\r\n _attachDatepicker: function (target, settings) {\r\n var nodeName, inline, inst;\r\n nodeName = target.nodeName.toLowerCase();\r\n inline = (nodeName === \"div\" || nodeName === \"span\");\r\n if (!target.id) {\r\n this.uuid += 1;\r\n target.id = \"dp\" + this.uuid;\r\n }\r\n inst = this._newInst($(target), inline);\r\n inst.settings = $.extend({}, settings || {});\r\n if (nodeName === \"input\") {\r\n this._connectDatepicker(target, inst);\r\n } else if (inline) {\r\n this._inlineDatepicker(target, inst);\r\n }\r\n },\r\n\r\n /* Create a new instance object. */\r\n _newInst: function (target, inline) {\r\n var id = target[0].id.replace(/([^A-Za-z0-9_\\-])/g, \"\\\\\\\\$1\"); // escape jQuery meta chars\r\n return {\r\n id: id, input: target, // associated target\r\n selectedDay: 0, selectedMonth: 0, selectedYear: 0, // current selection\r\n drawMonth: 0, drawYear: 0, // month being drawn\r\n inline: inline, // is datepicker inline or not\r\n dpDiv: (!inline ? this.dpDiv : // presentation div\r\n datepicker_bindHover($(\"<div class='\" + this._inlineClass + \" ui-datepicker ui-widget ui-widget-content ui-helper-clearfix ui-corner-all'></div>\")))\r\n };\r\n },\r\n\r\n /* Attach the date picker to an input field. */\r\n _connectDatepicker: function (target, inst) {\r\n var input = $(target);\r\n inst.append = $([]);\r\n inst.trigger = $([]);\r\n if (input.hasClass(this.markerClassName)) {\r\n return;\r\n }\r\n this._attachments(input, inst);\r\n input.addClass(this.markerClassName).on(\"keydown\", this._doKeyDown).\r\n on(\"keypress\", this._doKeyPress).on(\"keyup\", this._doKeyUp);\r\n this._autoSize(inst);\r\n $.data(target, \"datepicker\", inst);\r\n\r\n //If disabled option is true, disable the datepicker once it has been attached to the input (see ticket #5665)\r\n if (inst.settings.disabled) {\r\n this._disableDatepicker(target);\r\n }\r\n },\r\n\r\n /* Make attachments based on settings. */\r\n _attachments: function (input, inst) {\r\n var showOn, buttonText, buttonImage,\r\n appendText = this._get(inst, \"appendText\"),\r\n isRTL = this._get(inst, \"isRTL\");\r\n\r\n if (inst.append) {\r\n inst.append.remove();\r\n }\r\n if (appendText) {\r\n inst.append = $(\"<span class='\" + this._appendClass + \"'>\" + appendText + \"</span>\");\r\n input[isRTL ? \"before\" : \"after\"](inst.append);\r\n }\r\n\r\n input.off(\"focus\", this._showDatepicker);\r\n\r\n if (inst.trigger) {\r\n inst.trigger.remove();\r\n }\r\n\r\n showOn = this._get(inst, \"showOn\");\r\n if (showOn === \"focus\" || showOn === \"both\") { // pop-up date picker when in the marked field\r\n input.on(\"focus\", this._showDatepicker);\r\n }\r\n if (showOn === \"button\" || showOn === \"both\") { // pop-up date picker when button clicked\r\n buttonText = this._get(inst, \"buttonText\");\r\n buttonImage = this._get(inst, \"buttonImage\");\r\n inst.trigger = $(this._get(inst, \"buttonImageOnly\") ?\r\n $(\"<img/>\").addClass(this._triggerClass).\r\n attr({ src: buttonImage, alt: buttonText, title: buttonText }) :\r\n $(\"<button type='button'></button>\").addClass(this._triggerClass).\r\n html(!buttonImage ? buttonText : $(\"<img/>\").attr(\r\n { src: buttonImage, alt: buttonText, title: buttonText })));\r\n input[isRTL ? \"before\" : \"after\"](inst.trigger);\r\n inst.trigger.on(\"click\", function () {\r\n if ($.datepicker._datepickerShowing && $.datepicker._lastInput === input[0]) {\r\n $.datepicker._hideDatepicker();\r\n } else if ($.datepicker._datepickerShowing && $.datepicker._lastInput !== input[0]) {\r\n $.datepicker._hideDatepicker();\r\n $.datepicker._showDatepicker(input[0]);\r\n } else {\r\n $.datepicker._showDatepicker(input[0]);\r\n }\r\n return false;\r\n });\r\n }\r\n },\r\n\r\n /* Apply the maximum length for the date format. */\r\n _autoSize: function (inst) {\r\n if (this._get(inst, \"autoSize\") && !inst.inline) {\r\n var findMax, max, maxI, i,\r\n date = new Date(2009, 12 - 1, 20), // Ensure double digits\r\n dateFormat = this._get(inst, \"dateFormat\");\r\n\r\n if (dateFormat.match(/[DM]/)) {\r\n findMax = function (names) {\r\n max = 0;\r\n maxI = 0;\r\n for (i = 0; i < names.length; i++) {\r\n if (names[i].length > max) {\r\n max = names[i].length;\r\n maxI = i;\r\n }\r\n }\r\n return maxI;\r\n };\r\n date.setMonth(findMax(this._get(inst, (dateFormat.match(/MM/) ?\r\n \"monthNames\" : \"monthNamesShort\"))));\r\n date.setDate(findMax(this._get(inst, (dateFormat.match(/DD/) ?\r\n \"dayNames\" : \"dayNamesShort\"))) + 20 - date.getDay());\r\n }\r\n inst.input.attr(\"size\", this._formatDate(inst, date).length);\r\n }\r\n },\r\n\r\n /* Attach an inline date picker to a div. */\r\n _inlineDatepicker: function (target, inst) {\r\n var divSpan = $(target);\r\n if (divSpan.hasClass(this.markerClassName)) {\r\n return;\r\n }\r\n divSpan.addClass(this.markerClassName).append(inst.dpDiv);\r\n $.data(target, \"datepicker\", inst);\r\n this._setDate(inst, this._getDefaultDate(inst), true);\r\n this._updateDatepicker(inst);\r\n this._updateAlternate(inst);\r\n\r\n //If disabled option is true, disable the datepicker before showing it (see ticket #5665)\r\n if (inst.settings.disabled) {\r\n this._disableDatepicker(target);\r\n }\r\n\r\n // Set display:block in place of inst.dpDiv.show() which won't work on disconnected elements\r\n // http://bugs.jqueryui.com/ticket/7552 - A Datepicker created on a detached div has zero height\r\n inst.dpDiv.css(\"display\", \"block\");\r\n },\r\n\r\n /* Pop-up the date picker in a \"dialog\" box.\r\n * @param input element - ignored\r\n * @param date\tstring or Date - the initial date to display\r\n * @param onSelect function - the function to call when a date is selected\r\n * @param settings object - update the dialog date picker instance's settings (anonymous object)\r\n * @param pos int[2] - coordinates for the dialog's position within the screen or\r\n *\t\t\t\t\tevent - with x/y coordinates or\r\n *\t\t\t\t\tleave empty for default (screen centre)\r\n * @return the manager object\r\n */\r\n _dialogDatepicker: function (input, date, onSelect, settings, pos) {\r\n var id, browserWidth, browserHeight, scrollX, scrollY,\r\n inst = this._dialogInst; // internal instance\r\n\r\n if (!inst) {\r\n this.uuid += 1;\r\n id = \"dp\" + this.uuid;\r\n this._dialogInput = $(\"<input type='text' id='\" + id +\r\n \"' style='position: absolute; top: -100px; width: 0px;'/>\");\r\n this._dialogInput.on(\"keydown\", this._doKeyDown);\r\n $(\"body\").append(this._dialogInput);\r\n inst = this._dialogInst = this._newInst(this._dialogInput, false);\r\n inst.settings = {};\r\n $.data(this._dialogInput[0], \"datepicker\", inst);\r\n }\r\n datepicker_extendRemove(inst.settings, settings || {});\r\n date = (date && date.constructor === Date ? this._formatDate(inst, date) : date);\r\n this._dialogInput.val(date);\r\n\r\n this._pos = (pos ? (pos.length ? pos : [pos.pageX, pos.pageY]) : null);\r\n if (!this._pos) {\r\n browserWidth = document.documentElement.clientWidth;\r\n browserHeight = document.documentElement.clientHeight;\r\n scrollX = document.documentElement.scrollLeft || document.body.scrollLeft;\r\n scrollY = document.documentElement.scrollTop || document.body.scrollTop;\r\n this._pos = // should use actual width/height below\r\n [(browserWidth / 2) - 100 + scrollX, (browserHeight / 2) - 150 + scrollY];\r\n }\r\n\r\n // Move input on screen for focus, but hidden behind dialog\r\n this._dialogInput.css(\"left\", (this._pos[0] + 20) + \"px\").css(\"top\", this._pos[1] + \"px\");\r\n inst.settings.onSelect = onSelect;\r\n this._inDialog = true;\r\n this.dpDiv.addClass(this._dialogClass);\r\n this._showDatepicker(this._dialogInput[0]);\r\n if ($.blockUI) {\r\n $.blockUI(this.dpDiv);\r\n }\r\n $.data(this._dialogInput[0], \"datepicker\", inst);\r\n return this;\r\n },\r\n\r\n /* Detach a datepicker from its control.\r\n * @param target\telement - the target input field or division or span\r\n */\r\n _destroyDatepicker: function (target) {\r\n var nodeName,\r\n $target = $(target),\r\n inst = $.data(target, \"datepicker\");\r\n\r\n if (!$target.hasClass(this.markerClassName)) {\r\n return;\r\n }\r\n\r\n nodeName = target.nodeName.toLowerCase();\r\n $.removeData(target, \"datepicker\");\r\n if (nodeName === \"input\") {\r\n inst.append.remove();\r\n inst.trigger.remove();\r\n $target.removeClass(this.markerClassName).\r\n off(\"focus\", this._showDatepicker).\r\n off(\"keydown\", this._doKeyDown).\r\n off(\"keypress\", this._doKeyPress).\r\n off(\"keyup\", this._doKeyUp);\r\n } else if (nodeName === \"div\" || nodeName === \"span\") {\r\n $target.removeClass(this.markerClassName).empty();\r\n }\r\n\r\n if (datepicker_instActive === inst) {\r\n datepicker_instActive = null;\r\n }\r\n },\r\n\r\n /* Enable the date picker to a jQuery selection.\r\n * @param target\telement - the target input field or division or span\r\n */\r\n _enableDatepicker: function (target) {\r\n var nodeName, inline,\r\n $target = $(target),\r\n inst = $.data(target, \"datepicker\");\r\n\r\n if (!$target.hasClass(this.markerClassName)) {\r\n return;\r\n }\r\n\r\n nodeName = target.nodeName.toLowerCase();\r\n if (nodeName === \"input\") {\r\n target.disabled = false;\r\n inst.trigger.filter(\"button\").\r\n each(function () { this.disabled = false; }).end().\r\n filter(\"img\").css({ opacity: \"1.0\", cursor: \"\" });\r\n } else if (nodeName === \"div\" || nodeName === \"span\") {\r\n inline = $target.children(\".\" + this._inlineClass);\r\n inline.children().removeClass(\"ui-state-disabled\");\r\n inline.find(\"select.ui-datepicker-month, select.ui-datepicker-year\").\r\n prop(\"disabled\", false);\r\n }\r\n this._disabledInputs = $.map(this._disabledInputs,\r\n function (value) { return (value === target ? null : value); }); // delete entry\r\n },\r\n\r\n /* Disable the date picker to a jQuery selection.\r\n * @param target\telement - the target input field or division or span\r\n */\r\n _disableDatepicker: function (target) {\r\n var nodeName, inline,\r\n $target = $(target),\r\n inst = $.data(target, \"datepicker\");\r\n\r\n if (!$target.hasClass(this.markerClassName)) {\r\n return;\r\n }\r\n\r\n nodeName = target.nodeName.toLowerCase();\r\n if (nodeName === \"input\") {\r\n target.disabled = true;\r\n inst.trigger.filter(\"button\").\r\n each(function () { this.disabled = true; }).end().\r\n filter(\"img\").css({ opacity: \"0.5\", cursor: \"default\" });\r\n } else if (nodeName === \"div\" || nodeName === \"span\") {\r\n inline = $target.children(\".\" + this._inlineClass);\r\n inline.children().addClass(\"ui-state-disabled\");\r\n inline.find(\"select.ui-datepicker-month, select.ui-datepicker-year\").\r\n prop(\"disabled\", true);\r\n }\r\n this._disabledInputs = $.map(this._disabledInputs,\r\n function (value) { return (value === target ? null : value); }); // delete entry\r\n this._disabledInputs[this._disabledInputs.length] = target;\r\n },\r\n\r\n /* Is the first field in a jQuery collection disabled as a datepicker?\r\n * @param target\telement - the target input field or division or span\r\n * @return boolean - true if disabled, false if enabled\r\n */\r\n _isDisabledDatepicker: function (target) {\r\n if (!target) {\r\n return false;\r\n }\r\n for (var i = 0; i < this._disabledInputs.length; i++) {\r\n if (this._disabledInputs[i] === target) {\r\n return true;\r\n }\r\n }\r\n return false;\r\n },\r\n\r\n /* Retrieve the instance data for the target control.\r\n * @param target element - the target input field or division or span\r\n * @return object - the associated instance data\r\n * @throws error if a jQuery problem getting data\r\n */\r\n _getInst: function (target) {\r\n try {\r\n return $.data(target, \"datepicker\");\r\n }\r\n catch (err) {\r\n throw \"Missing instance data for this datepicker\";\r\n }\r\n },\r\n\r\n /* Update or retrieve the settings for a date picker attached to an input field or division.\r\n * @param target element - the target input field or division or span\r\n * @param name\tobject - the new settings to update or\r\n *\t\t\t\tstring - the name of the setting to change or retrieve,\r\n *\t\t\t\twhen retrieving also \"all\" for all instance settings or\r\n *\t\t\t\t\"defaults\" for all global defaults\r\n * @param value any - the new value for the setting\r\n *\t\t\t\t(omit if above is an object or to retrieve a value)\r\n */\r\n _optionDatepicker: function (target, name, value) {\r\n var settings, date, minDate, maxDate,\r\n inst = this._getInst(target);\r\n\r\n if (arguments.length === 2 && typeof name === \"string\") {\r\n return (name === \"defaults\" ? $.extend({}, $.datepicker._defaults) :\r\n (inst ? (name === \"all\" ? $.extend({}, inst.settings) :\r\n this._get(inst, name)) : null));\r\n }\r\n\r\n settings = name || {};\r\n if (typeof name === \"string\") {\r\n settings = {};\r\n settings[name] = value;\r\n }\r\n\r\n if (inst) {\r\n if (this._curInst === inst) {\r\n this._hideDatepicker();\r\n }\r\n\r\n date = this._getDateDatepicker(target, true);\r\n minDate = this._getMinMaxDate(inst, \"min\");\r\n maxDate = this._getMinMaxDate(inst, \"max\");\r\n datepicker_extendRemove(inst.settings, settings);\r\n\r\n // reformat the old minDate/maxDate values if dateFormat changes and a new minDate/maxDate isn't provided\r\n if (minDate !== null && settings.dateFormat !== undefined && settings.minDate === undefined) {\r\n inst.settings.minDate = this._formatDate(inst, minDate);\r\n }\r\n if (maxDate !== null && settings.dateFormat !== undefined && settings.maxDate === undefined) {\r\n inst.settings.maxDate = this._formatDate(inst, maxDate);\r\n }\r\n if (\"disabled\" in settings) {\r\n if (settings.disabled) {\r\n this._disableDatepicker(target);\r\n } else {\r\n this._enableDatepicker(target);\r\n }\r\n }\r\n this._attachments($(target), inst);\r\n this._autoSize(inst);\r\n this._setDate(inst, date);\r\n this._updateAlternate(inst);\r\n this._updateDatepicker(inst);\r\n }\r\n },\r\n\r\n // Change method deprecated\r\n _changeDatepicker: function (target, name, value) {\r\n this._optionDatepicker(target, name, value);\r\n },\r\n\r\n /* Redraw the date picker attached to an input field or division.\r\n * @param target element - the target input field or division or span\r\n */\r\n _refreshDatepicker: function (target) {\r\n var inst = this._getInst(target);\r\n if (inst) {\r\n this._updateDatepicker(inst);\r\n }\r\n },\r\n\r\n /* Set the dates for a jQuery selection.\r\n * @param target element - the target input field or division or span\r\n * @param date\tDate - the new date\r\n */\r\n _setDateDatepicker: function (target, date) {\r\n var inst = this._getInst(target);\r\n if (inst) {\r\n this._setDate(inst, date);\r\n this._updateDatepicker(inst);\r\n this._updateAlternate(inst);\r\n }\r\n },\r\n\r\n /* Get the date(s) for the first entry in a jQuery selection.\r\n * @param target element - the target input field or division or span\r\n * @param noDefault boolean - true if no default date is to be used\r\n * @return Date - the current date\r\n */\r\n _getDateDatepicker: function (target, noDefault) {\r\n var inst = this._getInst(target);\r\n if (inst && !inst.inline) {\r\n this._setDateFromField(inst, noDefault);\r\n }\r\n return (inst ? this._getDate(inst) : null);\r\n },\r\n\r\n /* Handle keystrokes. */\r\n _doKeyDown: function (event) {\r\n var onSelect, dateStr, sel,\r\n inst = $.datepicker._getInst(event.target),\r\n handled = true,\r\n isRTL = inst.dpDiv.is(\".ui-datepicker-rtl\");\r\n\r\n inst._keyEvent = true;\r\n if ($.datepicker._datepickerShowing) {\r\n switch (event.keyCode) {\r\n case 9: $.datepicker._hideDatepicker();\r\n handled = false;\r\n break; // hide on tab out\r\n case 13: sel = $(\"td.\" + $.datepicker._dayOverClass + \":not(.\" +\r\n $.datepicker._currentClass + \")\", inst.dpDiv);\r\n if (sel[0]) {\r\n $.datepicker._selectDay(event.target, inst.selectedMonth, inst.selectedYear, sel[0]);\r\n }\r\n\r\n onSelect = $.datepicker._get(inst, \"onSelect\");\r\n if (onSelect) {\r\n dateStr = $.datepicker._formatDate(inst);\r\n\r\n // Trigger custom callback\r\n onSelect.apply((inst.input ? inst.input[0] : null), [dateStr, inst]);\r\n } else {\r\n $.datepicker._hideDatepicker();\r\n }\r\n\r\n return false; // don't submit the form\r\n case 27: $.datepicker._hideDatepicker();\r\n break; // hide on escape\r\n case 33: $.datepicker._adjustDate(event.target, (event.ctrlKey ?\r\n -$.datepicker._get(inst, \"stepBigMonths\") :\r\n -$.datepicker._get(inst, \"stepMonths\")), \"M\");\r\n break; // previous month/year on page up/+ ctrl\r\n case 34: $.datepicker._adjustDate(event.target, (event.ctrlKey ?\r\n +$.datepicker._get(inst, \"stepBigMonths\") :\r\n +$.datepicker._get(inst, \"stepMonths\")), \"M\");\r\n break; // next month/year on page down/+ ctrl\r\n case 35: if (event.ctrlKey || event.metaKey) {\r\n $.datepicker._clearDate(event.target);\r\n }\r\n handled = event.ctrlKey || event.metaKey;\r\n break; // clear on ctrl or command +end\r\n case 36: if (event.ctrlKey || event.metaKey) {\r\n $.datepicker._gotoToday(event.target);\r\n }\r\n handled = event.ctrlKey || event.metaKey;\r\n break; // current on ctrl or command +home\r\n case 37: if (event.ctrlKey || event.metaKey) {\r\n $.datepicker._adjustDate(event.target, (isRTL ? +1 : -1), \"D\");\r\n }\r\n handled = event.ctrlKey || event.metaKey;\r\n\r\n // -1 day on ctrl or command +left\r\n if (event.originalEvent.altKey) {\r\n $.datepicker._adjustDate(event.target, (event.ctrlKey ?\r\n -$.datepicker._get(inst, \"stepBigMonths\") :\r\n -$.datepicker._get(inst, \"stepMonths\")), \"M\");\r\n }\r\n\r\n // next month/year on alt +left on Mac\r\n break;\r\n case 38: if (event.ctrlKey || event.metaKey) {\r\n $.datepicker._adjustDate(event.target, -7, \"D\");\r\n }\r\n handled = event.ctrlKey || event.metaKey;\r\n break; // -1 week on ctrl or command +up\r\n case 39: if (event.ctrlKey || event.metaKey) {\r\n $.datepicker._adjustDate(event.target, (isRTL ? -1 : +1), \"D\");\r\n }\r\n handled = event.ctrlKey || event.metaKey;\r\n\r\n // +1 day on ctrl or command +right\r\n if (event.originalEvent.altKey) {\r\n $.datepicker._adjustDate(event.target, (event.ctrlKey ?\r\n +$.datepicker._get(inst, \"stepBigMonths\") :\r\n +$.datepicker._get(inst, \"stepMonths\")), \"M\");\r\n }\r\n\r\n // next month/year on alt +right\r\n break;\r\n case 40: if (event.ctrlKey || event.metaKey) {\r\n $.datepicker._adjustDate(event.target, +7, \"D\");\r\n }\r\n handled = event.ctrlKey || event.metaKey;\r\n break; // +1 week on ctrl or command +down\r\n default: handled = false;\r\n }\r\n } else if (event.keyCode === 36 && event.ctrlKey) { // display the date picker on ctrl+home\r\n $.datepicker._showDatepicker(this);\r\n } else {\r\n handled = false;\r\n }\r\n\r\n if (handled) {\r\n event.preventDefault();\r\n event.stopPropagation();\r\n }\r\n },\r\n\r\n /* Filter entered characters - based on date format. */\r\n _doKeyPress: function (event) {\r\n var chars, chr,\r\n inst = $.datepicker._getInst(event.target);\r\n\r\n if ($.datepicker._get(inst, \"constrainInput\")) {\r\n chars = $.datepicker._possibleChars($.datepicker._get(inst, \"dateFormat\"));\r\n chr = String.fromCharCode(event.charCode == null ? event.keyCode : event.charCode);\r\n return event.ctrlKey || event.metaKey || (chr < \" \" || !chars || chars.indexOf(chr) > -1);\r\n }\r\n },\r\n\r\n /* Synchronise manual entry and field/alternate field. */\r\n _doKeyUp: function (event) {\r\n var date,\r\n inst = $.datepicker._getInst(event.target);\r\n\r\n if (inst.input.val() !== inst.lastVal) {\r\n try {\r\n date = $.datepicker.parseDate($.datepicker._get(inst, \"dateFormat\"),\r\n (inst.input ? inst.input.val() : null),\r\n $.datepicker._getFormatConfig(inst));\r\n\r\n if (date) { // only if valid\r\n $.datepicker._setDateFromField(inst);\r\n $.datepicker._updateAlternate(inst);\r\n $.datepicker._updateDatepicker(inst);\r\n }\r\n }\r\n catch (err) {\r\n }\r\n }\r\n return true;\r\n },\r\n\r\n /* Pop-up the date picker for a given input field.\r\n * If false returned from beforeShow event handler do not show.\r\n * @param input element - the input field attached to the date picker or\r\n *\t\t\t\t\tevent - if triggered by focus\r\n */\r\n _showDatepicker: function (input) {\r\n input = input.target || input;\r\n if (input.nodeName.toLowerCase() !== \"input\") { // find from button/image trigger\r\n input = $(\"input\", input.parentNode)[0];\r\n }\r\n\r\n if ($.datepicker._isDisabledDatepicker(input) || $.datepicker._lastInput === input) { // already here\r\n return;\r\n }\r\n\r\n var inst, beforeShow, beforeShowSettings, isFixed,\r\n offset, showAnim, duration;\r\n\r\n inst = $.datepicker._getInst(input);\r\n if ($.datepicker._curInst && $.datepicker._curInst !== inst) {\r\n $.datepicker._curInst.dpDiv.stop(true, true);\r\n if (inst && $.datepicker._datepickerShowing) {\r\n $.datepicker._hideDatepicker($.datepicker._curInst.input[0]);\r\n }\r\n }\r\n\r\n beforeShow = $.datepicker._get(inst, \"beforeShow\");\r\n beforeShowSettings = beforeShow ? beforeShow.apply(input, [input, inst]) : {};\r\n if (beforeShowSettings === false) {\r\n return;\r\n }\r\n datepicker_extendRemove(inst.settings, beforeShowSettings);\r\n\r\n inst.lastVal = null;\r\n $.datepicker._lastInput = input;\r\n $.datepicker._setDateFromField(inst);\r\n\r\n if ($.datepicker._inDialog) { // hide cursor\r\n input.value = \"\";\r\n }\r\n if (!$.datepicker._pos) { // position below input\r\n $.datepicker._pos = $.datepicker._findPos(input);\r\n $.datepicker._pos[1] += input.offsetHeight; // add the height\r\n }\r\n\r\n isFixed = false;\r\n $(input).parents().each(function () {\r\n isFixed |= $(this).css(\"position\") === \"fixed\";\r\n return !isFixed;\r\n });\r\n\r\n offset = { left: $.datepicker._pos[0], top: $.datepicker._pos[1] };\r\n $.datepicker._pos = null;\r\n\r\n //to avoid flashes on Firefox\r\n inst.dpDiv.empty();\r\n\r\n // determine sizing offscreen\r\n inst.dpDiv.css({ position: \"absolute\", display: \"block\", top: \"-1000px\" });\r\n $.datepicker._updateDatepicker(inst);\r\n\r\n // fix width for dynamic number of date pickers\r\n // and adjust position before showing\r\n offset = $.datepicker._checkOffset(inst, offset, isFixed);\r\n inst.dpDiv.css({\r\n position: ($.datepicker._inDialog && $.blockUI ?\r\n \"static\" : (isFixed ? \"fixed\" : \"absolute\")), display: \"none\",\r\n left: offset.left + \"px\", top: offset.top + \"px\"\r\n });\r\n\r\n if (!inst.inline) {\r\n showAnim = $.datepicker._get(inst, \"showAnim\");\r\n duration = $.datepicker._get(inst, \"duration\");\r\n inst.dpDiv.css(\"z-index\", datepicker_getZindex($(input)) + 1);\r\n $.datepicker._datepickerShowing = true;\r\n\r\n if ($.effects && $.effects.effect[showAnim]) {\r\n inst.dpDiv.show(showAnim, $.datepicker._get(inst, \"showOptions\"), duration);\r\n } else {\r\n inst.dpDiv[showAnim || \"show\"](showAnim ? duration : null);\r\n }\r\n\r\n if ($.datepicker._shouldFocusInput(inst)) {\r\n inst.input.trigger(\"focus\");\r\n }\r\n\r\n $.datepicker._curInst = inst;\r\n }\r\n },\r\n\r\n /* Generate the date picker content. */\r\n _updateDatepicker: function (inst) {\r\n this.maxRows = 4; //Reset the max number of rows being displayed (see #7043)\r\n datepicker_instActive = inst; // for delegate hover events\r\n inst.dpDiv.empty().append(this._generateHTML(inst));\r\n this._attachHandlers(inst);\r\n\r\n var origyearshtml,\r\n numMonths = this._getNumberOfMonths(inst),\r\n cols = numMonths[1],\r\n width = 17,\r\n activeCell = inst.dpDiv.find(\".\" + this._dayOverClass + \" a\");\r\n\r\n if (activeCell.length > 0) {\r\n datepicker_handleMouseover.apply(activeCell.get(0));\r\n }\r\n\r\n inst.dpDiv.removeClass(\"ui-datepicker-multi-2 ui-datepicker-multi-3 ui-datepicker-multi-4\").width(\"\");\r\n if (cols > 1) {\r\n inst.dpDiv.addClass(\"ui-datepicker-multi-\" + cols).css(\"width\", (width * cols) + \"em\");\r\n }\r\n inst.dpDiv[(numMonths[0] !== 1 || numMonths[1] !== 1 ? \"add\" : \"remove\") +\r\n \"Class\"](\"ui-datepicker-multi\");\r\n inst.dpDiv[(this._get(inst, \"isRTL\") ? \"add\" : \"remove\") +\r\n \"Class\"](\"ui-datepicker-rtl\");\r\n\r\n if (inst === $.datepicker._curInst && $.datepicker._datepickerShowing && $.datepicker._shouldFocusInput(inst)) {\r\n inst.input.trigger(\"focus\");\r\n }\r\n\r\n // Deffered render of the years select (to avoid flashes on Firefox)\r\n if (inst.yearshtml) {\r\n origyearshtml = inst.yearshtml;\r\n setTimeout(function () {\r\n\r\n //assure that inst.yearshtml didn't change.\r\n if (origyearshtml === inst.yearshtml && inst.yearshtml) {\r\n inst.dpDiv.find(\"select.ui-datepicker-year:first\").replaceWith(inst.yearshtml);\r\n }\r\n origyearshtml = inst.yearshtml = null;\r\n }, 0);\r\n }\r\n },\r\n\r\n // #6694 - don't focus the input if it's already focused\r\n // this breaks the change event in IE\r\n // Support: IE and jQuery <1.9\r\n _shouldFocusInput: function (inst) {\r\n return inst.input && inst.input.is(\":visible\") && !inst.input.is(\":disabled\") && !inst.input.is(\":focus\");\r\n },\r\n\r\n /* Check positioning to remain on screen. */\r\n _checkOffset: function (inst, offset, isFixed) {\r\n var dpWidth = inst.dpDiv.outerWidth(),\r\n dpHeight = inst.dpDiv.outerHeight(),\r\n inputWidth = inst.input ? inst.input.outerWidth() : 0,\r\n inputHeight = inst.input ? inst.input.outerHeight() : 0,\r\n viewWidth = document.documentElement.clientWidth + (isFixed ? 0 : $(document).scrollLeft()),\r\n viewHeight = document.documentElement.clientHeight + (isFixed ? 0 : $(document).scrollTop());\r\n\r\n offset.left -= (this._get(inst, \"isRTL\") ? (dpWidth - inputWidth) : 0);\r\n offset.left -= (isFixed && offset.left === inst.input.offset().left) ? $(document).scrollLeft() : 0;\r\n offset.top -= (isFixed && offset.top === (inst.input.offset().top + inputHeight)) ? $(document).scrollTop() : 0;\r\n\r\n // Now check if datepicker is showing outside window viewport - move to a better place if so.\r\n offset.left -= Math.min(offset.left, (offset.left + dpWidth > viewWidth && viewWidth > dpWidth) ?\r\n Math.abs(offset.left + dpWidth - viewWidth) : 0);\r\n offset.top -= Math.min(offset.top, (offset.top + dpHeight > viewHeight && viewHeight > dpHeight) ?\r\n Math.abs(dpHeight + inputHeight) : 0);\r\n\r\n return offset;\r\n },\r\n\r\n /* Find an object's position on the screen. */\r\n _findPos: function (obj) {\r\n var position,\r\n inst = this._getInst(obj),\r\n isRTL = this._get(inst, \"isRTL\");\r\n\r\n while (obj && (obj.type === \"hidden\" || obj.nodeType !== 1 || $.expr.filters.hidden(obj))) {\r\n obj = obj[isRTL ? \"previousSibling\" : \"nextSibling\"];\r\n }\r\n\r\n position = $(obj).offset();\r\n return [position.left, position.top];\r\n },\r\n\r\n /* Hide the date picker from view.\r\n * @param input element - the input field attached to the date picker\r\n */\r\n _hideDatepicker: function (input) {\r\n var showAnim, duration, postProcess, onClose,\r\n inst = this._curInst;\r\n\r\n if (!inst || (input && inst !== $.data(input, \"datepicker\"))) {\r\n return;\r\n }\r\n\r\n if (this._datepickerShowing) {\r\n showAnim = this._get(inst, \"showAnim\");\r\n duration = this._get(inst, \"duration\");\r\n postProcess = function () {\r\n $.datepicker._tidyDialog(inst);\r\n };\r\n\r\n // DEPRECATED: after BC for 1.8.x $.effects[ showAnim ] is not needed\r\n if ($.effects && ($.effects.effect[showAnim] || $.effects[showAnim])) {\r\n inst.dpDiv.hide(showAnim, $.datepicker._get(inst, \"showOptions\"), duration, postProcess);\r\n } else {\r\n inst.dpDiv[(showAnim === \"slideDown\" ? \"slideUp\" :\r\n (showAnim === \"fadeIn\" ? \"fadeOut\" : \"hide\"))]((showAnim ? duration : null), postProcess);\r\n }\r\n\r\n if (!showAnim) {\r\n postProcess();\r\n }\r\n this._datepickerShowing = false;\r\n\r\n onClose = this._get(inst, \"onClose\");\r\n if (onClose) {\r\n onClose.apply((inst.input ? inst.input[0] : null), [(inst.input ? inst.input.val() : \"\"), inst]);\r\n }\r\n\r\n this._lastInput = null;\r\n if (this._inDialog) {\r\n this._dialogInput.css({ position: \"absolute\", left: \"0\", top: \"-100px\" });\r\n if ($.blockUI) {\r\n $.unblockUI();\r\n $(\"body\").append(this.dpDiv);\r\n }\r\n }\r\n this._inDialog = false;\r\n }\r\n },\r\n\r\n /* Tidy up after a dialog display. */\r\n _tidyDialog: function (inst) {\r\n inst.dpDiv.removeClass(this._dialogClass).off(\".ui-datepicker-calendar\");\r\n },\r\n\r\n /* Close date picker if clicked elsewhere. */\r\n _checkExternalClick: function (event) {\r\n if (!$.datepicker._curInst) {\r\n return;\r\n }\r\n\r\n var $target = $(event.target),\r\n inst = $.datepicker._getInst($target[0]);\r\n\r\n if ((($target[0].id !== $.datepicker._mainDivId &&\r\n $target.parents(\"#\" + $.datepicker._mainDivId).length === 0 &&\r\n !$target.hasClass($.datepicker.markerClassName) &&\r\n !$target.closest(\".\" + $.datepicker._triggerClass).length &&\r\n $.datepicker._datepickerShowing && !($.datepicker._inDialog && $.blockUI))) ||\r\n ($target.hasClass($.datepicker.markerClassName) && $.datepicker._curInst !== inst)) {\r\n $.datepicker._hideDatepicker();\r\n }\r\n },\r\n\r\n /* Adjust one of the date sub-fields. */\r\n _adjustDate: function (id, offset, period) {\r\n var target = $(id),\r\n inst = this._getInst(target[0]);\r\n\r\n if (this._isDisabledDatepicker(target[0])) {\r\n return;\r\n }\r\n this._adjustInstDate(inst, offset +\r\n (period === \"M\" ? this._get(inst, \"showCurrentAtPos\") : 0), // undo positioning\r\n period);\r\n this._updateDatepicker(inst);\r\n },\r\n\r\n /* Action for current link. */\r\n _gotoToday: function (id) {\r\n var date,\r\n target = $(id),\r\n inst = this._getInst(target[0]);\r\n\r\n if (this._get(inst, \"gotoCurrent\") && inst.currentDay) {\r\n inst.selectedDay = inst.currentDay;\r\n inst.drawMonth = inst.selectedMonth = inst.currentMonth;\r\n inst.drawYear = inst.selectedYear = inst.currentYear;\r\n } else {\r\n date = new Date();\r\n inst.selectedDay = date.getDate();\r\n inst.drawMonth = inst.selectedMonth = date.getMonth();\r\n inst.drawYear = inst.selectedYear = date.getFullYear();\r\n }\r\n this._notifyChange(inst);\r\n this._adjustDate(target);\r\n },\r\n\r\n /* Action for selecting a new month/year. */\r\n _selectMonthYear: function (id, select, period) {\r\n var target = $(id),\r\n inst = this._getInst(target[0]);\r\n\r\n inst[\"selected\" + (period === \"M\" ? \"Month\" : \"Year\")] =\r\n inst[\"draw\" + (period === \"M\" ? \"Month\" : \"Year\")] =\r\n parseInt(select.options[select.selectedIndex].value, 10);\r\n\r\n this._notifyChange(inst);\r\n this._adjustDate(target);\r\n },\r\n\r\n /* Action for selecting a day. */\r\n _selectDay: function (id, month, year, td) {\r\n var inst,\r\n target = $(id);\r\n\r\n if ($(td).hasClass(this._unselectableClass) || this._isDisabledDatepicker(target[0])) {\r\n return;\r\n }\r\n\r\n inst = this._getInst(target[0]);\r\n inst.selectedDay = inst.currentDay = $(\"a\", td).html();\r\n inst.selectedMonth = inst.currentMonth = month;\r\n inst.selectedYear = inst.currentYear = year;\r\n this._selectDate(id, this._formatDate(inst,\r\n inst.currentDay, inst.currentMonth, inst.currentYear));\r\n },\r\n\r\n /* Erase the input field and hide the date picker. */\r\n _clearDate: function (id) {\r\n var target = $(id);\r\n this._selectDate(target, \"\");\r\n },\r\n\r\n /* Update the input field with the selected date. */\r\n _selectDate: function (id, dateStr) {\r\n var onSelect,\r\n target = $(id),\r\n inst = this._getInst(target[0]);\r\n\r\n dateStr = (dateStr != null ? dateStr : this._formatDate(inst));\r\n if (inst.input) {\r\n inst.input.val(dateStr);\r\n }\r\n this._updateAlternate(inst);\r\n\r\n onSelect = this._get(inst, \"onSelect\");\r\n if (onSelect) {\r\n onSelect.apply((inst.input ? inst.input[0] : null), [dateStr, inst]); // trigger custom callback\r\n } else if (inst.input) {\r\n inst.input.trigger(\"change\"); // fire the change event\r\n }\r\n\r\n if (inst.inline) {\r\n this._updateDatepicker(inst);\r\n } else {\r\n this._hideDatepicker();\r\n this._lastInput = inst.input[0];\r\n if (typeof (inst.input[0]) !== \"object\") {\r\n inst.input.trigger(\"focus\"); // restore focus\r\n }\r\n this._lastInput = null;\r\n }\r\n },\r\n\r\n /* Update any alternate field to synchronise with the main field. */\r\n _updateAlternate: function (inst) {\r\n var altFormat, date, dateStr,\r\n altField = this._get(inst, \"altField\");\r\n\r\n if (altField) { // update alternate field too\r\n altFormat = this._get(inst, \"altFormat\") || this._get(inst, \"dateFormat\");\r\n date = this._getDate(inst);\r\n dateStr = this.formatDate(altFormat, date, this._getFormatConfig(inst));\r\n $(altField).val(dateStr);\r\n }\r\n },\r\n\r\n /* Set as beforeShowDay function to prevent selection of weekends.\r\n * @param date Date - the date to customise\r\n * @return [boolean, string] - is this date selectable?, what is its CSS class?\r\n */\r\n noWeekends: function (date) {\r\n var day = date.getDay();\r\n return [(day > 0 && day < 6), \"\"];\r\n },\r\n\r\n /* Set as calculateWeek to determine the week of the year based on the ISO 8601 definition.\r\n * @param date Date - the date to get the week for\r\n * @return number - the number of the week within the year that contains this date\r\n */\r\n iso8601Week: function (date) {\r\n var time,\r\n checkDate = new Date(date.getTime());\r\n\r\n // Find Thursday of this week starting on Monday\r\n checkDate.setDate(checkDate.getDate() + 4 - (checkDate.getDay() || 7));\r\n\r\n time = checkDate.getTime();\r\n checkDate.setMonth(0); // Compare with Jan 1\r\n checkDate.setDate(1);\r\n return Math.floor(Math.round((time - checkDate) / 86400000) / 7) + 1;\r\n },\r\n\r\n /* Parse a string value into a date object.\r\n * See formatDate below for the possible formats.\r\n *\r\n * @param format string - the expected format of the date\r\n * @param value string - the date in the above format\r\n * @param settings Object - attributes include:\r\n *\t\t\t\t\tshortYearCutoff number - the cutoff year for determining the century (optional)\r\n *\t\t\t\t\tdayNamesShort\tstring[7] - abbreviated names of the days from Sunday (optional)\r\n *\t\t\t\t\tdayNames\t\tstring[7] - names of the days from Sunday (optional)\r\n *\t\t\t\t\tmonthNamesShort string[12] - abbreviated names of the months (optional)\r\n *\t\t\t\t\tmonthNames\t\tstring[12] - names of the months (optional)\r\n * @return Date - the extracted date value or null if value is blank\r\n */\r\n parseDate: function (format, value, settings) {\r\n if (format == null || value == null) {\r\n throw \"Invalid arguments\";\r\n }\r\n\r\n value = (typeof value === \"object\" ? value.toString() : value + \"\");\r\n if (value === \"\") {\r\n return null;\r\n }\r\n\r\n var iFormat, dim, extra,\r\n iValue = 0,\r\n shortYearCutoffTemp = (settings ? settings.shortYearCutoff : null) || this._defaults.shortYearCutoff,\r\n shortYearCutoff = (typeof shortYearCutoffTemp !== \"string\" ? shortYearCutoffTemp :\r\n new Date().getFullYear() % 100 + parseInt(shortYearCutoffTemp, 10)),\r\n dayNamesShort = (settings ? settings.dayNamesShort : null) || this._defaults.dayNamesShort,\r\n dayNames = (settings ? settings.dayNames : null) || this._defaults.dayNames,\r\n monthNamesShort = (settings ? settings.monthNamesShort : null) || this._defaults.monthNamesShort,\r\n monthNames = (settings ? settings.monthNames : null) || this._defaults.monthNames,\r\n year = -1,\r\n month = -1,\r\n day = -1,\r\n doy = -1,\r\n literal = false,\r\n date,\r\n\r\n // Check whether a format character is doubled\r\n lookAhead = function (match) {\r\n var matches = (iFormat + 1 < format.length && format.charAt(iFormat + 1) === match);\r\n if (matches) {\r\n iFormat++;\r\n }\r\n return matches;\r\n },\r\n\r\n // Extract a number from the string value\r\n getNumber = function (match) {\r\n var isDoubled = lookAhead(match),\r\n size = (match === \"@\" ? 14 : (match === \"!\" ? 20 :\r\n (match === \"y\" && isDoubled ? 4 : (match === \"o\" ? 3 : 2)))),\r\n minSize = (match === \"y\" ? size : 1),\r\n digits = new RegExp(\"^\\\\d{\" + minSize + \",\" + size + \"}\"),\r\n num = value.substring(iValue).match(digits);\r\n if (!num) {\r\n throw \"Missing number at position \" + iValue;\r\n }\r\n iValue += num[0].length;\r\n return parseInt(num[0], 10);\r\n },\r\n\r\n // Extract a name from the string value and convert to an index\r\n getName = function (match, shortNames, longNames) {\r\n var index = -1,\r\n names = $.map(lookAhead(match) ? longNames : shortNames, function (v, k) {\r\n return [[k, v]];\r\n }).sort(function (a, b) {\r\n return -(a[1].length - b[1].length);\r\n });\r\n\r\n $.each(names, function (i, pair) {\r\n var name = pair[1];\r\n if (value.substr(iValue, name.length).toLowerCase() === name.toLowerCase()) {\r\n index = pair[0];\r\n iValue += name.length;\r\n return false;\r\n }\r\n });\r\n if (index !== -1) {\r\n return index + 1;\r\n } else {\r\n throw \"Unknown name at position \" + iValue;\r\n }\r\n },\r\n\r\n // Confirm that a literal character matches the string value\r\n checkLiteral = function () {\r\n if (value.charAt(iValue) !== format.charAt(iFormat)) {\r\n throw \"Unexpected literal at position \" + iValue;\r\n }\r\n iValue++;\r\n };\r\n\r\n for (iFormat = 0; iFormat < format.length; iFormat++) {\r\n if (literal) {\r\n if (format.charAt(iFormat) === \"'\" && !lookAhead(\"'\")) {\r\n literal = false;\r\n } else {\r\n checkLiteral();\r\n }\r\n } else {\r\n switch (format.charAt(iFormat)) {\r\n case \"d\":\r\n day = getNumber(\"d\");\r\n break;\r\n case \"D\":\r\n getName(\"D\", dayNamesShort, dayNames);\r\n break;\r\n case \"o\":\r\n doy = getNumber(\"o\");\r\n break;\r\n case \"m\":\r\n month = getNumber(\"m\");\r\n break;\r\n case \"M\":\r\n month = getName(\"M\", monthNamesShort, monthNames);\r\n break;\r\n case \"y\":\r\n year = getNumber(\"y\");\r\n break;\r\n case \"@\":\r\n date = new Date(getNumber(\"@\"));\r\n year = date.getFullYear();\r\n month = date.getMonth() + 1;\r\n day = date.getDate();\r\n break;\r\n case \"!\":\r\n date = new Date((getNumber(\"!\") - this._ticksTo1970) / 10000);\r\n year = date.getFullYear();\r\n month = date.getMonth() + 1;\r\n day = date.getDate();\r\n break;\r\n case \"'\":\r\n if (lookAhead(\"'\")) {\r\n checkLiteral();\r\n } else {\r\n literal = true;\r\n }\r\n break;\r\n default:\r\n checkLiteral();\r\n }\r\n }\r\n }\r\n\r\n if (iValue < value.length) {\r\n extra = value.substr(iValue);\r\n if (!/^\\s+/.test(extra)) {\r\n throw \"Extra/unparsed characters found in date: \" + extra;\r\n }\r\n }\r\n\r\n if (year === -1) {\r\n year = new Date().getFullYear();\r\n } else if (year < 100) {\r\n year += new Date().getFullYear() - new Date().getFullYear() % 100 +\r\n (year <= shortYearCutoff ? 0 : -100);\r\n }\r\n\r\n if (doy > -1) {\r\n month = 1;\r\n day = doy;\r\n do {\r\n dim = this._getDaysInMonth(year, month - 1);\r\n if (day <= dim) {\r\n break;\r\n }\r\n month++;\r\n day -= dim;\r\n } while (true);\r\n }\r\n\r\n date = this._daylightSavingAdjust(new Date(year, month - 1, day));\r\n if (date.getFullYear() !== year || date.getMonth() + 1 !== month || date.getDate() !== day) {\r\n throw \"Invalid date\"; // E.g. 31/02/00\r\n }\r\n return date;\r\n },\r\n\r\n /* Standard date formats. */\r\n ATOM: \"yy-mm-dd\", // RFC 3339 (ISO 8601)\r\n COOKIE: \"D, dd M yy\",\r\n ISO_8601: \"yy-mm-dd\",\r\n RFC_822: \"D, d M y\",\r\n RFC_850: \"DD, dd-M-y\",\r\n RFC_1036: \"D, d M y\",\r\n RFC_1123: \"D, d M yy\",\r\n RFC_2822: \"D, d M yy\",\r\n RSS: \"D, d M y\", // RFC 822\r\n TICKS: \"!\",\r\n TIMESTAMP: \"@\",\r\n W3C: \"yy-mm-dd\", // ISO 8601\r\n\r\n _ticksTo1970: (((1970 - 1) * 365 + Math.floor(1970 / 4) - Math.floor(1970 / 100) +\r\n Math.floor(1970 / 400)) * 24 * 60 * 60 * 10000000),\r\n\r\n /* Format a date object into a string value.\r\n * The format can be combinations of the following:\r\n * d - day of month (no leading zero)\r\n * dd - day of month (two digit)\r\n * o - day of year (no leading zeros)\r\n * oo - day of year (three digit)\r\n * D - day name short\r\n * DD - day name long\r\n * m - month of year (no leading zero)\r\n * mm - month of year (two digit)\r\n * M - month name short\r\n * MM - month name long\r\n * y - year (two digit)\r\n * yy - year (four digit)\r\n * @ - Unix timestamp (ms since 01/01/1970)\r\n * ! - Windows ticks (100ns since 01/01/0001)\r\n * \"...\" - literal text\r\n * '' - single quote\r\n *\r\n * @param format string - the desired format of the date\r\n * @param date Date - the date value to format\r\n * @param settings Object - attributes include:\r\n *\t\t\t\t\tdayNamesShort\tstring[7] - abbreviated names of the days from Sunday (optional)\r\n *\t\t\t\t\tdayNames\t\tstring[7] - names of the days from Sunday (optional)\r\n *\t\t\t\t\tmonthNamesShort string[12] - abbreviated names of the months (optional)\r\n *\t\t\t\t\tmonthNames\t\tstring[12] - names of the months (optional)\r\n * @return string - the date in the above format\r\n */\r\n formatDate: function (format, date, settings) {\r\n if (!date) {\r\n return \"\";\r\n }\r\n\r\n var iFormat,\r\n dayNamesShort = (settings ? settings.dayNamesShort : null) || this._defaults.dayNamesShort,\r\n dayNames = (settings ? settings.dayNames : null) || this._defaults.dayNames,\r\n monthNamesShort = (settings ? settings.monthNamesShort : null) || this._defaults.monthNamesShort,\r\n monthNames = (settings ? settings.monthNames : null) || this._defaults.monthNames,\r\n\r\n // Check whether a format character is doubled\r\n lookAhead = function (match) {\r\n var matches = (iFormat + 1 < format.length && format.charAt(iFormat + 1) === match);\r\n if (matches) {\r\n iFormat++;\r\n }\r\n return matches;\r\n },\r\n\r\n // Format a number, with leading zero if necessary\r\n formatNumber = function (match, value, len) {\r\n var num = \"\" + value;\r\n if (lookAhead(match)) {\r\n while (num.length < len) {\r\n num = \"0\" + num;\r\n }\r\n }\r\n return num;\r\n },\r\n\r\n // Format a name, short or long as requested\r\n formatName = function (match, value, shortNames, longNames) {\r\n return (lookAhead(match) ? longNames[value] : shortNames[value]);\r\n },\r\n output = \"\",\r\n literal = false;\r\n\r\n if (date) {\r\n for (iFormat = 0; iFormat < format.length; iFormat++) {\r\n if (literal) {\r\n if (format.charAt(iFormat) === \"'\" && !lookAhead(\"'\")) {\r\n literal = false;\r\n } else {\r\n output += format.charAt(iFormat);\r\n }\r\n } else {\r\n switch (format.charAt(iFormat)) {\r\n case \"d\":\r\n output += formatNumber(\"d\", date.getDate(), 2);\r\n break;\r\n case \"D\":\r\n output += formatName(\"D\", date.getDay(), dayNamesShort, dayNames);\r\n break;\r\n case \"o\":\r\n output += formatNumber(\"o\",\r\n Math.round((new Date(date.getFullYear(), date.getMonth(), date.getDate()).getTime() - new Date(date.getFullYear(), 0, 0).getTime()) / 86400000), 3);\r\n break;\r\n case \"m\":\r\n output += formatNumber(\"m\", date.getMonth() + 1, 2);\r\n break;\r\n case \"M\":\r\n output += formatName(\"M\", date.getMonth(), monthNamesShort, monthNames);\r\n break;\r\n case \"y\":\r\n output += (lookAhead(\"y\") ? date.getFullYear() :\r\n (date.getFullYear() % 100 < 10 ? \"0\" : \"\") + date.getFullYear() % 100);\r\n break;\r\n case \"@\":\r\n output += date.getTime();\r\n break;\r\n case \"!\":\r\n output += date.getTime() * 10000 + this._ticksTo1970;\r\n break;\r\n case \"'\":\r\n if (lookAhead(\"'\")) {\r\n output += \"'\";\r\n } else {\r\n literal = true;\r\n }\r\n break;\r\n default:\r\n output += format.charAt(iFormat);\r\n }\r\n }\r\n }\r\n }\r\n return output;\r\n },\r\n\r\n /* Extract all possible characters from the date format. */\r\n _possibleChars: function (format) {\r\n var iFormat,\r\n chars = \"\",\r\n literal = false,\r\n\r\n // Check whether a format character is doubled\r\n lookAhead = function (match) {\r\n var matches = (iFormat + 1 < format.length && format.charAt(iFormat + 1) === match);\r\n if (matches) {\r\n iFormat++;\r\n }\r\n return matches;\r\n };\r\n\r\n for (iFormat = 0; iFormat < format.length; iFormat++) {\r\n if (literal) {\r\n if (format.charAt(iFormat) === \"'\" && !lookAhead(\"'\")) {\r\n literal = false;\r\n } else {\r\n chars += format.charAt(iFormat);\r\n }\r\n } else {\r\n switch (format.charAt(iFormat)) {\r\n case \"d\": case \"m\": case \"y\": case \"@\":\r\n chars += \"0123456789\";\r\n break;\r\n case \"D\": case \"M\":\r\n return null; // Accept anything\r\n case \"'\":\r\n if (lookAhead(\"'\")) {\r\n chars += \"'\";\r\n } else {\r\n literal = true;\r\n }\r\n break;\r\n default:\r\n chars += format.charAt(iFormat);\r\n }\r\n }\r\n }\r\n return chars;\r\n },\r\n\r\n /* Get a setting value, defaulting if necessary. */\r\n _get: function (inst, name) {\r\n return inst.settings[name] !== undefined ?\r\n inst.settings[name] : this._defaults[name];\r\n },\r\n\r\n /* Parse existing date and initialise date picker. */\r\n _setDateFromField: function (inst, noDefault) {\r\n if (inst.input.val() === inst.lastVal) {\r\n return;\r\n }\r\n\r\n var dateFormat = this._get(inst, \"dateFormat\"),\r\n dates = inst.lastVal = inst.input ? inst.input.val() : null,\r\n defaultDate = this._getDefaultDate(inst),\r\n date = defaultDate,\r\n settings = this._getFormatConfig(inst);\r\n\r\n try {\r\n date = this.parseDate(dateFormat, dates, settings) || defaultDate;\r\n } catch (event) {\r\n dates = (noDefault ? \"\" : dates);\r\n }\r\n inst.selectedDay = date.getDate();\r\n inst.drawMonth = inst.selectedMonth = date.getMonth();\r\n inst.drawYear = inst.selectedYear = date.getFullYear();\r\n inst.currentDay = (dates ? date.getDate() : 0);\r\n inst.currentMonth = (dates ? date.getMonth() : 0);\r\n inst.currentYear = (dates ? date.getFullYear() : 0);\r\n this._adjustInstDate(inst);\r\n },\r\n\r\n /* Retrieve the default date shown on opening. */\r\n _getDefaultDate: function (inst) {\r\n return this._restrictMinMax(inst,\r\n this._determineDate(inst, this._get(inst, \"defaultDate\"), new Date()));\r\n },\r\n\r\n /* A date may be specified as an exact value or a relative one. */\r\n _determineDate: function (inst, date, defaultDate) {\r\n var offsetNumeric = function (offset) {\r\n var date = new Date();\r\n date.setDate(date.getDate() + offset);\r\n return date;\r\n },\r\n offsetString = function (offset) {\r\n try {\r\n return $.datepicker.parseDate($.datepicker._get(inst, \"dateFormat\"),\r\n offset, $.datepicker._getFormatConfig(inst));\r\n }\r\n catch (e) {\r\n\r\n // Ignore\r\n }\r\n\r\n var date = (offset.toLowerCase().match(/^c/) ?\r\n $.datepicker._getDate(inst) : null) || new Date(),\r\n year = date.getFullYear(),\r\n month = date.getMonth(),\r\n day = date.getDate(),\r\n pattern = /([+\\-]?[0-9]+)\\s*(d|D|w|W|m|M|y|Y)?/g,\r\n matches = pattern.exec(offset);\r\n\r\n while (matches) {\r\n switch (matches[2] || \"d\") {\r\n case \"d\": case \"D\":\r\n day += parseInt(matches[1], 10); break;\r\n case \"w\": case \"W\":\r\n day += parseInt(matches[1], 10) * 7; break;\r\n case \"m\": case \"M\":\r\n month += parseInt(matches[1], 10);\r\n day = Math.min(day, $.datepicker._getDaysInMonth(year, month));\r\n break;\r\n case \"y\": case \"Y\":\r\n year += parseInt(matches[1], 10);\r\n day = Math.min(day, $.datepicker._getDaysInMonth(year, month));\r\n break;\r\n }\r\n matches = pattern.exec(offset);\r\n }\r\n return new Date(year, month, day);\r\n },\r\n newDate = (date == null || date === \"\" ? defaultDate : (typeof date === \"string\" ? offsetString(date) :\r\n (typeof date === \"number\" ? (isNaN(date) ? defaultDate : offsetNumeric(date)) : new Date(date.getTime()))));\r\n\r\n newDate = (newDate && newDate.toString() === \"Invalid Date\" ? defaultDate : newDate);\r\n if (newDate) {\r\n newDate.setHours(0);\r\n newDate.setMinutes(0);\r\n newDate.setSeconds(0);\r\n newDate.setMilliseconds(0);\r\n }\r\n return this._daylightSavingAdjust(newDate);\r\n },\r\n\r\n /* Handle switch to/from daylight saving.\r\n * Hours may be non-zero on daylight saving cut-over:\r\n * > 12 when midnight changeover, but then cannot generate\r\n * midnight datetime, so jump to 1AM, otherwise reset.\r\n * @param date (Date) the date to check\r\n * @return (Date) the corrected date\r\n */\r\n _daylightSavingAdjust: function (date) {\r\n if (!date) {\r\n return null;\r\n }\r\n date.setHours(date.getHours() > 12 ? date.getHours() + 2 : 0);\r\n return date;\r\n },\r\n\r\n /* Set the date(s) directly. */\r\n _setDate: function (inst, date, noChange) {\r\n var clear = !date,\r\n origMonth = inst.selectedMonth,\r\n origYear = inst.selectedYear,\r\n newDate = this._restrictMinMax(inst, this._determineDate(inst, date, new Date()));\r\n\r\n inst.selectedDay = inst.currentDay = newDate.getDate();\r\n inst.drawMonth = inst.selectedMonth = inst.currentMonth = newDate.getMonth();\r\n inst.drawYear = inst.selectedYear = inst.currentYear = newDate.getFullYear();\r\n if ((origMonth !== inst.selectedMonth || origYear !== inst.selectedYear) && !noChange) {\r\n this._notifyChange(inst);\r\n }\r\n this._adjustInstDate(inst);\r\n if (inst.input) {\r\n inst.input.val(clear ? \"\" : this._formatDate(inst));\r\n }\r\n },\r\n\r\n /* Retrieve the date(s) directly. */\r\n _getDate: function (inst) {\r\n var startDate = (!inst.currentYear || (inst.input && inst.input.val() === \"\") ? null :\r\n this._daylightSavingAdjust(new Date(\r\n inst.currentYear, inst.currentMonth, inst.currentDay)));\r\n return startDate;\r\n },\r\n\r\n /* Attach the onxxx handlers. These are declared statically so\r\n * they work with static code transformers like Caja.\r\n */\r\n _attachHandlers: function (inst) {\r\n var stepMonths = this._get(inst, \"stepMonths\"),\r\n id = \"#\" + inst.id.replace(/\\\\\\\\/g, \"\\\\\");\r\n inst.dpDiv.find(\"[data-handler]\").map(function () {\r\n var handler = {\r\n prev: function () {\r\n $.datepicker._adjustDate(id, -stepMonths, \"M\");\r\n },\r\n next: function () {\r\n $.datepicker._adjustDate(id, +stepMonths, \"M\");\r\n },\r\n hide: function () {\r\n $.datepicker._hideDatepicker();\r\n },\r\n today: function () {\r\n $.datepicker._gotoToday(id);\r\n },\r\n selectDay: function () {\r\n $.datepicker._selectDay(id, +this.getAttribute(\"data-month\"), +this.getAttribute(\"data-year\"), this);\r\n return false;\r\n },\r\n selectMonth: function () {\r\n $.datepicker._selectMonthYear(id, this, \"M\");\r\n return false;\r\n },\r\n selectYear: function () {\r\n $.datepicker._selectMonthYear(id, this, \"Y\");\r\n return false;\r\n }\r\n };\r\n $(this).on(this.getAttribute(\"data-event\"), handler[this.getAttribute(\"data-handler\")]);\r\n });\r\n },\r\n\r\n /* Generate the HTML for the current state of the date picker. */\r\n _generateHTML: function (inst) {\r\n var maxDraw, prevText, prev, nextText, next, currentText, gotoDate,\r\n controls, buttonPanel, firstDay, showWeek, dayNames, dayNamesMin,\r\n monthNames, monthNamesShort, beforeShowDay, showOtherMonths,\r\n selectOtherMonths, defaultDate, html, dow, row, group, col, selectedDate,\r\n cornerClass, calender, thead, day, daysInMonth, leadDays, curRows, numRows,\r\n printDate, dRow, tbody, daySettings, otherMonth, unselectable,\r\n tempDate = new Date(),\r\n today = this._daylightSavingAdjust(\r\n new Date(tempDate.getFullYear(), tempDate.getMonth(), tempDate.getDate())), // clear time\r\n isRTL = this._get(inst, \"isRTL\"),\r\n showButtonPanel = this._get(inst, \"showButtonPanel\"),\r\n hideIfNoPrevNext = this._get(inst, \"hideIfNoPrevNext\"),\r\n navigationAsDateFormat = this._get(inst, \"navigationAsDateFormat\"),\r\n numMonths = this._getNumberOfMonths(inst),\r\n showCurrentAtPos = this._get(inst, \"showCurrentAtPos\"),\r\n stepMonths = this._get(inst, \"stepMonths\"),\r\n isMultiMonth = (numMonths[0] !== 1 || numMonths[1] !== 1),\r\n currentDate = this._daylightSavingAdjust((!inst.currentDay ? new Date(9999, 9, 9) :\r\n new Date(inst.currentYear, inst.currentMonth, inst.currentDay))),\r\n minDate = this._getMinMaxDate(inst, \"min\"),\r\n maxDate = this._getMinMaxDate(inst, \"max\"),\r\n drawMonth = inst.drawMonth - showCurrentAtPos,\r\n drawYear = inst.drawYear;\r\n\r\n if (drawMonth < 0) {\r\n drawMonth += 12;\r\n drawYear--;\r\n }\r\n if (maxDate) {\r\n maxDraw = this._daylightSavingAdjust(new Date(maxDate.getFullYear(),\r\n maxDate.getMonth() - (numMonths[0] * numMonths[1]) + 1, maxDate.getDate()));\r\n maxDraw = (minDate && maxDraw < minDate ? minDate : maxDraw);\r\n while (this._daylightSavingAdjust(new Date(drawYear, drawMonth, 1)) > maxDraw) {\r\n drawMonth--;\r\n if (drawMonth < 0) {\r\n drawMonth = 11;\r\n drawYear--;\r\n }\r\n }\r\n }\r\n inst.drawMonth = drawMonth;\r\n inst.drawYear = drawYear;\r\n\r\n prevText = this._get(inst, \"prevText\");\r\n prevText = (!navigationAsDateFormat ? prevText : this.formatDate(prevText,\r\n this._daylightSavingAdjust(new Date(drawYear, drawMonth - stepMonths, 1)),\r\n this._getFormatConfig(inst)));\r\n\r\n prev = (this._canAdjustMonth(inst, -1, drawYear, drawMonth) ?\r\n \"<a class='ui-datepicker-prev ui-corner-all' data-handler='prev' data-event='click'\" +\r\n \" title='\" + prevText + \"'><span class='ui-icon ui-icon-circle-triangle-\" + (isRTL ? \"e\" : \"w\") + \"'>\" + prevText + \"</span></a>\" :\r\n (hideIfNoPrevNext ? \"\" : \"<a class='ui-datepicker-prev ui-corner-all ui-state-disabled' title='\" + prevText + \"'><span class='ui-icon ui-icon-circle-triangle-\" + (isRTL ? \"e\" : \"w\") + \"'>\" + prevText + \"</span></a>\"));\r\n\r\n nextText = this._get(inst, \"nextText\");\r\n nextText = (!navigationAsDateFormat ? nextText : this.formatDate(nextText,\r\n this._daylightSavingAdjust(new Date(drawYear, drawMonth + stepMonths, 1)),\r\n this._getFormatConfig(inst)));\r\n\r\n next = (this._canAdjustMonth(inst, +1, drawYear, drawMonth) ?\r\n \"<a class='ui-datepicker-next ui-corner-all' data-handler='next' data-event='click'\" +\r\n \" title='\" + nextText + \"'><span class='ui-icon ui-icon-circle-triangle-\" + (isRTL ? \"w\" : \"e\") + \"'>\" + nextText + \"</span></a>\" :\r\n (hideIfNoPrevNext ? \"\" : \"<a class='ui-datepicker-next ui-corner-all ui-state-disabled' title='\" + nextText + \"'><span class='ui-icon ui-icon-circle-triangle-\" + (isRTL ? \"w\" : \"e\") + \"'>\" + nextText + \"</span></a>\"));\r\n\r\n currentText = this._get(inst, \"currentText\");\r\n gotoDate = (this._get(inst, \"gotoCurrent\") && inst.currentDay ? currentDate : today);\r\n currentText = (!navigationAsDateFormat ? currentText :\r\n this.formatDate(currentText, gotoDate, this._getFormatConfig(inst)));\r\n\r\n controls = (!inst.inline ? \"<button type='button' class='ui-datepicker-close ui-state-default ui-priority-primary ui-corner-all' data-handler='hide' data-event='click'>\" +\r\n this._get(inst, \"closeText\") + \"</button>\" : \"\");\r\n\r\n buttonPanel = (showButtonPanel) ? \"<div class='ui-datepicker-buttonpane ui-widget-content'>\" + (isRTL ? controls : \"\") +\r\n (this._isInRange(inst, gotoDate) ? \"<button type='button' class='ui-datepicker-current ui-state-default ui-priority-secondary ui-corner-all' data-handler='today' data-event='click'\" +\r\n \">\" + currentText + \"</button>\" : \"\") + (isRTL ? \"\" : controls) + \"</div>\" : \"\";\r\n\r\n firstDay = parseInt(this._get(inst, \"firstDay\"), 10);\r\n firstDay = (isNaN(firstDay) ? 0 : firstDay);\r\n\r\n showWeek = this._get(inst, \"showWeek\");\r\n dayNames = this._get(inst, \"dayNames\");\r\n dayNamesMin = this._get(inst, \"dayNamesMin\");\r\n monthNames = this._get(inst, \"monthNames\");\r\n monthNamesShort = this._get(inst, \"monthNamesShort\");\r\n beforeShowDay = this._get(inst, \"beforeShowDay\");\r\n showOtherMonths = this._get(inst, \"showOtherMonths\");\r\n selectOtherMonths = this._get(inst, \"selectOtherMonths\");\r\n defaultDate = this._getDefaultDate(inst);\r\n html = \"\";\r\n\r\n for (row = 0; row < numMonths[0]; row++) {\r\n group = \"\";\r\n this.maxRows = 4;\r\n for (col = 0; col < numMonths[1]; col++) {\r\n selectedDate = this._daylightSavingAdjust(new Date(drawYear, drawMonth, inst.selectedDay));\r\n cornerClass = \" ui-corner-all\";\r\n calender = \"\";\r\n if (isMultiMonth) {\r\n calender += \"<div class='ui-datepicker-group\";\r\n if (numMonths[1] > 1) {\r\n switch (col) {\r\n case 0: calender += \" ui-datepicker-group-first\";\r\n cornerClass = \" ui-corner-\" + (isRTL ? \"right\" : \"left\"); break;\r\n case numMonths[1] - 1: calender += \" ui-datepicker-group-last\";\r\n cornerClass = \" ui-corner-\" + (isRTL ? \"left\" : \"right\"); break;\r\n default: calender += \" ui-datepicker-group-middle\"; cornerClass = \"\"; break;\r\n }\r\n }\r\n calender += \"'>\";\r\n }\r\n calender += \"<div class='ui-datepicker-header ui-widget-header ui-helper-clearfix\" + cornerClass + \"'>\" +\r\n (/all|left/.test(cornerClass) && row === 0 ? (isRTL ? next : prev) : \"\") +\r\n (/all|right/.test(cornerClass) && row === 0 ? (isRTL ? prev : next) : \"\") +\r\n this._generateMonthYearHeader(inst, drawMonth, drawYear, minDate, maxDate,\r\n row > 0 || col > 0, monthNames, monthNamesShort) + // draw month headers\r\n \"</div><table class='ui-datepicker-calendar'><thead>\" +\r\n \"<tr>\";\r\n thead = (showWeek ? \"<th class='ui-datepicker-week-col'>\" + this._get(inst, \"weekHeader\") + \"</th>\" : \"\");\r\n for (dow = 0; dow < 7; dow++) { // days of the week\r\n day = (dow + firstDay) % 7;\r\n thead += \"<th scope='col'\" + ((dow + firstDay + 6) % 7 >= 5 ? \" class='ui-datepicker-week-end'\" : \"\") + \">\" +\r\n \"<span title='\" + dayNames[day] + \"'>\" + dayNamesMin[day] + \"</span></th>\";\r\n }\r\n calender += thead + \"</tr></thead><tbody>\";\r\n daysInMonth = this._getDaysInMonth(drawYear, drawMonth);\r\n if (drawYear === inst.selectedYear && drawMonth === inst.selectedMonth) {\r\n inst.selectedDay = Math.min(inst.selectedDay, daysInMonth);\r\n }\r\n leadDays = (this._getFirstDayOfMonth(drawYear, drawMonth) - firstDay + 7) % 7;\r\n curRows = Math.ceil((leadDays + daysInMonth) / 7); // calculate the number of rows to generate\r\n numRows = (isMultiMonth ? this.maxRows > curRows ? this.maxRows : curRows : curRows); //If multiple months, use the higher number of rows (see #7043)\r\n this.maxRows = numRows;\r\n printDate = this._daylightSavingAdjust(new Date(drawYear, drawMonth, 1 - leadDays));\r\n for (dRow = 0; dRow < numRows; dRow++) { // create date picker rows\r\n calender += \"<tr>\";\r\n tbody = (!showWeek ? \"\" : \"<td class='ui-datepicker-week-col'>\" +\r\n this._get(inst, \"calculateWeek\")(printDate) + \"</td>\");\r\n for (dow = 0; dow < 7; dow++) { // create date picker days\r\n daySettings = (beforeShowDay ?\r\n beforeShowDay.apply((inst.input ? inst.input[0] : null), [printDate]) : [true, \"\"]);\r\n otherMonth = (printDate.getMonth() !== drawMonth);\r\n unselectable = (otherMonth && !selectOtherMonths) || !daySettings[0] ||\r\n (minDate && printDate < minDate) || (maxDate && printDate > maxDate);\r\n tbody += \"<td class='\" +\r\n ((dow + firstDay + 6) % 7 >= 5 ? \" ui-datepicker-week-end\" : \"\") + // highlight weekends\r\n (otherMonth ? \" ui-datepicker-other-month\" : \"\") + // highlight days from other months\r\n ((printDate.getTime() === selectedDate.getTime() && drawMonth === inst.selectedMonth && inst._keyEvent) || // user pressed key\r\n (defaultDate.getTime() === printDate.getTime() && defaultDate.getTime() === selectedDate.getTime()) ?\r\n\r\n // or defaultDate is current printedDate and defaultDate is selectedDate\r\n \" \" + this._dayOverClass : \"\") + // highlight selected day\r\n (unselectable ? \" \" + this._unselectableClass + \" ui-state-disabled\" : \"\") + // highlight unselectable days\r\n (otherMonth && !showOtherMonths ? \"\" : \" \" + daySettings[1] + // highlight custom dates\r\n (printDate.getTime() === currentDate.getTime() ? \" \" + this._currentClass : \"\") + // highlight selected day\r\n (printDate.getTime() === today.getTime() ? \" ui-datepicker-today\" : \"\")) + \"'\" + // highlight today (if different)\r\n ((!otherMonth || showOtherMonths) && daySettings[2] ? \" title='\" + daySettings[2].replace(/'/g, \"'\") + \"'\" : \"\") + // cell title\r\n (unselectable ? \"\" : \" data-handler='selectDay' data-event='click' data-month='\" + printDate.getMonth() + \"' data-year='\" + printDate.getFullYear() + \"'\") + \">\" + // actions\r\n (otherMonth && !showOtherMonths ? \" \" : // display for other months\r\n (unselectable ? \"<span class='ui-state-default'>\" + printDate.getDate() + \"</span>\" : \"<a class='ui-state-default\" +\r\n (printDate.getTime() === today.getTime() ? \" ui-state-highlight\" : \"\") +\r\n (printDate.getTime() === currentDate.getTime() ? \" ui-state-active\" : \"\") + // highlight selected day\r\n (otherMonth ? \" ui-priority-secondary\" : \"\") + // distinguish dates from other months\r\n \"' href='#'>\" + printDate.getDate() + \"</a>\")) + \"</td>\"; // display selectable date\r\n printDate.setDate(printDate.getDate() + 1);\r\n printDate = this._daylightSavingAdjust(printDate);\r\n }\r\n calender += tbody + \"</tr>\";\r\n }\r\n drawMonth++;\r\n if (drawMonth > 11) {\r\n drawMonth = 0;\r\n drawYear++;\r\n }\r\n calender += \"</tbody></table>\" + (isMultiMonth ? \"</div>\" +\r\n ((numMonths[0] > 0 && col === numMonths[1] - 1) ? \"<div class='ui-datepicker-row-break'></div>\" : \"\") : \"\");\r\n group += calender;\r\n }\r\n html += group;\r\n }\r\n html += buttonPanel;\r\n inst._keyEvent = false;\r\n return html;\r\n },\r\n\r\n /* Generate the month and year header. */\r\n _generateMonthYearHeader: function (inst, drawMonth, drawYear, minDate, maxDate,\r\n secondary, monthNames, monthNamesShort) {\r\n\r\n var inMinYear, inMaxYear, month, years, thisYear, determineYear, year, endYear,\r\n changeMonth = this._get(inst, \"changeMonth\"),\r\n changeYear = this._get(inst, \"changeYear\"),\r\n showMonthAfterYear = this._get(inst, \"showMonthAfterYear\"),\r\n html = \"<div class='ui-datepicker-title'>\",\r\n monthHtml = \"\";\r\n\r\n // Month selection\r\n if (secondary || !changeMonth) {\r\n monthHtml += \"<span class='ui-datepicker-month'>\" + monthNames[drawMonth] + \"</span>\";\r\n } else {\r\n inMinYear = (minDate && minDate.getFullYear() === drawYear);\r\n inMaxYear = (maxDate && maxDate.getFullYear() === drawYear);\r\n monthHtml += \"<select class='ui-datepicker-month' data-handler='selectMonth' data-event='change'>\";\r\n for (month = 0; month < 12; month++) {\r\n if ((!inMinYear || month >= minDate.getMonth()) && (!inMaxYear || month <= maxDate.getMonth())) {\r\n monthHtml += \"<option value='\" + month + \"'\" +\r\n (month === drawMonth ? \" selected='selected'\" : \"\") +\r\n \">\" + monthNamesShort[month] + \"</option>\";\r\n }\r\n }\r\n monthHtml += \"</select>\";\r\n }\r\n\r\n if (!showMonthAfterYear) {\r\n html += monthHtml + (secondary || !(changeMonth && changeYear) ? \" \" : \"\");\r\n }\r\n\r\n // Year selection\r\n if (!inst.yearshtml) {\r\n inst.yearshtml = \"\";\r\n if (secondary || !changeYear) {\r\n html += \"<span class='ui-datepicker-year'>\" + drawYear + \"</span>\";\r\n } else {\r\n\r\n // determine range of years to display\r\n years = this._get(inst, \"yearRange\").split(\":\");\r\n thisYear = new Date().getFullYear();\r\n determineYear = function (value) {\r\n var year = (value.match(/c[+\\-].*/) ? drawYear + parseInt(value.substring(1), 10) :\r\n (value.match(/[+\\-].*/) ? thisYear + parseInt(value, 10) :\r\n parseInt(value, 10)));\r\n return (isNaN(year) ? thisYear : year);\r\n };\r\n year = determineYear(years[0]);\r\n endYear = Math.max(year, determineYear(years[1] || \"\"));\r\n year = (minDate ? Math.max(year, minDate.getFullYear()) : year);\r\n endYear = (maxDate ? Math.min(endYear, maxDate.getFullYear()) : endYear);\r\n inst.yearshtml += \"<select class='ui-datepicker-year' data-handler='selectYear' data-event='change'>\";\r\n for (; year <= endYear; year++) {\r\n inst.yearshtml += \"<option value='\" + year + \"'\" +\r\n (year === drawYear ? \" selected='selected'\" : \"\") +\r\n \">\" + year + \"</option>\";\r\n }\r\n inst.yearshtml += \"</select>\";\r\n\r\n html += inst.yearshtml;\r\n inst.yearshtml = null;\r\n }\r\n }\r\n\r\n html += this._get(inst, \"yearSuffix\");\r\n if (showMonthAfterYear) {\r\n html += (secondary || !(changeMonth && changeYear) ? \" \" : \"\") + monthHtml;\r\n }\r\n html += \"</div>\"; // Close datepicker_header\r\n return html;\r\n },\r\n\r\n /* Adjust one of the date sub-fields. */\r\n _adjustInstDate: function (inst, offset, period) {\r\n var year = inst.selectedYear + (period === \"Y\" ? offset : 0),\r\n month = inst.selectedMonth + (period === \"M\" ? offset : 0),\r\n day = Math.min(inst.selectedDay, this._getDaysInMonth(year, month)) + (period === \"D\" ? offset : 0),\r\n date = this._restrictMinMax(inst, this._daylightSavingAdjust(new Date(year, month, day)));\r\n\r\n inst.selectedDay = date.getDate();\r\n inst.drawMonth = inst.selectedMonth = date.getMonth();\r\n inst.drawYear = inst.selectedYear = date.getFullYear();\r\n if (period === \"M\" || period === \"Y\") {\r\n this._notifyChange(inst);\r\n }\r\n },\r\n\r\n /* Ensure a date is within any min/max bounds. */\r\n _restrictMinMax: function (inst, date) {\r\n var minDate = this._getMinMaxDate(inst, \"min\"),\r\n maxDate = this._getMinMaxDate(inst, \"max\"),\r\n newDate = (minDate && date < minDate ? minDate : date);\r\n return (maxDate && newDate > maxDate ? maxDate : newDate);\r\n },\r\n\r\n /* Notify change of month/year. */\r\n _notifyChange: function (inst) {\r\n var onChange = this._get(inst, \"onChangeMonthYear\");\r\n if (onChange) {\r\n onChange.apply((inst.input ? inst.input[0] : null),\r\n [inst.selectedYear, inst.selectedMonth + 1, inst]);\r\n }\r\n },\r\n\r\n /* Determine the number of months to show. */\r\n _getNumberOfMonths: function (inst) {\r\n var numMonths = this._get(inst, \"numberOfMonths\");\r\n return (numMonths == null ? [1, 1] : (typeof numMonths === \"number\" ? [1, numMonths] : numMonths));\r\n },\r\n\r\n /* Determine the current maximum date - ensure no time components are set. */\r\n _getMinMaxDate: function (inst, minMax) {\r\n return this._determineDate(inst, this._get(inst, minMax + \"Date\"), null);\r\n },\r\n\r\n /* Find the number of days in a given month. */\r\n _getDaysInMonth: function (year, month) {\r\n return 32 - this._daylightSavingAdjust(new Date(year, month, 32)).getDate();\r\n },\r\n\r\n /* Find the day of the week of the first of a month. */\r\n _getFirstDayOfMonth: function (year, month) {\r\n return new Date(year, month, 1).getDay();\r\n },\r\n\r\n /* Determines if we should allow a \"next/prev\" month display change. */\r\n _canAdjustMonth: function (inst, offset, curYear, curMonth) {\r\n var numMonths = this._getNumberOfMonths(inst),\r\n date = this._daylightSavingAdjust(new Date(curYear,\r\n curMonth + (offset < 0 ? offset : numMonths[0] * numMonths[1]), 1));\r\n\r\n if (offset < 0) {\r\n date.setDate(this._getDaysInMonth(date.getFullYear(), date.getMonth()));\r\n }\r\n return this._isInRange(inst, date);\r\n },\r\n\r\n /* Is the given date in the accepted range? */\r\n _isInRange: function (inst, date) {\r\n var yearSplit, currentYear,\r\n minDate = this._getMinMaxDate(inst, \"min\"),\r\n maxDate = this._getMinMaxDate(inst, \"max\"),\r\n minYear = null,\r\n maxYear = null,\r\n years = this._get(inst, \"yearRange\");\r\n if (years) {\r\n yearSplit = years.split(\":\");\r\n currentYear = new Date().getFullYear();\r\n minYear = parseInt(yearSplit[0], 10);\r\n maxYear = parseInt(yearSplit[1], 10);\r\n if (yearSplit[0].match(/[+\\-].*/)) {\r\n minYear += currentYear;\r\n }\r\n if (yearSplit[1].match(/[+\\-].*/)) {\r\n maxYear += currentYear;\r\n }\r\n }\r\n\r\n return ((!minDate || date.getTime() >= minDate.getTime()) &&\r\n (!maxDate || date.getTime() <= maxDate.getTime()) &&\r\n (!minYear || date.getFullYear() >= minYear) &&\r\n (!maxYear || date.getFullYear() <= maxYear));\r\n },\r\n\r\n /* Provide the configuration settings for formatting/parsing. */\r\n _getFormatConfig: function (inst) {\r\n var shortYearCutoff = this._get(inst, \"shortYearCutoff\");\r\n shortYearCutoff = (typeof shortYearCutoff !== \"string\" ? shortYearCutoff :\r\n new Date().getFullYear() % 100 + parseInt(shortYearCutoff, 10));\r\n return {\r\n shortYearCutoff: shortYearCutoff,\r\n dayNamesShort: this._get(inst, \"dayNamesShort\"), dayNames: this._get(inst, \"dayNames\"),\r\n monthNamesShort: this._get(inst, \"monthNamesShort\"), monthNames: this._get(inst, \"monthNames\")\r\n };\r\n },\r\n\r\n /* Format the given date for display. */\r\n _formatDate: function (inst, day, month, year) {\r\n if (!day) {\r\n inst.currentDay = inst.selectedDay;\r\n inst.currentMonth = inst.selectedMonth;\r\n inst.currentYear = inst.selectedYear;\r\n }\r\n var date = (day ? (typeof day === \"object\" ? day :\r\n this._daylightSavingAdjust(new Date(year, month, day))) :\r\n this._daylightSavingAdjust(new Date(inst.currentYear, inst.currentMonth, inst.currentDay)));\r\n return this.formatDate(this._get(inst, \"dateFormat\"), date, this._getFormatConfig(inst));\r\n }\r\n });\r\n\r\n /*\r\n * Bind hover events for datepicker elements.\r\n * Done via delegate so the binding only occurs once in the lifetime of the parent div.\r\n * Global datepicker_instActive, set by _updateDatepicker allows the handlers to find their way back to the active picker.\r\n */\r\n function datepicker_bindHover(dpDiv) {\r\n var selector = \"button, .ui-datepicker-prev, .ui-datepicker-next, .ui-datepicker-calendar td a\";\r\n return dpDiv.on(\"mouseout\", selector, function () {\r\n $(this).removeClass(\"ui-state-hover\");\r\n if (this.className.indexOf(\"ui-datepicker-prev\") !== -1) {\r\n $(this).removeClass(\"ui-datepicker-prev-hover\");\r\n }\r\n if (this.className.indexOf(\"ui-datepicker-next\") !== -1) {\r\n $(this).removeClass(\"ui-datepicker-next-hover\");\r\n }\r\n })\r\n .on(\"mouseover\", selector, datepicker_handleMouseover);\r\n }\r\n\r\n function datepicker_handleMouseover() {\r\n if (!$.datepicker._isDisabledDatepicker(datepicker_instActive.inline ? datepicker_instActive.dpDiv.parent()[0] : datepicker_instActive.input[0])) {\r\n $(this).parents(\".ui-datepicker-calendar\").find(\"a\").removeClass(\"ui-state-hover\");\r\n $(this).addClass(\"ui-state-hover\");\r\n if (this.className.indexOf(\"ui-datepicker-prev\") !== -1) {\r\n $(this).addClass(\"ui-datepicker-prev-hover\");\r\n }\r\n if (this.className.indexOf(\"ui-datepicker-next\") !== -1) {\r\n $(this).addClass(\"ui-datepicker-next-hover\");\r\n }\r\n }\r\n }\r\n\r\n /* jQuery extend now ignores nulls! */\r\n function datepicker_extendRemove(target, props) {\r\n $.extend(target, props);\r\n for (var name in props) {\r\n if (props[name] == null) {\r\n target[name] = props[name];\r\n }\r\n }\r\n return target;\r\n }\r\n\r\n /* Invoke the datepicker functionality.\r\n @param options string - a command, optionally followed by additional parameters or\r\n Object - settings for attaching new datepicker functionality\r\n @return jQuery object */\r\n $.fn.datepicker = function (options) {\r\n\r\n /* Verify an empty collection wasn't passed - Fixes #6976 */\r\n if (!this.length) {\r\n return this;\r\n }\r\n\r\n /* Initialise the date picker. */\r\n if (!$.datepicker.initialized) {\r\n $(document).on(\"mousedown\", $.datepicker._checkExternalClick);\r\n $.datepicker.initialized = true;\r\n }\r\n\r\n /* Append datepicker main container to body if not exist. */\r\n if ($(\"#\" + $.datepicker._mainDivId).length === 0) {\r\n $(\"body\").append($.datepicker.dpDiv);\r\n }\r\n\r\n var otherArgs = Array.prototype.slice.call(arguments, 1);\r\n if (typeof options === \"string\" && (options === \"isDisabled\" || options === \"getDate\" || options === \"widget\")) {\r\n return $.datepicker[\"_\" + options + \"Datepicker\"].\r\n apply($.datepicker, [this[0]].concat(otherArgs));\r\n }\r\n if (options === \"option\" && arguments.length === 2 && typeof arguments[1] === \"string\") {\r\n return $.datepicker[\"_\" + options + \"Datepicker\"].\r\n apply($.datepicker, [this[0]].concat(otherArgs));\r\n }\r\n return this.each(function () {\r\n typeof options === \"string\" ?\r\n $.datepicker[\"_\" + options + \"Datepicker\"].\r\n apply($.datepicker, [this].concat(otherArgs)) :\r\n $.datepicker._attachDatepicker(this, options);\r\n });\r\n };\r\n\r\n $.datepicker = new Datepicker(); // singleton instance\r\n $.datepicker.initialized = false;\r\n $.datepicker.uuid = new Date().getTime();\r\n $.datepicker.version = \"1.12.1\";\r\n\r\n var widgetsDatepicker = $.datepicker;\r\n\r\n\r\n\r\n\r\n}));","var $ = require('jquery');\r\n\r\nwindow.SitecoreUtilities = {\r\n isPageEditor: function () {\r\n if (typeof Sitecore == \"undefined\") {\r\n return false;\r\n }\r\n if (typeof Sitecore.PageModes == \"undefined\" || Sitecore.PageModes == null) {\r\n return false;\r\n }\r\n return Sitecore.PageModes.PageEditor != null;\r\n }\r\n}","var $ = require('jquery');\r\n\r\nwindow.SlickUtilities = {\r\n Initialize: function (obj, settings) {\r\n var isPageEditor = window.SitecoreUtilities.isPageEditor;\r\n\r\n if (!isPageEditor()) {\r\n $(obj).slick(settings);\r\n }\r\n }\r\n}","var $ = require('jquery');\r\n\r\n$(function () {\r\n var _ajax = $.ajax;\r\n\r\n $.extend({ \r\n ajax: function (o) {\r\n o.url = o.url + (o.url.indexOf('?') === -1 ? '?' : '&') + 'sc_mode=normal';\r\n return _ajax.call(this,o); \r\n }\r\n }); \r\n});","var $ = require('jquery');\r\n\r\n$(function () {\r\n $(document).ready(function () {\r\n var authenticationWrapper = $('.authentication-status');\r\n var contextId = authenticationWrapper.data('contextId');\r\n var contextLang = authenticationWrapper.data('contextLang');\r\n \r\n if (authenticationWrapper.length && contextId != 'undefined' && contextLang != 'undefined' && !window.SitecoreUtilities.isPageEditor()) {\r\n $.ajax({\r\n type: 'GET',\r\n url: '/api/sitecore/ProfileManagement/loginstatus',\r\n data: {\r\n id: contextId,\r\n lang: contextLang\r\n }\r\n })\r\n .done(function (responseHtml) {\r\n if (responseHtml != 'undefined' && responseHtml != '') { \r\n authenticationWrapper.replaceWith(responseHtml);\r\n } else {\r\n authenticationWrapper.hide();\r\n }\r\n });\r\n }\r\n });\r\n});\r\n","var $ = require('jquery');\r\n\r\n$(function () {\r\n Number.isInteger = Number.isInteger ||\r\n function(value) {\r\n return typeof value === \"number\" &&\r\n isFinite(value) &&\r\n Math.floor(value) === value;\r\n };\r\n});","var jQuery = require('jquery');\r\n/*\r\n _ _ _ _\r\n ___| (_) ___| | __ (_)___\r\n/ __| | |/ __| |/ / | / __|\r\n\\__ \\ | | (__| < _ | \\__ \\\r\n|___/_|_|\\___|_|\\_(_)/ |___/\r\n |__/\r\n\r\n Version: 1.6.0\r\n Author: Ken Wheeler\r\n Website: http://kenwheeler.github.io\r\n Docs: http://kenwheeler.github.io/slick\r\n Repo: http://github.com/kenwheeler/slick\r\n Issues: http://github.com/kenwheeler/slick/issues\r\n\r\n */\r\n/* global window, document, define, jQuery, setInterval, clearInterval */\r\n(function(factory) {\r\n 'use strict';\r\n if (typeof define === 'function' && define.amd) {\r\n define(['jquery'], factory);\r\n } else if (typeof exports !== 'undefined') {\r\n module.exports = factory(require('jquery'));\r\n } else {\r\n factory(jQuery);\r\n }\r\n\r\n}(function($) {\r\n 'use strict';\r\n var Slick = window.Slick || {};\r\n\r\n Slick = (function() {\r\n\r\n var instanceUid = 0;\r\n\r\n function Slick(element, settings) {\r\n\r\n var _ = this, dataSettings;\r\n\r\n _.defaults = {\r\n accessibility: true,\r\n adaptiveHeight: false,\r\n appendArrows: $(element),\r\n appendDots: $(element),\r\n arrows: true,\r\n asNavFor: null,\r\n prevArrow: '<button type=\"button\" data-role=\"none\" class=\"slick-prev\" aria-label=\"Previous\" tabindex=\"0\" role=\"button\">Previous</button>',\r\n nextArrow: '<button type=\"button\" data-role=\"none\" class=\"slick-next\" aria-label=\"Next\" tabindex=\"0\" role=\"button\">Next</button>',\r\n autoplay: false,\r\n autoplaySpeed: 3000,\r\n centerMode: false,\r\n centerPadding: '50px',\r\n cssEase: 'ease',\r\n customPaging: function(slider, i) {\r\n return $('<button type=\"button\" data-role=\"none\" role=\"button\" tabindex=\"0\" />').text(i + 1);\r\n },\r\n dots: false,\r\n dotsClass: 'slick-dots',\r\n draggable: true,\r\n easing: 'linear',\r\n edgeFriction: 0.35,\r\n fade: false,\r\n focusOnSelect: false,\r\n infinite: true,\r\n initialSlide: 0,\r\n lazyLoad: 'ondemand',\r\n mobileFirst: false,\r\n pauseOnHover: true,\r\n pauseOnFocus: true,\r\n pauseOnDotsHover: false,\r\n respondTo: 'window',\r\n responsive: null,\r\n rows: 1,\r\n rtl: false,\r\n slide: '',\r\n slidesPerRow: 1,\r\n slidesToShow: 1,\r\n slidesToScroll: 1,\r\n speed: 500,\r\n swipe: true,\r\n swipeToSlide: false,\r\n touchMove: true,\r\n touchThreshold: 5,\r\n useCSS: true,\r\n useTransform: true,\r\n variableWidth: false,\r\n vertical: false,\r\n verticalSwiping: false,\r\n waitForAnimate: true,\r\n zIndex: 1000\r\n };\r\n\r\n _.initials = {\r\n animating: false,\r\n dragging: false,\r\n autoPlayTimer: null,\r\n currentDirection: 0,\r\n currentLeft: null,\r\n currentSlide: 0,\r\n direction: 1,\r\n $dots: null,\r\n listWidth: null,\r\n listHeight: null,\r\n loadIndex: 0,\r\n $nextArrow: null,\r\n $prevArrow: null,\r\n slideCount: null,\r\n slideWidth: null,\r\n $slideTrack: null,\r\n $slides: null,\r\n sliding: false,\r\n slideOffset: 0,\r\n swipeLeft: null,\r\n $list: null,\r\n touchObject: {},\r\n transformsEnabled: false,\r\n unslicked: false\r\n };\r\n\r\n $.extend(_, _.initials);\r\n\r\n _.activeBreakpoint = null;\r\n _.animType = null;\r\n _.animProp = null;\r\n _.breakpoints = [];\r\n _.breakpointSettings = [];\r\n _.cssTransitions = false;\r\n _.focussed = false;\r\n _.interrupted = false;\r\n _.hidden = 'hidden';\r\n _.paused = true;\r\n _.positionProp = null;\r\n _.respondTo = null;\r\n _.rowCount = 1;\r\n _.shouldClick = true;\r\n _.$slider = $(element);\r\n _.$slidesCache = null;\r\n _.transformType = null;\r\n _.transitionType = null;\r\n _.visibilityChange = 'visibilitychange';\r\n _.windowWidth = 0;\r\n _.windowTimer = null;\r\n\r\n dataSettings = $(element).data('slick') || {};\r\n\r\n _.options = $.extend({}, _.defaults, settings, dataSettings);\r\n\r\n _.currentSlide = _.options.initialSlide;\r\n\r\n _.originalSettings = _.options;\r\n\r\n if (typeof document.mozHidden !== 'undefined') {\r\n _.hidden = 'mozHidden';\r\n _.visibilityChange = 'mozvisibilitychange';\r\n } else if (typeof document.webkitHidden !== 'undefined') {\r\n _.hidden = 'webkitHidden';\r\n _.visibilityChange = 'webkitvisibilitychange';\r\n }\r\n\r\n _.autoPlay = $.proxy(_.autoPlay, _);\r\n _.autoPlayClear = $.proxy(_.autoPlayClear, _);\r\n _.autoPlayIterator = $.proxy(_.autoPlayIterator, _);\r\n _.changeSlide = $.proxy(_.changeSlide, _);\r\n _.clickHandler = $.proxy(_.clickHandler, _);\r\n _.selectHandler = $.proxy(_.selectHandler, _);\r\n _.setPosition = $.proxy(_.setPosition, _);\r\n _.swipeHandler = $.proxy(_.swipeHandler, _);\r\n _.dragHandler = $.proxy(_.dragHandler, _);\r\n _.keyHandler = $.proxy(_.keyHandler, _);\r\n\r\n _.instanceUid = instanceUid++;\r\n\r\n // A simple way to check for HTML strings\r\n // Strict HTML recognition (must start with <)\r\n // Extracted from jQuery v1.11 source\r\n _.htmlExpr = /^(?:\\s*(<[\\w\\W]+>)[^>]*)$/;\r\n\r\n\r\n _.registerBreakpoints();\r\n _.init(true);\r\n\r\n }\r\n\r\n return Slick;\r\n\r\n }());\r\n\r\n Slick.prototype.activateADA = function() {\r\n var _ = this;\r\n\r\n _.$slideTrack.find('.slick-active').attr({\r\n 'aria-hidden': 'false'\r\n }).find('a, input, button, select').attr({\r\n 'tabindex': '0'\r\n });\r\n\r\n };\r\n\r\n Slick.prototype.addSlide = Slick.prototype.slickAdd = function(markup, index, addBefore) {\r\n\r\n var _ = this;\r\n\r\n if (typeof(index) === 'boolean') {\r\n addBefore = index;\r\n index = null;\r\n } else if (index < 0 || (index >= _.slideCount)) {\r\n return false;\r\n }\r\n\r\n _.unload();\r\n\r\n if (typeof(index) === 'number') {\r\n if (index === 0 && _.$slides.length === 0) {\r\n $(markup).appendTo(_.$slideTrack);\r\n } else if (addBefore) {\r\n $(markup).insertBefore(_.$slides.eq(index));\r\n } else {\r\n $(markup).insertAfter(_.$slides.eq(index));\r\n }\r\n } else {\r\n if (addBefore === true) {\r\n $(markup).prependTo(_.$slideTrack);\r\n } else {\r\n $(markup).appendTo(_.$slideTrack);\r\n }\r\n }\r\n\r\n _.$slides = _.$slideTrack.children(this.options.slide);\r\n\r\n _.$slideTrack.children(this.options.slide).detach();\r\n\r\n _.$slideTrack.append(_.$slides);\r\n\r\n _.$slides.each(function(index, element) {\r\n $(element).attr('data-slick-index', index);\r\n });\r\n\r\n _.$slidesCache = _.$slides;\r\n\r\n _.reinit();\r\n\r\n };\r\n\r\n Slick.prototype.animateHeight = function() {\r\n var _ = this;\r\n if (_.options.slidesToShow === 1 && _.options.adaptiveHeight === true && _.options.vertical === false) {\r\n var targetHeight = _.$slides.eq(_.currentSlide).outerHeight(true);\r\n _.$list.animate({\r\n height: targetHeight\r\n }, _.options.speed);\r\n }\r\n };\r\n\r\n Slick.prototype.animateSlide = function(targetLeft, callback) {\r\n\r\n var animProps = {},\r\n _ = this;\r\n\r\n _.animateHeight();\r\n\r\n if (_.options.rtl === true && _.options.vertical === false) {\r\n targetLeft = -targetLeft;\r\n }\r\n if (_.transformsEnabled === false) {\r\n if (_.options.vertical === false) {\r\n _.$slideTrack.animate({\r\n left: targetLeft\r\n }, _.options.speed, _.options.easing, callback);\r\n } else {\r\n _.$slideTrack.animate({\r\n top: targetLeft\r\n }, _.options.speed, _.options.easing, callback);\r\n }\r\n\r\n } else {\r\n\r\n if (_.cssTransitions === false) {\r\n if (_.options.rtl === true) {\r\n _.currentLeft = -(_.currentLeft);\r\n }\r\n $({\r\n animStart: _.currentLeft\r\n }).animate({\r\n animStart: targetLeft\r\n }, {\r\n duration: _.options.speed,\r\n easing: _.options.easing,\r\n step: function(now) {\r\n now = Math.ceil(now);\r\n if (_.options.vertical === false) {\r\n animProps[_.animType] = 'translate(' +\r\n now + 'px, 0px)';\r\n _.$slideTrack.css(animProps);\r\n } else {\r\n animProps[_.animType] = 'translate(0px,' +\r\n now + 'px)';\r\n _.$slideTrack.css(animProps);\r\n }\r\n },\r\n complete: function() {\r\n if (callback) {\r\n callback.call();\r\n }\r\n }\r\n });\r\n\r\n } else {\r\n\r\n _.applyTransition();\r\n targetLeft = Math.ceil(targetLeft);\r\n\r\n if (_.options.vertical === false) {\r\n animProps[_.animType] = 'translate3d(' + targetLeft + 'px, 0px, 0px)';\r\n } else {\r\n animProps[_.animType] = 'translate3d(0px,' + targetLeft + 'px, 0px)';\r\n }\r\n _.$slideTrack.css(animProps);\r\n\r\n if (callback) {\r\n setTimeout(function() {\r\n\r\n _.disableTransition();\r\n\r\n callback.call();\r\n }, _.options.speed);\r\n }\r\n\r\n }\r\n\r\n }\r\n\r\n };\r\n\r\n Slick.prototype.getNavTarget = function() {\r\n\r\n var _ = this,\r\n asNavFor = _.options.asNavFor;\r\n\r\n if ( asNavFor && asNavFor !== null ) {\r\n asNavFor = $(asNavFor).not(_.$slider);\r\n }\r\n\r\n return asNavFor;\r\n\r\n };\r\n\r\n Slick.prototype.asNavFor = function(index) {\r\n\r\n var _ = this,\r\n asNavFor = _.getNavTarget();\r\n\r\n if ( asNavFor !== null && typeof asNavFor === 'object' ) {\r\n asNavFor.each(function() {\r\n var target = $(this).slick('getSlick');\r\n if(!target.unslicked) {\r\n target.slideHandler(index, true);\r\n }\r\n });\r\n }\r\n\r\n };\r\n\r\n Slick.prototype.applyTransition = function(slide) {\r\n\r\n var _ = this,\r\n transition = {};\r\n\r\n if (_.options.fade === false) {\r\n transition[_.transitionType] = _.transformType + ' ' + _.options.speed + 'ms ' + _.options.cssEase;\r\n } else {\r\n transition[_.transitionType] = 'opacity ' + _.options.speed + 'ms ' + _.options.cssEase;\r\n }\r\n\r\n if (_.options.fade === false) {\r\n _.$slideTrack.css(transition);\r\n } else {\r\n _.$slides.eq(slide).css(transition);\r\n }\r\n\r\n };\r\n\r\n Slick.prototype.autoPlay = function() {\r\n\r\n var _ = this;\r\n\r\n _.autoPlayClear();\r\n\r\n if ( _.slideCount > _.options.slidesToShow ) {\r\n _.autoPlayTimer = setInterval( _.autoPlayIterator, _.options.autoplaySpeed );\r\n }\r\n\r\n };\r\n\r\n Slick.prototype.autoPlayClear = function() {\r\n\r\n var _ = this;\r\n\r\n if (_.autoPlayTimer) {\r\n clearInterval(_.autoPlayTimer);\r\n }\r\n\r\n };\r\n\r\n Slick.prototype.autoPlayIterator = function() {\r\n\r\n var _ = this,\r\n slideTo = _.currentSlide + _.options.slidesToScroll;\r\n\r\n if ( !_.paused && !_.interrupted && !_.focussed ) {\r\n\r\n if ( _.options.infinite === false ) {\r\n\r\n if ( _.direction === 1 && ( _.currentSlide + 1 ) === ( _.slideCount - 1 )) {\r\n _.direction = 0;\r\n }\r\n\r\n else if ( _.direction === 0 ) {\r\n\r\n slideTo = _.currentSlide - _.options.slidesToScroll;\r\n\r\n if ( _.currentSlide - 1 === 0 ) {\r\n _.direction = 1;\r\n }\r\n\r\n }\r\n\r\n }\r\n\r\n _.slideHandler( slideTo );\r\n\r\n }\r\n\r\n };\r\n\r\n Slick.prototype.buildArrows = function() {\r\n\r\n var _ = this;\r\n\r\n if (_.options.arrows === true ) {\r\n\r\n _.$prevArrow = $(_.options.prevArrow).addClass('slick-arrow');\r\n _.$nextArrow = $(_.options.nextArrow).addClass('slick-arrow');\r\n\r\n if( _.slideCount > _.options.slidesToShow ) {\r\n\r\n _.$prevArrow.removeClass('slick-hidden').removeAttr('aria-hidden tabindex');\r\n _.$nextArrow.removeClass('slick-hidden').removeAttr('aria-hidden tabindex');\r\n\r\n if (_.htmlExpr.test(_.options.prevArrow)) {\r\n _.$prevArrow.prependTo(_.options.appendArrows);\r\n }\r\n\r\n if (_.htmlExpr.test(_.options.nextArrow)) {\r\n _.$nextArrow.appendTo(_.options.appendArrows);\r\n }\r\n\r\n if (_.options.infinite !== true) {\r\n _.$prevArrow\r\n .addClass('slick-disabled')\r\n .attr('aria-disabled', 'true');\r\n }\r\n\r\n } else {\r\n\r\n _.$prevArrow.add( _.$nextArrow )\r\n\r\n .addClass('slick-hidden')\r\n .attr({\r\n 'aria-disabled': 'true',\r\n 'tabindex': '-1'\r\n });\r\n\r\n }\r\n\r\n }\r\n\r\n };\r\n\r\n Slick.prototype.buildDots = function() {\r\n\r\n var _ = this,\r\n i, dot;\r\n\r\n if (_.options.dots === true && _.slideCount > _.options.slidesToShow) {\r\n\r\n _.$slider.addClass('slick-dotted');\r\n\r\n dot = $('<ul />').addClass(_.options.dotsClass);\r\n\r\n for (i = 0; i <= _.getDotCount(); i += 1) {\r\n dot.append($('<li />').append(_.options.customPaging.call(this, _, i)));\r\n }\r\n\r\n _.$dots = dot.appendTo(_.options.appendDots);\r\n\r\n _.$dots.find('li').first().addClass('slick-active').attr('aria-hidden', 'false');\r\n\r\n }\r\n\r\n };\r\n\r\n Slick.prototype.buildOut = function() {\r\n\r\n var _ = this;\r\n\r\n _.$slides =\r\n _.$slider\r\n .children( _.options.slide + ':not(.slick-cloned)')\r\n .addClass('slick-slide');\r\n\r\n _.slideCount = _.$slides.length;\r\n\r\n _.$slides.each(function(index, element) {\r\n $(element)\r\n .attr('data-slick-index', index)\r\n .data('originalStyling', $(element).attr('style') || '');\r\n });\r\n\r\n _.$slider.addClass('slick-slider');\r\n\r\n _.$slideTrack = (_.slideCount === 0) ?\r\n $('<div class=\"slick-track\"/>').appendTo(_.$slider) :\r\n _.$slides.wrapAll('<div class=\"slick-track\"/>').parent();\r\n\r\n _.$list = _.$slideTrack.wrap(\r\n '<div aria-live=\"polite\" class=\"slick-list\"/>').parent();\r\n _.$slideTrack.css('opacity', 0);\r\n\r\n if (_.options.centerMode === true || _.options.swipeToSlide === true) {\r\n _.options.slidesToScroll = 1;\r\n }\r\n\r\n $('img[data-lazy]', _.$slider).not('[src]').addClass('slick-loading');\r\n\r\n _.setupInfinite();\r\n\r\n _.buildArrows();\r\n\r\n _.buildDots();\r\n\r\n _.updateDots();\r\n\r\n\r\n _.setSlideClasses(typeof _.currentSlide === 'number' ? _.currentSlide : 0);\r\n\r\n if (_.options.draggable === true) {\r\n _.$list.addClass('draggable');\r\n }\r\n\r\n };\r\n\r\n Slick.prototype.buildRows = function() {\r\n\r\n var _ = this, a, b, c, newSlides, numOfSlides, originalSlides,slidesPerSection;\r\n\r\n newSlides = document.createDocumentFragment();\r\n originalSlides = _.$slider.children();\r\n\r\n if(_.options.rows > 1) {\r\n\r\n slidesPerSection = _.options.slidesPerRow * _.options.rows;\r\n numOfSlides = Math.ceil(\r\n originalSlides.length / slidesPerSection\r\n );\r\n\r\n for(a = 0; a < numOfSlides; a++){\r\n var slide = document.createElement('div');\r\n for(b = 0; b < _.options.rows; b++) {\r\n var row = document.createElement('div');\r\n for(c = 0; c < _.options.slidesPerRow; c++) {\r\n var target = (a * slidesPerSection + ((b * _.options.slidesPerRow) + c));\r\n if (originalSlides.get(target)) {\r\n row.appendChild(originalSlides.get(target));\r\n }\r\n }\r\n slide.appendChild(row);\r\n }\r\n newSlides.appendChild(slide);\r\n }\r\n\r\n _.$slider.empty().append(newSlides);\r\n _.$slider.children().children().children()\r\n .css({\r\n 'width':(100 / _.options.slidesPerRow) + '%',\r\n 'display': 'inline-block'\r\n });\r\n\r\n }\r\n\r\n };\r\n\r\n Slick.prototype.checkResponsive = function(initial, forceUpdate) {\r\n\r\n var _ = this,\r\n breakpoint, targetBreakpoint, respondToWidth, triggerBreakpoint = false;\r\n var sliderWidth = _.$slider.width();\r\n var windowWidth = window.innerWidth || $(window).width();\r\n\r\n if (_.respondTo === 'window') {\r\n respondToWidth = windowWidth;\r\n } else if (_.respondTo === 'slider') {\r\n respondToWidth = sliderWidth;\r\n } else if (_.respondTo === 'min') {\r\n respondToWidth = Math.min(windowWidth, sliderWidth);\r\n }\r\n\r\n if ( _.options.responsive &&\r\n _.options.responsive.length &&\r\n _.options.responsive !== null) {\r\n\r\n targetBreakpoint = null;\r\n\r\n for (breakpoint in _.breakpoints) {\r\n if (_.breakpoints.hasOwnProperty(breakpoint)) {\r\n if (_.originalSettings.mobileFirst === false) {\r\n if (respondToWidth < _.breakpoints[breakpoint]) {\r\n targetBreakpoint = _.breakpoints[breakpoint];\r\n }\r\n } else {\r\n if (respondToWidth > _.breakpoints[breakpoint]) {\r\n targetBreakpoint = _.breakpoints[breakpoint];\r\n }\r\n }\r\n }\r\n }\r\n\r\n if (targetBreakpoint !== null) {\r\n if (_.activeBreakpoint !== null) {\r\n if (targetBreakpoint !== _.activeBreakpoint || forceUpdate) {\r\n _.activeBreakpoint =\r\n targetBreakpoint;\r\n if (_.breakpointSettings[targetBreakpoint] === 'unslick') {\r\n _.unslick(targetBreakpoint);\r\n } else {\r\n _.options = $.extend({}, _.originalSettings,\r\n _.breakpointSettings[\r\n targetBreakpoint]);\r\n if (initial === true) {\r\n _.currentSlide = _.options.initialSlide;\r\n }\r\n _.refresh(initial);\r\n }\r\n triggerBreakpoint = targetBreakpoint;\r\n }\r\n } else {\r\n _.activeBreakpoint = targetBreakpoint;\r\n if (_.breakpointSettings[targetBreakpoint] === 'unslick') {\r\n _.unslick(targetBreakpoint);\r\n } else {\r\n _.options = $.extend({}, _.originalSettings,\r\n _.breakpointSettings[\r\n targetBreakpoint]);\r\n if (initial === true) {\r\n _.currentSlide = _.options.initialSlide;\r\n }\r\n _.refresh(initial);\r\n }\r\n triggerBreakpoint = targetBreakpoint;\r\n }\r\n } else {\r\n if (_.activeBreakpoint !== null) {\r\n _.activeBreakpoint = null;\r\n _.options = _.originalSettings;\r\n if (initial === true) {\r\n _.currentSlide = _.options.initialSlide;\r\n }\r\n _.refresh(initial);\r\n triggerBreakpoint = targetBreakpoint;\r\n }\r\n }\r\n\r\n // only trigger breakpoints during an actual break. not on initialize.\r\n if( !initial && triggerBreakpoint !== false ) {\r\n _.$slider.trigger('breakpoint', [_, triggerBreakpoint]);\r\n }\r\n }\r\n\r\n };\r\n\r\n Slick.prototype.changeSlide = function(event, dontAnimate) {\r\n\r\n var _ = this,\r\n $target = $(event.currentTarget),\r\n indexOffset, slideOffset, unevenOffset;\r\n\r\n // If target is a link, prevent default action.\r\n if($target.is('a')) {\r\n event.preventDefault();\r\n }\r\n\r\n // If target is not the <li> element (ie: a child), find the <li>.\r\n if(!$target.is('li')) {\r\n $target = $target.closest('li');\r\n }\r\n\r\n unevenOffset = (_.slideCount % _.options.slidesToScroll !== 0);\r\n indexOffset = unevenOffset ? 0 : (_.slideCount - _.currentSlide) % _.options.slidesToScroll;\r\n\r\n switch (event.data.message) {\r\n\r\n case 'previous':\r\n slideOffset = indexOffset === 0 ? _.options.slidesToScroll : _.options.slidesToShow - indexOffset;\r\n if (_.slideCount > _.options.slidesToShow) {\r\n _.slideHandler(_.currentSlide - slideOffset, false, dontAnimate);\r\n }\r\n break;\r\n\r\n case 'next':\r\n slideOffset = indexOffset === 0 ? _.options.slidesToScroll : indexOffset;\r\n if (_.slideCount > _.options.slidesToShow) {\r\n _.slideHandler(_.currentSlide + slideOffset, false, dontAnimate);\r\n }\r\n break;\r\n\r\n case 'index':\r\n var index = event.data.index === 0 ? 0 :\r\n event.data.index || $target.index() * _.options.slidesToScroll;\r\n\r\n _.slideHandler(_.checkNavigable(index), false, dontAnimate);\r\n $target.children().trigger('focus');\r\n break;\r\n\r\n default:\r\n return;\r\n }\r\n\r\n };\r\n\r\n Slick.prototype.checkNavigable = function(index) {\r\n\r\n var _ = this,\r\n navigables, prevNavigable;\r\n\r\n navigables = _.getNavigableIndexes();\r\n prevNavigable = 0;\r\n if (index > navigables[navigables.length - 1]) {\r\n index = navigables[navigables.length - 1];\r\n } else {\r\n for (var n in navigables) {\r\n if (index < navigables[n]) {\r\n index = prevNavigable;\r\n break;\r\n }\r\n prevNavigable = navigables[n];\r\n }\r\n }\r\n\r\n return index;\r\n };\r\n\r\n Slick.prototype.cleanUpEvents = function() {\r\n\r\n var _ = this;\r\n\r\n if (_.options.dots && _.$dots !== null) {\r\n\r\n $('li', _.$dots)\r\n .off('click.slick', _.changeSlide)\r\n .off('mouseenter.slick', $.proxy(_.interrupt, _, true))\r\n .off('mouseleave.slick', $.proxy(_.interrupt, _, false));\r\n\r\n }\r\n\r\n _.$slider.off('focus.slick blur.slick');\r\n\r\n if (_.options.arrows === true && _.slideCount > _.options.slidesToShow) {\r\n _.$prevArrow && _.$prevArrow.off('click.slick', _.changeSlide);\r\n _.$nextArrow && _.$nextArrow.off('click.slick', _.changeSlide);\r\n }\r\n\r\n _.$list.off('touchstart.slick mousedown.slick', _.swipeHandler);\r\n _.$list.off('touchmove.slick mousemove.slick', _.swipeHandler);\r\n _.$list.off('touchend.slick mouseup.slick', _.swipeHandler);\r\n _.$list.off('touchcancel.slick mouseleave.slick', _.swipeHandler);\r\n\r\n _.$list.off('click.slick', _.clickHandler);\r\n\r\n $(document).off(_.visibilityChange, _.visibility);\r\n\r\n _.cleanUpSlideEvents();\r\n\r\n if (_.options.accessibility === true) {\r\n _.$list.off('keydown.slick', _.keyHandler);\r\n }\r\n\r\n if (_.options.focusOnSelect === true) {\r\n $(_.$slideTrack).children().off('click.slick', _.selectHandler);\r\n }\r\n\r\n $(window).off('orientationchange.slick.slick-' + _.instanceUid, _.orientationChange);\r\n\r\n $(window).off('resize.slick.slick-' + _.instanceUid, _.resize);\r\n\r\n $('[draggable!=true]', _.$slideTrack).off('dragstart', _.preventDefault);\r\n\r\n $(window).off('load.slick.slick-' + _.instanceUid, _.setPosition);\r\n $(document).off('ready.slick.slick-' + _.instanceUid, _.setPosition);\r\n\r\n };\r\n\r\n Slick.prototype.cleanUpSlideEvents = function() {\r\n\r\n var _ = this;\r\n\r\n _.$list.off('mouseenter.slick', $.proxy(_.interrupt, _, true));\r\n _.$list.off('mouseleave.slick', $.proxy(_.interrupt, _, false));\r\n\r\n };\r\n\r\n Slick.prototype.cleanUpRows = function() {\r\n\r\n var _ = this, originalSlides;\r\n\r\n if(_.options.rows > 1) {\r\n originalSlides = _.$slides.children().children();\r\n originalSlides.removeAttr('style');\r\n _.$slider.empty().append(originalSlides);\r\n }\r\n\r\n };\r\n\r\n Slick.prototype.clickHandler = function(event) {\r\n\r\n var _ = this;\r\n\r\n if (_.shouldClick === false) {\r\n event.stopImmediatePropagation();\r\n event.stopPropagation();\r\n event.preventDefault();\r\n }\r\n\r\n };\r\n\r\n Slick.prototype.destroy = function(refresh) {\r\n\r\n var _ = this;\r\n\r\n _.autoPlayClear();\r\n\r\n _.touchObject = {};\r\n\r\n _.cleanUpEvents();\r\n\r\n $('.slick-cloned', _.$slider).detach();\r\n\r\n if (_.$dots) {\r\n _.$dots.remove();\r\n }\r\n\r\n\r\n if ( _.$prevArrow && _.$prevArrow.length ) {\r\n\r\n _.$prevArrow\r\n .removeClass('slick-disabled slick-arrow slick-hidden')\r\n .removeAttr('aria-hidden aria-disabled tabindex')\r\n .css('display','');\r\n\r\n if ( _.htmlExpr.test( _.options.prevArrow )) {\r\n _.$prevArrow.remove();\r\n }\r\n }\r\n\r\n if ( _.$nextArrow && _.$nextArrow.length ) {\r\n\r\n _.$nextArrow\r\n .removeClass('slick-disabled slick-arrow slick-hidden')\r\n .removeAttr('aria-hidden aria-disabled tabindex')\r\n .css('display','');\r\n\r\n if ( _.htmlExpr.test( _.options.nextArrow )) {\r\n _.$nextArrow.remove();\r\n }\r\n\r\n }\r\n\r\n\r\n if (_.$slides) {\r\n\r\n _.$slides\r\n .removeClass('slick-slide slick-active slick-center slick-visible slick-current')\r\n .removeAttr('aria-hidden')\r\n .removeAttr('data-slick-index')\r\n .each(function(){\r\n $(this).attr('style', $(this).data('originalStyling'));\r\n });\r\n\r\n _.$slideTrack.children(this.options.slide).detach();\r\n\r\n _.$slideTrack.detach();\r\n\r\n _.$list.detach();\r\n\r\n _.$slider.append(_.$slides);\r\n }\r\n\r\n _.cleanUpRows();\r\n\r\n _.$slider.removeClass('slick-slider');\r\n _.$slider.removeClass('slick-initialized');\r\n _.$slider.removeClass('slick-dotted');\r\n\r\n _.unslicked = true;\r\n\r\n if(!refresh) {\r\n _.$slider.trigger('destroy', [_]);\r\n }\r\n\r\n };\r\n\r\n Slick.prototype.disableTransition = function(slide) {\r\n\r\n var _ = this,\r\n transition = {};\r\n\r\n transition[_.transitionType] = '';\r\n\r\n if (_.options.fade === false) {\r\n _.$slideTrack.css(transition);\r\n } else {\r\n _.$slides.eq(slide).css(transition);\r\n }\r\n\r\n };\r\n\r\n Slick.prototype.fadeSlide = function(slideIndex, callback) {\r\n\r\n var _ = this;\r\n\r\n if (_.cssTransitions === false) {\r\n\r\n _.$slides.eq(slideIndex).css({\r\n zIndex: _.options.zIndex\r\n });\r\n\r\n _.$slides.eq(slideIndex).animate({\r\n opacity: 1\r\n }, _.options.speed, _.options.easing, callback);\r\n\r\n } else {\r\n\r\n _.applyTransition(slideIndex);\r\n\r\n _.$slides.eq(slideIndex).css({\r\n opacity: 1,\r\n zIndex: _.options.zIndex\r\n });\r\n\r\n if (callback) {\r\n setTimeout(function() {\r\n\r\n _.disableTransition(slideIndex);\r\n\r\n callback.call();\r\n }, _.options.speed);\r\n }\r\n\r\n }\r\n\r\n };\r\n\r\n Slick.prototype.fadeSlideOut = function(slideIndex) {\r\n\r\n var _ = this;\r\n\r\n if (_.cssTransitions === false) {\r\n\r\n _.$slides.eq(slideIndex).animate({\r\n opacity: 0,\r\n zIndex: _.options.zIndex - 2\r\n }, _.options.speed, _.options.easing);\r\n\r\n } else {\r\n\r\n _.applyTransition(slideIndex);\r\n\r\n _.$slides.eq(slideIndex).css({\r\n opacity: 0,\r\n zIndex: _.options.zIndex - 2\r\n });\r\n\r\n }\r\n\r\n };\r\n\r\n Slick.prototype.filterSlides = Slick.prototype.slickFilter = function(filter) {\r\n\r\n var _ = this;\r\n\r\n if (filter !== null) {\r\n\r\n _.$slidesCache = _.$slides;\r\n\r\n _.unload();\r\n\r\n _.$slideTrack.children(this.options.slide).detach();\r\n\r\n _.$slidesCache.filter(filter).appendTo(_.$slideTrack);\r\n\r\n _.reinit();\r\n\r\n }\r\n\r\n };\r\n\r\n Slick.prototype.focusHandler = function() {\r\n\r\n var _ = this;\r\n\r\n _.$slider\r\n .off('focus.slick blur.slick')\r\n .on('focus.slick blur.slick',\r\n '*:not(.slick-arrow)', function(event) {\r\n\r\n event.stopImmediatePropagation();\r\n var $sf = $(this);\r\n\r\n setTimeout(function() {\r\n\r\n if( _.options.pauseOnFocus ) {\r\n _.focussed = $sf.is(':focus');\r\n _.autoPlay();\r\n }\r\n\r\n }, 0);\r\n\r\n });\r\n };\r\n\r\n Slick.prototype.getCurrent = Slick.prototype.slickCurrentSlide = function() {\r\n\r\n var _ = this;\r\n return _.currentSlide;\r\n\r\n };\r\n\r\n Slick.prototype.getDotCount = function() {\r\n\r\n var _ = this;\r\n\r\n var breakPoint = 0;\r\n var counter = 0;\r\n var pagerQty = 0;\r\n\r\n if (_.options.infinite === true) {\r\n while (breakPoint < _.slideCount) {\r\n ++pagerQty;\r\n breakPoint = counter + _.options.slidesToScroll;\r\n counter += _.options.slidesToScroll <= _.options.slidesToShow ? _.options.slidesToScroll : _.options.slidesToShow;\r\n }\r\n } else if (_.options.centerMode === true) {\r\n pagerQty = _.slideCount;\r\n } else if(!_.options.asNavFor) {\r\n pagerQty = 1 + Math.ceil((_.slideCount - _.options.slidesToShow) / _.options.slidesToScroll);\r\n }else {\r\n while (breakPoint < _.slideCount) {\r\n ++pagerQty;\r\n breakPoint = counter + _.options.slidesToScroll;\r\n counter += _.options.slidesToScroll <= _.options.slidesToShow ? _.options.slidesToScroll : _.options.slidesToShow;\r\n }\r\n }\r\n\r\n return pagerQty - 1;\r\n\r\n };\r\n\r\n Slick.prototype.getLeft = function(slideIndex) {\r\n\r\n var _ = this,\r\n targetLeft,\r\n verticalHeight,\r\n verticalOffset = 0,\r\n targetSlide;\r\n\r\n _.slideOffset = 0;\r\n verticalHeight = _.$slides.first().outerHeight(true);\r\n\r\n if (_.options.infinite === true) {\r\n if (_.slideCount > _.options.slidesToShow) {\r\n _.slideOffset = (_.slideWidth * _.options.slidesToShow) * -1;\r\n verticalOffset = (verticalHeight * _.options.slidesToShow) * -1;\r\n }\r\n if (_.slideCount % _.options.slidesToScroll !== 0) {\r\n if (slideIndex + _.options.slidesToScroll > _.slideCount && _.slideCount > _.options.slidesToShow) {\r\n if (slideIndex > _.slideCount) {\r\n _.slideOffset = ((_.options.slidesToShow - (slideIndex - _.slideCount)) * _.slideWidth) * -1;\r\n verticalOffset = ((_.options.slidesToShow - (slideIndex - _.slideCount)) * verticalHeight) * -1;\r\n } else {\r\n _.slideOffset = ((_.slideCount % _.options.slidesToScroll) * _.slideWidth) * -1;\r\n verticalOffset = ((_.slideCount % _.options.slidesToScroll) * verticalHeight) * -1;\r\n }\r\n }\r\n }\r\n } else {\r\n if (slideIndex + _.options.slidesToShow > _.slideCount) {\r\n _.slideOffset = ((slideIndex + _.options.slidesToShow) - _.slideCount) * _.slideWidth;\r\n verticalOffset = ((slideIndex + _.options.slidesToShow) - _.slideCount) * verticalHeight;\r\n }\r\n }\r\n\r\n if (_.slideCount <= _.options.slidesToShow) {\r\n _.slideOffset = 0;\r\n verticalOffset = 0;\r\n }\r\n\r\n if (_.options.centerMode === true && _.options.infinite === true) {\r\n _.slideOffset += _.slideWidth * Math.floor(_.options.slidesToShow / 2) - _.slideWidth;\r\n } else if (_.options.centerMode === true) {\r\n _.slideOffset = 0;\r\n _.slideOffset += _.slideWidth * Math.floor(_.options.slidesToShow / 2);\r\n }\r\n\r\n if (_.options.vertical === false) {\r\n targetLeft = ((slideIndex * _.slideWidth) * -1) + _.slideOffset;\r\n } else {\r\n targetLeft = ((slideIndex * verticalHeight) * -1) + verticalOffset;\r\n }\r\n\r\n if (_.options.variableWidth === true) {\r\n\r\n if (_.slideCount <= _.options.slidesToShow || _.options.infinite === false) {\r\n targetSlide = _.$slideTrack.children('.slick-slide').eq(slideIndex);\r\n } else {\r\n targetSlide = _.$slideTrack.children('.slick-slide').eq(slideIndex + _.options.slidesToShow);\r\n }\r\n\r\n if (_.options.rtl === true) {\r\n if (targetSlide[0]) {\r\n targetLeft = (_.$slideTrack.width() - targetSlide[0].offsetLeft - targetSlide.width()) * -1;\r\n } else {\r\n targetLeft = 0;\r\n }\r\n } else {\r\n targetLeft = targetSlide[0] ? targetSlide[0].offsetLeft * -1 : 0;\r\n }\r\n\r\n if (_.options.centerMode === true) {\r\n if (_.slideCount <= _.options.slidesToShow || _.options.infinite === false) {\r\n targetSlide = _.$slideTrack.children('.slick-slide').eq(slideIndex);\r\n } else {\r\n targetSlide = _.$slideTrack.children('.slick-slide').eq(slideIndex + _.options.slidesToShow + 1);\r\n }\r\n\r\n if (_.options.rtl === true) {\r\n if (targetSlide[0]) {\r\n targetLeft = (_.$slideTrack.width() - targetSlide[0].offsetLeft - targetSlide.width()) * -1;\r\n } else {\r\n targetLeft = 0;\r\n }\r\n } else {\r\n targetLeft = targetSlide[0] ? targetSlide[0].offsetLeft * -1 : 0;\r\n }\r\n\r\n targetLeft += (_.$list.width() - targetSlide.outerWidth()) / 2;\r\n }\r\n }\r\n\r\n return targetLeft;\r\n\r\n };\r\n\r\n Slick.prototype.getOption = Slick.prototype.slickGetOption = function(option) {\r\n\r\n var _ = this;\r\n\r\n return _.options[option];\r\n\r\n };\r\n\r\n Slick.prototype.getNavigableIndexes = function() {\r\n\r\n var _ = this,\r\n breakPoint = 0,\r\n counter = 0,\r\n indexes = [],\r\n max;\r\n\r\n if (_.options.infinite === false) {\r\n max = _.slideCount;\r\n } else {\r\n breakPoint = _.options.slidesToScroll * -1;\r\n counter = _.options.slidesToScroll * -1;\r\n max = _.slideCount * 2;\r\n }\r\n\r\n while (breakPoint < max) {\r\n indexes.push(breakPoint);\r\n breakPoint = counter + _.options.slidesToScroll;\r\n counter += _.options.slidesToScroll <= _.options.slidesToShow ? _.options.slidesToScroll : _.options.slidesToShow;\r\n }\r\n\r\n return indexes;\r\n\r\n };\r\n\r\n Slick.prototype.getSlick = function() {\r\n\r\n return this;\r\n\r\n };\r\n\r\n Slick.prototype.getSlideCount = function() {\r\n\r\n var _ = this,\r\n slidesTraversed, swipedSlide, centerOffset;\r\n\r\n centerOffset = _.options.centerMode === true ? _.slideWidth * Math.floor(_.options.slidesToShow / 2) : 0;\r\n\r\n if (_.options.swipeToSlide === true) {\r\n _.$slideTrack.find('.slick-slide').each(function(index, slide) {\r\n if (slide.offsetLeft - centerOffset + ($(slide).outerWidth() / 2) > (_.swipeLeft * -1)) {\r\n swipedSlide = slide;\r\n return false;\r\n }\r\n });\r\n\r\n slidesTraversed = Math.abs($(swipedSlide).attr('data-slick-index') - _.currentSlide) || 1;\r\n\r\n return slidesTraversed;\r\n\r\n } else {\r\n return _.options.slidesToScroll;\r\n }\r\n\r\n };\r\n\r\n Slick.prototype.goTo = Slick.prototype.slickGoTo = function(slide, dontAnimate) {\r\n\r\n var _ = this;\r\n\r\n _.changeSlide({\r\n data: {\r\n message: 'index',\r\n index: parseInt(slide)\r\n }\r\n }, dontAnimate);\r\n\r\n };\r\n\r\n Slick.prototype.init = function(creation) {\r\n\r\n var _ = this;\r\n\r\n if (!$(_.$slider).hasClass('slick-initialized')) {\r\n\r\n $(_.$slider).addClass('slick-initialized');\r\n\r\n _.buildRows();\r\n _.buildOut();\r\n _.setProps();\r\n _.startLoad();\r\n _.loadSlider();\r\n _.initializeEvents();\r\n _.updateArrows();\r\n _.updateDots();\r\n _.checkResponsive(true);\r\n _.focusHandler();\r\n\r\n }\r\n\r\n if (creation) {\r\n _.$slider.trigger('init', [_]);\r\n }\r\n\r\n if (_.options.accessibility === true) {\r\n _.initADA();\r\n }\r\n\r\n if ( _.options.autoplay ) {\r\n\r\n _.paused = false;\r\n _.autoPlay();\r\n\r\n }\r\n\r\n };\r\n\r\n Slick.prototype.initADA = function() {\r\n var _ = this;\r\n _.$slides.add(_.$slideTrack.find('.slick-cloned')).attr({\r\n 'aria-hidden': 'true',\r\n 'tabindex': '-1'\r\n }).find('a, input, button, select').attr({\r\n 'tabindex': '-1'\r\n });\r\n\r\n _.$slideTrack.attr('role', 'listbox');\r\n\r\n _.$slides.not(_.$slideTrack.find('.slick-cloned')).each(function(i) {\r\n $(this).attr({\r\n 'role': 'option',\r\n 'aria-describedby': 'slick-slide' + _.instanceUid + i + ''\r\n });\r\n });\r\n\r\n if (_.$dots !== null) {\r\n _.$dots.attr('role', 'tablist').find('li').each(function(i) {\r\n $(this).attr({\r\n 'role': 'presentation',\r\n 'aria-selected': 'false',\r\n 'aria-controls': 'navigation' + _.instanceUid + i + '',\r\n 'id': 'slick-slide' + _.instanceUid + i + ''\r\n });\r\n })\r\n .first().attr('aria-selected', 'true').end()\r\n .find('button').attr('role', 'button').end()\r\n .closest('div').attr('role', 'toolbar');\r\n }\r\n _.activateADA();\r\n\r\n };\r\n\r\n Slick.prototype.initArrowEvents = function() {\r\n\r\n var _ = this;\r\n\r\n if (_.options.arrows === true && _.slideCount > _.options.slidesToShow) {\r\n _.$prevArrow\r\n .off('click.slick')\r\n .on('click.slick', {\r\n message: 'previous'\r\n }, _.changeSlide);\r\n _.$nextArrow\r\n .off('click.slick')\r\n .on('click.slick', {\r\n message: 'next'\r\n }, _.changeSlide);\r\n }\r\n\r\n };\r\n\r\n Slick.prototype.initDotEvents = function() {\r\n\r\n var _ = this;\r\n\r\n if (_.options.dots === true && _.slideCount > _.options.slidesToShow) {\r\n $('li', _.$dots).on('click.slick', {\r\n message: 'index'\r\n }, _.changeSlide);\r\n }\r\n\r\n if ( _.options.dots === true && _.options.pauseOnDotsHover === true ) {\r\n\r\n $('li', _.$dots)\r\n .on('mouseenter.slick', $.proxy(_.interrupt, _, true))\r\n .on('mouseleave.slick', $.proxy(_.interrupt, _, false));\r\n\r\n }\r\n\r\n };\r\n\r\n Slick.prototype.initSlideEvents = function() {\r\n\r\n var _ = this;\r\n\r\n if ( _.options.pauseOnHover ) {\r\n\r\n _.$list.on('mouseenter.slick', $.proxy(_.interrupt, _, true));\r\n _.$list.on('mouseleave.slick', $.proxy(_.interrupt, _, false));\r\n\r\n }\r\n\r\n };\r\n\r\n Slick.prototype.initializeEvents = function() {\r\n\r\n var _ = this;\r\n\r\n _.initArrowEvents();\r\n\r\n _.initDotEvents();\r\n _.initSlideEvents();\r\n\r\n _.$list.on('touchstart.slick mousedown.slick', {\r\n action: 'start'\r\n }, _.swipeHandler);\r\n _.$list.on('touchmove.slick mousemove.slick', {\r\n action: 'move'\r\n }, _.swipeHandler);\r\n _.$list.on('touchend.slick mouseup.slick', {\r\n action: 'end'\r\n }, _.swipeHandler);\r\n _.$list.on('touchcancel.slick mouseleave.slick', {\r\n action: 'end'\r\n }, _.swipeHandler);\r\n\r\n _.$list.on('click.slick', _.clickHandler);\r\n\r\n $(document).on(_.visibilityChange, $.proxy(_.visibility, _));\r\n\r\n if (_.options.accessibility === true) {\r\n _.$list.on('keydown.slick', _.keyHandler);\r\n }\r\n\r\n if (_.options.focusOnSelect === true) {\r\n $(_.$slideTrack).children().on('click.slick', _.selectHandler);\r\n }\r\n\r\n $(window).on('orientationchange.slick.slick-' + _.instanceUid, $.proxy(_.orientationChange, _));\r\n\r\n $(window).on('resize.slick.slick-' + _.instanceUid, $.proxy(_.resize, _));\r\n\r\n $('[draggable!=true]', _.$slideTrack).on('dragstart', _.preventDefault);\r\n\r\n $(window).on('load.slick.slick-' + _.instanceUid, _.setPosition);\r\n $(document).on('ready.slick.slick-' + _.instanceUid, _.setPosition);\r\n\r\n };\r\n\r\n Slick.prototype.initUI = function() {\r\n\r\n var _ = this;\r\n\r\n if (_.options.arrows === true && _.slideCount > _.options.slidesToShow) {\r\n\r\n _.$prevArrow.show();\r\n _.$nextArrow.show();\r\n\r\n }\r\n\r\n if (_.options.dots === true && _.slideCount > _.options.slidesToShow) {\r\n\r\n _.$dots.show();\r\n\r\n }\r\n\r\n };\r\n\r\n Slick.prototype.keyHandler = function(event) {\r\n\r\n var _ = this;\r\n //Dont slide if the cursor is inside the form fields and arrow keys are pressed\r\n if(!event.target.tagName.match('TEXTAREA|INPUT|SELECT')) {\r\n if (event.keyCode === 37 && _.options.accessibility === true) {\r\n _.changeSlide({\r\n data: {\r\n message: _.options.rtl === true ? 'next' : 'previous'\r\n }\r\n });\r\n } else if (event.keyCode === 39 && _.options.accessibility === true) {\r\n _.changeSlide({\r\n data: {\r\n message: _.options.rtl === true ? 'previous' : 'next'\r\n }\r\n });\r\n }\r\n }\r\n\r\n };\r\n\r\n Slick.prototype.lazyLoad = function() {\r\n\r\n var _ = this,\r\n loadRange, cloneRange, rangeStart, rangeEnd;\r\n\r\n function loadImages(imagesScope) {\r\n\r\n $('img[data-lazy]', imagesScope).each(function() {\r\n\r\n var image = $(this),\r\n imageSource = $(this).attr('data-lazy'),\r\n imageToLoad = document.createElement('img');\r\n\r\n imageToLoad.onload = function() {\r\n\r\n image\r\n .animate({ opacity: 0 }, 100, function() {\r\n image\r\n .attr('src', imageSource)\r\n .animate({ opacity: 1 }, 200, function() {\r\n image\r\n .removeAttr('data-lazy')\r\n .removeClass('slick-loading');\r\n });\r\n _.$slider.trigger('lazyLoaded', [_, image, imageSource]);\r\n });\r\n\r\n };\r\n\r\n imageToLoad.onerror = function() {\r\n\r\n image\r\n .removeAttr( 'data-lazy' )\r\n .removeClass( 'slick-loading' )\r\n .addClass( 'slick-lazyload-error' );\r\n\r\n _.$slider.trigger('lazyLoadError', [ _, image, imageSource ]);\r\n\r\n };\r\n\r\n imageToLoad.src = imageSource;\r\n\r\n });\r\n\r\n }\r\n\r\n if (_.options.centerMode === true) {\r\n if (_.options.infinite === true) {\r\n rangeStart = _.currentSlide + (_.options.slidesToShow / 2 + 1);\r\n rangeEnd = rangeStart + _.options.slidesToShow + 2;\r\n } else {\r\n rangeStart = Math.max(0, _.currentSlide - (_.options.slidesToShow / 2 + 1));\r\n rangeEnd = 2 + (_.options.slidesToShow / 2 + 1) + _.currentSlide;\r\n }\r\n } else {\r\n rangeStart = _.options.infinite ? _.options.slidesToShow + _.currentSlide : _.currentSlide;\r\n rangeEnd = Math.ceil(rangeStart + _.options.slidesToShow);\r\n if (_.options.fade === true) {\r\n if (rangeStart > 0) rangeStart--;\r\n if (rangeEnd <= _.slideCount) rangeEnd++;\r\n }\r\n }\r\n\r\n loadRange = _.$slider.find('.slick-slide').slice(rangeStart, rangeEnd);\r\n loadImages(loadRange);\r\n\r\n if (_.slideCount <= _.options.slidesToShow) {\r\n cloneRange = _.$slider.find('.slick-slide');\r\n loadImages(cloneRange);\r\n } else\r\n if (_.currentSlide >= _.slideCount - _.options.slidesToShow) {\r\n cloneRange = _.$slider.find('.slick-cloned').slice(0, _.options.slidesToShow);\r\n loadImages(cloneRange);\r\n } else if (_.currentSlide === 0) {\r\n cloneRange = _.$slider.find('.slick-cloned').slice(_.options.slidesToShow * -1);\r\n loadImages(cloneRange);\r\n }\r\n\r\n };\r\n\r\n Slick.prototype.loadSlider = function() {\r\n\r\n var _ = this;\r\n\r\n _.setPosition();\r\n\r\n _.$slideTrack.css({\r\n opacity: 1\r\n });\r\n\r\n _.$slider.removeClass('slick-loading');\r\n\r\n _.initUI();\r\n\r\n if (_.options.lazyLoad === 'progressive') {\r\n _.progressiveLazyLoad();\r\n }\r\n\r\n };\r\n\r\n Slick.prototype.next = Slick.prototype.slickNext = function() {\r\n\r\n var _ = this;\r\n\r\n _.changeSlide({\r\n data: {\r\n message: 'next'\r\n }\r\n });\r\n\r\n };\r\n\r\n Slick.prototype.orientationChange = function() {\r\n\r\n var _ = this;\r\n\r\n _.checkResponsive();\r\n _.setPosition();\r\n\r\n };\r\n\r\n Slick.prototype.pause = Slick.prototype.slickPause = function() {\r\n\r\n var _ = this;\r\n\r\n _.autoPlayClear();\r\n _.paused = true;\r\n\r\n };\r\n\r\n Slick.prototype.play = Slick.prototype.slickPlay = function() {\r\n\r\n var _ = this;\r\n\r\n _.autoPlay();\r\n _.options.autoplay = true;\r\n _.paused = false;\r\n _.focussed = false;\r\n _.interrupted = false;\r\n\r\n };\r\n\r\n Slick.prototype.postSlide = function(index) {\r\n\r\n var _ = this;\r\n\r\n if( !_.unslicked ) {\r\n\r\n _.$slider.trigger('afterChange', [_, index]);\r\n\r\n _.animating = false;\r\n\r\n _.setPosition();\r\n\r\n _.swipeLeft = null;\r\n\r\n if ( _.options.autoplay ) {\r\n _.autoPlay();\r\n }\r\n\r\n if (_.options.accessibility === true) {\r\n _.initADA();\r\n }\r\n\r\n }\r\n\r\n };\r\n\r\n Slick.prototype.prev = Slick.prototype.slickPrev = function() {\r\n\r\n var _ = this;\r\n\r\n _.changeSlide({\r\n data: {\r\n message: 'previous'\r\n }\r\n });\r\n\r\n };\r\n\r\n Slick.prototype.preventDefault = function(event) {\r\n\r\n event.preventDefault();\r\n\r\n };\r\n\r\n Slick.prototype.progressiveLazyLoad = function( tryCount ) {\r\n\r\n tryCount = tryCount || 1;\r\n\r\n var _ = this,\r\n $imgsToLoad = $( 'img[data-lazy]', _.$slider ),\r\n image,\r\n imageSource,\r\n imageToLoad;\r\n\r\n if ( $imgsToLoad.length ) {\r\n\r\n image = $imgsToLoad.first();\r\n imageSource = image.attr('data-lazy');\r\n imageToLoad = document.createElement('img');\r\n\r\n imageToLoad.onload = function() {\r\n\r\n image\r\n .attr( 'src', imageSource )\r\n .removeAttr('data-lazy')\r\n .removeClass('slick-loading');\r\n\r\n if ( _.options.adaptiveHeight === true ) {\r\n _.setPosition();\r\n }\r\n\r\n _.$slider.trigger('lazyLoaded', [ _, image, imageSource ]);\r\n _.progressiveLazyLoad();\r\n\r\n };\r\n\r\n imageToLoad.onerror = function() {\r\n\r\n if ( tryCount < 3 ) {\r\n\r\n /**\r\n * try to load the image 3 times,\r\n * leave a slight delay so we don't get\r\n * servers blocking the request.\r\n */\r\n setTimeout( function() {\r\n _.progressiveLazyLoad( tryCount + 1 );\r\n }, 500 );\r\n\r\n } else {\r\n\r\n image\r\n .removeAttr( 'data-lazy' )\r\n .removeClass( 'slick-loading' )\r\n .addClass( 'slick-lazyload-error' );\r\n\r\n _.$slider.trigger('lazyLoadError', [ _, image, imageSource ]);\r\n\r\n _.progressiveLazyLoad();\r\n\r\n }\r\n\r\n };\r\n\r\n imageToLoad.src = imageSource;\r\n\r\n } else {\r\n\r\n _.$slider.trigger('allImagesLoaded', [ _ ]);\r\n\r\n }\r\n\r\n };\r\n\r\n Slick.prototype.refresh = function( initializing ) {\r\n\r\n var _ = this, currentSlide, lastVisibleIndex;\r\n\r\n lastVisibleIndex = _.slideCount - _.options.slidesToShow;\r\n\r\n // in non-infinite sliders, we don't want to go past the\r\n // last visible index.\r\n if( !_.options.infinite && ( _.currentSlide > lastVisibleIndex )) {\r\n _.currentSlide = lastVisibleIndex;\r\n }\r\n\r\n // if less slides than to show, go to start.\r\n if ( _.slideCount <= _.options.slidesToShow ) {\r\n _.currentSlide = 0;\r\n\r\n }\r\n\r\n currentSlide = _.currentSlide;\r\n\r\n _.destroy(true);\r\n\r\n $.extend(_, _.initials, { currentSlide: currentSlide });\r\n\r\n _.init();\r\n\r\n if( !initializing ) {\r\n\r\n _.changeSlide({\r\n data: {\r\n message: 'index',\r\n index: currentSlide\r\n }\r\n }, false);\r\n\r\n }\r\n\r\n };\r\n\r\n Slick.prototype.registerBreakpoints = function() {\r\n\r\n var _ = this, breakpoint, currentBreakpoint, l,\r\n responsiveSettings = _.options.responsive || null;\r\n\r\n if ( $.type(responsiveSettings) === 'array' && responsiveSettings.length ) {\r\n\r\n _.respondTo = _.options.respondTo || 'window';\r\n\r\n for ( breakpoint in responsiveSettings ) {\r\n\r\n l = _.breakpoints.length-1;\r\n currentBreakpoint = responsiveSettings[breakpoint].breakpoint;\r\n\r\n if (responsiveSettings.hasOwnProperty(breakpoint)) {\r\n\r\n // loop through the breakpoints and cut out any existing\r\n // ones with the same breakpoint number, we don't want dupes.\r\n while( l >= 0 ) {\r\n if( _.breakpoints[l] && _.breakpoints[l] === currentBreakpoint ) {\r\n _.breakpoints.splice(l,1);\r\n }\r\n l--;\r\n }\r\n\r\n _.breakpoints.push(currentBreakpoint);\r\n _.breakpointSettings[currentBreakpoint] = responsiveSettings[breakpoint].settings;\r\n\r\n }\r\n\r\n }\r\n\r\n _.breakpoints.sort(function(a, b) {\r\n return ( _.options.mobileFirst ) ? a-b : b-a;\r\n });\r\n\r\n }\r\n\r\n };\r\n\r\n Slick.prototype.reinit = function() {\r\n\r\n var _ = this;\r\n\r\n _.$slides =\r\n _.$slideTrack\r\n .children(_.options.slide)\r\n .addClass('slick-slide');\r\n\r\n _.slideCount = _.$slides.length;\r\n\r\n if (_.currentSlide >= _.slideCount && _.currentSlide !== 0) {\r\n _.currentSlide = _.currentSlide - _.options.slidesToScroll;\r\n }\r\n\r\n if (_.slideCount <= _.options.slidesToShow) {\r\n _.currentSlide = 0;\r\n }\r\n\r\n _.registerBreakpoints();\r\n\r\n _.setProps();\r\n _.setupInfinite();\r\n _.buildArrows();\r\n _.updateArrows();\r\n _.initArrowEvents();\r\n _.buildDots();\r\n _.updateDots();\r\n _.initDotEvents();\r\n _.cleanUpSlideEvents();\r\n _.initSlideEvents();\r\n\r\n _.checkResponsive(false, true);\r\n\r\n if (_.options.focusOnSelect === true) {\r\n $(_.$slideTrack).children().on('click.slick', _.selectHandler);\r\n }\r\n\r\n _.setSlideClasses(typeof _.currentSlide === 'number' ? _.currentSlide : 0);\r\n\r\n _.setPosition();\r\n _.focusHandler();\r\n\r\n _.paused = !_.options.autoplay;\r\n _.autoPlay();\r\n\r\n _.$slider.trigger('reInit', [_]);\r\n\r\n };\r\n\r\n Slick.prototype.resize = function() {\r\n\r\n var _ = this;\r\n\r\n if ($(window).width() !== _.windowWidth) {\r\n clearTimeout(_.windowDelay);\r\n _.windowDelay = window.setTimeout(function() {\r\n _.windowWidth = $(window).width();\r\n _.checkResponsive();\r\n if( !_.unslicked ) { _.setPosition(); }\r\n }, 50);\r\n }\r\n };\r\n\r\n Slick.prototype.removeSlide = Slick.prototype.slickRemove = function(index, removeBefore, removeAll) {\r\n\r\n var _ = this;\r\n\r\n if (typeof(index) === 'boolean') {\r\n removeBefore = index;\r\n index = removeBefore === true ? 0 : _.slideCount - 1;\r\n } else {\r\n index = removeBefore === true ? --index : index;\r\n }\r\n\r\n if (_.slideCount < 1 || index < 0 || index > _.slideCount - 1) {\r\n return false;\r\n }\r\n\r\n _.unload();\r\n\r\n if (removeAll === true) {\r\n _.$slideTrack.children().remove();\r\n } else {\r\n _.$slideTrack.children(this.options.slide).eq(index).remove();\r\n }\r\n\r\n _.$slides = _.$slideTrack.children(this.options.slide);\r\n\r\n _.$slideTrack.children(this.options.slide).detach();\r\n\r\n _.$slideTrack.append(_.$slides);\r\n\r\n _.$slidesCache = _.$slides;\r\n\r\n _.reinit();\r\n\r\n };\r\n\r\n Slick.prototype.setCSS = function(position) {\r\n\r\n var _ = this,\r\n positionProps = {},\r\n x, y;\r\n\r\n if (_.options.rtl === true) {\r\n position = -position;\r\n }\r\n x = _.positionProp == 'left' ? Math.ceil(position) + 'px' : '0px';\r\n y = _.positionProp == 'top' ? Math.ceil(position) + 'px' : '0px';\r\n\r\n positionProps[_.positionProp] = position;\r\n\r\n if (_.transformsEnabled === false) {\r\n _.$slideTrack.css(positionProps);\r\n } else {\r\n positionProps = {};\r\n if (_.cssTransitions === false) {\r\n positionProps[_.animType] = 'translate(' + x + ', ' + y + ')';\r\n _.$slideTrack.css(positionProps);\r\n } else {\r\n positionProps[_.animType] = 'translate3d(' + x + ', ' + y + ', 0px)';\r\n _.$slideTrack.css(positionProps);\r\n }\r\n }\r\n\r\n };\r\n\r\n Slick.prototype.setDimensions = function() {\r\n\r\n var _ = this;\r\n\r\n if (_.options.vertical === false) {\r\n if (_.options.centerMode === true) {\r\n _.$list.css({\r\n padding: ('0px ' + _.options.centerPadding)\r\n });\r\n }\r\n } else {\r\n _.$list.height(_.$slides.first().outerHeight(true) * _.options.slidesToShow);\r\n if (_.options.centerMode === true) {\r\n _.$list.css({\r\n padding: (_.options.centerPadding + ' 0px')\r\n });\r\n }\r\n }\r\n\r\n _.listWidth = _.$list.width();\r\n _.listHeight = _.$list.height();\r\n\r\n\r\n if (_.options.vertical === false && _.options.variableWidth === false) {\r\n _.slideWidth = Math.ceil(_.listWidth / _.options.slidesToShow);\r\n _.$slideTrack.width(Math.ceil((_.slideWidth * _.$slideTrack.children('.slick-slide').length)));\r\n\r\n } else if (_.options.variableWidth === true) {\r\n _.$slideTrack.width(5000 * _.slideCount);\r\n } else {\r\n _.slideWidth = Math.ceil(_.listWidth);\r\n _.$slideTrack.height(Math.ceil((_.$slides.first().outerHeight(true) * _.$slideTrack.children('.slick-slide').length)));\r\n }\r\n\r\n var offset = _.$slides.first().outerWidth(true) - _.$slides.first().width();\r\n if (_.options.variableWidth === false) _.$slideTrack.children('.slick-slide').width(_.slideWidth - offset);\r\n\r\n };\r\n\r\n Slick.prototype.setFade = function() {\r\n\r\n var _ = this,\r\n targetLeft;\r\n\r\n _.$slides.each(function(index, element) {\r\n targetLeft = (_.slideWidth * index) * -1;\r\n if (_.options.rtl === true) {\r\n $(element).css({\r\n position: 'relative',\r\n right: targetLeft,\r\n top: 0,\r\n zIndex: _.options.zIndex - 2,\r\n opacity: 0\r\n });\r\n } else {\r\n $(element).css({\r\n position: 'relative',\r\n left: targetLeft,\r\n top: 0,\r\n zIndex: _.options.zIndex - 2,\r\n opacity: 0\r\n });\r\n }\r\n });\r\n\r\n _.$slides.eq(_.currentSlide).css({\r\n zIndex: _.options.zIndex - 1,\r\n opacity: 1\r\n });\r\n\r\n };\r\n\r\n Slick.prototype.setHeight = function() {\r\n\r\n var _ = this;\r\n\r\n if (_.options.slidesToShow === 1 && _.options.adaptiveHeight === true && _.options.vertical === false) {\r\n var targetHeight = _.$slides.eq(_.currentSlide).outerHeight(true);\r\n _.$list.css('height', targetHeight);\r\n }\r\n\r\n };\r\n\r\n Slick.prototype.setOption =\r\n Slick.prototype.slickSetOption = function() {\r\n\r\n /**\r\n * accepts arguments in format of:\r\n *\r\n * - for changing a single option's value:\r\n * .slick(\"setOption\", option, value, refresh )\r\n *\r\n * - for changing a set of responsive options:\r\n * .slick(\"setOption\", 'responsive', [{}, ...], refresh )\r\n *\r\n * - for updating multiple values at once (not responsive)\r\n * .slick(\"setOption\", { 'option': value, ... }, refresh )\r\n */\r\n\r\n var _ = this, l, item, option, value, refresh = false, type;\r\n\r\n if( $.type( arguments[0] ) === 'object' ) {\r\n\r\n option = arguments[0];\r\n refresh = arguments[1];\r\n type = 'multiple';\r\n\r\n } else if ( $.type( arguments[0] ) === 'string' ) {\r\n\r\n option = arguments[0];\r\n value = arguments[1];\r\n refresh = arguments[2];\r\n\r\n if ( arguments[0] === 'responsive' && $.type( arguments[1] ) === 'array' ) {\r\n\r\n type = 'responsive';\r\n\r\n } else if ( typeof arguments[1] !== 'undefined' ) {\r\n\r\n type = 'single';\r\n\r\n }\r\n\r\n }\r\n\r\n if ( type === 'single' ) {\r\n\r\n _.options[option] = value;\r\n\r\n\r\n } else if ( type === 'multiple' ) {\r\n\r\n $.each( option , function( opt, val ) {\r\n\r\n _.options[opt] = val;\r\n\r\n });\r\n\r\n\r\n } else if ( type === 'responsive' ) {\r\n\r\n for ( item in value ) {\r\n\r\n if( $.type( _.options.responsive ) !== 'array' ) {\r\n\r\n _.options.responsive = [ value[item] ];\r\n\r\n } else {\r\n\r\n l = _.options.responsive.length-1;\r\n\r\n // loop through the responsive object and splice out duplicates.\r\n while( l >= 0 ) {\r\n\r\n if( _.options.responsive[l].breakpoint === value[item].breakpoint ) {\r\n\r\n _.options.responsive.splice(l,1);\r\n\r\n }\r\n\r\n l--;\r\n\r\n }\r\n\r\n _.options.responsive.push( value[item] );\r\n\r\n }\r\n\r\n }\r\n\r\n }\r\n\r\n if ( refresh ) {\r\n\r\n _.unload();\r\n _.reinit();\r\n\r\n }\r\n\r\n };\r\n\r\n Slick.prototype.setPosition = function() {\r\n\r\n var _ = this;\r\n\r\n _.setDimensions();\r\n\r\n _.setHeight();\r\n\r\n if (_.options.fade === false) {\r\n _.setCSS(_.getLeft(_.currentSlide));\r\n } else {\r\n _.setFade();\r\n }\r\n\r\n _.$slider.trigger('setPosition', [_]);\r\n\r\n };\r\n\r\n Slick.prototype.setProps = function() {\r\n\r\n var _ = this,\r\n bodyStyle = document.body.style;\r\n\r\n _.positionProp = _.options.vertical === true ? 'top' : 'left';\r\n\r\n if (_.positionProp === 'top') {\r\n _.$slider.addClass('slick-vertical');\r\n } else {\r\n _.$slider.removeClass('slick-vertical');\r\n }\r\n\r\n if (bodyStyle.WebkitTransition !== undefined ||\r\n bodyStyle.MozTransition !== undefined ||\r\n bodyStyle.msTransition !== undefined) {\r\n if (_.options.useCSS === true) {\r\n _.cssTransitions = true;\r\n }\r\n }\r\n\r\n if ( _.options.fade ) {\r\n if ( typeof _.options.zIndex === 'number' ) {\r\n if( _.options.zIndex < 3 ) {\r\n _.options.zIndex = 3;\r\n }\r\n } else {\r\n _.options.zIndex = _.defaults.zIndex;\r\n }\r\n }\r\n\r\n if (bodyStyle.OTransform !== undefined) {\r\n _.animType = 'OTransform';\r\n _.transformType = '-o-transform';\r\n _.transitionType = 'OTransition';\r\n if (bodyStyle.perspectiveProperty === undefined && bodyStyle.webkitPerspective === undefined) _.animType = false;\r\n }\r\n if (bodyStyle.MozTransform !== undefined) {\r\n _.animType = 'MozTransform';\r\n _.transformType = '-moz-transform';\r\n _.transitionType = 'MozTransition';\r\n if (bodyStyle.perspectiveProperty === undefined && bodyStyle.MozPerspective === undefined) _.animType = false;\r\n }\r\n if (bodyStyle.webkitTransform !== undefined) {\r\n _.animType = 'webkitTransform';\r\n _.transformType = '-webkit-transform';\r\n _.transitionType = 'webkitTransition';\r\n if (bodyStyle.perspectiveProperty === undefined && bodyStyle.webkitPerspective === undefined) _.animType = false;\r\n }\r\n if (bodyStyle.msTransform !== undefined) {\r\n _.animType = 'msTransform';\r\n _.transformType = '-ms-transform';\r\n _.transitionType = 'msTransition';\r\n if (bodyStyle.msTransform === undefined) _.animType = false;\r\n }\r\n if (bodyStyle.transform !== undefined && _.animType !== false) {\r\n _.animType = 'transform';\r\n _.transformType = 'transform';\r\n _.transitionType = 'transition';\r\n }\r\n _.transformsEnabled = _.options.useTransform && (_.animType !== null && _.animType !== false);\r\n };\r\n\r\n\r\n Slick.prototype.setSlideClasses = function(index) {\r\n\r\n var _ = this,\r\n centerOffset, allSlides, indexOffset, remainder;\r\n\r\n allSlides = _.$slider\r\n .find('.slick-slide')\r\n .removeClass('slick-active slick-center slick-current')\r\n .attr('aria-hidden', 'true');\r\n\r\n _.$slides\r\n .eq(index)\r\n .addClass('slick-current');\r\n\r\n if (_.options.centerMode === true) {\r\n\r\n centerOffset = Math.floor(_.options.slidesToShow / 2);\r\n\r\n if (_.options.infinite === true) {\r\n\r\n if (index >= centerOffset && index <= (_.slideCount - 1) - centerOffset) {\r\n\r\n _.$slides\r\n .slice(index - centerOffset, index + centerOffset + 1)\r\n .addClass('slick-active')\r\n .attr('aria-hidden', 'false');\r\n\r\n } else {\r\n\r\n indexOffset = _.options.slidesToShow + index;\r\n allSlides\r\n .slice(indexOffset - centerOffset + 1, indexOffset + centerOffset + 2)\r\n .addClass('slick-active')\r\n .attr('aria-hidden', 'false');\r\n\r\n }\r\n\r\n if (index === 0) {\r\n\r\n allSlides\r\n .eq(allSlides.length - 1 - _.options.slidesToShow)\r\n .addClass('slick-center');\r\n\r\n } else if (index === _.slideCount - 1) {\r\n\r\n allSlides\r\n .eq(_.options.slidesToShow)\r\n .addClass('slick-center');\r\n\r\n }\r\n\r\n }\r\n\r\n _.$slides\r\n .eq(index)\r\n .addClass('slick-center');\r\n\r\n } else {\r\n\r\n if (index >= 0 && index <= (_.slideCount - _.options.slidesToShow)) {\r\n\r\n _.$slides\r\n .slice(index, index + _.options.slidesToShow)\r\n .addClass('slick-active')\r\n .attr('aria-hidden', 'false');\r\n\r\n } else if (allSlides.length <= _.options.slidesToShow) {\r\n\r\n allSlides\r\n .addClass('slick-active')\r\n .attr('aria-hidden', 'false');\r\n\r\n } else {\r\n\r\n remainder = _.slideCount % _.options.slidesToShow;\r\n indexOffset = _.options.infinite === true ? _.options.slidesToShow + index : index;\r\n\r\n if (_.options.slidesToShow == _.options.slidesToScroll && (_.slideCount - index) < _.options.slidesToShow) {\r\n\r\n allSlides\r\n .slice(indexOffset - (_.options.slidesToShow - remainder), indexOffset + remainder)\r\n .addClass('slick-active')\r\n .attr('aria-hidden', 'false');\r\n\r\n } else {\r\n\r\n allSlides\r\n .slice(indexOffset, indexOffset + _.options.slidesToShow)\r\n .addClass('slick-active')\r\n .attr('aria-hidden', 'false');\r\n\r\n }\r\n\r\n }\r\n\r\n }\r\n\r\n if (_.options.lazyLoad === 'ondemand') {\r\n _.lazyLoad();\r\n }\r\n\r\n };\r\n\r\n Slick.prototype.setupInfinite = function() {\r\n\r\n var _ = this,\r\n i, slideIndex, infiniteCount;\r\n\r\n if (_.options.fade === true) {\r\n _.options.centerMode = false;\r\n }\r\n\r\n if (_.options.infinite === true && _.options.fade === false) {\r\n\r\n slideIndex = null;\r\n\r\n if (_.slideCount > _.options.slidesToShow) {\r\n\r\n if (_.options.centerMode === true) {\r\n infiniteCount = _.options.slidesToShow + 1;\r\n } else {\r\n infiniteCount = _.options.slidesToShow;\r\n }\r\n\r\n for (i = _.slideCount; i > (_.slideCount -\r\n infiniteCount); i -= 1) {\r\n slideIndex = i - 1;\r\n $(_.$slides[slideIndex]).clone(true).attr('id', '')\r\n .attr('data-slick-index', slideIndex - _.slideCount)\r\n .prependTo(_.$slideTrack).addClass('slick-cloned');\r\n }\r\n for (i = 0; i < infiniteCount; i += 1) {\r\n slideIndex = i;\r\n $(_.$slides[slideIndex]).clone(true).attr('id', '')\r\n .attr('data-slick-index', slideIndex + _.slideCount)\r\n .appendTo(_.$slideTrack).addClass('slick-cloned');\r\n }\r\n _.$slideTrack.find('.slick-cloned').find('[id]').each(function() {\r\n $(this).attr('id', '');\r\n });\r\n\r\n }\r\n\r\n }\r\n\r\n };\r\n\r\n Slick.prototype.interrupt = function( toggle ) {\r\n\r\n var _ = this;\r\n\r\n if( !toggle ) {\r\n _.autoPlay();\r\n }\r\n _.interrupted = toggle;\r\n\r\n };\r\n\r\n Slick.prototype.selectHandler = function(event) {\r\n\r\n var _ = this;\r\n\r\n var targetElement =\r\n $(event.target).is('.slick-slide') ?\r\n $(event.target) :\r\n $(event.target).parents('.slick-slide');\r\n\r\n var index = parseInt(targetElement.attr('data-slick-index'));\r\n\r\n if (!index) index = 0;\r\n\r\n if (_.slideCount <= _.options.slidesToShow) {\r\n\r\n _.setSlideClasses(index);\r\n _.asNavFor(index);\r\n return;\r\n\r\n }\r\n\r\n _.slideHandler(index);\r\n\r\n };\r\n\r\n Slick.prototype.slideHandler = function(index, sync, dontAnimate) {\r\n\r\n var targetSlide, animSlide, oldSlide, slideLeft, targetLeft = null,\r\n _ = this, navTarget;\r\n\r\n sync = sync || false;\r\n\r\n if (_.animating === true && _.options.waitForAnimate === true) {\r\n return;\r\n }\r\n\r\n if (_.options.fade === true && _.currentSlide === index) {\r\n return;\r\n }\r\n\r\n if (_.slideCount <= _.options.slidesToShow) {\r\n return;\r\n }\r\n\r\n if (sync === false) {\r\n _.asNavFor(index);\r\n }\r\n\r\n targetSlide = index;\r\n targetLeft = _.getLeft(targetSlide);\r\n slideLeft = _.getLeft(_.currentSlide);\r\n\r\n _.currentLeft = _.swipeLeft === null ? slideLeft : _.swipeLeft;\r\n\r\n if (_.options.infinite === false && _.options.centerMode === false && (index < 0 || index > _.getDotCount() * _.options.slidesToScroll)) {\r\n if (_.options.fade === false) {\r\n targetSlide = _.currentSlide;\r\n if (dontAnimate !== true) {\r\n _.animateSlide(slideLeft, function() {\r\n _.postSlide(targetSlide);\r\n });\r\n } else {\r\n _.postSlide(targetSlide);\r\n }\r\n }\r\n return;\r\n } else if (_.options.infinite === false && _.options.centerMode === true && (index < 0 || index > (_.slideCount - _.options.slidesToScroll))) {\r\n if (_.options.fade === false) {\r\n targetSlide = _.currentSlide;\r\n if (dontAnimate !== true) {\r\n _.animateSlide(slideLeft, function() {\r\n _.postSlide(targetSlide);\r\n });\r\n } else {\r\n _.postSlide(targetSlide);\r\n }\r\n }\r\n return;\r\n }\r\n\r\n if ( _.options.autoplay ) {\r\n clearInterval(_.autoPlayTimer);\r\n }\r\n\r\n if (targetSlide < 0) {\r\n if (_.slideCount % _.options.slidesToScroll !== 0) {\r\n animSlide = _.slideCount - (_.slideCount % _.options.slidesToScroll);\r\n } else {\r\n animSlide = _.slideCount + targetSlide;\r\n }\r\n } else if (targetSlide >= _.slideCount) {\r\n if (_.slideCount % _.options.slidesToScroll !== 0) {\r\n animSlide = 0;\r\n } else {\r\n animSlide = targetSlide - _.slideCount;\r\n }\r\n } else {\r\n animSlide = targetSlide;\r\n }\r\n\r\n _.animating = true;\r\n\r\n _.$slider.trigger('beforeChange', [_, _.currentSlide, animSlide]);\r\n\r\n oldSlide = _.currentSlide;\r\n _.currentSlide = animSlide;\r\n\r\n _.setSlideClasses(_.currentSlide);\r\n\r\n if ( _.options.asNavFor ) {\r\n\r\n navTarget = _.getNavTarget();\r\n navTarget = navTarget.slick('getSlick');\r\n\r\n if ( navTarget.slideCount <= navTarget.options.slidesToShow ) {\r\n navTarget.setSlideClasses(_.currentSlide);\r\n }\r\n\r\n }\r\n\r\n _.updateDots();\r\n _.updateArrows();\r\n\r\n if (_.options.fade === true) {\r\n if (dontAnimate !== true) {\r\n\r\n _.fadeSlideOut(oldSlide);\r\n\r\n _.fadeSlide(animSlide, function() {\r\n _.postSlide(animSlide);\r\n });\r\n\r\n } else {\r\n _.postSlide(animSlide);\r\n }\r\n _.animateHeight();\r\n return;\r\n }\r\n\r\n if (dontAnimate !== true) {\r\n _.animateSlide(targetLeft, function() {\r\n _.postSlide(animSlide);\r\n });\r\n } else {\r\n _.postSlide(animSlide);\r\n }\r\n\r\n };\r\n\r\n Slick.prototype.startLoad = function() {\r\n\r\n var _ = this;\r\n\r\n if (_.options.arrows === true && _.slideCount > _.options.slidesToShow) {\r\n\r\n _.$prevArrow.hide();\r\n _.$nextArrow.hide();\r\n\r\n }\r\n\r\n if (_.options.dots === true && _.slideCount > _.options.slidesToShow) {\r\n\r\n _.$dots.hide();\r\n\r\n }\r\n\r\n _.$slider.addClass('slick-loading');\r\n\r\n };\r\n\r\n Slick.prototype.swipeDirection = function() {\r\n\r\n var xDist, yDist, r, swipeAngle, _ = this;\r\n\r\n xDist = _.touchObject.startX - _.touchObject.curX;\r\n yDist = _.touchObject.startY - _.touchObject.curY;\r\n r = Math.atan2(yDist, xDist);\r\n\r\n swipeAngle = Math.round(r * 180 / Math.PI);\r\n if (swipeAngle < 0) {\r\n swipeAngle = 360 - Math.abs(swipeAngle);\r\n }\r\n\r\n if ((swipeAngle <= 45) && (swipeAngle >= 0)) {\r\n return (_.options.rtl === false ? 'left' : 'right');\r\n }\r\n if ((swipeAngle <= 360) && (swipeAngle >= 315)) {\r\n return (_.options.rtl === false ? 'left' : 'right');\r\n }\r\n if ((swipeAngle >= 135) && (swipeAngle <= 225)) {\r\n return (_.options.rtl === false ? 'right' : 'left');\r\n }\r\n if (_.options.verticalSwiping === true) {\r\n if ((swipeAngle >= 35) && (swipeAngle <= 135)) {\r\n return 'down';\r\n } else {\r\n return 'up';\r\n }\r\n }\r\n\r\n return 'vertical';\r\n\r\n };\r\n\r\n Slick.prototype.swipeEnd = function(event) {\r\n\r\n var _ = this,\r\n slideCount,\r\n direction;\r\n\r\n _.dragging = false;\r\n _.interrupted = false;\r\n _.shouldClick = ( _.touchObject.swipeLength > 10 ) ? false : true;\r\n\r\n if ( _.touchObject.curX === undefined ) {\r\n return false;\r\n }\r\n\r\n if ( _.touchObject.edgeHit === true ) {\r\n _.$slider.trigger('edge', [_, _.swipeDirection() ]);\r\n }\r\n\r\n if ( _.touchObject.swipeLength >= _.touchObject.minSwipe ) {\r\n\r\n direction = _.swipeDirection();\r\n\r\n switch ( direction ) {\r\n\r\n case 'left':\r\n case 'down':\r\n\r\n slideCount =\r\n _.options.swipeToSlide ?\r\n _.checkNavigable( _.currentSlide + _.getSlideCount() ) :\r\n _.currentSlide + _.getSlideCount();\r\n\r\n _.currentDirection = 0;\r\n\r\n break;\r\n\r\n case 'right':\r\n case 'up':\r\n\r\n slideCount =\r\n _.options.swipeToSlide ?\r\n _.checkNavigable( _.currentSlide - _.getSlideCount() ) :\r\n _.currentSlide - _.getSlideCount();\r\n\r\n _.currentDirection = 1;\r\n\r\n break;\r\n\r\n default:\r\n\r\n\r\n }\r\n\r\n if( direction != 'vertical' ) {\r\n\r\n _.slideHandler( slideCount );\r\n _.touchObject = {};\r\n _.$slider.trigger('swipe', [_, direction ]);\r\n\r\n }\r\n\r\n } else {\r\n\r\n if ( _.touchObject.startX !== _.touchObject.curX ) {\r\n\r\n _.slideHandler( _.currentSlide );\r\n _.touchObject = {};\r\n\r\n }\r\n\r\n }\r\n\r\n };\r\n\r\n Slick.prototype.swipeHandler = function(event) {\r\n\r\n var _ = this;\r\n\r\n if ((_.options.swipe === false) || ('ontouchend' in document && _.options.swipe === false)) {\r\n return;\r\n } else if (_.options.draggable === false && event.type.indexOf('mouse') !== -1) {\r\n return;\r\n }\r\n\r\n _.touchObject.fingerCount = event.originalEvent && event.originalEvent.touches !== undefined ?\r\n event.originalEvent.touches.length : 1;\r\n\r\n _.touchObject.minSwipe = _.listWidth / _.options\r\n .touchThreshold;\r\n\r\n if (_.options.verticalSwiping === true) {\r\n _.touchObject.minSwipe = _.listHeight / _.options\r\n .touchThreshold;\r\n }\r\n\r\n switch (event.data.action) {\r\n\r\n case 'start':\r\n _.swipeStart(event);\r\n break;\r\n\r\n case 'move':\r\n _.swipeMove(event);\r\n break;\r\n\r\n case 'end':\r\n _.swipeEnd(event);\r\n break;\r\n\r\n }\r\n\r\n };\r\n\r\n Slick.prototype.swipeMove = function(event) {\r\n\r\n var _ = this,\r\n edgeWasHit = false,\r\n curLeft, swipeDirection, swipeLength, positionOffset, touches;\r\n\r\n touches = event.originalEvent !== undefined ? event.originalEvent.touches : null;\r\n\r\n if (!_.dragging || touches && touches.length !== 1) {\r\n return false;\r\n }\r\n\r\n curLeft = _.getLeft(_.currentSlide);\r\n\r\n _.touchObject.curX = touches !== undefined ? touches[0].pageX : event.clientX;\r\n _.touchObject.curY = touches !== undefined ? touches[0].pageY : event.clientY;\r\n\r\n _.touchObject.swipeLength = Math.round(Math.sqrt(\r\n Math.pow(_.touchObject.curX - _.touchObject.startX, 2)));\r\n\r\n if (_.options.verticalSwiping === true) {\r\n _.touchObject.swipeLength = Math.round(Math.sqrt(\r\n Math.pow(_.touchObject.curY - _.touchObject.startY, 2)));\r\n }\r\n\r\n swipeDirection = _.swipeDirection();\r\n\r\n if (swipeDirection === 'vertical') {\r\n return;\r\n }\r\n\r\n if (event.originalEvent !== undefined && _.touchObject.swipeLength > 4) {\r\n event.preventDefault();\r\n }\r\n\r\n positionOffset = (_.options.rtl === false ? 1 : -1) * (_.touchObject.curX > _.touchObject.startX ? 1 : -1);\r\n if (_.options.verticalSwiping === true) {\r\n positionOffset = _.touchObject.curY > _.touchObject.startY ? 1 : -1;\r\n }\r\n\r\n\r\n swipeLength = _.touchObject.swipeLength;\r\n\r\n _.touchObject.edgeHit = false;\r\n\r\n if (_.options.infinite === false) {\r\n if ((_.currentSlide === 0 && swipeDirection === 'right') || (_.currentSlide >= _.getDotCount() && swipeDirection === 'left')) {\r\n swipeLength = _.touchObject.swipeLength * _.options.edgeFriction;\r\n _.touchObject.edgeHit = true;\r\n }\r\n }\r\n\r\n if (_.options.vertical === false) {\r\n _.swipeLeft = curLeft + swipeLength * positionOffset;\r\n } else {\r\n _.swipeLeft = curLeft + (swipeLength * (_.$list.height() / _.listWidth)) * positionOffset;\r\n }\r\n if (_.options.verticalSwiping === true) {\r\n _.swipeLeft = curLeft + swipeLength * positionOffset;\r\n }\r\n\r\n if (_.options.fade === true || _.options.touchMove === false) {\r\n return false;\r\n }\r\n\r\n if (_.animating === true) {\r\n _.swipeLeft = null;\r\n return false;\r\n }\r\n\r\n _.setCSS(_.swipeLeft);\r\n\r\n };\r\n\r\n Slick.prototype.swipeStart = function(event) {\r\n\r\n var _ = this,\r\n touches;\r\n\r\n _.interrupted = true;\r\n\r\n if (_.touchObject.fingerCount !== 1 || _.slideCount <= _.options.slidesToShow) {\r\n _.touchObject = {};\r\n return false;\r\n }\r\n\r\n if (event.originalEvent !== undefined && event.originalEvent.touches !== undefined) {\r\n touches = event.originalEvent.touches[0];\r\n }\r\n\r\n _.touchObject.startX = _.touchObject.curX = touches !== undefined ? touches.pageX : event.clientX;\r\n _.touchObject.startY = _.touchObject.curY = touches !== undefined ? touches.pageY : event.clientY;\r\n\r\n _.dragging = true;\r\n\r\n };\r\n\r\n Slick.prototype.unfilterSlides = Slick.prototype.slickUnfilter = function() {\r\n\r\n var _ = this;\r\n\r\n if (_.$slidesCache !== null) {\r\n\r\n _.unload();\r\n\r\n _.$slideTrack.children(this.options.slide).detach();\r\n\r\n _.$slidesCache.appendTo(_.$slideTrack);\r\n\r\n _.reinit();\r\n\r\n }\r\n\r\n };\r\n\r\n Slick.prototype.unload = function() {\r\n\r\n var _ = this;\r\n\r\n $('.slick-cloned', _.$slider).remove();\r\n\r\n if (_.$dots) {\r\n _.$dots.remove();\r\n }\r\n\r\n if (_.$prevArrow && _.htmlExpr.test(_.options.prevArrow)) {\r\n _.$prevArrow.remove();\r\n }\r\n\r\n if (_.$nextArrow && _.htmlExpr.test(_.options.nextArrow)) {\r\n _.$nextArrow.remove();\r\n }\r\n\r\n _.$slides\r\n .removeClass('slick-slide slick-active slick-visible slick-current')\r\n .attr('aria-hidden', 'true')\r\n .css('width', '');\r\n\r\n };\r\n\r\n Slick.prototype.unslick = function(fromBreakpoint) {\r\n\r\n var _ = this;\r\n _.$slider.trigger('unslick', [_, fromBreakpoint]);\r\n _.destroy();\r\n\r\n };\r\n\r\n Slick.prototype.updateArrows = function() {\r\n\r\n var _ = this,\r\n centerOffset;\r\n\r\n centerOffset = Math.floor(_.options.slidesToShow / 2);\r\n\r\n if ( _.options.arrows === true &&\r\n _.slideCount > _.options.slidesToShow &&\r\n !_.options.infinite ) {\r\n\r\n _.$prevArrow.removeClass('slick-disabled').attr('aria-disabled', 'false');\r\n _.$nextArrow.removeClass('slick-disabled').attr('aria-disabled', 'false');\r\n\r\n if (_.currentSlide === 0) {\r\n\r\n _.$prevArrow.addClass('slick-disabled').attr('aria-disabled', 'true');\r\n _.$nextArrow.removeClass('slick-disabled').attr('aria-disabled', 'false');\r\n\r\n } else if (_.currentSlide >= _.slideCount - _.options.slidesToShow && _.options.centerMode === false) {\r\n\r\n _.$nextArrow.addClass('slick-disabled').attr('aria-disabled', 'true');\r\n _.$prevArrow.removeClass('slick-disabled').attr('aria-disabled', 'false');\r\n\r\n } else if (_.currentSlide >= _.slideCount - 1 && _.options.centerMode === true) {\r\n\r\n _.$nextArrow.addClass('slick-disabled').attr('aria-disabled', 'true');\r\n _.$prevArrow.removeClass('slick-disabled').attr('aria-disabled', 'false');\r\n\r\n }\r\n\r\n }\r\n\r\n };\r\n\r\n Slick.prototype.updateDots = function() {\r\n\r\n var _ = this;\r\n\r\n if (_.$dots !== null) {\r\n\r\n _.$dots\r\n .find('li')\r\n .removeClass('slick-active')\r\n .attr('aria-hidden', 'true');\r\n\r\n _.$dots\r\n .find('li')\r\n .eq(Math.floor(_.currentSlide / _.options.slidesToScroll))\r\n .addClass('slick-active')\r\n .attr('aria-hidden', 'false');\r\n\r\n }\r\n\r\n };\r\n\r\n Slick.prototype.visibility = function() {\r\n\r\n var _ = this;\r\n\r\n if ( _.options.autoplay ) {\r\n\r\n if ( document[_.hidden] ) {\r\n\r\n _.interrupted = true;\r\n\r\n } else {\r\n\r\n _.interrupted = false;\r\n\r\n }\r\n\r\n }\r\n\r\n };\r\n\r\n $.fn.slick = function() {\r\n var _ = this,\r\n opt = arguments[0],\r\n args = Array.prototype.slice.call(arguments, 1),\r\n l = _.length,\r\n i,\r\n ret;\r\n for (i = 0; i < l; i++) {\r\n if (typeof opt == 'object' || typeof opt == 'undefined')\r\n _[i].slick = new Slick(_[i], opt);\r\n else\r\n ret = _[i].slick[opt].apply(_[i].slick, args);\r\n if (typeof ret != 'undefined') return ret;\r\n }\r\n return _;\r\n };\r\n\r\n}));\r\n","var $ = require('jquery');\r\n// Easy Responsive Tabs Plugin\r\n//https://www.npmjs.com/package/easy-responsive-tabs\r\n//File edited 9/9/2019, as per ticket #3921\r\n$(function () {\r\n $.fn.extend({\r\n easyResponsiveTabs: function (options) {\r\n //Set the default values, use comma to separate the settings, example:\r\n var defaults = {\r\n type: 'default', //default, vertical, accordion;\r\n width: 'auto',\r\n fit: true,\r\n closed: false,\r\n activate: function(){}\r\n }\r\n //Variables\r\n var options = $.extend(defaults, options); \r\n var opt = options, jtype = opt.type, jfit = opt.fit, jwidth = opt.width, vtabs = 'vertical', accord = 'accordion';\r\n\r\n //Events\r\n $(this).bind('tabactivate', function(e, currentTab) {\r\n if(typeof options.activate === 'function') {\r\n options.activate.call(currentTab, e)\r\n }\r\n });\r\n\r\n //Main function\r\n this.each(function () {\r\n var $respTabs = $(this);\r\n var $respTabsList = $respTabs.find('ul.resp-tabs-list');\r\n $respTabs.find('ul.resp-tabs-list li').addClass('resp-tab-item');\r\n $respTabs.css({\r\n 'display': 'block',\r\n 'width': jwidth\r\n });\r\n\r\n $respTabs.find('.resp-tabs-container > div').addClass('resp-tab-content');\r\n jtab_options();\r\n //Properties Function\r\n function jtab_options() {\r\n if (jtype == vtabs) {\r\n $respTabs.addClass('resp-vtabs');\r\n }\r\n if (jfit == true) {\r\n $respTabs.css({ width: '100%', margin: '0px' });\r\n }\r\n if (jtype == accord) {\r\n $respTabs.addClass('resp-easy-accordion');\r\n $respTabs.find('.resp-tabs-list').css('display', 'none');\r\n }\r\n }\r\n\r\n //Assigning the h2 markup to accordion title\r\n var $tabItemh2;\r\n //Line edited. Changed the rendered H2 element to a DIV element\r\n //as per ticket #3921\r\n $respTabs.find('.resp-tab-content').before(\"<div class='resp-accordion h2' role='tab'><span class='resp-arrow'></span></div>\");\r\n var itemCount = 0;\r\n $respTabs.find('.resp-accordion').each(function () {\r\n $tabItemh2 = $(this);\r\n var innertext = $respTabs.find('.resp-tab-item:eq(' + itemCount + ')').html();\r\n $respTabs.find('.resp-accordion:eq(' + itemCount + ')').append(innertext);\r\n $tabItemh2.attr('aria-controls', 'tab_item-' + (itemCount));\r\n itemCount++;\r\n });\r\n\r\n //Assigning the 'aria-controls' to Tab items\r\n var count = 0,\r\n $tabContent;\r\n $respTabs.find('.resp-tab-item').each(function () {\r\n var $tabItem = $(this);\r\n $tabItem.attr('aria-controls', 'tab_item-' + (count));\r\n $tabItem.attr('role', 'tab');\r\n\r\n //First active tab, keep closed if option = 'closed' or option is 'accordion' and the element is in accordion mode \r\n if(options.closed !== true && !(options.closed === 'accordion' && !$respTabsList.is(':visible')) && !(options.closed === 'tabs' && $respTabsList.is(':visible'))) { \r\n $respTabs.find('.resp-tab-item').first().addClass('resp-tab-active');\r\n $respTabs.find('.resp-accordion').first().addClass('resp-tab-active');\r\n $respTabs.find('.resp-tab-content').first().addClass('resp-tab-content-active').attr('style', 'display:block');\r\n }\r\n\r\n //Assigning the 'aria-labelledby' attr to tab-content\r\n var tabcount = 0;\r\n $respTabs.find('.resp-tab-content').each(function () {\r\n $tabContent = $(this);\r\n $tabContent.attr('aria-labelledby', 'tab_item-' + (tabcount));\r\n tabcount++;\r\n });\r\n count++;\r\n });\r\n\r\n //Tab Click action function\r\n $respTabs.find(\"[role=tab]\").each(function () {\r\n var $currentTab = $(this);\r\n $currentTab.click(function () {\r\n\r\n var $tabAria = $currentTab.attr('aria-controls');\r\n\r\n if ($currentTab.hasClass('resp-accordion') && $currentTab.hasClass('resp-tab-active')) {\r\n $respTabs.find('.resp-tab-content-active').slideUp('', function () { $(this).addClass('resp-accordion-closed'); });\r\n $currentTab.removeClass('resp-tab-active');\r\n return false;\r\n }\r\n if (!$currentTab.hasClass('resp-tab-active') && $currentTab.hasClass('resp-accordion')) {\r\n $respTabs.find('.resp-tab-active').removeClass('resp-tab-active');\r\n $respTabs.find('.resp-tab-content-active').slideUp().removeClass('resp-tab-content-active resp-accordion-closed');\r\n $respTabs.find(\"[aria-controls=\" + $tabAria + \"]\").addClass('resp-tab-active');\r\n\r\n $respTabs.find('.resp-tab-content[aria-labelledby = ' + $tabAria + ']').slideDown().addClass('resp-tab-content-active');\r\n } else {\r\n $respTabs.find('.resp-tab-active').removeClass('resp-tab-active');\r\n $respTabs.find('.resp-tab-content-active').removeAttr('style').removeClass('resp-tab-content-active').removeClass('resp-accordion-closed');\r\n $respTabs.find(\"[aria-controls=\" + $tabAria + \"]\").addClass('resp-tab-active');\r\n\t\t\t\t\t\t\t$respTabs.find('.resp-tab-content[aria-labelledby = ' + $tabAria + ']').addClass('resp-tab-content-active').attr('style', 'display:block');\r\n\r\n\t\t\t\t\t\t\t// Global Menu dynamic scroll Starts\r\n\t\t\t\t\t\t\tvar viewHeight = window.innerHeight;\r\n\r\n\t\t\t\t\t\t\tvar cookieHeight = (document.querySelector(\".cc-banner\")) ? document.querySelector(\".cc-banner\").clientHeight : ((document.querySelector(\".optanon-alert-box-wrapper\")) ? document.querySelector(\".optanon-alert-box-wrapper\").clientHeight : ((document.querySelector(\"#onetrust-banner-sdk\")) ? document.querySelector(\"#onetrust-banner-sdk\").clientHeight : 0));\r\n\r\n\t\t\t\t\t\t\tif ((!$(\".cc-banner\").hasClass(\"cc-invisible\") && $(\".cc-banner\")) || $('#onetrust-banner-sdk')) {\r\n\t\t\t\t\t\t\t\tviewHeight = viewHeight - cookieHeight;\r\n\t\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t\tif ((document.querySelector(\".locations__countries-wrapper .resp-tab-content-active\").clientHeight + 200) < viewHeight) {\r\n\r\n\t\t\t\t\t\t\t\t$(\".header__utility-menu .locations\").css({ height: \"auto\" });\r\n\t\t\t\t\t\t\t} else {\r\n\t\t\t\t\t\t\t\t$(\".header__utility-menu .locations\").css({ height: (window.innerWidth <= 768 ? \"96vh\" : \"75vh\"), overflow: \"auto\" });\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t// Global Menu dynamic scroll Ends\r\n\r\n }\r\n //Trigger tab activation event\r\n $currentTab.trigger('tabactivate', $currentTab);\r\n });\r\n //Window resize function \r\n $(window).resize(function () {\r\n $respTabs.find('.resp-accordion-closed').removeAttr('style');\r\n });\r\n });\r\n });\r\n }\r\n });\r\n});\r\n","var $ = require('jquery');\r\n// ==================================================\r\n// fancyBox v3.1.20\r\n//\r\n// Licensed GPLv3 for open source use\r\n// or fancyBox Commercial License for commercial use\r\n//\r\n// http://fancyapps.com/fancybox/\r\n// Copyright 2017 fancyApps\r\n//\r\n// ==================================================\r\n;(function (window, document, $, undefined) {\r\n 'use strict';\r\n\r\n // If there's no jQuery, fancyBox can't work\r\n // =========================================\r\n\r\n if ( !$ ) {\r\n return;\r\n }\r\n\r\n // Check if fancyBox is already initialized\r\n // ========================================\r\n\r\n if ( $.fn.fancybox ) {\r\n\r\n $.error('fancyBox already initialized');\r\n\r\n return;\r\n }\r\n\r\n // Private default settings\r\n // ========================\r\n\r\n var defaults = {\r\n\r\n // Enable infinite gallery navigation\r\n loop : false,\r\n\r\n // Space around image, ignored if zoomed-in or viewport smaller than 800px\r\n margin : [44, 0],\r\n\r\n // Horizontal space between slides\r\n gutter : 50,\r\n\r\n // Enable keyboard navigation\r\n keyboard : true,\r\n\r\n // Should display navigation arrows at the screen edges\r\n arrows : true,\r\n\r\n // Should display infobar (counter and arrows at the top)\r\n infobar : false,\r\n\r\n // Should display toolbar (buttons at the top)\r\n toolbar : true,\r\n\r\n // What buttons should appear in the top right corner.\r\n // Buttons will be created using templates from `btnTpl` option\r\n // and they will be placed into toolbar (class=\"fancybox-toolbar\"` element)\r\n buttons : [\r\n 'slideShow',\r\n 'fullScreen',\r\n 'thumbs',\r\n 'close'\r\n ],\r\n\r\n // Detect \"idle\" time in seconds\r\n idleTime : 4,\r\n\r\n // Should display buttons at top right corner of the content\r\n // If 'auto' - they will be created for content having type 'html', 'inline' or 'ajax'\r\n // Use template from `btnTpl.smallBtn` for customization\r\n smallBtn : 'auto',\r\n\r\n // Disable right-click and use simple image protection for images\r\n protect : false,\r\n\r\n // Shortcut to make content \"modal\" - disable keyboard navigtion, hide buttons, etc\r\n modal : false,\r\n\r\n image : {\r\n\r\n // Wait for images to load before displaying\r\n // Requires predefined image dimensions\r\n // If 'auto' - will zoom in thumbnail if 'width' and 'height' attributes are found\r\n preload : \"auto\",\r\n\r\n },\r\n\r\n ajax : {\r\n\r\n // Object containing settings for ajax request\r\n settings : {\r\n\r\n // This helps to indicate that request comes from the modal\r\n // Feel free to change naming\r\n data : {\r\n fancybox : true\r\n }\r\n }\r\n\r\n },\r\n\r\n iframe : {\r\n\r\n // Iframe template\r\n tpl : '<iframe id=\"fancybox-frame{rnd}\" name=\"fancybox-frame{rnd}\" class=\"fancybox-iframe\" frameborder=\"0\" vspace=\"0\" hspace=\"0\" webkitAllowFullScreen mozallowfullscreen allowFullScreen allowtransparency=\"true\" src=\"\"></iframe>',\r\n\r\n // Preload iframe before displaying it\r\n // This allows to calculate iframe content width and height\r\n // (note: Due to \"Same Origin Policy\", you can't get cross domain data).\r\n preload : true,\r\n\r\n // Custom CSS styling for iframe wrapping element\r\n // You can use this to set custom iframe dimensions\r\n css : {},\r\n\r\n // Iframe tag attributes\r\n attr : {\r\n scrolling : 'auto'\r\n }\r\n\r\n },\r\n\r\n // Open/close animation type\r\n // Possible values:\r\n // false - disable\r\n // \"zoom\" - zoom images from/to thumbnail\r\n // \"fade\"\r\n // \"zoom-in-out\"\r\n //\r\n animationEffect : \"zoom\",\r\n\r\n // Duration in ms for open/close animation\r\n animationDuration : 366,\r\n\r\n // Should image change opacity while zooming\r\n // If opacity is 'auto', then opacity will be changed if image and thumbnail have different aspect ratios\r\n zoomOpacity : 'auto',\r\n\r\n // Transition effect between slides\r\n //\r\n // Possible values:\r\n // false - disable\r\n // \"fade'\r\n // \"slide'\r\n // \"circular'\r\n // \"tube'\r\n // \"zoom-in-out'\r\n // \"rotate'\r\n //\r\n transitionEffect : \"fade\",\r\n\r\n // Duration in ms for transition animation\r\n transitionDuration : 366,\r\n\r\n // Custom CSS class for slide element\r\n slideClass : '',\r\n\r\n // Custom CSS class for layout\r\n baseClass : '',\r\n\r\n // Base template for layout\r\n baseTpl\t:\r\n '<div class=\"fancybox-container\" role=\"dialog\" tabindex=\"-1\">' +\r\n '<div class=\"fancybox-bg\"></div>' +\r\n '<div class=\"fancybox-inner\">' +\r\n '<div class=\"fancybox-infobar\">' +\r\n '<button data-fancybox-prev title=\"{{PREV}}\" class=\"fancybox-button fancybox-button--left\"></button>' +\r\n '<div class=\"fancybox-infobar__body\">' +\r\n '<span data-fancybox-index></span> / <span data-fancybox-count></span>' +\r\n '</div>' +\r\n '<button data-fancybox-next title=\"{{NEXT}}\" class=\"fancybox-button fancybox-button--right\"></button>' +\r\n '</div>' +\r\n '<div class=\"fancybox-toolbar\">' +\r\n '{{BUTTONS}}' +\r\n '</div>' +\r\n '<div class=\"fancybox-navigation\">' +\r\n '<button data-fancybox-prev title=\"{{PREV}}\" class=\"fancybox-arrow fancybox-arrow--left\" />' +\r\n '<button data-fancybox-next title=\"{{NEXT}}\" class=\"fancybox-arrow fancybox-arrow--right\" />' +\r\n '</div>' +\r\n '<div class=\"fancybox-stage\"></div>' +\r\n '<div class=\"fancybox-caption-wrap\">' +\r\n '<div class=\"fancybox-caption\"></div>' +\r\n '</div>' +\r\n '</div>' +\r\n '</div>',\r\n\r\n // Loading indicator template\r\n spinnerTpl : '<div class=\"fancybox-loading\"></div>',\r\n\r\n // Error message template\r\n errorTpl : '<div class=\"fancybox-error\"><p>{{ERROR}}<p></div>',\r\n\r\n btnTpl : {\r\n slideShow : '<button data-fancybox-play class=\"fancybox-button fancybox-button--play\" title=\"{{PLAY_START}}\"></button>',\r\n fullScreen : '<button data-fancybox-fullscreen class=\"fancybox-button fancybox-button--fullscreen\" title=\"{{FULL_SCREEN}}\"></button>',\r\n thumbs : '<button data-fancybox-thumbs class=\"fancybox-button fancybox-button--thumbs\" title=\"{{THUMBS}}\"></button>',\r\n close : '<button data-fancybox-close class=\"fancybox-button fancybox-button--close\" title=\"{{CLOSE}}\"></button>',\r\n\r\n // This small close button will be appended to your html/inline/ajax content by default,\r\n // if \"smallBtn\" option is not set to false\r\n smallBtn : '<button data-fancybox-close class=\"fancybox-close-small\" title=\"{{CLOSE}}\"></button>'\r\n },\r\n\r\n // Container is injected into this element\r\n parentEl : 'body',\r\n\r\n\r\n // Focus handling\r\n // ==============\r\n\r\n // Try to focus on the first focusable element after opening\r\n autoFocus : true,\r\n\r\n // Put focus back to active element after closing\r\n backFocus : true,\r\n\r\n // Do not let user to focus on element outside modal content\r\n trapFocus : true,\r\n\r\n\r\n // Module specific options\r\n // =======================\r\n\r\n fullScreen : {\r\n autoStart : false,\r\n },\r\n\r\n touch : {\r\n vertical : true, // Allow to drag content vertically\r\n momentum : true // Continue movement after releasing mouse/touch when panning\r\n },\r\n\r\n // Hash value when initializing manually,\r\n // set `false` to disable hash change\r\n hash : null,\r\n\r\n // Customize or add new media types\r\n // Example:\r\n /*\r\n media : {\r\n youtube : {\r\n params : {\r\n autoplay : 0\r\n }\r\n }\r\n }\r\n */\r\n media : {},\r\n\r\n slideShow : {\r\n autoStart : false,\r\n speed : 4000\r\n },\r\n\r\n thumbs : {\r\n autoStart : false, // Display thumbnails on opening\r\n hideOnClose : true // Hide thumbnail grid when closing animation starts\r\n },\r\n\r\n // Callbacks\r\n //==========\r\n\r\n // See Documentation/API/Events for more information\r\n // Example:\r\n /*\r\n afterShow: function( instance, current ) {\r\n console.info( 'Clicked element:' );\r\n console.info( current.opts.$orig );\r\n }\r\n */\r\n\r\n onInit : $.noop, // When instance has been initialized\r\n\r\n beforeLoad : $.noop, // Before the content of a slide is being loaded\r\n afterLoad : $.noop, // When the content of a slide is done loading\r\n\r\n beforeShow : $.noop, // Before open animation starts\r\n afterShow : $.noop, // When content is done loading and animating\r\n\r\n beforeClose : $.noop, // Before the instance attempts to close. Return false to cancel the close.\r\n afterClose : $.noop, // After instance has been closed\r\n\r\n onActivate : $.noop, // When instance is brought to front\r\n onDeactivate : $.noop, // When other instance has been activated\r\n\r\n\r\n // Interaction\r\n // ===========\r\n\r\n // Use options below to customize taken action when user clicks or double clicks on the fancyBox area,\r\n // each option can be string or method that returns value.\r\n //\r\n // Possible values:\r\n // \"close\" - close instance\r\n // \"next\" - move to next gallery item\r\n // \"nextOrClose\" - move to next gallery item or close if gallery has only one item\r\n // \"toggleControls\" - show/hide controls\r\n // \"zoom\" - zoom image (if loaded)\r\n // false - do nothing\r\n\r\n // Clicked on the content\r\n clickContent : function( current, event ) {\r\n return current.type === 'image' ? 'zoom' : false;\r\n },\r\n\r\n // Clicked on the slide\r\n clickSlide : 'close',\r\n\r\n // Clicked on the background (backdrop) element\r\n clickOutside : 'close',\r\n\r\n // Same as previous two, but for double click\r\n dblclickContent : false,\r\n dblclickSlide : false,\r\n dblclickOutside : false,\r\n\r\n\r\n // Custom options when mobile device is detected\r\n // =============================================\r\n\r\n mobile : {\r\n clickContent : function( current, event ) {\r\n return current.type === 'image' ? 'toggleControls' : false;\r\n },\r\n clickSlide : function( current, event ) {\r\n return current.type === 'image' ? 'toggleControls' : \"close\";\r\n },\r\n dblclickContent : function( current, event ) {\r\n return current.type === 'image' ? 'zoom' : false;\r\n },\r\n dblclickSlide : function( current, event ) {\r\n return current.type === 'image' ? 'zoom' : false;\r\n }\r\n },\r\n\r\n\r\n // Internationalization\r\n // ============\r\n\r\n lang : 'en',\r\n i18n : {\r\n 'en' : {\r\n CLOSE : 'Close',\r\n NEXT : 'Next',\r\n PREV : 'Previous',\r\n ERROR : 'The requested content cannot be loaded. <br/> Please try again later.',\r\n PLAY_START : 'Start slideshow',\r\n PLAY_STOP : 'Pause slideshow',\r\n FULL_SCREEN : 'Full screen',\r\n THUMBS : 'Thumbnails'\r\n },\r\n 'de' : {\r\n CLOSE : 'Schliessen',\r\n NEXT : 'Weiter',\r\n PREV : 'Zurück',\r\n ERROR : 'Die angeforderten Daten konnten nicht geladen werden. <br/> Bitte versuchen Sie es später nochmal.',\r\n PLAY_START : 'Diaschau starten',\r\n PLAY_STOP : 'Diaschau beenden',\r\n FULL_SCREEN : 'Vollbild',\r\n THUMBS : 'Vorschaubilder'\r\n }\r\n }\r\n\r\n };\r\n\r\n // Few useful variables and methods\r\n // ================================\r\n\r\n var $W = $(window);\r\n var $D = $(document);\r\n\r\n var called = 0;\r\n\r\n\r\n // Check if an object is a jQuery object and not a native JavaScript object\r\n // ========================================================================\r\n\r\n var isQuery = function ( obj ) {\r\n return obj && obj.hasOwnProperty && obj instanceof $;\r\n };\r\n\r\n\r\n // Handle multiple browsers for \"requestAnimationFrame\" and \"cancelAnimationFrame\"\r\n // ===============================================================================\r\n\r\n var requestAFrame = (function () {\r\n return window.requestAnimationFrame ||\r\n window.webkitRequestAnimationFrame ||\r\n window.mozRequestAnimationFrame ||\r\n window.oRequestAnimationFrame ||\r\n // if all else fails, use setTimeout\r\n function (callback) {\r\n return window.setTimeout(callback, 1000 / 60);\r\n };\r\n })();\r\n\r\n\r\n // Detect the supported transition-end event property name\r\n // =======================================================\r\n\r\n var transitionEnd = (function () {\r\n var t, el = document.createElement(\"fakeelement\");\r\n\r\n var transitions = {\r\n \"transition\" : \"transitionend\",\r\n \"OTransition\" : \"oTransitionEnd\",\r\n \"MozTransition\" : \"transitionend\",\r\n \"WebkitTransition\": \"webkitTransitionEnd\"\r\n };\r\n\r\n for (t in transitions) {\r\n if (el.style[t] !== undefined){\r\n return transitions[t];\r\n }\r\n }\r\n })();\r\n\r\n\r\n // Force redraw on an element.\r\n // This helps in cases where the browser doesn't redraw an updated element properly.\r\n // =================================================================================\r\n\r\n var forceRedraw = function( $el ) {\r\n return ( $el && $el.length && $el[0].offsetHeight );\r\n };\r\n\r\n\r\n // Class definition\r\n // ================\r\n\r\n var FancyBox = function( content, opts, index ) {\r\n var self = this;\r\n\r\n self.opts = $.extend( true, { index : index }, defaults, opts || {} );\r\n\r\n // Exclude buttons option from deep merging\r\n if ( opts && $.isArray( opts.buttons ) ) {\r\n self.opts.buttons = opts.buttons;\r\n }\r\n\r\n self.id = self.opts.id || ++called;\r\n self.group = [];\r\n\r\n self.currIndex = parseInt( self.opts.index, 10 ) || 0;\r\n self.prevIndex = null;\r\n\r\n self.prevPos = null;\r\n self.currPos = 0;\r\n\r\n self.firstRun = null;\r\n\r\n // Create group elements from original item collection\r\n self.createGroup( content );\r\n\r\n if ( !self.group.length ) {\r\n return;\r\n }\r\n\r\n // Save last active element and current scroll position\r\n self.$lastFocus = $(document.activeElement).blur();\r\n\r\n // Collection of gallery objects\r\n self.slides = {};\r\n\r\n self.init( content );\r\n\r\n };\r\n\r\n $.extend(FancyBox.prototype, {\r\n\r\n // Create DOM structure\r\n // ====================\r\n\r\n init : function() {\r\n var self = this;\r\n\r\n var testWidth, $container, buttonStr;\r\n\r\n var firstItemOpts = self.group[ self.currIndex ].opts;\r\n\r\n self.scrollTop = $D.scrollTop();\r\n self.scrollLeft = $D.scrollLeft();\r\n\r\n\r\n // Hide scrollbars\r\n // ===============\r\n\r\n if ( !$.fancybox.getInstance() && !$.fancybox.isMobile && $( 'body' ).css('overflow') !== 'hidden' ) {\r\n testWidth = $( 'body' ).width();\r\n\r\n $( 'html' ).addClass( 'fancybox-enabled' );\r\n\r\n // Compare body width after applying \"overflow: hidden\"\r\n testWidth = $( 'body' ).width() - testWidth;\r\n\r\n // If width has changed - compensate missing scrollbars by adding right margin\r\n if ( testWidth > 1 ) {\r\n $( 'head' ).append( '<style id=\"fancybox-style-noscroll\" type=\"text/css\">.compensate-for-scrollbar, .fancybox-enabled body { margin-right: ' + testWidth + 'px; }</style>' );\r\n }\r\n }\r\n\r\n\r\n // Build html markup and set references\r\n // ====================================\r\n\r\n // Build html code for buttons and insert into main template\r\n buttonStr = '';\r\n\r\n $.each( firstItemOpts.buttons, function( index, value ) {\r\n buttonStr += ( firstItemOpts.btnTpl[ value ] || '' );\r\n });\r\n\r\n // Create markup from base template, it will be initially hidden to\r\n // avoid unnecessary work like painting while initializing is not complete\r\n $container = $( self.translate( self, firstItemOpts.baseTpl.replace( '\\{\\{BUTTONS\\}\\}', buttonStr ) ) )\r\n .addClass( 'fancybox-is-hidden' )\r\n .attr('id', 'fancybox-container-' + self.id)\r\n .addClass( firstItemOpts.baseClass )\r\n .data( 'FancyBox', self )\r\n .prependTo( firstItemOpts.parentEl );\r\n\r\n // Create object holding references to jQuery wrapped nodes\r\n self.$refs = {\r\n container : $container\r\n };\r\n\r\n [ 'bg', 'inner', 'infobar', 'toolbar', 'stage', 'caption' ].forEach(function(item) {\r\n self.$refs[ item ] = $container.find( '.fancybox-' + item );\r\n });\r\n\r\n // Check for redundant elements\r\n if ( !firstItemOpts.arrows || self.group.length < 2 ) {\r\n $container.find('.fancybox-navigation').remove();\r\n }\r\n\r\n if ( !firstItemOpts.infobar ) {\r\n self.$refs.infobar.remove();\r\n }\r\n\r\n if ( !firstItemOpts.toolbar ) {\r\n self.$refs.toolbar.remove();\r\n }\r\n\r\n self.trigger( 'onInit' );\r\n\r\n // Bring to front and enable events\r\n self.activate();\r\n\r\n // Build slides, load and reveal content\r\n self.jumpTo( self.currIndex );\r\n },\r\n\r\n\r\n // Simple i18n support - replaces object keys found in template\r\n // with corresponding values\r\n // ============================================================\r\n\r\n translate : function( obj, str ) {\r\n var arr = obj.opts.i18n[ obj.opts.lang ];\r\n\r\n return str.replace(/\\{\\{(\\w+)\\}\\}/g, function(match, n) {\r\n var value = arr[n];\r\n\r\n if ( value === undefined ) {\r\n return match;\r\n }\r\n\r\n return value;\r\n });\r\n },\r\n\r\n // Create array of gally item objects\r\n // Check if each object has valid type and content\r\n // ===============================================\r\n\r\n createGroup : function ( content ) {\r\n var self = this;\r\n var items = $.makeArray( content );\r\n\r\n $.each(items, function( i, item ) {\r\n var obj = {},\r\n opts = {},\r\n data = [],\r\n $item,\r\n type,\r\n src,\r\n srcParts;\r\n\r\n // Step 1 - Make sure we have an object\r\n // ====================================\r\n\r\n if ( $.isPlainObject( item ) ) {\r\n\r\n // We probably have manual usage here, something like\r\n // $.fancybox.open( [ { src : \"image.jpg\", type : \"image\" } ] )\r\n\r\n obj = item;\r\n opts = item.opts || item;\r\n\r\n } else if ( $.type( item ) === 'object' && $( item ).length ) {\r\n\r\n // Here we propbably have jQuery collection returned by some selector\r\n\r\n $item = $( item );\r\n data = $item.data();\r\n\r\n opts = 'options' in data ? data.options : {};\r\n opts = $.type( opts ) === 'object' ? opts : {};\r\n\r\n obj.src = 'src' in data ? data.src : ( opts.src || $item.attr( 'href' ) );\r\n\r\n [ 'width', 'height', 'thumb', 'type', 'filter' ].forEach(function(item) {\r\n if ( item in data ) {\r\n opts[ item ] = data[ item ];\r\n }\r\n });\r\n\r\n if ( 'srcset' in data ) {\r\n opts.image = { srcset : data.srcset };\r\n }\r\n\r\n opts.$orig = $item;\r\n\r\n if ( !obj.type && !obj.src ) {\r\n obj.type = 'inline';\r\n obj.src = item;\r\n }\r\n\r\n } else {\r\n\r\n // Assume we have a simple html code, for example:\r\n // $.fancybox.open( '<div><h1>Hi!</h1></div>' );\r\n\r\n obj = {\r\n type : 'html',\r\n src : item + ''\r\n };\r\n\r\n }\r\n\r\n // Each gallery object has full collection of options\r\n obj.opts = $.extend( true, {}, self.opts, opts );\r\n\r\n if ( $.fancybox.isMobile ) {\r\n obj.opts = $.extend( true, {}, obj.opts, obj.opts.mobile );\r\n }\r\n\r\n\r\n // Step 2 - Make sure we have content type, if not - try to guess\r\n // ==============================================================\r\n\r\n type = obj.type || obj.opts.type;\r\n src = obj.src || '';\r\n\r\n if ( !type && src ) {\r\n if ( src.match(/(^data:image\\/[a-z0-9+\\/=]*,)|(\\.(jp(e|g|eg)|gif|png|bmp|webp|svg|ico)((\\?|#).*)?$)/i) ) {\r\n type = 'image';\r\n\r\n } else if ( src.match(/\\.(pdf)((\\?|#).*)?$/i) ) {\r\n type = 'pdf';\r\n\r\n } else if ( src.charAt(0) === '#' ) {\r\n type = 'inline';\r\n }\r\n }\r\n\r\n obj.type = type;\r\n\r\n\r\n // Step 3 - Some adjustments\r\n // =========================\r\n\r\n obj.index = self.group.length;\r\n\r\n // Check if $orig and $thumb objects exist\r\n if ( obj.opts.$orig && !obj.opts.$orig.length ) {\r\n delete obj.opts.$orig;\r\n }\r\n\r\n if ( !obj.opts.$thumb && obj.opts.$orig ) {\r\n obj.opts.$thumb = obj.opts.$orig.find( 'img:first' );\r\n }\r\n\r\n if ( obj.opts.$thumb && !obj.opts.$thumb.length ) {\r\n delete obj.opts.$thumb;\r\n }\r\n\r\n // Caption is a \"special\" option, it can be passed as a method\r\n if ( $.type( obj.opts.caption ) === 'function' ) {\r\n obj.opts.caption = obj.opts.caption.apply( item, [ self, obj ] );\r\n\r\n } else if ( 'caption' in data ) {\r\n obj.opts.caption = data.caption;\r\n }\r\n\r\n // Make sure we have caption as a string\r\n obj.opts.caption = obj.opts.caption === undefined ? '' : obj.opts.caption + '';\r\n\r\n // Check if url contains \"filter\" used to filter the content\r\n // Example: \"ajax.html #something\"\r\n if ( type === 'ajax' ) {\r\n srcParts = src.split(/\\s+/, 2);\r\n\r\n if ( srcParts.length > 1 ) {\r\n obj.src = srcParts.shift();\r\n\r\n obj.opts.filter = srcParts.shift();\r\n }\r\n }\r\n\r\n if ( obj.opts.smallBtn == 'auto' ) {\r\n\r\n if ( $.inArray( type, ['html', 'inline', 'ajax'] ) > -1 ) {\r\n obj.opts.toolbar = false;\r\n obj.opts.smallBtn = true;\r\n\r\n } else {\r\n obj.opts.smallBtn = false;\r\n }\r\n\r\n }\r\n\r\n // If the type is \"pdf\", then simply load file into iframe\r\n if ( type === 'pdf' ) {\r\n obj.type = 'iframe';\r\n\r\n obj.opts.iframe.preload = false;\r\n }\r\n\r\n // Hide all buttons and disable interactivity for modal items\r\n if ( obj.opts.modal ) {\r\n\r\n obj.opts = $.extend(true, obj.opts, {\r\n // Remove buttons\r\n infobar : 0,\r\n toolbar : 0,\r\n\r\n smallBtn : 0,\r\n\r\n // Disable keyboard navigation\r\n keyboard : 0,\r\n\r\n // Disable some modules\r\n slideShow : 0,\r\n fullScreen : 0,\r\n thumbs : 0,\r\n touch : 0,\r\n\r\n // Disable click event handlers\r\n clickContent : false,\r\n clickSlide : false,\r\n clickOutside : false,\r\n dblclickContent : false,\r\n dblclickSlide : false,\r\n dblclickOutside : false\r\n });\r\n\r\n }\r\n\r\n // Step 4 - Add processed object to group\r\n // ======================================\r\n\r\n self.group.push( obj );\r\n\r\n });\r\n\r\n },\r\n\r\n\r\n // Attach an event handler functions for:\r\n // - navigation buttons\r\n // - browser scrolling, resizing;\r\n // - focusing\r\n // - keyboard\r\n // - detect idle\r\n // ======================================\r\n\r\n addEvents : function() {\r\n var self = this;\r\n\r\n self.removeEvents();\r\n\r\n // Make navigation elements clickable\r\n self.$refs.container.on('click.fb-close', '[data-fancybox-close]', function(e) {\r\n e.stopPropagation();\r\n e.preventDefault();\r\n\r\n self.close( e );\r\n\r\n }).on( 'click.fb-prev touchend.fb-prev', '[data-fancybox-prev]', function(e) {\r\n e.stopPropagation();\r\n e.preventDefault();\r\n\r\n self.previous();\r\n\r\n }).on( 'click.fb-next touchend.fb-next', '[data-fancybox-next]', function(e) {\r\n e.stopPropagation();\r\n e.preventDefault();\r\n\r\n self.next();\r\n\r\n });\r\n\r\n\r\n // Handle page scrolling and browser resizing\r\n $W.on('orientationchange.fb resize.fb', function(e) {\r\n\r\n if ( e && e.originalEvent && e.originalEvent.type === \"resize\" ) {\r\n\r\n requestAFrame(function() {\r\n self.update();\r\n });\r\n\r\n } else {\r\n\r\n self.$refs.stage.hide();\r\n\r\n setTimeout(function() {\r\n self.$refs.stage.show();\r\n\r\n self.update();\r\n }, 500);\r\n\r\n }\r\n\r\n });\r\n\r\n // Trap keyboard focus inside of the modal, so the user does not accidentally tab outside of the modal\r\n // (a.k.a. \"escaping the modal\")\r\n $D.on('focusin.fb', function(e) {\r\n var instance = $.fancybox ? $.fancybox.getInstance() : null;\r\n\r\n if ( instance.isClosing || !instance.current || !instance.current.opts.trapFocus || $( e.target ).hasClass( 'fancybox-container' ) || $( e.target ).is( document ) ) {\r\n return;\r\n }\r\n\r\n if ( instance && $( e.target ).css( 'position' ) !== 'fixed' && !instance.$refs.container.has( e.target ).length ) {\r\n e.stopPropagation();\r\n\r\n instance.focus();\r\n\r\n // Sometimes page gets scrolled, set it back\r\n $W.scrollTop( self.scrollTop ).scrollLeft( self.scrollLeft );\r\n }\r\n });\r\n\r\n\r\n // Enable keyboard navigation\r\n $D.on('keydown.fb', function (e) {\r\n var current = self.current,\r\n keycode = e.keyCode || e.which;\r\n\r\n if ( !current || !current.opts.keyboard ) {\r\n return;\r\n }\r\n\r\n if ( $(e.target).is('input') || $(e.target).is('textarea') ) {\r\n return;\r\n }\r\n\r\n // Backspace and Esc keys\r\n if ( keycode === 8 || keycode === 27 ) {\r\n e.preventDefault();\r\n\r\n self.close( e );\r\n\r\n return;\r\n }\r\n\r\n // Left arrow and Up arrow\r\n if ( keycode === 37 || keycode === 38 ) {\r\n e.preventDefault();\r\n\r\n self.previous();\r\n\r\n return;\r\n }\r\n\r\n // Righ arrow and Down arrow\r\n if ( keycode === 39 || keycode === 40 ) {\r\n e.preventDefault();\r\n\r\n self.next();\r\n\r\n return;\r\n }\r\n\r\n self.trigger('afterKeydown', e, keycode);\r\n });\r\n\r\n\r\n // Hide controls after some inactivity period\r\n if ( self.group[ self.currIndex ].opts.idleTime ) {\r\n self.idleSecondsCounter = 0;\r\n\r\n $D.on('mousemove.fb-idle mouseenter.fb-idle mouseleave.fb-idle mousedown.fb-idle touchstart.fb-idle touchmove.fb-idle scroll.fb-idle keydown.fb-idle', function() {\r\n self.idleSecondsCounter = 0;\r\n\r\n if ( self.isIdle ) {\r\n self.showControls();\r\n }\r\n\r\n self.isIdle = false;\r\n });\r\n\r\n self.idleInterval = window.setInterval(function() {\r\n\r\n self.idleSecondsCounter++;\r\n\r\n if ( self.idleSecondsCounter >= self.group[ self.currIndex ].opts.idleTime ) {\r\n self.isIdle = true;\r\n self.idleSecondsCounter = 0;\r\n\r\n self.hideControls();\r\n }\r\n\r\n }, 1000);\r\n }\r\n\r\n },\r\n\r\n\r\n // Remove events added by the core\r\n // ===============================\r\n\r\n removeEvents : function () {\r\n var self = this;\r\n\r\n $W.off( 'orientationchange.fb resize.fb' );\r\n $D.off( 'focusin.fb keydown.fb .fb-idle' );\r\n\r\n this.$refs.container.off( '.fb-close .fb-prev .fb-next' );\r\n\r\n if ( self.idleInterval ) {\r\n window.clearInterval( self.idleInterval );\r\n\r\n self.idleInterval = null;\r\n }\r\n },\r\n\r\n\r\n // Change to previous gallery item\r\n // ===============================\r\n\r\n previous : function( duration ) {\r\n return this.jumpTo( this.currPos - 1, duration );\r\n },\r\n\r\n\r\n // Change to next gallery item\r\n // ===========================\r\n\r\n next : function( duration ) {\r\n return this.jumpTo( this.currPos + 1, duration );\r\n },\r\n\r\n\r\n // Switch to selected gallery item\r\n // ===============================\r\n\r\n jumpTo : function ( pos, duration, slide ) {\r\n var self = this,\r\n firstRun,\r\n loop,\r\n current,\r\n previous,\r\n canvasWidth,\r\n currentPos,\r\n transitionProps;\r\n\r\n var groupLen = self.group.length;\r\n\r\n if ( self.isSliding || self.isClosing || ( self.isAnimating && self.firstRun ) ) {\r\n return;\r\n }\r\n\r\n pos = parseInt( pos, 10 );\r\n loop = self.current ? self.current.opts.loop : self.opts.loop;\r\n\r\n if ( !loop && ( pos < 0 || pos >= groupLen ) ) {\r\n return false;\r\n }\r\n\r\n firstRun = self.firstRun = ( self.firstRun === null );\r\n\r\n if ( groupLen < 2 && !firstRun && !!self.isSliding ) {\r\n return;\r\n }\r\n\r\n previous = self.current;\r\n\r\n self.prevIndex = self.currIndex;\r\n self.prevPos = self.currPos;\r\n\r\n // Create slides\r\n current = self.createSlide( pos );\r\n\r\n if ( groupLen > 1 ) {\r\n if ( loop || current.index > 0 ) {\r\n self.createSlide( pos - 1 );\r\n }\r\n\r\n if ( loop || current.index < groupLen - 1 ) {\r\n self.createSlide( pos + 1 );\r\n }\r\n }\r\n\r\n self.current = current;\r\n self.currIndex = current.index;\r\n self.currPos = current.pos;\r\n\r\n self.trigger( 'beforeShow', firstRun );\r\n\r\n self.updateControls();\r\n\r\n currentPos = $.fancybox.getTranslate( current.$slide );\r\n\r\n current.isMoved = ( currentPos.left !== 0 || currentPos.top !== 0 ) && !current.$slide.hasClass( 'fancybox-animated' );\r\n current.forcedDuration = undefined;\r\n\r\n if ( $.isNumeric( duration ) ) {\r\n current.forcedDuration = duration;\r\n } else {\r\n duration = current.opts[ firstRun ? 'animationDuration' : 'transitionDuration' ];\r\n }\r\n\r\n duration = parseInt( duration, 10 );\r\n\r\n // Fresh start - reveal container, current slide and start loading content\r\n if ( firstRun ) {\r\n\r\n if ( current.opts.animationEffect && duration ) {\r\n self.$refs.container.css( 'transition-duration', duration + 'ms' );\r\n }\r\n\r\n self.$refs.container.removeClass( 'fancybox-is-hidden' );\r\n\r\n forceRedraw( self.$refs.container );\r\n\r\n self.$refs.container.addClass( 'fancybox-is-open' );\r\n\r\n // Make first slide visible (to display loading icon, if needed)\r\n current.$slide.addClass( 'fancybox-slide--current' );\r\n\r\n self.loadSlide( current );\r\n\r\n self.preload();\r\n\r\n return;\r\n }\r\n\r\n // Clean up\r\n $.each(self.slides, function( index, slide ) {\r\n $.fancybox.stop( slide.$slide );\r\n });\r\n\r\n // Make current that slide is visible even if content is still loading\r\n current.$slide.removeClass( 'fancybox-slide--next fancybox-slide--previous' ).addClass( 'fancybox-slide--current' );\r\n\r\n // If slides have been dragged, animate them to correct position\r\n if ( current.isMoved ) {\r\n canvasWidth = Math.round( current.$slide.width() );\r\n\r\n $.each(self.slides, function( index, slide ) {\r\n var pos = slide.pos - current.pos;\r\n\r\n $.fancybox.animate( slide.$slide, {\r\n top : 0,\r\n left : ( pos * canvasWidth ) + ( pos * slide.opts.gutter )\r\n }, duration, function() {\r\n\r\n slide.$slide.removeAttr('style').removeClass( 'fancybox-slide--next fancybox-slide--previous' );\r\n\r\n if ( slide.pos === self.currPos ) {\r\n current.isMoved = false;\r\n\r\n self.complete();\r\n }\r\n });\r\n });\r\n\r\n } else {\r\n self.$refs.stage.children().removeAttr( 'style' );\r\n }\r\n\r\n // Start transition that reveals current content\r\n // or wait when it will be loaded\r\n\r\n if ( current.isLoaded ) {\r\n self.revealContent( current );\r\n\r\n } else {\r\n self.loadSlide( current );\r\n }\r\n\r\n self.preload();\r\n\r\n if ( previous.pos === current.pos ) {\r\n return;\r\n }\r\n\r\n // Handle previous slide\r\n // =====================\r\n\r\n transitionProps = 'fancybox-slide--' + ( previous.pos > current.pos ? 'next' : 'previous' );\r\n\r\n previous.$slide.removeClass( 'fancybox-slide--complete fancybox-slide--current fancybox-slide--next fancybox-slide--previous' );\r\n\r\n previous.isComplete = false;\r\n\r\n if ( !duration || ( !current.isMoved && !current.opts.transitionEffect ) ) {\r\n return;\r\n }\r\n\r\n if ( current.isMoved ) {\r\n previous.$slide.addClass( transitionProps );\r\n\r\n } else {\r\n\r\n transitionProps = 'fancybox-animated ' + transitionProps + ' fancybox-fx-' + current.opts.transitionEffect;\r\n\r\n $.fancybox.animate( previous.$slide, transitionProps, duration, function() {\r\n previous.$slide.removeClass( transitionProps ).removeAttr( 'style' );\r\n });\r\n\r\n }\r\n\r\n },\r\n\r\n\r\n // Create new \"slide\" element\r\n // These are gallery items that are actually added to DOM\r\n // =======================================================\r\n\r\n createSlide : function( pos ) {\r\n\r\n var self = this;\r\n var $slide;\r\n var index;\r\n\r\n index = pos % self.group.length;\r\n index = index < 0 ? self.group.length + index : index;\r\n\r\n if ( !self.slides[ pos ] && self.group[ index ] ) {\r\n $slide = $('<div class=\"fancybox-slide\"></div>').appendTo( self.$refs.stage );\r\n\r\n self.slides[ pos ] = $.extend( true, {}, self.group[ index ], {\r\n pos : pos,\r\n $slide : $slide,\r\n isLoaded : false,\r\n });\r\n\r\n self.updateSlide( self.slides[ pos ] );\r\n }\r\n\r\n return self.slides[ pos ];\r\n },\r\n\r\n\r\n // Scale image to the actual size of the image\r\n // ===========================================\r\n\r\n scaleToActual : function( x, y, duration ) {\r\n\r\n var self = this;\r\n\r\n var current = self.current;\r\n var $what = current.$content;\r\n\r\n var imgPos, posX, posY, scaleX, scaleY;\r\n\r\n var canvasWidth = parseInt( current.$slide.width(), 10 );\r\n var canvasHeight = parseInt( current.$slide.height(), 10 );\r\n\r\n var newImgWidth = current.width;\r\n var newImgHeight = current.height;\r\n\r\n if ( !( current.type == 'image' && !current.hasError) || !$what || self.isAnimating) {\r\n return;\r\n }\r\n\r\n $.fancybox.stop( $what );\r\n\r\n self.isAnimating = true;\r\n\r\n x = x === undefined ? canvasWidth * 0.5 : x;\r\n y = y === undefined ? canvasHeight * 0.5 : y;\r\n\r\n imgPos = $.fancybox.getTranslate( $what );\r\n\r\n scaleX = newImgWidth / imgPos.width;\r\n scaleY = newImgHeight / imgPos.height;\r\n\r\n // Get center position for original image\r\n posX = ( canvasWidth * 0.5 - newImgWidth * 0.5 );\r\n posY = ( canvasHeight * 0.5 - newImgHeight * 0.5 );\r\n\r\n // Make sure image does not move away from edges\r\n if ( newImgWidth > canvasWidth ) {\r\n posX = imgPos.left * scaleX - ( ( x * scaleX ) - x );\r\n\r\n if ( posX > 0 ) {\r\n posX = 0;\r\n }\r\n\r\n if ( posX < canvasWidth - newImgWidth ) {\r\n posX = canvasWidth - newImgWidth;\r\n }\r\n }\r\n\r\n if ( newImgHeight > canvasHeight) {\r\n posY = imgPos.top * scaleY - ( ( y * scaleY ) - y );\r\n\r\n if ( posY > 0 ) {\r\n posY = 0;\r\n }\r\n\r\n if ( posY < canvasHeight - newImgHeight ) {\r\n posY = canvasHeight - newImgHeight;\r\n }\r\n }\r\n\r\n self.updateCursor( newImgWidth, newImgHeight );\r\n\r\n $.fancybox.animate( $what, {\r\n top : posY,\r\n left : posX,\r\n scaleX : scaleX,\r\n scaleY : scaleY\r\n }, duration || 330, function() {\r\n self.isAnimating = false;\r\n });\r\n\r\n // Stop slideshow\r\n if ( self.SlideShow && self.SlideShow.isActive ) {\r\n self.SlideShow.stop();\r\n }\r\n },\r\n\r\n\r\n // Scale image to fit inside parent element\r\n // ========================================\r\n\r\n scaleToFit : function( duration ) {\r\n\r\n var self = this;\r\n\r\n var current = self.current;\r\n var $what = current.$content;\r\n var end;\r\n\r\n if ( !( current.type == 'image' && !current.hasError) || !$what || self.isAnimating ) {\r\n return;\r\n }\r\n\r\n $.fancybox.stop( $what );\r\n\r\n self.isAnimating = true;\r\n\r\n end = self.getFitPos( current );\r\n\r\n self.updateCursor( end.width, end.height );\r\n\r\n $.fancybox.animate( $what, {\r\n top : end.top,\r\n left : end.left,\r\n scaleX : end.width / $what.width(),\r\n scaleY : end.height / $what.height()\r\n }, duration || 330, function() {\r\n self.isAnimating = false;\r\n });\r\n\r\n },\r\n\r\n // Calculate image size to fit inside viewport\r\n // ===========================================\r\n\r\n getFitPos : function( slide ) {\r\n var self = this;\r\n var $what = slide.$content;\r\n\r\n var imgWidth = slide.width;\r\n var imgHeight = slide.height;\r\n\r\n var margin = slide.opts.margin;\r\n\r\n var canvasWidth, canvasHeight, minRatio, width, height;\r\n\r\n if ( !$what || !$what.length || ( !imgWidth && !imgHeight) ) {\r\n return false;\r\n }\r\n\r\n // Convert \"margin to CSS style: [ top, right, bottom, left ]\r\n if ( $.type( margin ) === \"number\" ) {\r\n margin = [ margin, margin ];\r\n }\r\n\r\n if ( margin.length == 2 ) {\r\n margin = [ margin[0], margin[1], margin[0], margin[1] ];\r\n }\r\n\r\n if ( $W.width() < 800 ) {\r\n margin = [ 0, 0, 0, 0 ];\r\n }\r\n\r\n // We can not use $slide width here, because it can have different diemensions while in transiton\r\n canvasWidth = parseInt( self.$refs.stage.width(), 10 ) - ( margin[ 1 ] + margin[ 3 ] );\r\n canvasHeight = parseInt( self.$refs.stage.height(), 10 ) - ( margin[ 0 ] + margin[ 2 ] );\r\n\r\n minRatio = Math.min(1, canvasWidth / imgWidth, canvasHeight / imgHeight );\r\n\r\n width = Math.floor( minRatio * imgWidth );\r\n height = Math.floor( minRatio * imgHeight );\r\n\r\n // Use floor rounding to make sure it really fits\r\n return {\r\n top : Math.floor( ( canvasHeight - height ) * 0.5 ) + margin[ 0 ],\r\n left : Math.floor( ( canvasWidth - width ) * 0.5 ) + margin[ 3 ],\r\n width : width,\r\n height : height\r\n };\r\n\r\n },\r\n\r\n\r\n // Update position and content of all slides\r\n // =========================================\r\n\r\n update : function() {\r\n\r\n var self = this;\r\n\r\n $.each( self.slides, function( key, slide ) {\r\n self.updateSlide( slide );\r\n });\r\n\r\n },\r\n\r\n\r\n // Update slide position and scale content to fit\r\n // ==============================================\r\n\r\n updateSlide : function( slide ) {\r\n\r\n var self = this;\r\n var $what = slide.$content;\r\n\r\n if ( $what && ( slide.width || slide.height ) ) {\r\n $.fancybox.stop( $what );\r\n\r\n $.fancybox.setTranslate( $what, self.getFitPos( slide ) );\r\n\r\n if ( slide.pos === self.currPos ) {\r\n self.updateCursor();\r\n }\r\n }\r\n\r\n slide.$slide.trigger( 'refresh' );\r\n\r\n self.trigger( 'onUpdate', slide );\r\n\r\n },\r\n\r\n // Update cursor style depending if content can be zoomed\r\n // ======================================================\r\n\r\n updateCursor : function( nextWidth, nextHeight ) {\r\n\r\n var self = this;\r\n var isScaledDown;\r\n\r\n var $container = self.$refs.container.removeClass('fancybox-is-zoomable fancybox-can-zoomIn fancybox-can-drag fancybox-can-zoomOut');\r\n\r\n if ( !self.current || self.isClosing ) {\r\n return;\r\n }\r\n\r\n if ( self.isZoomable() ) {\r\n\r\n $container.addClass( 'fancybox-is-zoomable' );\r\n\r\n if ( nextWidth !== undefined && nextHeight !== undefined ) {\r\n isScaledDown = nextWidth < self.current.width && nextHeight < self.current.height;\r\n\r\n } else {\r\n isScaledDown = self.isScaledDown();\r\n }\r\n\r\n if ( isScaledDown ) {\r\n\r\n // If image is scaled down, then, obviously, it can be zoomed to full size\r\n $container.addClass('fancybox-can-zoomIn');\r\n\r\n } else {\r\n\r\n if ( self.current.opts.touch ) {\r\n\r\n // If image size ir largen than available available and touch module is not disable,\r\n // then user can do panning\r\n $container.addClass('fancybox-can-drag');\r\n\r\n } else {\r\n $container.addClass('fancybox-can-zoomOut');\r\n }\r\n\r\n }\r\n\r\n } else if ( self.current.opts.touch ) {\r\n $container.addClass('fancybox-can-drag');\r\n }\r\n\r\n },\r\n\r\n\r\n // Check if current slide is zoomable\r\n // ==================================\r\n\r\n isZoomable : function() {\r\n\r\n var self = this;\r\n\r\n var current = self.current;\r\n var fitPos;\r\n\r\n if ( !current || self.isClosing ) {\r\n return;\r\n }\r\n\r\n // Assume that slide is zoomable if\r\n // - image is loaded successfuly\r\n // - click action is \"zoom\"\r\n // - actual size of the image is smaller than available area\r\n if ( current.type === 'image' && current.isLoaded && !current.hasError &&\r\n ( current.opts.clickContent === 'zoom' || ( $.isFunction( current.opts.clickContent ) && current.opts.clickContent( current ) === \"zoom\" ) )\r\n ) {\r\n\r\n fitPos = self.getFitPos( current );\r\n\r\n if ( current.width > fitPos.width || current.height > fitPos.height ) {\r\n return true;\r\n }\r\n\r\n }\r\n\r\n return false;\r\n\r\n },\r\n\r\n\r\n // Check if current image dimensions are smaller than actual\r\n // =========================================================\r\n\r\n isScaledDown : function() {\r\n\r\n var self = this;\r\n\r\n var current = self.current;\r\n var $what = current.$content;\r\n\r\n var rez = false;\r\n\r\n if ( $what ) {\r\n rez = $.fancybox.getTranslate( $what );\r\n rez = rez.width < current.width || rez.height < current.height;\r\n }\r\n\r\n return rez;\r\n\r\n },\r\n\r\n\r\n // Check if image dimensions exceed parent element\r\n // ===============================================\r\n\r\n canPan : function() {\r\n\r\n var self = this;\r\n\r\n var current = self.current;\r\n var $what = current.$content;\r\n\r\n var rez = false;\r\n\r\n if ( $what ) {\r\n rez = self.getFitPos( current );\r\n rez = Math.abs( $what.width() - rez.width ) > 1 || Math.abs( $what.height() - rez.height ) > 1;\r\n\r\n }\r\n\r\n return rez;\r\n\r\n },\r\n\r\n\r\n // Load content into the slide\r\n // ===========================\r\n\r\n loadSlide : function( slide ) {\r\n\r\n var self = this, type, $slide;\r\n var ajaxLoad;\r\n\r\n if ( slide.isLoading ) {\r\n return;\r\n }\r\n\r\n if ( slide.isLoaded ) {\r\n return;\r\n }\r\n\r\n slide.isLoading = true;\r\n\r\n self.trigger( 'beforeLoad', slide );\r\n\r\n type = slide.type;\r\n $slide = slide.$slide;\r\n\r\n $slide\r\n .off( 'refresh' )\r\n .trigger( 'onReset' )\r\n .addClass( 'fancybox-slide--' + ( type || 'unknown' ) )\r\n .addClass( slide.opts.slideClass );\r\n\r\n // Create content depending on the type\r\n\r\n switch ( type ) {\r\n\r\n case 'image':\r\n\r\n self.setImage( slide );\r\n\r\n break;\r\n\r\n case 'iframe':\r\n\r\n self.setIframe( slide );\r\n\r\n break;\r\n\r\n case 'html':\r\n\r\n self.setContent( slide, slide.src || slide.content );\r\n\r\n break;\r\n\r\n case 'inline':\r\n\r\n if ( $( slide.src ).length ) {\r\n self.setContent( slide, $( slide.src ) );\r\n\r\n } else {\r\n self.setError( slide );\r\n }\r\n\r\n break;\r\n\r\n case 'ajax':\r\n\r\n self.showLoading( slide );\r\n\r\n ajaxLoad = $.ajax( $.extend( {}, slide.opts.ajax.settings, {\r\n url : slide.src,\r\n success : function ( data, textStatus ) {\r\n\r\n if ( textStatus === 'success' ) {\r\n self.setContent( slide, data );\r\n }\r\n\r\n },\r\n error : function ( jqXHR, textStatus ) {\r\n\r\n if ( jqXHR && textStatus !== 'abort' ) {\r\n self.setError( slide );\r\n }\r\n\r\n }\r\n }));\r\n\r\n $slide.one( 'onReset', function () {\r\n ajaxLoad.abort();\r\n });\r\n\r\n break;\r\n\r\n default:\r\n\r\n self.setError( slide );\r\n\r\n break;\r\n\r\n }\r\n\r\n return true;\r\n\r\n },\r\n\r\n\r\n // Use thumbnail image, if possible\r\n // ================================\r\n\r\n setImage : function( slide ) {\r\n\r\n var self = this;\r\n var srcset = slide.opts.image.srcset;\r\n\r\n var found, temp, pxRatio, windowWidth;\r\n\r\n // If we have \"srcset\", then we need to find matching \"src\" value.\r\n // This is necessary, because when you set an src attribute, the browser will preload the image\r\n // before any javascript or even CSS is applied.\r\n if ( srcset ) {\r\n pxRatio = window.devicePixelRatio || 1;\r\n windowWidth = window.innerWidth * pxRatio;\r\n\r\n temp = srcset.split(',').map(function ( el ) {\r\n \t\tvar ret = {};\r\n\r\n \t\tel.trim().split(/\\s+/).forEach(function ( el, i ) {\r\n var value = parseInt( el.substring(0, el.length - 1), 10 );\r\n\r\n \t\t\tif ( i === 0 ) {\r\n \t\t\t\treturn ( ret.url = el );\r\n \t\t\t}\r\n\r\n if ( value ) {\r\n ret.value = value;\r\n ret.postfix = el[ el.length - 1 ];\r\n }\r\n\r\n \t\t});\r\n\r\n \t\treturn ret;\r\n \t});\r\n\r\n // Sort by value\r\n temp.sort(function (a, b) {\r\n return a.value - b.value;\r\n });\r\n\r\n // Ok, now we have an array of all srcset values\r\n for ( var j = 0; j < temp.length; j++ ) {\r\n var el = temp[ j ];\r\n\r\n if ( ( el.postfix === 'w' && el.value >= windowWidth ) || ( el.postfix === 'x' && el.value >= pxRatio ) ) {\r\n found = el;\r\n break;\r\n }\r\n }\r\n\r\n // If not found, take the last one\r\n if ( !found && temp.length ) {\r\n found = temp[ temp.length - 1 ];\r\n }\r\n\r\n if ( found ) {\r\n slide.src = found.url;\r\n\r\n // If we have default width/height values, we can calculate height for matching source\r\n if ( slide.width && slide.height && found.postfix == 'w' ) {\r\n slide.height = ( slide.width / slide.height ) * found.value;\r\n slide.width = found.value;\r\n }\r\n }\r\n }\r\n\r\n // This will be wrapper containing both ghost and actual image\r\n slide.$content = $('<div class=\"fancybox-image-wrap\"></div>')\r\n .addClass( 'fancybox-is-hidden' )\r\n .appendTo( slide.$slide );\r\n\r\n\r\n // If we have a thumbnail, we can display it while actual image is loading\r\n // Users will not stare at black screen and actual image will appear gradually\r\n if ( slide.opts.preload !== false && slide.opts.width && slide.opts.height && ( slide.opts.thumb || slide.opts.$thumb ) ) {\r\n\r\n slide.width = slide.opts.width;\r\n slide.height = slide.opts.height;\r\n\r\n slide.$ghost = $('<img />')\r\n .one('error', function() {\r\n\r\n $(this).remove();\r\n\r\n slide.$ghost = null;\r\n\r\n self.setBigImage( slide );\r\n\r\n })\r\n .one('load', function() {\r\n\r\n self.afterLoad( slide );\r\n\r\n self.setBigImage( slide );\r\n\r\n })\r\n .addClass( 'fancybox-image' )\r\n .appendTo( slide.$content )\r\n .attr( 'src', slide.opts.thumb || slide.opts.$thumb.attr( 'src' ) );\r\n\r\n } else {\r\n\r\n self.setBigImage( slide );\r\n\r\n }\r\n\r\n },\r\n\r\n\r\n // Create full-size image\r\n // ======================\r\n\r\n setBigImage : function ( slide ) {\r\n var self = this;\r\n var $img = $('<img />');\r\n\r\n slide.$image = $img\r\n .one('error', function() {\r\n\r\n self.setError( slide );\r\n\r\n })\r\n .one('load', function() {\r\n\r\n // Clear timeout that checks if loading icon needs to be displayed\r\n clearTimeout( slide.timouts );\r\n\r\n slide.timouts = null;\r\n\r\n if ( self.isClosing ) {\r\n return;\r\n }\r\n\r\n slide.width = this.naturalWidth;\r\n slide.height = this.naturalHeight;\r\n\r\n if ( slide.opts.image.srcset ) {\r\n $img.attr( 'sizes', '100vw' ).attr( 'srcset', slide.opts.image.srcset );\r\n }\r\n\r\n self.hideLoading( slide );\r\n\r\n if ( slide.$ghost ) {\r\n\r\n slide.timouts = setTimeout(function() {\r\n slide.timouts = null;\r\n\r\n slide.$ghost.hide();\r\n\r\n }, Math.min( 300, Math.max( 1000, slide.height / 1600 ) ) );\r\n\r\n } else {\r\n self.afterLoad( slide );\r\n }\r\n\r\n })\r\n .addClass( 'fancybox-image' )\r\n .attr('src', slide.src)\r\n .appendTo( slide.$content );\r\n\r\n if ( $img[0].complete ) {\r\n $img.trigger( 'load' );\r\n\r\n } else if( $img[0].error ) {\r\n $img.trigger( 'error' );\r\n\r\n } else {\r\n\r\n slide.timouts = setTimeout(function() {\r\n if ( !$img[0].complete && !slide.hasError ) {\r\n self.showLoading( slide );\r\n }\r\n\r\n }, 100);\r\n\r\n }\r\n\r\n },\r\n\r\n\r\n // Create iframe wrapper, iframe and bindings\r\n // ==========================================\r\n\r\n setIframe : function( slide ) {\r\n var self\t= this,\r\n opts = slide.opts.iframe,\r\n $slide\t= slide.$slide,\r\n $iframe;\r\n\r\n slide.$content = $('<div class=\"fancybox-content' + ( opts.preload ? ' fancybox-is-hidden' : '' ) + '\"></div>')\r\n .css( opts.css )\r\n .appendTo( $slide );\r\n\r\n $iframe = $( opts.tpl.replace(/\\{rnd\\}/g, new Date().getTime()) )\r\n .attr( opts.attr )\r\n .appendTo( slide.$content );\r\n\r\n if ( opts.preload ) {\r\n\r\n self.showLoading( slide );\r\n\r\n // Unfortunately, it is not always possible to determine if iframe is successfully loaded\r\n // (due to browser security policy)\r\n\r\n $iframe.on('load.fb error.fb', function(e) {\r\n this.isReady = 1;\r\n\r\n slide.$slide.trigger( 'refresh' );\r\n\r\n self.afterLoad( slide );\r\n });\r\n\r\n // Recalculate iframe content size\r\n // ===============================\r\n\r\n $slide.on('refresh.fb', function() {\r\n var $wrap = slide.$content,\r\n $contents,\r\n $body,\r\n scrollWidth,\r\n frameWidth,\r\n frameHeight;\r\n\r\n if ( $iframe[0].isReady !== 1 ) {\r\n return;\r\n }\r\n\r\n // Check if content is accessible,\r\n // it will fail if frame is not with the same origin\r\n\r\n try {\r\n $contents = $iframe.contents();\r\n $body = $contents.find('body');\r\n\r\n } catch (ignore) {}\r\n\r\n // Calculate dimensions for the wrapper\r\n if ( $body && $body.length && !( opts.css.width !== undefined && opts.css.height !== undefined ) ) {\r\n\r\n scrollWidth = $iframe[0].contentWindow.document.documentElement.scrollWidth;\r\n\r\n frameWidth\t= Math.ceil( $body.outerWidth(true) + ( $wrap.width() - scrollWidth ) );\r\n frameHeight\t= Math.ceil( $body.outerHeight(true) );\r\n\r\n // Resize wrapper to fit iframe content\r\n $wrap.css({\r\n 'width' : opts.css.width === undefined ? frameWidth + ( $wrap.outerWidth() - $wrap.innerWidth() ) : opts.css.width,\r\n 'height' : opts.css.height === undefined ? frameHeight + ( $wrap.outerHeight() - $wrap.innerHeight() ) : opts.css.height\r\n });\r\n\r\n }\r\n\r\n $wrap.removeClass( 'fancybox-is-hidden' );\r\n\r\n });\r\n\r\n } else {\r\n\r\n this.afterLoad( slide );\r\n\r\n }\r\n\r\n $iframe.attr( 'src', slide.src );\r\n\r\n if ( slide.opts.smallBtn === true ) {\r\n slide.$content.prepend( self.translate( slide, slide.opts.btnTpl.smallBtn ) );\r\n }\r\n\r\n // Remove iframe if closing or changing gallery item\r\n $slide.one( 'onReset', function () {\r\n\r\n // This helps IE not to throw errors when closing\r\n try {\r\n\r\n $( this ).find( 'iframe' ).hide().attr( 'src', '//about:blank' );\r\n\r\n } catch ( ignore ) {}\r\n\r\n $( this ).empty();\r\n\r\n slide.isLoaded = false;\r\n\r\n });\r\n\r\n },\r\n\r\n\r\n // Wrap and append content to the slide\r\n // ======================================\r\n\r\n setContent : function ( slide, content ) {\r\n\r\n var self = this;\r\n\r\n if ( self.isClosing ) {\r\n return;\r\n }\r\n\r\n self.hideLoading( slide );\r\n\r\n slide.$slide.empty();\r\n\r\n if ( isQuery( content ) && content.parent().length ) {\r\n\r\n // If content is a jQuery object, then it will be moved to the slide.\r\n // The placeholder is created so we will know where to put it back.\r\n // If user is navigating gallery fast, then the content might be already inside fancyBox\r\n // =====================================================================================\r\n\r\n // Make sure content is not already moved to fancyBox\r\n content.parent( '.fancybox-slide--inline' ).trigger( 'onReset' );\r\n\r\n // Create temporary element marking original place of the content\r\n slide.$placeholder = $( '<div></div>' ).hide().insertAfter( content );\r\n\r\n // Make sure content is visible\r\n content.css('display', 'inline-block');\r\n\r\n } else if ( !slide.hasError ) {\r\n\r\n // If content is just a plain text, try to convert it to html\r\n if ( $.type( content ) === 'string' ) {\r\n content = $('<div>').append( $.trim( content ) ).contents();\r\n\r\n // If we have text node, then add wrapping element to make vertical alignment work\r\n if ( content[0].nodeType === 3 ) {\r\n content = $('<div>').html( content );\r\n }\r\n }\r\n\r\n // If \"filter\" option is provided, then filter content\r\n if ( slide.opts.filter ) {\r\n content = $('<div>').html( content ).find( slide.opts.filter );\r\n }\r\n\r\n }\r\n\r\n slide.$slide.one('onReset', function () {\r\n\r\n // Put content back\r\n if ( slide.$placeholder ) {\r\n slide.$placeholder.after( content.hide() ).remove();\r\n\r\n slide.$placeholder = null;\r\n }\r\n\r\n // Remove custom close button\r\n if ( slide.$smallBtn ) {\r\n slide.$smallBtn.remove();\r\n\r\n slide.$smallBtn = null;\r\n }\r\n\r\n // Remove content and mark slide as not loaded\r\n if ( !slide.hasError ) {\r\n $(this).empty();\r\n\r\n slide.isLoaded = false;\r\n }\r\n\r\n });\r\n\r\n slide.$content = $( content ).appendTo( slide.$slide );\r\n\r\n if ( slide.opts.smallBtn && !slide.$smallBtn ) {\r\n slide.$smallBtn = $( self.translate( slide, slide.opts.btnTpl.smallBtn ) ).appendTo( slide.$content );\r\n }\r\n\r\n this.afterLoad( slide );\r\n },\r\n\r\n // Display error message\r\n // =====================\r\n\r\n setError : function ( slide ) {\r\n\r\n slide.hasError = true;\r\n\r\n slide.$slide.removeClass( 'fancybox-slide--' + slide.type );\r\n\r\n this.setContent( slide, this.translate( slide, slide.opts.errorTpl ) );\r\n\r\n },\r\n\r\n\r\n // Show loading icon inside the slide\r\n // ==================================\r\n\r\n showLoading : function( slide ) {\r\n\r\n var self = this;\r\n\r\n slide = slide || self.current;\r\n\r\n if ( slide && !slide.$spinner ) {\r\n slide.$spinner = $( self.opts.spinnerTpl ).appendTo( slide.$slide );\r\n }\r\n\r\n },\r\n\r\n // Remove loading icon from the slide\r\n // ==================================\r\n\r\n hideLoading : function( slide ) {\r\n\r\n var self = this;\r\n\r\n slide = slide || self.current;\r\n\r\n if ( slide && slide.$spinner ) {\r\n slide.$spinner.remove();\r\n\r\n delete slide.$spinner;\r\n }\r\n\r\n },\r\n\r\n\r\n // Adjustments after slide content has been loaded\r\n // ===============================================\r\n\r\n afterLoad : function( slide ) {\r\n\r\n var self = this;\r\n\r\n if ( self.isClosing ) {\r\n return;\r\n }\r\n\r\n slide.isLoading = false;\r\n slide.isLoaded = true;\r\n\r\n self.trigger( 'afterLoad', slide );\r\n\r\n self.hideLoading( slide );\r\n\r\n if ( slide.opts.protect && slide.$content && !slide.hasError ) {\r\n\r\n // Disable right click\r\n slide.$content.on( 'contextmenu.fb', function( e ) {\r\n if ( e.button == 2 ) {\r\n e.preventDefault();\r\n }\r\n\r\n return true;\r\n });\r\n\r\n // Add fake element on top of the image\r\n // This makes a bit harder for user to select image\r\n if ( slide.type === 'image' ) {\r\n $( '<div class=\"fancybox-spaceball\"></div>' ).appendTo( slide.$content );\r\n }\r\n\r\n }\r\n\r\n self.revealContent( slide );\r\n\r\n },\r\n\r\n\r\n // Make content visible\r\n // This method is called right after content has been loaded or\r\n // user navigates gallery and transition should start\r\n // ============================================================\r\n\r\n revealContent : function( slide ) {\r\n\r\n var self = this;\r\n var $slide = slide.$slide;\r\n\r\n var effect, effectClassName, duration, opacity, end, start = false;\r\n\r\n effect = slide.opts[ self.firstRun ? 'animationEffect' : 'transitionEffect' ];\r\n duration = slide.opts[ self.firstRun ? 'animationDuration' : 'transitionDuration' ];\r\n\r\n duration = parseInt( slide.forcedDuration === undefined ? duration : slide.forcedDuration, 10 );\r\n\r\n if ( slide.isMoved || slide.pos !== self.currPos || !duration ) {\r\n effect = false;\r\n }\r\n\r\n // Check if can zoom\r\n if ( effect === 'zoom' && !( slide.pos === self.currPos && duration && slide.type === 'image' && !slide.hasError && ( start = self.getThumbPos( slide ) ) ) ) {\r\n effect = 'fade';\r\n }\r\n\r\n\r\n // Zoom animation\r\n // ==============\r\n\r\n if ( effect === 'zoom' ) {\r\n end = self.getFitPos( slide );\r\n\r\n end.scaleX = Math.round( (end.width / start.width) * 100 ) / 100;\r\n end.scaleY = Math.round( (end.height / start.height) * 100 ) / 100;\r\n\r\n delete end.width;\r\n delete end.height;\r\n\r\n // Check if we need to animate opacity\r\n opacity = slide.opts.zoomOpacity;\r\n\r\n if ( opacity == 'auto' ) {\r\n opacity = Math.abs( slide.width / slide.height - start.width / start.height ) > 0.1;\r\n }\r\n\r\n if ( opacity ) {\r\n start.opacity = 0.1;\r\n end.opacity = 1;\r\n }\r\n\r\n // Draw image at start position\r\n $.fancybox.setTranslate( slide.$content.removeClass( 'fancybox-is-hidden' ), start );\r\n\r\n forceRedraw( slide.$content );\r\n\r\n // Start animation\r\n $.fancybox.animate( slide.$content, end, duration, function() {\r\n self.complete();\r\n });\r\n\r\n return;\r\n }\r\n\r\n\r\n self.updateSlide( slide );\r\n\r\n\r\n // Simply show content\r\n // ===================\r\n\r\n if ( !effect ) {\r\n forceRedraw( $slide );\r\n\r\n slide.$content.removeClass( 'fancybox-is-hidden' );\r\n\r\n if ( slide.pos === self.currPos ) {\r\n self.complete();\r\n }\r\n\r\n return;\r\n }\r\n\r\n $.fancybox.stop( $slide );\r\n\r\n effectClassName = 'fancybox-animated fancybox-slide--' + ( slide.pos > self.prevPos ? 'next' : 'previous' ) + ' fancybox-fx-' + effect;\r\n\r\n $slide.removeAttr( 'style' ).removeClass( 'fancybox-slide--current fancybox-slide--next fancybox-slide--previous' ).addClass( effectClassName );\r\n\r\n slide.$content.removeClass( 'fancybox-is-hidden' );\r\n\r\n //Force reflow for CSS3 transitions\r\n forceRedraw( $slide );\r\n\r\n $.fancybox.animate( $slide, 'fancybox-slide--current', duration, function(e) {\r\n $slide.removeClass( effectClassName ).removeAttr( 'style' );\r\n\r\n if ( slide.pos === self.currPos ) {\r\n self.complete();\r\n }\r\n\r\n }, true);\r\n\r\n },\r\n\r\n\r\n // Check if we can and have to zoom from thumbnail\r\n //================================================\r\n\r\n getThumbPos : function( slide ) {\r\n\r\n var self = this;\r\n var rez = false;\r\n\r\n // Check if element is inside the viewport by at least 1 pixel\r\n var isElementVisible = function( $el ) {\r\n var element = $el[0];\r\n\r\n var elementRect = element.getBoundingClientRect();\r\n var parentRects = [];\r\n\r\n var visibleInAllParents;\r\n\r\n while ( element.parentElement !== null ) {\r\n if ( $(element.parentElement).css('overflow') === 'hidden' || $(element.parentElement).css('overflow') === 'auto' ) {\r\n parentRects.push(element.parentElement.getBoundingClientRect());\r\n }\r\n\r\n element = element.parentElement;\r\n }\r\n\r\n visibleInAllParents = parentRects.every(function(parentRect){\r\n var visiblePixelX = Math.min(elementRect.right, parentRect.right) - Math.max(elementRect.left, parentRect.left);\r\n var visiblePixelY = Math.min(elementRect.bottom, parentRect.bottom) - Math.max(elementRect.top, parentRect.top);\r\n\r\n return visiblePixelX > 0 && visiblePixelY > 0;\r\n });\r\n\r\n return visibleInAllParents &&\r\n elementRect.bottom > 0 && elementRect.right > 0 &&\r\n elementRect.left < $(window).width() && elementRect.top < $(window).height();\r\n };\r\n\r\n var $thumb = slide.opts.$thumb;\r\n var thumbPos = $thumb ? $thumb.offset() : 0;\r\n var slidePos;\r\n\r\n if ( thumbPos && $thumb[0].ownerDocument === document && isElementVisible( $thumb ) ) {\r\n slidePos = self.$refs.stage.offset();\r\n\r\n rez = {\r\n top : thumbPos.top - slidePos.top + parseFloat( $thumb.css( \"border-top-width\" ) || 0 ),\r\n left : thumbPos.left - slidePos.left + parseFloat( $thumb.css( \"border-left-width\" ) || 0 ),\r\n width : $thumb.width(),\r\n height : $thumb.height(),\r\n scaleX : 1,\r\n scaleY : 1\r\n };\r\n }\r\n\r\n return rez;\r\n },\r\n\r\n\r\n // Final adjustments after current gallery item is moved to position\r\n // and it`s content is loaded\r\n // ==================================================================\r\n\r\n complete : function() {\r\n\r\n var self = this;\r\n\r\n var current = self.current;\r\n var slides = {};\r\n\r\n if ( current.isMoved || !current.isLoaded || current.isComplete ) {\r\n return;\r\n }\r\n\r\n current.isComplete = true;\r\n\r\n current.$slide.siblings().trigger( 'onReset' );\r\n\r\n // Trigger any CSS3 transiton inside the slide\r\n forceRedraw( current.$slide );\r\n\r\n current.$slide.addClass( 'fancybox-slide--complete' );\r\n\r\n // Remove unnecessary slides\r\n $.each( self.slides, function( key, slide ) {\r\n if ( slide.pos >= self.currPos - 1 && slide.pos <= self.currPos + 1 ) {\r\n slides[ slide.pos ] = slide;\r\n\r\n } else if ( slide ) {\r\n\r\n $.fancybox.stop( slide.$slide );\r\n\r\n slide.$slide.unbind().remove();\r\n }\r\n });\r\n\r\n self.slides = slides;\r\n\r\n self.updateCursor();\r\n\r\n self.trigger( 'afterShow' );\r\n\r\n // Try to focus on the first focusable element\r\n if ( $( document.activeElement ).is( '[disabled]' ) || ( current.opts.autoFocus && !( current.type == 'image' || current.type === 'iframe' ) ) ) {\r\n self.focus();\r\n }\r\n\r\n },\r\n\r\n\r\n // Preload next and previous slides\r\n // ================================\r\n\r\n preload : function() {\r\n var self = this;\r\n var next, prev;\r\n\r\n if ( self.group.length < 2 ) {\r\n return;\r\n }\r\n\r\n next = self.slides[ self.currPos + 1 ];\r\n prev = self.slides[ self.currPos - 1 ];\r\n\r\n if ( next && next.type === 'image' ) {\r\n self.loadSlide( next );\r\n }\r\n\r\n if ( prev && prev.type === 'image' ) {\r\n self.loadSlide( prev );\r\n }\r\n\r\n },\r\n\r\n\r\n // Try to find and focus on the first focusable element\r\n // ====================================================\r\n\r\n focus : function() {\r\n var current = this.current;\r\n var $el;\r\n\r\n if ( this.isClosing ) {\r\n return;\r\n }\r\n\r\n // Skip for images and iframes\r\n $el = current && current.isComplete ? current.$slide.find('button,:input,[tabindex],a').filter(':not([disabled]):visible:first') : null;\r\n $el = $el && $el.length ? $el : this.$refs.container;\r\n\r\n $el.focus();\r\n },\r\n\r\n\r\n // Activates current instance - brings container to the front and enables keyboard,\r\n // notifies other instances about deactivating\r\n // =================================================================================\r\n\r\n activate : function () {\r\n var self = this;\r\n\r\n // Deactivate all instances\r\n $( '.fancybox-container' ).each(function () {\r\n var instance = $(this).data( 'FancyBox' );\r\n\r\n // Skip self and closing instances\r\n if (instance && instance.uid !== self.uid && !instance.isClosing) {\r\n instance.trigger( 'onDeactivate' );\r\n }\r\n\r\n });\r\n\r\n if ( self.current ) {\r\n if ( self.$refs.container.index() > 0 ) {\r\n self.$refs.container.prependTo( document.body );\r\n }\r\n\r\n self.updateControls();\r\n }\r\n\r\n self.trigger( 'onActivate' );\r\n\r\n self.addEvents();\r\n\r\n },\r\n\r\n\r\n // Start closing procedure\r\n // This will start \"zoom-out\" animation if needed and clean everything up afterwards\r\n // =================================================================================\r\n\r\n close : function( e, d ) {\r\n\r\n var self = this;\r\n var current = self.current;\r\n\r\n var effect, duration;\r\n var $what, opacity, start, end;\r\n\r\n var done = function() {\r\n self.cleanUp( e );\r\n };\r\n\r\n if ( self.isClosing ) {\r\n return false;\r\n }\r\n\r\n self.isClosing = true;\r\n\r\n // If beforeClose callback prevents closing, make sure content is centered\r\n if ( self.trigger( 'beforeClose', e ) === false ) {\r\n self.isClosing = false;\r\n\r\n requestAFrame(function() {\r\n self.update();\r\n });\r\n\r\n return false;\r\n }\r\n\r\n // Remove all events\r\n // If there are multiple instances, they will be set again by \"activate\" method\r\n self.removeEvents();\r\n\r\n if ( current.timouts ) {\r\n clearTimeout( current.timouts );\r\n }\r\n\r\n $what = current.$content;\r\n effect = current.opts.animationEffect;\r\n duration = $.isNumeric( d ) ? d : ( effect ? current.opts.animationDuration : 0 );\r\n\r\n // Remove other slides\r\n current.$slide.off( transitionEnd ).removeClass( 'fancybox-slide--complete fancybox-slide--next fancybox-slide--previous fancybox-animated' );\r\n\r\n current.$slide.siblings().trigger( 'onReset' ).remove();\r\n\r\n // Trigger animations\r\n if ( duration ) {\r\n self.$refs.container.removeClass( 'fancybox-is-open' ).addClass( 'fancybox-is-closing' );\r\n }\r\n\r\n // Clean up\r\n self.hideLoading( current );\r\n\r\n self.hideControls();\r\n\r\n self.updateCursor();\r\n\r\n // Check if possible to zoom-out\r\n if ( effect === 'zoom' && !( e !== true && $what && duration && current.type === 'image' && !current.hasError && ( end = self.getThumbPos( current ) ) ) ) {\r\n effect = 'fade';\r\n }\r\n\r\n if ( effect === 'zoom' ) {\r\n $.fancybox.stop( $what );\r\n\r\n start = $.fancybox.getTranslate( $what );\r\n\r\n start.width = start.width * start.scaleX;\r\n start.height = start.height * start.scaleY;\r\n\r\n // Check if we need to animate opacity\r\n opacity = current.opts.zoomOpacity;\r\n\r\n if ( opacity == 'auto' ) {\r\n opacity = Math.abs( current.width / current.height - end.width / end.height ) > 0.1;\r\n }\r\n\r\n if ( opacity ) {\r\n end.opacity = 0;\r\n }\r\n\r\n start.scaleX = start.width / end.width;\r\n start.scaleY = start.height / end.height;\r\n\r\n start.width = end.width;\r\n start.height = end.height;\r\n\r\n $.fancybox.setTranslate( current.$content, start );\r\n\r\n $.fancybox.animate( current.$content, end, duration, done );\r\n\r\n return true;\r\n }\r\n\r\n if ( effect && duration ) {\r\n\r\n // If skip animation\r\n if ( e === true ) {\r\n setTimeout( done, duration );\r\n\r\n } else {\r\n $.fancybox.animate( current.$slide.removeClass( 'fancybox-slide--current' ), 'fancybox-animated fancybox-slide--previous fancybox-fx-' + effect, duration, done );\r\n }\r\n\r\n } else {\r\n done();\r\n }\r\n\r\n return true;\r\n },\r\n\r\n\r\n // Final adjustments after removing the instance\r\n // =============================================\r\n\r\n cleanUp : function( e ) {\r\n var self = this,\r\n instance;\r\n\r\n self.current.$slide.trigger( 'onReset' );\r\n\r\n self.$refs.container.empty().remove();\r\n\r\n self.trigger( 'afterClose', e );\r\n\r\n // Place back focus\r\n if ( self.$lastFocus && !!!self.current.focusBack ) {\r\n self.$lastFocus.focus();\r\n }\r\n\r\n self.current = null;\r\n\r\n // Check if there are other instances\r\n instance = $.fancybox.getInstance();\r\n\r\n if ( instance ) {\r\n instance.activate();\r\n\r\n } else {\r\n\r\n $W.scrollTop( self.scrollTop ).scrollLeft( self.scrollLeft );\r\n\r\n $( 'html' ).removeClass( 'fancybox-enabled' );\r\n\r\n $( '#fancybox-style-noscroll' ).remove();\r\n }\r\n\r\n },\r\n\r\n\r\n // Call callback and trigger an event\r\n // ==================================\r\n\r\n trigger : function( name, slide ) {\r\n var args = Array.prototype.slice.call(arguments, 1),\r\n self = this,\r\n obj = slide && slide.opts ? slide : self.current,\r\n rez;\r\n\r\n if ( obj ) {\r\n args.unshift( obj );\r\n\r\n } else {\r\n obj = self;\r\n }\r\n\r\n args.unshift( self );\r\n\r\n if ( $.isFunction( obj.opts[ name ] ) ) {\r\n rez = obj.opts[ name ].apply( obj, args );\r\n }\r\n\r\n if ( rez === false ) {\r\n return rez;\r\n }\r\n\r\n if ( name === 'afterClose' ) {\r\n $D.trigger( name + '.fb', args );\r\n\r\n } else {\r\n self.$refs.container.trigger( name + '.fb', args );\r\n }\r\n\r\n },\r\n\r\n\r\n // Update infobar values, navigation button states and reveal caption\r\n // ==================================================================\r\n\r\n updateControls : function ( force ) {\r\n\r\n var self = this;\r\n\r\n var current = self.current;\r\n var index = current.index;\r\n var opts = current.opts;\r\n var caption = opts.caption;\r\n var $caption = self.$refs.caption;\r\n\r\n // Recalculate content dimensions\r\n current.$slide.trigger( 'refresh' );\r\n\r\n self.$caption = caption && caption.length ? $caption.html( caption ) : null;\r\n\r\n if ( !self.isHiddenControls ) {\r\n self.showControls();\r\n }\r\n\r\n // Update info and navigation elements\r\n $('[data-fancybox-count]').html( self.group.length );\r\n $('[data-fancybox-index]').html( index + 1 );\r\n\r\n $('[data-fancybox-prev]').prop('disabled', ( !opts.loop && index <= 0 ) );\r\n $('[data-fancybox-next]').prop('disabled', ( !opts.loop && index >= self.group.length - 1 ) );\r\n\r\n },\r\n\r\n // Hide toolbar and caption\r\n // ========================\r\n\r\n hideControls : function () {\r\n\r\n this.isHiddenControls = true;\r\n\r\n this.$refs.container.removeClass('fancybox-show-infobar fancybox-show-toolbar fancybox-show-caption fancybox-show-nav');\r\n\r\n },\r\n\r\n showControls : function() {\r\n\r\n var self = this;\r\n var opts = self.current ? self.current.opts : self.opts;\r\n var $container = self.$refs.container;\r\n\r\n self.isHiddenControls = false;\r\n self.idleSecondsCounter = 0;\r\n\r\n $container\r\n .toggleClass('fancybox-show-toolbar', !!( opts.toolbar && opts.buttons ) )\r\n .toggleClass('fancybox-show-infobar', !!( opts.infobar && self.group.length > 1 ) )\r\n .toggleClass('fancybox-show-nav', !!( opts.arrows && self.group.length > 1 ) )\r\n .toggleClass('fancybox-is-modal', !!opts.modal );\r\n\r\n if ( self.$caption ) {\r\n $container.addClass( 'fancybox-show-caption ');\r\n\r\n } else {\r\n $container.removeClass( 'fancybox-show-caption' );\r\n }\r\n\r\n },\r\n\r\n\r\n // Toggle toolbar and caption\r\n // ==========================\r\n\r\n toggleControls : function() {\r\n\r\n if ( this.isHiddenControls ) {\r\n this.showControls();\r\n\r\n } else {\r\n this.hideControls();\r\n }\r\n\r\n },\r\n\r\n\r\n });\r\n\r\n\r\n $.fancybox = {\r\n\r\n version : \"3.1.20\",\r\n defaults : defaults,\r\n\r\n\r\n // Get current instance and execute a command.\r\n //\r\n // Examples of usage:\r\n //\r\n // $instance = $.fancybox.getInstance();\r\n // $.fancybox.getInstance().jumpTo( 1 );\r\n // $.fancybox.getInstance( 'jumpTo', 1 );\r\n // $.fancybox.getInstance( function() {\r\n // console.info( this.currIndex );\r\n // });\r\n // ======================================================\r\n\r\n getInstance : function ( command ) {\r\n var instance = $('.fancybox-container:not(\".fancybox-is-closing\"):first').data( 'FancyBox' );\r\n var args = Array.prototype.slice.call(arguments, 1);\r\n\r\n if ( instance instanceof FancyBox ) {\r\n\r\n if ( $.type( command ) === 'string' ) {\r\n instance[ command ].apply( instance, args );\r\n\r\n } else if ( $.type( command ) === 'function' ) {\r\n command.apply( instance, args );\r\n\r\n }\r\n\r\n return instance;\r\n }\r\n\r\n return false;\r\n\r\n },\r\n\r\n\r\n // Create new instance\r\n // ===================\r\n\r\n open : function ( items, opts, index ) {\r\n return new FancyBox( items, opts, index );\r\n },\r\n\r\n\r\n // Close current or all instances\r\n // ==============================\r\n\r\n close : function ( all ) {\r\n var instance = this.getInstance();\r\n\r\n if ( instance ) {\r\n instance.close();\r\n\r\n // Try to find and close next instance\r\n\r\n if ( all === true ) {\r\n this.close();\r\n }\r\n }\r\n\r\n },\r\n\r\n // Close instances and unbind all events\r\n // ==============================\r\n\r\n destroy : function() {\r\n\r\n this.close( true );\r\n\r\n $D.off( 'click.fb-start' );\r\n\r\n },\r\n\r\n\r\n // Try to detect mobile devices\r\n // ============================\r\n\r\n isMobile : document.createTouch !== undefined && /Android|webOS|iPhone|iPad|iPod|BlackBerry/i.test(navigator.userAgent),\r\n\r\n\r\n // Detect if 'translate3d' support is available\r\n // ============================================\r\n\r\n use3d : (function() {\r\n var div = document.createElement('div');\r\n\r\n return window.getComputedStyle && window.getComputedStyle( div ).getPropertyValue('transform') && !(document.documentMode && document.documentMode < 11);\r\n }()),\r\n\r\n\r\n // Helper function to get current visual state of an element\r\n // returns array[ top, left, horizontal-scale, vertical-scale, opacity ]\r\n // =====================================================================\r\n\r\n getTranslate : function( $el ) {\r\n var matrix;\r\n\r\n if ( !$el || !$el.length ) {\r\n return false;\r\n }\r\n\r\n matrix = $el.eq( 0 ).css('transform');\r\n\r\n if ( matrix && matrix.indexOf( 'matrix' ) !== -1 ) {\r\n matrix = matrix.split('(')[1];\r\n matrix = matrix.split(')')[0];\r\n matrix = matrix.split(',');\r\n } else {\r\n matrix = [];\r\n }\r\n\r\n if ( matrix.length ) {\r\n\r\n // If IE\r\n if ( matrix.length > 10 ) {\r\n matrix = [ matrix[13], matrix[12], matrix[0], matrix[5] ];\r\n\r\n } else {\r\n matrix = [ matrix[5], matrix[4], matrix[0], matrix[3]];\r\n }\r\n\r\n matrix = matrix.map(parseFloat);\r\n\r\n } else {\r\n matrix = [ 0, 0, 1, 1 ];\r\n\r\n var transRegex = /\\.*translate\\((.*)px,(.*)px\\)/i;\r\n var transRez = transRegex.exec( $el.eq( 0 ).attr('style') );\r\n\r\n if ( transRez ) {\r\n matrix[ 0 ] = parseFloat( transRez[2] );\r\n matrix[ 1 ] = parseFloat( transRez[1] );\r\n }\r\n }\r\n\r\n return {\r\n top : matrix[ 0 ],\r\n left : matrix[ 1 ],\r\n scaleX : matrix[ 2 ],\r\n scaleY : matrix[ 3 ],\r\n opacity : parseFloat( $el.css('opacity') ),\r\n width : $el.width(),\r\n height : $el.height()\r\n };\r\n\r\n },\r\n\r\n\r\n // Shortcut for setting \"translate3d\" properties for element\r\n // Can set be used to set opacity, too\r\n // ========================================================\r\n\r\n setTranslate : function( $el, props ) {\r\n var str = '';\r\n var css = {};\r\n\r\n if ( !$el || !props ) {\r\n return;\r\n }\r\n\r\n if ( props.left !== undefined || props.top !== undefined ) {\r\n str = ( props.left === undefined ? $el.position().left : props.left ) + 'px, ' + ( props.top === undefined ? $el.position().top : props.top ) + 'px';\r\n\r\n if ( this.use3d ) {\r\n str = 'translate3d(' + str + ', 0px)';\r\n\r\n } else {\r\n str = 'translate(' + str + ')';\r\n }\r\n }\r\n\r\n if ( props.scaleX !== undefined && props.scaleY !== undefined ) {\r\n str = (str.length ? str + ' ' : '') + 'scale(' + props.scaleX + ', ' + props.scaleY + ')';\r\n }\r\n\r\n if ( str.length ) {\r\n css.transform = str;\r\n }\r\n\r\n if ( props.opacity !== undefined ) {\r\n css.opacity = props.opacity;\r\n }\r\n\r\n if ( props.width !== undefined ) {\r\n css.width = props.width;\r\n }\r\n\r\n if ( props.height !== undefined ) {\r\n css.height = props.height;\r\n }\r\n\r\n return $el.css( css );\r\n },\r\n\r\n\r\n // Simple CSS transition handler\r\n // =============================\r\n\r\n animate : function ( $el, to, duration, callback, leaveAnimationName ) {\r\n var event = transitionEnd || 'transitionend';\r\n\r\n if ( $.isFunction( duration ) ) {\r\n callback = duration;\r\n duration = null;\r\n }\r\n\r\n if ( !$.isPlainObject( to ) ) {\r\n $el.removeAttr('style');\r\n }\r\n\r\n $el.on( event, function(e) {\r\n\r\n // Skip events from child elements and z-index change\r\n if ( e && e.originalEvent && ( !$el.is( e.originalEvent.target ) || e.originalEvent.propertyName == 'z-index' ) ) {\r\n return;\r\n }\r\n\r\n $el.off( event );\r\n\r\n if ( $.isPlainObject( to ) ) {\r\n\r\n if ( to.scaleX !== undefined && to.scaleY !== undefined ) {\r\n $el.css( 'transition-duration', '0ms' );\r\n\r\n to.width = $el.width() * to.scaleX;\r\n to.height = $el.height() * to.scaleY;\r\n\r\n to.scaleX = 1;\r\n to.scaleY = 1;\r\n\r\n $.fancybox.setTranslate( $el, to );\r\n }\r\n\r\n } else if ( leaveAnimationName !== true ) {\r\n $el.removeClass( to );\r\n }\r\n\r\n if ( $.isFunction( callback ) ) {\r\n callback( e );\r\n }\r\n\r\n });\r\n\r\n if ( $.isNumeric( duration ) ) {\r\n $el.css( 'transition-duration', duration + 'ms' );\r\n }\r\n\r\n if ( $.isPlainObject( to ) ) {\r\n $.fancybox.setTranslate( $el, to );\r\n\r\n } else {\r\n $el.addClass( to );\r\n }\r\n\r\n $el.data(\"timer\", setTimeout(function() {\r\n $el.trigger( 'transitionend' );\r\n }, duration + 16));\r\n\r\n },\r\n\r\n stop : function( $el ) {\r\n clearTimeout( $el.data(\"timer\") );\r\n\r\n $el.off( transitionEnd );\r\n }\r\n\r\n };\r\n\r\n\r\n // Default click handler for \"fancyboxed\" links\r\n // ============================================\r\n\r\n function _run( e ) {\r\n var target\t= e.currentTarget,\r\n opts\t= e.data ? e.data.options : {},\r\n items\t= e.data ? e.data.items : [],\r\n value\t= $(target).attr( 'data-fancybox' ) || '',\r\n index\t= 0;\r\n\r\n e.preventDefault();\r\n e.stopPropagation();\r\n\r\n // Get all related items and find index for clicked one\r\n if ( value ) {\r\n items = items.length ? items.filter( '[data-fancybox=\"' + value + '\"]' ) : $( '[data-fancybox=\"' + value + '\"]' );\r\n index = items.index( target );\r\n\r\n // Sometimes current item can not be found\r\n // (for example, when slider clones items)\r\n if ( index < 0 ) {\r\n index = 0;\r\n }\r\n\r\n } else {\r\n items = [ target ];\r\n }\r\n\r\n $.fancybox.open( items, opts, index );\r\n }\r\n\r\n\r\n // Create a jQuery plugin\r\n // ======================\r\n\r\n $.fn.fancybox = function (options) {\r\n var selector;\r\n\r\n options = options || {};\r\n selector = options.selector || false;\r\n\r\n if ( selector ) {\r\n\r\n $( 'body' ).off( 'click.fb-start', selector ).on( 'click.fb-start', selector, {\r\n items : $( selector ),\r\n options : options\r\n }, _run );\r\n\r\n } else {\r\n\r\n this.off( 'click.fb-start' ).on( 'click.fb-start', {\r\n items : this,\r\n options : options\r\n }, _run);\r\n\r\n }\r\n\r\n return this;\r\n };\r\n\r\n\r\n // Self initializing plugin\r\n // ========================\r\n\r\n $D.on( 'click.fb-start', '[data-fancybox]', _run );\r\n\r\n}( window, document, $ ));\r\n\r\n// ==========================================================================\r\n//\r\n// Media\r\n// Adds additional media type support\r\n//\r\n// ==========================================================================\r\n;(function ($) {\r\n\r\n\t'use strict';\r\n\r\n\t// Formats matching url to final form\r\n\r\n\tvar format = function (url, rez, params) {\r\n\t\tif ( !url ) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tparams = params || '';\r\n\r\n\t\tif ( $.type(params) === \"object\" ) {\r\n\t\t\tparams = $.param(params, true);\r\n\t\t}\r\n\r\n\t\t$.each(rez, function (key, value) {\r\n\t\t\turl = url.replace('$' + key, value || '');\r\n\t\t});\r\n\r\n\t\tif (params.length) {\r\n\t\t\turl += (url.indexOf('?') > 0 ? '&' : '?') + params;\r\n\t\t}\r\n\r\n\t\treturn url;\r\n\t};\r\n\r\n\t// Object containing properties for each media type\r\n\r\n\tvar defaults = {\r\n\t\tyoutube : {\r\n\t\t\tmatcher : /(youtube\\.com|youtu\\.be|youtube\\-nocookie\\.com)\\/(watch\\?(.*&)?v=|v\\/|u\\/|embed\\/?)?(videoseries\\?list=(.*)|[\\w-]{11}|\\?listType=(.*)&list=(.*))(.*)/i,\r\n\t\t\tparams : {\r\n\t\t\t\tautoplay : 1,\r\n\t\t\t\tautohide : 1,\r\n\t\t\t\tfs : 1,\r\n\t\t\t\trel : 0,\r\n\t\t\t\thd : 1,\r\n\t\t\t\twmode : 'transparent',\r\n\t\t\t\tenablejsapi : 1,\r\n\t\t\t\thtml5 : 1\r\n\t\t\t},\r\n\t\t\tparamPlace : 8,\r\n\t\t\ttype : 'iframe',\r\n\t\t\turl : '//www.youtube.com/embed/$4',\r\n\t\t\tthumb : '//img.youtube.com/vi/$4/hqdefault.jpg'\r\n\t\t},\r\n\r\n\t\tvimeo : {\r\n\t\t\tmatcher : /^.+vimeo.com\\/(.*\\/)?([\\d]+)(.*)?/,\r\n\t\t\tparams : {\r\n\t\t\t\tautoplay : 1,\r\n\t\t\t\thd : 1,\r\n\t\t\t\tshow_title : 1,\r\n\t\t\t\tshow_byline : 1,\r\n\t\t\t\tshow_portrait : 0,\r\n\t\t\t\tfullscreen : 1,\r\n\t\t\t\tapi : 1\r\n\t\t\t},\r\n\t\t\tparamPlace : 3,\r\n\t\t\ttype : 'iframe',\r\n\t\t\turl : '//player.vimeo.com/video/$2'\r\n\t\t},\r\n\r\n\t\tmetacafe : {\r\n\t\t\tmatcher : /metacafe.com\\/watch\\/(\\d+)\\/(.*)?/,\r\n\t\t\ttype : 'iframe',\r\n\t\t\turl : '//www.metacafe.com/embed/$1/?ap=1'\r\n\t\t},\r\n\r\n\t\tdailymotion : {\r\n\t\t\tmatcher : /dailymotion.com\\/video\\/(.*)\\/?(.*)/,\r\n\t\t\tparams : {\r\n\t\t\t\tadditionalInfos : 0,\r\n\t\t\t\tautoStart : 1\r\n\t\t\t},\r\n\t\t\ttype : 'iframe',\r\n\t\t\turl : '//www.dailymotion.com/embed/video/$1'\r\n\t\t},\r\n\r\n\t\tvine : {\r\n\t\t\tmatcher : /vine.co\\/v\\/([a-zA-Z0-9\\?\\=\\-]+)/,\r\n\t\t\ttype : 'iframe',\r\n\t\t\turl : '//vine.co/v/$1/embed/simple'\r\n\t\t},\r\n\r\n\t\tinstagram : {\r\n\t\t\tmatcher : /(instagr\\.am|instagram\\.com)\\/p\\/([a-zA-Z0-9_\\-]+)\\/?/i,\r\n\t\t\ttype : 'image',\r\n\t\t\turl : '//$1/p/$2/media/?size=l'\r\n\t\t},\r\n\r\n\t\t// Examples:\r\n\t\t// http://maps.google.com/?ll=48.857995,2.294297&spn=0.007666,0.021136&t=m&z=16\r\n\t\t// http://maps.google.com/?ll=48.857995,2.294297&spn=0.007666,0.021136&t=m&z=16\r\n\t\t// https://www.google.lv/maps/place/Googleplex/@37.4220041,-122.0833494,17z/data=!4m5!3m4!1s0x0:0x6c296c66619367e0!8m2!3d37.4219998!4d-122.0840572\r\n\t\tgoogle_maps : {\r\n\t\t\tmatcher : /(maps\\.)?google\\.([a-z]{2,3}(\\.[a-z]{2})?)\\/(((maps\\/(place\\/(.*)\\/)?\\@(.*),(\\d+.?\\d+?)z))|(\\?ll=))(.*)?/i,\r\n\t\t\ttype : 'iframe',\r\n\t\t\turl : function (rez) {\r\n\t\t\t\treturn '//maps.google.' + rez[2] + '/?ll=' + ( rez[9] ? rez[9] + '&z=' + Math.floor( rez[10] ) + ( rez[12] ? rez[12].replace(/^\\//, \"&\") : '' ) : rez[12] ) + '&output=' + ( rez[12] && rez[12].indexOf('layer=c') > 0 ? 'svembed' : 'embed' );\r\n\t\t\t}\r\n\t\t}\r\n\t};\r\n\r\n\t$(document).on('onInit.fb', function (e, instance) {\r\n\r\n\t\t$.each(instance.group, function( i, item ) {\r\n\r\n\t\t\tvar url\t = item.src || '',\r\n\t\t\t\ttype = false,\r\n\t\t\t\tmedia,\r\n\t\t\t\tthumb,\r\n\t\t\t\trez,\r\n\t\t\t\tparams,\r\n\t\t\t\turlParams,\r\n\t\t\t\to,\r\n\t\t\t\tprovider;\r\n\r\n\t\t\t// Skip items that already have content type\r\n\t\t\tif ( item.type ) {\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\r\n\t\t\tmedia = $.extend( true, {}, defaults, item.opts.media );\r\n\r\n\t\t\t// Look for any matching media type\r\n\t\t\t$.each(media, function ( n, el ) {\r\n\t\t\t\trez = url.match(el.matcher);\r\n\t\t\t\to = {};\r\n\t\t\t\tprovider = n;\r\n\r\n\t\t\t\tif (!rez) {\r\n\t\t\t\t\treturn;\r\n\t\t\t\t}\r\n\r\n\t\t\t\ttype = el.type;\r\n\r\n\t\t\t\tif ( el.paramPlace && rez[ el.paramPlace ] ) {\r\n\t\t\t\t\turlParams = rez[ el.paramPlace ];\r\n\r\n\t\t\t\t\tif ( urlParams[ 0 ] == '?' ) {\r\n\t\t\t\t\t\turlParams = urlParams.substring(1);\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\turlParams = urlParams.split('&');\r\n\r\n\t\t\t\t\tfor ( var m = 0; m < urlParams.length; ++m ) {\r\n\t\t\t\t\t\tvar p = urlParams[ m ].split('=', 2);\r\n\r\n\t\t\t\t\t\tif ( p.length == 2 ) {\r\n\t\t\t\t\t\t\to[ p[0] ] = decodeURIComponent( p[1].replace(/\\+/g, \" \") );\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\tparams = $.extend( true, {}, el.params, item.opts[ n ], o );\r\n\r\n\t\t\t\turl = $.type(el.url) === \"function\" ? el.url.call(this, rez, params, item) : format(el.url, rez, params);\r\n\t\t\t\tthumb = $.type(el.thumb) === \"function\" ? el.thumb.call(this, rez, params, item) : format(el.thumb, rez);\r\n\r\n\t\t\t\tif ( provider === 'vimeo' ) {\r\n\t\t\t\t\turl = url.replace('&%23', '#');\r\n\t\t\t\t}\r\n\r\n\t\t\t\treturn false;\r\n\t\t\t});\r\n\r\n\t\t\t// If it is found, then change content type and update the url\r\n\r\n\t\t\tif ( type ) {\r\n\t\t\t\titem.src = url;\r\n\t\t\t\titem.type = type;\r\n\r\n\t\t\t\tif ( !item.opts.thumb && !( item.opts.$thumb && item.opts.$thumb.length ) ) {\r\n\t\t\t\t\titem.opts.thumb = thumb;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif ( type === 'iframe' ) {\r\n\t\t\t\t\t$.extend(true, item.opts, {\r\n\t\t\t\t\t\tiframe : {\r\n\t\t\t\t\t\t\tpreload : false,\r\n\t\t\t\t\t\t\tattr : {\r\n\t\t\t\t\t\t\t\tscrolling : \"no\"\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t});\r\n\r\n\t\t\t\t\titem.contentProvider = provider;\r\n\r\n\t\t\t\t\titem.opts.slideClass += ' fancybox-slide--' + ( provider == 'google_maps' ? 'map' : 'video' );\r\n\t\t\t\t}\r\n\r\n\t\t\t} else {\r\n\r\n\t\t\t\t// If no content type is found, then set it to `image` as fallback\r\n\t\t\t\titem.type = 'image';\r\n\t\t\t}\r\n\r\n\t\t});\r\n\r\n\t});\r\n\r\n}($));\r\n\r\n// ==========================================================================\r\n//\r\n// Guestures\r\n// Adds touch guestures, handles click and tap events\r\n//\r\n// ==========================================================================\r\n;(function (window, document, $) {\r\n\t'use strict';\r\n\r\n\tvar requestAFrame = (function () {\r\n return window.requestAnimationFrame ||\r\n window.webkitRequestAnimationFrame ||\r\n window.mozRequestAnimationFrame ||\r\n window.oRequestAnimationFrame ||\r\n // if all else fails, use setTimeout\r\n function (callback) {\r\n return window.setTimeout(callback, 1000 / 60);\r\n };\r\n })();\r\n\r\n\r\n var cancelAFrame = (function () {\r\n return window.cancelAnimationFrame ||\r\n window.webkitCancelAnimationFrame ||\r\n window.mozCancelAnimationFrame ||\r\n window.oCancelAnimationFrame ||\r\n function (id) {\r\n window.clearTimeout(id);\r\n };\r\n })();\r\n\r\n\r\n\tvar pointers = function( e ) {\r\n\t\tvar result = [];\r\n\r\n\t\te = e.originalEvent || e || window.e;\r\n\t\te = e.touches && e.touches.length ? e.touches : ( e.changedTouches && e.changedTouches.length ? e.changedTouches : [ e ] );\r\n\r\n\t\tfor ( var key in e ) {\r\n\r\n\t\t\tif ( e[ key ].pageX ) {\r\n\t\t\t\tresult.push( { x : e[ key ].pageX, y : e[ key ].pageY } );\r\n\r\n\t\t\t} else if ( e[ key ].clientX ) {\r\n\t\t\t\tresult.push( { x : e[ key ].clientX, y : e[ key ].clientY } );\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn result;\r\n\t};\r\n\r\n\tvar distance = function( point2, point1, what ) {\r\n\t\tif ( !point1 || !point2 ) {\r\n\t\t\treturn 0;\r\n\t\t}\r\n\r\n\t\tif ( what === 'x' ) {\r\n\t\t\treturn point2.x - point1.x;\r\n\r\n\t\t} else if ( what === 'y' ) {\r\n\t\t\treturn point2.y - point1.y;\r\n\t\t}\r\n\r\n\t\treturn Math.sqrt( Math.pow( point2.x - point1.x, 2 ) + Math.pow( point2.y - point1.y, 2 ) );\r\n\t};\r\n\r\n\tvar isClickable = function( $el ) {\r\n\t\tif ( $el.is('a,button,input,select,textarea') || $.isFunction( $el.get(0).onclick ) ) {\r\n\t\t\treturn true;\r\n\t\t}\r\n\r\n\t\t// Check for attributes like data-fancybox-next or data-fancybox-close\r\n\t\tfor ( var i = 0, atts = $el[0].attributes, n = atts.length; i < n; i++ ) {\r\n if ( atts[i].nodeName.substr(0, 14) === 'data-fancybox-' ) {\r\n return true;\r\n }\r\n }\r\n\r\n\t \treturn false;\r\n\t};\r\n\r\n\tvar hasScrollbars = function( el ) {\r\n\t\tvar overflowY = window.getComputedStyle( el )['overflow-y'];\r\n\t\tvar overflowX = window.getComputedStyle( el )['overflow-x'];\r\n\r\n\t\tvar vertical = (overflowY === 'scroll' || overflowY === 'auto') && el.scrollHeight > el.clientHeight;\r\n\t\tvar horizontal = (overflowX === 'scroll' || overflowX === 'auto') && el.scrollWidth > el.clientWidth;\r\n\r\n\t\treturn vertical || horizontal;\r\n\t};\r\n\r\n\tvar isScrollable = function ( $el ) {\r\n\t\tvar rez = false;\r\n\r\n\t\twhile ( true ) {\r\n\t\t\trez\t= hasScrollbars( $el.get(0) );\r\n\r\n\t\t\tif ( rez ) {\r\n\t\t\t\tbreak;\r\n\t\t\t}\r\n\r\n\t\t\t$el = $el.parent();\r\n\r\n\t\t\tif ( !$el.length || $el.hasClass( 'fancybox-stage' ) || $el.is( 'body' ) ) {\r\n\t\t\t\tbreak;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn rez;\r\n\t};\r\n\r\n\r\n\tvar Guestures = function ( instance ) {\r\n\t\tvar self = this;\r\n\r\n\t\tself.instance = instance;\r\n\r\n\t\tself.$bg = instance.$refs.bg;\r\n\t\tself.$stage = instance.$refs.stage;\r\n\t\tself.$container = instance.$refs.container;\r\n\r\n\t\tself.destroy();\r\n\r\n\t\tself.$container.on( 'touchstart.fb.touch mousedown.fb.touch', $.proxy(self, 'ontouchstart') );\r\n\t};\r\n\r\n\tGuestures.prototype.destroy = function() {\r\n\t\tthis.$container.off( '.fb.touch' );\r\n\t};\r\n\r\n\tGuestures.prototype.ontouchstart = function( e ) {\r\n\t\tvar self = this;\r\n\r\n\t\tvar $target = $( e.target );\r\n\t\tvar instance = self.instance;\r\n\t\tvar current = instance.current;\r\n\t\tvar $content = current.$content;\r\n\r\n\t\tvar isTouchDevice = ( e.type == 'touchstart' );\r\n\r\n\t\t// Do not respond to both events\r\n\t\tif ( isTouchDevice ) {\r\n\t self.$container.off( 'mousedown.fb.touch' );\r\n\t }\r\n\r\n\t\t// Ignore clicks while zooming or closing\r\n\t\tif ( !current || self.instance.isAnimating || self.instance.isClosing ) {\r\n\t\t\te.stopPropagation();\r\n\t\t\te.preventDefault();\r\n\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\t// Ignore right click\r\n\t\tif ( e.originalEvent && e.originalEvent.button == 2 ) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\t// Ignore taping on links, buttons, input elements\r\n\t\tif ( !$target.length || isClickable( $target ) || isClickable( $target.parent() ) ) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\t// Ignore clicks on the scrollbar\r\n\t\tif ( e.originalEvent.clientX > $target[0].clientWidth + $target.offset().left ) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tself.startPoints = pointers( e );\r\n\r\n\t\t// Prevent zooming if already swiping\r\n\t\tif ( !self.startPoints || ( self.startPoints.length > 1 && instance.isSliding ) ) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tself.$target = $target;\r\n\t\tself.$content = $content;\r\n\t\tself.canTap = true;\r\n\r\n\t\t$(document).off( '.fb.touch' );\r\n\r\n\t\t$(document).on( isTouchDevice ? 'touchend.fb.touch touchcancel.fb.touch' : 'mouseup.fb.touch mouseleave.fb.touch', $.proxy(self, \"ontouchend\"));\r\n\t\t$(document).on( isTouchDevice ? 'touchmove.fb.touch' : 'mousemove.fb.touch', $.proxy(self, \"ontouchmove\"));\r\n\r\n\t\te.stopPropagation();\r\n\r\n\t\tif ( !(instance.current.opts.touch || instance.canPan() ) || !( $target.is( self.$stage ) || self.$stage.find( $target ).length ) ) {\r\n\r\n\t\t\t// Prevent ghosting\r\n\t\t\tif ( $target.is('img') ) {\r\n\t\t\t\te.preventDefault();\r\n\t\t\t}\r\n\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tif ( !( $.fancybox.isMobile && ( isScrollable( self.$target ) || isScrollable( self.$target.parent() ) ) ) ) {\r\n\t\t\te.preventDefault();\r\n\t\t}\r\n\r\n\t\tself.canvasWidth = Math.round( current.$slide[0].clientWidth );\r\n\t\tself.canvasHeight = Math.round( current.$slide[0].clientHeight );\r\n\r\n\t\tself.startTime = new Date().getTime();\r\n\t\tself.distanceX = self.distanceY = self.distance = 0;\r\n\r\n\t\tself.isPanning = false;\r\n\t\tself.isSwiping = false;\r\n\t\tself.isZooming = false;\r\n\r\n\t\tself.sliderStartPos = self.sliderLastPos || { top: 0, left: 0 };\r\n\t\tself.contentStartPos = $.fancybox.getTranslate( self.$content );\r\n\t\tself.contentLastPos = null;\r\n\r\n\t\tif ( self.startPoints.length === 1 && !self.isZooming ) {\r\n\t\t\tself.canTap = !instance.isSliding;\r\n\r\n\t\t\tif ( current.type === 'image' && ( self.contentStartPos.width > self.canvasWidth + 1 || self.contentStartPos.height > self.canvasHeight + 1 ) ) {\r\n\r\n\t\t\t\t$.fancybox.stop( self.$content );\r\n\r\n\t\t\t\tself.$content.css( 'transition-duration', '0ms' );\r\n\r\n\t\t\t\tself.isPanning = true;\r\n\r\n\t\t\t} else {\r\n\r\n\t\t\t\tself.isSwiping = true;\r\n\t\t\t}\r\n\r\n\t\t\tself.$container.addClass('fancybox-controls--isGrabbing');\r\n\t\t}\r\n\r\n\t\tif ( self.startPoints.length === 2 && !instance.isAnimating && !current.hasError && current.type === 'image' && ( current.isLoaded || current.$ghost ) ) {\r\n\t\t\tself.isZooming = true;\r\n\r\n\t\t\tself.isSwiping = false;\r\n\t\t\tself.isPanning = false;\r\n\r\n\t\t\t$.fancybox.stop( self.$content );\r\n\r\n\t\t\tself.$content.css( 'transition-duration', '0ms' );\r\n\r\n\t\t\tself.centerPointStartX = ( ( self.startPoints[0].x + self.startPoints[1].x ) * 0.5 ) - $(window).scrollLeft();\r\n\t\t\tself.centerPointStartY = ( ( self.startPoints[0].y + self.startPoints[1].y ) * 0.5 ) - $(window).scrollTop();\r\n\r\n\t\t\tself.percentageOfImageAtPinchPointX = ( self.centerPointStartX - self.contentStartPos.left ) / self.contentStartPos.width;\r\n\t\t\tself.percentageOfImageAtPinchPointY = ( self.centerPointStartY - self.contentStartPos.top ) / self.contentStartPos.height;\r\n\r\n\t\t\tself.startDistanceBetweenFingers = distance( self.startPoints[0], self.startPoints[1] );\r\n\t\t}\r\n\r\n\t};\r\n\r\n\tGuestures.prototype.ontouchmove = function( e ) {\r\n\r\n\t\tvar self = this;\r\n\r\n\t\tself.newPoints = pointers( e );\r\n\r\n\t\tif ( $.fancybox.isMobile && ( isScrollable( self.$target ) || isScrollable( self.$target.parent() ) ) ) {\r\n\t\t\te.stopPropagation();\r\n\r\n\t\t\tself.canTap = false;\r\n\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tif ( !( self.instance.current.opts.touch || self.instance.canPan() ) || !self.newPoints || !self.newPoints.length ) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tself.distanceX = distance( self.newPoints[0], self.startPoints[0], 'x' );\r\n\t\tself.distanceY = distance( self.newPoints[0], self.startPoints[0], 'y' );\r\n\r\n\t\tself.distance = distance( self.newPoints[0], self.startPoints[0] );\r\n\r\n\t\t// Skip false ontouchmove events (Chrome)\r\n\t\tif ( self.distance > 0 ) {\r\n\r\n\t\t\tif ( !( self.$target.is( self.$stage ) || self.$stage.find( self.$target ).length ) ) {\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\r\n\t\t\te.stopPropagation();\r\n\t\t\te.preventDefault();\r\n\r\n\t\t\tif ( self.isSwiping ) {\r\n\t\t\t\tself.onSwipe();\r\n\r\n\t\t\t} else if ( self.isPanning ) {\r\n\t\t\t\tself.onPan();\r\n\r\n\t\t\t} else if ( self.isZooming ) {\r\n\t\t\t\tself.onZoom();\r\n\t\t\t}\r\n\r\n\t\t}\r\n\r\n\t};\r\n\r\n\tGuestures.prototype.onSwipe = function() {\r\n\r\n\t\tvar self = this;\r\n\r\n\t\tvar swiping = self.isSwiping;\r\n\t\tvar left = self.sliderStartPos.left || 0;\r\n\t\tvar angle;\r\n\r\n\t\tif ( swiping === true ) {\r\n\r\n\t\t\tif ( Math.abs( self.distance ) > 10 ) {\r\n\r\n\t\t\t\tself.canTap = false;\r\n\r\n\t\t\t\tif ( self.instance.group.length < 2 && self.instance.opts.touch.vertical ) {\r\n\t\t\t\t\tself.isSwiping = 'y';\r\n\r\n\t\t\t\t} else if ( self.instance.isSliding || self.instance.opts.touch.vertical === false || ( self.instance.opts.touch.vertical === 'auto' && $( window ).width() > 800 ) ) {\r\n\t\t\t\t\tself.isSwiping = 'x';\r\n\r\n\t\t\t\t} else {\r\n\t\t\t\t\tangle = Math.abs( Math.atan2( self.distanceY, self.distanceX ) * 180 / Math.PI );\r\n\r\n\t\t\t\t\tself.isSwiping = ( angle > 45 && angle < 135 ) ? 'y' : 'x';\r\n\t\t\t\t}\r\n\r\n\t\t\t\tself.instance.isSliding = self.isSwiping;\r\n\r\n\t\t\t\t// Reset points to avoid jumping, because we dropped first swipes to calculate the angle\r\n\t\t\t\tself.startPoints = self.newPoints;\r\n\r\n\t\t\t\t$.each(self.instance.slides, function( index, slide ) {\r\n\t\t\t\t\t$.fancybox.stop( slide.$slide );\r\n\r\n\t\t\t\t\tslide.$slide.css( 'transition-duration', '0ms' );\r\n\r\n\t\t\t\t\tslide.inTransition = false;\r\n\r\n\t\t\t\t\tif ( slide.pos === self.instance.current.pos ) {\r\n\t\t\t\t\t\tself.sliderStartPos.left = $.fancybox.getTranslate( slide.$slide ).left;\r\n\t\t\t\t\t}\r\n\t\t\t\t});\r\n\r\n\t\t\t\t//self.instance.current.isMoved = true;\r\n\r\n\t\t\t\t// Stop slideshow\r\n\t\t\t\tif ( self.instance.SlideShow && self.instance.SlideShow.isActive ) {\r\n\t\t\t\t\tself.instance.SlideShow.stop();\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t} else {\r\n\r\n\t\t\tif ( swiping == 'x' ) {\r\n\r\n\t\t\t\t// Sticky edges\r\n\t\t\t\tif ( self.distanceX > 0 && ( self.instance.group.length < 2 || ( self.instance.current.index === 0 && !self.instance.current.opts.loop ) ) ) {\r\n\t\t\t\t\tleft = left + Math.pow( self.distanceX, 0.8 );\r\n\r\n\t\t\t\t} else if ( self.distanceX < 0 && ( self.instance.group.length < 2 || ( self.instance.current.index === self.instance.group.length - 1 && !self.instance.current.opts.loop ) ) ) {\r\n\t\t\t\t\tleft = left - Math.pow( -self.distanceX, 0.8 );\r\n\r\n\t\t\t\t} else {\r\n\t\t\t\t\tleft = left + self.distanceX;\r\n\t\t\t\t}\r\n\r\n\t\t\t}\r\n\r\n\t\t\tself.sliderLastPos = {\r\n\t\t\t\ttop : swiping == 'x' ? 0 : self.sliderStartPos.top + self.distanceY,\r\n\t\t\t\tleft : left\r\n\t\t\t};\r\n\r\n\t\t\tif ( self.requestId ) {\r\n\t\t\t\tcancelAFrame( self.requestId );\r\n\r\n\t\t\t\tself.requestId = null;\r\n\t\t\t}\r\n\r\n\t\t\tself.requestId = requestAFrame(function() {\r\n\r\n\t\t\t\tif ( self.sliderLastPos ) {\r\n\t\t\t\t\t$.each(self.instance.slides, function( index, slide ) {\r\n\t\t\t\t\t\tvar pos = slide.pos - self.instance.currPos;\r\n\r\n\t\t\t\t\t\t$.fancybox.setTranslate( slide.$slide, {\r\n\t\t\t\t\t\t\ttop : self.sliderLastPos.top,\r\n\t\t\t\t\t\t\tleft : self.sliderLastPos.left + ( pos * self.canvasWidth ) + ( pos * slide.opts.gutter )\r\n\t\t\t\t\t\t});\r\n\t\t\t\t\t});\r\n\r\n\t\t\t\t\tself.$container.addClass( 'fancybox-is-sliding' );\r\n\t\t\t\t}\r\n\r\n\t\t\t});\r\n\r\n\t\t}\r\n\r\n\t};\r\n\r\n\tGuestures.prototype.onPan = function() {\r\n\r\n\t\tvar self = this;\r\n\r\n\t\tvar newOffsetX, newOffsetY, newPos;\r\n\r\n\t\tself.canTap = false;\r\n\r\n\t\tif ( self.contentStartPos.width > self.canvasWidth ) {\r\n\t\t\tnewOffsetX = self.contentStartPos.left + self.distanceX;\r\n\r\n\t\t} else {\r\n\t\t\tnewOffsetX = self.contentStartPos.left;\r\n\t\t}\r\n\r\n\t\tnewOffsetY = self.contentStartPos.top + self.distanceY;\r\n\r\n\t\tnewPos = self.limitMovement( newOffsetX, newOffsetY, self.contentStartPos.width, self.contentStartPos.height );\r\n\r\n\t\tnewPos.scaleX = self.contentStartPos.scaleX;\r\n\t\tnewPos.scaleY = self.contentStartPos.scaleY;\r\n\r\n\t\tself.contentLastPos = newPos;\r\n\r\n\t\tif ( self.requestId ) {\r\n\t\t\tcancelAFrame( self.requestId );\r\n\r\n\t\t\tself.requestId = null;\r\n\t\t}\r\n\r\n\t\tself.requestId = requestAFrame(function() {\r\n\t\t\t$.fancybox.setTranslate( self.$content, self.contentLastPos );\r\n\t\t});\r\n\t};\r\n\r\n\t// Make panning sticky to the edges\r\n\tGuestures.prototype.limitMovement = function( newOffsetX, newOffsetY, newWidth, newHeight ) {\r\n\r\n\t\tvar self = this;\r\n\r\n\t\tvar minTranslateX, minTranslateY, maxTranslateX, maxTranslateY;\r\n\r\n\t\tvar canvasWidth = self.canvasWidth;\r\n\t\tvar canvasHeight = self.canvasHeight;\r\n\r\n\t\tvar currentOffsetX = self.contentStartPos.left;\r\n\t\tvar currentOffsetY = self.contentStartPos.top;\r\n\r\n\t\tvar distanceX = self.distanceX;\r\n\t\tvar distanceY = self.distanceY;\r\n\r\n\t\t// Slow down proportionally to traveled distance\r\n\r\n\t\tminTranslateX = Math.max(0, canvasWidth * 0.5 - newWidth * 0.5 );\r\n\t\tminTranslateY = Math.max(0, canvasHeight * 0.5 - newHeight * 0.5 );\r\n\r\n\t\tmaxTranslateX = Math.min( canvasWidth - newWidth, canvasWidth * 0.5 - newWidth * 0.5 );\r\n\t\tmaxTranslateY = Math.min( canvasHeight - newHeight, canvasHeight * 0.5 - newHeight * 0.5 );\r\n\r\n\t\tif ( newWidth > canvasWidth ) {\r\n\r\n\t\t\t// ->\r\n\t\t\tif ( distanceX > 0 && newOffsetX > minTranslateX ) {\r\n\t\t\t\tnewOffsetX = minTranslateX - 1 + Math.pow( -minTranslateX + currentOffsetX + distanceX, 0.8 ) || 0;\r\n\t\t\t}\r\n\r\n\t\t\t// <-\r\n\t\t\tif ( distanceX < 0 && newOffsetX < maxTranslateX ) {\r\n\t\t\t\tnewOffsetX = maxTranslateX + 1 - Math.pow( maxTranslateX - currentOffsetX - distanceX, 0.8 ) || 0;\r\n\t\t\t}\r\n\r\n\t\t}\r\n\r\n\t\tif ( newHeight > canvasHeight ) {\r\n\r\n\t\t\t// \\/\r\n\t\t\tif ( distanceY > 0 && newOffsetY > minTranslateY ) {\r\n\t\t\t\tnewOffsetY = minTranslateY - 1 + Math.pow(-minTranslateY + currentOffsetY + distanceY, 0.8 ) || 0;\r\n\t\t\t}\r\n\r\n\t\t\t// /\\\r\n\t\t\tif ( distanceY < 0 && newOffsetY < maxTranslateY ) {\r\n\t\t\t\tnewOffsetY = maxTranslateY + 1 - Math.pow ( maxTranslateY - currentOffsetY - distanceY, 0.8 ) || 0;\r\n\t\t\t}\r\n\r\n\t\t}\r\n\r\n\t\treturn {\r\n\t\t\ttop : newOffsetY,\r\n\t\t\tleft : newOffsetX\r\n\t\t};\r\n\r\n\t};\r\n\r\n\r\n\tGuestures.prototype.limitPosition = function( newOffsetX, newOffsetY, newWidth, newHeight ) {\r\n\r\n\t\tvar self = this;\r\n\r\n\t\tvar canvasWidth = self.canvasWidth;\r\n\t\tvar canvasHeight = self.canvasHeight;\r\n\r\n\t\tif ( newWidth > canvasWidth ) {\r\n\t\t\tnewOffsetX = newOffsetX > 0 ? 0 : newOffsetX;\r\n\t\t\tnewOffsetX = newOffsetX < canvasWidth - newWidth ? canvasWidth - newWidth : newOffsetX;\r\n\r\n\t\t} else {\r\n\r\n\t\t\t// Center horizontally\r\n\t\t\tnewOffsetX = Math.max( 0, canvasWidth / 2 - newWidth / 2 );\r\n\r\n\t\t}\r\n\r\n\t\tif ( newHeight > canvasHeight ) {\r\n\t\t\tnewOffsetY = newOffsetY > 0 ? 0 : newOffsetY;\r\n\t\t\tnewOffsetY = newOffsetY < canvasHeight - newHeight ? canvasHeight - newHeight : newOffsetY;\r\n\r\n\t\t} else {\r\n\r\n\t\t\t// Center vertically\r\n\t\t\tnewOffsetY = Math.max( 0, canvasHeight / 2 - newHeight / 2 );\r\n\r\n\t\t}\r\n\r\n\t\treturn {\r\n\t\t\ttop : newOffsetY,\r\n\t\t\tleft : newOffsetX\r\n\t\t};\r\n\r\n\t};\r\n\r\n\tGuestures.prototype.onZoom = function() {\r\n\r\n\t\tvar self = this;\r\n\r\n\t\t// Calculate current distance between points to get pinch ratio and new width and height\r\n\r\n\t\tvar currentWidth = self.contentStartPos.width;\r\n\t\tvar currentHeight = self.contentStartPos.height;\r\n\r\n\t\tvar currentOffsetX = self.contentStartPos.left;\r\n\t\tvar currentOffsetY = self.contentStartPos.top;\r\n\r\n\t\tvar endDistanceBetweenFingers = distance( self.newPoints[0], self.newPoints[1] );\r\n\r\n\t\tvar pinchRatio = endDistanceBetweenFingers / self.startDistanceBetweenFingers;\r\n\r\n\t\tvar newWidth = Math.floor( currentWidth * pinchRatio );\r\n\t\tvar newHeight = Math.floor( currentHeight * pinchRatio );\r\n\r\n\t\t// This is the translation due to pinch-zooming\r\n\t\tvar translateFromZoomingX = (currentWidth - newWidth) * self.percentageOfImageAtPinchPointX;\r\n\t\tvar translateFromZoomingY = (currentHeight - newHeight) * self.percentageOfImageAtPinchPointY;\r\n\r\n\t\t//Point between the two touches\r\n\r\n\t\tvar centerPointEndX = ((self.newPoints[0].x + self.newPoints[1].x) / 2) - $(window).scrollLeft();\r\n\t\tvar centerPointEndY = ((self.newPoints[0].y + self.newPoints[1].y) / 2) - $(window).scrollTop();\r\n\r\n\t\t// And this is the translation due to translation of the centerpoint\r\n\t\t// between the two fingers\r\n\r\n\t\tvar translateFromTranslatingX = centerPointEndX - self.centerPointStartX;\r\n\t\tvar translateFromTranslatingY = centerPointEndY - self.centerPointStartY;\r\n\r\n\t\t// The new offset is the old/current one plus the total translation\r\n\r\n\t\tvar newOffsetX = currentOffsetX + ( translateFromZoomingX + translateFromTranslatingX );\r\n\t\tvar newOffsetY = currentOffsetY + ( translateFromZoomingY + translateFromTranslatingY );\r\n\r\n\t\tvar newPos = {\r\n\t\t\ttop : newOffsetY,\r\n\t\t\tleft : newOffsetX,\r\n\t\t\tscaleX : self.contentStartPos.scaleX * pinchRatio,\r\n\t\t\tscaleY : self.contentStartPos.scaleY * pinchRatio\r\n\t\t};\r\n\r\n\t\tself.canTap = false;\r\n\r\n\t\tself.newWidth = newWidth;\r\n\t\tself.newHeight = newHeight;\r\n\r\n\t\tself.contentLastPos = newPos;\r\n\r\n\t\tif ( self.requestId ) {\r\n\t\t\tcancelAFrame( self.requestId );\r\n\r\n\t\t\tself.requestId = null;\r\n\t\t}\r\n\r\n\t\tself.requestId = requestAFrame(function() {\r\n\t\t\t$.fancybox.setTranslate( self.$content, self.contentLastPos );\r\n\t\t});\r\n\r\n\t};\r\n\r\n\tGuestures.prototype.ontouchend = function( e ) {\r\n\r\n\t\tvar self = this;\r\n\t\tvar dMs = Math.max( (new Date().getTime() ) - self.startTime, 1);\r\n\r\n\t\tvar swiping = self.isSwiping;\r\n\t\tvar panning = self.isPanning;\r\n\t\tvar zooming = self.isZooming;\r\n\r\n\t\tself.endPoints = pointers( e );\r\n\r\n\t\tself.$container.removeClass( 'fancybox-controls--isGrabbing' );\r\n\r\n\t\t$(document).off( '.fb.touch' );\r\n\r\n\t\tif ( self.requestId ) {\r\n\t\t\tcancelAFrame( self.requestId );\r\n\r\n\t\t\tself.requestId = null;\r\n\t\t}\r\n\r\n\t\tself.isSwiping = false;\r\n\t\tself.isPanning = false;\r\n\t\tself.isZooming = false;\r\n\r\n\t\tif ( self.canTap ) {\r\n\t\t\treturn self.onTap( e );\r\n\t\t}\r\n\r\n\t\tself.speed = 366;\r\n\r\n\t\t// Speed in px/ms\r\n\t\tself.velocityX = self.distanceX / dMs * 0.5;\r\n\t\tself.velocityY = self.distanceY / dMs * 0.5;\r\n\r\n\t\tself.speedX = Math.max( self.speed * 0.5, Math.min( self.speed * 1.5, ( 1 / Math.abs( self.velocityX ) ) * self.speed ) );\r\n\r\n\t\tif ( panning ) {\r\n\t\t\tself.endPanning();\r\n\r\n\t\t} else if ( zooming ) {\r\n\t\t\tself.endZooming();\r\n\r\n\t\t} else {\r\n\t\t\tself.endSwiping( swiping );\r\n\t\t}\r\n\r\n\t\treturn;\r\n\t};\r\n\r\n\tGuestures.prototype.endSwiping = function( swiping ) {\r\n\r\n\t\tvar self = this;\r\n\t\tvar ret = false;\r\n\r\n\t\tself.instance.isSliding = false;\r\n\t\tself.sliderLastPos = null;\r\n\r\n\t\t// Close if swiped vertically / navigate if horizontally\r\n\t\tif ( swiping == 'y' && Math.abs( self.distanceY ) > 50 ) {\r\n\r\n\t\t\t// Continue vertical movement\r\n\t\t\t$.fancybox.animate( self.instance.current.$slide, {\r\n\t\t\t\ttop : self.sliderStartPos.top + self.distanceY + ( self.velocityY * 150 ),\r\n\t\t\t\topacity : 0\r\n\t\t\t}, 150 );\r\n\r\n\t\t\tret = self.instance.close( true, 300 );\r\n\r\n\t\t} else if ( swiping == 'x' && self.distanceX > 50 && self.instance.group.length > 1 ) {\r\n\t\t\tret = self.instance.previous( self.speedX );\r\n\r\n\t\t} else if ( swiping == 'x' && self.distanceX < -50 && self.instance.group.length > 1 ) {\r\n\t\t\tret = self.instance.next( self.speedX );\r\n\t\t}\r\n\r\n\t\tif ( ret === false && ( swiping == 'x' || swiping == 'y' ) ) {\r\n\t\t\tself.instance.jumpTo( self.instance.current.index, 150 );\r\n\t\t}\r\n\r\n\t\tself.$container.removeClass( 'fancybox-is-sliding' );\r\n\r\n\t};\r\n\r\n\t// Limit panning from edges\r\n\t// ========================\r\n\r\n\tGuestures.prototype.endPanning = function() {\r\n\r\n\t\tvar self = this;\r\n\t\tvar newOffsetX, newOffsetY, newPos;\r\n\r\n\t\tif ( !self.contentLastPos ) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tif ( self.instance.current.opts.touch.momentum === false ) {\r\n\t\t\tnewOffsetX = self.contentLastPos.left;\r\n\t\t\tnewOffsetY = self.contentLastPos.top;\r\n\r\n\t\t} else {\r\n\r\n\t\t\t// Continue movement\r\n\t\t\tnewOffsetX = self.contentLastPos.left + ( self.velocityX * self.speed );\r\n\t\t\tnewOffsetY = self.contentLastPos.top + ( self.velocityY * self.speed );\r\n\t\t}\r\n\r\n\t\tnewPos = self.limitPosition( newOffsetX, newOffsetY, self.contentStartPos.width, self.contentStartPos.height );\r\n\r\n\t\t newPos.width = self.contentStartPos.width;\r\n\t\t newPos.height = self.contentStartPos.height;\r\n\r\n\t\t$.fancybox.animate( self.$content, newPos, 330 );\r\n\t};\r\n\r\n\r\n\tGuestures.prototype.endZooming = function() {\r\n\r\n\t\tvar self = this;\r\n\r\n\t\tvar current = self.instance.current;\r\n\r\n\t\tvar newOffsetX, newOffsetY, newPos, reset;\r\n\r\n\t\tvar newWidth = self.newWidth;\r\n\t\tvar newHeight = self.newHeight;\r\n\r\n\t\tif ( !self.contentLastPos ) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tnewOffsetX = self.contentLastPos.left;\r\n\t\tnewOffsetY = self.contentLastPos.top;\r\n\r\n\t\treset = {\r\n\t\t \ttop : newOffsetY,\r\n\t\t \tleft : newOffsetX,\r\n\t\t \twidth : newWidth,\r\n\t\t \theight : newHeight,\r\n\t\t\tscaleX : 1,\r\n\t\t\tscaleY : 1\r\n\t };\r\n\r\n\t // Reset scalex/scaleY values; this helps for perfomance and does not break animation\r\n\t $.fancybox.setTranslate( self.$content, reset );\r\n\r\n\t\tif ( newWidth < self.canvasWidth && newHeight < self.canvasHeight ) {\r\n\t\t\tself.instance.scaleToFit( 150 );\r\n\r\n\t\t} else if ( newWidth > current.width || newHeight > current.height ) {\r\n\t\t\tself.instance.scaleToActual( self.centerPointStartX, self.centerPointStartY, 150 );\r\n\r\n\t\t} else {\r\n\r\n\t\t\tnewPos = self.limitPosition( newOffsetX, newOffsetY, newWidth, newHeight );\r\n\r\n\t\t\t// Switch from scale() to width/height or animation will not work correctly\r\n\t\t\t$.fancybox.setTranslate( self.content, $.fancybox.getTranslate( self.$content ) );\r\n\r\n\t\t\t$.fancybox.animate( self.$content, newPos, 150 );\r\n\t\t}\r\n\r\n\t};\r\n\r\n\tGuestures.prototype.onTap = function(e) {\r\n\t\tvar self = this;\r\n\t\tvar $target = $( e.target );\r\n\r\n\t\tvar instance = self.instance;\r\n\t\tvar current = instance.current;\r\n\r\n\t\tvar endPoints = ( e && pointers( e ) ) || self.startPoints;\r\n\r\n\t\tvar tapX = endPoints[0] ? endPoints[0].x - self.$stage.offset().left : 0;\r\n\t\tvar tapY = endPoints[0] ? endPoints[0].y - self.$stage.offset().top : 0;\r\n\r\n\t\tvar where;\r\n\r\n\t\tvar process = function ( prefix ) {\r\n\r\n\t\t\tvar action = current.opts[ prefix ];\r\n\r\n\t\t\tif ( $.isFunction( action ) ) {\r\n\t\t\t\taction = action.apply( instance, [ current, e ] );\r\n\t\t\t}\r\n\r\n\t\t\tif ( !action) {\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\r\n\t\t\tswitch ( action ) {\r\n\r\n\t\t\t\tcase \"close\" :\r\n\r\n\t\t\t\t\tinstance.close( self.startEvent );\r\n\r\n\t\t\t\tbreak;\r\n\r\n\t\t\t\tcase \"toggleControls\" :\r\n\r\n\t\t\t\t\tinstance.toggleControls( true );\r\n\r\n\t\t\t\tbreak;\r\n\r\n\t\t\t\tcase \"next\" :\r\n\r\n\t\t\t\t\tinstance.next();\r\n\r\n\t\t\t\tbreak;\r\n\r\n\t\t\t\tcase \"nextOrClose\" :\r\n\r\n\t\t\t\t\tif ( instance.group.length > 1 ) {\r\n\t\t\t\t\t\tinstance.next();\r\n\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\tinstance.close( self.startEvent );\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\tbreak;\r\n\r\n\t\t\t\tcase \"zoom\" :\r\n\r\n\t\t\t\t\tif ( current.type == 'image' && ( current.isLoaded || current.$ghost ) ) {\r\n\r\n\t\t\t\t\t\tif ( instance.canPan() ) {\r\n\t\t\t\t\t\t\tinstance.scaleToFit();\r\n\r\n\t\t\t\t\t\t} else if ( instance.isScaledDown() ) {\r\n\t\t\t\t\t\t\tinstance.scaleToActual( tapX, tapY );\r\n\r\n\t\t\t\t\t\t} else if ( instance.group.length < 2 ) {\r\n\t\t\t\t\t\t\tinstance.close( self.startEvent );\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\tbreak;\r\n\t\t\t}\r\n\r\n\t\t};\r\n\r\n\t\t// Ignore right click\r\n\t\tif ( e.originalEvent && e.originalEvent.button == 2 ) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\t// Skip if current slide is not in the center\r\n\t\tif ( instance.isSliding ) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\t// Skip if clicked on the scrollbar\r\n\t\tif ( tapX > $target[0].clientWidth + $target.offset().left ) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\t// Check where is clicked\r\n\t\tif ( $target.is( '.fancybox-bg,.fancybox-inner,.fancybox-outer,.fancybox-container' ) ) {\r\n\t\t\twhere = 'Outside';\r\n\r\n\t\t} else if ( $target.is( '.fancybox-slide' ) ) {\r\n\t\t\twhere = 'Slide';\r\n\r\n\t\t} else if ( instance.current.$content && instance.current.$content.has( e.target ).length ) {\r\n\t\t \twhere = 'Content';\r\n\r\n\t\t} else {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\t// Check if this is a double tap\r\n\t\tif ( self.tapped ) {\r\n\r\n\t\t\t// Stop previously created single tap\r\n\t\t\tclearTimeout( self.tapped );\r\n\t\t\tself.tapped = null;\r\n\r\n\t\t\t// Skip if distance between taps is too big\r\n\t\t\tif ( Math.abs( tapX - self.tapX ) > 50 || Math.abs( tapY - self.tapY ) > 50 || instance.isSliding ) {\r\n\t\t\t\treturn this;\r\n\t\t\t}\r\n\r\n\t\t\t// OK, now we assume that this is a double-tap\r\n\t\t\tprocess( 'dblclick' + where );\r\n\r\n\t\t} else {\r\n\r\n\t\t\t// Single tap will be processed if user has not clicked second time within 300ms\r\n\t\t\t// or there is no need to wait for double-tap\r\n\t\t\tself.tapX = tapX;\r\n\t\t\tself.tapY = tapY;\r\n\r\n\t\t\tif ( current.opts[ 'dblclick' + where ] && current.opts[ 'dblclick' + where ] !== current.opts[ 'click' + where ] ) {\r\n\t\t\t\tself.tapped = setTimeout(function() {\r\n\t\t\t\t\tself.tapped = null;\r\n\r\n\t\t\t\t\tprocess( 'click' + where );\r\n\r\n\t\t\t\t}, 300);\r\n\r\n\t\t\t} else {\r\n\t\t\t\tprocess( 'click' + where );\r\n\t\t\t}\r\n\r\n\t\t}\r\n\r\n\t\treturn this;\r\n\t};\r\n\r\n\t$(document).on('onActivate.fb', function (e, instance) {\r\n\t\tif ( instance && !instance.Guestures ) {\r\n\t\t\tinstance.Guestures = new Guestures( instance );\r\n\t\t}\r\n\t});\r\n\r\n\t$(document).on('beforeClose.fb', function (e, instance) {\r\n\t\tif ( instance && instance.Guestures ) {\r\n\t\t\tinstance.Guestures.destroy();\r\n\t\t}\r\n\t});\r\n\r\n\r\n}(window, document, $));\r\n\r\n// ==========================================================================\r\n//\r\n// SlideShow\r\n// Enables slideshow functionality\r\n//\r\n// Example of usage:\r\n// $.fancybox.getInstance().SlideShow.start()\r\n//\r\n// ==========================================================================\r\n;(function (document, $) {\r\n\t'use strict';\r\n\r\n\tvar SlideShow = function( instance ) {\r\n\t\tthis.instance = instance;\r\n\t\tthis.init();\r\n\t};\r\n\r\n\t$.extend( SlideShow.prototype, {\r\n\t\ttimer : null,\r\n\t\tisActive : false,\r\n\t\t$button : null,\r\n\t\tspeed : 3000,\r\n\r\n\t\tinit : function() {\r\n\t\t\tvar self = this;\r\n\r\n\t\t\tself.$button = self.instance.$refs.toolbar.find('[data-fancybox-play]').on('click', function() {\r\n\t\t\t\tself.toggle();\r\n\t\t\t});\r\n\r\n\t\t\tif ( self.instance.group.length < 2 || !self.instance.group[ self.instance.currIndex ].opts.slideShow ) {\r\n\t\t\t\tself.$button.hide();\r\n\t\t\t}\r\n\t\t},\r\n\r\n\t\tset : function() {\r\n\t\t\tvar self = this;\r\n\r\n\t\t\t// Check if reached last element\r\n\t\t\tif ( self.instance && self.instance.current && (self.instance.current.opts.loop || self.instance.currIndex < self.instance.group.length - 1 )) {\r\n\t\t\t\tself.timer = setTimeout(function() {\r\n\t\t\t\t\tself.instance.next();\r\n\r\n\t\t\t\t}, self.instance.current.opts.slideShow.speed || self.speed);\r\n\r\n\t\t\t} else {\r\n\t\t\t\tself.stop();\r\n\t\t\t\tself.instance.idleSecondsCounter = 0;\r\n\t\t\t\tself.instance.showControls();\r\n\t\t\t}\r\n\r\n\t\t},\r\n\r\n\t\tclear : function() {\r\n\t\t\tvar self = this;\r\n\r\n\t\t\tclearTimeout( self.timer );\r\n\r\n\t\t\tself.timer = null;\r\n\t\t},\r\n\r\n\t\tstart : function() {\r\n\t\t\tvar self = this;\r\n\t\t\tvar current = self.instance.current;\r\n\r\n\t\t\tif ( self.instance && current && ( current.opts.loop || current.index < self.instance.group.length - 1 )) {\r\n\r\n\t\t\t\tself.isActive = true;\r\n\r\n\t\t\t\tself.$button\r\n\t\t\t\t\t.attr( 'title', current.opts.i18n[ current.opts.lang ].PLAY_STOP )\r\n\t\t\t\t\t.addClass( 'fancybox-button--pause' );\r\n\r\n\t\t\t\tif ( current.isComplete ) {\r\n\t\t\t\t\tself.set();\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t},\r\n\r\n\t\tstop : function() {\r\n\t\t\tvar self = this;\r\n\t\t\tvar current = self.instance.current;\r\n\r\n\t\t\tself.clear();\r\n\r\n\t\t\tself.$button\r\n\t\t\t\t.attr( 'title', current.opts.i18n[ current.opts.lang ].PLAY_START )\r\n\t\t\t\t.removeClass( 'fancybox-button--pause' );\r\n\r\n\t\t\tself.isActive = false;\r\n\t\t},\r\n\r\n\t\ttoggle : function() {\r\n\t\t\tvar self = this;\r\n\r\n\t\t\tif ( self.isActive ) {\r\n\t\t\t\tself.stop();\r\n\r\n\t\t\t} else {\r\n\t\t\t\tself.start();\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t});\r\n\r\n\t$(document).on({\r\n\t\t'onInit.fb' : function(e, instance) {\r\n\t\t\tif ( instance && !instance.SlideShow ) {\r\n\t\t\t\tinstance.SlideShow = new SlideShow( instance );\r\n\t\t\t}\r\n\t\t},\r\n\r\n\t\t'beforeShow.fb' : function(e, instance, current, firstRun) {\r\n\t\t\tvar SlideShow = instance && instance.SlideShow;\r\n\r\n\t\t\tif ( firstRun ) {\r\n\r\n\t\t\t\tif ( SlideShow && current.opts.slideShow.autoStart ) {\r\n\t\t\t\t\tSlideShow.start();\r\n\t\t\t\t}\r\n\r\n\t\t\t} else if ( SlideShow && SlideShow.isActive ) {\r\n\t\t\t\tSlideShow.clear();\r\n\t\t\t}\r\n\t\t},\r\n\r\n\t\t'afterShow.fb' : function(e, instance, current) {\r\n\t\t\tvar SlideShow = instance && instance.SlideShow;\r\n\r\n\t\t\tif ( SlideShow && SlideShow.isActive ) {\r\n\t\t\t\tSlideShow.set();\r\n\t\t\t}\r\n\t\t},\r\n\r\n\t\t'afterKeydown.fb' : function(e, instance, current, keypress, keycode) {\r\n\t\t\tvar SlideShow = instance && instance.SlideShow;\r\n\r\n\t\t\t// \"P\" or Spacebar\r\n\t\t\tif ( SlideShow && current.opts.slideShow && ( keycode === 80 || keycode === 32 ) && !$(document.activeElement).is( 'button,a,input' ) ) {\r\n\t\t\t\tkeypress.preventDefault();\r\n\r\n\t\t\t\tSlideShow.toggle();\r\n\t\t\t}\r\n\t\t},\r\n\r\n\t\t'beforeClose.fb onDeactivate.fb' : function(e, instance) {\r\n\t\t\tvar SlideShow = instance && instance.SlideShow;\r\n\r\n\t\t\tif ( SlideShow ) {\r\n\t\t\t\tSlideShow.stop();\r\n\t\t\t}\r\n\t\t}\r\n\t});\r\n\r\n\t// Page Visibility API to pause slideshow when window is not active\r\n\t$(document).on(\"visibilitychange\", function() {\r\n\t\tvar instance = $.fancybox.getInstance();\r\n\t\tvar SlideShow = instance && instance.SlideShow;\r\n\r\n\t\tif ( SlideShow && SlideShow.isActive ) {\r\n\t\t\tif ( document.hidden ) {\r\n\t\t\t\tSlideShow.clear();\r\n\r\n\t\t\t} else {\r\n\t\t\t\tSlideShow.set();\r\n\t\t\t}\r\n\t\t}\r\n\t});\r\n\r\n}(document, $));\r\n\r\n// ==========================================================================\r\n//\r\n// FullScreen\r\n// Adds fullscreen functionality\r\n//\r\n// ==========================================================================\r\n;(function (document, $) {\r\n\t'use strict';\r\n\r\n\t// Collection of methods supported by user browser\r\n\tvar fn = (function () {\r\n\r\n\t\tvar fnMap = [\r\n\t\t\t[\r\n\t\t\t\t'requestFullscreen',\r\n\t\t\t\t'exitFullscreen',\r\n\t\t\t\t'fullscreenElement',\r\n\t\t\t\t'fullscreenEnabled',\r\n\t\t\t\t'fullscreenchange',\r\n\t\t\t\t'fullscreenerror'\r\n\t\t\t],\r\n\t\t\t// new WebKit\r\n\t\t\t[\r\n\t\t\t\t'webkitRequestFullscreen',\r\n\t\t\t\t'webkitExitFullscreen',\r\n\t\t\t\t'webkitFullscreenElement',\r\n\t\t\t\t'webkitFullscreenEnabled',\r\n\t\t\t\t'webkitfullscreenchange',\r\n\t\t\t\t'webkitfullscreenerror'\r\n\r\n\t\t\t],\r\n\t\t\t// old WebKit (Safari 5.1)\r\n\t\t\t[\r\n\t\t\t\t'webkitRequestFullScreen',\r\n\t\t\t\t'webkitCancelFullScreen',\r\n\t\t\t\t'webkitCurrentFullScreenElement',\r\n\t\t\t\t'webkitCancelFullScreen',\r\n\t\t\t\t'webkitfullscreenchange',\r\n\t\t\t\t'webkitfullscreenerror'\r\n\r\n\t\t\t],\r\n\t\t\t[\r\n\t\t\t\t'mozRequestFullScreen',\r\n\t\t\t\t'mozCancelFullScreen',\r\n\t\t\t\t'mozFullScreenElement',\r\n\t\t\t\t'mozFullScreenEnabled',\r\n\t\t\t\t'mozfullscreenchange',\r\n\t\t\t\t'mozfullscreenerror'\r\n\t\t\t],\r\n\t\t\t[\r\n\t\t\t\t'msRequestFullscreen',\r\n\t\t\t\t'msExitFullscreen',\r\n\t\t\t\t'msFullscreenElement',\r\n\t\t\t\t'msFullscreenEnabled',\r\n\t\t\t\t'MSFullscreenChange',\r\n\t\t\t\t'MSFullscreenError'\r\n\t\t\t]\r\n\t\t];\r\n\r\n\t\tvar val;\r\n\t\tvar ret = {};\r\n\t\tvar i, j;\r\n\r\n\t\tfor ( i = 0; i < fnMap.length; i++ ) {\r\n\t\t\tval = fnMap[ i ];\r\n\r\n\t\t\tif ( val && val[ 1 ] in document ) {\r\n\t\t\t\tfor ( j = 0; j < val.length; j++ ) {\r\n\t\t\t\t\tret[ fnMap[ 0 ][ j ] ] = val[ j ];\r\n\t\t\t\t}\r\n\r\n\t\t\t\treturn ret;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn false;\r\n\t})();\r\n\r\n\t// If browser does not have Full Screen API, then simply unset default button template and stop\r\n\tif ( !fn ) {\r\n\t\t$.fancybox.defaults.btnTpl.fullScreen = false;\r\n\r\n\t\treturn;\r\n\t}\r\n\r\n\tvar FullScreen = {\r\n\t\trequest : function ( elem ) {\r\n\r\n\t\t\telem = elem || document.documentElement;\r\n\r\n\t\t\telem[ fn.requestFullscreen ]( elem.ALLOW_KEYBOARD_INPUT );\r\n\r\n\t\t},\r\n\t\texit : function () {\r\n\r\n\t\t\tdocument[ fn.exitFullscreen ]();\r\n\r\n\t\t},\r\n\t\ttoggle : function ( elem ) {\r\n\r\n\t\t\telem = elem || document.documentElement;\r\n\r\n\t\t\tif ( this.isFullscreen() ) {\r\n\t\t\t\tthis.exit();\r\n\r\n\t\t\t} else {\r\n\t\t\t\tthis.request( elem );\r\n\t\t\t}\r\n\r\n\t\t},\r\n\t\tisFullscreen : function() {\r\n\r\n\t\t\treturn Boolean( document[ fn.fullscreenElement ] );\r\n\r\n\t\t},\r\n\t\tenabled : function() {\r\n\r\n\t\t\treturn Boolean( document[ fn.fullscreenEnabled ] );\r\n\r\n\t\t}\r\n\t};\r\n\r\n\t$(document).on({\r\n\t\t'onInit.fb' : function(e, instance) {\r\n\t\t\tvar $container;\r\n\r\n\t\t\tvar $button = instance.$refs.toolbar.find('[data-fancybox-fullscreen]');\r\n\r\n\t\t\tif ( instance && !instance.FullScreen && instance.group[ instance.currIndex ].opts.fullScreen ) {\r\n\t\t\t\t$container = instance.$refs.container;\r\n\r\n\t\t\t\t$container.on('click.fb-fullscreen', '[data-fancybox-fullscreen]', function(e) {\r\n\r\n\t\t\t\t\te.stopPropagation();\r\n\t\t\t\t\te.preventDefault();\r\n\r\n\t\t\t\t\tFullScreen.toggle( $container[ 0 ] );\r\n\r\n\t\t\t\t});\r\n\r\n\t\t\t\tif ( instance.opts.fullScreen && instance.opts.fullScreen.autoStart === true ) {\r\n\t\t\t\t\tFullScreen.request( $container[ 0 ] );\r\n\t\t\t\t}\r\n\r\n\t\t\t\t// Expose API\r\n\t\t\t\tinstance.FullScreen = FullScreen;\r\n\r\n\t\t\t} else {\r\n\t\t\t\t$button.hide();\r\n\t\t\t}\r\n\r\n\t\t},\r\n\r\n\t\t'afterKeydown.fb' : function(e, instance, current, keypress, keycode) {\r\n\r\n\t\t\t// \"P\" or Spacebar\r\n\t\t\tif ( instance && instance.FullScreen && keycode === 70 ) {\r\n\t\t\t\tkeypress.preventDefault();\r\n\r\n\t\t\t\tinstance.FullScreen.toggle( instance.$refs.container[ 0 ] );\r\n\t\t\t}\r\n\r\n\t\t},\r\n\r\n\t\t'beforeClose.fb' : function( instance ) {\r\n\t\t\tif ( instance && instance.FullScreen ) {\r\n\t\t\t\tFullScreen.exit();\r\n\t\t\t}\r\n\t\t}\r\n\t});\r\n\r\n\t$(document).on(fn.fullscreenchange, function() {\r\n\t\tvar instance = $.fancybox.getInstance();\r\n\r\n\t\t// If image is zooming, then force to stop and reposition properly\r\n\t\tif ( instance.current && instance.current.type === 'image' && instance.isAnimating ) {\r\n\t\t\tinstance.current.$content.css( 'transition', 'none' );\r\n\r\n\t\t\tinstance.isAnimating = false;\r\n\r\n\t\t\tinstance.update( true, true, 0 );\r\n\t\t}\r\n\r\n\t});\r\n\r\n}(document, $));\r\n\r\n// ==========================================================================\r\n//\r\n// Thumbs\r\n// Displays thumbnails in a grid\r\n//\r\n// ==========================================================================\r\n;(function (document, $) {\r\n\t'use strict';\r\n\r\n\tvar FancyThumbs = function( instance ) {\r\n\t\tthis.instance = instance;\r\n\t\tthis.init();\r\n\t};\r\n\r\n\t$.extend( FancyThumbs.prototype, {\r\n\r\n\t\t$button\t\t: null,\r\n\t\t$grid\t\t: null,\r\n\t\t$list\t\t: null,\r\n\t\tisVisible\t: false,\r\n\r\n\t\tinit : function() {\r\n\t\t\tvar self = this;\r\n\r\n\t\t\tvar first = self.instance.group[0],\r\n\t\t\t\tsecond = self.instance.group[1];\r\n\r\n\t\t\tself.$button = self.instance.$refs.toolbar.find( '[data-fancybox-thumbs]' );\r\n\r\n\t\t\tif ( self.instance.group.length > 1 && self.instance.group[ self.instance.currIndex ].opts.thumbs && (\r\n\t\t \t\t( first.type == 'image' || first.opts.thumb || first.opts.$thumb ) &&\r\n\t\t \t\t( second.type == 'image' || second.opts.thumb || second.opts.$thumb )\r\n\t\t\t)) {\r\n\r\n\t\t\t\tself.$button.on('click', function() {\r\n\t\t\t\t\tself.toggle();\r\n\t\t\t\t});\r\n\r\n\t\t\t\tself.isActive = true;\r\n\r\n\t\t\t} else {\r\n\t\t\t\tself.$button.hide();\r\n\r\n\t\t\t\tself.isActive = false;\r\n\t\t\t}\r\n\r\n\t\t},\r\n\r\n\t\tcreate : function() {\r\n\t\t\tvar instance = this.instance,\r\n\t\t\t\tlist,\r\n\t\t\t\tsrc;\r\n\r\n\t\t\tthis.$grid = $('<div class=\"fancybox-thumbs\"></div>').appendTo( instance.$refs.container );\r\n\r\n\t\t\tlist = '<ul>';\r\n\r\n\t\t\t$.each(instance.group, function( i, item ) {\r\n\r\n\t\t\t\tsrc = item.opts.thumb || ( item.opts.$thumb ? item.opts.$thumb.attr('src') : null );\r\n\r\n\t\t\t\tif ( !src && item.type === 'image' ) {\r\n\t\t\t\t\tsrc = item.src;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif ( src && src.length ) {\r\n\t\t\t\t\tlist += '<li data-index=\"' + i + '\" tabindex=\"0\" class=\"fancybox-thumbs-loading\"><img data-src=\"' + src + '\" /></li>';\r\n\t\t\t\t}\r\n\r\n\t\t\t});\r\n\r\n\t\t\tlist += '</ul>';\r\n\r\n\t\t\tthis.$list = $( list ).appendTo( this.$grid ).on('click', 'li', function() {\r\n\t\t\t\tinstance.jumpTo( $(this).data('index') );\r\n\t\t\t});\r\n\r\n\t\t\tthis.$list.find('img').hide().one('load', function() {\r\n\r\n\t\t\t\tvar $parent\t\t= $(this).parent().removeClass('fancybox-thumbs-loading'),\r\n\t\t\t\t\tthumbWidth\t= $parent.outerWidth(),\r\n\t\t\t\t\tthumbHeight\t= $parent.outerHeight(),\r\n\t\t\t\t\twidth,\r\n\t\t\t\t\theight,\r\n\t\t\t\t\twidthRatio,\r\n\t\t\t\t\theightRatio;\r\n\r\n\t\t\t\twidth = this.naturalWidth\t|| this.width;\r\n\t\t\t\theight = this.naturalHeight\t|| this.height;\r\n\r\n\t\t\t\t//Calculate thumbnail width/height and center it\r\n\r\n\t\t\t\twidthRatio = width / thumbWidth;\r\n\t\t\t\theightRatio = height / thumbHeight;\r\n\r\n\t\t\t\tif (widthRatio >= 1 && heightRatio >= 1) {\r\n\t\t\t\t\tif (widthRatio > heightRatio) {\r\n\t\t\t\t\t\twidth = width / heightRatio;\r\n\t\t\t\t\t\theight = thumbHeight;\r\n\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\twidth = thumbWidth;\r\n\t\t\t\t\t\theight = height / widthRatio;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\t$(this).css({\r\n\t\t\t\t\twidth : Math.floor(width),\r\n\t\t\t\t\theight : Math.floor(height),\r\n\t\t\t\t\t'margin-top' : Math.min( 0, Math.floor(thumbHeight * 0.3 - height * 0.3 ) ),\r\n\t\t\t\t\t'margin-left' : Math.min( 0, Math.floor(thumbWidth * 0.5 - width * 0.5 ) )\r\n\t\t\t\t}).show();\r\n\r\n\t\t\t})\r\n\t\t\t.each(function() {\r\n\t\t\t\tthis.src = $( this ).data( 'src' );\r\n\t\t\t});\r\n\r\n\t\t},\r\n\r\n\t\tfocus : function() {\r\n\r\n\t\t\tif ( this.instance.current ) {\r\n\t\t\t\tthis.$list\r\n\t\t\t\t\t.children()\r\n\t\t\t\t\t.removeClass('fancybox-thumbs-active')\r\n\t\t\t\t\t.filter('[data-index=\"' + this.instance.current.index + '\"]')\r\n\t\t\t\t\t.addClass('fancybox-thumbs-active')\r\n\t\t\t\t\t.focus();\r\n\t\t\t}\r\n\r\n\t\t},\r\n\r\n\t\tclose : function() {\r\n\t\t\tthis.$grid.hide();\r\n\t\t},\r\n\r\n\t\tupdate : function() {\r\n\r\n\t\t\tthis.instance.$refs.container.toggleClass( 'fancybox-show-thumbs', this.isVisible );\r\n\r\n\t\t\tif ( this.isVisible ) {\r\n\r\n\t\t\t\tif ( !this.$grid ) {\r\n\t\t\t\t\tthis.create();\r\n\t\t\t\t}\r\n\r\n\t\t\t\tthis.instance.trigger( 'onThumbsShow' );\r\n\r\n\t\t\t\tthis.focus();\r\n\r\n\t\t\t} else if ( this.$grid ) {\r\n\t\t\t\tthis.instance.trigger( 'onThumbsHide' );\r\n\t\t\t}\r\n\r\n\t\t\t// Update content position\r\n\t\t\tthis.instance.update();\r\n\r\n\t\t},\r\n\r\n\t\thide : function() {\r\n\t\t\tthis.isVisible = false;\r\n\t\t\tthis.update();\r\n\t\t},\r\n\r\n\t\tshow : function() {\r\n\t\t\tthis.isVisible = true;\r\n\t\t\tthis.update();\r\n\t\t},\r\n\r\n\t\ttoggle : function() {\r\n\t\t\tthis.isVisible = !this.isVisible;\r\n\t\t\tthis.update();\r\n\t\t}\r\n\r\n\t});\r\n\r\n\t$(document).on({\r\n\r\n\t\t'onInit.fb' : function(e, instance) {\r\n\t\t\tif ( instance && !instance.Thumbs ) {\r\n\t\t\t\tinstance.Thumbs = new FancyThumbs( instance );\r\n\t\t\t}\r\n\t\t},\r\n\r\n\t\t'beforeShow.fb' : function(e, instance, item, firstRun) {\r\n\t\t\tvar Thumbs = instance && instance.Thumbs;\r\n\r\n\t\t\tif ( !Thumbs || !Thumbs.isActive ) {\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\r\n\t\t\tif ( item.modal ) {\r\n\t\t\t\tThumbs.$button.hide();\r\n\r\n\t\t\t\tThumbs.hide();\r\n\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\r\n\t\t\tif ( firstRun && instance.opts.thumbs.autoStart === true ) {\r\n\t\t\t\tThumbs.show();\r\n\t\t\t}\r\n\r\n\t\t\tif ( Thumbs.isVisible ) {\r\n\t\t\t\tThumbs.focus();\r\n\t\t\t}\r\n\t\t},\r\n\r\n\t\t'afterKeydown.fb' : function(e, instance, current, keypress, keycode) {\r\n\t\t\tvar Thumbs = instance && instance.Thumbs;\r\n\r\n\t\t\t// \"G\"\r\n\t\t\tif ( Thumbs && Thumbs.isActive && keycode === 71 ) {\r\n\t\t\t\tkeypress.preventDefault();\r\n\r\n\t\t\t\tThumbs.toggle();\r\n\t\t\t}\r\n\t\t},\r\n\r\n\t\t'beforeClose.fb' : function( e, instance ) {\r\n\t\t\tvar Thumbs = instance && instance.Thumbs;\r\n\r\n\t\t\tif ( Thumbs && Thumbs.isVisible && instance.opts.thumbs.hideOnClose !== false ) {\r\n\t\t\t\tThumbs.close();\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t});\r\n\r\n}(document, $));\r\n\r\n// ==========================================================================\r\n//\r\n// Hash\r\n// Enables linking to each modal\r\n//\r\n// ==========================================================================\r\n;(function (document, window, $) {\r\n\t'use strict';\r\n\r\n\t// Simple $.escapeSelector polyfill (for jQuery prior v3)\r\n\tif ( !$.escapeSelector ) {\r\n\t\t$.escapeSelector = function( sel ) {\r\n\t\t\tvar rcssescape = /([\\0-\\x1f\\x7f]|^-?\\d)|^-$|[^\\x80-\\uFFFF\\w-]/g;\r\n\t\t\tvar fcssescape = function( ch, asCodePoint ) {\r\n\t\t\t\tif ( asCodePoint ) {\r\n\t\t\t\t\t// U+0000 NULL becomes U+FFFD REPLACEMENT CHARACTER\r\n\t\t\t\t\tif ( ch === \"\\0\" ) {\r\n\t\t\t\t\t\treturn \"\\uFFFD\";\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\t// Control characters and (dependent upon position) numbers get escaped as code points\r\n\t\t\t\t\treturn ch.slice( 0, -1 ) + \"\\\\\" + ch.charCodeAt( ch.length - 1 ).toString( 16 ) + \" \";\r\n\t\t\t\t}\r\n\r\n\t\t\t\t// Other potentially-special ASCII characters get backslash-escaped\r\n\t\t\t\treturn \"\\\\\" + ch;\r\n\t\t\t};\r\n\r\n\t\t\treturn ( sel + \"\" ).replace( rcssescape, fcssescape );\r\n\t\t};\r\n\t}\r\n\r\n\t// Variable containing last hash value set by fancyBox\r\n\t// It will be used to determine if fancyBox needs to close after hash change is detected\r\n var currentHash = null;\r\n\r\n\t// Throtlling the history change\r\n\tvar timerID = null;\r\n\r\n\t// Get info about gallery name and current index from url\r\n function parseUrl() {\r\n var hash = window.location.hash.substr( 1 );\r\n var rez = hash.split( '-' );\r\n var index = rez.length > 1 && /^\\+?\\d+$/.test( rez[ rez.length - 1 ] ) ? parseInt( rez.pop( -1 ), 10 ) || 1 : 1;\r\n var gallery = rez.join( '-' );\r\n\r\n\t\t// Index is starting from 1\r\n\t\tif ( index < 1 ) {\r\n\t\t\tindex = 1;\r\n\t\t}\r\n\r\n return {\r\n hash : hash,\r\n index : index,\r\n gallery : gallery\r\n };\r\n }\r\n\r\n\t// Trigger click evnt on links to open new fancyBox instance\r\n\tfunction triggerFromUrl( url ) {\r\n\t\tvar $el;\r\n\r\n if ( url.gallery !== '' ) {\r\n\r\n\t\t\t// If we can find element matching 'data-fancybox' atribute, then trigger click event for that ..\r\n\t\t\t$el = $( \"[data-fancybox='\" + $.escapeSelector( url.gallery ) + \"']\" ).eq( url.index - 1 );\r\n\r\n if ( $el.length ) {\r\n\t\t\t\t$el.trigger( 'click' );\r\n\r\n\t\t\t} else {\r\n\r\n\t\t\t\t// .. if not, try finding element by ID\r\n\t\t\t\t$( \"#\" + $.escapeSelector( url.gallery ) + \"\" ).trigger( 'click' );\r\n\r\n\t\t\t}\r\n\r\n }\r\n\t}\r\n\r\n\t// Get gallery name from current instance\r\n\tfunction getGallery( instance ) {\r\n\t\tvar opts;\r\n\r\n\t\tif ( !instance ) {\r\n\t\t\treturn false;\r\n\t\t}\r\n\r\n\t\topts = instance.current ? instance.current.opts : instance.opts;\r\n\r\n\t\treturn opts.$orig ? opts.$orig.data( 'fancybox' ) : ( opts.hash || '' );\r\n\t}\r\n\r\n\t// Star when DOM becomes ready\r\n $(function() {\r\n\r\n\t\t// Small delay is used to allow other scripts to process \"dom ready\" event\r\n\t\tsetTimeout(function() {\r\n\r\n\t\t\t// Check if this module is not disabled\r\n\t\t\tif ( $.fancybox.defaults.hash === false ) {\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\r\n\t\t\t// Update hash when opening/closing fancyBox\r\n\t\t $(document).on({\r\n\t\t\t\t'onInit.fb' : function( e, instance ) {\r\n\t\t\t\t\tvar url, gallery;\r\n\r\n\t\t\t\t\tif ( instance.group[ instance.currIndex ].opts.hash === false ) {\r\n\t\t\t\t\t\treturn;\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\turl = parseUrl();\r\n\t\t\t\t\tgallery = getGallery( instance );\r\n\r\n\t\t\t\t\t// Make sure gallery start index matches index from hash\r\n\t\t\t\t\tif ( gallery && url.gallery && gallery == url.gallery ) {\r\n\t\t\t\t\t\tinstance.currIndex = url.index - 1;\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t},\r\n\r\n\t\t\t\t'beforeShow.fb' : function( e, instance, current, firstRun ) {\r\n\t\t\t\t\tvar gallery;\r\n\r\n\t\t\t\t\tif ( current.opts.hash === false ) {\r\n\t\t\t\t\t\treturn;\r\n\t\t\t\t\t}\r\n\r\n\t\t gallery = getGallery( instance );\r\n\r\n\t\t // Update window hash\r\n\t\t if ( gallery && gallery !== '' ) {\r\n\r\n\t\t\t\t\t\tif ( window.location.hash.indexOf( gallery ) < 0 ) {\r\n\t\t\t instance.opts.origHash = window.location.hash;\r\n\t\t\t }\r\n\r\n\t\t\t\t\t\tcurrentHash = gallery + ( instance.group.length > 1 ? '-' + ( current.index + 1 ) : '' );\r\n\r\n\t\t\t\t\t\tif ( 'replaceState' in window.history ) {\r\n\t\t\t\t\t\t\tif ( timerID ) {\r\n\t\t\t\t\t\t\t\tclearTimeout( timerID );\r\n\t\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t\ttimerID = setTimeout(function() {\r\n\t\t\t\t\t\t\t\twindow.history[ firstRun ? 'pushState' : 'replaceState' ]( {} , document.title, window.location.pathname + window.location.search + '#' + currentHash );\r\n\r\n\t\t\t\t\t\t\t\ttimerID = null;\r\n\r\n\t\t\t\t\t\t\t}, 300);\r\n\r\n\t\t\t\t\t\t} else {\r\n\t\t\t\t\t\t\twindow.location.hash = currentHash;\r\n\t\t\t\t\t\t}\r\n\r\n\t\t }\r\n\r\n\t\t },\r\n\r\n\t\t\t\t'beforeClose.fb' : function( e, instance, current ) {\r\n\t\t\t\t\tvar gallery, origHash;\r\n\r\n\t\t\t\t\tif ( timerID ) {\r\n\t\t\t\t\t\tclearTimeout( timerID );\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tif ( current.opts.hash === false ) {\r\n\t\t\t\t\t\treturn;\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tgallery = getGallery( instance );\r\n\t\t\t\t\torigHash = instance && instance.opts.origHash ? instance.opts.origHash : '';\r\n\r\n\t\t // Remove hash from location bar\r\n\t\t if ( gallery && gallery !== '' ) {\r\n\r\n\t\t if ( 'replaceState' in history ) {\r\n\t\t\t\t\t\t\twindow.history.replaceState( {} , document.title, window.location.pathname + window.location.search + origHash );\r\n\r\n\t\t } else {\r\n\t\t\t\t\t\t\twindow.location.hash = origHash;\r\n\r\n\t\t\t\t\t\t\t// Keep original scroll position\r\n\t\t\t\t\t\t\t$( window ).scrollTop( instance.scrollTop ).scrollLeft( instance.scrollLeft );\r\n\t\t }\r\n\t\t }\r\n\r\n\t\t\t\t\tcurrentHash = null;\r\n\t\t }\r\n\t\t });\r\n\r\n\t\t\t// Check if need to close after url has changed\r\n\t\t\t$(window).on('hashchange.fb', function() {\r\n\t\t\t\tvar url = parseUrl();\r\n\r\n\t\t\t\tif ( $.fancybox.getInstance() ) {\r\n\t\t\t\t\tif ( currentHash && currentHash !== url.gallery + '-' + url.index && !( url.index === 1 && currentHash == url.gallery ) ) {\r\n\t\t\t\t\t\tcurrentHash = null;\r\n\r\n\t\t\t\t\t\t$.fancybox.close();\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t} else if ( url.gallery !== '' ) {\r\n\t\t\t\t\ttriggerFromUrl( url );\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\t\t// If navigating away from current page\r\n\t\t\t$(window).one('unload.fb popstate.fb', function() {\r\n\t\t\t\t$.fancybox.getInstance( 'close', true, 0 );\r\n\t\t\t});\r\n\r\n\t\t\t// Check current hash and trigger click event on matching element to start fancyBox, if needed\r\n\t\t\ttriggerFromUrl( parseUrl() );\r\n\r\n\t\t}, 50);\r\n\r\n });\r\n\r\n\r\n}(document, window, $));\r\n","var $ = require('jquery');\r\n\r\n$(function () {\r\n var slider = $('.featured-hero-slider__slide-container__carousel');\r\n var isPageEditor = window.SitecoreUtilities.isPageEditor;\r\n\r\n var currentProgressBar;\r\n var progressBarActive = true;\r\n var sliderAutoplayTimer;\r\n if (!isPageEditor()) {\r\n\r\n if ($('.featured-hero-slider__slide-container__status-bar__status-tile').length > 1) {\r\n var showArrows = false;\r\n var numCards = slider.length;\r\n var speed = 6000;\r\n if (numCards > 2) {\r\n showArrows = false;\r\n }\r\n\r\n slider.slick({\r\n arrows: false,\r\n infinite: true,\r\n speed: 700,\r\n slidesToShow: 1,\r\n centerMode: false,\r\n variableWidth: true,\r\n mobileFirst: true,\r\n pauseOnHover: false,\r\n autoplay: true,\r\n autoplaySpeed: speed,\r\n responsive: [{\r\n breakpoint: 991,\r\n arrows: false,\r\n slidesToShow: 1,\r\n centerMode: true,\r\n variableWidth: true,\r\n variableHeight: true\r\n }],\r\n rtl: window.GenericUtilities.isRTL()\r\n });\r\n // to get slick slider to initialize on screen resize\r\n // https://github.com/kenwheeler/slick/issues/1730\r\n $(window).on('resize orientationchange', function () {\r\n slider.slick('resize');\r\n if (!progressBarActive) {\r\n slider.slick('pause');\r\n animateProgressBar(slider.slick('slickCurrentSlide'), \"stop\");\r\n }\r\n });\r\n //initialize the slider bar\r\n $('.featured-hero-slider__slide-container__status-bar__status-tile').each(function () {\r\n var t = $(this);\r\n var targetedIndex = t.attr('tileforslide');\r\n t.on('click',\r\n function () {\r\n slider.slick('slickGoTo', targetedIndex);\r\n slider.slick('slickPause');\r\n animateProgressBar(targetedIndex, \"stop\");\r\n //autoplayTimer(); //optional\r\n });\r\n if (targetedIndex == 0) { //start the animation for the first bar\r\n var progressBar = t.children('.featured-hero-slider__slide-container__status-bar__status-tile__progress-bar');\r\n currentProgressBar = progressBar;\r\n progressBar.animate({\r\n right: 0\r\n },\r\n speed,\r\n \"linear\",\r\n function() {\r\n //animation complete\r\n\r\n });\r\n }\r\n });\r\n\r\n function animateProgressBar(tileNum, command) {\r\n $('.featured-hero-slider__slide-container__status-bar__status-tile').each(function () {\r\n var t = $(this);\r\n var targetedIndex = t.attr('tileforslide');\r\n if (targetedIndex == tileNum) {\r\n var progressBar = t.children('.featured-hero-slider__slide-container__status-bar__status-tile__progress-bar');\r\n if (command == \"stop\") {\r\n currentProgressBar.stop();\r\n progressBarActive = false;\r\n }\r\n if (progressBarActive) {\r\n currentProgressBar = progressBar;\r\n progressBar.animate({\r\n right: 0\r\n }, speed, \"linear\", function () {\r\n //animation complete\r\n });\r\n } else { //inactive progress bar. Progress bars now change instantly\r\n //progressBar.addClass('filled');\r\n var allBars = $('.featured-hero-slider__slide-container__status-bar__status-tile .featured-hero-slider__slide-container__status-bar__status-tile__progress-bar');\r\n allBars.removeClass('filled').removeAttr('style');\r\n for (var i = tileNum; i >= 0; i--) {\r\n allBars[i].classList.add('filled');\r\n }\r\n }\r\n }\r\n });\r\n }\r\n\r\n function autoplayTimer() { //restarts the slider from a paused state\r\n clearTimeout(sliderAutoplayTimer);\r\n sliderAutoplayTimer = window.setTimeout(function () {\r\n var allBars = $('.featured-hero-slider__slide-container__status-bar__status-tile .featured-hero-slider__slide-container__status-bar__status-tile__progress-bar');\r\n allBars.each(function () {\r\n var t = $(this);\r\n if (t.hasClass('filled')) {\r\n t.attr('style', 'right:0px;').removeClass('filled');\r\n }\r\n });\r\n progressBarActive = true;\r\n slider.slick('play');\r\n }, 8000);\r\n }\r\n slider.on('swipe', function (event, slick, direction) {\r\n if (progressBarActive) {\r\n slider.slick('pause');\r\n animateProgressBar(slider.slick('slickCurrentSlide'), \"stop\");\r\n autoplayTimer();\r\n }\r\n });\r\n\r\n slider.on('afterChange', function (event, slick, currentSlide) {\r\n if (currentSlide == 0) {\r\n $('.featured-hero-slider__slide-container__status-bar__status-tile__progress-bar').each(function () {\r\n $(this).removeAttr('style');\r\n });\r\n }\r\n animateProgressBar(currentSlide, \"go\");\r\n });\r\n\r\n } else if ($('.featured-hero-slider__slide-container__status-bar__status-tile').length === 1) {\r\n $('.featured-hero-slider__slide-container__status-bar__status-tile').css(\"display\", \"none\");\r\n }\r\n } \r\n});","var jQuery = require('jquery');\r\n/*!\r\n * jQuery Validation Plugin v1.17.0\r\n *\r\n * https://jqueryvalidation.org/\r\n *\r\n * Copyright (c) 2017 Jörn Zaefferer\r\n * Released under the MIT license\r\n */\r\n(function( factory ) {\r\n\tif ( typeof define === \"function\" && define.amd ) {\r\n\t\tdefine( [\"jquery\"], factory );\r\n\t} else if (typeof module === \"object\" && module.exports) {\r\n\t\tmodule.exports = factory( require( \"jquery\" ) );\r\n\t} else {\r\n\t\tfactory( jQuery );\r\n\t}\r\n}(function( $ ) {\r\n\r\n$.extend( $.fn, {\r\n\r\n\t// https://jqueryvalidation.org/validate/\r\n\tvalidate: function( options ) {\r\n\r\n\t\t// If nothing is selected, return nothing; can't chain anyway\r\n\t\tif ( !this.length ) {\r\n\t\t\tif ( options && options.debug && window.console ) {\r\n\t\t\t\tconsole.warn( \"Nothing selected, can't validate, returning nothing.\" );\r\n\t\t\t}\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\t// Check if a validator for this form was already created\r\n\t\tvar validator = $.data( this[ 0 ], \"validator\" );\r\n\t\tif ( validator ) {\r\n\t\t\treturn validator;\r\n\t\t}\r\n\r\n\t\t// Add novalidate tag if HTML5.\r\n\t\tthis.attr( \"novalidate\", \"novalidate\" );\r\n\r\n\t\tvalidator = new $.validator( options, this[ 0 ] );\r\n\t\t$.data( this[ 0 ], \"validator\", validator );\r\n\r\n\t\tif ( validator.settings.onsubmit ) {\r\n\r\n\t\t\tthis.on( \"click.validate\", \":submit\", function( event ) {\r\n\r\n\t\t\t\t// Track the used submit button to properly handle scripted\r\n\t\t\t\t// submits later.\r\n\t\t\t\tvalidator.submitButton = event.currentTarget;\r\n\r\n\t\t\t\t// Allow suppressing validation by adding a cancel class to the submit button\r\n\t\t\t\tif ( $( this ).hasClass( \"cancel\" ) ) {\r\n\t\t\t\t\tvalidator.cancelSubmit = true;\r\n\t\t\t\t}\r\n\r\n\t\t\t\t// Allow suppressing validation by adding the html5 formnovalidate attribute to the submit button\r\n\t\t\t\tif ( $( this ).attr( \"formnovalidate\" ) !== undefined ) {\r\n\t\t\t\t\tvalidator.cancelSubmit = true;\r\n\t\t\t\t}\r\n\t\t\t} );\r\n\r\n\t\t\t// Validate the form on submit\r\n\t\t\tthis.on( \"submit.validate\", function( event ) {\r\n\t\t\t\tif ( validator.settings.debug ) {\r\n\r\n\t\t\t\t\t// Prevent form submit to be able to see console output\r\n\t\t\t\t\tevent.preventDefault();\r\n\t\t\t\t}\r\n\t\t\t\tfunction handle() {\r\n\t\t\t\t\tvar hidden, result;\r\n\r\n\t\t\t\t\t// Insert a hidden input as a replacement for the missing submit button\r\n\t\t\t\t\t// The hidden input is inserted in two cases:\r\n\t\t\t\t\t// - A user defined a `submitHandler`\r\n\t\t\t\t\t// - There was a pending request due to `remote` method and `stopRequest()`\r\n\t\t\t\t\t// was called to submit the form in case it's valid\r\n\t\t\t\t\tif ( validator.submitButton && ( validator.settings.submitHandler || validator.formSubmitted ) ) {\r\n\t\t\t\t\t\thidden = $( \"<input type='hidden'/>\" )\r\n\t\t\t\t\t\t\t.attr( \"name\", validator.submitButton.name )\r\n\t\t\t\t\t\t\t.val( $( validator.submitButton ).val() )\r\n\t\t\t\t\t\t\t.appendTo( validator.currentForm );\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tif ( validator.settings.submitHandler ) {\r\n\t\t\t\t\t\tresult = validator.settings.submitHandler.call( validator, validator.currentForm, event );\r\n\t\t\t\t\t\tif ( hidden ) {\r\n\r\n\t\t\t\t\t\t\t// And clean up afterwards; thanks to no-block-scope, hidden can be referenced\r\n\t\t\t\t\t\t\thidden.remove();\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\tif ( result !== undefined ) {\r\n\t\t\t\t\t\t\treturn result;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\treturn false;\r\n\t\t\t\t\t}\r\n\t\t\t\t\treturn true;\r\n\t\t\t\t}\r\n\r\n\t\t\t\t// Prevent submit for invalid forms or custom submit handlers\r\n\t\t\t\tif ( validator.cancelSubmit ) {\r\n\t\t\t\t\tvalidator.cancelSubmit = false;\r\n\t\t\t\t\treturn handle();\r\n\t\t\t\t}\r\n\t\t\t\tif ( validator.form() ) {\r\n\t\t\t\t\tif ( validator.pendingRequest ) {\r\n\t\t\t\t\t\tvalidator.formSubmitted = true;\r\n\t\t\t\t\t\treturn false;\r\n\t\t\t\t\t}\r\n\t\t\t\t\treturn handle();\r\n\t\t\t\t} else {\r\n\t\t\t\t\tvalidator.focusInvalid();\r\n\t\t\t\t\treturn false;\r\n\t\t\t\t}\r\n\t\t\t} );\r\n\t\t}\r\n\r\n\t\treturn validator;\r\n\t},\r\n\r\n\t// https://jqueryvalidation.org/valid/\r\n\tvalid: function() {\r\n\t\tvar valid, validator, errorList;\r\n\r\n\t\tif ( $( this[ 0 ] ).is( \"form\" ) ) {\r\n\t\t\tvalid = this.validate().form();\r\n\t\t} else {\r\n\t\t\terrorList = [];\r\n\t\t\tvalid = true;\r\n\t\t\tvalidator = $( this[ 0 ].form ).validate();\r\n\t\t\tthis.each( function() {\r\n\t\t\t\tvalid = validator.element( this ) && valid;\r\n\t\t\t\tif ( !valid ) {\r\n\t\t\t\t\terrorList = errorList.concat( validator.errorList );\r\n\t\t\t\t}\r\n\t\t\t} );\r\n\t\t\tvalidator.errorList = errorList;\r\n\t\t}\r\n\t\treturn valid;\r\n\t},\r\n\r\n\t// https://jqueryvalidation.org/rules/\r\n\trules: function( command, argument ) {\r\n\t\tvar element = this[ 0 ],\r\n\t\t\tsettings, staticRules, existingRules, data, param, filtered;\r\n\r\n\t\t// If nothing is selected, return empty object; can't chain anyway\r\n\t\tif ( element == null ) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tif ( !element.form && element.hasAttribute( \"contenteditable\" ) ) {\r\n\t\t\telement.form = this.closest( \"form\" )[ 0 ];\r\n\t\t\telement.name = this.attr( \"name\" );\r\n\t\t}\r\n\r\n\t\tif ( element.form == null ) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tif ( command ) {\r\n\t\t\tsettings = $.data( element.form, \"validator\" ).settings;\r\n\t\t\tstaticRules = settings.rules;\r\n\t\t\texistingRules = $.validator.staticRules( element );\r\n\t\t\tswitch ( command ) {\r\n\t\t\tcase \"add\":\r\n\t\t\t\t$.extend( existingRules, $.validator.normalizeRule( argument ) );\r\n\r\n\t\t\t\t// Remove messages from rules, but allow them to be set separately\r\n\t\t\t\tdelete existingRules.messages;\r\n\t\t\t\tstaticRules[ element.name ] = existingRules;\r\n\t\t\t\tif ( argument.messages ) {\r\n\t\t\t\t\tsettings.messages[ element.name ] = $.extend( settings.messages[ element.name ], argument.messages );\r\n\t\t\t\t}\r\n\t\t\t\tbreak;\r\n\t\t\tcase \"remove\":\r\n\t\t\t\tif ( !argument ) {\r\n\t\t\t\t\tdelete staticRules[ element.name ];\r\n\t\t\t\t\treturn existingRules;\r\n\t\t\t\t}\r\n\t\t\t\tfiltered = {};\r\n\t\t\t\t$.each( argument.split( /\\s/ ), function( index, method ) {\r\n\t\t\t\t\tfiltered[ method ] = existingRules[ method ];\r\n\t\t\t\t\tdelete existingRules[ method ];\r\n\t\t\t\t} );\r\n\t\t\t\treturn filtered;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tdata = $.validator.normalizeRules(\r\n\t\t$.extend(\r\n\t\t\t{},\r\n\t\t\t$.validator.classRules( element ),\r\n\t\t\t$.validator.attributeRules( element ),\r\n\t\t\t$.validator.dataRules( element ),\r\n\t\t\t$.validator.staticRules( element )\r\n\t\t), element );\r\n\r\n\t\t// Make sure required is at front\r\n\t\tif ( data.required ) {\r\n\t\t\tparam = data.required;\r\n\t\t\tdelete data.required;\r\n\t\t\tdata = $.extend( { required: param }, data );\r\n\t\t}\r\n\r\n\t\t// Make sure remote is at back\r\n\t\tif ( data.remote ) {\r\n\t\t\tparam = data.remote;\r\n\t\t\tdelete data.remote;\r\n\t\t\tdata = $.extend( data, { remote: param } );\r\n\t\t}\r\n\r\n\t\treturn data;\r\n\t}\r\n} );\r\n\r\n// Custom selectors\r\n$.extend( $.expr.pseudos || $.expr[ \":\" ], {\t\t// '|| $.expr[ \":\" ]' here enables backwards compatibility to jQuery 1.7. Can be removed when dropping jQ 1.7.x support\r\n\r\n\t// https://jqueryvalidation.org/blank-selector/\r\n\tblank: function( a ) {\r\n\t\treturn !$.trim( \"\" + $( a ).val() );\r\n\t},\r\n\r\n\t// https://jqueryvalidation.org/filled-selector/\r\n\tfilled: function( a ) {\r\n\t\tvar val = $( a ).val();\r\n\t\treturn val !== null && !!$.trim( \"\" + val );\r\n\t},\r\n\r\n\t// https://jqueryvalidation.org/unchecked-selector/\r\n\tunchecked: function( a ) {\r\n\t\treturn !$( a ).prop( \"checked\" );\r\n\t}\r\n} );\r\n\r\n// Constructor for validator\r\n$.validator = function( options, form ) {\r\n\tthis.settings = $.extend( true, {}, $.validator.defaults, options );\r\n\tthis.currentForm = form;\r\n\tthis.init();\r\n};\r\n\r\n// https://jqueryvalidation.org/jQuery.validator.format/\r\n$.validator.format = function( source, params ) {\r\n\tif ( arguments.length === 1 ) {\r\n\t\treturn function() {\r\n\t\t\tvar args = $.makeArray( arguments );\r\n\t\t\targs.unshift( source );\r\n\t\t\treturn $.validator.format.apply( this, args );\r\n\t\t};\r\n\t}\r\n\tif ( params === undefined ) {\r\n\t\treturn source;\r\n\t}\r\n\tif ( arguments.length > 2 && params.constructor !== Array ) {\r\n\t\tparams = $.makeArray( arguments ).slice( 1 );\r\n\t}\r\n\tif ( params.constructor !== Array ) {\r\n\t\tparams = [ params ];\r\n\t}\r\n\t$.each( params, function( i, n ) {\r\n\t\tsource = source.replace( new RegExp( \"\\\\{\" + i + \"\\\\}\", \"g\" ), function() {\r\n\t\t\treturn n;\r\n\t\t} );\r\n\t} );\r\n\treturn source;\r\n};\r\n\r\n$.extend( $.validator, {\r\n\r\n\tdefaults: {\r\n\t\tmessages: {},\r\n\t\tgroups: {},\r\n\t\trules: {},\r\n\t\terrorClass: \"error\",\r\n\t\tpendingClass: \"pending\",\r\n\t\tvalidClass: \"valid\",\r\n\t\terrorElement: \"label\",\r\n\t\tfocusCleanup: false,\r\n\t\tfocusInvalid: true,\r\n\t\terrorContainer: $( [] ),\r\n\t\terrorLabelContainer: $( [] ),\r\n\t\tonsubmit: true,\r\n\t\tignore: \":hidden\",\r\n\t\tignoreTitle: false,\r\n\t\tonfocusin: function( element ) {\r\n\t\t\tthis.lastActive = element;\r\n\r\n\t\t\t// Hide error label and remove error class on focus if enabled\r\n\t\t\tif ( this.settings.focusCleanup ) {\r\n\t\t\t\tif ( this.settings.unhighlight ) {\r\n\t\t\t\t\tthis.settings.unhighlight.call( this, element, this.settings.errorClass, this.settings.validClass );\r\n\t\t\t\t}\r\n\t\t\t\tthis.hideThese( this.errorsFor( element ) );\r\n\t\t\t}\r\n\t\t},\r\n\t\tonfocusout: function( element ) {\r\n\t\t\tif ( !this.checkable( element ) && ( element.name in this.submitted || !this.optional( element ) ) ) {\r\n\t\t\t\tthis.element( element );\r\n\t\t\t}\r\n\t\t},\r\n\t\tonkeyup: function( element, event ) {\r\n\r\n\t\t\t// Avoid revalidate the field when pressing one of the following keys\r\n\t\t\t// Shift => 16\r\n\t\t\t// Ctrl => 17\r\n\t\t\t// Alt => 18\r\n\t\t\t// Caps lock => 20\r\n\t\t\t// End => 35\r\n\t\t\t// Home => 36\r\n\t\t\t// Left arrow => 37\r\n\t\t\t// Up arrow => 38\r\n\t\t\t// Right arrow => 39\r\n\t\t\t// Down arrow => 40\r\n\t\t\t// Insert => 45\r\n\t\t\t// Num lock => 144\r\n\t\t\t// AltGr key => 225\r\n\t\t\tvar excludedKeys = [\r\n\t\t\t\t16, 17, 18, 20, 35, 36, 37,\r\n\t\t\t\t38, 39, 40, 45, 144, 225\r\n\t\t\t];\r\n\r\n\t\t\tif ( event.which === 9 && this.elementValue( element ) === \"\" || $.inArray( event.keyCode, excludedKeys ) !== -1 ) {\r\n\t\t\t\treturn;\r\n\t\t\t} else if ( element.name in this.submitted || element.name in this.invalid ) {\r\n\t\t\t\tthis.element( element );\r\n\t\t\t}\r\n\t\t},\r\n\t\tonclick: function( element ) {\r\n\r\n\t\t\t// Click on selects, radiobuttons and checkboxes\r\n\t\t\tif ( element.name in this.submitted ) {\r\n\t\t\t\tthis.element( element );\r\n\r\n\t\t\t// Or option elements, check parent select in that case\r\n\t\t\t} else if ( element.parentNode.name in this.submitted ) {\r\n\t\t\t\tthis.element( element.parentNode );\r\n\t\t\t}\r\n\t\t},\r\n\t\thighlight: function( element, errorClass, validClass ) {\r\n\t\t\tif ( element.type === \"radio\" ) {\r\n\t\t\t\tthis.findByName( element.name ).addClass( errorClass ).removeClass( validClass );\r\n\t\t\t} else {\r\n\t\t\t\t$( element ).addClass( errorClass ).removeClass( validClass );\r\n\t\t\t}\r\n\t\t},\r\n\t\tunhighlight: function( element, errorClass, validClass ) {\r\n\t\t\tif ( element.type === \"radio\" ) {\r\n\t\t\t\tthis.findByName( element.name ).removeClass( errorClass ).addClass( validClass );\r\n\t\t\t} else {\r\n\t\t\t\t$( element ).removeClass( errorClass ).addClass( validClass );\r\n\t\t\t}\r\n\t\t}\r\n\t},\r\n\r\n\t// https://jqueryvalidation.org/jQuery.validator.setDefaults/\r\n\tsetDefaults: function( settings ) {\r\n\t\t$.extend( $.validator.defaults, settings );\r\n\t},\r\n\r\n\tmessages: {\r\n\t\trequired: \"This field is required.\",\r\n\t\tremote: \"Please fix this field.\",\r\n\t\temail: \"Please enter a valid email address.\",\r\n\t\turl: \"Please enter a valid URL.\",\r\n\t\tdate: \"Please enter a valid date.\",\r\n\t\tdateISO: \"Please enter a valid date (ISO).\",\r\n\t\tnumber: \"Please enter a valid number.\",\r\n\t\tdigits: \"Please enter only digits.\",\r\n\t\tequalTo: \"Please enter the same value again.\",\r\n\t\tmaxlength: $.validator.format( \"Please enter no more than {0} characters.\" ),\r\n\t\tminlength: $.validator.format( \"Please enter at least {0} characters.\" ),\r\n\t\trangelength: $.validator.format( \"Please enter a value between {0} and {1} characters long.\" ),\r\n\t\trange: $.validator.format( \"Please enter a value between {0} and {1}.\" ),\r\n\t\tmax: $.validator.format( \"Please enter a value less than or equal to {0}.\" ),\r\n\t\tmin: $.validator.format( \"Please enter a value greater than or equal to {0}.\" ),\r\n\t\tstep: $.validator.format( \"Please enter a multiple of {0}.\" )\r\n\t},\r\n\r\n\tautoCreateRanges: false,\r\n\r\n\tprototype: {\r\n\r\n\t\tinit: function() {\r\n\t\t\tthis.labelContainer = $( this.settings.errorLabelContainer );\r\n\t\t\tthis.errorContext = this.labelContainer.length && this.labelContainer || $( this.currentForm );\r\n\t\t\tthis.containers = $( this.settings.errorContainer ).add( this.settings.errorLabelContainer );\r\n\t\t\tthis.submitted = {};\r\n\t\t\tthis.valueCache = {};\r\n\t\t\tthis.pendingRequest = 0;\r\n\t\t\tthis.pending = {};\r\n\t\t\tthis.invalid = {};\r\n\t\t\tthis.reset();\r\n\r\n\t\t\tvar groups = ( this.groups = {} ),\r\n\t\t\t\trules;\r\n\t\t\t$.each( this.settings.groups, function( key, value ) {\r\n\t\t\t\tif ( typeof value === \"string\" ) {\r\n\t\t\t\t\tvalue = value.split( /\\s/ );\r\n\t\t\t\t}\r\n\t\t\t\t$.each( value, function( index, name ) {\r\n\t\t\t\t\tgroups[ name ] = key;\r\n\t\t\t\t} );\r\n\t\t\t} );\r\n\t\t\trules = this.settings.rules;\r\n\t\t\t$.each( rules, function( key, value ) {\r\n\t\t\t\trules[ key ] = $.validator.normalizeRule( value );\r\n\t\t\t} );\r\n\r\n\t\t\tfunction delegate( event ) {\r\n\r\n\t\t\t\t// Set form expando on contenteditable\r\n\t\t\t\tif ( !this.form && this.hasAttribute( \"contenteditable\" ) ) {\r\n\t\t\t\t\tthis.form = $( this ).closest( \"form\" )[ 0 ];\r\n\t\t\t\t\tthis.name = $( this ).attr( \"name\" );\r\n\t\t\t\t}\r\n\r\n\t\t\t\tvar validator = $.data( this.form, \"validator\" ),\r\n\t\t\t\t\teventType = \"on\" + event.type.replace( /^validate/, \"\" ),\r\n\t\t\t\t\tsettings = validator.settings;\r\n\t\t\t\tif ( settings[ eventType ] && !$( this ).is( settings.ignore ) ) {\r\n\t\t\t\t\tsettings[ eventType ].call( validator, this, event );\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\t$( this.currentForm )\r\n\t\t\t\t.on( \"focusin.validate focusout.validate keyup.validate\",\r\n\t\t\t\t\t\":text, [type='password'], [type='file'], select, textarea, [type='number'], [type='search'], \" +\r\n\t\t\t\t\t\"[type='tel'], [type='url'], [type='email'], [type='datetime'], [type='date'], [type='month'], \" +\r\n\t\t\t\t\t\"[type='week'], [type='time'], [type='datetime-local'], [type='range'], [type='color'], \" +\r\n\t\t\t\t\t\"[type='radio'], [type='checkbox'], [contenteditable], [type='button']\", delegate )\r\n\r\n\t\t\t\t// Support: Chrome, oldIE\r\n\t\t\t\t// \"select\" is provided as event.target when clicking a option\r\n\t\t\t\t.on( \"click.validate\", \"select, option, [type='radio'], [type='checkbox']\", delegate );\r\n\r\n\t\t\tif ( this.settings.invalidHandler ) {\r\n\t\t\t\t$( this.currentForm ).on( \"invalid-form.validate\", this.settings.invalidHandler );\r\n\t\t\t}\r\n\t\t},\r\n\r\n\t\t// https://jqueryvalidation.org/Validator.form/\r\n\t\tform: function() {\r\n\t\t\tthis.checkForm();\r\n\t\t\t$.extend( this.submitted, this.errorMap );\r\n\t\t\tthis.invalid = $.extend( {}, this.errorMap );\r\n\t\t\tif ( !this.valid() ) {\r\n\t\t\t\t$( this.currentForm ).triggerHandler( \"invalid-form\", [ this ] );\r\n\t\t\t}\r\n\t\t\tthis.showErrors();\r\n\t\t\treturn this.valid();\r\n\t\t},\r\n\r\n\t\tcheckForm: function() {\r\n\t\t\tthis.prepareForm();\r\n\t\t\tfor ( var i = 0, elements = ( this.currentElements = this.elements() ); elements[ i ]; i++ ) {\r\n\t\t\t\tthis.check( elements[ i ] );\r\n\t\t\t}\r\n\t\t\treturn this.valid();\r\n\t\t},\r\n\r\n\t\t// https://jqueryvalidation.org/Validator.element/\r\n\t\telement: function( element ) {\r\n\t\t\tvar cleanElement = this.clean( element ),\r\n\t\t\t\tcheckElement = this.validationTargetFor( cleanElement ),\r\n\t\t\t\tv = this,\r\n\t\t\t\tresult = true,\r\n\t\t\t\trs, group;\r\n\r\n\t\t\tif ( checkElement === undefined ) {\r\n\t\t\t\tdelete this.invalid[ cleanElement.name ];\r\n\t\t\t} else {\r\n\t\t\t\tthis.prepareElement( checkElement );\r\n\t\t\t\tthis.currentElements = $( checkElement );\r\n\r\n\t\t\t\t// If this element is grouped, then validate all group elements already\r\n\t\t\t\t// containing a value\r\n\t\t\t\tgroup = this.groups[ checkElement.name ];\r\n\t\t\t\tif ( group ) {\r\n\t\t\t\t\t$.each( this.groups, function( name, testgroup ) {\r\n\t\t\t\t\t\tif ( testgroup === group && name !== checkElement.name ) {\r\n\t\t\t\t\t\t\tcleanElement = v.validationTargetFor( v.clean( v.findByName( name ) ) );\r\n\t\t\t\t\t\t\tif ( cleanElement && cleanElement.name in v.invalid ) {\r\n\t\t\t\t\t\t\t\tv.currentElements.push( cleanElement );\r\n\t\t\t\t\t\t\t\tresult = v.check( cleanElement ) && result;\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t} );\r\n\t\t\t\t}\r\n\r\n\t\t\t\trs = this.check( checkElement ) !== false;\r\n\t\t\t\tresult = result && rs;\r\n\t\t\t\tif ( rs ) {\r\n\t\t\t\t\tthis.invalid[ checkElement.name ] = false;\r\n\t\t\t\t} else {\r\n\t\t\t\t\tthis.invalid[ checkElement.name ] = true;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif ( !this.numberOfInvalids() ) {\r\n\r\n\t\t\t\t\t// Hide error containers on last error\r\n\t\t\t\t\tthis.toHide = this.toHide.add( this.containers );\r\n\t\t\t\t}\r\n\t\t\t\tthis.showErrors();\r\n\r\n\t\t\t\t// Add aria-invalid status for screen readers\r\n\t\t\t\t$( element ).attr( \"aria-invalid\", !rs );\r\n\t\t\t}\r\n\r\n\t\t\treturn result;\r\n\t\t},\r\n\r\n\t\t// https://jqueryvalidation.org/Validator.showErrors/\r\n\t\tshowErrors: function( errors ) {\r\n\t\t\tif ( errors ) {\r\n\t\t\t\tvar validator = this;\r\n\r\n\t\t\t\t// Add items to error list and map\r\n\t\t\t\t$.extend( this.errorMap, errors );\r\n\t\t\t\tthis.errorList = $.map( this.errorMap, function( message, name ) {\r\n\t\t\t\t\treturn {\r\n\t\t\t\t\t\tmessage: message,\r\n\t\t\t\t\t\telement: validator.findByName( name )[ 0 ]\r\n\t\t\t\t\t};\r\n\t\t\t\t} );\r\n\r\n\t\t\t\t// Remove items from success list\r\n\t\t\t\tthis.successList = $.grep( this.successList, function( element ) {\r\n\t\t\t\t\treturn !( element.name in errors );\r\n\t\t\t\t} );\r\n\t\t\t}\r\n\t\t\tif ( this.settings.showErrors ) {\r\n\t\t\t\tthis.settings.showErrors.call( this, this.errorMap, this.errorList );\r\n\t\t\t} else {\r\n\t\t\t\tthis.defaultShowErrors();\r\n\t\t\t}\r\n\t\t},\r\n\r\n\t\t// https://jqueryvalidation.org/Validator.resetForm/\r\n\t\tresetForm: function() {\r\n\t\t\tif ( $.fn.resetForm ) {\r\n\t\t\t\t$( this.currentForm ).resetForm();\r\n\t\t\t}\r\n\t\t\tthis.invalid = {};\r\n\t\t\tthis.submitted = {};\r\n\t\t\tthis.prepareForm();\r\n\t\t\tthis.hideErrors();\r\n\t\t\tvar elements = this.elements()\r\n\t\t\t\t.removeData( \"previousValue\" )\r\n\t\t\t\t.removeAttr( \"aria-invalid\" );\r\n\r\n\t\t\tthis.resetElements( elements );\r\n\t\t},\r\n\r\n\t\tresetElements: function( elements ) {\r\n\t\t\tvar i;\r\n\r\n\t\t\tif ( this.settings.unhighlight ) {\r\n\t\t\t\tfor ( i = 0; elements[ i ]; i++ ) {\r\n\t\t\t\t\tthis.settings.unhighlight.call( this, elements[ i ],\r\n\t\t\t\t\t\tthis.settings.errorClass, \"\" );\r\n\t\t\t\t\tthis.findByName( elements[ i ].name ).removeClass( this.settings.validClass );\r\n\t\t\t\t}\r\n\t\t\t} else {\r\n\t\t\t\telements\r\n\t\t\t\t\t.removeClass( this.settings.errorClass )\r\n\t\t\t\t\t.removeClass( this.settings.validClass );\r\n\t\t\t}\r\n\t\t},\r\n\r\n\t\tnumberOfInvalids: function() {\r\n\t\t\treturn this.objectLength( this.invalid );\r\n\t\t},\r\n\r\n\t\tobjectLength: function( obj ) {\r\n\t\t\t/* jshint unused: false */\r\n\t\t\tvar count = 0,\r\n\t\t\t\ti;\r\n\t\t\tfor ( i in obj ) {\r\n\r\n\t\t\t\t// This check allows counting elements with empty error\r\n\t\t\t\t// message as invalid elements\r\n\t\t\t\tif ( obj[ i ] !== undefined && obj[ i ] !== null && obj[ i ] !== false ) {\r\n\t\t\t\t\tcount++;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\treturn count;\r\n\t\t},\r\n\r\n\t\thideErrors: function() {\r\n\t\t\tthis.hideThese( this.toHide );\r\n\t\t},\r\n\r\n\t\thideThese: function( errors ) {\r\n\t\t\terrors.not( this.containers ).text( \"\" );\r\n\t\t\tthis.addWrapper( errors ).hide();\r\n\t\t},\r\n\r\n\t\tvalid: function() {\r\n\t\t\treturn this.size() === 0;\r\n\t\t},\r\n\r\n\t\tsize: function() {\r\n\t\t\treturn this.errorList.length;\r\n\t\t},\r\n\r\n\t\tfocusInvalid: function() {\r\n\t\t\tif ( this.settings.focusInvalid ) {\r\n\t\t\t\ttry {\r\n\t\t\t\t\t$( this.findLastActive() || this.errorList.length && this.errorList[ 0 ].element || [] )\r\n\t\t\t\t\t.filter( \":visible\" )\r\n\t\t\t\t\t.focus()\r\n\r\n\t\t\t\t\t// Manually trigger focusin event; without it, focusin handler isn't called, findLastActive won't have anything to find\r\n\t\t\t\t\t.trigger( \"focusin\" );\r\n\t\t\t\t} catch ( e ) {\r\n\r\n\t\t\t\t\t// Ignore IE throwing errors when focusing hidden elements\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t},\r\n\r\n\t\tfindLastActive: function() {\r\n\t\t\tvar lastActive = this.lastActive;\r\n\t\t\treturn lastActive && $.grep( this.errorList, function( n ) {\r\n\t\t\t\treturn n.element.name === lastActive.name;\r\n\t\t\t} ).length === 1 && lastActive;\r\n\t\t},\r\n\r\n\t\telements: function() {\r\n\t\t\tvar validator = this,\r\n\t\t\t\trulesCache = {};\r\n\r\n\t\t\t// Select all valid inputs inside the form (no submit or reset buttons)\r\n\t\t\treturn $( this.currentForm )\r\n\t\t\t.find( \"input, select, textarea, [contenteditable]\" )\r\n\t\t\t.not( \":submit, :reset, :image, :disabled\" )\r\n\t\t\t.not( this.settings.ignore )\r\n\t\t\t.filter( function() {\r\n\t\t\t\tvar name = this.name || $( this ).attr( \"name\" ); // For contenteditable\r\n\t\t\t\tif ( !name && validator.settings.debug && window.console ) {\r\n\t\t\t\t\tconsole.error( \"%o has no name assigned\", this );\r\n\t\t\t\t}\r\n\r\n\t\t\t\t// Set form expando on contenteditable\r\n\t\t\t\tif ( this.hasAttribute( \"contenteditable\" ) ) {\r\n\t\t\t\t\tthis.form = $( this ).closest( \"form\" )[ 0 ];\r\n\t\t\t\t\tthis.name = name;\r\n\t\t\t\t}\r\n\r\n\t\t\t\t// Select only the first element for each name, and only those with rules specified\r\n\t\t\t\tif ( name in rulesCache || !validator.objectLength( $( this ).rules() ) ) {\r\n\t\t\t\t\treturn false;\r\n\t\t\t\t}\r\n\r\n\t\t\t\trulesCache[ name ] = true;\r\n\t\t\t\treturn true;\r\n\t\t\t} );\r\n\t\t},\r\n\r\n\t\tclean: function( selector ) {\r\n\t\t\treturn $( selector )[ 0 ];\r\n\t\t},\r\n\r\n\t\terrors: function() {\r\n\t\t\tvar errorClass = this.settings.errorClass.split( \" \" ).join( \".\" );\r\n\t\t\treturn $( this.settings.errorElement + \".\" + errorClass, this.errorContext );\r\n\t\t},\r\n\r\n\t\tresetInternals: function() {\r\n\t\t\tthis.successList = [];\r\n\t\t\tthis.errorList = [];\r\n\t\t\tthis.errorMap = {};\r\n\t\t\tthis.toShow = $( [] );\r\n\t\t\tthis.toHide = $( [] );\r\n\t\t},\r\n\r\n\t\treset: function() {\r\n\t\t\tthis.resetInternals();\r\n\t\t\tthis.currentElements = $( [] );\r\n\t\t},\r\n\r\n\t\tprepareForm: function() {\r\n\t\t\tthis.reset();\r\n\t\t\tthis.toHide = this.errors().add( this.containers );\r\n\t\t},\r\n\r\n\t\tprepareElement: function( element ) {\r\n\t\t\tthis.reset();\r\n\t\t\tthis.toHide = this.errorsFor( element );\r\n\t\t},\r\n\r\n\t\telementValue: function( element ) {\r\n\t\t\tvar $element = $( element ),\r\n\t\t\t\ttype = element.type,\r\n\t\t\t\tval, idx;\r\n\r\n\t\t\tif ( type === \"radio\" || type === \"checkbox\" ) {\r\n\t\t\t\treturn this.findByName( element.name ).filter( \":checked\" ).val();\r\n\t\t\t} else if ( type === \"number\" && typeof element.validity !== \"undefined\" ) {\r\n\t\t\t\treturn element.validity.badInput ? \"NaN\" : $element.val();\r\n\t\t\t}\r\n\r\n\t\t\tif ( element.hasAttribute( \"contenteditable\" ) ) {\r\n\t\t\t\tval = $element.text();\r\n\t\t\t} else {\r\n\t\t\t\tval = $element.val();\r\n\t\t\t}\r\n\r\n\t\t\tif ( type === \"file\" ) {\r\n\r\n\t\t\t\t// Modern browser (chrome & safari)\r\n\t\t\t\tif ( val.substr( 0, 12 ) === \"C:\\\\fakepath\\\\\" ) {\r\n\t\t\t\t\treturn val.substr( 12 );\r\n\t\t\t\t}\r\n\r\n\t\t\t\t// Legacy browsers\r\n\t\t\t\t// Unix-based path\r\n\t\t\t\tidx = val.lastIndexOf( \"/\" );\r\n\t\t\t\tif ( idx >= 0 ) {\r\n\t\t\t\t\treturn val.substr( idx + 1 );\r\n\t\t\t\t}\r\n\r\n\t\t\t\t// Windows-based path\r\n\t\t\t\tidx = val.lastIndexOf( \"\\\\\" );\r\n\t\t\t\tif ( idx >= 0 ) {\r\n\t\t\t\t\treturn val.substr( idx + 1 );\r\n\t\t\t\t}\r\n\r\n\t\t\t\t// Just the file name\r\n\t\t\t\treturn val;\r\n\t\t\t}\r\n\r\n\t\t\tif ( typeof val === \"string\" ) {\r\n\t\t\t\treturn val.replace( /\\r/g, \"\" );\r\n\t\t\t}\r\n\t\t\treturn val;\r\n\t\t},\r\n\r\n\t\tcheck: function( element ) {\r\n\t\t\telement = this.validationTargetFor( this.clean( element ) );\r\n\r\n\t\t\tvar rules = $( element ).rules(),\r\n\t\t\t\trulesCount = $.map( rules, function( n, i ) {\r\n\t\t\t\t\treturn i;\r\n\t\t\t\t} ).length,\r\n\t\t\t\tdependencyMismatch = false,\r\n\t\t\t\tval = this.elementValue( element ),\r\n\t\t\t\tresult, method, rule, normalizer;\r\n\r\n\t\t\t// Prioritize the local normalizer defined for this element over the global one\r\n\t\t\t// if the former exists, otherwise user the global one in case it exists.\r\n\t\t\tif ( typeof rules.normalizer === \"function\" ) {\r\n\t\t\t\tnormalizer = rules.normalizer;\r\n\t\t\t} else if (\ttypeof this.settings.normalizer === \"function\" ) {\r\n\t\t\t\tnormalizer = this.settings.normalizer;\r\n\t\t\t}\r\n\r\n\t\t\t// If normalizer is defined, then call it to retreive the changed value instead\r\n\t\t\t// of using the real one.\r\n\t\t\t// Note that `this` in the normalizer is `element`.\r\n\t\t\tif ( normalizer ) {\r\n\t\t\t\tval = normalizer.call( element, val );\r\n\r\n\t\t\t\tif ( typeof val !== \"string\" ) {\r\n\t\t\t\t\tthrow new TypeError( \"The normalizer should return a string value.\" );\r\n\t\t\t\t}\r\n\r\n\t\t\t\t// Delete the normalizer from rules to avoid treating it as a pre-defined method.\r\n\t\t\t\tdelete rules.normalizer;\r\n\t\t\t}\r\n\r\n\t\t\tfor ( method in rules ) {\r\n\t\t\t\trule = { method: method, parameters: rules[ method ] };\r\n\t\t\t\ttry {\r\n\t\t\t\t\tresult = $.validator.methods[ method ].call( this, val, element, rule.parameters );\r\n\r\n\t\t\t\t\t// If a method indicates that the field is optional and therefore valid,\r\n\t\t\t\t\t// don't mark it as valid when there are no other rules\r\n\t\t\t\t\tif ( result === \"dependency-mismatch\" && rulesCount === 1 ) {\r\n\t\t\t\t\t\tdependencyMismatch = true;\r\n\t\t\t\t\t\tcontinue;\r\n\t\t\t\t\t}\r\n\t\t\t\t\tdependencyMismatch = false;\r\n\r\n\t\t\t\t\tif ( result === \"pending\" ) {\r\n\t\t\t\t\t\tthis.toHide = this.toHide.not( this.errorsFor( element ) );\r\n\t\t\t\t\t\treturn;\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tif ( !result ) {\r\n\t\t\t\t\t\tthis.formatAndAdd( element, rule );\r\n\t\t\t\t\t\treturn false;\r\n\t\t\t\t\t}\r\n\t\t\t\t} catch ( e ) {\r\n\t\t\t\t\tif ( this.settings.debug && window.console ) {\r\n\t\t\t\t\t\tconsole.log( \"Exception occurred when checking element \" + element.id + \", check the '\" + rule.method + \"' method.\", e );\r\n\t\t\t\t\t}\r\n\t\t\t\t\tif ( e instanceof TypeError ) {\r\n\t\t\t\t\t\te.message += \". Exception occurred when checking element \" + element.id + \", check the '\" + rule.method + \"' method.\";\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tthrow e;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\tif ( dependencyMismatch ) {\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\t\t\tif ( this.objectLength( rules ) ) {\r\n\t\t\t\tthis.successList.push( element );\r\n\t\t\t}\r\n\t\t\treturn true;\r\n\t\t},\r\n\r\n\t\t// Return the custom message for the given element and validation method\r\n\t\t// specified in the element's HTML5 data attribute\r\n\t\t// return the generic message if present and no method specific message is present\r\n\t\tcustomDataMessage: function( element, method ) {\r\n\t\t\treturn $( element ).data( \"msg\" + method.charAt( 0 ).toUpperCase() +\r\n\t\t\t\tmethod.substring( 1 ).toLowerCase() ) || $( element ).data( \"msg\" );\r\n\t\t},\r\n\r\n\t\t// Return the custom message for the given element name and validation method\r\n\t\tcustomMessage: function( name, method ) {\r\n\t\t\tvar m = this.settings.messages[ name ];\r\n\t\t\treturn m && ( m.constructor === String ? m : m[ method ] );\r\n\t\t},\r\n\r\n\t\t// Return the first defined argument, allowing empty strings\r\n\t\tfindDefined: function() {\r\n\t\t\tfor ( var i = 0; i < arguments.length; i++ ) {\r\n\t\t\t\tif ( arguments[ i ] !== undefined ) {\r\n\t\t\t\t\treturn arguments[ i ];\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\treturn undefined;\r\n\t\t},\r\n\r\n\t\t// The second parameter 'rule' used to be a string, and extended to an object literal\r\n\t\t// of the following form:\r\n\t\t// rule = {\r\n\t\t// method: \"method name\",\r\n\t\t// parameters: \"the given method parameters\"\r\n\t\t// }\r\n\t\t//\r\n\t\t// The old behavior still supported, kept to maintain backward compatibility with\r\n\t\t// old code, and will be removed in the next major release.\r\n\t\tdefaultMessage: function( element, rule ) {\r\n\t\t\tif ( typeof rule === \"string\" ) {\r\n\t\t\t\trule = { method: rule };\r\n\t\t\t}\r\n\r\n\t\t\tvar message = this.findDefined(\r\n\t\t\t\t\tthis.customMessage( element.name, rule.method ),\r\n\t\t\t\t\tthis.customDataMessage( element, rule.method ),\r\n\r\n\t\t\t\t\t// 'title' is never undefined, so handle empty string as undefined\r\n\t\t\t\t\t!this.settings.ignoreTitle && element.title || undefined,\r\n\t\t\t\t\t$.validator.messages[ rule.method ],\r\n\t\t\t\t\t\"<strong>Warning: No message defined for \" + element.name + \"</strong>\"\r\n\t\t\t\t),\r\n\t\t\t\ttheregex = /\\$?\\{(\\d+)\\}/g;\r\n\t\t\tif ( typeof message === \"function\" ) {\r\n\t\t\t\tmessage = message.call( this, rule.parameters, element );\r\n\t\t\t} else if ( theregex.test( message ) ) {\r\n\t\t\t\tmessage = $.validator.format( message.replace( theregex, \"{$1}\" ), rule.parameters );\r\n\t\t\t}\r\n\r\n\t\t\treturn message;\r\n\t\t},\r\n\r\n\t\tformatAndAdd: function( element, rule ) {\r\n\t\t\tvar message = this.defaultMessage( element, rule );\r\n\r\n\t\t\tthis.errorList.push( {\r\n\t\t\t\tmessage: message,\r\n\t\t\t\telement: element,\r\n\t\t\t\tmethod: rule.method\r\n\t\t\t} );\r\n\r\n\t\t\tthis.errorMap[ element.name ] = message;\r\n\t\t\tthis.submitted[ element.name ] = message;\r\n\t\t},\r\n\r\n\t\taddWrapper: function( toToggle ) {\r\n\t\t\tif ( this.settings.wrapper ) {\r\n\t\t\t\ttoToggle = toToggle.add( toToggle.parent( this.settings.wrapper ) );\r\n\t\t\t}\r\n\t\t\treturn toToggle;\r\n\t\t},\r\n\r\n\t\tdefaultShowErrors: function() {\r\n\t\t\tvar i, elements, error;\r\n\t\t\tfor ( i = 0; this.errorList[ i ]; i++ ) {\r\n\t\t\t\terror = this.errorList[ i ];\r\n\t\t\t\tif ( this.settings.highlight ) {\r\n\t\t\t\t\tthis.settings.highlight.call( this, error.element, this.settings.errorClass, this.settings.validClass );\r\n\t\t\t\t}\r\n\t\t\t\tthis.showLabel( error.element, error.message );\r\n\t\t\t}\r\n\t\t\tif ( this.errorList.length ) {\r\n\t\t\t\tthis.toShow = this.toShow.add( this.containers );\r\n\t\t\t}\r\n\t\t\tif ( this.settings.success ) {\r\n\t\t\t\tfor ( i = 0; this.successList[ i ]; i++ ) {\r\n\t\t\t\t\tthis.showLabel( this.successList[ i ] );\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\tif ( this.settings.unhighlight ) {\r\n\t\t\t\tfor ( i = 0, elements = this.validElements(); elements[ i ]; i++ ) {\r\n\t\t\t\t\tthis.settings.unhighlight.call( this, elements[ i ], this.settings.errorClass, this.settings.validClass );\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\tthis.toHide = this.toHide.not( this.toShow );\r\n\t\t\tthis.hideErrors();\r\n\t\t\tthis.addWrapper( this.toShow ).show();\r\n\t\t},\r\n\r\n\t\tvalidElements: function() {\r\n\t\t\treturn this.currentElements.not( this.invalidElements() );\r\n\t\t},\r\n\r\n\t\tinvalidElements: function() {\r\n\t\t\treturn $( this.errorList ).map( function() {\r\n\t\t\t\treturn this.element;\r\n\t\t\t} );\r\n\t\t},\r\n\r\n\t\tshowLabel: function( element, message ) {\r\n\t\t\tvar place, group, errorID, v,\r\n\t\t\t\terror = this.errorsFor( element ),\r\n\t\t\t\telementID = this.idOrName( element ),\r\n\t\t\t\tdescribedBy = $( element ).attr( \"aria-describedby\" );\r\n\r\n\t\t\tif ( error.length ) {\r\n\r\n\t\t\t\t// Refresh error/success class\r\n\t\t\t\terror.removeClass( this.settings.validClass ).addClass( this.settings.errorClass );\r\n\r\n\t\t\t\t// Replace message on existing label\r\n\t\t\t\terror.html( message );\r\n\t\t\t} else {\r\n\r\n\t\t\t\t// Create error element\r\n\t\t\t\terror = $( \"<\" + this.settings.errorElement + \">\" )\r\n\t\t\t\t\t.attr( \"id\", elementID + \"-error\" )\r\n\t\t\t\t\t.addClass( this.settings.errorClass )\r\n\t\t\t\t\t.html( message || \"\" );\r\n\r\n\t\t\t\t// Maintain reference to the element to be placed into the DOM\r\n\t\t\t\tplace = error;\r\n\t\t\t\tif ( this.settings.wrapper ) {\r\n\r\n\t\t\t\t\t// Make sure the element is visible, even in IE\r\n\t\t\t\t\t// actually showing the wrapped element is handled elsewhere\r\n\t\t\t\t\tplace = error.hide().show().wrap( \"<\" + this.settings.wrapper + \"/>\" ).parent();\r\n\t\t\t\t}\r\n\t\t\t\tif ( this.labelContainer.length ) {\r\n\t\t\t\t\tthis.labelContainer.append( place );\r\n\t\t\t\t} else if ( this.settings.errorPlacement ) {\r\n\t\t\t\t\tthis.settings.errorPlacement.call( this, place, $( element ) );\r\n\t\t\t\t} else {\r\n\t\t\t\t\tplace.insertAfter( element );\r\n\t\t\t\t}\r\n\r\n\t\t\t\t// Link error back to the element\r\n\t\t\t\tif ( error.is( \"label\" ) ) {\r\n\r\n\t\t\t\t\t// If the error is a label, then associate using 'for'\r\n\t\t\t\t\terror.attr( \"for\", elementID );\r\n\r\n\t\t\t\t\t// If the element is not a child of an associated label, then it's necessary\r\n\t\t\t\t\t// to explicitly apply aria-describedby\r\n\t\t\t\t} else if ( error.parents( \"label[for='\" + this.escapeCssMeta( elementID ) + \"']\" ).length === 0 ) {\r\n\t\t\t\t\terrorID = error.attr( \"id\" );\r\n\r\n\t\t\t\t\t// Respect existing non-error aria-describedby\r\n\t\t\t\t\tif ( !describedBy ) {\r\n\t\t\t\t\t\tdescribedBy = errorID;\r\n\t\t\t\t\t} else if ( !describedBy.match( new RegExp( \"\\\\b\" + this.escapeCssMeta( errorID ) + \"\\\\b\" ) ) ) {\r\n\r\n\t\t\t\t\t\t// Add to end of list if not already present\r\n\t\t\t\t\t\tdescribedBy += \" \" + errorID;\r\n\t\t\t\t\t}\r\n\t\t\t\t\t$( element ).attr( \"aria-describedby\", describedBy );\r\n\r\n\t\t\t\t\t// If this element is grouped, then assign to all elements in the same group\r\n\t\t\t\t\tgroup = this.groups[ element.name ];\r\n\t\t\t\t\tif ( group ) {\r\n\t\t\t\t\t\tv = this;\r\n\t\t\t\t\t\t$.each( v.groups, function( name, testgroup ) {\r\n\t\t\t\t\t\t\tif ( testgroup === group ) {\r\n\t\t\t\t\t\t\t\t$( \"[name='\" + v.escapeCssMeta( name ) + \"']\", v.currentForm )\r\n\t\t\t\t\t\t\t\t\t.attr( \"aria-describedby\", error.attr( \"id\" ) );\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t} );\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\tif ( !message && this.settings.success ) {\r\n\t\t\t\terror.text( \"\" );\r\n\t\t\t\tif ( typeof this.settings.success === \"string\" ) {\r\n\t\t\t\t\terror.addClass( this.settings.success );\r\n\t\t\t\t} else {\r\n\t\t\t\t\tthis.settings.success( error, element );\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\tthis.toShow = this.toShow.add( error );\r\n\t\t},\r\n\r\n\t\terrorsFor: function( element ) {\r\n\t\t\tvar name = this.escapeCssMeta( this.idOrName( element ) ),\r\n\t\t\t\tdescriber = $( element ).attr( \"aria-describedby\" ),\r\n\t\t\t\tselector = \"label[for='\" + name + \"'], label[for='\" + name + \"'] *\";\r\n\r\n\t\t\t// 'aria-describedby' should directly reference the error element\r\n\t\t\tif ( describer ) {\r\n\t\t\t\tselector = selector + \", #\" + this.escapeCssMeta( describer )\r\n\t\t\t\t\t.replace( /\\s+/g, \", #\" );\r\n\t\t\t}\r\n\r\n\t\t\treturn this\r\n\t\t\t\t.errors()\r\n\t\t\t\t.filter( selector );\r\n\t\t},\r\n\r\n\t\t// See https://api.jquery.com/category/selectors/, for CSS\r\n\t\t// meta-characters that should be escaped in order to be used with JQuery\r\n\t\t// as a literal part of a name/id or any selector.\r\n\t\tescapeCssMeta: function( string ) {\r\n\t\t\treturn string.replace( /([\\\\!\"#$%&'()*+,./:;<=>?@\\[\\]^`{|}~])/g, \"\\\\$1\" );\r\n\t\t},\r\n\r\n\t\tidOrName: function( element ) {\r\n\t\t\treturn this.groups[ element.name ] || ( this.checkable( element ) ? element.name : element.id || element.name );\r\n\t\t},\r\n\r\n\t\tvalidationTargetFor: function( element ) {\r\n\r\n\t\t\t// If radio/checkbox, validate first element in group instead\r\n\t\t\tif ( this.checkable( element ) ) {\r\n\t\t\t\telement = this.findByName( element.name );\r\n\t\t\t}\r\n\r\n\t\t\t// Always apply ignore filter\r\n\t\t\treturn $( element ).not( this.settings.ignore )[ 0 ];\r\n\t\t},\r\n\r\n\t\tcheckable: function( element ) {\r\n\t\t\treturn ( /radio|checkbox/i ).test( element.type );\r\n\t\t},\r\n\r\n\t\tfindByName: function( name ) {\r\n\t\t\treturn $( this.currentForm ).find( \"[name='\" + this.escapeCssMeta( name ) + \"']\" );\r\n\t\t},\r\n\r\n\t\tgetLength: function( value, element ) {\r\n\t\t\tswitch ( element.nodeName.toLowerCase() ) {\r\n\t\t\tcase \"select\":\r\n\t\t\t\treturn $( \"option:selected\", element ).length;\r\n\t\t\tcase \"input\":\r\n\t\t\t\tif ( this.checkable( element ) ) {\r\n\t\t\t\t\treturn this.findByName( element.name ).filter( \":checked\" ).length;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\treturn value.length;\r\n\t\t},\r\n\r\n\t\tdepend: function( param, element ) {\r\n\t\t\treturn this.dependTypes[ typeof param ] ? this.dependTypes[ typeof param ]( param, element ) : true;\r\n\t\t},\r\n\r\n\t\tdependTypes: {\r\n\t\t\t\"boolean\": function( param ) {\r\n\t\t\t\treturn param;\r\n\t\t\t},\r\n\t\t\t\"string\": function( param, element ) {\r\n\t\t\t\treturn !!$( param, element.form ).length;\r\n\t\t\t},\r\n\t\t\t\"function\": function( param, element ) {\r\n\t\t\t\treturn param( element );\r\n\t\t\t}\r\n\t\t},\r\n\r\n\t\toptional: function( element ) {\r\n\t\t\tvar val = this.elementValue( element );\r\n\t\t\treturn !$.validator.methods.required.call( this, val, element ) && \"dependency-mismatch\";\r\n\t\t},\r\n\r\n\t\tstartRequest: function( element ) {\r\n\t\t\tif ( !this.pending[ element.name ] ) {\r\n\t\t\t\tthis.pendingRequest++;\r\n\t\t\t\t$( element ).addClass( this.settings.pendingClass );\r\n\t\t\t\tthis.pending[ element.name ] = true;\r\n\t\t\t}\r\n\t\t},\r\n\r\n\t\tstopRequest: function( element, valid ) {\r\n\t\t\tthis.pendingRequest--;\r\n\r\n\t\t\t// Sometimes synchronization fails, make sure pendingRequest is never < 0\r\n\t\t\tif ( this.pendingRequest < 0 ) {\r\n\t\t\t\tthis.pendingRequest = 0;\r\n\t\t\t}\r\n\t\t\tdelete this.pending[ element.name ];\r\n\t\t\t$( element ).removeClass( this.settings.pendingClass );\r\n\t\t\tif ( valid && this.pendingRequest === 0 && this.formSubmitted && this.form() ) {\r\n\t\t\t\t$( this.currentForm ).submit();\r\n\r\n\t\t\t\t// Remove the hidden input that was used as a replacement for the\r\n\t\t\t\t// missing submit button. The hidden input is added by `handle()`\r\n\t\t\t\t// to ensure that the value of the used submit button is passed on\r\n\t\t\t\t// for scripted submits triggered by this method\r\n\t\t\t\tif ( this.submitButton ) {\r\n\t\t\t\t\t$( \"input:hidden[name='\" + this.submitButton.name + \"']\", this.currentForm ).remove();\r\n\t\t\t\t}\r\n\r\n\t\t\t\tthis.formSubmitted = false;\r\n\t\t\t} else if ( !valid && this.pendingRequest === 0 && this.formSubmitted ) {\r\n\t\t\t\t$( this.currentForm ).triggerHandler( \"invalid-form\", [ this ] );\r\n\t\t\t\tthis.formSubmitted = false;\r\n\t\t\t}\r\n\t\t},\r\n\r\n\t\tpreviousValue: function( element, method ) {\r\n\t\t\tmethod = typeof method === \"string\" && method || \"remote\";\r\n\r\n\t\t\treturn $.data( element, \"previousValue\" ) || $.data( element, \"previousValue\", {\r\n\t\t\t\told: null,\r\n\t\t\t\tvalid: true,\r\n\t\t\t\tmessage: this.defaultMessage( element, { method: method } )\r\n\t\t\t} );\r\n\t\t},\r\n\r\n\t\t// Cleans up all forms and elements, removes validator-specific events\r\n\t\tdestroy: function() {\r\n\t\t\tthis.resetForm();\r\n\r\n\t\t\t$( this.currentForm )\r\n\t\t\t\t.off( \".validate\" )\r\n\t\t\t\t.removeData( \"validator\" )\r\n\t\t\t\t.find( \".validate-equalTo-blur\" )\r\n\t\t\t\t\t.off( \".validate-equalTo\" )\r\n\t\t\t\t\t.removeClass( \"validate-equalTo-blur\" );\r\n\t\t}\r\n\r\n\t},\r\n\r\n\tclassRuleSettings: {\r\n\t\trequired: { required: true },\r\n\t\temail: { email: true },\r\n\t\turl: { url: true },\r\n\t\tdate: { date: true },\r\n\t\tdateISO: { dateISO: true },\r\n\t\tnumber: { number: true },\r\n\t\tdigits: { digits: true },\r\n\t\tcreditcard: { creditcard: true }\r\n\t},\r\n\r\n\taddClassRules: function( className, rules ) {\r\n\t\tif ( className.constructor === String ) {\r\n\t\t\tthis.classRuleSettings[ className ] = rules;\r\n\t\t} else {\r\n\t\t\t$.extend( this.classRuleSettings, className );\r\n\t\t}\r\n\t},\r\n\r\n\tclassRules: function( element ) {\r\n\t\tvar rules = {},\r\n\t\t\tclasses = $( element ).attr( \"class\" );\r\n\r\n\t\tif ( classes ) {\r\n\t\t\t$.each( classes.split( \" \" ), function() {\r\n\t\t\t\tif ( this in $.validator.classRuleSettings ) {\r\n\t\t\t\t\t$.extend( rules, $.validator.classRuleSettings[ this ] );\r\n\t\t\t\t}\r\n\t\t\t} );\r\n\t\t}\r\n\t\treturn rules;\r\n\t},\r\n\r\n\tnormalizeAttributeRule: function( rules, type, method, value ) {\r\n\r\n\t\t// Convert the value to a number for number inputs, and for text for backwards compability\r\n\t\t// allows type=\"date\" and others to be compared as strings\r\n\t\tif ( /min|max|step/.test( method ) && ( type === null || /number|range|text/.test( type ) ) ) {\r\n\t\t\tvalue = Number( value );\r\n\r\n\t\t\t// Support Opera Mini, which returns NaN for undefined minlength\r\n\t\t\tif ( isNaN( value ) ) {\r\n\t\t\t\tvalue = undefined;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif ( value || value === 0 ) {\r\n\t\t\trules[ method ] = value;\r\n\t\t} else if ( type === method && type !== \"range\" ) {\r\n\r\n\t\t\t// Exception: the jquery validate 'range' method\r\n\t\t\t// does not test for the html5 'range' type\r\n\t\t\trules[ method ] = true;\r\n\t\t}\r\n\t},\r\n\r\n\tattributeRules: function( element ) {\r\n\t\tvar rules = {},\r\n\t\t\t$element = $( element ),\r\n\t\t\ttype = element.getAttribute( \"type\" ),\r\n\t\t\tmethod, value;\r\n\r\n\t\tfor ( method in $.validator.methods ) {\r\n\r\n\t\t\t// Support for <input required> in both html5 and older browsers\r\n\t\t\tif ( method === \"required\" ) {\r\n\t\t\t\tvalue = element.getAttribute( method );\r\n\r\n\t\t\t\t// Some browsers return an empty string for the required attribute\r\n\t\t\t\t// and non-HTML5 browsers might have required=\"\" markup\r\n\t\t\t\tif ( value === \"\" ) {\r\n\t\t\t\t\tvalue = true;\r\n\t\t\t\t}\r\n\r\n\t\t\t\t// Force non-HTML5 browsers to return bool\r\n\t\t\t\tvalue = !!value;\r\n\t\t\t} else {\r\n\t\t\t\tvalue = $element.attr( method );\r\n\t\t\t}\r\n\r\n\t\t\tthis.normalizeAttributeRule( rules, type, method, value );\r\n\t\t}\r\n\r\n\t\t// 'maxlength' may be returned as -1, 2147483647 ( IE ) and 524288 ( safari ) for text inputs\r\n\t\tif ( rules.maxlength && /-1|2147483647|524288/.test( rules.maxlength ) ) {\r\n\t\t\tdelete rules.maxlength;\r\n\t\t}\r\n\r\n\t\treturn rules;\r\n\t},\r\n\r\n\tdataRules: function( element ) {\r\n\t\tvar rules = {},\r\n\t\t\t$element = $( element ),\r\n\t\t\ttype = element.getAttribute( \"type\" ),\r\n\t\t\tmethod, value;\r\n\r\n\t\tfor ( method in $.validator.methods ) {\r\n\t\t\tvalue = $element.data( \"rule\" + method.charAt( 0 ).toUpperCase() + method.substring( 1 ).toLowerCase() );\r\n\t\t\tthis.normalizeAttributeRule( rules, type, method, value );\r\n\t\t}\r\n\t\treturn rules;\r\n\t},\r\n\r\n\tstaticRules: function( element ) {\r\n\t\tvar rules = {},\r\n\t\t\tvalidator = $.data( element.form, \"validator\" );\r\n\r\n\t\tif ( validator.settings.rules ) {\r\n\t\t\trules = $.validator.normalizeRule( validator.settings.rules[ element.name ] ) || {};\r\n\t\t}\r\n\t\treturn rules;\r\n\t},\r\n\r\n\tnormalizeRules: function( rules, element ) {\r\n\r\n\t\t// Handle dependency check\r\n\t\t$.each( rules, function( prop, val ) {\r\n\r\n\t\t\t// Ignore rule when param is explicitly false, eg. required:false\r\n\t\t\tif ( val === false ) {\r\n\t\t\t\tdelete rules[ prop ];\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\t\t\tif ( val.param || val.depends ) {\r\n\t\t\t\tvar keepRule = true;\r\n\t\t\t\tswitch ( typeof val.depends ) {\r\n\t\t\t\tcase \"string\":\r\n\t\t\t\t\tkeepRule = !!$( val.depends, element.form ).length;\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase \"function\":\r\n\t\t\t\t\tkeepRule = val.depends.call( element, element );\r\n\t\t\t\t\tbreak;\r\n\t\t\t\t}\r\n\t\t\t\tif ( keepRule ) {\r\n\t\t\t\t\trules[ prop ] = val.param !== undefined ? val.param : true;\r\n\t\t\t\t} else {\r\n\t\t\t\t\t$.data( element.form, \"validator\" ).resetElements( $( element ) );\r\n\t\t\t\t\tdelete rules[ prop ];\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t} );\r\n\r\n\t\t// Evaluate parameters\r\n\t\t$.each( rules, function( rule, parameter ) {\r\n\t\t\trules[ rule ] = $.isFunction( parameter ) && rule !== \"normalizer\" ? parameter( element ) : parameter;\r\n\t\t} );\r\n\r\n\t\t// Clean number parameters\r\n\t\t$.each( [ \"minlength\", \"maxlength\" ], function() {\r\n\t\t\tif ( rules[ this ] ) {\r\n\t\t\t\trules[ this ] = Number( rules[ this ] );\r\n\t\t\t}\r\n\t\t} );\r\n\t\t$.each( [ \"rangelength\", \"range\" ], function() {\r\n\t\t\tvar parts;\r\n\t\t\tif ( rules[ this ] ) {\r\n\t\t\t\tif ( $.isArray( rules[ this ] ) ) {\r\n\t\t\t\t\trules[ this ] = [ Number( rules[ this ][ 0 ] ), Number( rules[ this ][ 1 ] ) ];\r\n\t\t\t\t} else if ( typeof rules[ this ] === \"string\" ) {\r\n\t\t\t\t\tparts = rules[ this ].replace( /[\\[\\]]/g, \"\" ).split( /[\\s,]+/ );\r\n\t\t\t\t\trules[ this ] = [ Number( parts[ 0 ] ), Number( parts[ 1 ] ) ];\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t} );\r\n\r\n\t\tif ( $.validator.autoCreateRanges ) {\r\n\r\n\t\t\t// Auto-create ranges\r\n\t\t\tif ( rules.min != null && rules.max != null ) {\r\n\t\t\t\trules.range = [ rules.min, rules.max ];\r\n\t\t\t\tdelete rules.min;\r\n\t\t\t\tdelete rules.max;\r\n\t\t\t}\r\n\t\t\tif ( rules.minlength != null && rules.maxlength != null ) {\r\n\t\t\t\trules.rangelength = [ rules.minlength, rules.maxlength ];\r\n\t\t\t\tdelete rules.minlength;\r\n\t\t\t\tdelete rules.maxlength;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn rules;\r\n\t},\r\n\r\n\t// Converts a simple string to a {string: true} rule, e.g., \"required\" to {required:true}\r\n\tnormalizeRule: function( data ) {\r\n\t\tif ( typeof data === \"string\" ) {\r\n\t\t\tvar transformed = {};\r\n\t\t\t$.each( data.split( /\\s/ ), function() {\r\n\t\t\t\ttransformed[ this ] = true;\r\n\t\t\t} );\r\n\t\t\tdata = transformed;\r\n\t\t}\r\n\t\treturn data;\r\n\t},\r\n\r\n\t// https://jqueryvalidation.org/jQuery.validator.addMethod/\r\n\taddMethod: function( name, method, message ) {\r\n\t\t$.validator.methods[ name ] = method;\r\n\t\t$.validator.messages[ name ] = message !== undefined ? message : $.validator.messages[ name ];\r\n\t\tif ( method.length < 3 ) {\r\n\t\t\t$.validator.addClassRules( name, $.validator.normalizeRule( name ) );\r\n\t\t}\r\n\t},\r\n\r\n\t// https://jqueryvalidation.org/jQuery.validator.methods/\r\n\tmethods: {\r\n\r\n\t\t// https://jqueryvalidation.org/required-method/\r\n\t\trequired: function( value, element, param ) {\r\n\r\n\t\t\t// Check if dependency is met\r\n\t\t\tif ( !this.depend( param, element ) ) {\r\n\t\t\t\treturn \"dependency-mismatch\";\r\n\t\t\t}\r\n\t\t\tif ( element.nodeName.toLowerCase() === \"select\" ) {\r\n\r\n\t\t\t\t// Could be an array for select-multiple or a string, both are fine this way\r\n\t\t\t\tvar val = $( element ).val();\r\n\t\t\t\treturn val && val.length > 0;\r\n\t\t\t}\r\n\t\t\tif ( this.checkable( element ) ) {\r\n\t\t\t\treturn this.getLength( value, element ) > 0;\r\n\t\t\t}\r\n\t\t\treturn value.length > 0;\r\n\t\t},\r\n\r\n\t\t// https://jqueryvalidation.org/email-method/\r\n\t\temail: function( value, element ) {\r\n\r\n\t\t\t// From https://html.spec.whatwg.org/multipage/forms.html#valid-e-mail-address\r\n\t\t\t// Retrieved 2014-01-14\r\n\t\t\t// If you have a problem with this implementation, report a bug against the above spec\r\n\t\t\t// Or use custom methods to implement your own email validation\r\n\t\t\treturn this.optional( element ) || /^[a-zA-Z0-9.!#$%&'*+\\/=?^_`{|}~-]+@[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)*$/.test( value );\r\n\t\t},\r\n\r\n\t\t// https://jqueryvalidation.org/url-method/\r\n\t\turl: function( value, element ) {\r\n\r\n\t\t\t// Copyright (c) 2010-2013 Diego Perini, MIT licensed\r\n\t\t\t// https://gist.github.com/dperini/729294\r\n\t\t\t// see also https://mathiasbynens.be/demo/url-regex\r\n\t\t\t// modified to allow protocol-relative URLs\r\n\t\t\treturn this.optional( element ) || /^(?:(?:(?:https?|ftp):)?\\/\\/)(?:\\S+(?::\\S*)?@)?(?:(?!(?:10|127)(?:\\.\\d{1,3}){3})(?!(?:169\\.254|192\\.168)(?:\\.\\d{1,3}){2})(?!172\\.(?:1[6-9]|2\\d|3[0-1])(?:\\.\\d{1,3}){2})(?:[1-9]\\d?|1\\d\\d|2[01]\\d|22[0-3])(?:\\.(?:1?\\d{1,2}|2[0-4]\\d|25[0-5])){2}(?:\\.(?:[1-9]\\d?|1\\d\\d|2[0-4]\\d|25[0-4]))|(?:(?:[a-z\\u00a1-\\uffff0-9]-*)*[a-z\\u00a1-\\uffff0-9]+)(?:\\.(?:[a-z\\u00a1-\\uffff0-9]-*)*[a-z\\u00a1-\\uffff0-9]+)*(?:\\.(?:[a-z\\u00a1-\\uffff]{2,})).?)(?::\\d{2,5})?(?:[/?#]\\S*)?$/i.test( value );\r\n\t\t},\r\n\r\n\t\t// https://jqueryvalidation.org/date-method/\r\n\t\tdate: function( value, element ) {\r\n\t\t\treturn this.optional( element ) || !/Invalid|NaN/.test( new Date( value ).toString() );\r\n\t\t},\r\n\r\n\t\t// https://jqueryvalidation.org/dateISO-method/\r\n\t\tdateISO: function( value, element ) {\r\n\t\t\treturn this.optional( element ) || /^\\d{4}[\\/\\-](0?[1-9]|1[012])[\\/\\-](0?[1-9]|[12][0-9]|3[01])$/.test( value );\r\n\t\t},\r\n\r\n\t\t// https://jqueryvalidation.org/number-method/\r\n\t\tnumber: function( value, element ) {\r\n\t\t\treturn this.optional( element ) || /^(?:-?\\d+|-?\\d{1,3}(?:,\\d{3})+)?(?:\\.\\d+)?$/.test( value );\r\n\t\t},\r\n\r\n\t\t// https://jqueryvalidation.org/digits-method/\r\n\t\tdigits: function( value, element ) {\r\n\t\t\treturn this.optional( element ) || /^\\d+$/.test( value );\r\n\t\t},\r\n\r\n\t\t// https://jqueryvalidation.org/minlength-method/\r\n\t\tminlength: function( value, element, param ) {\r\n\t\t\tvar length = $.isArray( value ) ? value.length : this.getLength( value, element );\r\n\t\t\treturn this.optional( element ) || length >= param;\r\n\t\t},\r\n\r\n\t\t// https://jqueryvalidation.org/maxlength-method/\r\n\t\tmaxlength: function( value, element, param ) {\r\n\t\t\tvar length = $.isArray( value ) ? value.length : this.getLength( value, element );\r\n\t\t\treturn this.optional( element ) || length <= param;\r\n\t\t},\r\n\r\n\t\t// https://jqueryvalidation.org/rangelength-method/\r\n\t\trangelength: function( value, element, param ) {\r\n\t\t\tvar length = $.isArray( value ) ? value.length : this.getLength( value, element );\r\n\t\t\treturn this.optional( element ) || ( length >= param[ 0 ] && length <= param[ 1 ] );\r\n\t\t},\r\n\r\n\t\t// https://jqueryvalidation.org/min-method/\r\n\t\tmin: function( value, element, param ) {\r\n\t\t\treturn this.optional( element ) || value >= param;\r\n\t\t},\r\n\r\n\t\t// https://jqueryvalidation.org/max-method/\r\n\t\tmax: function( value, element, param ) {\r\n\t\t\treturn this.optional( element ) || value <= param;\r\n\t\t},\r\n\r\n\t\t// https://jqueryvalidation.org/range-method/\r\n\t\trange: function( value, element, param ) {\r\n\t\t\treturn this.optional( element ) || ( value >= param[ 0 ] && value <= param[ 1 ] );\r\n\t\t},\r\n\r\n\t\t// https://jqueryvalidation.org/step-method/\r\n\t\tstep: function( value, element, param ) {\r\n\t\t\tvar type = $( element ).attr( \"type\" ),\r\n\t\t\t\terrorMessage = \"Step attribute on input type \" + type + \" is not supported.\",\r\n\t\t\t\tsupportedTypes = [ \"text\", \"number\", \"range\" ],\r\n\t\t\t\tre = new RegExp( \"\\\\b\" + type + \"\\\\b\" ),\r\n\t\t\t\tnotSupported = type && !re.test( supportedTypes.join() ),\r\n\t\t\t\tdecimalPlaces = function( num ) {\r\n\t\t\t\t\tvar match = ( \"\" + num ).match( /(?:\\.(\\d+))?$/ );\r\n\t\t\t\t\tif ( !match ) {\r\n\t\t\t\t\t\treturn 0;\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\t// Number of digits right of decimal point.\r\n\t\t\t\t\treturn match[ 1 ] ? match[ 1 ].length : 0;\r\n\t\t\t\t},\r\n\t\t\t\ttoInt = function( num ) {\r\n\t\t\t\t\treturn Math.round( num * Math.pow( 10, decimals ) );\r\n\t\t\t\t},\r\n\t\t\t\tvalid = true,\r\n\t\t\t\tdecimals;\r\n\r\n\t\t\t// Works only for text, number and range input types\r\n\t\t\t// TODO find a way to support input types date, datetime, datetime-local, month, time and week\r\n\t\t\tif ( notSupported ) {\r\n\t\t\t\tthrow new Error( errorMessage );\r\n\t\t\t}\r\n\r\n\t\t\tdecimals = decimalPlaces( param );\r\n\r\n\t\t\t// Value can't have too many decimals\r\n\t\t\tif ( decimalPlaces( value ) > decimals || toInt( value ) % toInt( param ) !== 0 ) {\r\n\t\t\t\tvalid = false;\r\n\t\t\t}\r\n\r\n\t\t\treturn this.optional( element ) || valid;\r\n\t\t},\r\n\r\n\t\t// https://jqueryvalidation.org/equalTo-method/\r\n\t\tequalTo: function( value, element, param ) {\r\n\r\n\t\t\t// Bind to the blur event of the target in order to revalidate whenever the target field is updated\r\n\t\t\tvar target = $( param );\r\n\t\t\tif ( this.settings.onfocusout && target.not( \".validate-equalTo-blur\" ).length ) {\r\n\t\t\t\ttarget.addClass( \"validate-equalTo-blur\" ).on( \"blur.validate-equalTo\", function() {\r\n\t\t\t\t\t$( element ).valid();\r\n\t\t\t\t} );\r\n\t\t\t}\r\n\t\t\treturn value === target.val();\r\n\t\t},\r\n\r\n\t\t// https://jqueryvalidation.org/remote-method/\r\n\t\tremote: function( value, element, param, method ) {\r\n\t\t\tif ( this.optional( element ) ) {\r\n\t\t\t\treturn \"dependency-mismatch\";\r\n\t\t\t}\r\n\r\n\t\t\tmethod = typeof method === \"string\" && method || \"remote\";\r\n\r\n\t\t\tvar previous = this.previousValue( element, method ),\r\n\t\t\t\tvalidator, data, optionDataString;\r\n\r\n\t\t\tif ( !this.settings.messages[ element.name ] ) {\r\n\t\t\t\tthis.settings.messages[ element.name ] = {};\r\n\t\t\t}\r\n\t\t\tprevious.originalMessage = previous.originalMessage || this.settings.messages[ element.name ][ method ];\r\n\t\t\tthis.settings.messages[ element.name ][ method ] = previous.message;\r\n\r\n\t\t\tparam = typeof param === \"string\" && { url: param } || param;\r\n\t\t\toptionDataString = $.param( $.extend( { data: value }, param.data ) );\r\n\t\t\tif ( previous.old === optionDataString ) {\r\n\t\t\t\treturn previous.valid;\r\n\t\t\t}\r\n\r\n\t\t\tprevious.old = optionDataString;\r\n\t\t\tvalidator = this;\r\n\t\t\tthis.startRequest( element );\r\n\t\t\tdata = {};\r\n\t\t\tdata[ element.name ] = value;\r\n\t\t\t$.ajax( $.extend( true, {\r\n\t\t\t\tmode: \"abort\",\r\n\t\t\t\tport: \"validate\" + element.name,\r\n\t\t\t\tdataType: \"json\",\r\n\t\t\t\tdata: data,\r\n\t\t\t\tcontext: validator.currentForm,\r\n\t\t\t\tsuccess: function( response ) {\r\n\t\t\t\t\tvar valid = response === true || response === \"true\",\r\n\t\t\t\t\t\terrors, message, submitted;\r\n\r\n\t\t\t\t\tvalidator.settings.messages[ element.name ][ method ] = previous.originalMessage;\r\n\t\t\t\t\tif ( valid ) {\r\n\t\t\t\t\t\tsubmitted = validator.formSubmitted;\r\n\t\t\t\t\t\tvalidator.resetInternals();\r\n\t\t\t\t\t\tvalidator.toHide = validator.errorsFor( element );\r\n\t\t\t\t\t\tvalidator.formSubmitted = submitted;\r\n\t\t\t\t\t\tvalidator.successList.push( element );\r\n\t\t\t\t\t\tvalidator.invalid[ element.name ] = false;\r\n\t\t\t\t\t\tvalidator.showErrors();\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\terrors = {};\r\n\t\t\t\t\t\tmessage = response || validator.defaultMessage( element, { method: method, parameters: value } );\r\n\t\t\t\t\t\terrors[ element.name ] = previous.message = message;\r\n\t\t\t\t\t\tvalidator.invalid[ element.name ] = true;\r\n\t\t\t\t\t\tvalidator.showErrors( errors );\r\n\t\t\t\t\t}\r\n\t\t\t\t\tprevious.valid = valid;\r\n\t\t\t\t\tvalidator.stopRequest( element, valid );\r\n\t\t\t\t}\r\n\t\t\t}, param ) );\r\n\t\t\treturn \"pending\";\r\n\t\t}\r\n\t}\r\n\r\n} );\r\n\r\n// Ajax mode: abort\r\n// usage: $.ajax({ mode: \"abort\"[, port: \"uniqueport\"]});\r\n// if mode:\"abort\" is used, the previous request on that port (port can be undefined) is aborted via XMLHttpRequest.abort()\r\n\r\nvar pendingRequests = {},\r\n\tajax;\r\n\r\n// Use a prefilter if available (1.5+)\r\nif ( $.ajaxPrefilter ) {\r\n\t$.ajaxPrefilter( function( settings, _, xhr ) {\r\n\t\tvar port = settings.port;\r\n\t\tif ( settings.mode === \"abort\" ) {\r\n\t\t\tif ( pendingRequests[ port ] ) {\r\n\t\t\t\tpendingRequests[ port ].abort();\r\n\t\t\t}\r\n\t\t\tpendingRequests[ port ] = xhr;\r\n\t\t}\r\n\t} );\r\n} else {\r\n\r\n\t// Proxy ajax\r\n\tajax = $.ajax;\r\n\t$.ajax = function( settings ) {\r\n\t\tvar mode = ( \"mode\" in settings ? settings : $.ajaxSettings ).mode,\r\n\t\t\tport = ( \"port\" in settings ? settings : $.ajaxSettings ).port;\r\n\t\tif ( mode === \"abort\" ) {\r\n\t\t\tif ( pendingRequests[ port ] ) {\r\n\t\t\t\tpendingRequests[ port ].abort();\r\n\t\t\t}\r\n\t\t\tpendingRequests[ port ] = ajax.apply( this, arguments );\r\n\t\t\treturn pendingRequests[ port ];\r\n\t\t}\r\n\t\treturn ajax.apply( this, arguments );\r\n\t};\r\n}\r\nreturn $;\r\n}));","var jQuery = require('jquery');\r\n/*!\r\n** Unobtrusive validation support library for jQuery and jQuery Validate\r\n** Copyright (C) Microsoft Corporation. All rights reserved.\r\n*/\r\n\r\n/*jslint white: true, browser: true, onevar: true, undef: true, nomen: true, eqeqeq: true, plusplus: true, bitwise: true, regexp: true, newcap: true, immed: true, strict: false */\r\n/*global document: false, jQuery: false */\r\n\r\n(function( factory ) {\r\n if ( typeof define === \"function\" && define.amd ) {\r\n define( [\"jquery\"], factory );\r\n } else if (typeof module === \"object\" && module.exports) {\r\n module.exports = factory( require( \"jquery\" ) );\r\n } else {\r\n factory( jQuery );\r\n }\r\n}(function ($) {\r\n var $jQval = $.validator,\r\n adapters,\r\n data_validation = \"unobtrusiveValidation\";\r\n\r\n function setValidationValues(options, ruleName, value) {\r\n options.rules[ruleName] = value;\r\n if (options.message) {\r\n options.messages[ruleName] = options.message;\r\n }\r\n }\r\n\r\n function splitAndTrim(value) {\r\n return value.replace(/^\\s+|\\s+$/g, \"\").split(/\\s*,\\s*/g);\r\n }\r\n\r\n function escapeAttributeValue(value) {\r\n // As mentioned on http://api.jquery.com/category/selectors/\r\n return value.replace(/([!\"#$%&'()*+,./:;<=>?@\\[\\\\\\]^`{|}~])/g, \"\\\\$1\");\r\n }\r\n\r\n function getModelPrefix(fieldName) {\r\n return fieldName.substr(0, fieldName.lastIndexOf(\".\") + 1);\r\n }\r\n\r\n function appendModelPrefix(value, prefix) {\r\n if (value.indexOf(\"*.\") === 0) {\r\n value = value.replace(\"*.\", prefix);\r\n }\r\n return value;\r\n }\r\n\r\n function onError(error, inputElement) { // 'this' is the form element\r\n var container = $(this).find(\"[data-valmsg-for='\" + escapeAttributeValue(inputElement[0].name) + \"']\"),\r\n replaceAttrValue = container.attr(\"data-valmsg-replace\"),\r\n replace = replaceAttrValue ? $.parseJSON(replaceAttrValue) !== false : null;\r\n\r\n container.removeClass(\"field-validation-valid\").addClass(\"field-validation-error\");\r\n error.data(\"unobtrusiveContainer\", container);\r\n\r\n if (replace) {\r\n container.empty();\r\n error.removeClass(\"input-validation-error\").appendTo(container);\r\n }\r\n else {\r\n error.hide();\r\n }\r\n }\r\n\r\n function onErrors(event, validator) { // 'this' is the form element\r\n var container = $(this).find(\"[data-valmsg-summary=true]\"),\r\n list = container.find(\"ul\");\r\n\r\n if (list && list.length && validator.errorList.length) {\r\n list.empty();\r\n container.addClass(\"validation-summary-errors\").removeClass(\"validation-summary-valid\");\r\n\r\n $.each(validator.errorList, function () {\r\n $(\"<li />\").html(this.message).appendTo(list);\r\n });\r\n }\r\n }\r\n\r\n function onSuccess(error) { // 'this' is the form element\r\n var container = error.data(\"unobtrusiveContainer\");\r\n\r\n if (container) {\r\n var replaceAttrValue = container.attr(\"data-valmsg-replace\"),\r\n replace = replaceAttrValue ? $.parseJSON(replaceAttrValue) : null;\r\n\r\n container.addClass(\"field-validation-valid\").removeClass(\"field-validation-error\");\r\n error.removeData(\"unobtrusiveContainer\");\r\n\r\n if (replace) {\r\n container.empty();\r\n }\r\n }\r\n }\r\n\r\n function onReset(event) { // 'this' is the form element\r\n var $form = $(this),\r\n key = '__jquery_unobtrusive_validation_form_reset';\r\n if ($form.data(key)) {\r\n return;\r\n }\r\n // Set a flag that indicates we're currently resetting the form.\r\n $form.data(key, true);\r\n try {\r\n $form.data(\"validator\").resetForm();\r\n } finally {\r\n $form.removeData(key);\r\n }\r\n\r\n $form.find(\".validation-summary-errors\")\r\n .addClass(\"validation-summary-valid\")\r\n .removeClass(\"validation-summary-errors\");\r\n $form.find(\".field-validation-error\")\r\n .addClass(\"field-validation-valid\")\r\n .removeClass(\"field-validation-error\")\r\n .removeData(\"unobtrusiveContainer\")\r\n .find(\">*\") // If we were using valmsg-replace, get the underlying error\r\n .removeData(\"unobtrusiveContainer\");\r\n }\r\n\r\n function validationInfo(form) {\r\n var $form = $(form),\r\n result = $form.data(data_validation),\r\n onResetProxy = $.proxy(onReset, form),\r\n defaultOptions = $jQval.unobtrusive.options || {},\r\n execInContext = function (name, args) {\r\n var func = defaultOptions[name];\r\n func && $.isFunction(func) && func.apply(form, args);\r\n }\r\n\r\n if (!result) {\r\n result = {\r\n options: { // options structure passed to jQuery Validate's validate() method\r\n errorClass: defaultOptions.errorClass || \"input-validation-error\",\r\n errorElement: defaultOptions.errorElement || \"span\",\r\n errorPlacement: function () {\r\n onError.apply(form, arguments);\r\n execInContext(\"errorPlacement\", arguments);\r\n },\r\n invalidHandler: function () {\r\n onErrors.apply(form, arguments);\r\n execInContext(\"invalidHandler\", arguments);\r\n },\r\n messages: {},\r\n rules: {},\r\n success: function () {\r\n onSuccess.apply(form, arguments);\r\n execInContext(\"success\", arguments);\r\n }\r\n },\r\n attachValidation: function () {\r\n $form\r\n .off(\"reset.\" + data_validation, onResetProxy)\r\n .on(\"reset.\" + data_validation, onResetProxy)\r\n .validate(this.options);\r\n },\r\n validate: function () { // a validation function that is called by unobtrusive Ajax\r\n $form.validate();\r\n return $form.valid();\r\n }\r\n };\r\n $form.data(data_validation, result);\r\n }\r\n\r\n return result;\r\n }\r\n\r\n $jQval.unobtrusive = {\r\n adapters: [],\r\n\r\n parseElement: function (element, skipAttach) {\r\n /// <summary>\r\n /// Parses a single HTML element for unobtrusive validation attributes.\r\n /// </summary>\r\n /// <param name=\"element\" domElement=\"true\">The HTML element to be parsed.</param>\r\n /// <param name=\"skipAttach\" type=\"Boolean\">[Optional] true to skip attaching the\r\n /// validation to the form. If parsing just this single element, you should specify true.\r\n /// If parsing several elements, you should specify false, and manually attach the validation\r\n /// to the form when you are finished. The default is false.</param>\r\n var $element = $(element),\r\n form = $element.parents(\"form\")[0],\r\n valInfo, rules, messages;\r\n\r\n if (!form) { // Cannot do client-side validation without a form\r\n return;\r\n }\r\n\r\n valInfo = validationInfo(form);\r\n valInfo.options.rules[element.name] = rules = {};\r\n valInfo.options.messages[element.name] = messages = {};\r\n\r\n $.each(this.adapters, function () {\r\n var prefix = \"data-val-\" + this.name,\r\n message = $element.attr(prefix),\r\n paramValues = {};\r\n\r\n if (message !== undefined) { // Compare against undefined, because an empty message is legal (and falsy)\r\n prefix += \"-\";\r\n\r\n $.each(this.params, function () {\r\n paramValues[this] = $element.attr(prefix + this);\r\n });\r\n\r\n this.adapt({\r\n element: element,\r\n form: form,\r\n message: message,\r\n params: paramValues,\r\n rules: rules,\r\n messages: messages\r\n });\r\n }\r\n });\r\n\r\n $.extend(rules, { \"__dummy__\": true });\r\n\r\n if (!skipAttach) {\r\n valInfo.attachValidation();\r\n }\r\n },\r\n\r\n parse: function (selector) {\r\n /// <summary>\r\n /// Parses all the HTML elements in the specified selector. It looks for input elements decorated\r\n /// with the [data-val=true] attribute value and enables validation according to the data-val-*\r\n /// attribute values.\r\n /// </summary>\r\n /// <param name=\"selector\" type=\"String\">Any valid jQuery selector.</param>\r\n\r\n // $forms includes all forms in selector's DOM hierarchy (parent, children and self) that have at least one\r\n // element with data-val=true\r\n var $selector = $(selector),\r\n $forms = $selector.parents()\r\n .addBack()\r\n .filter(\"form\")\r\n .add($selector.find(\"form\"))\r\n .has(\"[data-val=true]\");\r\n\r\n $selector.find(\"[data-val=true]\").each(function () {\r\n $jQval.unobtrusive.parseElement(this, true);\r\n });\r\n\r\n $forms.each(function () {\r\n var info = validationInfo(this);\r\n if (info) {\r\n info.attachValidation();\r\n }\r\n });\r\n }\r\n };\r\n\r\n adapters = $jQval.unobtrusive.adapters;\r\n\r\n adapters.add = function (adapterName, params, fn) {\r\n /// <summary>Adds a new adapter to convert unobtrusive HTML into a jQuery Validate validation.</summary>\r\n /// <param name=\"adapterName\" type=\"String\">The name of the adapter to be added. This matches the name used\r\n /// in the data-val-nnnn HTML attribute (where nnnn is the adapter name).</param>\r\n /// <param name=\"params\" type=\"Array\" optional=\"true\">[Optional] An array of parameter names (strings) that will\r\n /// be extracted from the data-val-nnnn-mmmm HTML attributes (where nnnn is the adapter name, and\r\n /// mmmm is the parameter name).</param>\r\n /// <param name=\"fn\" type=\"Function\">The function to call, which adapts the values from the HTML\r\n /// attributes into jQuery Validate rules and/or messages.</param>\r\n /// <returns type=\"jQuery.validator.unobtrusive.adapters\" />\r\n if (!fn) { // Called with no params, just a function\r\n fn = params;\r\n params = [];\r\n }\r\n this.push({ name: adapterName, params: params, adapt: fn });\r\n return this;\r\n };\r\n\r\n adapters.addBool = function (adapterName, ruleName) {\r\n /// <summary>Adds a new adapter to convert unobtrusive HTML into a jQuery Validate validation, where\r\n /// the jQuery Validate validation rule has no parameter values.</summary>\r\n /// <param name=\"adapterName\" type=\"String\">The name of the adapter to be added. This matches the name used\r\n /// in the data-val-nnnn HTML attribute (where nnnn is the adapter name).</param>\r\n /// <param name=\"ruleName\" type=\"String\" optional=\"true\">[Optional] The name of the jQuery Validate rule. If not provided, the value\r\n /// of adapterName will be used instead.</param>\r\n /// <returns type=\"jQuery.validator.unobtrusive.adapters\" />\r\n return this.add(adapterName, function (options) {\r\n setValidationValues(options, ruleName || adapterName, true);\r\n });\r\n };\r\n\r\n adapters.addMinMax = function (adapterName, minRuleName, maxRuleName, minMaxRuleName, minAttribute, maxAttribute) {\r\n /// <summary>Adds a new adapter to convert unobtrusive HTML into a jQuery Validate validation, where\r\n /// the jQuery Validate validation has three potential rules (one for min-only, one for max-only, and\r\n /// one for min-and-max). The HTML parameters are expected to be named -min and -max.</summary>\r\n /// <param name=\"adapterName\" type=\"String\">The name of the adapter to be added. This matches the name used\r\n /// in the data-val-nnnn HTML attribute (where nnnn is the adapter name).</param>\r\n /// <param name=\"minRuleName\" type=\"String\">The name of the jQuery Validate rule to be used when you only\r\n /// have a minimum value.</param>\r\n /// <param name=\"maxRuleName\" type=\"String\">The name of the jQuery Validate rule to be used when you only\r\n /// have a maximum value.</param>\r\n /// <param name=\"minMaxRuleName\" type=\"String\">The name of the jQuery Validate rule to be used when you\r\n /// have both a minimum and maximum value.</param>\r\n /// <param name=\"minAttribute\" type=\"String\" optional=\"true\">[Optional] The name of the HTML attribute that\r\n /// contains the minimum value. The default is \"min\".</param>\r\n /// <param name=\"maxAttribute\" type=\"String\" optional=\"true\">[Optional] The name of the HTML attribute that\r\n /// contains the maximum value. The default is \"max\".</param>\r\n /// <returns type=\"jQuery.validator.unobtrusive.adapters\" />\r\n return this.add(adapterName, [minAttribute || \"min\", maxAttribute || \"max\"], function (options) {\r\n var min = options.params.min,\r\n max = options.params.max;\r\n\r\n if (min && max) {\r\n setValidationValues(options, minMaxRuleName, [min, max]);\r\n }\r\n else if (min) {\r\n setValidationValues(options, minRuleName, min);\r\n }\r\n else if (max) {\r\n setValidationValues(options, maxRuleName, max);\r\n }\r\n });\r\n };\r\n\r\n adapters.addSingleVal = function (adapterName, attribute, ruleName) {\r\n /// <summary>Adds a new adapter to convert unobtrusive HTML into a jQuery Validate validation, where\r\n /// the jQuery Validate validation rule has a single value.</summary>\r\n /// <param name=\"adapterName\" type=\"String\">The name of the adapter to be added. This matches the name used\r\n /// in the data-val-nnnn HTML attribute(where nnnn is the adapter name).</param>\r\n /// <param name=\"attribute\" type=\"String\">[Optional] The name of the HTML attribute that contains the value.\r\n /// The default is \"val\".</param>\r\n /// <param name=\"ruleName\" type=\"String\" optional=\"true\">[Optional] The name of the jQuery Validate rule. If not provided, the value\r\n /// of adapterName will be used instead.</param>\r\n /// <returns type=\"jQuery.validator.unobtrusive.adapters\" />\r\n return this.add(adapterName, [attribute || \"val\"], function (options) {\r\n setValidationValues(options, ruleName || adapterName, options.params[attribute]);\r\n });\r\n };\r\n\r\n $jQval.addMethod(\"__dummy__\", function (value, element, params) {\r\n return true;\r\n });\r\n\r\n $jQval.addMethod(\"regex\", function (value, element, params) {\r\n var match;\r\n if (this.optional(element)) {\r\n return true;\r\n }\r\n\r\n match = new RegExp(params).exec(value);\r\n return (match && (match.index === 0) && (match[0].length === value.length));\r\n });\r\n\r\n $jQval.addMethod(\"nonalphamin\", function (value, element, nonalphamin) {\r\n var match;\r\n if (nonalphamin) {\r\n match = value.match(/\\W/g);\r\n match = match && match.length >= nonalphamin;\r\n }\r\n return match;\r\n });\r\n\r\n if ($jQval.methods.extension) {\r\n adapters.addSingleVal(\"accept\", \"mimtype\");\r\n adapters.addSingleVal(\"extension\", \"extension\");\r\n } else {\r\n // for backward compatibility, when the 'extension' validation method does not exist, such as with versions\r\n // of JQuery Validation plugin prior to 1.10, we should use the 'accept' method for\r\n // validating the extension, and ignore mime-type validations as they are not supported.\r\n adapters.addSingleVal(\"extension\", \"extension\", \"accept\");\r\n }\r\n\r\n adapters.addSingleVal(\"regex\", \"pattern\");\r\n adapters.addBool(\"creditcard\").addBool(\"date\").addBool(\"digits\").addBool(\"email\").addBool(\"number\").addBool(\"url\");\r\n adapters.addMinMax(\"length\", \"minlength\", \"maxlength\", \"rangelength\").addMinMax(\"range\", \"min\", \"max\", \"range\");\r\n adapters.addMinMax(\"minlength\", \"minlength\").addMinMax(\"maxlength\", \"minlength\", \"maxlength\");\r\n adapters.add(\"equalto\", [\"other\"], function (options) {\r\n var prefix = getModelPrefix(options.element.name),\r\n other = options.params.other,\r\n fullOtherName = appendModelPrefix(other, prefix),\r\n element = $(options.form).find(\":input\").filter(\"[name='\" + escapeAttributeValue(fullOtherName) + \"']\")[0];\r\n\r\n setValidationValues(options, \"equalTo\", element);\r\n });\r\n adapters.add(\"required\", function (options) {\r\n // jQuery Validate equates \"required\" with \"mandatory\" for checkbox elements\r\n if (options.element.tagName.toUpperCase() !== \"INPUT\" || options.element.type.toUpperCase() !== \"CHECKBOX\") {\r\n setValidationValues(options, \"required\", true);\r\n }\r\n });\r\n adapters.add(\"remote\", [\"url\", \"type\", \"additionalfields\"], function (options) {\r\n var value = {\r\n url: options.params.url,\r\n type: options.params.type || \"GET\",\r\n data: {}\r\n },\r\n prefix = getModelPrefix(options.element.name);\r\n\r\n $.each(splitAndTrim(options.params.additionalfields || options.element.name), function (i, fieldName) {\r\n var paramName = appendModelPrefix(fieldName, prefix);\r\n value.data[paramName] = function () {\r\n var field = $(options.form).find(\":input\").filter(\"[name='\" + escapeAttributeValue(paramName) + \"']\");\r\n // For checkboxes and radio buttons, only pick up values from checked fields.\r\n if (field.is(\":checkbox\")) {\r\n return field.filter(\":checked\").val() || field.filter(\":hidden\").val() || '';\r\n }\r\n else if (field.is(\":radio\")) {\r\n return field.filter(\":checked\").val() || '';\r\n }\r\n return field.val();\r\n };\r\n });\r\n\r\n setValidationValues(options, \"remote\", value);\r\n });\r\n adapters.add(\"password\", [\"min\", \"nonalphamin\", \"regex\"], function (options) {\r\n if (options.params.min) {\r\n setValidationValues(options, \"minlength\", options.params.min);\r\n }\r\n if (options.params.nonalphamin) {\r\n setValidationValues(options, \"nonalphamin\", options.params.nonalphamin);\r\n }\r\n if (options.params.regex) {\r\n setValidationValues(options, \"regex\", options.params.regex);\r\n }\r\n });\r\n\r\n $(function () {\r\n $jQval.unobtrusive.parse(document);\r\n });\r\n return $;\r\n}));","var $ = require('jquery');\r\n\r\n$(function () {\r\n $('.locations__region-wrapper').easyResponsiveTabs({\r\n //Types: default, vertical, accordion \r\n type: 'default',\r\n //auto or any width like 600px\r\n width: 'auto',\r\n // 100% fit in a container\r\n fit: true,\r\n // Start closed if in accordion view\r\n closed: 'accordion',\r\n // Callback function if tab is switched\r\n activate: function () { }\r\n });\r\n});\r\n","var $ = require('jquery');\r\n\r\n$(document).ready(function() {\r\n var resizeTimeout;\r\n $(window).resize(function() {\r\n window.clearTimeout(resizeTimeout);\r\n resizeTimeout = setTimeout(function () {\r\n $('.extended-content_content-intro-cards').each(function () {\r\n var t = $(this);\r\n var originalColValue = t.data(\"originalMaxcolValue\");\r\n if ($(window).width() <= 991) { //tablet\r\n t.attr(\"data-max-columns\", 2);\r\n }\r\n \r\n if ($(window).width() > 991) { //desktop\r\n t.attr(\"data-max-columns\", originalColValue);\r\n }\r\n });\r\n }, 200);\r\n });\r\n});\r\n\r\n$(function () {\r\n\r\n function resetModalScrollHeight() {\r\n var element = $('.extended-content_content-intro-cards__inner__card__modal--parent')[0];\r\n if ($(window).width() < 992 && element) {\r\n $(element)\r\n .css({ height: ($(window).height() + 20) + 'px' });\r\n } else {\r\n $(element)\r\n .css({ height: 'auto' });\r\n }\r\n }\r\n\r\n\r\n $('.extended-content_content-intro-cards__inner__card__link a.isModal').each(function () {\r\n\r\n var thisLink = $(this);\r\n $(this).on('click', function () {\r\n resetModalScrollHeight();\r\n\r\n document.getElementsByTagName('html')[0].setAttribute('class', 'noScroll');\r\n\r\n var modalWrapper = thisLink.closest('.extended-content_content-intro-cards__inner__card')\r\n .find('.1900-620-modal-wrapper');\r\n\r\n document.getElementsByTagName('html')[0].setAttribute('class', 'noScroll');\r\n var modalContent = '<div class=\"modal-content container\"><div class=\"row\"><div class=\"col-md-10 col-sm-12 col-xs-12\"><button data-fancybox-close class=\"fancybox-close-small\"></button>' +\r\n modalWrapper.html() +\r\n '</div></div></div>';\r\n $.fancybox.open({\r\n content: modalContent,\r\n autoSize: false, \r\n fitToView: false,\r\n close: false,\r\n type: 'html',\r\n beforeClose: function() {\r\n document.getElementsByTagName('html')[0].setAttribute('class', '');\r\n }\r\n });\r\n });\r\n });\r\n\r\n $(window).on('resize orientationchange', function () {\r\n resetModalScrollHeight();\r\n });\r\n\r\n});","var $ = require('jquery');\r\n\r\n$(function () {\r\n $('.stats-grid-card-col').each(function (i) {\r\n if ($(window).width() > 991) {\r\n $(this).css({ animationDelay: i + 1 + 's' });\r\n }\r\n });\r\n});\r\n","var $ = require('jquery');\r\n\r\nvar accordionNames = new Array();\r\nvar usingMobileMenu = false;\r\n\r\n$(function () {\r\n\tinitTabbedView();\r\n\tinitAccordionMode();\r\n\tbindClickEvents();\r\n\tif (($(window).width() <= 767)) { //checking state on run\r\n\t\tusingMobileMenu = true;\r\n\t}\r\n\t//timeout for resize/orientation change to help prevent multiple triggers\r\n\tvar to;\r\n\t$(window).on('resize orientationchange', function () {\r\n\t\tclearTimeout(to);\r\n\t\tto = setTimeout(function () {\r\n\t\t\tcheckMenuSwitch();\r\n\t\t}, 100);\r\n\t});\r\n\r\n});\r\n\r\nfunction checkMenuSwitch() {\r\n\tif ((($(window).width() <= 767) && usingMobileMenu === false) || (($(window).width() > 767) && usingMobileMenu === true)) {\r\n\t\tusingMobileMenu = !usingMobileMenu;\r\n\t\tinitTabbedView();\r\n\t\tinitAccordionMode();\r\n\t}\r\n}\r\n\r\nfunction bindClickEvents() {\r\n\t//Desktop Tabs\r\n\t$('._1910-tabbed-parent__tabs__tab_list__desktop').on('click', '._1910-tabbed-parent__tabs__tab_list__desktop--tab', function (e) {\r\n\t\te.preventDefault();\r\n\t\tvar activeTab = $(this);\r\n\t\tvar tab = activeTab.find('._1910-tabbed-parent__tabs__tab_list__desktop--tab-link');\r\n\t\tvar tabGUID = tab.data('tab-guid');\r\n\t\tvar parent1910 = activeTab.closest('._1910-tabbed-parent');\r\n\t\tparent1910.find('._1910-tabbed-parent__tabs__tab_list__desktop--tab').removeClass('active');\r\n\t\tparent1910.find('._1910-tabbed-parent__tabs__tab_list__desktop__content--section').removeClass('show');\r\n\t\tactiveTab.addClass('active');\r\n\t\t$('#' + tabGUID).addClass('show');\r\n\t});\r\n\t//Mobile Tabs\r\n\t$('._1910-tabbed-parent').find('._1910-tabbed-parent__tabs__tab_list__desktop__content--section').on('click', function (e) {\r\n\t\tvar t = $(this);\r\n\t\tif (t.closest('._1910-tabbed-parent__tabs').hasClass('accordionView')) {\r\n\t\t\te.preventDefault();\r\n\t\t\tt.siblings('._1910-tabbed-parent__tabs__tab_list__desktop__content--section')\r\n\t\t\t\t.children('._1910-tabbed-parent__tab_list__mobile').removeClass('selected')\r\n\t\t\t\t.next('._1910-tabbed-parent__tabs__tab_list__desktop__content--section_area').slideUp();\r\n\t\t\tt.find('._1910-tabbed-parent__tab_list__mobile').toggleClass('selected');\r\n\t\t\tt.find('._1910-tabbed-parent__tabs__tab_list__desktop__content--section_area').slideToggle();\r\n\t\t}\r\n\t});\r\n\t\r\n\t$('._1910-tabbed-parent__tabs__tab_list__desktop__content--section_area').on('click', function (e) {\r\n\t\te.stopPropagation();\r\n\r\n\t\t//Fix for 1910-310 dropdown filter activation\r\n\t\tif ($(e.target).parent().hasClass(\"dropdown-filter\")) {\r\n\t\t\t$(e.target).parent().toggleClass(\"open\");\r\n\t\t} else {\r\n\t\t\tif ($(e.target).hasClass(\"dropdown-filter-label\")) $(e.target).siblings(\".dropdown-filter-list\").toggleClass(\"open\");\r\n\t\t}\r\n\t});\r\n\r\n}\r\n\r\nfunction initTabbedView() {\r\n\tif ($('._1910-tabbed-parent').length > 0 && $('._1910-tabbed-parent__tabs__tab_list__desktop--tab').length > 1) {\r\n\r\n\t\tvar tabNames = new Array(); //list of recorded tab names from the querystring\r\n\t\t//run querystring check here\r\n\t\t$('._1910-tabbed-parent').each(function (i) {\r\n\t\t\tvar t = $(this);\r\n\t\t\tvar tabName = t.data('tab-name');\r\n\t\t\tvar paddingBottom = $(t).data(\"padding-bottom\").toString();\r\n\r\n\t\t\tif ($(window).width() > 767) {\r\n\t\t\t\t$(t).find(\"._1910-tabbed-parent__tabs__tab_list__desktop__content\").removeClass(\"accordionView\").removeClass(paddingBottom);\r\n\t\t\t} else {\r\n\t\t\t\t$(t).find('._1910-tabbed-parent__tab_list__mobile').removeClass('selected');\r\n\t\t\t}\r\n\r\n\t\t\tvar tabCount = t.find('._1910-tabbed-parent__tabs__tab_list__desktop--tab').length;\r\n\t\t\tvar tabIndex = $.QueryStringTabActivation(tabName, tabCount);\r\n\t\t\tif (tabIndex !== 999 && (tabNames.indexOf(tabName) === -1)) {\r\n\t\t\t\tvar newTab = t.find('._1910-tabbed-parent__tabs__tab_list__desktop--tab-link[data-tab-id=\"' + tabIndex + '\"]');\r\n\t\t\t\tvar newTabContent = $('#' + newTab.data('tab-guid'));\r\n\t\t\t\t//deactivate current tab\r\n\t\t\t\tt.find('._1910-tabbed-parent__tabs__tab_list__desktop--tab').removeClass('active');\r\n\t\t\t\tt.find('._1910-tabbed-parent__tabs__tab_list__desktop__content--section').removeClass('show');\r\n\t\t\t\t//activate new one\r\n\t\t\t\tnewTab.closest('._1910-tabbed-parent__tabs__tab_list__desktop--tab').addClass('active');\r\n\t\t\t\tnewTabContent.addClass('show');\r\n\t\t\t\t$.ScrollToLocation(newTabContent, 400, false);\r\n\t\t\t\ttabNames.push(tabName);\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n}\r\n\r\n\r\nfunction initAccordionMode() {\r\n\t$('._1910-tabbed-parent').each(function (i) {\r\n\t\t$(this).find('._1910-tabbed-parent__tabs__tab_list__desktop__content--section_area').removeAttr(\"style\");\r\n\t\tvar that = $(this);\r\n\t\tvar tName = that.data('tab-name');\r\n\t\tvar paddingBottom = $(that).data(\"padding-bottom\").toString();\r\n\t\tvar tCount = that.find('._1910-tabbed-parent__tabs__tab_list__desktop--tab').length;\r\n\t\t$(that).find(\"._1910-tabbed-parent__tabs__tab_list__desktop__content\").removeClass(\"accordionView\").removeClass(paddingBottom);\r\n\t\tvar tIndex = $.QueryStringTabActivation(tName, tCount);\r\n\t\tif ($(window).width() <= 767) {\r\n\t\t\tMobileAccordionView(that, tName, tIndex, accordionNames, i);\r\n\t\t}\r\n\t});\r\n}\r\n\r\nfunction MobileAccordionView(t, tName, tIndex, accordionNames, i) {\r\n\r\n\tvar SetToAccordionField = $(t).data(\"set-accordion-field\");\r\n\tvar CloseFirstAccordionPaneOnPageLoadField = $(t).data(\"close-first-accordion\");\r\n\tvar MoveSelectedTabToFirstElementField = $(t).data(\"move-selected-accordion\");\r\n\r\n\tvar isAccordionView = JSON.parse(SetToAccordionField.toLowerCase().toString());\r\n\tvar isCloseFirstPane = JSON.parse(CloseFirstAccordionPaneOnPageLoadField.toLowerCase().toString());\r\n\tvar isMoveToFirstPane = JSON.parse(MoveSelectedTabToFirstElementField.toLowerCase().toString());\r\n\tvar paddingBottom = $(t).data(\"padding-bottom\").toString();\r\n\r\n\ttIndex = parseInt(tIndex);\r\n\r\n\tif (isAccordionView) {\r\n\r\n\t\t$(t).find(\"._1910-tabbed-parent__tabs__tab_list__desktop__content\").addClass(\"accordionView\").addClass(paddingBottom);\r\n\r\n\t\tif (tIndex === 999 || (tIndex !== 999 && accordionNames.includes(tName) && i >= 1)) {\r\n\t\t\ttIndex = 1;\r\n\t\t}\r\n\t\tif (tIndex === 999 && (accordionNames.includes(tName) && i >= 1)) {\r\n\t\t\ttIndex = 1;\r\n\t\t}\r\n\r\n\t\tvar newTabMobile = $(t).find('._1910-tabbed-parent__tabs__tab_list__desktop__content--section[data-tab-number=\"' + tIndex + '\"]');\r\n\t\tvar newTabContentMobile = $('#' + newTabMobile.attr('id'));\r\n\r\n\t\t$(newTabContentMobile).find('._1910-tabbed-parent__tab_list__mobile').toggleClass('selected');\r\n\t\t$(newTabContentMobile).find('._1910-tabbed-parent__tabs__tab_list__desktop__content--section_area').slideToggle();\r\n\r\n\t\tif (!isMoveToFirstPane) {\r\n\t\t\t$(t).find(\".show\").addClass(\"show-normal\");\r\n\t\t}\r\n\r\n\t\tif (isCloseFirstPane) {\r\n\t\t\tif (tIndex === 1 || (tIndex !== 999 && isMoveToFirstPane)) {\r\n\t\t\t\t$(newTabContentMobile).find('._1910-tabbed-parent__tab_list__mobile').removeClass('selected')\r\n\t\t\t\t\t.next('._1910-tabbed-parent__tabs__tab_list__desktop__content--section_area').slideUp();\r\n\t\t\t}\r\n\t\t}\r\n\t\t$.ScrollToLocation(newTabMobile, 400, false);\r\n\t\taccordionNames.push(tName);\r\n\t}\r\n}","var $ = require('jquery');\r\n\r\n$(function () {\r\n var isPageEditor = window.SitecoreUtilities.isPageEditor;\r\n\r\n if (!isPageEditor()) {\r\n $('a.OpenInModal').each(function () {\r\n var thisLink = $(this)[0];\r\n var iFrameSrc = thisLink.href;\r\n thisLink.href = \"javascript:page-modal\";\r\n\r\n $(this).on('click', function () {\r\n const modalContent = '<div class=\"modal-wrapper\"><span data-fancybox-close></span><iframe src=\"' + iFrameSrc + '\" width=\"100%\" height=\"500px\"></iframe></div>';\r\n $.fancybox.open({\r\n content: modalContent,\r\n autoSize: false,\r\n fitToView: false,\r\n type: 'html',\r\n //smallBtn : true,\r\n //close: true,\r\n });\r\n });\r\n });\r\n\r\n $('.close-modal').on('click', function () {\r\n // If the clicked element doesn't have the right selector, do nothing\r\n event.preventDefault();\r\n window.parent.document.querySelectorAll(\"html\")[0].className = \"\";\r\n var parentPageModal = window.parent.document.documentElement.querySelectorAll(\".fancybox-container\")[0];\r\n parentPageModal.parentNode.removeChild(parentPageModal);\r\n });\r\n\r\n\r\n\r\n function videoModalAdjustAspectRatio() {\r\n var iframe = $('.fancybox-content iframe')[0];\r\n\r\n if ($(iframe).find(\"fancybox-close-small\").length == 0) {\r\n $(iframe).parent().prepend('<button data-fancybox-close class=\"fancybox-close-small\" title=\"Close\"></button>');\r\n }\r\n\r\n if (iframe) {\r\n var innerDoc = iframe.contentDocument || iframe.contentWindow.document;\r\n var aspect = 1.78;\r\n var resizedWidth;\r\n var playerCalculatedWidth = 500;\r\n\r\n if ($(window).width() >= 768) {\r\n playerCalculatedWidth = 667;\r\n }\r\n if ($(window).width() >= 992) {\r\n playerCalculatedWidth = 960;\r\n }\r\n if ($(window).width() >= 1200) {\r\n playerCalculatedWidth = 1100;\r\n }\r\n\r\n if ($('.fancybox-content').height() < playerCalculatedWidth) {\r\n var resizedHeight = parseInt($(window).height()) - 200;\r\n resizedWidth = resizedHeight * aspect;\r\n } else {\r\n resizedWidth = parseInt($(window).width()) - 100;\r\n }\r\n\r\n $('.fancybox-content').css({ width: resizedWidth, maxWidth: playerCalculatedWidth });\r\n $('.fancybox-content').height(resizedWidth / aspect);\r\n }\r\n }\r\n\r\n\r\n $(window).on('resize orientationchange', function () {\r\n videoModalAdjustAspectRatio();\r\n });\r\n\r\n\r\n $('a.OpenVideoInModal').each(function () {\r\n var thisLink = $(this)[0];\r\n var iFrameSrc = thisLink.href;\r\n thisLink.href = \"javascript:;\";\r\n\r\n $(this).on('click', function () {\r\n $.fancybox.open({\r\n src: iFrameSrc,\r\n baseClass: 'fancybox-modal-video',\r\n type: 'iframe',\r\n beforeShow: function () {\r\n $('.fancybox-image')\r\n .width($(window).width())\r\n .height($(window).height());\r\n $(\".fancybox-inner\").find(\".fancybox-toolbar\").hide();\r\n },\r\n onUpdate: function () {\r\n videoModalAdjustAspectRatio();\r\n },\r\n });\r\n });\r\n });\r\n }\r\n});","var $ = require('jquery');\r\n\r\n$(function () {\r\n \r\n $('body').on('click', '.dropdown-filter', function () {\r\n $('.dropdown-filter-label').not(this).removeClass('open');\r\n $('.dropdown-filter').not(this).removeClass('open');\r\n $(this).toggleClass('open');\r\n });\r\n \r\n $('body').on('click', '.dropdown-filter, .dropdown-filter-list', function (e) {\r\n e.stopPropagation();\r\n });\r\n\r\n $('body').on('click', '.dropdown-filter-label', function () {\r\n $('.dropdown-filter-label').removeClass('open');\r\n $('.dropdown-filter').removeClass('open');\r\n $(this).toggleClass('open');\r\n $('.dropdown-filter-list').toggleClass('open');\r\n });\r\n\r\n $('body').on('click', function () {\r\n $('.dropdown-filter-label').removeClass('open');\r\n $('.dropdown-filter').removeClass('open');\r\n });\r\n\r\n $('.our-firms__show-more').each(function () {\r\n $(this).on('click', function () {\r\n $(this).parents('.our-firms__firm').toggleClass('show-more');\r\n });\r\n });\r\n});\r\n","var $ = require('jquery');\r\n\r\n$(function () {\r\n\r\n $('.column-content-preview-210__list--mobile').slick({\r\n arrows: true,\r\n centerMode: true,\r\n centerPadding: '30px',\r\n mobileFirst: true,\r\n responsive: [{\r\n breakpoint: 767,\r\n settings: 'unslick'\r\n }],\r\n rtl: window.GenericUtilities.isRTL()\r\n });\r\n // to get slick slider to initialize on screen resize\r\n // https://github.com/kenwheeler/slick/issues/1730\r\n $(window).on('resize orientationchange', function () {\r\n $('.column-content-preview-210__list--mobile').slick('resize');\r\n });\r\n\r\n $('.column-content-preview-210__show-more-less a').on('click', function (e) {\r\n e.preventDefault();\r\n $('.column-content-preview-210').toggleClass('show-more');\r\n });\r\n\r\n $('.column-content-preview-210__list__item__image').each(function () {\r\n if ($(this).find('img').length == 0) {\r\n $(this).addClass('no-image');\r\n }\r\n });\r\n});\r\n","var $ = require('jquery');\r\n\r\n$(function () {\r\n\r\n $('.column-content-preview-216__list--mobile').slick({\r\n arrows: true,\r\n centerMode: true,\r\n centerPadding: '30px',\r\n mobileFirst: true,\r\n responsive: [{\r\n breakpoint: 767,\r\n settings: 'unslick'\r\n }],\r\n rtl: window.GenericUtilities.isRTL()\r\n });\r\n // to get slick slider to initialize on screen resize\r\n // https://github.com/kenwheeler/slick/issues/1730\r\n $(window).on('resize orientationchange', function () {\r\n $('.column-content-preview-216__list--mobile').slick('resize');\r\n });\r\n\r\n $('.column-content-preview-216__show-more-less a').on('click', function (e) {\r\n e.preventDefault();\r\n $('.column-content-preview-216').toggleClass('show-more');\r\n });\r\n\r\n $('.column-content-preview-216__list__item__image').each(function () {\r\n if ($(this).find('img').length == 0) {\r\n $(this).addClass('no-image');\r\n }\r\n });\r\n});\r\n","var $ = require('jquery');\r\n\r\n$(function () {\r\n\r\n $('.column-directory-content__list--mobile').slick({\r\n arrows: true,\r\n centerMode: true,\r\n centerPadding: '30px',\r\n mobileFirst: true,\r\n responsive: [{\r\n breakpoint: 767,\r\n settings: 'unslick'\r\n }],\r\n rtl: window.GenericUtilities.isRTL()\r\n });\r\n // to get slick slider to initialize on screen resize\r\n // https://github.com/kenwheeler/slick/issues/1730\r\n $(window).on('resize orientationchange', function () {\r\n $('.column-directory-content__list--mobile').slick('resize');\r\n });\r\n\r\n $('.column-directory-content__show-more-less a').on('click', function (e) {\r\n e.preventDefault();\r\n $('.column-directory-content, .column-directory-content__show-more-less__more').toggleClass('show-more');\r\n });\r\n});\r\n","var $ = require('jquery');\r\n\r\n$(function () {\r\n\r\n $('.column-directory-list__list--mobile').slick({\r\n arrows: true,\r\n centerMode: true,\r\n centerPadding: '30px',\r\n mobileFirst: true,\r\n responsive: [{\r\n breakpoint: 767,\r\n settings: 'unslick'\r\n }],\r\n rtl: window.GenericUtilities.isRTL()\r\n });\r\n // to get slick slider to initialize on screen resize\r\n // https://github.com/kenwheeler/slick/issues/1730\r\n $(window).on('resize orientationchange', function () {\r\n $('.column-directory-list__list--mobile').slick('resize');\r\n });\r\n\r\n $('.column-directory-list__show-more-less a').on('click', function (e) {\r\n e.preventDefault();\r\n $('.column-directory-list, .column-directory-list__show-more-less__more').toggleClass('show-more');\r\n });\r\n});\r\n","var $ = require('jquery');\r\n\r\n$(function () {\r\n\r\n $('.column-list-links__list').slick({\r\n arrows: true,\r\n customPaging: function (slick, index) {\r\n return '<span class=\"number\">' + (index + 1) + '</span>';\r\n },\r\n dots: true,\r\n mobileFirst: true,\r\n slidesToShow: 2,\r\n slidesToScroll: 2,\r\n responsive: [{\r\n breakpoint: 767,\r\n settings: 'unslick'\r\n }],\r\n rtl: window.GenericUtilities.isRTL()\r\n });\r\n // to get slick slider to initialize on screen resize\r\n // https://github.com/kenwheeler/slick/issues/1730\r\n $(window).on('resize orientationchange', function () {\r\n $('.column-list-links__list').slick('resize');\r\n });\r\n});\r\n","var $ = require('jquery');\r\n\r\n$(function () {\r\n\r\n $('.column-related-content__list').slick({\r\n arrows: true,\r\n centerMode: true,\r\n centerPadding: '30px',\r\n mobileFirst: true,\r\n responsive: [{\r\n breakpoint: 767,\r\n settings: 'unslick'\r\n }],\r\n rtl: window.GenericUtilities.isRTL()\r\n });\r\n // to get slick slider to initialize on screen resize\r\n // https://github.com/kenwheeler/slick/issues/1730\r\n $(window).on('resize orientationchange', function () {\r\n $('.column-related-content__list').slick('resize');\r\n });\r\n\r\n $('.column-related-content__list__item__image').each(function () {\r\n if ($(this).find('img').length == 0) {\r\n $(this).addClass('no-image');\r\n }\r\n });\r\n});\r\n","var $ = require('jquery');\r\n\r\n$(function () {\r\n\r\n $('.external-search-box').each(function () {\r\n var t = $(this);\r\n t.find('button.search-button').on('click', function() {\r\n var searchUrl = t.data('search-url');\r\n var searchParam = t.data('search-parameter');\r\n var searchValue = t.find('.searchbox__input').val();\r\n var openInNewWindow = (t.data('new-window') === \"True\") ? \"_blank\" : \"_self\";\r\n externalSearch(searchUrl, searchParam, searchValue, openInNewWindow);\r\n });\r\n });\r\n\r\n function externalSearch(url, keyword, value, newWindow) {\r\n var querystring = decodeURIComponent((url + \"?\" + keyword + \"=\" + value).replace(/\\+/g, \" \"));\r\n window.open(querystring, newWindow);\r\n }\r\n});\r\n","var $ = require('jquery');\r\n\r\n$(document).ready(function () {\r\n if ($('.extended-content_contact-item__info__connect').length !== 0) {\r\n // display phone number from hidden span\r\n $('.phone-link').on('click', function (event) {\r\n var phoneId = $(this).data('phone-id');\r\n\r\n toggleHiddenPhone(phoneId, true);\r\n });\r\n\r\n $('.extended-content_contact-item__info__connect--phone-display span.close-phone').on('click', function (event) {\r\n var phoneId = $(this).data('phone-id-close');\r\n toggleHiddenPhone(phoneId, false);\r\n });\r\n }\r\n});\r\n\r\nfunction toggleHiddenPhone(phoneId, visible) {\r\n var hiddenPhoneEl = $('#' + phoneId);\r\n\r\n if (hiddenPhoneEl !== 'undefined' || hiddenPhoneEl !== 0) {\r\n if (visible) {\r\n\r\n $('.extended-content_contact-item__info__connect[data-contact-id=\"' + phoneId + '\"] .connect').addClass('connect-hidden');\r\n hiddenPhoneEl.addClass('show');\r\n } else {\r\n $('.extended-content_contact-item__info__connect[data-contact-id=\"' + phoneId + '\"] .connect').removeClass('connect-hidden');\r\n hiddenPhoneEl.removeClass('show');\r\n }\r\n }\r\n}\r\n\r\nfunction initializeSlickForExtendedContentContacts(slickState) {\r\n\r\n if (slickState) {\r\n if (!$('.extended-content_contact--carousel').hasClass('slick-initialized')) {\r\n $('.extended-content_contact--carousel').slick({\r\n infinite: false,\r\n arrows: false,\r\n centerMode: true,\r\n centerPadding: '15px',\r\n centerMode: true,\r\n variableWidth: true,\r\n mobileFirst: true,\r\n responsive: [\r\n {\r\n settings: {\r\n settings: 'unslick'\r\n }\r\n }\r\n ],\r\n rtl: window.GenericUtilities.isRTL()\r\n });\r\n }\r\n } else {\r\n if ($('.extended-content_contact--carousel').hasClass('slick-initialized')) {\r\n $('.extended-content_contact--carousel').slick('unslick');\r\n }\r\n }\r\n}\r\n\r\n$(function () {\r\n\r\n if (window.innerWidth <= 991) {\r\n initializeSlickForExtendedContentContacts(true);\r\n }\r\n\r\n // to get slick slider to initialize on screen resize\r\n // https://github.com/kenwheeler/slick/issues/1730\r\n $(window).on('resize orientationchange', function () {\r\n\r\n if (window.innerWidth <= 991) {\r\n initializeSlickForExtendedContentContacts(true);\r\n } else {\r\n initializeSlickForExtendedContentContacts(false);\r\n }\r\n });\r\n});","var $ = require('jquery');\r\n\r\n$(function () {\r\n if ($('._1900_202_InteractiveContentColumnCarousel').length > 0) {\r\n var isPageEditor = window.SitecoreUtilities.isPageEditor;\r\n\r\n if (!isPageEditor()) {\r\n var slider = $('._1900_202_InteractiveContentColumnCarousel__carousel');\r\n\r\n $(slider).each(function() {\r\n var maxRows = $(this).attr(\"data-maxRows\").toString();\r\n var getMaxRowValue = JSON.parse(maxRows);\r\n\r\n $(this).slick({\r\n arrows: false,\r\n infinite: true,\r\n slidesToScroll: 1,\r\n centerMode: false,\r\n centerPadding: '60px',\r\n variableWidth: false,\r\n responsive: [\r\n {\r\n breakpoint: 768,\r\n settings: {\r\n slidesToShow: (getMaxRowValue == 1) ? 1 : 2\r\n }\r\n }\r\n ],\r\n rtl: window.GenericUtilities.isRTL()\r\n });\r\n });\r\n\r\n $(window).on('resize orientationchange', function () {\r\n slider.slick('resize');\r\n });\r\n\r\n // to get slick slider to initialize on screen resize\r\n // https://github.com/kenwheeler/slick/issues/1730\r\n\r\n\r\n slider.on('afterChange',\r\n function(event, slick, currentSlide) {\r\n //need fuction to stop automatic slide after clicked\r\n $('.autoplay').slick('slickPause');\r\n });\r\n }\r\n }\r\n});","var $ = require('jquery');\r\n\r\n$(function () {\r\n // mobile accordion\r\n $('.featured-services__tab-content__name').eq(0).addClass('selected');\r\n\r\n $('.featured-services__tab-content__group').on('click', function (e) {\r\n e.preventDefault();\r\n $(this).siblings('.featured-services__tab-content__group')\r\n .children('.featured-services__tab-content__name').removeClass('selected')\r\n .next('.featured-services__tab-content__item').slideUp();\r\n $(this).children('.featured-services__tab-content__name').toggleClass('selected')\r\n .next('.featured-services__tab-content__item').slideToggle();\r\n });\r\n\r\n // desktop tabs\r\n $('.featured-services__tabs__tab').eq(0).addClass('selected');\r\n $('.featured-services__tab-content__item').eq(0).addClass('selected');\r\n\r\n $('.featured-services__tabs__tab a').click(function (e) {\r\n var dataId = $(this).attr('data-service-id');\r\n\r\n e.preventDefault();\r\n $(this).parent().addClass('selected').siblings().removeClass('selected');\r\n $('.featured-services__tab-content__item[data-service-id=\"' + dataId + '\"]').addClass('selected').parent().siblings().children().removeClass('selected');\r\n });\r\n\r\n $('.featured-services__tab-content__item').on('click', function (e) {\r\n e.stopPropagation();\r\n });\r\n});\r\n","var $ = require('jquery');\r\n\r\n$(function () {\r\n\r\n $('.featured-elements__carousel').slick({\r\n arrows: true,\r\n centerMode: true,\r\n centerPadding: '30px',\r\n mobileFirst: true,\r\n responsive: [{\r\n breakpoint: 767,\r\n settings: {\r\n autoplay: true,\r\n autoplaySpeed: 5000,\r\n centerMode: false,\r\n centerPadding: '0'\r\n }\r\n }],\r\n rtl: window.GenericUtilities.isRTL()\r\n });\r\n // to get slick slider to initialize on screen resize\r\n // https://github.com/kenwheeler/slick/issues/1730\r\n $(window).on('resize orientationchange', function () {\r\n $('.featured-elements__carousel').slick('resize');\r\n });\r\n});\r\n","var $ = require('jquery');\r\n\r\n$(document).ready(function () {\r\n var copyLinkButtonClicked = false;\r\n $('.copy-link-icon').on('click', function (event) {\r\n var copySuccessMessage = $(this).data('copy-url-success');\r\n if (!copyLinkButtonClicked) {\r\n copyLinkButtonClicked = true;\r\n var fadeOut = document.createElement(\"div\");\r\n fadeOut.setAttribute(\"class\", \"fadeout-copy-confirmation\");\r\n fadeOut.setAttribute(\"style\", \"position: absolute; user-select: none; background-color: #fff; padding: 2px 4px; font-size: 1.2rem; border: 1px solid black; z-index: 999; transition: 1.5s; left: \" + event.pageX + \"px; top: \" + event.pageY + \"px;\");\r\n\r\n document.getElementsByTagName(\"body\")[0].append(fadeOut);\r\n $('.fadeout-copy-confirmation').html(copySuccessMessage);\r\n window.setTimeout(function () {\r\n $('.fadeout-copy-confirmation').css('opacity', 0);\r\n window.setTimeout(function () {\r\n document.getElementsByClassName('fadeout-copy-confirmation')[0].remove();\r\n copyLinkButtonClicked = false;\r\n }, 1500);\r\n }, 500);\r\n }\r\n navigator.clipboard.writeText($(this).data('canonical-link'));\r\n });\r\n\r\n\r\n if (window.SitecoreUtilities.isPageEditor) {\r\n var bcVideo = $('.featured-hero-jumplink__video').find('.brightcove-video');\r\n if (bcVideo.length > 0 && bcVideo.data('has-transcript') == \"False\") {\r\n bcVideo.find('.p3sdk-interactive-transcript-content').html(\"No transcript available\");\r\n }\r\n }\r\n\r\n\r\n //add logic to determine if we are using featured hero jumplinks or the social share jumplinks\r\n var jumplinkContainer;\r\n var jumplinkContainerClass;\r\n var jumplinkClass;\r\n var jumplinkWrapperClass; //if no wrapper, set this equal to the jumplinkClass\r\n var jumplinkMobileClass;\r\n var stickyNavDesktopClass;\r\n var stickyNavMobileClass;\r\n var headerOverrideClass;\r\n var mobileButtonClass;\r\n var usingAnchors = true;\r\n\r\n //Check for presence of featured hero jumplinks or 801 social links\r\n if ($('.featured-hero-jumplink.jumplinks').length > 0 || $('.801-social-sharing-wrapper.jumplinks').length > 0) {\r\n if ($('.featured-hero-jumplink.jumplinks').length > 0) {\r\n jumplinkContainer = $('.featured-hero-jumplink.jumplinks').first();\r\n jumplinkContainerClass = \".featured-hero-jumplink__menu__desktop\";\r\n jumplinkClass = \".featured-hero-jumplink__menu__desktop--item\";\r\n jumplinkWrapperClass = jumplinkClass;\r\n jumplinkMobileClass = \".featured-hero-jumplink__menu__mobile--item\";\r\n stickyNavDesktopClass = \".featured-hero-jumplink__container__stickynav\";\r\n stickyNavMobileClass = \".featured-hero-jumplink__menu__mobile__stickynav\";\r\n headerOverrideClass = \"featured-hero-jumplink-override\";\r\n mobileButtonClass = \"featured-hero-jumplink__menu__mobile--button\";\r\n }\r\n else if ($('.801-social-sharing-wrapper.jumplinks').length > 0) {\r\n jumplinkContainer = $('.801-social-sharing-wrapper.jumplinks').first();\r\n jumplinkContainerClass = \".article-header__social-jumplinks\";\r\n jumplinkClass = \".article-header__social-jumplink\";\r\n jumplinkWrapperClass = \".article-header__social-jumplinks__link\";\r\n jumplinkMobileClass = \".article-header__social-jumplinks__mobile-link\";\r\n stickyNavDesktopClass = \".article-header__social-jumplinks__container__stickynav\";\r\n stickyNavMobileClass = \".article-header__social-jumplinks__menu__mobile__stickynav\";\r\n headerOverrideClass = \"article-header__social-jumplinks-override\";\r\n mobileButtonClass = \"article-header__social-jumplinks__menu__mobile--button\"\r\n }\r\n\r\n var stickyNavDesktopContainer = jumplinkContainer.find(stickyNavDesktopClass);\r\n var stickyNavMobileContainer = jumplinkContainer.find(stickyNavMobileClass);\r\n if (jumplinkContainer.find(jumplinkClass).length !== 0) {\r\n //quick check for existing window.location.hash\r\n if (window.location.hash.length > 0) {\r\n smoothScrollToAnchor(0, event);\r\n }\r\n // Setup isScrolling variable\r\n var isScrolling;\r\n var stillScrolling;\r\n var scrolling = false;\r\n var stickyNavTimeout;\r\n var lastScrollTop = 0;\r\n var windowResize;\r\n var jumplinksDistanceFromTop = $(jumplinkContainerClass).first().offset().top;\r\n var mobileJumplinksDistanceFromTop = $(jumplinkMobileClass).first().offset().top;\r\n var jumplinkTopDistance = [];\r\n var anchorElements = stickyNavDesktopContainer.find(jumplinkClass);\r\n var anchorElementWrappers = (jumplinkClass !== jumplinkWrapperClass) ? stickyNavDesktopContainer.find(jumplinkWrapperClass) : null;\r\n function anchorPointCalc() {\r\n jumplinkTopDistance = [];\r\n if (usingAnchors) {\r\n $(anchorElements).each(function () {\r\n var t = $(this);\r\n if (t.attr('href')) {\r\n if (t.attr('href').substring(0, 1) === \"#\") {\r\n var targetedAnchor = t.attr('href');\r\n var anchorOffsetTop = ($(window).width() <= 991) ? $(targetedAnchor).offset().top + mobileJumplinksDistanceFromTop : $(targetedAnchor).offset().top - 80 /*+ jumplinksDistanceFromTop*/;\r\n jumplinkTopDistance.push(anchorOffsetTop - 30);\r\n }\r\n else {\r\n usingAnchors = false;\r\n return false;\r\n }\r\n }\r\n });\r\n\r\n jumplinkTopDistance.push(9999999);\r\n }\r\n }\r\n\r\n var anchorpointsCalc = window.setTimeout(function () {\r\n anchorPointCalc();\r\n }, 500);\r\n\r\n\r\n $('.tabbed-section-navigation__tabs__tab__name').on('click', function () {\r\n anchorpointsCalc = window.setTimeout(function () {\r\n anchorPointCalc();\r\n }, 100);\r\n });\r\n\r\n $(document).on('beforeShow.fb', function (e, instance, slide) {\r\n stickyNavDesktopContainer.removeClass('scrollable_nav');\r\n });\r\n $(document).on('beforeClose.fb', function (e, instance, slide) {\r\n //only add this class if the nav should be active\r\n if (window.pageYOffset >\r\n (mobileJumplinksDistanceFromTop +\r\n jumplinkContainer.find('.' + mobileButtonClass + '.dropdown-toggle')[0].offsetHeight)) {\r\n stickyNavDesktopContainer.addClass('scrollable_nav');\r\n }\r\n });\r\n\r\n // Listen for scroll events\r\n window.addEventListener('scroll', function (event) {\r\n scrolling = true;\r\n // Clear our timeout throughout the scroll\r\n window.clearTimeout(isScrolling);\r\n // Set a timeout to run after scrolling ends\r\n isScrolling = setTimeout(function () {\r\n // Run the callback\r\n scrolling = false;\r\n window.clearTimeout(scrolling);\r\n }, 266);\r\n stillScrolling = setTimeout(function () {\r\n if (scrolling) {\r\n stickyNavStatus();\r\n }\r\n }, 266);\r\n }, false);\r\n\r\n // Listen for window resize, then recalculate the anchor points\r\n $(window).resize(function () {\r\n window.clearTimeout(windowResize);\r\n windowResize = setTimeout(function () {\r\n anchorPointCalc();\r\n }, 300);\r\n });\r\n\r\n function stickyNavStatus() {\r\n var st = window.pageYOffset || document.documentElement.scrollTop;\r\n if (st === lastScrollTop) {\r\n checkScrollLocation();\r\n return false;\r\n }\r\n\r\n if (window.pageYOffset > (jumplinkContainer.find(jumplinkContainerClass)).offset().top) {\r\n stickyNavDesktopContainer.addClass('scrollable_nav');\r\n $('header.header').addClass(headerOverrideClass);\r\n } else {\r\n stickyNavTimeout = setTimeout(function () {\r\n stickyNavDesktopContainer.removeClass('scrollable_nav');\r\n }, 160);\r\n\r\n $('header.header').removeClass(headerOverrideClass);\r\n }\r\n //adding for mobile stickynav\r\n if ($(window).width() <= 991) {\r\n if (window.pageYOffset > (mobileJumplinksDistanceFromTop - 100)) {\r\n stickyNavMobileContainer.addClass('scrollable_nav');\r\n $('header.header').addClass(headerOverrideClass);\r\n\r\n } else {\r\n stickyNavMobileContainer.removeClass('scrollable_nav');\r\n $('header.header').removeClass(headerOverrideClass);\r\n }\r\n }\r\n\r\n\r\n if (st < lastScrollTop) {\r\n stickyNavDesktopContainer.removeClass('scrollable_nav');\r\n stickyNavMobileContainer.removeClass('scrollable_nav');\r\n $('header.header').removeClass(headerOverrideClass);\r\n }\r\n lastScrollTop = st <= 0 ? 0 : st;\r\n\r\n checkScrollLocation();\r\n }\r\n\r\n // add smooth scrolling to jumplist menu desktop items\r\n jumplinkContainer.find(jumplinkClass).on('click', function (event) {\r\n smoothScrollToAnchor(this, event);\r\n });\r\n\r\n // add smooth scrolling to jumplist menu mobile modal items\r\n jumplinkContainer.find(jumplinkMobileClass).on('click', function (event) {\r\n smoothScrollToAnchor(this, event);\r\n\r\n var buttonText = $(this).html();\r\n\r\n if (buttonText !== '') {\r\n // update button text to the current selection\r\n $('.' + mobileButtonClass).html(buttonText + ' <i class=\"material-icons\">expand_more</i>');\r\n }\r\n });\r\n\r\n stickyNavMobileContainer.on('click', function () {\r\n stickyNavMobileContainer.removeClass('scrollable_nav');\r\n });\r\n\r\n //close fancybox after mobile link click if usingAnchors is false\r\n $('.article-header__social-jumplinks__mobile-link').on('click', function () {\r\n if (!usingAnchors) {\r\n if ($('.fancybox-container').hasClass('fancybox-is-open')) {\r\n $.fancybox.close();\r\n }\r\n }\r\n });\r\n\r\n function smoothScrollToAnchor(t, event) {\r\n if (usingAnchors) {\r\n // prevent default click behavior and check for anchor class\r\n if (t !== 0) {\r\n if ($(t).hasClass('anchor')) event.preventDefault();\r\n }\r\n if (scrolling) return false;\r\n\r\n var jumplinkHeight;\r\n var hash;\r\n var hashOffset;\r\n if (window.location.hash.length > 0 && t === 0) {//activating the jumplink from an external anchor link\r\n hash = window.location.hash;\r\n if ($(hash).length > 0) {\r\n if ($(window).width() <= 991) {//mobileview\r\n jumplinkHeight = stickyNavMobileContainer.height();\r\n hashOffset = $(hash).offset().top + 400 + jumplinkHeight;\r\n } else { //desktopview\r\n jumplinkHeight = stickyNavDesktopContainer.height();\r\n hash = window.location.hash;\r\n hashOffset = $(hash).offset().top + 200 + jumplinkHeight;\r\n }\r\n }\r\n } else {//standard jumplink click activation\r\n hash = t.hash;\r\n if ($(hash).length > 0) {\r\n if ($(window).width() <= 991) {//mobileview\r\n jumplinkHeight = stickyNavMobileContainer.height();\r\n hashOffset = $(hash).offset().top - jumplinkHeight;\r\n } else {//desktopview\r\n jumplinkHeight = stickyNavDesktopContainer.height();\r\n hash = t.hash;\r\n hashOffset = $(hash).offset().top - jumplinkHeight;\r\n }\r\n }\r\n }\r\n if (hash !== '' && $(hash).length !== 0) {\r\n $('html, body').animate({\r\n scrollTop: hashOffset\r\n }, 800, function () {\r\n if (anchorElementWrappers !== null) { //using the wrappers\r\n anchorElementWrappers.removeClass('active');\r\n $(hash).parent(anchorElementWrappers).addClass('active');\r\n }\r\n else {//no wrappers\r\n jumplinkContainer.find(jumplinkClass).removeClass('active');\r\n $(hash).addClass('active');\r\n }\r\n });\r\n }\r\n if ($('.fancybox-container').hasClass('fancybox-is-open')) {\r\n $.fancybox.close();\r\n }\r\n }\r\n }//end smoothscroll\r\n\r\n function checkScrollLocation() {\r\n if (usingAnchors) {\r\n for (var i = 0; i < anchorElements.length; i++) {\r\n if (jumplinkTopDistance[i] <= window.pageYOffset && window.pageYOffset <= jumplinkTopDistance[i + 1]) {\r\n if (anchorElementWrappers !== null) { //using the wrappers\r\n anchorElementWrappers.removeClass('active');\r\n anchorElementWrappers[i].className += \" active\";\r\n }\r\n else {//no wrappers\r\n jumplinkContainer.find(jumplinkClass).removeClass('active');\r\n anchorElements[i].className += \" active\";\r\n }\r\n }\r\n }\r\n if (window.pageYOffset < jumplinkTopDistance[0]) jumplinkContainer.find(jumplinkClass).removeClass('active');\r\n }\r\n }\r\n }\r\n }\r\n\r\n\r\n});","var $ = require('jquery');\r\n\r\n$(function () {\r\n\r\n $('.trending-insights__list').slick({\r\n arrows: true,\r\n centerPadding: '30px',\r\n mobileFirst: true,\r\n responsive: [{\r\n breakpoint: 767,\r\n settings: 'unslick'\r\n }],\r\n rtl: window.GenericUtilities.isRTL()\r\n });\r\n // to get slick slider to initialize on screen resize\r\n // https://github.com/kenwheeler/slick/issues/1730\r\n $(window).on('resize orientationchange', function () {\r\n $('.trending-insights__list').slick('resize');\r\n });\r\n\r\n $('.trending-insights__insight__image').each(function () {\r\n if ($(this).find('img').length == 0) {\r\n $(this).addClass('no-image');\r\n }\r\n });\r\n});\r\n","var $ = require('jquery');\r\n\r\n$(function () {\r\n $('.link--locations').on('click', function (e) {\r\n e.preventDefault();\r\n $('html').toggleClass('menu-open');\r\n $('body').toggleClass('show-location-menu').removeClass('show-header-menu show-search');\r\n $('.resp-tab-item').eq(0).click();\r\n $('.locations').slideToggle();\r\n $('.header__main-menu__links, .header__sub-menu, .search').slideUp();\r\n $('.header__main-menu__primary-link').removeClass('open');\r\n\r\n $('.content-access__overlay').toggleClass('open');\r\n\r\n // if class open is added chagne overflow-y\r\n if ($('html').hasClass('menu-open')) {\r\n $('html').css('overflow-y', 'hidden');\r\n $('.header__utility-menu').addClass('scroll-hidden');\r\n $('.header__main-menu').addClass('scroll-hidden');\r\n $('.locations_global-directory--overlay').addClass('overlay-active');\r\n setTimeout(function () { setScrollableNav('.locations', 'locations', 'scrollable_locations'); }, 500);\r\n }\r\n else {\r\n locationsClosed();\r\n }\r\n });\r\n $('.locations__close').on('click', function (e) {\r\n e.preventDefault();\r\n $('html').removeClass('menu-open')\r\n $('body').removeClass('show-location-menu');\r\n $('.locations').slideUp();\r\n $('.content-access__overlay').removeClass('open');\r\n locationsClosed();\r\n });\r\n\r\n $('body').on('click', function () {\r\n $(this).parent('html').removeClass('menu-open');\r\n $(this).removeClass('show-location-menu');\r\n $('.locations').slideUp();\r\n $('.content-access__overlay').removeClass('open');\r\n locationsClosed();\r\n });\r\n $('.link--locations, .locations').on('click', function (e) {\r\n e.stopPropagation();\r\n });\r\n\r\n // locations menu has been closed. reset DOM elements\r\n function locationsClosed() {\r\n $('html').removeAttr('style');\r\n $('.header__utility-menu').removeClass('scroll-hidden');\r\n $('.header__main-menu').removeClass('scroll-hidden');\r\n $('.locations').removeClass('scrollable_locations');\r\n $('.locations_global-directory--overlay').removeClass('overlay-active');\r\n //$('.locations').css({ 'display': 'none', 'height': '', 'overflow-y': '' });\r\n }\r\n\r\n $(window).resize(function () {\r\n // if window is resized this will fix the desktop view if expanded from tablet (mobile) to desktop\r\n if ($(window).width() > 991) {\r\n $('.locations').removeClass('scrollable_locations');\r\n }\r\n\r\n if ($('html').hasClass('menu-open')) {\r\n $('html').css('overflow-y', 'hidden');\r\n $('.locations').removeClass('scrollable_locations');\r\n setTimeout(function () { setScrollableNav('.locations', 'locations', 'scrollable_locations'); }, 500);\r\n }\r\n });\r\n});\r\n","var $ = require('jquery');\r\n\r\n$(function () {\r\n $('.link--menu').on('click', function (e) {\r\n e.preventDefault(); \r\n $('body').toggleClass('show-header-menu').removeClass('show-location-menu');\r\n $('.header__main-menu__links').slideToggle();\r\n $('.locations').slideUp();\r\n\r\n // if class open is added change overflow-y; this is a mobile menu\r\n if ($('body').hasClass('show-header-menu')) {\r\n $('html').css('overflow-y', 'hidden');\r\n $('.content-access__overlay').addClass('open'); \r\n setTimeout(function () { setScrollableNav('.header__main-menu__links', 'header__main-menu__links', 'scrollable_nav'); }, 500);\r\n }\r\n else {\r\n $('.content-access__overlay').removeClass('open');\r\n $('.header__main-menu').removeClass('scroll-hidden');\r\n $('.header__utility-menu').removeClass('scroll-hidden');\r\n subNavClosed();\r\n }\r\n\r\n $('.content-access__overlay').removeClass('open');\r\n $('.locations').removeClass('scrollable_locations');\r\n $('.locations_global-directory--overlay').removeClass('overlay-active');\r\n $('.header__main-menu').removeClass('scroll-hidden');\r\n $('.header__utility-menu').removeClass('scroll-hidden');\r\n });\r\n $('.header__main-menu__group').on('click', function (e) {\r\n if (!$(this).hasClass(\"header__main-menu__group__no-submenu-link\")) {\r\n e.preventDefault();\r\n $(this).siblings('.header__main-menu__group')\r\n .children('.header__main-menu__primary-link').removeClass('open')\r\n .next('.header__sub-menu').slideUp();\r\n $(this).children('.header__main-menu__primary-link').toggleClass('open')\r\n .next('.header__sub-menu').slideToggle();\r\n\r\n if ($(this).children('.header__main-menu__primary-link.header__main-menu__submenu-link.open').length > 0) {\r\n $('.content-access__overlay').addClass('open');\r\n }\r\n else {\r\n $('.content-access__overlay').removeClass('open');\r\n $('.header__main-menu').removeClass('scroll-hidden');\r\n $('.header__utility-menu').removeClass('scroll-hidden');\r\n subNavClosed();\r\n }\r\n\r\n if (window.innerWidth > 991) {\r\n $.each($('.header__sub-menu'), function (key, value) {\r\n\r\n if ($(value).is(':visible')) {\r\n setTimeout(function () { setScrollableNav($(value), 'header__sub-menu', 'scrollable_nav'); }, 500);\r\n\r\n //return false;\r\n }\r\n });\r\n } else {\r\n $('html').css('overflow-y', 'hidden');\r\n setTimeout(function () {\r\n setScrollableNav('.header__main-menu__links', 'header__main-menu__links', 'scrollable_nav');\r\n },\r\n 500);\r\n }\r\n }\r\n });\r\n\r\n $('.header__sub-menu__see-all-wrapper--desktop__close').on('click', function (e) {\r\n $(this).removeClass('show-header-menu');\r\n $('.header__sub-menu').slideUp();\r\n $('.header__main-menu__primary-link').removeClass('open');\r\n\r\n $('.content-access__overlay').removeClass('open');\r\n $('.header__main-menu').removeClass('scroll-hidden');\r\n $('.header__utility-menu').removeClass('scroll-hidden');\r\n subNavClosed();\r\n });\r\n \r\n $('.header__main-menu__links .dropdown-filter').on('click', function () {\r\n $(this).children('.dropdown-filter__dropdown').slideToggle();\r\n });\r\n\r\n $('body').on('click', function () {\r\n if (window.innerWidth <= 991) {\r\n $('.header__main-menu__links').slideUp();\r\n }\r\n\r\n $(this).removeClass('show-header-menu');\r\n $('.locations').slideUp();\r\n $('.header__sub-menu').slideUp();\r\n $('.header__main-menu__primary-link').removeClass('open');\r\n\r\n $('.content-access__overlay').removeClass('open');\r\n $('.header__main-menu').removeClass('scroll-hidden');\r\n $('.header__utility-menu').removeClass('scroll-hidden');\r\n subNavClosed();\r\n });\r\n\r\n $('.link--menu, .header__main-menu__group, .header__sub-menu, .header__main-menu__links').on('click', function (e) {\r\n e.stopPropagation();\r\n });\r\n\r\n $(window).resize(function () {\r\n $(\"body\").trigger(\"click\");\r\n\r\n $(this).removeClass('show-header-menu');\r\n //$('.header__main-menu__links').slideToggle(); \r\n $('.locations').slideUp();\r\n $('.header__sub-menu').slideUp();\r\n $('.header__main-menu__links').slideUp();\r\n $('.header__main-menu__primary-link').removeClass('open');\r\n\r\n $('.content-access__overlay').removeClass('open');\r\n $('.header__main-menu').removeClass('scroll-hidden');\r\n $('.header__utility-menu').removeClass('scroll-hidden');\r\n subNavClosed();\r\n });\r\n\r\n // close menu navigation elements if not a click on a sub group\r\n function subNavClosed() {\r\n if ($('body').hasClass('show-header-menu')) {\r\n // do nothing\r\n }\r\n else {\r\n $('html').removeAttr('style');\r\n // clear desktop scrollable_nav class\r\n $('.header__sub-menu').removeClass('scrollable_nav');\r\n // clear mobile scrollable_nav class\r\n $('.header__main-menu__links').removeClass('scrollable_nav');\r\n }\r\n }\r\n});\r\n","var $ = require('jquery');\r\n\r\n$(function () {\r\n $('.link--search').on('click', function (e) {\r\n e.preventDefault();\r\n $('body').toggleClass('show-search').removeClass('show-location-menu');\r\n $('.search').slideToggle();\r\n $('.locations, .header__sub-menu').slideUp();\r\n $('.header__main-menu__primary-link').removeClass('open');\r\n });\r\n $('.link--search, .search').on('click', function (e) {\r\n e.stopPropagation();\r\n });\r\n $('body').on('click', function (e) {\r\n //stopPropagation doesn't work on andriod devices. Need to allow the user to click into the search text bar without closing the menu\r\n if ($(e.target).is('.show-search')) {\r\n return false;\r\n } else {\r\n $(this).removeClass('show-search');\r\n $('.search').slideUp();\r\n }\r\n });\r\n \r\n});\r\n","var $ = require('jquery');\r\n\r\n$(function () {\r\n\r\n var isPageEditor = window.SitecoreUtilities.isPageEditor;\r\n\r\n if (!isPageEditor()) {\r\n var scrollTimer, lastScrollFireTime = 0;\r\n var prevScrollpos = window.pageYOffset;\r\n $(window).scroll(function () {\r\n\r\n if ($('.content-access__overlay').hasClass('open')) {\r\n return;\r\n }\r\n\r\n if ($('body').hasClass('show-location-menu')) {\r\n return;\r\n }\r\n\r\n if ($('body').hasClass('show-header-menu')) {\r\n return;\r\n }\r\n\r\n var minScrollTime = 100;\r\n var now = new Date().getTime();\r\n\r\n\r\n function processScroll() {\r\n if (document.getElementById('header') && document.getElementById('header').scrollHeight) {\r\n var headerHeight = document.getElementById('header').scrollHeight;\r\n var currentScrollPos = window.pageYOffset;\r\n\r\n if (document.getElementById('header').scrollHeight < prevScrollpos) {\r\n //scroll up vs down\r\n if (prevScrollpos >= currentScrollPos) {\r\n document.getElementById('header').style.top = '0px';\r\n } else {\r\n // if the language dropdown is open do not reset the top to a negative number\r\n if (!$('.header__utility-menu div.dropdown-filter.open').length) {\r\n document.getElementById('header').style.top = (headerHeight * -1) + 'px';\r\n }\r\n }\r\n } else {\r\n document.getElementById('header').style.top = '0px';\r\n }\r\n prevScrollpos = currentScrollPos;\r\n }\r\n }\r\n\r\n if (navigator.userAgent.match(/Trident\\/7\\./)) { // if IE\r\n //ie11 keeps firing multiple scroll events that cause inconsistency in scroll height. Have to throttle the events\r\n if (!scrollTimer) {\r\n if (now - lastScrollFireTime > (3 * minScrollTime)) {\r\n processScroll(); // fire immediately on first scroll\r\n lastScrollFireTime = now;\r\n }\r\n scrollTimer = setTimeout(function () {\r\n scrollTimer = null;\r\n lastScrollFireTime = new Date().getTime();\r\n processScroll();\r\n },\r\n minScrollTime);\r\n }\r\n } else {\r\n processScroll();\r\n }\r\n });\r\n }\r\n});\r\n\r\n// set this function to be globally accessible\r\n// navElement - the element that will have class applied to it for inner scrolling\r\n// elementToCheck - the element to compare window height against; if 'desktopMenu' use hard coded 300\r\n// scrollClass - class to add to navElement if scrollbars are needed\r\nwindow.setScrollableNav = function (navElement, elementToCheck, scrollClass) {\r\n // height of the browser window\r\n // Global Menu dynamic scroll Starts\r\n var viewHeight = window.innerHeight;\r\n\r\n var cookieHeight = (document.querySelector(\".cc-banner\")) ? document.querySelector(\".cc-banner\").clientHeight : ((document.querySelector(\".optanon-alert-box-wrapper\")) ? document.querySelector(\".optanon-alert-box-wrapper\").clientHeight : ((document.querySelector(\"#onetrust-banner-sdk\")) ? document.querySelector(\"#onetrust-banner-sdk\").clientHeight : 0));\r\n\r\n if ((!$(\".cc-banner\").hasClass(\"cc-invisible\") && $(\".cc-banner\")) || $('#onetrust-banner-sdk')) {\r\n viewHeight = viewHeight - cookieHeight;\r\n }\r\n\r\n if (document.querySelector(\".locations__countries-wrapper .resp-tab-content-active\") && ((document.querySelector(\".locations__countries-wrapper .resp-tab-content-active\").clientHeight + 200) < viewHeight)) {\r\n $(\".header__utility-menu .locations\").css({ height: \"auto\" });\r\n } else {\r\n $(\".header__utility-menu .locations\").css({ height: (window.innerWidth <= 768 ? \"96vh\" : \"75vh\"), overflow: \"auto\" });\r\n }\r\n // Global Menu dynamic scroll Ends\r\n\r\n // height of the locations html element. this is dependent on the setTimeout to allow the element time to build after css update to be visible\r\n var navHeight = 0;\r\n if (elementToCheck === 'header__sub-menu') {\r\n navElement.removeClass('scrollable_nav');\r\n navHeight = navElement.innerHeight() + 100;\r\n } else {\r\n navHeight = document.getElementsByClassName(elementToCheck)[0].scrollHeight;\r\n }\r\n\r\n // if viewHeight is less than or equal in height to the navHeight add scrollbars\r\n if (viewHeight <= navHeight) {\r\n // set navElement to be scrollable and have a height equal to the window height\r\n $(navElement).addClass(scrollClass);\r\n\r\n // set the navElement's wrapper div to add padding for IE to not cut off the bottom on mobile\r\n if (elementToCheck === 'header__sub-menu' && $('.content-access__overlay').hasClass('open')) {\r\n $('html').css('overflow-y', 'hidden');\r\n $('.header__main-menu').addClass('scroll-hidden');\r\n $('.header__utility-menu').addClass('scroll-hidden');\r\n }\r\n } else {\r\n // reset elements by removing classes\r\n $(navElement).removeClass(scrollClass);\r\n\r\n if (elementToCheck === 'header__sub-menu') {\r\n $('html').removeAttr('style');\r\n }\r\n }\r\n}","var $ = require('jquery');\r\n\r\n$(function () {\r\n $(\".insight-asset-detail .article-header__download\").each(function () {\r\n const $this = $(this);\r\n const downloadUrl = $this.find('a').attr('href');\r\n const downloadTarget = $this.find('a').attr('target') || '';\r\n if (downloadUrl) {\r\n const downloadImage = $this.parent().find('.article-header__image img');\r\n downloadImage.wrap('<a href=\"' + downloadUrl + '\" target=\"' + downloadTarget + '\"></a>');\r\n }\r\n });\r\n}); \r\n","var $ = require('jquery');\r\n\r\n$(function () {\r\n if ($('.accordion-content').length > 0) {\r\n var prevAccordionFromTop = 999999;\r\n var prevAccordionHeight = 0;\r\n var curAccordionHeight = 0;\r\n var moduleNames = new Array(); //list of recorded module names from the querystring\r\n\r\n $('.accordion-content__item').on('click', function (e) {\r\n\r\n var aItem = $(this);\r\n if (aItem.data('no-collapse') !== 1) {\r\n //On activation click, check for other open accordions and begin to close them \r\n CloseOtherAccordions(aItem, false);\r\n\r\n //Next, toggle the clicked tab to either open or close \r\n ToggleAccordion(aItem, false);\r\n }\r\n else { //used for the accordion items in the interests view\r\n $(this).children('.accordion-content__item__title').toggleClass('selected')\r\n .next('.accordion-content__item__content').slideToggle({\r\n start: function () { $(this).css(\"display\", \"inline-block\"); }\r\n });\r\n }\r\n });\r\n\r\n $('.accordion-content__item__content').on('click', function (e) {\r\n e.stopPropagation();\r\n });\r\n\r\n $('.accordion-content').each(function (i) {\r\n var accordionContent = $(this);\r\n var moduleName = accordionContent.data('module-name');\r\n var MoveSelectedTabToFirstElementField = $(accordionContent).data(\"move-selected-accordion\");\r\n var CloseFirstAccordionPaneOnPageLoadField = $(accordionContent).data(\"close-first-accordion\");\r\n var isCloseFirstPane = JSON.parse(CloseFirstAccordionPaneOnPageLoadField.toLowerCase().toString());\r\n var isMoveToFirstPane = JSON.parse(MoveSelectedTabToFirstElementField.toLowerCase().toString());\r\n\r\n var specificTabRequestedViaQueryString = true;\r\n var moduleIndex = $.QueryStringTabActivation(moduleName, accordionContent.find('.accordion-content__item').length);\r\n moduleIndex = parseInt(moduleIndex);\r\n\r\n //if query param is not present or querystringValue > tabCount\r\n if (moduleIndex === 999) {\r\n specificTabRequestedViaQueryString = false;\r\n moduleIndex = 1;\r\n }\r\n\r\n if (moduleNames.indexOf(moduleName) === -1) {\r\n var newAccordionTitle = accordionContent.find('.accordion-content__item__title[data-module-number=\"' + moduleIndex + '\"]');\r\n var newAccordionItem = newAccordionTitle.closest('.accordion-content__item');\r\n\r\n //move activated accordion to top\r\n accordionContent.find('.accordion-content__item').removeClass('orderTop');\r\n newAccordionItem.addClass('orderTop');\r\n\r\n if (!isMoveToFirstPane) {\r\n $(accordionContent).find(\".orderTop\").addClass(\"orderInherit\");\r\n }\r\n\r\n //when moduleIndex =1, no need of accordion toggles as cshtml already handles it\r\n if (moduleIndex !== 1) {\r\n //close all other accordion items\r\n CloseOtherAccordions(newAccordionItem, true);\r\n\r\n //toggle the activated accordion\r\n //prevent accordion from activation if the condition doesnt allow it\r\n if (!(isCloseFirstPane && isMoveToFirstPane) || specificTabRequestedViaQueryString) {\r\n ToggleAccordion(newAccordionItem, true);\r\n }\r\n }\r\n else //moduleIndex=1\r\n {\r\n //when moduleIndex=1 present in query, handle scroll\r\n if (($.QueryString[moduleName] > 0)) {\r\n $.ScrollToLocation(newAccordionItem, 400, true);\r\n }\r\n\r\n if (isCloseFirstPane) {//if module index = 1 and isCloseFirstPane checked, hide the content area of accordion\r\n if (specificTabRequestedViaQueryString) { // unless we specifically asked for tab 1 to be open via querystring, then open it anyway\r\n newAccordionTitle.addClass('selected');\r\n newAccordionItem.children('.accordion-content__item__content').addClass('selected');\r\n } else {\r\n newAccordionItem.children('.accordion-content__item__content').slideUp();\r\n }\r\n }\r\n }\r\n\r\n moduleNames.push(moduleName);\r\n }\r\n });\r\n\r\n function CloseOtherAccordions(accordion, isPageLoad) {\r\n prevAccordionFromTop = 999999;\r\n prevAccordionHeight = 0;\r\n if (accordion.siblings('.accordion-content__item.selected').length > 0) {\r\n accordion.siblings('.accordion-content__item.selected').each(function () {\r\n var openAccordion = $(this);\r\n prevAccordionFromTop = openAccordion[0].offsetTop;\r\n prevAccordionHeight = openAccordion.children('.accordion-content__item__content').height();\r\n openAccordion.children('.accordion-content__item__content').slideToggle({\r\n complete: function () {\r\n openAccordion.removeClass('selected');\r\n openAccordion.children('.accordion-content__item__title').removeClass('selected');\r\n openAccordion.children('.accordion-content__item__content').removeClass('selected')\r\n .removeAttr('style');\r\n\r\n if (isPageLoad) {//on page load, scroll to the activated accordion after closing other accrodions\r\n $.ScrollToLocation(accordion, 400, true);\r\n }\r\n }\r\n });\r\n });\r\n }\r\n else if (isPageLoad) {//on page load, when close first accordion is checked, none of the accordions are activated. So, the scroll logic on complete of slideToggle doesnt trigger. So trigger it now.\r\n $.ScrollToLocation(accordion, 400, true);\r\n }\r\n }\r\n\r\n function ToggleAccordion(accordion, isPageLoad) {\r\n curAccordionHeight = 0;\r\n var curScrollPosition = $(window).scrollTop(); //current scroll position\r\n var windowHeight = $(window).height();\r\n var acordionItemTop = accordion.offset().top;\r\n var curAccordionFromTop = accordion[0].offsetTop;\r\n var manualOffset = 150 - (acordionItemTop - curScrollPosition);\r\n var adjustedScrollPosition = curScrollPosition - prevAccordionHeight - manualOffset;\r\n\r\n accordion.children('.accordion-content__item__content').slideToggle({\r\n start: function () {\r\n\r\n if (isPageLoad === false) {//this part works on click events\r\n\r\n curAccordionHeight = accordion.children('.accordion-content__item__content').height();\r\n /*\r\n Outline of conditions to activate the animation to adjust the scroll position:\r\n 1. The currently open accordion, which should be starting to slideUp, must be higher\r\n on the page than the activated accordion item.\r\n 2. The combined heights of the currently open and activated accordion must be greater\r\n than the height of the window.\r\n 3. Special Case: If the previous accordion and current accordion heights are less\r\n than the window height AND the current scroll position is above the fold, the\r\n scroll should activate. It should not activate if it is within the fold. Currently\r\n this does not work, and the scroll activates in both cases.\r\n */\r\n if (prevAccordionFromTop < curAccordionFromTop) {\r\n if ((curAccordionHeight + prevAccordionHeight) > windowHeight ||\r\n ((curAccordionHeight + prevAccordionHeight) < windowHeight) &&\r\n (curScrollPosition + 100) > prevAccordionFromTop) {\r\n $.AnimatedScroll(adjustedScrollPosition, 400);\r\n }\r\n }\r\n }\r\n },\r\n complete: function () {\r\n accordion.toggleClass('selected');\r\n accordion.children('.accordion-content__item__title').toggleClass('selected');\r\n accordion.children('.accordion-content__item__content').toggleClass('selected').removeAttr('style');\r\n\r\n //if activated accordion's top is above window's scroll position, then the accordion title will not appear in view. \r\n //This happens when activated accordion is higher than currently open accordion\r\n if (accordion.offset().top < ($(window).scrollTop() + $('.header').height())) {\r\n $.ScrollToLocation(accordion, 0, true);\r\n }\r\n }\r\n });\r\n }\r\n }\r\n});\r\n","var $ = require('jquery');\r\n\r\n$(function () {\r\n $('.material-icons--share').on('click', function (e) {\r\n e.preventDefault();\r\n $('body').toggleClass('show-share');\r\n })\r\n});\r\n","var $ = require('jquery');\r\n\r\n$(function () {\r\n // mobile accordion\r\n\r\n $('.tabbed-content__tab-content__group').on('click', function (e) {\r\n if (!$(e.target).closest('.tabbed-content__tab-content__item').length) {\r\n e.preventDefault();\r\n $(this).siblings('.tabbed-content__tab-content__group')\r\n .children('.tabbed-content__tab-content__name').removeClass('selected')\r\n .next('.tabbed-content__tab-content__item').slideUp();\r\n $(this).children('.tabbed-content__tab-content__name').toggleClass('selected')\r\n .next('.tabbed-content__tab-content__item').slideToggle();\r\n $(this).find('.tabbed-list-links__tab-content__item__links__slider').css('display', 'block');\r\n $(this).find('.tabbed-list-links__tab-content__item__links__slider').get(0).slick.setPosition();\r\n }\r\n });\r\n\r\n var tabNames = new Array(); //list of recorded tab names from the querystring\r\n\r\n //Logic for querystring tab activation and default desktop tabs\r\n $('.tabbed-content').each(function () {\r\n var t = $(this);\r\n //desktop tabs default tab\r\n t.find('.tabbed-content__tabs__tab:first').addClass('selected');\r\n t.find('.tabbed-content__tab-content__item:first').addClass('selected');\r\n\r\n //mobile accordion default tab\r\n t.find('.tabbed-content__tab-content .tabbed-content__tab-content__group:first .tabbed-content__tab-content__name').addClass('selected');\r\n t.find('.tabbed-content__tab-content .tabbed-content__tab-content__group:first .tabbed-content__tab-content__item').addClass('selected');\r\n\r\n //desktop tab click event\r\n t.find('.tabbed-content__tabs__tab').click(function () {\r\n var clickedTab = $(this);\r\n var clickedTabId = clickedTab.children().data('tab-id');\r\n var clickedTabContent = t.find('.tabbed-content__tab-content__group')\r\n .children('.tabbed-content__tab-content__item[data-tab-id=\"' + clickedTabId + '\"]');\r\n //deactivate current tab\r\n t.find('.tabbed-content__tabs__tab').removeClass('selected');\r\n t.find('.tabbed-content__tab-content__item').removeClass('selected');\r\n //activate new tab\r\n clickedTab.addClass('selected');\r\n clickedTabContent.addClass('selected');\r\n });\r\n\r\n var tabName = t.data('tab-name');\r\n var tabCount = t.find('.tabbed-content__tabs__tab').length;\r\n var tabIndex = $.QueryStringTabActivation(tabName, tabCount);\r\n if (tabIndex !== 999 && !tabNames.includes(tabName)) {\r\n var newTab = t.find('.tabbed-content__tab__name[data-tab-id=\"' + tabIndex + '\"]');\r\n var newTabContent = t.find('.tabbed-content__tab-content__item[data-tab-id=\"' + tabIndex + '\"]');\r\n var newAccordionTabContent = t.find('.tabbed-content__tab-content__group .tabbed-content__tab-content__item[data-tab-id=\"' + tabIndex + '\"]');\r\n var newAccordionTab = newAccordionTabContent.prev();\r\n //deactivate current desktop tab\r\n t.find('.tabbed-content__tabs__tab.selected').removeClass('selected');\r\n t.find('.tabbed-content__tab-content__item.selected').removeClass('selected');\r\n //deactivate current mobile accordion tab\r\n t.find('.tabbed-content__tab-content__group:first .tabbed-content__tab-content__item').removeClass('selected');\r\n t.find('.tabbed-content__tab-content__group:first .tabbed-content__tab-content__name').removeClass('selected');\r\n //activate new desktop tab\r\n newTab.parent().addClass('selected');\r\n newTabContent.addClass('selected');\r\n //activate new mobile accordion tab\r\n newAccordionTab.addClass('selected');\r\n newAccordionTabContent.addClass('selected');\r\n $.ScrollToLocation(newTabContent, 400, false);\r\n tabNames.push(tabName);\r\n }\r\n });\r\n // mobile link carousel\r\n\r\n $('.tabbed-list-links__tab-content__item__links__slider').slick({\r\n arrows: true,\r\n customPaging: function (slick, index) {\r\n return '<span class=\"number\">' + (index + 1) + '</span>';\r\n },\r\n dots: true,\r\n mobileFirst: true,\r\n slidesToShow: 2,\r\n slidesToScroll: 2,\r\n responsive: [{\r\n breakpoint: 767,\r\n settings: 'unslick'\r\n }],\r\n rtl: window.GenericUtilities.isRTL()\r\n });\r\n // to get slick slider to initialize on screen resize\r\n // https://github.com/kenwheeler/slick/issues/1730\r\n $(window).on('resize orientationchange', function () {\r\n $('.tabbed-list-links__tab-content__item__links__slider').slick('resize');\r\n });\r\n});","var $ = require('jquery');\r\n\r\n$(function () {\r\n $('.datepicker').datepicker();\r\n});\r\n\r\n$(function () {\r\n var formButton,\r\n submitText,\r\n loader;\r\n\r\n formButton = $(\".form__body__submit\");\r\n submitText = formButton.find('.submit-text');\r\n loader = formButton.find('.loader');\r\n\r\n var uniqueSubmitId = '';\r\n var formElement = this.querySelector(\"form\");\r\n var loadFileUpload = false;\r\n\r\n if (formElement) {\r\n var uniqueSubmitIdElement = formElement.querySelector(\"input[name='uniquesubmitid']\");\r\n\r\n if (uniqueSubmitIdElement && uniqueSubmitIdElement.value) {\r\n uniqueSubmitId = uniqueSubmitIdElement.value;\r\n loadFileUpload = true;\r\n }\r\n }\r\n\r\n var isValid = true;\r\n var isProcessing = false;\r\n $(\".form__body__submit\")\r\n .on(\"click\",\r\n function (e) {\r\n e.preventDefault();\r\n\r\n //disable clicks while already submitting\r\n if (isProcessing)\r\n return;\r\n\r\n isProcessing = true;\r\n\r\n if (submitText && loader) {\r\n formButton.addClass('isLoading');\r\n }\r\n\r\n isValid = true;\r\n var formNode = $(this).closest(\"form\");\r\n var formId = formNode.attr(\"id\");\r\n var contextLang = formNode.attr(\"data-contextLang\");\r\n var payload = [];\r\n if ($('.mtcaptcha[data-formid=\"' + formId + '\"]').length) {\r\n let checkCaptcha = new Promise((resolve, reject) => {\r\n let mtcaptchaToken = mtcaptcha.getVerifiedToken();\r\n if (mtcaptchaToken.length === 0) {\r\n reject(false);\r\n\r\n isProcessing = false;\r\n if (submitText && loader) {\r\n formButton.removeClass('isLoading');\r\n }\r\n } else {\r\n $.ajax(\r\n {\r\n url: \"/api/Sitecore/MTCaptchaValidation/MTCaptchaValidation\",\r\n type: \"POST\",\r\n context: this,\r\n data: { token: mtcaptchaToken },\r\n success: function (data) {\r\n resolve(data);\r\n },\r\n error: function (data) {\r\n reject(false);\r\n }\r\n }\r\n );\r\n }\r\n });\r\n //first check captcha, then check the rest\r\n checkCaptcha.then(function () {\r\n parseForm(payload, formNode, formId, contextLang, loadFileUpload);\r\n })\r\n .catch((rejection) => {\r\n checkInvalid($('.mtcaptcha[data-formid=\"' + formId + '\"]'), true, true);\r\n formNode.find(\"[data-isInvalid='true']\")\r\n .each(function () {\r\n $(this).next('.form__field--error').show().parent().addClass('form__field--has-error');\r\n });\r\n });\r\n } else {\r\n parseForm(payload, formNode, formId, contextLang, loadFileUpload);\r\n }\r\n });\r\n\r\n function checkInvalid(domElement, isRequired, secondaryValidator, errorSelector) {\r\n if (isRequired && secondaryValidator) {\r\n isValid = false;\r\n $(domElement).attr('data-isInvalid', 'true');\r\n if (!!errorSelector) {\r\n if ($(domElement).attr('data-is-invalid-selector')) {\r\n $(domElement).attr('data-is-invalid-selector', $(domElement).attr('data-is-invalid-selector') + ',' + errorSelector);\r\n } else {\r\n $(domElement).attr('data-is-invalid-selector', errorSelector);\r\n }\r\n }\r\n }\r\n }\r\n\r\n function parseForm(payload, formNode, formId, contextLang, loadFileUpload) {\r\n var contactQs,\r\n referencePage;\r\n contactQs = $.QueryString[\"contact\"];\r\n if (contactQs) {\r\n var contact = {};\r\n contact[\"contact\"] = contactQs;\r\n payload.push(contact);\r\n }\r\n\r\n referencePage = $.QueryString[\"referencePage\"];\r\n if (referencePage) {\r\n payload.push({ label: \"Reference Page Url\", value: referencePage });\r\n }\r\n\r\n formNode.find(\"[data-formId = '\" + formId + \"']\")\r\n .each(function () {\r\n $(this).attr('data-isInvalid', 'false');\r\n $(this).siblings('.form__field--error').hide();\r\n var currentItem = {};\r\n currentItem[\"label\"] = $(\"label[for='\" + $(this).attr('id') + \"']\").text();\r\n currentItem[\"isEmail\"] = false;\r\n //if its a multi checkbox we need to make an array of checkboxes for each value\r\n if ($(this).hasClass(\"multi-checkbox__checkboxes__container\")) {\r\n currentItem[\"label\"] = $(this).find(\"label\").first().text();\r\n\r\n var multiCheckboxPayload = [];\r\n var anyChecked = false;\r\n $(this)\r\n .find(\"input[type='checkbox']\")\r\n .each(function () {\r\n var checkbox = {};\r\n checkbox[\"label\"] = $(\"label[for='\" + $(this).attr('id') + \"']\").text();\r\n var isChecked = $(this).is(\":checked\");\r\n checkbox[\"value\"] = isChecked;\r\n if (!anyChecked && isChecked) {\r\n anyChecked = isChecked;\r\n }\r\n multiCheckboxPayload.push(checkbox);\r\n });\r\n checkInvalid(this, $(this).data('required'), !anyChecked);\r\n\r\n currentItem[\"multivalue\"] = multiCheckboxPayload;\r\n }\r\n else if ($(this).is(\"select\")) {\r\n var selectedValue = $(this).find(\":selected\").val();\r\n checkInvalid(this, $(this).data('required'), selectedValue === \"_default\");\r\n currentItem[\"value\"] = escapeHtml(selectedValue);\r\n }\r\n //if its a checkbox we just need to know if its checked\r\n else if ($(this).is(':checkbox')) {\r\n var isChecked = $(this).is(\":checked\");\r\n checkInvalid(this, $(this).data('required'), !isChecked);\r\n\r\n currentItem[\"value\"] = isChecked;\r\n }\r\n // if its a div then its captcha, ignore\r\n else if ($(this).is('div')) {\r\n return true;\r\n }\r\n else {\r\n var textValue = $(this).val();\r\n var isRequired = $(this).data('required');\r\n if ($(this).attr('type') === 'email' && isRequired) {\r\n currentItem[\"isEmail\"] = true;\r\n checkInvalid(this, true, textValue.length === 0 || !isEmail(textValue));\r\n }\r\n else if ($(this).attr('type') === 'email' && textValue.length !== 0) {\r\n currentItem[\"isEmail\"] = true;\r\n checkInvalid(this, true, !isEmail(textValue));\r\n }\r\n else {\r\n checkInvalid(this, $(this).data('required'), textValue.length === 0, '[data-required-error]');\r\n checkInvalid(this, $(this).data('regex'), !new RegExp($(this).data('regex')).test(textValue), '[data-regex-error]');\r\n checkInvalid(this, $(this).data('maxChars'), textValue.length > $(this).data('maxChars'), '[data-max-chars-error]');\r\n }\r\n\r\n currentItem[\"value\"] = textValue === '$date' ? '$date:' + new Date() : textValue;\r\n }\r\n payload.push(currentItem);\r\n });\r\n\r\n // Captcha Submit tracking\r\n if (typeof (dataLayer) != 'undefined' && dataLayer != null) {\r\n var mtCaptchaIsVisible = null;\r\n var mtCaptchaIsVerified = null;\r\n\r\n if (typeof (mtcaptcha) != 'undefined' && mtcaptcha != null && mtcaptcha.getStatus() != null) {\r\n mtCaptchaIsVisible = mtcaptcha.getStatus().isVisible;\r\n mtCaptchaIsVerified = mtcaptcha.getStatus().isVerified;\r\n }\r\n\r\n dataLayer.push({ 'event': 'wcmsFormSubmit', 'formIsValid': isValid, 'mtcaptchaIsVerified': mtCaptchaIsVerified, 'mtcaptchaIsVisible': mtCaptchaIsVisible });\r\n }\r\n\r\n if (!isValid) {\r\n formNode.find(\"[data-isInvalid='true']\")\r\n .each(function () {\r\n var $this,\r\n invalidSelector;\r\n\r\n $this = $(this);\r\n invalidSelector = $this.attr('data-is-invalid-selector');\r\n\r\n if (!!invalidSelector) {\r\n $this.siblings(invalidSelector).show().parent().addClass('form__field--has-error');\r\n } else {\r\n $(this).closest('.form__field').addClass('form__field--has-error').find('.form__field--error').show();\r\n }\r\n\r\n $this.attr('data-is-invalid-selector', '');\r\n });\r\n formNode.find(\"[data-isInvalid='false']\").each(function () {\r\n $(this).closest('.form__field').removeClass('form__field--has-error').find('.form__field--error').hide();\r\n });\r\n\r\n isProcessing = false;\r\n if (submitText && loader) {\r\n formButton.removeClass('isLoading');\r\n }\r\n } else {\r\n var dataParams = {};\r\n\r\n if (loadFileUpload) {\r\n dataParams.data = { payload: JSON.stringify(payload), formId: formId, language: contextLang, uniqueSubmitId: uniqueSubmitId };\r\n } else {\r\n dataParams.data = { payload: JSON.stringify(payload), formId: formId, language: contextLang };\r\n }\r\n\r\n $.ajax({\r\n url: \"/api/Sitecore/Form/HandleForm\",\r\n type: \"POST\",\r\n context: this,\r\n data: dataParams.data,\r\n\r\n success: function (data) {\r\n if (data) {\r\n if (data.upload != null && data.upload.length > 0) {\r\n var confirmation = null;\r\n if (formNode.parent().hasClass(\"_501-form__form\")) {\r\n formNode.parents('._501-form__wrapper').children('._501-form__text').hide();\r\n formNode.parents('._501-form__wrapper').children('._501-form__form').hide();\r\n confirmation = document.querySelector(\"._501-form__confirmation[data-formId = '\" + formId + \"']\");\r\n } else {\r\n formNode.hide();\r\n confirmation = document.querySelector(\".custom-form-confirmation\");\r\n }\r\n\r\n if (confirmation) {\r\n createUploadIframe(confirmation, data.upload);\r\n }\r\n }\r\n else if (data.url != null && data.url.length > 0) {\r\n window.location.href = data.url;\r\n } else {\r\n var confirmation = null;\r\n if (formNode.parent().hasClass(\"_501-form__form\")) {\r\n formNode.parents('._501-form__wrapper').children('._501-form__text').hide();\r\n formNode.parents('._501-form__wrapper').children('._501-form__form').hide();\r\n confirmation = $(\"._501-form__confirmation[data-formId = '\" + formId + \"']\");\r\n } else {\r\n formNode.hide();\r\n confirmation = $(\".custom-form-confirmation[data-formId = '\" + formId + \"']\");\r\n }\r\n confirmation.show();\r\n confirmation[0].scrollIntoView();\r\n }\r\n\r\n isProcessing = false;\r\n if (submitText && loader) {\r\n formButton.removeClass('isLoading');\r\n }\r\n } else {\r\n handleError(payload);\r\n }\r\n },\r\n error: handleError(payload)\r\n });\r\n }\r\n }\r\n function handleError(payload) {\r\n $.ajax({\r\n url: \"/api/Sitecore/Form/HandleError\",\r\n type: \"POST\",\r\n context: this,\r\n data: { payload: JSON.stringify(payload) }\r\n });\r\n }\r\n function isEmail(email) {\r\n var regex =\r\n /^(([^<>()[\\]\\\\.,;:\\s@\\\"]+(\\.[^<>()[\\]\\\\.,;:\\s@\\\"]+)*)|(\\\".+\\\"))@((\\[[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\])|(([a-zA-Z\\-0-9]+\\.)+[a-zA-Z]{2,}))$/;\r\n return regex.test(email);\r\n }\r\n var entityMap = {\r\n '&': '&',\r\n '<': '<',\r\n '>': '>',\r\n '\"': '"',\r\n \"'\": ''',\r\n '/': '/',\r\n '`': '`',\r\n '=': '='\r\n };\r\n\r\n function escapeHtml(string) {\r\n return String(string).replace(/[&<>\"'`=\\/]/g, function (s) {\r\n return entityMap[s];\r\n });\r\n }\r\n\r\n function createUploadIframe(confirmation, url) {\r\n const confirmationBody = confirmation.querySelector(\".custom-form-confirmation__body\");\r\n if (confirmationBody) {\r\n window.GenericUtilities.createFileUploadIframe(confirmationBody, url);\r\n confirmation.setAttribute('style', '');\r\n }\r\n }\r\n\r\n $('form').keyup(function (event) {\r\n if (event.keyCode == 13) {\r\n event.preventDefault();\r\n }\r\n });\r\n});","var $ = require('jquery');\r\n\r\n$(function () {\r\n $('.our-firms').each(function() {\r\n var $this,\r\n clearLink;\r\n\r\n $this = $(this);\r\n\r\n var table = $('.our-firms-wrapper');\r\n var allRows = $('.firm-row');\r\n var visibleRows = null;\r\n\r\n $('.service-filter').change(function (e) {\r\n e.preventDefault();\r\n filterTable();\r\n });\r\n\r\n $('.city-filter').change(function (e) {\r\n e.preventDefault();\r\n filterTable();\r\n });\r\n\r\n clearLink = $this.find('[data-clear-filters]');\r\n clearLink.hide();\r\n\r\n clearLink.on('click', function (e) {\r\n\r\n $this.find('input[type=checkbox]:checked').each(function () {\r\n var $this = $(this);\r\n $this.removeAttr('checked');\r\n $this.prop('checked', false);\r\n });\r\n\r\n filterTable();\r\n });\r\n\r\n $('[data-show-more-locations], [data-show-less-locations]').click(function (e) {\r\n e.preventDefault();\r\n $(this).closest('.our-firms__firm__offices')\r\n .find('[data-show-more-locations], [data-show-less-locations], [data-show-more-cities]')\r\n .toggleClass('is-hidden');\r\n });\r\n\r\n function filterTable() {\r\n // Re-attach everything for searching.\r\n if (visibleRows != null) {\r\n visibleRows.detach();\r\n allRows.appendTo(table);\r\n visibleRows = null;\r\n }\r\n\r\n visibleRows = getVisibleRows('service', allRows);\r\n visibleRows = getVisibleRows('city', visibleRows);\r\n\r\n if ($this.find('.service-filter:checked,.city-filter:checked').length)\r\n clearLink.show();\r\n else\r\n clearLink.hide();\r\n\r\n // Detach and re-attach only the visible rows.\r\n allRows.detach();\r\n visibleRows.appendTo(table);\r\n }\r\n\r\n function getVisibleRows(filterName, startingRows) {\r\n var chosenFilterElements = $('.' + filterName + '-filter:checked');\r\n if (chosenFilterElements.length === 0)\r\n return startingRows;\r\n\r\n var endingRows = startingRows.filter(function (idx, element) {\r\n var firmFilterItems = $(element).find('.' + filterName);\r\n\r\n for (var i = 0; i < chosenFilterElements.length; i++) {\r\n var chosenFilterId = $(chosenFilterElements[i]).data(filterName + '-id');\r\n\r\n // Exclude this row if it doesn't have one of the chosen items.\r\n var isFound = false;\r\n for (var fi = 0; fi < firmFilterItems.length; fi++) {\r\n if ($(firmFilterItems[fi]).data(filterName + '-id') === chosenFilterId) {\r\n isFound = true;\r\n break;\r\n }\r\n }\r\n if (!isFound)\r\n return false;\r\n }\r\n return true;\r\n });\r\n\r\n return endingRows;\r\n }\r\n });\r\n});","var $ = require('jquery');\r\n\r\n$(function () {\r\n $('[data-new-list-table]').each(function () {\r\n\r\n var currentPage,\r\n servicesFilters,\r\n industriesFilters,\r\n publicationsFilters,\r\n insightsSubjectsFilters,\r\n itemTypesFilters,\r\n locationsFilters,\r\n authorCategorizationFilters,\r\n makeRequest,\r\n getFilterValues,\r\n dateDesc,\r\n toggleClearLinkVisibility,\r\n clearLink,\r\n scrollToTop,\r\n uncheckAllFilterCheckboxes,\r\n clearAllFilters,\r\n filterDropdownCheckboxes;\r\n\r\n var $this = $(this);\r\n var FilterCheckboxCollection = function () {\r\n return {\r\n services: null,\r\n industries: null,\r\n publications: null,\r\n insightsSubjects: null,\r\n itemTypes: null,\r\n locations: null,\r\n authorCategorization: null\r\n };\r\n }\r\n\r\n filterDropdownCheckboxes = new FilterCheckboxCollection();\r\n filterDropdownCheckboxes.services = $this.find('[data-services]');\r\n filterDropdownCheckboxes.industries = $this.find('[data-industries]');\r\n filterDropdownCheckboxes.publications = $this.find('[data-publications]');\r\n filterDropdownCheckboxes.insightsSubjects = $this.find('[data-insightssubjects]');\r\n filterDropdownCheckboxes.itemTypes = $this.find('[data-itemtypes]');\r\n filterDropdownCheckboxes.locations = $this.find('[data-locations]');\r\n filterDropdownCheckboxes.authorCategorization = $this.find('[data-authorcategorization]');\r\n\r\n var listContainer = $this.find('[data-filtered-list]');\r\n var datasourceId = $this.attr('data-context-item');\r\n var language = $this.attr('data-language');\r\n var isNormal = $this.attr('data-is-normal');\r\n\r\n clearLink = $this.find('[data-clear-filters]');\r\n\r\n // url for GetTable\r\n var apiUrlGetTable = \"/api/sitecore/ListWithFilter/GetTable\"\r\n\r\n // value to check in QS and append to Get URL\r\n var tagName = 'tagname';\r\n var authorId = 'author';\r\n //page tagname querystring\r\n var tagNameQs = $.QueryString[tagName];\r\n var authorIdQs = $.QueryString[authorId]; \r\n // if tagNameQS is not empty or no value append it to the path of the url\r\n if (tagNameQs && tagNameQs != '') {\r\n apiUrlGetTable = apiUrlGetTable + '?' + tagName + '=' + tagNameQs;\r\n } else if (authorIdQs && authorIdQs != '') {\r\n apiUrlGetTable = apiUrlGetTable + '?' + authorId + '=' + authorIdQs;\r\n }\r\n\r\n currentPage = $this.find('.pagination .current').attr('data-page');\r\n var init = function () {\r\n servicesFilters = getFilterValues(filterDropdownCheckboxes.services);\r\n industriesFilters = getFilterValues(filterDropdownCheckboxes.industries);\r\n publicationsFilters = getFilterValues(filterDropdownCheckboxes.publications);\r\n insightsSubjectsFilters = getFilterValues(filterDropdownCheckboxes.insightsSubjects);\r\n itemTypesFilters = getFilterValues(filterDropdownCheckboxes.itemTypes);\r\n locationsFilters = getFilterValues(filterDropdownCheckboxes.locations);\r\n authorCategorizationFilters = getFilterValues(filterDropdownCheckboxes.authorCategorization);\r\n\r\n // Firefox preserves checkbox state on reload.\r\n uncheckAllFilterCheckboxes();\r\n clearAllFilters();\r\n\r\n clearLink.hide();\r\n }\r\n\r\n uncheckAllFilterCheckboxes = function () {\r\n $this.find('input[type=checkbox]:checked').each(function () {\r\n var $this = $(this);\r\n $this.removeAttr('checked');\r\n $this.prop('checked', false);\r\n });\r\n }\r\n clearAllFilters = function () {\r\n servicesFilters = [];\r\n industriesFilters = [];\r\n publicationsFilters = [];\r\n insightsSubjectsFilters = [];\r\n itemTypesFilters = [];\r\n locationsFilters = [];\r\n authorCategorizationFilters = [];\r\n }\r\n\r\n scrollToTop = function () {\r\n // if there is no title do not try to scroll to it\r\n if ($this.find(\".news-list-table__intro-bar__title\").length > 0) {\r\n $('html, body').animate({\r\n scrollTop: $this.find(\".news-list-table__intro-bar__title\").offset().top\r\n }, 500);\r\n }\r\n else if ($this.find(\".news-list-table__table\").length > 0) {\r\n $('html, body').animate({\r\n scrollTop: $this.offset().top\r\n }, 500);\r\n }\r\n };\r\n\r\n makeRequest = function (targetServicesFilters,\r\n targetIndustriesFilters,\r\n targetPublicationsFilters,\r\n targetInsightsSubjectsFilters,\r\n targetItemTypesFilters,\r\n targetLocationsFilters,\r\n targetAuthorCategorizationFilters,\r\n targetPage, dateSortDesc) {\r\n $.ajax({\r\n type: 'GET',\r\n url: apiUrlGetTable,\r\n traditional: true,\r\n data: {\r\n id: datasourceId,\r\n languageName: language,\r\n servicesFilters: targetServicesFilters,\r\n industriesFilters: targetIndustriesFilters,\r\n publicationsFilters: targetPublicationsFilters,\r\n insightsSubjectsFilters: targetInsightsSubjectsFilters,\r\n itemTypesFilters: targetItemTypesFilters,\r\n locationsFilters: targetLocationsFilters,\r\n authorCategorizationFilters: targetAuthorCategorizationFilters,\r\n page: targetPage,\r\n isDateDesc: dateSortDesc,\r\n enforceNormal: isNormal\r\n },\r\n success: function (data) {\r\n listContainer.empty();\r\n listContainer.html(data);\r\n\r\n servicesFilters = targetServicesFilters;\r\n industriesFilters = targetIndustriesFilters;\r\n publicationsFilters = targetPublicationsFilters;\r\n insightsSubjectsFilters = targetInsightsSubjectsFilters;\r\n itemTypesFilters = targetItemTypesFilters;\r\n locationsFilters = targetLocationsFilters;\r\n authorCategorizationFilters = targetAuthorCategorizationFilters;\r\n\r\n currentPage = targetPage;\r\n dateDesc = dateSortDesc;\r\n scrollToTop();\r\n },\r\n error: function () {\r\n },\r\n complete: function () {\r\n }\r\n });\r\n };\r\n\r\n listContainer.on('click', '.pagination', function (e) {\r\n const targetPage = $(e.target).closest('[data-page]').data('page');\r\n if (Number.isInteger(targetPage) && targetPage !== currentPage) {\r\n $(e.target).closest('.news-list-table').find('.loading').addClass('show');\r\n makeRequest(servicesFilters, industriesFilters, publicationsFilters, insightsSubjectsFilters, itemTypesFilters, locationsFilters, authorCategorizationFilters, targetPage, dateDesc);\r\n }\r\n });\r\n\r\n dateDesc = true;\r\n listContainer.on('click', '.sort', function (e) {\r\n makeRequest(servicesFilters, industriesFilters, publicationsFilters, insightsSubjectsFilters, itemTypesFilters, locationsFilters, authorCategorizationFilters, 0, !dateDesc);\r\n listContainer.addClass('sort-selected');\r\n });\r\n\r\n getFilterValues = function (element) {\r\n const checkboxes = element.find('input[type=\"checkbox\"]');\r\n const filteredCheckboxes = checkboxes.filter(':checked');\r\n\r\n var ids = [];\r\n filteredCheckboxes.each(function () {\r\n ids.push($(this).attr('data-id'));\r\n });\r\n\r\n return ids;\r\n };\r\n\r\n toggleClearLinkVisibility = function () {\r\n if (!!getFilterValues(filterDropdownCheckboxes.services).length ||\r\n !!getFilterValues(filterDropdownCheckboxes.industries).length ||\r\n !!getFilterValues(filterDropdownCheckboxes.publications).length ||\r\n !!getFilterValues(filterDropdownCheckboxes.insightsSubjects).length ||\r\n !!getFilterValues(filterDropdownCheckboxes.itemTypes).length ||\r\n !!getFilterValues(filterDropdownCheckboxes.locations).length ||\r\n !!getFilterValues(filterDropdownCheckboxes.authorCategorization).length) {\r\n clearLink.show();\r\n } else {\r\n clearLink.hide();\r\n }\r\n };\r\n\r\n filterDropdownCheckboxes.services.on('click', 'input[type=\"checkbox\"]', function () {\r\n makeRequest(getFilterValues(filterDropdownCheckboxes.services),\r\n industriesFilters, publicationsFilters, insightsSubjectsFilters,\r\n itemTypesFilters, locationsFilters, authorCategorizationFilters, 0, dateDesc);\r\n toggleClearLinkVisibility();\r\n });\r\n\r\n filterDropdownCheckboxes.industries.on('click', 'input[type=\"checkbox\"]', function () {\r\n makeRequest(servicesFilters, getFilterValues(filterDropdownCheckboxes.industries), publicationsFilters, insightsSubjectsFilters, itemTypesFilters, locationsFilters, authorCategorizationFilters, 0, dateDesc);\r\n toggleClearLinkVisibility();\r\n });\r\n\r\n filterDropdownCheckboxes.publications.on('click', 'input[type=\"checkbox\"]', function () {\r\n makeRequest(servicesFilters, industriesFilters, getFilterValues(filterDropdownCheckboxes.publications), insightsSubjectsFilters, itemTypesFilters, locationsFilters, authorCategorizationFilters, 0, dateDesc);\r\n toggleClearLinkVisibility();\r\n });\r\n\r\n filterDropdownCheckboxes.insightsSubjects.on('click', 'input[type=\"checkbox\"]', function () {\r\n makeRequest(servicesFilters, industriesFilters, publicationsFilters, getFilterValues(filterDropdownCheckboxes.insightsSubjects), itemTypesFilters, locationsFilters, authorCategorizationFilters, 0, dateDesc);\r\n toggleClearLinkVisibility();\r\n });\r\n\r\n filterDropdownCheckboxes.itemTypes.on('click', 'input[type=\"checkbox\"]', function () {\r\n makeRequest(servicesFilters, industriesFilters, publicationsFilters, insightsSubjectsFilters, getFilterValues(filterDropdownCheckboxes.itemTypes), locationsFilters, authorCategorizationFilters, 0, dateDesc);\r\n toggleClearLinkVisibility();\r\n });\r\n\r\n filterDropdownCheckboxes.locations.on('click', 'input[type=\"checkbox\"]', function () {\r\n makeRequest(servicesFilters, industriesFilters, publicationsFilters, insightsSubjectsFilters, itemTypesFilters, getFilterValues(filterDropdownCheckboxes.locations), authorCategorizationFilters, 0, dateDesc);\r\n toggleClearLinkVisibility();\r\n });\r\n\r\n filterDropdownCheckboxes.authorCategorization.on('click', 'input[type=\"checkbox\"]', function () {\r\n makeRequest(servicesFilters, industriesFilters, publicationsFilters, insightsSubjectsFilters, itemTypesFilters, locationsFilters, getFilterValues(filterDropdownCheckboxes.authorCategorization), 0, dateDesc);\r\n toggleClearLinkVisibility();\r\n });\r\n\r\n clearLink.on('click', function () {\r\n\r\n uncheckAllFilterCheckboxes();\r\n makeRequest(\r\n getFilterValues(filterDropdownCheckboxes.services),\r\n getFilterValues(filterDropdownCheckboxes.industries),\r\n getFilterValues(filterDropdownCheckboxes.publications),\r\n getFilterValues(filterDropdownCheckboxes.insightsSubjects),\r\n getFilterValues(filterDropdownCheckboxes.itemTypes),\r\n getFilterValues(filterDropdownCheckboxes.locations),\r\n getFilterValues(filterDropdownCheckboxes.authorCategorization), 0, dateDesc);\r\n toggleClearLinkVisibility();\r\n });\r\n\r\n init();\r\n });\r\n});","var $ = require('jquery');\r\n\r\n$(function () {\r\n $('[data-new-grid-table]').each(function () {\r\n var currentPage,\r\n servicesFilters,\r\n industriesFilters,\r\n publicationsFilters,\r\n insightsSubjectsFilters,\r\n itemTypesFilters,\r\n locationsFilters,\r\n authorCategorizationFilters,\r\n makeRequest,\r\n getFilterValues,\r\n dateDesc,\r\n toggleClearLinkVisibility,\r\n clearLink,\r\n scrollToTop,\r\n uncheckAllFilterCheckboxes,\r\n clearAllFilters,\r\n filterDropdownCheckboxes;\r\n\r\n // settings\r\n var dateDesc = true;\r\n var apiUrlGetGrid = '/api/sitecore/FilteredGrid/GetGrid';\r\n // end settings\r\n var $this = $(this);\r\n var FilterCheckboxCollection = function () {\r\n return {\r\n services: null,\r\n industries: null,\r\n publications: null,\r\n insightsSubjects: null,\r\n itemTypes: null,\r\n locations: null,\r\n authorCategorization: null\r\n };\r\n }\r\n var $this = $(this);\r\n\r\n filterDropdownCheckboxes = new FilterCheckboxCollection();\r\n filterDropdownCheckboxes.services = $this.find('[data-services]');\r\n filterDropdownCheckboxes.industries = $this.find('[data-industries]');\r\n filterDropdownCheckboxes.publications = $this.find('[data-publications]');\r\n filterDropdownCheckboxes.insightsSubjects = $this.find('[data-insightssubjects]');\r\n filterDropdownCheckboxes.itemTypes = $this.find('[data-itemtypes]');\r\n filterDropdownCheckboxes.locations = $this.find('[data-locations]');\r\n filterDropdownCheckboxes.authorCategorization = $this.find('[data-authorcategorization]');\r\n\r\n var gridContainer = $this.find('[data-filtered-grid]');\r\n var datasourceId = $this.attr('data-context-item');\r\n var language = $this.attr('data-language');\r\n var isNormal = $this.attr('data-is-normal');\r\n\r\n clearLink = $this.find('[data-clear-filters]');\r\n\r\n\r\n // value to check in QS and append to Get URL\r\n var tagName = 'tagname';\r\n //page tagname querystring\r\n var tagNameQs = $.QueryString[tagName];\r\n // if tagNameQS is not empty or no value append it to the path of the url\r\n if (tagNameQs && tagNameQs != '') {\r\n apiUrlGetGrid = apiUrlGetGrid + '?' + tagName + '=' + tagNameQs;\r\n }\r\n\r\n currentPage = $this.find('.pagination .current').attr('data-page');\r\n\r\n var init = function () {\r\n servicesFilters = getFilterValues(filterDropdownCheckboxes.services);\r\n industriesFilters = getFilterValues(filterDropdownCheckboxes.industries);\r\n publicationsFilters = getFilterValues(filterDropdownCheckboxes.publications);\r\n insightsSubjectsFilters = getFilterValues(filterDropdownCheckboxes.insightsSubjects);\r\n itemTypesFilters = getFilterValues(filterDropdownCheckboxes.itemTypes);\r\n locationsFilters = getFilterValues(filterDropdownCheckboxes.locations);\r\n authorCategorizationFilters = getFilterValues(filterDropdownCheckboxes.authorCategorization);\r\n\r\n // Firefox preserves checkbox state on reload.\r\n uncheckAllFilterCheckboxes();\r\n clearAllFilters();\r\n\r\n clearLink.hide();\r\n }\r\n\r\n uncheckAllFilterCheckboxes = function () {\r\n $this.find('input[type=checkbox]:checked').each(function () {\r\n var $this = $(this);\r\n $this.removeAttr('checked');\r\n $this.prop('checked', false);\r\n });\r\n }\r\n clearAllFilters = function () {\r\n servicesFilters = [];\r\n industriesFilters = [];\r\n publicationsFilters = [];\r\n insightsSubjectsFilters = [];\r\n itemTypesFilters = [];\r\n locationsFilters = [];\r\n authorCategorizationFilters = [];\r\n }\r\n\r\n scrollToTop = function () {\r\n $('html, body').animate({\r\n scrollTop: $this.find('.grid-table-scrollTop').offset().top - 100\r\n }, 500);\r\n };\r\n\r\n makeRequest = function (targetServicesFilters,\r\n targetIndustriesFilters,\r\n targetPublicationsFilters,\r\n targetInsightsSubjectsFilters,\r\n targetItemTypesFilters,\r\n targetLocationsFilters,\r\n targetAuthorCategorizationFilters,\r\n targetPage, dateSortDesc) {\r\n var loadingElement = $this.find('.loading');\r\n loadingElement.addClass('show');\r\n $.ajax({\r\n type: 'GET',\r\n url: apiUrlGetGrid,\r\n traditional: true,\r\n data: {\r\n id: datasourceId,\r\n languageName: language,\r\n servicesFilters: targetServicesFilters,\r\n industriesFilters: targetIndustriesFilters,\r\n publicationsFilters: targetPublicationsFilters,\r\n insightsSubjectsFilters: targetInsightsSubjectsFilters,\r\n itemTypesFilters: targetItemTypesFilters,\r\n locationsFilters: targetLocationsFilters,\r\n authorCategorizationFilters: targetAuthorCategorizationFilters,\r\n page: targetPage,\r\n isDateDesc: dateSortDesc,\r\n enforceNormal: isNormal\r\n },\r\n success: function (data) {\r\n gridContainer.empty();\r\n gridContainer.html(data);\r\n\r\n servicesFilters = targetServicesFilters;\r\n industriesFilters = targetIndustriesFilters;\r\n publicationsFilters = targetPublicationsFilters;\r\n insightsSubjectsFilters = targetInsightsSubjectsFilters;\r\n itemTypesFilters = targetItemTypesFilters;\r\n locationsFilters = targetLocationsFilters;\r\n authorCategorizationFilters = targetAuthorCategorizationFilters;\r\n\r\n currentPage = targetPage;\r\n dateDesc = dateSortDesc;\r\n scrollToTop();\r\n loadingElement.removeClass('show');\r\n },\r\n error: function () {\r\n },\r\n complete: function () {\r\n }\r\n });\r\n };\r\n\r\n gridContainer.on('click', '.pagination', function (e) {\r\n const targetPage = $(e.target).closest('[data-page]').data('page');\r\n if (Number.isInteger(targetPage) && targetPage !== currentPage) {\r\n //Enable when ready to use loading icon\r\n makeRequest(servicesFilters, industriesFilters, publicationsFilters, insightsSubjectsFilters, itemTypesFilters, locationsFilters, authorCategorizationFilters, targetPage, dateDesc);\r\n }\r\n });\r\n\r\n getFilterValues = function (element) {\r\n const checkboxes = element.find('input[type=\"checkbox\"]');\r\n const filteredCheckboxes = checkboxes.filter(':checked');\r\n\r\n var ids = [];\r\n filteredCheckboxes.each(function () {\r\n ids.push($(this).attr('data-id'));\r\n });\r\n\r\n return ids;\r\n };\r\n\r\n\r\n toggleClearLinkVisibility = function () {\r\n if (!!getFilterValues(filterDropdownCheckboxes.services).length ||\r\n !!getFilterValues(filterDropdownCheckboxes.industries).length ||\r\n !!getFilterValues(filterDropdownCheckboxes.publications).length ||\r\n !!getFilterValues(filterDropdownCheckboxes.insightsSubjects).length ||\r\n !!getFilterValues(filterDropdownCheckboxes.itemTypes).length ||\r\n !!getFilterValues(filterDropdownCheckboxes.locations).length ||\r\n !!getFilterValues(filterDropdownCheckboxes.authorCategorization).length) {\r\n clearLink.show();\r\n } else {\r\n clearLink.hide();\r\n }\r\n };\r\n\r\n filterDropdownCheckboxes.services.on('click', 'input[type=\"checkbox\"]', function () {\r\n makeRequest(getFilterValues(filterDropdownCheckboxes.services), industriesFilters, publicationsFilters, insightsSubjectsFilters, itemTypesFilters, locationsFilters, authorCategorizationFilters, 0, dateDesc);\r\n toggleClearLinkVisibility();\r\n });\r\n\r\n filterDropdownCheckboxes.industries.on('click', 'input[type=\"checkbox\"]', function () {\r\n makeRequest(servicesFilters, getFilterValues(filterDropdownCheckboxes.industries), publicationsFilters, insightsSubjectsFilters, itemTypesFilters, locationsFilters, authorCategorizationFilters, 0, dateDesc);\r\n toggleClearLinkVisibility();\r\n });\r\n\r\n filterDropdownCheckboxes.publications.on('click', 'input[type=\"checkbox\"]', function () {\r\n makeRequest(servicesFilters, industriesFilters, getFilterValues(filterDropdownCheckboxes.publications), insightsSubjectsFilters, itemTypesFilters, locationsFilters, authorCategorizationFilters, 0, dateDesc);\r\n toggleClearLinkVisibility();\r\n });\r\n\r\n filterDropdownCheckboxes.insightsSubjects.on('click', 'input[type=\"checkbox\"]', function () {\r\n makeRequest(servicesFilters, industriesFilters, publicationsFilters, getFilterValues(filterDropdownCheckboxes.insightsSubjects), itemTypesFilters, locationsFilters, authorCategorizationFilters, 0, dateDesc);\r\n toggleClearLinkVisibility();\r\n });\r\n\r\n filterDropdownCheckboxes.itemTypes.on('click', 'input[type=\"checkbox\"]', function () {\r\n makeRequest(servicesFilters, industriesFilters, publicationsFilters, insightsSubjectsFilters, getFilterValues(filterDropdownCheckboxes.itemTypes), locationsFilters, authorCategorizationFilters, 0, dateDesc);\r\n toggleClearLinkVisibility();\r\n });\r\n\r\n filterDropdownCheckboxes.locations.on('click', 'input[type=\"checkbox\"]', function () {\r\n makeRequest(servicesFilters, industriesFilters, publicationsFilters, insightsSubjectsFilters, itemTypesFilters, getFilterValues(filterDropdownCheckboxes.locations), authorCategorizationFilters, 0, dateDesc);\r\n toggleClearLinkVisibility();\r\n });\r\n\r\n filterDropdownCheckboxes.authorCategorization.on('click', 'input[type=\"checkbox\"]', function () {\r\n makeRequest(servicesFilters, industriesFilters, publicationsFilters, insightsSubjectsFilters, itemTypesFilters, locationsFilters, getFilterValues(filterDropdownCheckboxes.authorCategorization), 0, dateDesc);\r\n toggleClearLinkVisibility();\r\n });\r\n\r\n clearLink.on('click', function () {\r\n uncheckAllFilterCheckboxes();\r\n makeRequest(getFilterValues(filterDropdownCheckboxes.services), getFilterValues(filterDropdownCheckboxes.industries), getFilterValues(filterDropdownCheckboxes.publications), getFilterValues(filterDropdownCheckboxes.insightsSubjects), getFilterValues(filterDropdownCheckboxes.itemTypes), getFilterValues(filterDropdownCheckboxes.locations), getFilterValues(filterDropdownCheckboxes.authorCategorization), 0, dateDesc);\r\n toggleClearLinkVisibility();\r\n });\r\n\r\n init();\r\n });\r\n});","var $ = require('jquery');\r\n\r\n$(function () {\r\n $(\".contextual-contact__contact-directory__view-more a, .contextual-contact__contact-directory__view-less a\").on(\"click\",\r\n function(e) {\r\n e.preventDefault();\r\n\r\n var parentDiv = $(this).closest(\".row\");\r\n parentDiv.find(\".contextual-contact__contact-directory__view-more\").toggle();\r\n parentDiv.find(\".contextual-contact__contact-directory__view-less\").toggle();\r\n parentDiv.find(\".contextual-contact__contact-directory__view-more-wrapper\").toggleClass('view-more-toggled');\r\n });\r\n});","var $ = require('jquery');\r\n\r\n$(function () {\r\n if ($('[data-is-report-page]').length) {\r\n $('[data-report-url]').click(function (e) {\r\n var $this,\r\n loader,\r\n output;\r\n\r\n $this = $(this);\r\n\r\n loader = $this.closest('form').find('.loading-overlay');\r\n\r\n output = $('[data-output]');\r\n\r\n if (!loader.hasClass('hidden'))\r\n return;\r\n\r\n loader.removeClass('hidden');\r\n\r\n var reportUrl = $this.attr('data-report-url');\r\n\r\n $.ajax(\r\n {\r\n url: reportUrl,\r\n type: \"POST\",\r\n success: function (data) {\r\n if (!data) {\r\n output.innerHTML = 'Data unknown';\r\n return;\r\n }\r\n\r\n if (!!data.Data && !!data.Data.length) {\r\n var filename = $this.attr('data-report-name');\r\n\r\n //https://stackoverflow.com/a/44869314/2597149\r\n if (navigator.msSaveBlob) { // IE 10+ \r\n navigator.msSaveBlob(new Blob([data.Data], { type: 'text/csv;charset=utf-8;' }), filename);\r\n } else {\r\n var encodedUri = encodeURI('data:text/csv;charset=utf-8,' + data.Data);\r\n var link = document.createElement(\"a\");\r\n link.setAttribute(\"href\", encodedUri);\r\n link.setAttribute(\"download\", filename);\r\n document.body.appendChild(link); // Required for FF\r\n\r\n link.click();\r\n }\r\n }\r\n\r\n if (data.Message && $('input[name=\"verbose\"]:checked').length) {\r\n output.html(data.Message);\r\n } else if (data.Success) {\r\n output.html('Task complete');\r\n } else {\r\n output.html('Task complete with errors. Please see the logs.');\r\n }\r\n },\r\n error: function (data) {\r\n output.html('An error has occurred.');\r\n },\r\n complete: function (e) {\r\n loader.addClass('hidden');\r\n }\r\n });\r\n });\r\n }\r\n});","var $ = require('jquery');\r\n\r\n$(function () {\r\n\r\n var queryString = window.location.search;\r\n var urlParams = new URLSearchParams(queryString);\r\n\r\n var loadingdiv = document.querySelector('#loadingDiv');\r\n var containerError = document.querySelector('#containerError');\r\n\r\n if ($(\".search-page__submit\").length > 0 && window.location.href.indexOf('/search') != -1) {\r\n if (queryString) {\r\n if (!urlParams.get('q')) {\r\n loadingdiv.classList.remove('show');\r\n\t\t\t}\r\n } else {\r\n loadingdiv.classList.remove('show');\r\n\t\t}\r\n }\r\n\r\n var page = 1;\r\n var firmPage = 1;\r\n var contentPaginated = false;\r\n var firmPaginated = false;\r\n var cityIds = [];\r\n var serviceIds = [];\r\n var filterResults = function () {\r\n var checkedServices = $('[data-services]').find(\"input:checked\"); \r\n var payload = $($(\".search-page__submit\").siblings(\".search-page__textbox\"))[0].value; \r\n serviceIds = [];\r\n \r\n checkedServices.each(function () {\r\n serviceIds.push($(this).data(\"id\"));\r\n });\r\n if (serviceIds.length > 0) {\r\n $(\".dropdown-filter-clear\").show();\r\n $(\".firm-results__filter__filters__label\").hide();\r\n } else {\r\n $(\".dropdown-filter-clear\").hide();\r\n $(\".firm-results__filter__filters__label\").show();\r\n }\r\n $.ajax(\r\n {\r\n url: \"/api/Sitecore/SearchPage/HandleFilterSubmit\",\r\n type: \"POST\",\r\n context: this,\r\n data: {\r\n payload: payload,\r\n page: firmPage,\r\n pageSize: $(\".search-page\").data(\"firm-page-size\"),\r\n contextId: $(\".search-page\").data(\"page-id\"),\r\n contextLang: $(\".search-page\").data(\"page-language\") || $('html').attr('lang'),\r\n checkedServices: serviceIds\r\n },\r\n success: function (data) {\r\n $(\".firm-results__results-container\").replaceWith(data.firmResults);\r\n $(\".firm-results__filter__count-wrapper\").replaceWith(data.counter);\r\n $(\".firm-results__filter__result-count--initial\").hide();\r\n },\r\n error: function (data) {\r\n console.error(data);\r\n }\r\n });\r\n }\r\n\r\n var changeFirmPage = function () {\r\n var payload = $($(\".search-page__submit\").siblings(\".search-page__textbox\"))[0].value;\r\n window.history.pushState(payload, payload, window.location.pathname + \"?q=\" + payload + \"&fpage=\" + firmPage);\r\n $.ajax(\r\n {\r\n url: \"/api/Sitecore/SearchPage/HandleFirmPage\",\r\n type: \"POST\",\r\n context: this,\r\n data: {\r\n payload: payload,\r\n firmPage: firmPage,\r\n firmPageSize: $(\".search-page\").data(\"firm-page-size\"),\r\n contextId: $(\".search-page\").data(\"page-id\")\r\n },\r\n success: function (data) {\r\n if (data.error) {\r\n console.error(\"an error occured \" + data.errorMessage);\r\n return;\r\n }\r\n $(\".firm-results__results-container\").replaceWith(data.firmResults);\r\n $(\".firm-results__filter__count-wrapper\").replaceWith(data.counter);\r\n $(\".firm-results__filter__result-count--initial\").hide();\r\n\r\n },\r\n error: function (data) {\r\n console.error(data);\r\n }\r\n });\r\n \r\n \r\n }\r\n //enter press for header search\r\n $(\".search__textbox\").on(\"keypress\",\r\n function(e) {\r\n if (e.keyCode === 13) {\r\n $(\".search__button\").click();\r\n }\r\n }\r\n );\r\n //header search button click\r\n $(\".search__button\").on(\"click\",\r\n function(e) {\r\n e.preventDefault();\r\n var searchpage = $(this).closest(\".search\").data(\"search-page\");\r\n var searchTest = encodeURI($($(this).siblings(\".search__textbox\"))[0].value);\r\n window.location = searchpage + \"?q=\" + searchTest;\r\n }\r\n );\r\n\r\n //enter press for search page\r\n $(\".search-page__textbox\").on(\"keypress\",\r\n function (e) {\r\n if (e.keyCode === 13) {\r\n $(\".search-page__submit\").click();\r\n }\r\n }\r\n );\r\n\r\n //search page search function\r\n $(\".search-page__submit\").on(\"click\", function (e) {\r\n showLoadingImg(true);\r\n submitSearch(e, true);\r\n });\r\n\r\n function submitSearch(e, resetPageNumber) { \r\n if (!!resetPageNumber) {\r\n page = 1;\r\n }\r\n if(!!e){ e.preventDefault();}\r\n var payload = $($(\".search-page__submit\").siblings(\".search-page__textbox\"))[0].value;\r\n containerError.classList.add('hide');\r\n\r\n //update the url so backbutton works\r\n if (payload.length > 0) {\r\n if (contentPaginated) {\r\n window.history.pushState(payload,\r\n payload,\r\n window.location.pathname + \"?q=\" + payload + \"&page\" + page);\r\n }\r\n if (firmPaginated) {\r\n window.history.pushState(payload,\r\n payload,\r\n window.location.pathname + \"?q=\" + payload + \"&page=\" + firmPage);\r\n } else {\r\n window.history.pushState(payload,\r\n payload,\r\n window.location.pathname + \"?q=\" + payload);\r\n }\r\n var isFirmSearch = $(\".firm-results:visible\").length > 0;\r\n $.ajax(\r\n {\r\n url: \"/api/Sitecore/SearchPage/HandleSearchSubmit\",\r\n type: \"POST\",\r\n context: this,\r\n data: {\r\n payload: payload,\r\n page: page,\r\n firmPage: firmPage,\r\n pageSize: $(\".search-page\").data(\"page-size\"),\r\n firmPageSize: $(\".search-page__submit\").closest(\".search-page\").data(\"firm-page-size\"),\r\n contextId: $(\".search-page\").data(\"page-id\"),\r\n contextLang: $(\".search-page\").data(\"page-language\") || $('html').attr('lang'),\r\n isFirm: isFirmSearch\r\n },\r\n success: function(data) {\r\n if (data.error) {\r\n console.error(\"an error occured \" + data.errorMessage);\r\n return;\r\n }\r\n var queryLabel = $(\".search-query__container\").data(\"query-label\").replace(\"{query}\", payload);\r\n $(\".search-query__container\").html(queryLabel);\r\n\r\n if (!!data.suggestion) {\r\n var search = window.location.href;\r\n var replace = search.replace(\"q=\" + encodeURIComponent(payload), \"q=\" + encodeURIComponent(data.suggestion));\r\n\r\n $(\".search-criteria__suggestion\").show();\r\n $(\".search-criteria__suggestion-link\").attr(\"href\", replace);\r\n $(\".search-criteria__suggestion-link\").text(data.suggestion);\r\n\r\n\r\n } else {\r\n $(\".search-criteria__suggestion\").hide();\r\n }\r\n\r\n $(\".content-results\").replaceWith(data.contentResults);\r\n $(\".content-results\").show();\r\n if (isFirmSearch) {\r\n $(\".firm-results\").replaceWith(data.firmResults);\r\n $(\".firm-results\").show();\r\n $(\".search-result-tabs\").show();\r\n }\r\n if (contentPaginated) {\r\n $(\".search-result-tabs__content\").click();\r\n }\r\n else if (firmPaginated) {\r\n $(\".search-result-tabs__firms\").click();\r\n } else {\r\n $(\".search-result-tabs__all\").click();\r\n }\r\n },\r\n error: function (data) {\r\n if (data.status == 500 && data.statusText == \"error\") {\r\n $(\".search-query__container\").html(\"\");\r\n $(\".search-result-tabs\").hide();\r\n $(\".content-results\").hide();\r\n $(\".firm-results\").hide();\r\n containerError.classList.remove('hide');\r\n loadingdiv.classList.remove('show');\r\n\t\t\t\t\t\t}\r\n console.error(data);\r\n }\r\n }); \r\n } else {\r\n $(\".search-result-tabs\").hide();\r\n $(\".content-results\").hide();\r\n $(\".firm-results\").hide();\r\n $(\".firm-results__results--extra\").hide();\r\n $(\".search-query__container\").html(\"\");\r\n window.history.pushState(\"\", \"\", window.location.pathname);\r\n }\r\n }\r\n\r\n //filter results when a filter is clicked\r\n $(\"body\").on(\"change\",\r\n \".firm-results__filter__filters .form__field--checkbox\",\r\n function () {\r\n firmPage = 1;\r\n $(\".search-result-tabs__firms\").click();\r\n filterResults();\r\n });\r\n //clear results when clear is clicked\r\n $(\"body\").on(\"click\",\r\n \".dropdown-filter-clear\",\r\n function (e) {\r\n e.preventDefault();\r\n firmPage = 1;\r\n cityIds = [];\r\n serviceIds = [];\r\n $(\".firm-results__filter__filters .form__field--checkbox input:checked\").prop('checked', false);\r\n filterResults();\r\n });\r\n //enter press for search page\r\n $(\".search-page__textbox\").on(\"keypress\",\r\n function(e) {\r\n if (e.keyCode === 13) {\r\n submitSearch(null, true);\r\n $(\".search-page__textbox\").blur();\r\n }\r\n }\r\n );\r\n\r\n //search if on search page and querystring is filled in \r\n if ($(\".search-page__textbox\").length > 0 && $.QueryString[\"q\"]) {\r\n if ($.QueryString[\"page\"] && $.isNumeric($.QueryString[\"page\"])) {\r\n page = Number.parseInt($.QueryString[\"page\"]);\r\n }\r\n $(\".search-page__textbox\").val($.QueryString[\"q\"]);\r\n submitSearch(null, false);\r\n }\r\n\r\n //All Tab Clicked\r\n $(\".search-result-tabs__all\").on(\"click\",\r\n function(e) {\r\n e.preventDefault();\r\n $(this).addClass(\"active\").siblings().removeClass(\"active\");\r\n $(\".content-results\").show();\r\n $(\".firm-results\").show();\r\n $(\".firm-results__results--extra\").hide();\r\n $(\".firm-results__filter__result-count--initial\").show();\r\n $(\".firm-results__filter__result-count--extra\").hide();\r\n $(\".firm-results__show-more\").show();\r\n $(\".firm-results__pagination\").hide();\r\n page = 1;\r\n firmPage = 1;\r\n contentPaginated = false;\r\n //if we're beyond page 1 for firm results reset back\r\n if (firmPaginated) {\r\n firmPaginated = false;\r\n submitSearch(null, false);\r\n }\r\n }\r\n );\r\n //See More Firms trigger\r\n $(\"body\").on(\"click\", \".firm-results__show-more a\",\r\n\r\n function(e) {\r\n e.preventDefault();\r\n $(\".search-result-tabs__firms\").click();\r\n }\r\n );\r\n //Firm Tab Clicked\r\n $(\".search-result-tabs__firms\").on(\"click\",\r\n function (e) {\r\n e.preventDefault();\r\n $(this).addClass(\"active\").siblings().removeClass(\"active\");\r\n $(\".content-results\").hide();\r\n $(\".firm-results\").show();\r\n $(\".firm-results__results--extra\").show();\r\n $(\".firm-results__filter__result-count--initial\").hide();\r\n $(\".firm-results__filter__result-count--extra\").show();\r\n $(\".firm-results__show-more\").hide();\r\n $(\".firm-results__pagination\").show();\r\n }\r\n );\r\n\r\n //Content Tab Clicked\r\n $(\".search-result-tabs__content\").on(\"click\",\r\n function (e) {\r\n e.preventDefault();\r\n $(this).addClass(\"active\").siblings().removeClass(\"active\");\r\n $(\".content-results\").show();\r\n $(\".firm-results\").hide();\r\n $(\".firm-results__results--extra\").hide();\r\n }\r\n );\r\n var scrollSpeed = 500;\r\n var scrollToTopOfResults = function () {\r\n $('html, body').animate({\r\n scrollTop: $(\".content-results\").offset().top\r\n }, scrollSpeed);\r\n };\r\n\r\n //Content pagination code\r\n $(\"body\").on(\"click\", \".content-results__pagination__page\",\r\n function (e) {\r\n e.preventDefault();\r\n $(\".search-result-tabs__content\").click();\r\n firmPage = 1;\r\n contentPaginated = true;\r\n firmPaginated = false;\r\n $(\".content-results__results .loading\").addClass(\"show\");\r\n page = $(this).data(\"page\");\r\n submitSearch(null, false);\r\n scrollToTopOfResults();\r\n }\r\n );\r\n $(\"body\").on(\"click\", \".content-results__pagination .left\",\r\n function (e) {\r\n e.preventDefault();\r\n contentPaginated = true;\r\n firmPaginated = false;\r\n $(\".search-result-tabs__content\").click();\r\n $(\".content-results__results .loading\").addClass(\"show\");\r\n page = page - 1;\r\n submitSearch(null, false);\r\n scrollToTopOfResults();\r\n }\r\n );\r\n $(\"body\").on(\"click\", \".content-results__pagination .right\",\r\n function (e) {\r\n e.preventDefault();\r\n contentPaginated = true;\r\n firmPaginated = false;\r\n $(\".search-result-tabs__content\").click();\r\n $(\".content-results__results .loading\").addClass(\"show\");\r\n page = page + 1;\r\n submitSearch(null, false);\r\n scrollToTopOfResults();\r\n }\r\n );\r\n\r\n //firm pagination code\r\n $(\"body\").on(\"click\", \".firm-results__pagination__page\",\r\n function (e) {\r\n e.preventDefault();\r\n page = 1;\r\n contentPaginated = false;\r\n firmPaginated = true;\r\n firmPage = $(this).data(\"page\");\r\n if (cityIds.length > 0 || serviceIds.length > 0) {\r\n filterResults();\r\n } else {\r\n changeFirmPage();\r\n }\r\n scrollToTopOfResults();\r\n }\r\n );\r\n $(\"body\").on(\"click\", \".firm-results__pagination .left\",\r\n function (e) {\r\n e.preventDefault();\r\n firmPage = firmPage - 1;\r\n contentPaginated = false;\r\n firmPaginated = true;\r\n if (cityIds.length > 0 || serviceIds.length > 0) {\r\n filterResults();\r\n } else {\r\n changeFirmPage();\r\n }\r\n scrollToTopOfResults();\r\n }\r\n );\r\n $(\"body\").on(\"click\", \".firm-results__pagination .right\",\r\n function (e) {\r\n e.preventDefault();\r\n contentPaginated = false;\r\n firmPaginated = true;\r\n firmPage = firmPage + 1; \r\n if (cityIds.length > 0 || serviceIds.length > 0) {\r\n filterResults();\r\n } else {\r\n changeFirmPage();\r\n }\r\n scrollToTopOfResults();\r\n }\r\n );\r\n //city overlay code\r\n $(\"body\").on(\"click\", \".firm-results__results__result__cities\", function(e) {\r\n e.preventDefault();\r\n var id = $(this).data(\"firm-id\");\r\n $.ajax(\r\n {\r\n url: \"/api/Sitecore/SearchPage/CityResults\",\r\n type: \"POST\",\r\n context: this,\r\n data: {\r\n firmId: id,\r\n searchPageId: $(\".search-page\").data(\"page-id\")\r\n },\r\n success: function (data) {\r\n $.fancybox.open({\r\n src: data,\r\n type: 'html'\r\n });\r\n },\r\n error: function (data) {\r\n console.error(data);\r\n }\r\n });\r\n });\r\n\r\n //autocomplete for search\r\n $(function () {\r\n $(\".autocomplete\").each(function (index, currentInputBox) {\r\n $(currentInputBox).autocomplete({\r\n delay: $(currentInputBox).data(\"autocomplete-delay\"),\r\n minLength: $(currentInputBox).data(\"autocomplete-min\"),\r\n source: function(request, response) {\r\n $.ajax({\r\n url: \"/api/Sitecore/SearchPage/GetAutocompleteSuggestions\",\r\n type: \"POST\",\r\n dataType: \"json\",\r\n data: {\r\n searchTerm: request.term,\r\n contextID: $(currentInputBox).data(\"page-id\"),\r\n language: $(\".search-page\").data(\"page-language\") || $('html').attr('lang'),\r\n },\r\n success: function(data) {\r\n response(data);\r\n }\r\n });\r\n },\r\n select: function(event, ui) {\r\n event.target.value = stripHTML(ui.item.value);\r\n $(currentInputBox).next(\"button\").click();\r\n event.stopPropagation();\r\n },\r\n focus: function (event, ui) {\r\n ui.item.value = stripHTML(ui.item.value);\r\n event.stopPropagation();\r\n },\r\n appendTo: $(currentInputBox).data(\"autocomplete-container\")\r\n }).data(\"ui-autocomplete\")._renderItem = autoCompleteRender;\r\n });\r\n });\r\n\r\n function autoCompleteRender(ul, item) {\r\n var searchTerm = this.term;\r\n var itemLabel = item.label;\r\n itemLabel = itemLabel.replace(new RegExp(\"(\" + searchTerm + \")\", \"gi\"), '$1');\r\n return $(\"<li></li>\").data(\"item.autocomplete\", item).append(\"<a><i class='material-icons material-icons--search'>search</i>\" + itemLabel + \"</a>\").appendTo(ul);\r\n }\r\n\r\n function stripHTML(oldString) {\r\n return oldString.replace(/<(?:.|\\n)*?>/gm, '');\r\n }\r\n\r\n // based on true / false either show the loading at the top or hide it and remove top class\r\n function showLoadingImg(showLoading)\r\n {\r\n if (showLoading) {\r\n $(\".content-results__results .loading\").addClass(\"show\");\r\n $(\".content-results__results .loading img\").addClass(\"top\");\r\n }\r\n else {\r\n $(\".content-results__results .loading\").removeClass(\"show\");\r\n $(\".content-results__results .loading img\").removeClass(\"top\");\r\n }\r\n }\r\n});\r\n","var $ = require('jquery');\r\n\r\n$(function () {\r\n $('.product-navigation__list--mobile').slick({\r\n arrows: true,\r\n centerMode: false,\r\n centerPadding: '30px',\r\n mobileFirst: true,\r\n responsive: [{\r\n breakpoint: 767,\r\n settings: 'unslick'\r\n }],\r\n rtl: window.GenericUtilities.isRTL()\r\n });\r\n \r\n // to get slick slider to initialize on screen resize\r\n // https://github.com/kenwheeler/slick/issues/1730\r\n $(window).on('resize orientationchange', function () {\r\n $('.product-navigation__list--mobile').slick('resize');\r\n });\r\n\r\n $('.product-navigation__show-more-less a').on('click', function (e) {\r\n e.preventDefault();\r\n $('.product-navigation').toggleClass('show-more');\r\n });\r\n});","var $ = require('jquery');\r\n\r\n$.validator.addMethod(\"checkboxrequired\", function (value, element, param) {\r\n return element.checked;\r\n});\r\n\r\n$.validator.unobtrusive.adapters.addBool(\"checkboxrequired\");","var $ = require('jquery');\r\n\r\n$(function () {\r\n function equalizeHeights() {\r\n var $selector = $('.navigation-cards__list__wrapper');\r\n $selector.css('height', '');\r\n // construct an array with all heights of selected elements\r\n var heights = $selector.map(function (i, e) {\r\n return $(e).innerHeight();\r\n });\r\n // apply max height to elements\r\n return $selector.innerHeight(\r\n Math.max.apply($(this), heights.get())\r\n );\r\n }\r\n\r\n equalizeHeights();\r\n\r\n $(window).on('resize', function () { // TO DO: throttle\r\n equalizeHeights();\r\n });\r\n});","var $ = require('jquery');\r\n\r\n$(function () {\r\n $('.tabbed-section-navigation').each(function () {\r\n var t = $(this);\r\n\r\n\t\t// desktop tabs init\r\n\t\tt.find('.tabbed-section-navigation__tabs__tab__name').eq(0).addClass('selected');\r\n\t\t$('.tabbed-section-navigation__tab-content__group').eq(0).children('.tabbed-section-navigation__tab-content__item').addClass('selected').removeAttr(\"style\");\r\n\r\n\t\t// mobile accordion init\r\n\t\tif (window.innerWidth <= 767) {\r\n\t\t\t$('.tabbed-section-navigation__tab-content__group').children('.tabbed-section-navigation__tab-content__item').removeClass('selected');\r\n\t\t}\r\n\r\n function changeTab(prevTab, nextTab) {\r\n if (prevTab !== nextTab) {\r\n //update content/slider tabs\r\n t.find('.tabbed-section-navigation__tab-content__item[data-tab-id=\"' + nextTab + '\"]').addClass('selected');\r\n t.find('.tabbed-section-navigation__tab-content__item[data-tab-id=\"' + prevTab + '\"]').removeClass('selected');\r\n\r\n //update desktop tabs\r\n var prevDesktop = t.find('.tabbed-section-navigation__tabs__tab__name[data-tab-id=' + prevTab + ']');\r\n var nextDesktop = t.find('.tabbed-section-navigation__tabs__tab__name[data-tab-id=' + nextTab + ']');\r\n prevDesktop.removeClass('selected');\r\n prevDesktop.parent().removeClass('selected');\r\n nextDesktop.addClass('selected');\r\n nextDesktop.parent().addClass('selected');\r\n }\r\n }\r\n\r\n // desktop tabs\r\n t.find('.tabbed-section-navigation__tabs__tab').eq(0).addClass('selected');\r\n\r\n\t\tt.find('.tabbed-section-navigation__tabs__tab__name').click(function (e) {\r\n\t\t\tvar dataId = $(this).attr('data-tab-id');\r\n\t\t\te.preventDefault();\r\n\t\t\tvar prev = t.find('.tabbed-section-navigation__tab-content__item.selected').attr('data-tab-id');\r\n\t\t\tchangeTab(prev, dataId);\r\n\t\t});\r\n\r\n\t\t// accordion event mobile\r\n\t\t$('.tabbed-section-navigation__tab-content__group .tabbed-section-navigation__tab-content__name').on('click', function (e) {\r\n\t\t\te.preventDefault();\r\n\t\t\tvar newAccordionItem = $('.tabbed-section-navigation__tab-content');\r\n\t\t\t$.AnimatedScroll(newAccordionItem.offset().top, 400);\r\n\r\n\t\t\t$(this).parent().siblings('.tabbed-section-navigation__tab-content__group')\r\n\t\t\t\t.children('.tabbed-section-navigation__tab-content__name').removeClass('selected').removeClass('last-selected')\r\n\t\t\t\t.next('.tabbed-section-navigation__tab-content__item').slideUp();\r\n\t\t\t$(this).toggleClass('selected').next('.tabbed-section-navigation__tab-content__item').slideToggle();\r\n\r\n\t\t\tif (newAccordionItem.find('.selected').length == 0) {\r\n\t\t\t\t$(this).addClass('last-selected');\r\n\t\t\t}\r\n\t\t});\r\n\r\n\r\n // resize event from tabs to accordion or vice-versa.\r\n\t\t$(window).on('resize orientationchange', function () {\r\n\r\n\t\t\t$('.tabbed-section-navigation__tabs').children('.tabbed-section-navigation__tabs__tab').removeClass('selected');\r\n\t\t\t$('.tabbed-section-navigation__tabs').children('.tabbed-section-navigation__tabs__tab').eq(0).addClass('selected');\r\n\r\n\t\t\tif (window.innerWidth > 767) {\r\n\t\t\t\t$('.tabbed-section-navigation__tab-content').children('.tabbed-section-navigation__tab-content__group').find('.tabbed-section-navigation__tab-content__item').removeClass('selected').removeAttr(\"style\");\r\n\t\t\t\t$('.tabbed-section-navigation__tab-content').children('.tabbed-section-navigation__tab-content__group').eq(0).find('.tabbed-section-navigation__tab-content__item').addClass('selected').removeAttr(\"style\");\r\n\t\t\t} else {\r\n\t\t\t\t$('.tabbed-section-navigation__tab-content').children('.tabbed-section-navigation__tab-content__group').find('.tabbed-section-navigation__tab-content__name').removeClass('selected')\r\n\t\t\t\t$('.tabbed-section-navigation__tab-content').children('.tabbed-section-navigation__tab-content__group').find('.tabbed-section-navigation__tab-content__item').removeClass('selected')\r\n\t\t\t}\r\n\r\n\t\t});\r\n\r\n });\r\n\r\n});","var $ = require('jquery');\r\n\r\n$(function () {\r\n\r\n function setMasonryColumnLayout(cardType) {\r\n var column1 = 0, column2 = 0, column3 = 0;\r\n\r\n $('#_810-twitter-wrapper ._810-twitter-timeline__wrapper:nth-child(' + cardType + 'n+1)').filter(function (i) {\r\n var getHeight1 = this.offsetHeight + 30;\r\n column1 += getHeight1;\r\n });\r\n\r\n $('#_810-twitter-wrapper ._810-twitter-timeline__wrapper:nth-child(' + cardType + 'n+2)').filter(function (i) {\r\n var getHeight3 = this.offsetHeight + 30;\r\n column2 += getHeight3;\r\n });\r\n\r\n $('#_810-twitter-wrapper ._810-twitter-timeline__wrapper:nth-child(' + cardType + 'n)').filter(function (i) {\r\n var getHeight3 = this.offsetHeight + 30;\r\n column3 += getHeight3;\r\n });\r\n $('#_810-twitter-wrapper').css(\"height\", (Math.max(column1, column2, column3) + 80) + \"px\");\r\n }\r\n\r\n\r\n function initTwitterDefaultView() {\r\n if ($('#_810-twitter-wrapper').length > 0) {\r\n var HorizontalFlag = $('#_810-twitter-wrapper').attr('data-horizontal').toLowerCase().toString();\r\n var isDisplayedHorizontal = JSON.parse(HorizontalFlag);\r\n\r\n if ($(window).width() <= 991) {\r\n initSliderView(true);\r\n }\r\n else if ($(window).width() > 991 && $(window).width() <= 1199) {\r\n $(\"#_810-twitter-wrapper\").addClass(\"masonry-two-col\");\r\n setMasonryColumnLayout(2);\r\n initSliderView(isDisplayedHorizontal);\r\n }\r\n else {\r\n $(\"#_810-twitter-wrapper\").removeClass(\"masonry-two-col\");\r\n setMasonryColumnLayout(3);\r\n initSliderView(isDisplayedHorizontal);\r\n }\r\n }\r\n }\r\n\r\n\r\n initTwitterDefaultView();\r\n\r\n $(window).on('resize orientationchange', function () {\r\n initTwitterDefaultView();\r\n });\r\n\r\n\r\n function initSliderView(slickState) {\r\n if (slickState) {\r\n if ($('#_810-twitter-wrapper').length > 0) {\r\n var showArrows = true;\r\n var numInsights = $('._810-twitter-timeline__wrapper').length;\r\n var fullWidthMode = false;\r\n if (numInsights > 2) {\r\n showArrows = true;\r\n }\r\n\r\n var slider = $('#_810-twitter-wrapper');\r\n\r\n slider.slick({\r\n arrows: showArrows,\r\n infinite: false,\r\n speed: 300,\r\n slidesToShow: 1,\r\n centerMode: false,\r\n centerPadding: '60px',\r\n variableWidth: true,\r\n mobileFirst: true,\r\n responsive: [\r\n {\r\n settings: {\r\n settings: 'unslick'\r\n }\r\n }\r\n ],\r\n rtl: window.GenericUtilities.isRTL()\r\n });\r\n }\r\n } else {\r\n if ($('#_810-twitter-wrapper').hasClass('slick-initialized')) {\r\n $('#_810-twitter-wrapper').slick('unslick');\r\n }\r\n }\r\n }\r\n});","var $ = require('jquery');\r\n\r\n$(function () {\r\n\r\n\twindow.isGmapLoaded = false;\r\n\tvar map, infowindow, clusterIcon, markerIcon, isMapLink = {}, isClusteringView, controlPosition, locations = [];\r\n\r\n\tfunction resetMap() {\r\n\t\tinfowindow.close();\r\n\t}\r\n\r\n\tfunction initMap() {\r\n\t\tmap = new google.maps.Map(document.getElementById('map'), {\r\n\t\t\tscaleControl: true,\r\n\t\t\tstreetViewControl: false,\r\n\t\t\tmapTypeControl: false, // To disable satellite/terrain view controls.\r\n\t\t\tfullscreenControl: true,\r\n\t\t\tfullscreenControlOptions: {\r\n\t\t\t\tposition: google.maps.ControlPosition[controlPosition]\r\n\t\t\t},\r\n\t\t\tzoomControl: true,\r\n\t\t\tzoomControlOptions: {\r\n\t\t\t\tposition: google.maps.ControlPosition[controlPosition]\r\n\t\t\t},\r\n\t\t});\r\n\r\n\t\tinfowindow = new google.maps.InfoWindow();\r\n\r\n\t\tvar latlngbounds = new google.maps.LatLngBounds();\r\n\r\n\t\tvar markers = locations.map(function (location, i) {\r\n\r\n\t\t\tvar directionCoordinates = (parseFloat(location.Latitude) + ',' + parseFloat(location.Longitude)).toString();\r\n\t\t\tvar directionUrl = 'https://www.google.com/maps/dir/?api=1&destination=' + directionCoordinates + '&zoom=8';\r\n\t\t\tvar formatPostalCode = ((location.AddressFormat == \"PostalCodeAfterCity\") ? (location.City + ' ' + location.PostalCode) : (location.PostalCode + ' ' + location.City));\r\n\t\t\tvar isGetDirectionLink = (isMapLink.ShowMapLink) ? '<a style=\"cursor:pointer;\" onClick=\"window.open(\\'' + directionUrl + '\\',\\'location=yes\\');return false;\">' + isMapLink.MapLinkText + '</a>' : \"\";\r\n\r\n\t\t\tvar MarkerContent = '<div style=\"width:300px; font-size:16px; line-height: 25px; padding: 15px 10px 0;\"><b style=\"display: block; margin-bottom: 13px;\">' + location.FirmName + ((location.SecondaryName !== \"\") ? ' - ' + location.SecondaryName : \"\") + '</b>' + location.Address1 + '<br />' + location.Address2 + '<br />' + formatPostalCode + '<br />' + location.State + ' ' + location.Country + '<br />' + location.PhoneNumber + '<br />' + location.FaxNumber + '<br /><a onClick=\"window.open(\\'' + location.LinkHref + '\\',\\'_blank\\')\" _target=\"' + location.LinkTarget + '\" style=\"margin-top:10px; cursor:pointer;\">' + location.LinkText + '</a><br />' + isGetDirectionLink + '</div>';\r\n\r\n\t\t\tvar locationMarker = new google.maps.Marker({\r\n\t\t\t\tposition: { lat: parseFloat(location.Latitude), lng: parseFloat(location.Longitude) },\r\n\t\t\t\tmap: map,\r\n\t\t\t\ticon: markerIcon,\r\n\t\t\t\twidth: 50,\r\n\t\t\t\theight: 50,\r\n\t\t\t});\r\n\r\n\t\t\tlocationMarker.addListener('mouseover', function () {\r\n\t\t\t\tvar that = this;\r\n\t\t\t\tthis.setAnimation(google.maps.Animation.BOUNCE);\r\n\t\t\t\twindow.setTimeout(function () { that.setAnimation(null); }, 10);\r\n\t\t\t});\r\n\r\n\t\t\tlocationMarker.addListener('click', function () {\r\n\t\t\t\tinfowindow.setContent(MarkerContent);\r\n\t\t\t\tinfowindow.open(map, locationMarker);\r\n\t\t\t});\r\n\r\n\t\t\tlatlngbounds.extend(locationMarker.position);\r\n\t\t\treturn locationMarker;\r\n\t\t});\r\n\r\n\t\tvar clusterStyles = [\r\n\t\t\t{\r\n\t\t\t\ttextColor: 'black',\r\n\t\t\t\turl: clusterIcon,\r\n\t\t\t\theight: 32,\r\n\t\t\t\twidth: 32,\r\n\t\t\t\tanchorText: [1, 0],\r\n\t\t\t\ttextSize: 13,\r\n\t\t\t}\r\n\t\t];\r\n\r\n\t\tvar mcOptions = {\r\n\t\t\tgridSize: 50,\r\n\t\t\tstyles: clusterStyles,\r\n\t\t\tmaxZoom: 15\r\n\t\t};\r\n\r\n\t\t// To enable Marker Clusters view.\r\n\t\tif (isClusteringView) {\r\n\t\t\tnew MarkerClusterer(map, markers, mcOptions);\r\n\t\t}\r\n\r\n\t\t//Get the boundaries of the Map.\r\n\t\tvar bounds = new google.maps.LatLngBounds();\r\n\r\n\t\t//Center map and adjust Zoom based on the position of all markers.\r\n\t\tmap.setCenter(latlngbounds.getCenter());\r\n\t\tmap.fitBounds(latlngbounds);\r\n\r\n\t\t// Reset Map based on bounds.\r\n\t\tvar controlUI = document.createElement('button');\r\n\t\tcontrolUI.className = \"resetMapButton\";\r\n\t\tcontrolUI.innerHTML = '<i class=\"material-icons\" style=\"font-size: 28px;\">refresh</i>';\r\n\r\n\t\tcontrolUI.addEventListener('click', function () {\r\n\t\t\tresetMap();\r\n\t\t\tmap.setCenter(latlngbounds.getCenter());\r\n\t\t\tmap.fitBounds(latlngbounds);\r\n\t\t});\r\n\r\n\t\tmap.controls[google.maps.ControlPosition[controlPosition]].push(controlUI);\r\n\t}\r\n\r\n\r\n\t$(window).on('scroll', function () {\r\n\t\tvar elem = document.getElementById(\"map\");\r\n\t\tif (elem) {\r\n\t\t\tif (elem.getBoundingClientRect().top <= window.pageYOffset && !window.isGmapLoaded) {\r\n\t\t\t\twindow.isGmapLoaded = true;\r\n\t\t\t\tinitializationMapAPI();\r\n\t\t\t}\r\n\t\t}\r\n\t});\r\n\r\n\r\n\tfunction initializationMapAPI() {\r\n\t\t\r\n\t\tvar placeholderId = $('#map').attr('data-map-id').toLowerCase().toString();\r\n\t\tvar language = $('#map').attr('data-language').toLowerCase().toString();\r\n\t\tvar contextId = $('#map').attr('data-map-context').toLowerCase().toString();\r\n\r\n\t\t$.ajax({\r\n\t\t\ttype: 'GET',\r\n\t\t\turl: '/api/sitecore/mapmodule/getmapdata',\r\n\t\t\tdata: {\r\n\t\t\t\tid: placeholderId,\r\n\t\t\t\tlang: language,\r\n\t\t\t\tcontext: contextId\r\n\t\t\t},\r\n\t\t\tsuccess: function (data) {\r\n\t\t\t\tclusterIcon = data.ClusteringIcon;\r\n\t\t\t\tmarkerIcon = data.LocationIcon;\r\n\t\t\t\tisMapLink = {\r\n\t\t\t\t\tShowMapLink: data.ShowMapLink,\r\n\t\t\t\t\tMapLinkText: data.MapLinkText\r\n\t\t\t\t};\r\n\t\t\t\tcontrolPosition = data.ControlPosition.toUpperCase();\r\n\t\t\t\tisClusteringView = data.UseClustering;\r\n\r\n\t\t\t\tlocations = data.Locations;\r\n\r\n\t\t\t\t$.when(\r\n\t\t\t\t\t$.getScript(\"https://unpkg.com/@google/markerclustererplus@4.0.1/dist/markerclustererplus.min.js\"),\r\n\t\t\t\t\t$.getScript(\"https://maps.googleapis.com/maps/api/js?key=\" + data.ApiKey),\r\n\t\t\t\t\t$.Deferred(function (deferred) {\r\n\t\t\t\t\t\t$(deferred.resolve);\r\n\t\t\t\t\t})\r\n\t\t\t\t).done(function () {\r\n\t\t\t\t\tinitMap();\r\n\t\t\t\t});\r\n\t\t\t},\r\n\t\t\terror: function () {\r\n\t\t\t},\r\n\t\t\tcomplete: function () {\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n\r\n});\r\n"]}