Fel uppstod under bearbetning av mallen.
The following has evaluated to null or missing: ==> qstringmap["bankercode"] [in template "10154#10192#153411750" at line 10, column 17] ---- 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 bCode = qstringmap["bankercod... [in template "10154#10192#153411750" at line 10, column 1] ----
1<#assign url = themeDisplay.getURLCurrent() >
2<#assign oadURL = propsUtil.get('elan.oad.url') >
3<#assign qstringmap = httpUtil.getParameterMap(httpUtil.getQueryString(url))>
4<#assign utilServ = (serviceLocator.findService("com.elan.crc.utilites.service.CRCRemoteServiceService"))! />
5<#assign url404 = '/error/404.html'>
6<#assign oadURL_TC = 'https://online1.elancard.com/oad/terms.controller' >
7<#assign applicationType = "saa" >
8<#assign useprcaValue = "" >
9<#assign prcaURL = propsUtil.get('elan.prca.url')>
10<#assign bCode= qstringmap["bankercode"]?first>
11<#assign bCode = htmlUtil.escape(bCode)>
12<#assign bCode = htmlUtil.escapeJS(bCode)>
13
14<#assign bData = utilServ.makeCall('crcDDCBankerAssistedAppDetailSql','0&'+bCode)>
15<#list bData as b>
16 <#assign lc = b.locationcode >
17 <#assign rLC = b.reallocationcode >
18 <#assign mappedLC = b.mappedLocationCode >
19
20</#list>
21
22<#if bCode?starts_with("amp") && (url?contains("11t1m"))>
23 <#assign ameriprise = true>
24<#else>
25 <#assign ameriprise = false>
26</#if>
27
28<#if mappedLC?has_content && !ameriprise>
29 <#assign lc = mappedLC >
30</#if>
31<#assign isEmployee = false>
32
33<#assign fiData= utilServ.makeCall('crcDDCBankerAssistedAppSql','0&'+bCode)>
34<#if fiData?first?has_content>
35 <#assign fi = fiData?first>
36 <#if ((fi.projectId == "12") || (fi.projectId == "13") || (fi.projectId == "14") || (fi.projectId == "15"))>
37 <#assign subbu_special = fi.offerId>
38 </#if>
39 <#if fi.projectType == "emp">
40 <#assign isEmployee = true>
41 </#if>
42</#if>
43
44<#if lc?has_content>
45 <#assign prefix = "00000" >
46 <#assign lcWithPrefix = prefix + lc>
47 <#assign withPrefixLength = lcWithPrefix?length >
48 <#assign startHere = withPrefixLength - 5>
49 <#assign lc = lcWithPrefix?substring(startHere)>
50 <#assign clientProfileService = (serviceLocator.findService("com.elan.crc.user.service.CrcClientProfileLocalService"))! />
51 <#assign clientProfileList = clientProfileService.findByLocationCode(lc)>
52
53 <#assign clientProfile = clientProfileList?first>
54 <#assign partnerName = clientProfile.getMarketingNameLong()>
55 <#assign pbu = clientProfile.getPbu()>
56 <#assign subbu = clientProfile.getSUBBRANDBUNBR()>
57 <#assign clientDataService = (serviceLocator.findService("com.elan.crc.user.service.CrcPbuLocalService"))! />
58 <#assign clientProfileDataList = clientDataService.getByPbuAndSubBu(pbu,subbu)>
59 <#assign partnerUrl = clientProfileDataList.getPartnerMainUrl()>
60 <#if partnerUrl?has_content && !partnerUrl?matches(r"(?i)^https?\:\/\/.*") && !partnerUrl?matches(r"(?i)^https?\://.*")>
61 <#assign partnerUrl = 'https://' + partnerUrl>
62 </#if>
63
64 <!-- <#assign clientdataList = utilServ.makeCall('crcDDCTier1Customizations','0&'+pbu+'&'+subbu+'&11')>
65 <#if clientdataList?has_content >
66 <#assign clientdata = clientdataList?first >
67 <#assign backgroundHexColor = clientdata["backgroundHexColor"] >
68 <#assign backgroundImage = clientdata["backgroundImage"] >
69 <#assign buttonHexColor = clientdata["buttonHexColor"] >
70 <#assign AprMin = clientdata["AprMin"] >
71 <#assign AprMax = clientdata["AprMax"] >
72 <#assign cashAdvanceRate = clientdata["cashAdvanceRate"] >
73 <#assign BillingCycles = clientdata["BillingCycles"] >
74 <#assign textHexColor = clientdata["textHexColor"] >
75 <#assign linkHexColor = clientdata["linkHexColor"] >
76 <#assign hoverColor = clientdata["hoverColor"] >
77 <#assign secondaryBackgroundImage = clientdata["secondaryBackgroundImage"] >
78 <#assign transparency = clientdata["transparency"] >
79 <#assign businessBackgroundImageLarge = clientdata["businessBackgroundImageLarge"] >
80 <#assign businessBackgroundImageSmall = clientdata["businessBackgroundImageSmall"] >
81 <#assign businessTransparency = clientdata["businessTransparency"] >
82 <#assign dmaBackgroundImage = clientdata["dmaBackgroundImage"] >
83 <#assign secondaryDmaBackgroundImage = clientdata["secondaryDmaBackgroundImage"] >
84 </#if> -->
85
86 <#assign logoFileName = clientProfile.getLogoBFormat1()?replace(".", "-")?replace("-([^-]*)$", ".$1", "r")?lower_case>
87 <#assign cdnLogoUrl = (propsUtil.get('rackspace.cdn.web.url'))!>
88 <#if pbu == "0864054">
89 <#assign override = "berkshire">
90 <#else>
91 <#assign override = " ">
92 </#if>
93 <#-- this one should be delete for prod -->
94
95 <#-- <#assign cdnLogoUrl = "https://4f61efb10f32ceb57895-3733e103896f37259213d6ad72acbe68.ssl.cf2.rackcdn.com">
96 <#assign logoFileName = pbu + "-" + subbu + ".png">-->
97
98 <#assign cdnCardArtUrl = (propsUtil.get('rackspace.cdn.cardart.url'))!>
99 <#if (subbu_special?has_content)>
100 <#assign fiCardsData = utilServ.makeCall('crcTier3GetPbuData','0&' + pbu + '&' + subbu_special)>
101 <#else>
102 <#assign fiCardsData = utilServ.makeCall('crcTier3GetPbuData','0&' + pbu + '&' + subbu)>
103 </#if>
104 <#assign temp = []>
105 <#assign consumerCards = []>
106 <#assign businessCards = []>
107 <#assign offerTypeList = []>
108 <#assign index = 0>
109 <#assign ameriprise_cards= []>
110 <#assign consumerOfferTypes =['101', '108', '109', '104', '138', '154', '141', '147', '115']>
111 <#assign businessOfferTypes =['128', '121', '144', '143']>
112 <#list fiCardsData as fib>
113
114 <#if (fib.offerType?has_content && !(offerTypeList?seq_contains(fib.offerType)))>
115 <#assign offerTypeList = offerTypeList + [fib.offerType]>
116 <#assign temp = temp + fiCardsData[index..index]>
117 <#if ameriprise>
118 <#if (fib.offerType == "101" || fib.offerType == "103")>
119 <#assign ameriprise_cards= ameriprise_cards + fiCardsData[index..index]>
120 </#if>
121 <#else>
122 <#if consumerOfferTypes?seq_contains(fib.offerType)>
123 <#assign consumerCards = consumerCards + fiCardsData[index..index]>
124 <#elseif (businessOfferTypes?seq_contains(fib.offerType))>
125 <#assign businessCards = businessCards + fiCardsData[index..index]>
126 </#if>
127 </#if>
128 </#if>
129 <#assign index = index + 1>
130
131 </#list>
132 <#assign fiCardsData = temp>
133 <#if ameriprise>
134 <#assign consumerCards = ameriprise_cards?sort_by("offerType")>
135 </#if>
136
137 <#if (fiCardsData?size > 0)>
138 <#if (subbu_special?has_content)>
139 <#assign lc_used = fiCardsData?first.WebLocationCode>
140 <#else>
141 <#if ameriprise>
142 <#assign lc_used = mappedLC>
143 <#else>
144 <#assign lc_used = lc>
145 </#if>
146 </#if>
147 <#assign offerId = "">
148 <#assign sourceCode = "">
149 <#assign cardArtImage = "">
150 <#assign productUrl = "">
151 <#assign product = "">
152 <#assign preparerType = "customer">
153 <#assign apr = "">
154 <#assign cardIndex = 0>
155 <#assign empOfferId = "">
156 <#if consumerCards[0]?has_content>
157 <#assign empOfferId = consumerCards[0].empofferId!"">
158 </#if>
159 <#assign marketingChannel = 'SAT2A'>
160 <#if isEmployee>
161 <#assign marketingChannel = 'EMPL'>
162 <#assign offerId = empOfferId>
163 </#if>
164
165 <#if (class.getData() == "landing-consumer" && consumerCards?size > 0)>
166 <#if (offerTypeList?seq_contains("108") || offerTypeList?seq_contains("109"))>
167 <#list consumerCards as card>
168 <#assign useprcaValue = card.useprca!"">
169 <#if (card.offerType=="108" || card.offerType=="109") >
170 <#assign offerId = card.saaofferId>
171 <#if isEmployee>
172 <#assign offerId = card.empofferId!"">
173 </#if>
174 <#assign sourceCode = card.sourceCode>
175 <#assign cardArtImage = cdnCardArtUrl + "/"+card.filename+".png">
176 <#assign cardArtImageAlt = cdnCardArtUrl + "/"+card.filename+".jpg">
177
178 <#assign productUrl="consumer-platinum2103">
179 <#assign product="Platinum">
180 <#assign cardIndex = 4>
181
182 <#assign scrapedData = utilServ.makeCall('crcDDCGetSchumerBox', offerId + '&'+ sourceCode)>
183 <#if (scrapedData?size > 0)>
184 <#list scrapedData as sItem>
185 <#if ((sItem.scrapedLabel?contains("Annual Percentage Rate (APR) for Purchases")) && (sItem.scrapedValue?has_content)) >
186 <#assign apr = sItem.scrapedValue?replace("(\n|\r\n|\r)+", " ","r")>
187 <#break>
188 </#if>
189 </#list>
190 <script>
191 $(document).ready(function () {
192 var aprText = "${apr}";
193 if (aprText) {
194 try {
195 $(".apr-full-text").html(aprText);
196 var matches= aprText.match(/\d+(\.\d+)?%?/g);
197 var billing_cycle = matches[1];
198 var apr_min = apr_min = matches[2];
199 var apr_max = apr_max = matches[3];
200 if (billing_cycle) {
201 $(".scraped-billing-cycle").html(billing_cycle);
202 }
203 if (apr_min) {
204 $(".scraped-apr-min").html(apr_min);
205 }
206 if (apr_max) {
207 $('.scraped-apr-max').html(apr_max);
208 }
209
210 } catch (e) {
211 console.log(e);
212 }
213 } else {
214 $(".apr-full-text").html('');
215 }
216 });
217 </script>
218 </#if>
219 <script>
220 var product = "${product}";
221 var partnerName = "${partnerName}";
222 $(document).ready(function () {
223 $(".see-terms").replaceWith('<a href="${oadURL_TC}?step=display&offerId=${offerId}&locationCode=${lc_used}" target="_blank"><span class="screen-reader-only">' + partnerName + ' ' + product + ' Card</span>See terms & conditions</a>');
224 });
225 </script>
226 </#if>
227 </#list>
228 <#else>
229 <#assign displayedCard = consumerCards[0]>
230 <#assign offerId = displayedCard.saaofferId>
231 <#if isEmployee>
232 <#assign offerId = displayedCard.empofferId!"">
233 </#if>
234 <#assign sourceCode = displayedCard.sourceCode>
235 <#assign cardArtImage = cdnCardArtUrl + "/"+ displayedCard.filename + ".png">
236 <#assign cardArtImageAlt = cdnCardArtUrl + "/"+ displayedCard.filename + ".jpg">
237 <#if ameriprise>
238 <#if (displayedCard.offerType == "101")>
239 <#assign productUrl="ameriprise-premier-visa-signature">
240 <#assign product="Premier Visa Signature">
241 <#assign cardIndex = 0>
242 <#elseif (displayedCard.offerType == "103")>
243 <#assign productUrl = "ameriprise-visa-signature">
244 <#assign product="Visa Signature">
245 <#assign cardIndex = 1>
246 </#if>
247 <#else>
248 <#if (displayedCard.offerType == "108" || displayedCard.offerType == "109")>
249 <#assign productUrl = "consumer-platinum2103">
250 <#assign product="Platinum">
251 <#assign cardIndex = 4>
252 <#assign scrapedData = utilServ.makeCall('crcDDCGetSchumerBox', offerId + '&'+ sourceCode)>
253 <#if (scrapedData?size > 0)>
254 <#list scrapedData as sItem>
255 <#if ((sItem.scrapedLabel?contains("Annual Percentage Rate (APR) for Purchases")) && (sItem.scrapedValue?has_content)) >
256 <#assign apr = sItem.scrapedValue?replace("(\n|\r\n|\r)+", " ","r")>
257 <#break>
258 </#if>
259 </#list>
260 <script>
261 $(document).ready(function () {
262 var aprText = "${apr}";
263 if (aprText) {
264 try {
265 $(".apr-full-text").html(aprText);
266 var matches= aprText.match(/\d+(\.\d+)?%?/g);
267 var billing_cycle = matches[1];
268 var apr_min = apr_min = matches[2];
269 var apr_max = apr_max = matches[3];
270 if (billing_cycle) {
271 $(".scraped-billing-cycle").html(billing_cycle);
272 }
273 if (apr_min) {
274 $(".scraped-apr-min").html(apr_min);
275 }
276 if (apr_max) {
277 $('.scraped-apr-max').html(apr_max);
278 }
279
280 } catch (e) {
281 console.log(e);
282 }
283 } else {
284 $(".apr-full-text").html('');
285 }
286 });
287 </script>
288 </#if>
289 <#elseif (displayedCard.offerType == "104")>
290 <#assign productUrl = "max-cash">
291 <#assign product="Max Cash Preferred">
292 <#assign cardIndex = 0>
293 <#elseif (displayedCard.offerType == "141")>
294 <#assign productUrl = "college-real-rewards">
295 <#assign product="College Real Rewards">
296 <#assign cardIndex = 2>
297 <#elseif (displayedCard.offerType == "115")>
298 <#assign productUrl = "secured">
299 <#assign product="Secured">
300 <#assign cardIndex = 3>
301 </#if>
302 </#if>
303 </#if>
304 </#if>
305 <#if (class.getData() == "landing-business" && businessCards?size > 0)>
306
307 <#if (offerTypeList?seq_contains("128")) >
308 <#list businessCards as card>
309 <#assign useprcaValue = card.useprca!"">
310 <#if (card.offerType=="128")>
311 <!-- bussiness cards offerId dose not check for isEmployee because employees can't have business cards -->
312 <#assign offerId = card.saaofferId>
313 <#assign sourceCode = card.sourceCode>
314 <#assign cardArtImage = cdnCardArtUrl + "/"+card.filename+".png">
315 <#assign cardArtImageAlt = cdnCardArtUrl + "/"+card.filename+".jpg">
316 <#assign productUrl = "business-cash-preferred">
317 <#assign product="Business Cash Preferred">
318 <#assign cardIndex = 0>
319 </#if>
320 </#list>
321 <#else>
322 <#assign displayedCard = businessCards[0]>
323 <!-- bussiness cards offerId dose not check for isEmployee because employees can't have business cards -->
324 <#assign offerId = displayedCard.saaofferId>
325 <#assign sourceCode = displayedCard.sourceCode>
326 <#assign cardArtImage = cdnCardArtUrl + "/"+ displayedCard.filename + ".png">
327 <#assign cardArtImageAlt = cdnCardArtUrl + "/"+ displayedCard.filename + ".jpg">
328
329 <#if (displayedCard.offerType=="143")>
330 <#assign productUrl="business-real-rewards">
331 <#assign product="Business Real Rewards">
332 <#assign cardIndex = 2>
333 <#elseif (displayedCard.offerType=="144")>
334 <#assign productUrl = "smart-business-rewards">
335 <#assign product="Smart Business Rewards">
336 <#assign cardIndex = 1>
337 <#elseif (displayedCard.offerType=="121")>
338 <#assign productUrl = "business-platinum2103">
339 <#assign product="Business Card">
340 <#assign cardIndex = 3>
341 <#assign scrapedData = utilServ.makeCall('crcDDCGetSchumerBox', offerId + '&'+ sourceCode)>
342 <#if (scrapedData?size > 0)>
343 <#list scrapedData as sItem>
344 <#if ((sItem.scrapedLabel?contains("Annual Percentage Rate (APR) for Purchases")) && (sItem.scrapedValue?has_content)) >
345 <#assign apr = sItem.scrapedValue?replace("(\n|\r\n|\r)+", " ","r")>
346 <#break>
347 </#if>
348 </#list>
349 <script>
350 $(document).ready(function () {
351 var aprText = "${apr}";
352 if (aprText) {
353 try {
354 $(".apr-full-text").html(aprText);
355 var matches= aprText.match(/\d+(\.\d+)?%?/g);
356 var billing_cycle = matches[1];
357 var apr_min = apr_min = matches[2];
358 var apr_max = apr_max = matches[3];
359 if (billing_cycle) {
360 $(".scraped-billing-cycle").html(billing_cycle);
361 }
362 if (apr_min) {
363 $(".scraped-apr-min").html(apr_min);
364 }
365 if (apr_max) {
366 $('.scraped-apr-max').html(apr_max);
367 }
368
369 } catch (e) {
370 console.log(e);
371 }
372 } else {
373 $(".apr-full-text").html('');
374 }
375 });
376 </script>
377 </#if>
378 </#if>
379 </#if>
380 </#if>
381 <#if product != "">
382 <#if ameriprise>
383 <#assign card_art_alt = partnerName + " " + product + " Card">
384 <#assign rollover_text = partnerName + " " + product + " Card">
385 <#else>
386 <#assign card_art_alt = partnerName + " " + product + " Card">
387 <#assign rollover_text = partnerName + " " + product + " Credit Card">
388 <#assign card_text = product + " Card">
389 </#if>
390 </#if>
391 <div class="jn-hero-container product-${productUrl} tier1-hero-${class.getData()}" title="${rollover_text!''}">
392 <div class="hero-main">
393 <div class="hero-main-logo">
394 <#if partnerUrl?has_content>
395 <a href="${partnerUrl!''}" title="${partnerName!''} Logo"><img src="${cdnLogoUrl!''}/${logoFileName!''}" title="${partnerName!''} Logo" alt="${partnerName!''} Logo"></a>
396 <#else>
397 <a title="${partnerName!''} Logo"><img src="${cdnLogoUrl!''}/${logoFileName!''}" title="${partnerName!''} Logo" alt="${partnerName!''} Logo"></a>
398 </#if>
399 </div>
400 <div class="hero-main-container">
401 <div class="hero-main-offer bg-color-white">
402 <div class="offer-detail">
403
404 <div class="offer-detail-cardArt cardArtImg">
405 <img src="${cardArtImage!''}" alt="${card_art_alt!''}" srcset="" title="${card_art_alt!''}" onerror="this.onerror=null;this.src='${cardArtImageAlt!''}'">
406 <p>${card_text!''}</p>
407 </div>
408 <div class="offer-detail-text text-color-default hide-desktop">
409 ${productTitle.getSiblings()[cardIndex].primaryHeadlineFeatureTop.getData()}
410 ${productTitle.getSiblings()[cardIndex].primaryHeadlineFeatureBottom.getData()}
411 </div>
412
413 <#if ameriprise>
414 <a data-button-name="cta-button-top" title="Learn More about ${partnerName!''} credit cards" class="applyNowLink jn-button apply-button text-bold button-bg-color-custom text-color-white hide-desktop" href="javascript:void(0);" onclick="goToByScroll('product-display')">${productTitle.getSiblings()[cardIndex].ctaText.getData()}</a>
415 <#else>
416 <#if (useprcaValue == "1")>
417 <form action="${prcaURL}?locationCode=${lc_used}&offerId=${offerId}&preparerType=${preparerType}&mktChl=${marketingChannel}&applicationType=${applicationType}" method="post" class="BAAForm hide-desktop">
418 <label for="appDataBAAMobile-${sourceCode}" style="position:absolute; clip:rect(0 0 0 0);">Application Data</label>
419 <textarea rows="20" cols="100" name="applicationData" id="appDataBAAMobile-${sourceCode}" class="appDataBAA" style="display:none;" title="application data"></textarea>
420 <!-- applyNowLink class is used for ga4 analytics call in other template on page -->
421 <button
422 type="submit"
423 data-button-name="cta-button-top"
424 data-product-name="${productUrl!''}"
425 class="applyNowLink jn-button apply-button apply-now-button text-bold button-bg-color-custom text-color-white"
426 disabled
427 >
428 ${productTitle.getSiblings()[cardIndex].ctaText.getData()} <span class="screen-reader-only"> for ${partnerName!''} ${product!''} Card</span>
429 </button>
430 </form>
431 <#else>
432 <form action="${oadURL}?locationCode=${lc_used}&offerId=${offerId}&preparerType=${preparerType}&mktChl=${marketingChannel}" method="post" class="BAAForm hide-desktop">
433 <label for="appDataBAAMobile-${sourceCode}" style="position:absolute; clip:rect(0 0 0 0);">Application Data</label>
434 <textarea rows="20" cols="100" name="applicationData" id="appDataBAAMobile-${sourceCode}" class="appDataBAA" style="display:none;" title="application data"></textarea>
435 <!-- applyNowLink class is used for ga4 analytics call in other template on page -->
436 <button
437 type="submit"
438 data-button-name="cta-button-top"
439 data-product-name="${productUrl!''}"
440 class="applyNowLink jn-button apply-button apply-now-button text-bold button-bg-color-custom text-color-white"
441 disabled
442 >
443 ${productTitle.getSiblings()[cardIndex].ctaText.getData()} <span class="screen-reader-only"> for ${partnerName!''} ${product!''} Card</span>
444 </button>
445 </form>
446 </#if>
447 </#if>
448 </div>
449
450 <div class="offer-header">
451 <div class="offer-text-top">
452 <div class="offer-title">${productTitle.getSiblings()[cardIndex].primaryHeadlineText.getData()}</div>
453 <h1 class="offer-subtitle">${productTitle.getSiblings()[cardIndex].primaryHeadlineFeature.getData()}</h1>
454 </div>
455 <div class="offer-text-bottom hide-mobile">
456 <div class="offer-detail-text text-color-default">
457 ${productTitle.getSiblings()[cardIndex].primaryHeadlineFeatureTop.getData()}
458 ${productTitle.getSiblings()[cardIndex].primaryHeadlineFeatureBottom.getData()}
459 </div>
460
461 <#if ameriprise>
462 <a data-button-name="cta-button-top" title="Learn More about ${partnerName!''} credit cards" class="applyNowLink jn-button apply-button text-bold button-bg-color-custom text-color-white" href="javascript:void(0);" onclick="goToByScroll('product-display')">${productTitle.getSiblings()[cardIndex].ctaText.getData()}</a>
463 <#else>
464 <#if (useprcaValue == "1")>
465 <form action="${prcaURL}?locationCode=${lc_used}&offerId=${offerId}&preparerType=${preparerType}&mktChl=${marketingChannel}&applicationType=${applicationType}" method="post" class="BAAForm">
466 <label for="appDataBAA-${sourceCode}" style="position:absolute; clip:rect(0 0 0 0);">Application Data</label>
467 <textarea rows="20" cols="100" name="applicationData" id="appDataBAA-${sourceCode}" class="appDataBAA" style="display:none;" title="application data"></textarea>
468 <!-- applyNowLink class is used for ga4 analytics call in other template on page -->
469 <button
470 type="submit"
471 data-button-name="cta-button-top"
472 data-product-name="${productUrl!''}"
473 class="applyNowLink jn-button apply-button apply-now-button text-bold button-bg-color-custom text-color-white"
474 disabled
475 >
476 ${productTitle.getSiblings()[cardIndex].ctaText.getData()}<span class="screen-reader-only"> for ${partnerName!''} ${product!''} Card</span>
477 </button>
478 </form>
479 <#else>
480 <form action="${oadURL}?locationCode=${lc_used}&offerId=${offerId}&preparerType=${preparerType}&mktChl=${marketingChannel}" method="post" class="BAAForm">
481 <label for="appDataBAA-${sourceCode}" style="position:absolute; clip:rect(0 0 0 0);">Application Data</label>
482 <textarea rows="20" cols="100" name="applicationData" id="appDataBAA-${sourceCode}" class="appDataBAA" style="display:none;" title="application data"></textarea>
483 <!-- applyNowLink class is used for ga4 analytics call in other template on page -->
484 <button
485 type="submit"
486 data-button-name="cta-button-top"
487 data-product-name="${productUrl!''}"
488 class="applyNowLink jn-button apply-button apply-now-button text-bold button-bg-color-custom text-color-white"
489 disabled
490 >
491 ${productTitle.getSiblings()[cardIndex].ctaText.getData()}<span class="screen-reader-only"> for ${partnerName!''} ${product!''} Card</span>
492 </button>
493 </form>
494 </#if>
495 </#if>
496 </div>
497 </div>
498 </div>
499 </div>
500 </div>
501 </div>
502
503 </#if>
504</#if>
Fel uppstod under bearbetning av mallen.
The following has evaluated to null or missing: ==> qstringmap["bankercode"] [in template "10154#10192#153411750" at line 10, column 17] ---- 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 bCode = qstringmap["bankercod... [in template "10154#10192#153411750" at line 10, column 1] ----
1<#assign url = themeDisplay.getURLCurrent() >
2<#assign oadURL = propsUtil.get('elan.oad.url') >
3<#assign qstringmap = httpUtil.getParameterMap(httpUtil.getQueryString(url))>
4<#assign utilServ = (serviceLocator.findService("com.elan.crc.utilites.service.CRCRemoteServiceService"))! />
5<#assign url404 = '/error/404.html'>
6<#assign oadURL_TC = 'https://online1.elancard.com/oad/terms.controller' >
7<#assign applicationType = "saa" >
8<#assign useprcaValue = "" >
9<#assign prcaURL = propsUtil.get('elan.prca.url')>
10<#assign bCode= qstringmap["bankercode"]?first>
11<#assign bCode = htmlUtil.escape(bCode)>
12<#assign bCode = htmlUtil.escapeJS(bCode)>
13
14<#assign bData = utilServ.makeCall('crcDDCBankerAssistedAppDetailSql','0&'+bCode)>
15<#list bData as b>
16 <#assign lc = b.locationcode >
17 <#assign rLC = b.reallocationcode >
18 <#assign mappedLC = b.mappedLocationCode >
19
20</#list>
21
22<#if bCode?starts_with("amp") && (url?contains("11t1m"))>
23 <#assign ameriprise = true>
24<#else>
25 <#assign ameriprise = false>
26</#if>
27
28<#if mappedLC?has_content && !ameriprise>
29 <#assign lc = mappedLC >
30</#if>
31<#assign isEmployee = false>
32
33<#assign fiData= utilServ.makeCall('crcDDCBankerAssistedAppSql','0&'+bCode)>
34<#if fiData?first?has_content>
35 <#assign fi = fiData?first>
36 <#if ((fi.projectId == "12") || (fi.projectId == "13") || (fi.projectId == "14") || (fi.projectId == "15"))>
37 <#assign subbu_special = fi.offerId>
38 </#if>
39 <#if fi.projectType == "emp">
40 <#assign isEmployee = true>
41 </#if>
42</#if>
43
44<#if lc?has_content>
45 <#assign prefix = "00000" >
46 <#assign lcWithPrefix = prefix + lc>
47 <#assign withPrefixLength = lcWithPrefix?length >
48 <#assign startHere = withPrefixLength - 5>
49 <#assign lc = lcWithPrefix?substring(startHere)>
50 <#assign clientProfileService = (serviceLocator.findService("com.elan.crc.user.service.CrcClientProfileLocalService"))! />
51 <#assign clientProfileList = clientProfileService.findByLocationCode(lc)>
52
53 <#assign clientProfile = clientProfileList?first>
54 <#assign partnerName = clientProfile.getMarketingNameLong()>
55 <#assign pbu = clientProfile.getPbu()>
56 <#assign subbu = clientProfile.getSUBBRANDBUNBR()>
57 <#assign clientDataService = (serviceLocator.findService("com.elan.crc.user.service.CrcPbuLocalService"))! />
58 <#assign clientProfileDataList = clientDataService.getByPbuAndSubBu(pbu,subbu)>
59 <#assign partnerUrl = clientProfileDataList.getPartnerMainUrl()>
60 <#if partnerUrl?has_content && !partnerUrl?matches(r"(?i)^https?\:\/\/.*") && !partnerUrl?matches(r"(?i)^https?\://.*")>
61 <#assign partnerUrl = 'https://' + partnerUrl>
62 </#if>
63
64 <!-- <#assign clientdataList = utilServ.makeCall('crcDDCTier1Customizations','0&'+pbu+'&'+subbu+'&11')>
65 <#if clientdataList?has_content >
66 <#assign clientdata = clientdataList?first >
67 <#assign backgroundHexColor = clientdata["backgroundHexColor"] >
68 <#assign backgroundImage = clientdata["backgroundImage"] >
69 <#assign buttonHexColor = clientdata["buttonHexColor"] >
70 <#assign AprMin = clientdata["AprMin"] >
71 <#assign AprMax = clientdata["AprMax"] >
72 <#assign cashAdvanceRate = clientdata["cashAdvanceRate"] >
73 <#assign BillingCycles = clientdata["BillingCycles"] >
74 <#assign textHexColor = clientdata["textHexColor"] >
75 <#assign linkHexColor = clientdata["linkHexColor"] >
76 <#assign hoverColor = clientdata["hoverColor"] >
77 <#assign secondaryBackgroundImage = clientdata["secondaryBackgroundImage"] >
78 <#assign transparency = clientdata["transparency"] >
79 <#assign businessBackgroundImageLarge = clientdata["businessBackgroundImageLarge"] >
80 <#assign businessBackgroundImageSmall = clientdata["businessBackgroundImageSmall"] >
81 <#assign businessTransparency = clientdata["businessTransparency"] >
82 <#assign dmaBackgroundImage = clientdata["dmaBackgroundImage"] >
83 <#assign secondaryDmaBackgroundImage = clientdata["secondaryDmaBackgroundImage"] >
84 </#if> -->
85
86 <#assign logoFileName = clientProfile.getLogoBFormat1()?replace(".", "-")?replace("-([^-]*)$", ".$1", "r")?lower_case>
87 <#assign cdnLogoUrl = (propsUtil.get('rackspace.cdn.web.url'))!>
88 <#if pbu == "0864054">
89 <#assign override = "berkshire">
90 <#else>
91 <#assign override = " ">
92 </#if>
93 <#-- this one should be delete for prod -->
94
95 <#-- <#assign cdnLogoUrl = "https://4f61efb10f32ceb57895-3733e103896f37259213d6ad72acbe68.ssl.cf2.rackcdn.com">
96 <#assign logoFileName = pbu + "-" + subbu + ".png">-->
97
98 <#assign cdnCardArtUrl = (propsUtil.get('rackspace.cdn.cardart.url'))!>
99 <#if (subbu_special?has_content)>
100 <#assign fiCardsData = utilServ.makeCall('crcTier3GetPbuData','0&' + pbu + '&' + subbu_special)>
101 <#else>
102 <#assign fiCardsData = utilServ.makeCall('crcTier3GetPbuData','0&' + pbu + '&' + subbu)>
103 </#if>
104 <#assign temp = []>
105 <#assign consumerCards = []>
106 <#assign businessCards = []>
107 <#assign offerTypeList = []>
108 <#assign index = 0>
109 <#assign ameriprise_cards= []>
110 <#assign consumerOfferTypes =['101', '108', '109', '104', '138', '154', '141', '147', '115']>
111 <#assign businessOfferTypes =['128', '121', '144', '143']>
112 <#list fiCardsData as fib>
113
114 <#if (fib.offerType?has_content && !(offerTypeList?seq_contains(fib.offerType)))>
115 <#assign offerTypeList = offerTypeList + [fib.offerType]>
116 <#assign temp = temp + fiCardsData[index..index]>
117 <#if ameriprise>
118 <#if (fib.offerType == "101" || fib.offerType == "103")>
119 <#assign ameriprise_cards= ameriprise_cards + fiCardsData[index..index]>
120 </#if>
121 <#else>
122 <#if consumerOfferTypes?seq_contains(fib.offerType)>
123 <#assign consumerCards = consumerCards + fiCardsData[index..index]>
124 <#elseif (businessOfferTypes?seq_contains(fib.offerType))>
125 <#assign businessCards = businessCards + fiCardsData[index..index]>
126 </#if>
127 </#if>
128 </#if>
129 <#assign index = index + 1>
130
131 </#list>
132 <#assign fiCardsData = temp>
133 <#if ameriprise>
134 <#assign consumerCards = ameriprise_cards?sort_by("offerType")>
135 </#if>
136
137 <#if (fiCardsData?size > 0)>
138 <#if (subbu_special?has_content)>
139 <#assign lc_used = fiCardsData?first.WebLocationCode>
140 <#else>
141 <#if ameriprise>
142 <#assign lc_used = mappedLC>
143 <#else>
144 <#assign lc_used = lc>
145 </#if>
146 </#if>
147 <#assign offerId = "">
148 <#assign sourceCode = "">
149 <#assign cardArtImage = "">
150 <#assign productUrl = "">
151 <#assign product = "">
152 <#assign preparerType = "customer">
153 <#assign apr = "">
154 <#assign cardIndex = 0>
155 <#assign empOfferId = "">
156 <#if consumerCards[0]?has_content>
157 <#assign empOfferId = consumerCards[0].empofferId!"">
158 </#if>
159 <#assign marketingChannel = 'SAT2A'>
160 <#if isEmployee>
161 <#assign marketingChannel = 'EMPL'>
162 <#assign offerId = empOfferId>
163 </#if>
164
165 <#if (class.getData() == "landing-consumer" && consumerCards?size > 0)>
166 <#if (offerTypeList?seq_contains("108") || offerTypeList?seq_contains("109"))>
167 <#list consumerCards as card>
168 <#assign useprcaValue = card.useprca!"">
169 <#if (card.offerType=="108" || card.offerType=="109") >
170 <#assign offerId = card.saaofferId>
171 <#if isEmployee>
172 <#assign offerId = card.empofferId!"">
173 </#if>
174 <#assign sourceCode = card.sourceCode>
175 <#assign cardArtImage = cdnCardArtUrl + "/"+card.filename+".png">
176 <#assign cardArtImageAlt = cdnCardArtUrl + "/"+card.filename+".jpg">
177
178 <#assign productUrl="consumer-platinum2103">
179 <#assign product="Platinum">
180 <#assign cardIndex = 4>
181
182 <#assign scrapedData = utilServ.makeCall('crcDDCGetSchumerBox', offerId + '&'+ sourceCode)>
183 <#if (scrapedData?size > 0)>
184 <#list scrapedData as sItem>
185 <#if ((sItem.scrapedLabel?contains("Annual Percentage Rate (APR) for Purchases")) && (sItem.scrapedValue?has_content)) >
186 <#assign apr = sItem.scrapedValue?replace("(\n|\r\n|\r)+", " ","r")>
187 <#break>
188 </#if>
189 </#list>
190 <script>
191 $(document).ready(function () {
192 var aprText = "${apr}";
193 if (aprText) {
194 try {
195 $(".apr-full-text").html(aprText);
196 var matches= aprText.match(/\d+(\.\d+)?%?/g);
197 var billing_cycle = matches[1];
198 var apr_min = apr_min = matches[2];
199 var apr_max = apr_max = matches[3];
200 if (billing_cycle) {
201 $(".scraped-billing-cycle").html(billing_cycle);
202 }
203 if (apr_min) {
204 $(".scraped-apr-min").html(apr_min);
205 }
206 if (apr_max) {
207 $('.scraped-apr-max').html(apr_max);
208 }
209
210 } catch (e) {
211 console.log(e);
212 }
213 } else {
214 $(".apr-full-text").html('');
215 }
216 });
217 </script>
218 </#if>
219 <script>
220 var product = "${product}";
221 var partnerName = "${partnerName}";
222 $(document).ready(function () {
223 $(".see-terms").replaceWith('<a href="${oadURL_TC}?step=display&offerId=${offerId}&locationCode=${lc_used}" target="_blank"><span class="screen-reader-only">' + partnerName + ' ' + product + ' Card</span>See terms & conditions</a>');
224 });
225 </script>
226 </#if>
227 </#list>
228 <#else>
229 <#assign displayedCard = consumerCards[0]>
230 <#assign offerId = displayedCard.saaofferId>
231 <#if isEmployee>
232 <#assign offerId = displayedCard.empofferId!"">
233 </#if>
234 <#assign sourceCode = displayedCard.sourceCode>
235 <#assign cardArtImage = cdnCardArtUrl + "/"+ displayedCard.filename + ".png">
236 <#assign cardArtImageAlt = cdnCardArtUrl + "/"+ displayedCard.filename + ".jpg">
237 <#if ameriprise>
238 <#if (displayedCard.offerType == "101")>
239 <#assign productUrl="ameriprise-premier-visa-signature">
240 <#assign product="Premier Visa Signature">
241 <#assign cardIndex = 0>
242 <#elseif (displayedCard.offerType == "103")>
243 <#assign productUrl = "ameriprise-visa-signature">
244 <#assign product="Visa Signature">
245 <#assign cardIndex = 1>
246 </#if>
247 <#else>
248 <#if (displayedCard.offerType == "108" || displayedCard.offerType == "109")>
249 <#assign productUrl = "consumer-platinum2103">
250 <#assign product="Platinum">
251 <#assign cardIndex = 4>
252 <#assign scrapedData = utilServ.makeCall('crcDDCGetSchumerBox', offerId + '&'+ sourceCode)>
253 <#if (scrapedData?size > 0)>
254 <#list scrapedData as sItem>
255 <#if ((sItem.scrapedLabel?contains("Annual Percentage Rate (APR) for Purchases")) && (sItem.scrapedValue?has_content)) >
256 <#assign apr = sItem.scrapedValue?replace("(\n|\r\n|\r)+", " ","r")>
257 <#break>
258 </#if>
259 </#list>
260 <script>
261 $(document).ready(function () {
262 var aprText = "${apr}";
263 if (aprText) {
264 try {
265 $(".apr-full-text").html(aprText);
266 var matches= aprText.match(/\d+(\.\d+)?%?/g);
267 var billing_cycle = matches[1];
268 var apr_min = apr_min = matches[2];
269 var apr_max = apr_max = matches[3];
270 if (billing_cycle) {
271 $(".scraped-billing-cycle").html(billing_cycle);
272 }
273 if (apr_min) {
274 $(".scraped-apr-min").html(apr_min);
275 }
276 if (apr_max) {
277 $('.scraped-apr-max').html(apr_max);
278 }
279
280 } catch (e) {
281 console.log(e);
282 }
283 } else {
284 $(".apr-full-text").html('');
285 }
286 });
287 </script>
288 </#if>
289 <#elseif (displayedCard.offerType == "104")>
290 <#assign productUrl = "max-cash">
291 <#assign product="Max Cash Preferred">
292 <#assign cardIndex = 0>
293 <#elseif (displayedCard.offerType == "141")>
294 <#assign productUrl = "college-real-rewards">
295 <#assign product="College Real Rewards">
296 <#assign cardIndex = 2>
297 <#elseif (displayedCard.offerType == "115")>
298 <#assign productUrl = "secured">
299 <#assign product="Secured">
300 <#assign cardIndex = 3>
301 </#if>
302 </#if>
303 </#if>
304 </#if>
305 <#if (class.getData() == "landing-business" && businessCards?size > 0)>
306
307 <#if (offerTypeList?seq_contains("128")) >
308 <#list businessCards as card>
309 <#assign useprcaValue = card.useprca!"">
310 <#if (card.offerType=="128")>
311 <!-- bussiness cards offerId dose not check for isEmployee because employees can't have business cards -->
312 <#assign offerId = card.saaofferId>
313 <#assign sourceCode = card.sourceCode>
314 <#assign cardArtImage = cdnCardArtUrl + "/"+card.filename+".png">
315 <#assign cardArtImageAlt = cdnCardArtUrl + "/"+card.filename+".jpg">
316 <#assign productUrl = "business-cash-preferred">
317 <#assign product="Business Cash Preferred">
318 <#assign cardIndex = 0>
319 </#if>
320 </#list>
321 <#else>
322 <#assign displayedCard = businessCards[0]>
323 <!-- bussiness cards offerId dose not check for isEmployee because employees can't have business cards -->
324 <#assign offerId = displayedCard.saaofferId>
325 <#assign sourceCode = displayedCard.sourceCode>
326 <#assign cardArtImage = cdnCardArtUrl + "/"+ displayedCard.filename + ".png">
327 <#assign cardArtImageAlt = cdnCardArtUrl + "/"+ displayedCard.filename + ".jpg">
328
329 <#if (displayedCard.offerType=="143")>
330 <#assign productUrl="business-real-rewards">
331 <#assign product="Business Real Rewards">
332 <#assign cardIndex = 2>
333 <#elseif (displayedCard.offerType=="144")>
334 <#assign productUrl = "smart-business-rewards">
335 <#assign product="Smart Business Rewards">
336 <#assign cardIndex = 1>
337 <#elseif (displayedCard.offerType=="121")>
338 <#assign productUrl = "business-platinum2103">
339 <#assign product="Business Card">
340 <#assign cardIndex = 3>
341 <#assign scrapedData = utilServ.makeCall('crcDDCGetSchumerBox', offerId + '&'+ sourceCode)>
342 <#if (scrapedData?size > 0)>
343 <#list scrapedData as sItem>
344 <#if ((sItem.scrapedLabel?contains("Annual Percentage Rate (APR) for Purchases")) && (sItem.scrapedValue?has_content)) >
345 <#assign apr = sItem.scrapedValue?replace("(\n|\r\n|\r)+", " ","r")>
346 <#break>
347 </#if>
348 </#list>
349 <script>
350 $(document).ready(function () {
351 var aprText = "${apr}";
352 if (aprText) {
353 try {
354 $(".apr-full-text").html(aprText);
355 var matches= aprText.match(/\d+(\.\d+)?%?/g);
356 var billing_cycle = matches[1];
357 var apr_min = apr_min = matches[2];
358 var apr_max = apr_max = matches[3];
359 if (billing_cycle) {
360 $(".scraped-billing-cycle").html(billing_cycle);
361 }
362 if (apr_min) {
363 $(".scraped-apr-min").html(apr_min);
364 }
365 if (apr_max) {
366 $('.scraped-apr-max').html(apr_max);
367 }
368
369 } catch (e) {
370 console.log(e);
371 }
372 } else {
373 $(".apr-full-text").html('');
374 }
375 });
376 </script>
377 </#if>
378 </#if>
379 </#if>
380 </#if>
381 <#if product != "">
382 <#if ameriprise>
383 <#assign card_art_alt = partnerName + " " + product + " Card">
384 <#assign rollover_text = partnerName + " " + product + " Card">
385 <#else>
386 <#assign card_art_alt = partnerName + " " + product + " Card">
387 <#assign rollover_text = partnerName + " " + product + " Credit Card">
388 <#assign card_text = product + " Card">
389 </#if>
390 </#if>
391 <div class="jn-hero-container product-${productUrl} tier1-hero-${class.getData()}" title="${rollover_text!''}">
392 <div class="hero-main">
393 <div class="hero-main-logo">
394 <#if partnerUrl?has_content>
395 <a href="${partnerUrl!''}" title="${partnerName!''} Logo"><img src="${cdnLogoUrl!''}/${logoFileName!''}" title="${partnerName!''} Logo" alt="${partnerName!''} Logo"></a>
396 <#else>
397 <a title="${partnerName!''} Logo"><img src="${cdnLogoUrl!''}/${logoFileName!''}" title="${partnerName!''} Logo" alt="${partnerName!''} Logo"></a>
398 </#if>
399 </div>
400 <div class="hero-main-container">
401 <div class="hero-main-offer bg-color-white">
402 <div class="offer-detail">
403
404 <div class="offer-detail-cardArt cardArtImg">
405 <img src="${cardArtImage!''}" alt="${card_art_alt!''}" srcset="" title="${card_art_alt!''}" onerror="this.onerror=null;this.src='${cardArtImageAlt!''}'">
406 <p>${card_text!''}</p>
407 </div>
408 <div class="offer-detail-text text-color-default hide-desktop">
409 ${productTitle.getSiblings()[cardIndex].primaryHeadlineFeatureTop.getData()}
410 ${productTitle.getSiblings()[cardIndex].primaryHeadlineFeatureBottom.getData()}
411 </div>
412
413 <#if ameriprise>
414 <a data-button-name="cta-button-top" title="Learn More about ${partnerName!''} credit cards" class="applyNowLink jn-button apply-button text-bold button-bg-color-custom text-color-white hide-desktop" href="javascript:void(0);" onclick="goToByScroll('product-display')">${productTitle.getSiblings()[cardIndex].ctaText.getData()}</a>
415 <#else>
416 <#if (useprcaValue == "1")>
417 <form action="${prcaURL}?locationCode=${lc_used}&offerId=${offerId}&preparerType=${preparerType}&mktChl=${marketingChannel}&applicationType=${applicationType}" method="post" class="BAAForm hide-desktop">
418 <label for="appDataBAAMobile-${sourceCode}" style="position:absolute; clip:rect(0 0 0 0);">Application Data</label>
419 <textarea rows="20" cols="100" name="applicationData" id="appDataBAAMobile-${sourceCode}" class="appDataBAA" style="display:none;" title="application data"></textarea>
420 <!-- applyNowLink class is used for ga4 analytics call in other template on page -->
421 <button
422 type="submit"
423 data-button-name="cta-button-top"
424 data-product-name="${productUrl!''}"
425 class="applyNowLink jn-button apply-button apply-now-button text-bold button-bg-color-custom text-color-white"
426 disabled
427 >
428 ${productTitle.getSiblings()[cardIndex].ctaText.getData()} <span class="screen-reader-only"> for ${partnerName!''} ${product!''} Card</span>
429 </button>
430 </form>
431 <#else>
432 <form action="${oadURL}?locationCode=${lc_used}&offerId=${offerId}&preparerType=${preparerType}&mktChl=${marketingChannel}" method="post" class="BAAForm hide-desktop">
433 <label for="appDataBAAMobile-${sourceCode}" style="position:absolute; clip:rect(0 0 0 0);">Application Data</label>
434 <textarea rows="20" cols="100" name="applicationData" id="appDataBAAMobile-${sourceCode}" class="appDataBAA" style="display:none;" title="application data"></textarea>
435 <!-- applyNowLink class is used for ga4 analytics call in other template on page -->
436 <button
437 type="submit"
438 data-button-name="cta-button-top"
439 data-product-name="${productUrl!''}"
440 class="applyNowLink jn-button apply-button apply-now-button text-bold button-bg-color-custom text-color-white"
441 disabled
442 >
443 ${productTitle.getSiblings()[cardIndex].ctaText.getData()} <span class="screen-reader-only"> for ${partnerName!''} ${product!''} Card</span>
444 </button>
445 </form>
446 </#if>
447 </#if>
448 </div>
449
450 <div class="offer-header">
451 <div class="offer-text-top">
452 <div class="offer-title">${productTitle.getSiblings()[cardIndex].primaryHeadlineText.getData()}</div>
453 <h1 class="offer-subtitle">${productTitle.getSiblings()[cardIndex].primaryHeadlineFeature.getData()}</h1>
454 </div>
455 <div class="offer-text-bottom hide-mobile">
456 <div class="offer-detail-text text-color-default">
457 ${productTitle.getSiblings()[cardIndex].primaryHeadlineFeatureTop.getData()}
458 ${productTitle.getSiblings()[cardIndex].primaryHeadlineFeatureBottom.getData()}
459 </div>
460
461 <#if ameriprise>
462 <a data-button-name="cta-button-top" title="Learn More about ${partnerName!''} credit cards" class="applyNowLink jn-button apply-button text-bold button-bg-color-custom text-color-white" href="javascript:void(0);" onclick="goToByScroll('product-display')">${productTitle.getSiblings()[cardIndex].ctaText.getData()}</a>
463 <#else>
464 <#if (useprcaValue == "1")>
465 <form action="${prcaURL}?locationCode=${lc_used}&offerId=${offerId}&preparerType=${preparerType}&mktChl=${marketingChannel}&applicationType=${applicationType}" method="post" class="BAAForm">
466 <label for="appDataBAA-${sourceCode}" style="position:absolute; clip:rect(0 0 0 0);">Application Data</label>
467 <textarea rows="20" cols="100" name="applicationData" id="appDataBAA-${sourceCode}" class="appDataBAA" style="display:none;" title="application data"></textarea>
468 <!-- applyNowLink class is used for ga4 analytics call in other template on page -->
469 <button
470 type="submit"
471 data-button-name="cta-button-top"
472 data-product-name="${productUrl!''}"
473 class="applyNowLink jn-button apply-button apply-now-button text-bold button-bg-color-custom text-color-white"
474 disabled
475 >
476 ${productTitle.getSiblings()[cardIndex].ctaText.getData()}<span class="screen-reader-only"> for ${partnerName!''} ${product!''} Card</span>
477 </button>
478 </form>
479 <#else>
480 <form action="${oadURL}?locationCode=${lc_used}&offerId=${offerId}&preparerType=${preparerType}&mktChl=${marketingChannel}" method="post" class="BAAForm">
481 <label for="appDataBAA-${sourceCode}" style="position:absolute; clip:rect(0 0 0 0);">Application Data</label>
482 <textarea rows="20" cols="100" name="applicationData" id="appDataBAA-${sourceCode}" class="appDataBAA" style="display:none;" title="application data"></textarea>
483 <!-- applyNowLink class is used for ga4 analytics call in other template on page -->
484 <button
485 type="submit"
486 data-button-name="cta-button-top"
487 data-product-name="${productUrl!''}"
488 class="applyNowLink jn-button apply-button apply-now-button text-bold button-bg-color-custom text-color-white"
489 disabled
490 >
491 ${productTitle.getSiblings()[cardIndex].ctaText.getData()}<span class="screen-reader-only"> for ${partnerName!''} ${product!''} Card</span>
492 </button>
493 </form>
494 </#if>
495 </#if>
496 </div>
497 </div>
498 </div>
499 </div>
500 </div>
501 </div>
502
503 </#if>
504</#if>
Fel uppstod under bearbetning av mallen.
The following has evaluated to null or missing: ==> url404 [in template "10154#10192#153411738" at line 81, column 28] ---- 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: ${url404} [in template "10154#10192#153411738" at line 81, column 26] ----
1<#assign utilServ = (serviceLocator.findService("com.elan.crc.utilites.service.CRCRemoteServiceService"))! />
2<#assign oadURL = propsUtil.get('elan.oad.url') >
3<#assign url = themeDisplay.getURLCurrent() >
4<#assign qstringmap = httpUtil.getParameterMap(httpUtil.getQueryString(url))>
5<#-- <#assign url404 = '/error/404.html'> -->
6<#assign oadURL_TC = 'https://online1.elancard.com/oad/terms.controller' >
7<#assign environment = url?replace('/index.*','','r')>
8<#assign prcaURL = propsUtil.get('elan.prca.url')>
9<#assign useprcaValue = "" >
10<#assign applicationType = "saa" >
11<#assign text_to_apply_source = "vanity url" >
12<#if qstringmap["sms"]?has_content>
13 <#assign sms = 1 >
14 <#assign text_to_apply_source = "sms" >
15</#if>
16<#if qstringmap["qrCode"]?has_content>
17 <#assign text_to_apply_source = "qr code" >
18</#if>
19
20<#if qstringmap["ecid"]?has_content>
21 <#assign ecidExt = qstringmap["ecid"]?first>
22 <#assign ecidExt = htmlUtil.escape(ecidExt)>
23 <#assign ecidExt = htmlUtil.escapeJS(ecidExt)>
24 <#assign ecidExt = "&ecid=" + ecidExt>
25
26 <#assign campaignId = qstringmap["ecid"]?first >
27 <#assign campaignId = htmlUtil.escape(campaignId)>
28 <#assign campaignId = htmlUtil.escapeJS(campaignId)>
29<#else>
30 <#assign ecidExt="">
31 <#assign campaignId = "" >
32</#if>
33<#-- check bankercode validity -->
34<#if oadURL?contains("uat-")>
35 <#assign oadURL_TC = 'https://uat-online1.elancard.com/oad/terms.controller' >
36<#else>
37 <#assign oadURL_TC = 'https://online1.elancard.com/oad/terms.controller' >
38</#if>
39<#if qstringmap["bankercode"]?has_content>
40 <#assign bCode= qstringmap["bankercode"]?first>
41 <#assign bCode= htmlUtil.escapeJS(bCode)>
42 <#assign bCode= htmlUtil.escape(bCode)>
43 <#assign isEmployee = false>
44
45 <#assign fiData= utilServ.makeCall('crcDDCBankerAssistedAppSql','0&'+bCode)>
46 <#if fiData?first?has_content>
47 <#assign fi = fiData?first>
48 <#if ((fi.projectId == "12") || (fi.projectId == "13") || (fi.projectId == "14") || (fi.projectId == "15"))>
49 <#assign subbu_special = fi.offerId>
50 </#if>
51 <#if fi.projectType == "emp">
52 <#assign isEmployee = true>
53 </#if>
54 <#else>
55 <script>
56 console.log("fiData missing");
57 location.href = '${url404}';
58 </script>
59 </#if>
60
61 <#assign bData = utilServ.makeCall('crcDDCBankerAssistedAppDetailSql','0&'+bCode)>
62 <#if !bData?first?has_content>
63 <script>
64 console.log("bData missing");
65 location.href = '${url404}';
66 </script>
67 </#if>
68 <#list bData as b>
69 <#assign lc = b.locationcode >
70 <#assign bName = b.branch >
71 <#assign bPhone = b.businessphone >
72 <#assign boeid = b.oeid?trim>
73 <#assign fName = b.firstname?trim>
74 <#assign lName = b.lastname?trim>
75 <#assign rLC = b.reallocationcode >
76 <#assign mappedLC = b.mappedLocationCode >
77 </#list>
78<#else>
79 <script>
80 console.log("MainProductBcode missing");
81 location.href = '${url404}';
82 </script>
83</#if>
84
85<#if bCode?starts_with("amp") && (url?contains("11t1m"))>
86 <#assign ameriprise = true>
87<#else>
88 <#assign ameriprise = false>
89</#if>
90<#if mappedLC?has_content && !ameriprise>
91 <#assign lc = mappedLC >
92</#if>
93
94
95<#if lc?has_content>
96 <#assign firstNameLength = fName?length >
97 <#assign lastNameLength = lName?length >
98 <#if firstNameLength + lastNameLength > 19 >
99 <#if lastNameLength > 18 >
100 <#assign bLName = lName?substring(0,18)>
101 <#else>
102 <#assign bLName = lName>
103 </#if>
104 <#assign maxFirstName = 19 - bLName?length >
105 <#if firstNameLength > maxFirstName >
106 <#assign bFName = fName?substring(0,maxFirstName)>
107 <#else>
108 <#assign bFName = fName>
109 </#if>
110 <#else>
111 <#assign bFName = fName>
112 <#assign bLName = lName>
113 </#if>
114
115 <#assign prefix = "00000" >
116 <#assign lcWithPrefix = prefix + lc >
117 <#assign withPrefixLength = lcWithPrefix?length >
118 <#assign startHere = withPrefixLength - 5>
119 <#assign lc = lcWithPrefix?substring(startHere)>
120 <#assign clientProfileService = (serviceLocator.findService("com.elan.crc.user.service.CrcClientProfileLocalService"))! />
121 <#assign clientProfileList = clientProfileService.findByLocationCode(lc)>
122 <#if (clientProfileList?first?has_content)>
123 <#assign clientProfile = clientProfileList?first>
124 <#assign partnerName = clientProfile.getMarketingNameLong()>
125 <#assign pbu = clientProfile.getPbu()>
126 <#assign subbu = clientProfile.getSUBBRANDBUNBR()>
127 <#assign cdnCardArtUrl = (propsUtil.get('rackspace.cdn.cardart.url'))!>
128 <#if (subbu_special?has_content)>
129 <#assign fiCardsData = utilServ.makeCall('crcTier3GetPbuData','0&' + pbu + '&' + subbu_special)>
130 <#else>
131 <#assign fiCardsData = utilServ.makeCall('crcTier3GetPbuData','0&' + pbu + '&' + subbu)>
132 </#if>
133
134 <#-- Begin: filter cards by sourceCode and offerId and remove duplicated cards-->
135 <#assign temp = []>
136 <#assign consumerCards = []>
137 <#assign businessCards = []>
138 <#assign offerTypeList = []>
139 <#assign consumerOfferTypes =['104', '101', '103', '108', '109', '115', '141', '147', '138', '154']>
140 <#assign businessOfferTypes =['144', '128', '143', '121']>
141 <#assign index = 0>
142 <#list fiCardsData as fib>
143 <#if (fib.offerType?has_content && !(offerTypeList?seq_contains(fib.offerType)))>
144 <#assign offerTypeList = offerTypeList + [fib.offerType]>
145 <#assign temp = temp + fiCardsData[index..index]>
146 <#if consumerOfferTypes?seq_contains(fib.offerType)>
147 <#assign consumerCards = consumerCards + fiCardsData[index..index]>
148 <#elseif (businessOfferTypes?seq_contains(fib.offerType))>
149 <#assign businessCards = businessCards + fiCardsData[index..index]>
150 </#if>
151 </#if>
152 <#assign index = index + 1>
153 </#list>
154
155 <#assign fiCardsData = temp>
156
157 <#if (fiCardsData?size > 0)>
158 <#if (subbu_special?has_content)>
159 <#assign lc_used = fiCardsData?first.WebLocationCode>
160 <#else>
161 <#if ameriprise>
162 <#assign lc_used = mappedLC>
163 <#else>
164 <#assign lc_used = lc>
165 </#if>
166 </#if>
167 </#if>
168
169 <#assign offerId = "">
170 <#assign empOfferId = "">
171 <#if consumerCards[0]?has_content>
172 <#assign empOfferId = consumerCards[0].empofferId!"">
173 </#if>
174 <#assign marketingChannel = 'SAT2A'>
175 <#if isEmployee>
176 <#assign marketingChannel = 'EMPL'>
177 <#assign offerId = empOfferId>
178 <#assign consumerCardsEmployee = []>
179 <#list consumerCards as card>
180 <#if card.empofferId?has_content>
181 <#assign consumerCardsEmployee = consumerCardsEmployee + [card]>
182 </#if>
183 </#list>
184 <#assign consumerCards = consumerCardsEmployee />
185 </#if>
186
187 <#if (consumerCards?size > 0 || businessCards?size > 0)>
188
189 <div class="content-container content-container-main jn-consumer-content" id="product-display">
190 <#if ((consumerCards?size > 0) && (businessCards?size > 0) && (isEmployee == false))>
191 <nav class="jn-primary-nav two-tabs">
192 <ul>
193 <li title="${partnerName!''} - Personal products">
194 <a href="#" class="tab-nav active" id="consumerTab"><span>Personal</span></a>
195 </li>
196 <li title="${partnerName!''} - Business products">
197 <a href="#" class="tab-nav" id="businessTab"><span>Business</span></a>
198 </li>
199 </ul>
200 </nav>
201 <#else>
202 <#if (consumerCards?size > 0)>
203 <nav class="jn-primary-nav" title="${partnerName!''} - Personal products">
204 <ul>
205 <li>
206 <p class="tab-nav" id="consumerTab"><span>Personal</span></p>
207 </li>
208 </ul>
209 </nav>
210 </#if>
211 <#if (businessCards?size > 0 && (isEmployee == false))>
212 <nav class="jn-primary-nav" title="${partnerName!''} - Business products">
213 <ul>
214 <li>
215 <p class="tab-nav" id="businessTab"><span>Business</span></p>
216 </li>
217 </ul>
218 </nav>
219 </#if>
220 </#if>
221 <#if (consumerCards?size > 0)>
222 <div class="tab-more-wrapper">
223 <div class="jn-consumer-content-wrapper jn-tab-content active transition-start" data-id="consumerTab" title="${partnerName!''} - Personal products">
224 <#list consumerCards as fib>
225 <#assign useprcaValue = fib.useprca!"">
226 <#assign cardArtImage = cdnCardArtUrl + "/" + fib.filename + ".png" >
227 <#assign cardArtImageAlt = cdnCardArtUrl + "/"+fib.filename+".jpg">
228 <#assign hasBalanceTransferCalculator = false>
229 <#assign offerId = fib.saaofferId>
230 <#if isEmployee>
231 <#assign offerId = fib.empofferId!"">
232 </#if>
233
234 <#if ameriprise>
235 <#if (fib.offerType == "101")>
236 <#assign productName = "premier-visa-signature">
237 <#assign product="Premier Visa Signature">
238 <#assign cardIndex = 0>
239 <#elseif (fib.offerType == "103")>
240 <#assign productName = "visa-signature">
241 <#assign product="Visa Signature">
242 <#assign cardIndex = 1>
243 </#if>
244 <#assign titleText = consumerTitle.getSiblings()[cardIndex].Title.getData()>
245 <#assign titleText = titleText?replace('<[^>]+>','','r')>
246 <#else>
247 <#switch fib.offerType>
248 <#case "101">
249 <#assign productName = "consumer-edr2112">
250 <#assign product="Everyday Rewards+">
251 <#assign cardIndex = 0>
252 <#break>
253 <#case "108">
254 <#assign productName = "consumer-platinum2103">
255 <#assign product="Platinum">
256 <#assign cardIndex = 2>
257 <#assign hasBalanceTransferCalculator = true>
258 <#break>
259 <#case "109">
260 <#assign productName = "consumer-platinum2103">
261 <#assign product="Platinum">
262 <#assign cardIndex = 2>
263 <#assign hasBalanceTransferCalculator = true>
264 <#break>
265 <#case "115">
266 <#assign productName = "secured">
267 <#assign product="Secured">
268 <#assign cardIndex = 5>
269 <#break>
270 <#case "104">
271 <#assign productName = "max-cash">
272 <#assign product="Max Cash Preferred">
273 <#assign cardIndex = 1>
274 <#break>
275 <#case "147">
276 <#assign productName = "max-cash-secured">
277 <#assign product="Max Cash Secured">
278 <#assign cardIndex = 4>
279 <#break>
280 <#case "141">
281 <#assign productName = "college-real-rewards">
282 <#assign product="College Real Rewards">
283 <#assign cardIndex = 3>
284 <#break>
285 <#case "138">
286 <#assign productName = "travel-rewards-plus">
287 <#assign product="Travel Rewards+">
288 <#assign cardIndex = 10>
289 <#break>
290 <#case "154">
291 <#assign productName = "reserve-rewards-plus">
292 <#assign product="Reserve Rewards+">
293 <#assign cardIndex = 11>
294 <#break>
295 <#default>
296 </#switch>
297
298 <#assign newTag = "">
299 <#if (consumerTitle.getSiblings()[cardIndex].addNewTag?has_content && consumerTitle.getSiblings()[cardIndex].addNewTag.getData() == "true")>
300 <#assign newTag = "with-new-tag">
301 </#if>
302
303 <#assign titleText = consumerTitle.getSiblings()[cardIndex].Title.getData()>
304 <#assign titleText = titleText?replace('<[^>]+>','','r')>
305
306
307 <#assign APR="">
308 <#assign AMF="">
309 <#assign BAL="">
310
311
312 <#assign scrapedData = utilServ.makeCall('crcDDCGetSchumerBox', offerId + '&'+ fib.sourceCode)>
313 <#if (scrapedData?size > 0)>
314 <#list scrapedData as sItem>
315 <#if ((sItem.scrapedLabel?contains("Annual Percentage Rate (APR) for Purchases")) && (sItem.scrapedValue?has_content)) >
316 <#assign APR = sItem.scrapedValue>
317 <#elseif ((sItem.scrapedLabel?contains("Annual Membership Fee")) && (sItem.scrapedValue?has_content)) >
318 <#assign AMF = sItem.scrapedValue>
319 <#elseif ((sItem.scrapedLabel?contains("APR for Balance Transfers")) && (sItem.scrapedValue?has_content)) >
320 <#assign BAL = sItem.scrapedValue>
321 </#if>
322 <#if (APR?has_content && AMF?has_content && BAL?has_content)>
323 <#break>
324 </#if>
325 </#list>
326 </#if>
327 </#if>
328 <#if ameriprise>
329 <#assign rollover_text = partnerName + " " + product + " " + " Card">
330 <#else>
331 <#assign rollover_text = partnerName + " " + product + " " + " Credit Card">
332 </#if>
333 <div class="${newTag} jn-consumer-item item-${fib.offerType}" title="${rollover_text!''}">
334 <div class="tag-container">
335 <div class="tag-corner">
336 <div class="tag-label">NEW</div>
337 </div>
338 </div>
339 <div class="consumer-card-heading hide-desktop">
340 <div class="consumer-card-heading__subheading">${consumerTitle.getSiblings()[cardIndex].Title.getData()}</div>
341 ${consumerTitle.getSiblings()[cardIndex].headlineText.getData()}
342 </div>
343 <div class="jn-consumer-card-image">
344 <img src="${cardArtImage!''}" alt="${rollover_text!''}" class="jn-img-responsive" onerror="this.onerror=null;this.src='${cardArtImageAlt!''}'">
345
346 <#if (consumerTitle.getSiblings()[cardIndex].cardArtDescription?has_content) >
347 <p class="jn-card-art-description">${consumerTitle.getSiblings()[cardIndex].cardArtDescription.getData()}</p>
348 </#if>
349 <#if (hasBalanceTransferCalculator)>
350 <a style="display: block; text-align: center; max-width: 285px; margin: auto;" href="javascript:void(0);" data-micromodal-trigger="modal-2">See how much you could save with a balance transfer</a>
351 </#if>
352 </div>
353
354 <div class="jn-consumer-card-info">
355 <div class="consumer-card-heading hide-mobile">
356 <div class="consumer-card-heading__subheading">${consumerTitle.getSiblings()[cardIndex].Title.getData()}</div>
357 ${consumerTitle.getSiblings()[cardIndex].headlineText.getData()}
358 </div>
359 <div class="jn-additional">
360 <ul class="${fib.offerType}">
361 <#if !ameriprise>
362 <#if (fib.offerType == "104")>
363 <li class="${fib.offerType}">
364 <p>
365 <strong>APR for Purchases: </strong>
366 ${APR!''}
367 <a href="${oadURL_TC}?step=display&offerId=${offerId}&locationCode=${lc_used}" target="_blank">
368 <span class="screen-reader-only">${partnerName!''} ${product!''} Card </span>See terms & conditions
369 </a>
370 </p>
371 </li>
372 <li class="${fib.offerType}">
373 <p>
374 <strong>Intro APR<sup>*</sup> for Balance Transfers: </strong>
375 ${BAL!''}
376 <a href="${oadURL_TC}?step=display&offerId=${offerId}&locationCode=${lc_used}" target="_blank">
377 <span class="screen-reader-only">${partnerName!''} ${product!''} Card </span>See terms & conditions
378 </a>
379 </p>
380 </li>
381 <#else>
382 <li class="${fib.offerType}">
383 <p>
384 <#if (fib.offerType == "147" || fib.offerType== "115" || fib.offerType== "138" || fib.offerType== "154")>
385 <strong>APR for Purchases and Balance Transfers: </strong>
386 <#elseif (fib.offerType== "101")>
387 <strong>INTRO APR<sup>*</sup> for Purchases and Balance Transfers: </strong>
388 <#else>
389 <strong>Intro APR<sup>*</sup> for Purchases and Balance Transfers: </strong>
390 </#if>
391
392 ${APR!''}
393 <a href="${oadURL_TC}?step=display&offerId=${offerId}&locationCode=${lc_used}" target="_blank">
394 <span class="screen-reader-only">${partnerName!''} ${product!''} Card </span>See terms & conditions
395 </a>
396 </p>
397 </li>
398 </#if>
399 </#if>
400 <#if isEmployee && consumerTitle.getSiblings()[cardIndex].employeeAdditionalInfo.getData()?has_content>
401 <#if consumerTitle.getSiblings()[cardIndex].employeeAdditionalInfo.getSiblings()?has_content>
402 <#list consumerTitle.getSiblings()[cardIndex].employeeAdditionalInfo.getSiblings() as marketingInfo>
403 <li>${marketingInfo.getData()}</li>
404 </#list>
405 </#if>
406 <#elseif consumerTitle.getSiblings()[cardIndex].additionalInfo.getData()?has_content>
407 <#if consumerTitle.getSiblings()[cardIndex].additionalInfo.getSiblings()?has_content>
408 <#list consumerTitle.getSiblings()[cardIndex].additionalInfo.getSiblings() as marketingInfo>
409 <li>${marketingInfo.getData()}</li>
410 </#list>
411 </#if>
412 </#if>
413 <#if !ameriprise>
414 <li>
415 <p>
416 Annual Fee: ${AMF!''}
417 <a href="${oadURL_TC}?step=display&offerId=${offerId}&locationCode=${lc_used}" target="_blank">
418 <span class="screen-reader-only">${partnerName!''} ${product!''} Card </span>See terms & conditions
419 </a>
420 </p>
421 </li>
422 </#if>
423 </ul>
424 </div>
425 <ul class="actions">
426 <li>
427 <#if (useprcaValue == "1")>
428 <form action="${prcaURL}?locationCode=${lc_used}&offerId=${offerId}&preparerType=customer&mktChl=${marketingChannel}&applicationType=${applicationType}" method="post" class="BAAForm" id="BAAForm">
429 <label for="appDataBAA-${offerId}" style="position:absolute; clip:rect(0 0 0 0);">Application Data</label>
430 <textarea rows="20" cols="100" name="applicationData" id="appDataBAA-${offerId}" class="appDataBAA" style="display:none;" title="application data"></textarea>
431 <a
432 class="applyNowLink apply-now-button"
433 href="${prcaURL}?locationCode=${lc_used}&offerId=${offerId}&preparerType=customer&mktChl=${marketingChannel}&applicationType=${applicationType}"
434 data-button-name="apply-now-link"
435 data-product-name="${productName}"
436 >
437 ${consumerTitle.getSiblings()[cardIndex].applyNow.getData()}<span class="screen-reader-only"> for ${partnerName!''} ${product!''} Card </span>
438 </a>
439 </form>
440 <#else>
441 <form action="${oadURL}?locationCode=${lc_used}&offerId=${offerId}&preparerType=customer&mktChl=${marketingChannel}" method="post" class="BAAForm" id="BAAForm">
442 <label for="appDataBAA-${offerId}" style="position:absolute; clip:rect(0 0 0 0);">Application Data</label>
443 <textarea rows="20" cols="100" name="applicationData" id="appDataBAA-${offerId}" class="appDataBAA" style="display:none;" title="application data"></textarea>
444 <a
445 class="applyNowLink apply-now-button"
446 href="${oadURL}?locationCode=${lc_used}&offerId=${offerId}&preparerType=customer&mktChl=${marketingChannel}"
447 data-button-name="apply-now-link"
448 data-product-name="${productName}"
449 >
450 ${consumerTitle.getSiblings()[cardIndex].applyNow.getData()}<span class="screen-reader-only"> for ${partnerName!''} ${product!''} Card </span>
451 </a>
452 </form>
453 </#if>
454 </li>
455 <li>
456 <#if ameriprise>
457 <a href="${environment}/${productName}?bankercode=${bCode}&ecdma-lc=${lc_used}${ecidExt}">
458 ${consumerTitle.getSiblings()[cardIndex].LearnMore.getData()}<span class="screen-reader-only"> about ${partnerName!''} ${product!''} Card </span>
459 </a>
460 <#else>
461 <a href="${environment}/${productName}?bankercode=${bCode}&ecdma-lc=${lc}${ecidExt}">
462 ${consumerTitle.getSiblings()[cardIndex].LearnMore.getData()}<span class="screen-reader-only">about ${partnerName!''} ${product!''} Card </span>
463 </a>
464 </#if>
465 </li>
466 </ul>
467 </div>
468 </div>
469 </#list>
470 </div>
471 </div>
472 </#if>
473 <#if ((businessCards?size > 0) && (isEmployee == false))>
474 <div class="tab-more-wrapper">
475 <div class="jn-consumer-content-wrapper jn-tab-content transition-start" data-id="businessTab" title="${partnerName!''} - Business products">
476
477 <#list businessCards as fib>
478 <#assign useprcaValue = fib.useprca!"">
479 <#assign cardArtImage = cdnCardArtUrl + "/" + fib.filename + ".png">
480 <#assign cardArtImageAlt = cdnCardArtUrl + "/"+fib.filename+".jpg">
481 <#switch fib.offerType>
482 <#case "144">
483 <#assign productName = "smart-business-rewards">
484 <#assign product="Smart Business Rewards">
485 <#assign cardIndex = 8>
486 <#break>
487 <#case "128">
488 <#assign productName = "business-cash-preferred">
489 <#assign product="Business Cash Preferred">
490 <#assign cardIndex = 6>
491 <#break>
492 <#case "143">
493 <#assign productName = "business-real-rewards">
494 <#assign product="Business Real Rewards">
495 <#assign cardIndex = 9>
496 <#break>
497 <#case "121">
498 <#assign productName = "business-platinum2103">
499 <#assign product="Business Card">
500 <#assign cardIndex = 7>
501 <#break>
502 <#default>
503 </#switch>
504 <!-- bussiness cards offerId dose not check for isEmployee because employees can't have business cards -->
505 <#assign offerId = fib.saaofferId>
506
507 <#assign newTag = "">
508 <#if (consumerTitle.getSiblings()[cardIndex].addNewTag?has_content && consumerTitle.getSiblings()[cardIndex].addNewTag.getData() == "true")>
509 <#assign newTag = "with-new-tag">
510 </#if>
511 <#assign APR="">
512 <#assign AMF="">
513 <#assign scrapedData = utilServ.makeCall('crcDDCGetSchumerBox', offerId + '&'+ fib.sourceCode)>
514 <#if (scrapedData?size > 0)>
515 <#list scrapedData as sItem>
516 <#if ((sItem.scrapedLabel?contains("Annual Percentage Rate (APR) for Purchases")) && (sItem.scrapedValue?has_content)) >
517 <#assign APR = sItem.scrapedValue>
518 <#elseif ((sItem.scrapedLabel?contains("Annual Membership Fee")) && (sItem.scrapedValue?has_content)) >
519 <#assign AMF = sItem.scrapedValue>
520 </#if>
521 <#if (APR?has_content && AMF?has_content)>
522 <#break>
523 </#if>
524 </#list>
525 </#if>
526
527 <div class="${newTag} jn-consumer-item item-${fib.offerType}" title="${partnerName!''} ${product!''} Credit Card">
528 <div class="tag-container">
529 <div class="tag-corner">
530 <div class="tag-label">NEW</div>
531 </div>
532 </div>
533 <div class="consumer-card-heading hide-desktop">
534 <div class="consumer-card-heading__subheading">${consumerTitle.getSiblings()[cardIndex].Title.getData()}</div>
535 ${consumerTitle.getSiblings()[cardIndex].headlineText.getData()}
536 </div>
537 <div class="jn-consumer-card-image">
538 <img src="${cardArtImage!''}" alt="${rollover_text!''}" class="jn-img-responsive" onerror="this.onerror=null;this.src='${cardArtImageAlt!''}'">
539
540 <#if (consumerTitle.getSiblings()[cardIndex].cardArtDescription?has_content) >
541 <p class="jn-card-art-description">${consumerTitle.getSiblings()[cardIndex].cardArtDescription.getData()}</p>
542 </#if>
543 </div>
544
545 <div class="jn-consumer-card-info">
546 <div class="consumer-card-heading hide-mobile">
547 <div class="consumer-card-heading__subheading">${consumerTitle.getSiblings()[cardIndex].Title.getData()}</div>
548 ${consumerTitle.getSiblings()[cardIndex].headlineText.getData()}
549 </div>
550 <div class="jn-additional">
551 <ul>
552 <li class="${fib.offerType}">
553 <p>
554 <#if (fib.offerType == "144")>
555 <strong>APR for Purchases and Balance Transfers: </strong>
556 <#else>
557 <strong>Intro APR<sup>*</sup> for Purchases and Balance Transfers: </strong>
558 </#if>
559
560 ${APR!''}
561 <a href="${oadURL_TC}?step=display&offerId=${offerId}&locationCode=${lc_used}" target="_blank">
562 <span class="screen-reader-only">${partnerName!''} ${product!''} Card </span>See terms & conditions
563 </a>
564 </p>
565 </li>
566 <#if isEmployee && consumerTitle.getSiblings()[cardIndex].employeeAdditionalInfo.getData()?has_content>
567 <#if consumerTitle.getSiblings()[cardIndex].employeeAdditionalInfo.getSiblings()?has_content>
568 <#list consumerTitle.getSiblings()[cardIndex].employeeAdditionalInfo.getSiblings() as marketingInfo>
569 <li>${marketingInfo.getData()}</li>
570 </#list>
571 </#if>
572 <#elseif consumerTitle.getSiblings()[cardIndex].additionalInfo.getData()?has_content>
573 <#if consumerTitle.getSiblings()[cardIndex].additionalInfo.getSiblings()?has_content>
574 <#list consumerTitle.getSiblings()[cardIndex].additionalInfo.getSiblings() as marketingInfo>
575 <li>${marketingInfo.getData()}</li>
576 </#list>
577 </#if>
578 </#if>
579 <li>
580 <p>
581 Annual Fee: ${AMF!''} <a
582 href="${oadURL_TC}?step=display&offerId=${offerId}&locationCode=${lc_used}" target="_blank">
583 <span class="screen-reader-only">${partnerName!''} ${product!''} Card </span>See terms & conditions
584 </a>
585 </p>
586 </li>
587 </ul>
588 </div>
589 <ul class="actions">
590 <li>
591 <#if (useprcaValue == "1")>
592 <form action="${prcaURL}?locationCode=${lc_used}&offerId=${offerId}&preparerType=customer&mktChl=${marketingChannel}&applicationType=${applicationType}" method="post" class="BAAForm">
593 <label for="appDataBAA-${offerId}" style="position:absolute; clip:rect(0 0 0 0);">Application Data</label>
594 <textarea rows="20" cols="100" name="applicationData" id="appDataBAA-${offerId}" class="appDataBAA" style="display:none;" title="application data"></textarea>
595 <a
596 class="applyNowLink apply-now-button"
597 href="${prcaURL}?locationCode=${lc_used}&offerId=${offerId}&preparerType=customer&mktChl=${marketingChannel}&applicationType=${applicationType}"
598 data-button-name="apply-now-link"
599 data-product-name="${productName}"
600 >
601 ${consumerTitle.getSiblings()[cardIndex].applyNow.getData()}
602 <span class="screen-reader-only"> for ${partnerName!''} ${product!''} Card </span>
603 </a>
604 </form>
605 <#else>
606 <form action="${oadURL}?locationCode=${lc_used}&offerId=${offerId}&preparerType=customer&mktChl=${marketingChannel}" method="post" class="BAAForm">
607 <label for="appDataBAA-${offerId}" style="position:absolute; clip:rect(0 0 0 0);">Application Data</label>
608 <textarea rows="20" cols="100" name="applicationData" id="appDataBAA-${offerId}" class="appDataBAA" style="display:none;" title="application data"></textarea>
609 <a
610 class="applyNowLink apply-now-button"
611 href="${oadURL}?locationCode=${lc_used}&offerId=${offerId}&preparerType=customer&mktChl=${marketingChannel}"
612 data-button-name="apply-now-link"
613 data-product-name="${productName}"
614 >
615 ${consumerTitle.getSiblings()[cardIndex].applyNow.getData()}
616 <span class="screen-reader-only"> for ${partnerName!''} ${product!''} Card </span>
617 </a>
618 </form>
619 </#if>
620
621
622 </li>
623 <li>
624 <a href="${environment}/${productName}?bankercode=${bCode}&ecdma-lc=${lc}${ecidExt}">
625 ${consumerTitle.getSiblings()[cardIndex].LearnMore.getData()}<span class="screen-reader-only">about ${partnerName!''} ${product!''} Card </span>
626 </a>
627 </li>
628 </ul>
629 </div>
630 </div>
631
632 </#list>
633
634 </div>
635 </div>
636 </#if>
637 </div>
638 <script>
639 var consumerSelector = '.jn-consumer-content-wrapper.jn-tab-content[data-id="consumerTab"]';
640 var businessSelector = '.jn-consumer-content-wrapper.jn-tab-content[data-id="businessTab"]';
641 $(document).ready(function () {
642 var banker_code = "${bCode!''}";
643 var tabs=$('.tab-nav');
644 var slideDiv = $('.jn-tab-content.active');
645 var screenWidthMobile = 768;
646 var screenWidth = window.innerWidth;
647
648 if (tabs.length == 1) {
649 if ($(consumerSelector).length > 0) {
650 if(banker_code && (banker_code.indexOf("amp") == 0) && (banker_code.length > 6)) {
651 $("nav.jn-primary-nav").hide();
652 changeCardLayout(consumerSelector);
653 createMetaTag("consumer");
654 } else {
655 hideHeroAndDisclaimer('business');
656 showHeroAndDisclaimer('consumer');
657 changeCardLayout(consumerSelector);
658 renumberFootnote("consumer");
659 createMetaTag("consumer");
660 }
661 }
662 if ($(businessSelector).length > 0) {
663 $(businessSelector).addClass('active');
664 hideHeroAndDisclaimer('consumer');
665 showHeroAndDisclaimer('business');
666 changeCardLayout(businessSelector);
667 renumberFootnote("business");
668 createMetaTag("business");
669 }
670 }
671 if (tabs.length == 2) {
672 renumberFootnote("consumer");
673 renumberFootnote("business");
674 createMetaTag("consumer");
675 if ($(consumerSelector + ' .jn-consumer-item').length < 3) {
676 changeCardLayout(consumerSelector);
677 }
678 if ($(businessSelector + ' .jn-consumer-item').length < 3) {
679 changeCardLayout(businessSelector);
680 }
681
682 var tabsNav = document.querySelectorAll('.tab-nav');
683 togglePrimaryNav(tabsNav);
684
685 if(window.location.href.indexOf('#business') > -1 ) {
686 $(consumerSelector).removeClass('active');
687 $(businessSelector).addClass('active');
688 $('#consumerTab').removeClass('active');
689 $('#businessTab').addClass('active');
690 hideHeroAndDisclaimer('consumer');
691 showHeroAndDisclaimer('business');
692 changeCardLayout(businessSelector);
693 renumberFootnote("business");
694 createMetaTag("business");
695
696 $(tabs).click(function(){
697 if ($(this).attr('id') === "consumerTab") {
698 var newUrl = window.location.toString();
699 window.location = newUrl.replace(/#business/, '#consumer');
700 }
701 if ($(this).attr('id') === "businessTab") {
702 var url = window.location.toString();
703 window.location = url.replace(/#consumer/, '#business');
704 }
705 });
706 }
707 }
708
709 });
710 // Primary Nav function
711
712 function togglePrimaryNav(elem) {
713 for (var i = 0; i < elem.length; i++) {
714 elem[i].addEventListener("click", function(e) {
715
716 var current = this,
717 allSections = document.querySelectorAll('[data-id]'),
718 section = document.querySelector("[data-id='"+ current.id +"']");
719
720 for (var a = 0; a < allSections.length; a++) {
721 allSections[a].classList.remove('active');
722 }
723 for (var c = 0; c < elem.length; c++) {
724 if (current != elem[c]) {
725 elem[c].classList.remove('active');
726 } else {
727 current.classList.add('active');
728 section.classList.add('active');
729 hideHeroAndDisclaimer('consumer');
730 hideHeroAndDisclaimer('business');
731 if(current.getAttribute('id') === "consumerTab"){
732 showHeroAndDisclaimer('consumer');
733 } else if(current.getAttribute('id') === "businessTab"){
734 showHeroAndDisclaimer('business');
735 }
736 }
737 }
738 e.preventDefault();
739 });
740 }
741 }
742
743 function renumberFootnote(type) {
744 var discriptionSelector = '.jn-consumer-content-wrapper.jn-tab-content' + '[data-id="' + type + 'Tab"]';
745 var disclaimerSelector = '.tier1-disclaimer-landing-' + type;
746 var heroSelector = '.tier1-hero-landing-' + type;
747 var numOfFootnote = $(disclaimerSelector + ' sup').length;
748 var showList = [];
749 var hideList=[];
750 for (var i = 1; i <= numOfFootnote; i++) {
751 var cssClass="tag-" + i;
752 if ($(discriptionSelector + ' sup').hasClass(cssClass) || $(heroSelector + ' sup').hasClass(cssClass)) {
753 showList.push(i);
754 } else {
755 hideList.push(i);
756 }
757 }
758 /*
759 for (var i = 1; i < showList.length + 1; i++) {
760 if(showList[i-1] != i) {
761 var className="tag-" + showList[i-1];
762 $(heroSelector).find("." + className).html(i);
763 // $(discriptionSelector).find("." + className).html(i);
764 $(disclaimerSelector).find("." + className).html(i);
765 }
766 }
767 */
768 for (var i = 0; i <hideList.length; i++) {
769 var cname="tag-" + hideList[i];
770 $(disclaimerSelector).find("." + cname).parent().hide();
771 }
772 }
773
774 function changeCardLayout(cssSelector) {
775 var numOfCards = $(cssSelector + ' .jn-consumer-item').length;
776 if(numOfCards == 1) {
777 $(cssSelector).addClass('one-card');
778 } else if (numOfCards == 2) {
779 $(cssSelector).addClass('two-card');
780 }
781 }
782 function hideHeroAndDisclaimer(type) {
783 try {
784 document.querySelector('.tier1-hero-landing-'+ type).classList.remove('show');
785 document.querySelector('.tier1-hero-landing-'+ type).classList.add('hide');
786 } catch (e) {
787 console.log(e);
788 }
789
790 try {
791 document.querySelector('.tier1-disclaimer-landing-'+ type).classList.remove('show');
792 document.querySelector('.tier1-disclaimer-landing-'+ type).classList.add('hide');
793 } catch (e) {
794 console.log(e);
795 }
796
797 }
798 function showHeroAndDisclaimer(type) {
799 try {
800 document.querySelector('.tier1-hero-landing-'+ type).classList.add('show');
801 document.querySelector('.tier1-hero-landing-'+ type).classList.remove('hide');
802 } catch (e) {
803 console.log(e);
804 }
805
806 try {
807 document.querySelector('.tier1-disclaimer-landing-'+ type).classList.add('show');
808 document.querySelector('.tier1-disclaimer-landing-'+ type).classList.remove('hide');
809 } catch (e) {
810 console.log(e);
811 }
812
813 }
814 function createMetaTag(type) {
815 var partnerName = "${partnerName!0}";
816 var product_name = $('.jn-hero-container .jn-button').data('product-name');
817 var metaDesc = "";
818 if (type == "consumer") {
819 if(location.pathname.indexOf("11t1m") != -1) {
820 metaDesc = "Apply Today for an Ameriprise Financial Credit Card. Earn Rewards Points worth $375 cash value when deposited into an eligible account after spending $3,000 in eligible net purchases within the first 90 days of account opening."
821 } else {
822 if(product_name == "consumer-platinum2103") {
823 metaDesc = "Apply Today for a "+partnerName+" Credit Card. Limited Time Offer. 0% Intro APR on Purchases and Balance Transfers for 20 Billing Cycles Consolidate your Balances with the "+partnerName+" Intro APR Card.";
824 } else if(product_name == "real-rewards") {
825 metaDesc = "Apply Today for a "+partnerName+" Credit Card. Take home 2,500 bonus points after your first purchase.";
826 } else if(product_name == "secured") {
827 metaDesc = "Apply Today for a "+partnerName+" Credit Card. Use this card as a solid foundation to build your credit.";
828 } else if(product_name == "max-cash") {
829 if('${isEmployee?string("yes", "no")}' == "yes") {
830 metaDesc = "Apply Today for a "+partnerName+" Credit Card. Earn a $200 Bonus and 5% cash back on the two categories you select.";
831 } else {
832 metaDesc = "Apply Today for a "+partnerName+" Credit Card. Earn a $150 Bonus and 5% cash back on the two categories you select.";
833 }
834 }
835 }
836
837 } else if (type == "business") {
838 if(product_name == "business-cashback") {
839 metaDesc = "Apply Today for a "+partnerName+" Credit Card. Earn Cash back on common business expenses.";
840 } else if(product_name == "business-real-rewards") {
841 metaDesc = "Apply Today for a "+partnerName+" Credit Card. Get more rewards in the categories you spend the most on.";
842 } else if(product_name == "business-visa") {
843 metaDesc = "Apply Today for a "+partnerName+" Business Card. 0% Intro APR on Purchases and Balance Transfers for 15 Billing Cycles";
844 } else if(product_name == "smart-business-rewards") {
845 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.";
846 }
847 }
848 var m = document.createElement('meta');
849 m.name = 'description';
850 m.content = metaDesc;
851 document.head.appendChild(m);
852 }
853 function goToByScroll(id) {
854 var element = document.getElementById(id);
855 element.scrollIntoView(true);
856 }
857
858 </script>
859 <script>
860 var reportingData = window.reportingData || {};
861 document.addEventListener('DOMContentLoaded', function() {
862 var page = location.pathname.split('/')[location.pathname.split('/').length-1];
863 var hostName = location.hostname;
864 function getDomainFromHostname(hostname) {
865 var parts = hostname.split('.');
866 return parts.length === 3 ? parts[1] : parts[0];
867 }
868 var domain = getDomainFromHostname(hostName);
869 var partnerName = "${partnerName!0}";
870 var ameriprise = '${ameriprise?string("yes", "no")}';
871 var locationCode = "${rLC!lc}";
872 var eidAmp = "";
873 var heroCardImgs = document.querySelectorAll('.jn-consumer-card-image img, .cardArtImg img');
874 for (var index = 0; index < heroCardImgs.length; index++) {
875 var heroCardImg = heroCardImgs[index];
876 var heroCardSrc = heroCardImg.getAttribute("src");
877 if(heroCardSrc != "") {
878 resizeImg(heroCardImg);
879 }
880 }
881 if (ameriprise == "yes") {
882 var bankercode_amp = '${bCode}';
883 eidAmp = bankercode_amp.substring(3);
884 locationCode ="";
885 document.title = "Ameriprise Financial Credit Card Overview Page";
886 } else {
887 document.title = partnerName + " Credit Card Index Page";
888 }
889
890 var lc = '${lc!0}';
891
892 var regex = /\d+/g;
893 var bdNumber = "${bPhone!''}";
894 var phoneNum = bdNumber.match(regex);
895 var areaCode = "";
896 var exchangeCode = "";
897 var num = "";
898 if(phoneNum != null) {
899 phoneNum = phoneNum.join("");
900 areaCode = phoneNum.substring(0,3);
901 exchangeCode = phoneNum.substring(3,6);
902 num = phoneNum.substring(6,10);
903 }
904
905 /* update SiteCatalyst data object */
906 reportingData.current_page = "microsite:${partnerName}:" + domain + ':' + page.replace('-',' ');
907 reportingData.page_type = 'product';
908 reportingData.site_section = 'credit cards';
909 reportingData.platform = 'microsite';
910 reportingData.campaign_id = '${campaignId}';
911 reportingData.location_code = '${rLC!0}';
912 reportingData.partner_name = "${partnerName}";
913 reportingData.product = 'All Cards';
914 reportingData.text_to_apply_source = '${text_to_apply_source}';
915 reportingData.visitor_type = 'prospect';
916 reportingData.Banker_id = '${boeid}';
917 reportingData.Banker_code = '${bCode}';
918
919
920 /* SiteCatalyst pageView tracking */
921 AUI().ready(function() {
922 if (window.publisherFW) {
923 window.publisherFW.publishEvent("pageView", reportingData);
924 }
925 });
926
927 $('.jn-button').removeAttr('disabled');
928 $('.jn-button').removeClass('jn-disabled');
929
930 jQuery('.applyNowLink').on('click', function(e) {
931 $(this).closest('.BAAForm').submit();
932 const bankerId = '${boeid}';
933 const employeeId = "";
934 let visitorId = bankerId;
935
936 if('${isEmployee?string("yes", "no")}' == "yes") {
937 visitorId = employeeId;
938 }
939 const htmlElementName = e.target.nodeName;
940 const isButton = (htmlElementName ==='BUTTON');
941 // gets href of clicked anchor tag
942 let href = e.target.href;
943
944 // get action url of form submit button
945 if(isButton) {
946 href = document.getElementById('BAAForm').action;
947 }
948
949 const urlParams = new URLSearchParams(href);
950 let offerId = "";
951
952 if(urlParams.has('offerid')) {
953 offerId = urlParams.get('offerid');
954 }
955
956 if(urlParams.has('offerId')) {
957 offerId = urlParams.get('offerId');
958 }
959
960 window.dataLayer.push({
961 'event' : 'apply_payload',
962 'location_code': locationCode,
963 'banker_code': '${bCode}',
964 'offer_id': offerId,
965 'visitor_id': visitorId,
966 });
967 return false;
968 });
969 jQuery(".BAAForm").on("submit", function(e){
970 e.preventDefault();
971 var xmlData;
972 if('${isEmployee?string("yes", "no")}' == "yes") {
973 }
974 if(ameriprise == "yes") {
975 xmlData = '<?xml version="1.0"?>'+
976 "<prefillData>"+
977 "<versionNumber>1.0</versionNumber>"+
978 "<applicationData>"+
979 "<referral>" +
980 "<employeeId>" + eidAmp + "</employeeId>" +
981 "<storeNumber>"+"${bName!'0'}"+"</storeNumber>"+
982 "<divisionNumber></divisionNumber>"+
983 "</referral>" +
984 "<bankerInformation>"+
985 "<locationCode>" + locationCode + "</locationCode>"+
986 "<originatingBranchNumber>"+"${bName!'0'}"+"</originatingBranchNumber>"+
987 "<employeeID>${boeid!0}</employeeID>"+
988 "<name>" +
989 "<first>${bFName!'0'}</first>" +
990 "<last>${bLName!'0'}</last>" +
991 "</name>"+
992 "<phone>"+
993 "<areaCode>"+areaCode+"</areaCode>"+
994 "<exchange>"+exchangeCode+"</exchange>"+
995 "<number>"+num+"</number>"+
996 "</phone>"+
997 "</bankerInformation>"+
998 "</applicationData>"+
999 "</prefillData>"
1000 } else if ('${isEmployee?string("yes", "no")}' == "yes") {
1001 xmlData = '<?xml version="1.0"?>'+
1002 "<prefillData>"+
1003 "<versionNumber>1.0</versionNumber>"+
1004 "<applicationData>"+
1005 "<bankerInformation>"+
1006 "<employeeFullName>Employee Product</employeeFullName>"+
1007 "<employeeId>EMPPROD</employeeId>"+
1008 "<employeePhoneNumber></employeePhoneNumber>"+
1009 "<locationCode>" + locationCode + "</locationCode>"+
1010 "<originatingBranchNumber>"+"${bName!'0'}"+"</originatingBranchNumber>"+
1011 "<originatingBranchId></originatingBranchId>"+
1012 "<name>" +
1013 "<first>${bFName!'0'}</first>" +
1014 "<last>${bLName!'0'}</last>" +
1015 "</name>"+
1016 "<phone>"+
1017 "<areaCode>" + areaCode + "</areaCode>"+
1018 "<exchange>" + exchangeCode + "</exchange>"+
1019 "<number>" + num + "</number>"+
1020 "</phone>"+
1021 "</bankerInformation>"+
1022 "<referral>" +
1023 "<divisionNumber></divisionNumber>" +
1024 "<partnerLocationID>" + locationCode + "</partnerLocationID>" +
1025 "<referralId>EMPPROD</referralId>" +
1026 "</referral>" +
1027 "</applicationData>"+
1028 "</prefillData>";
1029 } else {
1030 xmlData = '<?xml version="1.0"?>'+
1031 "<prefillData>"+
1032 "<versionNumber>1.0</versionNumber>"+
1033 "<applicationData>"+
1034 "<bankerInformation>"+
1035 "<locationCode>" + locationCode + "</locationCode>"+
1036 "<originatingBranchNumber>"+"${bName!'0'}"+"</originatingBranchNumber>"+
1037 "<employeeID>${boeid!0}</employeeID>"+
1038 "<name>" +
1039 "<first>${bFName!'0'}</first>" +
1040 "<last>${bLName!'0'}</last>" +
1041 "</name>"+
1042 "<phone>"+
1043 "<areaCode>"+areaCode+"</areaCode>"+
1044 "<exchange>"+exchangeCode+"</exchange>"+
1045 "<number>"+num+"</number>"+
1046 "</phone>"+
1047 "</bankerInformation>"+
1048 "</applicationData>"+
1049 "</prefillData>"
1050 }
1051 console.log("useprcaValue---->"+${useprcaValue})
1052 if('${useprcaValue}' =='1'){
1053 if('${isEmployee?string("yes", "no")}' == "yes"){
1054 var employeeFullName = "${fName!'0'}" + ' ' + "${lName!'0'}";
1055 var firstName = "${fName!'0'}".trim();
1056 var lastName = "${lName!'0'}".trim();
1057 var fullName = employeeFullName.trim();
1058
1059 if (fullName.length <= 20) {
1060 employeeFullName = fullName;
1061 } else if (firstName.length + 1 + lastName.length <= 20) {
1062 employeeFullName = firstName.charAt(0) + ' ' + lastName;
1063 } else {
1064 employeeFullName = firstName.charAt(0) + ' ' + lastName.substring(0, 19);
1065 }
1066 var applicationJsonData = {
1067 "prefillData": {
1068 "versionNumber": "1.0",
1069 "applicationData": {
1070 "bankerInformation": {
1071 "locationCode": locationCode,
1072 "originatingBranchId": "${bName!'0'}",
1073 "employeeId": "EMPPROD",
1074 "employeeFullName": "Employee Product",
1075 "employeePhoneNumber": phoneNum
1076 }
1077 }
1078 }
1079 };
1080 }else{
1081 var employeeFullName = "${fName!'0'}" + ' ' + "${lName!'0'}";
1082 var firstName = "${fName!'0'}".trim();
1083 var lastName = "${lName!'0'}".trim();
1084 var fullName = employeeFullName.trim();
1085
1086 if (fullName.length <= 20) {
1087 employeeFullName = fullName;
1088 } else if (firstName.length + 1 + lastName.length <= 20) {
1089 employeeFullName = firstName.charAt(0) + ' ' + lastName;
1090 } else {
1091 employeeFullName = firstName.charAt(0) + ' ' + lastName.substring(0, 19);
1092 }
1093 var applicationJsonData = {
1094 "prefillData": {
1095 "versionNumber": "1.0",
1096 "applicationData": {
1097 "bankerInformation": {
1098 "locationCode": locationCode,
1099 "originatingBranchId": "${bName!'0'}",
1100 "employeeId": "${boeid!0}",
1101 "employeeFullName": employeeFullName,
1102 "employeePhoneNumber": phoneNum
1103 }
1104 }
1105 }
1106 };
1107 }
1108 var jsonData = JSON.stringify(applicationJsonData);
1109 $(this).children(".appDataBAA").val(jsonData);
1110 }else{
1111 $(this).children(".appDataBAA").val(xmlData);
1112 }
1113
1114 var buttonName = $(this).find(".apply-now-button").data("button-name");
1115 var productName = $(this).find(".apply-now-button").data("product-name");
1116 /* SiteCatalyst onClick tracking */
1117 reportingData.apply_button = buttonName;
1118 reportingData.product = productName;
1119
1120 if (window.publisherFW) {
1121 window.publisherFW.publishEvent("onClick", reportingData);
1122 }
1123 var paramString = '${bCode}' + "&" + xmlData + "&" + '${htmlUtil.escapeURL(htmlUtil.escapeJS(url))}';
1124 /* CRC service call */
1125 Liferay.Service(
1126 '/crc-utilities-portlet#crcremote/make-call',
1127 {
1128 storedProcedure: 'crcDDCTextApplyLog',
1129 parameters: paramString
1130 },
1131 function(obj){
1132 }
1133 );
1134
1135 this.submit();
1136 });
1137 });
1138 function resizeImg(img) {
1139 img.addEventListener("load", function() {
1140 var cardImgWidth = img.width;
1141 var cardImgHeight = img.height;
1142 if(cardImgWidth > cardImgHeight) {
1143 img.style.width = "285px";
1144 } else {
1145 img.style.width = "150px";
1146 }
1147 });
1148 }
1149 </script>
1150
1151 </#if>
1152 </#if>
1153</#if>
Fel uppstod under bearbetning av mallen.
The following has evaluated to null or missing: ==> qstringmap["bankercode"] [in template "10154#10192#153411744" at line 5, column 17] ---- 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 bCode = qstringmap["bankercod... [in template "10154#10192#153411744" at line 5, column 1] ----
1<#assign url = themeDisplay.getURLCurrent() >
2<#assign qstringmap = httpUtil.getParameterMap(httpUtil.getQueryString(url))>
3<#assign utilServ = (serviceLocator.findService("com.elan.crc.utilites.service.CRCRemoteServiceService"))! />
4
5<#assign bCode= qstringmap["bankercode"]?first>
6<#assign bCode = htmlUtil.escape(bCode)>
7<#assign bCode = htmlUtil.escapeJS(bCode)>
8
9<#assign bData = utilServ.makeCall('crcDDCBankerAssistedAppDetailSql','0&'+bCode)>
10<#list bData as b>
11 <#assign lc = b.locationcode >
12 <#assign rLC = b.reallocationcode >
13 <#assign mappedLC = b.mappedLocationCode >
14</#list>
15<#if bCode?starts_with("amp") && (url?contains("11t1m"))>
16 <#assign ameriprise = true>
17<#else>
18 <#assign ameriprise = false>
19</#if>
20<#if mappedLC?has_content && !ameriprise>
21 <#assign lc = mappedLC >
22</#if>
23
24
25<#if lc?has_content>
26 <#assign prefix = "00000" >
27 <#assign lcWithPrefix = prefix + lc >
28 <#assign withPrefixLength = lcWithPrefix?length >
29 <#assign startHere = withPrefixLength - 5>
30 <#assign lc = lcWithPrefix?substring(startHere)>
31 <#assign clientProfileService = (serviceLocator.findService("com.elan.crc.user.service.CrcClientProfileLocalService"))! />
32 <#assign clientProfileList = clientProfileService.findByLocationCode(lc)>
33
34 <#assign clientProfile = clientProfileList?first>
35 <#assign partnerName=clientProfile.getMarketingNameLong()>
36
37 <#assign pbu = clientProfile.getPbu()>
38 <#assign subbu = clientProfile.getSUBBRANDBUNBR()>
39 <#assign fiCardsData = utilServ.makeCall('crcTier3GetPbuData','0&'+ pbu +'&'+subbu)>
40 <#assign isEmployee = false>
41
42 <#assign fiData= utilServ.makeCall('crcDDCBankerAssistedAppSql','0&'+bCode)>
43 <#if fiData?first?has_content>
44 <#assign fi = fiData?first>
45 <#if fi.projectType == "emp">
46 <#assign isEmployee = true>
47 </#if>
48 </#if>
49
50
51 <#if (fiCardsData?size > 0) >
52 <#assign cardProvider = utilServ.makeCall('crcDDCGetMcOrVisa', fiCardsData[0].offerType + '&' + lc)>
53
54 <#if (cardProvider?size > 0)>
55 <#-- This will be V for visa or M for mastercard. -->
56 <#assign cardProviderAbbreviated = cardProvider[0].cardType>
57 <#else>
58 <script>
59 console.log("No card provider(Visa/Master Card) found for disclaimer");
60 </script>
61 </#if>
62
63 <div class="jn-disclaimer tier1-disclaimer-${class.getData()}" title="${partnerName} - Disclaimer">
64 <div class="disclaimer" >
65 <#if isEmployee && employeeDisclaimersVisa?has_content && cardProviderAbbreviated?contains("V")>
66 ${employeeDisclaimersVisa.getData()}
67 <#elseif isEmployee && employeeDisclaimersMasterCard?has_content && cardProviderAbbreviated?contains("M") >
68 ${employeeDisclaimersMasterCard.getData()}>
69 <#elseif disclaimersVisa?has_content && cardProviderAbbreviated?contains("V")>
70 ${disclaimersVisa.getData()}
71 <#elseif disclaimersMasterCard?has_content && cardProviderAbbreviated?contains("M") >
72 ${disclaimersMasterCard.getData()}
73 </#if>
74 </div>
75 </div>
76 </#if>
77<#else>
78 <script>
79 console.log("No lc for disclaimer");
80 </script>
81</#if>
Fel uppstod under bearbetning av mallen.
The following has evaluated to null or missing: ==> qstringmap["bankercode"] [in template "10154#10192#153411744" at line 5, column 17] ---- 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 bCode = qstringmap["bankercod... [in template "10154#10192#153411744" at line 5, column 1] ----
1<#assign url = themeDisplay.getURLCurrent() >
2<#assign qstringmap = httpUtil.getParameterMap(httpUtil.getQueryString(url))>
3<#assign utilServ = (serviceLocator.findService("com.elan.crc.utilites.service.CRCRemoteServiceService"))! />
4
5<#assign bCode= qstringmap["bankercode"]?first>
6<#assign bCode = htmlUtil.escape(bCode)>
7<#assign bCode = htmlUtil.escapeJS(bCode)>
8
9<#assign bData = utilServ.makeCall('crcDDCBankerAssistedAppDetailSql','0&'+bCode)>
10<#list bData as b>
11 <#assign lc = b.locationcode >
12 <#assign rLC = b.reallocationcode >
13 <#assign mappedLC = b.mappedLocationCode >
14</#list>
15<#if bCode?starts_with("amp") && (url?contains("11t1m"))>
16 <#assign ameriprise = true>
17<#else>
18 <#assign ameriprise = false>
19</#if>
20<#if mappedLC?has_content && !ameriprise>
21 <#assign lc = mappedLC >
22</#if>
23
24
25<#if lc?has_content>
26 <#assign prefix = "00000" >
27 <#assign lcWithPrefix = prefix + lc >
28 <#assign withPrefixLength = lcWithPrefix?length >
29 <#assign startHere = withPrefixLength - 5>
30 <#assign lc = lcWithPrefix?substring(startHere)>
31 <#assign clientProfileService = (serviceLocator.findService("com.elan.crc.user.service.CrcClientProfileLocalService"))! />
32 <#assign clientProfileList = clientProfileService.findByLocationCode(lc)>
33
34 <#assign clientProfile = clientProfileList?first>
35 <#assign partnerName=clientProfile.getMarketingNameLong()>
36
37 <#assign pbu = clientProfile.getPbu()>
38 <#assign subbu = clientProfile.getSUBBRANDBUNBR()>
39 <#assign fiCardsData = utilServ.makeCall('crcTier3GetPbuData','0&'+ pbu +'&'+subbu)>
40 <#assign isEmployee = false>
41
42 <#assign fiData= utilServ.makeCall('crcDDCBankerAssistedAppSql','0&'+bCode)>
43 <#if fiData?first?has_content>
44 <#assign fi = fiData?first>
45 <#if fi.projectType == "emp">
46 <#assign isEmployee = true>
47 </#if>
48 </#if>
49
50
51 <#if (fiCardsData?size > 0) >
52 <#assign cardProvider = utilServ.makeCall('crcDDCGetMcOrVisa', fiCardsData[0].offerType + '&' + lc)>
53
54 <#if (cardProvider?size > 0)>
55 <#-- This will be V for visa or M for mastercard. -->
56 <#assign cardProviderAbbreviated = cardProvider[0].cardType>
57 <#else>
58 <script>
59 console.log("No card provider(Visa/Master Card) found for disclaimer");
60 </script>
61 </#if>
62
63 <div class="jn-disclaimer tier1-disclaimer-${class.getData()}" title="${partnerName} - Disclaimer">
64 <div class="disclaimer" >
65 <#if isEmployee && employeeDisclaimersVisa?has_content && cardProviderAbbreviated?contains("V")>
66 ${employeeDisclaimersVisa.getData()}
67 <#elseif isEmployee && employeeDisclaimersMasterCard?has_content && cardProviderAbbreviated?contains("M") >
68 ${employeeDisclaimersMasterCard.getData()}>
69 <#elseif disclaimersVisa?has_content && cardProviderAbbreviated?contains("V")>
70 ${disclaimersVisa.getData()}
71 <#elseif disclaimersMasterCard?has_content && cardProviderAbbreviated?contains("M") >
72 ${disclaimersMasterCard.getData()}
73 </#if>
74 </div>
75 </div>
76 </#if>
77<#else>
78 <script>
79 console.log("No lc for disclaimer");
80 </script>
81</#if>
Fel uppstod under bearbetning av mallen.
The following has evaluated to null or missing: ==> qstringmap["bankercode"] [in template "10154#10192#153411747" at line 8, column 17] ---- 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 bCode = qstringmap["bankercod... [in template "10154#10192#153411747" at line 8, column 1] ----
1<#assign aDateTime = .now>
2<#assign currentYear = aDateTime?string.yyyy>
3<#assign url = themeDisplay.getPortalURL() + themeDisplay.getURLCurrent()/>
4<#assign qstringmap = httpUtil.getParameterMap(httpUtil.getQueryString(url))>
5<#assign utilServ = (serviceLocator.findService("com.elan.crc.utilites.service.CRCRemoteServiceService"))! />
6<#assign url404 = '/error/404.html'>
7
8<#assign bCode= qstringmap["bankercode"]?first>
9<#assign bCode = htmlUtil.escape(bCode)>
10<#assign bCode = htmlUtil.escapeJS(bCode)>
11
12<#assign bData = utilServ.makeCall('crcDDCBankerAssistedAppDetail','0&'+bCode)>
13<#list bData as b>
14 <#assign lc = b.locationcode >
15 <#assign rLC = b.reallocationcode >
16 <#assign mappedLC = b.mappedLocationCode >
17</#list>
18
19<#if bCode?starts_with("amp") && (url?contains("11t1m"))>
20 <#assign ameriprise = true>
21<#else>
22 <#assign ameriprise = false>
23</#if>
24<#if mappedLC?has_content && !ameriprise>
25 <#assign lc = mappedLC >
26</#if>
27
28<#if lc?has_content>
29
30 <#assign prefix = "00000" >
31 <#assign lcWithPrefix = prefix + lc >
32 <#assign withPrefixLength = lcWithPrefix?length >
33 <#assign startHere = withPrefixLength - 5>
34 <#assign lc = lcWithPrefix?substring(startHere)>
35<#assign clientProfileService = (serviceLocator.findService("com.elan.crc.user.service.CrcClientProfileLocalService"))! >
36 <#assign clientProfileList = clientProfileService.findByLocationCode(lc)>
37
38 <#assign clientProfile = clientProfileList?first>
39 <#assign pbu = clientProfile.getPbu()>
40 <#assign subbu = clientProfile.getSUBBRANDBUNBR()>
41 <#assign partnerName=clientProfile.getMarketingNameLong()>
42 <#assign clientDataService = (serviceLocator.findService("com.elan.crc.user.service.CrcPbuLocalService"))! />
43 <#assign clientProfileDataList = clientDataService.getByPbuAndSubBu(pbu,subbu)>
44 <#assign partnerUrl = clientProfileDataList.getPartnerMainUrl()>
45 <#if partnerUrl?has_content && !partnerUrl?matches(r"(?i)^https?\:\/\/.*") && !partnerUrl?matches(r"(?i)^https?\://.*")>
46 <#-- add protocal if missing -->
47 <#assign partnerUrl = 'https://' + partnerUrl>
48 </#if>
49 <footer class="footer bg-color-black text-color-white">
50 ${footerContent.getData()}
51 </footer>
52
53 <!-- BEGIN CALIFORNIA OPT-OUT MODAL STYLE AND MARKUP -->
54 <script src="https://unpkg.com/micromodal/dist/micromodal.min.js"></script>
55 <style>
56 #opt-out-button,
57 .modal__btn.learn-more {
58 background: #0C2074;
59 border: 1px solid #0C2074;
60 color: white;
61 text-transform: uppercase;
62 text-decoration: none;
63 font-size: 16px;
64 padding: 0.5rem 2rem;
65 display: inline-block;
66 border-radius: 0;
67 }
68 #opt-out-button:hover,
69 .modal__btn.learn-more:hover {
70 color: white;
71 border-color: #2C76AF !important;
72 background-color: #2C76AF !important;
73 }
74 .modal__btn.learn-more {
75 background: white;
76 border: 1px solid #0C2074;
77 color: #0C2074;
78 }
79 #opt-out-button[disabled="true"] {
80 background-color: rgba(0,0,0,.15);
81 color: rgba(0,0,0,.45);
82 border-color: rgba(0,0,0,.25);
83 }
84 #opt-out-button:hover[disabled="true"] {
85 background-color: rgba(0,0,0,.15) !important;
86 color: rgba(0,0,0,.45) !important;
87 border-color: rgba(0,0,0,.25) !important;
88 }
89 #opt-out-button:focus {
90 outline-style: solid;
91 outline-color: white;
92 outline-offset: -3px;
93 outline-width: 1px;
94 }
95 .opt-out-link svg {
96 width: 30px;
97 height: 14px;
98 width: auto;
99 vertical-align: middle;
100 }
101 .modal__overlay {
102 position: fixed;
103 top: 0;
104 left: 0;
105 right: 0;
106 bottom: 0;
107 background: rgba(0,0,0,0.6);
108 display: flex;
109 justify-content: center;
110 align-items: center;
111 }
112
113 .modal__container {
114 background-color: #fff;
115 padding: 30px;
116 max-width: 500px;
117 max-height: 100vh;
118 border-radius: 4px;
119 overflow-y: auto;
120 box-sizing: border-box;
121 }
122
123 .modal__header {
124 display: flex;
125 justify-content: space-between;
126 align-items: center;
127 }
128
129 .modal__title {
130 margin-top: 0;
131 margin-bottom: 0;
132 font-weight: 600;
133 font-size: 20px;
134 line-height: 1.25;
135 color: #00449e;
136 box-sizing: border-box;
137 }
138
139 .modal__close {
140 background: transparent;
141 border: 1px solid white;
142 padding: 4px 8px;
143 }
144 .modal__close:hover {
145 border: 1px solid black;
146 }
147
148 .modal__header .modal__close:before { content: "\2715"; }
149
150 .modal__content {
151 margin-top: 2rem;
152 margin-bottom: 2rem;
153 line-height: 1.5;
154 }
155
156 @keyframes mmfadeIn {
157 from { opacity: 0; }
158 to { opacity: 1; }
159 }
160
161 @keyframes mmfadeOut {
162 from { opacity: 1; }
163 to { opacity: 0; }
164 }
165
166 @keyframes mmslideIn {
167 from { transform: translateY(15%); }
168 to { transform: translateY(0); }
169 }
170
171 @keyframes mmslideOut {
172 from { transform: translateY(0); }
173 to { transform: translateY(-10%); }
174 }
175
176 .micromodal-slide {
177 display: none;
178 }
179
180 .micromodal-slide.is-open {
181 display: block;
182 }
183
184 .micromodal-slide[aria-hidden="false"] .modal__overlay {
185 animation: mmfadeIn .3s cubic-bezier(0.0, 0.0, 0.2, 1);
186 }
187
188 .micromodal-slide[aria-hidden="false"] .modal__container {
189 animation: mmslideIn .3s cubic-bezier(0, 0, .2, 1);
190 }
191
192 .micromodal-slide[aria-hidden="true"] .modal__overlay {
193 animation: mmfadeOut .3s cubic-bezier(0.0, 0.0, 0.2, 1);
194 }
195
196 .micromodal-slide[aria-hidden="true"] .modal__container {
197 animation: mmslideOut .3s cubic-bezier(0, 0, .2, 1);
198 }
199
200 .micromodal-slide .modal__container,
201 .micromodal-slide .modal__overlay {
202 will-change: transform;
203 }
204 </style>
205
206 <div class="modal micromodal-slide" id="modal-1" aria-hidden="true">
207 <div class="modal__overlay" tabindex="-1" data-micromodal-close>
208 <div class="modal__container" role="dialog" aria-modal="true" aria-labelledby="modal-1-title">
209 <header class="modal__header">
210 <h2 class="modal__title" id="modal-1-title">
211 Your California privacy choices
212 </h2>
213 <button class="modal__close" aria-label="Close modal" data-micromodal-close></button>
214 </header>
215 <div class="modal__content" id="modal-1-content">
216 <div id="message-no-cookie">
217 <p>
218 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>
219
220 <p> </p>
221
222 <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>
223 </div>
224 <div id="message-with-cookie">
225 <p>You have successfully opted-out.</p>
226 </div>
227 </div>
228 <div class="modal__footer">
229 <a href="https://login.elancreditcard.com/onlineCard/publicPrivacyPolicy.do?phase=privacyPolicy" target="_blank" class="modal__btn learn-more" aria-label="Learn more">Learn More</a>
230 <button id="opt-out-button" class="modal__btn modal__btn-primary" aria-label="Opt Out and Close modal" onclick="window.californiaOptOut()">Opt Out</button>
231 </div>
232 </div>
233 </div>
234 </div>
235 <!-- END CALIFORNIA OPT-OUT MODAL STYLE AND MARKUP -->
236 <script>
237 const fdicNode = document.querySelector('.footer .fdic');
238 </script>
239 <script>
240 const copyrightNode = document.querySelector('.footer .copyright');
241 if (copyrightNode) {
242 copyrightNode.innerHTML = '<sup>©</sup> Elan Financial Services ' + ${currentYear};
243 }
244
245 </script>
246 <#if url?contains("11t1m")>
247 <script>
248 copyrightNode.classList.add("ecdma-footer-client-name-copyright");
249 fdicNode.innerHTML='<a class="text-color-white" href="https://login.elancreditcard.com/onlineCard/publicPrivacyPolicy.do?phase=privacyPolicy" target="_blank">Privacy and Security</a>';
250 </script>
251 <#else>
252 <script>
253 copyrightNode.classList.add("ecdma-footer-client-name-copyright");
254 fdicNode.innerHTML='<a class="text-color-white" href="https://login.elancreditcard.com/onlineCard/publicPrivacyPolicy.do?phase=privacyPolicy" target="_blank">Privacy and Security</a>';
255 var newNode = document.createElement("div");
256 newNode.classList.add("member-agreement");
257 newNode.innerHTML='<a class="text-color-white" href="https://online1.elancard.com/oad/cmas.controller?locationCode=${lc!0}&preparerType=customer&isNewRequest=false" target="_blank">Cardmember Agreements</a>';
258 var parent = fdicNode.parentNode;
259 parent.insertBefore(newNode, fdicNode);
260 </script>
261 </#if>
262
263 <#if partnerUrl?has_content>
264 <script>
265 document.querySelector('.copyright .homelink').innerHTML="<a class='text-color-white' href='${partnerUrl!''}' title='${partnerName!''}' target='_blank'>Home</a>";
266 </script>
267 </#if>
268
269 <script>
270 /* BEGIN CALIFORNIA OPT-OUT MODAL TRIGGER */
271 fdicNode.insertAdjacentHTML('afterend', '<div style="display: inline-block; margin-left: 100px;"><a href="javascript:void(0);" class="opt-out-link text-color-white" 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>');
272 /* END CALIFORNIA OPT-OUT MODAL TRIGGER */
273 </script>
274 <!-- BEGIN CALIFORNIA OPT-OUT MODAL LOGIC -->
275
276 <script>
277 window.getCookieDomain = function() {
278 var hostname = window.location.hostname.split(".");
279 return hostname && hostname.slice(hostname.length - 2).join(".");
280 }
281 window.setToOptOut = function() {
282 if (window.getCookie('privacy_optout')) {
283 document.getElementById('message-no-cookie').style.display = 'none';
284 document.getElementById('message-with-cookie').style.display = 'block';
285 document.getElementById('opt-out-button').setAttribute('disabled', true)
286 } else {
287 document.getElementById('message-no-cookie').style.display = 'block';
288 document.getElementById('message-with-cookie').style.display = 'none';
289 }
290 }
291 window.getCookie = function(name) {
292 var value = '; ' + document.cookie;
293 var parts = value.split('; ' + name + '=');
294 if (parts.length === 2) return parts.pop().split(';').shift();
295 }
296 window.californiaOptOut = function() {
297 if (!window.getCookie('privacy_optout')) {
298 document.cookie = 'privacy_optout=1; path=/; domain=' + window.getCookieDomain() + '; expires=Thu, 31 Dec 2099 00:00:00 GMT;';
299 try {
300 if (window.CustomEvent) {
301 window.dispatchEvent(new CustomEvent('privacy_optout'));
302 } else {
303 var privacyOptoutEvent = document.createEvent('Event');
304 privacyOptoutEvent.initEvent('privacy_optout', true, true);
305 window.dispatchEvent(privacyOptoutEvent);
306 }
307 window.setToOptOut();
308 } catch (err) {
309 console.error(err);
310 }
311 }
312 }
313 MicroModal.init({
314 onShow: window.setToOptOut
315 });
316 AUI().ready(function() {
317 // user browser setting for Global Privacy Control to opt out of sharing information with third parties
318 const isBrowserGpcOptOut = navigator.globalPrivacyControl;
319 if(isBrowserGpcOptOut === true) {
320 window.californiaOptOut();
321 }
322 });
323 </script>
324 <!-- END CALIFORNIA OPT-OUT MODAL LOGIC -->
325
326</#if>