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