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