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