An error occurred while processing the template.
The following has evaluated to null or missing: ==> qstringmap["ecdma-lc"] [in template "10154#10192#18387089" at line 19, column 15] ---- Tip: It's the final [] step that caused this error, not those before it. ---- Tip: If the failing expression is known to legally refer to something that's sometimes null or missing, either specify a default value like myOptionalVar!myDefault, or use <#if myOptionalVar??>when-present<#else>when-missing</#if>. (These only cover the last step of the expression; to cover the whole expression, use parenthesis: (myOptionalVar.foo)!myDefault, (myOptionalVar.foo)?? ---- ---- FTL stack trace ("~" means nesting-related): - Failed at: #assign lc = qstringmap["ecdma-lc"]?f... [in template "10154#10192#18387089" at line 19, column 1] ----
1<#assign utilServ = (serviceLocator.findService("com.elan.crc.utilites.service.CRCRemoteServiceService"))! />
2<#assign oadURL = propsUtil.get('elan.oad.url') >
3<#assign serviceContext = staticUtil["com.liferay.portal.kernel.service.ServiceContextThreadLocal"].getServiceContext() >
4<#assign themeDisplay = serviceContext.getThemeDisplay() />
5<#assign url = themeDisplay.getPortalURL() + themeDisplay.getURLCurrent()/>
6<#assign qstringmap = httpUtil.getParameterMap(httpUtil.getQueryString(url))>
7<#assign url404 = '/error/404.html' >
8<#assign environment = url?replace('/11t3.*','','r')>
9
10<#assign text_to_apply_source = "vanity url" >
11<#if qstringmap["sms"]?has_content>
12 <#assign sms = 1 >
13 <#assign text_to_apply_source = "sms" >
14</#if>
15<#if qstringmap["qrCode"]?has_content>
16 <#assign text_to_apply_source = "qr code" >
17</#if>
18
19<#assign lc = qstringmap["ecdma-lc"]?first>
20<#assign lc = htmlUtil.escape(lc)>
21<#assign lc = htmlUtil.escapeJS(lc)>
22
23<#assign prefix = "00000" >
24<#assign lcWithPrefix = prefix + lc >
25<#assign withPrefixLength = lcWithPrefix?length >
26<#assign startHere = withPrefixLength - 5>
27<#assign lc = lcWithPrefix?substring(startHere)>
28
29<#if qstringmap["ecid"]?has_content>
30 <#assign ecidExt = qstringmap["ecid"]?first>
31 <#assign ecidExt = htmlUtil.escape(ecidExt)>
32 <#assign ecidExt = htmlUtil.escapeJS(ecidExt)>
33 <#assign ecidExt = "&ecid=" + ecidExt>
34
35
36 <#assign campaignId = qstringmap["ecid"]?first >
37 <#assign campaignId = htmlUtil.escape(campaignId)>
38 <#assign campaignId = htmlUtil.escapeJS(campaignId)>
39<#else>
40 <#assign ecidExt="">
41 <#assign campaignId = "" >
42</#if>
43
44<#assign isFromDCOLink = false>
45<#assign dcoSourceCode = ''>
46<#if qstringmap["sourcecode"]?has_content>
47 <#assign dcoSourceCode = qstringmap["sourcecode"]?first>
48 <#assign dcoSourceCode = htmlUtil.escape(dcoSourceCode)>
49 <#assign dcoSourceCode = htmlUtil.escapeJS(dcoSourceCode)>
50<#elseif qstringmap["sourceCode"]?has_content>
51 <#assign dcoSourceCode = qstringmap["sourceCode"]?first>
52 <#assign dcoSourceCode = htmlUtil.escape(dcoSourceCode)>
53 <#assign dcoSourceCode = htmlUtil.escapeJS(dcoSourceCode)>
54</#if>
55
56<#if dcoSourceCode?has_content>
57 <#assign isFromDCOLink = true>
58</#if>
59
60<#assign clientProfileService = (serviceLocator.findService("com.elan.crc.user.service.CrcClientProfileLocalService"))! />
61<#assign clientProfileList = clientProfileService.findByLocationCode(lc)>
62<#assign clientProfile = clientProfileList?first>
63<#assign partnerName = clientProfile.getMarketingNameLong()>
64<#assign pbu = clientProfile.getPbu()>
65<#assign subbu = clientProfile.getSUBBRANDBUNBR()>
66
67<#assign logoFileName = clientProfile.getLogoBFormat1()?replace(".", "-")?replace("-([^-]*)$", ".$1", "r")?lower_case>
68<#assign cdnLogoUrl = (propsUtil.get('rackspace.cdn.web.url'))!>
69<#assign fiCardsData = utilServ.makeCall('crcTier3GetPbuData','0&'+pbu+'&'+subbu)>
70
71 <#assign clientDataService = (serviceLocator.findService("com.elan.crc.user.service.CrcPbuLocalService"))! />
72<#assign clientProfileDataList = clientDataService.getByPbuAndSubBu(pbu,subbu)>
73<#assign partnerUrl = clientProfileDataList.getPartnerMainUrl()>
74<script>
75//console.log('Partner URL', ${partnerUrl});
76</script>
77<#if partnerUrl?has_content && !partnerUrl?matches(r"(?i)^https?\:\/\/.*")>
78 <#assign partnerUrl = 'https://' + partnerUrl>
79</#if>
80<script>
81//console.log('Partner URL', ${partnerUrl});
82
83</script>
84<#-- Begin: filter duplicated cards-->
85<#assign temp = []>
86<#assign offerTypeList = []>
87<#if (fiCardsData?size > 0)>
88 <#assign index = 0>
89 <#list fiCardsData as fib>
90 <#if (fib.offerType?has_content && !(offerTypeList?seq_contains(fib.offerType)))>
91 <#assign offerTypeList = offerTypeList + [fib.offerType]>
92 <#assign temp = temp + fiCardsData[index..index]>
93 </#if>
94 <#assign index = index + 1>
95 </#list>
96 <#assign fiCardsData = temp>
97 <#if (fiCardsData?size > 0)>
98 <div class="content-container content-container-main">
99 <#if url?contains("index")>
100 <#assign product="All Cards">
101 <h1 class="sr-only">${partnerName!'Elan'} Credit Cards</h1>
102 <header class="page-header">
103 <div class="page-header__logo">
104 <#if partnerUrl?has_content>
105 <a href="${partnerUrl!''}">
106 <img src="${cdnLogoUrl!''}/${logoFileName!''}" alt="${partnerName!''} Logo">
107 </a>
108 <#else>
109 <img src="${cdnLogoUrl!''}/${logoFileName!''}" alt="${partnerName!''} Logo">
110 </#if>
111 </div>
112 </header>
113 <#else>
114 <header class="page-header">
115 <#if !isFromDCOLink>
116 <div class="back-overview hide-desktop">
117 <a href="${environment}/11t3/index?ecdma-lc=${lc}${ecidExt}">Home</a>
118 </div>
119 </#if>
120
121 <div class="header-main-logo">
122 <#if partnerUrl?has_content>
123 <a href="${partnerUrl!''}">
124 <img src="${cdnLogoUrl!''}/${logoFileName!''}" alt="${partnerName!''} Logo">
125 </a>
126 <#else>
127 <img src="${cdnLogoUrl!''}/${logoFileName!''}" alt="${partnerName!''} Logo">
128 </#if>
129 </div>
130 <#if !isFromDCOLink>
131 <div class="styled-select slate">
132 <nav class="styled-select__dropdown">
133 <div class="back-overview hide-mobile-flex">
134 <a href="${environment}/11t3/index?ecdma-lc=${lc}${ecidExt}">Home</a>
135 </div>
136 <a href="javascript:void(0)" class="dropdown-select" aria-expanded="false">
137 <span class="selected-option"></span>
138 <div class="jn-arrow arrow arrow-right"></div>
139 </a>
140 <a href="javascript:void(0)" aria-label="Open page navigation menu" class="jn-hamburger hamburger" aria-expanded="false">
141 <div class="first-line transform transformed1"></div>
142 <div></div>
143 <div class="transform transformed2"></div>
144 <div></div>
145 </a>
146 <ul>
147 <#list fiCardsData as fib>
148 <#switch fib.offerType>
149 <#case "101">
150 <#assign productURL = "202302/consumer-edr">
151 <#assign productName = "Everyday Rewards+">
152 <#break>
153 <#case "103">
154 <#assign productURL = "202302/consumer-edr">
155 <#assign productName = "Everyday Rewards+">
156 <#break>
157 <#case "104">
158 <#assign productURL = "max-cash">
159 <#assign productName = "Max Cash Preferred Card">
160 <#break>
161 <#case "108">
162 <#assign productURL="202308/consumer-platinum">
163 <#assign productName="Platinum Card">
164 <#break>
165 <#case "109">
166 <#assign productURL="202308/consumer-platinum">
167 <#assign productName="Platinum Card">
168 <#break>
169 <#case "115">
170 <#assign productURL = "secured">
171 <#assign productName = "Secured Card" >
172 <#break>
173 <#case "138">
174 <#assign productURL = "202305/travel-rewards-plus">
175 <#assign productName = "Travel Rewards+" >
176 <#break>
177 <#case "141">
178 <#assign productURL = "college-real-rewards">
179 <#assign productName = "College Real Rewards" >
180 <#break>
181 <#case "147">
182 <#assign productURL = "max-cash-secured">
183 <#assign productName = "Max Cash Secured Card" >
184 <#break>
185 <#case "154">
186 <#assign productURL = "202305/reserve-rewards-plus">
187 <#assign productName = "Reserve Rewards+" >
188 <#break>
189 <#case "121">
190 <#assign productURL = "202208/business-platinum">
191 <#assign productName = "Business Card" >
192 <#break>
193 <#case "128">
194 <#assign productURL = "business-cash-preferred">
195 <#assign productName = "Business Cash Preferred" >
196 <#break>
197 <#case "143">
198 <#assign productURL = "business-real-rewards">
199 <#assign productName = "Business Real Rewards Card" >
200 <#break>
201 <#case "144">
202 <#assign productURL = "smart-business-rewards">
203 <#assign productName = "Smart Business Rewards Card" >
204 <#break>
205 <#default>
206 </#switch>
207 <#if url?matches(".*/${productURL}\\?.*")>
208 <li class="selected" data-value="${productName}" selected="selected"><a href="javascript:void(0)">${productName}</a></li>
209 <#else>
210 <li class="dropdown-item" data-value="${productName}">
211 <a href="${environment}/11t3/${productURL}?ecdma-lc=${lc}${ecidExt}">
212 ${productName}
213 </a>
214 </li>
215 </#if>
216 </#list>
217 </ul>
218 </nav>
219
220 </div>
221 </#if>
222 </header>
223 <script>
224 function toggleFlyOutMenu() {
225 $('.styled-select').toggleClass('show-select');
226 var ariaExpanded = $('.styled-select__dropdown .dropdown-select').attr('aria-expanded');
227 if(ariaExpanded !== null) {
228 var isAriaExpanded;
229 if(ariaExpanded === "true") {
230 isAriaExpanded = true;
231 } else {
232 isAriaExpanded = false
233 }
234 $('.styled-select__dropdown .dropdown-select').attr('aria-expanded', !isAriaExpanded);
235 const ariaLabel = isAriaExpanded? "Open page navigation menu" : "Close page navigation menu";
236 $('.styled-select__dropdown .jn-hamburger').attr('aria-expanded', !isAriaExpanded).attr('aria-label', ariaLabel);
237 }
238 }
239 AUI().ready(function () {
240 var pageSelected = $('.selected').attr('data-value');
241 $('.jn-hamburger, .dropdown-select').click(function () {
242 toggleFlyOutMenu();
243 });
244 $('.styled-select__dropdown').keydown(function(event) {
245 var firstNavigationLink = $('.styled-select__dropdown ul li:visible a').first();
246 var lastNavigationLink = $('.styled-select__dropdown ul li:visible a').last();
247
248 if(event.keyCode === 9 ) {
249 // if they tab outside of the nav close the navigation
250 //shift + tab pressed
251 if(event.shiftKey && firstNavigationLink.is(document.activeElement)) {
252 toggleFlyOutMenu();
253 } else if(!event.shiftKey && lastNavigationLink.is(document.activeElement)) {
254 toggleFlyOutMenu();
255 }
256 }
257 });
258 $('.selected-option').text(pageSelected);
259 });
260 </script>
261 </#if>
262 </div>
263 <script>
264 var reportingData = {};
265
266 //document.addEventListener('DOMContentLoaded', function() {
267 AUI().ready(function () {
268 //console.log('inside ready');
269 var page = location.pathname.split('/')[location.pathname.split('/').length-1];
270 var hostName = location.hostname;
271 function getDomainFromHostname(hostname) {
272 var parts = hostname.split('.');
273 return parts.length === 3 ? parts[1] : parts[0];
274 }
275 var domain = getDomainFromHostname(hostName);
276 var partnerName = "${partnerName!''}";
277 var product = "All Cards";
278 var title = "";
279 var metaDesc = "";
280 var m = document.createElement('meta');
281 switch(page) {
282 case "max-cash-secured":
283 product="Max Cash Secured Card";
284 title = "Earn more on the categories you pick | "+partnerName+" Max Cash Secured Card";
285 metaDesc = "Apply Today for a "+partnerName+" Credit Card. Use this card as a solid foundation to build your credit.";
286 break;
287 case "max-cash":
288 product="Max Cash Preferred Card";
289 title = "Earn a $150 Bonus and 5% cash back | "+partnerName+" Max Cash Preferred Card";
290 metaDesc = "Apply Today for a "+partnerName+" Credit Card. Earn a $150 Bonus and 5% cash back on the two categories you select.";
291 break;
292 case "consumer-platinum":
293 product="Platinum Card";
294 title = "The purchasing power of Zero | "+partnerName+" Platinum Card";
295 metaDesc = "Apply Today for a "+partnerName+" Credit Card. Limited Time Offer. 0% Intro APR on Purchases and Balance Transfers for 18 Billing Cycles Consolidate your Balances with the "+partnerName+" Intro APR Card.";
296 break;
297 case "consumer-edr":
298 product="Everyday Rewards+";
299 title = "Sign up and earn bonus points | "+partnerName+" Everyday Rewards+";
300 metaDesc = "Apply Today for a "+partnerName+" Credit Card. Earn 15,000 when you spend $500 within the first 90 days.";
301 break;
302 case "secured":
303 product="Secured Card";
304 title = "Strengthen your finances | "+partnerName+" Secured Card";
305 metaDesc = "Apply Today for a "+partnerName+" Credit Card. Use this card as a solid foundation to build your credit.";
306 break;
307 case "college-real-rewards":
308 product="College Real Rewards";
309 title = "Sign up and earn bonus points. | "+partnerName+" College Real Rewards";
310 metaDesc = "Apply Today for a "+partnerName+" Credit Card. Use this card as a solid foundation to build your credit.";
311 break;
312 case "smart-business-rewards":
313 product="Smart Business Rewards Card";
314 title = "2X rewards in your top 2 spend categories | "+partnerName+" Business Smart Business Rewards Card";
315 metaDesc = "Apply Today for a "+partnerName+" Credit Card. More choices. More value for your business. Earn a $200 Bonus and 2x Rewards on your top 2 spend categories each month with the "+partnerName+" Credit Card.";
316 break;
317 case "business-cash-preferred":
318 product="Business Cash Preferred";
319 title = "Flexible rewards for your business | "+partnerName+" Business Cash Preferred";
320 metaDesc = "Apply Today for a "+partnerName+" Credit Card. Earn Cash back on common business expenses.";
321 break;
322 case "business-real-rewards":
323 product="Business Real Rewards Card";
324 title = "Earn up to 1.5X points with no caps | "+partnerName+" Business Real Rewards Card";
325 metaDesc = "Apply Today for a "+partnerName+" Credit Card. Get more rewards in the categories you spend the most on." ;
326 break;
327 case "business-platinum":
328 product="Business Card";
329 title = "Pay down your other credit card balances faster | "+partnerName+" Business Card";
330 metaDesc = "Apply Today for a "+partnerName+" Business Card. 0% Intro APR on Purchases and Balance Transfers for 18 Billing Cycles.";
331 break;
332 case "travel-rewards-plus":
333 product="Travel Rewards+"
334 title = partnerName + " | Travel Rewards+ Card";
335 metaDesc = "Make travel more rewarding with unlimited 4x points on travel and frequent popular categories."
336 break;
337 case "reserve-rewards-plus":
338 product="Reserve Rewards+"
339 title = partnerName + " | Reserve Rewards+ Card";
340 metaDesc = "Get exceptional rewards on travel and frequent purchases with this exclusive metal card.";
341 break;
342 default:
343 product = "All Cards";
344 title = partnerName + " Credit Card Index Page";
345 metaDesc = "Apply Today for a "+partnerName+" Credit Card.";
346 }
347 document.title = title;
348 m.name = 'description';
349 m.content = metaDesc;
350 document.head.appendChild(m);
351
352 var lc = "${lc!'0'}";
353
354 /* update SiteCatalyst data object */
355 reportingData.current_page = "microsite:${partnerName}:" + domain + ':' + page.replace('-',' ');
356 reportingData.page_type = 'product';
357 reportingData.site_section = 'credit cards';
358 reportingData.platform = 'microsite';
359 reportingData.campaign_id = '${campaignId}';
360 reportingData.location_code = lc;
361 reportingData.partner_name = partnerName;
362 reportingData.product = product;
363 reportingData.text_to_apply_source = '${text_to_apply_source}';
364 reportingData.visitor_type = 'prospect';
365 reportingData.Banker_id = '0';
366 reportingData.Banker_code = '0';
367
368
369 /* SiteCatalyst pageView tracking */
370 AUI().ready(function() {
371 if (window.publisherFW) {
372 //console.log("pageView");
373 window.publisherFW.publishEvent("pageView", reportingData);
374 }
375 });
376
377 jQuery('.jn-button, .applyNowLink').on('click', function(e){
378 var buttonName = $(this).data('button-name');
379 var productName = $(this).data('product-name');
380 /* SiteCatalyst onClick tracking */
381 reportingData.applyButton = buttonName;
382 reportingData.product = productName;
383
384 if (window.publisherFW) {
385 //console.log('clicked', reportingData);
386 window.publisherFW.publishEvent("onClick", reportingData);
387 }
388
389 });
390
391 jQuery('.applyNowLink').on('click', function(e){
392 ga("send", {
393 hitType: "event",
394 eventAction: "ApplyNow",
395 eventCategory: "click",
396 eventLabel: "BottomButton"
397 });
398 });
399
400 });
401 </script>
402 <#else>
403 <script>
404 console.log("Empty card list");
405 location.href = '${url404}';
406 </script>
407 </#if>
408<#else>
409 <script>
410 console.log("FI Cards Data empty", "pbu:", "${pbu}", ",subbu:","${subbu}");
411 location.href = '${url404}';
412 </script>
413</#if>
An error occurred while processing the template.
The following has evaluated to null or missing: ==> qstringmap["ecdma-lc"] [in template "10154#10192#18372542" at line 6, column 14] ---- Tip: It's the final [] step that caused this error, not those before it. ---- Tip: If the failing expression is known to legally refer to something that's sometimes null or missing, either specify a default value like myOptionalVar!myDefault, or use <#if myOptionalVar??>when-present<#else>when-missing</#if>. (These only cover the last step of the expression; to cover the whole expression, use parenthesis: (myOptionalVar.foo)!myDefault, (myOptionalVar.foo)?? ---- ---- FTL stack trace ("~" means nesting-related): - Failed at: #assign lc = qstringmap["ecdma-lc"]?f... [in template "10154#10192#18372542" at line 6, column 1] ----
1<#assign uniqueID = randomNamespace />
2<#assign url = themeDisplay.getPortalURL() + themeDisplay.getURLCurrent()>
3<#assign qstringmap = httpUtil.getParameterMap(httpUtil.getQueryString(url))>
4<#assign environment = url?replace('/11t3/index.*','','r')>
5
6<#assign lc= qstringmap["ecdma-lc"]?first>
7<#assign lc = htmlUtil.escape(lc)>
8<#assign lc = htmlUtil.escapeJS(lc)>
9
10<#assign prefix = "00000" >
11<#assign lcWithPrefix = prefix + lc >
12<#assign withPrefixLength = lcWithPrefix?length >
13<#assign startHere = withPrefixLength - 5>
14<#assign lc = lcWithPrefix?substring(startHere)>
15
16<#assign utilServ = (serviceLocator.findService("com.elan.crc.utilites.service.CRCRemoteServiceService"))! >
17<#assign clientProfileService = (serviceLocator.findService("com.elan.crc.user.service.CrcClientProfileLocalService"))! >
18<#assign clientProfileList = clientProfileService.findByLocationCode(lc)>
19<#assign clientProfile = clientProfileList?first>
20<#assign partnerName = clientProfile.getMarketingNameLong()>
21<#assign pbu = clientProfile.getPbu()>
22<#assign subbu = clientProfile.getSUBBRANDBUNBR()>
23<#assign cdnCardArtUrl = (propsUtil.get('rackspace.cdn.cardart.url'))!>
24
25
26<#assign fiCardsData = utilServ.makeCall('crcTier3GetPbuDataByFeaturedCard','0&'+ pbu + '&'+subbu + '&' + lc)>
27<#assign personalBusinessOfferTypes = utilServ.makeCall('SAA_DistinctCardOffers', '0')>
28
29<#assign personalOfferTypes = []>
30<#assign businessOfferTypes = []>
31
32<#list personalBusinessOfferTypes as pbOfferType>
33 <#if pbOfferType.groupname?has_content && pbOfferType.offertype?has_content>
34 <#if pbOfferType.groupname == "Personal">
35 <#assign personalOfferTypes += [pbOfferType.offertype]>
36 <#elseif pbOfferType.groupname == "Business">
37 <#assign businessOfferTypes += [pbOfferType.offertype]>
38 </#if>
39 </#if>
40</#list>
41
42
43<#assign productTypeValue = "">
44<#if productType.getData()?has_content>
45 <#assign productKey = productType.getData()>
46 <#assign productTypeValue = productType.optionsMap[productKey]>
47
48</#if>
49
50<#assign personalCards = []>
51<#assign businessCards = []>
52<#assign finalList = []>
53<#assign index = 0>
54
55<#list fiCardsData as fib>
56 <#if (fib.offerType?has_content)>
57 <#if (personalOfferTypes?seq_contains(fib.offerType))>
58 <#assign personalCards = personalCards + fiCardsData[index..index]>
59 <#elseif (businessOfferTypes?seq_contains(fib.offerType))>
60 <#assign businessCards = businessCards + fiCardsData[index..index]>
61 </#if>
62 </#if>
63 <#assign index = index + 1>
64</#list>
65
66
67<#if productTypeValue == "Personal">
68 <#list personalCards as personalCard>
69 <#if product.getSiblings()?has_content>
70 <#list product.getSiblings() as productItem>
71 <#if personalCard.offerType == productItem.productOfferType.getData()>
72 <#assign finalList = finalList + [personalCard]>
73 </#if>
74 </#list>
75 </#if>
76 </#list>
77<#elseif productTypeValue == "Business">
78 <#list businessCards as businessCard>
79 <#if product.getSiblings()?has_content>
80 <#list product.getSiblings() as productItem>
81 <#if businessCard.offerType == productItem.productOfferType.getData()>
82 <#assign finalList = finalList + [businessCard]>
83 </#if>
84 </#list>
85 </#if>
86 </#list>
87</#if>
88
89<#macro renderCards finalListMacro>
90 <#assign count = 0>
91 <#list finalListMacro as result>
92 <#if count < 3>
93 <#if product.getSiblings()?has_content>
94 <#list product.getSiblings() as productItem>
95 <#if result.offerType == productItem.productOfferType.getData()>
96
97 <#assign productOfferTypeValue = product.productOfferType.optionsMap[productItem.productOfferType.getData()]>
98 <#assign productOfferType = productOfferTypeValue?substring(productOfferTypeValue?index_of(" - ") + 3)!''>
99 <div class="card">
100 <div class="card__content">
101
102 <div class="card__content-left">
103 <#assign cardArtImage = cdnCardArtUrl + "/" + result.filename + ".png" >
104 <#assign cardArtImageAlt = cdnCardArtUrl + "/" + result.filename + ".jpg" >
105 <#assign cardArtImageAltText = partnerName + " " + productOfferType>
106 <img class="card__image" src="${cardArtImage!''}" alt="${cardArtImageAltText}" onerror="this.onerror=null;this.src='${cardArtImageAlt!''}'">
107
108 <#if (productItem.learnMoreURL.getData())??>
109 <a class="card__learn-more" href="${environment}${productItem.learnMoreURL.getData()!''}?ecdma-lc=${lc}" rel="noopener noreferrer">
110 Learn More <span class="sr-only">about ${productOfferType!''}</span>
111 </a>
112 </#if>
113
114 </div>
115
116
117 <div class="card__content-right">
118 <h3 class="product-offer-type">
119 ${productOfferType?upper_case!''}
120
121 <#if (productItem.cardNameFootnotes.getData())??>
122 <sup>${productItem.cardNameFootnotes.getData()}</sup>
123 </#if>
124 </h3>
125
126 <#if (productItem.offerCopy.getData())??>
127 <div class="offer-copy">
128 ${productItem.offerCopy.getData()}
129 </div>
130 </#if>
131
132 </div>
133 </div>
134 </div>
135
136 </#if>
137 </#list>
138 </#if>
139 <#assign count = count + 1>
140 </#if>
141 </#list>
142</#macro>
143
144<#if (finalList?? && finalList?has_content && finalList?size > 1)>
145 <#assign count = 0>
146 <#assign countGlider = 0>
147 <div class="${productTypeValue}-featured-cards tier3-syn-featured-cards-2024 <#if productTypeValue == 'Business'>hide</#if>" id="${uniqueID}">
148 <h2 id="featured-glider-label" class="super-head">FEATURED CREDIT CARD OFFERS</h2>
149 <div class="card-container">
150 <@renderCards finalListMacro=finalList />
151 </div>
152 <div class="featured-glider-container" aria-roledescription="carousel" aria-labelledby="featured-glider-label">
153 <div id="featured-glider-slides" class="featured-glider">
154 <@renderCards finalListMacro=finalList />
155 </div>
156 <button aria-label="Previous slide" class="glider-prev" aria-controls="featured-glider-slides"></button>
157 <button aria-label="Next slide" class="glider-next" aria-controls="featured-glider-slides"></button>
158 <div role="tablist" class="dots"></div>
159 </div>
160 </div>
161</#if>
162<style>
163 #content .tier3-syn-featured-cards-2024 {
164 max-width: 1336px;
165 padding: 0 20px;
166 margin: 0 auto;
167 }
168 @media (min-width: 1376px) {
169 #content .tier3-syn-featured-cards-2024 {
170 margin-top: 30px;
171 }
172 }
173 #content .tier3-syn-featured-cards-2024 .featured-glider-container {
174 display: block !important;
175 position: relative;
176 margin-bottom: 20px;
177 }
178 #content .tier3-syn-featured-cards-2024 .featured-glider-container .card {
179 flex: 375px;
180 }
181 @media (min-width: 1200px) {
182 #content .tier3-syn-featured-cards-2024 .featured-glider-container {
183 display: none !important;
184 }
185 }
186 #content .tier3-syn-featured-cards-2024 .featured-glider {
187 padding-top: 40px;
188 margin-bottom: 15px;
189 overflow-x: hidden;
190 }
191 #content .tier3-syn-featured-cards-2024 .card-container {
192 display: flex;
193 gap: 30px;
194 flex-wrap: nowrap;
195 justify-content: space-between;
196 margin-top: 40px;
197 margin-bottom: 60px;
198 display: none !important;
199 justify-content: center;
200
201 }
202 @media (min-width: 1200px) {
203 #content .tier3-syn-featured-cards-2024 .card-container {
204 display: flex !important;
205 }
206 }
207 #content .tier3-syn-featured-cards-2024 .card {
208 background-color: var(--ecdma-bg-color);
209 border-radius: 10px;
210 padding: 0 20px 15px 20px;
211 margin: 0 20px;
212 flex: 33%;
213 flex-grow: 0;
214 }
215 @media (min-width: 1200px) {
216 #content .tier3-syn-featured-cards-2024 .card {
217 margin: 0;
218 }
219 }
220 #content .tier3-syn-featured-cards-2024 .card__content {
221 display: flex;
222 height: 100%;
223 }
224 #content .tier3-syn-featured-cards-2024 .card__content-left {
225 display: flex;
226 flex-direction: column;
227 margin-right: 20px;
228 justify-content: space-between;
229 height: 100%;
230 }
231 #content .tier3-syn-featured-cards-2024 .card__content-right {
232 flex: 1;
233 margin-top: 20px;
234 }
235 #content .tier3-syn-featured-cards-2024 .card__image {
236 border-radius: 12px;
237 width: 100%;
238 height: auto;
239 border-radius: 8px;
240 max-width: 112px !important;
241 max-height: 112px;
242 margin-top: -10px;
243 object-fit: contain;
244 }
245 #content .tier3-syn-featured-cards-2024 .card__image--vertical {
246 margin-top: -20px;
247 }
248 #content .tier3-syn-featured-cards-2024 .product-offer-type {
249 margin-bottom: 6px;
250 color: white;
251 letter-spacing: 1px;
252 font-size: 13px;
253 font-weight: 400;
254 line-height: 1.5;
255 }
256 #content .tier3-syn-featured-cards-2024 .product-offer-type sup {
257 font-size: 10px;
258 line-height: 13px;
259 }
260 #content .tier3-syn-featured-cards-2024 .offer-copy {
261 color: white;
262 }
263 #content .tier3-syn-featured-cards-2024 .card__learn-more {
264 background-color: #fff;
265 border: 1px solid white;
266 color: var(--ecdma-text-color);
267 font-size: 13px;
268 cursor: pointer;
269 text-decoration: none;
270 text-align: center;
271 text-transform: capitalize;
272 line-height: 15px;
273 margin-top: 5px;
274 min-width: 112px;
275 height: 35px;
276 line-height: 35px;
277 }
278 #content .tier3-syn-featured-cards-2024 .card__learn-more:hover {
279 background-color: var(--ecdma-hover-color);
280 color: #fff;
281 }
282 #content .tier3-syn-featured-cards-2024 .card__learn-more:focus {
283 outline: 1px solid white;
284 outline-offset: 3px;
285 }
286</style>
287<script>
288/* This template is added to a single page multiple times. iife keeps glider/vars from overriding each other */
289(() => {
290 let featuredGlider = null;
291 if(document.querySelector('#${uniqueID}.tier3-syn-featured-cards-2024 .featured-glider')) {
292 featuredGlider = new Glider(document.querySelector('#${uniqueID}.tier3-syn-featured-cards-2024 .featured-glider'), {
293 slidesToShow: 'auto',
294 itemWidth: 375,
295 slidesToScroll: 1,
296 scrollLockDelay: 100,
297 draggable: true,
298 scrollLock: true,
299 arrows: {
300 prev: '#${uniqueID}.tier3-syn-featured-cards-2024 .glider-prev',
301 next: '#${uniqueID}.tier3-syn-featured-cards-2024 .glider-next'
302 },
303 dots: '#${uniqueID}.tier3-syn-featured-cards-2024 .dots',
304 });
305 }
306 const images = document.querySelectorAll('#${uniqueID}.tier3-syn-featured-cards-2024 .card__image');
307 images.forEach(img => {
308 const width = img.naturalWidth;
309 const height = img.naturalHeight;
310 if(height > width) {
311 img.classList.add('card__image--vertical');
312 }
313 });
314
315 AUI().ready(() => {
316 /* Make the slider the correct size after the theme and everything is loaded*/
317 if(document.querySelector('#${uniqueID}.tier3-syn-featured-cards-2024 .featured-glider')){
318 featuredGlider.refresh(false);
319 }
320
321 const productTypeValue = '${productTypeValue}';
322 const thisTabSelector = productTypeValue === "Personal"? '#tab-Personal' : '#tab-Business';
323 /* If the resize the screen and one of the featured card glider is hidden. The hidden glider dose not resize. On show of glider resize it. */
324 document.querySelectorAll(thisTabSelector).forEach(tab => {
325 tab.onclick = () => {
326 setTimeout(() => {featuredGlider.refresh(false);}, 0);
327 };
328 });
329 })
330})();
331</script>
An error occurred while processing the template.
The following has evaluated to null or missing: ==> qstringmap["ecdma-lc"] [in template "10154#10192#18372542" at line 6, column 14] ---- Tip: It's the final [] step that caused this error, not those before it. ---- Tip: If the failing expression is known to legally refer to something that's sometimes null or missing, either specify a default value like myOptionalVar!myDefault, or use <#if myOptionalVar??>when-present<#else>when-missing</#if>. (These only cover the last step of the expression; to cover the whole expression, use parenthesis: (myOptionalVar.foo)!myDefault, (myOptionalVar.foo)?? ---- ---- FTL stack trace ("~" means nesting-related): - Failed at: #assign lc = qstringmap["ecdma-lc"]?f... [in template "10154#10192#18372542" at line 6, column 1] ----
1<#assign uniqueID = randomNamespace />
2<#assign url = themeDisplay.getPortalURL() + themeDisplay.getURLCurrent()>
3<#assign qstringmap = httpUtil.getParameterMap(httpUtil.getQueryString(url))>
4<#assign environment = url?replace('/11t3/index.*','','r')>
5
6<#assign lc= qstringmap["ecdma-lc"]?first>
7<#assign lc = htmlUtil.escape(lc)>
8<#assign lc = htmlUtil.escapeJS(lc)>
9
10<#assign prefix = "00000" >
11<#assign lcWithPrefix = prefix + lc >
12<#assign withPrefixLength = lcWithPrefix?length >
13<#assign startHere = withPrefixLength - 5>
14<#assign lc = lcWithPrefix?substring(startHere)>
15
16<#assign utilServ = (serviceLocator.findService("com.elan.crc.utilites.service.CRCRemoteServiceService"))! >
17<#assign clientProfileService = (serviceLocator.findService("com.elan.crc.user.service.CrcClientProfileLocalService"))! >
18<#assign clientProfileList = clientProfileService.findByLocationCode(lc)>
19<#assign clientProfile = clientProfileList?first>
20<#assign partnerName = clientProfile.getMarketingNameLong()>
21<#assign pbu = clientProfile.getPbu()>
22<#assign subbu = clientProfile.getSUBBRANDBUNBR()>
23<#assign cdnCardArtUrl = (propsUtil.get('rackspace.cdn.cardart.url'))!>
24
25
26<#assign fiCardsData = utilServ.makeCall('crcTier3GetPbuDataByFeaturedCard','0&'+ pbu + '&'+subbu + '&' + lc)>
27<#assign personalBusinessOfferTypes = utilServ.makeCall('SAA_DistinctCardOffers', '0')>
28
29<#assign personalOfferTypes = []>
30<#assign businessOfferTypes = []>
31
32<#list personalBusinessOfferTypes as pbOfferType>
33 <#if pbOfferType.groupname?has_content && pbOfferType.offertype?has_content>
34 <#if pbOfferType.groupname == "Personal">
35 <#assign personalOfferTypes += [pbOfferType.offertype]>
36 <#elseif pbOfferType.groupname == "Business">
37 <#assign businessOfferTypes += [pbOfferType.offertype]>
38 </#if>
39 </#if>
40</#list>
41
42
43<#assign productTypeValue = "">
44<#if productType.getData()?has_content>
45 <#assign productKey = productType.getData()>
46 <#assign productTypeValue = productType.optionsMap[productKey]>
47
48</#if>
49
50<#assign personalCards = []>
51<#assign businessCards = []>
52<#assign finalList = []>
53<#assign index = 0>
54
55<#list fiCardsData as fib>
56 <#if (fib.offerType?has_content)>
57 <#if (personalOfferTypes?seq_contains(fib.offerType))>
58 <#assign personalCards = personalCards + fiCardsData[index..index]>
59 <#elseif (businessOfferTypes?seq_contains(fib.offerType))>
60 <#assign businessCards = businessCards + fiCardsData[index..index]>
61 </#if>
62 </#if>
63 <#assign index = index + 1>
64</#list>
65
66
67<#if productTypeValue == "Personal">
68 <#list personalCards as personalCard>
69 <#if product.getSiblings()?has_content>
70 <#list product.getSiblings() as productItem>
71 <#if personalCard.offerType == productItem.productOfferType.getData()>
72 <#assign finalList = finalList + [personalCard]>
73 </#if>
74 </#list>
75 </#if>
76 </#list>
77<#elseif productTypeValue == "Business">
78 <#list businessCards as businessCard>
79 <#if product.getSiblings()?has_content>
80 <#list product.getSiblings() as productItem>
81 <#if businessCard.offerType == productItem.productOfferType.getData()>
82 <#assign finalList = finalList + [businessCard]>
83 </#if>
84 </#list>
85 </#if>
86 </#list>
87</#if>
88
89<#macro renderCards finalListMacro>
90 <#assign count = 0>
91 <#list finalListMacro as result>
92 <#if count < 3>
93 <#if product.getSiblings()?has_content>
94 <#list product.getSiblings() as productItem>
95 <#if result.offerType == productItem.productOfferType.getData()>
96
97 <#assign productOfferTypeValue = product.productOfferType.optionsMap[productItem.productOfferType.getData()]>
98 <#assign productOfferType = productOfferTypeValue?substring(productOfferTypeValue?index_of(" - ") + 3)!''>
99 <div class="card">
100 <div class="card__content">
101
102 <div class="card__content-left">
103 <#assign cardArtImage = cdnCardArtUrl + "/" + result.filename + ".png" >
104 <#assign cardArtImageAlt = cdnCardArtUrl + "/" + result.filename + ".jpg" >
105 <#assign cardArtImageAltText = partnerName + " " + productOfferType>
106 <img class="card__image" src="${cardArtImage!''}" alt="${cardArtImageAltText}" onerror="this.onerror=null;this.src='${cardArtImageAlt!''}'">
107
108 <#if (productItem.learnMoreURL.getData())??>
109 <a class="card__learn-more" href="${environment}${productItem.learnMoreURL.getData()!''}?ecdma-lc=${lc}" rel="noopener noreferrer">
110 Learn More <span class="sr-only">about ${productOfferType!''}</span>
111 </a>
112 </#if>
113
114 </div>
115
116
117 <div class="card__content-right">
118 <h3 class="product-offer-type">
119 ${productOfferType?upper_case!''}
120
121 <#if (productItem.cardNameFootnotes.getData())??>
122 <sup>${productItem.cardNameFootnotes.getData()}</sup>
123 </#if>
124 </h3>
125
126 <#if (productItem.offerCopy.getData())??>
127 <div class="offer-copy">
128 ${productItem.offerCopy.getData()}
129 </div>
130 </#if>
131
132 </div>
133 </div>
134 </div>
135
136 </#if>
137 </#list>
138 </#if>
139 <#assign count = count + 1>
140 </#if>
141 </#list>
142</#macro>
143
144<#if (finalList?? && finalList?has_content && finalList?size > 1)>
145 <#assign count = 0>
146 <#assign countGlider = 0>
147 <div class="${productTypeValue}-featured-cards tier3-syn-featured-cards-2024 <#if productTypeValue == 'Business'>hide</#if>" id="${uniqueID}">
148 <h2 id="featured-glider-label" class="super-head">FEATURED CREDIT CARD OFFERS</h2>
149 <div class="card-container">
150 <@renderCards finalListMacro=finalList />
151 </div>
152 <div class="featured-glider-container" aria-roledescription="carousel" aria-labelledby="featured-glider-label">
153 <div id="featured-glider-slides" class="featured-glider">
154 <@renderCards finalListMacro=finalList />
155 </div>
156 <button aria-label="Previous slide" class="glider-prev" aria-controls="featured-glider-slides"></button>
157 <button aria-label="Next slide" class="glider-next" aria-controls="featured-glider-slides"></button>
158 <div role="tablist" class="dots"></div>
159 </div>
160 </div>
161</#if>
162<style>
163 #content .tier3-syn-featured-cards-2024 {
164 max-width: 1336px;
165 padding: 0 20px;
166 margin: 0 auto;
167 }
168 @media (min-width: 1376px) {
169 #content .tier3-syn-featured-cards-2024 {
170 margin-top: 30px;
171 }
172 }
173 #content .tier3-syn-featured-cards-2024 .featured-glider-container {
174 display: block !important;
175 position: relative;
176 margin-bottom: 20px;
177 }
178 #content .tier3-syn-featured-cards-2024 .featured-glider-container .card {
179 flex: 375px;
180 }
181 @media (min-width: 1200px) {
182 #content .tier3-syn-featured-cards-2024 .featured-glider-container {
183 display: none !important;
184 }
185 }
186 #content .tier3-syn-featured-cards-2024 .featured-glider {
187 padding-top: 40px;
188 margin-bottom: 15px;
189 overflow-x: hidden;
190 }
191 #content .tier3-syn-featured-cards-2024 .card-container {
192 display: flex;
193 gap: 30px;
194 flex-wrap: nowrap;
195 justify-content: space-between;
196 margin-top: 40px;
197 margin-bottom: 60px;
198 display: none !important;
199 justify-content: center;
200
201 }
202 @media (min-width: 1200px) {
203 #content .tier3-syn-featured-cards-2024 .card-container {
204 display: flex !important;
205 }
206 }
207 #content .tier3-syn-featured-cards-2024 .card {
208 background-color: var(--ecdma-bg-color);
209 border-radius: 10px;
210 padding: 0 20px 15px 20px;
211 margin: 0 20px;
212 flex: 33%;
213 flex-grow: 0;
214 }
215 @media (min-width: 1200px) {
216 #content .tier3-syn-featured-cards-2024 .card {
217 margin: 0;
218 }
219 }
220 #content .tier3-syn-featured-cards-2024 .card__content {
221 display: flex;
222 height: 100%;
223 }
224 #content .tier3-syn-featured-cards-2024 .card__content-left {
225 display: flex;
226 flex-direction: column;
227 margin-right: 20px;
228 justify-content: space-between;
229 height: 100%;
230 }
231 #content .tier3-syn-featured-cards-2024 .card__content-right {
232 flex: 1;
233 margin-top: 20px;
234 }
235 #content .tier3-syn-featured-cards-2024 .card__image {
236 border-radius: 12px;
237 width: 100%;
238 height: auto;
239 border-radius: 8px;
240 max-width: 112px !important;
241 max-height: 112px;
242 margin-top: -10px;
243 object-fit: contain;
244 }
245 #content .tier3-syn-featured-cards-2024 .card__image--vertical {
246 margin-top: -20px;
247 }
248 #content .tier3-syn-featured-cards-2024 .product-offer-type {
249 margin-bottom: 6px;
250 color: white;
251 letter-spacing: 1px;
252 font-size: 13px;
253 font-weight: 400;
254 line-height: 1.5;
255 }
256 #content .tier3-syn-featured-cards-2024 .product-offer-type sup {
257 font-size: 10px;
258 line-height: 13px;
259 }
260 #content .tier3-syn-featured-cards-2024 .offer-copy {
261 color: white;
262 }
263 #content .tier3-syn-featured-cards-2024 .card__learn-more {
264 background-color: #fff;
265 border: 1px solid white;
266 color: var(--ecdma-text-color);
267 font-size: 13px;
268 cursor: pointer;
269 text-decoration: none;
270 text-align: center;
271 text-transform: capitalize;
272 line-height: 15px;
273 margin-top: 5px;
274 min-width: 112px;
275 height: 35px;
276 line-height: 35px;
277 }
278 #content .tier3-syn-featured-cards-2024 .card__learn-more:hover {
279 background-color: var(--ecdma-hover-color);
280 color: #fff;
281 }
282 #content .tier3-syn-featured-cards-2024 .card__learn-more:focus {
283 outline: 1px solid white;
284 outline-offset: 3px;
285 }
286</style>
287<script>
288/* This template is added to a single page multiple times. iife keeps glider/vars from overriding each other */
289(() => {
290 let featuredGlider = null;
291 if(document.querySelector('#${uniqueID}.tier3-syn-featured-cards-2024 .featured-glider')) {
292 featuredGlider = new Glider(document.querySelector('#${uniqueID}.tier3-syn-featured-cards-2024 .featured-glider'), {
293 slidesToShow: 'auto',
294 itemWidth: 375,
295 slidesToScroll: 1,
296 scrollLockDelay: 100,
297 draggable: true,
298 scrollLock: true,
299 arrows: {
300 prev: '#${uniqueID}.tier3-syn-featured-cards-2024 .glider-prev',
301 next: '#${uniqueID}.tier3-syn-featured-cards-2024 .glider-next'
302 },
303 dots: '#${uniqueID}.tier3-syn-featured-cards-2024 .dots',
304 });
305 }
306 const images = document.querySelectorAll('#${uniqueID}.tier3-syn-featured-cards-2024 .card__image');
307 images.forEach(img => {
308 const width = img.naturalWidth;
309 const height = img.naturalHeight;
310 if(height > width) {
311 img.classList.add('card__image--vertical');
312 }
313 });
314
315 AUI().ready(() => {
316 /* Make the slider the correct size after the theme and everything is loaded*/
317 if(document.querySelector('#${uniqueID}.tier3-syn-featured-cards-2024 .featured-glider')){
318 featuredGlider.refresh(false);
319 }
320
321 const productTypeValue = '${productTypeValue}';
322 const thisTabSelector = productTypeValue === "Personal"? '#tab-Personal' : '#tab-Business';
323 /* If the resize the screen and one of the featured card glider is hidden. The hidden glider dose not resize. On show of glider resize it. */
324 document.querySelectorAll(thisTabSelector).forEach(tab => {
325 tab.onclick = () => {
326 setTimeout(() => {featuredGlider.refresh(false);}, 0);
327 };
328 });
329 })
330})();
331</script>
An error occurred while processing the template.
The following has evaluated to null or missing: ==> qstringmap["ecdma-lc"] [in template "10154#10192#460256133" at line 3, column 14] ---- Tip: It's the final [] step that caused this error, not those before it. ---- Tip: If the failing expression is known to legally refer to something that's sometimes null or missing, either specify a default value like myOptionalVar!myDefault, or use <#if myOptionalVar??>when-present<#else>when-missing</#if>. (These only cover the last step of the expression; to cover the whole expression, use parenthesis: (myOptionalVar.foo)!myDefault, (myOptionalVar.foo)?? ---- ---- FTL stack trace ("~" means nesting-related): - Failed at: #assign lc = qstringmap["ecdma-lc"]?f... [in template "10154#10192#460256133" at line 3, column 1] ----
1<#assign url = themeDisplay.getPortalURL() + themeDisplay.getURLCurrent()>
2<#assign qstringmap = httpUtil.getParameterMap(httpUtil.getQueryString(url))>
3<#assign lc= qstringmap["ecdma-lc"]?first>
4<#assign lc = htmlUtil.escape(lc)>
5<#assign lc = htmlUtil.escapeJS(lc)>
6
7<#assign prefix = "00000" >
8<#assign lcWithPrefix = prefix + lc >
9<#assign withPrefixLength = lcWithPrefix?length >
10<#assign startHere = withPrefixLength - 5>
11<#assign lc = lcWithPrefix?substring(startHere)>
12
13<#assign utilServ = (serviceLocator.findService("com.elan.crc.utilites.service.CRCRemoteServiceService"))! >
14<#assign clientProfileService = (serviceLocator.findService("com.elan.crc.user.service.CrcClientProfileLocalService"))! >
15<#assign clientProfileList = clientProfileService.findByLocationCode(lc)>
16<#assign clientProfile = clientProfileList?first>
17<#assign pbu = clientProfile.getPbu()>
18<#assign subbu = clientProfile.getSUBBRANDBUNBR()>
19<#assign fiCardsDataWT = utilServ.makeCall('crcTier3GetPbuData','0&'+ pbu + '&'+subbu + '&' + lc)>
20<#assign personalBusinessWT = utilServ.makeCall('SAA_PillGrouping', '0')>
21<#assign personalWT = []>
22<#assign businessWT = []>
23
24<#list personalBusinessWT as pbWT>
25 <#if pbWT.groupName?has_content && pbWT.offerType?has_content && pbWT.pillName?has_content> <#if pbWT.groupName == "Personal">
26 <#assign personalWT += [pbWT]>
27
28 <#elseif pbWT.groupName == "Business">
29 <#assign businessWT += [pbWT]>
30
31 </#if>
32 </#if>
33</#list>
34
35
36<#assign fiPersonalRaw = personalWT?filter(personalPill -> fiCardsDataWT?filter(fib -> personalPill.offerType == fib.offerType)?size > 0)>
37<#assign fiBusinessRaw = businessWT?filter(businessPill -> fiCardsDataWT?filter(fib -> businessPill.offerType == fib.offerType)?size > 0)>
38
39<#assign fiPersonalWT = []>
40<#list fiPersonalRaw as item>
41 <#if !(fiPersonalWT?map(it -> it.offerType)?seq_contains(item.offerType))>
42 <#assign fiPersonalWT += [item]>
43 </#if>
44</#list>
45
46<#assign fiBusinessWT = []>
47<#list fiBusinessRaw as item>
48 <#if !(fiBusinessWT?map(it -> it.offerType)?seq_contains(item.offerType))>
49 <#assign fiBusinessWT += [item]>
50 </#if>
51</#list>
52
53<#assign fiPersonalSizeWT = fiPersonalWT?size />
54<#assign fiBusinessSizeWT = fiBusinessWT?size />
55
56<#assign hasTabs = entries?has_content>
57<#assign PersonalTab = "Personal">
58<#assign BusinessTab = "Business">
59
60<#if hasTabs>
61 <div class="Tier3-Syn-Tabs-2024-Feature">
62 <#if (fiPersonalSizeWT > 0 && fiBusinessSizeWT >0 ) >
63 <div role="tablist" class="card-type-tabs" aria-label="Choose a credit card type to explore details">
64 <button
65 id="tab-Personal"
66 role="tab"
67 class="card-type-tabs__button"
68 aria-selected="true"
69 aria-controls="content-Personal"
70 data-tab="content-Personal">
71 ${PersonalTab}
72 </button>
73 <button
74 id="tab-Business"
75 role="tab"
76 class="card-type-tabs__button"
77 aria-selected="false"
78 aria-controls="content-Business"
79 data-tab="content-Business">
80 ${BusinessTab}
81 </button>
82 </div>
83 </#if>
84 <div class="all-card-types-content">
85 <#if (fiPersonalSizeWT > 0)>
86 <div
87 id="content-Personal"
88 class="card-type-content"
89 role="tabpanel"
90 aria-labelledby="tab-Personal"
91 style="display: block;">
92
93 <#list entries as entry>
94 <#if entry_index == 0>
95 <#assign assetRenderer = entry.getAssetRenderer() />
96 <@liferay_journal["journal-article"]
97 articleId=assetRenderer.getAssetObject().articleId
98 ddmTemplateKey=assetRenderer.getAssetObject().ddmTemplateKey
99 groupId=assetRenderer.getAssetObject().groupId />
100 </#if>
101 </#list>
102 </div>
103 </#if>
104 <#if (fiBusinessSizeWT > 0)>
105 <div
106 id="content-Business"
107 class="card-type-content"
108 role="tabpanel"
109 aria-labelledby="tab-Business"
110 style="display: none;">
111
112 <#list entries as entry>
113 <#if entry_index == 1>
114 <#assign assetRenderer = entry.getAssetRenderer() />
115 <@liferay_journal["journal-article"]
116 articleId=assetRenderer.getAssetObject().articleId
117 ddmTemplateKey=assetRenderer.getAssetObject().ddmTemplateKey
118 groupId=assetRenderer.getAssetObject().groupId />
119 </#if>
120 </#list>
121 </div>
122 </#if>
123 </div>
124 </div>
125</#if>
126
127<script>
128 AUI().ready(() => {
129 if(${fiPersonalSizeWT} > 0) {
130 hideOrShowDisclaimers("Personal");
131 } else {
132 hideOrShowDisclaimers("Business");
133 }
134 if (window.location.hash === '#business') {
135 const businessTab = document.getElementById('tab-Business');
136 if (businessTab) {
137 businessTab.click();
138 }
139 }
140 });
141 function setPillAndSelectToDefault() {
142 const buttons = document.querySelectorAll('.Tier3-Syn-Tabs-2024 .card-feature-pills__button');
143 buttons.forEach(button => {
144 button.classList.remove('active');
145 button.setAttribute('aria-selected', 'false');
146 });
147
148 buttons.forEach(button => {
149 if (button.getAttribute('data-pill') === 'All Cards') {
150 button.classList.add('active');
151 button.setAttribute('aria-selected', 'true');
152 }
153 });
154
155 const cardFeatureSelect = document.querySelectorAll('.Tier3-Syn-Tabs-2024 .card-feature-select' );
156 cardFeatureSelect.forEach(select=> {
157 if(select.value) {
158 select.value = 'All Cards';
159 }
160 });
161 }
162 document.addEventListener("DOMContentLoaded", function () {
163 const tabs = document.querySelectorAll(".card-type-tabs__button");
164 const tabContents = document.querySelectorAll(".card-type-content");
165
166 tabs.forEach((tab) => {
167 tab.addEventListener("click", () => {
168
169 tabs.forEach((t) => t.setAttribute("aria-selected", "false"));
170
171 tabContents.forEach((content) => {
172 content.style.display = "none";
173 });
174
175 tab.setAttribute("aria-selected", "true");
176
177 const targetContent = document.getElementById(tab.dataset.tab);
178 targetContent.style.display = "block";
179
180 const productType = tab.textContent.trim(); // Get the tab label as the product type
181 widgetButtonSlection(productType);
182 });
183 });
184 });
185
186 function widgetButtonSlection( productType) {
187 hideOrShowFeaturedCards(productType);
188 hideOrShowDisclaimers(productType);
189 hideAllPillSections();
190 document.getElementById("allcards-container-"+productType).style.display = "block";
191 setPillAndSelectToDefault();
192 }
193
194 function hideAllPillSections() {
195 document.getElementById("allcards-container-Personal").style.display = "none";
196 document.getElementById("cashback-container-Personal").style.display = "none";
197 document.getElementById("points-container-Personal").style.display = "none";
198 document.getElementById("travel-container-Personal").style.display = "none";
199 document.getElementById("noannualfee-container-Personal").style.display = "none";
200 document.getElementById("buildcredit-container-Personal").style.display = "none";
201 document.getElementById("lowintrorate-container-Personal").style.display = "none";
202
203 document.getElementById("allcards-container-Business").style.display = "none";
204 document.getElementById("cashback-container-Business").style.display = "none";
205 document.getElementById("points-container-Business").style.display = "none";
206 document.getElementById("travel-container-Business").style.display = "none";
207 document.getElementById("noannualfee-container-Business").style.display = "none";
208 document.getElementById("buildcredit-container-Business").style.display = "none";
209 document.getElementById("lowintrorate-container-Business").style.display = "none";
210 }
211
212 function hideOrShowFeaturedCards(type) {
213 const personalFeaturedCards = document.querySelector('.Personal-featured-cards');
214 const businessFeaturedCards = document.querySelector('.Business-featured-cards');
215
216 if (type === "Personal") {
217 if (personalFeaturedCards) {
218 personalFeaturedCards.classList.remove('hide');
219 }
220 if (businessFeaturedCards) {
221 businessFeaturedCards.classList.add('hide');
222 }
223 } else if (type === "Business") {
224 if (businessFeaturedCards) {
225 businessFeaturedCards.classList.remove('hide');
226 }
227 if (personalFeaturedCards) {
228 personalFeaturedCards.classList.add('hide');
229 }
230 }
231 }
232
233 function hideOrShowDisclaimers(type) {
234 const personalDisclaimers = document.querySelector('.tier3-disclaimer-landing-consumer');
235 const businessDisclaimers = document.querySelector('.tier3-disclaimer-landing-business');
236 if (type === "Personal") {
237 if (personalDisclaimers) {
238 personalDisclaimers.classList.remove('hide');
239 }
240 if (businessDisclaimers) {
241 businessDisclaimers.classList.add('hide');
242 }
243 } else if (type === "Business") {
244 if (businessDisclaimers) {
245 businessDisclaimers.classList.remove('hide');
246 }
247 if (personalDisclaimers) {
248 personalDisclaimers.classList.add('hide');
249 }
250 }
251 }
252</script>
253
254<style>
255 .Tier3-Syn-Tabs-2024-Feature {
256 /*@include page-width-container;*/
257 max-width: 1336px;
258 margin: 0 20px;
259 }
260 @media (min-width: 1376px) {
261 .Tier3-Syn-Tabs-2024-Feature {
262 margin: 0 auto;
263 }
264 }
265 .card-type-tabs {
266 display: flex;
267 justify-content: flex-start;
268 border-bottom: 1px solid #cccccc;
269 }
270
271 .card-type-tabs__button {
272 align-items: center;
273 background-color: transparent;
274 border: none;
275 border-bottom: 4px solid transparent;
276 color: #333;
277 display: flex;
278 flex-direction: column;
279 justify-content: center;
280 padding: 10px 30px;
281 text-align: center;
282 font-size: 20px;
283 font-weight: 700;
284 line-height: 25px;
285 margin-bottom: -1px;
286 flex: 1;
287 }
288 @media (min-width: 992px) {
289 .card-type-tabs__button {
290 flex: 0;
291 }
292 }
293 .card-type-tabs__button:focus {
294 outline: 1px solid #173989;
295 }
296 .card-type-tabs__button[aria-selected="true"] {
297 color: var(--ecdma-text-color);
298 border-bottom: 4px solid var(--ecdma-text-color);
299 }
300 .card-type-tabs__button:hover {
301 color: var(--ecdma-hover-color);
302 border-bottom: 4px solid var(--ecdma-hover-color);
303 }
304
305 .all-card-types-content {
306 }
307
308 .card-type-content {
309 display: none;
310 }
311
312 .card-type-content[style="display: block;"] {
313 display: block !important;
314 }
315
316</style>
An error occurred while processing the template.
The following has evaluated to null or missing: ==> qstringmap["ecdma-lc"] [in template "10154#10192#18387094" at line 5, column 15] ---- Tip: It's the final [] step that caused this error, not those before it. ---- Tip: If the failing expression is known to legally refer to something that's sometimes null or missing, either specify a default value like myOptionalVar!myDefault, or use <#if myOptionalVar??>when-present<#else>when-missing</#if>. (These only cover the last step of the expression; to cover the whole expression, use parenthesis: (myOptionalVar.foo)!myDefault, (myOptionalVar.foo)?? ---- ---- FTL stack trace ("~" means nesting-related): - Failed at: #assign lc = qstringmap["ecdma-lc"]?f... [in template "10154#10192#18387094" at line 5, column 1] ----
1<#assign utilServ = (serviceLocator.findService("com.elan.crc.utilites.service.CRCRemoteServiceService"))! />
2<#assign url = themeDisplay.getPortalURL() + themeDisplay.getURLCurrent()/>
3<#assign qstringmap = httpUtil.getParameterMap(httpUtil.getQueryString(url))>
4
5<#assign lc = qstringmap["ecdma-lc"]?first>
6<#assign lc = htmlUtil.escape(lc)>
7<#assign lc = htmlUtil.escapeJS(lc)>
8
9<#assign prefix = "00000" >
10<#assign lcWithPrefix = prefix + lc >
11<#assign withPrefixLength = lcWithPrefix?length >
12<#assign startHere = withPrefixLength - 5>
13<#assign lc = lcWithPrefix?substring(startHere)>
14<#if lc?has_content>
15
16 <#assign clientProfileService = (serviceLocator.findService("com.elan.crc.user.service.CrcClientProfileLocalService"))! >
17 <#assign clientProfileList = clientProfileService.findByLocationCode(lc)>
18 <#assign clientProfile = clientProfileList?first>
19 <#assign partnerName = clientProfile.getMarketingNameLong()>
20
21 <#assign pbu = clientProfile.getPbu()>
22 <#assign subbu = clientProfile.getSUBBRANDBUNBR()>
23
24 <#assign fultonBankpbu = "0727491">
25 <#if pbu == fultonBankpbu>
26 <style>
27 #hideFultonInfo {
28 display: none;
29 }
30 </style>
31 </#if>
32
33 <#assign fiCardsData = utilServ.makeCall('crcTier3GetPbuData','0&'+ pbu +'&'+subbu)>
34 <#if (fiCardsData?size > 0) >
35 <#assign cardProvider = utilServ.makeCall('crcDDCGetMcOrVisa', fiCardsData[0].offerType + '&' + lc)>
36
37 <#if (cardProvider?size > 0)>
38 <#-- This will be V for visa or M for mastercard. -->
39 <#assign cardProviderAbbreviated = cardProvider[0].cardType>
40 <#else>
41 <script>
42 console.log("No card provider(Visa/Master Card) found for disclaimer");
43 </script>
44 </#if>
45
46 <div class="page-disclaimer tier3-disclaimer-${class.getData()}" title="${partnerName!''} - Disclaimer">
47 <div class="page-disclaimer__content">
48 <#if pbuList.getData()?has_content && pbuList.getData()?contains(pbu) && disclaimerBank.getData()?has_content>
49 ${disclaimerBank.getData()}
50 <#else>
51 <#if (disclaimersVisa?has_content && cardProviderAbbreviated?contains("V"))>
52 ${disclaimersVisa.getData()}
53 </#if>
54 <#if (disclaimersMasterCard?has_content && cardProviderAbbreviated?contains("M")) >
55 ${disclaimersMasterCard.getData()}
56 </#if>
57 </#if>
58 </div>
59 </div>
60 <#else>
61 <script>
62 console.log("card data empty");
63 </script>
64 </#if>
65<#else>
66 <script>
67 console.log("No lc for disclaimer");
68 </script>
69</#if>
An error occurred while processing the template.
The following has evaluated to null or missing: ==> qstringmap["ecdma-lc"] [in template "10154#10192#18387094" at line 5, column 15] ---- Tip: It's the final [] step that caused this error, not those before it. ---- Tip: If the failing expression is known to legally refer to something that's sometimes null or missing, either specify a default value like myOptionalVar!myDefault, or use <#if myOptionalVar??>when-present<#else>when-missing</#if>. (These only cover the last step of the expression; to cover the whole expression, use parenthesis: (myOptionalVar.foo)!myDefault, (myOptionalVar.foo)?? ---- ---- FTL stack trace ("~" means nesting-related): - Failed at: #assign lc = qstringmap["ecdma-lc"]?f... [in template "10154#10192#18387094" at line 5, column 1] ----
1<#assign utilServ = (serviceLocator.findService("com.elan.crc.utilites.service.CRCRemoteServiceService"))! />
2<#assign url = themeDisplay.getPortalURL() + themeDisplay.getURLCurrent()/>
3<#assign qstringmap = httpUtil.getParameterMap(httpUtil.getQueryString(url))>
4
5<#assign lc = qstringmap["ecdma-lc"]?first>
6<#assign lc = htmlUtil.escape(lc)>
7<#assign lc = htmlUtil.escapeJS(lc)>
8
9<#assign prefix = "00000" >
10<#assign lcWithPrefix = prefix + lc >
11<#assign withPrefixLength = lcWithPrefix?length >
12<#assign startHere = withPrefixLength - 5>
13<#assign lc = lcWithPrefix?substring(startHere)>
14<#if lc?has_content>
15
16 <#assign clientProfileService = (serviceLocator.findService("com.elan.crc.user.service.CrcClientProfileLocalService"))! >
17 <#assign clientProfileList = clientProfileService.findByLocationCode(lc)>
18 <#assign clientProfile = clientProfileList?first>
19 <#assign partnerName = clientProfile.getMarketingNameLong()>
20
21 <#assign pbu = clientProfile.getPbu()>
22 <#assign subbu = clientProfile.getSUBBRANDBUNBR()>
23
24 <#assign fultonBankpbu = "0727491">
25 <#if pbu == fultonBankpbu>
26 <style>
27 #hideFultonInfo {
28 display: none;
29 }
30 </style>
31 </#if>
32
33 <#assign fiCardsData = utilServ.makeCall('crcTier3GetPbuData','0&'+ pbu +'&'+subbu)>
34 <#if (fiCardsData?size > 0) >
35 <#assign cardProvider = utilServ.makeCall('crcDDCGetMcOrVisa', fiCardsData[0].offerType + '&' + lc)>
36
37 <#if (cardProvider?size > 0)>
38 <#-- This will be V for visa or M for mastercard. -->
39 <#assign cardProviderAbbreviated = cardProvider[0].cardType>
40 <#else>
41 <script>
42 console.log("No card provider(Visa/Master Card) found for disclaimer");
43 </script>
44 </#if>
45
46 <div class="page-disclaimer tier3-disclaimer-${class.getData()}" title="${partnerName!''} - Disclaimer">
47 <div class="page-disclaimer__content">
48 <#if pbuList.getData()?has_content && pbuList.getData()?contains(pbu) && disclaimerBank.getData()?has_content>
49 ${disclaimerBank.getData()}
50 <#else>
51 <#if (disclaimersVisa?has_content && cardProviderAbbreviated?contains("V"))>
52 ${disclaimersVisa.getData()}
53 </#if>
54 <#if (disclaimersMasterCard?has_content && cardProviderAbbreviated?contains("M")) >
55 ${disclaimersMasterCard.getData()}
56 </#if>
57 </#if>
58 </div>
59 </div>
60 <#else>
61 <script>
62 console.log("card data empty");
63 </script>
64 </#if>
65<#else>
66 <script>
67 console.log("No lc for disclaimer");
68 </script>
69</#if>
An error occurred while processing the template.
The following has evaluated to null or missing: ==> qstringmap["ecdma-lc"] [in template "10154#10192#18387099" at line 3, column 15] ---- Tip: It's the final [] step that caused this error, not those before it. ---- Tip: If the failing expression is known to legally refer to something that's sometimes null or missing, either specify a default value like myOptionalVar!myDefault, or use <#if myOptionalVar??>when-present<#else>when-missing</#if>. (These only cover the last step of the expression; to cover the whole expression, use parenthesis: (myOptionalVar.foo)!myDefault, (myOptionalVar.foo)?? ---- ---- FTL stack trace ("~" means nesting-related): - Failed at: #assign lc = qstringmap["ecdma-lc"]?f... [in template "10154#10192#18387099" at line 3, column 1] ----
1<#assign url = themeDisplay.getPortalURL() + themeDisplay.getURLCurrent()/>
2<#assign qstringmap = httpUtil.getParameterMap(httpUtil.getQueryString(url))>
3<#assign lc = qstringmap["ecdma-lc"]?first>
4<#assign lc = htmlUtil.escape(lc)>
5<#assign lc = htmlUtil.escapeJS(lc)>
6
7<#if (lc?has_content && lc?length gt 5)>
8 <#assign lc = lc[0..4] >
9</#if>
10<#assign lc = lc?web_safe>
11<#assign aDateTime = .now>
12<#assign currentYear = aDateTime?string.yyyy>
13
14
15<footer class="page-footer" id="footerIdAdPlatinum">
16 <div class="page-footer__content">
17 ${footerContent.getData()}
18 </div>
19</footer>
20
21<!-- BEGIN CALIFORNIA OPT-OUT MODAL STYLE AND MARKUP -->
22<script src="https://unpkg.com/micromodal/dist/micromodal.min.js"></script>
23<style>
24 #opt-out-button,
25 .modal__btn.learn-more {
26 background: #0C2074;
27 border: 1px solid #0C2074;
28 color: white;
29 text-transform: uppercase;
30 text-decoration: none;
31 font-size: 16px;
32 padding: 0.5rem 2rem;
33 display: inline-block;
34 border-radius: 0;
35 }
36 #opt-out-button:hover,
37 .modal__btn.learn-more:hover {
38 color: white !important;
39 border-color: #2C76AF !important;
40 background-color: #2C76AF !important;
41 }
42 .modal .modal__btn.learn-more {
43 background: white;
44 border: 1px solid #0C2074;
45 color: #0C2074;
46 text-decoration: none;
47 }
48 #opt-out-button[disabled="true"] {
49 background-color: rgba(0,0,0,.15);
50 color: rgba(0,0,0,.45);
51 border-color: rgba(0,0,0,.25);
52 }
53 #opt-out-button:hover[disabled="true"] {
54 background-color: rgba(0,0,0,.15) !important;
55 color: rgba(0,0,0,.45) !important;
56 border-color: rgba(0,0,0,.25) !important;
57 }
58 #opt-out-button:focus {
59 outline-style: solid;
60 outline-color: white;
61 outline-offset: -3px;
62 outline-width: 1px;
63 }
64 .opt-out-link svg {
65 width: 30px;
66 height: 14px;
67 width: auto;
68 vertical-align: middle;
69 }
70 .modal__overlay {
71 position: fixed;
72 top: 0;
73 left: 0;
74 right: 0;
75 bottom: 0;
76 background: rgba(0,0,0,0.6);
77 display: flex;
78 justify-content: center;
79 align-items: center;
80 }
81
82 .modal__container {
83 background-color: #fff;
84 padding: 30px;
85 max-width: 500px;
86 max-height: 100vh;
87 border-radius: 4px;
88 overflow-y: auto;
89 box-sizing: border-box;
90 }
91
92 .modal__header {
93 display: flex;
94 justify-content: space-between;
95 align-items: center;
96 }
97
98 .modal .modal__container .modal__title {
99 margin-top: 0;
100 margin-bottom: 0;
101 font-weight: 600;
102 font-size: 20px;
103 line-height: 1.25;
104 color: #00449e;
105 box-sizing: border-box;
106 }
107
108 .modal__close {
109 background: transparent;
110 border: 1px solid white;
111 padding: 4px 8px;
112 }
113 .modal__close:hover {
114 border: 1px solid black;
115 }
116
117 .modal__header .modal__close:before { content: "\2715"; }
118
119 .modal__content {
120 margin-top: 2rem;
121 margin-bottom: 2rem;
122 line-height: 1.5;
123 }
124
125 @keyframes mmfadeIn {
126 from { opacity: 0; }
127 to { opacity: 1; }
128 }
129
130 @keyframes mmfadeOut {
131 from { opacity: 1; }
132 to { opacity: 0; }
133 }
134
135 @keyframes mmslideIn {
136 from { transform: translateY(15%); }
137 to { transform: translateY(0); }
138 }
139
140 @keyframes mmslideOut {
141 from { transform: translateY(0); }
142 to { transform: translateY(-10%); }
143 }
144
145 .micromodal-slide {
146 display: none;
147 }
148
149 .micromodal-slide.is-open {
150 display: block;
151 }
152
153 .micromodal-slide[aria-hidden="false"] .modal__overlay {
154 animation: mmfadeIn .3s cubic-bezier(0.0, 0.0, 0.2, 1);
155 }
156
157 .micromodal-slide[aria-hidden="false"] .modal__container {
158 animation: mmslideIn .3s cubic-bezier(0, 0, .2, 1);
159 }
160
161 .micromodal-slide[aria-hidden="true"] .modal__overlay {
162 animation: mmfadeOut .3s cubic-bezier(0.0, 0.0, 0.2, 1);
163 }
164
165 .micromodal-slide[aria-hidden="true"] .modal__container {
166 animation: mmslideOut .3s cubic-bezier(0, 0, .2, 1);
167 }
168
169 .micromodal-slide .modal__container,
170 .micromodal-slide .modal__overlay {
171 will-change: transform;
172 }
173</style>
174
175<div class="modal micromodal-slide" id="modal-1" aria-hidden="true">
176<div class="modal__overlay" tabindex="-1" data-micromodal-close>
177 <div class="modal__container" role="dialog" aria-modal="true" aria-labelledby="modal-1-title">
178 <header class="modal__header">
179 <h2 class="modal__title" id="modal-1-title">
180 Your California privacy choices
181 </h2>
182 <button class="modal__close" aria-label="Close modal" data-micromodal-close></button>
183 </header>
184 <div class="modal__content" id="modal-1-content">
185 <div id="message-no-cookie">
186 <p>
187 We use technologies, such as cookies, that gather information on our website. That information is used for a variety of purposes, such as to understand how visitors interact with our websites, or to serve advertisements on our websites or on other websites. The use of technologies, such as cookies, constitutes a ‘share’ or ‘sale’ of personal information under the California Privacy Rights Act. You can stop the use of certain third-party tracking technologies that are not considered our service providers by clicking on “Opt-Out” below or by broadcasting the global privacy control signal.</p>
188
189<p> </p>
190
191<p>Note that due to technological limitations, if you visit our website from a different computer or device, or clear cookies on your browser that store your preferences, you will need to return to this screen to opt-out and/or rebroadcast the signal. You can find a description of the types of tracking technologies, and your options with respect to those technologies, by clicking “Learn more” below.</p>
192 </div>
193 <div id="message-with-cookie">
194 <p>You have successfully opted-out.</p>
195 </div>
196 </div>
197 <div class="modal__footer">
198 <a href="https://www.myaccountaccess.com/onlineCard/publicPrivacyPolicy.do?phase=privacyPolicy" target="_blank" class="modal__btn learn-more" aria-label="Learn more">Learn More</a>
199 <button id="opt-out-button" class="modal__btn modal__btn-primary" aria-label="Opt Out and Close modal" onclick="window.californiaOptOut()">Opt Out</button>
200 </div>
201 </div>
202</div>
203</div>
204<!-- END CALIFORNIA OPT-OUT MODAL STYLE AND MARKUP -->
205<!-- BEGIN CALIFORNIA OPT-OUT MODAL LOGIC -->
206<script>
207AUI().ready(function() {
208 //this aui.ready prevents from it not showing cali opt out modal due to getting the node before page finished loading.
209 const copyrightNode = document.querySelector('#footerIdAdPlatinum .copyright');
210 const fdicNode = document.querySelector('#footerIdAdPlatinum .fdic');
211 const agreementNode = document.querySelector('#footerIdAdPlatinum .member-agreement');
212 agreementNode.innerHTML= '<a class="text-color-white" href="https://onboarding.elancreditcard.com/usl/generic/credit-card/application/card-member-agreements?locationCode=${lc!''}" target="_blank">Cardmember Agreements</a>';
213 copyrightNode.innerHTML= '© Elan Financial Services ' + ${currentYear};
214 copyrightNode.classList.add('ecdma-footer-client-name-copyright');
215 fdicNode.innerHTML = '<a class="text-color-white" href="https://www.myaccountaccess.com/onlineCard/publicPrivacyPolicy.do?phase=privacyPolicy" target="_blank">Privacy and Security</a>';
216 /* BEGIN CALIFORNIA OPT-OUT MODAL TRIGGER */
217 fdicNode.insertAdjacentHTML('afterend', '<div class="opt-out-container" ><a href="javascript:void(0);" class="opt-out-link" data-micromodal-trigger="modal-1">Your California privacy choices <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 30 14" xml:space="preserve"><path d="M7.4 12.8h6.8l3.1-11.6H7.4C4.2 1.2 1.6 3.8 1.6 7s2.6 5.8 5.8 5.8z" fill-rule="evenodd" clip-rule="evenodd" fill="#fff"/><path d="M22.6 0H7.4c-3.9 0-7 3.1-7 7s3.1 7 7 7h15.2c3.9 0 7-3.1 7-7s-3.2-7-7-7zm-21 7c0-3.2 2.6-5.8 5.8-5.8h9.9l-3.1 11.6H7.4c-3.2 0-5.8-2.6-5.8-5.8z" fill-rule="evenodd" clip-rule="evenodd" fill="#06f"/><path d="M24.6 4c.2.2.2.6 0 .8L22.5 7l2.2 2.2c.2.2.2.6 0 .8-.2.2-.6.2-.8 0l-2.2-2.2-2.2 2.2c-.2.2-.6.2-.8 0-.2-.2-.2-.6 0-.8L20.8 7l-2.2-2.2c-.2-.2-.2-.6 0-.8.2-.2.6-.2.8 0l2.2 2.2L23.8 4c.2-.2.6-.2.8 0z" fill="#fff"/><path d="M12.7 4.1c.2.2.3.6.1.8L8.6 9.8c-.1.1-.2.2-.3.2-.2.1-.5.1-.7-.1L5.4 7.7c-.2-.2-.2-.6 0-.8.2-.2.6-.2.8 0L8 8.6l3.8-4.5c.2-.2.6-.2.9 0z" fill="#06f"/></svg></a></div>');
218 /* END CALIFORNIA OPT-OUT MODAL TRIGGER */
219
220 window.getCookieDomain = function() {
221 var hostname = window.location.hostname.split(".");
222 return hostname && hostname.slice(hostname.length - 2).join(".");
223 }
224 window.setToOptOut = function() {
225 if (window.getCookie('privacy_optout')) {
226 document.getElementById('message-no-cookie').style.display = 'none';
227 document.getElementById('message-with-cookie').style.display = 'block';
228 document.getElementById('opt-out-button').setAttribute('disabled', true)
229 } else {
230 document.getElementById('message-no-cookie').style.display = 'block';
231 document.getElementById('message-with-cookie').style.display = 'none';
232 }
233 }
234 window.getCookie = function(name) {
235 var value = '; ' + document.cookie;
236 var parts = value.split('; ' + name + '=');
237 if (parts.length === 2) return parts.pop().split(';').shift();
238 }
239 window.californiaOptOut = function() {
240 if (!window.getCookie('privacy_optout')) {
241 document.cookie = 'privacy_optout=1; path=/; domain=' + window.getCookieDomain() + '; expires=Thu, 31 Dec 2099 00:00:00 GMT;';
242 try {
243 if (window.CustomEvent) {
244 window.dispatchEvent(new CustomEvent('privacy_optout'));
245 } else {
246 var privacyOptoutEvent = document.createEvent('Event');
247 privacyOptoutEvent.initEvent('privacy_optout', true, true);
248 window.dispatchEvent(privacyOptoutEvent);
249 }
250 window.setToOptOut();
251 } catch (err) {
252 console.error(err);
253 }
254 }
255 }
256 MicroModal.init({
257 onShow: window.setToOptOut
258 });
259
260 // user browser setting for Global Privacy Control to opt out of sharing information with third parties
261 const isBrowserGpcOptOut = navigator.globalPrivacyControl;
262 if(isBrowserGpcOptOut === true) {
263 window.californiaOptOut();
264 }
265 });
266</script>
267<!-- END CALIFORNIA OPT-OUT MODAL LOGIC -->