{"version":3,"sources":["underscore.js","backbone.js","object-fit-videos.js","backbone-model-shim.js","backbone-view-shim.js","globals.js","njm-click-tracking.js","open-am-device-detector.js","ie.js","loader.js","accordion/comp-accordion.view.js","articles-hero/comp-articles-hero.view.js","carousel-hero/comp-carousel-hero.js","cl-login/comp-cl-login.view.js","comp-agent-search/comp-agent-search.js","comp-block-message/comp-block-message.js","comp-custom-select/comp-custom-select.js","comp-dropdown-quote/comp-dropdown-quote-new.js","comp-dropdown-quote/comp-dropdown-quote.js","comp-hero-sticky-quote/comp-hero-sticky-quote.js","comp-message-center/comp-message-center.view.js","comp-pcc-shop-search/comp-pcc-shop-search.js","comp-tab-quote/comp-tab-quote.js","css-login/comp-css-login.view.js","custom-modal/custom-modal.view.js","data-layer/comp-data-layer.view.js","featured-newslist/comp-featured-newslist.view.js","get-commercial-auto-quote/comp-commercial-auto-quote.js","get-quote-dynamic/comp-get-quote-dynamic-product-defined.js","get-quote-dynamic/comp-get-quote-dynamic.js","header/comp-header.view.js","header-agent-blog/comp-agent-blog-search.js","hero/comp-hero.view.js","hero-banner-quote/comp-sticky-quote.js","hero-overlay/comp-hero-overlay.view.js","home-hero/comp-home-hero.js","list-landing-search/comp-list-landing-search.js","login/comp-login.view.js","modal-search/comp-modal-search-results.view.js","modal-search/comp-modal-search.view.js","navigation-search/comp-navigation-search.view.js","no-cookie/comp-no-cookie.view.js","pagination/comp-pagination.view.js","search-results/comp-search-results.view.js","subscribe/comp-subscribe.view.js","tabs/comp-tabs.view.js","top-categories/comp-top-categories.view.js","user-guide/comp-user-guide.view.js","vertical-tabs/comp-vertical-tabs.view.js","zip-search/comp-zip-search.js","articles-hero/desktop/comp-articles-hero-desktop.view.js","articles-hero/mobile/comp-articles-hero-mobile.view.js","header/desktop/comp-header-desktop.view.js","header/mobile/comp-header-mobile.view.js","microsites/banner/comp-micro-banner.view.js","microsites/find-my-company/comp-micro-find-my-company.view.js","microsites/header/comp-micro-header.view.js","microsites/hero-slider/comp-micro-hero-slider.view.js","microsites/testimonials/comp-micro-testimonials.view.js","partners/disclaimer/comp-disclaimer.view.js","partners/search/comp-partners-search.js","vertical-tabs/desktop/comp-vertical-tabs-desktop.view.js","vertical-tabs/mobile/comp-vertical-tabs-mobile.view.js","microsites/njmshares/hero/comp-njmshares-hero.view.js","microsites/njmshares/slider/comp-njmshares-slider.view.js","microsites/njmshares/videos/comp-njmshares-videos.view.js"],"names":["global","factory","exports","module","define","amd","globalThis","self","current","_","noConflict","this","VERSION","root","Function","ArrayProto","Array","prototype","ObjProto","Object","SymbolProto","Symbol","push","slice","toString","hasOwnProperty","supportsArrayBuffer","ArrayBuffer","supportsDataView","DataView","nativeIsArray","isArray","nativeKeys","keys","nativeCreate","create","nativeIsView","isView","_isNaN","isNaN","_isFinite","isFinite","hasEnumBug","propertyIsEnumerable","nonEnumerableProps","MAX_ARRAY_INDEX","Math","pow","restArguments","func","startIndex","length","max","arguments","rest","index","call","args","apply","isObject","obj","type","isUndefined","isBoolean","tagTester","name","tag","isString","isNumber","isDate","isRegExp","isError","isSymbol","isArrayBuffer","isFunction","nodelist","document","childNodes","Int8Array","isFunction$1","hasObjectTag","hasDataViewBug","test","String","isIE11","Map","isDataView","isDataView$1","getInt8","buffer","has$1","key","isArguments","isArguments$1","isNaN$1","constant","value","createSizePropertyCheck","getSizeProperty","collection","sizeProperty","shallowProperty","getByteLength","isBufferLike","typedArrayPattern","isTypedArray$1","getLength","collectNonEnumProps","hash","l","i","contains","emulatedSet","nonEnumIdx","constructor","proto","prop","isMatch","object","attrs","_keys","_$1","_wrapped","toBufferView","bufferSource","Uint8Array","byteOffset","valueOf","toJSON","tagDataView","eq","a","b","aStack","bStack","deepEq","className","areArrays","aCtor","bCtor","pop","allKeys","ie11fingerprint","methods","weakMapMethods","forEachName","commonInit","mapTail","mapMethods","concat","setMethods","isMap","isWeakMap","isSet","isWeakSet","values","invert","result","functions","names","sort","createAssigner","keysFunc","defaults","source","extend","extendOwn","baseCreate","Ctor","toPath$1","path","toPath","deepGet","get","defaultValue","identity","matcher","property","optimizeCb","context","argCount","accumulator","baseIteratee","iteratee","Infinity","cb","noop","random","min","floor","now","Date","getTime","createEscaper","map","escaper","match","join","testRegexp","RegExp","replaceRegexp","string","replace","escapeMap","_escape","_unescape","templateSettings","evaluate","interpolate","escape","noMatch","escapes","escapeRegExp","escapeChar","bareIdentifier","idCounter","executeBound","sourceFunc","boundFunc","callingContext","partial","boundArgs","placeholder","bound","position","bind","TypeError","callArgs","isArrayLike","flatten$1","input","depth","strict","output","idx","j","len","bindAll","Error","delay","wait","setTimeout","defer","negate","predicate","before","times","memo","once","findKey","createPredicateIndexFinder","dir","array","findIndex","findLastIndex","sortedIndex","low","high","mid","createIndexFinder","predicateFind","item","indexOf","lastIndexOf","find","each","results","currentKey","createReduce","initial","reducer","reduce","reduceRight","filter","list","every","some","fromIndex","guard","invoke","contextPath","method","pluck","computed","lastComputed","v","reStrSymbol","toArray","sample","n","last","rand","temp","group","behavior","partition","groupBy","indexBy","countBy","pass","keyInObj","pick","omit","first","difference","without","otherArrays","uniq","isSorted","seen","union","arrays","unzip","zip","chainResult","instance","_chain","chain","mixin","allExports","__proto__","isNull","isElement","nodeType","parseFloat","isTypedArray","isEmpty","isEqual","pairs","assign","props","clone","tap","interceptor","has","mapObject","propertyOf","matches","accum","unescape","template","text","settings","oldSettings","offset","render","argument","variable","e","data","fallback","uniqueId","prefix","id","memoize","hasher","cache","address","throttle","options","timeout","previous","later","leading","throttled","_now","remaining","clearTimeout","trailing","cancel","debounce","immediate","passed","debounced","_args","wrap","wrapper","compose","start","after","detect","findWhere","forEach","collect","foldl","inject","foldr","select","reject","all","any","includes","include","where","shuffle","sortBy","criteria","left","right","size","head","take","tail","drop","compact","Boolean","flatten","unique","intersection","argsLength","transpose","range","stop","step","ceil","chunk","count","default","$","Backbone","require","jQuery","Zepto","ender","previousBackbone","emulateHTTP","emulateJSON","_listening","Events","eventSplitter","eventsApi","events","callback","opts","split","on","_events","onApi","ctx","listening","_listeners","interop","listenTo","_listenId","listeningTo","_listeningTo","Listening","error","tryCatchOn","handlers","off","offApi","listeners","stopListening","ids","handler","_callback","cleanup","onceMap","listenToOnce","offer","trigger","triggerApi","objEvents","allEvents","triggerEvents","ev","a1","a2","a3","listener","unbind","Model","attributes","preinitialize","cid","cidPrefix","parse","set","changed","initialize","validationError","idAttribute","sync","attr","val","_validate","unset","silent","changes","changing","_changing","_previousAttributes","prev","prevId","_pending","clear","hasChanged","changedAttributes","diff","old","previousAttributes","fetch","model","success","resp","serverAttrs","wrapError","save","validate","isNew","patch","xhr","destroy","url","base","urlError","encodeURIComponent","isValid","Collection","models","comparator","_reset","reset","setOptions","add","remove","merge","addOptions","splice","insert","at","singular","removed","_removeModels","added","merged","_isModel","toAdd","toMerge","toRemove","modelMap","sortable","sortAttr","existing","_prepareModel","_addReference","orderChanged","m","_removeReference","previousModels","unshift","shift","_byId","modelId","callbackOpts","_forwardPristineError","CollectionIterator","ITERATOR_VALUES","ITERATOR_KEYS","entries","ITERATOR_KEYSVALUES","_onModelEvent","event","$$iterator","iterator","kind","_collection","_kind","_index","next","done","View","viewOptions","_ensureElement","delegateEventSplitter","tagName","selector","$el","_removeElement","setElement","element","undelegateEvents","_setElement","delegateEvents","el","delegate","eventName","undelegate","_createElement","createElement","_setAttributes","addUnderscoreMethods","Class","attribute","defaultVal","addMethod","modelMatcher","config","Base","mappings","methodMap","params","dataType","contentType","JSON","stringify","_method","beforeSend","setRequestHeader","processData","textStatus","errorThrown","ajax","update","delete","read","Router","routes","_bindRoutes","optionalParam","namedParam","splatParam","route","_routeToRegExp","router","history","fragment","_extractParameters","execute","navigate","optional","exec","param","decodeURIComponent","History","checkUrl","window","location","routeStripper","rootStripper","pathStripper","started","interval","atRoot","pathname","getSearch","matchRoot","decodeFragment","decodeURI","href","getHash","getPath","charAt","getFragment","_usePushState","_wantsHashChange","_trailingSlash","trailingSlash","hashChange","_hasHashChange","documentMode","_useHashChange","_wantsPushState","pushState","_hasPushState","rootPath","iframe","src","style","display","tabIndex","body","iWindow","insertBefore","firstChild","contentWindow","open","close","addEventListener","attachEvent","_checkUrlInterval","setInterval","loadUrl","removeEventListener","detachEvent","removeChild","clearInterval","notfound","decodedFragment","title","_updateHash","protoProps","staticProps","child","parent","__super__","_debug","objectFitVideos","videos","isEdge","navigator","userAgent","testImg","Image","supportsObjectFit","supportsObjectPosition","propRegex","getStyle","getComputedStyle","fontFamily","parsed","parsePosition","fitIt","setCss","getCss","$wrap","appendChild","parentNode","replaceChild","wrapCss","height","width","boxSizing","overflow","border","margin","padding","opacity","doWork","readyState","videoRatio","videoWidth","videoHeight","wrapWidth","clientWidth","wrapHeight","clientHeight","wrapRatio","newHeight","newWidth","marginLeft","marginTop","round","autoplay","play","querySelectorAll","running","evt","CustomEvent","createEvent","initEvent","requestAnimationFrame","dispatchEvent","serializeModel","empty","onClose","listenToMedia","screenMedia","getCurrentMedia","fireMediaListener","media","device","globals","devices","x","innerWidth","njm","bbGEvent","views","collections","routers","mobile","tablet","desktop","dataLayer","documentElement","container","getElementsByClassName","imageSource","querySelector","backgroundSize","backgroundImage","backgroundPosition","njmClientClickTracking","sendTrackingInfo","objParam","methodName","Promise","resolve","xhttp","XMLHttpRequest","onreadystatechange","status","responseText","getAllResponseHeaders","forgeryId","getElementsByName","json","send","linkClicked","innerText","quoteLinkClicked","EventName","Data","linkClickedWithUserID","UserId","Userid","screenLoadingsuccessful","ScreenName","trackRedirects","CurrentPage","UrlReferrer","RedirectingTo","logError","logErrorGeneric","errorMessage","statusCode","userId","exception","MethodName","StatusCode","Exception","trackUser","async","pUserid","pPolicyType","jsonData","PolicyTypes","console","log","trackPageName","pageUrl","referralUrl","pageurl","referralurl","triggerGoal","goalid","goalId","getDateOffset","currDt","jan","getFullYear","jul","getTimezoneOffset","collectTimezoneInfo","timezoneInfo","timezone","warn","collectBrowserPluginsInfo","plugins","pluginsInfo","installedPlugins","collectBrowserFontsInfo","fontsInfo","installedFonts","devicePrint","screen","fonts","appName","appCodeName","appVersion","platform","cpuClass","oscpu","product","vendor","language","browserLanguage","systemLanguage","geolocation","addClass","Loader","components","view","viewsInstances","init","component","undefined","viewInstances","ready","loader","accordion","isPageEditor","collapse","Sitecore","PageModes","PageEditor","toggle","preventDefault","$target","currentTarget","parents","hasClass","expand","target","removeClass","slideUp","slideDown","articlesHero","$holder","lastView","medias","switchMedia","renderMobile","renderDesktop","articlesHeroMobile","articlesHeroDesktop","carouselHero","initializeSlick","slick","slidesToShow","slidesToScroll","dots","prevArrow","nextArrow","responsive","breakpoint","arrows","clLogin","checkUserUrl","vercd","urlParam","user","destinationUrl","isExperienceEditor","getElementById","otpEntryVisible","is","urlObj","URL","currentTimestamp","locCheck","search","gotoParam","dctimestamp","dcTimeOut","agentParam","customParam","searchParams","processedUrl","referrer","redirect","timestamp","verifyCode","show","xhrFields","withCredentials","response","request","hide","innerHTML","keypress","keyCode","click","msCapsLockWarningOff","change","siblings","removeAttr","inArray","ex","stack","stringTrim","checkLoginError","msg","message","errorMsg","cancelReset","inpurl","login1","loginApiUrl","login","login2","ans1","ans2","valid","saveApiUrl","OauthUrl","Answer1","Answer2","Save","checked","getOauthToken","checkKBAError","keepWarning","destUrl","userID","UserID","Password","fillQuestions","errorResponse","substring","forgotAnswers","adminIndex","responseJSON","admin","verifyCodeEvent","validateApiUrl","Key","updateQuestions","kba1","kba2","kba3","validateAnswers","Answer3","Question1","Question2","Question3","areUniqueAnswers","answer1","answer2","answer3","toggleErrorBorder","regex","question","markInvalid","toLowerCase","answer","field","questions","opt","number","removeDisabledFromOptions","removeAttribute","backToSection","backSection","currentSection","passwordVisibility","isCapsLockOn","originalEvent","getModifierState","forgotID","forgotPass","register","refresh","reload","paramCheck","getUrlParameter","encodeResult","URLSearchParams","getOriginalRequestQueryString","forgotUserID","forgotUserIdApiUrl","email","forgotPassword","forgotPassUrl","redirectUrl","substr","blogReturnUrl","trim","passQuestions","forgotPassQuestionsUrl","userIDQuestions","backToQuestions","backToQuestionsFromCreateBack","selectedIndex","capslockHint","css","agentSearch","dropdown","focusableEls","firstFocusableEl","lastFocusableEl","focusedEl","$this","closest","hideDropdown","lobFilterSelection","dropdownClick","showDropdown","dropdownKeydown","which","focus","focusPrevious","focusNext","shiftKey","dropdownSelectionClick","dataValue","dropdownSelectionKeydown","selectedText","numChecked","selectedEl","fnPagination","pageInput","totalPageCount","parseInt","blockQuote","blockCode","defaultMsgEl","qStrParams","showBlockMessage","blockEl","customSelect","currentItem","parentSelect","hiddenValue","toLocaleLowerCase","openDropdown","targetSelect","children","customSelectWithSubmit","submit","dropdownQuoteNew","dropdownVisible","hrefText","currentProductPreHref","keydown","handleKeydown","validatePolicyOption","policyOptionSubmit","policymessageContainer","html","append","onProductBegin","processing","onProductComplete","onProductQuoteSubmit","displayScreen","currentScreen","hidQuoteStatus","slideLeft","onProductQuoteComplete","hidQuoteshortform","hidQuoteAgent","hidQuoteQBApp","hidQuoteZipBlock","hidQuoteaction","hidQuoteAppetiteAction","hidQuoteInAppetiteAction","zipSubmitBtn","hidProductCategory","hidBusinessLob","zipCodeLabel","appurl","formUrl","agentSearchUrl","zipBlockUrl","onDropQuoteProductSuccess","productLabel","dropdownText","dropdownIcon","hideScreen","CallTrk","swap","onDropProductFailure","onConitnueQuoteSuccess","initializeContinueProductQuoteScreen","onConitnueQuoteFailure","onDropQuoteProductQuoteSubmit","initializeDropdownPolicyMessageScreen","onProductQuoteSuccess","zipcode","initializeDropdownPreQualScreen","currentHref","onPreProductQuoteSuccess","initializeDropdownQuoteScreen","onProductQuoteQualificationSuccess","onProductQuoteError","hidZipErrorMsg","hidZipInvalidMsg","onValidateZipCode","onGetStartedSuccess","getStartedUrl","onGetStartedFailure","backClick","$thisObject","validatePreQual","preQualRadioChecked","quoteScreen","keyup","validateZip","blur","hideErrors","AddAntiForgeryToken","stickyQuote","setFocusableEls","slideRight","$thisComponent","dropdownVisibleropdown","$thisElement","clearFocusableEls","selectionItem","selectionItemText","selectionIconClass","clearForms","numEmployees","numEmployeesChecked","numVehicles","numVehiclesChecked","displayEmpOptions","displayVehicleOptions","prEqualButton","errMsg","submitBtn","ajaxBtn","arrow","businessRuleHidden","quoteAppUrl","agentUrl","hidContinueText","hidOnlineQuoteText","hidQuoteBtnText","hidAgentBtnText","hidQuoteAgentsearch","hidQuoteQbapp","isProcessing","businessRulesArr","Employee","Vehicle","Action","boolean","movedContent","screenOverlay","elementContents","contents","formElements","prepend","fadeOut","productSelection","productSelectionChecked","poButton","productSelectionCheckedId","dropdownQuote","visible","expanded","activeElement","handleClick","handleKeypress","onscroll","handleScroll","offsetHeight","top","displayBtn","hideBtn","handleTab","quoteComponent","quoteTarget","scrollBarWidth","stickyComponentPadding","quoteContainer","Number","pageYOffset","messageCenter","messageCenterError","fnMessageCenterPost","fnMessageArticlePost","setActive","errorText","errorEl","pageIndex","isArchived","userCategory","isArchive","pageSize","searchText","failure","messageId","mode","slideToggle","toggleClass","pccShopSearch","tabQuote","initializeTabComponent","onProductFailure","onProductSuccess","initializeProductQuoteComponent","msgScreen","tabClick","category","loadingHtml","itemOverlay","fadeIn","cssLogin","me","localStorage","Csschkbox","Cssusername","sendUserAnalytics","updateQuestionApiUrl","Question3Answer","Question2Answer","Question1Answer","loginButton","policies","inputPolicyTypes","policyStatus","policy","policyType","goto","locationCheck","customModal","initialized","handleBodyClicks","handleKey","handleLinkClicks","openGenericCustomModal","modal","lastElement","firstElement","scroll","closeModal","hrefVal","openGenericModal","handleFieldFocus","handleFieldBlur","formModal","innerHeight","measureScrollbarWidth","activeEl","modalid","clickAction","parseDataLayer","newData","k","featuredNewslist","form","formField","regexPattern","regexErrorText","requiredErrorText","errorTooltip","hideError","getCommercialAutoQuote","$state","$product","$button","$linkHref","$linkTarget","$geoLoc","initialProductOption","selected","stateIndex","products","productIndex","setState","openSelect","selectState","$selected","state","selectVehicle","$selectedState","$selectedVehicles","$conditionState","$conditionVehicle","redirectTarget","$lnkHref","njmGenericModal","getQuoteDynamicProductDefined","$geoState","$telephone","quoteApps","$select","findStateIndex","stateName","toReturn","queryString","phoneLink","phoneText","desktopTarget","mobileTarget","getQuoteDynamic","loadProducts","loadGeoBasedProducts","resetTelephone","selectProduct","$list","findGeoIndex","header","$body","headerMobile","headerDesktop","agentBlogSearch","toggleSearch","mobileState","submitSearch","hero","$video","$mediaImg","replaceVideoWithImg","stickyNav","timeOutFunc","dismissButton","dismissedText","dismissArrow","sticky","timeOut","hidden","minimized","userExpanded","offsetAmount","isMobile","displayQuoteBar","dismissToggle","hideQuoteBar","minimizeQuoteBar","quoteBarTimeout","stickyNavDisplay","onresize","heroOverlay","homehero","selectBackground","listlandingSearch","onSearchComplete","plLogin","navigateParam","sessionStorage","FromClaimPage","ClaimFor","getScript","getRecaptchaResponse","renderCaptcha","grecaptcha","enterprise","sitekey","getResponseHeader","otpApiUrl","token","headers","NJM_VERIFICATION_TOKEN","NJM_VERIFICATION_ACTION","otpMethod","otpMethodUrl","loginResponse","fillOtpMethods","hasOtpMethod","warningText","divHtml","preselect","sendOtp","otpPostApiUrl","idVal","selectedOTPText","successMessage","validateOtpUrl","saveDeviceUrl","verifyOtpCode","code","saveDevice","resendCode","resendLoading","resendSuccess","changeDelivery","fileAClaim","modalSearchResults","modalID","modalSearchModalID","cusotmModal","modalSearch","onBeginValidate","submitValidation","showError","fnModalSearchPagination","formAction","leaveForm","query","getQuery","pagePath","site","origin","targetPage","modalName","fromEntries","q","handleFocusIn","navigationsearch","getSuggestions","initialiseLiComponents","term","setText","lastFocusableElTab","noCookie","cookieEnabled","cookie","dismiss","pagination","$input","currentPage","ctrlKey","metaKey","maxChar","currPage","lastPage","pageNumber","searchResults","$category","$selectedCategory","$selectedLabel","$dropdown","searchInput","selectCategory","getAttribute","subscribe","$errorMsg","minChar","reg","tabs","$tabs","chooseTab","topcategories","userGuide","startChecked","checkValue","sameScreen","radioName","$currentScreen","currentScreenData","hideEls","showEl","elList","elChecked","elSecondaryList","$elChecked","buttonNavigate","targetData","$targetScreen","scrollToTop","topIsVisible","winTop","scrollTop","animate","claimType","verticalTabs","verticalTabsMobile","templateNum","verticalTabsDesktop","checkInput","zipSearchFunc","navCount","timer","timerCounter","timerInterval","hoverActive","setActiveByTimer","$dataId","setActiveByEvent","nextNav","nav","activeNav","stopTimer","startTimer","clickToClose","$header","$items","$submenus","$login","selectMenuItem","$thisItem","not","selectMenuItemKey","openLogin","overlayKey","openMenu","loginKey","closeMenu","$mobileMenu","toggleMenu","toggleSubMenu","microBanner","offsetTop","microFindMyCompany","onInputKeyup","searchVal","microHeader","navOpen","onNavToggleClick","$navToggle","microHeroSlider","onSliderClick","$slider","$hero","direction","translateX","transition","time","transitionDuration","transform","microTestimonials","$videos","elem","isScrolledIntoView","wistiaId","pause","visibleVideo","docViewTop","docViewBottom","elemTop","onStartButtonClick","$videoContainer","onStopButtonClick","onVideoClick","disclaimer","pageDisclaimers","totalDisclaimerCount","pageDisclaimersArray","disclaimerName","disclaimerContent","symbol","disclaimerHtml","partnerSearch","tabFocus","contentID","tabKey","njmsharesHero","onScrollButtonClick","njmsharesSlider","SalpySlider","align","repeat","shown","minwidth","original_slide","pager","speed","touch","auto","arrowLeft","arrowRight","njmsharesVideos"],"mappings":"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","file":"bundle.min.js","sourcesContent":["(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() :\n typeof define === 'function' && define.amd ? define('underscore', factory) :\n (global = typeof globalThis !== 'undefined' ? globalThis : global || self, (function () {\n var current = global._;\n var exports = global._ = factory();\n exports.noConflict = function () { global._ = current; return exports; };\n }()));\n}(this, (function () {\n // Underscore.js 1.13.7\n // https://underscorejs.org\n // (c) 2009-2024 Jeremy Ashkenas, Julian Gonggrijp, and DocumentCloud and Investigative Reporters & Editors\n // Underscore may be freely distributed under the MIT license.\n\n // Current version.\n var VERSION = '1.13.7';\n\n // Establish the root object, `window` (`self`) in the browser, `global`\n // on the server, or `this` in some virtual machines. We use `self`\n // instead of `window` for `WebWorker` support.\n var root = (typeof self == 'object' && self.self === self && self) ||\n (typeof global == 'object' && global.global === global && global) ||\n Function('return this')() ||\n {};\n\n // Save bytes in the minified (but not gzipped) version:\n var ArrayProto = Array.prototype, ObjProto = Object.prototype;\n var SymbolProto = typeof Symbol !== 'undefined' ? Symbol.prototype : null;\n\n // Create quick reference variables for speed access to core prototypes.\n var push = ArrayProto.push,\n slice = ArrayProto.slice,\n toString = ObjProto.toString,\n hasOwnProperty = ObjProto.hasOwnProperty;\n\n // Modern feature detection.\n var supportsArrayBuffer = typeof ArrayBuffer !== 'undefined',\n supportsDataView = typeof DataView !== 'undefined';\n\n // All **ECMAScript 5+** native function implementations that we hope to use\n // are declared here.\n var nativeIsArray = Array.isArray,\n nativeKeys = Object.keys,\n nativeCreate = Object.create,\n nativeIsView = supportsArrayBuffer && ArrayBuffer.isView;\n\n // Create references to these builtin functions because we override them.\n var _isNaN = isNaN,\n _isFinite = isFinite;\n\n // Keys in IE < 9 that won't be iterated by `for key in ...` and thus missed.\n var hasEnumBug = !{toString: null}.propertyIsEnumerable('toString');\n var nonEnumerableProps = ['valueOf', 'isPrototypeOf', 'toString',\n 'propertyIsEnumerable', 'hasOwnProperty', 'toLocaleString'];\n\n // The largest integer that can be represented exactly.\n var MAX_ARRAY_INDEX = Math.pow(2, 53) - 1;\n\n // Some functions take a variable number of arguments, or a few expected\n // arguments at the beginning and then a variable number of values to operate\n // on. This helper accumulates all remaining arguments past the function’s\n // argument length (or an explicit `startIndex`), into an array that becomes\n // the last argument. Similar to ES6’s \"rest parameter\".\n function restArguments(func, startIndex) {\n startIndex = startIndex == null ? func.length - 1 : +startIndex;\n return function() {\n var length = Math.max(arguments.length - startIndex, 0),\n rest = Array(length),\n index = 0;\n for (; index < length; index++) {\n rest[index] = arguments[index + startIndex];\n }\n switch (startIndex) {\n case 0: return func.call(this, rest);\n case 1: return func.call(this, arguments[0], rest);\n case 2: return func.call(this, arguments[0], arguments[1], rest);\n }\n var args = Array(startIndex + 1);\n for (index = 0; index < startIndex; index++) {\n args[index] = arguments[index];\n }\n args[startIndex] = rest;\n return func.apply(this, args);\n };\n }\n\n // Is a given variable an object?\n function isObject(obj) {\n var type = typeof obj;\n return type === 'function' || (type === 'object' && !!obj);\n }\n\n // Is a given value equal to null?\n function isNull(obj) {\n return obj === null;\n }\n\n // Is a given variable undefined?\n function isUndefined(obj) {\n return obj === void 0;\n }\n\n // Is a given value a boolean?\n function isBoolean(obj) {\n return obj === true || obj === false || toString.call(obj) === '[object Boolean]';\n }\n\n // Is a given value a DOM element?\n function isElement(obj) {\n return !!(obj && obj.nodeType === 1);\n }\n\n // Internal function for creating a `toString`-based type tester.\n function tagTester(name) {\n var tag = '[object ' + name + ']';\n return function(obj) {\n return toString.call(obj) === tag;\n };\n }\n\n var isString = tagTester('String');\n\n var isNumber = tagTester('Number');\n\n var isDate = tagTester('Date');\n\n var isRegExp = tagTester('RegExp');\n\n var isError = tagTester('Error');\n\n var isSymbol = tagTester('Symbol');\n\n var isArrayBuffer = tagTester('ArrayBuffer');\n\n var isFunction = tagTester('Function');\n\n // Optimize `isFunction` if appropriate. Work around some `typeof` bugs in old\n // v8, IE 11 (#1621), Safari 8 (#1929), and PhantomJS (#2236).\n var nodelist = root.document && root.document.childNodes;\n if (typeof /./ != 'function' && typeof Int8Array != 'object' && typeof nodelist != 'function') {\n isFunction = function(obj) {\n return typeof obj == 'function' || false;\n };\n }\n\n var isFunction$1 = isFunction;\n\n var hasObjectTag = tagTester('Object');\n\n // In IE 10 - Edge 13, `DataView` has string tag `'[object Object]'`.\n // In IE 11, the most common among them, this problem also applies to\n // `Map`, `WeakMap` and `Set`.\n // Also, there are cases where an application can override the native\n // `DataView` object, in cases like that we can't use the constructor\n // safely and should just rely on alternate `DataView` checks\n var hasDataViewBug = (\n supportsDataView && (!/\\[native code\\]/.test(String(DataView)) || hasObjectTag(new DataView(new ArrayBuffer(8))))\n ),\n isIE11 = (typeof Map !== 'undefined' && hasObjectTag(new Map));\n\n var isDataView = tagTester('DataView');\n\n // In IE 10 - Edge 13, we need a different heuristic\n // to determine whether an object is a `DataView`.\n // Also, in cases where the native `DataView` is\n // overridden we can't rely on the tag itself.\n function alternateIsDataView(obj) {\n return obj != null && isFunction$1(obj.getInt8) && isArrayBuffer(obj.buffer);\n }\n\n var isDataView$1 = (hasDataViewBug ? alternateIsDataView : isDataView);\n\n // Is a given value an array?\n // Delegates to ECMA5's native `Array.isArray`.\n var isArray = nativeIsArray || tagTester('Array');\n\n // Internal function to check whether `key` is an own property name of `obj`.\n function has$1(obj, key) {\n return obj != null && hasOwnProperty.call(obj, key);\n }\n\n var isArguments = tagTester('Arguments');\n\n // Define a fallback version of the method in browsers (ahem, IE < 9), where\n // there isn't any inspectable \"Arguments\" type.\n (function() {\n if (!isArguments(arguments)) {\n isArguments = function(obj) {\n return has$1(obj, 'callee');\n };\n }\n }());\n\n var isArguments$1 = isArguments;\n\n // Is a given object a finite number?\n function isFinite$1(obj) {\n return !isSymbol(obj) && _isFinite(obj) && !isNaN(parseFloat(obj));\n }\n\n // Is the given value `NaN`?\n function isNaN$1(obj) {\n return isNumber(obj) && _isNaN(obj);\n }\n\n // Predicate-generating function. Often useful outside of Underscore.\n function constant(value) {\n return function() {\n return value;\n };\n }\n\n // Common internal logic for `isArrayLike` and `isBufferLike`.\n function createSizePropertyCheck(getSizeProperty) {\n return function(collection) {\n var sizeProperty = getSizeProperty(collection);\n return typeof sizeProperty == 'number' && sizeProperty >= 0 && sizeProperty <= MAX_ARRAY_INDEX;\n }\n }\n\n // Internal helper to generate a function to obtain property `key` from `obj`.\n function shallowProperty(key) {\n return function(obj) {\n return obj == null ? void 0 : obj[key];\n };\n }\n\n // Internal helper to obtain the `byteLength` property of an object.\n var getByteLength = shallowProperty('byteLength');\n\n // Internal helper to determine whether we should spend extensive checks against\n // `ArrayBuffer` et al.\n var isBufferLike = createSizePropertyCheck(getByteLength);\n\n // Is a given value a typed array?\n var typedArrayPattern = /\\[object ((I|Ui)nt(8|16|32)|Float(32|64)|Uint8Clamped|Big(I|Ui)nt64)Array\\]/;\n function isTypedArray(obj) {\n // `ArrayBuffer.isView` is the most future-proof, so use it when available.\n // Otherwise, fall back on the above regular expression.\n return nativeIsView ? (nativeIsView(obj) && !isDataView$1(obj)) :\n isBufferLike(obj) && typedArrayPattern.test(toString.call(obj));\n }\n\n var isTypedArray$1 = supportsArrayBuffer ? isTypedArray : constant(false);\n\n // Internal helper to obtain the `length` property of an object.\n var getLength = shallowProperty('length');\n\n // Internal helper to create a simple lookup structure.\n // `collectNonEnumProps` used to depend on `_.contains`, but this led to\n // circular imports. `emulatedSet` is a one-off solution that only works for\n // arrays of strings.\n function emulatedSet(keys) {\n var hash = {};\n for (var l = keys.length, i = 0; i < l; ++i) hash[keys[i]] = true;\n return {\n contains: function(key) { return hash[key] === true; },\n push: function(key) {\n hash[key] = true;\n return keys.push(key);\n }\n };\n }\n\n // Internal helper. Checks `keys` for the presence of keys in IE < 9 that won't\n // be iterated by `for key in ...` and thus missed. Extends `keys` in place if\n // needed.\n function collectNonEnumProps(obj, keys) {\n keys = emulatedSet(keys);\n var nonEnumIdx = nonEnumerableProps.length;\n var constructor = obj.constructor;\n var proto = (isFunction$1(constructor) && constructor.prototype) || ObjProto;\n\n // Constructor is a special case.\n var prop = 'constructor';\n if (has$1(obj, prop) && !keys.contains(prop)) keys.push(prop);\n\n while (nonEnumIdx--) {\n prop = nonEnumerableProps[nonEnumIdx];\n if (prop in obj && obj[prop] !== proto[prop] && !keys.contains(prop)) {\n keys.push(prop);\n }\n }\n }\n\n // Retrieve the names of an object's own properties.\n // Delegates to **ECMAScript 5**'s native `Object.keys`.\n function keys(obj) {\n if (!isObject(obj)) return [];\n if (nativeKeys) return nativeKeys(obj);\n var keys = [];\n for (var key in obj) if (has$1(obj, key)) keys.push(key);\n // Ahem, IE < 9.\n if (hasEnumBug) collectNonEnumProps(obj, keys);\n return keys;\n }\n\n // Is a given array, string, or object empty?\n // An \"empty\" object has no enumerable own-properties.\n function isEmpty(obj) {\n if (obj == null) return true;\n // Skip the more expensive `toString`-based type checks if `obj` has no\n // `.length`.\n var length = getLength(obj);\n if (typeof length == 'number' && (\n isArray(obj) || isString(obj) || isArguments$1(obj)\n )) return length === 0;\n return getLength(keys(obj)) === 0;\n }\n\n // Returns whether an object has a given set of `key:value` pairs.\n function isMatch(object, attrs) {\n var _keys = keys(attrs), length = _keys.length;\n if (object == null) return !length;\n var obj = Object(object);\n for (var i = 0; i < length; i++) {\n var key = _keys[i];\n if (attrs[key] !== obj[key] || !(key in obj)) return false;\n }\n return true;\n }\n\n // If Underscore is called as a function, it returns a wrapped object that can\n // be used OO-style. This wrapper holds altered versions of all functions added\n // through `_.mixin`. Wrapped objects may be chained.\n function _$1(obj) {\n if (obj instanceof _$1) return obj;\n if (!(this instanceof _$1)) return new _$1(obj);\n this._wrapped = obj;\n }\n\n _$1.VERSION = VERSION;\n\n // Extracts the result from a wrapped and chained object.\n _$1.prototype.value = function() {\n return this._wrapped;\n };\n\n // Provide unwrapping proxies for some methods used in engine operations\n // such as arithmetic and JSON stringification.\n _$1.prototype.valueOf = _$1.prototype.toJSON = _$1.prototype.value;\n\n _$1.prototype.toString = function() {\n return String(this._wrapped);\n };\n\n // Internal function to wrap or shallow-copy an ArrayBuffer,\n // typed array or DataView to a new view, reusing the buffer.\n function toBufferView(bufferSource) {\n return new Uint8Array(\n bufferSource.buffer || bufferSource,\n bufferSource.byteOffset || 0,\n getByteLength(bufferSource)\n );\n }\n\n // We use this string twice, so give it a name for minification.\n var tagDataView = '[object DataView]';\n\n // Internal recursive comparison function for `_.isEqual`.\n function eq(a, b, aStack, bStack) {\n // Identical objects are equal. `0 === -0`, but they aren't identical.\n // See the [Harmony `egal` proposal](https://wiki.ecmascript.org/doku.php?id=harmony:egal).\n if (a === b) return a !== 0 || 1 / a === 1 / b;\n // `null` or `undefined` only equal to itself (strict comparison).\n if (a == null || b == null) return false;\n // `NaN`s are equivalent, but non-reflexive.\n if (a !== a) return b !== b;\n // Exhaust primitive checks\n var type = typeof a;\n if (type !== 'function' && type !== 'object' && typeof b != 'object') return false;\n return deepEq(a, b, aStack, bStack);\n }\n\n // Internal recursive comparison function for `_.isEqual`.\n function deepEq(a, b, aStack, bStack) {\n // Unwrap any wrapped objects.\n if (a instanceof _$1) a = a._wrapped;\n if (b instanceof _$1) b = b._wrapped;\n // Compare `[[Class]]` names.\n var className = toString.call(a);\n if (className !== toString.call(b)) return false;\n // Work around a bug in IE 10 - Edge 13.\n if (hasDataViewBug && className == '[object Object]' && isDataView$1(a)) {\n if (!isDataView$1(b)) return false;\n className = tagDataView;\n }\n switch (className) {\n // These types are compared by value.\n case '[object RegExp]':\n // RegExps are coerced to strings for comparison (Note: '' + /a/i === '/a/i')\n case '[object String]':\n // Primitives and their corresponding object wrappers are equivalent; thus, `\"5\"` is\n // equivalent to `new String(\"5\")`.\n return '' + a === '' + b;\n case '[object Number]':\n // `NaN`s are equivalent, but non-reflexive.\n // Object(NaN) is equivalent to NaN.\n if (+a !== +a) return +b !== +b;\n // An `egal` comparison is performed for other numeric values.\n return +a === 0 ? 1 / +a === 1 / b : +a === +b;\n case '[object Date]':\n case '[object Boolean]':\n // Coerce dates and booleans to numeric primitive values. Dates are compared by their\n // millisecond representations. Note that invalid dates with millisecond representations\n // of `NaN` are not equivalent.\n return +a === +b;\n case '[object Symbol]':\n return SymbolProto.valueOf.call(a) === SymbolProto.valueOf.call(b);\n case '[object ArrayBuffer]':\n case tagDataView:\n // Coerce to typed array so we can fall through.\n return deepEq(toBufferView(a), toBufferView(b), aStack, bStack);\n }\n\n var areArrays = className === '[object Array]';\n if (!areArrays && isTypedArray$1(a)) {\n var byteLength = getByteLength(a);\n if (byteLength !== getByteLength(b)) return false;\n if (a.buffer === b.buffer && a.byteOffset === b.byteOffset) return true;\n areArrays = true;\n }\n if (!areArrays) {\n if (typeof a != 'object' || typeof b != 'object') return false;\n\n // Objects with different constructors are not equivalent, but `Object`s or `Array`s\n // from different frames are.\n var aCtor = a.constructor, bCtor = b.constructor;\n if (aCtor !== bCtor && !(isFunction$1(aCtor) && aCtor instanceof aCtor &&\n isFunction$1(bCtor) && bCtor instanceof bCtor)\n && ('constructor' in a && 'constructor' in b)) {\n return false;\n }\n }\n // Assume equality for cyclic structures. The algorithm for detecting cyclic\n // structures is adapted from ES 5.1 section 15.12.3, abstract operation `JO`.\n\n // Initializing stack of traversed objects.\n // It's done here since we only need them for objects and arrays comparison.\n aStack = aStack || [];\n bStack = bStack || [];\n var length = aStack.length;\n while (length--) {\n // Linear search. Performance is inversely proportional to the number of\n // unique nested structures.\n if (aStack[length] === a) return bStack[length] === b;\n }\n\n // Add the first object to the stack of traversed objects.\n aStack.push(a);\n bStack.push(b);\n\n // Recursively compare objects and arrays.\n if (areArrays) {\n // Compare array lengths to determine if a deep comparison is necessary.\n length = a.length;\n if (length !== b.length) return false;\n // Deep compare the contents, ignoring non-numeric properties.\n while (length--) {\n if (!eq(a[length], b[length], aStack, bStack)) return false;\n }\n } else {\n // Deep compare objects.\n var _keys = keys(a), key;\n length = _keys.length;\n // Ensure that both objects contain the same number of properties before comparing deep equality.\n if (keys(b).length !== length) return false;\n while (length--) {\n // Deep compare each member\n key = _keys[length];\n if (!(has$1(b, key) && eq(a[key], b[key], aStack, bStack))) return false;\n }\n }\n // Remove the first object from the stack of traversed objects.\n aStack.pop();\n bStack.pop();\n return true;\n }\n\n // Perform a deep comparison to check if two objects are equal.\n function isEqual(a, b) {\n return eq(a, b);\n }\n\n // Retrieve all the enumerable property names of an object.\n function allKeys(obj) {\n if (!isObject(obj)) return [];\n var keys = [];\n for (var key in obj) keys.push(key);\n // Ahem, IE < 9.\n if (hasEnumBug) collectNonEnumProps(obj, keys);\n return keys;\n }\n\n // Since the regular `Object.prototype.toString` type tests don't work for\n // some types in IE 11, we use a fingerprinting heuristic instead, based\n // on the methods. It's not great, but it's the best we got.\n // The fingerprint method lists are defined below.\n function ie11fingerprint(methods) {\n var length = getLength(methods);\n return function(obj) {\n if (obj == null) return false;\n // `Map`, `WeakMap` and `Set` have no enumerable keys.\n var keys = allKeys(obj);\n if (getLength(keys)) return false;\n for (var i = 0; i < length; i++) {\n if (!isFunction$1(obj[methods[i]])) return false;\n }\n // If we are testing against `WeakMap`, we need to ensure that\n // `obj` doesn't have a `forEach` method in order to distinguish\n // it from a regular `Map`.\n return methods !== weakMapMethods || !isFunction$1(obj[forEachName]);\n };\n }\n\n // In the interest of compact minification, we write\n // each string in the fingerprints only once.\n var forEachName = 'forEach',\n hasName = 'has',\n commonInit = ['clear', 'delete'],\n mapTail = ['get', hasName, 'set'];\n\n // `Map`, `WeakMap` and `Set` each have slightly different\n // combinations of the above sublists.\n var mapMethods = commonInit.concat(forEachName, mapTail),\n weakMapMethods = commonInit.concat(mapTail),\n setMethods = ['add'].concat(commonInit, forEachName, hasName);\n\n var isMap = isIE11 ? ie11fingerprint(mapMethods) : tagTester('Map');\n\n var isWeakMap = isIE11 ? ie11fingerprint(weakMapMethods) : tagTester('WeakMap');\n\n var isSet = isIE11 ? ie11fingerprint(setMethods) : tagTester('Set');\n\n var isWeakSet = tagTester('WeakSet');\n\n // Retrieve the values of an object's properties.\n function values(obj) {\n var _keys = keys(obj);\n var length = _keys.length;\n var values = Array(length);\n for (var i = 0; i < length; i++) {\n values[i] = obj[_keys[i]];\n }\n return values;\n }\n\n // Convert an object into a list of `[key, value]` pairs.\n // The opposite of `_.object` with one argument.\n function pairs(obj) {\n var _keys = keys(obj);\n var length = _keys.length;\n var pairs = Array(length);\n for (var i = 0; i < length; i++) {\n pairs[i] = [_keys[i], obj[_keys[i]]];\n }\n return pairs;\n }\n\n // Invert the keys and values of an object. The values must be serializable.\n function invert(obj) {\n var result = {};\n var _keys = keys(obj);\n for (var i = 0, length = _keys.length; i < length; i++) {\n result[obj[_keys[i]]] = _keys[i];\n }\n return result;\n }\n\n // Return a sorted list of the function names available on the object.\n function functions(obj) {\n var names = [];\n for (var key in obj) {\n if (isFunction$1(obj[key])) names.push(key);\n }\n return names.sort();\n }\n\n // An internal function for creating assigner functions.\n function createAssigner(keysFunc, defaults) {\n return function(obj) {\n var length = arguments.length;\n if (defaults) obj = Object(obj);\n if (length < 2 || obj == null) return obj;\n for (var index = 1; index < length; index++) {\n var source = arguments[index],\n keys = keysFunc(source),\n l = keys.length;\n for (var i = 0; i < l; i++) {\n var key = keys[i];\n if (!defaults || obj[key] === void 0) obj[key] = source[key];\n }\n }\n return obj;\n };\n }\n\n // Extend a given object with all the properties in passed-in object(s).\n var extend = createAssigner(allKeys);\n\n // Assigns a given object with all the own properties in the passed-in\n // object(s).\n // (https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Object/assign)\n var extendOwn = createAssigner(keys);\n\n // Fill in a given object with default properties.\n var defaults = createAssigner(allKeys, true);\n\n // Create a naked function reference for surrogate-prototype-swapping.\n function ctor() {\n return function(){};\n }\n\n // An internal function for creating a new object that inherits from another.\n function baseCreate(prototype) {\n if (!isObject(prototype)) return {};\n if (nativeCreate) return nativeCreate(prototype);\n var Ctor = ctor();\n Ctor.prototype = prototype;\n var result = new Ctor;\n Ctor.prototype = null;\n return result;\n }\n\n // Creates an object that inherits from the given prototype object.\n // If additional properties are provided then they will be added to the\n // created object.\n function create(prototype, props) {\n var result = baseCreate(prototype);\n if (props) extendOwn(result, props);\n return result;\n }\n\n // Create a (shallow-cloned) duplicate of an object.\n function clone(obj) {\n if (!isObject(obj)) return obj;\n return isArray(obj) ? obj.slice() : extend({}, obj);\n }\n\n // Invokes `interceptor` with the `obj` and then returns `obj`.\n // The primary purpose of this method is to \"tap into\" a method chain, in\n // order to perform operations on intermediate results within the chain.\n function tap(obj, interceptor) {\n interceptor(obj);\n return obj;\n }\n\n // Normalize a (deep) property `path` to array.\n // Like `_.iteratee`, this function can be customized.\n function toPath$1(path) {\n return isArray(path) ? path : [path];\n }\n _$1.toPath = toPath$1;\n\n // Internal wrapper for `_.toPath` to enable minification.\n // Similar to `cb` for `_.iteratee`.\n function toPath(path) {\n return _$1.toPath(path);\n }\n\n // Internal function to obtain a nested property in `obj` along `path`.\n function deepGet(obj, path) {\n var length = path.length;\n for (var i = 0; i < length; i++) {\n if (obj == null) return void 0;\n obj = obj[path[i]];\n }\n return length ? obj : void 0;\n }\n\n // Get the value of the (deep) property on `path` from `object`.\n // If any property in `path` does not exist or if the value is\n // `undefined`, return `defaultValue` instead.\n // The `path` is normalized through `_.toPath`.\n function get(object, path, defaultValue) {\n var value = deepGet(object, toPath(path));\n return isUndefined(value) ? defaultValue : value;\n }\n\n // Shortcut function for checking if an object has a given property directly on\n // itself (in other words, not on a prototype). Unlike the internal `has`\n // function, this public version can also traverse nested properties.\n function has(obj, path) {\n path = toPath(path);\n var length = path.length;\n for (var i = 0; i < length; i++) {\n var key = path[i];\n if (!has$1(obj, key)) return false;\n obj = obj[key];\n }\n return !!length;\n }\n\n // Keep the identity function around for default iteratees.\n function identity(value) {\n return value;\n }\n\n // Returns a predicate for checking whether an object has a given set of\n // `key:value` pairs.\n function matcher(attrs) {\n attrs = extendOwn({}, attrs);\n return function(obj) {\n return isMatch(obj, attrs);\n };\n }\n\n // Creates a function that, when passed an object, will traverse that object’s\n // properties down the given `path`, specified as an array of keys or indices.\n function property(path) {\n path = toPath(path);\n return function(obj) {\n return deepGet(obj, path);\n };\n }\n\n // Internal function that returns an efficient (for current engines) version\n // of the passed-in callback, to be repeatedly applied in other Underscore\n // functions.\n function optimizeCb(func, context, argCount) {\n if (context === void 0) return func;\n switch (argCount == null ? 3 : argCount) {\n case 1: return function(value) {\n return func.call(context, value);\n };\n // The 2-argument case is omitted because we’re not using it.\n case 3: return function(value, index, collection) {\n return func.call(context, value, index, collection);\n };\n case 4: return function(accumulator, value, index, collection) {\n return func.call(context, accumulator, value, index, collection);\n };\n }\n return function() {\n return func.apply(context, arguments);\n };\n }\n\n // An internal function to generate callbacks that can be applied to each\n // element in a collection, returning the desired result — either `_.identity`,\n // an arbitrary callback, a property matcher, or a property accessor.\n function baseIteratee(value, context, argCount) {\n if (value == null) return identity;\n if (isFunction$1(value)) return optimizeCb(value, context, argCount);\n if (isObject(value) && !isArray(value)) return matcher(value);\n return property(value);\n }\n\n // External wrapper for our callback generator. Users may customize\n // `_.iteratee` if they want additional predicate/iteratee shorthand styles.\n // This abstraction hides the internal-only `argCount` argument.\n function iteratee(value, context) {\n return baseIteratee(value, context, Infinity);\n }\n _$1.iteratee = iteratee;\n\n // The function we call internally to generate a callback. It invokes\n // `_.iteratee` if overridden, otherwise `baseIteratee`.\n function cb(value, context, argCount) {\n if (_$1.iteratee !== iteratee) return _$1.iteratee(value, context);\n return baseIteratee(value, context, argCount);\n }\n\n // Returns the results of applying the `iteratee` to each element of `obj`.\n // In contrast to `_.map` it returns an object.\n function mapObject(obj, iteratee, context) {\n iteratee = cb(iteratee, context);\n var _keys = keys(obj),\n length = _keys.length,\n results = {};\n for (var index = 0; index < length; index++) {\n var currentKey = _keys[index];\n results[currentKey] = iteratee(obj[currentKey], currentKey, obj);\n }\n return results;\n }\n\n // Predicate-generating function. Often useful outside of Underscore.\n function noop(){}\n\n // Generates a function for a given object that returns a given property.\n function propertyOf(obj) {\n if (obj == null) return noop;\n return function(path) {\n return get(obj, path);\n };\n }\n\n // Run a function **n** times.\n function times(n, iteratee, context) {\n var accum = Array(Math.max(0, n));\n iteratee = optimizeCb(iteratee, context, 1);\n for (var i = 0; i < n; i++) accum[i] = iteratee(i);\n return accum;\n }\n\n // Return a random integer between `min` and `max` (inclusive).\n function random(min, max) {\n if (max == null) {\n max = min;\n min = 0;\n }\n return min + Math.floor(Math.random() * (max - min + 1));\n }\n\n // A (possibly faster) way to get the current timestamp as an integer.\n var now = Date.now || function() {\n return new Date().getTime();\n };\n\n // Internal helper to generate functions for escaping and unescaping strings\n // to/from HTML interpolation.\n function createEscaper(map) {\n var escaper = function(match) {\n return map[match];\n };\n // Regexes for identifying a key that needs to be escaped.\n var source = '(?:' + keys(map).join('|') + ')';\n var testRegexp = RegExp(source);\n var replaceRegexp = RegExp(source, 'g');\n return function(string) {\n string = string == null ? '' : '' + string;\n return testRegexp.test(string) ? string.replace(replaceRegexp, escaper) : string;\n };\n }\n\n // Internal list of HTML entities for escaping.\n var escapeMap = {\n '&': '&',\n '<': '<',\n '>': '>',\n '\"': '"',\n \"'\": ''',\n '`': '`'\n };\n\n // Function for escaping strings to HTML interpolation.\n var _escape = createEscaper(escapeMap);\n\n // Internal list of HTML entities for unescaping.\n var unescapeMap = invert(escapeMap);\n\n // Function for unescaping strings from HTML interpolation.\n var _unescape = createEscaper(unescapeMap);\n\n // By default, Underscore uses ERB-style template delimiters. Change the\n // following template settings to use alternative delimiters.\n var templateSettings = _$1.templateSettings = {\n evaluate: /<%([\\s\\S]+?)%>/g,\n interpolate: /<%=([\\s\\S]+?)%>/g,\n escape: /<%-([\\s\\S]+?)%>/g\n };\n\n // When customizing `_.templateSettings`, if you don't want to define an\n // interpolation, evaluation or escaping regex, we need one that is\n // guaranteed not to match.\n var noMatch = /(.)^/;\n\n // Certain characters need to be escaped so that they can be put into a\n // string literal.\n var escapes = {\n \"'\": \"'\",\n '\\\\': '\\\\',\n '\\r': 'r',\n '\\n': 'n',\n '\\u2028': 'u2028',\n '\\u2029': 'u2029'\n };\n\n var escapeRegExp = /\\\\|'|\\r|\\n|\\u2028|\\u2029/g;\n\n function escapeChar(match) {\n return '\\\\' + escapes[match];\n }\n\n // In order to prevent third-party code injection through\n // `_.templateSettings.variable`, we test it against the following regular\n // expression. It is intentionally a bit more liberal than just matching valid\n // identifiers, but still prevents possible loopholes through defaults or\n // destructuring assignment.\n var bareIdentifier = /^\\s*(\\w|\\$)+\\s*$/;\n\n // JavaScript micro-templating, similar to John Resig's implementation.\n // Underscore templating handles arbitrary delimiters, preserves whitespace,\n // and correctly escapes quotes within interpolated code.\n // NB: `oldSettings` only exists for backwards compatibility.\n function template(text, settings, oldSettings) {\n if (!settings && oldSettings) settings = oldSettings;\n settings = defaults({}, settings, _$1.templateSettings);\n\n // Combine delimiters into one regular expression via alternation.\n var matcher = RegExp([\n (settings.escape || noMatch).source,\n (settings.interpolate || noMatch).source,\n (settings.evaluate || noMatch).source\n ].join('|') + '|$', 'g');\n\n // Compile the template source, escaping string literals appropriately.\n var index = 0;\n var source = \"__p+='\";\n text.replace(matcher, function(match, escape, interpolate, evaluate, offset) {\n source += text.slice(index, offset).replace(escapeRegExp, escapeChar);\n index = offset + match.length;\n\n if (escape) {\n source += \"'+\\n((__t=(\" + escape + \"))==null?'':_.escape(__t))+\\n'\";\n } else if (interpolate) {\n source += \"'+\\n((__t=(\" + interpolate + \"))==null?'':__t)+\\n'\";\n } else if (evaluate) {\n source += \"';\\n\" + evaluate + \"\\n__p+='\";\n }\n\n // Adobe VMs need the match returned to produce the correct offset.\n return match;\n });\n source += \"';\\n\";\n\n var argument = settings.variable;\n if (argument) {\n // Insure against third-party code injection. (CVE-2021-23358)\n if (!bareIdentifier.test(argument)) throw new Error(\n 'variable is not a bare identifier: ' + argument\n );\n } else {\n // If a variable is not specified, place data values in local scope.\n source = 'with(obj||{}){\\n' + source + '}\\n';\n argument = 'obj';\n }\n\n source = \"var __t,__p='',__j=Array.prototype.join,\" +\n \"print=function(){__p+=__j.call(arguments,'');};\\n\" +\n source + 'return __p;\\n';\n\n var render;\n try {\n render = new Function(argument, '_', source);\n } catch (e) {\n e.source = source;\n throw e;\n }\n\n var template = function(data) {\n return render.call(this, data, _$1);\n };\n\n // Provide the compiled source as a convenience for precompilation.\n template.source = 'function(' + argument + '){\\n' + source + '}';\n\n return template;\n }\n\n // Traverses the children of `obj` along `path`. If a child is a function, it\n // is invoked with its parent as context. Returns the value of the final\n // child, or `fallback` if any child is undefined.\n function result(obj, path, fallback) {\n path = toPath(path);\n var length = path.length;\n if (!length) {\n return isFunction$1(fallback) ? fallback.call(obj) : fallback;\n }\n for (var i = 0; i < length; i++) {\n var prop = obj == null ? void 0 : obj[path[i]];\n if (prop === void 0) {\n prop = fallback;\n i = length; // Ensure we don't continue iterating.\n }\n obj = isFunction$1(prop) ? prop.call(obj) : prop;\n }\n return obj;\n }\n\n // Generate a unique integer id (unique within the entire client session).\n // Useful for temporary DOM ids.\n var idCounter = 0;\n function uniqueId(prefix) {\n var id = ++idCounter + '';\n return prefix ? prefix + id : id;\n }\n\n // Start chaining a wrapped Underscore object.\n function chain(obj) {\n var instance = _$1(obj);\n instance._chain = true;\n return instance;\n }\n\n // Internal function to execute `sourceFunc` bound to `context` with optional\n // `args`. Determines whether to execute a function as a constructor or as a\n // normal function.\n function executeBound(sourceFunc, boundFunc, context, callingContext, args) {\n if (!(callingContext instanceof boundFunc)) return sourceFunc.apply(context, args);\n var self = baseCreate(sourceFunc.prototype);\n var result = sourceFunc.apply(self, args);\n if (isObject(result)) return result;\n return self;\n }\n\n // Partially apply a function by creating a version that has had some of its\n // arguments pre-filled, without changing its dynamic `this` context. `_` acts\n // as a placeholder by default, allowing any combination of arguments to be\n // pre-filled. Set `_.partial.placeholder` for a custom placeholder argument.\n var partial = restArguments(function(func, boundArgs) {\n var placeholder = partial.placeholder;\n var bound = function() {\n var position = 0, length = boundArgs.length;\n var args = Array(length);\n for (var i = 0; i < length; i++) {\n args[i] = boundArgs[i] === placeholder ? arguments[position++] : boundArgs[i];\n }\n while (position < arguments.length) args.push(arguments[position++]);\n return executeBound(func, bound, this, this, args);\n };\n return bound;\n });\n\n partial.placeholder = _$1;\n\n // Create a function bound to a given object (assigning `this`, and arguments,\n // optionally).\n var bind = restArguments(function(func, context, args) {\n if (!isFunction$1(func)) throw new TypeError('Bind must be called on a function');\n var bound = restArguments(function(callArgs) {\n return executeBound(func, bound, context, this, args.concat(callArgs));\n });\n return bound;\n });\n\n // Internal helper for collection methods to determine whether a collection\n // should be iterated as an array or as an object.\n // Related: https://people.mozilla.org/~jorendorff/es6-draft.html#sec-tolength\n // Avoids a very nasty iOS 8 JIT bug on ARM-64. #2094\n var isArrayLike = createSizePropertyCheck(getLength);\n\n // Internal implementation of a recursive `flatten` function.\n function flatten$1(input, depth, strict, output) {\n output = output || [];\n if (!depth && depth !== 0) {\n depth = Infinity;\n } else if (depth <= 0) {\n return output.concat(input);\n }\n var idx = output.length;\n for (var i = 0, length = getLength(input); i < length; i++) {\n var value = input[i];\n if (isArrayLike(value) && (isArray(value) || isArguments$1(value))) {\n // Flatten current level of array or arguments object.\n if (depth > 1) {\n flatten$1(value, depth - 1, strict, output);\n idx = output.length;\n } else {\n var j = 0, len = value.length;\n while (j < len) output[idx++] = value[j++];\n }\n } else if (!strict) {\n output[idx++] = value;\n }\n }\n return output;\n }\n\n // Bind a number of an object's methods to that object. Remaining arguments\n // are the method names to be bound. Useful for ensuring that all callbacks\n // defined on an object belong to it.\n var bindAll = restArguments(function(obj, keys) {\n keys = flatten$1(keys, false, false);\n var index = keys.length;\n if (index < 1) throw new Error('bindAll must be passed function names');\n while (index--) {\n var key = keys[index];\n obj[key] = bind(obj[key], obj);\n }\n return obj;\n });\n\n // Memoize an expensive function by storing its results.\n function memoize(func, hasher) {\n var memoize = function(key) {\n var cache = memoize.cache;\n var address = '' + (hasher ? hasher.apply(this, arguments) : key);\n if (!has$1(cache, address)) cache[address] = func.apply(this, arguments);\n return cache[address];\n };\n memoize.cache = {};\n return memoize;\n }\n\n // Delays a function for the given number of milliseconds, and then calls\n // it with the arguments supplied.\n var delay = restArguments(function(func, wait, args) {\n return setTimeout(function() {\n return func.apply(null, args);\n }, wait);\n });\n\n // Defers a function, scheduling it to run after the current call stack has\n // cleared.\n var defer = partial(delay, _$1, 1);\n\n // Returns a function, that, when invoked, will only be triggered at most once\n // during a given window of time. Normally, the throttled function will run\n // as much as it can, without ever going more than once per `wait` duration;\n // but if you'd like to disable the execution on the leading edge, pass\n // `{leading: false}`. To disable execution on the trailing edge, ditto.\n function throttle(func, wait, options) {\n var timeout, context, args, result;\n var previous = 0;\n if (!options) options = {};\n\n var later = function() {\n previous = options.leading === false ? 0 : now();\n timeout = null;\n result = func.apply(context, args);\n if (!timeout) context = args = null;\n };\n\n var throttled = function() {\n var _now = now();\n if (!previous && options.leading === false) previous = _now;\n var remaining = wait - (_now - previous);\n context = this;\n args = arguments;\n if (remaining <= 0 || remaining > wait) {\n if (timeout) {\n clearTimeout(timeout);\n timeout = null;\n }\n previous = _now;\n result = func.apply(context, args);\n if (!timeout) context = args = null;\n } else if (!timeout && options.trailing !== false) {\n timeout = setTimeout(later, remaining);\n }\n return result;\n };\n\n throttled.cancel = function() {\n clearTimeout(timeout);\n previous = 0;\n timeout = context = args = null;\n };\n\n return throttled;\n }\n\n // When a sequence of calls of the returned function ends, the argument\n // function is triggered. The end of a sequence is defined by the `wait`\n // parameter. If `immediate` is passed, the argument function will be\n // triggered at the beginning of the sequence instead of at the end.\n function debounce(func, wait, immediate) {\n var timeout, previous, args, result, context;\n\n var later = function() {\n var passed = now() - previous;\n if (wait > passed) {\n timeout = setTimeout(later, wait - passed);\n } else {\n timeout = null;\n if (!immediate) result = func.apply(context, args);\n // This check is needed because `func` can recursively invoke `debounced`.\n if (!timeout) args = context = null;\n }\n };\n\n var debounced = restArguments(function(_args) {\n context = this;\n args = _args;\n previous = now();\n if (!timeout) {\n timeout = setTimeout(later, wait);\n if (immediate) result = func.apply(context, args);\n }\n return result;\n });\n\n debounced.cancel = function() {\n clearTimeout(timeout);\n timeout = args = context = null;\n };\n\n return debounced;\n }\n\n // Returns the first function passed as an argument to the second,\n // allowing you to adjust arguments, run code before and after, and\n // conditionally execute the original function.\n function wrap(func, wrapper) {\n return partial(wrapper, func);\n }\n\n // Returns a negated version of the passed-in predicate.\n function negate(predicate) {\n return function() {\n return !predicate.apply(this, arguments);\n };\n }\n\n // Returns a function that is the composition of a list of functions, each\n // consuming the return value of the function that follows.\n function compose() {\n var args = arguments;\n var start = args.length - 1;\n return function() {\n var i = start;\n var result = args[start].apply(this, arguments);\n while (i--) result = args[i].call(this, result);\n return result;\n };\n }\n\n // Returns a function that will only be executed on and after the Nth call.\n function after(times, func) {\n return function() {\n if (--times < 1) {\n return func.apply(this, arguments);\n }\n };\n }\n\n // Returns a function that will only be executed up to (but not including) the\n // Nth call.\n function before(times, func) {\n var memo;\n return function() {\n if (--times > 0) {\n memo = func.apply(this, arguments);\n }\n if (times <= 1) func = null;\n return memo;\n };\n }\n\n // Returns a function that will be executed at most one time, no matter how\n // often you call it. Useful for lazy initialization.\n var once = partial(before, 2);\n\n // Returns the first key on an object that passes a truth test.\n function findKey(obj, predicate, context) {\n predicate = cb(predicate, context);\n var _keys = keys(obj), key;\n for (var i = 0, length = _keys.length; i < length; i++) {\n key = _keys[i];\n if (predicate(obj[key], key, obj)) return key;\n }\n }\n\n // Internal function to generate `_.findIndex` and `_.findLastIndex`.\n function createPredicateIndexFinder(dir) {\n return function(array, predicate, context) {\n predicate = cb(predicate, context);\n var length = getLength(array);\n var index = dir > 0 ? 0 : length - 1;\n for (; index >= 0 && index < length; index += dir) {\n if (predicate(array[index], index, array)) return index;\n }\n return -1;\n };\n }\n\n // Returns the first index on an array-like that passes a truth test.\n var findIndex = createPredicateIndexFinder(1);\n\n // Returns the last index on an array-like that passes a truth test.\n var findLastIndex = createPredicateIndexFinder(-1);\n\n // Use a comparator function to figure out the smallest index at which\n // an object should be inserted so as to maintain order. Uses binary search.\n function sortedIndex(array, obj, iteratee, context) {\n iteratee = cb(iteratee, context, 1);\n var value = iteratee(obj);\n var low = 0, high = getLength(array);\n while (low < high) {\n var mid = Math.floor((low + high) / 2);\n if (iteratee(array[mid]) < value) low = mid + 1; else high = mid;\n }\n return low;\n }\n\n // Internal function to generate the `_.indexOf` and `_.lastIndexOf` functions.\n function createIndexFinder(dir, predicateFind, sortedIndex) {\n return function(array, item, idx) {\n var i = 0, length = getLength(array);\n if (typeof idx == 'number') {\n if (dir > 0) {\n i = idx >= 0 ? idx : Math.max(idx + length, i);\n } else {\n length = idx >= 0 ? Math.min(idx + 1, length) : idx + length + 1;\n }\n } else if (sortedIndex && idx && length) {\n idx = sortedIndex(array, item);\n return array[idx] === item ? idx : -1;\n }\n if (item !== item) {\n idx = predicateFind(slice.call(array, i, length), isNaN$1);\n return idx >= 0 ? idx + i : -1;\n }\n for (idx = dir > 0 ? i : length - 1; idx >= 0 && idx < length; idx += dir) {\n if (array[idx] === item) return idx;\n }\n return -1;\n };\n }\n\n // Return the position of the first occurrence of an item in an array,\n // or -1 if the item is not included in the array.\n // If the array is large and already in sort order, pass `true`\n // for **isSorted** to use binary search.\n var indexOf = createIndexFinder(1, findIndex, sortedIndex);\n\n // Return the position of the last occurrence of an item in an array,\n // or -1 if the item is not included in the array.\n var lastIndexOf = createIndexFinder(-1, findLastIndex);\n\n // Return the first value which passes a truth test.\n function find(obj, predicate, context) {\n var keyFinder = isArrayLike(obj) ? findIndex : findKey;\n var key = keyFinder(obj, predicate, context);\n if (key !== void 0 && key !== -1) return obj[key];\n }\n\n // Convenience version of a common use case of `_.find`: getting the first\n // object containing specific `key:value` pairs.\n function findWhere(obj, attrs) {\n return find(obj, matcher(attrs));\n }\n\n // The cornerstone for collection functions, an `each`\n // implementation, aka `forEach`.\n // Handles raw objects in addition to array-likes. Treats all\n // sparse array-likes as if they were dense.\n function each(obj, iteratee, context) {\n iteratee = optimizeCb(iteratee, context);\n var i, length;\n if (isArrayLike(obj)) {\n for (i = 0, length = obj.length; i < length; i++) {\n iteratee(obj[i], i, obj);\n }\n } else {\n var _keys = keys(obj);\n for (i = 0, length = _keys.length; i < length; i++) {\n iteratee(obj[_keys[i]], _keys[i], obj);\n }\n }\n return obj;\n }\n\n // Return the results of applying the iteratee to each element.\n function map(obj, iteratee, context) {\n iteratee = cb(iteratee, context);\n var _keys = !isArrayLike(obj) && keys(obj),\n length = (_keys || obj).length,\n results = Array(length);\n for (var index = 0; index < length; index++) {\n var currentKey = _keys ? _keys[index] : index;\n results[index] = iteratee(obj[currentKey], currentKey, obj);\n }\n return results;\n }\n\n // Internal helper to create a reducing function, iterating left or right.\n function createReduce(dir) {\n // Wrap code that reassigns argument variables in a separate function than\n // the one that accesses `arguments.length` to avoid a perf hit. (#1991)\n var reducer = function(obj, iteratee, memo, initial) {\n var _keys = !isArrayLike(obj) && keys(obj),\n length = (_keys || obj).length,\n index = dir > 0 ? 0 : length - 1;\n if (!initial) {\n memo = obj[_keys ? _keys[index] : index];\n index += dir;\n }\n for (; index >= 0 && index < length; index += dir) {\n var currentKey = _keys ? _keys[index] : index;\n memo = iteratee(memo, obj[currentKey], currentKey, obj);\n }\n return memo;\n };\n\n return function(obj, iteratee, memo, context) {\n var initial = arguments.length >= 3;\n return reducer(obj, optimizeCb(iteratee, context, 4), memo, initial);\n };\n }\n\n // **Reduce** builds up a single result from a list of values, aka `inject`,\n // or `foldl`.\n var reduce = createReduce(1);\n\n // The right-associative version of reduce, also known as `foldr`.\n var reduceRight = createReduce(-1);\n\n // Return all the elements that pass a truth test.\n function filter(obj, predicate, context) {\n var results = [];\n predicate = cb(predicate, context);\n each(obj, function(value, index, list) {\n if (predicate(value, index, list)) results.push(value);\n });\n return results;\n }\n\n // Return all the elements for which a truth test fails.\n function reject(obj, predicate, context) {\n return filter(obj, negate(cb(predicate)), context);\n }\n\n // Determine whether all of the elements pass a truth test.\n function every(obj, predicate, context) {\n predicate = cb(predicate, context);\n var _keys = !isArrayLike(obj) && keys(obj),\n length = (_keys || obj).length;\n for (var index = 0; index < length; index++) {\n var currentKey = _keys ? _keys[index] : index;\n if (!predicate(obj[currentKey], currentKey, obj)) return false;\n }\n return true;\n }\n\n // Determine if at least one element in the object passes a truth test.\n function some(obj, predicate, context) {\n predicate = cb(predicate, context);\n var _keys = !isArrayLike(obj) && keys(obj),\n length = (_keys || obj).length;\n for (var index = 0; index < length; index++) {\n var currentKey = _keys ? _keys[index] : index;\n if (predicate(obj[currentKey], currentKey, obj)) return true;\n }\n return false;\n }\n\n // Determine if the array or object contains a given item (using `===`).\n function contains(obj, item, fromIndex, guard) {\n if (!isArrayLike(obj)) obj = values(obj);\n if (typeof fromIndex != 'number' || guard) fromIndex = 0;\n return indexOf(obj, item, fromIndex) >= 0;\n }\n\n // Invoke a method (with arguments) on every item in a collection.\n var invoke = restArguments(function(obj, path, args) {\n var contextPath, func;\n if (isFunction$1(path)) {\n func = path;\n } else {\n path = toPath(path);\n contextPath = path.slice(0, -1);\n path = path[path.length - 1];\n }\n return map(obj, function(context) {\n var method = func;\n if (!method) {\n if (contextPath && contextPath.length) {\n context = deepGet(context, contextPath);\n }\n if (context == null) return void 0;\n method = context[path];\n }\n return method == null ? method : method.apply(context, args);\n });\n });\n\n // Convenience version of a common use case of `_.map`: fetching a property.\n function pluck(obj, key) {\n return map(obj, property(key));\n }\n\n // Convenience version of a common use case of `_.filter`: selecting only\n // objects containing specific `key:value` pairs.\n function where(obj, attrs) {\n return filter(obj, matcher(attrs));\n }\n\n // Return the maximum element (or element-based computation).\n function max(obj, iteratee, context) {\n var result = -Infinity, lastComputed = -Infinity,\n value, computed;\n if (iteratee == null || (typeof iteratee == 'number' && typeof obj[0] != 'object' && obj != null)) {\n obj = isArrayLike(obj) ? obj : values(obj);\n for (var i = 0, length = obj.length; i < length; i++) {\n value = obj[i];\n if (value != null && value > result) {\n result = value;\n }\n }\n } else {\n iteratee = cb(iteratee, context);\n each(obj, function(v, index, list) {\n computed = iteratee(v, index, list);\n if (computed > lastComputed || (computed === -Infinity && result === -Infinity)) {\n result = v;\n lastComputed = computed;\n }\n });\n }\n return result;\n }\n\n // Return the minimum element (or element-based computation).\n function min(obj, iteratee, context) {\n var result = Infinity, lastComputed = Infinity,\n value, computed;\n if (iteratee == null || (typeof iteratee == 'number' && typeof obj[0] != 'object' && obj != null)) {\n obj = isArrayLike(obj) ? obj : values(obj);\n for (var i = 0, length = obj.length; i < length; i++) {\n value = obj[i];\n if (value != null && value < result) {\n result = value;\n }\n }\n } else {\n iteratee = cb(iteratee, context);\n each(obj, function(v, index, list) {\n computed = iteratee(v, index, list);\n if (computed < lastComputed || (computed === Infinity && result === Infinity)) {\n result = v;\n lastComputed = computed;\n }\n });\n }\n return result;\n }\n\n // Safely create a real, live array from anything iterable.\n var reStrSymbol = /[^\\ud800-\\udfff]|[\\ud800-\\udbff][\\udc00-\\udfff]|[\\ud800-\\udfff]/g;\n function toArray(obj) {\n if (!obj) return [];\n if (isArray(obj)) return slice.call(obj);\n if (isString(obj)) {\n // Keep surrogate pair characters together.\n return obj.match(reStrSymbol);\n }\n if (isArrayLike(obj)) return map(obj, identity);\n return values(obj);\n }\n\n // Sample **n** random values from a collection using the modern version of the\n // [Fisher-Yates shuffle](https://en.wikipedia.org/wiki/Fisher–Yates_shuffle).\n // If **n** is not specified, returns a single random element.\n // The internal `guard` argument allows it to work with `_.map`.\n function sample(obj, n, guard) {\n if (n == null || guard) {\n if (!isArrayLike(obj)) obj = values(obj);\n return obj[random(obj.length - 1)];\n }\n var sample = toArray(obj);\n var length = getLength(sample);\n n = Math.max(Math.min(n, length), 0);\n var last = length - 1;\n for (var index = 0; index < n; index++) {\n var rand = random(index, last);\n var temp = sample[index];\n sample[index] = sample[rand];\n sample[rand] = temp;\n }\n return sample.slice(0, n);\n }\n\n // Shuffle a collection.\n function shuffle(obj) {\n return sample(obj, Infinity);\n }\n\n // Sort the object's values by a criterion produced by an iteratee.\n function sortBy(obj, iteratee, context) {\n var index = 0;\n iteratee = cb(iteratee, context);\n return pluck(map(obj, function(value, key, list) {\n return {\n value: value,\n index: index++,\n criteria: iteratee(value, key, list)\n };\n }).sort(function(left, right) {\n var a = left.criteria;\n var b = right.criteria;\n if (a !== b) {\n if (a > b || a === void 0) return 1;\n if (a < b || b === void 0) return -1;\n }\n return left.index - right.index;\n }), 'value');\n }\n\n // An internal function used for aggregate \"group by\" operations.\n function group(behavior, partition) {\n return function(obj, iteratee, context) {\n var result = partition ? [[], []] : {};\n iteratee = cb(iteratee, context);\n each(obj, function(value, index) {\n var key = iteratee(value, index, obj);\n behavior(result, value, key);\n });\n return result;\n };\n }\n\n // Groups the object's values by a criterion. Pass either a string attribute\n // to group by, or a function that returns the criterion.\n var groupBy = group(function(result, value, key) {\n if (has$1(result, key)) result[key].push(value); else result[key] = [value];\n });\n\n // Indexes the object's values by a criterion, similar to `_.groupBy`, but for\n // when you know that your index values will be unique.\n var indexBy = group(function(result, value, key) {\n result[key] = value;\n });\n\n // Counts instances of an object that group by a certain criterion. Pass\n // either a string attribute to count by, or a function that returns the\n // criterion.\n var countBy = group(function(result, value, key) {\n if (has$1(result, key)) result[key]++; else result[key] = 1;\n });\n\n // Split a collection into two arrays: one whose elements all pass the given\n // truth test, and one whose elements all do not pass the truth test.\n var partition = group(function(result, value, pass) {\n result[pass ? 0 : 1].push(value);\n }, true);\n\n // Return the number of elements in a collection.\n function size(obj) {\n if (obj == null) return 0;\n return isArrayLike(obj) ? obj.length : keys(obj).length;\n }\n\n // Internal `_.pick` helper function to determine whether `key` is an enumerable\n // property name of `obj`.\n function keyInObj(value, key, obj) {\n return key in obj;\n }\n\n // Return a copy of the object only containing the allowed properties.\n var pick = restArguments(function(obj, keys) {\n var result = {}, iteratee = keys[0];\n if (obj == null) return result;\n if (isFunction$1(iteratee)) {\n if (keys.length > 1) iteratee = optimizeCb(iteratee, keys[1]);\n keys = allKeys(obj);\n } else {\n iteratee = keyInObj;\n keys = flatten$1(keys, false, false);\n obj = Object(obj);\n }\n for (var i = 0, length = keys.length; i < length; i++) {\n var key = keys[i];\n var value = obj[key];\n if (iteratee(value, key, obj)) result[key] = value;\n }\n return result;\n });\n\n // Return a copy of the object without the disallowed properties.\n var omit = restArguments(function(obj, keys) {\n var iteratee = keys[0], context;\n if (isFunction$1(iteratee)) {\n iteratee = negate(iteratee);\n if (keys.length > 1) context = keys[1];\n } else {\n keys = map(flatten$1(keys, false, false), String);\n iteratee = function(value, key) {\n return !contains(keys, key);\n };\n }\n return pick(obj, iteratee, context);\n });\n\n // Returns everything but the last entry of the array. Especially useful on\n // the arguments object. Passing **n** will return all the values in\n // the array, excluding the last N.\n function initial(array, n, guard) {\n return slice.call(array, 0, Math.max(0, array.length - (n == null || guard ? 1 : n)));\n }\n\n // Get the first element of an array. Passing **n** will return the first N\n // values in the array. The **guard** check allows it to work with `_.map`.\n function first(array, n, guard) {\n if (array == null || array.length < 1) return n == null || guard ? void 0 : [];\n if (n == null || guard) return array[0];\n return initial(array, array.length - n);\n }\n\n // Returns everything but the first entry of the `array`. Especially useful on\n // the `arguments` object. Passing an **n** will return the rest N values in the\n // `array`.\n function rest(array, n, guard) {\n return slice.call(array, n == null || guard ? 1 : n);\n }\n\n // Get the last element of an array. Passing **n** will return the last N\n // values in the array.\n function last(array, n, guard) {\n if (array == null || array.length < 1) return n == null || guard ? void 0 : [];\n if (n == null || guard) return array[array.length - 1];\n return rest(array, Math.max(0, array.length - n));\n }\n\n // Trim out all falsy values from an array.\n function compact(array) {\n return filter(array, Boolean);\n }\n\n // Flatten out an array, either recursively (by default), or up to `depth`.\n // Passing `true` or `false` as `depth` means `1` or `Infinity`, respectively.\n function flatten(array, depth) {\n return flatten$1(array, depth, false);\n }\n\n // Take the difference between one array and a number of other arrays.\n // Only the elements present in just the first array will remain.\n var difference = restArguments(function(array, rest) {\n rest = flatten$1(rest, true, true);\n return filter(array, function(value){\n return !contains(rest, value);\n });\n });\n\n // Return a version of the array that does not contain the specified value(s).\n var without = restArguments(function(array, otherArrays) {\n return difference(array, otherArrays);\n });\n\n // Produce a duplicate-free version of the array. If the array has already\n // been sorted, you have the option of using a faster algorithm.\n // The faster algorithm will not work with an iteratee if the iteratee\n // is not a one-to-one function, so providing an iteratee will disable\n // the faster algorithm.\n function uniq(array, isSorted, iteratee, context) {\n if (!isBoolean(isSorted)) {\n context = iteratee;\n iteratee = isSorted;\n isSorted = false;\n }\n if (iteratee != null) iteratee = cb(iteratee, context);\n var result = [];\n var seen = [];\n for (var i = 0, length = getLength(array); i < length; i++) {\n var value = array[i],\n computed = iteratee ? iteratee(value, i, array) : value;\n if (isSorted && !iteratee) {\n if (!i || seen !== computed) result.push(value);\n seen = computed;\n } else if (iteratee) {\n if (!contains(seen, computed)) {\n seen.push(computed);\n result.push(value);\n }\n } else if (!contains(result, value)) {\n result.push(value);\n }\n }\n return result;\n }\n\n // Produce an array that contains the union: each distinct element from all of\n // the passed-in arrays.\n var union = restArguments(function(arrays) {\n return uniq(flatten$1(arrays, true, true));\n });\n\n // Produce an array that contains every item shared between all the\n // passed-in arrays.\n function intersection(array) {\n var result = [];\n var argsLength = arguments.length;\n for (var i = 0, length = getLength(array); i < length; i++) {\n var item = array[i];\n if (contains(result, item)) continue;\n var j;\n for (j = 1; j < argsLength; j++) {\n if (!contains(arguments[j], item)) break;\n }\n if (j === argsLength) result.push(item);\n }\n return result;\n }\n\n // Complement of zip. Unzip accepts an array of arrays and groups\n // each array's elements on shared indices.\n function unzip(array) {\n var length = (array && max(array, getLength).length) || 0;\n var result = Array(length);\n\n for (var index = 0; index < length; index++) {\n result[index] = pluck(array, index);\n }\n return result;\n }\n\n // Zip together multiple lists into a single array -- elements that share\n // an index go together.\n var zip = restArguments(unzip);\n\n // Converts lists into objects. Pass either a single array of `[key, value]`\n // pairs, or two parallel arrays of the same length -- one of keys, and one of\n // the corresponding values. Passing by pairs is the reverse of `_.pairs`.\n function object(list, values) {\n var result = {};\n for (var i = 0, length = getLength(list); i < length; i++) {\n if (values) {\n result[list[i]] = values[i];\n } else {\n result[list[i][0]] = list[i][1];\n }\n }\n return result;\n }\n\n // Generate an integer Array containing an arithmetic progression. A port of\n // the native Python `range()` function. See\n // [the Python documentation](https://docs.python.org/library/functions.html#range).\n function range(start, stop, step) {\n if (stop == null) {\n stop = start || 0;\n start = 0;\n }\n if (!step) {\n step = stop < start ? -1 : 1;\n }\n\n var length = Math.max(Math.ceil((stop - start) / step), 0);\n var range = Array(length);\n\n for (var idx = 0; idx < length; idx++, start += step) {\n range[idx] = start;\n }\n\n return range;\n }\n\n // Chunk a single array into multiple arrays, each containing `count` or fewer\n // items.\n function chunk(array, count) {\n if (count == null || count < 1) return [];\n var result = [];\n var i = 0, length = array.length;\n while (i < length) {\n result.push(slice.call(array, i, i += count));\n }\n return result;\n }\n\n // Helper function to continue chaining intermediate results.\n function chainResult(instance, obj) {\n return instance._chain ? _$1(obj).chain() : obj;\n }\n\n // Add your own custom functions to the Underscore object.\n function mixin(obj) {\n each(functions(obj), function(name) {\n var func = _$1[name] = obj[name];\n _$1.prototype[name] = function() {\n var args = [this._wrapped];\n push.apply(args, arguments);\n return chainResult(this, func.apply(_$1, args));\n };\n });\n return _$1;\n }\n\n // Add all mutator `Array` functions to the wrapper.\n each(['pop', 'push', 'reverse', 'shift', 'sort', 'splice', 'unshift'], function(name) {\n var method = ArrayProto[name];\n _$1.prototype[name] = function() {\n var obj = this._wrapped;\n if (obj != null) {\n method.apply(obj, arguments);\n if ((name === 'shift' || name === 'splice') && obj.length === 0) {\n delete obj[0];\n }\n }\n return chainResult(this, obj);\n };\n });\n\n // Add all accessor `Array` functions to the wrapper.\n each(['concat', 'join', 'slice'], function(name) {\n var method = ArrayProto[name];\n _$1.prototype[name] = function() {\n var obj = this._wrapped;\n if (obj != null) obj = method.apply(obj, arguments);\n return chainResult(this, obj);\n };\n });\n\n // Named Exports\n\n var allExports = {\n __proto__: null,\n VERSION: VERSION,\n restArguments: restArguments,\n isObject: isObject,\n isNull: isNull,\n isUndefined: isUndefined,\n isBoolean: isBoolean,\n isElement: isElement,\n isString: isString,\n isNumber: isNumber,\n isDate: isDate,\n isRegExp: isRegExp,\n isError: isError,\n isSymbol: isSymbol,\n isArrayBuffer: isArrayBuffer,\n isDataView: isDataView$1,\n isArray: isArray,\n isFunction: isFunction$1,\n isArguments: isArguments$1,\n isFinite: isFinite$1,\n isNaN: isNaN$1,\n isTypedArray: isTypedArray$1,\n isEmpty: isEmpty,\n isMatch: isMatch,\n isEqual: isEqual,\n isMap: isMap,\n isWeakMap: isWeakMap,\n isSet: isSet,\n isWeakSet: isWeakSet,\n keys: keys,\n allKeys: allKeys,\n values: values,\n pairs: pairs,\n invert: invert,\n functions: functions,\n methods: functions,\n extend: extend,\n extendOwn: extendOwn,\n assign: extendOwn,\n defaults: defaults,\n create: create,\n clone: clone,\n tap: tap,\n get: get,\n has: has,\n mapObject: mapObject,\n identity: identity,\n constant: constant,\n noop: noop,\n toPath: toPath$1,\n property: property,\n propertyOf: propertyOf,\n matcher: matcher,\n matches: matcher,\n times: times,\n random: random,\n now: now,\n escape: _escape,\n unescape: _unescape,\n templateSettings: templateSettings,\n template: template,\n result: result,\n uniqueId: uniqueId,\n chain: chain,\n iteratee: iteratee,\n partial: partial,\n bind: bind,\n bindAll: bindAll,\n memoize: memoize,\n delay: delay,\n defer: defer,\n throttle: throttle,\n debounce: debounce,\n wrap: wrap,\n negate: negate,\n compose: compose,\n after: after,\n before: before,\n once: once,\n findKey: findKey,\n findIndex: findIndex,\n findLastIndex: findLastIndex,\n sortedIndex: sortedIndex,\n indexOf: indexOf,\n lastIndexOf: lastIndexOf,\n find: find,\n detect: find,\n findWhere: findWhere,\n each: each,\n forEach: each,\n map: map,\n collect: map,\n reduce: reduce,\n foldl: reduce,\n inject: reduce,\n reduceRight: reduceRight,\n foldr: reduceRight,\n filter: filter,\n select: filter,\n reject: reject,\n every: every,\n all: every,\n some: some,\n any: some,\n contains: contains,\n includes: contains,\n include: contains,\n invoke: invoke,\n pluck: pluck,\n where: where,\n max: max,\n min: min,\n shuffle: shuffle,\n sample: sample,\n sortBy: sortBy,\n groupBy: groupBy,\n indexBy: indexBy,\n countBy: countBy,\n partition: partition,\n toArray: toArray,\n size: size,\n pick: pick,\n omit: omit,\n first: first,\n head: first,\n take: first,\n initial: initial,\n last: last,\n rest: rest,\n tail: rest,\n drop: rest,\n compact: compact,\n flatten: flatten,\n without: without,\n uniq: uniq,\n unique: uniq,\n union: union,\n intersection: intersection,\n difference: difference,\n unzip: unzip,\n transpose: unzip,\n zip: zip,\n object: object,\n range: range,\n chunk: chunk,\n mixin: mixin,\n 'default': _$1\n };\n\n // Default Export\n\n // Add all of the Underscore functions to the wrapper object.\n var _ = mixin(allExports);\n // Legacy Node.js API.\n _._ = _;\n\n return _;\n\n})));\n//# sourceMappingURL=underscore-umd.js.map\n","// Backbone.js 1.6.0\n\n// (c) 2010-2024 Jeremy Ashkenas and DocumentCloud\n// Backbone may be freely distributed under the MIT license.\n// For all details and documentation:\n// http://backbonejs.org\n\n(function(factory) {\n\n // Establish the root object, `window` (`self`) in the browser, or `global` on the server.\n // We use `self` instead of `window` for `WebWorker` support.\n var root = typeof self == 'object' && self.self === self && self ||\n typeof global == 'object' && global.global === global && global;\n\n // Set up Backbone appropriately for the environment. Start with AMD.\n if (typeof define === 'function' && define.amd) {\n define(['underscore', 'jquery', 'exports'], function(_, $, exports) {\n // Export global even in AMD case in case this script is loaded with\n // others that may still expect a global Backbone.\n root.Backbone = factory(root, exports, _, $);\n });\n\n // Next for Node.js or CommonJS. jQuery may not be needed as a module.\n } else if (typeof exports !== 'undefined') {\n var _ = require('underscore'), $;\n try { $ = require('jquery'); } catch (e) {}\n factory(root, exports, _, $);\n\n // Finally, as a browser global.\n } else {\n root.Backbone = factory(root, {}, root._, root.jQuery || root.Zepto || root.ender || root.$);\n }\n\n})(function(root, Backbone, _, $) {\n\n // Initial Setup\n // -------------\n\n // Save the previous value of the `Backbone` variable, so that it can be\n // restored later on, if `noConflict` is used.\n var previousBackbone = root.Backbone;\n\n // Create a local reference to a common array method we'll want to use later.\n var slice = Array.prototype.slice;\n\n // Current version of the library. Keep in sync with `package.json`.\n Backbone.VERSION = '1.6.0';\n\n // For Backbone's purposes, jQuery, Zepto, Ender, or My Library (kidding) owns\n // the `$` variable.\n Backbone.$ = $;\n\n // Runs Backbone.js in *noConflict* mode, returning the `Backbone` variable\n // to its previous owner. Returns a reference to this Backbone object.\n Backbone.noConflict = function() {\n root.Backbone = previousBackbone;\n return this;\n };\n\n // Turn on `emulateHTTP` to support legacy HTTP servers. Setting this option\n // will fake `\"PATCH\"`, `\"PUT\"` and `\"DELETE\"` requests via the `_method` parameter and\n // set a `X-Http-Method-Override` header.\n Backbone.emulateHTTP = false;\n\n // Turn on `emulateJSON` to support legacy servers that can't deal with direct\n // `application/json` requests ... this will encode the body as\n // `application/x-www-form-urlencoded` instead and will send the model in a\n // form param named `model`.\n Backbone.emulateJSON = false;\n\n // Backbone.Events\n // ---------------\n\n // A module that can be mixed in to *any object* in order to provide it with\n // a custom event channel. You may bind a callback to an event with `on` or\n // remove with `off`; `trigger`-ing an event fires all callbacks in\n // succession.\n //\n // var object = {};\n // _.extend(object, Backbone.Events);\n // object.on('expand', function(){ alert('expanded'); });\n // object.trigger('expand');\n //\n var Events = Backbone.Events = {};\n\n // Regular expression used to split event strings.\n var eventSplitter = /\\s+/;\n\n // A private global variable to share between listeners and listenees.\n var _listening;\n\n // Iterates over the standard `event, callback` (as well as the fancy multiple\n // space-separated events `\"change blur\", callback` and jQuery-style event\n // maps `{event: callback}`).\n var eventsApi = function(iteratee, events, name, callback, opts) {\n var i = 0, names;\n if (name && typeof name === 'object') {\n // Handle event maps.\n if (callback !== void 0 && 'context' in opts && opts.context === void 0) opts.context = callback;\n for (names = _.keys(name); i < names.length ; i++) {\n events = eventsApi(iteratee, events, names[i], name[names[i]], opts);\n }\n } else if (name && eventSplitter.test(name)) {\n // Handle space-separated event names by delegating them individually.\n for (names = name.split(eventSplitter); i < names.length; i++) {\n events = iteratee(events, names[i], callback, opts);\n }\n } else {\n // Finally, standard events.\n events = iteratee(events, name, callback, opts);\n }\n return events;\n };\n\n // Bind an event to a `callback` function. Passing `\"all\"` will bind\n // the callback to all events fired.\n Events.on = function(name, callback, context) {\n this._events = eventsApi(onApi, this._events || {}, name, callback, {\n context: context,\n ctx: this,\n listening: _listening\n });\n\n if (_listening) {\n var listeners = this._listeners || (this._listeners = {});\n listeners[_listening.id] = _listening;\n // Allow the listening to use a counter, instead of tracking\n // callbacks for library interop\n _listening.interop = false;\n }\n\n return this;\n };\n\n // Inversion-of-control versions of `on`. Tell *this* object to listen to\n // an event in another object... keeping track of what it's listening to\n // for easier unbinding later.\n Events.listenTo = function(obj, name, callback) {\n if (!obj) return this;\n var id = obj._listenId || (obj._listenId = _.uniqueId('l'));\n var listeningTo = this._listeningTo || (this._listeningTo = {});\n var listening = _listening = listeningTo[id];\n\n // This object is not listening to any other events on `obj` yet.\n // Setup the necessary references to track the listening callbacks.\n if (!listening) {\n this._listenId || (this._listenId = _.uniqueId('l'));\n listening = _listening = listeningTo[id] = new Listening(this, obj);\n }\n\n // Bind callbacks on obj.\n var error = tryCatchOn(obj, name, callback, this);\n _listening = void 0;\n\n if (error) throw error;\n // If the target obj is not Backbone.Events, track events manually.\n if (listening.interop) listening.on(name, callback);\n\n return this;\n };\n\n // The reducing API that adds a callback to the `events` object.\n var onApi = function(events, name, callback, options) {\n if (callback) {\n var handlers = events[name] || (events[name] = []);\n var context = options.context, ctx = options.ctx, listening = options.listening;\n if (listening) listening.count++;\n\n handlers.push({callback: callback, context: context, ctx: context || ctx, listening: listening});\n }\n return events;\n };\n\n // An try-catch guarded #on function, to prevent poisoning the global\n // `_listening` variable.\n var tryCatchOn = function(obj, name, callback, context) {\n try {\n obj.on(name, callback, context);\n } catch (e) {\n return e;\n }\n };\n\n // Remove one or many callbacks. If `context` is null, removes all\n // callbacks with that function. If `callback` is null, removes all\n // callbacks for the event. If `name` is null, removes all bound\n // callbacks for all events.\n Events.off = function(name, callback, context) {\n if (!this._events) return this;\n this._events = eventsApi(offApi, this._events, name, callback, {\n context: context,\n listeners: this._listeners\n });\n\n return this;\n };\n\n // Tell this object to stop listening to either specific events ... or\n // to every object it's currently listening to.\n Events.stopListening = function(obj, name, callback) {\n var listeningTo = this._listeningTo;\n if (!listeningTo) return this;\n\n var ids = obj ? [obj._listenId] : _.keys(listeningTo);\n for (var i = 0; i < ids.length; i++) {\n var listening = listeningTo[ids[i]];\n\n // If listening doesn't exist, this object is not currently\n // listening to obj. Break out early.\n if (!listening) break;\n\n listening.obj.off(name, callback, this);\n if (listening.interop) listening.off(name, callback);\n }\n if (_.isEmpty(listeningTo)) this._listeningTo = void 0;\n\n return this;\n };\n\n // The reducing API that removes a callback from the `events` object.\n var offApi = function(events, name, callback, options) {\n if (!events) return;\n\n var context = options.context, listeners = options.listeners;\n var i = 0, names;\n\n // Delete all event listeners and \"drop\" events.\n if (!name && !context && !callback) {\n for (names = _.keys(listeners); i < names.length; i++) {\n listeners[names[i]].cleanup();\n }\n return;\n }\n\n names = name ? [name] : _.keys(events);\n for (; i < names.length; i++) {\n name = names[i];\n var handlers = events[name];\n\n // Bail out if there are no events stored.\n if (!handlers) break;\n\n // Find any remaining events.\n var remaining = [];\n for (var j = 0; j < handlers.length; j++) {\n var handler = handlers[j];\n if (\n callback && callback !== handler.callback &&\n callback !== handler.callback._callback ||\n context && context !== handler.context\n ) {\n remaining.push(handler);\n } else {\n var listening = handler.listening;\n if (listening) listening.off(name, callback);\n }\n }\n\n // Replace events if there are any remaining. Otherwise, clean up.\n if (remaining.length) {\n events[name] = remaining;\n } else {\n delete events[name];\n }\n }\n\n return events;\n };\n\n // Bind an event to only be triggered a single time. After the first time\n // the callback is invoked, its listener will be removed. If multiple events\n // are passed in using the space-separated syntax, the handler will fire\n // once for each event, not once for a combination of all events.\n Events.once = function(name, callback, context) {\n // Map the event into a `{event: once}` object.\n var events = eventsApi(onceMap, {}, name, callback, this.off.bind(this));\n if (typeof name === 'string' && context == null) callback = void 0;\n return this.on(events, callback, context);\n };\n\n // Inversion-of-control versions of `once`.\n Events.listenToOnce = function(obj, name, callback) {\n // Map the event into a `{event: once}` object.\n var events = eventsApi(onceMap, {}, name, callback, this.stopListening.bind(this, obj));\n return this.listenTo(obj, events);\n };\n\n // Reduces the event callbacks into a map of `{event: onceWrapper}`.\n // `offer` unbinds the `onceWrapper` after it has been called.\n var onceMap = function(map, name, callback, offer) {\n if (callback) {\n var once = map[name] = _.once(function() {\n offer(name, once);\n callback.apply(this, arguments);\n });\n once._callback = callback;\n }\n return map;\n };\n\n // Trigger one or many events, firing all bound callbacks. Callbacks are\n // passed the same arguments as `trigger` is, apart from the event name\n // (unless you're listening on `\"all\"`, which will cause your callback to\n // receive the true name of the event as the first argument).\n Events.trigger = function(name) {\n if (!this._events) return this;\n\n var length = Math.max(0, arguments.length - 1);\n var args = Array(length);\n for (var i = 0; i < length; i++) args[i] = arguments[i + 1];\n\n eventsApi(triggerApi, this._events, name, void 0, args);\n return this;\n };\n\n // Handles triggering the appropriate event callbacks.\n var triggerApi = function(objEvents, name, callback, args) {\n if (objEvents) {\n var events = objEvents[name];\n var allEvents = objEvents.all;\n if (events && allEvents) allEvents = allEvents.slice();\n if (events) triggerEvents(events, args);\n if (allEvents) triggerEvents(allEvents, [name].concat(args));\n }\n return objEvents;\n };\n\n // A difficult-to-believe, but optimized internal dispatch function for\n // triggering events. Tries to keep the usual cases speedy (most internal\n // Backbone events have 3 arguments).\n var triggerEvents = function(events, args) {\n var ev, i = -1, l = events.length, a1 = args[0], a2 = args[1], a3 = args[2];\n switch (args.length) {\n case 0: while (++i < l) (ev = events[i]).callback.call(ev.ctx); return;\n case 1: while (++i < l) (ev = events[i]).callback.call(ev.ctx, a1); return;\n case 2: while (++i < l) (ev = events[i]).callback.call(ev.ctx, a1, a2); return;\n case 3: while (++i < l) (ev = events[i]).callback.call(ev.ctx, a1, a2, a3); return;\n default: while (++i < l) (ev = events[i]).callback.apply(ev.ctx, args); return;\n }\n };\n\n // A listening class that tracks and cleans up memory bindings\n // when all callbacks have been offed.\n var Listening = function(listener, obj) {\n this.id = listener._listenId;\n this.listener = listener;\n this.obj = obj;\n this.interop = true;\n this.count = 0;\n this._events = void 0;\n };\n\n Listening.prototype.on = Events.on;\n\n // Offs a callback (or several).\n // Uses an optimized counter if the listenee uses Backbone.Events.\n // Otherwise, falls back to manual tracking to support events\n // library interop.\n Listening.prototype.off = function(name, callback) {\n var cleanup;\n if (this.interop) {\n this._events = eventsApi(offApi, this._events, name, callback, {\n context: void 0,\n listeners: void 0\n });\n cleanup = !this._events;\n } else {\n this.count--;\n cleanup = this.count === 0;\n }\n if (cleanup) this.cleanup();\n };\n\n // Cleans up memory bindings between the listener and the listenee.\n Listening.prototype.cleanup = function() {\n delete this.listener._listeningTo[this.obj._listenId];\n if (!this.interop) delete this.obj._listeners[this.id];\n };\n\n // Aliases for backwards compatibility.\n Events.bind = Events.on;\n Events.unbind = Events.off;\n\n // Allow the `Backbone` object to serve as a global event bus, for folks who\n // want global \"pubsub\" in a convenient place.\n _.extend(Backbone, Events);\n\n // Backbone.Model\n // --------------\n\n // Backbone **Models** are the basic data object in the framework --\n // frequently representing a row in a table in a database on your server.\n // A discrete chunk of data and a bunch of useful, related methods for\n // performing computations and transformations on that data.\n\n // Create a new model with the specified attributes. A client id (`cid`)\n // is automatically generated and assigned for you.\n var Model = Backbone.Model = function(attributes, options) {\n var attrs = attributes || {};\n options || (options = {});\n this.preinitialize.apply(this, arguments);\n this.cid = _.uniqueId(this.cidPrefix);\n this.attributes = {};\n if (options.collection) this.collection = options.collection;\n if (options.parse) attrs = this.parse(attrs, options) || {};\n var defaults = _.result(this, 'defaults');\n\n // Just _.defaults would work fine, but the additional _.extends\n // is in there for historical reasons. See #3843.\n attrs = _.defaults(_.extend({}, defaults, attrs), defaults);\n\n this.set(attrs, options);\n this.changed = {};\n this.initialize.apply(this, arguments);\n };\n\n // Attach all inheritable methods to the Model prototype.\n _.extend(Model.prototype, Events, {\n\n // A hash of attributes whose current and previous value differ.\n changed: null,\n\n // The value returned during the last failed validation.\n validationError: null,\n\n // The default name for the JSON `id` attribute is `\"id\"`. MongoDB and\n // CouchDB users may want to set this to `\"_id\"`.\n idAttribute: 'id',\n\n // The prefix is used to create the client id which is used to identify models locally.\n // You may want to override this if you're experiencing name clashes with model ids.\n cidPrefix: 'c',\n\n // preinitialize is an empty function by default. You can override it with a function\n // or object. preinitialize will run before any instantiation logic is run in the Model.\n preinitialize: function(){},\n\n // Initialize is an empty function by default. Override it with your own\n // initialization logic.\n initialize: function(){},\n\n // Return a copy of the model's `attributes` object.\n toJSON: function(options) {\n return _.clone(this.attributes);\n },\n\n // Proxy `Backbone.sync` by default -- but override this if you need\n // custom syncing semantics for *this* particular model.\n sync: function() {\n return Backbone.sync.apply(this, arguments);\n },\n\n // Get the value of an attribute.\n get: function(attr) {\n return this.attributes[attr];\n },\n\n // Get the HTML-escaped value of an attribute.\n escape: function(attr) {\n return _.escape(this.get(attr));\n },\n\n // Returns `true` if the attribute contains a value that is not null\n // or undefined.\n has: function(attr) {\n return this.get(attr) != null;\n },\n\n // Special-cased proxy to underscore's `_.matches` method.\n matches: function(attrs) {\n return !!_.iteratee(attrs, this)(this.attributes);\n },\n\n // Set a hash of model attributes on the object, firing `\"change\"`. This is\n // the core primitive operation of a model, updating the data and notifying\n // anyone who needs to know about the change in state. The heart of the beast.\n set: function(key, val, options) {\n if (key == null) return this;\n\n // Handle both `\"key\", value` and `{key: value}` -style arguments.\n var attrs;\n if (typeof key === 'object') {\n attrs = key;\n options = val;\n } else {\n (attrs = {})[key] = val;\n }\n\n options || (options = {});\n\n // Run validation.\n if (!this._validate(attrs, options)) return false;\n\n // Extract attributes and options.\n var unset = options.unset;\n var silent = options.silent;\n var changes = [];\n var changing = this._changing;\n this._changing = true;\n\n if (!changing) {\n this._previousAttributes = _.clone(this.attributes);\n this.changed = {};\n }\n\n var current = this.attributes;\n var changed = this.changed;\n var prev = this._previousAttributes;\n\n // For each `set` attribute, update or delete the current value.\n for (var attr in attrs) {\n val = attrs[attr];\n if (!_.isEqual(current[attr], val)) changes.push(attr);\n if (!_.isEqual(prev[attr], val)) {\n changed[attr] = val;\n } else {\n delete changed[attr];\n }\n unset ? delete current[attr] : current[attr] = val;\n }\n\n // Update the `id`.\n if (this.idAttribute in attrs) {\n var prevId = this.id;\n this.id = this.get(this.idAttribute);\n this.trigger('changeId', this, prevId, options);\n }\n\n // Trigger all relevant attribute changes.\n if (!silent) {\n if (changes.length) this._pending = options;\n for (var i = 0; i < changes.length; i++) {\n this.trigger('change:' + changes[i], this, current[changes[i]], options);\n }\n }\n\n // You might be wondering why there's a `while` loop here. Changes can\n // be recursively nested within `\"change\"` events.\n if (changing) return this;\n if (!silent) {\n while (this._pending) {\n options = this._pending;\n this._pending = false;\n this.trigger('change', this, options);\n }\n }\n this._pending = false;\n this._changing = false;\n return this;\n },\n\n // Remove an attribute from the model, firing `\"change\"`. `unset` is a noop\n // if the attribute doesn't exist.\n unset: function(attr, options) {\n return this.set(attr, void 0, _.extend({}, options, {unset: true}));\n },\n\n // Clear all attributes on the model, firing `\"change\"`.\n clear: function(options) {\n var attrs = {};\n for (var key in this.attributes) attrs[key] = void 0;\n return this.set(attrs, _.extend({}, options, {unset: true}));\n },\n\n // Determine if the model has changed since the last `\"change\"` event.\n // If you specify an attribute name, determine if that attribute has changed.\n hasChanged: function(attr) {\n if (attr == null) return !_.isEmpty(this.changed);\n return _.has(this.changed, attr);\n },\n\n // Return an object containing all the attributes that have changed, or\n // false if there are no changed attributes. Useful for determining what\n // parts of a view need to be updated and/or what attributes need to be\n // persisted to the server. Unset attributes will be set to undefined.\n // You can also pass an attributes object to diff against the model,\n // determining if there *would be* a change.\n changedAttributes: function(diff) {\n if (!diff) return this.hasChanged() ? _.clone(this.changed) : false;\n var old = this._changing ? this._previousAttributes : this.attributes;\n var changed = {};\n var hasChanged;\n for (var attr in diff) {\n var val = diff[attr];\n if (_.isEqual(old[attr], val)) continue;\n changed[attr] = val;\n hasChanged = true;\n }\n return hasChanged ? changed : false;\n },\n\n // Get the previous value of an attribute, recorded at the time the last\n // `\"change\"` event was fired.\n previous: function(attr) {\n if (attr == null || !this._previousAttributes) return null;\n return this._previousAttributes[attr];\n },\n\n // Get all of the attributes of the model at the time of the previous\n // `\"change\"` event.\n previousAttributes: function() {\n return _.clone(this._previousAttributes);\n },\n\n // Fetch the model from the server, merging the response with the model's\n // local attributes. Any changed attributes will trigger a \"change\" event.\n fetch: function(options) {\n options = _.extend({parse: true}, options);\n var model = this;\n var success = options.success;\n options.success = function(resp) {\n var serverAttrs = options.parse ? model.parse(resp, options) : resp;\n if (!model.set(serverAttrs, options)) return false;\n if (success) success.call(options.context, model, resp, options);\n model.trigger('sync', model, resp, options);\n };\n wrapError(this, options);\n return this.sync('read', this, options);\n },\n\n // Set a hash of model attributes, and sync the model to the server.\n // If the server returns an attributes hash that differs, the model's\n // state will be `set` again.\n save: function(key, val, options) {\n // Handle both `\"key\", value` and `{key: value}` -style arguments.\n var attrs;\n if (key == null || typeof key === 'object') {\n attrs = key;\n options = val;\n } else {\n (attrs = {})[key] = val;\n }\n\n options = _.extend({validate: true, parse: true}, options);\n var wait = options.wait;\n\n // If we're not waiting and attributes exist, save acts as\n // `set(attr).save(null, opts)` with validation. Otherwise, check if\n // the model will be valid when the attributes, if any, are set.\n if (attrs && !wait) {\n if (!this.set(attrs, options)) return false;\n } else if (!this._validate(attrs, options)) {\n return false;\n }\n\n // After a successful server-side save, the client is (optionally)\n // updated with the server-side state.\n var model = this;\n var success = options.success;\n var attributes = this.attributes;\n options.success = function(resp) {\n // Ensure attributes are restored during synchronous saves.\n model.attributes = attributes;\n var serverAttrs = options.parse ? model.parse(resp, options) : resp;\n if (wait) serverAttrs = _.extend({}, attrs, serverAttrs);\n if (serverAttrs && !model.set(serverAttrs, options)) return false;\n if (success) success.call(options.context, model, resp, options);\n model.trigger('sync', model, resp, options);\n };\n wrapError(this, options);\n\n // Set temporary attributes if `{wait: true}` to properly find new ids.\n if (attrs && wait) this.attributes = _.extend({}, attributes, attrs);\n\n var method = this.isNew() ? 'create' : options.patch ? 'patch' : 'update';\n if (method === 'patch' && !options.attrs) options.attrs = attrs;\n var xhr = this.sync(method, this, options);\n\n // Restore attributes.\n this.attributes = attributes;\n\n return xhr;\n },\n\n // Destroy this model on the server if it was already persisted.\n // Optimistically removes the model from its collection, if it has one.\n // If `wait: true` is passed, waits for the server to respond before removal.\n destroy: function(options) {\n options = options ? _.clone(options) : {};\n var model = this;\n var success = options.success;\n var wait = options.wait;\n\n var destroy = function() {\n model.stopListening();\n model.trigger('destroy', model, model.collection, options);\n };\n\n options.success = function(resp) {\n if (wait) destroy();\n if (success) success.call(options.context, model, resp, options);\n if (!model.isNew()) model.trigger('sync', model, resp, options);\n };\n\n var xhr = false;\n if (this.isNew()) {\n _.defer(options.success);\n } else {\n wrapError(this, options);\n xhr = this.sync('delete', this, options);\n }\n if (!wait) destroy();\n return xhr;\n },\n\n // Default URL for the model's representation on the server -- if you're\n // using Backbone's restful methods, override this to change the endpoint\n // that will be called.\n url: function() {\n var base =\n _.result(this, 'urlRoot') ||\n _.result(this.collection, 'url') ||\n urlError();\n if (this.isNew()) return base;\n var id = this.get(this.idAttribute);\n return base.replace(/[^\\/]$/, '$&/') + encodeURIComponent(id);\n },\n\n // **parse** converts a response into the hash of attributes to be `set` on\n // the model. The default implementation is just to pass the response along.\n parse: function(resp, options) {\n return resp;\n },\n\n // Create a new model with identical attributes to this one.\n clone: function() {\n return new this.constructor(this.attributes);\n },\n\n // A model is new if it has never been saved to the server, and lacks an id.\n isNew: function() {\n return !this.has(this.idAttribute);\n },\n\n // Check if the model is currently in a valid state.\n isValid: function(options) {\n return this._validate({}, _.extend({}, options, {validate: true}));\n },\n\n // Run validation against the next complete set of model attributes,\n // returning `true` if all is well. Otherwise, fire an `\"invalid\"` event.\n _validate: function(attrs, options) {\n if (!options.validate || !this.validate) return true;\n attrs = _.extend({}, this.attributes, attrs);\n var error = this.validationError = this.validate(attrs, options) || null;\n if (!error) return true;\n this.trigger('invalid', this, error, _.extend(options, {validationError: error}));\n return false;\n }\n\n });\n\n // Backbone.Collection\n // -------------------\n\n // If models tend to represent a single row of data, a Backbone Collection is\n // more analogous to a table full of data ... or a small slice or page of that\n // table, or a collection of rows that belong together for a particular reason\n // -- all of the messages in this particular folder, all of the documents\n // belonging to this particular author, and so on. Collections maintain\n // indexes of their models, both in order, and for lookup by `id`.\n\n // Create a new **Collection**, perhaps to contain a specific type of `model`.\n // If a `comparator` is specified, the Collection will maintain\n // its models in sort order, as they're added and removed.\n var Collection = Backbone.Collection = function(models, options) {\n options || (options = {});\n this.preinitialize.apply(this, arguments);\n if (options.model) this.model = options.model;\n if (options.comparator !== void 0) this.comparator = options.comparator;\n this._reset();\n this.initialize.apply(this, arguments);\n if (models) this.reset(models, _.extend({silent: true}, options));\n };\n\n // Default options for `Collection#set`.\n var setOptions = {add: true, remove: true, merge: true};\n var addOptions = {add: true, remove: false};\n\n // Splices `insert` into `array` at index `at`.\n var splice = function(array, insert, at) {\n at = Math.min(Math.max(at, 0), array.length);\n var tail = Array(array.length - at);\n var length = insert.length;\n var i;\n for (i = 0; i < tail.length; i++) tail[i] = array[i + at];\n for (i = 0; i < length; i++) array[i + at] = insert[i];\n for (i = 0; i < tail.length; i++) array[i + length + at] = tail[i];\n };\n\n // Define the Collection's inheritable methods.\n _.extend(Collection.prototype, Events, {\n\n // The default model for a collection is just a **Backbone.Model**.\n // This should be overridden in most cases.\n model: Model,\n\n\n // preinitialize is an empty function by default. You can override it with a function\n // or object. preinitialize will run before any instantiation logic is run in the Collection.\n preinitialize: function(){},\n\n // Initialize is an empty function by default. Override it with your own\n // initialization logic.\n initialize: function(){},\n\n // The JSON representation of a Collection is an array of the\n // models' attributes.\n toJSON: function(options) {\n return this.map(function(model) { return model.toJSON(options); });\n },\n\n // Proxy `Backbone.sync` by default.\n sync: function() {\n return Backbone.sync.apply(this, arguments);\n },\n\n // Add a model, or list of models to the set. `models` may be Backbone\n // Models or raw JavaScript objects to be converted to Models, or any\n // combination of the two.\n add: function(models, options) {\n return this.set(models, _.extend({merge: false}, options, addOptions));\n },\n\n // Remove a model, or a list of models from the set.\n remove: function(models, options) {\n options = _.extend({}, options);\n var singular = !_.isArray(models);\n models = singular ? [models] : models.slice();\n var removed = this._removeModels(models, options);\n if (!options.silent && removed.length) {\n options.changes = {added: [], merged: [], removed: removed};\n this.trigger('update', this, options);\n }\n return singular ? removed[0] : removed;\n },\n\n // Update a collection by `set`-ing a new list of models, adding new ones,\n // removing models that are no longer present, and merging models that\n // already exist in the collection, as necessary. Similar to **Model#set**,\n // the core operation for updating the data contained by the collection.\n set: function(models, options) {\n if (models == null) return;\n\n options = _.extend({}, setOptions, options);\n if (options.parse && !this._isModel(models)) {\n models = this.parse(models, options) || [];\n }\n\n var singular = !_.isArray(models);\n models = singular ? [models] : models.slice();\n\n var at = options.at;\n if (at != null) at = +at;\n if (at > this.length) at = this.length;\n if (at < 0) at += this.length + 1;\n\n var set = [];\n var toAdd = [];\n var toMerge = [];\n var toRemove = [];\n var modelMap = {};\n\n var add = options.add;\n var merge = options.merge;\n var remove = options.remove;\n\n var sort = false;\n var sortable = this.comparator && at == null && options.sort !== false;\n var sortAttr = _.isString(this.comparator) ? this.comparator : null;\n\n // Turn bare objects into model references, and prevent invalid models\n // from being added.\n var model, i;\n for (i = 0; i < models.length; i++) {\n model = models[i];\n\n // If a duplicate is found, prevent it from being added and\n // optionally merge it into the existing model.\n var existing = this.get(model);\n if (existing) {\n if (merge && model !== existing) {\n var attrs = this._isModel(model) ? model.attributes : model;\n if (options.parse) attrs = existing.parse(attrs, options);\n existing.set(attrs, options);\n toMerge.push(existing);\n if (sortable && !sort) sort = existing.hasChanged(sortAttr);\n }\n if (!modelMap[existing.cid]) {\n modelMap[existing.cid] = true;\n set.push(existing);\n }\n models[i] = existing;\n\n // If this is a new, valid model, push it to the `toAdd` list.\n } else if (add) {\n model = models[i] = this._prepareModel(model, options);\n if (model) {\n toAdd.push(model);\n this._addReference(model, options);\n modelMap[model.cid] = true;\n set.push(model);\n }\n }\n }\n\n // Remove stale models.\n if (remove) {\n for (i = 0; i < this.length; i++) {\n model = this.models[i];\n if (!modelMap[model.cid]) toRemove.push(model);\n }\n if (toRemove.length) this._removeModels(toRemove, options);\n }\n\n // See if sorting is needed, update `length` and splice in new models.\n var orderChanged = false;\n var replace = !sortable && add && remove;\n if (set.length && replace) {\n orderChanged = this.length !== set.length || _.some(this.models, function(m, index) {\n return m !== set[index];\n });\n this.models.length = 0;\n splice(this.models, set, 0);\n this.length = this.models.length;\n } else if (toAdd.length) {\n if (sortable) sort = true;\n splice(this.models, toAdd, at == null ? this.length : at);\n this.length = this.models.length;\n }\n\n // Silently sort the collection if appropriate.\n if (sort) this.sort({silent: true});\n\n // Unless silenced, it's time to fire all appropriate add/sort/update events.\n if (!options.silent) {\n for (i = 0; i < toAdd.length; i++) {\n if (at != null) options.index = at + i;\n model = toAdd[i];\n model.trigger('add', model, this, options);\n }\n if (sort || orderChanged) this.trigger('sort', this, options);\n if (toAdd.length || toRemove.length || toMerge.length) {\n options.changes = {\n added: toAdd,\n removed: toRemove,\n merged: toMerge\n };\n this.trigger('update', this, options);\n }\n }\n\n // Return the added (or merged) model (or models).\n return singular ? models[0] : models;\n },\n\n // When you have more items than you want to add or remove individually,\n // you can reset the entire set with a new list of models, without firing\n // any granular `add` or `remove` events. Fires `reset` when finished.\n // Useful for bulk operations and optimizations.\n reset: function(models, options) {\n options = options ? _.clone(options) : {};\n for (var i = 0; i < this.models.length; i++) {\n this._removeReference(this.models[i], options);\n }\n options.previousModels = this.models;\n this._reset();\n models = this.add(models, _.extend({silent: true}, options));\n if (!options.silent) this.trigger('reset', this, options);\n return models;\n },\n\n // Add a model to the end of the collection.\n push: function(model, options) {\n return this.add(model, _.extend({at: this.length}, options));\n },\n\n // Remove a model from the end of the collection.\n pop: function(options) {\n var model = this.at(this.length - 1);\n return this.remove(model, options);\n },\n\n // Add a model to the beginning of the collection.\n unshift: function(model, options) {\n return this.add(model, _.extend({at: 0}, options));\n },\n\n // Remove a model from the beginning of the collection.\n shift: function(options) {\n var model = this.at(0);\n return this.remove(model, options);\n },\n\n // Slice out a sub-array of models from the collection.\n slice: function() {\n return slice.apply(this.models, arguments);\n },\n\n // Get a model from the set by id, cid, model object with id or cid\n // properties, or an attributes object that is transformed through modelId.\n get: function(obj) {\n if (obj == null) return void 0;\n return this._byId[obj] ||\n this._byId[this.modelId(this._isModel(obj) ? obj.attributes : obj, obj.idAttribute)] ||\n obj.cid && this._byId[obj.cid];\n },\n\n // Returns `true` if the model is in the collection.\n has: function(obj) {\n return this.get(obj) != null;\n },\n\n // Get the model at the given index.\n at: function(index) {\n if (index < 0) index += this.length;\n return this.models[index];\n },\n\n // Return models with matching attributes. Useful for simple cases of\n // `filter`.\n where: function(attrs, first) {\n return this[first ? 'find' : 'filter'](attrs);\n },\n\n // Return the first model with matching attributes. Useful for simple cases\n // of `find`.\n findWhere: function(attrs) {\n return this.where(attrs, true);\n },\n\n // Force the collection to re-sort itself. You don't need to call this under\n // normal circumstances, as the set will maintain sort order as each item\n // is added.\n sort: function(options) {\n var comparator = this.comparator;\n if (!comparator) throw new Error('Cannot sort a set without a comparator');\n options || (options = {});\n\n var length = comparator.length;\n if (_.isFunction(comparator)) comparator = comparator.bind(this);\n\n // Run sort based on type of `comparator`.\n if (length === 1 || _.isString(comparator)) {\n this.models = this.sortBy(comparator);\n } else {\n this.models.sort(comparator);\n }\n if (!options.silent) this.trigger('sort', this, options);\n return this;\n },\n\n // Pluck an attribute from each model in the collection.\n pluck: function(attr) {\n return this.map(attr + '');\n },\n\n // Fetch the default set of models for this collection, resetting the\n // collection when they arrive. If `reset: true` is passed, the response\n // data will be passed through the `reset` method instead of `set`.\n fetch: function(options) {\n options = _.extend({parse: true}, options);\n var success = options.success;\n var collection = this;\n options.success = function(resp) {\n var method = options.reset ? 'reset' : 'set';\n collection[method](resp, options);\n if (success) success.call(options.context, collection, resp, options);\n collection.trigger('sync', collection, resp, options);\n };\n wrapError(this, options);\n return this.sync('read', this, options);\n },\n\n // Create a new instance of a model in this collection. Add the model to the\n // collection immediately, unless `wait: true` is passed, in which case we\n // wait for the server to agree.\n create: function(model, options) {\n options = options ? _.clone(options) : {};\n var wait = options.wait;\n model = this._prepareModel(model, options);\n if (!model) return false;\n if (!wait) this.add(model, options);\n var collection = this;\n var success = options.success;\n options.success = function(m, resp, callbackOpts) {\n if (wait) {\n m.off('error', collection._forwardPristineError, collection);\n collection.add(m, callbackOpts);\n }\n if (success) success.call(callbackOpts.context, m, resp, callbackOpts);\n };\n // In case of wait:true, our collection is not listening to any\n // of the model's events yet, so it will not forward the error\n // event. In this special case, we need to listen for it\n // separately and handle the event just once.\n // (The reason we don't need to do this for the sync event is\n // in the success handler above: we add the model first, which\n // causes the collection to listen, and then invoke the callback\n // that triggers the event.)\n if (wait) {\n model.once('error', this._forwardPristineError, this);\n }\n model.save(null, options);\n return model;\n },\n\n // **parse** converts a response into a list of models to be added to the\n // collection. The default implementation is just to pass it through.\n parse: function(resp, options) {\n return resp;\n },\n\n // Create a new collection with an identical list of models as this one.\n clone: function() {\n return new this.constructor(this.models, {\n model: this.model,\n comparator: this.comparator\n });\n },\n\n // Define how to uniquely identify models in the collection.\n modelId: function(attrs, idAttribute) {\n return attrs[idAttribute || this.model.prototype.idAttribute || 'id'];\n },\n\n // Get an iterator of all models in this collection.\n values: function() {\n return new CollectionIterator(this, ITERATOR_VALUES);\n },\n\n // Get an iterator of all model IDs in this collection.\n keys: function() {\n return new CollectionIterator(this, ITERATOR_KEYS);\n },\n\n // Get an iterator of all [ID, model] tuples in this collection.\n entries: function() {\n return new CollectionIterator(this, ITERATOR_KEYSVALUES);\n },\n\n // Private method to reset all internal state. Called when the collection\n // is first initialized or reset.\n _reset: function() {\n this.length = 0;\n this.models = [];\n this._byId = {};\n },\n\n // Prepare a hash of attributes (or other model) to be added to this\n // collection.\n _prepareModel: function(attrs, options) {\n if (this._isModel(attrs)) {\n if (!attrs.collection) attrs.collection = this;\n return attrs;\n }\n options = options ? _.clone(options) : {};\n options.collection = this;\n\n var model;\n if (this.model.prototype) {\n model = new this.model(attrs, options);\n } else {\n // ES class methods didn't have prototype\n model = this.model(attrs, options);\n }\n\n if (!model.validationError) return model;\n this.trigger('invalid', this, model.validationError, options);\n return false;\n },\n\n // Internal method called by both remove and set.\n _removeModels: function(models, options) {\n var removed = [];\n for (var i = 0; i < models.length; i++) {\n var model = this.get(models[i]);\n if (!model) continue;\n\n var index = this.indexOf(model);\n this.models.splice(index, 1);\n this.length--;\n\n // Remove references before triggering 'remove' event to prevent an\n // infinite loop. #3693\n delete this._byId[model.cid];\n var id = this.modelId(model.attributes, model.idAttribute);\n if (id != null) delete this._byId[id];\n\n if (!options.silent) {\n options.index = index;\n model.trigger('remove', model, this, options);\n }\n\n removed.push(model);\n this._removeReference(model, options);\n }\n if (models.length > 0 && !options.silent) delete options.index;\n return removed;\n },\n\n // Method for checking whether an object should be considered a model for\n // the purposes of adding to the collection.\n _isModel: function(model) {\n return model instanceof Model;\n },\n\n // Internal method to create a model's ties to a collection.\n _addReference: function(model, options) {\n this._byId[model.cid] = model;\n var id = this.modelId(model.attributes, model.idAttribute);\n if (id != null) this._byId[id] = model;\n model.on('all', this._onModelEvent, this);\n },\n\n // Internal method to sever a model's ties to a collection.\n _removeReference: function(model, options) {\n delete this._byId[model.cid];\n var id = this.modelId(model.attributes, model.idAttribute);\n if (id != null) delete this._byId[id];\n if (this === model.collection) delete model.collection;\n model.off('all', this._onModelEvent, this);\n },\n\n // Internal method called every time a model in the set fires an event.\n // Sets need to update their indexes when models change ids. All other\n // events simply proxy through. \"add\" and \"remove\" events that originate\n // in other collections are ignored.\n _onModelEvent: function(event, model, collection, options) {\n if (model) {\n if ((event === 'add' || event === 'remove') && collection !== this) return;\n if (event === 'destroy') this.remove(model, options);\n if (event === 'changeId') {\n var prevId = this.modelId(model.previousAttributes(), model.idAttribute);\n var id = this.modelId(model.attributes, model.idAttribute);\n if (prevId != null) delete this._byId[prevId];\n if (id != null) this._byId[id] = model;\n }\n }\n this.trigger.apply(this, arguments);\n },\n\n // Internal callback method used in `create`. It serves as a\n // stand-in for the `_onModelEvent` method, which is not yet bound\n // during the `wait` period of the `create` call. We still want to\n // forward any `'error'` event at the end of the `wait` period,\n // hence a customized callback.\n _forwardPristineError: function(model, collection, options) {\n // Prevent double forward if the model was already in the\n // collection before the call to `create`.\n if (this.has(model)) return;\n this._onModelEvent('error', model, collection, options);\n }\n });\n\n // Defining an @@iterator method implements JavaScript's Iterable protocol.\n // In modern ES2015 browsers, this value is found at Symbol.iterator.\n /* global Symbol */\n var $$iterator = typeof Symbol === 'function' && Symbol.iterator;\n if ($$iterator) {\n Collection.prototype[$$iterator] = Collection.prototype.values;\n }\n\n // CollectionIterator\n // ------------------\n\n // A CollectionIterator implements JavaScript's Iterator protocol, allowing the\n // use of `for of` loops in modern browsers and interoperation between\n // Backbone.Collection and other JavaScript functions and third-party libraries\n // which can operate on Iterables.\n var CollectionIterator = function(collection, kind) {\n this._collection = collection;\n this._kind = kind;\n this._index = 0;\n };\n\n // This \"enum\" defines the three possible kinds of values which can be emitted\n // by a CollectionIterator that correspond to the values(), keys() and entries()\n // methods on Collection, respectively.\n var ITERATOR_VALUES = 1;\n var ITERATOR_KEYS = 2;\n var ITERATOR_KEYSVALUES = 3;\n\n // All Iterators should themselves be Iterable.\n if ($$iterator) {\n CollectionIterator.prototype[$$iterator] = function() {\n return this;\n };\n }\n\n CollectionIterator.prototype.next = function() {\n if (this._collection) {\n\n // Only continue iterating if the iterated collection is long enough.\n if (this._index < this._collection.length) {\n var model = this._collection.at(this._index);\n this._index++;\n\n // Construct a value depending on what kind of values should be iterated.\n var value;\n if (this._kind === ITERATOR_VALUES) {\n value = model;\n } else {\n var id = this._collection.modelId(model.attributes, model.idAttribute);\n if (this._kind === ITERATOR_KEYS) {\n value = id;\n } else { // ITERATOR_KEYSVALUES\n value = [id, model];\n }\n }\n return {value: value, done: false};\n }\n\n // Once exhausted, remove the reference to the collection so future\n // calls to the next method always return done.\n this._collection = void 0;\n }\n\n return {value: void 0, done: true};\n };\n\n // Backbone.View\n // -------------\n\n // Backbone Views are almost more convention than they are actual code. A View\n // is simply a JavaScript object that represents a logical chunk of UI in the\n // DOM. This might be a single item, an entire list, a sidebar or panel, or\n // even the surrounding frame which wraps your whole app. Defining a chunk of\n // UI as a **View** allows you to define your DOM events declaratively, without\n // having to worry about render order ... and makes it easy for the view to\n // react to specific changes in the state of your models.\n\n // Creating a Backbone.View creates its initial element outside of the DOM,\n // if an existing element is not provided...\n var View = Backbone.View = function(options) {\n this.cid = _.uniqueId('view');\n this.preinitialize.apply(this, arguments);\n _.extend(this, _.pick(options, viewOptions));\n this._ensureElement();\n this.initialize.apply(this, arguments);\n };\n\n // Cached regex to split keys for `delegate`.\n var delegateEventSplitter = /^(\\S+)\\s*(.*)$/;\n\n // List of view options to be set as properties.\n var viewOptions = ['model', 'collection', 'el', 'id', 'attributes', 'className', 'tagName', 'events'];\n\n // Set up all inheritable **Backbone.View** properties and methods.\n _.extend(View.prototype, Events, {\n\n // The default `tagName` of a View's element is `\"div\"`.\n tagName: 'div',\n\n // jQuery delegate for element lookup, scoped to DOM elements within the\n // current view. This should be preferred to global lookups where possible.\n $: function(selector) {\n return this.$el.find(selector);\n },\n\n // preinitialize is an empty function by default. You can override it with a function\n // or object. preinitialize will run before any instantiation logic is run in the View\n preinitialize: function(){},\n\n // Initialize is an empty function by default. Override it with your own\n // initialization logic.\n initialize: function(){},\n\n // **render** is the core function that your view should override, in order\n // to populate its element (`this.el`), with the appropriate HTML. The\n // convention is for **render** to always return `this`.\n render: function() {\n return this;\n },\n\n // Remove this view by taking the element out of the DOM, and removing any\n // applicable Backbone.Events listeners.\n remove: function() {\n this._removeElement();\n this.stopListening();\n return this;\n },\n\n // Remove this view's element from the document and all event listeners\n // attached to it. Exposed for subclasses using an alternative DOM\n // manipulation API.\n _removeElement: function() {\n this.$el.remove();\n },\n\n // Change the view's element (`this.el` property) and re-delegate the\n // view's events on the new element.\n setElement: function(element) {\n this.undelegateEvents();\n this._setElement(element);\n this.delegateEvents();\n return this;\n },\n\n // Creates the `this.el` and `this.$el` references for this view using the\n // given `el`. `el` can be a CSS selector or an HTML string, a jQuery\n // context or an element. Subclasses can override this to utilize an\n // alternative DOM manipulation API and are only required to set the\n // `this.el` property.\n _setElement: function(el) {\n this.$el = el instanceof Backbone.$ ? el : Backbone.$(el);\n this.el = this.$el[0];\n },\n\n // Set callbacks, where `this.events` is a hash of\n //\n // *{\"event selector\": \"callback\"}*\n //\n // {\n // 'mousedown .title': 'edit',\n // 'click .button': 'save',\n // 'click .open': function(e) { ... }\n // }\n //\n // pairs. Callbacks will be bound to the view, with `this` set properly.\n // Uses event delegation for efficiency.\n // Omitting the selector binds the event to `this.el`.\n delegateEvents: function(events) {\n events || (events = _.result(this, 'events'));\n if (!events) return this;\n this.undelegateEvents();\n for (var key in events) {\n var method = events[key];\n if (!_.isFunction(method)) method = this[method];\n if (!method) continue;\n var match = key.match(delegateEventSplitter);\n this.delegate(match[1], match[2], method.bind(this));\n }\n return this;\n },\n\n // Add a single event listener to the view's element (or a child element\n // using `selector`). This only works for delegate-able events: not `focus`,\n // `blur`, and not `change`, `submit`, and `reset` in Internet Explorer.\n delegate: function(eventName, selector, listener) {\n this.$el.on(eventName + '.delegateEvents' + this.cid, selector, listener);\n return this;\n },\n\n // Clears all callbacks previously bound to the view by `delegateEvents`.\n // You usually don't need to use this, but may wish to if you have multiple\n // Backbone views attached to the same DOM element.\n undelegateEvents: function() {\n if (this.$el) this.$el.off('.delegateEvents' + this.cid);\n return this;\n },\n\n // A finer-grained `undelegateEvents` for removing a single delegated event.\n // `selector` and `listener` are both optional.\n undelegate: function(eventName, selector, listener) {\n this.$el.off(eventName + '.delegateEvents' + this.cid, selector, listener);\n return this;\n },\n\n // Produces a DOM element to be assigned to your view. Exposed for\n // subclasses using an alternative DOM manipulation API.\n _createElement: function(tagName) {\n return document.createElement(tagName);\n },\n\n // Ensure that the View has a DOM element to render into.\n // If `this.el` is a string, pass it through `$()`, take the first\n // matching element, and re-assign it to `el`. Otherwise, create\n // an element from the `id`, `className` and `tagName` properties.\n _ensureElement: function() {\n if (!this.el) {\n var attrs = _.extend({}, _.result(this, 'attributes'));\n if (this.id) attrs.id = _.result(this, 'id');\n if (this.className) attrs['class'] = _.result(this, 'className');\n this.setElement(this._createElement(_.result(this, 'tagName')));\n this._setAttributes(attrs);\n } else {\n this.setElement(_.result(this, 'el'));\n }\n },\n\n // Set attributes from a hash on this view's element. Exposed for\n // subclasses using an alternative DOM manipulation API.\n _setAttributes: function(attributes) {\n this.$el.attr(attributes);\n }\n\n });\n\n // Proxy Backbone class methods to Underscore functions, wrapping the model's\n // `attributes` object or collection's `models` array behind the scenes.\n //\n // collection.filter(function(model) { return model.get('age') > 10 });\n // collection.each(this.addView);\n //\n // `Function#apply` can be slow so we use the method's arg count, if we know it.\n var addMethod = function(base, length, method, attribute) {\n switch (length) {\n case 1: return function() {\n return base[method](this[attribute]);\n };\n case 2: return function(value) {\n return base[method](this[attribute], value);\n };\n case 3: return function(iteratee, context) {\n return base[method](this[attribute], cb(iteratee, this), context);\n };\n case 4: return function(iteratee, defaultVal, context) {\n return base[method](this[attribute], cb(iteratee, this), defaultVal, context);\n };\n default: return function() {\n var args = slice.call(arguments);\n args.unshift(this[attribute]);\n return base[method].apply(base, args);\n };\n }\n };\n\n var addUnderscoreMethods = function(Class, base, methods, attribute) {\n _.each(methods, function(length, method) {\n if (base[method]) Class.prototype[method] = addMethod(base, length, method, attribute);\n });\n };\n\n // Support `collection.sortBy('attr')` and `collection.findWhere({id: 1})`.\n var cb = function(iteratee, instance) {\n if (_.isFunction(iteratee)) return iteratee;\n if (_.isObject(iteratee) && !instance._isModel(iteratee)) return modelMatcher(iteratee);\n if (_.isString(iteratee)) return function(model) { return model.get(iteratee); };\n return iteratee;\n };\n var modelMatcher = function(attrs) {\n var matcher = _.matches(attrs);\n return function(model) {\n return matcher(model.attributes);\n };\n };\n\n // Underscore methods that we want to implement on the Collection.\n // 90% of the core usefulness of Backbone Collections is actually implemented\n // right here:\n var collectionMethods = {forEach: 3, each: 3, map: 3, collect: 3, reduce: 0,\n foldl: 0, inject: 0, reduceRight: 0, foldr: 0, find: 3, detect: 3, filter: 3,\n select: 3, reject: 3, every: 3, all: 3, some: 3, any: 3, include: 3, includes: 3,\n contains: 3, invoke: 0, max: 3, min: 3, toArray: 1, size: 1, first: 3,\n head: 3, take: 3, initial: 3, rest: 3, tail: 3, drop: 3, last: 3,\n without: 0, difference: 0, indexOf: 3, shuffle: 1, lastIndexOf: 3,\n isEmpty: 1, chain: 1, sample: 3, partition: 3, groupBy: 3, countBy: 3,\n sortBy: 3, indexBy: 3, findIndex: 3, findLastIndex: 3};\n\n\n // Underscore methods that we want to implement on the Model, mapped to the\n // number of arguments they take.\n var modelMethods = {keys: 1, values: 1, pairs: 1, invert: 1, pick: 0,\n omit: 0, chain: 1, isEmpty: 1};\n\n // Mix in each Underscore method as a proxy to `Collection#models`.\n\n _.each([\n [Collection, collectionMethods, 'models'],\n [Model, modelMethods, 'attributes']\n ], function(config) {\n var Base = config[0],\n methods = config[1],\n attribute = config[2];\n\n Base.mixin = function(obj) {\n var mappings = _.reduce(_.functions(obj), function(memo, name) {\n memo[name] = 0;\n return memo;\n }, {});\n addUnderscoreMethods(Base, obj, mappings, attribute);\n };\n\n addUnderscoreMethods(Base, _, methods, attribute);\n });\n\n // Backbone.sync\n // -------------\n\n // Override this function to change the manner in which Backbone persists\n // models to the server. You will be passed the type of request, and the\n // model in question. By default, makes a RESTful Ajax request\n // to the model's `url()`. Some possible customizations could be:\n //\n // * Use `setTimeout` to batch rapid-fire updates into a single request.\n // * Send up the models as XML instead of JSON.\n // * Persist models via WebSockets instead of Ajax.\n //\n // Turn on `Backbone.emulateHTTP` in order to send `PUT` and `DELETE` requests\n // as `POST`, with a `_method` parameter containing the true HTTP method,\n // as well as all requests with the body as `application/x-www-form-urlencoded`\n // instead of `application/json` with the model in a param named `model`.\n // Useful when interfacing with server-side languages like **PHP** that make\n // it difficult to read the body of `PUT` requests.\n Backbone.sync = function(method, model, options) {\n var type = methodMap[method];\n\n // Default options, unless specified.\n _.defaults(options || (options = {}), {\n emulateHTTP: Backbone.emulateHTTP,\n emulateJSON: Backbone.emulateJSON\n });\n\n // Default JSON-request options.\n var params = {type: type, dataType: 'json'};\n\n // Ensure that we have a URL.\n if (!options.url) {\n params.url = _.result(model, 'url') || urlError();\n }\n\n // Ensure that we have the appropriate request data.\n if (options.data == null && model && (method === 'create' || method === 'update' || method === 'patch')) {\n params.contentType = 'application/json';\n params.data = JSON.stringify(options.attrs || model.toJSON(options));\n }\n\n // For older servers, emulate JSON by encoding the request into an HTML-form.\n if (options.emulateJSON) {\n params.contentType = 'application/x-www-form-urlencoded';\n params.data = params.data ? {model: params.data} : {};\n }\n\n // For older servers, emulate HTTP by mimicking the HTTP method with `_method`\n // And an `X-HTTP-Method-Override` header.\n if (options.emulateHTTP && (type === 'PUT' || type === 'DELETE' || type === 'PATCH')) {\n params.type = 'POST';\n if (options.emulateJSON) params.data._method = type;\n var beforeSend = options.beforeSend;\n options.beforeSend = function(xhr) {\n xhr.setRequestHeader('X-HTTP-Method-Override', type);\n if (beforeSend) return beforeSend.apply(this, arguments);\n };\n }\n\n // Don't process data on a non-GET request.\n if (params.type !== 'GET' && !options.emulateJSON) {\n params.processData = false;\n }\n\n // Pass along `textStatus` and `errorThrown` from jQuery.\n var error = options.error;\n options.error = function(xhr, textStatus, errorThrown) {\n options.textStatus = textStatus;\n options.errorThrown = errorThrown;\n if (error) error.call(options.context, xhr, textStatus, errorThrown);\n };\n\n // Make the request, allowing the user to override any Ajax options.\n var xhr = options.xhr = Backbone.ajax(_.extend(params, options));\n model.trigger('request', model, xhr, options);\n return xhr;\n };\n\n // Map from CRUD to HTTP for our default `Backbone.sync` implementation.\n var methodMap = {\n 'create': 'POST',\n 'update': 'PUT',\n 'patch': 'PATCH',\n 'delete': 'DELETE',\n 'read': 'GET'\n };\n\n // Set the default implementation of `Backbone.ajax` to proxy through to `$`.\n // Override this if you'd like to use a different library.\n Backbone.ajax = function() {\n return Backbone.$.ajax.apply(Backbone.$, arguments);\n };\n\n // Backbone.Router\n // ---------------\n\n // Routers map faux-URLs to actions, and fire events when routes are\n // matched. Creating a new one sets its `routes` hash, if not set statically.\n var Router = Backbone.Router = function(options) {\n options || (options = {});\n this.preinitialize.apply(this, arguments);\n if (options.routes) this.routes = options.routes;\n this._bindRoutes();\n this.initialize.apply(this, arguments);\n };\n\n // Cached regular expressions for matching named param parts and splatted\n // parts of route strings.\n var optionalParam = /\\((.*?)\\)/g;\n var namedParam = /(\\(\\?)?:\\w+/g;\n var splatParam = /\\*\\w+/g;\n var escapeRegExp = /[\\-{}\\[\\]+?.,\\\\\\^$|#\\s]/g;\n\n // Set up all inheritable **Backbone.Router** properties and methods.\n _.extend(Router.prototype, Events, {\n\n // preinitialize is an empty function by default. You can override it with a function\n // or object. preinitialize will run before any instantiation logic is run in the Router.\n preinitialize: function(){},\n\n // Initialize is an empty function by default. Override it with your own\n // initialization logic.\n initialize: function(){},\n\n // Manually bind a single named route to a callback. For example:\n //\n // this.route('search/:query/p:num', 'search', function(query, num) {\n // ...\n // });\n //\n route: function(route, name, callback) {\n if (!_.isRegExp(route)) route = this._routeToRegExp(route);\n if (_.isFunction(name)) {\n callback = name;\n name = '';\n }\n if (!callback) callback = this[name];\n var router = this;\n Backbone.history.route(route, function(fragment) {\n var args = router._extractParameters(route, fragment);\n if (router.execute(callback, args, name) !== false) {\n router.trigger.apply(router, ['route:' + name].concat(args));\n router.trigger('route', name, args);\n Backbone.history.trigger('route', router, name, args);\n }\n });\n return this;\n },\n\n // Execute a route handler with the provided parameters. This is an\n // excellent place to do pre-route setup or post-route cleanup.\n execute: function(callback, args, name) {\n if (callback) callback.apply(this, args);\n },\n\n // Simple proxy to `Backbone.history` to save a fragment into the history.\n navigate: function(fragment, options) {\n Backbone.history.navigate(fragment, options);\n return this;\n },\n\n // Bind all defined routes to `Backbone.history`. We have to reverse the\n // order of the routes here to support behavior where the most general\n // routes can be defined at the bottom of the route map.\n _bindRoutes: function() {\n if (!this.routes) return;\n this.routes = _.result(this, 'routes');\n var route, routes = _.keys(this.routes);\n while ((route = routes.pop()) != null) {\n this.route(route, this.routes[route]);\n }\n },\n\n // Convert a route string into a regular expression, suitable for matching\n // against the current location hash.\n _routeToRegExp: function(route) {\n route = route.replace(escapeRegExp, '\\\\$&')\n .replace(optionalParam, '(?:$1)?')\n .replace(namedParam, function(match, optional) {\n return optional ? match : '([^/?]+)';\n })\n .replace(splatParam, '([^?]*?)');\n return new RegExp('^' + route + '(?:\\\\?([\\\\s\\\\S]*))?$');\n },\n\n // Given a route, and a URL fragment that it matches, return the array of\n // extracted decoded parameters. Empty or unmatched parameters will be\n // treated as `null` to normalize cross-browser behavior.\n _extractParameters: function(route, fragment) {\n var params = route.exec(fragment).slice(1);\n return _.map(params, function(param, i) {\n // Don't decode the search params.\n if (i === params.length - 1) return param || null;\n return param ? decodeURIComponent(param) : null;\n });\n }\n\n });\n\n // Backbone.History\n // ----------------\n\n // Handles cross-browser history management, based on either\n // [pushState](http://diveintohtml5.info/history.html) and real URLs, or\n // [onhashchange](https://developer.mozilla.org/en-US/docs/DOM/window.onhashchange)\n // and URL fragments. If the browser supports neither (old IE, natch),\n // falls back to polling.\n var History = Backbone.History = function() {\n this.handlers = [];\n this.checkUrl = this.checkUrl.bind(this);\n\n // Ensure that `History` can be used outside of the browser.\n if (typeof window !== 'undefined') {\n this.location = window.location;\n this.history = window.history;\n }\n };\n\n // Cached regex for stripping a leading hash/slash and trailing space.\n var routeStripper = /^[#\\/]|\\s+$/g;\n\n // Cached regex for stripping leading and trailing slashes.\n var rootStripper = /^\\/+|\\/+$/g;\n\n // Cached regex for stripping urls of hash.\n var pathStripper = /#.*$/;\n\n // Has the history handling already been started?\n History.started = false;\n\n // Set up all inheritable **Backbone.History** properties and methods.\n _.extend(History.prototype, Events, {\n\n // The default interval to poll for hash changes, if necessary, is\n // twenty times a second.\n interval: 50,\n\n // Are we at the app root?\n atRoot: function() {\n var path = this.location.pathname.replace(/[^\\/]$/, '$&/');\n return path === this.root && !this.getSearch();\n },\n\n // Does the pathname match the root?\n matchRoot: function() {\n var path = this.decodeFragment(this.location.pathname);\n var rootPath = path.slice(0, this.root.length - 1) + '/';\n return rootPath === this.root;\n },\n\n // Unicode characters in `location.pathname` are percent encoded so they're\n // decoded for comparison. `%25` should not be decoded since it may be part\n // of an encoded parameter.\n decodeFragment: function(fragment) {\n return decodeURI(fragment.replace(/%25/g, '%2525'));\n },\n\n // In IE6, the hash fragment and search params are incorrect if the\n // fragment contains `?`.\n getSearch: function() {\n var match = this.location.href.replace(/#.*/, '').match(/\\?.+/);\n return match ? match[0] : '';\n },\n\n // Gets the true hash value. Cannot use location.hash directly due to bug\n // in Firefox where location.hash will always be decoded.\n getHash: function(window) {\n var match = (window || this).location.href.match(/#(.*)$/);\n return match ? match[1] : '';\n },\n\n // Get the pathname and search params, without the root.\n getPath: function() {\n var path = this.decodeFragment(\n this.location.pathname + this.getSearch()\n ).slice(this.root.length - 1);\n return path.charAt(0) === '/' ? path.slice(1) : path;\n },\n\n // Get the cross-browser normalized URL fragment from the path or hash.\n getFragment: function(fragment) {\n if (fragment == null) {\n if (this._usePushState || !this._wantsHashChange) {\n fragment = this.getPath();\n } else {\n fragment = this.getHash();\n }\n }\n return fragment.replace(routeStripper, '');\n },\n\n // Start the hash change handling, returning `true` if the current URL matches\n // an existing route, and `false` otherwise.\n start: function(options) {\n if (History.started) throw new Error('Backbone.history has already been started');\n History.started = true;\n\n // Figure out the initial configuration. Do we need an iframe?\n // Is pushState desired ... is it available?\n this.options = _.extend({root: '/'}, this.options, options);\n this.root = this.options.root;\n this._trailingSlash = this.options.trailingSlash;\n this._wantsHashChange = this.options.hashChange !== false;\n this._hasHashChange = 'onhashchange' in window && (document.documentMode === void 0 || document.documentMode > 7);\n this._useHashChange = this._wantsHashChange && this._hasHashChange;\n this._wantsPushState = !!this.options.pushState;\n this._hasPushState = !!(this.history && this.history.pushState);\n this._usePushState = this._wantsPushState && this._hasPushState;\n this.fragment = this.getFragment();\n\n // Normalize root to always include a leading and trailing slash.\n this.root = ('/' + this.root + '/').replace(rootStripper, '/');\n\n // Transition from hashChange to pushState or vice versa if both are\n // requested.\n if (this._wantsHashChange && this._wantsPushState) {\n\n // If we've started off with a route from a `pushState`-enabled\n // browser, but we're currently in a browser that doesn't support it...\n if (!this._hasPushState && !this.atRoot()) {\n var rootPath = this.root.slice(0, -1) || '/';\n this.location.replace(rootPath + '#' + this.getPath());\n // Return immediately as browser will do redirect to new url\n return true;\n\n // Or if we've started out with a hash-based route, but we're currently\n // in a browser where it could be `pushState`-based instead...\n } else if (this._hasPushState && this.atRoot()) {\n this.navigate(this.getHash(), {replace: true});\n }\n\n }\n\n // Proxy an iframe to handle location events if the browser doesn't\n // support the `hashchange` event, HTML5 history, or the user wants\n // `hashChange` but not `pushState`.\n if (!this._hasHashChange && this._wantsHashChange && !this._usePushState) {\n this.iframe = document.createElement('iframe');\n this.iframe.src = 'javascript:0';\n this.iframe.style.display = 'none';\n this.iframe.tabIndex = -1;\n var body = document.body;\n // Using `appendChild` will throw on IE < 9 if the document is not ready.\n var iWindow = body.insertBefore(this.iframe, body.firstChild).contentWindow;\n iWindow.document.open();\n iWindow.document.close();\n iWindow.location.hash = '#' + this.fragment;\n }\n\n // Add a cross-platform `addEventListener` shim for older browsers.\n var addEventListener = window.addEventListener || function(eventName, listener) {\n return attachEvent('on' + eventName, listener);\n };\n\n // Depending on whether we're using pushState or hashes, and whether\n // 'onhashchange' is supported, determine how we check the URL state.\n if (this._usePushState) {\n addEventListener('popstate', this.checkUrl, false);\n } else if (this._useHashChange && !this.iframe) {\n addEventListener('hashchange', this.checkUrl, false);\n } else if (this._wantsHashChange) {\n this._checkUrlInterval = setInterval(this.checkUrl, this.interval);\n }\n\n if (!this.options.silent) return this.loadUrl();\n },\n\n // Disable Backbone.history, perhaps temporarily. Not useful in a real app,\n // but possibly useful for unit testing Routers.\n stop: function() {\n // Add a cross-platform `removeEventListener` shim for older browsers.\n var removeEventListener = window.removeEventListener || function(eventName, listener) {\n return detachEvent('on' + eventName, listener);\n };\n\n // Remove window listeners.\n if (this._usePushState) {\n removeEventListener('popstate', this.checkUrl, false);\n } else if (this._useHashChange && !this.iframe) {\n removeEventListener('hashchange', this.checkUrl, false);\n }\n\n // Clean up the iframe if necessary.\n if (this.iframe) {\n document.body.removeChild(this.iframe);\n this.iframe = null;\n }\n\n // Some environments will throw when clearing an undefined interval.\n if (this._checkUrlInterval) clearInterval(this._checkUrlInterval);\n History.started = false;\n },\n\n // Add a route to be tested when the fragment changes. Routes added later\n // may override previous routes.\n route: function(route, callback) {\n this.handlers.unshift({route: route, callback: callback});\n },\n\n // Checks the current URL to see if it has changed, and if it has,\n // calls `loadUrl`, normalizing across the hidden iframe.\n checkUrl: function(e) {\n var current = this.getFragment();\n\n // If the user pressed the back button, the iframe's hash will have\n // changed and we should use that for comparison.\n if (current === this.fragment && this.iframe) {\n current = this.getHash(this.iframe.contentWindow);\n }\n\n if (current === this.fragment) {\n if (!this.matchRoot()) return this.notfound();\n return false;\n }\n if (this.iframe) this.navigate(current);\n this.loadUrl();\n },\n\n // Attempt to load the current URL fragment. If a route succeeds with a\n // match, returns `true`. If no defined routes matches the fragment,\n // returns `false`.\n loadUrl: function(fragment) {\n // If the root doesn't match, no routes can match either.\n if (!this.matchRoot()) return this.notfound();\n fragment = this.fragment = this.getFragment(fragment);\n return _.some(this.handlers, function(handler) {\n if (handler.route.test(fragment)) {\n handler.callback(fragment);\n return true;\n }\n }) || this.notfound();\n },\n\n // When no route could be matched, this method is called internally to\n // trigger the `'notfound'` event. It returns `false` so that it can be used\n // in tail position.\n notfound: function() {\n this.trigger('notfound');\n return false;\n },\n\n // Save a fragment into the hash history, or replace the URL state if the\n // 'replace' option is passed. You are responsible for properly URL-encoding\n // the fragment in advance.\n //\n // The options object can contain `trigger: true` if you wish to have the\n // route callback be fired (not usually desirable), or `replace: true`, if\n // you wish to modify the current URL without adding an entry to the history.\n navigate: function(fragment, options) {\n if (!History.started) return false;\n if (!options || options === true) options = {trigger: !!options};\n\n // Normalize the fragment.\n fragment = this.getFragment(fragment || '');\n\n // Strip trailing slash on the root unless _trailingSlash is true\n var rootPath = this.root;\n if (!this._trailingSlash && (fragment === '' || fragment.charAt(0) === '?')) {\n rootPath = rootPath.slice(0, -1) || '/';\n }\n var url = rootPath + fragment;\n\n // Strip the fragment of the query and hash for matching.\n fragment = fragment.replace(pathStripper, '');\n\n // Decode for matching.\n var decodedFragment = this.decodeFragment(fragment);\n\n if (this.fragment === decodedFragment) return;\n this.fragment = decodedFragment;\n\n // If pushState is available, we use it to set the fragment as a real URL.\n if (this._usePushState) {\n this.history[options.replace ? 'replaceState' : 'pushState']({}, document.title, url);\n\n // If hash changes haven't been explicitly disabled, update the hash\n // fragment to store history.\n } else if (this._wantsHashChange) {\n this._updateHash(this.location, fragment, options.replace);\n if (this.iframe && fragment !== this.getHash(this.iframe.contentWindow)) {\n var iWindow = this.iframe.contentWindow;\n\n // Opening and closing the iframe tricks IE7 and earlier to push a\n // history entry on hash-tag change. When replace is true, we don't\n // want this.\n if (!options.replace) {\n iWindow.document.open();\n iWindow.document.close();\n }\n\n this._updateHash(iWindow.location, fragment, options.replace);\n }\n\n // If you've told us that you explicitly don't want fallback hashchange-\n // based history, then `navigate` becomes a page refresh.\n } else {\n return this.location.assign(url);\n }\n if (options.trigger) return this.loadUrl(fragment);\n },\n\n // Update the hash location, either replacing the current entry, or adding\n // a new one to the browser history.\n _updateHash: function(location, fragment, replace) {\n if (replace) {\n var href = location.href.replace(/(javascript:|#).*$/, '');\n location.replace(href + '#' + fragment);\n } else {\n // Some browsers require that `hash` contains a leading #.\n location.hash = '#' + fragment;\n }\n }\n\n });\n\n // Create the default Backbone.history.\n Backbone.history = new History;\n\n // Helpers\n // -------\n\n // Helper function to correctly set up the prototype chain for subclasses.\n // Similar to `goog.inherits`, but uses a hash of prototype properties and\n // class properties to be extended.\n var extend = function(protoProps, staticProps) {\n var parent = this;\n var child;\n\n // The constructor function for the new subclass is either defined by you\n // (the \"constructor\" property in your `extend` definition), or defaulted\n // by us to simply call the parent constructor.\n if (protoProps && _.has(protoProps, 'constructor')) {\n child = protoProps.constructor;\n } else {\n child = function(){ return parent.apply(this, arguments); };\n }\n\n // Add static properties to the constructor function, if supplied.\n _.extend(child, parent, staticProps);\n\n // Set the prototype chain to inherit from `parent`, without calling\n // `parent`'s constructor function and add the prototype properties.\n child.prototype = _.create(parent.prototype, protoProps);\n child.prototype.constructor = child;\n\n // Set a convenience property in case the parent's prototype is needed\n // later.\n child.__super__ = parent.prototype;\n\n return child;\n };\n\n // Set up inheritance for the model, collection, router, view and history.\n Model.extend = Collection.extend = Router.extend = View.extend = History.extend = extend;\n\n // Throw an error when a URL is needed, and none is supplied.\n var urlError = function() {\n throw new Error('A \"url\" property or function must be specified');\n };\n\n // Wrap an optional error callback with a fallback error event.\n var wrapError = function(model, options) {\n var error = options.error;\n options.error = function(resp) {\n if (error) error.call(options.context, model, resp, options);\n model.trigger('error', model, resp, options);\n };\n };\n\n // Provide useful information when things go wrong. This method is not meant\n // to be used directly; it merely provides the necessary introspection for the\n // external `debugInfo` function.\n Backbone._debug = function() {\n return {root: root, _: _};\n };\n\n return Backbone;\n});\n","/**\n * Object Fit Videos\n * Polyfill for object-fit and object-position CSS properties on video elements\n * Covers IE9, IE10, IE11, Edge, Safari <10\n *\n * Usage\n * In your CSS, add a special font-family tag for IE/Edge\n * video {\n * object-fit: cover;\n * font-family: 'object-fit: cover;';\n * }\n *\n * Before the closing body tag, or whenever the DOM is ready,\n * make the JavaScript call\n * objectFitVideos();\n *\n * All video elements with the special CSS property will be targeted\n *\n * @license MIT (https://opensource.org/licenses/MIT)\n * @author Todd Miller \n * @version 1.0.2\n * @changelog\n * 2016-08-19 - Adds object-position support.\n * 2016-08-19 - Add throttle function for more performant resize events\n * 2016-08-19 - Initial release with object-fit support, and\n * object-position default 'center'\n * 2016-10-14 - No longer relies on window load event, instead requires a specific\n * function call to initialize the videos for object fit and position.\n * 2016-11-28 - Support CommonJS environment, courtesy of @msorensson\n * 2016-12-05 - Refactors the throttling function to support IE\n * 2017-09-26 - Fix an issue with autplay not working on polyfilled videos\n * - Adds the capability to specify elements to polyfill,\n * instead of just checking every video element for the\n * CSS property. Slight performance gain in most usecases,\n * and a bigger gain in a few usecases.\n * 2017-10-24 - Add user agent check to enable polyfill for all Edge browsers.\n * object-fit is supported on Edge >= 16, but currently just for images.\n */\nvar objectFitVideos = function (videos) {\n 'use strict';\n\n var isEdge = navigator.userAgent.indexOf('Edge/') >= 0;\n\n var testImg = new Image(),\n supportsObjectFit = 'object-fit' in testImg.style && !isEdge,\n supportsObjectPosition = 'object-position' in testImg.style && !isEdge,\n propRegex = /(object-fit|object-position)\\s*:\\s*([-\\w\\s%]+)/g;\n\n if (!supportsObjectFit || !supportsObjectPosition) {\n initialize(videos);\n throttle('resize', 'optimizedResize');\n }\n\n /**\n * Parse the style and look for the special font-family tag\n * @param {object} $el The element to parse\n * @return {object} The font-family properties we're interested in\n */\n function getStyle ($el) {\n var style = getComputedStyle($el).fontFamily,\n parsed = null,\n props = {};\n\n while ((parsed = propRegex.exec(style)) !== null) {\n props[parsed[1]] = parsed[2];\n }\n\n if (props['object-position'])\n return parsePosition(props);\n\n return props;\n }\n\n /**\n * Initialize all the relevant video elements and get them fitted\n */\n function initialize (videos) {\n var index = -1;\n\n if (!videos) {\n // if no videos given, query all video elements\n videos = document.querySelectorAll('video');\n } else if (!('length' in videos)) {\n // convert to an array for proper looping if an array or NodeList\n // was not given\n videos = [videos];\n }\n\n while (videos[++index]) {\n var style = getStyle(videos[index]);\n\n // only do work if the property is on the element\n if (style['object-fit'] || style['object-position']) {\n // set the default values\n style['object-fit'] = style['object-fit'] || 'fill';\n fitIt(videos[index], style);\n }\n }\n }\n\n /**\n * Object Fit\n * @param {object} $el Element to fit\n * @return {object} The element's relevant properties\n */\n function fitIt ($el, style) {\n // fill is the default behavior, no action is necessary\n if (style['object-fit'] === 'fill')\n return;\n\n // convenience style properties on the source element\n var setCss = $el.style,\n getCss = window.getComputedStyle($el);\n\n // create and insert a wrapper element\n var $wrap = document.createElement('object-fit');\n $wrap.appendChild($el.parentNode.replaceChild($wrap, $el));\n\n // style the wrapper element to mostly match the source element\n var wrapCss = {\n height: '100%',\n width: '100%',\n boxSizing: 'content-box',\n display: 'inline-block',\n overflow: 'hidden'\n };\n\n 'backgroundColor backgroundImage borderColor borderStyle borderWidth bottom fontSize lineHeight left opacity margin position right top visibility'.replace(/\\w+/g, function (key) {\n wrapCss[key] = getCss[key];\n });\n\n for (var key in wrapCss)\n $wrap.style[key] = wrapCss[key];\n\n // give the source element some saner styles\n setCss.border = setCss.margin = setCss.padding = 0;\n setCss.display = 'block';\n setCss.opacity = 1;\n\n // set up the event handlers\n $el.addEventListener('loadedmetadata', doWork);\n window.addEventListener('optimizedResize', doWork);\n\n // we may have missed the loadedmetadata event, so if the video has loaded\n // enough data, just drop the event listener and execute\n if ($el.readyState >= 1) {\n $el.removeEventListener('loadedmetadata', doWork);\n doWork();\n }\n\n /**\n * Do the actual sizing. Math.\n * @methodOf fitIt\n */\n function doWork () {\n // the actual size and ratio of the video\n // we do this here, even though it doesn't change, because\n // at this point we can be sure the metadata has loaded\n var videoWidth = $el.videoWidth,\n videoHeight = $el.videoHeight,\n videoRatio = videoWidth / videoHeight;\n\n var wrapWidth = $wrap.clientWidth,\n wrapHeight = $wrap.clientHeight,\n wrapRatio = wrapWidth / wrapHeight;\n\n var newHeight = 0,\n newWidth = 0;\n setCss.marginLeft = setCss.marginTop = 0;\n\n // basically we do the opposite action for contain and cover,\n // depending on whether the video aspect ratio is less than or\n // greater than the wrapper's aspect ratio\n if (videoRatio < wrapRatio ?\n style['object-fit'] === 'contain' : style['object-fit'] === 'cover') {\n newHeight = wrapHeight * videoRatio;\n newWidth = wrapWidth / videoRatio;\n\n setCss.width = Math.round(newHeight) + 'px';\n setCss.height = wrapHeight + 'px';\n\n if (style['object-position-x'] === 'left')\n setCss.marginLeft = 0;\n else if (style['object-position-x'] === 'right')\n setCss.marginLeft = Math.round(wrapWidth - newHeight) + 'px';\n else\n setCss.marginLeft = Math.round((wrapWidth - newHeight) / 2) + 'px';\n } else {\n newWidth = wrapWidth / videoRatio;\n\n setCss.width = wrapWidth + 'px';\n setCss.height = Math.round(newWidth) + 'px';\n\n if (style['object-position-y'] === 'top')\n setCss.marginTop = 0;\n else if (style['object-position-y'] === 'bottom')\n setCss.marginTop = Math.round(wrapHeight - newWidth) + 'px';\n else\n setCss.marginTop = Math.round((wrapHeight - newWidth) / 2) + 'px';\n }\n\n // play the video if autoplay is set\n if ($el.autoplay)\n $el.play();\n }\n }\n\n /**\n * Split the object-position property into x and y position properties\n * @param {object} style Relevant element styles\n * @return {object} The style object with the added x and y props\n */\n function parsePosition (style) {\n if (~style['object-position'].indexOf('left'))\n style['object-position-x'] = 'left';\n else if (~style['object-position'].indexOf('right'))\n style['object-position-x'] = 'right';\n else\n style['object-position-x'] = 'center';\n\n if (~style['object-position'].indexOf('top'))\n style['object-position-y'] = 'top';\n else if (~style['object-position'].indexOf('bottom'))\n style['object-position-y'] = 'bottom';\n else\n style['object-position-y'] = 'center';\n\n return style;\n }\n\n /**\n * Throttle an event with RequestAnimationFrame API for better performance\n * @param {string} type The event to throttle\n * @param {string} name Custom event name to listen for\n * @param {object} obj Optional object to attach the event to\n */\n function throttle (type, name, obj) {\n obj = obj || window;\n var running = false,\n evt = null;\n\n // IE does not support the CustomEvent constructor\n // so if that fails do it the old way\n try {\n evt = new CustomEvent(name);\n } catch (e) {\n evt = document.createEvent('Event');\n evt.initEvent(name, true, true);\n }\n\n var func = function () {\n if (running) return;\n\n running = true;\n requestAnimationFrame(function () {\n obj.dispatchEvent(evt);\n running = false;\n });\n };\n\n obj.addEventListener(type, func);\n }\n};\n\nif (typeof module !== 'undefined' && typeof module.exports !== 'undefined')\n module.exports = objectFitVideos;\n","\n/**\n * Serialize Model\n */\nBackbone.Model.prototype.serializeModel = function () {\n 'use strict';\n\n return _.clone(this.attributes);\n};\n","/**\n * Custom remove method to remove view from the DOM\n * @returns {Backbone.View}\n */\nBackbone.View.prototype.remove = function () {\n 'use strict';\n\n this.undelegateEvents();\n this.$el.empty();\n this.stopListening();\n return this;\n};\n\n/**\n * Close view to prevent zombies on backbone\n * This method should be called when view is no longer displayed\n */\nBackbone.View.prototype.close = function () {\n 'use strict';\n\n /**\n * Remove the view from the DOM and unbind jQuery element\n */\n this.remove();\n\n /**\n * Unbind any event attached by this view\n */\n this.unbind();\n\n /**\n * When onClose exist, execute it\n * The purpose of this code is to enable a custom on close method\n */\n if (this.onClose) {\n this.onClose();\n }\n\n return this;\n};\n\n/**\n * Listen to media\n * @description\n *\n * listen to media by add the listener to your 'initialize' function\n * inside a Backbone.View, like the example above:\n *\n * initialize: function () {\n * this.listenToMedia(this.onMediaChange);\n * }\n *\n * onMediaChange: function (media) {\n * switch (media) {\n * case 'desktop':\n * this.renderDesktop();\n * break;\n * }\n * }\n *\n * Once you turned-on the listener, you can use the method below to get\n * the current media type:\n *\n * var myCurrentMedia = this.getCurrentMedia();\n *\n * @param {Function} callback\n * @returns {Backbone.Model}\n */\nBackbone.View.prototype.listenToMedia = function (callback) {\n 'use strict';\n\n this.screenMedia = this.getCurrentMedia();\n\n /**\n * Fire media listener\n */\n this.fireMediaListener = function () {\n var media = this.getCurrentMedia();\n if (this.screenMedia !== media) {\n this.screenMedia = media;\n callback(this.screenMedia);\n }\n };\n\n /**\n * Register resize event\n */\n if (callback) {\n jQuery(window).on('resize.listenToMedia', this.fireMediaListener.bind(this));\n }\n\n return this;\n};\n\n/**\n * Get the current media by resolution\n * @returns {*}\n */\nBackbone.View.prototype.getCurrentMedia = function () {\n 'use strict';\n\n /**\n * Find between media screen resolutions\n * @param {number} x - current resolution number\n * @param {Array} media - array win min and max resolution numbers\n * @returns {boolean}\n */\n function between(x, media) {\n return x >= media[0] && x <= media[1];\n }\n\n /**\n *\n */\n for (var device in globals.media.devices) {\n if (between(window.innerWidth, globals.media.devices[device])) {\n return device;\n }\n }\n\n return globals.media.default;\n};\n","var globals = {};\nvar njm = {};\nvar bbGEvent = bbGEvent || _.extend({}, Backbone.Events);\n\n/**\n * Backbone Objects\n */\nnjm.views = njm.views || {};\nnjm.models = njm.models || {};\nnjm.collections = njm.collections || {};\nnjm.routers = njm.routers || {};\n\n/**\n * Define the devices resolution supported\n */\nglobals.media = {\n default: 'desktop',\n devices: {\n mobile: [0, 767],\n tablet: [768, 1044],\n desktop: [1045, 10000]\n }\n};\n\n/*jshint unused:false*/\n/**\n * Initialize Data Layer for Google Tag Manager\n * @type {Array}\n */\nvar dataLayer = window.dataLayer || [];\n\n/**\n * Cover Image support for IE11\n */\nif ('objectFit' in document.documentElement.style === false) {\n\n // assign HTMLCollection with parents of images with objectFit to variable\n var container = document.getElementsByClassName('cover-img');\n\n // Loop through HTMLCollection\n for (var i = 0; i < container.length; i++) {\n\n // Asign image source to variable\n var imageSource = container[i].querySelector('img').src;\n\n // Hide image\n container[i].querySelector('img').style.display = 'none';\n\n // Add background-size: cover\n container[i].style.backgroundSize = 'cover';\n\n // Add background-image: and put image source here\n container[i].style.backgroundImage = 'url(' + imageSource + ')';\n\n // Add background-position: center center\n container[i].style.backgroundPosition = 'center center';\n }\n}\n","var njmClientClickTracking = function () {\r\n function sendTrackingInfo(objParam, methodName) {\r\n return new Promise((resolve, reject) => {\r\n var xhttp = new XMLHttpRequest();\r\n xhttp.onreadystatechange = function () {\r\n if (xhttp.readyState === 4) { // Ensure the request has completed\r\n if (xhttp.status === 200) {\r\n resolve(xhttp.responseText);\r\n } else {\r\n reject('Status: ' + this.status + '\\nHeaders: ' + JSON.stringify(this.getAllResponseHeaders()) + '\\nBody: ' + this.responseText);\r\n }\r\n }\r\n };\r\n var forgeryId = document.getElementsByName(\"__RequestVerificationToken\")[0].value;\r\n xhttp.open(\"POST\", \"/njm/CustomAnalyticsService/\" + methodName, false);\r\n xhttp.setRequestHeader(\"Content-type\", \"application/json\");\r\n xhttp.setRequestHeader(\"VerificationToken\", forgeryId);\r\n var json = JSON.stringify(objParam);\r\n xhttp.send(json);\r\n });\r\n };\r\n\r\n return {\r\n linkClicked: function (objParam) {\r\n var jsonData = { name: \"Link Clicked\", data: objParam.innerText, text: objParam.id };\r\n sendTrackingInfo(jsonData, \"TrackEvent\");\r\n },\r\n quoteLinkClicked: function (EventName, Data, text) {\r\n //var jsonData = { name: \"Quote Link Clicked\", data: JSON.stringify({ EventName: EventName, Data: Data, PageUrl: window.location.href }), text: text };\r\n //sendTrackingInfo(jsonData, \"TrackEvent\");\r\n },\r\n linkClickedWithUserID: function (objParam, UserId) {\r\n var jsonData = { name: \"Link Clicked\", data: JSON.stringify({ EventName: objParam.innerText, Userid: UserId }), text: objParam.id };\r\n sendTrackingInfo(jsonData, \"TrackEvent\");\r\n },\r\n screenLoadingsuccessful: function (ScreenName, UserId) {\r\n var jsonData = { name: \"Link Clicked\", data: JSON.stringify({ EventName: \"securityqp\", Userid: UserId }), text: ScreenName + \"Display Successful\" };\r\n sendTrackingInfo(jsonData, \"TrackEvent\");\r\n },\r\n trackRedirects: function (CurrentPage, UrlReferrer, RedirectingTo) {\r\n var jsonData = { name: \"Redirecting\", data: JSON.stringify({ EventName: \"Page Redirect\", UrlReferrer: UrlReferrer, RedirectingTo: RedirectingTo }), text: CurrentPage };\r\n sendTrackingInfo(jsonData, \"TrackEvent\");\r\n },\r\n logError: function (objParam) {\r\n var jsonData = { name: \"Error\", data: objParam.innerText, text: objParam.id };\r\n sendTrackingInfo(jsonData, \"TrackEvent\");\r\n },\r\n logErrorGeneric: function (methodName, errorMessage, statusCode, userId, exception) {\r\n var jsonData = { name: \"Error\", data: JSON.stringify({ MethodName: methodName, StatusCode: statusCode, UserId: userId, Exception: exception }), text: errorMessage };\r\n sendTrackingInfo(jsonData, \"TrackEvent\");\r\n },\r\n trackUser: async function (objParam, pUserid, pPolicyType) {\r\n var jsonData = { name: \"update profile\", data: JSON.stringify({ Userid: pUserid, PolicyTypes: pPolicyType }), text: objParam.id };\r\n try {\r\n await sendTrackingInfo(jsonData, \"TrackUser\");\r\n console.log('Tracking info sent successfully.');\r\n } catch (error) {\r\n console.error('Error sending tracking info: ', error);\r\n }\r\n },\r\n trackPageName: function (pageUrl, referralUrl) {\r\n var jsonData = { pageurl: pageUrl, referralurl: referralUrl };\r\n sendTrackingInfo(jsonData, \"TrackPage\");\r\n },\r\n triggerGoal: function (goalid) {\r\n var jsonData = { goalId: goalid };\r\n sendTrackingInfo(jsonData, \"TriggerGoal\");\r\n }\r\n }\r\n}();\n","/**\r\n* OpenAM get device script\r\n**/\r\nfunction device() {\r\n /*\r\n * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.\r\n *\r\n * Copyright (c) 2009 Sun Microsystems Inc. All Rights Reserved\r\n *\r\n * The contents of this file are subject to the terms\r\n * of the Common Development and Distribution License\r\n * (the License). You may not use this file except in\r\n * compliance with the License.\r\n *\r\n * You can obtain a copy of the License at\r\n * https://opensso.dev.java.net/public/CDDLv1.0.html or\r\n * opensso/legal/CDDLv1.0.txt\r\n * See the License for the specific language governing\r\n * permission and limitations under the License.\r\n *\r\n * When distributing Covered Code, include this CDDL\r\n * Header Notice in each file and include the License file\r\n * at opensso/legal/CDDLv1.0.txt.\r\n * If applicable, add the following below the CDDL Header,\r\n * with the fields enclosed by brackets [] replaced by\r\n * your own identifying information:\r\n * \"Portions Copyrighted [year] [name of copyright owner]\"\r\n *\r\n */\r\n /*\r\n * Portions Copyrighted 2013 Syntegrity.\r\n * Portions Copyrighted 2013-2014 ForgeRock AS.\r\n */\r\n\r\n getDateOffset = function() {\r\n \tvar currDt = new Date();\r\n\tvar jan = new Date(currDt.getFullYear(), 0, 1);\r\n \tvar jul = new Date(currDt.getFullYear(), 6, 1);\r\n \treturn Math.max(jan.getTimezoneOffset(), jul.getTimezoneOffset());\r\n },\t\r\n collectTimezoneInfo = function () {\r\n var timezoneInfo = {};\r\n\t var offset = getDateOffset();\t\t\r\n if (offset) {\r\n timezoneInfo.timezone = offset;\r\n } else {\r\n console.warn(\"Cannot collect timezone information. timezone is not defined.\");\r\n }\r\n\r\n return timezoneInfo;\r\n },\r\n collectBrowserPluginsInfo = function () {\r\n if (navigator && navigator.plugins) {\r\n var pluginsInfo = {}, i, plugins = navigator.plugins;\r\n pluginsInfo.installedPlugins = \"\";\r\n return pluginsInfo;\r\n } else {\r\n console.warn(\"Cannot collect browser plugin information. navigator.plugins is not defined.\");\r\n return {};\r\n }\r\n\r\n },\r\n collectBrowserFontsInfo = function () {\r\n var fontsInfo = {}, i, fontsList = [\"cursive\", \"monospace\", \"serif\", \"sans-serif\", \"fantasy\", \"default\", \"Arial\", \"Arial Black\",\r\n \"Arial Narrow\", \"Arial Rounded MT Bold\", \"Bookman Old Style\", \"Bradley Hand ITC\", \"Century\", \"Century Gothic\",\r\n \"Comic Sans MS\", \"Courier\", \"Courier New\", \"Georgia\", \"Gentium\", \"Impact\", \"King\", \"Lucida Console\", \"Lalit\",\r\n \"Modena\", \"Monotype Corsiva\", \"Papyrus\", \"Tahoma\", \"TeX\", \"Times\", \"Times New Roman\", \"Trebuchet MS\", \"Verdana\",\r\n \"Verona\"];\r\n fontsInfo.installedFonts = \"\";\r\n \r\n return fontsInfo;\r\n },\r\n\r\n\r\n devicePrint = {};\r\n\r\n devicePrint.screen = {};\r\n devicePrint.timezone = collectTimezoneInfo();\r\n devicePrint.plugins = collectBrowserPluginsInfo();\r\n devicePrint.fonts = collectBrowserFontsInfo();\r\n\r\n if (navigator.userAgent) {\r\n devicePrint.userAgent = navigator.userAgent;\r\n }\r\n if (navigator.appName) {\r\n devicePrint.appName = navigator.appName;\r\n }\r\n if (navigator.appCodeName) {\r\n devicePrint.appCodeName = navigator.appCodeName;\r\n }\r\n if (navigator.appVersion) {\r\n devicePrint.appVersion = navigator.appVersion;\r\n }\r\n if (navigator.platform) {\r\n devicePrint.platform = navigator.platform;\r\n }\r\n if (navigator.cpuClass) {\r\n devicePrint.cpuClass = navigator.cpuClass;\r\n }\r\n if (navigator.oscpu) {\r\n devicePrint.oscpu = navigator.oscpu;\r\n }\r\n if (navigator.product) {\r\n devicePrint.product = navigator.product;\r\n }\r\n if (navigator.vendor) {\r\n devicePrint.vendor = navigator.vendor;\r\n }\r\n if (navigator.language) {\r\n devicePrint.language = navigator.language;\r\n }\r\n if (navigator.browserLanguage) {\r\n devicePrint.browserLanguage = navigator.browserLanguage;\r\n }\r\n if (navigator.systemLanguage) {\r\n devicePrint.systemLanguage = navigator.systemLanguage;\r\n }\r\n\r\n devicePrint.geolocation = {};\r\n \r\n return JSON.stringify(devicePrint);\r\n}","(function ($) {\n 'use strict';\n\n /**\n * Check for Internet Explorer\n * @returns {boolean}\n */\n function isIe() {\n var ua = window.navigator.userAgent;\n var msie = ua.indexOf('MSIE ');\n\n return msie > 0 || !!navigator.userAgent.match(/Trident.*rv\\:11\\./);\n }\n\n /**\n * Check for Windows\n * @returns {boolean}\n */\n function isWin() {\n return navigator.platform.indexOf('Win') > -1;\n }\n\n if (isIe()) {\n $('body').addClass('IE');\n }\n\n if (isWin()) {\n $('body').addClass('WIN');\n }\n})(jQuery);\n","(function ($, njm) {\n 'use strict';\n\n /**\n * Loader\n * @returns {{init: Function}}\n * @constructor\n */\n var Loader = function () {\n var components = null;\n var view = '';\n var model = '';\n var collection = '';\n var viewsInstances = [];\n\n /**\n * Initializer\n */\n var init = function () {\n components = $('.component');\n _.each(components, function (component) {\n view = $(component).attr('data-view');\n model = $(component).attr('data-model');\n collection = $(component).attr('data-collection');\n\n if (!view) {\n // Skip component when no view is attached to it\n return;\n }\n\n if (njm.views[view] !== undefined) {\n if (collection === undefined) {\n viewsInstances.push(new njm.views[view]({\n el: $(component),\n model: njm.models[model] !== undefined ? new njm.models[model]() : null\n }));\n } else {\n viewsInstances.push(new njm.views[view]({\n el: $(component),\n collection: njm.collections[collection] !== undefined ? new njm.collections[collection]() : null\n }));\n }\n } else {\n throw new Error('No view found for ' + view);\n }\n });\n };\n\n // Public\n return {\n init: init,\n viewInstances: viewsInstances\n };\n };\n\n // Starting the application\n $(document).ready(function () {\n if (!window.loader) {\n window.loader = new Loader();\n window.loader.init();\n }\n });\n\n})(jQuery, njm);\n","(function ($, njm) {\r\n 'use strict';\r\n\r\n njm.views.accordion = Backbone.View.extend({\r\n\r\n events: {\r\n 'click .accordion-title': 'toggle'\r\n },\r\n\r\n /**\r\n * Initialize\r\n */\r\n initialize: function () {\r\n if (!this.isPageEditor()) {\r\n this.collapse(this.$('.accordion-item'));\r\n }\r\n },\r\n\r\n /**\r\n * Is Page Editor\r\n * @returns {boolean}\r\n */\r\n isPageEditor: function () {\r\n return !!(window.Sitecore && window.Sitecore.PageModes && window.Sitecore.PageModes.PageEditor);\r\n },\r\n\r\n /**\r\n * Toggle clicked accordion\r\n * @param {Object} e\r\n */\r\n toggle: function (e) {\r\n e.preventDefault();\r\n var $target = $(e.currentTarget).parents('.accordion-item');\r\n\r\n if ($target.hasClass('collapsed')) {\r\n this.expand($target);\r\n } else {\r\n this.collapse($target);\r\n }\r\n },\r\n\r\n /**\r\n * Collapse accordion\r\n * @param {Object} target\r\n */ \r\n collapse: function (target) {\r\n target.addClass('collapsed');\r\n target.find('.accordion-title').attr('aria-expanded', false);\r\n target.find('.accordion-title > .icon-minus').removeClass('icon-minus').addClass('icon-plus');\r\n\r\n //target.find('.accordion-content').slideUp().attr('aria-hidden', true); //UPDATE TO BELOW\r\n\r\n target.find('.accordion-content').slideUp(function () {\r\n $(this).attr('aria-hidden', true);\r\n });\r\n },\r\n\r\n /**\r\n * Expand accordion\r\n * @param {Object} target\r\n */\r\n expand: function (target) {\r\n target.removeClass('collapsed');\r\n target.find('.accordion-title').attr('aria-expanded', true);\r\n target.find('.accordion-title > .icon-plus').removeClass('icon-plus').addClass('icon-minus');\r\n target.find('.accordion-content').slideDown().attr('aria-hidden', false);\r\n }\r\n });\r\n})(jQuery, njm);\r\n","(function ($, njm) {\r\n 'use strict';\r\n\r\n njm.views.articlesHero = Backbone.View.extend({\r\n\r\n /**\r\n * Initialize\r\n */\r\n initialize: function () {\r\n this.$holder = this.$('.holder');\r\n\r\n // execute view and listener\r\n this.listenToMedia(this.render.bind(this));\r\n this.render(this.getCurrentMedia());\r\n },\r\n\r\n /**\r\n * Render\r\n * @param {string} media\r\n */\r\n render: function (media) {\r\n // stop timer to avoid duplicate timers for the auto-scroll feature\r\n\t\t\tif (this.lastView) {\r\n\t\t\t\tif (this.lastView.medias.indexOf('tablet') > -1 || this.lastView.medias.indexOf('desktop') > -1) {\r\n\t\t\t\t\t//console.log(this.lastView.setInterval);\r\n\t\t\t\t\tclearInterval(this.lastView.setInterval);\r\n\t\t\t\t}\r\n\t\t\t\t\r\n\t\t\t\tthis.lastView.close();\r\n\t\t\t}\r\n // append view based on media\r\n this.lastView = this.switchMedia(media);\r\n },\r\n\r\n /**\r\n * Switch View by media\r\n * @param media\r\n * @returns {Object}\r\n */\r\n switchMedia: function (media) {\r\n switch (media) {\r\n case 'mobile':\r\n return this.renderMobile();\r\n\r\n case 'tablet':\r\n\t\t\t\tcase 'desktop':\r\n return this.renderDesktop();\r\n }\r\n },\r\n\r\n /**\r\n * Render Mobile\r\n * @returns {Object}\r\n */\r\n renderMobile: function () {\r\n return new njm.views.articlesHeroMobile({\r\n el: this.$holder\r\n });\r\n },\r\n\r\n /**\r\n * Render Desktop\r\n * @returns {Object}\r\n */\r\n renderDesktop: function () {\r\n return new njm.views.articlesHeroDesktop({\r\n el: this.$holder\r\n });\r\n }\r\n\r\n });\r\n})(jQuery, njm);","(function ($, njm) {\r\n 'use strict';\r\n\r\n njm.views.carouselHero = Backbone.View.extend({\r\n\r\n /**\r\n * Initialize\r\n */\r\n initialize: function () {\r\n\t\t\tthis.initializeSlick();\r\n\t\t},\r\n\t\t\r\n\t\tinitializeSlick: function() {\r\n\t\t\t$('.comp-carousel-hero').slick({\r\n\t\t\t\tslidesToShow: 1,\r\n\t\t\t\tslidesToScroll: 1,\r\n\t\t\t\tautoplay: true,\r\n\t\t\t\tdots: true,\r\n\t\t\t\tprevArrow: '
\\nPrevious\\n
\\n',\r\n\t\t\t\tnextArrow: '
\\n\\n
\\n',\r\n\t\t\t\tresponsive: [\r\n\t\t\t\t\t{\r\n\t\t\t\t\t breakpoint: 768,\r\n\t\t\t\t\t settings: {\r\n\t\t\t\t\t\tarrows: false\r\n\t\t\t\t\t }\r\n\t\t\t\t\t}\r\n\t\t\t\t]\r\n\t\t\t});\r\n\t\t}\r\n });\r\n})(jQuery, njm);","(function ($, njm) {\r\n 'use strict';\r\n\r\n njm.views.clLogin = Backbone.View.extend({\r\n\r\n events: {\r\n 'click #login1': 'login1',\r\n 'click #login2': 'login2',\r\n 'click #login4': 'updateQuestions',\r\n 'click #cancel': 'backToSection',\r\n 'click #cancelReset': 'cancelReset',\r\n 'click #forgotAnswers': 'forgotAnswers',\r\n 'click #login3': 'verifyCodeEvent',\r\n 'click #createQuestionsCancel': 'backToSection',\r\n 'click .password-visibility': 'passwordVisibility',\r\n 'keypress #password': 'capslockHint',\r\n 'click #forgotID': 'forgotID',\r\n 'click #forgotPass': 'forgotPass',\r\n 'click #register': 'register',\r\n 'click #forgotIDBack': 'refresh',\r\n 'click #forgotPassBack': 'refresh',\r\n 'click #cancelResetPass': 'refresh',\r\n 'click #cancelKba': 'refresh',\r\n 'click #cancelReg': 'refresh',\r\n 'click #cancelForgotID': 'refresh',\r\n 'click #userIDConfirmBtn': 'refresh',\r\n 'click #pwdConfirmBtn': 'refresh',\r\n 'click #btnForgotID': 'forgotUserID',\r\n 'click #btnForgotPass': 'forgotPassword',\r\n 'click #btnPassQuestions': 'passQuestions',\r\n 'click #btnIDQuestions': 'userIDQuestions',\r\n 'click #createBack': 'backToQuestionsFromCreateBack',\r\n 'click #cancelResetKba': 'backToQuestions',\r\n 'click #login4Back': 'refresh'\r\n },\r\n\r\n initialize: function () {\r\n try {\r\n var checkUserUrl = $('#login3').data('checkuserurl'),\r\n vercd = this.urlParam('vercd'),\r\n user = this.urlParam('userid');\n const destinationUrl = $('#login1').data('destinationurl');\n // Check if in Experience Editor mode\r\n const isExperienceEditor = document.getElementById('hidIsExperienceEditor')?.value === \"\";\r\n const otpEntryVisible = $(\"#otp-entry\").is(\":visible\");\n const urlObj = new URL(destinationUrl);\n const currentTimestamp = Date.now();\n const locCheck = decodeURIComponent(window.location.search);\n const gotoParam = this.urlParam('goto', locCheck);\n const dctimestamp = this.urlParam('_dc', locCheck);\n const dcTimeOut = 5 * 60 * 1000;// Timeout constant (5 minutes)\n const agentParam = this.urlParam(\"agent\", locCheck);\n const customParam = this.urlParam('context', locCheck);\n if (isExperienceEditor && !otpEntryVisible) {\r\n if (!gotoParam || !dctimestamp || (dctimestamp && (currentTimestamp - dctimestamp > dcTimeOut))) {\n if (agentParam) {\n agentParam === 'true' ? urlObj.searchParams.set('agent', true) : urlObj.searchParams.set('agent', false);\r\n }\n urlObj.searchParams.set('_dc', currentTimestamp);\n if (customParam && customParam != '') {\n urlObj.searchParams.set('context', customParam);\r\n }\n var processedUrl = decodeURIComponent(urlObj.toString());\n njmClientClickTracking.trackRedirects(window.location.href, document.referrer, processedUrl);\n this.redirect(processedUrl);\n }\n setInterval(function () {\n if (!timestamp || (timestamp && (currentTimestamp - timestamp > dcTimeOut))) {\n if (agentParam) {\n agentParam === 'true' ? urlObj.searchParams.set('agent', true) : urlObj.searchParams.set('agent', false);\r\n }\n urlObj.searchParams.set('_dc', currentTimestamp);\n if (customParam && customParam != '') {\n urlObj.searchParams.set('context', customParam);\r\n }\n var processedUrl = decodeURIComponent(urlObj.toString());\n njmClientClickTracking.trackRedirects(window.location.href, document.referrer, processedUrl);\n this.redirect(processedUrl);\n }\n }, 300000);\n }\r\n if (vercd) {\r\n this.verifyCode(vercd);\r\n } else {\r\n if (user) {\r\n $('#loading').show();\r\n $.ajax({\r\n type: 'POST',\r\n url: checkUserUrl,\r\n xhrFields: {\r\n withCredentials: true\r\n },\r\n data: {\r\n id: user\r\n },\r\n dataType: 'json',\r\n success: function (response, status, request) {\r\n document.getElementById(\"userid\").value = response;\r\n $('#loading').hide();\r\n },\r\n error: function (response) {\r\n document.getElementById('warningText').innerHTML = \"The link is expired. Please restart Forgot User ID process. \";\r\n document.getElementById('warning').style.display = 'block';\r\n $('#loading').hide();\r\n }\r\n });\r\n\r\n }\r\n $('#userid').keypress(function (e) {\r\n if (e.keyCode === 13) {\r\n $('#login1').click();\r\n }\r\n });\r\n $('#password').keypress(function (e) {\r\n if (e.keyCode === 13) {\r\n $('#login1').click();\r\n }\r\n });\r\n $('#ans1').keypress(function (e) {\r\n if (e.keyCode === 13) {\r\n $('#login2').click();\r\n }\r\n });\r\n $('#ans2').keypress(function (e) {\r\n if (e.keyCode === 13) {\r\n $('#login2').click();\r\n }\r\n });\r\n }\r\n\r\n //if (localStorage.chkbox && localStorage.chkbox != '') {\r\n // $('#rememberUserID').attr('checked', 'checked');\r\n // $('#userid').val(localStorage.username);\r\n //} else {\r\n // $('#rememberUserID').removeAttr('checked');\r\n // $('#userid').val('');\r\n //}\r\n\r\n /**\r\n * Disable IE's capslock indicator since we provide one\r\n **/\r\n if ($('.cssLogin #password') && document.msCapsLockWarningOff === false) {\r\n document.msCapsLockWarningOff = true;\r\n }\r\n\r\n /**\r\n * Prevent selecting duplicate security questions\r\n **/\r\n $(\".security-question\").change(function () {\r\n var values = [];\r\n $(\".security-question\").each(function () {\r\n values.push(this.value);\r\n });\r\n\r\n $(this).siblings(\".security-question\").find(\"option\").removeAttr(\"disabled\").filter(function () {\r\n var a = $(this).parent(\"select\").val();\r\n return (($.inArray(this.value, values) > -1) && (this.value != a))\r\n }).attr(\"disabled\", \"disabled\");\r\n });\r\n\r\n /**\r\n * Trigger prevention of duplicate security questions\r\n **/\r\n $(\".security-question\").eq(0).trigger('change');\r\n\r\n njmClientClickTracking.trackPageName(window.location.href, document.referrer);\r\n }\r\n catch (ex) {\r\n njmClientClickTracking.logErrorGeneric(\"initialize\", ex.name, \"Exception on initialize\", \"Anonymous\", ex.stack);\r\n throw ex;\r\n }\r\n },\r\n\r\n stringTrim: function (x) {\r\n return x.replace(/^\\s+|\\s+$/gm, '');\r\n },\r\n\r\n /**\r\n * Parse return error message for Login\r\n **/\r\n checkLoginError: function (response) {\r\n var status = response.status,\r\n msg = response.responseText ? JSON.parse(response.responseText).message : '';\r\n var userId = this.stringTrim(document.getElementById('userid').value);\r\n var errorMsg = 'We’re sorry, an error has occurred. Please try again later.';\r\n\r\n if (status === 400 && msg) {\r\n if (msg.indexOf('Authentication Failed') >= 0) {\r\n errorMsg = 'The User ID and/or Password you are entering are invalid.';\r\n if (msg.indexOf('You will be locked out') >= 0) {\r\n errorMsg = errorMsg + ' To avoid being locked out, please use the “Forgot User ID?” and/or “Forgot Password?” links to obtain your User ID or a new Password.';\r\n }\r\n } else if (msg.indexOf('Your account has been locked') >= 0) {\r\n errorMsg = 'You have been locked out of your account. Please contact our customer service department during our business hours.';\r\n } else if (msg.indexOf('Your account is locked') >= 0) {\r\n errorMsg = 'Your account is locked. Please contact our Customer Service department during our business hours.';\r\n } else if (msg.indexOf('You have not successfully completed your registration') >= 0) {\r\n errorMsg = 'You have not successfully completed your registration. Please click the link in the e-mail we have sent you to complete the registration process or contact our Customer Service department during our business hours.';\r\n } else if (msg.indexOf('Your account has been deactivated') >= 0) {\r\n errorMsg = 'Your account has been deactivated. Please contact our Customer Service department during our business hours.';\r\n } else {\r\n errorMsg = 'The User ID and/or Password you are entering are invalid.';\r\n }\r\n }\r\n njmClientClickTracking.logErrorGeneric(\"checkLoginError\", msg, status, userId, errorMsg);\r\n return errorMsg;\r\n },\r\n\r\n /**\r\n * Redirects to given location. Handles Cancel and Registration button clicks\r\n **/\r\n cancelReset: function (e) {\r\n var destinationUrl = $(e.currentTarget).data('href');\r\n var UserId = this.stringTrim(document.getElementById('userid').value);\r\n\r\n njmClientClickTracking.linkClickedWithUserID(e.currentTarget, UserId);\r\n\r\n if (destinationUrl !== undefined && destinationUrl !== '') {\r\n window.location = destinationUrl;\r\n }\r\n },\r\n\r\n /**\r\n * In future, needs to get URL from API return in previous step as parameter\r\n **/\r\n redirect: function (inpurl) {\r\n if (window.location.search.indexOf('mobile=y') >= 0) {\r\n inpurl = inpurl + '?mobile=y';\r\n }\r\n window.location.replace(inpurl);\r\n },\r\n\r\n login1: function (e) {\r\n e.preventDefault();\r\n $('#loading').show();\r\n var UserId = this.stringTrim(document.getElementById('userid').value);\r\n\r\n njmClientClickTracking.linkClickedWithUserID(e.currentTarget, UserId);\r\n\r\n var loginApiUrl = $(e.currentTarget).data('loginapiurl');\r\n var destinationUrl = $(e.currentTarget).data('destinationurl');\r\n\r\n this.login(loginApiUrl, destinationUrl, false);\r\n },\r\n\r\n /**\r\n * Passes question answers and save device choice to login/save API\r\n * Redirects on success\r\n **/\r\n login2: function (e) {\r\n e.preventDefault();\r\n var self = this;\r\n\r\n $('#loading').show();\r\n var UserId = this.stringTrim(document.getElementById('userid').value);\r\n njmClientClickTracking.linkClickedWithUserID(e.currentTarget, UserId);\r\n\r\n var ans1 = this.stringTrim(document.getElementById('ans1').value),\r\n ans2 = this.stringTrim(document.getElementById('ans2').value),\r\n valid = true;\r\n\r\n var loginApiUrl = $('#login1').data('loginapiurl');\r\n var destinationUrl = $('#login1').data('destinationurl');\r\n var saveApiUrl = $(e.currentTarget).data('saveapiurl');\r\n var OauthUrl = $(e.currentTarget).data('oauthurl');\r\n if (this.stringTrim(ans1) === '') {\r\n document.getElementById('ans1').style.border = '1px solid #cc0000';\r\n valid = false;\r\n } else {\r\n document.getElementById('ans1').style.border = '';\r\n }\r\n\r\n if (this.stringTrim(ans2) === '') {\r\n document.getElementById('ans2').style.border = '1px solid #cc0000';\r\n valid = false;\r\n } else {\r\n document.getElementById('ans2').style.border = '';\r\n }\r\n\r\n if (!valid) {\r\n document.getElementById('warningText').innerHTML = 'Please fill in the highlighted fields to continue';\r\n document.getElementById('warning').style.display = 'block';\r\n $('#loading').hide();\r\n } else {\r\n $.ajax({\r\n type: 'POST',\r\n url: saveApiUrl,\r\n xhrFields: {\r\n withCredentials: true\r\n },\r\n data: {\r\n 'Answer1': this.stringTrim(document.getElementById('ans1').value),\r\n 'Answer2': this.stringTrim(document.getElementById('ans2').value),\r\n 'Save': document.getElementById('saveDevice').checked\r\n },\r\n success: function (response, status, request) {\r\n document.getElementById('warning').style.display = 'none';\r\n self.getOauthToken(destinationUrl, OauthUrl, self);\r\n },\r\n error: function (response) {\r\n document.getElementById('ans1').value = '';\r\n document.getElementById('ans2').value = '';\r\n var error = self.checkKBAError(response.status, JSON.parse(response.responseText).message);\r\n document.getElementById('warningText').innerHTML = error;\r\n document.getElementById('warning').style.display = 'block';\r\n $('#loading').hide();\r\n if (error.indexOf('You have been locked out of your account.') < 0) {\r\n self.login(loginApiUrl, destinationUrl, true);\r\n }\r\n }\r\n });\r\n }\r\n },\r\n\r\n login: function (loginApiUrl, destinationUrl, keepWarning) {\r\n var self = this;\r\n var destUrl = $('#login1').data('destinationurl');\r\n var OauthUrl = $('#login2').data('oauthurl');\r\n var blogReturnUrl = $('#login1').data('blogredirecturl');\r\n var userID = this.stringTrim(document.getElementById('userid').value),\r\n pass = this.stringTrim(document.getElementById('password').value),\r\n valid = true;\r\n //if (document.getElementById(\"rememberUserID\").checked) {\r\n // // save username and password\r\n // localStorage.username = userID;\r\n // localStorage.chkbox = document.getElementById(\"rememberUserID\").checked;\r\n //} else {\r\n // localStorage.username = '';\r\n // localStorage.chkbox = '';\r\n //}\r\n\r\n if (this.stringTrim(userID) === '') {\r\n document.getElementById('userid').style.border = '1px solid #cc0000';\r\n valid = false;\r\n } else {\r\n document.getElementById('userid').style.border = '';\r\n }\r\n\r\n if (this.stringTrim(pass) === '') {\r\n document.getElementById('password').style.border = '1px solid #cc0000';\r\n valid = false;\r\n } else {\r\n document.getElementById('password').style.border = '';\r\n }\r\n\r\n if (!valid) {\r\n document.getElementById('warningText').innerHTML = 'Please fill in the highlighted fields to continue.';\r\n document.getElementById('warning').style.display = 'block';\r\n $('#loading').hide();\r\n } else {\r\n $.ajax({\r\n type: 'POST',\r\n url: loginApiUrl,\r\n xhrFields: {\r\n withCredentials: true\r\n },\r\n data: {\r\n 'UserID': userID,\r\n 'Password': pass,\r\n 'device': device()\r\n },\r\n success: function (response, status, request) {\r\n\r\n if (Array.isArray(response)) {\r\n if (response.length == 2) {\r\n document.getElementById(\"question1\").innerHTML = response[0];\r\n document.getElementById(\"question2\").innerHTML = response[1];\r\n document.getElementById(\"loginPage\").style.display = \"none\";\r\n if (!($(\"#loginPage\").is(\":visible\"))) {\r\n $('.comp-login').addClass('hide-content');\r\n }\r\n document.getElementById(\"answerQuestions\").style.display = \"block\";\r\n }\r\n else {\r\n self.fillQuestions(response);\r\n document.getElementById(\"loginPage\").style.display = \"none\";\r\n if (!($(\"#loginPage\").is(\":visible\"))) {\r\n $('.comp-login').addClass('hide-content');\r\n }\r\n document.getElementById(\"createQuestions\").style.display = \"block\";\r\n document.getElementById(\"createBack\").style.display = \"none\";\r\n\r\n }\r\n } else {\r\n self.getOauthToken(destUrl, OauthUrl, self);\r\n\r\n\r\n }\r\n\r\n if (!keepWarning) {\r\n document.getElementById('warning').style.display = 'none';\r\n }\r\n $('#loading').hide();\r\n },\r\n error: function (response) {\r\n var errorResponse = self.checkLoginError(response);\r\n document.getElementById('warningText').innerHTML = errorResponse;\r\n document.getElementById('warning').style.display = 'block';\r\n $('#loading').hide();\r\n //if (!document.getElementById(\"rememberUserID\").checked) {\r\n // document.getElementById('userid').value = '';\r\n //}\r\n document.getElementById('password').value = '';\r\n\r\n }\r\n });\r\n }\r\n },\r\n\r\n /**\r\n * Parse return error message for KBA\r\n **/\r\n checkKBAError: function (status, msg) {\r\n var errorMsg = 'We’re sorry, an error has occurred. Please try again later.';\r\n var userId = this.stringTrim(document.getElementById('userid').value);\r\n if (status === 400) {\r\n if (msg.indexOf('Your account has been locked') >= 0) {\r\n errorMsg = 'You have been locked out of your account. Please contact our customer service department during our business hours.';\r\n } else if (msg.indexOf('Your account is locked') >= 0) {\r\n errorMsg = 'Your account is locked. Please contact our Customer Service department during our business hours.';\r\n } else {\r\n errorMsg = 'The answers you have entered do not match our records. Please try again.';\r\n var index = msg.indexOf('You will be locked out');\r\n if (index >= 0) {\r\n errorMsg = errorMsg + ' ' + msg.substring(index);\r\n }\r\n }\r\n }\r\n njmClientClickTracking.logErrorGeneric(\"checkKBAError\", msg, status, userId, errorMsg);\r\n return errorMsg;\r\n },\r\n\r\n /**\r\n * Calls API to send email with code to enter and brings up enter code page\r\n **/\r\n forgotAnswers: function (e) {\r\n var inpurl = $('#forgotAnswers').data('forgotanswersapiurl');\n var UserId = this.stringTrim(document.getElementById('userid').value);\r\n njmClientClickTracking.linkClickedWithUserID(e.currentTarget, UserId);\r\n\r\n $.ajax({\r\n type: 'POST',\r\n url: inpurl,\r\n xhrFields: {\r\n withCredentials: true\r\n },\r\n data: \"=\" + this.stringTrim(document.getElementById('userid').value),\r\n success: function (response, status, request) {\r\n document.getElementById(\"warning\").style.display = \"none\";\r\n document.getElementById(\"answerQuestions\").style.display = \"none\";\r\n document.getElementById(\"enterCode\").style.display = \"block\";\r\n $('#loading').hide();\r\n },\r\n error: function (response) {\r\n document.getElementById(\"ans1\").value = '';\r\n document.getElementById(\"ans2\").value = '';\r\n if (response.responseText.indexOf('locked') >= 0) {\r\n var adminIndex = response.responseJSON.message.indexOf('admin');\r\n if (adminIndex >= 0) {\r\n var admin = response.responseJSON.message.substring(adminIndex + 7);\r\n\r\n document.getElementById('warningText').innerHTML = 'You account is Locked. Please contact your Admin User ' + admin;\r\n }\r\n else {\r\n document.getElementById('warningText').innerHTML = 'Your account is Locked. Please contact our Customer Service department during our business hours.';\r\n }\r\n }\r\n else {\r\n document.getElementById(\"warningText\").innerHTML = 'We\\'re sorry, an error has occurred. Please try again later.';\r\n }\r\n document.getElementById(\"warning\").style.display = \"block\";\r\n $('#loading').hide();\r\n }\r\n });\r\n },\r\n\r\n verifyCodeEvent: function (e) {\r\n var validateApiUrl = $('#login3').data('verifycodeapiurl');\r\n var destinationUrl = $('#login3').data('verifycodeDestinationurl');\r\n var self = this;\r\n var UserId = this.stringTrim(document.getElementById('userid').value);\r\n njmClientClickTracking.linkClickedWithUserID(e.currentTarget, UserId);\r\n\r\n this.verifyCode(validateApiUrl, destinationUrl, self);\r\n },\r\n\r\n /**\r\n * Sends entered code to API for verification and redirects to CSS if valid\r\n **/\r\n verifyCode: function (validateApiUrl, destinationUrl, self) {\r\n var self = this;\r\n $('#loading').show();\r\n if (document.getElementById(\"code\").value == \"\") {\r\n document.getElementById(\"code\").style.border = \"1px solid #cc0000\"\r\n document.getElementById(\"warningText\").innerHTML = \"Please fill in the highlighted field to continue\";\r\n document.getElementById(\"warning\").style.display = \"block\";\r\n $('#loading').hide();\r\n }\r\n else {\r\n $.ajax({\r\n type: 'POST',\r\n url: validateApiUrl,\r\n xhrFields: {\r\n withCredentials: true\r\n },\r\n data: {\r\n UserID: this.stringTrim(document.getElementById('userid').value),\r\n Key: document.getElementById(\"code\").value\r\n },\r\n success: function (response, status, request) {\r\n\r\n document.getElementById(\"warning\").style.display = \"none\";\r\n $('#loading').hide();\r\n self.fillQuestions(response);\r\n document.getElementById(\"enterCode\").style.display = \"none\";\r\n document.getElementById(\"createQuestions\").style.display = \"block\";\r\n document.getElementById(\"code\").value = '';\r\n //redirect(destUrl);\r\n },\r\n error: function (response) {\r\n var msg = response.responseText ? JSON.parse(response.responseText).message : '',\r\n error = msg.indexOf('invalid') >= 0 ? 'The Validation Code you entered is not recognized. Please check the number and try again.' :\r\n msg.indexOf('expired') >= 0 ? 'This Validation Code has expired. Please start the security question reset process again.' :\r\n 'We\\'re sorry, an error has occurred. Please try again later.';\r\n\r\n document.getElementById(\"code\").value = '';\r\n document.getElementById(\"warningText\").innerHTML = error;\r\n document.getElementById(\"warning\").style.display = \"block\";\r\n $('#loading').hide();\r\n }\r\n });\r\n }\r\n },\r\n\r\n /**\r\n * Calls API to update questions and redirects to portal if successful\r\n **/\r\n updateQuestions: function (e) {\r\n var self = this;\r\n var inpurl = $('#login4').data('updatequestionsapiurl');\r\n var destUrl = $('#login4').data('updatequestionsdestinationurl');\r\n $('#loading').show();\r\n var kba1 = document.getElementById(\"kba1\").value,\r\n kba2 = document.getElementById(\"kba2\").value,\r\n kba3 = document.getElementById(\"kba3\").value,\r\n valid = true;\r\n var UserId = this.stringTrim(document.getElementById('userid').value);\r\n njmClientClickTracking.linkClickedWithUserID(e.currentTarget, UserId);\r\n\r\n if (this.stringTrim(kba1) == \"\") {\r\n document.getElementById(\"kba1\").style.border = \"1px solid #cc0000\";\r\n valid = false;\r\n }\r\n else {\r\n document.getElementById(\"kba1\").style.border = \"\";\r\n }\r\n\r\n if (this.stringTrim(kba2) == \"\") {\r\n document.getElementById(\"kba2\").style.border = \"1px solid #cc0000\";\r\n valid = false;\r\n }\r\n else {\r\n document.getElementById(\"kba2\").style.border = \"\";\r\n }\r\n\r\n if (this.stringTrim(kba3) == \"\") {\r\n document.getElementById(\"kba3\").style.border = \"1px solid #cc0000\";\r\n valid = false;\r\n }\r\n else {\r\n document.getElementById(\"kba3\").style.border = \"\";\r\n }\r\n\r\n if (!valid) {\r\n document.getElementById(\"warningText\").innerHTML = \" This is a required field. Please select a question or enter your answer.\";\r\n document.getElementById(\"warning\").style.display = \"block\";\r\n $('#loading').hide();\r\n }\r\n\r\n else if (this.validateAnswers()) {\r\n $.ajax({\r\n type: 'POST',\r\n xhrFields: {\r\n withCredentials: true\r\n },\r\n url: inpurl,\r\n data: {\r\n UserID: this.stringTrim(document.getElementById('userid').value),\r\n Answer1: this.stringTrim(document.getElementById(\"answer1\").value),\r\n Answer2: this.stringTrim(document.getElementById(\"answer2\").value),\r\n Answer3: this.stringTrim(document.getElementById(\"answer3\").value),\r\n Question1: this.stringTrim(document.getElementById(\"kba1\").value),\r\n Question2: this.stringTrim(document.getElementById(\"kba2\").value),\r\n Question3: this.stringTrim(document.getElementById(\"kba3\").value)\r\n },\r\n success: function (response, status, request) {\r\n document.getElementById(\"warning\").style.display = \"none\";\r\n document.getElementById(\"createQuestions\").style.display = \"none\";\r\n document.getElementById(\"updateConfirmation\").style.display = \"block\";\r\n $('#loading').hide();\r\n },\r\n error: function (response) {\r\n document.getElementById(\"answer3\").value = '';\r\n document.getElementById(\"answer2\").value = '';\r\n document.getElementById(\"answer1\").value = '';\r\n document.getElementById(\"kba3\").value = '';\r\n document.getElementById(\"kba2\").value = '';\r\n document.getElementById(\"kba1\").value = '';\r\n document.getElementById(\"warningText\").innerHTML = 'We\\'re sorry, an error has occurred. Please try again later.';\r\n document.getElementById(\"warning\").style.display = \"block\";\r\n $('#loading').hide();\r\n }\r\n });\r\n }\r\n },\r\n\r\n areUniqueAnswers: function () {\r\n var isValid = true;\r\n\r\n var answer1 = this.stringTrim(document.getElementById('answer1').value),\r\n answer2 = this.stringTrim(document.getElementById('answer2').value),\r\n answer3 = this.stringTrim(document.getElementById('answer3').value);\r\n\r\n this.toggleErrorBorder('answer1', false);\r\n this.toggleErrorBorder('answer2', false);\r\n this.toggleErrorBorder('answer3', false);\r\n\r\n if (answer1 === answer2) {\r\n this.toggleErrorBorder('answer1', true);\r\n this.toggleErrorBorder('answer2', true);\r\n isValid = false;\r\n }\r\n\r\n if (answer1 === answer3) {\r\n this.toggleErrorBorder('answer1', true);\r\n this.toggleErrorBorder('answer3', true);\r\n isValid = false;\r\n }\r\n\r\n if (answer2 === answer3) {\r\n this.toggleErrorBorder('answer2', true);\r\n this.toggleErrorBorder('answer3', true);\r\n isValid = false;\r\n }\r\n\r\n return isValid;\r\n },\r\n\r\n /**\r\n * Validate answers are not the same, not part of question and in proper format\r\n * Returns true if they are and false otherwise\r\n * Updates warning message if needed\r\n **/\r\n validateAnswers: function () {\r\n\r\n if (!this.areUniqueAnswers()) {\r\n document.getElementById('warningText').innerHTML = 'Each security question must have a unique answer.';\r\n document.getElementById('warning').style.display = 'block';\r\n $('#loading').hide();\r\n return false;\r\n }\r\n\r\n var answer1 = this.stringTrim(document.getElementById('answer1').value),\r\n answer2 = this.stringTrim(document.getElementById('answer2').value),\r\n answer3 = this.stringTrim(document.getElementById('answer3').value);\r\n\r\n //check if answers are valid formatting\r\n var regex = /^[0-9a-zA-Z]{3,25}$/, valid = true;\r\n if (!regex.test(answer1)) {\r\n this.toggleErrorBorder('answer1', true);\r\n valid = false;\r\n } else {\r\n this.toggleErrorBorder('answer1', false);\r\n }\r\n\r\n if (!regex.test(answer2)) {\r\n this.toggleErrorBorder('answer2', true);\r\n valid = false;\r\n } else {\r\n this.toggleErrorBorder('answer2', false);\r\n }\r\n\r\n if (!regex.test(answer3)) {\r\n this.toggleErrorBorder('answer3', true);\r\n valid = false;\r\n } else {\r\n this.toggleErrorBorder('answer3', false);\r\n }\r\n\r\n if (!valid) {\r\n document.getElementById('warningText').innerHTML = 'Each answer must be 3-25 characters in length and must only use numeric characters (0-9) and/or alphabetic characters (a-z, A-Z).';\r\n document.getElementById('warning').style.display = 'block';\r\n $('#loading').hide();\r\n\r\n return false;\r\n }\r\n\r\n //check if answer is part of question\r\n var question, markInvalid = false;\r\n for (var i = 1; i <= 3; i++) {\r\n question = $('#kba' + i + ' option:selected').text().toLowerCase().split(' ');\r\n var answer = document.getElementById('answer' + i).value.toLowerCase();\r\n\r\n for (var j = 0; j < question.length; j++) {\r\n if (question[j].indexOf(answer) >= 0) {\r\n document.getElementById('answer' + i).style.border = '1px solid #cc0000';\r\n valid = false;\r\n markInvalid = true;\r\n break;\r\n }\r\n }\r\n\r\n if (!markInvalid) {\r\n document.getElementById('answer' + i).style.border = '';\r\n }\r\n }\r\n\r\n if (!valid) {\r\n document.getElementById('warningText').innerHTML = 'Your answer cannot contain wording from the security question.';\r\n document.getElementById('warning').style.display = 'block';\r\n $('#loading').hide();\r\n\r\n return false;\r\n }\r\n\r\n return true;\r\n },\r\n\r\n toggleErrorBorder: function (field, toggle) {\r\n if (toggle) {\r\n document.getElementById(field).style.border = '1px solid #cc0000';\r\n }\r\n else {\r\n document.getElementById(field).style.border = '';\r\n }\r\n },\r\n\r\n /**\r\n * Fill questions select boxes\r\n **/\r\n fillQuestions: function (questions) {\r\n var question, opt;\r\n\r\n for (var i = 1; i <= 3; i++) {\r\n question = document.getElementById('kba' + i);\r\n for (var j = 0; j < questions.length; j++) {\r\n opt = document.createElement('option');\r\n opt.innerHTML = questions[j].text;\r\n opt.value = questions[j].number;\r\n question.appendChild(opt);\r\n }\r\n }\r\n },\r\n\r\n removeDisabledFromOptions: function (e) {\r\n var question, opt;\r\n\r\n for (var i = 1; i <= 3; i++) {\r\n question = document.getElementById('kba' + i);\r\n for (var j = 0; j < question.options.length; j++) {\r\n question.options[j].removeAttribute('disabled')\r\n }\r\n }\r\n },\r\n\r\n\r\n backToSection: function (e) {\r\n var backSection = $(e.currentTarget).data('backsection');\r\n var currentSection = $(e.currentTarget).data('currentsection');\r\n\r\n if (backSection === 'login-box') {\r\n this.cancelReset(e);\r\n return;\r\n }\r\n var UserId = this.stringTrim(document.getElementById('userid').value);\r\n njmClientClickTracking.linkClickedWithUserID(e.currentTarget, UserId);\r\n\r\n document.getElementById(\"warning\").style.display = \"none\";\r\n document.getElementById(currentSection).style.display = \"none\";\r\n document.getElementById(backSection).style.display = \"block\";\r\n },\r\n\r\n passwordVisibility: function (e) {\r\n var self = e.currentTarget;\r\n var UserId = this.stringTrim(document.getElementById('userid').value);\r\n njmClientClickTracking.linkClickedWithUserID(e.currentTarget, UserId);\r\n\r\n if ($(self).text() === 'Show') {\r\n $('.cssLogin input#password').attr('type', 'text');\r\n $(self).text('Hide');\r\n } else {\r\n $('.cssLogin input#password').attr('type', 'password');\r\n $(self).text('Show');\r\n }\r\n },\r\n\r\n isCapsLockOn: function (e) {\r\n if (e.originalEvent.getModifierState(\"CapsLock\")) {\r\n return true;\r\n } else {\r\n return false;\r\n }\r\n },\r\n\r\n forgotID: function (e) {\r\n document.getElementById('loginDiv').style.display = 'none';\r\n document.getElementById('userIDDiv').style.display = 'block';\r\n if (!($(\"#loginDiv\").is(\":visible\"))) {\r\n $('.comp-login').addClass('hide-content');\r\n }\r\n },\r\n\r\n forgotPass: function (e) {\r\n document.getElementById('loginDiv').style.display = 'none';\r\n document.getElementById('pwdDiv').style.display = 'block';\r\n if (!($(\"#loginDiv\").is(\":visible\"))) {\r\n $('.comp-login').addClass('hide-content');\r\n }\r\n },\r\n register: function (e) {\r\n document.getElementById('loginDiv').style.display = 'none';\r\n document.getElementById('regDiv').style.display = 'block';\r\n },\r\n\r\n refresh: function (e) {\r\n var UserId = document.getElementById('userid').value;\r\n njmClientClickTracking.linkClickedWithUserID(e.currentTarget, UserId);\r\n\r\n location.reload();\r\n },\r\n\r\n urlParam: function (name, param) {\r\n var paramCheck;\r\n name = name.toLowerCase();\r\n if (!param) {\r\n var location = window.location.search,\r\n index = location.indexOf('=');\r\n paramCheck = location.substring(0, index).toLowerCase() + location.substring(index);\r\n }\r\n else paramCheck = param;\r\n var results = new RegExp('[\\?&]' + name + '=([^&#]*)')\r\n .exec(paramCheck);\r\n return (results !== null) ? results[1] || 0 : false;\r\n },\r\n getUrlParameter: function (name, search, encodeResult) {\r\n search = search || window.location.search;\r\n var params = new URLSearchParams(search);\r\n var param = params.get(name) || '';\r\n if (encodeResult) {\r\n param = encodeURIComponent(param);\r\n }\r\n return param;\r\n },\r\n\r\n getOriginalRequestQueryString: function () {\r\n var val = this.getUrlParameter('original_request_url');\r\n try {\r\n var url = new URL(val);\r\n return url.search;\r\n }\r\n catch (e) {\r\n console.error(e);\r\n return '';\r\n }\r\n },\r\n forgotUserID: function (e) {\r\n $('#loading').show();\r\n var UserId = this.stringTrim(document.getElementById('txtUserIDEmail').value);\r\n njmClientClickTracking.linkClickedWithUserID(e.currentTarget, UserId);\r\n \r\n var forgotUserIdApiUrl = $('#btnForgotID').data('forgotuseridapiurl');\r\n var email = document.getElementById('txtUserIDEmail').value,\r\n regex = /^\\w+([-+.']\\w+)*@\\w+([-.]\\w+)*\\.\\w+([-.]\\w+)*(\\ )*$/;\r\n\r\n document.getElementById(\"txtUserIDEmail\").style.border = \"\";\r\n\r\n if (email == '') {\r\n document.getElementById(\"txtUserIDEmail\").style.border = \"1px solid #cc0000\";\r\n document.getElementById('userIDWarningText').innerHTML = document.getElementById('hidForgotUserIDEmptyEmail').value;\r\n //document.getElementById('userIDWarningText').innerHTML = 'This field is required, please select or enter a valid email address';\r\n document.getElementById('userIDWarning').style.display = 'block';\r\n $('#loading').hide();\r\n return;\r\n }\r\n\r\n if (!regex.test(email)) {\r\n document.getElementById(\"txtUserIDEmail\").style.border = \"1px solid #cc0000\";\n document.getElementById('userIDWarningText').innerHTML = document.getElementById('hidForgotUserIDInvalidEmail').value;\r\n //document.getElementById('userIDWarningText').innerHTML = 'You must enter a valid email address.';\r\n document.getElementById('userIDWarning').style.display = 'block';\r\n $('#loading').hide();\r\n return;\r\n }\r\n\r\n $.ajax({\r\n type: 'POST',\r\n url: forgotUserIdApiUrl,\r\n xhrFields: {\r\n withCredentials: true\r\n },\r\n data: {\r\n id: email\r\n },\r\n dataType: 'json',\r\n success: function (response, status, request) {\r\n document.getElementById('userIDWarning').style.display = 'none';\r\n\r\n if (response.indexOf('multiple') >= 0) {\r\n document.getElementById('userIDWarningText').innerHTML = 'The email address has multiple users. Please contact us at 1-888-NJM-4INS ext. 6683 or at wcedit@njm.com to retrieve your User ID.';\r\n document.getElementById('userIDWarning').style.display = 'block';\r\n }\r\n else {\r\n document.getElementById(\"idQuestion1\").innerHTML = response[0];\r\n document.getElementById(\"idQuestion2\").innerHTML = response[1];\r\n document.getElementById('userIDQuestions').style.display = 'block';\r\n document.getElementById('userIDPage').style.display = 'none';\r\n }\r\n $('#loading').hide();\r\n },\r\n error: function (response) {\r\n if (response.responseText.indexOf('Not found') >= 0) {\r\n document.getElementById('userIDWarningText').innerHTML = 'Not Found';\r\n }\r\n else if (response.responseText.indexOf('locked') >= 0) {\r\n var adminIndex = response.responseJSON.message.indexOf('admin');\r\n if (adminIndex >= 0) {\r\n var admin = response.responseJSON.message.substring(adminIndex + 7);\r\n\r\n document.getElementById('userIDWarningText').innerHTML = 'You account is Locked. Please contact your Admin User ' + admin;\r\n }\r\n else {\r\n document.getElementById('userIDWarningText').innerHTML = 'Your account is Locked. Please contact our Customer Service department during our business hours.';\r\n }\r\n }\r\n else if (response.responseText.indexOf('have not successfully completed your registration') >= 0) {\r\n document.getElementById('userIDWarningText').innerHTML = 'This feature is not available as you have not successfully completed your registration. Please click the link in the e-mail we have sent you to complete the registration process or contact our Customer Service department during our business hours.'\r\n }\r\n else {\r\n document.getElementById('userIDWarningText').innerHTML = 'We\\'re sorry, an error has occurred. Please try again later.';\r\n }\r\n document.getElementById('userIDWarning').style.display = 'block';\r\n $('#loading').hide();\r\n }\r\n });\r\n },\r\n\r\n forgotPassword: function (e) {\r\n $('#loading').show();\r\n var forgotPassUrl = $('#btnForgotPass').data('forgotpassurl');\r\n var user = this.stringTrim(document.getElementById('txtPassUserID').value);\n\r\n njmClientClickTracking.linkClickedWithUserID(e.currentTarget, user);\r\n\r\n document.getElementById(\"txtPassUserID\").style.border = \"\";\r\n\r\n if (user == '') {\r\n document.getElementById(\"txtPassUserID\").style.border = \"1px solid #cc0000\";\r\n document.getElementById('passWarningText').innerHTML = 'Enter User ID';\r\n document.getElementById('passWarning').style.display = 'block';\r\n $('#loading').hide();\r\n return;\r\n }\r\n $.ajax({\r\n type: 'POST',\r\n url: forgotPassUrl,\r\n xhrFields: {\r\n withCredentials: true\r\n },\r\n data: {\r\n id: user\r\n },\r\n dataType: 'json',\r\n success: function (response, status, request) {\r\n document.getElementById('passWarning').style.display = 'none';\r\n document.getElementById(\"passQuestion1\").innerHTML = response[0];\r\n document.getElementById(\"passQuestion2\").innerHTML = response[1];\r\n document.getElementById('passQuestions').style.display = 'block';\r\n document.getElementById('passPage').style.display = 'none';\r\n $('#loading').hide();\r\n },\r\n error: function (response) {\r\n if (response.responseText.indexOf('cannot be found') >= 0) {\r\n document.getElementById('passWarningText').innerHTML = 'Your request was submitted. If the User ID exists, an email was sent to the email address on record for the account.';\r\n }\r\n else if (response.responseText.indexOf('locked') >= 0) {\r\n var adminIndex = response.responseJSON.message.indexOf('admin');\r\n if (adminIndex >= 0) {\r\n var admin = response.responseJSON.message.substring(adminIndex + 7);\r\n\r\n document.getElementById('passWarningText').innerHTML = 'You account is Locked. Please contact your Admin User ' + admin;\r\n }\r\n else {\r\n document.getElementById('passWarningText').innerHTML = 'Your account is Locked. Please contact our Customer Service department during our business hours.';\r\n }\r\n }\r\n else if (response.responseText.indexOf('have not successfully completed your registration') >= 0) {\r\n document.getElementById('passWarningText').innerHTML = 'This feature is not available as you have not successfully completed your registration. Please click the link in the e-mail we have sent you to complete the registration process or contact our Customer Service department during our business hours.'\r\n }\r\n else {\r\n document.getElementById('passWarningText').innerHTML = 'Your request was submitted. If the User ID exists, an email was sent to the email address on record for the account.';\r\n }\r\n document.getElementById('passWarning').style.display = 'block';\r\n $('#loading').hide();\r\n }\r\n });\r\n\r\n\r\n },\r\n\r\n getOauthToken: function (destUrl, OauthUrl, self) {\r\n\r\n var goto = decodeURIComponent(location.href.substr(location.href.indexOf('agent'))).replace(\"#\", \"%20%25\");\r\n var redirectUrl = OauthUrl + goto + \"&realm=/B2C_Admin/CLPORTAL_Admin/CLPORTAL_Users\";\r\n var blogReturnUrl = $('#login1').data('blogredirecturl');\r\n if (blogReturnUrl.trim().length != 0 && self.stringTrim(blogReturnUrl) != '') {\r\n if (blogReturnUrl.indexOf(\"?\") > 0) {\r\n self.redirect(blogReturnUrl + \"&returnUrl=\" + encodeURIComponent(redirectUrl));\r\n }\r\n else {\r\n self.redirect(blogReturnUrl + \"?returnUrl=\" + encodeURIComponent(redirectUrl));\r\n }\r\n }\r\n else {\r\n self.redirect(redirectUrl);\r\n }\r\n\r\n\r\n //var self = this;\r\n //$.ajax({\r\n // type: 'POST',\r\n // url: OauthUrl,\r\n // xhrFields: {\r\n // withCredentials: true\r\n // },\r\n // dataType: 'json',\r\n // success: function (response, status, request) {\r\n // document.getElementById(\"warning\").style.display = \"none\";\r\n // console.log(response);\r\n // console.log(response.token);\r\n // console.log(response.state);\r\n // var data = response;\r\n // self.amOauth(response.token, response.state, destUrl, self);\r\n // $('#loading').hide();\r\n // },\r\n // error: function (response) {\r\n // document.getElementById(\"warningText\").innerHTML = \"There was an error\";\r\n // document.getElementById(\"warning\").style.display = \"block\";\r\n // $('#loading').hide();\r\n // }\r\n //});\r\n },\r\n\r\n //amOauth: function (token, state, destUrl, self) {\r\n // if (!token || !state) {\r\n // $('#loading').hide();\r\n // document.getElementById('warningText').innerHTML = 'There was an error';\r\n // document.getElementById('warning').style.display = 'block';\r\n // return;\r\n // }\r\n\r\n // $.ajax({\r\n // type: 'POST',\r\n // url: 'https://clportalqa2.njm.com/agent/cdsso-oauth2',\r\n // xhrFields: {\r\n // withCredentials: true\r\n // },\r\n // data: {\r\n // 'id_token': token, 'state': state\r\n // },\r\n // dataType: 'json',\r\n // complete: function (response, status, request) {\r\n // document.getElementById(\"warning\").style.display = \"none\";\r\n // $('#loading').hide();\r\n // self.redirect(destUrl);\r\n // },\r\n // error: function (response) {\r\n // }\r\n // });\r\n //},\r\n\r\n passQuestions: function (e) {\r\n $('#loading').show();\r\n var answer1 = document.getElementById('passAns1').value,\r\n answer2 = document.getElementById('passAns2').value,\r\n valid = true,\r\n forgotPassQuestionsUrl = $('#btnPassQuestions').data('forgotpassquestions');\r\n var UserId = document.getElementById('txtPassUserID').value;\r\n njmClientClickTracking.linkClickedWithUserID(e.currentTarget, UserId);\r\n\r\n document.getElementById(\"passAns1\").style.border = \"\";\r\n document.getElementById(\"passAns2\").style.border = \"\";\r\n\r\n if (answer1 == '') {\r\n document.getElementById(\"passAns1\").style.border = \"1px solid #cc0000\";\r\n valid = false;\r\n }\r\n\r\n if (answer2 == '') {\r\n document.getElementById(\"passAns2\").style.border = \"1px solid #cc0000\";\r\n valid = false;\r\n }\r\n\r\n if (!valid) {\r\n document.getElementById('passWarningText').innerHTML = 'These fields are required, please select or enter value.';\r\n document.getElementById('passWarning').style.display = 'block';\r\n $('#loading').hide();\r\n return;\r\n }\r\n\r\n $.ajax({\r\n type: 'POST',\r\n url: forgotPassQuestionsUrl,\r\n xhrFields: {\r\n withCredentials: true\r\n },\r\n data: {\r\n 'Answer1': answer1,\r\n 'Answer2': answer2\r\n },\r\n dataType: 'json',\r\n success: function (response, status, request) {\r\n $('#loading').hide();\r\n document.getElementById('passWarning').style.display = 'none';\r\n document.getElementById('pwdConfirm').style.display = 'block';\r\n document.getElementById('passQuestions').style.display = 'none';\r\n },\r\n error: function (response) {\r\n var text = response.responseJSON.message ? response.responseJSON.message : \"\";\r\n if (text.indexOf('not matched') >= 0) {\r\n document.getElementById('passWarningText').innerHTML = text.replace('Answers are not matched', 'The answers you have entered do not match our records');\r\n }\r\n else {\r\n document.getElementById('passWarningText').innerHTML = 'We\\'re sorry, an error has occurred. Please try again later.';\r\n }\r\n document.getElementById('passWarning').style.display = 'block';\r\n $('#loading').hide();\r\n }\r\n });\r\n\r\n //jQuery.post(forgotPassQuestionsUrl, { Answer1: answer1, Answer2: answer2 }, function (response) {\r\n // $('#loading').hide();\r\n // window.location.replace('/clauth/Pages/EmailSent.html?page=pass');\r\n //}).fail(function (response) {\r\n // $('#loading').hide();\r\n // var text = response.responseJSON.message ? response.responseJSON.message : \"\";\r\n // if (text.indexOf('not matched') >= 0) {\r\n // document.getElementById('passWarningText').innerHTML = text.replace('Answers are not matched', 'The answers you have entered do not match our records');\r\n // }\r\n // else {\r\n // document.getElementById('passWarningText').innerHTML = 'We\\'re sorry, an error has occurred. Please try again later.';\r\n // }\r\n // document.getElementById('passWarning').style.display = 'block';\r\n // $('#loading').hide();\r\n //});\r\n },\r\n\r\n userIDQuestions: function (e) {\r\n $('#loading').show();\r\n var answer1 = document.getElementById('idAns1').value,\r\n answer2 = document.getElementById('idAns2').value,\r\n valid = true,\r\n url = $('#btnIDQuestions').data('forgotidquestionsapiurl');\r\n document.getElementById(\"idAns1\").style.border = \"\";\r\n document.getElementById(\"idAns2\").style.border = \"\";\r\n var UserId = document.getElementById('txtUserIDEmail').value;\r\n njmClientClickTracking.linkClickedWithUserID(e.currentTarget, UserId);\r\n\r\n if (answer1 == '') {\r\n document.getElementById(\"idAns1\").style.border = \"1px solid #cc0000\";\r\n valid = false;\r\n }\r\n\r\n if (answer2 == '') {\r\n document.getElementById(\"idAns2\").style.border = \"1px solid #cc0000\";\r\n valid = false;\r\n }\r\n\r\n if (!valid) {\r\n document.getElementById('userIDWarningText').innerHTML = 'This field is required, please enter a value.';\r\n document.getElementById('userIDWarning').style.display = 'block';\r\n $('#loading').hide();\r\n return;\r\n }\r\n $.ajax({\r\n type: 'POST',\r\n url: url,\r\n xhrFields: {\r\n withCredentials: true\r\n },\r\n data: {\r\n 'Answer1': answer1,\r\n 'Answer2': answer2\r\n },\r\n dataType: 'json',\r\n success: function (response, status, request) {\r\n $('#loading').hide();\r\n document.getElementById('userIDWarning').style.display = 'none';\r\n document.getElementById('userIDConfirm').style.display = 'block';\r\n document.getElementById('userIDQuestions').style.display = 'none';\r\n //window.location.replace('/clauth/Pages/EmailSent.html');\r\n },\r\n error: function (response) {\r\n $('#loading').hide();\r\n var text = response.responseJSON.message ? response.responseJSON.message : \"\";\r\n if (text.indexOf('not matched') >= 0) {\r\n document.getElementById('userIDWarningText').innerHTML = text.replace('Answers are not matched', 'The answers you have entered do not match our records');\r\n }\r\n else {\r\n document.getElementById('userIDWarningText').innerHTML = 'We\\'re sorry, an error has occurred. Please try again later.';\r\n }\r\n document.getElementById('userIDWarning').style.display = 'block';\r\n $('#loading').hide();\r\n }\r\n });\r\n //jQuery.post(url, { Answer1: answer1, Answer2: answer2 }, function (response) {\r\n // $('#loading').hide();\r\n // window.location.replace('/clauth/Pages/EmailSent.html');\r\n //}).fail(function (response) {\r\n // $('#loading').hide();\r\n // var text = response.responseJSON.message ? response.responseJSON.message : \"\";\r\n // if (text.indexOf('not matched') >= 0) {\r\n // document.getElementById('userIDWarningText').innerHTML = text.replace('Answers are not matched', 'The answers you have entered do not match our records');\r\n // }\r\n // else {\r\n // document.getElementById('userIDWarningText').innerHTML = 'We\\'re sorry, an error has occurred. Please try again later.';\r\n // }\r\n // document.getElementById('userIDWarning').style.display = 'block';\r\n // $('#loading').hide();\r\n //});\r\n },\r\n\r\n backToQuestions: function (e) {\r\n document.getElementById(\"warning\").style.display = \"none\";\r\n document.getElementById(\"enterCode\").style.display = \"none\";\r\n document.getElementById(\"answerQuestions\").style.display = \"block\";\r\n },\r\n\r\n\r\n backToQuestionsFromCreateBack: function (e) {\r\n document.getElementById(\"kba1\").selectedIndex = 0;\r\n document.getElementById(\"kba2\").selectedIndex = 0;\r\n document.getElementById(\"kba3\").selectedIndex = 0;\r\n document.getElementById('answer1').value = '';\r\n document.getElementById('answer2').value = '';\r\n document.getElementById('answer3').value = '';\r\n this.removeDisabledFromOptions();\r\n document.getElementById(\"warning\").style.display = \"none\";\r\n document.getElementById(\"createQuestions\").style.display = \"none\";\r\n document.getElementById(\"answerQuestions\").style.display = \"block\";\r\n },\r\n\r\n capslockHint: function (e) {\r\n if (this.isCapsLockOn(e) && ($('#warning').css('display') === 'block')) {\r\n $(\".capslock-hint\").css('display', 'inline-block');\r\n } else {\r\n $(\".capslock-hint\").css('display', 'none');\r\n }\r\n }\r\n });\r\n})(jQuery, njm);\r\n","(function ($, njm) {\r\n 'use strict';\r\n\r\n njm.views.agentSearch = Backbone.View.extend({\r\n\r\n events: {\r\n 'click .custom-select .selected': 'dropdownClick',\r\n 'click .custom-select .icon-arrow': 'dropdownClick',\r\n 'keydown .custom-select .selected': 'dropdownKeydown',\r\n 'keydown .custom-select .icon-arrow': 'dropdownKeydown',\r\n 'click .custom-select ul a': 'dropdownSelectionClick',\r\n 'keydown .custom-select ul a': 'dropdownSelectionKeydown',\r\n 'keydown .custom-select ul input': 'dropdownSelectionKeydown',\r\n 'click #lob-filter input[type=\"checkbox\"]': 'lobFilterSelection',\r\n 'keydown #pageInput': 'fnPagination',\r\n },\r\n\r\n initialize: function () {\r\n this.dropdown = false;\r\n this.focusableEls = $('.comp-agent-search .custom-select ul li a');\r\n this.firstFocusableEl = this.focusableEls[0];\r\n this.lastFocusableEl = this.focusableEls[this.focusableEls.length - 1];\r\n this.focusedEl = false;\r\n\r\n var $this = this;\r\n\r\n //Hide dropdown with click outside of it\r\n $(document).click(function (event) {\r\n if ($(event.target).closest('.comp-agent-search .custom-select').length < 1) {\r\n $this.hideDropdown(event);\r\n }\r\n });\r\n\r\n $this.lobFilterSelection();\r\n },\r\n\r\n\r\n dropdownClick: function (event) {\r\n var target = $(event.target);\r\n\r\n if (target.parents('.custom-select').find('.selected').attr('aria-expanded') === 'false') {\r\n this.hideDropdown();\r\n this.showDropdown(event);\r\n } else {\r\n this.hideDropdown();\r\n }\r\n },\r\n\r\n dropdownKeydown: function (event) {\r\n var key = event.which;\r\n var target = $(event.target);\r\n\r\n if (key === 13 || key === 32) { //enter or space\r\n this.dropdownClick(event);\r\n event.preventDefault();\r\n }\r\n\r\n if (key === 27) { //escape\r\n this.hideDropdown(event);\r\n target.parents('.custom-select').find('.selected').focus();\r\n }\r\n\r\n if (key === 38) { //up arrow\r\n event.preventDefault();\r\n if (!this.dropdown) {\r\n this.showDropdown(event);\r\n }\r\n this.focusPrevious();\r\n }\r\n\r\n if (key === 40) { //down arrow\r\n event.preventDefault();\r\n if (!this.dropdown) {\r\n this.showDropdown(event);\r\n }\r\n this.focusNext();\r\n }\r\n\r\n if (key === 9) { //tab\r\n if (this.dropdown) {\r\n if (event.shiftKey) {\r\n event.preventDefault();\r\n this.focusPrevious();\r\n } else {\r\n event.preventDefault();\r\n this.focusNext();\r\n }\r\n }\r\n }\r\n },\r\n\r\n dropdownSelectionClick: function (event) {\r\n var target = $(event.target);\r\n var dataValue = target.parent().attr('data-value');\r\n\r\n target.parents('.custom-select').find('.selected').text(target.text());\r\n target.parents('.custom-select').find('#distanceValue').attr('value', dataValue);\r\n this.hideDropdown(event);\r\n $('.comp-agent-search .selected').focus();\r\n },\r\n\r\n dropdownSelectionKeydown: function (event) {\r\n var key = event.which;\r\n var target = $(event.target);\r\n\r\n if (key === 13 || key === 32) { //enter or space\r\n $(event.target).trigger('click');\r\n event.preventDefault();\r\n }\r\n\r\n if (key === 27) { //escape\r\n this.hideDropdown(event);\r\n target.parents('.custom-select').find('.selected').focus();\r\n }\r\n\r\n if (key === 38) { //up arrow\r\n event.preventDefault();\r\n this.focusPrevious();\r\n }\r\n\r\n if (key === 40) { //down arrow\r\n event.preventDefault();\r\n this.focusNext();\r\n }\r\n\r\n if (key === 9) { //tab\r\n if (event.shiftKey) {\r\n event.preventDefault();\r\n this.focusPrevious();\r\n } else {\r\n event.preventDefault();\r\n this.focusNext();\r\n }\r\n }\r\n },\r\n\r\n hideDropdown: function (event) {\r\n\r\n if (event && ($(event.target) === $('#distance .custom-select .selected') || $(event.target) === $('#distance .custom-select i'))) {\r\n $('.comp-agent-search #lob-filter .custom-select').find('ul').slideUp();\r\n $('.comp-agent-search #lob-filter .custom-select').find('.icon-arrow').removeClass('open');\r\n $('.comp-agent-search #lob-filter .selected').attr('aria-expanded', 'false');\r\n this.dropdown = false;\r\n this.focusedEl = false;\r\n } else if (event && ($(event.target) === $('#lob-filter .custom-select .selected') || $(event.target) === $('#lob-filter .custom-select i'))) {\r\n $('.comp-agent-search #distance .custom-select').find('ul').slideUp();\r\n $('.comp-agent-search #distance .custom-select').find('.icon-arrow').removeClass('open');\r\n $('.comp-agent-search #distance .selected').attr('aria-expanded', 'false');\r\n this.dropdown = false;\r\n this.focusedEl = false;\r\n } else {\r\n $('.comp-agent-search .custom-select').find('ul').slideUp();\r\n $('.comp-agent-search .custom-select').find('.icon-arrow').removeClass('open');\r\n $('.comp-agent-search .selected').attr('aria-expanded', 'false');\r\n this.dropdown = false;\r\n this.focusedEl = false;\r\n }\r\n },\r\n\r\n showDropdown: function (event) {\r\n\r\n var target = $(event.target);\r\n\r\n target.parents('.custom-select').find('ul').slideDown();\r\n target.parents('.custom-select').find('.icon-arrow').addClass('open');\r\n target.parents('.custom-select').find('.selected').attr('aria-expanded', 'true');\r\n this.dropdown = true;\r\n\r\n this.focusableEls = target.parents('.custom-select').find('ul li a, ul li input:not([type=hidden])');\r\n this.firstFocusableEl = this.focusableEls[0];\r\n this.lastFocusableEl = this.focusableEls[this.focusableEls.length - 1];\r\n },\r\n\r\n lobFilterSelection: function () {\r\n var checked = $('#lob-filter input[type=\"checkbox\"]:checked'),\r\n numChecked = checked.length,\r\n selectedEl = $('#lob-filter .selected'),\r\n selectedText, i;\r\n\r\n if (numChecked === 0) {\r\n selectedText = selectedEl.attr('data-default-text');\r\n } else if (numChecked === 1) {\r\n selectedText = checked.siblings('label').text();\r\n } else if (numChecked === 2) {\r\n selectedText = checked.eq(0).siblings('label').text() + \" and \" + checked.eq(1).siblings('label').text();\r\n } else if (numChecked > 2) {\r\n selectedText = '';\r\n for (i = 0; i < numChecked; i++) {\r\n if (i < numChecked - 1) {\r\n selectedText += checked.eq(i).siblings('label').text() + ', ';\r\n } else {\r\n selectedText += 'and ' + checked.eq(i).siblings('label').text();\r\n }\r\n }\r\n }\r\n\r\n selectedEl.val(selectedText);\r\n },\r\n\r\n focusNext: function () {\r\n if (!this.focusedEl) {\r\n this.firstFocusableEl.focus();\r\n this.focusedEl = 1;\r\n } else if (this.focusedEl === this.focusableEls.length) {\r\n this.firstFocusableEl.focus();\r\n this.focusedEl = 1;\r\n } else {\r\n this.focusableEls[this.focusedEl].focus();\r\n this.focusedEl++;\r\n }\r\n },\r\n\r\n focusPrevious: function () {\r\n if (this.focusedEl === 1 || !this.focusedEl) {\r\n this.lastFocusableEl.focus();\r\n this.focusedEl = this.focusableEls.length;\r\n } else {\r\n this.focusedEl--;\r\n this.focusableEls[this.focusedEl - 1].focus();\r\n }\r\n },\r\n\r\n fnPagination: function (event) {\r\n if (event !== undefined) {\r\n if (event.keyCode === 13) {\r\n var pageInput = $('#pageInput').val();\r\n var totalPageCount = $(\"#TotalPageCount\").val();\r\n if (pageInput !== undefined && totalPageCount !== undefined) {\r\n if (pageInput.length == 0 || parseInt(pageInput) < 1) {\r\n pageInput = 1\r\n }\r\n else if (parseInt(totalPageCount) < parseInt(pageInput)) {\r\n pageInput = totalPageCount\r\n }\r\n $('input[name=page]').val(pageInput).trigger('change');\r\n }\r\n }\r\n }\r\n }\r\n\r\n })\r\n\r\n})(jQuery, njm);\r\n","(function ($, njm) {\r\n 'use strict';\r\n\r\n njm.views.blockQuote = Backbone.View.extend({\r\n\r\n events: {\r\n \r\n },\r\n\r\n initialize: function () {\r\n\t\t\t\r\n\t\t\tthis.blockCode = \"zb\";\r\n\t\t\t\r\n this.defaultMsgEl = this.$('[block-code=zb]');\r\n\t\t\t\r\n \tthis.qStrParams = new URLSearchParams(window.location.search);\r\n\t\t\t\r\n\t\t\tif ( this.qStrParams.has('block-code') ) {\r\n this.blockCode = this.qStrParams.get('block-code');\r\n }\r\n \r\n this.showBlockMessage(this.blockCode);\r\n },\r\n\r\n showBlockMessage: function (blockCode) {\r\n\t\t\tvar blockEl = this.$('[block-code=' + blockCode + ']');\r\n\t\t\t\r\n\t\t\tif ( blockEl.length > 0 ) {\r\n\t\t\t\t\r\n\t\t\t\tif (blockCode != \"zb\"){\r\n\t\t\t\t\tthis.defaultMsgEl.hide();\r\n\t\t\t\t}\r\n\t\t\t\t\r\n\t\t\t\tblockEl.show();\r\n\t\t\t\t\r\n\t\t\t} else {\r\n\t\t\t\t\r\n\t\t\t\tconsole.log(\"Block Code missing\");\r\n\t\t\t\t\r\n\t\t\t\tif (this.defaultMsgEl.length === 1) {\r\n\t\t\t\t\t\r\n\t\t\t\t\tthis.defaultMsgEl.show();\r\n\t\t\t\t\tconsole.log(\"Default block message shown\");\r\n\t\t\t\t\t\r\n\t\t\t\t}\r\n\t\t\t\t\r\n\t\t\t}\r\n\r\n }\r\n })\r\n})(jQuery, njm);\n","(function ($, njm) {\r\n 'use strict';\r\n\r\n njm.views.customSelect = Backbone.View.extend({\r\n\r\n events: {\r\n 'click .selected': 'dropdownClick',\r\n 'click .icon-arrow': 'dropdownClick',\r\n 'keydown .selected': 'dropdownKeydown',\r\n 'keydown .icon-arrow': 'dropdownKeydown',\r\n 'click ul a': 'dropdownSelectionClick',\r\n 'keydown ul a': 'dropdownSelectionKeydown'\r\n },\r\n\r\n initialize: function () {\r\n this.dropdown = false;\r\n this.focusableEls = $('.comp-custom-select ul li a');\r\n this.firstFocusableEl = this.focusableEls[0];\r\n this.lastFocusableEl = this.focusableEls[this.focusableEls.length - 1];\r\n this.focusedEl = false;\r\n\r\n var $this = this;\r\n var dropdownsList = $('.comp-custom-select');\r\n\r\n dropdownsList.each(function () {\r\n var currentItem = $(this).find('.selected');\r\n\r\n if (currentItem.attr('data-default-text') !== undefined) {\r\n currentItem.val(currentItem.attr('data-default-text'))\r\n }\r\n });\r\n\r\n //Hide dropdown with click outside of it\r\n $(document).click(function (event) {\r\n if ($(event.target).closest('.comp-custom-select').length === 0) {\r\n $this.hideDropdown();\r\n }\r\n });\r\n\r\n\r\n },\r\n\r\n\r\n dropdownClick: function (event) {\r\n var target = $(event.target);\r\n\r\n if (target.parents('.comp-custom-select').find('.selected').attr('aria-expanded') === 'false') {\r\n this.hideDropdown();\r\n this.showDropdown(event);\r\n } else {\r\n this.hideDropdown();\r\n }\r\n },\r\n\r\n dropdownKeydown: function (event) {\r\n var key = event.which;\r\n var target = $(event.target);\r\n\r\n if (key === 13 || key === 32) { //enter or space\r\n this.dropdownClick(event);\r\n event.preventDefault();\r\n }\r\n\r\n if (key === 27) { //escape\r\n this.hideDropdown();\r\n target.parents('.comp-custom-select').find('.selected').focus();\r\n }\r\n\r\n if (key === 38) { //up arrow\r\n event.preventDefault();\r\n if (!this.dropdown) {\r\n this.showDropdown(event);\r\n }\r\n this.focusPrevious();\r\n }\r\n\r\n if (key === 40) { //down arrow\r\n event.preventDefault();\r\n if (!this.dropdown) {\r\n this.showDropdown(event);\r\n }\r\n this.focusNext();\r\n }\r\n\r\n if (key === 9) { //tab\r\n if (this.dropdown) {\r\n if (event.shiftKey) {\r\n event.preventDefault();\r\n this.focusPrevious();\r\n } else {\r\n event.preventDefault();\r\n this.focusNext();\r\n }\r\n }\r\n }\r\n },\r\n\r\n dropdownSelectionClick: function (event) {\r\n var target = $(event.target);\r\n var parentSelect = target.parents('.comp-custom-select');\r\n var selectedEl = parentSelect.find('.selected');\r\n var dataValue = target.parent().attr('data-value');\r\n var hiddenValue = parentSelect.find('[data-name=\"custom-select-value\"]');\r\n\r\n if (selectedEl.prop('nodeName').toLocaleLowerCase() === 'input') {\r\n selectedEl.val(target.text()).focus();\r\n } else {\r\n selectedEl.text(target.text()).focus();\r\n }\r\n\r\n hiddenValue.attr('value', dataValue);\r\n\r\n this.hideDropdown();\r\n //parentSelect.find('.selected').focus();\r\n },\r\n\r\n dropdownSelectionKeydown: function (event) {\r\n var key = event.which;\r\n var target = $(event.target);\r\n\r\n if (key === 13 || key === 32) { //enter or space\r\n $(event.target).trigger('click');\r\n event.preventDefault();\r\n }\r\n\r\n if (key === 27) { //escape\r\n this.hideDropdown();\r\n target.parents('.comp-custom-select').find('.selected').focus();\r\n }\r\n\r\n if (key === 38) { //up arrow\r\n event.preventDefault();\r\n this.focusPrevious();\r\n }\r\n\r\n if (key === 40) { //down arrow\r\n event.preventDefault();\r\n this.focusNext();\r\n }\r\n\r\n if (key === 9) { //tab\r\n if (event.shiftKey) {\r\n event.preventDefault();\r\n this.focusPrevious();\r\n } else {\r\n event.preventDefault();\r\n this.focusNext();\r\n }\r\n }\r\n },\r\n\r\n hideDropdown: function () {\r\n var openDropdown = $('.comp-custom-select.open');\r\n\r\n if (openDropdown.length > 0) {\r\n openDropdown.find('ul').slideUp();\r\n openDropdown.find('.icon-arrow').removeClass('open');\r\n openDropdown.find('.selected').attr('aria-expanded', 'false');\r\n openDropdown.removeClass('open');\r\n\r\n this.dropdown = false;\r\n this.focusedEl = false;\r\n }\r\n },\r\n\r\n showDropdown: function (event) {\r\n var target = $(event.target);\r\n var targetSelect = target.parents('.comp-custom-select');\r\n\r\n targetSelect.find('ul').slideDown();\r\n targetSelect.find('.icon-arrow').addClass('open');\r\n targetSelect.children('.selected').attr('aria-expanded', 'true');\r\n targetSelect.addClass('open');\r\n\r\n this.dropdown = true;\r\n\r\n this.focusableEls = target.parents('.comp-custom-select').find('ul li a');\r\n this.firstFocusableEl = this.focusableEls[0];\r\n this.lastFocusableEl = this.focusableEls[this.focusableEls.length - 1];\r\n },\r\n\r\n focusNext: function () {\r\n if (!this.focusedEl) {\r\n this.firstFocusableEl.focus();\r\n this.focusedEl = 1;\r\n } else if (this.focusedEl === this.focusableEls.length) {\r\n this.firstFocusableEl.focus();\r\n this.focusedEl = 1;\r\n } else {\r\n this.focusableEls[this.focusedEl].focus();\r\n this.focusedEl++;\r\n }\r\n },\r\n\r\n focusPrevious: function () {\r\n if (this.focusedEl === 1 || !this.focusedEl) {\r\n this.lastFocusableEl.focus();\r\n this.focusedEl = this.focusableEls.length;\r\n } else {\r\n this.focusedEl--;\r\n this.focusableEls[this.focusedEl - 1].focus();\r\n }\r\n }\r\n })\r\n njm.views.customSelectWithSubmit = njm.views.customSelect.extend({\r\n initialize: function () {\r\n // Call the parent to do init code.\r\n njm.views.customSelect.prototype.initialize.apply(this, arguments);\r\n },\r\n\r\n dropdownSelectionClick: function (event) {\r\n var target = $(event.target);\r\n njm.views.customSelect.prototype.dropdownSelectionClick.apply(this, arguments);\r\n $(target).closest('form').submit();\r\n }\r\n });\r\n})(jQuery, njm);\r\n","(function ($, njm) {\r\n 'use strict';\r\n\r\n njm.views.dropdownQuoteNew = Backbone.View.extend({\r\n\r\n events: {\r\n },\r\n\r\n initialize: function () {\r\n var $this = this,\r\n dropdownVisible = false,\r\n focusableEls = false,\r\n firstFocusableEl = false,\r\n lastFocusableEl = false,\r\n focusedEl = false,\r\n component = $('.comp-dropdown-quote');\r\n $(document).click(function (event) {\r\n if ($(event.target).closest('.comp-dropdown-quote .custom-select').length < 1 && $this.dropdownVisible) {\r\n $this.hideDropdown(event);\r\n }\r\n });\r\n $('#drpdwnComponent').find('a').on('click', function (event) {\r\n var $this = $(this);//cache the $(this) selector since it will be used more than once\r\n var hrefText = this.href;\r\n var text = $this.text();\r\n njmClientClickTracking.quoteLinkClicked(\"Quote Link Clicked\", text, hrefText);\r\n });\r\n $('#drpdwnComponent').find('a').filter(function () {\r\n var href = $(this).attr('href') + \"&__RequestVerificationToken=\" + $('input[name=\"__RequestVerificationToken\"]')[0].value;\r\n return $(this).attr(\"href\", href);\r\n });\r\n\r\n var currentProductPreHref = $('#btnProductPreQuote').attr('href');\r\n if (typeof currentProductPreHref != \"undefined\") {\r\n if (currentProductPreHref.indexOf(\"__RequestVerificationToken\") < 1) {\r\n var href = currentProductPreHref + \"&__RequestVerificationToken=\" + $('input[name=\"__RequestVerificationToken\"]')[0].value;\r\n $('#btnProductPreQuote').attr('href', href);\r\n }\r\n }\r\n $('.comp-dropdown-quote .custom-select .selected, .comp-dropdown-quote .custom-select [class^=icon]').on({\r\n click: function (event) {\r\n $this.dropdownClick(event);\r\n },\r\n\r\n keydown: function (event) {\r\n $this.handleKeydown(event);\r\n }\r\n });\r\n component.find('#zipSubmit-Container').on({\r\n keydown: function () {\r\n var key = event.which;\r\n\r\n if (key === 13) {\r\n component.find('#zipSubmit').trigger('click');\r\n }\r\n }\r\n });\r\n $('.comp-dropdown-quote .custom-select ul li a, .comp-dropdown-quote .custom-select ul li a [class^=icon]').on({\r\n click: function () {\r\n $this.dropdownSelectionClick(event);\r\n },\r\n\r\n keydown: function (event) {\r\n $this.handleKeydown(event);\r\n }\r\n });\r\n //Policy Option Selection Validation\r\n //Updated [data-screen=\"product-pre-quote\"] to [data-screen=\"product-quote\"]\r\n component.find('[data-screen=\"product-quote\"] #policy-options-button').on({\r\n click: function (event) {\r\n var valid = $this.validatePolicyOption(event);\r\n\r\n if (valid) {\r\n $this.policyOptionSubmit(event);\r\n }\r\n event.preventDefault();\r\n }\r\n });\r\n //Updated [data-screen=\"product-pre-quote\"] to [data-screen=\"product-quote\"]\r\n component.find('[data-screen=\"product-quote\"] [name=\"productSelection\"]').on({\r\n change: function (event) {\r\n $this.validatePolicyOption(event);\r\n }\r\n });\r\n $('.innerquotegetStarted').filter(function () {\r\n var href = $(this).attr('href') + \"&__RequestVerificationToken=\" + $('input[name=\"__RequestVerificationToken\"]')[0].value;\r\n return $(this).attr(\"href\", href);\r\n });\r\n //To add Policy Message Screen\r\n $('#policy-message-container').find('.nopolicyquote').filter(function () {\r\n var href = $(this).attr('href') + \"&__RequestVerificationToken=\" + $('input[name=\"__RequestVerificationToken\"]')[0].value;\r\n $(this).attr(\"href\", href);\r\n });\r\n var policymessageContainer = $('#policy-message-container').html();\r\n $('#policy-message-container').remove();\r\n if (!$('.screens-wrapper').find('.product-policy-message').length > 0) {\r\n $('.screens-wrapper').append(policymessageContainer);\r\n $('#policy-message-container').remove();\r\n };\r\n window.onProductBegin = function (data, event) {\r\n $this.processing($(event.target).closest('.item'), true);\r\n }\r\n window.onProductComplete = function (data, event) {\r\n $this.processing($(event.target).closest('.item'), false);\r\n }\r\n window.onProductQuoteSubmit = function () {\r\n var displayScreen = $('[data-screen=\"product-pre-quote\"]');\r\n var currentScreen = $('[data-screen=\"product-grid\"]');\r\n var hidQuoteStatus = $('#quote-product-status');\r\n if (typeof hidQuoteStatus.val() !== \"undefined\" && hidQuoteStatus.val() === \"true\") {\r\n console.log(\"in maintenance mode\");\r\n var redirectUrl = $('#quote-product-redirectUrl').val()\r\n window.open(redirectUrl, '_self');\r\n }\r\n else {\r\n $this.slideLeft(currentScreen, displayScreen);\r\n }\r\n }\r\n window.onProductQuoteComplete = function () {\r\n var displayScreen = $('[data-screen=\"product-qualification-merged\"]');\r\n var currentScreen = $('[data-screen=\"product-quote\"]');\r\n var hidQuoteshortform = $('#quote-action-shortform');\r\n var hidQuoteAgent = $('#quote-action-agentsearch');\r\n var hidQuoteQBApp = $('#quote-action-qbapp');\r\n var hidQuoteZipBlock = $('#quote-action-zipBlock');\r\n var hidQuoteaction = $('#hidQuoteAction');\r\n var hidQuoteshortform = $('#quote-action-shortform');\r\n var hidQuoteAppetiteAction = $('#quote-action-appetiteMsg');\n var hidQuoteInAppetiteAction = $('#quote-action-inappetiteMsg');\r\n var zipSubmitBtn = $('#zipSubmit');\r\n var hidProductCategory = $('#productCategory');\r\n var hidBusinessLob = $('#quote-lob-business');\r\n var zipCodeLabel = $('#zipCodeLabel');\r\n var appurl = $('#hidQuoteActionUrl').val();\r\n var hidQuoteStatus = $('#quote-product-status');\r\n if (typeof hidQuoteStatus.val() !== \"undefined\" && hidQuoteStatus.val() === \"true\") {\r\n console.log(\"in maintenance mode\");\r\n var redirectUrl = $('#quote-product-redirectUrl').val()\r\n window.open(redirectUrl, '_self');\r\n }\r\n else {\r\n if (!(zipCodeLabel.hasClass('haserror'))) {\r\n\r\n if (hidBusinessLob.val() === hidProductCategory.val()) {\r\n $this.slideLeft(currentScreen, displayScreen);\r\n\r\n } else {\r\n\r\n if (typeof hidQuoteaction.val() !== \"undefined\" && typeof hidQuoteQBApp.val() !== \"undefined\" && hidQuoteaction.val() && hidQuoteQBApp.val()) {\r\n\r\n if (hidQuoteaction.val() === hidQuoteQBApp.val()) {\r\n console.log(\"in quote app\");\r\n window.open(appurl, '_self');\r\n }\r\n else if (hidQuoteaction.val() === hidQuoteshortform.val()) {\r\n var formUrl = $('#hidFormActionUrl').val();\r\n console.log(\"in short form\");\r\n window.open(formUrl, '_self');\r\n }\r\n else if (hidQuoteaction.val() === hidQuoteAgent.val()) {\r\n var agentSearchUrl = $('#hidAgentActionUrl').val();\r\n console.log(\"in agent search\");\r\n window.open(agentSearchUrl, '_self');\r\n }\r\n else if (hidQuoteaction.val() === hidQuoteZipBlock.val()) {\r\n var zipBlockUrl = $('#hidzipBlockActionUrl').val();\r\n console.log(\"in agent search\");\r\n window.open(zipBlockUrl, '_self');\r\n }\r\n else if (hidQuoteaction.val() === hidQuoteAppetiteAction.val() || hidQuoteaction.val() === hidQuoteInAppetiteAction.val()) {\r\n $this.slideLeft(currentScreen, displayScreen);\r\n }\r\n }\r\n else {\r\n $this.slideLeft(currentScreen, displayScreen);\r\n }\r\n }\r\n }\r\n }\r\n $this.processing(zipSubmitBtn, false);\r\n }\r\n window.onDropQuoteProductSuccess = function () {\r\n\r\n //var $this = $(this);\r\n var hrefText = this.url;\r\n var productLabel = $(event.target).closest('.item').children(\"#product-label\").text();\r\n njmClientClickTracking.quoteLinkClicked(\"Quote Link Click Success\", productLabel, hrefText);\r\n //Dropdown text and Icon update\r\n var dropdownText = $(\"#dropdown-selected-quote\").val();\r\n var dropdownIcon = $(\"#dropdown-selected-quote-icon\").val();\r\n $('#drpdwnComponent').find('.selected').text(dropdownText);\r\n $('#drpdwnComponent').find('#selected-icon').attr(\"class\", dropdownIcon);\r\n var displayScreen = $('[data-screen=\"product-quote\"]');\r\n var hideScreen = $('.screen.active');\r\n if (!displayScreen.hasClass('active')) {\r\n $this.displayScreen(hideScreen, displayScreen);\r\n }\r\n if (typeof (CallTrk) !== null && typeof (CallTrk) !== 'undefined') {\r\n CallTrk.swap();\r\n }\r\n }\r\n window.onDropProductFailure = function (data, event) {\r\n //var $this = $(this);\r\n var hrefText = this.url;\r\n var failureText = \"\"\r\n njmClientClickTracking.quoteLinkClicked(\"Quote Link Click Failed\", failureText, hrefText);\r\n }\r\n window.onConitnueQuoteSuccess = function (data, event) {\r\n njmClientClickTracking.quoteLinkClicked(\"Continue Saved Quote Link Click Success\");\r\n var displayScreen = $('[data-screen=\"continue-product-quote\"]');\r\n var currentScreen = $('[data-screen=\"product-quote\"]');\r\n $this.slideLeft(currentScreen, displayScreen);\r\n $('#inner-quote-title').addClass('hidden');\r\n if ($('.comp-dropdown-quote').length > 0) {\r\n $this.initializeContinueProductQuoteScreen();\r\n }\r\n };\r\n window.onConitnueQuoteFailure = function (data, event) {\r\n var hrefText = this.url;\r\n var failureText = \"Continue Saved Quote Link Click Failed\"\r\n njmClientClickTracking.quoteLinkClicked(\"Continue Saved Quote Link Click Failed\", failureText, hrefText);\r\n };\r\n window.onDropQuoteProductQuoteSubmit = function () {\r\n var displayScreen = $('[data-screen=\"product-pre-quote\"]');\r\n var hideScreen = $('.screen.active');\r\n if (!displayScreen.hasClass('active')) {\r\n $this.displayScreen(hideScreen, displayScreen);\r\n }\r\n var currentProductPreHref = $('#btnProductPreQuote').attr('href');\r\n if (typeof currentProductPreHref != \"undefined\") {\r\n if (currentProductPreHref.indexOf(\"__RequestVerificationToken\") < 1) {\r\n var href = currentProductPreHref + \"&__RequestVerificationToken=\" + $('input[name=\"__RequestVerificationToken\"]')[0].value;\r\n $('#btnProductPreQuote').attr('href', href);\r\n }\r\n }\r\n //To add Policy Message Screen\r\n $('#policy-message-container').find('.nopolicyquote').filter(function () {\r\n var href = $(this).attr('href') + \"&__RequestVerificationToken=\" + $('input[name=\"__RequestVerificationToken\"]')[0].value;\r\n $(this).attr(\"href\", href);\r\n });\r\n var policymessageContainer = $('#policy-message-container').html();\r\n $('#policy-message-container').remove();\r\n if (!$('.screens-wrapper').find('.product-policy-message').length > 0) {\r\n $('.screens-wrapper').append(policymessageContainer);\r\n $('#policy-message-container').remove();\r\n };\r\n //Policy Option Selection Validation\r\n //Updated [data-screen=\"product-pre-quote\"] to [data-screen=\"product-quote\"]\r\n component.find('[data-screen=\"product-quote\"] #policy-options-button').on({\r\n click: function (event) {\r\n var valid = $this.validatePolicyOption(event);\r\n\r\n if (valid) {\r\n $this.policyOptionSubmit(event);\r\n }\r\n\r\n event.preventDefault();\r\n }\r\n });\r\n\r\n component.find('[data-screen=\"product-quote\"] [name=\"productSelection\"]').on({\r\n change: function (event) {\r\n $this.validatePolicyOption(event);\r\n }\r\n });\r\n $this.initializeDropdownPolicyMessageScreen();\r\n\r\n }\r\n window.onProductQuoteSuccess = function () {\r\n var hrefText = this.url;\r\n var zipcode = $('#zipcode').val();\r\n njmClientClickTracking.quoteLinkClicked(\"Zip Code Link Click Success\", zipcode, hrefText);\r\n var displayScreen = $('[data-screen=\"product-qualification-merged\"]');\r\n var currentScreen = $('[data-screen=\"product-quote\"]');\r\n $('#zipSubmit').removeAttr('disabled');\r\n if ($('.comp-dropdown-quote').length > 0) {\r\n $this.initializeDropdownPreQualScreen();\r\n }\r\n var currentHref = $('#btnProdMsgSubmit').attr('href');\r\n if (typeof currentHref != \"undefined\") {\r\n if (currentHref.indexOf(\"__RequestVerificationToken\") < 1) {\r\n var href = currentHref + \"&__RequestVerificationToken=\" + $('input[name=\"__RequestVerificationToken\"]')[0].value;\r\n $('#btnProdMsgSubmit').attr('href', href);\r\n }\r\n }\r\n }\r\n window.onPreProductQuoteSuccess = function () {\r\n var displayScreen = $('[data-screen=\"product-quote\"]');\r\n var currentScreen = $('[data-screen=\"product-pre-quote\"]');\r\n $('#zipCodeLabel').removeClass('haserror');\r\n $this.slideLeft(currentScreen, displayScreen);\r\n\r\n if ($('.comp-dropdown-quote').length > 0) {\r\n $this.initializeDropdownQuoteScreen();\r\n }\r\n\r\n if (typeof (CallTrk) !== null && typeof (CallTrk) !== 'undefined') {\r\n CallTrk.swap();\r\n }\r\n }\r\n window.onProductQuoteQualificationSuccess = function () {\r\n var displayScreen = $('[data-screen=\"product-qualification-merged\"]');\r\n var currentScreen = $('[data-screen=\"product-qualification\"]');\r\n $this.slideLeft(currentScreen, displayScreen);\r\n }\r\n window.onProductQuoteError = function (data) {\r\n var hrefText = this.url;\r\n var zipcode = $('#zipcode').val();\r\n njmClientClickTracking.quoteLinkClicked(\"Zip Code Link Click Failed\", zipcode, hrefText);\r\n var hidZipErrorMsg = $('#hidGenericErrorMessage');\r\n var hidZipInvalidMsg = $('#hidZipCodeErrorMessage');\r\n var zipSubmitBtn = $('#zipSubmit'),\r\n zipLabel = $('#zipCodeLabel').addClass('haserror');\r\n if (data && data.status === 400) {\r\n $('#zipErrorMsg').text(hidZipInvalidMsg.val());\r\n }\r\n else {\r\n $('#zipErrorMsg').text(hidZipErrorMsg.val());\r\n }\r\n $this.processing(zipSubmitBtn, false);\r\n }\r\n window.onValidateZipCode = function (data, event) {\r\n var hrefText = this.url;\r\n var zipcode = $('#zipcode'),\r\n errorMsg = $('#zipcode').attr('data-val-required'),\r\n zipSubmitBtn = $('#zipSubmit'),\r\n zipRegEx = /\\d{5}/,\r\n error = zipcode.siblings('label').find('.tooltip'),\r\n valid = zipRegEx.test(zipcode.val());\r\n njmClientClickTracking.quoteLinkClicked(\"Zip Code Link Clicked\", zipcode.val(), hrefText);\r\n if (valid) {\r\n error.parent().addClass('validated').removeClass('haserror');\r\n if (zipSubmitBtn.hasClass('button')) {\r\n zipSubmitBtn.attr('disabled', 'disabled');\r\n }\r\n $this.processing(zipSubmitBtn, true);\r\n } else {\r\n error.parent().addClass('validated haserror');\r\n $('#zipErrorMsg').text(errorMsg);\r\n //zipSubmitBtn.removeAttr('disabled');\r\n $this.processing(zipSubmitBtn, false);\r\n }\r\n return valid;\r\n }\n window.onGetStartedSuccess = function (response) {\r\n var hidQuoteStatus = $('#quote-product-status');\r\n if (typeof hidQuoteStatus.val() !== \"undefined\" && hidQuoteStatus.val() === \"true\") {\r\n console.log(\"In maintenance mode\");\r\n var redirectUrl = $('#quote-product-redirectUrl').val()\r\n window.open(redirectUrl, '_self');\r\n }\n if (response.getStartedUrl) {\n window.location.href = response.getStartedUrl;\r\n }\r\n };\n window.onGetStartedFailure = function (xhr,status, error) {\r\n var hrefText = this.url;\r\n var failureText = \"Get Started Link Click Failed\"\r\n njmClientClickTracking.quoteLinkClicked(\"Get Started Link Click Failed\", failureText, hrefText);\r\n };\r\n $this.initializeDropdownPolicyMessageScreen();\r\n $this.initializeContinueProductQuoteScreen();\r\n },\r\n\r\n initializeDropdownPreQualScreen: function () {\r\n var $this = this;\r\n var component = $('.comp-dropdown-quote');\r\n $('#inner-quote-title').removeClass('hidden');\r\n component.find('.back').on({\r\n click: function (event) {\r\n $this.backClick(event);\r\n }\r\n });\r\n component.find('#zipSubmit-Container').on({\r\n keydown: function () {\r\n var key = event.which;\r\n\r\n if (key === 13) {\r\n component.find('#zipSubmit').trigger('click');\r\n }\r\n }\r\n });\r\n component.find('[data-screen=\"product-qualification\"] #prequal-button').on({\r\n click: function (event) {\r\n var $thisObject = $(this);//cache the $(this) selector since it will be used more than once\r\n var hrefText = this.href;\r\n var productLabel = $thisObject.text();\r\n njmClientClickTracking.quoteLinkClicked(\"Quote Link Clicked\", productLabel, hrefText);\r\n $this.validatePreQual(event);\r\n }\r\n });\r\n component.find('[data-screen=\"product-qualification\"] input[type=\"radio\"]').on({\r\n change: function () {\r\n $this.preQualRadioChecked(event);\r\n if ($(this).parents('.validated').length > 0) {\r\n $this.validatePreQual(event);\r\n }\r\n }\r\n });\r\n\r\n },\r\n initializeDropdownQuoteScreen: function () {\r\n var component = $('.comp-dropdown-quote');\r\n var $this = this;\r\n $('#inner-quote-title').removeClass('hidden');\r\n component.find('.back').on({\r\n click: function (event) {\r\n $this.backClick(event);\r\n }\r\n });\r\n\r\n component.find('[data-screen=\"product-quote\"] #zipcode').on({\r\n keypress: function () {\r\n var $thisComponent = $(event.target).parents('.comp-dropdown-quote'),\r\n quoteScreen = $thisComponent.find('[data-screen=\"product-quote\"]');\r\n\r\n if (event.which === 13) { //enter key\r\n quoteScreen.find('#zipSubmit').trigger('click');\r\n }\r\n },\r\n\r\n keyup: function () {\r\n if ($(this).siblings('label').hasClass('validated')) {\r\n $this.validateZip(event);\r\n }\r\n },\r\n\r\n blur: function () {\r\n $this.hideErrors(event);\r\n },\r\n\r\n focus: function () {\r\n if ($(this).siblings('label').hasClass('validated')) {\r\n $this.validateZip(event);\r\n }\r\n }\r\n });\r\n\r\n },\r\n initializeContinueProductQuoteScreen: function () {\r\n var component = $('.comp-dropdown-quote');\r\n var $this = this;\r\n component.find('[data-screen=\"continue-product-quote\"] .back').on({\r\n click: function (event) {\r\n njmClientClickTracking.quoteLinkClicked(\"Continue Saved Quote Screen back button click success\");\r\n $('#inner-quote-title').removeClass('hidden');\r\n $this.backClick(event);\r\n }\r\n });\r\n\r\n },\r\n initializeDropdownPolicyMessageScreen: function () {\r\n var component = $('.comp-dropdown-quote');\r\n var $this = this;\r\n $('#inner-quote-title').removeClass('hidden');\r\n component.find('[data-screen=\"product-message-quote\"] .back').on({\r\n click: function (event) {\r\n $this.backClick(event);\r\n }\r\n });\r\n\r\n },\r\n dropdownClick: function (event) {\r\n if (!$(event.target).parents('.comp-dropdown-quote').hasClass('loading')) {\r\n\r\n if (!this.dropdownVisible) {\r\n this.showDropdown(event);\r\n } else {\r\n this.hideDropdown(event);\r\n }\r\n }\r\n },\r\n AddAntiForgeryToken: function (event) {\r\n event.target.href = event.target.href + \"&__RequestVerificationToken=\" + $('input[name=\"__RequestVerificationToken\"]')[0].value;\r\n },\r\n slideLeft: function (hideScreen, displayScreen) {\r\n\r\n if (!$('.comp-dropdown-quote').hasClass('sliding')) {\r\n\r\n $('.comp-dropdown-quote').addClass('sliding');\r\n\r\n displayScreen.addClass('right').removeClass('slide hidden active');\r\n\r\n window.setTimeout(function () {\r\n hideScreen\r\n .removeClass('active hidden')\r\n .addClass('slide left');\r\n\r\n displayScreen\r\n .removeClass('right left hidden')\r\n .addClass('slide active');\r\n }, 50);\r\n\r\n window.setTimeout(function () {\r\n hideScreen.addClass('hidden').removeClass('slide left right active');\r\n $('.comp-dropdown-quote').removeClass('sliding');\r\n\r\n if ($('.comp-dropdown-quote').parents('.comp-hero-sticky-quote').length) {\r\n njm.views.stickyQuote.prototype.setFocusableEls();\r\n }\r\n }, 500);\r\n }\r\n },\r\n\r\n slideRight: function (hideScreen, displayScreen) {\r\n\r\n if (!$('.comp-dropdown-quote').hasClass('sliding')) {\r\n\r\n $('.comp-dropdown-quote').addClass('sliding');\r\n\r\n displayScreen.addClass('left').removeClass('slide hidden active');;\r\n\r\n window.setTimeout(function () {\r\n hideScreen\r\n .removeClass('active hidden')\r\n .addClass('slide right');\r\n\r\n displayScreen\r\n .removeClass('right left hidden')\r\n .addClass('slide active');\r\n }, 50);\r\n\r\n window.setTimeout(function () {\r\n\r\n hideScreen.addClass('hidden').removeClass('slide left right active');\r\n\r\n $('.comp-dropdown-quote').removeClass('sliding');\r\n\r\n if ($('.comp-dropdown-quote').parents('.comp-hero-sticky-quote').length) {\r\n njm.views.stickyQuote.prototype.setFocusableEls();\r\n }\r\n }, 500);\r\n }\r\n },\r\n\r\n showDropdown: function (event) {\r\n var $thisComponent = $(event.target).parents('.comp-dropdown-quote');\r\n\r\n $(event.target).parent().find('ul').slideDown();\r\n $(event.target).parents('.custom-select').addClass('open').children('.icon-arrow').addClass('open');\r\n this.dropdownVisible = true;\r\n this.setFocusableEls(event);\r\n\r\n $thisComponent.find('.custom-select ul').slideDown();\r\n $thisComponent.find('.custom-select .icon-arrow').addClass('open');\r\n $thisComponent.find('.selected').attr('aria-expanded', 'true');\r\n this.dropdownVisibleropdown = true;\r\n this.setFocusableEls(event);\r\n },\r\n hideDropdown: function (event) {\r\n var $this = this,\r\n $thisComponent;\r\n\r\n if ($(event.target).parents('.comp-dropdown-quote').length === 1) {\r\n $thisComponent = $(event.target).parents('.comp-dropdown-quote');\r\n } else {\r\n $thisComponent = $('.comp-dropdown-quote');\r\n }\r\n\r\n $thisComponent.each(function () {\r\n var $thisElement = $(this);\r\n\r\n $(this).find('.custom-select ul').slideUp(function () {\r\n $thisElement.find('.custom-select').removeClass('open');\r\n $thisElement.find('.custom-select .icon-arrow.open').removeClass('open');\r\n $thisElement.find('.selected').attr('aria-expanded', 'false');\r\n $this.dropdownVisible = false;\r\n $this.clearFocusableEls();\r\n });\r\n });\r\n\r\n },\r\n dropdownSelectionClick: function (event) {\r\n var $this = this,\r\n $thisComponent = $(event.target).parents('.comp-dropdown-quote'),\r\n selectionItem = $(event.target).closest('a.item'),\r\n selectionItemText = selectionItem.text(),\r\n selectionIconClass = selectionItem.children('[class^=icon]').attr('class'),\r\n customSelect = $(event.target).parents('.custom-select');\r\n\r\n event.preventDefault();\r\n\r\n customSelect.find('.selected').text(selectionItemText);\r\n customSelect.children('[class^=icon]').eq(0).attr('class', selectionIconClass);\r\n $this.hideDropdown(event);\r\n customSelect.focus();\r\n $this.clearForms(event);\r\n },\r\n setFocusableEls: function (event) {\r\n\r\n this.focusableEls = $(event.target).parents('.comp-dropdown-quote').find('.custom-select ul li a');\r\n this.firstFocusableEl = this.focusableEls.eq(0);\r\n this.lastFocusableEl = this.focusableEls.eq(this.focusableEls.length - 1);\r\n this.focusedEl = false;\r\n },\r\n clearForms: function (event) {\r\n var $thisComponent = $(event.target).parents('.comp-dropdown-quote'),\r\n formElements = $thisComponent.find('input');\r\n\r\n formElements.each(function () {\r\n\r\n if ($(this).attr('type') === 'text') {\r\n $(this).val('');\r\n }\r\n\r\n if ($(this).attr('type') === 'radio') {\r\n $(this).prop('checked', false);\r\n }\r\n });\r\n\r\n $thisComponent.find('.validated').removeClass('validated haserror');\r\n\r\n $thisComponent.find('#prequal-button').removeAttr('href target');\r\n\r\n },\r\n clearFocusableEls: function () {\r\n this.focusableEls = false;\r\n this.firstFocusableEl = false;\r\n this.lastFocusableEl = false;\r\n this.focusedEl = false;\r\n },\r\n displayScreen: function (hideScreen, displayScreen) {\r\n\r\n hideScreen.removeClass('slide active').addClass('hidden');\r\n displayScreen.removeClass('right left slide hidden').addClass('active');\r\n\r\n if ($('.comp-dropdown-quote').parents('.comp-hero-sticky-quote').length) {\r\n njm.views.stickyQuote.prototype.setFocusableEls();\r\n }\r\n\r\n },\r\n backClick: function (event) {\r\n event.preventDefault();\r\n\r\n var $thisComponent = $(event.target).parents('.comp-dropdown-quote'),\r\n currentScreen = $thisComponent.find('.screen.active'),\r\n href = $thisComponent.find('.screen.active .back').attr('href').slice(1),\r\n displayScreen = $thisComponent.find('[data-screen=\"' + href + '\"]');\r\n //productName = $thisComponent.find('.screen.active').attr('data-screen-product');\r\n\r\n\r\n if (!$thisComponent.hasClass('loading')) {\r\n this.slideRight(currentScreen, displayScreen);\r\n }\r\n },\r\n\r\n hideErrors: function (event) {\r\n var $thisComponent = $(event.target).parents('.comp-dropdown-quote');\r\n\r\n $thisComponent.find('.haserror').removeClass('haserror');\r\n },\r\n validatePreQual: function (event) {\r\n var $thisComponent = $(event.target).parents('.comp-dropdown-quote'),\r\n numEmployees = $thisComponent.find('#numEmployees_radio'),\r\n numEmployeesOptions = $thisComponent.find('[name=\"numEmployees\"]'),\r\n numEmployeesChecked = numEmployeesOptions.closest(':checked'),\r\n numVehicles = $thisComponent.find('#numVehicles_radio'),\r\n numVehiclesOptions = $thisComponent.find('[name=\"numVehicles\"]'),\r\n numVehiclesChecked = numVehiclesOptions.closest(':checked'),\r\n displayEmpOptions = $thisComponent.find('[data-screen=\"product-qualification\"]').attr('data-display-numEmployees'),\r\n displayVehicleOptions = $thisComponent.find('[data-screen=\"product-qualification\"]').attr('data-display-numVehicles');\r\n console.log(\"empOption:\" + displayEmpOptions + \" vehicleOPtions:\" + displayVehicleOptions)\r\n\r\n if (displayEmpOptions === \"True\" && displayVehicleOptions === \"True\") {\r\n console.log('numEmployess and numVehicles validated');\r\n\r\n if (numEmployeesChecked.length != 1) {\r\n numEmployees.addClass('haserror validated');\r\n } else {\r\n numEmployees.removeClass('haserror');\r\n }\r\n\r\n if (numVehiclesChecked.length != 1) {\r\n numVehicles.addClass('haserror validated');\r\n } else {\r\n numVehicles.removeClass('haserror');\r\n }\r\n\r\n } else if (displayEmpOptions === \"True\") {\r\n console.log('numEmployess only validated');\r\n\r\n if (numEmployeesChecked.length != 1) {\r\n numEmployees.addClass('haserror validated');\r\n } else {\r\n numEmployees.removeClass('haserror');\r\n }\r\n } else if (displayVehicleOptions === \"True\") {\r\n console.log('numVehicle only validated');\r\n {\r\n if (numEmployeesChecked.length != 1) {\r\n numEmployees.addClass('haserror validated');\r\n } else {\r\n numEmployees.removeClass('haserror');\r\n }\r\n }\r\n }\r\n if (numEmployees.hasClass('haserror') || numVehicles.hasClass('haserror')) {\r\n prEqualButton.attr('href', '#');\r\n event.preventDefault();\r\n }\r\n\r\n console.log('validatePreQual');\r\n },\r\n handleKeydown: function (event) {\r\n var key = event.which;\r\n var $this = this;\r\n\r\n if (key === 13 || key === 32) { //enter or \r\n event.preventDefault();\r\n\r\n if ($(event.target).is('.selected, .icon-arrow')) {\r\n $this.dropdownClick(event);\r\n } else if ($(event.target).is('a')) {\r\n $(event.target).trigger('click');\r\n }\r\n }\r\n\r\n if (key === 27) { //escape\r\n $this.hideDropdown(event);\r\n $('.comp-agent-search .selected').focus();\r\n }\r\n\r\n if (key === 38) { //up arrow\r\n event.preventDefault();\r\n\r\n if ($(event.target).is('.selected, .icon-arrow')) {\r\n\r\n if (!$this.dropdownVisible) {\r\n $this.showDropdown(event);\r\n }\r\n\r\n } else if ($(event.target).is('a')) {\r\n $this.focusPrevious();\r\n }\r\n }\r\n\r\n if (key === 40) { //down arrow\r\n event.preventDefault();\r\n\r\n if ($(event.target).is('.selected, .icon-arrow')) {\r\n\r\n if (!$this.dropdownVisible) {\r\n $this.showDropdown(event);\r\n }\r\n }\r\n\r\n $this.focusNext();\r\n\r\n }\r\n\r\n if (key === 9) { //tab\r\n\r\n if ($(event.target).is('.selected, .icon-arrow')) {\r\n\r\n if ($this.dropdownVisible) {\r\n\r\n if (event.shiftKey) {\r\n event.preventDefault();\r\n $this.focusPrevious();\r\n } else {\r\n event.preventDefault();\r\n $this.focusNext();\r\n }\r\n }\r\n\r\n } else if ($(event.target).is('a')) {\r\n\r\n if (event.shiftKey) {\r\n event.preventDefault();\r\n $this.focusPrevious();\r\n } else {\r\n event.preventDefault();\r\n $this.focusNext();\r\n }\r\n\r\n }\r\n\r\n }\r\n },\r\n\r\n focusNext: function () {\r\n if (!this.focusedEl) {\r\n this.firstFocusableEl.focus();\r\n this.focusedEl = 1;\r\n } else if (this.focusedEl === this.focusableEls.length) {\r\n this.firstFocusableEl.focus();\r\n this.focusedEl = 1;\r\n } else {\r\n this.focusableEls[this.focusedEl].focus();\r\n this.focusedEl++;\r\n }\r\n },\r\n\r\n focusPrevious: function () {\r\n if (this.focusedEl === 1 || !this.focusedEl) {\r\n this.lastFocusableEl.focus();\r\n this.focusedEl = this.focusableEls.length;\r\n } else {\r\n this.focusedEl--;\r\n this.focusableEls[this.focusedEl - 1].focus();\r\n }\r\n },\r\n\r\n validateZip: function (event) {\r\n var $thisComponent = $(event.target).parents('.comp-dropdown-quote'),\r\n zipcode = $thisComponent.find('#zipcode'),\r\n zipRegEx = /\\d{5}/,\r\n error = zipcode.siblings('label').find('.tooltip'),\r\n valid = zipRegEx.test(zipcode.val()),\r\n errMsg = $(\"#zipcode\").data(\"val-required\");\r\n\r\n if (valid) {\r\n error.parent().addClass('validated').removeClass('haserror');\r\n } else {\r\n error.parent().addClass('validated haserror');\r\n }\r\n\r\n if (zipcode.val().length < 5) {\r\n error.text(errMsg);\r\n } else if (zipcode.val().length === 5) {\r\n error.text(errMsg);\r\n }\r\n\r\n return valid;\r\n },\r\n preQualRadioChecked: function (event) {\r\n var $this = this,\r\n numEmployees = $('[name=\"numEmployees\"]'),\r\n numEmployeesChecked = numEmployees.closest(':checked'),\r\n numVehicles = $('[name=\"numVehicles\"]'),\r\n numVehiclesChecked = numVehicles.closest(':checked'),\r\n submitBtn = $('#prequal-button'),\r\n ajaxBtn = $('#btnProdMsgSubmit'),\r\n arrow = '',\r\n businessRuleHidden = $('#quotebusinessrule').val(),\r\n quoteAppUrl = $('#quoteAppUrl').val(),\r\n formUrl = $('#quoteformUrl').val(),\r\n agentUrl = $('#quoteAgentUrl').val(),\r\n hidContinueText = $('#hidContinueBtnText').val(),\r\n hidOnlineQuoteText = $('#hidOnlineBtnText').val(),\r\n hidQuoteBtnText = $('#hidQuoteBtnText').val(),\r\n hidAgentBtnText = $('#hidAgentBtnText').val(),\r\n hidQuoteshortform = $('#quote-action-shortform').val(),\r\n hidQuoteAgentsearch = $('#quote-action-agentsearch').val(),\r\n hidQuoteAppetiteMsg = $('#quote-action-appetiteMsg').val(),\r\n displayEmpOptions = $('#product-qualification').attr('data-display-numEmployees'),\r\n displayVehicleOptions = $('#product-qualification').attr('data-display-numVehicles'),\r\n hidQuoteQbapp = $('#quote-action-qbapp').val();\r\n console.log(\"employee:\" + numEmployeesChecked.val() + \" vehicle:\" + numVehiclesChecked.val());\r\n console.log(\"quoteAppUrl:\" + quoteAppUrl);\r\n console.log(\"agent url:\" + agentUrl);\r\n var result;\r\n var isProcessing = false;\r\n var businessRules = [];\r\n var businessRulesArr = JSON.parse(businessRuleHidden);\r\n console.log(\"businessrule:\" + businessRulesArr);\r\n\r\n if (displayEmpOptions === \"True\" && displayVehicleOptions === \"True\") {\r\n if (numEmployeesChecked.length + numVehiclesChecked.length === 2) {\r\n\r\n result = businessRulesArr.find(function (x) {\r\n return x.Employee === numEmployeesChecked.val() && x.Vehicle === numVehiclesChecked.val();\r\n });\r\n isProcessing = true;\r\n console.log(result);\r\n\r\n }\r\n }\r\n else if (displayEmpOptions === \"True\") {\r\n if (typeof numEmployeesChecked.val() !== \"undefined\" && numEmployeesChecked.val()) {\r\n result = businessRulesArr.find(function (x) {\r\n return x.Employee === numEmployeesChecked.val() && x.Vehicle === \"\";\r\n });\r\n isProcessing = true;\r\n console.log(result);\r\n\r\n }\r\n }\r\n else if (displayVehicleOptions === \"True\") {\r\n if (typeof numVehiclesChecked.val() !== \"undefined\" && numVehiclesChecked.val()) {\r\n result = businessRulesArr.find(function (x) {\r\n return x.Vehicle === numVehiclesChecked.val() && x.Employee === \"\";\r\n });\r\n isProcessing = true;\r\n console.log(result);\r\n }\r\n }\r\n submitBtn.show();\r\n ajaxBtn.hide();\r\n if (isProcessing) {\r\n if (typeof result !== \"undefined\" && typeof result.Action !== \"undefined\" && result.Action && result) {\r\n\r\n if (result.Action === hidQuoteshortform) {\r\n $this.processing(submitBtn, true);\r\n window.setTimeout(function () {\r\n $this.processing(submitBtn, false);\r\n submitBtn.html(hidQuoteBtnText + arrow);\r\n formUrl = formUrl + \"&\"\r\n if (typeof $('[name=\"numEmployees\"]').closest(':checked')[0] != \"undefined\" && typeof $('[name=\"numVehicles\"]').closest(':checked')[0] != \"undefined\") {\r\n formUrl = formUrl + encodeURIComponent(\"number of employees\") + \"=\" + encodeURIComponent($('[name=\"numEmployees\"]').closest(':checked')[0].value) + \"&\" + encodeURIComponent(\"number of vehicles\") + \"=\" + encodeURIComponent($('[name=\"numVehicles\"]').closest(':checked')[0].value);\r\n }\r\n else if (typeof $('[name=\"numVehicles\"]').closest(':checked')[0] != \"undefined\") {\r\n formUrl = formUrl + encodeURIComponent(\"number of vehicles\") + \"=\" + encodeURIComponent($('[name=\"numVehicles\"]').closest(':checked')[0].value);\r\n }\r\n else if (typeof $('[name=\"numEmployees\"]').closest(':checked')[0] != \"undefined\") {\r\n formUrl = formUrl + encodeURIComponent(\"number of employees\") + \"=\" + encodeURIComponent($('[name=\"numEmployees\"]').closest(':checked')[0].value);\r\n }\r\n\r\n submitBtn.attr('href', formUrl).removeAttr('target');\r\n }, 400);\r\n }\r\n else if (result.Action === hidQuoteAgentsearch) {\r\n $this.processing(submitBtn, true);\r\n window.setTimeout(function () {\r\n $this.processing(submitBtn, false);\r\n submitBtn.html(hidAgentBtnText + arrow);\r\n submitBtn.attr('href', agentUrl).removeAttr('target');\r\n }, 400);\r\n }\r\n else if (result.Action === hidQuoteQbapp) {\r\n $this.processing(submitBtn, true);\r\n window.setTimeout(function () {\r\n $this.processing(submitBtn, false);\r\n submitBtn.html(hidOnlineQuoteText + arrow);\r\n submitBtn.attr('href', quoteAppUrl).attr('target', '_blank');\r\n }, 400);\r\n }\r\n else {\r\n $this.processing(submitBtn, true);\r\n window.setTimeout(function () {\r\n $this.processing(submitBtn, false);\r\n submitBtn.text(hidContinueText);\r\n submitBtn.attr('href', '#').removeAttr('target');\r\n submitBtn.hide();\r\n ajaxBtn.show();\r\n }, 400);\r\n }\r\n\r\n }\r\n else {\r\n $this.processing(submitBtn, true);\r\n window.setTimeout(function () {\r\n $this.processing(submitBtn, false);\r\n submitBtn.text(hidContinueText);\r\n submitBtn.attr('href', '#').removeAttr('target');\r\n submitBtn.hide();\r\n ajaxBtn.show();\r\n }, 400);\r\n }\r\n }\r\n else {\r\n console.log(\"valid options are not selected yet.\");\r\n }\r\n },\r\n\r\n processing: function (element, boolean) {\r\n var loadingHtml = '
 ',\r\n component = element.parents('.comp-dropdown-quote'),\r\n itemOverlay = $('
').hide(),\r\n screenOverlay = $('
'),\r\n elementContents = element.contents(),\r\n formElements = element.parents('.screen').find('input, .button'),\r\n temp = $(''),\r\n movedContent;\r\n\r\n //console.log('Processing ran.');\r\n\r\n if (boolean) {\r\n //console.log(\"Processing being applied.\");\r\n component.addClass('loading');\r\n component.prepend(screenOverlay);\r\n formElements.each(function () {\r\n $(this).attr('disabled', 'disabled');\r\n });\r\n\r\n if (element.is('input')) {\r\n //console.log('Loading on input');\r\n\r\n this.processing(element.parents('.button'), true);\r\n\r\n } else if (element.hasClass('button')) {\r\n //console.log(\"Loading on button.\")\r\n\r\n element.append(temp);\r\n temp.append(elementContents)\r\n element.append(loadingHtml);\r\n element.attr('disabled', 'disabled');\r\n\r\n }\r\n } else {\r\n //console.log('Processing being removed.')\r\n\r\n if (element.is('input') || element.is('#zipSubmit-Container')) {\r\n component.find('.overlay').fadeOut(500, function () {\r\n this.remove();\r\n element.removeClass('loading');\r\n component.removeClass('loading');\r\n });\r\n } else {\r\n component.find('.overlay').remove();\r\n element.removeClass('loading');\r\n component.removeClass('loading');\r\n }\r\n\r\n if (element.is('input')) {\r\n this.processing(element.parents('.button'), false);\r\n //console.log('Input processing removed. Parent button html: ' + element.parents('.button').html());\r\n\r\n } else if (element.hasClass('button')) {\r\n //console.log('Button processing removed.');\r\n\r\n movedContent = element.find('span.processing').contents();\r\n element.prepend(movedContent);\r\n element.find('span.processing').remove();\r\n element.find('.lds-spinner').fadeOut().remove();\r\n element.find('.spacer').remove();\r\n }\r\n\r\n //element.removeClass('loading');\r\n\r\n formElements.each(function () {\r\n $(this).removeAttr('disabled');\r\n });\r\n }\r\n\r\n },\r\n //Policy Option Radio Button\r\n validatePolicyOption: function (event) {\r\n var $thisComponent = $(event.target).parents('.comp-dropdown-quote'),\r\n productSelection = $thisComponent.find('#productSelection_radio'),\r\n productSelectionOptions = $thisComponent.find('[name=\"productSelection\"]'),\r\n productSelectionChecked = productSelectionOptions.closest(':checked'),\r\n poButton = $thisComponent.find('#policy-options-button');\r\n if (productSelectionChecked.length != 1) {\r\n productSelection.addClass('haserror validated');\r\n }\r\n else {\r\n productSelection.removeClass('haserror');\r\n return true;\r\n }\r\n if (productSelection.hasClass('haserror')) {\r\n poButton.attr('href', '#');\r\n event.preventDefault();\r\n return false;\r\n }\r\n },\r\n policyOptionSubmit: function (event) {\r\n var $thisComponent = $(event.target).parents('.comp-dropdown-quote'),\r\n productSelectionOptions = $thisComponent.find('[name=\"productSelection\"]'),\r\n productSelectionChecked = productSelectionOptions.closest(':checked'),\r\n productSelectionCheckedId = productSelectionChecked[0].id,\r\n currentScreen = $(event.target).parents('.screen.active'),\r\n displayScreen = $thisComponent.find('[data-screen-for=\"' + productSelectionCheckedId + '\"]');\r\n\r\n if (productSelectionCheckedId) {\r\n this.slideLeft(currentScreen, displayScreen);\r\n }\r\n\r\n event.preventDefault();\r\n },\r\n\r\n });\r\n})(jQuery, njm);\r\n","(function ($, njm) {\r\n 'use strict';\r\n\r\n njm.views.dropdownQuote = Backbone.View.extend({\r\n\r\n events: {\r\n },\r\n\r\n initialize: function () {\r\n var $this = this,\r\n dropdownVisible = false,\r\n focusableEls = false,\r\n firstFocusableEl = false,\r\n lastFocusableEl = false,\r\n focusedEl = false,\r\n component = $('.comp-dropdown-quote');\r\n $(document).click(function (event) {\r\n if ($(event.target).closest('.comp-dropdown-quote .custom-select').length < 1 && $this.dropdownVisible) {\r\n $this.hideDropdown(event);\r\n }\r\n });\n $('#drpdwnComponent').find('a').on('click', function (event) {\n var $this = $(this);//cache the $(this) selector since it will be used more than once\r\n var hrefText = this.href;\n var text = $this.text();\n njmClientClickTracking.quoteLinkClicked(\"Quote Link Clicked\", text, hrefText);\r\n });\r\n $('#drpdwnComponent').find('a').filter(function () {\r\n var href = $(this).attr('href') + \"&__RequestVerificationToken=\" + $('input[name=\"__RequestVerificationToken\"]')[0].value;\r\n return $(this).attr(\"href\", href);\r\n });\r\n\r\n var currentProductPreHref = $('#btnProductPreQuote').attr('href');\r\n if (typeof currentProductPreHref != \"undefined\") {\r\n if (currentProductPreHref.indexOf(\"__RequestVerificationToken\") < 1) {\r\n var href = currentProductPreHref + \"&__RequestVerificationToken=\" + $('input[name=\"__RequestVerificationToken\"]')[0].value;\r\n $('#btnProductPreQuote').attr('href', href);\r\n }\r\n }\r\n $('.comp-dropdown-quote .custom-select .selected, .comp-dropdown-quote .custom-select [class^=icon]').on({\r\n click: function (event) {\r\n $this.dropdownClick(event);\r\n },\r\n\r\n keydown: function (event) {\r\n $this.handleKeydown(event);\r\n }\r\n });\r\n component.find('#zipSubmit-Container').on({\r\n keydown: function () {\r\n var key = event.which;\r\n\r\n if (key === 13) {\r\n component.find('#zipSubmit').trigger('click');\r\n }\r\n }\r\n });\r\n $('.comp-dropdown-quote .custom-select ul li a, .comp-dropdown-quote .custom-select ul li a [class^=icon]').on({\r\n click: function () {\r\n $this.dropdownSelectionClick(event);\r\n },\r\n\r\n keydown: function (event) {\r\n $this.handleKeydown(event);\r\n }\r\n });\n //Policy Option Selection Validation\r\n component.find('[data-screen=\"product-pre-quote\"] #policy-options-button').on({\r\n click: function (event) {\r\n var valid = $this.validatePolicyOption(event);\r\n\r\n if (valid) {\r\n $this.policyOptionSubmit(event);\r\n }\r\n\r\n event.preventDefault();\r\n }\r\n });\r\n\r\n component.find('[data-screen=\"product-pre-quote\"] [name=\"productSelection\"]').on({\r\n change: function (event) {\r\n $this.validatePolicyOption(event);\r\n }\r\n });\n \n //To add Policy Message Screen\n $('#policy-message-container').find('.nopolicyquote').filter(function () {\r\n var href = $(this).attr('href') + \"&__RequestVerificationToken=\" + $('input[name=\"__RequestVerificationToken\"]')[0].value;\r\n $(this).attr(\"href\", href);\n });\n var policymessageContainer = $('#policy-message-container').html();\n $('#policy-message-container').remove();\n if (!$('.screens-wrapper').find('.product-policy-message').length > 0) {\n $('.screens-wrapper').append(policymessageContainer);\n $('#policy-message-container').remove();\r\n };\r\n window.onProductBegin = function (data, event) {\r\n $this.processing($(event.target).closest('.item'), true);\r\n }\r\n window.onProductComplete = function (data, event) {\r\n $this.processing($(event.target).closest('.item'), false);\r\n }\r\n window.onProductQuoteSubmit = function () {\r\n var displayScreen = $('[data-screen=\"product-pre-quote\"]');\r\n var currentScreen = $('[data-screen=\"product-grid\"]');\r\n var hidQuoteStatus = $('#quote-product-status');\r\n if (typeof hidQuoteStatus.val() !== \"undefined\" && hidQuoteStatus.val() === \"true\") {\r\n console.log(\"in maintenance mode\");\r\n var redirectUrl = $('#quote-product-redirectUrl').val()\r\n window.open(redirectUrl, '_self');\r\n }\r\n else {\r\n $this.slideLeft(currentScreen, displayScreen);\r\n }\r\n }\r\n window.onProductQuoteComplete = function () {\r\n var displayScreen = $('[data-screen=\"product-qualification-merged\"]');\r\n var currentScreen = $('[data-screen=\"product-quote\"]');\r\n var hidQuoteshortform = $('#quote-action-shortform');\r\n var hidQuoteAgent = $('#quote-action-agentsearch');\r\n var hidQuoteQBApp = $('#quote-action-qbapp');\r\n var hidQuoteaction = $('#hidQuoteAction');\r\n var hidQuoteshortform = $('#quote-action-shortform');\r\n var hidQuoteAppetiteAction = $('#quote-action-appetiteMsg');\n var hidQuoteInAppetiteAction = $('#quote-action-inappetiteMsg');\r\n var zipSubmitBtn = $('#zipSubmit');\r\n var hidProductCategory = $('#productCategory');\r\n var hidBusinessLob = $('#quote-lob-business');\r\n var zipCodeLabel = $('#zipCodeLabel');\r\n var appurl = $('#hidQuoteActionUrl').val();\r\n var hidQuoteStatus = $('#quote-product-status');\r\n if (typeof hidQuoteStatus.val() !== \"undefined\" && hidQuoteStatus.val() === \"true\") {\r\n console.log(\"in maintenance mode\");\r\n var redirectUrl = $('#quote-product-redirectUrl').val()\r\n window.open(redirectUrl, '_self');\r\n }\r\n else {\r\n if (!(zipCodeLabel.hasClass('haserror'))) {\r\n\r\n if (hidBusinessLob.val() === hidProductCategory.val()) {\r\n $this.slideLeft(currentScreen, displayScreen);\r\n\r\n } else {\r\n\r\n if (typeof hidQuoteaction.val() !== \"undefined\" && typeof hidQuoteQBApp.val() !== \"undefined\" && hidQuoteaction.val() && hidQuoteQBApp.val()) {\r\n\r\n if (hidQuoteaction.val() === hidQuoteQBApp.val()) {\r\n console.log(\"in quote app\");\r\n window.open(appurl, '_self');\r\n }\r\n else if (hidQuoteaction.val() === hidQuoteshortform.val()) {\r\n var formUrl = $('#hidFormActionUrl').val();\r\n console.log(\"in short form\");\r\n window.open(formUrl, '_self');\r\n }\r\n else if (hidQuoteaction.val() === hidQuoteAgent.val()) {\r\n var agentSearchUrl = $('#hidAgentActionUrl').val();\r\n console.log(\"in agent search\");\r\n window.open(agentSearchUrl, '_self');\r\n }\r\n else if (hidQuoteaction.val() === hidQuoteAppetiteAction.val() || hidQuoteaction.val() === hidQuoteInAppetiteAction.val()) {\r\n $this.slideLeft(currentScreen, displayScreen);\r\n }\r\n }\r\n else {\r\n $this.slideLeft(currentScreen, displayScreen);\r\n }\r\n }\r\n }\r\n }\r\n $this.processing(zipSubmitBtn, false);\r\n }\r\n window.onDropQuoteProductSuccess = function () {\n\n //var $this = $(this);\r\n var hrefText = this.url;\n var productLabel = $(event.target).closest('.item').children(\"#product-label\").text();\n njmClientClickTracking.quoteLinkClicked(\"Quote Link Click Success\", productLabel, hrefText);\n //Dropdown text and Icon update\n var dropdownText = $(\"#dropdown-selected-quote\").val();\n var dropdownIcon = $(\"#dropdown-selected-quote-icon\").val();\n $('#drpdwnComponent').find('.selected').text(dropdownText);\n $('#drpdwnComponent').find('#selected-icon').attr(\"class\", dropdownIcon); \r\n var displayScreen = $('[data-screen=\"product-quote\"]');\r\n var hideScreen = $('.screen.active');\r\n if (!displayScreen.hasClass('active')) {\r\n $this.displayScreen(hideScreen, displayScreen);\r\n }\r\n\t\t\t\tif (typeof(CallTrk) === \"object\") {\r\n\t\t\t\t\tCallTrk.swap();\r\n\t\t\t\t}\r\n }\n window.onDropProductFailure = function (data, event) {\r\n //var $this = $(this);\r\n var hrefText = this.url;\n var failureText = \"\"\n njmClientClickTracking.quoteLinkClicked(\"Quote Link Click Failed\", failureText, hrefText);\r\n } \r\n window.onDropQuoteProductQuoteSubmit = function () {\r\n var displayScreen = $('[data-screen=\"product-pre-quote\"]');\r\n var hideScreen = $('.screen.active');\r\n if (!displayScreen.hasClass('active')) {\r\n $this.displayScreen(hideScreen, displayScreen);\r\n }\r\n var currentProductPreHref = $('#btnProductPreQuote').attr('href');\r\n if (typeof currentProductPreHref != \"undefined\") {\r\n if (currentProductPreHref.indexOf(\"__RequestVerificationToken\") < 1) {\r\n var href = currentProductPreHref + \"&__RequestVerificationToken=\" + $('input[name=\"__RequestVerificationToken\"]')[0].value;\r\n $('#btnProductPreQuote').attr('href', href);\r\n }\r\n }\n //To add Policy Message Screen\n $('#policy-message-container').find('.nopolicyquote').filter(function () {\r\n var href = $(this).attr('href') + \"&__RequestVerificationToken=\" + $('input[name=\"__RequestVerificationToken\"]')[0].value;\r\n $(this).attr(\"href\", href);\n });\n var policymessageContainer = $('#policy-message-container').html();\n $('#policy-message-container').remove();\n if (!$('.screens-wrapper').find('.product-policy-message').length > 0) {\n $('.screens-wrapper').append(policymessageContainer);\n $('#policy-message-container').remove();\r\n };\n //Policy Option Selection Validation\r\n component.find('[data-screen=\"product-pre-quote\"] #policy-options-button').on({\r\n click: function (event) {\r\n var valid = $this.validatePolicyOption(event);\r\n\r\n if (valid) {\r\n $this.policyOptionSubmit(event);\r\n }\r\n\r\n event.preventDefault();\r\n }\r\n });\r\n\r\n component.find('[data-screen=\"product-pre-quote\"] [name=\"productSelection\"]').on({\r\n change: function (event) {\r\n $this.validatePolicyOption(event);\r\n }\r\n });\n $this.initializeDropdownPolicyMessageScreen();\n\r\n }\r\n window.onProductQuoteSuccess = function () {\r\n var hrefText = this.url;\n var zipcode = $('#zipcode').val();\n njmClientClickTracking.quoteLinkClicked(\"Zip Code Link Click Success\", zipcode, hrefText);\r\n var displayScreen = $('[data-screen=\"product-qualification-merged\"]');\r\n var currentScreen = $('[data-screen=\"product-quote\"]');\r\n $('#zipSubmit').removeAttr('disabled');\r\n if ($('.comp-dropdown-quote').length > 0) {\r\n $this.initializeDropdownPreQualScreen();\r\n }\r\n var currentHref = $('#btnProdMsgSubmit').attr('href');\r\n if (typeof currentHref != \"undefined\") {\r\n if (currentHref.indexOf(\"__RequestVerificationToken\") < 1) {\r\n var href = currentHref + \"&__RequestVerificationToken=\" + $('input[name=\"__RequestVerificationToken\"]')[0].value;\r\n $('#btnProdMsgSubmit').attr('href', href);\r\n }\r\n }\r\n }\r\n window.onPreProductQuoteSuccess = function () {\r\n var displayScreen = $('[data-screen=\"product-quote\"]');\r\n var currentScreen = $('[data-screen=\"product-pre-quote\"]');\r\n $('#zipCodeLabel').removeClass('haserror');\r\n $this.slideLeft(currentScreen, displayScreen);\r\n\r\n if ($('.comp-dropdown-quote').length > 0) {\r\n $this.initializeDropdownQuoteScreen();\r\n }\r\n\t\t\t\t\r\n\t\t\t\tif (typeof(CallTrk) === \"object\") {\r\n\t\t\t\t\tCallTrk.swap();\r\n\t\t\t\t}\r\n }\r\n window.onProductQuoteQualificationSuccess = function () {\r\n var displayScreen = $('[data-screen=\"product-qualification-merged\"]');\r\n var currentScreen = $('[data-screen=\"product-qualification\"]');\r\n $this.slideLeft(currentScreen, displayScreen);\r\n }\r\n window.onProductQuoteError = function (data) {\r\n var hrefText = this.url;\r\n var zipcode = $('#zipcode').val();\r\n njmClientClickTracking.quoteLinkClicked(\"Zip Code Link Click Failed\", zipcode, hrefText);\r\n var hidZipErrorMsg = $('#hidGenericErrorMessage');\r\n var hidZipInvalidMsg = $('#hidZipCodeErrorMessage');\r\n var zipSubmitBtn = $('#zipSubmit'),\r\n zipLabel = $('#zipCodeLabel').addClass('haserror');\r\n if (data && data.status === 400) {\r\n $('#zipErrorMsg').text(hidZipInvalidMsg.val());\r\n }\r\n else {\r\n $('#zipErrorMsg').text(hidZipErrorMsg.val());\r\n }\r\n $this.processing(zipSubmitBtn, false);\r\n }\r\n window.onValidateZipCode = function (data, event) {\n var hrefText = this.url;\r\n var zipcode = $('#zipcode'),\r\n errorMsg = $('#zipcode').attr('data-val-required'),\r\n zipSubmitBtn = $('#zipSubmit'),\r\n zipRegEx = /\\d{5}/,\r\n error = zipcode.siblings('label').find('.tooltip'),\r\n valid = zipRegEx.test(zipcode.val());\r\n njmClientClickTracking.quoteLinkClicked(\"Zip Code Link Clicked\", zipcode.val(), hrefText);\r\n if (valid) {\r\n error.parent().addClass('validated').removeClass('haserror');\r\n if (zipSubmitBtn.hasClass('button')) {\r\n zipSubmitBtn.attr('disabled', 'disabled');\r\n }\r\n $this.processing(zipSubmitBtn, true);\r\n } else {\r\n error.parent().addClass('validated haserror');\r\n $('#zipErrorMsg').text(errorMsg);\r\n //zipSubmitBtn.removeAttr('disabled');\r\n $this.processing(zipSubmitBtn, false);\r\n }\r\n return valid;\r\n }\n $this.initializeDropdownPolicyMessageScreen();\r\n\r\n },\n\r\n initializeDropdownPreQualScreen: function () {\r\n var $this = this;\r\n var component = $('.comp-dropdown-quote');\r\n\r\n component.find('.back').on({\r\n click: function (event) {\r\n $this.backClick(event);\r\n }\r\n });\r\n component.find('#zipSubmit-Container').on({\r\n keydown: function () {\r\n var key = event.which;\r\n\r\n if (key === 13) {\r\n component.find('#zipSubmit').trigger('click');\r\n }\r\n }\r\n });\r\n component.find('[data-screen=\"product-qualification\"] #prequal-button').on({\r\n click: function (event) {\n var $thisObject = $(this);//cache the $(this) selector since it will be used more than once\r\n var hrefText = this.href;\n var productLabel = $thisObject.text();\n njmClientClickTracking.quoteLinkClicked(\"Quote Link Clicked\", productLabel, hrefText);\r\n $this.validatePreQual(event);\r\n }\r\n });\r\n component.find('[data-screen=\"product-qualification\"] input[type=\"radio\"]').on({\r\n change: function () {\r\n $this.preQualRadioChecked(event);\r\n if ($(this).parents('.validated').length > 0) {\r\n $this.validatePreQual(event);\r\n }\r\n }\r\n });\n \r\n },\r\n initializeDropdownQuoteScreen: function () {\r\n var component = $('.comp-dropdown-quote');\r\n var $this = this;\r\n component.find('.back').on({\r\n click: function (event) {\r\n $this.backClick(event);\r\n }\r\n });\r\n\r\n component.find('[data-screen=\"product-quote\"] #zipcode').on({\r\n keypress: function () {\r\n var $thisComponent = $(event.target).parents('.comp-dropdown-quote'),\r\n quoteScreen = $thisComponent.find('[data-screen=\"product-quote\"]');\r\n\r\n if (event.which === 13) { //enter key\r\n quoteScreen.find('#zipSubmit').trigger('click');\r\n }\r\n },\r\n\r\n keyup: function () {\r\n if ($(this).siblings('label').hasClass('validated')) {\r\n $this.validateZip(event);\r\n }\r\n },\r\n\r\n blur: function () {\r\n $this.hideErrors(event);\r\n },\r\n\r\n focus: function () {\r\n if ($(this).siblings('label').hasClass('validated')) {\r\n $this.validateZip(event);\r\n }\r\n }\r\n });\n\r\n },\n initializeDropdownPolicyMessageScreen: function () {\r\n var component = $('.comp-dropdown-quote');\r\n var $this = this;\n component.find('[data-screen=\"product-message-quote\"] .back').on({\r\n click: function (event) {\r\n $this.backClick(event);\r\n }\r\n });\r\n \r\n },\r\n dropdownClick: function (event) {\r\n if (!$(event.target).parents('.comp-dropdown-quote').hasClass('loading')) {\r\n\r\n if (!this.dropdownVisible) {\r\n this.showDropdown(event);\r\n } else {\r\n this.hideDropdown(event);\r\n }\r\n }\r\n },\r\n AddAntiForgeryToken: function (event) {\r\n event.target.href = event.target.href + \"&__RequestVerificationToken=\" + $('input[name=\"__RequestVerificationToken\"]')[0].value;\r\n },\r\n slideLeft: function (hideScreen, displayScreen) {\r\n\r\n\t\t if (!$('.comp-dropdown-quote').hasClass('sliding')) {\r\n\r\n\t\t\t $('.comp-dropdown-quote').addClass('sliding');\r\n\r\n\t\t\t displayScreen.addClass('right').removeClass('slide hidden active');\r\n\r\n\t\t\t window.setTimeout(function () {\r\n\t\t\t\t hideScreen\r\n\t\t\t\t\t .removeClass('active hidden')\r\n\t\t\t\t\t .addClass('slide left');\r\n\r\n\t\t\t\t displayScreen\r\n\t\t\t\t\t .removeClass('right left hidden')\r\n\t\t\t\t\t .addClass('slide active');\r\n\t\t\t }, 50);\r\n\r\n\t\t\t window.setTimeout(function () {\r\n\t\t\t\t hideScreen.addClass('hidden').removeClass('slide left right active');\r\n\t\t\t\t $('.comp-dropdown-quote').removeClass('sliding');\r\n\r\n\t\t\t\t if ($('.comp-dropdown-quote').parents('.comp-hero-sticky-quote').length) {\r\n\t\t\t\t\t njm.views.stickyQuote.prototype.setFocusableEls(); \r\n\t\t\t\t }\r\n\t\t\t }, 500);\r\n\t\t }\r\n\t },\r\n\r\n\t slideRight: function (hideScreen, displayScreen) {\r\n\r\n\t\t if (!$('.comp-dropdown-quote').hasClass('sliding')) {\r\n\r\n\t\t\t $('.comp-dropdown-quote').addClass('sliding');\r\n\r\n\t\t\t displayScreen.addClass('left').removeClass('slide hidden active');;\r\n\r\n\t\t\t window.setTimeout(function () {\r\n\t\t\t\t hideScreen\r\n\t\t\t\t\t .removeClass('active hidden')\r\n\t\t\t\t\t .addClass('slide right');\r\n\r\n\t\t\t\t displayScreen\r\n\t\t\t\t\t .removeClass('right left hidden')\r\n\t\t\t\t\t .addClass('slide active');\r\n\t\t\t }, 50);\r\n\r\n\t\t\t window.setTimeout(function () {\r\n\r\n\t\t\t\t hideScreen.addClass('hidden').removeClass('slide left right active');\r\n\r\n\t\t\t\t $('.comp-dropdown-quote').removeClass('sliding');\r\n\r\n\t\t\t\t if ($('.comp-dropdown-quote').parents('.comp-hero-sticky-quote').length) {\r\n\t\t\t\t\t njm.views.stickyQuote.prototype.setFocusableEls(); \r\n\t\t\t\t }\r\n\t\t\t }, 500);\r\n\t\t }\r\n\t },\r\n\t\t\r\n showDropdown: function (event) {\r\n var $thisComponent = $(event.target).parents('.comp-dropdown-quote');\r\n\r\n $(event.target).parent().find('ul').slideDown();\r\n $(event.target).parents('.custom-select').addClass('open').children('.icon-arrow').addClass('open');\r\n this.dropdownVisible = true;\r\n this.setFocusableEls(event);\r\n\r\n $thisComponent.find('.custom-select ul').slideDown();\r\n $thisComponent.find('.custom-select .icon-arrow').addClass('open');\r\n $thisComponent.find('.selected').attr('aria-expanded', 'true');\r\n this.dropdownVisibleropdown = true;\r\n this.setFocusableEls(event);\r\n },\r\n hideDropdown: function (event) {\r\n var $this = this,\r\n $thisComponent;\r\n\r\n if ($(event.target).parents('.comp-dropdown-quote').length === 1) {\r\n $thisComponent = $(event.target).parents('.comp-dropdown-quote');\r\n } else {\r\n $thisComponent = $('.comp-dropdown-quote');\r\n }\r\n\r\n $thisComponent.each(function () {\r\n var $thisElement = $(this);\r\n\r\n $(this).find('.custom-select ul').slideUp(function () {\r\n $thisElement.find('.custom-select').removeClass('open');\r\n $thisElement.find('.custom-select .icon-arrow.open').removeClass('open');\r\n $thisElement.find('.selected').attr('aria-expanded', 'false');\r\n $this.dropdownVisible = false;\r\n $this.clearFocusableEls();\r\n });\r\n });\r\n\r\n },\r\n dropdownSelectionClick: function (event) {\r\n var $this = this,\r\n $thisComponent = $(event.target).parents('.comp-dropdown-quote'),\r\n selectionItem = $(event.target).closest('a.item'),\r\n\t\t\t\tselectionItemText = selectionItem.text(),\r\n selectionIconClass = selectionItem.children('[class^=icon]').attr('class'),\r\n customSelect = $(event.target).parents('.custom-select');\r\n\r\n event.preventDefault();\r\n\r\n customSelect.find('.selected').text(selectionItemText);\r\n customSelect.children('[class^=icon]').eq(0).attr('class', selectionIconClass);\r\n $this.hideDropdown(event);\r\n customSelect.focus();\r\n $this.clearForms(event);\r\n },\r\n setFocusableEls: function (event) {\r\n\r\n this.focusableEls = $(event.target).parents('.comp-dropdown-quote').find('.custom-select ul li a');\r\n this.firstFocusableEl = this.focusableEls.eq(0);\r\n this.lastFocusableEl = this.focusableEls.eq(this.focusableEls.length - 1);\r\n this.focusedEl = false;\r\n },\r\n clearForms: function (event) {\r\n var $thisComponent = $(event.target).parents('.comp-dropdown-quote'),\r\n formElements = $thisComponent.find('input');\r\n\r\n formElements.each(function () {\r\n\r\n if ($(this).attr('type') === 'text') {\r\n $(this).val('');\r\n }\r\n\r\n if ($(this).attr('type') === 'radio') {\r\n $(this).prop('checked', false);\r\n }\r\n });\r\n\r\n $thisComponent.find('.validated').removeClass('validated haserror');\r\n\r\n $thisComponent.find('#prequal-button').removeAttr('href target');\r\n\r\n },\r\n clearFocusableEls: function () {\r\n this.focusableEls = false;\r\n this.firstFocusableEl = false;\r\n this.lastFocusableEl = false;\r\n this.focusedEl = false;\r\n },\r\n displayScreen: function (hideScreen, displayScreen) {\r\n\r\n hideScreen.removeClass('slide active').addClass('hidden');\r\n displayScreen.removeClass('right left slide hidden').addClass('active');\r\n\r\n if ($('.comp-dropdown-quote').parents('.comp-hero-sticky-quote').length) {\r\n njm.views.stickyQuote.prototype.setFocusableEls(); \r\n }\r\n\r\n },\r\n backClick: function (event) {\r\n event.preventDefault();\r\n\r\n var $thisComponent = $(event.target).parents('.comp-dropdown-quote'),\r\n currentScreen = $thisComponent.find('.screen.active'),\r\n href = $thisComponent.find('.screen.active .back').attr('href').slice(1),\r\n displayScreen = $thisComponent.find('[data-screen=\"' + href + '\"]');\r\n //productName = $thisComponent.find('.screen.active').attr('data-screen-product');\r\n\r\n\r\n if (!$thisComponent.hasClass('loading')) {\r\n this.slideRight(currentScreen, displayScreen);\r\n }\r\n },\r\n \r\n hideErrors: function (event) {\r\n var $thisComponent = $(event.target).parents('.comp-dropdown-quote');\r\n\r\n $thisComponent.find('.haserror').removeClass('haserror');\r\n },\r\n validatePreQual: function (event) {\r\n var $thisComponent = $(event.target).parents('.comp-dropdown-quote'),\r\n numEmployees = $thisComponent.find('#numEmployees_radio'),\r\n numEmployeesOptions = $thisComponent.find('[name=\"numEmployees\"]'),\r\n numEmployeesChecked = numEmployeesOptions.closest(':checked'),\r\n numVehicles = $thisComponent.find('#numVehicles_radio'),\r\n numVehiclesOptions = $thisComponent.find('[name=\"numVehicles\"]'),\r\n numVehiclesChecked = numVehiclesOptions.closest(':checked'),\r\n displayEmpOptions = $thisComponent.find('[data-screen=\"product-qualification\"]').attr('data-display-numEmployees'),\r\n displayVehicleOptions = $thisComponent.find('[data-screen=\"product-qualification\"]').attr('data-display-numVehicles');\r\n console.log(\"empOption:\" + displayEmpOptions + \" vehicleOPtions:\" + displayVehicleOptions)\r\n\r\n if (displayEmpOptions === \"True\" && displayVehicleOptions === \"True\") {\r\n console.log('numEmployess and numVehicles validated');\r\n\r\n if (numEmployeesChecked.length != 1) {\r\n numEmployees.addClass('haserror validated');\r\n } else {\r\n numEmployees.removeClass('haserror');\r\n }\r\n\r\n if (numVehiclesChecked.length != 1) {\r\n numVehicles.addClass('haserror validated');\r\n } else {\r\n numVehicles.removeClass('haserror');\r\n }\r\n\r\n } else if (displayEmpOptions === \"True\") {\r\n console.log('numEmployess only validated');\r\n\r\n if (numEmployeesChecked.length != 1) {\r\n numEmployees.addClass('haserror validated');\r\n } else {\r\n numEmployees.removeClass('haserror');\r\n }\r\n } else if (displayVehicleOptions === \"True\") {\r\n console.log('numVehicle only validated');\r\n {\r\n if (numEmployeesChecked.length != 1) {\r\n numEmployees.addClass('haserror validated');\r\n } else {\r\n numEmployees.removeClass('haserror');\r\n }\r\n }\r\n }\r\n if (numEmployees.hasClass('haserror') || numVehicles.hasClass('haserror')) {\r\n prEqualButton.attr('href', '#');\r\n event.preventDefault();\r\n }\r\n\r\n console.log('validatePreQual');\r\n },\r\n handleKeydown: function (event) {\r\n var key = event.which;\r\n var $this = this;\r\n\r\n if (key === 13 || key === 32) { //enter or \r\n event.preventDefault();\r\n\r\n if ($(event.target).is('.selected, .icon-arrow')) {\r\n $this.dropdownClick(event);\r\n } else if ($(event.target).is('a')) {\r\n $(event.target).trigger('click');\r\n }\r\n }\r\n\r\n if (key === 27) { //escape\r\n $this.hideDropdown(event);\r\n $('.comp-agent-search .selected').focus();\r\n }\r\n\r\n if (key === 38) { //up arrow\r\n event.preventDefault();\r\n\r\n if ($(event.target).is('.selected, .icon-arrow')) {\r\n\r\n if (!$this.dropdownVisible) {\r\n $this.showDropdown(event);\r\n }\r\n\r\n } else if ($(event.target).is('a')) {\r\n $this.focusPrevious();\r\n }\r\n }\r\n\r\n if (key === 40) { //down arrow\r\n event.preventDefault();\r\n\r\n if ($(event.target).is('.selected, .icon-arrow')) {\r\n\r\n if (!$this.dropdownVisible) {\r\n $this.showDropdown(event);\r\n }\r\n }\r\n\r\n $this.focusNext();\r\n\r\n }\r\n\r\n if (key === 9) { //tab\r\n\r\n if ($(event.target).is('.selected, .icon-arrow')) {\r\n\r\n if ($this.dropdownVisible) {\r\n\r\n if (event.shiftKey) {\r\n event.preventDefault();\r\n $this.focusPrevious();\r\n } else {\r\n event.preventDefault();\r\n $this.focusNext();\r\n }\r\n }\r\n\r\n } else if ($(event.target).is('a')) {\r\n\r\n if (event.shiftKey) {\r\n event.preventDefault();\r\n $this.focusPrevious();\r\n } else {\r\n event.preventDefault();\r\n $this.focusNext();\r\n }\r\n\r\n }\r\n\r\n }\r\n },\r\n\t\t\r\n\t\tfocusNext: function() {\r\n\t\t\tif (!this.focusedEl) {\r\n\t\t\t\tthis.firstFocusableEl.focus();\r\n\t\t\t\tthis.focusedEl = 1;\r\n\t\t\t} else if (this.focusedEl === this.focusableEls.length) {\r\n\t\t\t\tthis.firstFocusableEl.focus();\r\n\t\t\t\tthis.focusedEl = 1;\r\n\t\t\t} else {\r\n\t\t\t\tthis.focusableEls[this.focusedEl].focus();\r\n\t\t\t\tthis.focusedEl++;\r\n\t\t\t}\r\n\t\t},\r\n\t\t\r\n\t\tfocusPrevious: function() {\r\n\t\t\tif (this.focusedEl === 1 || !this.focusedEl) {\r\n\t\t\t\tthis.lastFocusableEl.focus();\r\n\t\t\t\tthis.focusedEl = this.focusableEls.length;\r\n\t\t\t} else {\r\n\t\t\t\tthis.focusedEl--;\r\n\t\t\t\tthis.focusableEls[this.focusedEl - 1].focus();\r\n\t\t\t}\r\n\t\t},\r\n\t\t\r\n validateZip: function (event) {\r\n var $thisComponent = $(event.target).parents('.comp-dropdown-quote'),\r\n zipcode = $thisComponent.find('#zipcode'),\r\n zipRegEx = /\\d{5}/,\r\n error = zipcode.siblings('label').find('.tooltip'),\r\n valid = zipRegEx.test(zipcode.val()),\n errMsg = $(\"#zipcode\").data(\"val-required\");\r\n\r\n if (valid) {\r\n error.parent().addClass('validated').removeClass('haserror');\r\n } else {\r\n error.parent().addClass('validated haserror');\r\n }\r\n\r\n if (zipcode.val().length < 5) {\r\n error.text(errMsg);\r\n } else if (zipcode.val().length === 5) {\r\n error.text(errMsg);\r\n }\r\n\r\n return valid;\r\n },\r\n preQualRadioChecked: function (event) {\r\n var $this = this,\r\n numEmployees = $('[name=\"numEmployees\"]'),\r\n numEmployeesChecked = numEmployees.closest(':checked'),\r\n numVehicles = $('[name=\"numVehicles\"]'),\r\n numVehiclesChecked = numVehicles.closest(':checked'),\r\n submitBtn = $('#prequal-button'),\r\n ajaxBtn = $('#btnProdMsgSubmit'),\r\n arrow = '',\r\n businessRuleHidden = $('#quotebusinessrule').val(),\r\n quoteAppUrl = $('#quoteAppUrl').val(),\r\n formUrl = $('#quoteformUrl').val(),\r\n agentUrl = $('#quoteAgentUrl').val(),\r\n hidContinueText = $('#hidContinueBtnText').val(),\r\n hidOnlineQuoteText = $('#hidOnlineBtnText').val(),\r\n hidQuoteBtnText = $('#hidQuoteBtnText').val(),\r\n hidAgentBtnText = $('#hidAgentBtnText').val(),\r\n hidQuoteshortform = $('#quote-action-shortform').val(),\r\n hidQuoteAgentsearch = $('#quote-action-agentsearch').val(),\r\n hidQuoteAppetiteMsg = $('#quote-action-appetiteMsg').val(),\r\n displayEmpOptions = $('#product-qualification').attr('data-display-numEmployees'),\r\n displayVehicleOptions = $('#product-qualification').attr('data-display-numVehicles'),\r\n hidQuoteQbapp = $('#quote-action-qbapp').val();\r\n console.log(\"employee:\" + numEmployeesChecked.val() + \" vehicle:\" + numVehiclesChecked.val());\r\n console.log(\"quoteAppUrl:\" + quoteAppUrl);\r\n console.log(\"agent url:\" + agentUrl);\r\n var result;\r\n var isProcessing = false;\r\n var businessRules = [];\r\n var businessRulesArr = JSON.parse(businessRuleHidden);\r\n console.log(\"businessrule:\" + businessRulesArr);\r\n\r\n if (displayEmpOptions === \"True\" && displayVehicleOptions === \"True\") {\r\n if (numEmployeesChecked.length + numVehiclesChecked.length === 2) {\r\n\r\n result = businessRulesArr.find(function (x) {\r\n return x.Employee === numEmployeesChecked.val() && x.Vehicle === numVehiclesChecked.val();\r\n });\r\n isProcessing = true;\r\n console.log(result);\r\n\r\n }\r\n }\r\n else if (displayEmpOptions === \"True\") {\r\n if (typeof numEmployeesChecked.val() !== \"undefined\" && numEmployeesChecked.val()) {\r\n result = businessRulesArr.find(function (x) {\r\n return x.Employee === numEmployeesChecked.val() && x.Vehicle === \"\";\r\n });\r\n isProcessing = true;\r\n console.log(result);\r\n\r\n }\r\n }\r\n else if (displayVehicleOptions === \"True\") {\r\n if (typeof numVehiclesChecked.val() !== \"undefined\" && numVehiclesChecked.val()) {\r\n result = businessRulesArr.find(function (x) {\r\n return x.Vehicle === numVehiclesChecked.val() && x.Employee === \"\";\r\n });\r\n isProcessing = true;\r\n console.log(result);\r\n }\r\n }\r\n submitBtn.show();\r\n ajaxBtn.hide();\r\n if (isProcessing) {\r\n if (typeof result !== \"undefined\" && typeof result.Action !== \"undefined\" && result.Action && result) {\r\n\r\n if (result.Action === hidQuoteshortform) {\r\n $this.processing(submitBtn, true);\r\n window.setTimeout(function () {\r\n $this.processing(submitBtn, false);\r\n submitBtn.html(hidQuoteBtnText + arrow);\r\n formUrl = formUrl + \"&\"\r\n if (typeof $('[name=\"numEmployees\"]').closest(':checked')[0] != \"undefined\" && typeof $('[name=\"numVehicles\"]').closest(':checked')[0] != \"undefined\") {\r\n formUrl = formUrl + encodeURIComponent(\"number of employees\") + \"=\" + encodeURIComponent($('[name=\"numEmployees\"]').closest(':checked')[0].value) + \"&\" + encodeURIComponent(\"number of vehicles\") + \"=\" + encodeURIComponent($('[name=\"numVehicles\"]').closest(':checked')[0].value);\r\n }\r\n else if (typeof $('[name=\"numVehicles\"]').closest(':checked')[0] != \"undefined\") {\r\n formUrl = formUrl + encodeURIComponent(\"number of vehicles\") + \"=\" + encodeURIComponent($('[name=\"numVehicles\"]').closest(':checked')[0].value);\r\n }\r\n else if (typeof $('[name=\"numEmployees\"]').closest(':checked')[0] != \"undefined\") {\r\n formUrl = formUrl + encodeURIComponent(\"number of employees\") + \"=\" + encodeURIComponent($('[name=\"numEmployees\"]').closest(':checked')[0].value);\r\n }\r\n\r\n submitBtn.attr('href', formUrl).removeAttr('target');\r\n }, 400);\r\n }\r\n else if (result.Action === hidQuoteAgentsearch) {\r\n $this.processing(submitBtn, true);\r\n window.setTimeout(function () {\r\n $this.processing(submitBtn, false);\r\n submitBtn.html(hidAgentBtnText + arrow);\r\n submitBtn.attr('href', agentUrl).removeAttr('target');\r\n }, 400);\r\n }\r\n else if (result.Action === hidQuoteQbapp) {\r\n $this.processing(submitBtn, true);\r\n window.setTimeout(function () {\r\n $this.processing(submitBtn, false);\r\n submitBtn.html(hidOnlineQuoteText + arrow);\r\n submitBtn.attr('href', quoteAppUrl).attr('target', '_blank');\r\n }, 400);\r\n }\r\n else {\r\n $this.processing(submitBtn, true);\r\n window.setTimeout(function () {\r\n $this.processing(submitBtn, false);\r\n submitBtn.text(hidContinueText);\r\n submitBtn.attr('href', '#').removeAttr('target');\r\n submitBtn.hide();\r\n ajaxBtn.show();\r\n }, 400);\r\n }\r\n\r\n }\r\n else {\r\n $this.processing(submitBtn, true);\r\n window.setTimeout(function () {\r\n $this.processing(submitBtn, false);\r\n submitBtn.text(hidContinueText);\r\n submitBtn.attr('href', '#').removeAttr('target');\r\n submitBtn.hide();\r\n ajaxBtn.show();\r\n }, 400);\r\n }\r\n }\r\n else {\r\n console.log(\"valid options are not selected yet.\");\r\n }\r\n },\n \r\n processing: function (element, boolean) {\r\n var loadingHtml = '
 ',\r\n component = element.parents('.comp-dropdown-quote'),\r\n itemOverlay = $('
').hide(),\r\n screenOverlay = $('
'),\r\n elementContents = element.contents(),\r\n formElements = element.parents('.screen').find('input, .button'),\r\n temp = $(''),\r\n movedContent;\r\n\r\n //console.log('Processing ran.');\r\n\r\n if (boolean) {\r\n //console.log(\"Processing being applied.\");\r\n component.addClass('loading');\r\n component.prepend(screenOverlay);\r\n formElements.each(function () {\r\n $(this).attr('disabled', 'disabled');\r\n });\r\n\r\n if (element.is('input')) {\r\n //console.log('Loading on input');\r\n\r\n this.processing(element.parents('.button'), true);\r\n\r\n } else if (element.hasClass('button')) {\r\n //console.log(\"Loading on button.\")\r\n\r\n element.append(temp);\r\n temp.append(elementContents)\r\n element.append(loadingHtml);\r\n element.attr('disabled', 'disabled');\r\n\r\n }\r\n } else {\r\n //console.log('Processing being removed.')\r\n\r\n if (element.is('input') || element.is('#zipSubmit-Container')) {\r\n component.find('.overlay').fadeOut(500, function () {\r\n this.remove();\r\n element.removeClass('loading');\r\n component.removeClass('loading');\r\n });\r\n } else {\r\n component.find('.overlay').remove();\r\n element.removeClass('loading');\r\n component.removeClass('loading');\r\n }\r\n\r\n if (element.is('input')) {\r\n this.processing(element.parents('.button'), false);\r\n //console.log('Input processing removed. Parent button html: ' + element.parents('.button').html());\r\n\r\n } else if (element.hasClass('button')) {\r\n //console.log('Button processing removed.');\r\n\r\n movedContent = element.find('span.processing').contents();\r\n element.prepend(movedContent);\r\n element.find('span.processing').remove();\r\n element.find('.lds-spinner').fadeOut().remove();\r\n element.find('.spacer').remove();\r\n }\r\n\r\n //element.removeClass('loading');\r\n\r\n formElements.each(function () {\r\n $(this).removeAttr('disabled');\r\n });\r\n }\r\n\r\n },\n //Policy Option Radio Button\n validatePolicyOption: function (event) {\n var $thisComponent = $(event.target).parents('.comp-dropdown-quote'),\r\n productSelection = $thisComponent.find('#productSelection_radio'),\r\n productSelectionOptions = $thisComponent.find('[name=\"productSelection\"]'),\r\n productSelectionChecked = productSelectionOptions.closest(':checked'),\n poButton = $thisComponent.find('#policy-options-button');\n if (productSelectionChecked.length != 1) {\r\n productSelection.addClass('haserror validated');\r\n }\n else {\r\n productSelection.removeClass('haserror');\n return true;\r\n }\n if (productSelection.hasClass('haserror')) {\r\n poButton.attr('href', '#');\r\n event.preventDefault();\n return false;\r\n }\r\n },\n policyOptionSubmit: function (event) {\r\n var $thisComponent = $(event.target).parents('.comp-dropdown-quote'),\r\n productSelectionOptions = $thisComponent.find('[name=\"productSelection\"]'),\r\n productSelectionChecked = productSelectionOptions.closest(':checked'),\r\n productSelectionCheckedId = productSelectionChecked[0].id,\r\n currentScreen = $(event.target).parents('.screen.active'),\r\n displayScreen = $thisComponent.find('[data-screen-for=\"' + productSelectionCheckedId + '\"]');\r\n\r\n if (productSelectionCheckedId) {\r\n this.slideLeft(currentScreen, displayScreen);\r\n }\r\n\r\n event.preventDefault();\r\n },\n\r\n });\r\n})(jQuery, njm);\r\n","(function ($, njm) {\r\n 'use strict';\r\n\r\n njm.views.stickyQuote = Backbone.View.extend({\r\n\t\t\t\r\n\t\t\tinitialize: function() {\r\n\t\t\t\tvar $this = this;\r\n\t\t\t\t\r\n this.component = $('.comp-hero-sticky-quote');\r\n\r\n\t\t\t\tthis.visible = false;\r\n\r\n\t\t\t\tthis.expanded = false;\r\n\t\t\t\t\r\n\t\t\t\tthis.focusableEls = null;\r\n\t\t\t\t\r\n\t\t\t\tthis.firstFocusableEl = null;\r\n\t\t\t\t\r\n\t\t\t\tthis.lastFocusableEl = null;\r\n\t\t\t\t\r\n\t\t\t\tthis.activeElement = null;\r\n\r\n\t\t\t\t$(document).on({\r\n\t\t\t\t\tclick: function(event) {\r\n\t\t\t\t\t\t$this.handleClick(event);\r\n\t\t\t\t\t}\r\n\t\t\t\t});\r\n\r\n\t\t\t\t$('.comp-hero-sticky-quote > .container > .button').on({\r\n keydown: function (event) {\r\n\t\t\t\t\t\t$this.handleKeypress(event);\r\n\t\t\t\t\t}\r\n\t\t\t\t});\r\n\r\n\t\t\t\twindow.onscroll = function(){\r\n\t\t\t\t\t$this.handleScroll();\r\n\t\t\t\t}\r\n\t\t\t\t\r\n\t\t\t\tthis.handleScroll();\r\n\t\t\t},\r\n\t\t\r\n\t\t\toffsetHeight: function() {\r\n\t\t\t\treturn $('.comp-inner-banner-quote').height() + $('.comp-inner-banner-quote').offset().top;\r\n\t\t\t},\r\n\t\t\t\r\n\t\t\tdisplayBtn: function() {\r\n\t\t\t\t//console.log('displayBtn()');\r\n\t\t\t\tthis.component.addClass('active');\r\n\t\t\t\tthis.component.find('> .container > .button').attr('tabindex', \"0\");\r\n\t\t\t},\r\n\r\n\t\t\thideBtn: function() {\r\n\t\t\t\t//console.log('hideBtn()');\r\n\t\t\t\tthis.component.removeClass('active');\r\n\t\t\t\tthis.component.find('> .container > .button').attr('tabindex', \"-1\");\r\n\t\t\t},\r\n\r\n\t\t\thandleClick: function(event) {\r\n\t\t\t\t//console.log('handleClick()');\r\n\t\t\t\t\r\n\t\t\t\tif ($(event.target).closest('.comp-hero-sticky-quote > .container > .button').length === 1) {\r\n\t\t\t\t\tif (this.expanded) {\r\n\t\t\t\t\t\tthis.collapse(event);\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\tthis.expand(event);\r\n\t\t\t\t\t}\r\n\t\t\t\t} else if ($(event.target).closest('.comp-dropdown-quote').length !== 1) {\r\n\t\t\t\t\tif (this.expanded) {\r\n\t\t\t\t\t\tthis.collapse(event);\r\n\t\t\t\t\t}\r\n\t\t\t\t} \r\n\r\n\t\t\t},\r\n\r\n\t\t\thandleKeypress: function(event) {\r\n\t\t\t\t//console.log('handleKeypress()');\r\n\t\t\t\t\r\n\t\t\t\tvar key = event.which;\r\n\r\n\t\t\t\tif (key === 13 || key === 32) { //enter key\r\n\t\t\t\t\tthis.handleClick(event);\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif (event.which === 27) { //escape key\r\n\t\t\t\t\tthis.collapse(event);\r\n\t\t\t\t}\r\n\t\t\t},\r\n\t\t\t\r\n\t\t\thandleTab: function(event) {\r\n\t\t\t\t//console.log('handleTab()');\r\n\r\n\t\t\t\tif (event.currentTarget === this.firstFocusableEl) {\r\n\t\t\t\t\tif (this.focusableEls.length === 1 && event.which === 9) {\r\n\t\t\t\t\t\tevent.preventDefault();\r\n\t\t\t\t\t} else if(this.focusableEls.length > 1 && event.which === 9) {\r\n\t\t\t\t\t\tif (event.shiftKey) {\r\n\t\t\t\t\t\t\tthis.lastFocusableEl.focus();\r\n\t\t\t\t\t\t\tevent.preventDefault();\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif (event.currentTarget === this.lastFocusableEl) {\r\n\t\t\t\t\tif (this.focusableEls.length === 1 && event.which === 9) {\r\n\t\t\t\t\t\tevent.preventDefault();\r\n\t\t\t\t\t} else if(this.focusableEls.length > 1 && event.which === 9) {\r\n\t\t\t\t\t\tif (event.shiftKey) {\r\n\t\t\t\t\t\t\treturn true;\r\n\t\t\t\t\t\t} else {\r\n\t\t\t\t\t\t\tthis.firstFocusableEl.focus();\r\n\t\t\t\t\t\t\tevent.preventDefault();\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},\r\n\t\t\t\r\n\t\t\tsetFocusableEls: function() {\r\n\t\t\t\t//console.log('setFocusableEls()');\r\n\t\t\t\t\r\n\t\t\t\tvar $this = this;\r\n\t\t\t\t\r\n\t\t\t\t//this.clearFocusableEls();\r\n\t\t\t\t\r\n\t\t\t\tthis.focusableEls = $('.comp-hero-sticky-quote').find('> .container > .button, .comp-dropdown-quote .selected, .screen.active a[href], .screen.active area[href], .screen.active input:not([disabled]):not([type=hidden]), .screen.active select:not([disabled]), .screen.active textarea:not([disabled]), .screen.active button:not([disabled]), .screen.active [tabindex=\"0\"]');\r\n\t\t\t\tthis.firstFocusableEl = this.focusableEls[0];\r\n\t\t\t\tthis.lastFocusableEl = this.focusableEls[this.focusableEls.length - 1];\r\n\t\t\t\t\r\n\t\t\t\t//console.log($(this.firstFocusableEl));\r\n\t\t\t\t//console.log($(this.lastFocusableEl));\r\n\t\t\t\t\r\n\t\t\t\t$(this.firstFocusableEl).keydown(function(event){$this.handleTab(event)});\r\n\t\t\t\t$(this.lastFocusableEl).keydown(function(event){$this.handleTab(event)});\r\n\t\t\t\t\r\n\t\t\t\tthis.firstFocusableEl.focus();\r\n\t\t\t},\r\n\t\t\t\r\n\t\t\tclearFocusableEls: function() {\r\n\t\t\t\t//console.log('clearFocusableEls()');\r\n\t\t\t\t\r\n\t\t\t\tthis.focusableEls = null;\t\t\t\t\r\n\t\t\t\tthis.firstFocusableEl = null;\r\n\t\t\t\tthis.lastFocusableEl = null;\r\n\t\t\t},\r\n\r\n\t\t\texpand: function(event) {\r\n\t\t\t\t//console.log('expand()');\r\n\t\t\t\t\r\n\t\t\t\tvar quoteComponent = $('.comp-dropdown-quote'),\r\n\t\t\t\t\tquoteTarget = this.component.find('.container'),\r\n\t\t\t\t\tscrollBarWidth = window.innerWidth - $(document).width(),\r\n\t\t\t\t\tstickyComponentPadding = this.component.css('padding-right'),\r\n\t\t\t\t\tquoteContainer = $('.comp-inner-banner-quote .quote'),\r\n\t\t\t\t\tplaceholder;\r\n\t\t\t\t\r\n\t\t\t\tplaceholder = $('
');\r\n\t\t\t\tplaceholder.css('height',quoteComponent.css('height'));\r\n\t\t\t\tplaceholder.css({'display':'block','width':'100%'});\r\n\t\t\t\t\r\n\t\t\t\tstickyComponentPadding = stickyComponentPadding.slice(0,stickyComponentPadding.indexOf('px'));\r\n\t\t\t\tstickyComponentPadding = Number(stickyComponentPadding);\r\n\r\n\t\t\t\tevent.preventDefault();\r\n\r\n\t\t\t\tquoteComponent.hide();\r\n\t\t\t\tquoteTarget.append(quoteComponent);\r\n\t\t\t\tquoteContainer.append(placeholder);\r\n\t\t\t\tquoteComponent.slideDown();\r\n\r\n\t\t\t\tthis.expanded = true;\r\n\r\n\t\t\t\tthis.component.addClass('expanded').removeClass('collapsed');\r\n\t\t\t\t$('body').addClass('sticky-quote-expanded');\r\n\t\t\t\tif (scrollBarWidth) {\r\n\t\t\t\t\t$('body').css('padding-right', scrollBarWidth + 'px');\r\n\t\t\t\t}\r\n\t\t\t\tthis.component.css('padding-right', stickyComponentPadding + scrollBarWidth + 'px');\r\n\t\t\t\t\r\n\t\t\t\tthis.activeElement = $(document.activeElement);\r\n\t\t\t\tthis.setFocusableEls();\r\n\t\t\t},\r\n\r\n\t\t\tcollapse: function(event) {\r\n\t\t\t\t\r\n\t\t\t\t//console.log('collapse()');\r\n\r\n\t\t\t\tif (this.expanded) {\r\n\t\t\t\t\tvar quoteComponent = $('.comp-hero-sticky-quote .comp-dropdown-quote'),\r\n quoteTarget = $('.comp-inner-banner-quote .content .quote'),\r\n\t\t\t\t\t\tstickyComponentPadding = this.component.css('padding-right');\r\n\r\n\t\t\t\t\tstickyComponentPadding = stickyComponentPadding.slice(0,stickyComponentPadding.indexOf('px'));\r\n\t\t\t\t\tstickyComponentPadding = Number(stickyComponentPadding);\r\n\r\n\t\t\t\t\tevent.preventDefault();\r\n\r\n\t\t\t\t\tquoteComponent.slideUp(function(){\r\n\t\t\t\t\t\tquoteTarget.html('');\r\n\t\t\t\t\t\tquoteTarget.append(quoteComponent);\r\n\t\t\t\t\t\tquoteComponent.show();\r\n\t\t\t\t\t});\r\n\r\n\t\t\t\t\tthis.expanded = false;\r\n\r\n\t\t\t\t\tthis.component.addClass('collapsed').removeClass('expanded');\r\n\t\t\t\t\t$('body').removeClass('sticky-quote-expanded').css('padding-right','');\r\n\t\t\t\t\tthis.component.css('padding-right','');\r\n\t\t\t\t\t\r\n\t\t\t\t\tthis.clearFocusableEls();\r\n\t\t\t\t\tthis.activeElement.focus();\r\n\t\t\t\t\tthis.activeElement = null;\r\n\t\t\t\t}\r\n\r\n\t\t\t\t//console.log('compStickyQuote collapse()');\r\n\t\t\t},\r\n\r\n\t\t\thandleScroll: function() {\r\n\t\t\t\t//console.log('handleScroll()');\r\n\r\n\t\t\t\tif (window.pageYOffset > this.offsetHeight()) {\r\n\t\t\t\t\tthis.displayBtn();\r\n\t\t\t\t} else {\r\n\t\t\t\t\tthis.hideBtn();\r\n\t\t\t\t}\r\n\r\n\t\t\t}\r\n\t\t});\r\n\r\n})(jQuery, njm);","(function ($, njm) {\r\n 'use strict';\r\n\r\n njm.views.messageCenter = Backbone.View.extend({\r\n\r\n events: {\r\n \"click .message-article .item\": \"setActive\"\r\n },\r\n\r\n initialize: function () {\r\n window.messageCenterError = this.errorMsg;\r\n window.fnMessageCenterPost = this.fnMessageCenterPost;\n window.fnMessageArticlePost = this.fnMessageArticlePost;\n window.fnPagination = this.fnPagination;\r\n },\r\n\r\n setActive: function (event) {\r\n $('.comp-message-center .message-article').removeClass('active');\r\n $(event.target).closest('.message-article').addClass('active');\r\n },\r\n\r\n errorMsg: function () {\r\n var errorText = $('.comp-message-center #error-text').val(),\r\n errorEl = $('');\r\n errorEl.addClass('no-content').text(errorText);\r\n $('.comp-message-center #right-panel').html(errorEl);\r\n },\r\n\r\n fnMessageCenterPost: function (event) {\n if (event !== undefined) {\r\n var pageIndex = $(event.target).data(\"page-index\");\r\n var isArchived = $(event.target).data(\"isarchived\");\n if (pageIndex !== undefined && isArchived !== undefined) {\r\n $.ajax({\r\n url: \"/sitecore/api/comm/MessageCenter/MessageListingPaginationPost\",\r\n type: \"POST\",\r\n data: {\r\n userCategory: $(\"#userCategory\").val(),\r\n isArchive: isArchived,\r\n pageIndex: pageIndex,\r\n pageSize: $(\"#pageSize\").val(),\r\n searchText: $(\"#searchText\").val()\r\n },\r\n context: this,\r\n success: function (data) {\r\n $(\"#resultContainer\").empty();\r\n $(\"#resultContainer\").html(data);\r\n },\r\n failure: function (data) {\r\n // Take to error page\r\n var errorText = $('.comp-message-center #error-text').val(),\r\n errorEl = $('');\r\n errorEl.addClass('no-content').text(errorText);\r\n $('.comp-message-center #right-panel').html(errorEl);\r\n // alert(data);\r\n }\r\n });\n }\n else {\n var errorText = $('.comp-message-center #error-text').val(),\r\n errorEl = $('');\r\n errorEl.addClass('no-content').text(errorText);\r\n $('.comp-message-center #right-panel').html(errorEl);\r\n }\n }\n else {\n var errorText = $('.comp-message-center #error-text').val(),\r\n errorEl = $('');\r\n errorEl.addClass('no-content').text(errorText);\r\n $('.comp-message-center #right-panel').html(errorEl);\r\n }\r\n },\n fnMessageArticlePost: function (event) {\n if (event !== undefined) {\r\n var messageId = $(event.target).closest('.item').data(\"message-id\");\n if (messageId !== undefined) {\r\n $.ajax({\r\n url: \"/sitecore/api/comm/MessageCenter/MessageItemDetails\",\r\n type: \"POST\",\r\n data: {\r\n messageId: messageId\r\n },\r\n context: this,\r\n success: function (data) {\r\n $('.comp-message-center #right-panel').empty();\r\n $('.comp-message-center #right-panel').html(data);\r\n },\r\n failure: function (data) {\r\n var errorText = $('.comp-message-center #error-text').val(),\r\n errorEl = $('');\r\n errorEl.addClass('no-content').text(errorText);\r\n $('.comp-message-center #right-panel').html(errorEl);\r\n }\r\n });\n }\n else {\n var errorText = $('.comp-message-center #error-text').val(),\r\n errorEl = $('');\r\n errorEl.addClass('no-content').text(errorText);\r\n $('.comp-message-center #right-panel').html(errorEl);\r\n }\n }\n else\n {\n var errorText = $('.comp-message-center #error-text').val(),\r\n errorEl = $('');\r\n errorEl.addClass('no-content').text(errorText);\r\n $('.comp-message-center #right-panel').html(errorEl);\r\n }\r\n },\r\n\n fnPagination: function (event,mode) {\n if (event !== undefined) {\n if (event.keyCode === 13) {\n //If Page Input is less than 1 then default to 1. If page input greater than the total page count then default to totalpage count. \n var pageInput = $('.pageInput').val();\n var totalPageCount = $(\"#TotalPageCount\").val();\n var isArchived = $(\"#hid-isArchived\").val();\n if (pageInput !== undefined && totalPageCount !== undefined && isArchived !== undefined) { \n if (pageInput.length == 0 || parseInt(pageInput) < 1) {\n pageInput = 1\r\n }\n else if (parseInt(totalPageCount) < parseInt(pageInput)) {\n pageInput = totalPageCount\r\n }\n if (!mode) {\n $(\".inputPage\").attr('href', $(\".inputPage\").attr('href').replace(\"pageInput\", pageInput));\n document.getElementById('inputPage').click();\r\n }\n else {\n \n $('#pageIndexInput').data('page-index', pageInput);\n $('#pageIndexInput').data('isarchived', isArchived);\n $(\"#pageIndexInput\").click();\r\n }\n \n }\n }\n }\n else {\n var errorText = $('.comp-message-center #error-text').val(),\r\n errorEl = $('');\r\n errorEl.addClass('no-content').text(errorText);\r\n $('.comp-message-center #right-panel').html(errorEl);\r\n }\r\n }\r\n });\r\n})(jQuery, njm);\r\n","$(document).ready(function () {\r\n \"use strict\";\r\n\r\n var compPCCShopSearch = $('.comp-pcc-shop-search');\r\n\r\n if (compPCCShopSearch.length > 0) {\r\n pccShopSearch();\r\n }\r\n\r\n function pccShopSearch() {\r\n var dropdown = false;\r\n var focusableEls = $('.comp-pcc-shop-search .custom-select ul li a');\r\n var firstFocusableEl = focusableEls[0];\r\n var lastFocusableEl = focusableEls[focusableEls.length - 1];\r\n var focusedEl = false;\r\n\r\n //Dropdown functionality\r\n $('.comp-pcc-shop-search .custom-select .selected, .comp-pcc-shop-search .custom-select .icon-arrow').on({\r\n click: function (event) {\r\n dropdownClick(event);\r\n },\r\n\r\n keydown: function (event) {\r\n var key = event.which;\r\n\r\n if (key === 13 || key === 32) { //enter or space\r\n dropdownClick(event);\r\n event.preventDefault();\r\n }\r\n\r\n if (key === 27) { //escape\r\n hideDropdown(event);\r\n $('.comp-pcc-shop-search .selected').focus();\r\n }\r\n\r\n if (key === 38) { //up arrow\r\n event.preventDefault();\r\n if (!dropdown) {\r\n showDropdown(event);\r\n }\r\n focusPrevious();\r\n }\r\n\r\n if (key === 40) { //down arrow\r\n event.preventDefault();\r\n if (!dropdown) {\r\n showDropdown();\r\n }\r\n focusNext();\r\n }\r\n\r\n if (key === 9) { //tab\r\n if (dropdown) {\r\n if (event.shiftKey) {\r\n event.preventDefault();\r\n focusPrevious();\r\n } else {\r\n event.preventDefault();\r\n focusNext();\r\n }\r\n }\r\n }\r\n }\r\n });\r\n\r\n //Hide dropdown with click outside of it\r\n $(document).click(function () {\r\n //$('.comp-pcc-shop-search .custom-select ul').slideUp();\r\n //$('.comp-pcc-shop-search .custom-select i').removeClass('open');\r\n\r\n if ($(event.target).closest('.comp-pcc-shop-search .custom-select').length < 1) {\r\n hideDropdown();\r\n //console.log('Docuemnt click NOT inside dropdown.');\r\n }\r\n });\r\n\r\n //Dropdown links functionality\r\n $('.comp-pcc-shop-search .custom-select ul a').on({\r\n click: function () {\r\n $(this).parents('.custom-select').find('.selected').text($(this).text());\r\n var dataValue = $(this).parent().attr('data-value');\r\n $(this).parents('#groupDistanceDrpDwn').find('#distanceValue').attr('value', dataValue);\r\n hideDropdown();\r\n $('.comp-pcc-shop-search .selected').focus();\r\n },\r\n\r\n keydown: function (event) {\r\n var key = event.which;\r\n\r\n if (key === 13 || key === 32) { //enter or space\r\n $(event.target).trigger('click');\r\n event.preventDefault();\r\n }\r\n\r\n if (key === 27) { //escape\r\n hideDropdown();\r\n $('.comp-pcc-shop-search .selected').focus();\r\n }\r\n\r\n if (key === 38) { //up arrow\r\n event.preventDefault();\r\n focusPrevious();\r\n }\r\n\r\n if (key === 40) { //down arrow\r\n event.preventDefault();\r\n focusNext();\r\n }\r\n\r\n if (key === 9) { //tab\r\n if (event.shiftKey) {\r\n event.preventDefault();\r\n focusPrevious();\r\n } else {\r\n event.preventDefault();\r\n focusNext();\r\n }\r\n }\r\n }\r\n });\r\n\r\n function dropdownClick(event) {\r\n $(event.target).parent().find('ul').slideToggle();\r\n $(event.target).parent().find('.icon-arrow').toggleClass('open');\r\n dropdown = !dropdown;\r\n }\r\n\r\n function hideDropdown() {\r\n $('.comp-pcc-shop-search .custom-select').find('ul').slideUp();\r\n $('.comp-pcc-shop-search .custom-select').find('.icon-arrow').removeClass('open');\r\n $('.comp-pcc-shop-search .selected').attr('aria-expanded', 'false');\r\n dropdown = false;\r\n focusedEl = false;\r\n }\r\n\r\n function showDropdown() {\r\n $('.comp-pcc-shop-search .custom-select').find('ul').slideDown();\r\n $('.comp-pcc-shop-search .custom-select').find('.icon-arrow').addClass('open');\r\n $('.comp-pcc-shop-search .selected').attr('aria-expanded', 'true');\r\n dropdown = true;\r\n }\r\n\r\n function focusNext() {\r\n if (!focusedEl) {\r\n firstFocusableEl.focus();\r\n focusedEl = 1;\r\n //console.log('First element focused');\r\n } else if (focusedEl === focusableEls.length) {\r\n firstFocusableEl.focus();\r\n focusedEl = 1;\r\n //console.log('First element focused from last element');\r\n } else {\r\n focusableEls[focusedEl].focus();\r\n focusedEl++;\r\n //console.log('Next element focused');\r\n }\r\n //console.log('focusedEl: ' + focusedEl);\r\n }\r\n\r\n function focusPrevious() {\r\n if (focusedEl === 1 || !focusedEl) {\r\n lastFocusableEl.focus();\r\n focusedEl = focusableEls.length;\r\n //console.log('Last element focused');\r\n } else {\r\n focusedEl--;\r\n focusableEls[focusedEl - 1].focus();\r\n //console.log('Previous element focused');\r\n }\r\n //console.log('focusedEl: ' + focusedEl);\r\n }\r\n\r\n }\r\n});\r\n","(function ($, njm) {\r\n 'use strict';\r\n\r\n njm.views.tabQuote = Backbone.View.extend({\r\n\r\n\r\n events: {\r\n },\r\n\r\n initialize: function () {\r\n var $this = this;\r\n\r\n window.onProductBegin = function (data, event) {\r\n $this.processing($(event.target).closest('.item'), true);\r\n }\r\n $(\".quotegriditem\").on('click', function (event) {\r\n var $this = $(this);//cache the $(this) selector since it will be used more than once\r\n var hrefText = this.href;\r\n var productLabel = $this.children(\".product-label\").text();\r\n njmClientClickTracking.quoteLinkClicked(\"Quote Link Clicked\", productLabel, hrefText);\r\n });\r\n $('.quotegriditem').filter(function () {\r\n var href = $(this).attr('href') + \"&__RequestVerificationToken=\" + $('input[name=\"__RequestVerificationToken\"]')[0].value;\r\n return $(this).attr(\"href\", href);\r\n });\r\n $('.quotegetStarted').filter(function () {\r\n var href = $(this).attr('href') + \"&__RequestVerificationToken=\" + $('input[name=\"__RequestVerificationToken\"]')[0].value;\r\n return $(this).attr(\"href\", href);\r\n });\r\n \r\n window.onProductComplete = function (data, event) {\r\n $this.processing($(event.target).closest('.item'), false);\r\n //To add Policy Message Screen \r\n $('#policy-message-container').find('.nopolicyquote').filter(function () {\r\n var href = $(this).attr('href') + \"&__RequestVerificationToken=\" + $('input[name=\"__RequestVerificationToken\"]')[0].value;\r\n $(this).attr(\"href\", href);\r\n });\r\n var policymessageContainer = $('#policy-message-container').html();\r\n $('#policy-message-container').remove();\r\n if (!$('.screens-wrapper').find('.product-policy-message').length > 0) {\r\n $('.screens-wrapper').append(policymessageContainer);\r\n $('#policy-message-container').remove();\r\n }\r\n $this.initializeTabComponent();\r\n };\r\n\r\n window.onProductFailure = function (data, event) {\r\n var hrefText = this.url;\r\n var failureText = \"\"\r\n njmClientClickTracking.quoteLinkClicked(\"Quote Link Click Failed\", failureText, hrefText);\r\n };\r\n window.onProductSuccess = function (data, event) {\r\n var hrefText = this.url;\r\n var productLabel = $(event.target).closest('.item').children(\".product-label\").text();\r\n njmClientClickTracking.quoteLinkClicked(\"Quote Link Click Success\", productLabel, hrefText);\r\n var displayScreen = $('[data-screen=\"product-quote\"]');\r\n var currentScreen = $('.comp-tab-quote').find('.screen.active');\r\n var hidQuoteStatus = $('#quote-product-status');\r\n if (typeof hidQuoteStatus.val() !== \"undefined\" && hidQuoteStatus.val() === \"true\") {\r\n console.log(\"in maintenance mode\");\r\n var redirectUrl = $('#quote-product-redirectUrl').val()\r\n window.open(redirectUrl, '_self');\r\n }\r\n else {\r\n $this.slideLeft(currentScreen, displayScreen);\r\n $this.initializeTabComponent();\r\n }\r\n\r\n if (typeof (CallTrk) !== null && typeof (CallTrk) !== 'undefined') {\r\n CallTrk.swap();\r\n }\r\n };\r\n\r\n window.onConitnueQuoteSuccess = function (data, event) {\r\n njmClientClickTracking.quoteLinkClicked(\"Continue Saved Quote Link Click Success\");\r\n var displayScreen = $('[data-screen=\"continue-quote\"]');\r\n var currentScreen = $('.comp-tab-quote').find('.screen.active');\r\n\r\n $this.slideLeft(currentScreen, displayScreen);\r\n $this.initializeTabComponent();\r\n\r\n if (typeof (CallTrk) !== null && typeof (CallTrk) !== 'undefined') {\r\n CallTrk.swap();\r\n }\r\n };\r\n window.onConitnueQuoteFailure = function (data, event) {\r\n var hrefText = this.url;\r\n var failureText = \"Continue Saved Quote Link Click Failed\"\r\n njmClientClickTracking.quoteLinkClicked(\"Continue Saved Quote Link Click Failed\", failureText, hrefText);\r\n };\r\n window.onProductQuoteSubmit = function () {\r\n var displayScreen = $('[data-screen=\"product-pre-quote\"]');\r\n var currentScreen = $('[data-screen=\"product-grid\"]');\r\n var hidQuoteStatus = $('#quote-product-status');\r\n if (typeof hidQuoteStatus.val() !== \"undefined\" && hidQuoteStatus.val() === \"true\") {\r\n console.log(\"in maintenance mode\");\r\n var redirectUrl = $('#quote-product-redirectUrl').val()\r\n window.open(redirectUrl, '_self');\r\n }\r\n else {\r\n $this.slideLeft(currentScreen, displayScreen);\r\n $this.initializeTabComponent();\r\n var currentHref = $('#btnProductPreQuote').attr('href');\r\n if (typeof currentHref != \"undefined\") {\r\n if (currentHref.indexOf(\"__RequestVerificationToken\") < 1) {\r\n var href = currentHref + \"&__RequestVerificationToken=\" + $('input[name=\"__RequestVerificationToken\"]')[0].value;\r\n $('#btnProductPreQuote').attr('href', href);\r\n }\r\n }\r\n }\r\n\r\n if (typeof (CallTrk) !== null && typeof (CallTrk) !== 'undefined') {\r\n CallTrk.swap();\r\n }\r\n };\r\n\r\n window.onProductQuoteSuccess = function () {\r\n var hrefText = this.url;\r\n var zipcode = $('#zipcode').val();\r\n njmClientClickTracking.quoteLinkClicked(\"Zip Code Link Click Success\", zipcode, hrefText);\r\n $('#zipSubmit').removeAttr('disabled');\r\n var currentHref = $('#btnProdMsgSubmit').attr('href');\r\n if (typeof currentHref != \"undefined\") {\r\n if (currentHref.indexOf(\"__RequestVerificationToken\") < 1) {\r\n var href = currentHref + \"&__RequestVerificationToken=\" + $('input[name=\"__RequestVerificationToken\"]')[0].value;\r\n $('#btnProdMsgSubmit').attr('href', href);\r\n }\r\n }\r\n };\r\n\r\n window.onProductQuoteComplete = function () {\r\n var displayScreen = $('[data-screen=\"product-qualification-merged\"]');\r\n var qualificationScreen = $('[data-screen=\"product-qualification\"]');\r\n var currentScreen = $('[data-screen=\"product-quote\"]');\r\n var hidQuoteshortform = $('#quote-action-shortform');\r\n var hidQuoteAgent = $('#quote-action-agentsearch');\r\n var hidQuoteQBApp = $('#quote-action-qbapp');\r\n var hidQuoteZipBlock = $('#quote-action-zipBlock');\r\n var hidQuoteaction = $('#hidQuoteAction');\r\n var hidQuoteAppetiteAction = $('#quote-action-appetiteMsg');\r\n var hidQuoteInAppetiteAction = $('#quote-action-inappetiteMsg');\r\n var zipSubmitBtn = $('#zipSubmit');\r\n var hidProductCategory = $('#productCategory');\r\n var hidBusinessLob = $('#quote-lob-business');\r\n var zipCodeLabel = $('#zipCodeLabel');\r\n var appurl = $('#hidQuoteActionUrl').val();\r\n var hidQuoteStatus = $('#quote-product-status');\r\n if (typeof hidQuoteStatus.val() !== \"undefined\" && hidQuoteStatus.val() === \"true\") {\r\n console.log(\"in maintenance mode\");\r\n var redirectUrl = $('#quote-product-redirectUrl').val()\r\n window.open(redirectUrl, '_self');\r\n }\r\n else {\r\n if (!(zipCodeLabel.hasClass('haserror'))) {\r\n\r\n if (hidBusinessLob.val() === hidProductCategory.val()) {\r\n $this.slideLeft(currentScreen, displayScreen);\r\n\r\n } else {\r\n\r\n if (typeof hidQuoteaction.val() !== \"undefined\" && typeof hidQuoteQBApp.val() !== \"undefined\" && hidQuoteaction.val() && hidQuoteQBApp.val()) {\r\n\r\n if (hidQuoteaction.val() === hidQuoteQBApp.val()) {\r\n console.log(\"in quote app\");\r\n window.open(appurl, '_self');\r\n }\r\n else if (hidQuoteaction.val() === hidQuoteshortform.val()) {\r\n var formUrl = $('#hidFormActionUrl').val();\r\n console.log(\"in short form\");\r\n window.open(formUrl, '_self');\r\n }\r\n else if (hidQuoteaction.val() === hidQuoteAgent.val()) {\r\n var agentSearchUrl = $('#hidAgentActionUrl').val();\r\n console.log(\"in agent search\");\r\n window.open(agentSearchUrl, '_self');\r\n }\r\n else if (hidQuoteaction.val() === hidQuoteZipBlock.val()) {\r\n var zipBlockUrl = $('#hidzipBlockActionUrl').val();\r\n console.log(\"in agent search\");\r\n window.open(zipBlockUrl, '_self');\r\n }\r\n else if (hidQuoteaction.val() === hidQuoteAppetiteAction.val() || hidQuoteaction.val() === hidQuoteInAppetiteAction.val()) {\r\n $this.slideLeft(currentScreen, displayScreen);\r\n }\r\n }\r\n else {\r\n $this.slideLeft(currentScreen, displayScreen);\r\n }\r\n }\r\n }\r\n }\r\n $this.processing(zipSubmitBtn, false);\r\n $this.initializeTabComponent();\r\n };\r\n window.onPreProductQuoteSuccess = function () {\r\n var displayScreen = $('[data-screen=\"product-quote\"]');\r\n var currentScreen = $('[data-screen=\"product-pre-quote\"]');\r\n $('#zipCodeLabel').removeClass('haserror');\r\n $this.slideLeft(currentScreen, displayScreen);\r\n $this.initializeProductQuoteComponent();\r\n\r\n if (typeof (CallTrk) !== null && typeof (CallTrk) !== 'undefined') {\r\n CallTrk.swap();\r\n }\r\n };\r\n window.onProductQuoteQualificationSuccess = function () {\r\n var displayScreen = $('[data-screen=\"product-qualification-merged\"]');\r\n var currentScreen = $('[data-screen=\"product-qualification\"]');\r\n $this.slideLeft(currentScreen, displayScreen);\r\n $this.initializeTabComponent();\r\n };\r\n window.onProductQuoteError = function (data) {\r\n var hrefText = this.url;\r\n var zipcode = $('#zipcode').val();\r\n njmClientClickTracking.quoteLinkClicked(\"Zip Code Link Click Failed\", zipcode, hrefText);\r\n //var hidErrorMsg = $('#hidErrorMessage');\r\n var hidZipErrorMsg = $('#hidGenericErrorMessage');\r\n var hidZipInvalidMsg = $('#hidZipCodeErrorMessage');\r\n var zipSubmitBtn = $('#zipSubmit'),\r\n zipLabel = $('#zipCodeLabel').addClass('haserror');\r\n $('#zipErrorMsg').text(hidZipErrorMsg.val());\r\n if (data && data.status === 400) {\r\n $('#zipErrorMsg').text(hidZipInvalidMsg.val());\r\n }\r\n else {\r\n $('#zipErrorMsg').text(hidZipErrorMsg.val());\r\n // $('#zipErrorMsg').text(data.statusText);\r\n }\r\n $this.processing(zipSubmitBtn, false);\r\n };\r\n window.onValidateZipCode = function (data, event) {\r\n var hrefText = this.url;\r\n var zipcode = $('#zipcode'),\r\n errorMsg = $('#zipcode').attr('data-val-required'),\r\n zipSubmitBtn = $('#zipSubmit'),\r\n zipRegEx = /\\d{5}/,\r\n error = zipcode.siblings('label').find('.tooltip'),\r\n valid = zipRegEx.test(zipcode.val());\r\n njmClientClickTracking.quoteLinkClicked(\"Zip Code Link Clicked\", zipcode.val(), hrefText);\r\n if (valid) {\r\n error.parent().addClass('validated').removeClass('haserror');\r\n if (zipSubmitBtn.hasClass('button')) {\r\n zipSubmitBtn.attr('disabled', 'disabled');\r\n }\r\n $this.processing(zipSubmitBtn, true);\r\n } else {\r\n error.parent().addClass('validated haserror');\r\n $('#zipErrorMsg').text(errorMsg);\r\n $this.processing(zipSubmitBtn, false);\r\n }\r\n return valid;\r\n }\n window.onGetStartedSuccess = function (response) {\r\n var hidQuoteStatus = $('#quote-product-status');\r\n if (typeof hidQuoteStatus.val() !== \"undefined\" && hidQuoteStatus.val() === \"true\") {\r\n console.log(\"In maintenance mode\");\r\n var redirectUrl = $('#quote-product-redirectUrl').val()\r\n window.open(redirectUrl, '_self');\r\n }\n if (response.getStartedUrl) {\n window.location.href = response.getStartedUrl;\r\n }\r\n };\n window.onGetStartedFailure = function (xhr, status, error) {\r\n var hrefText = this.url;\r\n var failureText = \"Get Started Link Click Failed\"\r\n njmClientClickTracking.quoteLinkClicked(\"Get Started Link Click Failed\", failureText, hrefText);\r\n };\r\n $this.initializeTabComponent();\r\n },\r\n initializeProductQuoteComponent: function () {\r\n var $this = this;\r\n var component = $('.comp-tab-quote');\r\n var quoteScreen = $('.comp-tab-quote [data-screen=\"product-quote\"]');\r\n component.find('[data-screen=\"product-quote\"] .back').on({\r\n click: function (event) {\r\n $this.backClick(event);\r\n }\r\n });\r\n quoteScreen.find('#zipcode').on({\r\n blur: function () {\r\n $this.hideErrors();\r\n }\r\n });\r\n },\r\n initializeTabComponent: function () {\r\n var $this = this,\r\n component = $('.comp-tab-quote'),\r\n gridScreen = $('.comp-tab-quote [data-screen=\"product-grid\"]'),\r\n quoteScreen = $('.comp-tab-quote [data-screen=\"product-quote\"]'),\r\n msgScreen = $('.comp-tab-quote [data-screen=\"product-message\"]'),\r\n preQualScreen = $('.comp-tab-quote [data-screen=\"product-qualification\"]');\r\n\r\n component.find('#zipSubmit-Container').on({\r\n keydown: function () {\r\n var key = event.which;\r\n\r\n if (key === 13) {\r\n component.find('#zipSubmit').trigger('click');\r\n }\r\n }\r\n });\r\n component.find('.tab').on({\r\n click: function (event) {\r\n $this.tabClick(event);\r\n }\r\n });\r\n\r\n msgScreen.find('.back').on({\r\n click: function (event) {\r\n $this.backClick(event);\r\n }\r\n });\r\n\r\n component.find('[data-screen=\"product-quote\"] .back').on({\r\n click: function (event) {\r\n $this.backClick(event);\r\n }\r\n });\r\n component.find('[data-screen=\"continue-quote\"] .back').on({\r\n click: function (event) {\r\n $this.backClick(event);\r\n }\r\n });\r\n component.find('[data-screen=\"product-qualification\"] .back').on({\r\n click: function (event) {\r\n $this.backClick(event);\r\n }\r\n });\r\n\r\n component.find('[data-screen=\"product-pre-quote\"] .back').on({\r\n click: function (event) {\r\n $this.backClick(event);\r\n }\r\n });\r\n\r\n quoteScreen.find('#zipcode').on({\r\n blur: function () {\r\n $this.hideErrors();\r\n }\r\n });\r\n\r\n component.find('[data-screen=\"product-message\"] .back').on({\r\n click: function (event) {\r\n $this.backClick(event);\r\n }\r\n });\r\n\r\n component.find('[data-screen=\"product-qualification\"] input[type=\"radio\"]').on({\r\n change: function () {\r\n $this.preQualRadioChecked(event);\r\n if ($(this).parents('.validated').length > 0) {\r\n $this.validatePreQual(event);\r\n }\r\n }\r\n });\r\n component.find('[data-screen=\"product-qualification\"] .prequal-button').on({\r\n click: function (event) {\r\n var $thisObject = $(this);//cache the $(this) selector since it will be used more than once\r\n var hrefText = this.href;\r\n var productLabel = $thisObject.text();\r\n njmClientClickTracking.quoteLinkClicked(\"Quote Link Clicked\", productLabel, hrefText);\r\n $this.validatePreQual(event);\r\n }\r\n });\r\n //Policy Option Selection Validation\r\n component.find('[data-screen=\"product-pre-quote\"] #policy-options-button').on({\r\n click: function (event) {\r\n var valid = $this.validatePolicyOption(event);\r\n\r\n if (valid) {\r\n $this.policyOptionSubmit(event);\r\n }\r\n\r\n event.preventDefault();\r\n }\r\n });\r\n\r\n component.find('[data-screen=\"product-pre-quote\"] [name=\"productSelection\"]').on({\r\n change: function (event) {\r\n $this.validatePolicyOption(event);\r\n }\r\n });\r\n component.find('[data-screen=\"product-message-quote\"] .back').on({\r\n click: function (event) {\r\n $this.backClick(event);\r\n }\r\n });\r\n },\r\n AddAntiForgeryToken: function (event) {\r\n event.target.href = event.target.href + \"&__RequestVerificationToken=\" + $('input[name=\"__RequestVerificationToken\"]')[0].value;\r\n },\r\n slideLeft: function (hideScreen, displayScreen) {\r\n\r\n if (!$('.comp-tab-quote').hasClass('sliding')) {\r\n\r\n $('.comp-tab-quote').addClass('sliding');\r\n\r\n displayScreen.addClass('right').removeClass('slide hidden active');\r\n\r\n window.setTimeout(function () {\r\n hideScreen\r\n .addClass('slide left');\r\n\r\n displayScreen\r\n .removeClass('right left hidden')\r\n .addClass('slide active');\r\n }, 50);\r\n\r\n window.setTimeout(function () {\r\n hideScreen.addClass('hidden').removeClass('slide left right active');\r\n $('.comp-tab-quote').removeClass('sliding');\r\n }, 500);\r\n }\r\n },\r\n\r\n slideRight: function (hideScreen, displayScreen) {\r\n\r\n if (!$('.comp-tab-quote').hasClass('sliding')) {\r\n\r\n $('.comp-tab-quote').addClass('sliding');\r\n\r\n displayScreen.addClass('left').removeClass('slide hidden active');;\r\n\r\n window.setTimeout(function () {\r\n hideScreen\r\n .removeClass('active hidden')\r\n .addClass('slide right');\r\n\r\n displayScreen\r\n .removeClass('right left hidden')\r\n .addClass('slide active');\r\n }, 50);\r\n\r\n window.setTimeout(function () {\r\n hideScreen.addClass('hidden').removeClass('slide left right active');\r\n $('.comp-tab-quote').removeClass('sliding');\r\n }, 500);\r\n }\r\n },\r\n\r\n backClick: function (event) {\r\n event.preventDefault();\r\n var component = $('.comp-tab-quote');\r\n if (!component.hasClass('loading')) {\r\n var zipLabel = $('#zipCodeLabel').removeClass('haserror');\r\n var $this = this;\r\n var currentScreen = $(event.target).parents('.screen.active');\r\n var displayScreen;\r\n var href = component.find('.screen.active .back').attr('href');\r\n href = href.slice(1);\r\n displayScreen = component.find('[data-screen=\"' + href + '\"]');\r\n $this.slideRight(currentScreen, displayScreen);\r\n }\r\n },\r\n\r\n tabClick: function (event) {\r\n event.preventDefault();\r\n var component = $('.comp-tab-quote');\r\n\r\n if (!component.hasClass('loading') && !component.hasClass('sliding')) {\r\n var $this = this;\r\n\r\n\r\n if (!$(event.target).hasClass('active')) {\r\n\r\n if (!component.find('[data-screen=\"product-grid\"]').hasClass('active')) {\r\n component.find('.screen:not([data-screen=\"product-grid\"])').removeClass('active left slide').addClass('right hidden');\r\n component.find('[data-screen=\"product-grid\"]').removeClass('left hidden right slide').addClass('active');\r\n }\r\n\r\n component.find('.tab.active').removeClass('active').attr('tabindex', '0');\r\n $(event.target).addClass('active').removeClass('hidden').attr('tabindex', '-1');\r\n var category = $(event.target).attr('data-category');\r\n\r\n component.find('.screen[data-screen=\"product-grid\"] .icon-grid.active').removeClass('active').addClass('hidden');\r\n component.find('.screen[data-screen=\"product-grid\"] .icon-grid[data-category=\"' + category + '\"]').addClass('active').removeClass('hidden');\r\n }\r\n }\r\n },\r\n\r\n preQualRadioChecked: function (event) {\r\n var $this = this,\r\n numEmployees = $('[name=\"numEmployees\"]'),\r\n numEmployeesChecked = numEmployees.closest(':checked'),\r\n numVehicles = $('[name=\"numVehicles\"]'),\r\n numVehiclesChecked = numVehicles.closest(':checked'),\r\n submitBtn = $('#prequal-button'),\r\n ajaxBtn = $('#btnProdMsgSubmit'),\r\n arrow = '',\r\n businessRuleHidden = $('#quotebusinessrule').val(),\r\n quoteAppUrl = $('#quoteAppUrl').val(),\r\n formUrl = $('#quoteformUrl').val(),\r\n agentUrl = $('#quoteAgentUrl').val(),\r\n hidContinueText = $('#hidContinueBtnText').val(),\r\n hidOnlineQuoteText = $('#hidOnlineBtnText').val(),\r\n hidQuoteBtnText = $('#hidQuoteBtnText').val(),\r\n hidAgentBtnText = $('#hidAgentBtnText').val(),\r\n hidQuoteshortform = $('#quote-action-shortform').val(),\r\n hidQuoteAgentsearch = $('#quote-action-agentsearch').val(),\r\n hidQuoteAppetiteMsg = $('#quote-action-appetiteMsg').val(),\r\n displayEmpOptions = $('#product-qualification').attr('data-display-numEmployees'),\r\n displayVehicleOptions = $('#product-qualification').attr('data-display-numVehicles'),\r\n hidQuoteQbapp = $('#quote-action-qbapp').val();\r\n\r\n var result;\r\n var isProcessing = false;\r\n var businessRules = [];\r\n var businessRulesArr = JSON.parse(businessRuleHidden);\r\n\r\n if (displayEmpOptions === \"True\" && displayVehicleOptions === \"True\") {\r\n if (numEmployeesChecked.length + numVehiclesChecked.length === 2) {\r\n\r\n result = businessRulesArr.find(function (x) {\r\n return x.Employee === numEmployeesChecked.val() && x.Vehicle === numVehiclesChecked.val();\r\n });\r\n isProcessing = true;\r\n }\r\n }\r\n else if (displayEmpOptions === \"True\") {\r\n if (typeof numEmployeesChecked.val() !== \"undefined\" && numEmployeesChecked.val()) {\r\n result = businessRulesArr.find(function (x) {\r\n return x.Employee === numEmployeesChecked.val() && x.Vehicle === \"\";\r\n });\r\n isProcessing = true;\r\n }\r\n }\r\n else if (displayVehicleOptions === \"True\") {\r\n if (typeof numVehiclesChecked.val() !== \"undefined\" && numVehiclesChecked.val()) {\r\n result = businessRulesArr.find(function (x) {\r\n return x.Vehicle === numVehiclesChecked.val() && x.Employee === \"\";\r\n });\r\n isProcessing = true;\r\n }\r\n }\r\n submitBtn.show();\r\n ajaxBtn.hide();\r\n if (isProcessing) {\r\n if (typeof result !== \"undefined\" && typeof result.Action !== \"undefined\" && result.Action && result) {\r\n\r\n if (result.Action === hidQuoteshortform) {\r\n $this.processing(submitBtn, true);\r\n window.setTimeout(function () {\r\n $this.processing(submitBtn, false);\r\n submitBtn.html(hidQuoteBtnText + arrow);\r\n formUrl = formUrl + \"&\"\r\n if (typeof $('[name=\"numEmployees\"]').closest(':checked')[0] != \"undefined\" && typeof $('[name=\"numVehicles\"]').closest(':checked')[0] != \"undefined\") {\r\n formUrl = formUrl + encodeURIComponent(\"number of employees\") + \"=\" + encodeURIComponent($('[name=\"numEmployees\"]').closest(':checked')[0].value) + \"&\" + encodeURIComponent(\"number of vehicles\") + \"=\" + encodeURIComponent($('[name=\"numVehicles\"]').closest(':checked')[0].value);\r\n }\r\n else if (typeof $('[name=\"numVehicles\"]').closest(':checked')[0] != \"undefined\") {\r\n formUrl = formUrl + encodeURIComponent(\"number of vehicles\") + \"=\" + encodeURIComponent($('[name=\"numVehicles\"]').closest(':checked')[0].value);\r\n }\r\n else if (typeof $('[name=\"numEmployees\"]').closest(':checked')[0] != \"undefined\") {\r\n formUrl = formUrl + encodeURIComponent(\"number of employees\") + \"=\" + encodeURIComponent($('[name=\"numEmployees\"]').closest(':checked')[0].value);\r\n }\r\n submitBtn.attr('href', formUrl).removeAttr('target');\r\n }, 400);\r\n }\r\n else if (result.Action === hidQuoteAgentsearch) {\r\n $this.processing(submitBtn, true);\r\n window.setTimeout(function () {\r\n $this.processing(submitBtn, false);\r\n submitBtn.html(hidAgentBtnText + arrow);\r\n submitBtn.attr('href', agentUrl).removeAttr('target');\r\n }, 400);\r\n }\r\n else if (result.Action === hidQuoteQbapp) {\r\n $this.processing(submitBtn, true);\r\n window.setTimeout(function () {\r\n $this.processing(submitBtn, false);\r\n submitBtn.html(hidOnlineQuoteText + arrow);\r\n submitBtn.attr('href', quoteAppUrl).attr('target', '_blank');\r\n }, 400);\r\n }\r\n else {\r\n $this.processing(submitBtn, true);\r\n window.setTimeout(function () {\r\n $this.processing(submitBtn, false);\r\n submitBtn.text(hidContinueText);\r\n submitBtn.attr('href', '#').removeAttr('target');\r\n submitBtn.hide();\r\n ajaxBtn.show();\r\n }, 400);\r\n }\r\n\r\n }\r\n else {\r\n console.log(\"business rule result is null\")\r\n $this.processing(submitBtn, true);\r\n window.setTimeout(function () {\r\n $this.processing(submitBtn, false);\r\n submitBtn.text(hidContinueText);\r\n submitBtn.attr('href', '#').removeAttr('target');\r\n submitBtn.hide();\r\n ajaxBtn.show();\r\n }, 400);\r\n }\r\n }\r\n else {\r\n console.log(\"valid options are not selected yet.\");\r\n }\r\n },\r\n\r\n\r\n processing: function (element, boolean) {\r\n var loadingHtml = '
 ',\r\n component = element.parents('.comp-tab-quote'),\r\n itemOverlay = $('
').hide(),\r\n screenOverlay = $('
'),\r\n elementContents = element.contents(),\r\n formElements = element.parents('.screen').find('input, .button'),\r\n temp = $(''),\r\n movedContent;\r\n\r\n if (boolean) {\r\n component.addClass('loading');\r\n component.prepend(screenOverlay);\r\n formElements.each(function () {\r\n $(this).attr('disabled', 'disabled');\r\n });\r\n\r\n if (element.hasClass('item')) {\r\n element.addClass('loading').prepend(itemOverlay);\r\n itemOverlay.html(loadingHtml);\r\n itemOverlay.fadeIn();\r\n\r\n } else if (element.is('input')) {\r\n this.processing(element.parents('.button'), true);\r\n\r\n } else if (element.hasClass('button')) {\r\n element.append(temp);\r\n temp.append(elementContents)\r\n element.append(loadingHtml);\r\n element.attr('disabled', 'disabled');\r\n\r\n }\r\n } else {\r\n if (element.is('input') || element.is('#zipSubmit-Container')) {\r\n component.find('.overlay').fadeOut(500, function () {\r\n this.remove();\r\n component.removeClass('loading');\r\n element.removeClass('loading');\r\n });\r\n } else {\r\n component.find('.overlay').remove();\r\n component.removeClass('loading');\r\n element.removeClass('loading');\r\n }\r\n\r\n if (element.is('input')) {\r\n this.processing(element.parents('.button'), false);\r\n } else if (element.hasClass('button')) {\r\n movedContent = element.find('span.processing').contents();\r\n element.prepend(movedContent);\r\n element.find('span.processing').remove();\r\n element.find('.lds-spinner').fadeOut().remove();\r\n element.find('.spacer').remove();\r\n }\r\n\r\n formElements.each(function () {\r\n $(this).removeAttr('disabled');\r\n });\r\n }\r\n\r\n },\r\n\r\n validatePreQual: function (event) {\r\n var $thisComponent = $(event.target).parents('.comp-tab-quote'),\r\n numEmployees = $thisComponent.find('#numEmployees_radio'),\r\n numEmployeesOptions = $thisComponent.find('[name=\"numEmployees\"]'),\r\n numEmployeesChecked = numEmployeesOptions.closest(':checked'),\r\n numVehicles = $thisComponent.find('#numVehicles_radio'),\r\n numVehiclesOptions = $thisComponent.find('[name=\"numVehicles\"]'),\r\n numVehiclesChecked = numVehiclesOptions.closest(':checked'),\r\n prEqualButton = $thisComponent.find('#prequal-button'),\r\n displayEmpOptions = $thisComponent.find('[data-screen=\"product-qualification\"]').attr('data-display-numEmployees'),\r\n displayVehicleOptions = $thisComponent.find('[data-screen=\"product-qualification\"]').attr('data-display-numVehicles');\r\n\r\n if (displayEmpOptions === \"True\" && displayVehicleOptions === \"True\") {\r\n\r\n if (numEmployeesChecked.length != 1) {\r\n numEmployees.addClass('haserror validated');\r\n } else {\r\n numEmployees.removeClass('haserror');\r\n }\r\n\r\n if (numVehiclesChecked.length != 1) {\r\n numVehicles.addClass('haserror validated');\r\n } else {\r\n numVehicles.removeClass('haserror');\r\n }\r\n\r\n } else if (displayEmpOptions === \"True\") {\r\n if (numEmployeesChecked.length != 1) {\r\n numEmployees.addClass('haserror validated');\r\n } else {\r\n numEmployees.removeClass('haserror');\r\n }\r\n } else if (displayVehicleOptions === \"True\") {\r\n {\r\n if (numEmployeesChecked.length != 1) {\r\n numEmployees.addClass('haserror validated');\r\n } else {\r\n numEmployees.removeClass('haserror');\r\n }\r\n }\r\n }\r\n if (numEmployees.hasClass('haserror') || numVehicles.hasClass('haserror')) {\r\n prEqualButton.attr('href', '#');\r\n event.preventDefault();\r\n }\r\n },\r\n\r\n validatePolicyOption: function (event) {\r\n var $thisComponent = $(event.target).parents('.comp-tab-quote'),\r\n productSelection = $thisComponent.find('#productSelection_radio'),\r\n productSelectionOptions = $thisComponent.find('[name=\"productSelection\"]'),\r\n productSelectionChecked = productSelectionOptions.closest(':checked'),\r\n poButton = $thisComponent.find('#policy-options-button');\r\n\r\n if (productSelectionChecked.length != 1) {\r\n productSelection.addClass('haserror validated');\r\n } else {\r\n productSelection.removeClass('haserror');\r\n return true;\r\n }\r\n if (productSelection.hasClass('haserror')) {\r\n poButton.attr('href', '#');\r\n event.preventDefault();\r\n return false;\r\n }\r\n },\r\n\r\n policyOptionSubmit: function (event) {\r\n var $thisComponent = $(event.target).parents('.comp-tab-quote'),\r\n productSelectionOptions = $thisComponent.find('[name=\"productSelection\"]'),\r\n productSelectionChecked = productSelectionOptions.closest(':checked'),\r\n productSelectionCheckedId = productSelectionChecked[0].id,\r\n currentScreen = $(event.target).parents('.screen.active'),\r\n displayScreen = $thisComponent.find('[data-screen-for=\"' + productSelectionCheckedId + '\"]');\r\n\r\n if (productSelectionCheckedId) {\r\n console.log(\"productSelectionCheckedId- Slide screen to left\");\r\n this.slideLeft(currentScreen, displayScreen);\r\n }\r\n\r\n event.preventDefault();\r\n },\r\n\r\n hideErrors: function () {\r\n var component = $('.comp-tab-quote');\r\n component.find('.haserror').removeClass('haserror');\r\n }\r\n });\r\n})(jQuery, njm);\r\n","(function ($, njm) {\r\n 'use strict';\r\n\r\n njm.views.cssLogin = Backbone.View.extend({\r\n\r\n events: {\r\n 'click #login1': 'login1',\r\n 'click #login2': 'login2',\r\n 'click #cancel': 'backToSection',\r\n 'click #cancelReset': 'cancelReset',\r\n 'click #forgotAnswers': 'forgotAnswers',\r\n 'click #login3': 'verifyCodeEvent',\r\n 'click #createQuestionsCancel': 'backToSection',\r\n 'click #login4': 'updateQuestions',\r\n 'click .password-visibility': 'passwordVisibility',\r\n 'keypress #password': 'capslockHint'\r\n },\r\n \r\n initialize: function () {\n try {\n var destinationUrl = $('#login1').data('destinationurl'),\r\n locCheck = decodeURIComponent(window.location.search),\r\n timestamp = this.urlParam('_dc', locCheck);\r\n\r\n if (!this.urlParam(\"goto\") || (!document.referrer && !timestamp) || (!document.referrer && timestamp && ((Date.now() - timestamp) / 60000 >= 5))) {\r\n this.redirect(destinationUrl + '?_dc=' + Date.now());\r\n }\r\n var me = this;\r\n setInterval(function () {\r\n if (!timestamp || (Date.now() - timestamp) / 60000 >= 5) {\r\n me.redirect(destinationUrl + '?_dc=' + Date.now());\r\n }\r\n }, 300000);\r\n\r\n if (window.location.href.indexOf('vercd') >= 0) {\r\n this.verifyCode(window.location.href.split('vercd')[1].substring(1));\r\n } else {\r\n $('#userid').keypress(function (e) {\r\n if (e.keyCode === 13) {\r\n $('#login1').click();\r\n }\r\n });\r\n $('#password').keypress(function (e) {\r\n if (e.keyCode === 13) {\r\n $('#login1').click();\r\n }\r\n });\r\n $('#ans1').keypress(function (e) {\r\n if (e.keyCode === 13) {\r\n $('#login2').click();\r\n }\r\n });\r\n $('#ans2').keypress(function (e) {\r\n if (e.keyCode === 13) {\r\n $('#login2').click();\r\n }\r\n });\r\n }\r\n\r\n if (localStorage.Csschkbox && localStorage.Csschkbox != '') {\r\n $('#rememberUserID').attr('checked', 'checked');\r\n $('#userid').val(localStorage.Cssusername);\r\n } else {\r\n $('#rememberUserID').removeAttr('checked');\r\n $('#userid').val('');\r\n }\r\n\r\n /**\r\n * Disable IE's capslock indicator since we provide one\r\n **/\r\n if ($('.cssLogin #password') && document.msCapsLockWarningOff === false) {\r\n document.msCapsLockWarningOff = true;\r\n }\r\n\r\n /**\r\n * Prevent selecting duplicate security questions\r\n **/\r\n $(\".securityQuestion\").change(function () {\r\n var values = [];\r\n\r\n $(\".securityQuestion\").each(function () {\r\n values.push(this.value);\r\n });\r\n\r\n $(this).parent().siblings(\".questionContainer\").children(\".securityQuestion\").find(\"option\").removeAttr(\"disabled\").filter(function () {\r\n var a = $(this).parent(\"select\").val();\r\n return (($.inArray(this.value, values) > -1) && (this.value !== a));\r\n }).attr(\"disabled\", \"disabled\");\r\n });\r\n\r\n /**\r\n * Trigger prevention of duplicate security questions\r\n **/\r\n $(\".securityQuestion\").eq(0).trigger('change');\r\n njmClientClickTracking.trackPageName(window.location.href, document.referrer);\n }\n catch (ex) {\n njmClientClickTracking.logErrorGeneric(\"initialize\", ex.name, \"Exception on initialize\", \"Anonymous\", ex.stack);\n throw ex;\r\n }\r\n },\r\n\r\n stringTrim: function (x) {\r\n return x.replace(/^\\s+|\\s+$/gm, '');\r\n },\r\n\r\n /**\r\n * Parse return error message for Login\r\n **/\r\n checkLoginError: function (response) {\r\n var status = response.status,\r\n msg = response.responseText ? JSON.parse(response.responseText).message : '';\r\n var userId = this.stringTrim(document.getElementById('userid').value);\r\n var errorMsg = 'We’re sorry, an error has occurred. Please try again later.';\r\n\r\n if (status === 400 && msg) {\r\n if (msg.indexOf('Authentication Failed') >= 0) {\r\n errorMsg = 'The User ID and/or Password you are entering are invalid.';\r\n if (msg.indexOf('You will be locked out') >= 0) {\r\n errorMsg = errorMsg + ' To avoid being locked out, please use the “Forgot User ID?” and/or “Forgot Password?” links to obtain your User ID or a new Password.';\r\n }\r\n } else if (msg.indexOf('Your account has been locked') >= 0) {\r\n errorMsg = 'You have been locked out of your account. Please contact our customer service department during our business hours.';\r\n } else if (msg.indexOf('Your account is locked') >= 0) {\r\n errorMsg = 'Your account is locked. Please contact our Customer Service department during our business hours.';\r\n } else if (msg.indexOf('You have not successfully completed your registration') >= 0) {\r\n errorMsg = 'You have not successfully completed your registration. Please click the link in the e-mail we have sent you to complete the registration process or contact our Customer Service department during our business hours.';\r\n } else if (msg.indexOf('Your account has been deactivated') >= 0) {\r\n errorMsg = 'Your account has been deactivated. Please contact our Customer Service department during our business hours.';\r\n } else {\r\n errorMsg = 'The User ID and/or Password you are entering are invalid.';\r\n }\r\n }\r\n njmClientClickTracking.logErrorGeneric(\"checkLoginError\", msg, status, userId, errorMsg);\r\n return errorMsg;\r\n },\r\n\r\n /**\r\n * Redirects to given location. Handles Cancel and Registration button clicks\r\n **/\r\n cancelReset: function (e) {\r\n var destinationUrl = $(e.currentTarget).data('href');\r\n\r\n if (destinationUrl !== undefined && destinationUrl !== '') {\r\n window.location = destinationUrl;\r\n }\r\n },\r\n\r\n /**\r\n * In future, needs to get URL from API return in previous step as parameter\n * In future, needs to get URL from API return in previous step as parameter\r\n **/\r\n redirect: function (inpurl) {\r\n if (window.location.search.indexOf('mobile=y') >= 0) {\r\n inpurl = inpurl + '?mobile=y';\r\n }\r\n window.location.replace(inpurl);\r\n },\r\n\r\n login1: function (e) {\r\n e.preventDefault();\r\n $('#loading').show();\r\n\r\n var UserId = document.getElementById('userid').value;\r\n njmClientClickTracking.linkClickedWithUserID(e.currentTarget, UserId);\r\n\r\n\r\n var loginApiUrl = $(e.currentTarget).data('loginapiurl');\r\n var destinationUrl = $(e.currentTarget).data('destinationurl');\r\n\r\n this.login(loginApiUrl, destinationUrl, false);\r\n },\r\n\r\n /**\r\n * Passes question answers and save device choice to login/save API\r\n * Redirects on success\r\n **/\r\n login2: function (e) {\r\n e.preventDefault();\r\n var self = this;\r\n\r\n $('#loading').show();\r\n var UserId = document.getElementById('userid').value;\n var OauthUrl = $('#login2').data('oauthurl');\r\n njmClientClickTracking.linkClickedWithUserID(e.currentTarget, UserId);\r\n\r\n var ans1 = this.stringTrim(document.getElementById('ans1').value),\r\n ans2 = this.stringTrim(document.getElementById('ans2').value),\r\n valid = true;\r\n\r\n var loginApiUrl = $(e.currentTarget).data('loginapiurl');\r\n var destinationUrl = $(e.currentTarget).data('destinationurl');\r\n var saveApiUrl = $(e.currentTarget).data('saveapiurl');\r\n\r\n if (this.stringTrim(ans1) === '') {\r\n document.getElementById('ans1').style.border = '1px solid #cc0000';\r\n valid = false;\r\n } else {\r\n document.getElementById('ans1').style.border = '';\r\n }\r\n\r\n if (this.stringTrim(ans2) === '') {\r\n document.getElementById('ans2').style.border = '1px solid #cc0000';\r\n valid = false;\r\n } else {\r\n document.getElementById('ans2').style.border = '';\r\n }\r\n\r\n if (!valid) {\r\n document.getElementById('warningText').innerHTML = 'Please fill in the highlighted fields to continue';\r\n document.getElementById('warning').style.display = 'block';\r\n $('#loading').hide();\r\n } else {\r\n $.ajax({\r\n type: 'POST',\r\n url: saveApiUrl,\r\n xhrFields: {\r\n withCredentials: true\r\n },\r\n data: {\r\n 'Answer1': document.getElementById('ans1').value,\r\n 'Answer2': document.getElementById('ans2').value,\r\n 'Save': document.getElementById('saveDevice').checked\r\n },\r\n success: function (response, status, request) {\r\n document.getElementById('warning').style.display = 'none';\r\n $('#loading').hide();\r\n self.sendUserAnalytics(response, document.getElementById('login2'));\r\n self.getOauthToken(destinationUrl, OauthUrl, self);\n //self.redirect(request, destinationUrl);\r\n },\r\n error: function (response) {\r\n document.getElementById('ans1').value = '';\r\n document.getElementById('ans2').value = '';\r\n var error = self.checkKBAError(response.status, JSON.parse(response.responseText).message);\r\n document.getElementById('warningText').innerHTML = error;\r\n document.getElementById('warning').style.display = 'block';\r\n $('#loading').hide();\r\n if (error.indexOf('You have been locked out of your account.') < 0) {\r\n self.login(loginApiUrl, destinationUrl, true);\r\n }\r\n }\r\n });\r\n }\r\n },\r\n\r\n login: function (loginApiUrl, destinationUrl, keepWarning) {\r\n var self = this;\r\n var OauthUrl = $('#login2').data('oauthurl');\r\n var userID = this.stringTrim(document.getElementById('userid').value),\r\n pass = this.stringTrim(document.getElementById('password').value),\r\n valid = true;\r\n if (document.getElementById(\"rememberUserID\").checked) {\r\n // save username and password\r\n localStorage.Cssusername = userID;\r\n localStorage.Csschkbox = document.getElementById(\"rememberUserID\").checked;\r\n } else {\r\n localStorage.Cssusername = '';\r\n localStorage.Csschkbox = '';\r\n }\n\r\n if (this.stringTrim(userID) === '') {\r\n document.getElementById('userid').style.border = '1px solid #cc0000';\r\n valid = false;\r\n } else {\r\n document.getElementById('userid').style.border = '';\r\n }\r\n\r\n if (this.stringTrim(pass) === '') {\r\n document.getElementById('password').style.border = '1px solid #cc0000';\r\n valid = false;\r\n } else {\r\n document.getElementById('password').style.border = '';\r\n }\r\n\r\n if (!valid) {\r\n document.getElementById('warningText').innerHTML = 'Please fill in the highlighted fields to continue.';\r\n document.getElementById('warning').style.display = 'block';\r\n $('#loading').hide();\r\n } else {\r\n $.ajax({\r\n type: 'POST',\r\n url: loginApiUrl,\r\n xhrFields: {\r\n withCredentials: true\r\n },\r\n data: {\r\n 'UserID': userID,\r\n 'Password': pass,\r\n 'device': device()\r\n },\r\n success: function (response, status, request) {\r\n if (Array.isArray(response)) {\r\n if (response.length === 2) {\r\n document.getElementById('question1').innerHTML = response[0];\r\n document.getElementById('question2').innerHTML = response[1];\r\n document.getElementById('login-box').style.display = 'none';\r\n document.getElementById('answerQuestions').style.display = 'block';\n njmClientClickTracking.screenLoadingsuccessful(\"answerQuestions\", userID);\n\r\n } else {\r\n self.fillQuestions(response);\r\n document.getElementById('login-box').style.display = 'none';\r\n document.getElementById('createQuestions').style.display = 'block';\r\n\r\n $('#createQuestionsCancel').attr('data-backsection', 'login-box');\r\n }\r\n } else {\r\n self.sendUserAnalytics(response, document.getElementById('login1'));\r\n self.getOauthToken(destinationUrl, OauthUrl, self);\n //self.redirect(request, destinationUrl);\r\n }\r\n\r\n if (!keepWarning) {\r\n document.getElementById('warning').style.display = 'none';\r\n }\r\n $('#loading').hide();\r\n },\r\n error: function (response) {\r\n var errorResponse = self.checkLoginError(response);\r\n document.getElementById('warningText').innerHTML = errorResponse;\r\n document.getElementById('warning').style.display = 'block';\r\n $('#loading').hide();\r\n if (!document.getElementById(\"rememberUserID\").checked) {\n document.getElementById('userid').value = '';\r\n }\r\n document.getElementById('password').value = '';\r\n\r\n }\r\n });\r\n }\r\n },\r\n\r\n /**\r\n * Parse return error message for KBA\r\n **/\r\n checkKBAError: function (status, msg) {\r\n var errorMsg = 'We’re sorry, an error has occurred. Please try again later.';\r\n var userId = this.stringTrim(document.getElementById('userid').value);\r\n if (status === 400) {\r\n if (msg.indexOf('Your account has been locked') >= 0) {\r\n errorMsg = 'You have been locked out of your account. Please contact our customer service department during our business hours.';\r\n } else if (msg.indexOf('Your account is locked') >= 0) {\r\n errorMsg = 'Your account is locked. Please contact our Customer Service department during our business hours.';\r\n } else {\r\n errorMsg = 'The answers you have entered do not match our records. Please try again.';\r\n var index = msg.indexOf('You will be locked out');\r\n if (index >= 0) {\r\n errorMsg = errorMsg + ' ' + msg.substring(index);\r\n }\r\n }\r\n }\r\n njmClientClickTracking.logErrorGeneric(\"checkKBAError\", msg, status, userId, errorMsg);\r\n return errorMsg;\r\n },\r\n\r\n /**\r\n * Calls API to send email with code to enter and brings up enter code page\r\n **/\r\n forgotAnswers: function (e) {\n var UserId = document.getElementById('userid').value;\r\n njmClientClickTracking.linkClickedWithUserID(e.currentTarget, UserId);\r\n\r\n $.ajax({\r\n type: 'POST',\r\n xhrFields: {\r\n withCredentials: true\r\n },\r\n url: $(e.currentTarget).data('loginapiurl'),\r\n data: '=' + this.stringTrim(document.getElementById('userid').value),\r\n success: function (response, status, request) {\r\n document.getElementById('warning').style.display = 'none';\r\n document.getElementById('answerQuestions').style.display = 'none';\r\n document.getElementById('enterCode').style.display = 'block';\r\n $('#loading').hide();\r\n },\r\n error: function (response) {\n var msg = response.responseText ? JSON.parse(response.responseText).message : '';\n var userId = this.stringTrim(document.getElementById('userid').value);\n var warningText = \"We’re sorry, an error has occurred. Please try again later.\";\r\n document.getElementById('ans1').value = '';\r\n document.getElementById('ans2').value = '';\r\n document.getElementById('warningText').innerHTML = 'We’re sorry, an error has occurred. Please try again later.';\r\n document.getElementById('warning').style.display = 'block';\r\n $('#loading').hide();\n njmClientClickTracking.logErrorGeneric(\"forgotAnswers\", msg, response.status, userId, warningText);\r\n }\r\n });\r\n },\r\n\r\n verifyCodeEvent: function (e) {\r\n var validateApiUrl = $(e.currentTarget).data('validateapiurl');\r\n var destinationUrl = $(e.currentTarget).data('destinationurl');\r\n var UserId = document.getElementById('userid').value;\r\n njmClientClickTracking.linkClickedWithUserID(e.currentTarget, UserId);\r\n\r\n this.verifyCode(validateApiUrl, destinationUrl);\r\n },\r\n\r\n /**\r\n * Sends entered code to API for verification and redirects to CSS if valid\r\n **/\r\n verifyCode: function (validateApiUrl, destinationUrl) {\r\n var self = this;\r\n\r\n $('#loading').show();\r\n if (document.getElementById('code').value === '') {\r\n document.getElementById('code').style.border = '1px solid #cc0000';\r\n document.getElementById('warningText').innerHTML = 'Please fill in the highlighted fields to continue';\r\n document.getElementById('warning').style.display = 'block';\r\n $('#loading').hide();\r\n } else {\r\n $.ajax({\r\n type: 'POST',\r\n url: validateApiUrl,\r\n xhrFields: {\r\n withCredentials: true\r\n },\r\n //data: '=' + document.getElementById('code').value,\r\n\r\n data: {\r\n UserID: this.stringTrim(document.getElementById('userid').value),\r\n Key: document.getElementById('code').value\r\n },\r\n success: function (response, status, request) {\r\n document.getElementById('warning').style.display = 'none';\r\n $('#loading').hide();\r\n self.fillQuestions(response);\r\n document.getElementById('enterCode').style.display = 'none';\r\n document.getElementById('createQuestions').style.display = 'block';\r\n\r\n //redirect(request, destUrl);\r\n },\r\n error: function (response) {\r\n var msg = response.responseText ? JSON.parse(response.responseText).message : '',\r\n error = msg.indexOf('Mismatch') >= 0 ? 'The Validation Code you entered is not recognized. Please check the number and try again.' :\r\n msg.indexOf('Expired') >= 0 ? 'This Validation Code has expired. Please restart the security question reset process.' :\r\n 'We’re sorry, an error has occurred. Please try again later.';\r\n var userId = this.stringTrim(document.getElementById('userid').value);\r\n document.getElementById('code').value = '';\r\n document.getElementById('warningText').innerHTML = error;\r\n document.getElementById('warning').style.display = 'block';\r\n $('#loading').hide();\n njmClientClickTracking.logErrorGeneric(\"verifyCode\", msg, response.status, userId, error);\r\n }\r\n });\r\n }\r\n },\r\n\r\n /**\r\n * Calls API to update questions and redirects to portal if successful\r\n **/\r\n updateQuestions: function (e) {\r\n var self = this;\r\n\r\n var updateQuestionApiUrl = $(e.currentTarget).data('updatequestionapiurl');\r\n var destinationUrl = $(e.currentTarget).data('destinationurl');\r\n var UserId = document.getElementById('userid').value;\r\n njmClientClickTracking.linkClickedWithUserID(e.currentTarget, UserId);\r\n\r\n $('#loading').show();\r\n\r\n var kba1 = document.getElementById('kba1').value,\r\n kba2 = document.getElementById('kba2').value,\r\n kba3 = document.getElementById('kba3').value,\r\n valid = true;\r\n\r\n if (self.stringTrim(kba1) === '') {\r\n document.getElementById('kba1').style.border = '1px solid #cc0000';\r\n valid = false;\r\n } else {\r\n document.getElementById('kba1').style.border = '';\r\n }\r\n\r\n if (self.stringTrim(kba2) === '') {\r\n document.getElementById('kba2').style.border = '1px solid #cc0000';\r\n valid = false;\r\n } else {\r\n document.getElementById('kba2').style.border = '';\r\n }\r\n\r\n if (self.stringTrim(kba3) === '') {\r\n document.getElementById('kba3').style.border = '1px solid #cc0000';\r\n valid = false;\r\n } else {\r\n document.getElementById('kba3').style.border = '';\r\n }\r\n\r\n if (!valid) {\r\n document.getElementById('warningText').innerHTML = 'Please fill in the highlighted fields to continue';\r\n document.getElementById('warning').style.display = 'block';\r\n $('#loading').hide();\r\n } else if (self.validateAnswers()) {\r\n $.ajax({\r\n type: 'POST',\r\n url: updateQuestionApiUrl,\r\n xhrFields: {\r\n withCredentials: true\r\n },\r\n data: {\r\n UserID: this.stringTrim(document.getElementById('userid').value),\r\n\r\n //Password: document.getElementById('password').value,\r\n Question3Answer: document.getElementById('answer3').value,\r\n Question2Answer: document.getElementById('answer2').value,\r\n Question1Answer: document.getElementById('answer1').value,\r\n Question3: document.getElementById('kba3').value,\r\n Question2: document.getElementById('kba2').value,\r\n Question1: document.getElementById('kba1').value\r\n },\r\n success: function (response, status, request) {\r\n document.getElementById('warning').style.display = 'none';\r\n $('#loading').hide();\r\n self.redirect(destinationUrl);\r\n },\r\n error: function (response) {\n var msg = response.responseText ? JSON.parse(response.responseText).message : '';\n var errorMessage = \"We’re sorry, an error has occurred. Please try again later.\";\r\n var userId = this.stringTrim(document.getElementById('userid').value);\r\n document.getElementById('answer3').value = '';\r\n document.getElementById('answer2').value = '';\r\n document.getElementById('answer1').value = '';\r\n document.getElementById('kba3').value = '';\r\n document.getElementById('kba2').value = '';\r\n document.getElementById('kba1').value = '';\r\n document.getElementById('warningText').innerHTML = 'We’re sorry, an error has occurred. Please try again later.';\r\n document.getElementById('warning').style.display = 'block';\r\n $('#loading').hide();\n njmClientClickTracking.logErrorGeneric(\"updateQuestions\", msg, response.status, userId, errorMessage);\r\n }\r\n });\r\n }\r\n },\r\n\r\n areUniqueAnswers: function () {\r\n var isValid = true;\r\n\r\n var answer1 = document.getElementById('answer1').value,\r\n answer2 = document.getElementById('answer2').value,\r\n answer3 = document.getElementById('answer3').value;\r\n\r\n this.toggleErrorBorder('answer1', false);\r\n this.toggleErrorBorder('answer2', false);\r\n this.toggleErrorBorder('answer3', false);\r\n\r\n if (answer1 === answer2) {\r\n this.toggleErrorBorder('answer1', true);\r\n this.toggleErrorBorder('answer2', true);\r\n isValid = false;\r\n }\r\n\r\n if (answer1 === answer3) {\r\n this.toggleErrorBorder('answer1', true);\r\n this.toggleErrorBorder('answer3', true);\r\n isValid = false;\r\n }\r\n\r\n if (answer2 === answer3) {\r\n this.toggleErrorBorder('answer2', true);\r\n this.toggleErrorBorder('answer3', true);\r\n isValid = false;\r\n }\r\n\r\n return isValid;\r\n },\r\n\r\n /**\r\n * Validate answers are not the same, not part of question and in proper format\r\n * Returns true if they are and false otherwise\r\n * Updates warning message if needed\r\n **/\r\n validateAnswers: function () {\r\n\r\n if (!this.areUniqueAnswers()) {\r\n document.getElementById('warningText').innerHTML = 'Each security question must have a unique answer.';\r\n document.getElementById('warning').style.display = 'block';\r\n $('#loading').hide();\r\n return false;\r\n }\r\n\r\n var answer1 = document.getElementById('answer1').value,\r\n answer2 = document.getElementById('answer2').value,\r\n answer3 = document.getElementById('answer3').value;\r\n\r\n //check if answers are valid formatting\r\n var regex = /^[0-9a-zA-Z]{3,25}$/, valid = true;\r\n if (!regex.test(answer1)) {\r\n this.toggleErrorBorder('answer1', true);\r\n valid = false;\r\n } else {\r\n this.toggleErrorBorder('answer1', false);\r\n }\r\n\r\n if (!regex.test(answer2)) {\r\n this.toggleErrorBorder('answer2', true);\r\n valid = false;\r\n } else {\r\n this.toggleErrorBorder('answer2', false);\r\n }\r\n\r\n if (!regex.test(answer3)) {\r\n this.toggleErrorBorder('answer3', true);\r\n valid = false;\r\n } else {\r\n this.toggleErrorBorder('answer3', false);\r\n }\r\n\r\n if (!valid) {\r\n document.getElementById('warningText').innerHTML = 'Each answer must be 3-25 characters in length and must only use numeric characters (0-9) and/or alphabetic characters (a-z, A-Z).';\r\n document.getElementById('warning').style.display = 'block';\r\n $('#loading').hide();\r\n\r\n return false;\r\n }\r\n\r\n //check if answer is part of question\r\n var question, markInvalid = false;\r\n for (var i = 1; i <= 3; i++) {\r\n question = $('#kba' + i + ' option:selected').text().toLowerCase().split(' ');\r\n var answer = document.getElementById('answer' + i).value.toLowerCase();\r\n\r\n for (var j = 0; j < question.length; j++) {\r\n if (question[j].indexOf(answer) >= 0) {\r\n document.getElementById('answer' + i).style.border = '1px solid #cc0000';\r\n valid = false;\r\n markInvalid = true;\r\n break;\r\n }\r\n }\r\n\r\n if (!markInvalid) {\r\n document.getElementById('answer' + i).style.border = '';\r\n }\r\n }\r\n\r\n if (!valid) {\r\n document.getElementById('warningText').innerHTML = 'Your answer cannot contain wording from the security question.';\r\n document.getElementById('warning').style.display = 'block';\r\n $('#loading').hide();\r\n\r\n return false;\r\n }\r\n\r\n return true;\r\n },\r\n\r\n toggleErrorBorder: function (field, toggle) {\r\n if (toggle) {\r\n document.getElementById(field).style.border = '1px solid #cc0000';\r\n }\r\n else {\r\n document.getElementById(field).style.border = '';\r\n }\r\n },\r\n\r\n /**\r\n * Fill questions select boxes\r\n **/\r\n fillQuestions: function (questions) {\r\n var question, opt;\r\n\r\n for (var i = 1; i <= 3; i++) {\r\n question = document.getElementById('kba' + i);\r\n for (var j = 0; j < questions.length; j++) {\r\n opt = document.createElement('option');\r\n opt.innerHTML = questions[j].text;\r\n opt.value = questions[j].number;\r\n question.appendChild(opt);\r\n }\r\n }\r\n },\r\n\r\n sendUserAnalytics: function (response, loginButton) {\r\n var userId = this.stringTrim(document.getElementById('userid').value);\r\n var login2Button = document.getElementById('login2');\r\n console.log(JSON.stringify(response));\r\n //Parse Response\r\n if (response !== null && response.policies !== null && response.policies.length > 0) {\r\n var inputPolicyTypes = [];\n var policyStatus = \"Active\";\r\n response.policies.forEach(function (item) {\r\n if (item !== null) {\n policyStatus = \"InActive\";\n if (item.policyStatus === 1) {\n policyStatus = \"Active\";\r\n }\n var policy = {\n \"policyType\": item.policyType,\n \"policyStatus\": policyStatus\r\n }\r\n inputPolicyTypes.push(policy);\r\n }\r\n });\r\n\r\n njmClientClickTracking.trackUser(loginButton, userId, inputPolicyTypes);\r\n }\r\n },\r\n\r\n backToSection: function (e) {\r\n var backSection = $(e.currentTarget).data('backsection');\r\n var currentSection = $(e.currentTarget).data('currentsection');\r\n\r\n if (backSection === 'login-box') {\r\n this.cancelReset(e);\r\n return;\r\n }\r\n var UserId = document.getElementById('userid').value;\r\n njmClientClickTracking.linkClickedWithUserID(e.currentTarget, UserId);\r\n\r\n document.getElementById(\"warning\").style.display = \"none\";\r\n document.getElementById(currentSection).style.display = \"none\";\r\n document.getElementById(backSection).style.display = \"block\";\r\n },\r\n\r\n passwordVisibility: function (e) {\r\n var self = e.currentTarget;\r\n if ($(self).text() === 'Show') {\r\n $('.cssLogin input#password').attr('type', 'text');\r\n $(self).text('Hide');\r\n } else {\r\n $('.cssLogin input#password').attr('type', 'password');\r\n $(self).text('Show');\r\n }\r\n },\r\n\r\n isCapsLockOn: function (e) {\r\n if (e.originalEvent.getModifierState(\"CapsLock\")) {\r\n return true;\r\n } else {\r\n return false;\r\n }\r\n },\n urlParam: function (name, goto) {\r\n var locationCheck;\r\n name = name.toLowerCase();\r\n\r\n if (!goto) {\r\n var location = window.location.search,\r\n index = location.indexOf('=');\r\n locationCheck = location.substring(0, index).toLowerCase() + location.substring(index);\r\n }\r\n else locationCheck = goto;\r\n\r\n var results = new RegExp('[\\?&]' + name + '=([^&#]*)')\r\n .exec(locationCheck);\r\n\r\n return (results !== null) ? results[1] || 0 : false;\r\n },\r\n getOauthToken: function (destUrl, OauthUrl, self) {\n var goto = \"\";\n if (location.href.indexOf('agent') !== -1) {\n goto = decodeURIComponent(location.href.substr(location.href.indexOf('agent'))).replace(\"#\", \"%20%25\");\r\n }\r\n\r\n\r\n self.redirect(OauthUrl + goto + \"&realm=/B2C_Admin/CSS_Admin/CSS_Users\");\r\n },\r\n capslockHint: function (e) {\r\n if (this.isCapsLockOn(e) && ($('#warning').css('display') === 'block')) {\r\n $(\".capslock-hint\").css('display', 'inline-block');\r\n } else {\r\n $(\".capslock-hint\").css('display', 'none');\r\n }\r\n }\r\n });\r\n})(jQuery, njm);\r\n","(function ($, njm) {\r\n 'use strict';\r\n\r\n njm.views.customModal = Backbone.View.extend({\r\n\t\t\r\n\t\tevents: {\r\n\t\t\t\"click .close\": \"closeModal\",\r\n\t\t\t\"focus .form-group input, .form-group textarea\": \"handleFieldFocus\",\r\n\t\t\t\"blur .form-group input, .form-group textarea\": \"handleFieldBlur\"\r\n\t\t},\r\n\t\t\r\n\t\tinitialize: function() {\r\n\t\t\t\r\n\t\t\tif (!window.customModal) {\r\n\t\t\t\twindow.customModal = {};\r\n\t\t\t}\r\n\t\t\t\r\n\t\t\tif (!window.customModal.initialized) {\r\n\t\t\t\twindow.customModal.initialized = true;\r\n\t\t\t\t\r\n\t\t\t\t$('body').click(this.handleBodyClicks.bind(this));\r\n\t\t\t\t$('body').keydown(this.handleKey.bind(this));\r\n\t\t\t\t$('body').on('click', 'a', this.handleLinkClicks.bind(this));\r\n\t\t\t\t\r\n\t\t\t\t//check for modal the in url\r\n\t\t\t\tthis.hash = window.location.hash;\r\n\t\t\t\tif (this.hash.indexOf('modal') > -1) {\r\n\t\t\t\t\tvar exists = this.openGenericCustomModal(this.hash);\r\n\r\n\t\t\t\t\tif (!exists) {\r\n\t\t\t\t\t\tthis.hash = null;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\t\r\n\t\t\t// Get all the modals on the page\r\n\t\t\tthis.modal = $('.custom-modal');\r\n\t\t\t\r\n\t\t\t// Array of all focusable elements\r\n\t\t\tthis.focusableEls;\r\n\t\t\tthis.lastElement;\r\n\t\t\tthis.firstElement;\r\n\t\t\t\r\n\t\t\t//variable to capture the potential presence of a scrollbar\r\n\t\t\tthis.scroll;\r\n\t\t\t\r\n\t\t},\r\n\t\t\r\n\t\thandleBodyClicks: function(event) {\r\n\t\t\t\r\n\t\t\tif (this.modal.hasClass('visible') && $(event.target).closest('.custom-modal .modal-content').length === 0) {\r\n\t\t\t\tthis.closeModal();\r\n\t\t\t}\r\n\t\t\t\r\n\t\t},\r\n\t\t\r\n\t\thandleLinkClicks: function(event) {\r\n\t\t\t\r\n\t\t\tvar hrefVal = $(event.target).closest('a').attr(\"href\");\r\n\r\n\t\t\tif (hrefVal != '' && hrefVal != undefined && hrefVal != null) {\r\n\t\t\t\tif (hrefVal === \"#modal\") {\r\n\t\t\t\t\tthis.openGenericModal();\r\n\t\t\t\t\treturn false;\r\n\t\t\t\t}\r\n\t\t\t\telse if (hrefVal.indexOf(\"#modal\") == 0) {\r\n\t\t\t\t\tthis.openGenericCustomModal(hrefVal);\r\n\t\t\t\t\treturn false;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\telse {\r\n\t\t\t\treturn true;\r\n\t\t\t}\r\n\t\t\t\r\n\t\t},\r\n\t\t\r\n\t\thandleKey: function() {\r\n\t\t\t\r\n\t\t\tif (this.modal.hasClass('visible') && event.which === 27) {\r\n\t\t\t\tthis.closeModal();\r\n\t\t\t}\r\n\t\t\t\r\n\t\t\tif (event.which === 9) {\r\n\t\t\t\tthis.handleTab(event);\r\n\t\t\t}\r\n\t\t\t\r\n\t\t\tif ($(event.target).closest('.custom-modal .close').length === 1 && event.which === 13 ) {\r\n\t\t\t\tthis.closeModal();\r\n\t\t\t}\r\n\t\t},\r\n\t\t\r\n\t\thandleTab: function(event) {\r\n\t\t\t\r\n\t\t\tif (event.currentTarget == this.firstElement) {\r\n\t\t\t\tif (this.focusableEls.length === 1 && event.which === 9) {\r\n\t\t\t\t\tevent.preventDefault();\r\n\t\t\t\t} else if(this.focusableEls.length > 1 && event.which === 9) {\r\n\t\t\t\t\tif (event.shiftKey) {\r\n\t\t\t\t\t\tthis.lastElement.focus();\r\n\t\t\t\t\t\tevent.preventDefault();\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\t\r\n\t\t\tif (event.currentTarget == this.lastElement) {\r\n\t\t\t\tif (this.focusableEls.length === 1 && event.which === 9) {\r\n\t\t\t\t\tevent.preventDefault();\r\n\t\t\t\t} else if(this.focusableEls.length > 1 && event.which === 9) {\r\n\t\t\t\t\tif (event.shiftKey) {\r\n\t\t\t\t\t\treturn true;\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\tthis.firstElement.focus();\r\n\t\t\t\t\t\tevent.preventDefault();\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t},\r\n\t\t\r\n\t\thandleFieldFocus: function(event) {\r\n\t\t\t$(event.target).parents('.form-group').addClass('focused');\r\n\t\t},\r\n\t\t\r\n\t\thandleFieldBlur: function(event) {\r\n\t\t\t\r\n\t\t\tvar $target = $(event.target),\r\n\t\t\t\tinputValue = $target.val();\r\n\t\t\t\r\n\t\t\tif (inputValue ==+ \"\") {\r\n\t\t\t\t$target.parents('.form-group').removeClass('focused');\r\n\t\t\t\t$target.removeClass('filled');\r\n\t\t\t} else {\r\n\t\t\t\t$target.addClass('filled');\r\n\t\t\t}\r\n\t\t},\r\n\t\t\r\n\t\topenGenericModal: function() {\r\n\t\t\t\r\n\t\t\tvar formModal = $('#generic-custom-modal');\r\n\t\t\r\n\t\t\tif (formModal.length) {\r\n\t\t\t\tthis.scroll = ($(document).height() > window.innerHeight);\r\n\t\t\t\t\r\n\t\t\t\tif (this.scroll) {\r\n\t\t\t\t\t$('body').css('padding-right', this.measureScrollbarWidth() + 'px');\r\n\t\t\t\t}\r\n\t\t\t\t\r\n\t\t\t\tif (!window.customModal) {\r\n\t\t\t\t\twindow.customModal = {};\r\n\t\t\t\t}\r\n\t\t\t\twindow.customModal.activeEl = $(document.activeElement);\r\n\t\t\t\t\r\n\t\t\t\tformModal.fadeIn(100).addClass('visible');\r\n\t\t\t\t$('body').addClass('modal-open');\r\n\t\t\t\t\r\n\t\t\t\tthis.setFocusableEls(formModal)\r\n\t\t\t\t\r\n\t\t\t\tformModal.find('.close').focus();\r\n\t\t\t}\r\n\t\t},\r\n\t\t\r\n\t\topenGenericCustomModal: function(modalid) {\r\n\r\n\t\t\t\r\n\t\t\tvar customModal = $(modalid);\r\n\t\t\r\n\t\t\tif (customModal.length) {\r\n\t\t\t\t\r\n\t\t\t\tthis.scroll = ($(document).height() > window.innerHeight);\r\n\r\n\t\t\t\tif (this.scroll) {\r\n\t\t\t\t\t$('body').css('padding-right', this.measureScrollbarWidth() + 'px');\r\n\t\t\t\t}\r\n\t\t\t\t\r\n\t\t\t\tif (!window.customModal) {\r\n\t\t\t\t\twindow.customModal = {};\r\n\t\t\t\t}\r\n\t\t\t\twindow.customModal.activeEl = $(document.activeElement);\r\n\t\t\t\t\r\n\t\t\t\tcustomModal.fadeIn(100).addClass('visible');\r\n\t\t\t\t$('body').addClass('modal-open');\r\n\t\t\t\t\r\n\t\t\t\tthis.setFocusableEls(customModal)\r\n\t\t\t\t\r\n\t\t\t\tcustomModal.find('.close').focus();\r\n\t\t\t\t\r\n\t\t\t\treturn true;\r\n\t\t\t} else {\r\n\t\t\t\treturn false;\r\n\t\t\t}\r\n\t\t},\r\n\t\t\r\n\t\tsetFocusableEls: function(modal) {\r\n\t\t\t\r\n\t\t\tthis.focusableEls = modal.find('a[href], area[href], input:not([disabled]):not([type=hidden]), select:not([disabled]), textarea:not([disabled]), button:not([disabled]), [tabindex=\"0\"]');\r\n\t\t\tif (this.focusableEls.length) {\r\n\t\t\t\tthis.lastElement = this.focusableEls[this.focusableEls.length - 1];\r\n\t\t\t\tthis.firstElement = this.focusableEls[0];\r\n\t\t\t\t$(this.firstElement).keydown(this.handleTab.bind(this));\r\n\t\t\t\t$(this.lastElement).keydown(this.handleTab.bind(this));\r\n\t\t\t}\r\n\t\t},\r\n\t\t\r\n\t\tcloseModal: function() {\r\n\t\t\tthis.modal.hide();\r\n\t\t\t\r\n\t\t\t$('body').removeClass('modal-open');\r\n\t\t\t\r\n\t\t\tif (this.scroll) {\r\n\t\t\t\t$('body').css('padding-right','');\r\n\t\t\t}\r\n\t\t\t\r\n\t\t\tthis.modal.removeClass('visible');\r\n\t\t\t\r\n\t\t\tif (window.customModal && window.customModal.activeEl) {\r\n\t\t\t\twindow.customModal.activeEl.focus();\r\n\t\t\t}\r\n\t\t\t\r\n\t\t\tthis.focusableEls = [];\r\n\t\t\tthis.lastElement = null;\r\n\t\t\tthis.firstElement = null;\r\n\t\t},\r\n\t\t\r\n\t\tmeasureScrollbarWidth: function() {\r\n\t\t\treturn window.innerWidth - $(document).width();\r\n\t\t}\r\n\t\t\r\n\t});\r\n})(jQuery, njm);\n","(function ($, njm) {\n 'use strict';\n\n njm.views.dataLayer = Backbone.View.extend({\n\n events: {\n 'click [data-layer]:not(.disabled)': 'clickAction'\n },\n\n /**\n * Click Action\n * @param {Object} e\n */\n clickAction: function (e) {\n // check if dayaLayer available\n if (dataLayer) {\n // get the current event\n var event = $(e.currentTarget).data('layer');\n var params = this.parseDataLayer($(e.currentTarget).data());\n\n // execute action\n if (event) {\n dataLayer.push(_.extend({ event: event }, params));\n }\n }\n },\n\n /**\n * Parse Daya Layer Attributes\n * @param data\n * @returns {{}}\n */\n parseDataLayer: function (data) {\n var newData = {};\n\n _.each(data, function (v, k) {\n var newKey = k.replace('layer', '');\n if (newKey) {\n newData[k.replace('layer', '')] = v;\n }\n });\n\n return newData;\n }\n\n });\n})(jQuery, njm);\n","(function ($, njm) {\r\n 'use strict';\r\n\r\n njm.views.featuredNewslist = Backbone.View.extend({\r\n\r\n events: {\r\n \t\"click button\": \"validate\",\r\n\t\t\t\"focus #news-release-search.validated\": \"validate\",\r\n\t\t\t\"focus #news-release-search.validated + button\": \"validate\"\r\n\t\t},\r\n\t\t\r\n\t\tinitialize: function() {\r\n\t\t\tvar $this = this;\r\n\t\t\t\r\n\t\t\tthis.form = this.$(\"form\");\r\n\t\t\t\r\n\t\t\tthis.formField = this.$(\"#news-release-search\");\r\n\t\t\t\r\n\t\t\tthis.regexPattern = this.formField.attr(\"data-val-regex\");\r\n\t\t\r\n\t\t\tthis.regexErrorText = this.formField.attr(\"data-val-regex-error\");\r\n\t\t\t\r\n\t\t\tthis.requiredErrorText = this.formField.attr(\"data-val-required\");\r\n\t\t\t\r\n\t\t\tthis.errorTooltip = this.$(\"#searchErrorMsg\");\r\n\t\t\t\r\n\t\t\t$(document).on('click focusin', function(e) {\t\r\n\t\t\t\tif ($(e.target).closest('.comp-featured-newslist .search').length === 0) {\r\n\t\t\t\t\tconsole.log('document click/focus');\r\n\t\t\t\t\t$this.hideError();\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t},\r\n\t\t\r\n\t\tvalidate: function() {\r\n\t\t\tif (this.formField.val().trim() === '') {\r\n\t\t\t\tthis.errorTooltip.text(this.requiredErrorText);\r\n\t\t\t\tthis.form.addClass('haserror');\r\n\t\t\t\tthis.formField.removeClass('validated');\r\n\t\t\t\treturn false;\r\n\t\t\t} else {\r\n\t\t\t\tvar val = this.formField.val(),\r\n\t\t\t\t\tregex = new RegExp(this.regexPattern),\r\n\t\t\t\t\tvalid = regex.test(val);\r\n\t\t\t\t\r\n\t\t\t\tif (!valid) {\r\n\t\t\t\t\tthis.errorTooltip.text(this.regexErrorText);\r\n\t\t\t\t\tthis.form.addClass('haserror');\r\n\t\t\t\t\tthis.formField.addClass('validated');\r\n\t\t\t\t}\r\n\t\t\t\t\r\n\t\t\t\treturn valid;\r\n\t\t\t}\r\n\t\t},\r\n\t\t\r\n\t\thideError: function(e) {\r\n\t\t\tthis.form.removeClass('haserror');\r\n\t\t}\r\n\t\t\r\n\t});\r\n})(jQuery, njm);","(function ($, njm) {\r\n 'use strict';\r\n\r\n njm.views.getCommercialAutoQuote = Backbone.View.extend({\r\n\r\n events: {\r\n 'click .selected': 'openSelect',\r\n 'click #selectState a': 'selectState',\r\n 'click #selectVehicle a': 'selectVehicle',\r\n 'click #gotoQuote': 'navigate'\r\n },\r\n\r\n /**\r\n * Initialize\r\n */\r\n initialize: function () {\r\n this.$state = $('#selectState .selected');\n this.$product = $('#selectVehicle .selected');\r\n this.$button = $('#gotoQuote');\n this.$linkHref = $('#gotoQuote').attr(\"href\");\n this.$linkTarget = $('#gotoQuote').attr(\"target\");\n this.$geoLoc = this.$('input[name=geostate]');\r\n this.initialProductOption = $('#selectVehicle .selected').text();\r\n this.selected = {\r\n stateIndex: 0,\r\n products: [],\r\n productIndex: 0,\r\n device: 'desktop'\r\n };\n \r\n\r\n if (/Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(navigator.userAgent)) {\r\n this.selected.device = 'mobile';\r\n }\r\n this.$button.addClass('disabled');\r\n if ($('#selectState a.active').length) {\r\n this.setState($('#selectState a.active').text());\r\n }\n if (this.$geoLoc.val() !== '') {\r\n this.setState(this.$geoLoc.val());\r\n }\n\r\n $('body').click(this.hideDropdown.bind(this));\r\n },\r\n\r\n /**\r\n * Open custom selects\r\n */\r\n openSelect: function (e) {\r\n var $select = $(e.currentTarget).parent();\r\n if (!$select.hasClass('disabled')) {\r\n $(e.currentTarget)\r\n .parent().toggleClass('open')\r\n .find('ul').slideToggle(200);\r\n }\r\n },\r\n\r\n /**\r\n * Select State\r\n */\r\n selectState: function (e) {\r\n e.preventDefault();\r\n var $selected = $(e.currentTarget);\r\n this.setState($selected.text());\r\n this.$button.addClass('disabled');\r\n $('#selectVehicle span').text('Select Vehicles');\r\n $selected\r\n .addClass('active')\r\n .parent().siblings().children('a').removeClass('active')\r\n .parents('ul').slideToggle(200)\r\n .parent().toggleClass('open');\r\n },\r\n\r\n /**\r\n * Set State\r\n * @param {string} state\r\n */\r\n setState: function (state) {\r\n this.$state.text(state);\r\n this.$button.data('layer-state', state);\r\n },\r\n\r\n /**\r\n * Select Product\r\n */\r\n selectVehicle: function (e) {\r\n e.preventDefault();\r\n var $selected = $(e.currentTarget);\r\n this.$product.text($selected.text());\r\n\r\n $selected\r\n .addClass('active')\r\n .parent().siblings().children('a').removeClass('active')\r\n .parents('ul').slideToggle(200)\r\n .parent().toggleClass('open');\r\n\r\n this.$button.data('layer-state', $selected.text());\r\n $('#selectVehicle ul').hide();\r\n this.loadUrl();\n },\r\n \r\n /**\r\n * Load URL for button\r\n */\r\n loadUrl: function () {\r\n this.$button\r\n .removeClass('disabled');\n var $selectedState = $('#selectState .selected').text();\n var $selectedVehicles = $('#selectVehicle .selected').text();\n var $conditionState = this.$button.data('state-condition');\n var $conditionVehicle = this.$button.data('vehicle-condition');\n var redirectUrl = this.$button.data('redirect-url');\n var redirectTarget = this.$button.data('redirect-target');\n if ($selectedState === $conditionState && $selectedVehicles === $conditionVehicle) {\n this.$button\r\n .attr({ 'href': redirectUrl, 'target' : redirectTarget })\r\n }\n else {\n this.$button.attr({ 'href': this.$linkHref, 'target': this.$linkTarget })\r\n }\n },\r\n hideDropdown: function (e, target) {\n if (!$(e.target).closest('#selectState').length) {\r\n $('#selectState').removeClass('open').find('ul').slideUp(200);\r\n }\n if (!$(e.target).closest('#selectVehicle').length) {\r\n $('#selectVehicle').removeClass('open').find('ul').slideUp(200);\r\n }\r\n },\r\n /**\r\n * Button click\r\n */\r\n navigate: function (e) {\n if ($(this.$button).hasClass('disabled')) {\n e.preventDefault();\n return false;\n }\n else {\n var $lnkHref = $('#gotoQuote').attr(\"href\");\n if (e.currentTarget === \"#modal\" || e.currentTarget === \"##modal\" || $lnkHref === \"#modal\" || $lnkHref === \"##modal\" ) {\n e.preventDefault();\n njmGenericModal.openGenericModal();\n return false;\n }\r\n }\r\n },\r\n });\r\n})(jQuery, njm);\r\n","(function ($, njm) {\r\n 'use strict';\r\n\r\n njm.views.getQuoteDynamicProductDefined = Backbone.View.extend({\r\n\r\n events: {\r\n 'click .selected': 'openSelect',\r\n 'click #selectState a': 'selectState',\r\n 'click #gotoQuote': 'navigate'\r\n },\r\n\r\n /**\r\n * Initialize\r\n */\r\n initialize: function () {\r\n this.$state = $('#selectState .selected');\r\n this.$button = $('#gotoQuote');\r\n this.$geoState = this.$('input[name=geostate]');\r\n this.$telephone = this.$('#quoteTelephone');\r\n\r\n this.data = window.quoteApps;\r\n this.selected = {\r\n stateIndex: 0,\r\n products: [],\r\n productIndex: 0,\r\n device: 'desktop'\r\n };\r\n\r\n if (/Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(navigator.userAgent)) {\r\n this.selected.device = 'mobile';\r\n }\r\n\r\n this.$button.addClass('disabled');\r\n\r\n if ($('#selectState a.active').length) {\r\n this.setState($('#selectState a.active').text());\r\n this.loadUrl();\r\n }\r\n\r\n if (this.$geoState.val() !== '') {\r\n this.setState(this.$geoState.val());\r\n this.loadUrl();\r\n }\r\n },\r\n\r\n /**\r\n * Open custom selects\r\n */\r\n openSelect: function (e) {\r\n var $select = $(e.currentTarget).parent();\r\n\r\n if (!$select.hasClass('disabled')) {\r\n if ($select[0].id === \"selectState\") {\r\n $('#selectProduct ul').hide();\r\n }\r\n\r\n $(e.currentTarget)\r\n .parent().toggleClass('open')\r\n .find('ul').slideToggle(200);\r\n }\r\n },\r\n\r\n /**\r\n * Select State\r\n */\r\n selectState: function (e) {\r\n e.preventDefault();\r\n var $selected = $(e.currentTarget);\r\n\r\n this.setState($selected.text());\r\n\r\n this.$button.addClass('disabled');\r\n\r\n $selected\r\n .addClass('active')\r\n .parent().siblings().children('a').removeClass('active')\r\n .parents('ul').slideToggle(200)\r\n .parent().toggleClass('open');\r\n \r\n this.loadUrl();\r\n },\r\n\r\n /**\r\n * Set State\r\n * @param {string} state\r\n */\r\n setState: function (state) {\r\n this.$state.text(state);\r\n this.selected.stateIndex = this.findStateIndex(state);\r\n this.$button.data('layerState', state);\r\n },\r\n \r\n findStateIndex: function (stateName) {\r\n var toReturn;\r\n $.each($('#selectState a'), function (key, value) {\r\n if (value.text === stateName) {\r\n toReturn = key;\r\n return false;\r\n }\r\n });\r\n\r\n return toReturn;\r\n },\r\n\r\n /**\r\n * Load URL for button\r\n */\r\n loadUrl: function () {\r\n var queryString = window.location.search;\r\n var url = '';\r\n var target = '';\r\n var phoneLink = '';\r\n var phoneText = '';\r\n\r\n if(this.data[this.selected.stateIndex] !== undefined && this.data[this.selected.stateIndex].products.length){\r\n this.$product = this.data[this.selected.stateIndex].products[0];\r\n this.$button.data('layerProduct', this.$product.name);\r\n\r\n url = this.$product.desktop;\r\n target = this.$product.desktopTarget;\r\n phoneLink = this.$product.phoneLink;\r\n phoneText = this.$product.phoneText;\r\n\r\n if (this.selected.device === 'mobile') {\r\n url = this.$product.mobile;\r\n target = this.$product.mobileTarget;\r\n }\r\n\r\n this.$button\r\n .attr({ 'href': url + queryString, 'target': target })\r\n .removeClass('disabled');\r\n \r\n if (phoneText !== '' && phoneLink !== ''){\r\n this.$telephone.attr({'href': phoneLink});\r\n this.$telephone.text(phoneText);\r\n }\r\n else{\r\n this.$telephone.removeAttr('href');\r\n this.$telephone.text('');\r\n }\r\n }\r\n },\r\n\r\n /**\r\n * Button click\r\n */\r\n navigate: function (e) {\r\n if ($(e.currentTarget).hasClass('disabled')) {\r\n e.preventDefault();\r\n }\r\n }\r\n });\r\n})(jQuery, njm);\r\n","(function ($, njm) {\r\n 'use strict';\r\n\r\n njm.views.getQuoteDynamic = Backbone.View.extend({\r\n\r\n events: {\r\n 'click .selected': 'openSelect',\r\n 'click #selectState a': 'selectState',\r\n 'click #selectProduct a': 'selectProduct',\r\n 'click #gotoQuote': 'navigate'\r\n },\r\n\r\n /**\r\n * Initialize\r\n */\r\n initialize: function () {\r\n this.$state = $('#selectState .selected');\r\n this.$product = $('#selectProduct .selected');\r\n this.$button = $('#gotoQuote');\r\n this.$geoState = this.$('input[name=geostate]');\r\n this.$telephone = this.$('#quoteTelephone');\r\n\r\n this.initialProductOption = $('#selectProduct .selected').text();\r\n\r\n this.data = window.quoteApps;\r\n this.selected = {\r\n stateIndex: 0,\r\n products: [],\r\n productIndex: 0,\r\n device: 'desktop'\r\n };\r\n\r\n if (/Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(navigator.userAgent)) {\r\n this.selected.device = 'mobile';\r\n }\r\n\r\n this.$product.parent().addClass('disabled');\r\n this.$button.addClass('disabled');\r\n\r\n if ($('#selectState a.active').length) {\r\n this.setState($('#selectState a.active').text());\r\n this.loadProducts();\r\n }\r\n\r\n if (this.$geoState.val() !== '') {\r\n this.setState(this.$geoState.val());\r\n this.loadGeoBasedProducts();\r\n }\n $('body').click(this.hideDropdown.bind(this));\r\n },\r\n\r\n /**\r\n * Open custom selects\r\n */\r\n openSelect: function (e) {\r\n var $select = $(e.currentTarget).parent();\r\n\r\n if (!$select.hasClass('disabled')) {\r\n if ($select[0].id === \"selectState\") {\r\n $('#selectProduct ul').hide();\r\n }\r\n\r\n $(e.currentTarget)\r\n .parent().toggleClass('open')\r\n .find('ul').slideToggle(200);\r\n }\r\n },\r\n\r\n /**\r\n * Select State\r\n */\r\n selectState: function (e) {\r\n e.preventDefault();\r\n var $selected = $(e.currentTarget);\r\n\r\n this.setState($selected.text());\r\n\r\n this.$button.addClass('disabled');\r\n $('#selectProduct span').text('Select Products');\r\n $('#selectProduct ul').empty();\r\n $selected\r\n .addClass('active')\r\n .parent().siblings().children('a').removeClass('active')\r\n .parents('ul').slideToggle(200)\r\n .parent().toggleClass('open');\r\n $('#selectProduct ul').hide();\r\n this.loadProducts();\r\n this.resetTelephone();\r\n },\r\n\r\n /**\r\n * Set State\r\n * @param {string} state\r\n */\r\n setState: function (state) {\r\n this.$state.text(state);\r\n this.$button.data('layerState', state);\r\n },\r\n\r\n /**\r\n * Select Product\r\n */\r\n selectProduct: function (e) {\r\n e.preventDefault();\r\n var $selected = $(e.currentTarget);\r\n\r\n this.$product.text($selected.text());\r\n\r\n $selected\r\n .addClass('active')\r\n .parent().siblings().children('a').removeClass('active')\r\n .parents('ul').slideToggle(200)\r\n .parent().toggleClass('open');\r\n\r\n this.$button.data('layerProduct', $selected.text());\r\n $('#selectProduct ul').hide();\r\n this.loadUrl();\r\n },\r\n\r\n /**\r\n * Load Products\r\n */\r\n loadProducts: function () {\r\n var $list = $('#selectProduct ul');\r\n\r\n this.selected.stateIndex = $('#selectState a').index($('#selectState a.active')[0]);\r\n this.selected.products = this.data[this.selected.stateIndex].products;\r\n\r\n $list.empty();\r\n\r\n $(this.selected.products).each(function (index, item) {\r\n $list.append('
  • ' + item.name + '
  • ');\r\n });\r\n\r\n this.$product.parent().removeClass('disabled');\r\n },\r\n findGeoIndex: function (stateName) {\r\n var toReturn;\r\n $.each($('#selectState a'), function (key, value) {\r\n if (value.text === stateName) {\r\n toReturn = key;\r\n return false;\r\n }\r\n });\r\n\r\n return toReturn;\r\n },\r\n loadGeoBasedProducts: function () {\r\n var $list = $('#selectProduct ul');\r\n if (this.$geoState.val() !== '') {\r\n this.selected.stateIndex = this.findGeoIndex(this.$geoState.val());\r\n this.selected.products = this.data[this.selected.stateIndex].products;\r\n\r\n $list.empty();\r\n\r\n $(this.selected.products).each(function (index, item) {\r\n $list.append('
  • ' + item.name + '
  • ');\r\n });\r\n\r\n this.$product.parent().removeClass('disabled');\r\n }\r\n },\r\n /**\r\n * Load URL for button\r\n */\r\n loadUrl: function () {\r\n var queryString = window.location.search;\r\n var url = '';\r\n var target = '';\r\n var phoneLink = '';\r\n var phoneText = '';\r\n this.selected.productIndex = $('#selectProduct a').index($('#selectProduct a.active')[0]);\r\n\r\n url = this.selected.products[this.selected.productIndex].desktop;\r\n target = this.selected.products[this.selected.productIndex].desktopTarget;\r\n phoneLink = this.selected.products[this.selected.productIndex].phoneLink;\r\n phoneText = this.selected.products[this.selected.productIndex].phoneText;\r\n\r\n if (this.selected.device === 'mobile') {\r\n url = this.selected.products[this.selected.productIndex].mobile;\r\n target = this.selected.products[this.selected.productIndex].mobileTarget;\r\n }\r\n\r\n this.$button\r\n .attr({ 'href': url + queryString, 'target': target })\r\n .removeClass('disabled');\r\n\r\n if (phoneText !== '' && phoneLink !== ''){\r\n this.$telephone.attr({'href': phoneLink});\r\n this.$telephone.text(phoneText);\r\n }\r\n else{\r\n this.resetTelephone();\r\n }\r\n },\r\n hideDropdown: function (e, target) {\n if (!$(e.target).closest('#selectState').length) {\r\n $('#selectState').removeClass('open').find('ul').slideUp(200);\r\n }\n if (!$(e.target).closest('#selectProduct').length) {\r\n $('#selectProduct').removeClass('open').find('ul').slideUp(200);\r\n }\r\n },\r\n /**\r\n * Button click\r\n */\r\n navigate: function (e) {\r\n if ($(e.currentTarget).hasClass('disabled')) {\r\n e.preventDefault();\r\n }\r\n },\r\n\r\n resetTelephone: function(){\r\n this.$telephone.removeAttr('href');\r\n this.$telephone.text('');\r\n }\r\n });\r\n})(jQuery, njm);\r\n","(function ($, njm) {\n 'use strict';\n\n njm.views.header = Backbone.View.extend({\n\n /**\n * Initialize\n */\n initialize: function () {\n this.$holder = this.$('.holder');\n this.$body = $('body');\n\n // execute view and listener\n this.listenToMedia(this.render.bind(this));\n this.render(this.getCurrentMedia());\n },\n\n /**\n * Render\n * @param {string} media\n */\n render: function (media) {\n // close and remove last view to avoid duplicated view and events\n if (this.lastView) {\n\n // skip if media remain supported\n if (this.lastView.medias.indexOf(media) > -1) {\n return;\n }\n\n this.lastView.close();\n }\n\n // append view based on media\n this.lastView = this.switchMedia(media);\n },\n\n /**\n * Switch View by media\n * @param media\n * @returns {Object}\n */\n switchMedia: function (media) {\n switch (media) {\n case 'mobile':\n case 'tablet':\n return this.renderMobile();\n\n case 'desktop':\n return this.renderDesktop();\n }\n },\n\n /**\n * Render Mobile\n * @returns {Object}\n */\n renderMobile: function () {\n return new njm.views.headerMobile({\n el: this.$holder\n });\n },\n\n /**\n * Render Desktop\n * @returns {Object}\n */\n renderDesktop: function () {\n return new njm.views.headerDesktop({\n el: this.$holder\n });\n }\n\n });\n})(jQuery, njm);\n","(function ($, njm) {\r\n 'use strict';\r\n\r\n njm.views.agentBlogSearch = Backbone.View.extend({\r\n\t\t\r\n events: {\r\n 'click .blogsearch a': 'submitSearch'\r\n }, \r\n /**\r\n * Initialize\r\n */\r\n initialize: function () {\r\n\t\t\tvar $this = this;\r\n\t\t\t$('.comp-header-agent-blog .mobile-toggle .icon-arrow, .comp-header-agent-blog .mobile-toggle .icon-search-desktop').on({\r\n\t\t\t\tclick: function(event) {\r\n\t\t\t\t\t$this.toggleSearch(event);\r\n\t\t\t\t},\r\n\t\t\t\tkeydown: function(event) {\r\n\t\t\t\t\t$this.handleKeypress(event);\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t\t\r\n\t\t\tthis.mobileState = 'expanded';\r\n\t\t\t\r\n\t\t\tthis.collapse();\r\n\t\t},\r\n\t\t\r\n\t\ttoggleSearch: function(event) {\r\n\t\t\tvar target = $(event.target);\r\n\t\t\tvar search = target.parents('.search');\r\n\t\t\t\r\n\t\t\tif (search.hasClass('collapsed')) {\r\n\t\t\t\tthis.expand();\r\n\t\t\t} else if (search.hasClass('expanded')) {\r\n\t\t\t\tthis.collapse();\r\n\t\t\t}\r\n\t\t},\r\n\t\t\r\n\t\thandleKeypress: function (event) {\r\n\t\t\tvar key = event.which;\r\n\t\t\t\t\t\r\n\t\t\tif (key === 13 || key === 32) { //space or enter key\r\n\t\t\t\tevent.preventDefault();\r\n\t\t\t\tthis.toggleSearch(event);\r\n\t\t\t}\r\n\t\t\t\r\n\t\t\tif (key === 27) { //escape key\r\n\t\t\t\tthis.collapse();\r\n\t\t\t}\r\n\t\t},\r\n\t\t\r\n\t\tcollapse: function() {\r\n\t\t\tvar search = $('.comp-header-agent-blog .search');\r\n\t\t\tif (this.mobileState === 'expanded') {\r\n\t\t\t\tsearch.removeClass('expanded').addClass('collapsed');\r\n\t\t\t\tsearch.find('input').attr('tabindex','-1');\r\n\t\t\t\tsearch.find('a').attr('tabindex','-1');\r\n\t\t\t\tthis.mobileState = 'collapsed';\r\n\t\t\t}\r\n\t\t},\r\n\t\t\r\n\t\texpand: function() {\r\n\t\t\tvar search = $('.comp-header-agent-blog .search');\r\n\t\t\tif (this.mobileState === 'collapsed') {\r\n\t\t\t\tsearch.removeClass('collapsed').addClass('expanded');\r\n\t\t\t\tsearch.find('input').attr('tabindex','0').focus();\r\n\t\t\t\tsearch.find('a').attr('tabindex','0');\r\n\t\t\t\tthis.mobileState = 'expanded';\r\n\t\t\t}\r\n },\n /**\r\n * Submit search\r\n */\r\n submitSearch: function (e) {\r\n if (e.type === 'click') {\r\n e.preventDefault();\r\n var form = this.$('.blogsearch form')[0];\r\n form.submit();\r\n }\r\n }\r\n });\r\n})(jQuery, njm);\n","(function ($, njm) {\n 'use strict';\n\n njm.views.hero = Backbone.View.extend({\n\n events: {\n 'click .selected': 'openSelect',\n 'click #selectState a': 'selectState',\n 'click #selectProduct a': 'selectProduct',\n 'click #gotoQuote': 'navigate'\n //'click' : 'hideDropdown'\n },\n\n /***\n * Initialize\n */\n initialize: function () {\n this.$state = $('#selectState .selected');\n this.$product = $('#selectProduct .selected');\n this.$button = $('#gotoQuote');\n this.$video = this.$('video');\n this.$mediaImg = this.$('.media img');\n this.$geoState = this.$('input[name=geostate]');\n\n this.initialProductOption = $('#selectProduct .selected').text();\n\n this.data = window.quoteApps;\n this.selected = {\n stateIndex: 0,\n products: [],\n productIndex: 0,\n device: 'desktop'\n };\n\n if (/Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(navigator.userAgent)) {\n this.selected.device = 'mobile';\n }\n\n this.$product.parent().addClass('disabled');\n this.$button.addClass('disabled');\n\n if ($('#selectState a.active').length) {\n this.setState($('#selectState a.active').text());\n this.loadProducts();\n }\n\n if (this.$geoState.val() !== '') {\n this.setState(this.$geoState.val());\n this.loadGeoBasedProducts();\n }\n\n if (this.$video.length) {\n objectFitVideos(this.$video[0]);\n this.replaceVideoWithImg();\n }\n $('body').click(this.hideDropdown.bind(this));\n },\n\n /**\n * Replace Video With Image when AutoPlay is not supported\n */\n replaceVideoWithImg: function () {\n if (/iP(ad|od|hone)/i.test(window.navigator.userAgent)) {\n this.$video.hide();\n this.$('object-fit').hide();\n this.$mediaImg.show();\n }\n },\n\n /**\n * Open custom selects\n */\n openSelect: function (e) {\n var $select = $(e.currentTarget).parent();\n\n if (!$select.hasClass('disabled')) {\n if ($select[0].id === \"selectState\") {\n $('#selectProduct ul').hide();\n }\n\n $(e.currentTarget)\n .parent().toggleClass('open')\n .find('ul').slideToggle(200);\n }\n },\n\n /**\n * Select State\n */\n selectState: function (e) {\n e.preventDefault();\n var $selected = $(e.currentTarget);\n\n this.setState($selected.text());\n\n this.$button.addClass('disabled');\n $('#selectProduct span').text('Select Product');\n $('#selectProduct ul').empty();\n $selected\n .addClass('active')\n .parent().siblings().children('a').removeClass('active')\n .parents('ul').slideToggle(200)\n .parent().toggleClass('open');\n $('#selectProduct ul').hide();\n this.loadProducts();\n },\n\n /**\n * Set State\n * @param {string} state\n */\n setState: function (state) {\n this.$state.text(state);\n this.$button.data('layerState', state);\n },\n\n /**\n * Select Product\n */\n selectProduct: function (e) {\n e.preventDefault();\n var $selected = $(e.currentTarget);\n\n this.$product.text($selected.text());\n\n $selected\n .addClass('active')\n .parent().siblings().children('a').removeClass('active')\n .parents('ul').slideToggle(200)\n .parent().toggleClass('open');\n\n this.$button.data('layerProduct', $selected.text());\n $('#selectProduct ul').hide();\n this.loadUrl();\n },\n\n /**\n * Load Products\n */\n loadProducts: function () {\n var $list = $('#selectProduct ul');\n\n this.selected.stateIndex = $('#selectState a').index($('#selectState a.active')[0]);\n this.selected.products = this.data[this.selected.stateIndex].products;\n\n $list.empty();\n\n $(this.selected.products).each(function (index, item) {\n $list.append('
  • ' + item.name + '
  • ');\n });\n\n this.$product.parent().removeClass('disabled');\n },\n findGeoIndex: function (stateName) {\n var toReturn;\n $.each($('#selectState a'), function (key, value) {\n if (value.text === stateName) {\n toReturn = key;\n return false;\n }\n });\n\n return toReturn;\n },\n loadGeoBasedProducts: function () {\n var $list = $('#selectProduct ul');\n if (this.$geoState.val() !== '') {\n this.selected.stateIndex = this.findGeoIndex(this.$geoState.val());\n this.selected.products = this.data[this.selected.stateIndex].products;\n\n $list.empty();\n\n $(this.selected.products).each(function (index, item) {\n $list.append('
  • ' + item.name + '
  • ');\n });\n\n this.$product.parent().removeClass('disabled');\n }\n },\n /**\n * Load URL for button\n */\n loadUrl: function () {\n var queryString = window.location.search;\n var url = '';\n var target = '';\n this.selected.productIndex = $('#selectProduct a').index($('#selectProduct a.active')[0]);\n url = this.selected.products[this.selected.productIndex].desktop;\n target = this.selected.products[this.selected.productIndex].desktopTarget;\n\n if (this.selected.device === 'mobile') {\n url = this.selected.products[this.selected.productIndex].mobile;\n target = this.selected.products[this.selected.productIndex].mobileTarget;\n }\n\n this.$button\n .attr({ 'href': url + queryString, 'target': target })\n .removeClass('disabled');\n },\n\n hideDropdown: function (e, target) {\n if (!$(e.target).closest('#selectState').length) {\r\n $('#selectState').removeClass('open').find('ul').slideUp(200);\r\n }\n if (!$(e.target).closest('#selectProduct').length) {\r\n $('#selectProduct').removeClass('open').find('ul').slideUp(200);\r\n }\r\n },\n\n /**\n * Button click \n */\n navigate: function (e) {\n if ($(e.currentTarget).hasClass('disabled')) {\n e.preventDefault();\n }\n }\n });\n})(jQuery, njm);\n","$(document).ready(function() {\r\n\t\"use strict\";\r\n\t\r\n\tvar stickyNav = $('.comp-sticky-quote');\r\n\t\r\n\tif ( stickyNav.length > 0 ) {\r\n\t\tstickyQuote();\r\n\t}\r\n\t\r\n\tfunction stickyQuote() {\r\n\t\t// Selection variables\r\n\t\tvar dismissButton = $(\".comp-sticky-quote .dismiss\");\r\n\t\tvar dismissedText = $(\".comp-sticky-quote .dismissed-text\");\r\n\t\tvar dismissArrow = $(\".comp-sticky-quote .arrow\");\r\n\t\tvar timeOutFunc;\r\n\r\n\t\t// Get the offset position of the navbar\r\n\t\tvar sticky = $('.comp-banner-quote > .container').height();\r\n\r\n\t\t// initialize variables\r\n\t\tvar timeOut = false;\r\n\t\tvar hidden = true;\r\n\t\tvar minimized = false;\r\n\t\tvar userExpanded = false;\r\n\t\tvar mobile = false;\r\n\t\tvar offsetAmount = false;\r\n\r\n\r\n\t\t// FUNCTIONS\r\n\t\t// Determine if viewport is in a mobile size\r\n\t\tfunction isMobile() {\r\n\t\t\tif ( $(\".comp-sticky-quote .text\").css('display') === 'block' ) {\r\n\t\t\t\tmobile = true;\r\n\t\t\t} else {\r\n\t\t\t\tmobile = false;\r\n\t\t\t\tminimized = false;\r\n\t\t\t\thidden = true;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t//Display the sticky quote bar\r\n\t\tfunction displayQuoteBar() {\r\n\t\t\tstickyNav.addClass(\"active\");\r\n\t\t\tstickyNav.removeClass(\"minimized\");\r\n\t\t\thidden = false;\r\n\t\t\tminimized = false;\r\n\t\t\tdismissToggle();\r\n\t\t}\r\n\r\n\t\t//Hide the sticky quote bar\r\n\t\tfunction hideQuoteBar() {\r\n\t\t\tclearTimeout(timeOutFunc);\r\n\t\t\ttimeOut = true;\r\n\r\n\t\t\tstickyNav.removeClass(\"active\");\r\n\t\t\tstickyNav.removeClass(\"minimized\");\r\n\t\t\thidden = true;\r\n\t\t}\r\n\r\n\t\t//Minimize the quote bar\r\n\t\tfunction minimizeQuoteBar() {\r\n\t\t\tstickyNav.addClass(\"minimized\");\r\n\t\t\tstickyNav.removeClass(\"active\");\r\n\t\t\tminimized = true;\r\n\t\t\ttimeOut = true;\r\n\t\t\thidden = false;\r\n\t\t\tdismissToggle();\t\t\r\n\t\t}\r\n\r\n\t\t//Timeout the quote bar on mobile\r\n\t\tfunction quoteBarTimeout() {\r\n\t\t\tif (mobile) {\r\n\t\t\t\ttimeOutFunc = setTimeout(function() {timeOut = true; minimizeQuoteBar();}, 2000);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tfunction dismissToggle() {\r\n\t\t\tif (minimized) {\r\n\t\t\t\tdismissedText.addClass(\"display\");\r\n\t\t\t\tdismissArrow.addClass(\"down\").removeClass(\"up\");\r\n\t\t\t} else if (!minimized) {\r\n\t\t\t\tdismissedText.removeClass(\"display\");\r\n\t\t\t\tdismissArrow.addClass(\"up\").removeClass(\"down\");\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t// Assess if the sticky quote bar should be displayed\r\n\t\tfunction stickyNavDisplay() {\r\n\t\t\toffsetAmount = (window.pageYOffset > sticky);\r\n\r\n\t\t\tif (!mobile) {\r\n\t\t\t\tif (offsetAmount && hidden) {\r\n\t\t\t\t\tdisplayQuoteBar();\r\n\t\t\t\t} else if (!offsetAmount && !hidden) {\r\n\t\t\t\t\thideQuoteBar();\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tif (mobile) {\r\n\t\t\t\tif (!userExpanded) {\r\n\t\t\t\t\tif (offsetAmount && !timeOut && hidden) {\r\n\t\t\t\t\t\tdisplayQuoteBar();\r\n\t\t\t\t\t\tquoteBarTimeout();\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tif (offsetAmount && timeOut) {\r\n\t\t\t\t\t\tminimizeQuoteBar();\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t} else if (userExpanded) {\r\n\t\t\t\t\tif (offsetAmount && hidden) {\r\n\t\t\t\t\t\tdisplayQuoteBar();\r\n\t\t\t\t\t} \r\n\t\t\t\t}\r\n\r\n\t\t\t\tif (!offsetAmount && !hidden) {\r\n\t\t\t\t\thideQuoteBar();\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif (offsetAmount && hidden && minimized) {\r\n\t\t\t\t\tminimizeQuoteBar();\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t}\r\n\r\n\r\n\t\t//Initial execution on load\r\n\t\tisMobile();\r\n\r\n\t\t// When the user scrolls the page, execute a function \r\n\t\twindow.onscroll = function() {stickyNavDisplay();};\r\n\t\t// When the user resizes the page, execute a function\r\n\t\twindow.onresize = function() {isMobile();};\r\n\r\n\t\t// Function to minimize on mobile when dismiss button clicked\r\n\t\tdismissButton.click(function() {\r\n\r\n\t\t\tif (!minimized) {\r\n\t\t\t\tminimizeQuoteBar();\r\n\t\t\t\ttimeOut = true;\r\n\t\t\t\tuserExpanded = false;\r\n\t\t\t} else if (minimized) {\r\n\t\t\t\tdisplayQuoteBar();\r\n\t\t\t\tuserExpanded = true;\r\n\t\t\t}\r\n\r\n\t\t});\r\n\r\n\t}\r\n\t\r\n\t// End of $(document).ready -----------------------------\r\n});","(function ($, njm) {\n 'use strict';\n\n njm.views.heroOverlay = Backbone.View.extend({\n\n events: {\n 'click .head': 'toggle',\n 'click h2': 'toggle',\n 'click .title': 'toggle'\n },\n\n /**\n * Initialize\n */\n //initialize: function () {\n // this.$items = this.$('.item');\n // this.$items.slice(0, 2).addClass('open');\n //},\n\n /**\n * Toggle\n * @param {Object} e\n */\n toggle: function (e) {\n $(e.currentTarget).closest('.item').toggleClass('open');\n }\n\n });\n})(jQuery, njm);\n","(function ($, njm) {\r\n 'use strict';\r\n\r\n njm.views.homehero = Backbone.View.extend({\r\n\r\n events: {\r\n \r\n },\r\n\r\n /**\r\n * Initialize\r\n */\r\n initialize: function () {\r\n var $this = this;\r\n\t\t\tthis.quoteComponent = $('.comp-tab-quote');\r\n\t\t\t\r\n\t\t\tthis.quoteComponent.on({\r\n\t\t\t\tclick: function(event) {\r\n $this.selectBackground(event);\r\n\t\t\t\t}\r\n\t\t\t});\r\n },\r\n\t\t\r\n\t\t/***\r\n * Switch image on tab selection\r\n */\r\n\t\tselectBackground: function(event) {\r\n\t\t\tvar category = $(event.target).attr('data-category'),\r\n\t\t\t\tmedia = $('.comp-homehero .media.desktop');\r\n\r\n\t\t\tif ( category !== undefined && $('.comp-homehero .media.desktop[data-category=\"' + category + '\"]').length === 1 ) {\r\n\t\t\t\tmedia.each(function(){\r\n\t\t\t\t\tif ($(this).attr('data-category') === category) {\r\n\t\t\t\t\t\t$(this).fadeIn();\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\t$(this).fadeOut();\r\n\t\t\t\t\t}\r\n\t\t\t\t});\r\n\t\t\t}\r\n\t\t}\r\n });\r\n})(jQuery, njm);\r\n","(function ($, njm) {\r\n 'use strict';\r\n\r\n njm.views.listlandingSearch = Backbone.View.extend({\r\n\r\n events: {\r\n 'keydown #pageInput': 'fnPagination',\r\n },\r\n fnPagination: function (event) {\r\n if (event !== undefined) {\r\n if (event.keyCode === 13) {\r\n var pageInput = $('#pageInput').val();\r\n var totalPageCount = $(\"#TotalPageCount\").val();\r\n if (pageInput !== undefined && totalPageCount !== undefined) {\r\n if (pageInput.length == 0 || parseInt(pageInput) < 1) {\r\n pageInput = 1\r\n }\r\n else if (parseInt(totalPageCount) < parseInt(pageInput)) {\r\n pageInput = totalPageCount\r\n }\r\n $('input[name=page]').val(pageInput).trigger('change');\r\n }\r\n }\r\n }\r\n }\r\n\r\n })\r\n //OnSuccess\r\n window.onSearchComplete = function (xhr) {\r\n \r\n }\r\n})(jQuery, njm);\r\n\n","(function ($, njm) {\r\n 'use strict';\r\n njm.views.plLogin = Backbone.View.extend({\r\n\r\n events: {\r\n 'click #login1': 'login1',\r\n 'click #login2': 'sendOtp',\r\n 'click #login3': 'verifyCodeEvent',\r\n 'click .password-visibility': 'passwordVisibility',\r\n 'click #resendCode': 'resendCode',\r\n 'click #changeDelivery': 'changeDelivery',\r\n 'click #cancel1': 'backToSection',\r\n 'click #cancel2': 'backToSection',\r\n 'keypress #password': 'capslockHint',\r\n 'click input[name=\"otp-method\"]': 'hasOtpMethod',\n 'click .file-a-claim': 'fileAClaim',\r\n\r\n },\r\n\r\n initialize: function () {\r\n try {\n const destinationUrl = $('#login1').data('destinationurl');\n // Check if in Experience Editor mode\r\n const isExperienceEditor = document.getElementById('hidIsExperienceEditor')?.value === \"\";\r\n const otpEntryVisible = $(\"#otp-entry\").is(\":visible\");\n const currentTimestamp = Date.now();\n const locCheck = decodeURIComponent(window.location.search);\n const gotoParam = this.urlParam('goto', locCheck);\n const dctimestamp = this.urlParam('_dc', locCheck);\n const customParam = this.urlParam('context', locCheck);\n const navigateParam = this.urlParam('navigateto', locCheck);\n const dcTimeOut = 5 * 60 * 1000;// Timeout constant (5 minutes)\n if (navigateParam && navigateParam!= '')\n {\n $('#login1').attr(\"data-navigateto\", navigateParam);\n $('#login3').attr(\"data-navigateto\", navigateParam);\r\n } \n if (isExperienceEditor && !otpEntryVisible) {\r\n if (!gotoParam || !dctimestamp || (dctimestamp && (currentTimestamp - dctimestamp > dcTimeOut))) {\n const urlObj = new URL(destinationUrl);\n urlObj.searchParams.set('_dc', currentTimestamp);\n if (customParam && customParam != '') {\n urlObj.searchParams.set('context', customParam);\r\n }\n if (navigateParam && navigateParam != '') {\n urlObj.searchParams.set('navigateto', navigateParam);\r\n }\n var processedUrl = decodeURIComponent(urlObj.toString());\n this.redirect(processedUrl);\n }\n\n setInterval(function () {\n if (!timestamp || (timestamp && (currentTimestamp - timestamp > dcTimeOut))) {\n const urlObj = new URL(destinationUrl);\n urlObj.searchParams.set('_dc', currentTimestamp);\n if (customParam && customParam != '') {\n urlObj.searchParams.set('context', customParam);\r\n }\n if (navigateParam && navigateParam != '') {\n urlObj.searchParams.set('navigateto', navigateParam);\r\n }\n var processedUrl = decodeURIComponent(urlObj.toString());\n this.redirect(processedUrl);\n }\n }, 300000);\r\n }\r\n\r\n if (window.location.href.indexOf('vercd') >= 0) {\r\n this.verifyCode(window.location.href.split('vercd')[1].substring(1));\r\n } else {\r\n $('#userid').keypress(function (e) {\r\n if (e.keyCode === 13) {\r\n $('#login1').click();\r\n }\r\n });\r\n $('#password').keypress(function (e) {\r\n if (e.keyCode === 13) {\r\n $('#login1').click();\r\n }\r\n });\r\n }\r\n\r\n if (localStorage.Csschkbox && localStorage.Csschkbox != '') {\r\n $('#rememberUserID').attr('checked', 'checked');\r\n $('#userid').val(localStorage.Cssusername);\r\n } else {\r\n $('#rememberUserID').removeAttr('checked');\r\n $('#userid').val('');\r\n }\n if (sessionStorage.FromClaimPage && sessionStorage.FromClaimPage == 'true') {\n $('#file-login-claim').hide();\n if (sessionStorage.ClaimFor && sessionStorage.ClaimFor == \"auto-glass-only\") {\n $('#file-auto-glass-only-claim').show();\n $('#file-auto-claim').hide();\n $('#file-property-claim').hide();\r\n }\n if (sessionStorage.ClaimFor && sessionStorage.ClaimFor == \"auto\") {\n $('#file-auto-glass-only-claim').hide();\n $('#file-auto-claim').show();\n $('#file-property-claim').hide();\r\n }\n if (sessionStorage.ClaimFor && sessionStorage.ClaimFor == \"property\") {\n $('#file-auto-glass-only-claim').hide();\n $('#file-auto-claim').hide();\n $('#file-property-claim').show();\r\n }\n }\r\n\r\n /**\r\n * Disable IE's capslock indicator since we provide one\r\n **/\r\n if ($('.comp-login #password') && document.msCapsLockWarningOff === false) {\r\n document.msCapsLockWarningOff = true;\r\n }\r\n // load the script\r\n $.getScript('https://www.google.com/recaptcha/enterprise.js?onload=renderCaptcha&render=explicit', function () { });\r\n // this is the callback function\r\n var getRecaptchaResponse = function (response) {\r\n if (response) {\r\n $('#login1').data('token', response);\r\n document.getElementById('warning').style.display = 'none';\r\n document.getElementById('recaptcha-container').style.border = '';\r\n }\r\n else {\r\n $('#login1').data('token', \"\");\r\n }\r\n };\r\n\r\n // render the recaptcha\r\n var renderCaptcha = function () {\r\n grecaptcha.enterprise.render('recaptcha-container', {\n sitekey: document.getElementById('hidCaptchaSiteKey').value,\n //Sitekey- Prod\n //sitekey: '6Lc3QMwgAAAAAAPgtjRleekyEiG5ObJiOI9Eza2D',\r\n callback: getRecaptchaResponse\r\n });\r\n };\r\n\r\n // map the internal function to the window\r\n // so that the callback registered in the \r\n // link below can be called by JSONP.\r\n window.renderCaptcha = renderCaptcha;\r\n\r\n\r\n\r\n njmClientClickTracking.trackPageName(window.location.href, document.referrer);\r\n }\r\n catch (ex) {\r\n njmClientClickTracking.logErrorGeneric(\"initialize\", ex.name, \"Exception on initialize\", \"Anonymous\", ex.stack);\r\n throw ex;\r\n }\r\n },\r\n stringTrim: function (x) {\r\n return x.replace(/^\\s+|\\s+$/gm, '');\r\n },\r\n /**\r\n * Parse return error message for Login\r\n **/\r\n checkLoginError: function (response) {\r\n var status = response.status,\r\n msg = response.responseText ? JSON.parse(response.responseText).message : '';\r\n var userId = this.stringTrim(document.getElementById('userid').value);\r\n var errorMsg = document.getElementById('hidDefaultErrorMessage').value;\r\n if (status === 400 && msg) {\r\n if (response.getResponseHeader(\"NJM_CAPTCHA_REQUIRED\")) {\r\n errorMsg = document.getElementById('hidLockoutWarning').value;\r\n } else if (msg.indexOf('Authentication Failed') >= 0) {\r\n errorMsg = document.getElementById('hidInvalidLogin').value;\r\n if (msg.indexOf('You will be locked out') >= 0) {\r\n //errorMsg = errorMsg + ' To avoid being locked out, please use the “Forgot User ID?” and/or “Forgot Password?” links to obtain your User ID or a new Password.';\r\n errorMsg = errorMsg + document.getElementById('hidAvoidLockout').value\r\n }\r\n } else if (msg.indexOf('Your account has been locked') >= 0) {\r\n errorMsg = document.getElementById('hidAccountHasBeenLocked').value;\r\n //errorMsg = 'You have been locked out of your account. Please contact our customer service department during our business hours.';\r\n } else if (msg.indexOf('Your account is locked') >= 0) {\r\n errorMsg = document.getElementById('hidAccountIsLocked').value\r\n //errorMsg = 'Your account is locked. Please contact our Customer Service department during our business hours.';\r\n } else if (msg.indexOf('You have not successfully completed your registration') >= 0) {\r\n errorMsg = document.getElementById('hidRegistrationUnsuccessful').value;\r\n //errorMsg = 'You have not successfully completed your registration. Please click the link in the e-mail we have sent you to complete the registration process or contact our Customer Service department during our business hours.';\r\n } else if (msg.indexOf('Your account has been deactivated') >= 0) {\r\n errorMsg = document.getElementById('hidAccountDeactivated').value;\r\n //errorMsg = 'Your account has been deactivated. Please contact our Customer Service department during our business hours.';\r\n }\r\n else if (msg.indexOf('OTP is locked') >= 0) {\r\n errorMsg = document.getElementById('hidAccountHasBeenLocked').value;\r\n }\r\n else {\r\n errorMsg = document.getElementById('hidInvalidLogin').value;\r\n //errorMsg = 'The User ID and/or Password you are entering are invalid.';\r\n }\r\n }\r\n njmClientClickTracking.logErrorGeneric(\"checkLoginError\", msg, status, userId, errorMsg);\r\n return errorMsg;\r\n },\r\n\r\n /**\r\n * STEP 1: Login API Call\r\n * **/\r\n login1: function (e) {\r\n e.preventDefault();\r\n $('#loading').show();\r\n var userId = document.getElementById('userid').value;\r\n njmClientClickTracking.linkClickedWithUserID(e.currentTarget, userId);\r\n var loginApiUrl = $(e.currentTarget).data('loginapiurl');\r\n var destinationUrl = $(e.currentTarget).data('destinationurl');\r\n var otpApiUrl = $(e.currentTarget).data('otpapiurl');\r\n var token = $(e.currentTarget).data('token');\r\n this.login(loginApiUrl, destinationUrl, otpApiUrl, token, false);\r\n },\r\n login: function (loginApiUrl, destinationUrl, otpApiUrl, token, keepWarning) {\r\n var self = this;\n \r\n var OauthUrl = $('#login1').data('navigateto') != '' ? $('#login1').data('oauthurl') +'?navigateto=' + $('#login1').data('navigateto') : $('#login1').data('oauthurl');\n \r\n var userID = this.stringTrim(document.getElementById('userid').value),\r\n pass = this.stringTrim(document.getElementById('password').value),\r\n valid = true;\r\n if (document.getElementById(\"rememberUserID\").checked) {\r\n // save username and password\r\n localStorage.Cssusername = userID;\r\n localStorage.Csschkbox = document.getElementById(\"rememberUserID\").checked;\r\n } else {\r\n localStorage.Cssusername = '';\r\n localStorage.Csschkbox = '';\r\n }\r\n\r\n if (this.stringTrim(userID) === '') {\r\n document.getElementById('userid').style.border = '1px solid #cc0000';\r\n valid = false;\r\n } else {\r\n document.getElementById('userid').style.border = '';\r\n }\r\n\r\n if (this.stringTrim(pass) === '') {\r\n document.getElementById('password').style.border = '1px solid #cc0000';\r\n valid = false;\r\n } else {\r\n document.getElementById('password').style.border = '';\r\n }\r\n\r\n var headers = {};\r\n if (token == '' || token.length == 0) {\r\n headers = { 'Content-Type': 'application/json' };\r\n if ($(\"#recaptcha-container\").is(\":visible\")) {\r\n valid = false;\r\n document.getElementById('recaptcha-container').style.border = '1px solid #cc0000';\r\n }\r\n else {\r\n //Valid Login\r\n document.getElementById('recaptcha-container').style.border = '';\r\n document.getElementById('recaptcha-container').style.display = 'none';\r\n }\r\n }\r\n else {\r\n headers = {\r\n 'Content-Type': 'application/json',\r\n 'NJM_VERIFICATION_TOKEN': token,\r\n 'NJM_VERIFICATION_ACTION': 'login'\r\n }\r\n document.getElementById('recaptcha-container').style.border = '';\r\n document.getElementById('recaptcha-container').style.display = 'none';\r\n grecaptcha.enterprise.reset();\r\n $('#login1').data('token', \"\");\r\n }\r\n if (!valid) {\r\n document.getElementById('warningText').innerHTML = document.getElementById('hidFieldWarning').value //'Please fill in the highlighted fields to continue.';\r\n document.getElementById('warning').style.display = 'block';\r\n $('#loading').hide();\r\n }\r\n else {\r\n $.ajax({\r\n type: 'POST',\r\n url: loginApiUrl,\r\n headers: headers,\r\n xhrFields: {\r\n withCredentials: true\r\n },\r\n data: JSON.stringify({\r\n 'UserID': userID,\r\n 'Password': pass,\r\n 'device': device()\r\n }),\r\n success: function (response) {\n\r\n //Check if device is new or existing device.\r\n\r\n //If New device call OTP(GET) method.\r\n if (!response.hasOwnProperty('url')) {\n ////store the loginresponse in session to retrieve in save method\n //console.log(JSON.stringify(response));\n //sessionStorage.setItem('loginResponse', JSON.stringify(response));\r\n self.otpMethod(otpApiUrl, self, response);\r\n njmClientClickTracking.screenLoadingsuccessful(\"otp-method\", userID);\r\n }\r\n else if (response.hasOwnProperty('url')) {\r\n document.getElementById('warning').style.display = 'none';\r\n $('#loading').hide();\r\n //self.sendUserAnalytics(response, document.getElementById('login1'));\n self.sendUserAnalytics(response, 'login1');\r\n self.getOauthToken(destinationUrl, OauthUrl, self);\r\n }\r\n if (!keepWarning) {\r\n document.getElementById('warning').style.display = 'none';\r\n }\r\n $('#loading').hide();\r\n },\r\n error: function (response) {\r\n var msg = response.responseText ? JSON.parse(response.responseText).message : '';\r\n var errorResponse = self.checkLoginError(response);\r\n document.getElementById('warningText').innerHTML = errorResponse;\r\n document.getElementById('warning').style.display = 'block';\r\n $('#loading').hide();\r\n if (!document.getElementById(\"rememberUserID\").checked) {\r\n document.getElementById('userid').value = '';\r\n }\r\n document.getElementById('password').value = '';\r\n //reCAPTCHA\r\n if (response.status == 400 && response.getResponseHeader(\"NJM_CAPTCHA_REQUIRED\")) {\r\n $('#loading').hide();\r\n document.getElementById('recaptcha-container').style.display = 'block';\r\n }\r\n njmClientClickTracking.logErrorGeneric(\"login\", msg, response.status, userID, errorResponse);\r\n }\r\n });\r\n }\r\n },\r\n /**\r\n * STEP 2:GET OTP Methods\r\n * **/\r\n otpMethod: function (otpMethodUrl, self, loginResponse) {\r\n var userId = document.getElementById('userid').value;\r\n $.ajax({\r\n type: 'GET',\r\n url: otpMethodUrl,\r\n xhrFields: {\r\n withCredentials: true\r\n },\r\n success: function (response) {\r\n if (Array.isArray(response)) {\r\n self.fillOtpMethods(response);\r\n self.hasOtpMethod();\r\n document.getElementById('login-box').style.display = 'none';\r\n document.getElementById('otp-method').style.display = 'block';\r\n if (($(\"#otp-method\").is(\":visible\"))) {\r\n $('.comp-login').addClass('hide-content');\r\n }\r\n document.getElementById('warningOtp').style.display = 'none';\r\n $('#loading').hide();\r\n }\r\n },\r\n error: function (response) {\r\n var msg = response.responseText ? JSON.parse(response.responseText).message : '';\r\n var warningText = document.getElementById('hidDefaultErrorMessage').value;//\"We’re sorry, an error has occurred. Please try again later.\";\r\n document.getElementById('warningText').innerHTML = warningText;\r\n document.getElementById('warning').style.display = 'block';\r\n $('#loading').hide();\r\n document.getElementById('login-box').style.display = 'block';\r\n document.getElementById('otp-method').style.display = 'none';\r\n njmClientClickTracking.logErrorGeneric(\"otpMethod\", msg, response.status, userId, warningText);\r\n }\r\n });\r\n },\r\n\r\n /**\r\n * Fill OTP Method Radio Buttons\r\n **/\r\n fillOtpMethods: function (response) {\r\n response.forEach(function (item, index) {\r\n if (item !== null) {\r\n var divHtml = '
    ';\r\n var radioHtml = '';\r\n var labelHtml = '';\r\n var spanHtml = '';\r\n divHtml += radioHtml;\r\n divHtml += labelHtml;\r\n divHtml += spanHtml;\r\n divHtml += '
    ';\r\n $('#otp-method-radios').append(divHtml);\r\n if (item.preselect) {\r\n $(\"#otp-method\" + index).prop('checked', true);\r\n }\r\n }\r\n });\r\n },\r\n\r\n //STEP 3: POST Selected OTP Method\r\n sendOtp: function (e) {\r\n $('#loading').show();\r\n var UserId = document.getElementById('userid').value;\r\n njmClientClickTracking.linkClickedWithUserID(e.currentTarget, UserId);\r\n document.getElementById('warningOtp2').style.display = 'none';\r\n var self = this;\r\n var otpPostApiUrl = $(e.currentTarget).data('otpapiurl');\r\n $.ajax({\r\n type: 'POST',\r\n url: otpPostApiUrl,\r\n xhrFields: {\r\n withCredentials: true\r\n },\r\n data: {\r\n 'id': $(\"input[name='otp-method']:checked\").val()\r\n },\r\n success: function (response, status, request) {\r\n document.getElementById('warningTextOtp').style.display = 'none';\r\n $('#loading').hide();\r\n var idVal = $(\"input[name='otp-method']:checked\").attr(\"id\");\r\n var selectedOTPText = $(\"label[for='\" + idVal + \"']\").text();\r\n var successMessage = document.getElementById('hidSuccessMessage').value;\r\n successMessage = successMessage.replace(\"{0}\", selectedOTPText);\r\n document.getElementById('success-message').innerHTML = successMessage;\r\n document.getElementById('code').value = '';\r\n document.getElementById('otp-method').style.display = 'none';\r\n document.getElementById('otp-entry').style.display = 'block';\r\n if (($(\"#otp-entry\").is(\":visible\"))) {\r\n $('.comp-login').addClass('hide-content');\r\n }\r\n document.getElementById('code').style.border = '';\r\n njmClientClickTracking.screenLoadingsuccessful(\"otp-entry\", UserId);\r\n },\r\n error: function (response) {\r\n var msg = response.responseText ? JSON.parse(response.responseText).message : '';\r\n document.getElementById('warningTextOtp').innerHTML = document.getElementById('hidDefaultErrorMessage').value; //'We’re sorry, an error has occurred. Please try again later.';\r\n document.getElementById('warningOtp').style.display = 'block';\r\n $('#loading').hide();\r\n njmClientClickTracking.logErrorGeneric(\"sendOTP\", msg, response.status, UserId, document.getElementById('hidDefaultErrorMessage').value);\r\n }\r\n });\r\n },\r\n\r\n //STEP 4: Submit OTP Code\r\n verifyCodeEvent: function (e) {\r\n var validateOtpUrl = $(e.currentTarget).data('validateotpurl');\r\n var destinationUrl = $(e.currentTarget).data('destinationurl');\r\n var saveDeviceUrl = $(e.currentTarget).data('loginsaveurl');\r\n //var OauthUrl = $(e.currentTarget).data('oauthurl');\n var OauthUrl = $(e.currentTarget).data('navigateto') != '' ? $(e.currentTarget).data('oauthurl') + '?navigateto=' + $(e.currentTarget).data('navigateto') : $(e.currentTarget).data('oauthurl');\r\n var UserId = document.getElementById('userid').value;\r\n njmClientClickTracking.linkClickedWithUserID(e.currentTarget, UserId);\r\n this.verifyOtpCode(validateOtpUrl, destinationUrl, saveDeviceUrl, OauthUrl);\r\n },\r\n\r\n /**\r\n * Sends entered code to API for verification and redirects to CSS if valid\r\n **/\r\n verifyOtpCode: function (validateOtpUrl, destinationUrl, saveDeviceUrl, OauthUrl) {\r\n var self = this;\r\n $('#loading').show();\r\n if (document.getElementById('code').value === '') {\r\n document.getElementById('code').style.border = '1px solid #cc0000';\r\n document.getElementById('warningTextOtp2').innerHTML = document.getElementById('hidFieldWarning').value//'Please fill in the highlighted fields to continue';\r\n document.getElementById('warningOtp2').style.display = 'block';\r\n $('#loading').hide();\r\n } else {\r\n document.getElementById('code').style.border = '';\r\n $.ajax({\r\n type: 'POST',\r\n url: validateOtpUrl,\r\n xhrFields: {\r\n withCredentials: true\r\n },\r\n data: {\r\n code: document.getElementById('code').value\r\n },\r\n success: function () {\r\n document.getElementById('warningOtp2').style.display = 'none';\r\n $('#loading').hide();\r\n self.saveDevice(saveDeviceUrl, destinationUrl, OauthUrl);\r\n },\r\n error: function (response) {\r\n var msg = response.responseText ? JSON.parse(response.responseText).message : '',\r\n //error = msg.indexOf('Invalid') >= 0 ? 'The Validation Code you entered is not recognized. Please check the OTP and try again or click on resend.' :\r\n // msg.indexOf('Expired') >= 0 ? 'The Validation Code you entered has not expired. Please click on resend.' : msg.indexOf('Locked') >= 0 ?\"Locked\":\r\n // 'We’re sorry, an error has occurred. Please try again later.';\r\n error = msg.indexOf('Invalid') >= 0 ? document.getElementById('hidInvalidOTP').value :\r\n msg.indexOf('Expired') >= 0 ? document.getElementById('hidExpiredOTP').value : msg.indexOf('Locked') >= 0 ? \"OTP is locked\" :\r\n document.getElementById('hidDefaultErrorMessage').value;\r\n var userId = self.stringTrim(document.getElementById('userid').value);\r\n if (error.indexOf('OTP is locked') >= 0) {\r\n $('#loading').hide();\r\n document.getElementById('otp-entry').style.display = 'none';\r\n document.getElementById('warningText').innerHTML = document.getElementById('hidOTPIsLocked').value;\r\n document.getElementById('warning').style.display = 'block';\r\n document.getElementById('login-box').style.display = 'block';\r\n }\r\n else {\r\n document.getElementById('code').value = '';\r\n document.getElementById('warningTextOtp2').innerHTML = error;\r\n document.getElementById('warningOtp2').style.display = 'block';\r\n $('#loading').hide();\r\n }\r\n njmClientClickTracking.logErrorGeneric(\"verifyOtpCode\", msg, response.status, userId, error);\r\n }\r\n });\r\n }\r\n },\r\n //Save Device \r\n saveDevice: function (saveDeviceUrl, destinationUrl, OauthUrl) {\n\r\n var self = this;\r\n $('#loading').show();\r\n $.ajax({\r\n type: 'POST',\r\n url: saveDeviceUrl,\r\n xhrFields: {\r\n withCredentials: true\r\n },\r\n data: {\r\n save: $(\"#rememberDevice\").is(':checked')\r\n },\r\n success: function (response) {\r\n document.getElementById('warningOtp2').style.display = 'none';\r\n $('#loading').hide();\n self.sendUserAnalytics(response, 'login3');\r\n self.getOauthToken(destinationUrl, OauthUrl, self);\r\n },\r\n error: function () {\r\n document.getElementById('code').value = '';\r\n document.getElementById('warningTextOtp2').innerHTML = document.getElementById('hidDefaultErrorMessage').value; //'We’re sorry, an error has occurred. Please try again later.';\r\n document.getElementById('warningOtp2').style.display = 'block';\r\n $('#loading').hide();\n var userId = document.getElementById('userid').value;\r\n njmClientClickTracking.logErrorGeneric(\"saveDevice\", msg, response.status, userId, error);\r\n }\r\n });\r\n\r\n },\r\n\r\n //Resend Code to Selected OTP Method\r\n resendCode: function (e) {\n e.preventDefault();\r\n var resendCode = $('#resendCode').parent();\r\n\r\n if (!resendCode.hasClass('disabled')) {\r\n var resendLoading = $('#resendCode .loading');\r\n var resendSuccess = $('#resendCode .success');\r\n var UserId = document.getElementById('userid').value;\r\n njmClientClickTracking.linkClickedWithUserID(e.currentTarget, UserId);\r\n document.getElementById('code').style.border = '';\r\n var self = this;\r\n var otpPostApiUrl = $(e.currentTarget).data('otpapiurl');\r\n resendLoading.show();\r\n resendCode.addClass('disabled');\r\n\r\n $.ajax({\r\n type: 'POST',\r\n url: otpPostApiUrl,\r\n xhrFields: {\r\n withCredentials: true\r\n },\r\n data: {\r\n 'id': $(\"input[name='otp-method']:checked\").val()\r\n },\r\n success: function (response) {\r\n document.getElementById('code').value = '';\r\n document.getElementById('warningOtp2').style.display = 'none';\r\n resendLoading.hide();\r\n resendSuccess.removeClass('hidden');\r\n resendCode.addClass('hidden');\r\n var resendTimeout = setTimeout(function () {\r\n resendCode.removeClass('disabled hidden');\r\n resendSuccess.addClass('hidden');\r\n }, 10000);\r\n },\r\n error: function (response) {\r\n document.getElementById('code').value = '';\r\n document.getElementById('success-message').innerHTML = \"\";\r\n document.getElementById('warningTextOtp2').innerHTML = document.getElementById('hidDefaultErrorMessage').value; //'We’re sorry, an error has occurred. Please try again later.';\r\n document.getElementById('warningOtp2').style.display = 'block';\r\n resendLoading.hide();\r\n resendCode.removeClass('disabled');\r\n }\r\n });\r\n }\r\n\r\n },\r\n\r\n changeDelivery: function () {\r\n $('#otp-entry').hide();\r\n $('#otp-method').show();\r\n if (($(\"#otp-method\").is(\":visible\"))) {\r\n $('.comp-login').addClass('hide-content');\r\n }\r\n $(\"input:radio[name='otp-method']\").prop('checked', false);\r\n\r\n this.hasOtpMethod();\r\n },\r\n\r\n passwordVisibility: function (e) {\r\n var self = e.currentTarget;\r\n if ($(self).text() === 'Show') {\r\n $('.comp-login input#password').attr('type', 'text');\r\n $(self).text('Hide');\r\n } else {\r\n $('.comp-login input#password').attr('type', 'password');\r\n $(self).text('Show');\r\n }\r\n },\r\n\r\n isCapsLockOn: function (e) {\r\n if (e.originalEvent.getModifierState(\"CapsLock\")) {\r\n return true;\r\n } else {\r\n return false;\r\n }\r\n },\r\n\r\n capslockHint: function (e) {\r\n if (this.isCapsLockOn(e) && ($('#warning').css('display') === 'block')) {\r\n $(\".capslock-hint\").css('display', 'inline-block');\r\n } else {\r\n $(\".capslock-hint\").css('display', 'none');\r\n }\r\n },\r\n\r\n /**\r\n * In future, needs to get URL from API return in previous step as parameter\r\n * In future, needs to get URL from API return in previous step as parameter\r\n **/\r\n redirect: function (inpurl) {\r\n if (window.location.search.indexOf('mobile=y') >= 0) {\r\n inpurl = inpurl + '?mobile=y';\r\n }\r\n window.location.replace(inpurl);\r\n },\r\n\r\n sendUserAnalytics: function (response, login) {\r\n var userId = this.stringTrim(document.getElementById('userid').value);\r\n var loginButton = document.getElementById(login);\r\n //Parse Response\r\n if (response !== null && response.policies !== null && response.policies.length > 0) {\r\n var inputPolicyTypes = [];\r\n var policyStatus = \"Active\";\r\n response.policies.forEach(function (item) {\r\n if (item !== null) {\r\n policyStatus = \"InActive\";\r\n if (item.policyStatus === 1) {\r\n policyStatus = \"Active\";\r\n }\r\n var policy = {\r\n \"policyType\": item.policyType,\r\n \"policyStatus\": policyStatus\r\n }\r\n inputPolicyTypes.push(policy);\r\n }\r\n });\r\n njmClientClickTracking.trackUser(loginButton, userId, inputPolicyTypes);\r\n }\r\n },\r\n\r\n backToSection: function (e) {\r\n var backSection = $(e.currentTarget).data('backsection');\r\n var currentSection = $(e.currentTarget).data('currentsection');\r\n if (backSection === 'login-box') {\r\n this.cancelReset(e);\r\n return;\r\n }\r\n var UserId = document.getElementById('userid').value;\r\n njmClientClickTracking.linkClickedWithUserID(e.currentTarget, UserId);\r\n document.getElementById(\"warning\").style.display = \"none\";\r\n document.getElementById(currentSection).style.display = \"none\";\r\n document.getElementById(backSection).style.display = \"block\";\r\n },\r\n\r\n /**\r\n * Redirects to given location. Handles Cancel and Registration button clicks\r\n **/\r\n cancelReset: function (e) {\r\n var destinationUrl = $(e.currentTarget).data('href');\r\n var UserId = document.getElementById('userid').value;\r\n njmClientClickTracking.linkClickedWithUserID(e.currentTarget, UserId);\r\n if (destinationUrl !== undefined && destinationUrl !== '') {\r\n window.location = destinationUrl;\r\n }\r\n },\r\n\r\n getOauthToken: function (destUrl, OauthUrl, self) {\r\n var goto = \"\";\r\n if (location.href.indexOf('agent') !== -1) {\r\n goto = decodeURIComponent(location.href.substr(location.href.indexOf('agent'))).replace(\"#\", \"%20%25\");\r\n }\n self.redirect(OauthUrl + goto);\r\n },\r\n\r\n urlParam: function (name, param) {\r\n var paramCheck;\r\n name = name.toLowerCase();\r\n\r\n if (!param) {\r\n var location = window.location.search,\r\n index = location.indexOf('=');\r\n paramCheck = location.substring(0, index).toLowerCase() + location.substring(index);\r\n }\r\n else paramCheck = param;\r\n\r\n var results = new RegExp('[\\?&]' + name + '=([^&#]*)')\r\n .exec(paramCheck);\r\n\r\n return (results !== null) ? results[1] || 0 : false;\r\n },\n getUrlParameter: function (name, search, encodeResult) {\r\n search = search || window.location.search;\r\n var params = new URLSearchParams(search);\r\n var param = params.get(name) || '';\r\n if (encodeResult) {\r\n param = encodeURIComponent(param);\r\n }\r\n return param;\r\n },\r\n\r\n getOriginalRequestQueryString: function () {\r\n var val = this.getUrlParameter('original_request_url');\r\n try {\r\n var url = new URL(val);\r\n return url.search;\r\n }\r\n catch (e) {\r\n console.error(e);\r\n return '';\r\n }\r\n },\r\n\r\n hasOtpMethod: function () {\r\n if (!$(\"input:radio[name='otp-method']\").is(\":checked\")) {\r\n $(\"#login2\").attr('disabled', 'disabled');\r\n }\r\n else {\r\n $(\"#login2\").removeAttr('disabled', 'disabled');\r\n }\r\n },\n fileAClaim: function () {\n sessionStorage.ClaimFor = '';\n sessionStorage.FromClaimPage = 'false';\n }\n \n\r\n });\r\n})(jQuery, njm);\r\n\r\n","(function ($, njm) {\r\n 'use strict';\r\n\r\n njm.views.modalSearchResults = Backbone.View.extend({\r\n\r\n events: {\r\n \t//\"click button\": \"submit\"\r\n\t\t},\r\n\t\t\r\n\t\tinitialize: function() {\r\n\t\t\t\r\n\t\t\tthis.form = this.$(\"form.search-box\");\r\n\t\t\t\r\n\t\t\tthis.formField = this.$(\"#modal-search-query\");\r\n\t\t\t\r\n\t\t\tthis.regexPattern = this.formField.attr(\"data-val-regex-pattern\");\r\n\t\t\t\r\n\t\t\tthis.regex = new RegExp(this.regexPattern);\r\n\t\t\r\n\t\t\tthis.regexErrorText = this.formField.attr(\"data-val-regex\");\r\n\t\t\t\r\n\t\t\tthis.requiredErrorText = this.formField.attr(\"data-val-required\");\r\n\t\t\t\r\n\t\t\tthis.errorEl = this.$(\"span.error\");\r\n\t\t\t\r\n\t\t\tthis.modalID = '#' + this.$el.parents('.custom-modal').attr('id');\r\n\t\t\t\r\n\t\t\tif (window.customModal) {\r\n\t\t\t\twindow.customModal.modalSearchModalID = this.modalID;\r\n\t\t\t} else if (!window.customModal) {\r\n\t\t\t\twindow.customModal = {};\r\n\t\t\t\twindow.cusotmModal.modalSearchModalID = this.modalID;\r\n\t\t\t}\r\n\t\t\t\r\n\t\t\twindow.customModal.setFocusableEls = function() {\r\n\t\t\t\tnjm.views.customModal.prototype.setFocusableEls($(this.modalSearchModalID));\r\n\t\t\t}\r\n\t\t\t\r\n\t\t\tif (!window.modalSearch) {\r\n\t\t\t\twindow.modalSearch = {};\r\n\t\t\t}\r\n\t\t\t\r\n\t\t\t// values to pass to the functions in the window object\r\n\t\t\twindow.modalSearch.form = this.form;\r\n\t\t\twindow.modalSearch.formField = this.formField;\r\n\t\t\twindow.modalSearch.regex = this.regex;\r\n\t\t\twindow.modalSearch.regexErrorText = this.regexErrorText;\r\n\t\t\twindow.modalSearch.requiredErrorText = this.requiredErrorText;\r\n\t\t\twindow.modalSearch.errorEl = this.errorEl;\r\n\t\t\t\r\n\t\t\twindow.modalSearch.onBeginValidate = function() {\r\n window.modalSearch.submitValidation()\r\n\t\t\t}\r\n\t\t\t\r\n window.modalSearch.submitValidation = this.submitValidation;\r\n\t\t\t\r\n\t\t\twindow.modalSearch.validate = this.validate;\r\n\t\t\t\r\n\t\t\twindow.modalSearch.hideError = this.hideError;\r\n\t\t\t\r\n window.modalSearch.showError = this.showError;\n window.fnModalSearchPagination = this.fnModalSearchPagination;\r\n\t\t\t\r\n\t\t},\r\n\n fnModalSearchPagination: function (event) {\n if (event !== undefined) { \n if (event.keyCode === 13) {\n //If Page Input is less than 1 then default to 1. If page input greater than the total page count then default to totalpage count. \n var pageInput = $('.pageInput').val();\n var totalPageCount = $(\"#TotalPageCount\").val();\n if (pageInput !== undefined && totalPageCount !== undefined) {\n if (pageInput.length == 0||parseInt(pageInput) < 1) {\n pageInput = 1\r\n }\n else if (parseInt(totalPageCount) < parseInt(pageInput)) {\n pageInput = totalPageCount\r\n }\n $(\".inputPage\").attr('href', $(\".inputPage\").attr('href').replace(\"pageInput\", pageInput));\n $(\".inputPage\").click();\n }\n }\n }\r\n },\r\n submitValidation: function() {\r\n\t\t\t\r\n\t\t\tvar valid = this.validate();\r\n\t\t\tif (valid) {\r\n this.hideError();\n $(\"#resultContainer\").show();\n return true;\r\n\t\t\t}\r\n\t\t\tif (this.formField.val().trim() === '') {\r\n this.showError();\n $(\"#resultContainer\").hide();\r\n\t\t\t}\r\n\t\t\t\r\n\t\t\treturn false;\r\n\t\t},\r\n\t\t\r\n\t\tvalidate: function() {\r\n var val = this.formField.val(),\n valid = this.regex.test(val);\r\n\t\t\t\r\n\t\t\tif (this.formField.val().trim() === '') {\r\n\t\t\t\tthis.errorEl.text(this.requiredErrorText);\r\n\t\t\t\tthis.form.removeClass('validated');\r\n\t\t\t\treturn false;\r\n\t\t\t} else if (!valid) {\r\n\t\t\t\tthis.errorEl.text(this.regexErrorText);\r\n\t\t\t\tthis.form.addClass('validated');\r\n this.showError();\n $(\"#resultContainer\").hide();\r\n\t\t\t}\r\n\t\t\t\r\n\t\t\treturn valid;\r\n\t\t\t\r\n\t\t},\r\n\t\t\r\n\t\thideError: function() {\r\n\t\t\tthis.form.removeClass('haserror');\r\n\t\t},\r\n\t\t\r\n\t\tshowError: function() {\r\n\t\t\tthis.form.addClass('haserror');\r\n\t\t}\r\n\t\t\r\n\t});\r\n})(jQuery, njm);\r\n","(function ($, njm) {\r\n 'use strict';\r\n\r\n njm.views.modalSearch = Backbone.View.extend({\r\n\r\n events: {\r\n\t\t\t\"click button\": \"submit\",\r\n\t\t\t\"focus .validated #modal-search\": \"handleFocusIn\",\r\n\t\t\t\"focus .validated button\": \"handleFocusIn\"\r\n\t\t},\r\n\t\t\r\n\t\tinitialize: function() {\r\n\t\t\t\r\n\t\t\tthis.form = this.$(\"form\");\r\n\t\t\t\r\n\t\t\tthis.formAction = this.form.attr(\"action\");\r\n\t\t\t\r\n\t\t\tthis.formField = this.$(\"#modal-search\");\r\n\t\t\t\r\n\t\t\tthis.regexPattern = this.formField.attr(\"data-val-regex-pattern\");\r\n\t\t\t\r\n\t\t\tthis.regex = new RegExp(this.regexPattern);\r\n\t\t\r\n this.regexErrorText = this.formField.attr(\"data-val-regex-error\");\r\n\t\t\t\r\n\t\t\tthis.requiredErrorText = this.formField.attr(\"data-val-required\");\r\n\t\t\t\r\n\t\t\tthis.errorTooltip = this.$(\"#searchErrorMsg\");\r\n\t\t\t\r\n\t\t\t$('body').on('click focusin', this.leaveForm.bind(this));\r\n\t\t\t\r\n\t\t\tif (window.location.hash === this.form.attr('data-modal')) {\r\n\t\t\t\tvar query = this.getQuery();\r\n\t\t\t\t\r\n\t\t\t\tif (query) {\r\n\t\t\t\t\tthis.formField.val(query);\r\n\t\t\t\t\tthis.submit();\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t},\r\n\t\t\r\n\t\tsubmit: function() {\r\n\t\t\tvar valid = this.validate(),\r\n\t\t\t\tpagePath = window.location.pathname;\r\n\t\t\t\r\n\t\t\tif (valid) {\r\n\t\t\t\tif (pagePath[pagePath.length - 1] === \"/\" && pagePath.length > 1) {\r\n\t\t\t\t\tpagePath = pagePath.slice(0,-1);\r\n\t\t\t\t}\r\n\t\t\t\t\r\n\t\t\t\tif (pagePath === this.formAction) {\r\n\t\t\t\t\tthis.submitSearch();\r\n\t\t\t\t} else if (pagePath != this.formAction) {\r\n\t\t\t\t\tthis.redirect();\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\t\r\n\t\t\tif (this.formField.val().trim() === '') {\r\n\t\t\t\tthis.showError();\r\n\t\t\t}\r\n\t\t\t\r\n\t\t\treturn false;\r\n\t\t},\r\n\t\t\r\n\t\tredirect: function() {\r\n\t\t\t\r\n\t\t\tvar site = window.location.origin,\r\n\t\t\t\ttargetPage = this.formAction,\r\n\t\t\t\tquery = \"?q=\" + this.formField.val(),\r\n\t\t\t\tmodal = this.form.attr('data-modal');\r\n\t\t\t\r\n\t\t\twindow.location.href = site + targetPage + query + modal;\r\n\t\t},\r\n\t\t\r\n\t\tsubmitSearch: function() {\r\n\t\t\t\r\n\t\t\tvar modalName = this.form.attr('data-modal'),\r\n\t\t\t\tmodal= $(modalName),\r\n\t\t\t\tquery = this.formField.val();\r\n\t\t\t\r\n modal.find('#modal-search-query').val(query);\n modal.find('#SearchQuery').val(query);\n $(\"#searchModalButton\").click();\r\n\t\t\tnjm.views.customModal.prototype.openGenericCustomModal(modalName);\r\n\t\t},\r\n\t\t\r\n\t\tvalidate: function() {\r\n var val = this.formField.val(),\n valid = this.regex.test(val);\r\n\t\t\t\r\n\t\t\tif (this.formField.val().trim() === '') {\r\n\t\t\t\tthis.errorTooltip.text(this.requiredErrorText);\r\n\t\t\t\tthis.form.removeClass('validated');\r\n\t\t\t\treturn false;\r\n\t\t\t} else if (!valid) {\r\n\t\t\t\tthis.errorTooltip.text(this.regexErrorText);\r\n\t\t\t\tthis.form.addClass('validated');\r\n\t\t\t\tthis.showError();\r\n\t\t\t}\r\n\t\t\t\r\n\t\t\treturn valid;\r\n\t\t\t\r\n\t\t},\r\n\t\t\r\n\t\tgetQuery: function() {\r\n\t\t\tvar search = new URLSearchParams(window.location.search),\r\n\t\t\t\tparams = Object.fromEntries(search.entries());\r\n\t\t\t\r\n\t\t\treturn params.q || false;\r\n\t\t\t\r\n\t\t},\r\n\t\t\r\n\t\thandleFocusIn: function() {\r\n\t\t\tif (this.formField.val().trim() === '') {\r\n\t\t\t\tthis.hideError();\r\n\t\t\t} else {\r\n\t\t\t\tthis.validate();\r\n\t\t\t}\r\n\t\t},\r\n\t\t\r\n\t\thideError: function() {\r\n\t\t\tthis.form.removeClass('haserror');\r\n\t\t},\r\n\t\t\r\n\t\tshowError: function() {\r\n\t\t\tthis.form.addClass('haserror');\r\n\t\t},\r\n\t\t\r\n\t\tleaveForm: function(e) {\r\n\t\t\tif ($(e.target).closest('.comp-modal-search').length === 0) {\r\n\t\t\t\tthis.hideError();\r\n\t\t\t}\r\n\t\t}\r\n\t\t\r\n\t});\r\n})(jQuery, njm);\n","(function ($, njm) {\r\n 'use strict';\r\n\r\n njm.views.navigationsearch = Backbone.View.extend({\r\n\r\n events: {\r\n },\r\n\r\n initialize: function () {\r\n\r\n var $this = this;\r\n $(\"#insearch\").on({\r\n keyup: function () {\r\n $this.getSuggestions();\r\n },\r\n\r\n click: function () {\r\n $this.getSuggestions();\r\n },\r\n\r\n focus: function () {\r\n $this.getSuggestions();\r\n }\r\n\r\n });\r\n\r\n $('body').click(function (event) {\r\n\r\n if ($(event.target).closest('#searchResult').length != 1 && $(event.target).closest('#insearch').length != 1) {\r\n $this.slideUp();\r\n }\r\n });\r\n\r\n this.initialiseLiComponents();\r\n },\r\n\r\n getSuggestions: function () {\r\n\r\n var $this = this,\r\n\t\t\t\tsearch = $('#insearch').val().toLowerCase();\r\n\r\n search = jQuery.trim(search);\r\n\r\n if (search != \"\" && search.length > 2) {\r\n $.ajax({\r\n url: '/api/search/suggest/GetSuggestions',\r\n type: 'get',\r\n data: { term: search },\r\n dataType: 'json',\r\n success: function (response) {\r\n\r\n var len = response.length;\r\n $(\"#searchResult\").empty();\r\n for (var i = 0; i < len; i++) {\r\n var name = response[i].toLowerCase();\r\n $(\"#searchResult\").append(\"
  • \" + name.replace(search, '' + search + '') + \"
  • \");\r\n }\r\n //binding click event to li\r\n if (len > 0) {\r\n $this.initialiseLiComponents();\r\n $('#searchResult').show();\r\n }\r\n },\r\n error: function (response) {\r\n\r\n }\r\n });\r\n }\r\n else {\r\n $(\"#searchResult\").empty();\r\n }\r\n },\r\n\r\n slideUp: function () {\r\n $('#searchResult').slideUp();\r\n },\r\n\r\n initialiseLiComponents: function () {\r\n var $this = this;\r\n var component = $('#searchResult');\r\n var focusableEls = component.find('li a');\r\n var lastFocusableEl = $(focusableEls[focusableEls.length - 1]);\r\n\r\n component.find('li a').on({\r\n click: function (event) {\r\n $this.setText(event);\r\n }\r\n });\r\n\r\n lastFocusableEl.keydown(function (event) {\r\n $this.lastFocusableElTab(event);\r\n });\r\n },\r\n\r\n setText: function (event) {\r\n event.preventDefault();\r\n var response = $(event.target).closest('a').text();\r\n $(\"#insearch\").val(response);\r\n $(\"#navigationSearch\").submit();\r\n this.slideUp();\r\n },\r\n\r\n lastFocusableElTab: function (event) {\r\n\r\n var key = event.which;\r\n\r\n if (key === 9) { //tab\r\n if (!event.shiftKey) {\r\n this.slideUp();\r\n }\r\n }\r\n }\r\n\r\n });\r\n})(jQuery, njm);","(function ($, njm) {\n 'use strict';\n\n njm.views.noCookie = Backbone.View.extend({\n\n events: {\n 'click .dismiss': 'dismiss'\n },\n\n /**\n * Initialize\n */\n initialize: function () {\n $(this.el).hide();\n if (!this.cookieEnabled()) {\n $(this.el).show();\n }\n },\n\n /**\n *\n * @returns {boolean}\n */\n cookieEnabled: function () {\n document.cookie = 'test=cookieEnabled';\n return document.cookie.length > 0 && document.cookie.indexOf('test=cookieEnabled') >= 0;\n },\n\n /**\n * Dismiss\n */\n dismiss: function () {\n $(this.el).slideUp();\n }\n\n });\n})(jQuery, njm);\n","(function ($, njm) {\r\n 'use strict';\r\n\r\n njm.views.pagination = Backbone.View.extend({\r\n\r\n events: {\r\n 'keydown #pageInput': 'validate',\r\n 'click #pageForm a': 'submit',\r\n \"submit #pageForm\": \"fnPagination\"\r\n },\r\n\r\n /**\r\n * Initialize\r\n */\r\n initialize: function () {\r\n this.$input = this.$('input');\r\n var currentPage = this.urlParam(\"page\");\r\n window.addEventListener(\"pageshow\", function (event) {\r\n if (currentPage != \"undefined\" && currentPage != null && currentPage != false) {\r\n document.getElementById(\"pageInput\").value = currentPage;\r\n }\r\n else {\r\n document.getElementById(\"pageInput\").value = \"1\";\r\n }\r\n });\r\n\r\n },\r\n\r\n\r\n\r\n\r\n urlParam: function (name) {\r\n name = name.toLowerCase();\r\n var location = window.location.search,\r\n index = location.indexOf('='),\r\n locationCheck = location.substring(0, index).toLowerCase() + location.substring(index);\r\n\r\n var results = new RegExp('[\\?&]' + name + '=([^&#]*)')\r\n .exec(locationCheck);\r\n return (results !== null) ? results[1] || 0 : 1;\r\n },\r\n\r\n /**\r\n * Validate\r\n */\r\n validate: function (e) {\r\n // Allow: backspace, delete, tab, escape, enter and .\r\n if ($.inArray(e.keyCode, [46, 8, 9, 27, 13, 110, 190]) !== -1 ||\r\n\r\n // Allow: Ctrl/cmd+A\r\n (e.keyCode === 65 && (e.ctrlKey === true || e.metaKey === true)) ||\r\n\r\n // Allow: Ctrl/cmd+C\r\n (e.keyCode === 67 && (e.ctrlKey === true || e.metaKey === true)) ||\r\n\r\n // Allow: Ctrl/cmd+X\r\n (e.keyCode === 88 && (e.ctrlKey === true || e.metaKey === true)) ||\r\n\r\n // Allow: home, end, left, right\r\n (e.keyCode >= 35 && e.keyCode <= 39)) {\r\n\r\n // let it happen, don't do anything\r\n return;\r\n }\r\n\r\n // Ensure that it is a number and stop the keypress\r\n if ((e.shiftKey || (e.keyCode < 48 || e.keyCode > 57)) && (e.keyCode < 96 || e.keyCode > 105)) {\r\n e.preventDefault();\r\n }\r\n\r\n // Allow: maximum number of characters\r\n this.maxChar = 3;\r\n if ($(e.currentTarget).val().length >= this.maxChar) {\r\n e.preventDefault();\r\n }\r\n\r\n //this.$input.removeClass('error');\r\n\r\n },\r\n\r\n fnPagination: function () {\r\n var pageInput = $('input[name=page]').val();\r\n var totalPageCount = $(\".last\").text();\r\n if (pageInput !== undefined && totalPageCount !== undefined) {\r\n if (pageInput.length == 0 || parseInt(pageInput) < 1) {\r\n pageInput = 1\r\n }\r\n else if (parseInt(totalPageCount) < parseInt(pageInput)) {\r\n pageInput = totalPageCount\r\n }\r\n $('input[name=page]').val(pageInput).trigger('change');\r\n }\r\n },\r\n\r\n /**\r\n * Submit\r\n */\r\n submit: function (e) {\r\n e.preventDefault();\r\n this.currPage = Number(this.$input.val());\r\n this.lastPage = Number(this.$('.last').text());\r\n\r\n if ((!this.currPage) || (this.currPage > this.lastPage)) {\r\n this.$input.addClass('error');\r\n e.preventDefault();\r\n }\r\n var pageNumber = $(e.currentTarget).attr('pageno');\r\n //check first the hidden variable if set\r\n // var query = '';\r\n // var category = '';\r\n // //if($('#pagerQuery').val() ==='')\r\n // query = $('#searchInput').attr('placeholder');\r\n // $('#pagerQuery').val(query);\r\n //// if ($('#pagerCategory').val() === '')\r\n // category = $('#searchInputCategory').val();\r\n // $('#pagerQuery').val(query);\r\n // //searchInputCategory\r\n // $('#pagerCategory').val(category);\r\n $('#pageInput').val(pageNumber);\r\n $('#pageForm')[0].submit();\r\n }\r\n });\r\n})(jQuery, njm);\r\n","(function ($, njm) {\r\n 'use strict';\r\n\r\n njm.views.searchResults = Backbone.View.extend({\r\n\r\n events: {\r\n 'click .filter-selected': 'open',\r\n 'click .filter-list a': 'selectCategory',\r\n },\r\n\r\n /**\r\n * Initialize\r\n */\r\n initialize: function () {\r\n this.$category = this.$('.filter-list a');\r\n this.$selectedCategory = this.$category.filter('.active');\r\n this.$selectedLabel = this.$('.filter-selected');\r\n\t\t\tthis.$dropdown = this.$('.filter-list');\r\n\t\t\t\r\n\t\t\tvar params = new URLSearchParams(window.location.search),\r\n\t\t\t\tquery = params.get('q'),\r\n\t\t\t\tsearchInput = this.$('#searchInput'),\r\n\t\t\t\t$this = this;\r\n\r\n if (this.$selectedCategory.length > 0) {\r\n this.$selectedLabel.html(this.$selectedCategory.html());\r\n }\r\n \r\n $(\"#searchInput\").on({\r\n keyup: function () {\r\n $this.getSuggestions();\r\n },\r\n\r\n click: function () {\r\n $this.getSuggestions();\r\n },\r\n\r\n focus: function () {\r\n $this.getSuggestions();\r\n }\r\n\r\n });\r\n\r\n $('body').click(function (event) {\r\n\r\n if ( $(event.target).closest('#inSearchResult').length != 1 && $(event.target).closest('#searchInput').length != 1 && $(event.target).closest('.search-box label[for=searchInput]').length != 1 ) {\r\n $this.slideUp();\r\n }\r\n\t\t\t\t\r\n\t\t\t\tif ( $(event.target).closest('.search-filters .filter-select').length < 1) {\r\n\t\t\t\t\t$this.$dropdown.slideUp();\r\n\t\t\t\t}\r\n });\r\n\r\n this.initialiseLiComponents();\r\n\t\t\t\r\n\t\t\tif (query != null) {\r\n\t\t\t\tsearchInput.val(query);\r\n\t\t\t}\r\n },\r\n\r\n /**\r\n * Select filter\r\n */\r\n open: function () {\r\n this.$dropdown.slideToggle();\r\n },\r\n selectCategory: function (e) {\r\n e.preventDefault();\r\n var element = $(e.currentTarget);\r\n var form = element.closest(\"form\");\r\n //form.action = element[0].href;\r\n // form.find('input[id=searchInputCategory]').val(element[0].text);\r\n form.find('input[id=searchInputCategory]').val(element[0].getAttribute('data-val'));\r\n form.find('input[id=searchInput]').val($('#searchInput').attr('data-val'));\r\n form.find('input[id=checkRequired]').val('true');\r\n form[0].submit();\r\n },\r\n getSuggestions: function () {\r\n\r\n var $this = this,\r\n search = $('#searchInput').val().toLowerCase();\r\n\t\t\t\r\n\t\t\tsearch = jQuery.trim(search);\r\n\r\n if (search != \"\" && search.length > 2) {\r\n $.ajax({\r\n url: '/api/search/suggest/GetSuggestions',\r\n type: 'get',\r\n data: { term: search },\r\n dataType: 'json',\r\n success: function (response) {\r\n\r\n var len = response.length;\r\n $(\"#inSearchResult\").empty();\r\n for (var i = 0; i < len; i++) {\r\n var name = response[i].toLowerCase();\r\n $(\"#inSearchResult\").append(\"
  • \" + name.replace(search, '' + search + '') + \"
  • \");\r\n }\r\n //binding click event to li\r\n if (len > 0) {\r\n $this.initialiseLiComponents();\r\n $('#inSearchResult').show();\r\n }\r\n },\r\n error: function (response) {\r\n\r\n }\r\n });\r\n }\r\n else {\r\n $(\"#inSearchResult\").empty();\r\n }\r\n },\r\n\r\n slideUp: function () {\r\n $('#inSearchResult').slideUp();\r\n },\r\n\r\n initialiseLiComponents: function () {\r\n var $this = this;\r\n var component = $('#inSearchResult');\r\n var focusableEls = component.find('li a');\r\n var lastFocusableEl = $(focusableEls[focusableEls.length - 1]);\r\n\r\n component.find('li a').on({\r\n click: function (event) {\r\n $this.setText(event);\r\n }\r\n });\r\n\r\n lastFocusableEl.keydown(function (event) {\r\n $this.lastFocusableElTab(event);\r\n });\r\n },\r\n\r\n setText: function (event) {\r\n event.preventDefault();\r\n var response = $(event.target).closest('a').text();\r\n $(\"#searchInput\").val(response);\r\n $(\"#searchResultForm\").submit();\r\n this.slideUp();\r\n },\r\n\r\n lastFocusableElTab: function (event) {\r\n\r\n var key = event.which;\r\n\r\n if (key === 9) { //tab\r\n if (!event.shiftKey) {\r\n this.slideUp();\r\n }\r\n }\r\n }\r\n \r\n\r\n });\r\n})(jQuery, njm);\n","(function ($, njm) {\n 'use strict';\n\n njm.views.subscribe = Backbone.View.extend({\n\n events: {\n 'keyup #subscribeInput': 'validate',\n 'click #subscribeButton': 'submit'\n },\n\n /**\n * Initialize\n */\n initialize: function () {\n this.$input = this.$('#subscribeInput');\n this.$button = this.$('#subscribeButton');\n this.$errorMsg = this.$('.msg-error');\n\n this.$button.prop('disabled', true);\n this.$errorMsg.hide();\n },\n\n /**\n * Validate\n */\n validate: function (e) {\n if ($(e.currentTarget).val() === '') {\n this.$button.prop('disabled', true);\n } else {\n this.$button.prop('disabled', false);\n }\n },\n\n /**\n * Submit\n */\n submit: function (e) {\n this.minChar = 7;\n this.maxChar = 60;\n this.reg = /.+\\@.+\\..+/;\n\n this.$errorMsg.hide();\n\n if ((this.$input.val().length < this.minChar) || (this.$input.val().length > this.maxChar) || (!this.reg.test(this.$input.val()))) {\n $('.msg-error').show();\n\n return false;\n }\n }\n\n });\n})(jQuery, njm);\n","(function ($, njm) {\n 'use strict';\n\n njm.views.tabs = Backbone.View.extend({\n\n events: {\n 'click .tabs li': 'chooseTab'\n },\n\n /**\n * Initialize\n */\n initialize: function () {\n this.$tabs = this.$('.tab');\n },\n\n /**\n * Choose Tab\n */\n chooseTab: function (e) {\n\n console.log('chooseTab', $(e.currentTarget).data('tab'));\n\n this.$tabs.removeClass('active');\n $(e.currentTarget).siblings().removeClass('active');\n this.$tabs.filter('[data-tab=\"' + $(e.currentTarget).data('tab') + '\"]').addClass('active');\n $(e.currentTarget).addClass('active');\n }\n\n });\n})(jQuery, njm);\n","(function ($, njm) {\n 'use strict';\n\n njm.views.topcategories = Backbone.View.extend({\n events: {\n 'click #linkcategories a': 'submitSearch'\n },\n initialize: function () {\n },\n submitSearch: function (e) {\n e.preventDefault();\n var element = $(e.currentTarget);\n var form = element.closest(\"form\");\n form.find('input[id=searchInputRelated]').val(element[0].text);\n form[0].submit();\n }\n });\n})(jQuery, njm);\n","(function ($, njm) {\r\n 'use strict';\r\n\r\n njm.views.userGuide = Backbone.View.extend({\r\n\r\n events: {\r\n \"change input\": \"checkValue\",\r\n\t\t\t\"click button.button, button.back\": \"buttonNavigate\",\n \"click .file-claim\": \"fileAClaim\",\r\n },\r\n\r\n /**\r\n * Initialize\r\n */\r\n initialize: function () {\r\n\t\t\tvar $this = this;\r\n\t\t\t\r\n\t\t\t$(document).ready(function(){\r\n\t\t\t\tsetTimeout($this.startChecked, 100);\r\n\t\t\t});\r\n\t\t\t\r\n\t\t\t\r\n },\r\n\t\t\r\n\t\tstartChecked: function(){\r\n\t\t\t\tvar checked = this.$('[data-key=\"start\"] input:checked');\r\n\r\n\t\t\t\tif ( checked.length === 1 ) {\r\n\t\t\t\t\tchecked.trigger('change');\r\n\t\t\t\t}\r\n\t\t},\r\n\t\t\r\n checkValue: function (event) {\r\n\t\t\t\r\n\t\t\tvar $el = $(event.target),\r\n\t\t\t\tval = $el.val(),\r\n\t\t\t\t$currentScreen = $el.closest('.screen'),\r\n\t\t\t\tcurrentScreenData = $currentScreen.data('screen'),\r\n\t\t\t\ttargetScreenData,\r\n\t\t\t\tsameScreen,\r\n\t\t\t\toptions = [],\r\n\t\t\t\tradioName;\r\n\t\t\t\r\n\t\t\t//find if target element is in same screen as current question\r\n\t\t\ttargetScreenData = this.$('[data-key=' + val + ']').closest('.screen').data('screen');\r\n\t\t\tsameScreen = ( currentScreenData === targetScreenData );\r\n\t\t\t\r\n\t\t\t//gather options for current input\r\n\t\t\tif ($el.attr('type') === 'radio') {\r\n\t\t\t\tradioName = $el.attr('name');\r\n\t\t\t\t\r\n\t\t\t\tthis.$('[name=' + radioName + ']').each(function(){\r\n\t\t\t\t\toptions.push($(this).val());\r\n\t\t\t\t})\r\n\t\t\t\t\r\n\t\t\t}\r\n\t\t\t\r\n\t\t\tif (sameScreen) {\r\n\t\t\t\t\r\n\t\t\t\t//disable continue button\r\n\t\t\t\t$currentScreen.find('button.button').attr('disabled','disabled').removeAttr('data-target');\r\n\t\t\t\t\r\n\t\t\t\t//hide all options for current input\r\n\t\t\t\tthis.hideEls(options);\r\n\r\n\t\t\t\t//display selected option for current input value\r\n\t\t\t\tthis.showEl(this.$('[data-key=' + val + ']'));\r\n\t\t\t\t\r\n\t\t\t} else if (!sameScreen) {\r\n\t\t\t\t//hide all options for current input\r\n\t\t\t\tthis.hideEls(options);\r\n\r\n\t\t\t\t//enable and populate continue button\r\n\t\t\t\t$currentScreen.find('button.button').removeAttr('disabled').attr('data-target',val);\r\n\t\t\t}\r\n\t\t\t\t\r\n },\r\n\t\t\r\n\t\thideEls: function(elList) {\r\n\t\t\tvar el, elChecked, elSecondaryList = [];\r\n\t\t\t\r\n\t\t\t\r\n\t\t\tif (elList.length > 1) {\r\n\t\t\t\t\r\n\t\t\t\tfor (var i = 0; i < elList.length; i++) {\r\n\t\t\t\t\tel = this.$('[data-key=' + elList[i] + ']');\r\n\t\t\t\t\tel.hide();\r\n\t\t\t\t\t\r\n\t\t\t\t\telChecked = el.find('input:checked');\r\n\t\t\t\t\t\r\n\t\t\t\t\tif (elChecked.length === 1) {\r\n\t\t\t\t\t\telSecondaryList.push(elChecked.val());\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t\t\r\n\t\t\t\tif (elSecondaryList.length > 0) {\r\n\t\t\t\t\tthis.hideEls(elSecondaryList);\r\n\t\t\t\t}\r\n\t\t\t\t\r\n\t\t\t} else if (elList.length === 1) {\r\n\t\t\t\t\r\n\t\t\t\tthis.$('[data-key=' + elList + ']').hide();\r\n\t\t\t\t\r\n\t\t\t}\r\n\t\t\t\r\n\t\t},\r\n\t\t\r\n\t\tshowEl: function($el) {\r\n\t\t\tvar $elChecked = $el.find('input:checked');\r\n\t\t\t\r\n\t\t\t$el.fadeIn(500).removeClass('hidden');\r\n\t\t\t\r\n\t\t\tif ($elChecked.length === 1) {\r\n\t\t\t\t$elChecked.trigger('change');\r\n\t\t\t}\r\n\t\t},\r\n\t\t\r\n\t\t\r\n\t\t\r\n\t\tbuttonNavigate: function (event) {\r\n\t\t\t\r\n\t\t\tvar $this = this,\r\n\t\t\t\t$target = $(event.target),\r\n\t\t\t\ttargetData = $target.attr('data-target'),\r\n\t\t\t\t$targetScreen = this.$('[data-screen=' + targetData + ']'),\r\n\t\t\t\t$currentScreen = $target.closest('.screen');\r\n\t\t\t\r\n\t\t\t\r\n\t\t\t//hide current screen and display next screen\r\n\t\t\t$currentScreen.fadeOut(function(){\r\n\t\t\t\t$targetScreen.fadeIn().removeClass('hidden');\r\n\t\t\t\t$this.scrollToTop();\r\n\t\t\t});\r\n\t\t\t\r\n\t\t\t//populate back screen target\r\n\t\t\tif ($targetScreen.find('button.back').length > 0) {\r\n\t\t\t\t$targetScreen.find('button.back').attr('data-target',$currentScreen.data('screen'));\r\n\t\t\t}\r\n\t\t},\r\n\t\t\r\n\t\ttopIsVisible: function () {\r\n\t\t\t//measure if the top of the userGuide element is visible\r\n\t\t\tvar winTop = $(window).scrollTop(),\r\n\t\t\t\telTop = this.$el.offset().top;\r\n\r\n\t\t\treturn (elTop > winTop);\r\n\t\t},\r\n\t\t\r\n\t\tscrollToTop: function () {\r\n\t\t\tvar $this = this;\r\n\t\t\t\r\n\t\t\tif (!this.topIsVisible()) {\r\n\t\t\t\t//if top is not visible, scroll up to make the top visible\r\n\t\t\t\t$([document.documentElement, document.body]).animate({\r\n\t\t\t\t\tscrollTop: $this.$el.offset().top\r\n\t\t\t\t}, 500);\r\n\t\t\t}\n },\n fileAClaim: function (e) {\n var claimType = $(e.currentTarget).data('claim-type');\n sessionStorage.ClaimFor = claimType;\n sessionStorage.FromClaimPage = 'true';\r\n\t\t}\r\n });\r\n})(jQuery, njm);\n","(function ($, njm) {\r\n 'use strict';\r\n\r\n njm.views.verticalTabs = Backbone.View.extend({\r\n\r\n /**\r\n * Initialize\r\n */\r\n initialize: function () {\r\n this.$holder = this.$('.holder');\r\n\r\n // execute view and listener\r\n this.listenToMedia(this.render.bind(this));\r\n this.render(this.getCurrentMedia());\r\n },\r\n\r\n /**\r\n * Render\r\n * @param {string} media\r\n */\r\n render: function (media) {\r\n\t\t\tif (this.lastView) {\r\n\t\t\t\t\r\n\t\t\t\tif (this.lastView.medias.indexOf(media) === -1) {\r\n\t\t\t\t\tthis.lastView.close();\r\n\t\t\t\t\tthis.lastView = this.switchMedia(media);\r\n\t\t\t\t}\r\n\t\t\t\t\r\n\t\t\t} else {\r\n\t\t\t\t// append view based on media\r\n \tthis.lastView = this.switchMedia(media);\r\n\t\t\t}\r\n\t\t\t\r\n\t\t\t\r\n \r\n },\r\n\r\n /**\r\n * Switch View by media\r\n * @param media\r\n * @returns {Object}\r\n */\r\n switchMedia: function (media) {\r\n switch (media) {\r\n case 'mobile':\r\n return this.renderMobile();\r\n\r\n case 'tablet':\r\n\t\t\t\tcase 'desktop':\r\n return this.renderDesktop();\r\n }\r\n },\r\n\r\n /**\r\n * Render Mobile\r\n * @returns {Object}\r\n */\r\n renderMobile: function () {\r\n return new njm.views.verticalTabsMobile({\r\n el: this.$holder,\r\n\t\t\t\ttemplate: this.$('#comp-vertical-tabs-mobile-' + this.templateNum)\r\n });\r\n },\r\n\r\n /**\r\n * Render Desktop\r\n * @returns {Object}\r\n */\r\n renderDesktop: function () {\r\n\t\t\t\r\n return new njm.views.verticalTabsDesktop({\r\n el: this.$holder\r\n });\r\n }\r\n\r\n });\r\n})(jQuery, njm);","$(document).ready(function() {\r\n// Start of $(document).ready ---------------------------\r\n\t'use strict';\r\n\t\r\n\tvar zipSearch = $('.comp-zip-search');\r\n\t\r\n\tif ( zipSearch.length > 0 ) {\r\n\t\tzipSearchFunc();\r\n\t}\r\n\t\r\n\tfunction zipSearchFunc() {\r\n\t\t//\"DISCLAIMER\" CLOSE BUTTON\r\n\t\t$('.comp-zip-search button[data=\"close\"]').click(function() {\r\n\t\t\t$(this).parent().slideUp(400);\r\n\t\t});\r\n\r\n\t\t//SUBMIT BUTTON DISABLED\r\n\t\tfunction checkInput() {\r\n\t\t\tif ( ($('.comp-zip-search input:radio:checked').length <= 0) && ($('.comp-zip-search input#ZipCode').val() === '') ) {\r\n\t\t\t\t$('.comp-zip-search input.button').prop('disabled', true);\r\n\t\t\t} else {\r\n\t\t\t\t$('.comp-zip-search input.button').prop('disabled', false);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tcheckInput();\r\n\t\t$('.comp-zip-search input').on('keyup', checkInput);\r\n\t\t$('.comp-zip-search input').change(checkInput);\r\n\t}\r\n\r\n// End of $(document).ready -----------------------------\r\n});","(function ($, njm) {\r\n 'use strict';\r\n\r\n njm.views.articlesHeroDesktop = Backbone.View.extend({\r\n\r\n events: {\r\n 'mouseenter .nav > a': 'setActiveByEvent',\r\n\t\t\t'focusin .nav > a': 'setActiveByEvent',\r\n\t\t\t'mouseenter .container': 'stopTimer',\r\n\t\t\t'mouseleave .container': 'startTimer',\r\n\t\t\t'blur .nav > a': 'startTimer',\r\n\t\t\t\r\n },\r\n\r\n // supported medias for this view\r\n medias: ['desktop', 'tablet'],\r\n\r\n /**\r\n * Initialize\r\n */\r\n initialize: function () {\r\n\t\t\tvar $this = this;\r\n\t\t\t\r\n this.template = $('#comp-articles-hero-desktop').html();\r\n\r\n // Render\r\n this.render();\r\n\t\t\t\r\n\t\t\tthis.navCount = this.$('.nav > a').length;\r\n\t\t\tthis.timer = this.$('.comp-articles-hero-desktop').attr('data-autoplay');\r\n\t\t\tthis.timerCounter = 0;\r\n\t\t\tthis.timerInterval = this.$('.comp-articles-hero-desktop').attr('data-autoplay-interval');\r\n\t\t\tthis.hoverActive = false;\r\n\t\t\t\r\n\t\t\tif (this.timer.toLowerCase() === 'true') {\r\n\t\t\t\t\r\n\t\t\t\tthis.setInterval = setInterval(function() {\r\n\t\t\t\t\tif($this.hoverActive) {\r\n\t\t\t\t\t\treturn;\r\n\t\t\t\t\t} else if ($this.timerCounter >= $this.timerInterval) {\r\n\t\t\t\t\t\t$this.setActiveByTimer();\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\t$this.timerCounter += .25;\r\n\t\t\t\t\t\t//console.log('Timer: ' + $this.timer);\r\n\t\t\t\t\t}\r\n\t\t\t\t}, 250);\r\n\t\t\t\t\r\n\t\t\t}\r\n },\r\n\r\n /**\r\n * Render\r\n */\r\n render: function () {\r\n this.$el.html(this.template);\r\n },\r\n\t\t\r\n\t\tsetActive: function (target) {\r\n\t\t\tvar $dataId = target.attr('data-id');\r\n\t\t\t\r\n\t\t\t//set the .active class only on the hovered element\r\n\t\t\tthis.$('.nav a').removeClass('active');\r\n\t\t\ttarget.addClass('active');\r\n\t\t\t\r\n\t\t\t//set the .visible class only on the image for the active element\r\n\t\t\tthis.$('.images img').removeClass('visible').addClass('hidden');\r\n\t\t\tthis.$('.images [data-id=' + $dataId + ']').addClass('visible').removeClass('hidden');\r\n\t\t},\r\n\t\t\r\n\t\tsetActiveByEvent: function (e) {\r\n\t\t\tvar $target = $(e.currentTarget);\r\n\t\t\t\r\n\t\t\tthis.timerCounter = 0;\r\n\t\t\tthis.hoverActive = true;\r\n\t\t\t\r\n\t\t\tthis.setActive($target);\r\n\t\t},\r\n\t\t\r\n\t\tsetActiveByTimer: function() {\r\n\t\t\tvar nav = this.$('.nav > a'),\r\n\t\t\t\tactiveNav = this.$('.nav .active'),\r\n\t\t\t\tnextNav;\r\n\t\t\t\r\n\t\t\tif (activeNav.next().length === 0) {\r\n\t\t\t\tnextNav = $(nav[0]);\r\n\t\t\t} else {\r\n\t\t\t\tnextNav = activeNav.next();\r\n\t\t\t}\r\n\t\t\t\r\n\t\t\tthis.setActive(nextNav);\r\n\t\t\t\r\n\t\t\tthis.timerCounter = 0;\r\n\t\t\t\r\n\t\t},\r\n\t\t\r\n\t\tstopTimer: function() {\r\n\t\t\tthis.hoverActive = true;\r\n\t\t},\r\n\t\t\r\n\t\tstartTimer: function() {\r\n\t\t\tthis.hoverActive = false;\r\n\t\t}\r\n });\r\n})(jQuery, njm);","(function ($, njm) {\r\n 'use strict';\r\n\r\n njm.views.articlesHeroMobile = Backbone.View.extend({\r\n\r\n events: {\r\n\t\t\t\r\n },\r\n\r\n // supported medias for this view\r\n medias: ['mobile'],\r\n\r\n /**\r\n * Initialize\r\n */\r\n initialize: function () {\r\n this.template = $('#comp-articles-hero-mobile').html();\r\n\r\n // Render\r\n this.render();\r\n\t\t\t\r\n },\r\n\r\n /**\r\n * Render\r\n */\r\n render: function () {\r\n this.$el.html(this.template);\r\n }\r\n\t\t\r\n });\r\n})(jQuery, njm);\n","(function ($, njm) {\r\n 'use strict';\r\n\r\n njm.views.headerDesktop = Backbone.View.extend({\r\n\r\n events: {\r\n 'click .expendable li label': 'selectMenuItem',\r\n //'click .search a': 'submitSearch',\r\n 'click .login': 'openLogin',\r\n\t\t\t'keydown .expendable li label': 'selectMenuItemKey',\r\n\t\t\t'keydown .overlay *': 'overlayKey',\r\n\t\t\t'keydown .login': 'loginKey',\r\n\t\t\t'keydown .login *': 'loginKey'\r\n\t\t\t\r\n },\r\n\r\n // supported medias for this view\r\n medias: ['desktop'],\r\n\r\n /**\r\n * Initialize\r\n */\r\n initialize: function () {\r\n this.template = $('#comp-header-desktop').html();\r\n\r\n $('body').click(this.clickToClose.bind(this));\r\n\r\n // Render\r\n this.render();\r\n },\r\n\r\n /**\r\n * Render\r\n */\r\n render: function () {\r\n this.$el.html(this.template);\r\n this.$header = this.$('.header');\r\n this.$items = this.$('.expendable li');\r\n this.$submenus = this.$('.submenu');\r\n this.$login = this.$('.login');\r\n },\r\n\r\n /**\r\n * Select Menu Item\r\n * @param {Object} e\r\n */\r\n selectMenuItem: function (e) {\r\n this.$thisItem = $(e.currentTarget).parent();\r\n\r\n this.$items.not(this.$thisItem).removeClass('selected')\r\n $(e.currentTarget).parent().toggleClass('selected');\r\n\r\n if (this.$thisItem.hasClass('selected')) {\r\n // open selected sub-menu\r\n\t\t\t\tthis.$thisItem.find('label').attr('aria-expanded','true');\r\n this.$header.addClass('active');\r\n this.$submenus.removeClass('show')\r\n .filter('[data-name=' + $(e.currentTarget).parent().data('name') + ']')\r\n .addClass('show');\r\n } else {\r\n // close selected sub-menu\r\n this.$header.removeClass('active');\r\n this.$submenus.removeClass('show');\r\n\t\t\t\tthis.$thisItem.find('label').attr('aria-expanded','false');\r\n\t\t\t\t\r\n }\r\n },\r\n\t\t\r\n\t\tselectMenuItemKey: function (e) {\r\n\t\t\tvar key = e.which, target = $(e.target);\r\n\t\t\t\r\n\t\t\tif (key === 13) { //enter key\r\n\t\t\t\ttarget.trigger('click');\r\n\t\t\t\tthis.$('.overlay .submenu.show a').eq(0).focus();\r\n\t\t\t}\r\n\t\t},\r\n\r\n /**\r\n * Open/Close Login box\r\n */\r\n openLogin: function (e) {\r\n this.$thisItem = $(e.currentTarget);\r\n if (this.$thisItem.hasClass('open')) {\r\n // close login menu\r\n this.$thisItem.removeClass('open').find('.login-box').slideUp();\r\n\t\t\t\tthis.$login.focus().attr('aria-expanded','false');\r\n } else {\r\n // close selected sub-menu\r\n this.$thisItem.addClass('open').find('.login-box').slideDown();\r\n\t\t\t\tthis.$login.focus().attr('aria-expanded','true');\r\n }\r\n },\r\n\t\t\r\n\t\toverlayKey: function (e) {\r\n\t\t\tvar key = e.which, openMenu = this.$('.expendable li.selected label');\r\n\t\t\t\r\n\t\t\tif (key === 27) { //escape key\r\n\t\t\t\t$('body').trigger('click');\r\n\t\t\t\topenMenu.focus().attr('aria-expanded','false');\r\n\t\t\t}\r\n\t\t},\r\n\t\t\r\n\t\tloginKey: function (e) {\r\n\t\t\tvar key = e.which, target = $(e.target);\r\n\t\t\t\r\n\t\t\tif (key === 13) { //enter key\r\n\t\t\t\ttarget.find('label').trigger('click');\r\n\t\t\t\tthis.$('.login-box a').eq(0).focus();\r\n\t\t\t}\r\n\t\t\t\r\n\t\t\tif (key === 27) { //escape key\r\n\t\t\t\t$('body').trigger('click');\r\n\t\t\t\tthis.$login.focus().attr('aria-expanded','false');\r\n\t\t\t}\r\n\t\t},\r\n\r\n /**\r\n * Click to close\r\n * @param {Object} e\r\n */\r\n clickToClose: function (e) {\r\n if (!$(e.target).closest('.expendable label').length) {\r\n this.closeMenu();\r\n }\r\n\r\n if (!$(e.target).closest('.login').length) {\r\n this.$login.removeClass('open').find('.login-box').slideUp();\r\n\t\t\t\tthis.$login.attr('aria-expanded','false');\r\n }\r\n },\r\n\r\n /**\r\n * Close Menu\r\n */\r\n closeMenu: function () {\r\n this.$items.removeClass('selected');\r\n this.$header.removeClass('active');\r\n\t\t\tthis.$submenus.removeClass('show');\r\n },\r\n\r\n /**\r\n * Submit search\r\n */\r\n submitSearch: function (e) {\r\n if (e.type === 'click') {\r\n e.preventDefault();\r\n var form = this.$('.search form')[0];\r\n form.submit();\r\n }\r\n }\r\n });\r\n})(jQuery, njm);\n","(function ($, njm) {\n 'use strict';\n njm.views.headerMobile = Backbone.View.extend({\n\n /**\n * Events\n */\n events: {\n 'click .toggle': 'toggleMenu',\n 'click .cover': 'toggleMenu',\n 'click .close': 'toggleMenu',\n 'click .expendable > label': 'toggleSubMenu',\n 'click .search a': 'submitSearch',\n 'keyup .search input': 'submitSearch'\n },\n\n // supported medias for this view\n medias: ['mobile', 'tablet'],\n\n /**\n * Initialize\n */\n initialize: function () {\n this.template = $('#comp-header-mobile').html();\n this.$body = $('body');\n\n // Render\n this.render();\n },\n\n /**\n * Render\n */\n render: function () {\n this.$el.html(this.template);\n this.$mobileMenu = this.$('.comp-header-mobile');\n },\n\n /**\n * Toggle Mobile Menu\n */\n toggleMenu: function () {\n this.$mobileMenu.toggleClass('expend');\n this.$body.toggleClass('lock', this.$mobileMenu.hasClass('expend'));\n },\n\n /**\n * Toggle Mobile Sub Menu\n * @param {Object} e\n */\n toggleSubMenu: function (e) {\n $(e.currentTarget).parent().toggleClass('open');\n },\n\n /**\n * Submit search\n */\n submitSearch: function (e) {\n if ((e.type === 'keyup' && e.keyCode === 13) || e.type === 'click') {\n e.preventDefault();\n var form = this.$('.search form')[0];\n form.submit();\n }\n }\n\n });\n})(jQuery, njm);\n","(function ($, njm) {\n 'use strict';\n\n njm.views.microBanner = Backbone.View.extend({\n\n /**\n * Initialize\n */\n initialize: function () {\n $('.scroll').click(function () {\n $('html,body').animate({\n scrollTop: this.offsetTop + 50\n }, 1000);\n });\n }\n });\n})(jQuery, njm);\n","(function ($, njm) {\n 'use strict';\n\n njm.views.microFindMyCompany = Backbone.View.extend({\n events: {\n 'keyup .filter_results': 'onInputKeyup'\n },\n\n /**\n * On input keyup\n * @param ev\n */\n onInputKeyup: function (ev) {\n var search = $(ev.currentTarget);\n var searchVal = search.val().toLowerCase();\n\n if (searchVal === '') {\n this.$('#sitemap_results > div').css({ display: 'inline-block' });\n } else {\n this.$('#sitemap_results > div > a').each(function () {\n if ($(this).text().toLowerCase().indexOf(searchVal) >= 0) {\n $(this).parent('div').css({ display: 'inline-block' });\n } else {\n $(this).parent('div').css({ display: 'none' });\n }\n });\n\n if (searchVal.length > 2) {\n this.$('.table_input').show();\n }\n }\n }\n });\n})(jQuery, njm);\n","(function ($, njm) {\n 'use strict';\n\n njm.views.microHeader = Backbone.View.extend({\n\n events: {\n 'click .nav_toggle': 'onNavToggleClick'\n },\n\n navOpen: false,\n\n /**\n * On nav toggle click\n * @param ev\n */\n onNavToggleClick: function (ev) {\n var $navToggle = $(ev.currentTarget);\n\n this.navOpen = !this.navOpen;\n $navToggle.toggleClass('active', this.navOpen);\n this.$('.navigation').toggleClass('active', this.navOpen);\n }\n });\n})(jQuery, njm);\n","(function ($, njm) {\n 'use strict';\n\n njm.views.microHeroSlider = Backbone.View.extend({\n\n events: {\n 'click .slider': 'onSliderClick'\n },\n\n /**\n * On slider click\n * @param ev\n */\n onSliderClick: function (ev) {\n ev.preventDefault();\n\n var $slider = $(ev.currentTarget);\n var $hero = this.$el;\n var direction = $slider.attr('data-direction');\n var target = $slider.attr('data-block');\n var current = $hero.attr('data-position');\n\n if (direction === 'left') {\n this.translateX($hero.find('.' + target), '-100%');\n } else {\n this.translateX($hero.find('.' + target), '100%');\n }\n\n setTimeout(function () {\n this.transition($hero.find('.' + target), '1000');\n this.transition($hero.find('.' + current), '1000');\n\n if (direction === 'left') {\n this.translateX($hero.find('.' + current), '100%');\n } else {\n this.translateX($hero.find('.' + current), '-100%');\n }\n\n $hero.attr('data-position', target);\n $('.comp-micro-about').attr('data-position', target);\n }.bind(this), 150);\n },\n\n /**\n * Transition\n * @param target\n * @param time\n */\n transition: function (target, time) {\n $(target).css({ transitionDuration: time + 'ms' });\n setTimeout(function () {\n $(target).css({ transitionDuration: '0ms' });\n }, time);\n },\n\n /**\n * TranslateX\n * @param target\n * @param value\n */\n translateX: function (target, value) {\n $(target).css({ transform: 'translateX(' + value + ')' });\n }\n });\n})(jQuery, njm);\n","(function ($, njm) {\n 'use strict';\n\n njm.views.microTestimonials = Backbone.View.extend({\n\n events: {\n 'click .start-button': 'onStartButtonClick',\n 'click .stop-button': 'onStopButtonClick',\n 'click .comp-micro-video': 'onVideoClick'\n },\n\n /**\n * Initialize\n */\n initialize: function () {\n var $videos = this.$el.find('.video-container');\n\n $(window).scroll(function () {\n $videos.each(function (index, elem) {\n if (!this.isScrolledIntoView(index, elem)) {\n var wistiaId = $(elem).find('.comp-micro-video').attr('wistia-id');\n window['wistia_' + wistiaId].pause();\n $(elem).find('.start-button').removeClass('hide');\n $(elem).find('.stop-button').addClass('hide');\n }\n }.bind(this));\n\n var visibleVideo = $videos.filter(this.isScrolledIntoView)[0];\n if (visibleVideo) {\n var wistiaId = $(visibleVideo).find('.comp-micro-video').attr('wistia-id');\n window['wistia_' + wistiaId].play();\n $(visibleVideo).find('.start-button').addClass('hide');\n $(visibleVideo).find('.stop-button').removeClass('hide');\n }\n }.bind(this));\n },\n\n /**\n * isScrolledIntoView\n * @param index\n * @param elem\n * @return {boolean}\n */\n isScrolledIntoView: function (index, elem) {\n var docViewTop = $(window).scrollTop();\n var docViewBottom = docViewTop + $(window).height();\n var elemTop = $(elem).offset().top;\n var elemBottom = elemTop + $(elem).height();\n\n return ((elemBottom <= docViewBottom) && (elemTop >= docViewTop));\n },\n\n /**\n * On start button click\n * @param ev\n */\n onStartButtonClick: function (ev) {\n var $this = $(ev.currentTarget);\n var $videoContainer = $this.closest('.video-container');\n var wistiaId = $videoContainer.find('.comp-micro-video').attr('wistia-id');\n window['wistia_' + wistiaId].play();\n $this.addClass('hide');\n $videoContainer.find('.stop-button').removeClass('hide');\n },\n\n /**\n * On stop button click\n * @param ev\n */\n onStopButtonClick: function (ev) {\n var $this = $(ev.currentTarget);\n var $videoContainer = $this.closest('.video-container');\n var wistiaId = $videoContainer.find('.comp-micro-video').attr('wistia-id');\n window['wistia_' + wistiaId].pause();\n $this.addClass('hide');\n $videoContainer.find('.start-button').removeClass('hide');\n },\n\n /**\n * On video click\n * @param ev\n */\n onVideoClick: function (ev) {\n var $this = $(ev.currentTarget);\n var $videoContainer = $this.closest('.video-container');\n var wistiaId = $videoContainer.find('.comp-micro-video').attr('wistia-id');\n if (window['wistia_' + wistiaId].state() === 'paused') {\n $videoContainer.find('.start-button').removeClass('hide');\n $videoContainer.find('.stop-button').addClass('hide');\n } else {\n $videoContainer.find('.start-button').addClass('hide');\n $videoContainer.find('.stop-button').removeClass('hide');\n }\n }\n });\n})(jQuery, njm);\n","(function ($, njm) {\r\n 'use strict';\r\n\r\n njm.views.disclaimer = Backbone.View.extend({\r\n\r\n events: {\r\n },\r\n\r\n /**\r\n * Initialize\r\n */\r\n initialize: function () {\r\n var pageDisclaimers = {};\r\n var me = this;\r\n\t\t\t\r\n\t\t\tthis.$('.container').text('').removeClass('placeholder');\r\n\t\t\t//console.log($(this).find('.container').text());\r\n\t\t\t\r\n (function populateDisclaimers() {\r\n var totalDisclaimerCount;\r\n var pageDisclaimersArray = [];\r\n //populate an object of the disclaimers on the page\r\n $('sup[data-disclaimer-name]').each(function () {\r\n var disclaimerName = $(this).attr('data-disclaimer-name').toLowerCase().replace(/\\s/g, \"\");\r\n var disclaimerContent = $(this).attr('data-disclaimer-value');\r\n if (!pageDisclaimers[disclaimerName]) {\r\n pageDisclaimers[disclaimerName] = {};\r\n pageDisclaimers[disclaimerName].disclaimer = disclaimerContent;\r\n }\r\n });\r\n\r\n //count the number of disclaimers on the page and set the type of symbol to be used\r\n pageDisclaimersArray = Object.keys(pageDisclaimers);\r\n totalDisclaimerCount = pageDisclaimersArray.length;\r\n //disclaimerType = totalDisclaimerCount < 0 ? \"asterisks\" : \"\";\r\n\r\n //set the symbols for the disclaimers on the page\r\n for (var i = 0; i < totalDisclaimerCount; i++) {\r\n var item = pageDisclaimers[pageDisclaimersArray[i]];\r\n item.symbol = i + 1;\r\n var disclaimerHtml = '
    ' + item.symbol + ''+item.disclaimer +'
    ';\r\n $('.comp-disclaimer.component .container').append(disclaimerHtml);\r\n }\r\n //populate the appropriate disclaimer symbol into the superscript tags\r\n $('sup[data-disclaimer-name]').each(function () {\r\n var disclaimerName = $(this).attr('data-disclaimer-name').toLowerCase().replace(/\\s/g, \"\");\r\n $(this).html(pageDisclaimers[disclaimerName].symbol);\r\n });\n if (totalDisclaimerCount < 1) {\n $('.comp-disclaimer.component').hide();\r\n }\r\n })()\n \r\n }\r\n });\r\n})(jQuery, njm);\n","(function($, njm) {\r\n \"use strict\";\r\n\r\n njm.views.partnerSearch = Backbone.View.extend({\r\n events: {\r\n 'keyup .filter-results': 'filter'\r\n },\r\n\r\n /**\r\n * Filter\r\n * @param {Object} e\r\n */\r\n filter: function(e) {\r\n var self = e.currentTarget;\r\n var search = $(self).val().toLowerCase();\r\n\r\n if (search == \"\") {\r\n $(\".comp-partners-search .results-container .result\").css({\r\n display: \"inline-block\"\r\n });\r\n } else {\r\n $(\".comp-partners-search .results-container .result a\").each(\r\n function() {\r\n if ($(this).text().toLowerCase().indexOf(search) >= 0) {\r\n $(this).parent(\".result\").css({ display: \"inline-block\" });\r\n } else {\r\n $(this).parent(\"div\").css({ display: \"none\" });\r\n }\r\n }\r\n );\r\n\r\n var resultCount = $(\".comp-partners-search div.result\").length;\r\n var resultsHidden = $(\r\n '.comp-partners-search div.result[style*=\"display: none\"]'\r\n ).length;\r\n\r\n if (resultCount === resultsHidden) {\r\n $(\".comp-partners-search .no-result\").css({\r\n display: \"block\"\r\n });\r\n $(\".comp-partners-search .results-container\").css({\r\n display: \"none\"\r\n });\r\n } else {\r\n $(\".comp-partners-search .no-result\").css({\r\n display: \"none\"\r\n });\r\n $(\".comp-partners-search .results-container\").css({\r\n display: \"block\"\r\n });\r\n }\r\n\r\n console.log(search.length);\r\n }\r\n }\r\n });\r\n})(jQuery, njm);\r\n","(function ($, njm) {\r\n 'use strict';\r\n\r\n njm.views.verticalTabsDesktop = Backbone.View.extend({\r\n\r\n events: {\r\n \"click .tablist .tab\": \"tabClick\",\r\n\t\t\t\"keydown .tablist .tab\": \"tabKey\"\r\n },\r\n\r\n // supported medias for this view\r\n medias: ['desktop', 'tablet'],\r\n\t\t\r\n\t\ttabFocus: 0,\r\n\r\n /**\r\n * Initialize\r\n */\r\n initialize: function () {\r\n\t\t\tthis.template = this.$el.parents('.comp-vertical-tabs').find('[data-template=\"comp-vertical-tabs-desktop\"]').html();\r\n\r\n // Render\r\n this.render();\r\n },\r\n\r\n /**\r\n * Render\r\n */\r\n render: function () {\r\n this.$el.html(this.template);\r\n },\r\n\t\t\r\n\t\ttabClick: function(event) {\r\n\t\t\tvar $target = $(event.target).closest('.tab'),\r\n\t\t\t\tcontentID = $target.attr('data-content');\r\n\t\t\t\r\n\t\t\tthis.$('.tablist button').removeClass('active').attr('aria-selected',false).attr('tabindex','-1');\r\n\t\t\t\r\n\t\t\t$target.addClass('active').attr('aria-selected',true).attr('tabindex','0');\r\n\t\t\t\r\n\t\t\tthis.$('.content .content-item').hide().attr('hidden',true);\r\n\t\t\t\r\n\t\t\t$target.parents('.box').find('.content .content-item[data-content=' + contentID + ']').show().removeAttr('hidden');\r\n\t\t\t\r\n\t\t\tthis.tabFocus = parseInt($target.data('content')) - 1;\r\n\t\t},\r\n\t\t\r\n\t\ttabKey: function(event) {\r\n\t\t\tvar $target = $(event.target).closest('.tab'),\r\n\t\t\t\tkey = event.which,\r\n\t\t\t\ttabs = this.$('.tab');\r\n\t\t\t\r\n\t\t\tif (key === 13) { //enter key\r\n\t\t\t\t$target.trigger('click');\r\n\t\t\t} \r\n\t\t\t\r\n\t\t\tif (key === 38 || key === 40) { //up or down key\r\n\t\t\t\tevent.preventDefault();\r\n\t\t\t\ttabs.attr('tabindex','-1');\r\n\t\t\t\t\r\n\t\t\t\tif (key === 38) { //up key\r\n\t\t\t\t\t//focus on the previous tab element\r\n\t\t\t\t\tthis.tabFocus--;\r\n\t\t\t\t\tif (this.tabFocus < 0) {\r\n\t\t\t\t\t\tthis.tabFocus = tabs.length - 1;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t\t\r\n\t\t\t\tif (key === 40) { //down key\r\n\t\t\t\t\t//focus on the next tab element\r\n\t\t\t\t\tthis.tabFocus++;\r\n\t\t\t\t\tif (this.tabFocus >= tabs.length) {\r\n\t\t\t\t\t\tthis.tabFocus = 0;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t\t\r\n\t\t\t\t$(tabs[this.tabFocus]).attr('tabindex','0').focus();\r\n\t\t\t} \r\n\t\t}\r\n });\r\n})(jQuery, njm);\n","(function ($, njm) {\r\n 'use strict';\r\n\r\n njm.views.verticalTabsMobile = Backbone.View.extend({\r\n\r\n events: {\r\n\t\t\t\r\n },\r\n\r\n // supported medias for this view\r\n medias: ['mobile'],\r\n\r\n /**\r\n * Initialize\r\n */\r\n initialize: function () {\r\n\t\t\tthis.template = this.$el.parents('.comp-vertical-tabs').find('[data-template=comp-vertical-tabs-mobile]').html();\r\n\r\n // Render\r\n this.render();\r\n\t\t\t\r\n },\r\n\r\n /**\r\n * Render\r\n */\r\n render: function () {\r\n this.$el.html(this.template);\r\n\t\t\tnew njm.views['accordion']({\r\n\t\t\t\tel: this.$('.comp-accordion')\r\n\t\t\t});\r\n }\r\n\t\t\r\n });\r\n})(jQuery, njm);","(function ($, njm) {\n 'use strict';\n\n njm.views.njmsharesHero = Backbone.View.extend({\n\n events: {\n 'click #scroll_button': 'onScrollButtonClick'\n },\n\n onScrollButtonClick: function () {\n $('html, body').animate({\n scrollTop: $('.comp-njmshares-videos').offset().top - 140\n }, 500);\n }\n });\n})(jQuery, njm);\n","// jscs:disable\n// jshint ignore: start\n\n(function ($, njm) {\n 'use strict';\n\n njm.views.njmsharesSlider = Backbone.View.extend({\n\n /**\n * Initialize\n */\n initialize: function () {\n $('#autoPager').SalpySlider({\n name: '#autoPager', //Name of the div, div must include SalpySlider class\n type: 'panel', //panel or straight\n align: 'left', //left, center - starting position/active slide position for straight panel\n repeat: false, //true, false - when using straight, makes clones of divs to make endless scroll\n shown: 1, //How many shown at a time for the straight slider\n minwidth: 700, //min screen width for straight slider\n original_slide: 1, //starting slide\n pager: true, //true, false\n arrows: false, //true, false\n speed: 1000, //ms\n touch: true, //true, false\n auto: true, //true, false\n timer: 10000, //ms\n arrowLeft: '../assets/images/microsites/42.png', //url of left arrow\n arrowRight: '../assets/images/microsites/43.png' //url of right arrow\n });\n }\n });\n})(jQuery, njm);\n","(function ($, njm) {\n 'use strict';\n\n njm.views.njmsharesVideos = Backbone.View.extend({\n\n /**\n * Initialize\n */\n initialize: function () {\n $('.videos_modal').hide();\n $('.comp-njmshares-videos #video1').click(function () {\n $('.videos_modal').fadeIn();\n\n $('.videos_modal iframe').attr('src', 'https://www.youtube.com/embed/IjUoIaOBhAY');\n });\n\n $('.comp-njmshares-videos #video2').click(function () {\n $('.videos_modal').fadeIn();\n\n $('.videos_modal iframe').attr('src', 'https://www.youtube.com/embed/RicJxEVlEmg');\n });\n\n $('.comp-njmshares-videos #video3').click(function () {\n $('.videos_modal').fadeIn();\n\n $('.videos_modal iframe').attr('src', 'https://www.youtube.com/embed/p1CXXDBg8S0');\n });\n\n $('#modal_close').click(function () {\n $('.videos_modal').fadeOut();\n\n $('.videos_modal iframe').attr('src', '');\n });\n\n $('.videos_modal').click(function () {\n $('.videos_modal').fadeOut();\n\n $('.videos_modal iframe').attr('src', '');\n });\n }\n });\n})(jQuery, njm);\n"]}