{"version":3,"sources":["../../../ScriptsSource/Scripts/_partials/Common/v1.0/CookieManager.js","../../../ScriptsSource/Scripts/_partials/Common/v1.0/DomainProvider.js","../../../ScriptsSource/Scripts/_partials/Common/v1.0/LabelProvider.js","../../../ScriptsSource/Scripts/_partials/Common/v1.0/LookupServiceProxy.js","../../../ScriptsSource/Scripts/_partials/Common/v1.0/ServiceProxy.js","../../../ScriptsSource/Scripts/_partials/Common/v1.0/StaticLabelProvider.js","../../../ScriptsSource/Scripts/cmsv2/v12.0/eventdecorator/eventdecorator.events.js","../../../ScriptsSource/Scripts/cmsv2/v12.0/eventdecorator/eventdecorator.extensions.js","../../../ScriptsSource/Scripts/cmsv2/v12.0/eventdecorator/eventdecorator.js","../../../ScriptsSource/Scripts/cmsv2/v12.0/services/services.js","../../libs/jquery.validate-1.11.1.js","../../../ScriptsSource/Scripts/_common/cssConstants/v1.0/cssConstants.js","../../../ScriptsSource/Scripts/_core/ajax/v2.0/ajaxFacade.js","../../../ScriptsSource/Scripts/_core/redirectHelper/v1.0/redirectHelper.js","../../../ScriptsSource/Scripts/_core/mi/v1.5/miListener.js","../../../ScriptsSource/Scripts/_partials/Forms/v1.0/errorIndication.js","../../../ScriptsSource/Scripts/_partials/CustomSearch/v1.1/SetupCustomSearch.js","../../../ScriptsSource/Scripts/_partials/QuickQuote/v1.0/quickquote.js","../../../ScriptsSource/Scripts/_partials/CookiePolicy/v6.1/CookiePolicyWidget.js","../../../ScriptsSource/Scripts/_website/_header/cssConstants/v1.0/cssConstants.js","../../../ScriptsSource/Scripts/_website/_header/globalHeaderActions/v5.0/globalHeaderActions.js","../../../ScriptsSource/Scripts/_website/_header/globalNav/v5.0/globalNav.js","../../../ScriptsSource/Scripts/_website/_header/mobileNav/v6.0/mobileNav.js","../../../ScriptsSource/Scripts/_website/_shared/cssConstants/v1.0/cssConstants.js","../../../ScriptsSource/Scripts/_website/_shared/equalizeHeights/v1.0/equalizeHeights.js","../../../ScriptsSource/Scripts/_website/_shared/expandingPanel/v2.0/expandingPanel.js","../../../ScriptsSource/Scripts/_website/_shared/responsiveTables/v4.0/responsiveTables.js","../../../ScriptsSource/Scripts/_website/_shared/overlaps/v2.0/overlaps.js","../../../ScriptsSource/Scripts/_website/_shared/backToTopLink/v4.0/backToTopLink.js","../../../ScriptsSource/Scripts/cmsv2/v12.0/cssConstants/cssConstants.js","../../../ScriptsSource/Scripts/cmsv2/v12.0/contactUsForm/contactUsCustomValidation.js","../../../ScriptsSource/Scripts/cmsv2/v12.0/productDrivers/productDrivers.js","../../../ScriptsSource/Scripts/cmsv2/v12.0/breakdown/breakdown.js","../../../ScriptsSource/Scripts/cmsv2/v12.0/breakdown/breakdownConstants.js","../../../ScriptsSource/Scripts/cmsv2/v12.0/breakdown/viewModel.js","../../../ScriptsSource/Scripts/cmsv2/v12.0/productTestimonials/productTestimonials.js","../../../ScriptsSource/Scripts/cmsv2/v12.0/providerList/providerList.js","../../../ScriptsSource/Scripts/cmsv2/v12.0/responsiveTabs/responsiveTabs.js","../../../ScriptsSource/Scripts/cmsv2/v12.0/priceIndex/priceIndex.js","../../../ScriptsSource/Scripts/_website/_header/v7.0/websiteHeader.js","../../../ScriptsSource/Scripts/cmsv2/v12.0/vehicleDetailChecker/vehicleDetails.js","../../../ScriptsSource/Scripts/cmsv2/v12.0/vehicleDetailChecker/vehicleDetailsValidation.js","../../../ScriptsSource/Scripts/cmsv2/v12.0/petrolPrices/petrolPrices.js","../../../ScriptsSource/Scripts/cmsv2/v12.0/petrolPrices/petrolPricesMaps.js","../../../ScriptsSource/Scripts/cmsv2/v12.0/petrolPrices/petrolPricesMiEvents.js","../../../ScriptsSource/Scripts/cmsv2/v12.0/petrolPrices/petrolPricesUiElements.js","../../../ScriptsSource/Scripts/cmsv2/v12.0/petrolPrices/petrolPricesValidation.js","../../../ScriptsSource/Scripts/cmsv2/v12.0/productHeroCTA/productHeroCTA.js","../../../ScriptsSource/Scripts/cmsv2/v12.0/carFinanceCalculator/carFinanceCalculator.js","../../../ScriptsSource/Scripts/cmsv2/v12.0/carFinanceCalculator/carFinanceCalculatorHelper.js","../../../ScriptsSource/Scripts/cmsv2/v12.0/carFinanceCalculator/carFinanceCalculatorMiEvents.js","../../../ScriptsSource/Scripts/cmsv2/v12.0/expandingBand/expandingBand.js","../../../ScriptsSource/Scripts/cmsv2/v12.0/cms.js","../../../ScriptsSource/Scripts/contact-us/v1.0/contactus.js","../../../ScriptsSource/Scripts/cmsv2/v12.0/carousel/carousel.js","../../../ScriptsSource/Scripts/cmsv2/v12.0/cms-tabs/cms-tabs.js","../../../ScriptsSource/Scripts/cmsv2/v12.0/fuelCostCalculator/fuelcost.js","../../../ScriptsSource/Scripts/cmsv2/v12.0/postCodeFromURL/postCodeFromURL.js"],"names":["$","w","d","Confused","CookieManager","prototype","getItem","sKey","decodeURIComponent","cookie","replace","RegExp","encodeURIComponent","setItem","sValue","vEnd","sPath","sDomain","bSecure","test","sExpires","constructor","Number","Infinity","String","Date","toUTCString","removeItem","this","hasItem","keys","aKeys","split","nIdx","length","window","jQuery","document","DomainProvider","domainRegex","getDomain","location","hostname","getParentDomain","parent","parts","shift","join","LabelProvider","lookupService","getLabels","paths","prop","i","values","promises","labels","hasOwnProperty","push","getLabel","def","Deferred","when","apply","then","arguments","result","JSON","parse","resolve","LookupServiceProxy","options","defaults","endpoint","timeout","settings","extend","serviceProxy","ServiceProxy","path","method","data","invoke","url","Error","stringify","ajax","type","contentType","dataType","converters","text json","msg","parseJSON","StaticLabelProvider","domain","policyText","policyLinkText","policyLinkUrl","CONFUSEDCMS","CSSCONSTANTS","eventDecorator","events","functions","ready","ns","LogToConsole","message","console","log","miListener","getStaticMiInfo","label","trimmedLabel","eventInfo","match","miClickEvent","attributeData","category","miClickCategory","miClickLabel","miEvent","postEvent","ga","gaClickCategory","gaClickLabel","e","CONFUSEDCORE","MI","MiListener","hasClass","EventDefinitionList","Add","EventDefinition","ProcessAll","extensions","oldShow","fn","show","ret","trigger","oldHide","hide","selector","eventName","functionName","params","eventDefinition","pop","ProcessFunction","ProcessEvent","getFunctionByName","context","namespaces","func","body","on","services","me","success","xhr","error","jqXhr","textStatus","errorThrown","MiService","proxy","pageEvent","event","noop","validate","debug","warn","validator","attr","onsubmit","validateDelegate","submitHandler","submitButton","target","cancelSubmit","undefined","submit","handle","hidden","name","val","appendTo","currentForm","call","remove","preventDefault","form","pendingRequest","formSubmitted","focusInvalid","valid","is","each","element","removeAttrs","attributes","$element","index","value","removeAttr","rules","command","argument","staticRules","existingRules","normalizeRule","messages","filtered","normalizeRules","classRules","attributeRules","dataRules","required","param","expr","blank","a","trim","filled","unchecked","init","format","source","args","makeArray","unshift","Array","slice","n","groups","errorClass","validClass","errorElement","errorContainer","errorLabelContainer","ignore","ignoreTitle","onfocusin","lastActive","focusCleanup","blockFocusCleanup","unhighlight","addWrapper","errorsFor","onfocusout","checkable","submitted","optional","onkeyup","which","elementValue","lastElement","onclick","parentNode","highlight","findByName","addClass","removeClass","setDefaults","remote","email","date","dateISO","number","digits","creditcard","equalTo","maxlength","minlength","rangelength","range","max","min","autoCreateRanges","delegate","eventType","labelContainer","errorContext","containers","add","valueCache","pending","invalid","reset","key","invalidHandler","bind","checkForm","errorMap","triggerHandler","showErrors","prepareForm","elements","currentElements","check","validationTargetFor","clean","prepareElement","numberOfInvalids","toHide","errors","errorList","successList","grep","defaultShowErrors","resetForm","hideErrors","removeData","objectLength","obj","count","size","findLastActive","filter","focus","rulesCache","find","not","toShow","dependencyMismatch","rule","parameters","methods","formatAndAdd","id","customDataMessage","toLowerCase","customMessage","m","findDefined","defaultMessage","title","theregex","toToggle","wrapper","showLabel","validElements","invalidElements","map","html","idOrName","wrap","append","errorPlacement","insertAfter","text","getLength","nodeName","depend","dependTypes","boolean","string","function","startRequest","stopRequest","previousValue","old","classRuleSettings","addClassRules","className","classes","getAttribute","get","depends","keepRule","parameter","isFunction","isArray","transformed","addMethod","toString","nCheck","nDigit","bEven","cDigit","charAt","parseInt","unbind","previous","originalMessage","mode","port","response","pendingRequests","ajaxPrefilter","_","abort","ajaxSettings","handler","mobileMaxWidth","mobileMaxWidthMQ","nonMobileMinWidth","nonMobileMinWidthMQ","mobileHeaderMaxWidth","mobileHeaderMaxWidthMQ","nonMobileHeaderMinWidth","nonMobileHeaderMinWidthMQ","nonDesktopMaxWidth","nonDesktopMaxWidthMQ","desktopMinWidth","desktopMinWidthMQ","hiddenClass","hiddenMobileOnlyClass","hiddenTabletAndMobileClass","backgroundBlueClass","backgroundPastel2Class","bandClass","noBottomPaddingClass","rowClass","columnClass","scaffoldClass","gridUnit","buttonClass","boxClass","reverseClass","btnClass","btnBlueClass","btnGreenClass","formRowClass","errorMessageClass","labelErrorClass","fieldErrorClass","replacedInputClass","replacedInputLabelClass","replacedInputLabelFocussedClass","replacedInputLabelSelectedClass","AJAX","Ajaxfacade","userIsLoggedIn","Authenticated","reload","post","timeoutInterval","async","wrappedResponse","redirect","indexOf","Status","requiresAuthentication","Data","complete","postAuthenticated","HELPERS","RedirectHelper","href","ajaxFacade","doPost","miUrl","miObject","callback","errorCallback","protocol","host","MI_EVENT_URL","EventType","EventInfo","postPageView","MI_PAGEVIEW_URL","pageView","pageName","page","postLogSession","MI_NEWSESSION_URL","setMI_URL","MI_URL","addErrorIndication","fieldIds","fieldId","$fieldWithError","$labelWithError","errorMessageId","$errorMessage","removeErrorIndication","CONFUSEDWEBSITE","ctx","google","setupSearch","searchDetails","redirectToResultsPage","action","$search","invalidInputSelector","setupSearchAutocomplete","search","CustomSearchControl","attachAutoCompletionWithOptions","customSearchKeyId","searchTextId","autoCompletionOptions","searchFormId","$button","$searchTextBox","maxCompletions","styleOptions","xOffset","setOnLoadCallback","setupSearchResult","searchResultConfiguration","searchCompleteCallback","control","searcher","results","noResultsH2Selector","css","resultsH2Selector","setupSearchResultsCallback","customSearchOptions","query","customSearchControl","customSearchKey","resultsSetSize","setResultSetSize","Search","FILTERED_CSE_RESULTSET","setLinkTarget","LINK_TARGET_SELF","setSearchCompleteCallback","DrawOptions","setAutoComplete","enableSearchResultsOnly","draw","resultsSelector","getUrlVars","queryValue","queryParameter","execute","hash","vars","hashes","setupSearchResults","dataset","setupSearchForms","confused","quickquote","createQuickQuoteConnection","connected","activity","start","jsonData","self","_connection","connection","received","HasError","Activity","Prices","StillWaiting","stop","done","send","CookiePolicyWidget","cookieManager","showPopup","querySelector","classList","cookiePopupShown","validateCookieSelection","btn","parents","questionBlock","selectedRadio","hidePopup","updateCookieValue","insertGTMScript","setTimeout","removeErrorClass","closeCookieModal","cookieValue","cookieName","updateCookieChoiceRadios","checked","s","createElement","src","gtmContainerID","x","getElementsByTagName","insertBefore","run","dataLayer","gtm.start","getTime","buttons","querySelectorAll","inputs","forEach","button","addEventListener","input","radio","toggleClass","wasCookiePopupShown","GTMContainer","ConsentCookieName","factory","define","amd","require","globalHeaderSecondaryClass","globalHeaderActionsClass","globalHeaderActionsActionClass","globalHeaderActionsActionTwoClass","globalHeaderActionsLoginClass","globalHeaderActionsRetrieveClass","globalHeaderActionsWelcomeClass","globalHeaderActionsWelcomeSalutationClass","globalNavCategoriesClass","globalNavCategoryOpenClass","globalNavSubCategoriesClass","globalNavSubCategoriesCloseClass","globalNavPromoClass","skipNavLinkClass","mainId","globalNavCategoryLinkWithSubCategoriesClass","globalNavCategoryClass","globalHeaderMastheadClass","globalNavCategoryLinkClass","globalNavSubCategoryClass","pageClass","globalSearchClass","globalHeaderSearchFormClass","mobileNavClass","mobileNavOpenClass","mobileNavCategoriesClass","mobileNavCategoryClass","mobileNavCategoryHelpClass","mobileNavCategoryLinkClass","mobileNavCategoryLinkHelpClass","mobileNavSubCategoriesClass","mobileNavSubCategoriesOpenClass","mobileNavSubCategoriesContainerClass","mobileNavSubCategoriesHeadingClass","mobileNavSearchFormClass","globalNavHelpClass","mobileNavToggleClass","globalNavSubcategoryHeaderClass","mobileNavSubcategoryHeadingClass","mobileNavSubcategoryContentsClass","globalNavSubcategoryContentsClass","globalNavSubcategoryContentsProminentClass","globalNavSubcategoryContentsItemClass","mobileNavSubcategoryContentsItemClass","mobileNavCloseClass","globalHeaderSearchClass","globalNavSearchClass","globalNavSearchOpenClass","globalSearchButtonClass","globalHeaderMessagesToggleClass","globalHeaderMessagesPanelClass","globalHeaderClass","globalHeaderLogoClass","globalNavToolsClass","globalHeaderMessagesPanelCloseClass","globalHeaderMessagesToggleClosedClass","globalHeaderMessagesToggleOpenedClass","globalHeaderMessagesToggleViewedClass","setupHeaderActions","$this","windowWidth","width","nextAll","slideToggle","enquire","register","moveHeaderActions","unmatch","screenSize","$headerActions","$globalHeaderMasthead","$globalHeaderSecondary","setupGlobalNav","$categoryLink","$subCategories","$promo","$lastCol","prependTo","Modernizr","touch","thisCategoryLinkHref","thisCategoryLinkText","$thisCategoryAdditionalLinkContainer","class","$thisCategoryAdditionalLink","$theseSubcategories","prev","$thisCategory","$closeSubcategoryLink","toggleSubNav","$thisSubcategory","next","showSubNav","hideSubNav","keyCode","last","objEvent","globalNavTimer","toggle","clearTimeout","skipNav","setupMobileNav","createMobileNav","$page","$globalNavCategories","$mobileNav","$mobileNavCategories","$mobileNavQuickLinks","$helpLink","helpLinkHref","helpLinkText","$mobileNavHelpCategory","$mobileNavHelpLink","$mobileNavToggle","$mobileNavToggleLink","$thisCategoryLink","thisCategoryText","thisCategoryHref","thisCategoryGACategory","thisCategoryGA","$thisCategorySubcategories","$mobileNavCategory","$mobileNavCategoryLink","data-ga-click-category","data-ga-click-label","$mobileNavCategorySubcategories","$mobileNavCategorySubcategoriesContainer","$mobileNavCloseCategory","$mobileSubcategoriesHeading","$mobileSubcategoriesHeadingLink","thisHeading","$thisSubCategoryList","$thisItems","$mobileSubcategoryHeading","$mobileSubcategoryContents","thisHref","thisGA","thistext","$mobileSubcategoryContentsItem","activateMobileNav","$mobileCategorySubcategories","closest","backToTopLinkClass","globalFooterClass","brianModuleClass","withBrianModuleClass","equalizeHeightDesktopClass","equalizeHeightSetDesktopClass","equalizeHeightNonMobileClass","equalizeHeightSetNonMobileClass","expandingPanelClass","expandingPanelHeadingClass","expandingPanelHeadingLinkClass","expandingPanelHeadingOpenClass","expandingPanelHeadingClosedClass","expandingPanelContentClass","videoClass","videoBasicClass","videoControlsClass","videoPlaceholderClass","flexiMediaWrapperClass","socialShareTriggerOpenClass","optionsDropdownTriggerClass","socialLinkEmailClass","socialLinkPrintClass","socialShareOptionDropdownClass","socialShareOptionDropdownCloseClass","hideColumnOnMobileClass","hideColumnOnTabletAndMobileClass","fauxTableHeaderClass","responsiveTableVerticalClass","cmsContentClass","overlapBandAboveClass","overlapBandAboveNonMobileClass","setupEqualizeHeights","$groupsToEqualize","addEqualizeHeightsClasses","equalizeHeights","removeHeights","$elementsToAdjustDesktop","$elementsToAdjustNonMobile","elementsToAdjustSelector","$items","highest","thisHeight","outerHeight","expandingPanel","$expandingPanels","$panelHeading","$panelHeadingLink","$panelContent","click","responsiveTables","$thisTable","$thisTableHeadings","hideTableColumnsOnMobile","hideTableColumnsOnTabletAndMobile","stackTableRows","$table","$hiddenColumns","columnIndex","breakpoint","headings","$tableHeadings","$tableRows","$thisHeading","$thisRow","$tableCells","$thisCell","setupOverlaps","$overlaps","$overlapsNonMobile","createOverlap","removeOverlap","$itemToOverlap","previousBandPaddingBottom","$elementToAddBottomPaddingTo","$parentBand","parentBandPaddingTop","$previousBand","parseFloat","$itemToRemoveOverlapFrom","$elementToRemoveBottomPaddingFrom","animate","scrollTop","providerListClass","providerListMoreLinkClass","providersClass","hiddenProvidersClass","visibleProvidersClass","providerFilterClass","providerFilterShowAllClass","transactionalLandingPageHeroClass","transactionalLandingPageHeroHeadingClass","transactionalLandingPageHeroImageClass","transactionalLandingPageHeroActionClass","transactionalLandingPageHeroSpeechClass","reminderBoxClass","heroHelpContactClass","helpContactClass","productDriverClass","productDriverImageClass","productDriverNotesClass","productDriverLinkClass","responsiveTabsWrapperClass","responsiveTabsClass","responsiveTabsEnabledClass","responsiveTabsHeadingClass","responsiveTabsHeadingActiveClass","responsiveTabsPanelClass","responsiveTabsPanelActiveClass","responsiveTabsPanelClosedAccordionOnlyClass","responsiveTabsListClass","responsiveTabsListItemClass","responsiveTabsListItemActiveClass","responsiveTabsStepsClass","jQueryValidateExtensions","regexp","re","checkBoxName","contactUsFormRules","addRule","$form","validationRule","$elem","hookupForm","validators","phoneRequired","ValidationDefinition","hookup","validationRules","firstName","notdefault","regex","surname","product","selectNone","hasPurchased","moreinformation","postcode","contactByPhone","phone","regextrimmed","dateOfBirthDay","dateOfBirthMonth","dateOfBirthYear","contactUsFormSetup","first","hasNotDefualtClass","elementIsNotCheckable","elementIsInSubmitted","elementIsNotOptional","slideDown","slideUp","setupProductDrivers","$productDrivers","createProductDriver","$notesTarget","backgroundImage","$productImage","$productNotes","Breakdown","extractOtherDate","noOther","inst","datepicker","_getInst","thatDate","parseDate","_get","_getFormatConfig","setHours","toInputFormat","yyyy","getFullYear","mm","getMonth","dd","getDate","day","month","year","getYear","thisDate","setFullYear","dateParts","aDate","today","isoDate","matches","ukDate","breakdownModuleRules","VehicleReg","CoverStartDate","notInPast","CoverEndDate","afterDate","withinAYearOf","NativeCoverEndDate","NativeCoverStartDate","setUpValidation","onblur","breakdownModule","$coverStartDate","$coverEndDate","inputtypes","keydown","change","startDate","endDate","setDate","numberOfMonths","hideIfNoPrevNext","duration","minDate","maxDate","dateFormat","onClose","CONSTANTS","breakdownConstants","containerClass","stepNames","InitialisingSpinner","CoverSavedVehicles","CoverNewReg","CoverDuration","CoverTripType","Spinner","ErrorPage","NoPrices","resultsPagePanelSelector","resultsPageLocalProductImageSelector","resultsPageNationalProductImageSelector","resultsPageEuropeanProductImageSelector","resultsProductTypeLocalClass","resultsProductTypeNationalClass","resultsProductTypeEuropeanClass","resultsPageHeadingSelector","resultsPageSelector","resultsPageHeadingLocalWordingDataAttr","resultsPageHeadingNationalWordingDataAttr","resultsPageHeadingEuroAnnualWordingDataAttr","resultsPageHeadingEuroSingleWordingDataAttr","resultsPageSelectedProductClass","VIEWMODELS","breakdown","constants","breakdownViewModel","riskObject","currentPage","ko","observable","ShowRegistrationNumberMissingValidation","ShowRegistrationNumberNotFoundValidation","coverTypeHelpTextVisible","Vehicles","observableArray","regLookup","selectedVehicle","Deeplink","TopPrice","Price","LogBreakdownMi","eventSource","miPageEvent","click-source","PartnerId","DeeplinkClick","origin","initFailed","coverType","applyBindings","riskVehicle","vehicle","Vehicle","RegistrationNumber","VehicleAge","Selected","NewRegClicked","SavedVehiclesClicked","$regLookup","CoverLevelSelected","setResultsPageProductType","ContinueCoverLevelSelected","reg","toUpperCase","regAlreadyInListAtIndex","r","toJSON","err","breakdownRisk","CoverLevel","submitRiskViewModel","TripTypeClicked","setupResultPageWording","TripDetails","TripType","TripStartDate","TripEndDate","ToggleCoverTypeHelpText","CoverDurationNextClick","startValid","endValid","ResetToFirstPage","computed","getSerializedRiskObject","$buttons","buttonStyles","borderWidth","delay","removeAll","$startDate","$endDate","getHours","exception","serializedRisk","QuoteId","ResultObjectCollection","InsurerImageLocation","InsurerName","toFixed","subscribe","newValue","age","insurerImageLocation","insurerName","price","setupResultsPanel","productType","$panelElement","$localProductImage","$nationalProductImage","$europeanProductImage","tripType","$resultsPageHeading","$resultsPage","$localWording","$nationalWording","$euroAnnualWording","$euroSingleWording","create","ex","renderList","testimonials","list","testimonial","itemprop","itemscope","itemtype","Description","Image","Src","alt","Alt","Author","content","QuoteDate","QuoteDateSummary","RatingClass","ratingTitle","RatingTitle","RatingValue","setupProductTestimonials","getProductTestimonials","item","skip","take","service","toTake","toSkip","setupProviderList","$providersVisible","createImages","removeImages","createMoreProvidersButton","setupProviderFilters","$providers","$providerFilters","$providerFilterShowAll","providerFilterActiveClass","providerFilterInactiveClass","lettersToFilter","filterProviders","removeMoreProvidersButton","showAllProviders","thisProviderFirstLetter","thisProviderHref","$thisProviderImage","thisProviderHrefSegment","lastIndexOf","matchMedia","$providersToShowImages","$providerImage","$provider","thisImageSrc","$providersToRemoveImages","$providerLink","$providerImg","providerName","$moreLink","$providerList","$hiddenProviders","showMoreProviders","responsiveTabs","$tabSets","tablistcount","$tabs","children","$activePanel","$tabsWrapper","highestHeight","tabHeight","height","$tabList","role","tabcount","$tabHeading","$tabPanel","$tabListItem","aria-controls","tabindex","$tabListItemLi","aria-labelledby","oldActivePos","$activeHeading","offset","top","panelId","tabId","tabsPos","newActivePos","prepend","priceIndex","innerWidth","scroll","image","imageSrc","imageOffset","imageHeight","windowHeight","windowScroll","fadeIn","fadeOut","VehicleDetails","Constants","MinDate","ValidText","InvalidText","ValidClass","InvalidClass","Utils","FormatDate","now","ValidateForm","RegNumber","MotExpiry","Make","Model","Display","display","ValidExpiryDate","ValidMot","FormattedMotExpiry","ValidityText","MotChecker","ShowSearch","VehicleNotFound","VehicleErrorOccurred","Form","InitialiseModule","motCheckerDOMLocation","parentDiv","elem","MotClass","ResetForm","GetDetails","details","MakeDescription","ModelDescription","VehicleDetailsValidation","vehicleDetailsCheckerRules","setUpVehicleDetailsCheckerValidation","CONFUSEDPETROLPRICES","newrelic","Elements","SFPostcode","SFRadius","SFPostcodeError","RSPostcode","RSFuelTypeDefaultOption","RSPostcodeError","ScrollPricesRightLink","ScrollPricesLeftLink","ShowingNumberOfPrices","ShowingNumberOfPricesTokenized","IsOpenFilter","SortPricesByCheapest","SortPricesByDistance","PetrolPriceCalculator","DirectionsApiLink","Classes","ResultsFilterActive","AppleMaps","AndroidMaps","HttpsMaps","IPhone","IPod","IPad","Android","AuthPromptCookieName","PriceNumberOfDecimalPlaces","DistanceNumberOfDecimalPlaces","SavingsNumberOfDecimalPlaces","MyLocation","Radius5Miles","Radius10Miles","Radius25Miles","PriceTypeMock","RequestSourceShowMoreResults","RequestSourceAutoSearch","RequestSourceSearchForm","RequestSourceResultsForm","CurrentLocationUnavailable","CurrentLocationError","Station","Stations","PriceStatisticDefaultValue","PetrolAppName","Tokens","NumberOfPrices","BindPrice","jsonPrice","CategoryNumber","Brand","SiteName","Street","Suburb","Town","County","Postcode","FormattedAddress","Longitude","Latitude","FuelTypeId","DateOfPrice","FormatDateOfPrice","ModalPrice","Distance","Logo","Savings","Ranking","OpeningTime","ClosingTime","Fuel24Hours","AutomatService","IsOpen","IsOpenText","OpeningClosingTimeText","OpeningHoursText","PriceType","Enabled","dateOfPrice","formatDate","sort","left","right","leftModalPrice","rightModalPrice","scrollablePricesOnRender","countNumberOfPrices","leftDistance","rightDistance","FormatPriceStatistic","priceStatistic","WriteNewRelicPageEvent","eventArgs","GetCustomerFromCookies","addPageAction","object","cookies","xUniqueCustomerSessionId","xUniqueCustomerCookieId","c","XUniqueCustomerSessionIDString","XUniqueCustomerCookieIDString","PetrolPricesForm","currentStep","currentFilter","currentHeader","currentRadiusSearch","currentLogin","currentNotificationBar","currentNoPrices","currentPriceListError","currentNotificationPanel","FuelType","Radius","PostcodeLatitude","PostcodeLongitude","DirectionsMap","DirectionsRenderer","PetrolHighest","PetrolLowest","PetrolAverage","PetrolLastUpdated","DieselHighest","DieselLowest","DieselAverage","DieselLastUpdated","ModalOpeningHoursText","ModalOpeningHoursAutomatService","NumberOfPricesWithin5Miles","NumberOfPricesWithin10Miles","NumberOfPricesWithin25Miles","IsAuthenticatedUser","IsSearching","Initialise","getElementById","initOnPageLoad","getPrices","requestSource","isSafariOnMac","fuelType","radius","postcodeLatitude","postcodeLongitude","validateSearchForm","searchFormToPrices","GetPriceList","useCurrentLocation","processGeolocation","position","directionsApiLink","handleCurrentLocationFault","directionsApiLinkValue","cache","obtainCurrentLocationAddress","coords","latitude","longitude","geolocationError","navigator","geolocation","getCurrentPosition","enableHighAccuracy","maximumAge","lat","lng","maps","Geocoder","geocode","status","placePostcode","place","address_components","types","short_name","submitPageEvent","faultMessage","getPricesByRadius","validateRadiusSearch","_getDomain","hostNameArray","hostName","concat","unauthenticatedUserPricesNumberOfRequests","authPromptCookieValue","hideResultsPanelBorder","openingHoursModalCloseClick","disablePostcodeError","UnauthenticatedUserPricesNumberOfRequests","RequestSource","priceList","handleRetrievedPriceList","handleRetrievedPriceListError","GetPriceStatistics","priceStatistics","IsAuthenticatedUserPricesRequestsCapped","showingNumberOfPrices","isEmptyObject","JsonViewPrices","AuthenticatedUserPricesRequestsRemaining","handleRetrievedPrices","countNumberOfPricesExcludingMock","IsUnauthenticatedUserPricesRequestsCapped","authPromptCookieUpdatedValue","prices","showResultsPanelBorder","modelPrice","sortPricesByCheapest","getDirections","stationLatitude","stationLongitude","handleDirections","directions","handleRetrievedDirectionsError","IsEnabled","pricesFormToDirections","initDirectionsMap","initDirectionsRenderer","renderDirections","getTabbedDirections","win","mapsUrl","mapsQueryString","platform","open","MapsUrl","showOpeningHours","openingHoursText","automatService","openingHoursLinkClick","closeOpeningHours","sortPricesByDistance","numberOfPrices","showingNumberOfPricesTokenizedText","showingNumberOfPricesText","handleAuthPromptCookie","directionsBackToPrices","directionsFormToPrices","pricesBackToSearch","pricesFormToSearch","showMoreResults","currentRadius","bindEvents","filterOn","FilterOn","showSearchFormPostcodeSection","initEventDecorator","bindValidation","initTooltips","initOpeningHours","initInternetExplorer","initSafariOnMac","scrollablePricesOnRightClick","scrollablePricesOnLeftClick","keyup","resize","Maps","Map","postcodeLat","postcodeLng","priceLat","priceLng","renderer","postcodeCoord","stationCoord","setOptions","zoom","center","setMap","setPanel","DirectionsService","route","destination","travelMode","TravelMode","DRIVING","provideRouteAlternatives","unitSystem","UnitSystem","IMPERIAL","DirectionsStatus","OK","setDirections","MiEvents","functionNames","Control","UiElements","SFFuelFinderLandingPanel","PRFuelFinderResultsPanel","ScrollLeftLink","ScrollRightLink","ScrollRightBodyMarker","ResultsUl","ResultsUlItems","ResultsFill","PetrolPriceResultsResult","ScrollEndMarkerResult","OpeningHoursModal","Dimmer","ResultsPanelBody","TooltipToggle","TooltipWrapper","TooltipInfo","TooltipInfoDismiss","ResultSectionAddress","ResultSectionLoggedOut","RSCurrentLocationTooltipWrapper","RSFuelType","RSRadius","SFPostcodeWrapper","SFGetPrices","SFLandingPanelMainPostcode","CheapestRibbon","ResultsPanelBodyBorder","OpeningHoursLinkClicked","Left","MarginLeft","MarginRight","MarginTop","MarginBottom","Pixel","Height","Open","Visible","MaxWidth","Border","Disabled","MsIe","MsIe11","Macintosh","Safari","Chrome","ResultWidth","ClearAddressHeight","ClearPriceListHeight","listItem","SetAddressHeight","maxHeight","SetPriceListHeight","loggedOutItemHeight","resultLiWidth","pricesWidth","pricesWidthMinusOne","HandleCheapestRibbonOnTimeout","currentLeftMargin","scrollRightResultMarkerOffset","scrollRightBodyMarkerOffset","newLeftMargin","HandleCheapestRibbon","marginBoundary","leftMargin","scrollLeft","resultsPanelWidth","openingHoursLinkClicked","isInternetExplorer","ua","userAgent","isMsIe","isMsIe11","isMacintosh","isSafari","isIPad","isIPod","isIPhone","SearchFormValidation","SFFuelType","SFFuelTypeSelected","SFFuelTypeError","SFRadiusError","SFPostcodeErrorEnabled","RSFuelTypeSelected","RSFuelTypeError","RSRadiusSelected","RSRadiusError","RSPostcodeErrorEnabled","ValidationConstants","FuelTypes","PostcodeRegex","ErrorMessageConstants","Validation","parsedFuelType","isNaN","inArray","parsedRadius","validateSFFuelType","validateSFPostcode","blur","enablePostcodeError","validateRSFuelType","validateRSRadius","validateRSPostcode","validPostcode","validFuelType","validRadius","validateSFRadius","validateSFMyLocation","handleElementValidation","validateRSMyLocation","isValid","errorMessage","ProductHeroCTA","CAR","VAN","BIKE","VehicleType","BaseUrl","RegNumberLookup","VanFound","BikeFound","ShowModalDimmer","Reset","EditReg","select","Lookup","regNumber","baseUrl","carRegQuoteUrl","PostcodeLookup","CheckPostcode","regValue","postCode","postCodeQuoteUrl","setupProductCtas","motorHeroCta","homeHeroCta","CONFUSEDCARFINANCECALCULATORAPP","ProviderLowRepresentativeExample","ProviderLowTier1000To1999Percentage","ProviderLowTier2000To2999Percentage","ProviderLowTier3000To4999Percentage","ProviderLowTier5000To7499Percentage","ProviderLowTier7500To19999Percentage","ProviderLowTier20000To36000Percentage","ProviderModerateRepresentativeExample","ProviderModerateTier1000To1999Percentage","ProviderModerateTier2000To2999Percentage","ProviderModerateTier3000To4999Percentage","ProviderModerateTier5000To7499Percentage","ProviderModerateTier7500To19999Percentage","ProviderModerateTier20000To36000Percentage","ProviderHighRepresentativeExample","ProviderHighTier1000To1999Percentage","ProviderHighTier2000To2999Percentage","ProviderHighTier3000To4999Percentage","ProviderHighTier5000To7499Percentage","ProviderHighTier7500To19999Percentage","ProviderHighTier20000To36000Percentage","CarFinanceCalculatorWidget","CarFinanceCalculatorStartApplication","CarFinanceCalculatorSpinner","CarFinanceCalculatorGetQuote","CalculateButton","RecalculateText","CalculateErrorHowMuch","CalculateErrorHowLong","ProviderLowSection","ProviderModerateSection","ProviderHighSection","StartApplicationButton","GetAQuoteButton","CalculationError","ProviderLowTitle","ProviderModerateTitle","ProviderHighTitle","ProviderTitleOnMobile","CarFinanceCalculatorWidgetId","CalculateErrorMessageHowMuch","CalculateErrorMessageHowLong","CarFinanceCalculatorSpinnerTimeout","CarFinanceCalculatorAppName","AprExampleTableTabActive","ProviderLowTitleOnMobile","ProviderModerateTitleOnMobile","ProviderHighTitleOnMobile","ProviderLow","ProviderModerate","ProviderHigh","HowMuch","HowLong","BindProviderLow","provider","RepresentativeExample","Tier1000To1999Percentage","Tier2000To2999Percentage","Tier3000To4999Percentage","Tier5000To7499Percentage","Tier7500To19999Percentage","Tier20000To36000Percentage","BindProviderModerate","BindProviderHigh","ShowProviderLowSection","ShowProviderModerateSection","ShowProviderHighSection","NumberWithCommas","num","NumberWithDecimalPlace","Provider","CalculationTierPercentage","CalculationMonthlyRepayment","CalculationTotalRepayment","TokenizedRepresentativeExample","CarFinanceCalculatorForm","onHowMuch","ValidateHowMuch","onHowLong","ValidateHowLong","Calculate","isHowMuchValid","isHowLongValid","DoCalculation","Helper","validateCalculationData","obtainTierPercentage","obtainMonthlyRepayment","obtainTotalRepayment","obtainTokenizedRepresentativeExample","submitCalculation","onProviderLowTitle","submitProvider","onProviderModerateTitle","onProviderHighTitle","startApplicationLink","detokenizeLink","submitClickthrough","getAQuoteLink","link","MonthlyRepaymentWholePart","calculation","MonthlyRepaymentDecimalPart","TierPercentageFormat","AMOUNT","MONTHS","RATE","MONTHLYREPAYMENT","TOTALREPAYMENT","ReplaceAll","replacement","howMuch","howLong","providerLow","providerModerate","providerHigh","isNumeric","validateCalculationProvider","iHowMuch","tierPercentage","fTierPercentage","iHowLong","monthlyRate","Math","pow","monthlyRepayment","totalRepayment","representativeExample","tokenizedRepresentativeExample","ProviderLowRate","ProviderLowMonthlyRepayment","ProviderLowTotalRepayment","ProviderModerateRate","ProviderModerateMonthlyRepayment","ProviderModerateTotalRepayment","ProviderHighRate","ProviderHighMonthlyRepayment","ProviderHighTotalRepayment","Amount","Months","Link","providerType","isDropdown","ProviderType","IsDropdown","expandingBands","$expandingBandToggleContainer","$expandingBandToggle","$expandingBandToggleSection","pageUrl","cookiePolicyWidget","referer","referrer","motChecker","carousel","tabs","postCodeFromURL","CONFUSEDCORPORATE","displayMainForm","redirectToLogin","moreInformation","loginLink","querySelect","moreInformationSelect","stopPropagation","DOB_Day","DOB_Month","DOB_Year","DOB","formInformation","Product","MoreInformation","Title","FirstName","Surname","EmailAddress","DateOfBirth","ContactPhoneQuestion","ContactPhoneNumber","HasPurchased","QuerySubject","QueryDescription","HttpAttributeReturnUrl","HttpAttributePriority","HttpAttributeOrigin","HttpAttributeExternal","processData","Success","returnUrl","owlCarousel","margin","nav","dots","loop","items","responsive","0","stagePadding","901","tabItem","tabItems","tabsLink","contentPanel","tabNumber","fuelCost","fuelcost","findCarClickEvent","$userInputReg","$fuelCostCalculator","validRegNumber","clearPrefilledCarLookupValues","carRegLookup","updateCarDetails","setText","carInfo","make","model","carLookupSuccess","carResult","CarMake","CarModel","mpg","MpgValue","pageTransition","carLookupFailure","registration","VehicleResultFound","VehicleValuesAssumed","validNumberValue","numericInput","numberInputCheck","nextEl","el","calculateResult","$costInfoFields","fuel","annualMileage","costPerGallon","numberOfLtrToGallon","numOfGallonsForAnnualMileage","annualResult","prefillResultsPage","monthlyResult","weeklyResult","costs","otherQuestionsPageIsValid","mpgIsValid","avgMilesIsValid","fuelCostIsValid","syncFuelCosts","newVal","syncMpgCosts","newMpgVal","updateResults","changeFuelCost","diff","progress","pageTransitionState","preventDoubleClick","transition","toggleFade","shouldBeShown","currentlyVisble","animateTransition","$navBar","$shareWidget","movePages","showNewPage","URLSearchParams"],"mappings":"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","file":"cms.min.js","sourcesContent":["/**\r\n* Adds a Confused.CookieManager class to the Confused namespace. \r\n* Implemented as IIFE so we can pass in references to the global jQuery and document objects.\r\n**/\r\n(function ($, w, d) {\r\n\r\n \"use strict\";\r\n\r\n w.Confused = w.Confused || {};\r\n\r\n /**\r\n * Helper for working with cookies. 95% of this code was written by Mozilla.\r\n * https://developer.mozilla.org/en-US/docs/Web/API/d.cookie\r\n *\r\n * @Constructor\r\n */\r\n w.Confused.CookieManager = function () {};\r\n\r\n /**\r\n * Gets a cookie item. e.g.\r\n * cookieManager.getItem(name)\r\n *\r\n * @param {string} sKey. The name of the cookie.\r\n */\r\n w.Confused.CookieManager.prototype.getItem = function (sKey) {\r\n\r\n return decodeURIComponent(d.cookie.replace(new RegExp(\"(?:(?:^|.*;)\\\\s*\" + encodeURIComponent(sKey).replace(/[\\-\\.\\+\\*]/g, \"\\\\$&\") + \"\\\\s*\\\\=\\\\s*([^;]*).*$)|^.*$\"), \"$1\")) || null;\r\n };\r\n\r\n\r\n /**\r\n * Sets a cookie item. e.g.\r\n * cookieManager.setItem(\"test0\", \"Hello world!\");\r\n * cookieManager.setItem(\"test1\", \"Unicode test: \\u00E0\\u00E8\\u00EC\\u00F2\\u00F9\", Infinity);\r\n * cookieManager.setItem(\"test2\", \"Hello world!\", new Date(2020, 5, 12));\r\n * cookieManager.setItem(\"test3\", \"Hello world!\", new Date(2027, 2, 3), \"/blog\");\r\n * cookieManager.setItem(\"test4\", \"Hello world!\", \"Sun, 06 Nov 2022 21:43:15 GMT\");\r\n * cookieManager.setItem(\"test5\", \"Hello world!\", \"Tue, 06 Dec 2022 13:11:07 GMT\", \"/home\");\r\n * cookieManager.setItem(\"test6\", \"Hello world!\", 150);\r\n * cookieManager.setItem(\"test7\", \"Hello world!\", 245, \"/content\");\r\n * cookieManager.setItem(\"test8\", \"Hello world!\", null, null, \"example.com\");\r\n * cookieManager.setItem(\"test9\", \"Hello world!\", null, null, null, true);\r\n * cookieManager.setItem(\"test1;=\", \"Safe character test;=\", Infinity); \r\n *\r\n * @param {string} sKey. The name of the cookie.\r\n * @param {string} sValue. The value of the cookie.\r\n * @param {variant} vEnd. The expiry date of the cookie.\r\n * @param {string} sPath. The path of the cookie.\r\n * @param {string} sDomain. The domain of the cookie.\r\n * @param {bool} bSecure. Specifies if the cookie is secure or not. \r\n */\r\n w.Confused.CookieManager.prototype.setItem = function (sKey, sValue, vEnd, sPath, sDomain, bSecure) {\r\n\r\n if (!sKey || /^(?:expires|max\\-age|path|domain|secure)$/i.test(sKey)) {\r\n\r\n return false;\r\n }\r\n\r\n var sExpires = \"\";\r\n\r\n if (vEnd) {\r\n\r\n switch (vEnd.constructor) {\r\n\r\n case Number:\r\n sExpires = vEnd === Infinity ? \"; expires=Fri, 31 Dec 9999 23:59:59 GMT\" : \"; max-age=\" + vEnd;\r\n break;\r\n\r\n case String:\r\n sExpires = \"; expires=\" + vEnd;\r\n break;\r\n\r\n case Date:\r\n sExpires = \"; expires=\" + vEnd.toUTCString();\r\n break;\r\n }\r\n }\r\n\r\n d.cookie = encodeURIComponent(sKey) + \"=\" + encodeURIComponent(sValue) + sExpires + (sDomain ? \"; domain=\" + sDomain : \"\") + (sPath ? \"; path=\" + sPath : \"\") + (bSecure ? \"; secure\" : \"\");\r\n\r\n return true;\r\n };\r\n\r\n\r\n /**\r\n * Removes a cookie item. e.g.\r\n * cookieManager.removeItem(name, path, domain)\r\n *\r\n * @param {string} sKey. The name of the cookie.\r\n * @param {string} sPath. The path of the cookie: eg, \"/\" : defaults to path of current d.\r\n * @param {string} sDomain. The domain of the cookie - eg, confused.com, .confused.com (all subdomains), www.confused.com\r\n */\r\n w.Confused.CookieManager.prototype.removeItem = function (sKey, sPath, sDomain) {\r\n\r\n if (!sKey || !this.hasItem(sKey)) {\r\n\r\n return false;\r\n }\r\n\r\n d.cookie = encodeURIComponent(sKey) + \"=; expires=Thu, 01 Jan 1970 00:00:00 GMT\" + (sDomain ? \"; domain=\" + sDomain : \"\") + (sPath ? \"; path=\" + sPath : \"\");\r\n\r\n return true;\r\n };\r\n\r\n\r\n /**\r\n * Tests if a cookie item exists. e.g.\r\n * cookieManager.hasItem(name)\r\n *\r\n * @param {string} sKey. The name of the cookie.\r\n */\r\n w.Confused.CookieManager.prototype.hasItem = function (sKey) {\r\n\r\n return (new RegExp(\"(?:^|;\\\\s*)\" + encodeURIComponent(sKey).replace(/[\\-\\.\\+\\*]/g, \"\\\\$&\") + \"\\\\s*\\\\=\")).test(d.cookie);\r\n };\r\n\r\n\r\n /**\r\n * Returns the keys for all cookie items. e.g.\r\n * cookieManager.keys(name)\r\n */\r\n w.Confused.CookieManager.prototype.keys = function () {\r\n\r\n var aKeys = d.cookie.replace(/((?:^|\\s*;)[^\\=]+)(?=;|$)|^\\s*|\\s*(?:\\=[^;]*)?(?:\\1|$)/g, \"\").split(/\\s*(?:\\=[^;]*)?;\\s*/);\r\n\r\n for (var nIdx = 0; nIdx < aKeys.length; nIdx++) {\r\n\r\n aKeys[nIdx] = decodeURIComponent(aKeys[nIdx]);\r\n }\r\n\r\n return aKeys;\r\n };\r\n\r\n\r\n\r\n}(window.jQuery, window, document));\r\n","/**\r\n* Adds a Confused.DomainProvider class to the Confused namespace. \r\n* Implemented as IIFE so we can pass in references to the global jQuery and window objects.\r\n**/\r\n(function (w) {\r\n\r\n \"use strict\";\r\n\r\n w.Confused = w.Confused || {}; \r\n\r\n /**\r\n * Helper for working with the current domain\r\n *\r\n * @Constructor\r\n */\r\n w.Confused.DomainProvider = function () {\r\n\r\n this.domainRegex = /^([a-zA-Z0-9]|[a-zA-Z0-9][a-zA-Z0-9\\-]{0,61}[a-zA-Z0-9])(\\.([a-zA-Z0-9]|[a-zA-Z0-9][a-zA-Z0-9\\-]{0,61}[a-zA-Z0-9]))*$/i; \r\n };\r\n\r\n\r\n /**\r\n * Gets a domain for the hostname. e.g.\r\n * domainManager.getDomain(location)\r\n * This function will echo invalid domains. \r\n *\r\n * @param {string} sKey. The name of the cookie.\r\n */\r\n w.Confused.DomainProvider.prototype.getDomain = function (location) {\r\n\r\n return location.hostname;\r\n };\r\n\r\n\r\n /**\r\n * Gets a domain for the hostname. e.g.\r\n * domainManager.getParentDomain(location)\r\n * This function will echo invalid domains. \r\n *\r\n * @param {string} sKey. The name of the cookie.\r\n */\r\n w.Confused.DomainProvider.prototype.getParentDomain = function(location) {\r\n\r\n var parent = location.hostname;\r\n\r\n if (this.domainRegex.test(parent)) {\r\n\r\n var parts = parent.split(\".\");\r\n parts.shift();\r\n parent = parts.join(\".\");\r\n }\r\n\r\n return parent;\r\n };\r\n\r\n}(window));","(function ($, w) {\r\n\r\n \"use strict\";\r\n\r\n w.Confused = w.Confused || {};\r\n\r\n /**\r\n * Confused.LabelProvider returns labels from the lookup service\r\n * \r\n * @constructor\r\n * @param {object} labels to provide\r\n **/\r\n w.Confused.LabelProvider = function (lookupService) {\r\n\r\n this.lookupService = lookupService;\r\n };\r\n\r\n /*\r\n * Gets a label. e.g.\r\n * labelProvider.getLabel(name)\r\n *\r\n * @param {string} key. The name of the label. Return and empty string if no match exists.\r\n **/\r\n w.Confused.LabelProvider.prototype.getLabels = function (paths) {\r\n\r\n var prop, i;\r\n var keys = [];\r\n var values = [];\r\n var promises = [];\r\n var labels = {};\r\n\r\n // Get label keys and values\r\n for (prop in paths) {\r\n\r\n if (paths.hasOwnProperty(prop)) {\r\n\r\n keys.push(prop);\r\n values.push(paths[prop]);\r\n promises.push(this.lookupService.getLabel(paths[prop]));\r\n }\r\n }\r\n\r\n // get label lookups\r\n\r\n var def = $.Deferred();\r\n\r\n $.when.apply($, promises)\r\n .then(function () {\r\n\r\n for (i = 0; i < arguments.length; i++) {\r\n\r\n var result = JSON.parse(arguments[i][0]);\r\n\r\n labels[keys[i]] = result;\r\n }\r\n\r\n def.resolve(labels);\r\n });\r\n\r\n return def;\r\n };\r\n\r\n}(window.jQuery, window));\r\n\r\n","/**\r\n* Adds a Confused.LookupServiceProxy class to the Confused namespace. \r\n* Implemented as IIFE so we can pass in references to the global jQuery and document objects.\r\n**/\r\n(function($, w) {\r\n\r\n w.Confused = w.Confused || {};\r\n\r\n /**\r\n * Helper for utilising the lookup service\r\n *\r\n * @constructor\r\n * @param {object} [endpoint] the endpoint that returns the label, [timeout=500] time (in ms) before making AJAX request, \r\n */\r\n w.Confused.LookupServiceProxy = function(options) {\r\n\r\n var defaults = { endpoint: \"Services/Lookup/LookupService.aspx\", timeout: 300 };\r\n\r\n var settings = $.extend(true, defaults, options);\r\n\r\n this.serviceProxy = new w.Confused.ServiceProxy(settings.endpoint, settings.timeout);\r\n\r\n };\r\n\r\n\r\n /**\r\n * gets a label\r\n *\r\n * @param {string} name\r\n * @function\r\n */\r\n w.Confused.LookupServiceProxy.prototype.getLabel = function(path, options) { \r\n\r\n var settings = $.extend({}, options, { method: \"Label\", data: { path: path } });\r\n\r\n var invoke = this.serviceProxy.invoke(settings);\r\n\r\n return invoke;\r\n\r\n };\r\n\r\n}(window.jQuery, window));","/**\r\n* Adds a Confused.ServiceProxy class to the Confused namespace. \r\n* Implemented as IIFE so we can pass in references to the global jQuery and document objects.\r\n**/\r\n(function($, w) {\r\n\r\n 'use strict';\r\n\r\n w.Confused = w.Confused || {};\r\n\r\n /**\r\n * ServiceProxy abstracts away some of the horrors of dealing with asp.net PageMethods\r\n *\r\n * @param {string} endpoint the endpoint to hit\r\n * @constructor\r\n **/\r\n w.Confused.ServiceProxy = function(endpoint, timeout) {\r\n\r\n this.endpoint = endpoint;\r\n\r\n this.timeout = timeout || 300;\r\n };\r\n\r\n\r\n /**\r\n * invoke the service proxy using the given options\r\n *\r\n * @param {object} options the options\r\n * @param {string} options.method the method to invoke\r\n * @param {object | string} options.data data to act as parameter for the remote method\r\n * @param {function} options.success callback for successful invocation\r\n * @param {function} [options.error] callback for error on invocation\r\n * @function\r\n */\r\n w.Confused.ServiceProxy.prototype.invoke = function(options) {\r\n\r\n var url, data;\r\n\r\n if (!options.method) {\r\n\r\n if (this.endpoint) {\r\n throw new Error('method not specified for service: ' + this.endpoint);\r\n } else {\r\n throw new Error('Error invoking service');\r\n }\r\n }\r\n\r\n url = '/' + this.endpoint + '/' + options.method;\r\n\r\n data = typeof options.data === 'object' ? JSON.stringify(options.data) : options.data;\r\n\r\n return $.ajax({\r\n\r\n type: 'POST',\r\n url: url,\r\n data: data,\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n\r\n //handles stupid MS JSON format!!\r\n converters: {\r\n 'text json': function(result) {\r\n var msg = (window.JSON && window.JSON.parse) ? JSON.parse(result) : $.parseJSON(result);\r\n return msg.hasOwnProperty('d') ? msg.d : msg;\r\n }\r\n }\r\n });\r\n };\r\n\r\n}(window.jQuery, window));","(function ($, w) {\r\n\r\n \"use strict\";\r\n\r\n w.Confused = w.Confused || {};\r\n\r\n /**\r\n * Confused.StaticLabelProvider returns labels from the lookup service\r\n * \r\n * @constructor\r\n * @param {object} labels to provide\r\n **/\r\n w.Confused.StaticLabelProvider = function () {\r\n\r\n var domain = new w.Confused.DomainProvider().getDomain(w.location);\r\n\r\n this.labels = {\r\n\r\n \"policyText\": \"We use cookies to give you the best experience on our site. If you continue browsing, we'll assume you're happy to receive all cookies from our site. \",\r\n \"policyLinkText\": \"Read our cookie policy to learn more.\",\r\n \"policyLinkUrl\": \"http://\" + domain + \"/cookie-policy\"\r\n };\r\n };\r\n\r\n /*\r\n * Gets a label. e.g.\r\n * labelProvider.getLabel(name)\r\n *\r\n * @param {string} key. The name of the label. Return and empty string if no match exists.\r\n **/\r\n w.Confused.StaticLabelProvider.prototype.getLabels = function () {\r\n\r\n var def = $.Deferred();\r\n\r\n def.resolve(this.labels);\r\n\r\n return def;\r\n };\r\n\r\n}(window.jQuery, window));\r\n\r\n","var CONFUSEDCMS = CONFUSEDCMS || {},\r\n CSSCONSTANTS = CSSCONSTANTS || {};\r\nCONFUSEDCMS.eventDecorator = CONFUSEDCMS.eventDecorator || {};\r\nCONFUSEDCMS.eventDecorator.events = CONFUSEDCMS.eventDecorator.events || {};\r\nCONFUSEDCMS.eventDecorator.functions = CONFUSEDCMS.eventDecorator.functions || {};\r\n\r\n// Don't load any of thesse events until the document is loaded as some have external dependancies\r\njQuery(document).ready(function () {\r\n \r\n // The console logger is a diagnostic event that simnply echos out the supplied message to the browsers console.\r\n (function (ns) {\r\n 'use strict';\r\n\r\n // Log click to Console sample EventDecorator Event, this is used for unit test\r\n ns.LogToConsole = function (message) {\r\n window.console.log(message);\r\n };\r\n\r\n // If you have a function that has no external dependancies, add it here...\r\n }(CONFUSEDCMS.eventDecorator.functions, window.jQuery));\r\n \r\n // 21cMI & GA\r\n (function (ns, miListener, $) {\r\n 'use strict';\r\n\r\n // Function to gather event data from static data attributes on the DOM\r\n function getStaticMiInfo(data) {\r\n var eventInfo = {},\r\n label,\r\n trimmedLabel;\r\n\r\n for (label in data) {\r\n if (!data.hasOwnProperty(label)) {\r\n continue;\r\n }\r\n\r\n if (label === 'miEventType' || label === 'miClickLabel') {\r\n continue;\r\n }\r\n\r\n //only care about MI data, providing it's not the event type\r\n if (label.match(/^mi/)) {\r\n\r\n //remove the leading 'mi' and copy data across to hash\r\n trimmedLabel = label.replace('mi', '');\r\n eventInfo[trimmedLabel] = data[label];\r\n }\r\n }\r\n\r\n return eventInfo;\r\n }\r\n\r\n ns.miClickEvent = function() {\r\n try {\r\n var attributeData = $(this).data();\r\n\r\n \r\n var category='not-set', label='not-set';\r\n if (attributeData.miClickCategory !== '') {\r\n category = attributeData.miClickCategory;\r\n }\r\n\r\n if (attributeData.miClickLabel !== '') {\r\n label = attributeData.miClickLabel;\r\n }\r\n\r\n var miEvent = 'CMS' + '::' + category + '::' + label + '::' + 'click';\r\n miListener.postEvent(miEvent, getStaticMiInfo(attributeData));\r\n\r\n if (!window.ga) {\r\n console.log('Error calling Google Analytics in CONFUSEDCMS.eventDecorator.events.miClickEvent: gaq undefined');\r\n return;\r\n }\r\n\r\n window.ga('send', attributeData.gaClickCategory, 'click', attributeData.gaClickLabel);\r\n\r\n } catch (e) {\r\n console.log('Error calling MI Click Event in CONFUSEDCMS.eventDecorator.events.miClickEvent: ' + e);\r\n }\r\n };\r\n\r\n }(CONFUSEDCMS.eventDecorator.events, CONFUSEDCORE.MI.MiListener, jQuery));\r\n\r\n // If you have a function that has external dependancies, add it here in its own closure \r\n // with the dependancy passed in as an argument (such as in data layer above)\r\n \r\n // Process Static Events\r\n (function (e) {\r\n var htmlDoc = jQuery('#html');\r\n if (!htmlDoc.hasClass('sitecore-editor')) {\r\n e.EventDefinitionList.Add(new e.EventDefinition('[data-mi-event-type=\"click\"]',\r\n 'click',\r\n 'CONFUSEDCMS.eventDecorator.events.miClickEvent'));\r\n e.EventDefinitionList.ProcessAll();\r\n }\r\n }(CONFUSEDCMS.eventDecorator));\r\n});","var CONFUSEDCMS = CONFUSEDCMS || {},\r\n CSSCONSTANTS = CSSCONSTANTS || {};\r\nCONFUSEDCMS.eventDecorator = CONFUSEDCMS.eventDecorator || {};\r\nCONFUSEDCMS.eventDecorator.extensions = CONFUSEDCMS.eventDecorator.extensions || {};\r\n\r\n// Extend jQuery to add custom events\r\n(function ($) {\r\n 'use strict';\r\n var oldShow = $.fn.show;\r\n\r\n $.fn.show = function () {\r\n var ret = oldShow.apply(this, arguments);\r\n\r\n this.trigger('show');\r\n\r\n return ret;\r\n };\r\n})(jQuery);\r\n\r\n(function ($) {\r\n 'use strict';\r\n var oldHide = $.fn.hide;\r\n\r\n $.fn.hide = function () {\r\n var ret = oldHide.apply(this, arguments);\r\n\r\n this.trigger('hide');\r\n\r\n return ret;\r\n };\r\n})(jQuery);","var CONFUSEDCMS = CONFUSEDCMS || {},\r\n CSSCONSTANTS = CSSCONSTANTS || {};\r\nCONFUSEDCMS.eventDecorator = CONFUSEDCMS.eventDecorator || {};\r\n\r\nif (!window.console) { window.console = { log: function () { } }; }\r\n\r\n// EventDefinition\r\n(function (ns) {\r\n 'use strict';\r\n\r\n ns.EventDefinition = function (selector, eventName, functionName, params) {\r\n if (!(this instanceof ns.EventDefinition)) { return new ns.EventDefinition(selector, eventName, functionName, params); }\r\n this.selector = selector;\r\n this.eventName = eventName;\r\n this.functionName = functionName;\r\n this.params = params;\r\n\r\n return this;\r\n };\r\n\r\n}(CONFUSEDCMS.eventDecorator));\r\n\r\n// EventDefinitionList\r\n(function (ns) {\r\n 'use strict';\r\n ns.EventDefinitionList = [];\r\n ns.EventDefinitionList.Add = function (eventDefinition) {\r\n if (eventDefinition.constructor === ns.EventDefinition) { this.push(eventDefinition); }\r\n };\r\n ns.EventDefinitionList.ProcessAll = function () {\r\n // careful here, we are slightly mixing metaphors! had to use a variable cos length property changes each iteration!\r\n var length = ns.EventDefinitionList.length;\r\n for (var i = 0; i < length; i++) {\r\n var eventDefinition = ns.EventDefinitionList.pop();\r\n if (eventDefinition.selector === '') {\r\n ns.ProcessFunction(eventDefinition);\r\n } else {\r\n ns.ProcessEvent(eventDefinition);\r\n }\r\n }\r\n };\r\n}(CONFUSEDCMS.eventDecorator));\r\n\r\n// Process a single event definition by finding the function and wiring up the event to fire it\r\n(function (ns, w, $) {\r\n 'use strict';\r\n\r\n // functions in name spaces cannot be directly referenced, so \r\n // we need to dig the function out of the context (usually the window object)\r\n function getFunctionByName(functionName, context) {\r\n var namespaces = functionName.split('.');\r\n var func = namespaces.pop(); \r\n for (var i = 0; i < namespaces.length; i++) {\r\n context = context[namespaces[i]];\r\n }\r\n return context[func];\r\n }\r\n\r\n ns.ProcessEvent = function (eventDefinition) {\r\n // first get the function out of the supplied namespace\r\n var fn = getFunctionByName(eventDefinition.functionName, w);\r\n if (typeof fn !== 'function') {\r\n return false;\r\n }\r\n\r\n // Now wire up the function to the requested event name, for a given selector, passing in any require parameters.\r\n $(document.body).on(\r\n eventDefinition.eventName,\r\n eventDefinition.selector,\r\n function() {\r\n fn.apply(this, eventDefinition.params);\r\n }\r\n );\r\n\r\n return true;\r\n };\r\n\r\n ns.ProcessFunction = function (eventDefinition) {\r\n // first get the function out of the supplied namespace\r\n var fn = getFunctionByName(eventDefinition.functionName, w);\r\n\r\n if (typeof fn !== 'function') {\r\n return false;\r\n }\r\n fn.apply(fn, eventDefinition.params);\r\n return true;\r\n };\r\n}(CONFUSEDCMS.eventDecorator, window, jQuery));","var CONFUSEDCMS = CONFUSEDCMS || {},\r\n CSSCONSTANTS = CSSCONSTANTS || {};\r\n\r\nCONFUSEDCMS.services = CONFUSEDCMS.services || {};\r\n\r\n(function (ns, $) {\r\n 'use strict';\r\n\r\n ns.ServiceProxy = function (endpoint) {\r\n if (!(this instanceof ns.ServiceProxy)) {\r\n return new ns.ServiceProxy(endpoint);\r\n }\r\n\r\n var me = this;\r\n\r\n me.endpoint = endpoint;\r\n \r\n /**\r\n * invoke the service proxy using the given options\r\n *\r\n * @param {object} options the options\r\n * @param {string} options.method the method to invoke\r\n * @param {object | string} options.data data to act as parameter for the remote method\r\n * @param {function} options.success callback for successful invocation\r\n * @param {function} [options.error] callback for error on invocation\r\n * @function\r\n */\r\n me.invoke = function(options) {\r\n\r\n if (!options.method) {\r\n throw new Error('method not specified for service: ' + me.endpoint);\r\n }\r\n if (!options.success) {\r\n throw new Error('success handler not supplied for service: ' + me.endpoint);\r\n }\r\n\r\n var url = '/' + me.endpoint + '/' + options.method; // + '?t=' + Date.now();\r\n console.log(options.data);\r\n var data = typeof options.data === 'object' ? JSON.stringify(options.data) : options.data;\r\n\r\n me.xhr = $.ajax({\r\n type: 'POST',\r\n url: url,\r\n data: data,\r\n contentType: 'json',\r\n //handles stupid MS JSON format!!\r\n converters: {\r\n 'text json': function(result) {\r\n var msg = (window.JSON && window.JSON.parse) ? JSON.parse(result) : $.parseJSON('(' + result + ')');\r\n\r\n return msg.hasOwnProperty('d') ? msg.d : msg;\r\n }\r\n },\r\n error: function(jqXhr, textStatus, errorThrown) {\r\n if (options.error) {\r\n options.error(jqXhr, textStatus, errorThrown);\r\n }\r\n },\r\n success: function(result, textStatus, jqXhr) {\r\n options.success(result, textStatus, jqXhr);\r\n }\r\n });\r\n };\r\n };\r\n \r\n /**\r\n * Helper for recording client-side MI events\r\n *\r\n * @constructor \r\n */\r\n ns.MiService = function () {\r\n if (!(this instanceof ns.MiService)) {\r\n return new ns.MiService();\r\n }\r\n \r\n var proxy = new ns.ServiceProxy('miv2');\r\n\r\n /**\r\n * Records the given event information against the given event\r\n *\r\n * @param {object} event the event object\r\n * @param {string} event.EventType eventTye\r\n * @param {string} event.EventInfo eventInfo\r\n * @param {object} event.Context any additional data\r\n * @param {object} options any additional options\r\n * @param {function} options.success success callback\r\n * @function\r\n */\r\n this.pageEvent = function(event, options) {\r\n var settings = $.extend({}, options, {\r\n method: 'Event',\r\n data: event,\r\n success: $.noop //don't care about success with MI\r\n });\r\n proxy.invoke(settings);\r\n };\r\n };\r\n}(CONFUSEDCMS.services, jQuery));\r\n\r\n ","/*!\n * jQuery Validation Plugin 1.11.1\n *\n * http://bassistance.de/jquery-plugins/jquery-plugin-validation/\n * http://docs.jquery.com/Plugins/Validation\n *\n * Copyright 2013 Jörn Zaefferer\n * Released under the MIT license:\n * http://www.opensource.org/licenses/mit-license.php\n */\n\n(function($) {\n\n$.extend($.fn, {\n\t// http://docs.jquery.com/Plugins/Validation/validate\n\tvalidate: function( options ) {\n\n\t\t// if nothing is selected, return nothing; can't chain anyway\n\t\tif ( !this.length ) {\n\t\t\tif ( options && options.debug && window.console ) {\n\t\t\t\tconsole.warn( \"Nothing selected, can't validate, returning nothing.\" );\n\t\t\t}\n\t\t\treturn;\n\t\t}\n\n\t\t// check if a validator for this form was already created\n\t\tvar validator = $.data( this[0], \"validator\" );\n\t\tif ( validator ) {\n\t\t\treturn validator;\n\t\t}\n\n\t\t// Add novalidate tag if HTML5.\n\t\tthis.attr( \"novalidate\", \"novalidate\" );\n\n\t\tvalidator = new $.validator( options, this[0] );\n\t\t$.data( this[0], \"validator\", validator );\n\n\t\tif ( validator.settings.onsubmit ) {\n\n\t\t\tthis.validateDelegate( \":submit\", \"click\", function( event ) {\n\t\t\t\tif ( validator.settings.submitHandler ) {\n\t\t\t\t\tvalidator.submitButton = event.target;\n\t\t\t\t}\n\t\t\t\t// allow suppressing validation by adding a cancel class to the submit button\n\t\t\t\tif ( $(event.target).hasClass(\"cancel\") ) {\n\t\t\t\t\tvalidator.cancelSubmit = true;\n\t\t\t\t}\n\n\t\t\t\t// allow suppressing validation by adding the html5 formnovalidate attribute to the submit button\n\t\t\t\tif ( $(event.target).attr(\"formnovalidate\") !== undefined ) {\n\t\t\t\t\tvalidator.cancelSubmit = true;\n\t\t\t\t}\n\t\t\t});\n\n\t\t\t// validate the form on submit\n\t\t\tthis.submit( function( event ) {\n\t\t\t\tif ( validator.settings.debug ) {\n\t\t\t\t\t// prevent form submit to be able to see console output\n\t\t\t\t\tevent.preventDefault();\n\t\t\t\t}\n\t\t\t\tfunction handle() {\n\t\t\t\t\tvar hidden;\n\t\t\t\t\tif ( validator.settings.submitHandler ) {\n\t\t\t\t\t\tif ( validator.submitButton ) {\n\t\t\t\t\t\t\t// insert a hidden input as a replacement for the missing submit button\n\t\t\t\t\t\t\thidden = $(\"\").attr(\"name\", validator.submitButton.name).val( $(validator.submitButton).val() ).appendTo(validator.currentForm);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tvalidator.settings.submitHandler.call( validator, validator.currentForm, event );\n\t\t\t\t\t\tif ( validator.submitButton ) {\n\t\t\t\t\t\t\t// and clean up afterwards; thanks to no-block-scope, hidden can be referenced\n\t\t\t\t\t\t\thidden.remove();\n\t\t\t\t\t\t}\n\t\t\t\t\t\treturn false;\n\t\t\t\t\t}\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\n\t\t\t\t// prevent submit for invalid forms or custom submit handlers\n\t\t\t\tif ( validator.cancelSubmit ) {\n\t\t\t\t\tvalidator.cancelSubmit = false;\n\t\t\t\t\treturn handle();\n\t\t\t\t}\n\t\t\t\tif ( validator.form() ) {\n\t\t\t\t\tif ( validator.pendingRequest ) {\n\t\t\t\t\t\tvalidator.formSubmitted = true;\n\t\t\t\t\t\treturn false;\n\t\t\t\t\t}\n\t\t\t\t\treturn handle();\n\t\t\t\t} else {\n\t\t\t\t\tvalidator.focusInvalid();\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\n\t\treturn validator;\n\t},\n\t// http://docs.jquery.com/Plugins/Validation/valid\n\tvalid: function() {\n\t\tif ( $(this[0]).is(\"form\")) {\n\t\t\treturn this.validate().form();\n\t\t} else {\n\t\t\tvar valid = true;\n\t\t\tvar validator = $(this[0].form).validate();\n\t\t\tthis.each(function() {\n\t\t\t\tvalid = valid && validator.element(this);\n\t\t\t});\n\t\t\treturn valid;\n\t\t}\n\t},\n\t// attributes: space seperated list of attributes to retrieve and remove\n\tremoveAttrs: function( attributes ) {\n\t\tvar result = {},\n\t\t\t$element = this;\n\t\t$.each(attributes.split(/\\s/), function( index, value ) {\n\t\t\tresult[value] = $element.attr(value);\n\t\t\t$element.removeAttr(value);\n\t\t});\n\t\treturn result;\n\t},\n\t// http://docs.jquery.com/Plugins/Validation/rules\n\trules: function( command, argument ) {\n\t\tvar element = this[0];\n\n\t\tif ( command ) {\n\t\t\tvar settings = $.data(element.form, \"validator\").settings;\n\t\t\tvar staticRules = settings.rules;\n\t\t\tvar existingRules = $.validator.staticRules(element);\n\t\t\tswitch(command) {\n\t\t\tcase \"add\":\n\t\t\t\t$.extend(existingRules, $.validator.normalizeRule(argument));\n\t\t\t\t// remove messages from rules, but allow them to be set separetely\n\t\t\t\tdelete existingRules.messages;\n\t\t\t\tstaticRules[element.name] = existingRules;\n\t\t\t\tif ( argument.messages ) {\n\t\t\t\t\tsettings.messages[element.name] = $.extend( settings.messages[element.name], argument.messages );\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\tcase \"remove\":\n\t\t\t\tif ( !argument ) {\n\t\t\t\t\tdelete staticRules[element.name];\n\t\t\t\t\treturn existingRules;\n\t\t\t\t}\n\t\t\t\tvar filtered = {};\n\t\t\t\t$.each(argument.split(/\\s/), function( index, method ) {\n\t\t\t\t\tfiltered[method] = existingRules[method];\n\t\t\t\t\tdelete existingRules[method];\n\t\t\t\t});\n\t\t\t\treturn filtered;\n\t\t\t}\n\t\t}\n\n\t\tvar data = $.validator.normalizeRules(\n\t\t$.extend(\n\t\t\t{},\n\t\t\t$.validator.classRules(element),\n\t\t\t$.validator.attributeRules(element),\n\t\t\t$.validator.dataRules(element),\n\t\t\t$.validator.staticRules(element)\n\t\t), element);\n\n\t\t// make sure required is at front\n\t\tif ( data.required ) {\n\t\t\tvar param = data.required;\n\t\t\tdelete data.required;\n\t\t\tdata = $.extend({required: param}, data);\n\t\t}\n\n\t\treturn data;\n\t}\n});\n\n// Custom selectors\n$.extend($.expr[\":\"], {\n\t// http://docs.jquery.com/Plugins/Validation/blank\n\tblank: function( a ) { return !$.trim(\"\" + $(a).val()); },\n\t// http://docs.jquery.com/Plugins/Validation/filled\n\tfilled: function( a ) { return !!$.trim(\"\" + $(a).val()); },\n\t// http://docs.jquery.com/Plugins/Validation/unchecked\n\tunchecked: function( a ) { return !$(a).prop(\"checked\"); }\n});\n\n// constructor for validator\n$.validator = function( options, form ) {\n\tthis.settings = $.extend( true, {}, $.validator.defaults, options );\n\tthis.currentForm = form;\n\tthis.init();\n};\n\n$.validator.format = function( source, params ) {\n\tif ( arguments.length === 1 ) {\n\t\treturn function() {\n\t\t\tvar args = $.makeArray(arguments);\n\t\t\targs.unshift(source);\n\t\t\treturn $.validator.format.apply( this, args );\n\t\t};\n\t}\n\tif ( arguments.length > 2 && params.constructor !== Array ) {\n\t\tparams = $.makeArray(arguments).slice(1);\n\t}\n\tif ( params.constructor !== Array ) {\n\t\tparams = [ params ];\n\t}\n\t$.each(params, function( i, n ) {\n\t\tsource = source.replace( new RegExp(\"\\\\{\" + i + \"\\\\}\", \"g\"), function() {\n\t\t\treturn n;\n\t\t});\n\t});\n\treturn source;\n};\n\n$.extend($.validator, {\n\n\tdefaults: {\n\t\tmessages: {},\n\t\tgroups: {},\n\t\trules: {},\n\t\terrorClass: \"error\",\n\t\tvalidClass: \"valid\",\n\t\terrorElement: \"label\",\n\t\tfocusInvalid: true,\n\t\terrorContainer: $([]),\n\t\terrorLabelContainer: $([]),\n\t\tonsubmit: true,\n\t\tignore: \":hidden\",\n\t\tignoreTitle: false,\n\t\tonfocusin: function( element, event ) {\n\t\t\tthis.lastActive = element;\n\n\t\t\t// hide error label and remove error class on focus if enabled\n\t\t\tif ( this.settings.focusCleanup && !this.blockFocusCleanup ) {\n\t\t\t\tif ( this.settings.unhighlight ) {\n\t\t\t\t\tthis.settings.unhighlight.call( this, element, this.settings.errorClass, this.settings.validClass );\n\t\t\t\t}\n\t\t\t\tthis.addWrapper(this.errorsFor(element)).hide();\n\t\t\t}\n\t\t},\n\t\tonfocusout: function( element, event ) {\n\t\t\tif ( !this.checkable(element) && (element.name in this.submitted || !this.optional(element)) ) {\n\t\t\t\tthis.element(element);\n\t\t\t}\n\t\t},\n\t\tonkeyup: function( element, event ) {\n\t\t\tif ( event.which === 9 && this.elementValue(element) === \"\" ) {\n\t\t\t\treturn;\n\t\t\t} else if ( element.name in this.submitted || element === this.lastElement ) {\n\t\t\t\tthis.element(element);\n\t\t\t}\n\t\t},\n\t\tonclick: function( element, event ) {\n\t\t\t// click on selects, radiobuttons and checkboxes\n\t\t\tif ( element.name in this.submitted ) {\n\t\t\t\tthis.element(element);\n\t\t\t}\n\t\t\t// or option elements, check parent select in that case\n\t\t\telse if ( element.parentNode.name in this.submitted ) {\n\t\t\t\tthis.element(element.parentNode);\n\t\t\t}\n\t\t},\n\t\thighlight: function( element, errorClass, validClass ) {\n\t\t\tif ( element.type === \"radio\" ) {\n\t\t\t\tthis.findByName(element.name).addClass(errorClass).removeClass(validClass);\n\t\t\t} else {\n\t\t\t\t$(element).addClass(errorClass).removeClass(validClass);\n\t\t\t}\n\t\t},\n\t\tunhighlight: function( element, errorClass, validClass ) {\n\t\t\tif ( element.type === \"radio\" ) {\n\t\t\t\tthis.findByName(element.name).removeClass(errorClass).addClass(validClass);\n\t\t\t} else {\n\t\t\t\t$(element).removeClass(errorClass).addClass(validClass);\n\t\t\t}\n\t\t}\n\t},\n\n\t// http://docs.jquery.com/Plugins/Validation/Validator/setDefaults\n\tsetDefaults: function( settings ) {\n\t\t$.extend( $.validator.defaults, settings );\n\t},\n\n\tmessages: {\n\t\trequired: \"This field is required.\",\n\t\tremote: \"Please fix this field.\",\n\t\temail: \"Please enter a valid email address.\",\n\t\turl: \"Please enter a valid URL.\",\n\t\tdate: \"Please enter a valid date.\",\n\t\tdateISO: \"Please enter a valid date (ISO).\",\n\t\tnumber: \"Please enter a valid number.\",\n\t\tdigits: \"Please enter only digits.\",\n\t\tcreditcard: \"Please enter a valid credit card number.\",\n\t\tequalTo: \"Please enter the same value again.\",\n\t\tmaxlength: $.validator.format(\"Please enter no more than {0} characters.\"),\n\t\tminlength: $.validator.format(\"Please enter at least {0} characters.\"),\n\t\trangelength: $.validator.format(\"Please enter a value between {0} and {1} characters long.\"),\n\t\trange: $.validator.format(\"Please enter a value between {0} and {1}.\"),\n\t\tmax: $.validator.format(\"Please enter a value less than or equal to {0}.\"),\n\t\tmin: $.validator.format(\"Please enter a value greater than or equal to {0}.\")\n\t},\n\n\tautoCreateRanges: false,\n\n\tprototype: {\n\n\t\tinit: function() {\n\t\t\tthis.labelContainer = $(this.settings.errorLabelContainer);\n\t\t\tthis.errorContext = this.labelContainer.length && this.labelContainer || $(this.currentForm);\n\t\t\tthis.containers = $(this.settings.errorContainer).add( this.settings.errorLabelContainer );\n\t\t\tthis.submitted = {};\n\t\t\tthis.valueCache = {};\n\t\t\tthis.pendingRequest = 0;\n\t\t\tthis.pending = {};\n\t\t\tthis.invalid = {};\n\t\t\tthis.reset();\n\n\t\t\tvar groups = (this.groups = {});\n\t\t\t$.each(this.settings.groups, function( key, value ) {\n\t\t\t\tif ( typeof value === \"string\" ) {\n\t\t\t\t\tvalue = value.split(/\\s/);\n\t\t\t\t}\n\t\t\t\t$.each(value, function( index, name ) {\n\t\t\t\t\tgroups[name] = key;\n\t\t\t\t});\n\t\t\t});\n\t\t\tvar rules = this.settings.rules;\n\t\t\t$.each(rules, function( key, value ) {\n\t\t\t\trules[key] = $.validator.normalizeRule(value);\n\t\t\t});\n\n\t\t\tfunction delegate(event) {\n\t\t\t\tvar validator = $.data(this[0].form, \"validator\"),\n\t\t\t\t\teventType = \"on\" + event.type.replace(/^validate/, \"\");\n\t\t\t\tif ( validator.settings[eventType] ) {\n\t\t\t\t\tvalidator.settings[eventType].call(validator, this[0], event);\n\t\t\t\t}\n\t\t\t}\n\t\t\t$(this.currentForm)\n\t\t\t\t.validateDelegate(\":text, [type='password'], [type='file'], select, textarea, \" +\n\t\t\t\t\t\"[type='number'], [type='search'] ,[type='tel'], [type='url'], \" +\n\t\t\t\t\t\"[type='email'], [type='datetime'], [type='date'], [type='month'], \" +\n\t\t\t\t\t\"[type='week'], [type='time'], [type='datetime-local'], \" +\n\t\t\t\t\t\"[type='range'], [type='color'] \",\n\t\t\t\t\t\"focusin focusout keyup\", delegate)\n\t\t\t\t.validateDelegate(\"[type='radio'], [type='checkbox'], select, option\", \"click\", delegate);\n\n\t\t\tif ( this.settings.invalidHandler ) {\n\t\t\t\t$(this.currentForm).bind(\"invalid-form.validate\", this.settings.invalidHandler);\n\t\t\t}\n\t\t},\n\n\t\t// http://docs.jquery.com/Plugins/Validation/Validator/form\n\t\tform: function() {\n\t\t\tthis.checkForm();\n\t\t\t$.extend(this.submitted, this.errorMap);\n\t\t\tthis.invalid = $.extend({}, this.errorMap);\n\t\t\tif ( !this.valid() ) {\n\t\t\t\t$(this.currentForm).triggerHandler(\"invalid-form\", [this]);\n\t\t\t}\n\t\t\tthis.showErrors();\n\t\t\treturn this.valid();\n\t\t},\n\n\t\tcheckForm: function() {\n\t\t\tthis.prepareForm();\n\t\t\tfor ( var i = 0, elements = (this.currentElements = this.elements()); elements[i]; i++ ) {\n\t\t\t\tthis.check( elements[i] );\n\t\t\t}\n\t\t\treturn this.valid();\n\t\t},\n\n\t\t// http://docs.jquery.com/Plugins/Validation/Validator/element\n\t\telement: function( element ) {\n\t\t\telement = this.validationTargetFor( this.clean( element ) );\n\t\t\tthis.lastElement = element;\n\t\t\tthis.prepareElement( element );\n\t\t\tthis.currentElements = $(element);\n\t\t\tvar result = this.check( element ) !== false;\n\t\t\tif ( result ) {\n\t\t\t\tdelete this.invalid[element.name];\n\t\t\t} else {\n\t\t\t\tthis.invalid[element.name] = true;\n\t\t\t}\n\t\t\tif ( !this.numberOfInvalids() ) {\n\t\t\t\t// Hide error containers on last error\n\t\t\t\tthis.toHide = this.toHide.add( this.containers );\n\t\t\t}\n\t\t\tthis.showErrors();\n\t\t\treturn result;\n\t\t},\n\n\t\t// http://docs.jquery.com/Plugins/Validation/Validator/showErrors\n\t\tshowErrors: function( errors ) {\n\t\t\tif ( errors ) {\n\t\t\t\t// add items to error list and map\n\t\t\t\t$.extend( this.errorMap, errors );\n\t\t\t\tthis.errorList = [];\n\t\t\t\tfor ( var name in errors ) {\n\t\t\t\t\tthis.errorList.push({\n\t\t\t\t\t\tmessage: errors[name],\n\t\t\t\t\t\telement: this.findByName(name)[0]\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t\t// remove items from success list\n\t\t\t\tthis.successList = $.grep( this.successList, function( element ) {\n\t\t\t\t\treturn !(element.name in errors);\n\t\t\t\t});\n\t\t\t}\n\t\t\tif ( this.settings.showErrors ) {\n\t\t\t\tthis.settings.showErrors.call( this, this.errorMap, this.errorList );\n\t\t\t} else {\n\t\t\t\tthis.defaultShowErrors();\n\t\t\t}\n\t\t},\n\n\t\t// http://docs.jquery.com/Plugins/Validation/Validator/resetForm\n\t\tresetForm: function() {\n\t\t\tif ( $.fn.resetForm ) {\n\t\t\t\t$(this.currentForm).resetForm();\n\t\t\t}\n\t\t\tthis.submitted = {};\n\t\t\tthis.lastElement = null;\n\t\t\tthis.prepareForm();\n\t\t\tthis.hideErrors();\n\t\t\tthis.elements().removeClass( this.settings.errorClass ).removeData( \"previousValue\" );\n\t\t},\n\n\t\tnumberOfInvalids: function() {\n\t\t\treturn this.objectLength(this.invalid);\n\t\t},\n\n\t\tobjectLength: function( obj ) {\n\t\t\tvar count = 0;\n\t\t\tfor ( var i in obj ) {\n\t\t\t\tcount++;\n\t\t\t}\n\t\t\treturn count;\n\t\t},\n\n\t\thideErrors: function() {\n\t\t\tthis.addWrapper( this.toHide ).hide();\n\t\t},\n\n\t\tvalid: function() {\n\t\t\treturn this.size() === 0;\n\t\t},\n\n\t\tsize: function() {\n\t\t\treturn this.errorList.length;\n\t\t},\n\n\t\tfocusInvalid: function() {\n\t\t\tif ( this.settings.focusInvalid ) {\n\t\t\t\ttry {\n\t\t\t\t\t$(this.findLastActive() || this.errorList.length && this.errorList[0].element || [])\n\t\t\t\t\t.filter(\":visible\")\n\t\t\t\t\t.focus()\n\t\t\t\t\t// manually trigger focusin event; without it, focusin handler isn't called, findLastActive won't have anything to find\n\t\t\t\t\t.trigger(\"focusin\");\n\t\t\t\t} catch(e) {\n\t\t\t\t\t// ignore IE throwing errors when focusing hidden elements\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\n\t\tfindLastActive: function() {\n\t\t\tvar lastActive = this.lastActive;\n\t\t\treturn lastActive && $.grep(this.errorList, function( n ) {\n\t\t\t\treturn n.element.name === lastActive.name;\n\t\t\t}).length === 1 && lastActive;\n\t\t},\n\n\t\telements: function() {\n\t\t\tvar validator = this,\n\t\t\t\trulesCache = {};\n\n\t\t\t// select all valid inputs inside the form (no submit or reset buttons)\n\t\t\treturn $(this.currentForm)\n\t\t\t.find(\"input, select, textarea\")\n\t\t\t.not(\":submit, :reset, :image, [disabled]\")\n\t\t\t.not( this.settings.ignore )\n\t\t\t.filter(function() {\n\t\t\t\tif ( !this.name && validator.settings.debug && window.console ) {\n\t\t\t\t\tconsole.error( \"%o has no name assigned\", this);\n\t\t\t\t}\n\n\t\t\t\t// select only the first element for each name, and only those with rules specified\n\t\t\t\tif ( this.name in rulesCache || !validator.objectLength($(this).rules()) ) {\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\n\t\t\t\trulesCache[this.name] = true;\n\t\t\t\treturn true;\n\t\t\t});\n\t\t},\n\n\t\tclean: function( selector ) {\n\t\t\treturn $(selector)[0];\n\t\t},\n\n\t\terrors: function() {\n\t\t\tvar errorClass = this.settings.errorClass.replace(\" \", \".\");\n\t\t\treturn $(this.settings.errorElement + \".\" + errorClass, this.errorContext);\n\t\t},\n\n\t\treset: function() {\n\t\t\tthis.successList = [];\n\t\t\tthis.errorList = [];\n\t\t\tthis.errorMap = {};\n\t\t\tthis.toShow = $([]);\n\t\t\tthis.toHide = $([]);\n\t\t\tthis.currentElements = $([]);\n\t\t},\n\n\t\tprepareForm: function() {\n\t\t\tthis.reset();\n\t\t\tthis.toHide = this.errors().add( this.containers );\n\t\t},\n\n\t\tprepareElement: function( element ) {\n\t\t\tthis.reset();\n\t\t\tthis.toHide = this.errorsFor(element);\n\t\t},\n\n\t\telementValue: function( element ) {\n\t\t\tvar type = $(element).attr(\"type\"),\n\t\t\t\tval = $(element).val();\n\n\t\t\tif ( type === \"radio\" || type === \"checkbox\" ) {\n\t\t\t\treturn $(\"input[name='\" + $(element).attr(\"name\") + \"']:checked\").val();\n\t\t\t}\n\n\t\t\tif ( typeof val === \"string\" ) {\n\t\t\t\treturn val.replace(/\\r/g, \"\");\n\t\t\t}\n\t\t\treturn val;\n\t\t},\n\n\t\tcheck: function( element ) {\n\t\t\telement = this.validationTargetFor( this.clean( element ) );\n\n\t\t\tvar rules = $(element).rules();\n\t\t\tvar dependencyMismatch = false;\n\t\t\tvar val = this.elementValue(element);\n\t\t\tvar result;\n\n\t\t\tfor (var method in rules ) {\n\t\t\t\tvar rule = { method: method, parameters: rules[method] };\n\t\t\t\ttry {\n\n\t\t\t\t\tresult = $.validator.methods[method].call( this, val, element, rule.parameters );\n\n\t\t\t\t\t// if a method indicates that the field is optional and therefore valid,\n\t\t\t\t\t// don't mark it as valid when there are no other rules\n\t\t\t\t\tif ( result === \"dependency-mismatch\" ) {\n\t\t\t\t\t\tdependencyMismatch = true;\n\t\t\t\t\t\tcontinue;\n\t\t\t\t\t}\n\t\t\t\t\tdependencyMismatch = false;\n\n\t\t\t\t\tif ( result === \"pending\" ) {\n\t\t\t\t\t\tthis.toHide = this.toHide.not( this.errorsFor(element) );\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\n\t\t\t\t\tif ( !result ) {\n\t\t\t\t\t\tthis.formatAndAdd( element, rule );\n\t\t\t\t\t\treturn false;\n\t\t\t\t\t}\n\t\t\t\t} catch(e) {\n\t\t\t\t\tif ( this.settings.debug && window.console ) {\n\t\t\t\t\t\tconsole.log( \"Exception occurred when checking element \" + element.id + \", check the '\" + rule.method + \"' method.\", e );\n\t\t\t\t\t}\n\t\t\t\t\tthrow e;\n\t\t\t\t}\n\t\t\t}\n\t\t\tif ( dependencyMismatch ) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tif ( this.objectLength(rules) ) {\n\t\t\t\tthis.successList.push(element);\n\t\t\t}\n\t\t\treturn true;\n\t\t},\n\n\t\t// return the custom message for the given element and validation method\n\t\t// specified in the element's HTML5 data attribute\n\t\tcustomDataMessage: function( element, method ) {\n\t\t\treturn $(element).data(\"msg-\" + method.toLowerCase()) || (element.attributes && $(element).attr(\"data-msg-\" + method.toLowerCase()));\n\t\t},\n\n\t\t// return the custom message for the given element name and validation method\n\t\tcustomMessage: function( name, method ) {\n\t\t\tvar m = this.settings.messages[name];\n\t\t\treturn m && (m.constructor === String ? m : m[method]);\n\t\t},\n\n\t\t// return the first defined argument, allowing empty strings\n\t\tfindDefined: function() {\n\t\t\tfor(var i = 0; i < arguments.length; i++) {\n\t\t\t\tif ( arguments[i] !== undefined ) {\n\t\t\t\t\treturn arguments[i];\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn undefined;\n\t\t},\n\n\t\tdefaultMessage: function( element, method ) {\n\t\t\treturn this.findDefined(\n\t\t\t\tthis.customMessage( element.name, method ),\n\t\t\t\tthis.customDataMessage( element, method ),\n\t\t\t\t// title is never undefined, so handle empty string as undefined\n\t\t\t\t!this.settings.ignoreTitle && element.title || undefined,\n\t\t\t\t$.validator.messages[method],\n\t\t\t\t\"Warning: No message defined for \" + element.name + \"\"\n\t\t\t);\n\t\t},\n\n\t\tformatAndAdd: function( element, rule ) {\n\t\t\tvar message = this.defaultMessage( element, rule.method ),\n\t\t\t\ttheregex = /\\$?\\{(\\d+)\\}/g;\n\t\t\tif ( typeof message === \"function\" ) {\n\t\t\t\tmessage = message.call(this, rule.parameters, element);\n\t\t\t} else if (theregex.test(message)) {\n\t\t\t\tmessage = $.validator.format(message.replace(theregex, \"{$1}\"), rule.parameters);\n\t\t\t}\n\t\t\tthis.errorList.push({\n\t\t\t\tmessage: message,\n\t\t\t\telement: element\n\t\t\t});\n\n\t\t\tthis.errorMap[element.name] = message;\n\t\t\tthis.submitted[element.name] = message;\n\t\t},\n\n\t\taddWrapper: function( toToggle ) {\n\t\t\tif ( this.settings.wrapper ) {\n\t\t\t\ttoToggle = toToggle.add( toToggle.parent( this.settings.wrapper ) );\n\t\t\t}\n\t\t\treturn toToggle;\n\t\t},\n\n\t\tdefaultShowErrors: function() {\n\t\t\tvar i, elements;\n\t\t\tfor ( i = 0; this.errorList[i]; i++ ) {\n\t\t\t\tvar error = this.errorList[i];\n\t\t\t\tif ( this.settings.highlight ) {\n\t\t\t\t\tthis.settings.highlight.call( this, error.element, this.settings.errorClass, this.settings.validClass );\n\t\t\t\t}\n\t\t\t\tthis.showLabel( error.element, error.message );\n\t\t\t}\n\t\t\tif ( this.errorList.length ) {\n\t\t\t\tthis.toShow = this.toShow.add( this.containers );\n\t\t\t}\n\t\t\tif ( this.settings.success ) {\n\t\t\t\tfor ( i = 0; this.successList[i]; i++ ) {\n\t\t\t\t\tthis.showLabel( this.successList[i] );\n\t\t\t\t}\n\t\t\t}\n\t\t\tif ( this.settings.unhighlight ) {\n\t\t\t\tfor ( i = 0, elements = this.validElements(); elements[i]; i++ ) {\n\t\t\t\t\tthis.settings.unhighlight.call( this, elements[i], this.settings.errorClass, this.settings.validClass );\n\t\t\t\t}\n\t\t\t}\n\t\t\tthis.toHide = this.toHide.not( this.toShow );\n\t\t\tthis.hideErrors();\n\t\t\tthis.addWrapper( this.toShow ).show();\n\t\t},\n\n\t\tvalidElements: function() {\n\t\t\treturn this.currentElements.not(this.invalidElements());\n\t\t},\n\n\t\tinvalidElements: function() {\n\t\t\treturn $(this.errorList).map(function() {\n\t\t\t\treturn this.element;\n\t\t\t});\n\t\t},\n\n\t\tshowLabel: function( element, message ) {\n\t\t\tvar label = this.errorsFor( element );\n\t\t\tif ( label.length ) {\n\t\t\t\t// refresh error/success class\n\t\t\t\tlabel.removeClass( this.settings.validClass ).addClass( this.settings.errorClass );\n\t\t\t\t// replace message on existing label\n\t\t\t\tlabel.html(message);\n\t\t\t} else {\n\t\t\t\t// create label\n\t\t\t\tlabel = $(\"<\" + this.settings.errorElement + \">\")\n\t\t\t\t\t.attr(\"for\", this.idOrName(element))\n\t\t\t\t\t.addClass(this.settings.errorClass)\n\t\t\t\t\t.html(message || \"\");\n\t\t\t\tif ( this.settings.wrapper ) {\n\t\t\t\t\t// make sure the element is visible, even in IE\n\t\t\t\t\t// actually showing the wrapped element is handled elsewhere\n\t\t\t\t\tlabel = label.hide().show().wrap(\"<\" + this.settings.wrapper + \"/>\").parent();\n\t\t\t\t}\n\t\t\t\tif ( !this.labelContainer.append(label).length ) {\n\t\t\t\t\tif ( this.settings.errorPlacement ) {\n\t\t\t\t\t\tthis.settings.errorPlacement(label, $(element) );\n\t\t\t\t\t} else {\n\t\t\t\t\t\tlabel.insertAfter(element);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\tif ( !message && this.settings.success ) {\n\t\t\t\tlabel.text(\"\");\n\t\t\t\tif ( typeof this.settings.success === \"string\" ) {\n\t\t\t\t\tlabel.addClass( this.settings.success );\n\t\t\t\t} else {\n\t\t\t\t\tthis.settings.success( label, element );\n\t\t\t\t}\n\t\t\t}\n\t\t\tthis.toShow = this.toShow.add(label);\n\t\t},\n\n\t\terrorsFor: function( element ) {\n\t\t\tvar name = this.idOrName(element);\n\t\t\treturn this.errors().filter(function() {\n\t\t\t\treturn $(this).attr(\"for\") === name;\n\t\t\t});\n\t\t},\n\n\t\tidOrName: function( element ) {\n\t\t\treturn this.groups[element.name] || (this.checkable(element) ? element.name : element.id || element.name);\n\t\t},\n\n\t\tvalidationTargetFor: function( element ) {\n\t\t\t// if radio/checkbox, validate first element in group instead\n\t\t\tif ( this.checkable(element) ) {\n\t\t\t\telement = this.findByName( element.name ).not(this.settings.ignore)[0];\n\t\t\t}\n\t\t\treturn element;\n\t\t},\n\n\t\tcheckable: function( element ) {\n\t\t\treturn (/radio|checkbox/i).test(element.type);\n\t\t},\n\n\t\tfindByName: function( name ) {\n\t\t\treturn $(this.currentForm).find(\"[name='\" + name + \"']\");\n\t\t},\n\n\t\tgetLength: function( value, element ) {\n\t\t\tswitch( element.nodeName.toLowerCase() ) {\n\t\t\tcase \"select\":\n\t\t\t\treturn $(\"option:selected\", element).length;\n\t\t\tcase \"input\":\n\t\t\t\tif ( this.checkable( element) ) {\n\t\t\t\t\treturn this.findByName(element.name).filter(\":checked\").length;\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn value.length;\n\t\t},\n\n\t\tdepend: function( param, element ) {\n\t\t\treturn this.dependTypes[typeof param] ? this.dependTypes[typeof param](param, element) : true;\n\t\t},\n\n\t\tdependTypes: {\n\t\t\t\"boolean\": function( param, element ) {\n\t\t\t\treturn param;\n\t\t\t},\n\t\t\t\"string\": function( param, element ) {\n\t\t\t\treturn !!$(param, element.form).length;\n\t\t\t},\n\t\t\t\"function\": function( param, element ) {\n\t\t\t\treturn param(element);\n\t\t\t}\n\t\t},\n\n\t\toptional: function( element ) {\n\t\t\tvar val = this.elementValue(element);\n\t\t\treturn !$.validator.methods.required.call(this, val, element) && \"dependency-mismatch\";\n\t\t},\n\n\t\tstartRequest: function( element ) {\n\t\t\tif ( !this.pending[element.name] ) {\n\t\t\t\tthis.pendingRequest++;\n\t\t\t\tthis.pending[element.name] = true;\n\t\t\t}\n\t\t},\n\n\t\tstopRequest: function( element, valid ) {\n\t\t\tthis.pendingRequest--;\n\t\t\t// sometimes synchronization fails, make sure pendingRequest is never < 0\n\t\t\tif ( this.pendingRequest < 0 ) {\n\t\t\t\tthis.pendingRequest = 0;\n\t\t\t}\n\t\t\tdelete this.pending[element.name];\n\t\t\tif ( valid && this.pendingRequest === 0 && this.formSubmitted && this.form() ) {\n\t\t\t\t$(this.currentForm).submit();\n\t\t\t\tthis.formSubmitted = false;\n\t\t\t} else if (!valid && this.pendingRequest === 0 && this.formSubmitted) {\n\t\t\t\t$(this.currentForm).triggerHandler(\"invalid-form\", [this]);\n\t\t\t\tthis.formSubmitted = false;\n\t\t\t}\n\t\t},\n\n\t\tpreviousValue: function( element ) {\n\t\t\treturn $.data(element, \"previousValue\") || $.data(element, \"previousValue\", {\n\t\t\t\told: null,\n\t\t\t\tvalid: true,\n\t\t\t\tmessage: this.defaultMessage( element, \"remote\" )\n\t\t\t});\n\t\t}\n\n\t},\n\n\tclassRuleSettings: {\n\t\trequired: {required: true},\n\t\temail: {email: true},\n\t\turl: {url: true},\n\t\tdate: {date: true},\n\t\tdateISO: {dateISO: true},\n\t\tnumber: {number: true},\n\t\tdigits: {digits: true},\n\t\tcreditcard: {creditcard: true}\n\t},\n\n\taddClassRules: function( className, rules ) {\n\t\tif ( className.constructor === String ) {\n\t\t\tthis.classRuleSettings[className] = rules;\n\t\t} else {\n\t\t\t$.extend(this.classRuleSettings, className);\n\t\t}\n\t},\n\n\tclassRules: function( element ) {\n\t\tvar rules = {};\n\t\tvar classes = $(element).attr(\"class\");\n\t\tif ( classes ) {\n\t\t\t$.each(classes.split(\" \"), function() {\n\t\t\t\tif ( this in $.validator.classRuleSettings ) {\n\t\t\t\t\t$.extend(rules, $.validator.classRuleSettings[this]);\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\t\treturn rules;\n\t},\n\n\tattributeRules: function( element ) {\n\t\tvar rules = {};\n\t\tvar $element = $(element);\n\t\tvar type = $element[0].getAttribute(\"type\");\n\n\t\tfor (var method in $.validator.methods) {\n\t\t\tvar value;\n\n\t\t\t// support for in both html5 and older browsers\n\t\t\tif ( method === \"required\" ) {\n\t\t\t\tvalue = $element.get(0).getAttribute(method);\n\t\t\t\t// Some browsers return an empty string for the required attribute\n\t\t\t\t// and non-HTML5 browsers might have required=\"\" markup\n\t\t\t\tif ( value === \"\" ) {\n\t\t\t\t\tvalue = true;\n\t\t\t\t}\n\t\t\t\t// force non-HTML5 browsers to return bool\n\t\t\t\tvalue = !!value;\n\t\t\t} else {\n\t\t\t\tvalue = $element.attr(method);\n\t\t\t}\n\n\t\t\t// convert the value to a number for number inputs, and for text for backwards compability\n\t\t\t// allows type=\"date\" and others to be compared as strings\n\t\t\tif ( /min|max/.test( method ) && ( type === null || /number|range|text/.test( type ) ) ) {\n\t\t\t\tvalue = Number(value);\n\t\t\t}\n\n\t\t\tif ( value ) {\n\t\t\t\trules[method] = value;\n\t\t\t} else if ( type === method && type !== 'range' ) {\n\t\t\t\t// exception: the jquery validate 'range' method\n\t\t\t\t// does not test for the html5 'range' type\n\t\t\t\trules[method] = true;\n\t\t\t}\n\t\t}\n\n\t\t// maxlength may be returned as -1, 2147483647 (IE) and 524288 (safari) for text inputs\n\t\tif ( rules.maxlength && /-1|2147483647|524288/.test(rules.maxlength) ) {\n\t\t\tdelete rules.maxlength;\n\t\t}\n\n\t\treturn rules;\n\t},\n\n\tdataRules: function( element ) {\n\t\tvar method, value,\n\t\t\trules = {}, $element = $(element);\n\t\tfor (method in $.validator.methods) {\n\t\t\tvalue = $element.data(\"rule-\" + method.toLowerCase());\n\t\t\tif ( value !== undefined ) {\n\t\t\t\trules[method] = value;\n\t\t\t}\n\t\t}\n\t\treturn rules;\n\t},\n\n\tstaticRules: function( element ) {\n\t\tvar rules = {};\n\t\tvar validator = $.data(element.form, \"validator\");\n\t\tif ( validator.settings.rules ) {\n\t\t\trules = $.validator.normalizeRule(validator.settings.rules[element.name]) || {};\n\t\t}\n\t\treturn rules;\n\t},\n\n\tnormalizeRules: function( rules, element ) {\n\t\t// handle dependency check\n\t\t$.each(rules, function( prop, val ) {\n\t\t\t// ignore rule when param is explicitly false, eg. required:false\n\t\t\tif ( val === false ) {\n\t\t\t\tdelete rules[prop];\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tif ( val.param || val.depends ) {\n\t\t\t\tvar keepRule = true;\n\t\t\t\tswitch (typeof val.depends) {\n\t\t\t\tcase \"string\":\n\t\t\t\t\tkeepRule = !!$(val.depends, element.form).length;\n\t\t\t\t\tbreak;\n\t\t\t\tcase \"function\":\n\t\t\t\t\tkeepRule = val.depends.call(element, element);\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t\tif ( keepRule ) {\n\t\t\t\t\trules[prop] = val.param !== undefined ? val.param : true;\n\t\t\t\t} else {\n\t\t\t\t\tdelete rules[prop];\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\n\t\t// evaluate parameters\n\t\t$.each(rules, function( rule, parameter ) {\n\t\t\trules[rule] = $.isFunction(parameter) ? parameter(element) : parameter;\n\t\t});\n\n\t\t// clean number parameters\n\t\t$.each(['minlength', 'maxlength'], function() {\n\t\t\tif ( rules[this] ) {\n\t\t\t\trules[this] = Number(rules[this]);\n\t\t\t}\n\t\t});\n\t\t$.each(['rangelength', 'range'], function() {\n\t\t\tvar parts;\n\t\t\tif ( rules[this] ) {\n\t\t\t\tif ( $.isArray(rules[this]) ) {\n\t\t\t\t\trules[this] = [Number(rules[this][0]), Number(rules[this][1])];\n\t\t\t\t} else if ( typeof rules[this] === \"string\" ) {\n\t\t\t\t\tparts = rules[this].split(/[\\s,]+/);\n\t\t\t\t\trules[this] = [Number(parts[0]), Number(parts[1])];\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\n\t\tif ( $.validator.autoCreateRanges ) {\n\t\t\t// auto-create ranges\n\t\t\tif ( rules.min && rules.max ) {\n\t\t\t\trules.range = [rules.min, rules.max];\n\t\t\t\tdelete rules.min;\n\t\t\t\tdelete rules.max;\n\t\t\t}\n\t\t\tif ( rules.minlength && rules.maxlength ) {\n\t\t\t\trules.rangelength = [rules.minlength, rules.maxlength];\n\t\t\t\tdelete rules.minlength;\n\t\t\t\tdelete rules.maxlength;\n\t\t\t}\n\t\t}\n\n\t\treturn rules;\n\t},\n\n\t// Converts a simple string to a {string: true} rule, e.g., \"required\" to {required:true}\n\tnormalizeRule: function( data ) {\n\t\tif ( typeof data === \"string\" ) {\n\t\t\tvar transformed = {};\n\t\t\t$.each(data.split(/\\s/), function() {\n\t\t\t\ttransformed[this] = true;\n\t\t\t});\n\t\t\tdata = transformed;\n\t\t}\n\t\treturn data;\n\t},\n\n\t// http://docs.jquery.com/Plugins/Validation/Validator/addMethod\n\taddMethod: function( name, method, message ) {\n\t\t$.validator.methods[name] = method;\n\t\t$.validator.messages[name] = message !== undefined ? message : $.validator.messages[name];\n\t\tif ( method.length < 3 ) {\n\t\t\t$.validator.addClassRules(name, $.validator.normalizeRule(name));\n\t\t}\n\t},\n\n\tmethods: {\n\n\t\t// http://docs.jquery.com/Plugins/Validation/Methods/required\n\t\trequired: function( value, element, param ) {\n\t\t\t// check if dependency is met\n\t\t\tif ( !this.depend(param, element) ) {\n\t\t\t\treturn \"dependency-mismatch\";\n\t\t\t}\n\t\t\tif ( element.nodeName.toLowerCase() === \"select\" ) {\n\t\t\t\t// could be an array for select-multiple or a string, both are fine this way\n\t\t\t\tvar val = $(element).val();\n\t\t\t\treturn val && val.length > 0;\n\t\t\t}\n\t\t\tif ( this.checkable(element) ) {\n\t\t\t\treturn this.getLength(value, element) > 0;\n\t\t\t}\n\t\t\treturn $.trim(value).length > 0;\n\t\t},\n\n\t\t// http://docs.jquery.com/Plugins/Validation/Methods/email\n\t\temail: function( value, element ) {\n\t\t\t// contributed by Scott Gonzalez: http://projects.scottsplayground.com/email_address_validation/\n\t\t\treturn this.optional(element) || /^((([a-z]|\\d|[!#\\$%&'\\*\\+\\-\\/=\\?\\^_`{\\|}~]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])+(\\.([a-z]|\\d|[!#\\$%&'\\*\\+\\-\\/=\\?\\^_`{\\|}~]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])+)*)|((\\x22)((((\\x20|\\x09)*(\\x0d\\x0a))?(\\x20|\\x09)+)?(([\\x01-\\x08\\x0b\\x0c\\x0e-\\x1f\\x7f]|\\x21|[\\x23-\\x5b]|[\\x5d-\\x7e]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])|(\\\\([\\x01-\\x09\\x0b\\x0c\\x0d-\\x7f]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF]))))*(((\\x20|\\x09)*(\\x0d\\x0a))?(\\x20|\\x09)+)?(\\x22)))@((([a-z]|\\d|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])|(([a-z]|\\d|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])([a-z]|\\d|-|\\.|_|~|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])*([a-z]|\\d|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])))\\.)+(([a-z]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])|(([a-z]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])([a-z]|\\d|-|\\.|_|~|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])*([a-z]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])))$/i.test(value);\n\t\t},\n\n\t\t// http://docs.jquery.com/Plugins/Validation/Methods/url\n\t\turl: function( value, element ) {\n\t\t\t// contributed by Scott Gonzalez: http://projects.scottsplayground.com/iri/\n\t\t\treturn this.optional(element) || /^(https?|s?ftp):\\/\\/(((([a-z]|\\d|-|\\.|_|~|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])|(%[\\da-f]{2})|[!\\$&'\\(\\)\\*\\+,;=]|:)*@)?(((\\d|[1-9]\\d|1\\d\\d|2[0-4]\\d|25[0-5])\\.(\\d|[1-9]\\d|1\\d\\d|2[0-4]\\d|25[0-5])\\.(\\d|[1-9]\\d|1\\d\\d|2[0-4]\\d|25[0-5])\\.(\\d|[1-9]\\d|1\\d\\d|2[0-4]\\d|25[0-5]))|((([a-z]|\\d|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])|(([a-z]|\\d|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])([a-z]|\\d|-|\\.|_|~|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])*([a-z]|\\d|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])))\\.)+(([a-z]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])|(([a-z]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])([a-z]|\\d|-|\\.|_|~|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])*([a-z]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])))\\.?)(:\\d*)?)(\\/((([a-z]|\\d|-|\\.|_|~|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])|(%[\\da-f]{2})|[!\\$&'\\(\\)\\*\\+,;=]|:|@)+(\\/(([a-z]|\\d|-|\\.|_|~|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])|(%[\\da-f]{2})|[!\\$&'\\(\\)\\*\\+,;=]|:|@)*)*)?)?(\\?((([a-z]|\\d|-|\\.|_|~|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])|(%[\\da-f]{2})|[!\\$&'\\(\\)\\*\\+,;=]|:|@)|[\\uE000-\\uF8FF]|\\/|\\?)*)?(#((([a-z]|\\d|-|\\.|_|~|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])|(%[\\da-f]{2})|[!\\$&'\\(\\)\\*\\+,;=]|:|@)|\\/|\\?)*)?$/i.test(value);\n\t\t},\n\n\t\t// http://docs.jquery.com/Plugins/Validation/Methods/date\n\t\tdate: function( value, element ) {\n\t\t\treturn this.optional(element) || !/Invalid|NaN/.test(new Date(value).toString());\n\t\t},\n\n\t\t// http://docs.jquery.com/Plugins/Validation/Methods/dateISO\n\t\tdateISO: function( value, element ) {\n\t\t\treturn this.optional(element) || /^\\d{4}[\\/\\-]\\d{1,2}[\\/\\-]\\d{1,2}$/.test(value);\n\t\t},\n\n\t\t// http://docs.jquery.com/Plugins/Validation/Methods/number\n\t\tnumber: function( value, element ) {\n\t\t\treturn this.optional(element) || /^-?(?:\\d+|\\d{1,3}(?:,\\d{3})+)?(?:\\.\\d+)?$/.test(value);\n\t\t},\n\n\t\t// http://docs.jquery.com/Plugins/Validation/Methods/digits\n\t\tdigits: function( value, element ) {\n\t\t\treturn this.optional(element) || /^\\d+$/.test(value);\n\t\t},\n\n\t\t// http://docs.jquery.com/Plugins/Validation/Methods/creditcard\n\t\t// based on http://en.wikipedia.org/wiki/Luhn\n\t\tcreditcard: function( value, element ) {\n\t\t\tif ( this.optional(element) ) {\n\t\t\t\treturn \"dependency-mismatch\";\n\t\t\t}\n\t\t\t// accept only spaces, digits and dashes\n\t\t\tif ( /[^0-9 \\-]+/.test(value) ) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t\tvar nCheck = 0,\n\t\t\t\tnDigit = 0,\n\t\t\t\tbEven = false;\n\n\t\t\tvalue = value.replace(/\\D/g, \"\");\n\n\t\t\tfor (var n = value.length - 1; n >= 0; n--) {\n\t\t\t\tvar cDigit = value.charAt(n);\n\t\t\t\tnDigit = parseInt(cDigit, 10);\n\t\t\t\tif ( bEven ) {\n\t\t\t\t\tif ( (nDigit *= 2) > 9 ) {\n\t\t\t\t\t\tnDigit -= 9;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tnCheck += nDigit;\n\t\t\t\tbEven = !bEven;\n\t\t\t}\n\n\t\t\treturn (nCheck % 10) === 0;\n\t\t},\n\n\t\t// http://docs.jquery.com/Plugins/Validation/Methods/minlength\n\t\tminlength: function( value, element, param ) {\n\t\t\tvar length = $.isArray( value ) ? value.length : this.getLength($.trim(value), element);\n\t\t\treturn this.optional(element) || length >= param;\n\t\t},\n\n\t\t// http://docs.jquery.com/Plugins/Validation/Methods/maxlength\n\t\tmaxlength: function( value, element, param ) {\n\t\t\tvar length = $.isArray( value ) ? value.length : this.getLength($.trim(value), element);\n\t\t\treturn this.optional(element) || length <= param;\n\t\t},\n\n\t\t// http://docs.jquery.com/Plugins/Validation/Methods/rangelength\n\t\trangelength: function( value, element, param ) {\n\t\t\tvar length = $.isArray( value ) ? value.length : this.getLength($.trim(value), element);\n\t\t\treturn this.optional(element) || ( length >= param[0] && length <= param[1] );\n\t\t},\n\n\t\t// http://docs.jquery.com/Plugins/Validation/Methods/min\n\t\tmin: function( value, element, param ) {\n\t\t\treturn this.optional(element) || value >= param;\n\t\t},\n\n\t\t// http://docs.jquery.com/Plugins/Validation/Methods/max\n\t\tmax: function( value, element, param ) {\n\t\t\treturn this.optional(element) || value <= param;\n\t\t},\n\n\t\t// http://docs.jquery.com/Plugins/Validation/Methods/range\n\t\trange: function( value, element, param ) {\n\t\t\treturn this.optional(element) || ( value >= param[0] && value <= param[1] );\n\t\t},\n\n\t\t// http://docs.jquery.com/Plugins/Validation/Methods/equalTo\n\t\tequalTo: function( value, element, param ) {\n\t\t\t// bind to the blur event of the target in order to revalidate whenever the target field is updated\n\t\t\t// TODO find a way to bind the event just once, avoiding the unbind-rebind overhead\n\t\t\tvar target = $(param);\n\t\t\tif ( this.settings.onfocusout ) {\n\t\t\t\ttarget.unbind(\".validate-equalTo\").bind(\"blur.validate-equalTo\", function() {\n\t\t\t\t\t$(element).valid();\n\t\t\t\t});\n\t\t\t}\n\t\t\treturn value === target.val();\n\t\t},\n\n\t\t// http://docs.jquery.com/Plugins/Validation/Methods/remote\n\t\tremote: function( value, element, param ) {\n\t\t\tif ( this.optional(element) ) {\n\t\t\t\treturn \"dependency-mismatch\";\n\t\t\t}\n\n\t\t\tvar previous = this.previousValue(element);\n\t\t\tif (!this.settings.messages[element.name] ) {\n\t\t\t\tthis.settings.messages[element.name] = {};\n\t\t\t}\n\t\t\tprevious.originalMessage = this.settings.messages[element.name].remote;\n\t\t\tthis.settings.messages[element.name].remote = previous.message;\n\n\t\t\tparam = typeof param === \"string\" && {url:param} || param;\n\n\t\t\tif ( previous.old === value ) {\n\t\t\t\treturn previous.valid;\n\t\t\t}\n\n\t\t\tprevious.old = value;\n\t\t\tvar validator = this;\n\t\t\tthis.startRequest(element);\n\t\t\tvar data = {};\n\t\t\tdata[element.name] = value;\n\t\t\t$.ajax($.extend(true, {\n\t\t\t\turl: param,\n\t\t\t\tmode: \"abort\",\n\t\t\t\tport: \"validate\" + element.name,\n\t\t\t\tdataType: \"json\",\n\t\t\t\tdata: data,\n\t\t\t\tsuccess: function( response ) {\n\t\t\t\t\tvalidator.settings.messages[element.name].remote = previous.originalMessage;\n\t\t\t\t\tvar valid = response === true || response === \"true\";\n\t\t\t\t\tif ( valid ) {\n\t\t\t\t\t\tvar submitted = validator.formSubmitted;\n\t\t\t\t\t\tvalidator.prepareElement(element);\n\t\t\t\t\t\tvalidator.formSubmitted = submitted;\n\t\t\t\t\t\tvalidator.successList.push(element);\n\t\t\t\t\t\tdelete validator.invalid[element.name];\n\t\t\t\t\t\tvalidator.showErrors();\n\t\t\t\t\t} else {\n\t\t\t\t\t\tvar errors = {};\n\t\t\t\t\t\tvar message = response || validator.defaultMessage( element, \"remote\" );\n\t\t\t\t\t\terrors[element.name] = previous.message = $.isFunction(message) ? message(value) : message;\n\t\t\t\t\t\tvalidator.invalid[element.name] = true;\n\t\t\t\t\t\tvalidator.showErrors(errors);\n\t\t\t\t\t}\n\t\t\t\t\tprevious.valid = valid;\n\t\t\t\t\tvalidator.stopRequest(element, valid);\n\t\t\t\t}\n\t\t\t}, param));\n\t\t\treturn \"pending\";\n\t\t}\n\n\t}\n\n});\n\n// deprecated, use $.validator.format instead\n$.format = $.validator.format;\n\n}(jQuery));\n\n// ajax mode: abort\n// usage: $.ajax({ mode: \"abort\"[, port: \"uniqueport\"]});\n// if mode:\"abort\" is used, the previous request on that port (port can be undefined) is aborted via XMLHttpRequest.abort()\n(function($) {\n\tvar pendingRequests = {};\n\t// Use a prefilter if available (1.5+)\n\tif ( $.ajaxPrefilter ) {\n\t\t$.ajaxPrefilter(function( settings, _, xhr ) {\n\t\t\tvar port = settings.port;\n\t\t\tif ( settings.mode === \"abort\" ) {\n\t\t\t\tif ( pendingRequests[port] ) {\n\t\t\t\t\tpendingRequests[port].abort();\n\t\t\t\t}\n\t\t\t\tpendingRequests[port] = xhr;\n\t\t\t}\n\t\t});\n\t} else {\n\t\t// Proxy ajax\n\t\tvar ajax = $.ajax;\n\t\t$.ajax = function( settings ) {\n\t\t\tvar mode = ( \"mode\" in settings ? settings : $.ajaxSettings ).mode,\n\t\t\t\tport = ( \"port\" in settings ? settings : $.ajaxSettings ).port;\n\t\t\tif ( mode === \"abort\" ) {\n\t\t\t\tif ( pendingRequests[port] ) {\n\t\t\t\t\tpendingRequests[port].abort();\n\t\t\t\t}\n\t\t\t\tpendingRequests[port] = ajax.apply(this, arguments);\n\t\t\t\treturn pendingRequests[port];\n\t\t\t}\n\t\t\treturn ajax.apply(this, arguments);\n\t\t};\n\t}\n}(jQuery));\n\n// provides delegate(type: String, delegate: Selector, handler: Callback) plugin for easier event delegation\n// handler is only called when $(event.target).is(delegate), in the scope of the jquery-object for event.target\n(function($) {\n\t$.extend($.fn, {\n\t\tvalidateDelegate: function( delegate, type, handler ) {\n\t\t\treturn this.bind(type, function( event ) {\n\t\t\t\tvar target = $(event.target);\n\t\t\t\tif ( target.is(delegate) ) {\n\t\t\t\t\treturn handler.apply(target, arguments);\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\t});\n}(jQuery));\n","var CSSCONSTANTS = CSSCONSTANTS || {};\r\n\r\n(function () {\r\n\r\n /* mobile max width */\r\n CSSCONSTANTS.mobileMaxWidth = '600px';\r\n CSSCONSTANTS.mobileMaxWidthMQ = 'screen and (max-width: ' + CSSCONSTANTS.mobileMaxWidth + ')';\r\n\r\n /* non mobile min width */\r\n CSSCONSTANTS.nonMobileMinWidth = '601px';\r\n CSSCONSTANTS.nonMobileMinWidthMQ = 'screen and (min-width: ' + CSSCONSTANTS.nonMobileMinWidth + ')';\r\n\r\n /* mobile global header max width */\r\n CSSCONSTANTS.mobileHeaderMaxWidth = '800px';\r\n CSSCONSTANTS.mobileHeaderMaxWidthMQ = 'screen and (max-width: ' + CSSCONSTANTS.mobileHeaderMaxWidth + ')';\r\n\r\n /* non mobile global header min width */\r\n CSSCONSTANTS.nonMobileHeaderMinWidth = '801px';\r\n CSSCONSTANTS.nonMobileHeaderMinWidthMQ = 'screen and (min-width: ' + CSSCONSTANTS.nonMobileHeaderMinWidth + ')';\r\n\r\n /* non desktop (inc. tablet) max width */\r\n CSSCONSTANTS.nonDesktopMaxWidth = '900px';\r\n CSSCONSTANTS.nonDesktopMaxWidthMQ = 'screen and (max-width: ' + CSSCONSTANTS.nonDesktopMaxWidth + ')';\r\n\r\n /* desktop min width */\r\n CSSCONSTANTS.desktopMinWidth = '901px';\r\n CSSCONSTANTS.desktopMinWidthMQ = 'screen and (min-width: ' + CSSCONSTANTS.desktopMinWidth + ')';\r\n\r\n /* hidden */\r\n CSSCONSTANTS.hiddenClass = 'hidden';\r\n CSSCONSTANTS.hiddenMobileOnlyClass = 'hidden-mobile-only';\r\n CSSCONSTANTS.hiddenTabletAndMobileClass = 'hidden-tablet-and-mobile';\r\n\r\n /* colours */\r\n CSSCONSTANTS.backgroundBlueClass = 'bg-blue';\r\n CSSCONSTANTS.backgroundPastel2Class = 'bg-pastel2';\r\n\r\n /* grid */\r\n CSSCONSTANTS.bandClass = 'band';\r\n CSSCONSTANTS.noBottomPaddingClass = 'no-bottom-padding';\r\n CSSCONSTANTS.rowClass = 'row';\r\n CSSCONSTANTS.columnClass = 'col';\r\n CSSCONSTANTS.scaffoldClass = 'scaffold';\r\n CSSCONSTANTS.gridUnit = 20;\r\n CSSCONSTANTS.buttonClass = 'btn';\r\n CSSCONSTANTS.boxClass = 'box';\r\n CSSCONSTANTS.reverseClass = 'reverse';\r\n\r\n /* buttons */\r\n CSSCONSTANTS.btnClass = 'btn';\r\n CSSCONSTANTS.btnBlueClass = 'btn--blue';\r\n CSSCONSTANTS.btnGreenClass = 'btn--green';\r\n\r\n /* forms - used by _partials/Forms/errorIndication.js */\r\n CSSCONSTANTS.formRowClass = 'form-row';\r\n CSSCONSTANTS.errorMessageClass = 'error-message';\r\n CSSCONSTANTS.labelErrorClass = 'label-error';\r\n CSSCONSTANTS.fieldErrorClass = 'field-error';\r\n\r\n /* replaced inputs - used by Carfused and Products */\r\n CSSCONSTANTS.replacedInputClass = 'replaced-input';\r\n CSSCONSTANTS.replacedInputLabelClass = 'replaced-input-label';\r\n CSSCONSTANTS.replacedInputLabelFocussedClass = 'replaced-input-label--focussed';\r\n CSSCONSTANTS.replacedInputLabelSelectedClass = 'replaced-input-label--selected';\r\n\r\n\r\n})();","var CONFUSEDCORE = CONFUSEDCORE || {};\r\nCONFUSEDCORE.AJAX = CONFUSEDCORE.AJAX || {};\r\n\r\n//@desc: acts as a wrapper to jQuery's ajax call\r\nCONFUSEDCORE.AJAX.Ajaxfacade = (function($){\r\n\r\n\tfunction userIsLoggedIn(response){\r\n\t\tif(response && response.Authenticated === false){\r\n\t\t\t//force page refresh to re-authenticate\r\n\t\t\twindow.location.reload();\r\n\t\t\treturn false;\r\n\t\t}\r\n\r\n\t\treturn true;\r\n\t}\r\n\r\n\tfunction error(options, xhr, textStatus, errorThrown){\r\n\t\tif(!options) { return; }\r\n\r\n\t\tif(options.error) {\r\n\t\t\toptions.error(xhr, textStatus, errorThrown);\r\n\t\t}\r\n\t}\r\n\r\n\treturn {\r\n\r\n\t\t/*\r\n\t\t@desc: posts data to the specified url\r\n\t\t@param options:\r\n\t\t@param options.success: the success callback\r\n\t\t@param options.error: the error callback\r\n\t\t@param options.timeout: the timeout callback\r\n\t\t@param options.requiresAuthentication: if true, checks authentication status and redirects if logged out\r\n\t\t@param options.async: whether to post asynchronously, default: true\r\n @param options.dataType: json, html etc.\r\n @param options.wrappedResponse: whether the response will be wrapped in a JsonResponse or not\r\n\t\t@param data: the data to pass through in the post\r\n\t\t */\r\n\t\tpost: function(url, options, data) {\r\n\r\n\t\t\tif(!options.timeoutInterval){\r\n\t\t\t\t//if it hasn't been specified then set it to 5s\r\n\t\t\t\toptions.timeoutInterval = 5000; \t\t\t\t\r\n\t\t\t}\r\n\r\n\t\t\tif(options.async === null || options.async === undefined){\r\n\t\t\t\t//default to true\r\n\t\t\t\toptions.async = true;\r\n\t\t\t}\r\n\r\n\t\t\tif (!options.dataType) {\r\n\t\t\t options.dataType = 'json';\r\n\t\t\t}\r\n\t\t\tif (options.wrappedResponse === undefined) {\r\n\t\t\t options.wrappedResponse = true;\r\n\t\t\t}\r\n\r\n\r\n\t\t\t$.ajax({\r\n\t\t\t\ttype: 'POST',\r\n\t\t\t\turl: url,\r\n\t\t\t\tdata: data,\r\n\t\t\t\tdataType: options.dataType,\r\n\t\t\t\ttimeout: options.timeoutInterval, // in milliseconds\r\n\t\t\t\tasync: options.async,\r\n\t\t\t\tsuccess: function (response) {\r\n\t\t\t\t if (response !== null && response !== undefined) {\r\n\t\t\t\t var redirect = null;\r\n if (response.hasOwnProperty('redirect')) {\r\n redirect = response.redirect; //returned from a session timeout in a call expecting JSON, for example\r\n } else if (response.toString().indexOf('redirect') >= 0) {\r\n try {\r\n redirect = JSON.parse(response).redirect; //returned from a session timeout in a call expecting HTML, for example\r\n } catch (e) {}\r\n }\r\n if (redirect !== null) {\r\n //AJAX call returned a redirect. Redirect the window to the redirect location\r\n document.location = redirect;\r\n return;\r\n }\r\n\t\t\t\t }\r\n\t\t\t\t if (options.wrappedResponse) {\r\n\t\t\t\t if (!response || response.Status !== 'ok') {\r\n\t\t\t\t error(options);\r\n\t\t\t\t return;\r\n\t\t\t\t }\r\n\r\n\t\t\t\t if (!options) {\r\n\t\t\t\t return;\r\n\t\t\t\t }\r\n\r\n\t\t\t\t if (options.requiresAuthentication) {\r\n\t\t\t\t if (!userIsLoggedIn(response)) {\r\n\t\t\t\t return;\r\n\t\t\t\t }\r\n\t\t\t\t }\r\n\r\n\t\t\t\t if (options.success) {\r\n\t\t\t\t options.success(response.Data);\r\n\t\t\t\t }\r\n\t\t\t\t } else {\r\n\t\t\t\t options.success(response);\r\n\t\t\t\t }\r\n\t\t\t\t},\r\n\t\t\t\terror: function(xhr, textStatus, errorThrown) {\r\n\t\t\t\t\tif(textStatus === 'timeout' && options && options.timeout){\r\n\t\t\t\t\t\toptions.timeout();\r\n\t\t\t\t\t\treturn;\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\terror(options, xhr, textStatus, errorThrown);\r\n\t\t\t\t},\r\n\t\t\t\tcomplete: function () {\r\n\t\t\t\t if (typeof options.complete !== 'undefined') {\r\n\t\t\t\t options.complete();\r\n\t\t\t\t }\r\n }\r\n\t\t\t});\t\t\r\n\r\n\t\t},\r\n\r\n\t\t/*\r\n\t\t@desc: posts data to the specified url. The user must be authenticated\r\n\t\t@param options:\r\n\t\t@param options.success: the success callback\r\n\t\t@param options.error: the error callback\r\n\t\t@param options.async: whether to post asynchronously, default: true\r\n\t\t@param data: the data to pass through in the post\r\n\t\t */\r\n\t\tpostAuthenticated: function (url, options, data) {\r\n if (!options) {\r\n options = {};\r\n }\r\n\r\n\t\t\toptions.requiresAuthentication = true;\r\n\t\t\tthis.post(url, options, data);\r\n\t\t}\r\n\r\n\t};\r\n\r\n}(window.jQuery));","var CONFUSEDCORE = CONFUSEDCORE || {};\r\nCONFUSEDCORE.HELPERS = CONFUSEDCORE.HELPERS || {};\r\n\r\n/*\r\n@desc: Redirect Helper\r\n */ \r\nCONFUSEDCORE.HELPERS.RedirectHelper = (function(){\r\n\r\n\treturn {\r\n\t\tredirect: function(url){\r\n\t\t\twindow.location.href = url;\r\n\t\t}\r\n\t};\r\n\r\n})();","/*Version added for use only by CMSv2 */\r\n\r\nvar CONFUSEDCORE = CONFUSEDCORE || {};\r\nCONFUSEDCORE.MI = CONFUSEDCORE.MI || {};\r\n\r\n/*\r\n@desc: a listener for management information events\r\n\t\tthis listener will run itself\r\n */\r\nCONFUSEDCORE.MI.MiListener = (function ($, ajaxFacade) {\r\n var options = {\r\n //The URL to post the MI event to\r\n MI_EVENT_URL: 'miv2/event',\r\n MI_PAGEVIEW_URL: 'miv2/pageview',\r\n MI_NEWSESSION_URL: 'miv2/newsession',\r\n };\r\n\r\n function doPost(miUrl, miObject, callback, errorCallback) {\r\n var url = window.location.protocol + '//' + window.location.host + '/' + miUrl;\r\n ajaxFacade.post(url, {\r\n success: function (data) {\r\n if (callback) {\r\n callback();\r\n }\r\n },\r\n error: function () {\r\n if (errorCallback) {\r\n errorCallback();\r\n }\r\n }\r\n }, miObject);\r\n }\r\n\r\n function postEvent(eventType, eventInfo, callback, errorCallback) {\r\n doPost(options.MI_EVENT_URL,\r\n {\r\n EventType: eventType,\r\n EventInfo: eventInfo\r\n }, callback, errorCallback);\r\n\r\n }\r\n\r\n function postPageView(eventType, eventInfo, callback, errorCallback) {\r\n doPost(options.MI_PAGEVIEW_URL,\r\n {\r\n EventType: eventType,\r\n EventInfo: eventInfo\r\n }, callback, errorCallback);\r\n }\r\n\r\n function pageView(pageName) {\r\n postPageView('LogPageView', { page: pageName });\r\n }\r\n\r\n function postLogSession(eventType, eventInfo, callback, errorCallback) {\r\n doPost(options.MI_NEWSESSION_URL, {\r\n EventType: eventType,\r\n EventInfo: eventInfo\r\n },\r\n callback, errorCallback);\r\n }\r\n\r\n return {\r\n /*\r\n @desc: post the MI event\r\n @param: eventType: the event type\r\n @param: eventInfo: the event information object\r\n */\r\n postEvent: postEvent,\r\n postPageView: postPageView,\r\n pageView: pageView,\r\n postLogSession: postLogSession,\r\n\r\n /*\r\n @desc: override the default MI URL\r\n @param: url: the new url\r\n @default: mi/event\r\n */\r\n setMI_URL: function (url) {\r\n options.MI_URL = url;\r\n }\r\n };\r\n}(window.jQuery,\r\n CONFUSEDCORE.AJAX.Ajaxfacade));","var CONFUSEDCORE = CONFUSEDCORE || {},\n CSSCONSTANTS = CSSCONSTANTS || {};\n\n(function ($) {\r\n\n CONFUSEDCORE.addErrorIndication = function (fieldIds) {\r\n\r\n $.each(fieldIds, function (index, fieldId) {\r\n\r\n var $fieldWithError = $('#' + fieldId),\r\n $labelWithError = $('label[for=' + fieldId + ']'),\r\n errorMessageId = fieldId + '-error',\r\n $errorMessage = $('#' + errorMessageId);\r\n\r\n if ($errorMessage.length > 0) {\r\n $errorMessage.addClass(CSSCONSTANTS.errorMessageClass);\r\n $fieldWithError.attr('aria-described-by', errorMessageId);\r\n }\r\n\r\n $fieldWithError.attr('aria-invalid', 'true');\r\n $fieldWithError.addClass(CSSCONSTANTS.fieldErrorClass);\r\n $labelWithError.addClass(CSSCONSTANTS.labelErrorClass);\r\n\r\n });\r\n\r\n };\r\n\r\n CONFUSEDCORE.removeErrorIndication = function (fieldIds) {\r\n\r\n $.each(fieldIds, function (index, fieldId) {\r\n\r\n var $fieldWithError = $('#' + fieldId),\r\n $labelWithError = $('label[for=' + fieldId + ']'),\r\n errorMessageId = fieldId + '-error',\r\n $errorMessage = $('#' + errorMessageId);\r\n\r\n if ($errorMessage.length > 0) {\r\n $errorMessage.removeClass(CSSCONSTANTS.errorMessageClass);\r\n $fieldWithError.removeAttr('aria-described-by');\r\n }\r\n\r\n $fieldWithError.removeAttr('aria-invalid');\r\n $fieldWithError.removeClass(CSSCONSTANTS.fieldErrorClass);\r\n $labelWithError.removeClass(CSSCONSTANTS.labelErrorClass);\r\n\r\n });\r\n\r\n };\r\n \n})(window.jQuery);","var CONFUSEDWEBSITE = CONFUSEDWEBSITE || {};\r\n\r\n (function ($, ctx, google) {\r\n /**\r\n * setup Google custom search\r\n *\r\n * @param {object} searchDetails the search details required for custom search\r\n * @param {string} searchDetails.searchFormId the ID of the search form element\r\n * @param {string} searchDetails.buttonClass a class of the search button element\r\n * @param {string} searchDetails.searchTextId the ID of the search text box element\r\n * @param {string} searchDetails.customSearchKeyId the ID of the custom search key element\r\n **/ \r\n CONFUSEDWEBSITE.setupSearch = function (searchDetails) {\r\n var $search = $('#' + searchDetails.searchFormId),\r\n $button = $('.' + searchDetails.buttonClass, $search),\r\n $searchTextBox = $('#' + searchDetails.searchTextId, $search),\r\n autoCompletionOptions = {\r\n 'maxCompletions': 5,\r\n 'styleOptions': {\r\n 'xOffset': 10\r\n }\r\n };\r\n\r\n function redirectToResultsPage() {\r\n var action = $search.data('action'),\r\n args = [],\r\n query;\r\n\r\n query = $search.find('input[name=\"query\"]').val();\r\n if (query === '')\r\n {\r\n // don't think these will error because jQuery NEVER errors ;-)\r\n $(searchDetails.invalidInputSelector).show();\r\n return;\r\n }\r\n\r\n $(searchDetails.invalidInputSelector).hide();\r\n\r\n $.each(['cx', 'ie', 'sa', 'query'], function (index, value) {\r\n args.push(value + '=' + encodeURIComponent($search.find('input[name=\"' + value + '\"]').val()));\r\n });\r\n ctx.location.href = action + '?' + args.join('&');\r\n }\r\n\r\n if (!google) {\r\n console.log('!google');\r\n return;\r\n }\r\n\r\n function setupSearchAutocomplete() {\r\n google.search.CustomSearchControl.attachAutoCompletionWithOptions(\r\n $('#' + searchDetails.customSearchKeyId).val(),\r\n $('#' + searchDetails.searchTextId)[0],\r\n { 'submit': redirectToResultsPage },\r\n autoCompletionOptions);\r\n }\r\n\r\n if (google.search === undefined || google.search.CustomSearchControl === undefined) {\r\n google.setOnLoadCallback(function () {\r\n setupSearchAutocomplete();\r\n });\r\n } else {\r\n setupSearchAutocomplete();\r\n }\r\n\r\n $(searchDetails.invalidInputSelector).hide();\r\n $button.on('click', function () {\r\n redirectToResultsPage();\r\n return false;\r\n });\r\n\r\n $searchTextBox.on('keyup', function (event) {\r\n if (event.which === 13) { // If user presses the enter key\r\n redirectToResultsPage();\r\n }\r\n return false;\r\n });\r\n };\r\n\r\n\r\n /*\r\n * setup Google custom search results\r\n *\r\n * @param {object} searchResultConfiguration the search details required for custom search\r\n * @param {string} searchResultConfiguration.noResultsH2Selector the selector to grab the no results h2 element\r\n * @param {string} searchResultConfiguration.resultsH2Selector the selector to grab the results h2 element\r\n * @param {string} searchResultConfiguration.resultsSetSize the number of results to display per page\r\n * @param {string} searchResultConfiguration.customSearchKey the ID of the custom search key element \r\n * @param {string} searchResultConfiguration.queryParameter the name of the query parameter to use\r\n */\r\n CONFUSEDWEBSITE.setupSearchResult = function (searchResultConfiguration) {\r\n\r\n function searchCompleteCallback(control, searcher) {\r\n // Show our pre-configured search results message if there are no results. Google's one will be hidden using css\r\n if (typeof (searcher) === 'undefined' || typeof (searcher.results) === 'undefined' || searcher.results.length === 0) {\r\n $(searchResultConfiguration.noResultsH2Selector).css('display', '');\r\n $(searchResultConfiguration.resultsH2Selector).css('display', 'none');\r\n } \r\n }\r\n\r\n function setupSearchResultsCallback() {\r\n var customSearchOptions = {};\r\n var query = '';\r\n\r\n //https://developers.google.com/custom-search/docs/js/cselement-reference#cse-el\r\n var customSearchControl = new google.search.CustomSearchControl(searchResultConfiguration.customSearchKey, customSearchOptions);\r\n\r\n if (searchResultConfiguration.resultsSetSize) {\r\n customSearchControl.setResultSetSize(searchResultConfiguration.resultsSetSize);\r\n } else {\r\n customSearchControl.setResultSetSize(google.search.Search.FILTERED_CSE_RESULTSET);\r\n }\r\n\r\n //customSearchControl.setNoResultsString('No results found.'); // This doesn't seem to work, so it's been removed.\r\n customSearchControl.setLinkTarget(google.search.Search.LINK_TARGET_SELF);\r\n\r\n //the null here can be used we *think* to add in a 'this' context, but we don't need it, so don't pass anything in :-)\r\n customSearchControl.setSearchCompleteCallback(null, searchCompleteCallback);\r\n\r\n /*  Configure options - found documentation below for this...\r\n                https://developers.google.com/custom-search/docs/js/cselement-reference#csedrawoptions-el\r\n            */\r\n var options = new google.search.DrawOptions();\r\n options.setAutoComplete(true);\r\n options.enableSearchResultsOnly();\r\n\r\n customSearchControl.draw($(searchResultConfiguration.resultsSelector)[0].id, options);\r\n\r\n query = CONFUSEDWEBSITE.getUrlVars();\r\n var queryValue = query[searchResultConfiguration.queryParameter];\r\n if (queryValue !== undefined) {\r\n customSearchControl.execute(decodeURIComponent(queryValue).replace(/\\+/g, ' '));\r\n }\r\n }\r\n\r\n // do some type checking here first, no point doing this if we're not setup properly\r\n if (!google) {\r\n return;\r\n }\r\n\r\n if (searchResultConfiguration.customSearchKey === undefined) {\r\n return;\r\n }\r\n\r\n if (!searchResultConfiguration.resultsSelector || !$(searchResultConfiguration.resultsSelector)) {\r\n return;\r\n }\r\n\r\n if (google.search === undefined || google.search.CustomSearchControl === undefined) {\r\n google.setOnLoadCallback(function () {\r\n setupSearchResultsCallback();\r\n }, true);\r\n } else {\r\n setupSearchResultsCallback();\r\n }\r\n\r\n };\r\n\r\n CONFUSEDWEBSITE.getUrlVars = function () {\r\n var vars = [], hash;\r\n var hashes = ctx.location.href.slice(ctx.location.href.indexOf('?') + 1).split('&');\r\n for (var i = 0; i < hashes.length; i++) {\r\n hash = hashes[i].split('=');\r\n vars.push(hash[0]);\r\n vars[hash[0]] = hash[1];\r\n }\r\n return vars;\r\n };\r\n\r\n CONFUSEDWEBSITE.setupSearchResults = function () {\r\n $('.js-searchResultsConfiguration').each(function (index, element) {\r\n /* element.dataset here has the properties from data-attributes, so we expect an element with this class to look like the below: - \r\n data-custom-search-key=\"\"\r\n data-results-set-size=\"10\"\r\n data-no-results-h2-selector=\".js-noResultsH2\"\r\n data-results-h2-selector=\".js-resultsH2\"\r\n data-results-selector=\"#cse\" \r\n data-query-parameter=\"query\" \r\n                */\r\n CONFUSEDWEBSITE.setupSearchResult(element.dataset);\r\n });\r\n };\r\n\r\n CONFUSEDWEBSITE.setupSearchForms = function () {\r\n $('.js-searchFormConfiguration').each(function (index, element) {\r\n /* element.dataset here has the properties from data-attributes, so we expect an element with this class to look like the below: - \r\n data-search-form-id=\"\"\r\n data-button-class=\"contextual-search__submit--searchContact\"\r\n data-search-text-id=\"search-contact-search\"\r\n data-custom-search-key-id=\"query\" \r\n                */\r\n CONFUSEDWEBSITE.setupSearch(element.dataset);\r\n });\r\n };\r\n\r\n})(window.jQuery, window, window.google);","var confused = confused || {};\r\n(function ($) {\r\n confused.quickquote = {\r\n /* get a quick quote 'object'*/\r\n createQuickQuoteConnection: function (options) {\r\n return {\r\n events: $.extend({\r\n url: '',\r\n connected: function () {\r\n },\r\n message: function (activity) {\r\n },\r\n error: function () {\r\n },\r\n complete: function () {\r\n }\r\n }, options),\r\n /* open the connection, the connected event will fire when done */\r\n start: function (jsonData) {\r\n var self = this;\r\n self._connection = $.connection(self.events.url);\r\n self._connection.received(function (data) {\r\n var message = JSON.parse(data);\r\n if (message.HasError != null && message.HasError === true) {\r\n self.events.error();\r\n return;\r\n }\r\n\r\n if (message.Activity != null) {\r\n var activity = message.Activity;\r\n if (activity.Prices != null) {\r\n var prices = activity.Prices;\r\n if (prices.length > 0) {\r\n self.events.message(activity);\r\n }\r\n }\r\n\r\n if (activity.StillWaiting !== true) {\r\n self._connection.stop();\r\n self.events.complete();\r\n }\r\n }\r\n });\r\n self._connection.error(function (data) {\r\n self.events.error(data, -1, -1);\r\n });\r\n self._connection.start().done(function () {\r\n self.events.connected();\r\n self._connection.send(jsonData);\r\n });\r\n },\r\n /* close the current connection */\r\n abort: function () {\r\n this._connection.stop();\r\n }\r\n };\r\n }\r\n };\r\n} (jQuery));","/*\r\n* Adds a CookiePolicyWidget class to the Confused namespace.\r\n* Implemented as IIFE so we can pass in references to the global jQuery, window and document objects.\r\n* Note: Depends on _partials/Common/v1.0/CookieManager.js being setup at Confused.CookieManager and _core/mi/v1.1/miListener.js (or above) being supported server-side.\r\n* Adds/ removes '.open' to '.cookie-wall depending on the presence of a CookieConsent cookie, logging the interaction as an MI event and in a cookie\r\n* Triggeres the function triggerGTM() which wraps around the GTM script on page to stop it firing and dropping cookies if CookieConsent cookie is not present\r\n* Cookie consent cookie name is retrieved from dataLAyer on page and defaults to CookieConsent is dataLayer doesnt have the entry\r\n*/\r\n\r\n; (function ($, w, d) {\r\n\r\n 'use strict';\r\n\r\n w.Confused = w.Confused || {};\r\n w.Confused.CookieManager = w.Confused.CookieManager || {};\r\n\r\n w.Confused.CookiePolicyWidget = (function (cookieManager) {\r\n \r\n // GET COOKIE & GTM ID NAME FROM DATALAYER\r\n var gtmContainerID = window.dataLayer[0].GTMContainer;\r\n var cookieName = window.dataLayer[0].ConsentCookieName; \r\n var parent = location.hostname;\r\n var domainRegex = /^([a-zA-Z0-9]|[a-zA-Z0-9][a-zA-Z0-9\\-]{0,61}[a-zA-Z0-9])(\\.([a-zA-Z0-9]|[a-zA-Z0-9][a-zA-Z0-9\\-]{0,61}[a-zA-Z0-9]))*$/i;\r\n var miListener = CONFUSEDCORE.MI.MiListener;\r\n var cookiePopupShown = false;\r\n\r\n if (domainRegex.test(parent)) {\r\n\r\n var parts = parent.split('.');\r\n parts.shift();\r\n parent = parts.join('.');\r\n }\r\n\r\n\r\n\r\n /* Show widget */\r\n function showPopup() {\r\n if (document.querySelector('.cookie-wall')) {\r\n document.querySelector('.cookie-wall').classList.add('open');\r\n cookiePopupShown = true;\r\n //miListener.postEvent('CookiePopupShown');\r\n }\r\n }\r\n\r\n\r\n // VALIDATE ON BUTTON CLICK THAT THE A CHOICE HAS BEEN MADE\r\n function validateCookieSelection(btn, event) {\r\n\r\n if ($(btn).parents('.field-group').length > 0) {\r\n\r\n var questionBlock = $(btn).parents('.field-group');\r\n\r\n if ($('.field-group .radio-input:checked').length === 0) {\r\n event.preventDefault();\r\n questionBlock.addClass('error');\r\n } else {\r\n\r\n var selectedRadio = $('.field-group .radio-input:checked').val();\r\n // IF WE ARE VALIDATING THE COOKIE WALL POPUP\r\n if ($(btn).hasClass('cookie-wall__button')) {\r\n\r\n if (selectedRadio === 'yes') {\r\n hidePopup('true', 'CookiePopupDismissed:ConsentGranted');\r\n }\r\n\r\n if (selectedRadio === 'no') {\r\n hidePopup('false', 'CookiePopupDismissed:ConsentDeclined');\r\n }\r\n }\r\n\r\n // IF WE ARE VALIDATING THE COOKIE POLICY PAGE\r\n if ($(btn).hasClass('cookie-choice__button')) {\r\n // SHOW SUCCESS MESSAGE\r\n document.querySelector('.save-changess-success').classList.remove('hidden');\r\n // DISABLE BUTTON AS ACTION COMPLETE\r\n $(btn).addClass('disabled');\r\n\r\n if (selectedRadio === 'yes') {\r\n updateCookieValue('true');\r\n }\r\n\r\n if (selectedRadio === 'no') {\r\n updateCookieValue('false');\r\n }\r\n\r\n insertGTMScript();\r\n\r\n // HIDE SUCCESS MESSAGE AFTER 5 SECONDS \r\n setTimeout(function () {\r\n document.querySelector('.save-changess-success').classList.add('hidden');\r\n }, 5000);\r\n }\r\n }\r\n // IF COOKIE WALL POPUP ACCEPT ALL BUTTON IS PRESSED\r\n } else {\r\n if (document.querySelector('.cookie-wall')) {\r\n hidePopup('true', 'CookiePopupDismissed:ConsentGranted');\r\n }\r\n }\r\n }\r\n\r\n // REMOVES ERROR CLASS ON FIELDSET HIDING ERROR MESSAGE\r\n function removeErrorClass() {\r\n document.querySelector('.field-group').classList.remove('error');\r\n }\r\n\r\n // CLOSES MODAL\r\n function closeCookieModal() {\r\n document.querySelector('.cookie-wall').classList.remove('open');\r\n }\r\n\r\n\r\n\r\n\r\n /* Hide widget */\r\n function hidePopup(cookieValue, eventName) {\r\n \r\n cookieManager.setItem(cookieName, cookieValue, 2147483647, '/', parent);\r\n\r\n $(document).trigger('CookieConsentSet', [cookieValue]);\r\n\r\n // INSERT THE GOOGLE TAG MANAGER SCRIPTS TO THE PAGE\r\n insertGTMScript();\r\n\r\n miListener.postEvent(eventName);\r\n\r\n // CLOSE THE MODAL \r\n closeCookieModal();\r\n updateCookieChoiceRadios();\r\n\r\n }\r\n\r\n // SET THE VALUE OF THE EDIT COOKIE PREFERENCES RADIOS ON COOKIE POLICY PAGE\r\n // BASED ON COOKIE VALUE SELECTED IN POPUP\r\n function updateCookieChoiceRadios() {\r\n\r\n if (cookieManager.hasItem(cookieName)) {\r\n if (document.querySelector('.cookie-choice__options')) {\r\n if (cookieManager.getItem(cookieName) === 'true') {\r\n document.querySelector('#cookie-choice__input--yes').checked = true;\r\n } else {\r\n document.querySelector('#cookie-choice__input--no').checked = true;\r\n }\r\n document.querySelector('.cookie-choice__button').classList.add('disabled');\r\n } else {\r\n return;\r\n }\r\n }\r\n }\r\n\r\n // UPDATE THE VALUE OF THE COOKIE FROM THE CHOICE MADE ON COOKIE POLICY PAGE\r\n function updateCookieValue(cookieValue) {\r\n cookieManager.setItem(cookieName, cookieValue, 2147483647, '/', parent);\r\n }\r\n\r\n // \r\n function insertGTMScript() {\r\n var s = document.createElement('script');\r\n s.type = 'text/javascript';\r\n s.async = 'true';\r\n s.src = 'https://www.googletagmanager.com/gtm.js?id=' + gtmContainerID;\r\n var x = document.getElementsByTagName('script')[0];\r\n x.parentNode.insertBefore(s, x);\r\n\r\n }\r\n\r\n\r\n \r\n\r\n function run() {\r\n\r\n // REGISTER GTM WITH DATALAYER ON LOAD\r\n // IDEA FOR PROCESS WAS FROM HERE:\r\n // https://stackoverflow.com/questions/60173853/how-to-set-the-google-analytics-cookie-only-after-another-consent-cookie-is-set/60223798#60223798\r\n\r\n\r\n window.dataLayer = window.dataLayer || [];\r\n window.dataLayer.push({ 'gtm.start': new Date().getTime(), event: 'gtm.js' });\r\n\r\n if (cookieManager.hasItem(cookieName)) {\r\n\r\n // INSERT THE GOOGLE TAG MANAGER SCRIPTS TO THE PAGE\r\n insertGTMScript();\r\n\r\n // IF WE ARE ON COOKIE POLICY PAGE AND COOKIE EXISTS WE NEED TO SET THE RADIOS\r\n // TO THE VALUE OF THE COOKIE\r\n updateCookieChoiceRadios();\r\n\r\n } else {\r\n\r\n showPopup();\r\n\r\n }\r\n\r\n // SETUP EVENT HANDLERS ON RADIOS & BUTTONS IN COOKIE WALL MODAL\r\n var buttons = document.querySelectorAll('.save-cookie-prefs');\r\n var inputs = document.querySelectorAll('.cookie-option-holder .radio-input');\r\n\r\n Array.prototype.forEach.call(buttons, function(button) {\r\n //buttons.forEach(function (button) {\r\n button.addEventListener('click', function (event) {\r\n var btn = event.target;\r\n validateCookieSelection(btn, event);\r\n });\r\n });\r\n\r\n\r\n Array.prototype.forEach.call(inputs, function (input) {\r\n //inputs.forEach(function(input) {\r\n input.addEventListener('change', function (e) {\r\n removeErrorClass();\r\n var radio = e.target;\r\n if ($(radio).parents('.cookie-choice__input-wrapper') && cookieManager.hasItem(cookieName)) {\r\n $('.cookie-choice__button').toggleClass('disabled');\r\n }\r\n });\r\n });\r\n\r\n return;\r\n\r\n }\r\n\r\n function wasCookiePopupShown() {\r\n return cookiePopupShown;\r\n }\r\n\r\n\r\n return {\r\n run: run,\r\n wasCookiePopupShown: wasCookiePopupShown\r\n };\r\n })(new w.Confused.CookieManager());\r\n\r\n \r\n\r\n}(window.jQuery, window, document, window.Confused.CookieManager));","var CSSCONSTANTS = CSSCONSTANTS || {};\r\n\r\n(function (factory) {\r\n if (typeof define === 'function' && define.amd) {\r\n define(function (require) {\r\n factory(require('jquery'));\r\n });\r\n } else {\r\n factory(window.jQuery);\r\n }\r\n})(function () {\r\n\r\n /* used by globalHeaderActions.js and headerMessages.js */\r\n CSSCONSTANTS.globalHeaderSecondaryClass = 'global-header__secondary';\r\n\r\n /* used by globalHeaderActions.js */\r\n CSSCONSTANTS.globalHeaderActionsClass = 'global-header__actions';\r\n CSSCONSTANTS.globalHeaderActionsActionClass = 'global-header__actions__action';\r\n CSSCONSTANTS.globalHeaderActionsActionTwoClass = 'global-header__actions__action--two';\r\n CSSCONSTANTS.globalHeaderActionsLoginClass = 'global-header__actions__login';\r\n CSSCONSTANTS.globalHeaderActionsRetrieveClass = 'global-header__actions__retrieve';\r\n CSSCONSTANTS.globalHeaderActionsWelcomeClass = 'global-header__actions__welcome';\r\n CSSCONSTANTS.globalHeaderActionsWelcomeSalutationClass = 'global-header__actions__welcome__salutation';\r\n\r\n /* used by globalNav.js */\r\n CSSCONSTANTS.globalNavCategoriesClass = 'global-nav__categories';\r\n CSSCONSTANTS.globalNavCategoryOpenClass = 'show-contents';\r\n CSSCONSTANTS.globalNavSubCategoriesClass = 'global-nav__subcategories';\r\n CSSCONSTANTS.globalNavSubCategoriesCloseClass = 'global-nav__subcategories__close';\r\n CSSCONSTANTS.globalNavPromoClass = 'global-nav__promo';\r\n CSSCONSTANTS.skipNavLinkClass = 'skip-nav-link';\r\n CSSCONSTANTS.mainId = 'main';\r\n CSSCONSTANTS.globalNavCategoryLinkWithSubCategoriesClass = 'global-nav__category__link--with-subcategories';\r\n\r\n /* used by globalNav.js and mobileNav.js */\r\n CSSCONSTANTS.globalNavCategoryClass = 'global-nav__category';\r\n\r\n /* used by globalHeaderActions.js and mobileNav.js */\r\n CSSCONSTANTS.globalHeaderMastheadClass = 'global-header__masthead';\r\n CSSCONSTANTS.globalNavCategoryLinkClass = 'global-nav__category__link';\r\n CSSCONSTANTS.globalNavSubCategoryClass = 'global-nav__subcategory';\r\n\r\n /* used by mobileNav.js */\r\n CSSCONSTANTS.pageClass = 'page';\r\n CSSCONSTANTS.globalSearchClass = 'global-search';\r\n CSSCONSTANTS.globalHeaderSearchFormClass = 'global-header__search__form';\r\n CSSCONSTANTS.mobileNavClass = 'mobile-nav';\r\n CSSCONSTANTS.mobileNavOpenClass = 'mobile-nav-open';\r\n CSSCONSTANTS.mobileNavCategoriesClass = 'mobile-nav__categories';\r\n CSSCONSTANTS.mobileNavCategoryClass = 'mobile-nav__category';\r\n CSSCONSTANTS.mobileNavCategoryHelpClass = 'mobile-nav__category--help';\r\n CSSCONSTANTS.mobileNavCategoryLinkClass = 'mobile-nav__category__link';\r\n CSSCONSTANTS.mobileNavCategoryLinkHelpClass = 'mobile-nav__category__link--help';\r\n CSSCONSTANTS.mobileNavSubCategoriesClass = 'mobile-nav__subcategories';\r\n CSSCONSTANTS.mobileNavSubCategoriesOpenClass = 'mobile-nav__subcategories--open';\r\n CSSCONSTANTS.mobileNavSubCategoriesContainerClass = 'mobile-nav__subcategories__container';\r\n CSSCONSTANTS.mobileNavSubCategoriesHeadingClass = 'mobile-nav__subcategories__heading';\r\n CSSCONSTANTS.mobileNavSearchFormClass = 'mobile-nav__search-form';\r\n CSSCONSTANTS.globalNavHelpClass = 'global-nav__help';\r\n CSSCONSTANTS.mobileNavToggleClass = 'mobile-nav-toggle';\r\n CSSCONSTANTS.globalNavSubcategoryHeaderClass = 'global-nav__subcategory__header';\r\n CSSCONSTANTS.mobileNavSubcategoryHeadingClass = 'mobile-nav__subcategory__heading';\r\n CSSCONSTANTS.mobileNavSubcategoryContentsClass = 'mobile-nav__subcategory__contents';\r\n CSSCONSTANTS.globalNavSubcategoryContentsClass = 'global-nav__subcategory__contents';\r\n CSSCONSTANTS.globalNavSubcategoryContentsProminentClass = 'global-nav__subcategory__contents--prominent';\r\n CSSCONSTANTS.globalNavSubcategoryContentsItemClass = 'global-nav__subcategory__contents__item';\r\n CSSCONSTANTS.mobileNavSubcategoryContentsItemClass = 'mobile-nav__subcategory__contents__item';\r\n CSSCONSTANTS.mobileNavCloseClass = 'mobile-nav__close';\r\n\r\n /* used by globalSearch.js */\r\n CSSCONSTANTS.globalHeaderSearchClass = 'global-header__search';\r\n CSSCONSTANTS.globalNavSearchClass = 'global-nav__search';\r\n CSSCONSTANTS.globalNavSearchOpenClass = 'global-nav__search--open';\r\n CSSCONSTANTS.globalSearchButtonClass = 'global-search__button';\r\n\r\n /* used by headerMessages.js */\r\n CSSCONSTANTS.globalHeaderMessagesToggleClass = 'global-header__messages-toggle';\r\n CSSCONSTANTS.globalHeaderMessagesPanelClass = 'global-header__messages-panel';\r\n CSSCONSTANTS.globalHeaderClass = 'global-header';\r\n CSSCONSTANTS.globalHeaderLogoClass = 'global-header__confused-logo';\r\n CSSCONSTANTS.globalNavToolsClass = 'global-nav__tools';\r\n CSSCONSTANTS.globalHeaderMessagesPanelCloseClass = 'global-header__messages-panel__close';\r\n CSSCONSTANTS.globalHeaderMessagesToggleClosedClass = 'global-header__messages-toggle--closed';\r\n CSSCONSTANTS.globalHeaderMessagesToggleOpenedClass = 'global-header__messages-toggle--open';\r\n CSSCONSTANTS.globalHeaderMessagesToggleViewedClass = 'global-header__messages-toggle--viewed';\r\n});","var CONFUSEDWEBSITE = CONFUSEDWEBSITE || {},\n CSSCONSTANTS = CSSCONSTANTS || {};\n\n(function (factory) {\r\n if (typeof define === 'function' && define.amd) {\r\n define(function (require) {\r\n factory(require('jquery'));\r\n });\r\n } else {\r\n factory(window.jQuery);\r\n }\r\n})(function ($) {\n\n CONFUSEDWEBSITE.setupHeaderActions = function () {\r\n\r\n var $myAccountDropdown = $('.global-header__actions .btn--dropdown');\r\n\r\n $myAccountDropdown.on('click', function(e) {\r\n e.preventDefault();\r\n var $this = $(this),\r\n windowWidth = $(window).width();\r\n\r\n if($this.hasClass('btn--dropdown--closed')) {\r\n $this.removeClass('btn--dropdown--closed');\r\n $this.addClass('btn--dropdown--open');\r\n if (windowWidth > 800) {\r\n $('.global-header__secondary').css('margin-top', '-2px');\r\n }\r\n }\r\n else {\r\n $this.removeClass('btn--dropdown--open');\r\n $this.addClass('btn--dropdown--closed');\r\n $('.global-header__secondary').css('margin-top', '0');\r\n }\r\n $this.nextAll('.nav-dropdown').slideToggle('fast');\r\n });\r\n\n\t enquire.register(CSSCONSTANTS.nonMobileHeaderMinWidthMQ, {\r\n\t match: function () {\r\n\n\t CONFUSEDWEBSITE.moveHeaderActions('nonMobile');\r\n\n\t },\n\t unmatch: function () {\r\n\n\t CONFUSEDWEBSITE.moveHeaderActions('mobile');\r\n\n\t }\r\n\t }, true);\n\t};\n\n\tCONFUSEDWEBSITE.moveHeaderActions = function (screenSize) {\n\t var $headerActions = $('.' + CSSCONSTANTS.globalHeaderActionsClass),\n\t\t\t$globalHeaderMasthead = $('.' + CSSCONSTANTS.globalHeaderMastheadClass),\n\t\t\t$globalHeaderSecondary = $('.' + CSSCONSTANTS.globalHeaderSecondaryClass + ' .' + CSSCONSTANTS.scaffoldClass + '.' + CSSCONSTANTS.columnClass);\n\n\t\tif (screenSize === 'nonMobile') {\t\n\t\t\t$headerActions.appendTo($globalHeaderMasthead);\n\t\t}\n\n\t\telse if (screenSize === 'mobile') {\n\t\t\t$headerActions.appendTo($globalHeaderSecondary);\n\t\t}\n\t};\n\n});","var CONFUSEDWEBSITE = CONFUSEDWEBSITE || {},\n CSSCONSTANTS = CSSCONSTANTS || {};\n\n(function (factory) {\r\n if (typeof define === 'function' && define.amd) {\r\n define(function (require) {\r\n factory(require('jquery'));\r\n });\r\n } else {\r\n factory(window.jQuery);\r\n }\r\n})(function ($) {\n\n\tCONFUSEDWEBSITE.setupGlobalNav = function () {\n\t var $categoryLink = $('.' + CSSCONSTANTS.globalNavCategoryLinkClass),\n $subCategories = $('.' + CSSCONSTANTS.globalNavSubCategoriesClass),\n $categories = $('.' + CSSCONSTANTS.globalNavCategoryClass);\n\n\t $categories.each(function() {\n\t var $this = $(this),\n\t\t\t\t$promo = $this.find('.' + CSSCONSTANTS.globalNavPromoClass),\n $lastCol = $this.find('.global-nav-col:last-child');\n\n\t $promo.prependTo($lastCol);\n\n\t if (Modernizr.touch) {\r\n\t var $categoryLink = $this.find('.' + CSSCONSTANTS.globalNavCategoryLinkClass),\r\n thisCategoryLinkHref = $categoryLink.attr('href'),\r\n thisCategoryLinkText = $categoryLink.text(),\n $thisCategoryAdditionalLinkContainer = $('
', {\r\n 'class': 'clearfix'\r\n }),\n $thisCategoryAdditionalLink = $('', {\r\n 'class': 'global-nav__subcategories__category-link',\n\r\n text: thisCategoryLinkText,\r\n href: thisCategoryLinkHref\r\n }),\n $theseSubcategories = $this.find('.' + CSSCONSTANTS.globalNavSubCategoriesClass);\r\n\r\n\t $thisCategoryAdditionalLink.appendTo($thisCategoryAdditionalLinkContainer);\r\n\t $thisCategoryAdditionalLinkContainer.prependTo($theseSubcategories);\r\n\n\t }\n\t });\n\n\t\t$subCategories.each(function() {\n\t\t\tvar $this = $(this),\n\t\t\t\t$associatedCategory = $this.prev('.' + CSSCONSTANTS.globalNavCategoryLinkClass);\n\n\t\t\t$associatedCategory.addClass(CSSCONSTANTS.globalNavCategoryLinkWithSubCategoriesClass);\n\t\t\t\t\n\t\t});\n\n\t\tif (Modernizr.touch) {\r\n\t\t $subCategories.each(function () {\r\n\t\t var $thisCategory = $(this),\r\n $closeSubcategoryLink = $('', {\r\n 'class': CSSCONSTANTS.globalNavSubCategoriesCloseClass,\n\t\t text: 'close menu',\r\n\t\t href: '#'\r\n\t\t });\r\n\r\n\t\t $closeSubcategoryLink.appendTo($thisCategory);\r\n\r\n\t\t $closeSubcategoryLink.on('click', function (e) {\r\n\t\t e.preventDefault();\r\n\t\t CONFUSEDWEBSITE.toggleSubNav($thisCategory.prev());\r\n\t\t });\r\n\t\t });\r\n\t\t \r\n\t\t $categoryLink.on('click',function (e) {\r\n\t\t var $this = $(this),\r\n $thisSubcategory = $this.next($subCategories);\r\n\r\n\t\t e.preventDefault();\r\n\t\t $categoryLink.not($this).removeClass(CSSCONSTANTS.globalNavCategoryOpenClass);\n\t\t $subCategories.not($thisSubcategory).hide();\r\n\t\t CONFUSEDWEBSITE.toggleSubNav($this);\r\n\t\t });\n\t\t}\n\n\t else {\n\n\t\t $categoryLink.on('mouseenter', function () {\r\n\t\t \r\n\t CONFUSEDWEBSITE.showSubNav($(this));\r\n\t });\r\n\t $categoryLink.on('mouseleave', function () {\r\n\t CONFUSEDWEBSITE.hideSubNav($(this));\r\n\t });\n\n\t $subCategories.on('mouseenter', function () {\n\t $(this).show();\r\n\t $(this).prev().addClass(CSSCONSTANTS.globalNavCategoryOpenClass);\r\n\t });\r\n\t $subCategories.on('mouseleave', function () {\r\n\t CONFUSEDWEBSITE.hideSubNav($(this).prev());\r\n\t });\n\n\t\t // add keyboard & screenreader events\r\n\t $('.' + CSSCONSTANTS.globalNavCategoriesClass).attr('role', 'menubar');\r\n\t $('.' + CSSCONSTANTS.globalNavCategoryClass).attr('role', 'menuitem');\r\n\t $subCategories.attr('role', 'menu');\r\n\t $categoryLink.attr('aria-haspopup', 'true');\r\n\r\n\t $categoryLink.on('keydown',function (e) {\r\n\t var $this = $(this);\r\n \r\n\t if (e.keyCode === 13) {\r\n\t e.preventDefault();\r\n\t CONFUSEDWEBSITE.toggleSubNav($this);\r\n\t }\r\n\t });\n\n\t $subCategories.each(function () {\r\n\t var $this = $(this),\r\n\t $lastLink = $this.find('a').last();\r\n\r\n\t $lastLink.on('keydown',function (objEvent) {\r\n\t if (objEvent.keyCode === 9) {\r\n\t CONFUSEDWEBSITE.toggleSubNav($this.prev());\r\n\t }\r\n\t });\r\n\n\t });\n\t }\n\t};\n\n\tvar globalNavTimer;\n\n\tCONFUSEDWEBSITE.toggleSubNav = function (category) {\n\t category.toggleClass(CSSCONSTANTS.globalNavCategoryOpenClass);\n\t category.next('.' + CSSCONSTANTS.globalNavSubCategoriesClass).toggle();\n\t};\n\n\tCONFUSEDWEBSITE.showSubNav = function (category) {\r\n\t globalNavTimer = setTimeout(function () {\r\n\t category.addClass(CSSCONSTANTS.globalNavCategoryOpenClass);\n\t category.next('.' + CSSCONSTANTS.globalNavSubCategoriesClass).show();\r\n\t }, 250);\r\n\t};\n\n\tCONFUSEDWEBSITE.hideSubNav = function (category) {\r\n\t clearTimeout(globalNavTimer);\r\n\r\n\t category.removeClass(CSSCONSTANTS.globalNavCategoryOpenClass);\n\t category.next('.' + CSSCONSTANTS.globalNavSubCategoriesClass).hide();\r\n\r\n\t};\n\n\tCONFUSEDWEBSITE.skipNav = function () {\n\t $('.' + CSSCONSTANTS.skipNavLinkClass).on('click',function() {\n\t $('#' + CSSCONSTANTS.mainId).attr('tabindex', -1).focus();\n\t\t});\n\t};\n\n});","var CONFUSEDWEBSITE = CONFUSEDWEBSITE || {},\n CSSCONSTANTS = CSSCONSTANTS || {};\n\n(function (factory) {\r\n if (typeof define === 'function' && define.amd) {\r\n define(function (require) {\r\n factory(require('jquery'));\r\n });\r\n } else {\r\n factory(window.jQuery);\r\n }\r\n})(function ($) {\r\n\n CONFUSEDWEBSITE.setupMobileNav = function () {\n\n enquire.register(CSSCONSTANTS.mobileHeaderMaxWidthMQ, {\r\n match: function () {\r\n\r\n if (!$('.' + CSSCONSTANTS.mobileNavClass).length) {\r\n CONFUSEDWEBSITE.createMobileNav();\r\n }\r\n\n }\r\n });\r\n };\n\n CONFUSEDWEBSITE.createMobileNav = function () {\r\n\n var $page = $('.' + CSSCONSTANTS.pageClass),\n\t\t\t$globalNavCategories = $('.' + CSSCONSTANTS.globalNavCategoryClass),\n\n\t\t\t$mobileNav = $('