处理模板时发生错误。
The following has evaluated to null or missing: ==> bankercode [in template "10154#10192#154680751" at line 51, column 6] ---- 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: #if bankercode?starts_with("amp") && ... [in template "10154#10192#154680751" at line 51, column 1] ----
1<#assign utilServ = (serviceLocator.findService("com.elan.crc.utilites.service.CRCRemoteServiceService"))! />
2<#assign url404 = '/error/404.html' >
3<#assign oadURL = propsUtil.get('elan.oad.url') >
4<#assign url = themeDisplay.getURLCurrent() >
5<#assign qstringmap = httpUtil.getParameterMap(httpUtil.getQueryString(url))>
6
7<#if qstringmap["ecid"]?has_content>
8 <#assign ecidExt = qstringmap["ecid"]?first>
9 <#assign ecidExt = htmlUtil.escape(ecidExt)>
10 <#assign ecidExt = htmlUtil.escapeJS(ecidExt)>
11 <#assign ecidExt = "&ecid=" + ecidExt>
12<#else>
13 <#assign ecidExt="">
14</#if>
15
16<#if qstringmap["bankercode"]?has_content>
17 <#assign bankercode = qstringmap["bankercode"]?first>
18 <#assign bankercode = htmlUtil.escape(bankercode)>
19 <#assign bankercode = htmlUtil.escapeJS(bankercode)>
20 <#assign isEmployee = false>
21
22 <#assign fiData= utilServ.makeCall('crcDDCBankerAssistedAppSql','0&'+bankercode)>
23 <#if fiData?first?has_content>
24 <#assign fi = fiData?first>
25 <#if ((fi.projectId == "12") || (fi.projectId == "13") || (fi.projectId == "14") || (fi.projectId == "15"))>
26 <#assign subbu_special = fi.offerId>
27 </#if>
28 <#if fi.projectType == "emp">
29 <#assign isEmployee = true>
30 </#if>
31 </#if>
32
33 <#assign bData = utilServ.makeCall('crcDDCBankerAssistedAppDetailSql','0&'+bankercode)>
34 <#list bData as b>
35 <#assign rLC = b.reallocationcode >
36 <#assign lc = b.locationcode >
37 <#assign mappedLC = b.mappedLocationCode >
38 </#list>
39<#else>
40 <script>
41 console.log("MainProductBcode missing");
42 location.href = '${url404}';
43 </script>
44</#if>
45
46<#if url?contains('11t1')>
47 <#assign tier = '11t1'>
48<#elseif url?contains('11t2')>
49 <#assign tier = '11t2'>
50</#if>
51<#if bankercode?starts_with("amp") && (url?contains("11t1m"))>
52 <#assign ameriprise = true>
53<#else>
54 <#assign ameriprise = false>
55</#if>
56<#if ameriprise>
57 <#assign tier = '11t1m'>
58</#if>
59<#assign environment = url?replace('/${tier}.*','','r')>
60
61
62<#if mappedLC?has_content && !ameriprise>
63 <#assign lc = mappedLC >
64</#if>
65
66<#if lc?has_content>
67 <#assign prefix = "00000" >
68 <#assign lcWithPrefix = prefix + lc >
69 <#assign withPrefixLength = lcWithPrefix?length >
70 <#assign startHere = withPrefixLength - 5>
71 <#assign lc = lcWithPrefix?substring(startHere)>
72 <#assign clientProfileService = (serviceLocator.findService("com.elan.crc.user.service.CrcClientProfileLocalService"))! />
73 <#assign clientProfileList = clientProfileService.findByLocationCode(lc)>
74
75 <#assign clientProfile = clientProfileList?first>
76 <#assign partnerName = clientProfile.getMarketingNameLong()>
77 <#assign logoFileName = clientProfile.getLogoBFormat1()?replace(".", "-")?replace("-([^-]*)$", ".$1", "r")?lower_case>
78 <#assign cdnLogoUrl = (propsUtil.get('rackspace.cdn.web.url'))!>
79 <#-- <#assign cdnLogoUrl = "https://828cf7dcac86961192f7-10b53e8cad49907c7863edad15b39700.ssl.cf2.rackcdn.com"> -->
80 <#assign pbu = clientProfile.getPbu()>
81 <#assign subbu = clientProfile.getSUBBRANDBUNBR()>
82
83 <#assign optoutData = utilServ.makeCall('crc_DDCSAAOptOut',pbu+'&'+subbu)>
84 <#if (optoutData?size == 0)>
85 <#if (subbu_special?has_content)>
86 <#assign fiCardsData = utilServ.makeCall('crcTier3GetPbuData','0&' + pbu + '&' + subbu_special)>
87 <#else>
88 <#assign fiCardsData = utilServ.makeCall('crcTier3GetPbuData','0&' + pbu + '&' + subbu)>
89 </#if>
90 <#assign clientDataService = (serviceLocator.findService("com.elan.crc.user.service.CrcPbuLocalService"))! />
91 <#assign clientProfileDataList = clientDataService.getByPbuAndSubBu(pbu,subbu)>
92 <#assign partnerUrl = clientProfileDataList.getPartnerMainUrl()>
93 <#if partnerUrl?has_content && !partnerUrl?matches(r"(?i)^https?\:\/\/.*")>
94 <#assign partnerUrl = 'https://' + partnerUrl>
95 </#if>
96 <#if (fiCardsData?size > 0)>
97 <#assign temp = []>
98 <#assign offerTypeList = []>
99 <#assign index = 0>
100 <#list fiCardsData as fib>
101 <#if (fib.offerType?has_content && !(offerTypeList?seq_contains(fib.offerType)))>
102 <#assign offerTypeList = offerTypeList + [fib.offerType]>
103 <#assign temp = temp + fiCardsData[index..index]>
104 </#if>
105 <#assign index = index + 1>
106 </#list>
107 <#assign fiCardsData = temp>
108 <#if !(fiCardsData?size > 0)>
109 <script>
110 console.log("empty card/offerType List");
111 location.href = '${url404}';
112 </script>
113 </#if>
114 <#if ameriprise>
115 <#assign lc_used = mappedLC>
116 <#else>
117 <#assign lc_used = lc>
118 </#if>
119 <div class="content-container content-container-main" title="${partnerName!''}">
120 <header class="jn-header">
121 <div class="back-overview hide-desktop">
122 <a href="${environment}/${tier}/index?bankercode=${bankercode}&ecdma-lc=${lc_used}${ecidExt}">Home</a>
123 </div>
124 <div class="header-main-logo" title="${partnerName!''}">
125 <#if partnerUrl?has_content>
126 <a href="${partnerUrl!''}" title="${partnerName!''}">
127 <img src="${cdnLogoUrl!''}/${logoFileName!''}" title="${partnerName!''} Logo" alt="${partnerName!''} Logo">
128 </a>
129 <#else>
130 <a title="${partnerName!''}">
131 <img src="${cdnLogoUrl!''}/${logoFileName!''}" alt="${partnerName!''} Logo" title="${partnerName!''} Logo">
132 </a>
133 </#if>
134 </div>
135
136 <div class="styled-select slate">
137 <select>
138 <#assign consumerOfferTypes =['101', '108', '109', '104', '138', '154', '141', '147', '115']>
139
140 <#list fiCardsData as fib>
141 <#if ameriprise>
142 <#if (fib.offerType=="101")>
143 <#assign productURL="premier-visa-signature">
144 <#assign productName="Ameriprise Premier Visa Signature">
145 <#elseif (fib.offerType=="103")>
146 <#assign productURL = "visa-signature">
147 <#assign productName = "Ameriprise Visa Signature">
148 </#if>
149 <#else>
150 <#if (fib.offerType=="108" || fib.offerType=="109")>
151 <#assign productURL="consumer-platinum2103">
152 <#assign productName="Platinum Card">
153 <#elseif fib.offerType=="147">
154 <#assign productURL = "max-cash-secured">
155 <#assign productName = "Max Cash Secured Card" >
156 <#elseif (fib.offerType=="104")>
157 <#assign productURL = "max-cash">
158 <#assign productName = "Max Cash Preferred Card">
159 <#elseif (fib.offerType=="101" || fib.offerType=="103")>
160 <#assign productURL = "consumer-edr2112">
161 <#assign productName = "Everyday Rewards+">
162 <#elseif fib.offerType == "115">
163 <#assign productURL = "secured">
164 <#assign productName = "Secured Card" >
165 <#elseif fib.offerType == "141">
166 <#assign productURL = "college-real-rewards">
167 <#assign productName = "College Real Rewards" >
168 <#elseif fib.offerType == "144">
169 <#assign productURL = "smart-business-rewards">
170 <#assign productName = "Smart Business Rewards Card" >
171 <#elseif fib.offerType == "128">
172 <#assign productURL = "business-cash-preferred">
173 <#assign productName = "Business Cash Preferred" >
174 <#elseif fib.offerType == "143">
175 <#assign productURL = "business-real-rewards">
176 <#assign productName = "Business Real Rewards Card" >
177 <#elseif fib.offerType == "121">
178 <#assign productURL = "business-platinum2103">
179 <#assign productName = "Business Card" >
180 <#elseif fib.offerType == "138">
181 <#assign productURL = "travel-rewards-plus">
182 <#assign productName = "Travel Rewards+" >
183 <#elseif fib.offerType == "154">
184 <#assign productURL = "reserve-rewards-plus">
185 <#assign productName = "Reserve Rewards+" >
186 </#if>
187 </#if>
188 <#assign fibEmpOfferId = "">
189 <#if fib?has_content>
190 <#assign fibEmpOfferId = fib.empofferId!"">
191 </#if>
192 <!-- if an employee don't show business cards -->
193 <#if ((isEmployee == true && ( consumerOfferTypes?seq_contains(fib.offerType) == true)) || isEmployee == false) >
194 <#if url?matches(".*/${productURL}.*")>
195 <option value="${environment}/${tier}/${productURL}?bankercode=${bankercode}&ecdma-lc=${lc_used}${ecidExt}" selected="selected">${productName}</option>
196 <#else>
197 <option value="${environment}/${tier}/${productURL}?bankercode=${bankercode}&ecdma-lc=${lc_used}${ecidExt}">${productName}</option>
198 </#if>
199 </#if>
200 </#list>
201 </select>
202 <nav class="styled-select__dropdown">
203 <div class="back-overview hide-mobile">
204 <a href="${environment}/${tier}/index?bankercode=${bankercode}&ecdma-lc=${lc_used}${ecidExt}">Home</a>
205 </div>
206 <a href="javascript:void(0)" class="dropdown-select" aria-expanded="false" >
207 <span class="selected-option"></span>
208 <div class="jn-arrow arrow arrow-right"></div>
209 </a>
210 <button href="javascript:void(0)" class="jn-hamburger hamburger" aria-expanded="false" aria-label="open navigation menu">
211 <div class="first-line transform transformed1"></div>
212 <div></div>
213 <div class="transform transformed2"></div>
214 <div></div>
215 </button>
216 <ul>
217 <#list fiCardsData as fib>
218 <#if ameriprise>
219 <#if (fib.offerType=="101")>
220 <#assign productURL="premier-visa-signature">
221 <#assign productName="Ameriprise Premier Visa Signature">
222 <#elseif (fib.offerType=="103")>
223 <#assign productURL = "visa-signature">
224 <#assign productName = "Ameriprise Visa Signature">
225 </#if>
226 <#else>
227 <#if (fib.offerType=="108" || fib.offerType=="109")>
228 <#assign productURL="consumer-platinum2103">
229 <#assign productName="Platinum Card">
230 <#elseif fib.offerType=="147">
231 <#assign productURL = "max-cash-secured">
232 <#assign productName = "Max Cash Secured Card" >
233 <#elseif (fib.offerType=="104")>
234 <#assign productURL = "max-cash">
235 <#assign productName = "Max Cash Preferred Card">
236 <#elseif (fib.offerType=="101" || fib.offerType=="103")>
237 <#assign productURL = "consumer-edr2112">
238 <#assign productName = "Everyday Rewards+">
239 <#elseif fib.offerType == "115">
240 <#assign productURL = "secured">
241 <#assign productName = "Secured Card" >
242 <#elseif fib.offerType == "141">
243 <#assign productURL = "college-real-rewards">
244 <#assign productName = "College Real Rewards" >
245 <#elseif fib.offerType == "144">
246 <#assign productURL = "smart-business-rewards">
247 <#assign productName = "Smart Business Rewards Card" >
248 <#elseif fib.offerType == "128">
249 <#assign productURL = "business-cash-preferred">
250 <#assign productName = "Business Cash Preferred" >
251 <#elseif fib.offerType == "143">
252 <#assign productURL = "business-real-rewards">
253 <#assign productName = "Business Real Rewards Card" >
254 <#elseif fib.offerType == "121">
255 <#assign productURL = "business-platinum2103">
256 <#assign productName = "Business Card" >
257 <#elseif fib.offerType == "138">
258 <#assign productURL = "travel-rewards-plus">
259 <#assign productName = "Travel Rewards+" >
260 <#elseif fib.offerType == "154">
261 <#assign productURL = "reserve-rewards-plus">
262 <#assign productName = "Reserve Rewards+" >
263 </#if>
264 </#if>
265 <!-- if an employee don't show business cards -->
266 <#if ((isEmployee == true && ( consumerOfferTypes?seq_contains(fib.offerType) == true)) || isEmployee == false) >
267 <#if url?matches(".*/${productURL}.*")>
268 <#if (fib.offerType=="104" && url?contains("max-cash-secured"))>
269 <#-- prevent from max cash overiding max cash secured. -->
270 <li class="dropdown-item" data-value="${productName}"><a href="${environment}/${tier}/${productURL}?bankercode=${bankercode}&ecdma-lc=${lc_used}${ecidExt}" title="${productName}">${productName}</a></li>
271 <#else>
272 <li class="selected" data-value="${productName}"><a href="javascript:void(0)">${productName}</a></li>
273 </#if>
274 <#else>
275 <li class="dropdown-item" data-value="${productName}"><a href="${environment}/${tier}/${productURL}?bankercode=${bankercode}&ecdma-lc=${lc_used}${ecidExt}" title="${productName}">${productName}</a></li>
276 </#if>
277 </#if>
278 </#list>
279 </ul>
280 </nav>
281
282 </div>
283 </header>
284 </div>
285 <script>
286 var page = location.pathname.split('/')[location.pathname.split('/').length-1];
287 var partnerName = "${partnerName!0}";
288 var metaDesc = "";
289 switch (page) {
290 case "consumer-platinum2103":
291 document.title = "The purchasing power of Zero | "+partnerName+" Platinum Card";
292 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.";
293 break;
294 case "max-cash-secured":
295 document.title = "Earn more on the categories you pick | "+partnerName+" Max Cash Secured Card";
296 metaDesc = "Apply Today for a "+partnerName+" Credit Card. Use this card as a solid foundation to build your credit.";
297 break;
298 case "max-cash":
299 document.title = "Earn a $150 Bonus and 5% cash back | "+partnerName+" Max Cash Preferred Card";
300 metaDesc = "Apply Today for a "+partnerName+" Credit Card. Earn a $150 Bonus and 5% cash back on the two categories you select";
301 break;
302 case "real-rewards":
303 document.title = "Sign up and earn bonus points | "+partnerName+" Everyday Rewards+";
304 metaDesc = "Apply Today for a "+partnerName+" Credit Card. Take home 2,500 bonus points after your first purchase.";
305 break;
306 case "secured":
307 document.title = "Strengthen your finances | "+partnerName+" Secured Card";
308 metaDesc = "Apply Today for a "+partnerName+" Credit Card. Use this card as a solid foundation to build your credit.";
309 break;
310 case "college-real-rewards":
311 document.title = "Sign up and earn bonus points. | "+partnerName+" College Real Rewards";
312 metaDesc = "Apply Today for a "+partnerName+" Credit Card. Use this card as a solid foundation to build your credit.";
313 break;
314 case "smart-business-rewards":
315 document.title = "2X rewards in your top 2 spend categories | "+partnerName+" Business Smart Business Rewards Card";
316 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.";
317 break;
318 case "business-cashback":
319 document.title = "Flexible rewards for your business | "+partnerName+" Business Cash Preferred";
320 metaDesc = "Apply Today for a "+partnerName+" Credit Card. Earn Cash back on common business expenses.";
321 break;
322 case "business-real-rewards":
323 document.title = "Earn up to 1.5X points with no caps | "+partnerName+" Business Real Rewards Card";
324 metaDesc = "Apply Today for a "+partnerName+" Credit Card. Get more rewards in the categories you spend the most on." ;
325 break;
326 case "business-platinum2103":
327 document.title = "Pay down your other credit card balances faster | "+partnerName+" Business Card";
328 metaDesc = "Apply Today for a "+partnerName+" Business Card. 0% Intro APR on Purchases and Balance Transfers for 15 Billing Cycles";
329 break;
330 case "premier-visa-signature":
331 document.title = "Exclusively for Ameriprise clients | Ameriprise® Premier Visa Signature® Card";
332 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.";
333 break;
334 case "visa-signature":
335 document.title = "Exclusively for Ameriprise clients | Ameriprise® Visa Signature® Card";
336 metaDesc = "Apply Today for an Ameriprise Financial Credit Card. Earn Rewards Points worth $250 cash value when deposited into an eligible Ameriprise account after spending $2,000 in eligible net purchases within the first 90 days of account opening.";
337 break;
338 case "travel-rewards-plus":
339 document.title = partnerName + " | Travel Rewards+ Card";
340 metaDesc = "Make travel more rewarding with unlimited 4x points on travel and frequent popular categories.";
341 break;
342 case "reserve-rewards-plus":
343 document.title = partnerName + " | Reserve Rewards+ Card";
344 metaDesc = "Get exceptional rewards on travel and frequent purchases with this exclusive metal card.";
345 break;
346 }
347 if('${isEmployee?string("yes", "no")}' == "yes") {
348 switch (page) {
349 case "max-cash":
350 document.title = "Earn a $200 Bonus and 5% cash back | "+partnerName+" Max Cash Preferred Card";
351 metaDesc = "Apply Today for a "+partnerName+" Credit Card. Earn a $200 Bonus and 5% cash back on the two categories you select";
352 break;
353 }
354 }
355
356 if (metaDesc.length > 0) {
357 var m = document.createElement('meta');
358 m.name = 'description';
359 m.content = metaDesc;
360 document.head.appendChild(m);
361 }
362 function toggleFlyOutMenu() {
363 $('.styled-select').toggleClass('show-select');
364 var ariaExpanded = $('.styled-select__dropdown .dropdown-select').attr('aria-expanded');
365 if(ariaExpanded !== null) {
366 var isAriaExpanded;
367 if(ariaExpanded === "true") {
368 isAriaExpanded = true;
369 $('.styled-select__dropdown .jn-hamburger').attr('aria-label', 'open navigation menu');
370 } else {
371 isAriaExpanded = false
372 $('.styled-select__dropdown .jn-hamburger').attr('aria-label', 'close navigation menu');
373
374 }
375 $('.styled-select__dropdown .dropdown-select').attr('aria-expanded', !isAriaExpanded);
376 $('.styled-select__dropdown .jn-hamburger').attr('aria-expanded', !isAriaExpanded);
377
378 }
379 }
380 AUI().ready(function () {
381 var pageSelected = $('.selected').attr('data-value');
382 $('.jn-hamburger, .dropdown-select').click(function () {
383 toggleFlyOutMenu();
384 });
385 $('.styled-select__dropdown').keydown(function(event) {
386 var firstNavigationLink = $('.styled-select__dropdown ul li:visible a').first();
387 var lastNavigationLink = $('.styled-select__dropdown ul li:visible a').last();
388
389 if(event.keyCode === 9 ) {
390 // if they tab outside of the nav close the navigation
391 //shift + tab pressed
392 if(event.shiftKey && firstNavigationLink.is(document.activeElement)) {
393 toggleFlyOutMenu();
394 } else if(!event.shiftKey && lastNavigationLink.is(document.activeElement)) {
395 toggleFlyOutMenu();
396 }
397 }
398 });
399 $('.selected-option').text(pageSelected);
400 });
401 </script>
402
403 <#else>
404 <script>
405 console.log("FI Cards Data empty");
406 location.href = '${url404}';
407 </script>
408 </#if>
409 <#else>
410 <script>
411 console.log("FI opt out");
412 location.href = '${url404}';
413 </script>
414 </#if>
415<#else>
416 <script>
417 console.log("location code empty");
418 location.href = '${url404}';
419 </script>
420</#if>
处理模板时发生错误。
The following has evaluated to null or missing: ==> bCode [in template "10154#10192#155404894" at line 85, column 6] ---- 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: #if bCode?starts_with("amp") && (url?... [in template "10154#10192#155404894" at line 85, 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 url404 = '/error/404.html' >
5<#assign utilServ = (serviceLocator.findService("com.elan.crc.utilites.service.CRCRemoteServiceService"))! />
6<#assign environment = url?replace('/12t1.*','','r')>
7<#assign oadURL_TC = 'https://uat-online1.elancard.com/oad/terms.controller' >
8<#assign prcaURL = propsUtil.get('elan.prca.url')>
9<#assign useprcaValue = "" >
10<#assign applicationType = "saa" >
11
12<#if oadURL?contains("uat-")>
13 <#assign oadURL_TC = 'https://uat-online1.elancard.com/oad/terms.controller' >
14<#else>
15 <#assign oadURL_TC = 'https://online1.elancard.com/oad/terms.controller' >
16</#if>
17<#-- check bankercode validity -->
18
19<#if qstringmap["bankercode"]?has_content>
20 <#assign bCode= qstringmap["bankercode"]?first>
21 <#assign bCode= htmlUtil.escapeJS(bCode)>
22 <#assign bCode= htmlUtil.escape(bCode)>
23 <#assign isEmployee = false>
24
25 <#assign fiData= utilServ.makeCall('crcDDCBankerAssistedAppSql','0&'+bCode)>
26 <#if fiData?first?has_content>
27 <#assign fi = fiData?first>
28 <#if (fi.projectId == "12" || fi.projectId == "13" || fi.projectId == "14" || fi.projectId == "15")>
29 <#assign subbu_special = fi.offerId>
30 </#if>
31 <#if fi.projectType == "emp">
32 <#assign isEmployee = true>
33 </#if>
34 <#else>
35 <script>
36 console.log("fiData missing");
37 location.href = '${url404}';
38 </script>
39 </#if>
40 <#assign bData = utilServ.makeCall('crcDDCBankerAssistedAppDetailSql','0&'+bCode)>
41 <#if !bData?first?has_content>
42 <script>
43 console.log("bData missing");
44 location.href = '${url404}';
45 </script>
46 </#if>
47 <#list bData as b>
48 <#assign lc = b.locationcode >
49 <#assign bName = b.branch >
50 <#assign bPhone = b.businessphone >
51 <#assign boeid = b.oeid?trim>
52 <#assign fName = b.firstname?trim>
53 <#assign lName = b.lastname?trim>
54 <#assign rlc = b.reallocationcode >
55 <#assign mappedLC = b.mappedLocationCode >
56 </#list>
57
58<#else>
59 <script>
60 console.log("MainProductBcode missing");
61 location.href = '${url404}';
62 </script>
63</#if>
64
65<#assign text_to_apply_source = "vanity url" >
66<#if qstringmap["sms"]?has_content>
67 <#assign sms = 1 >
68 <#assign text_to_apply_source = "sms" >
69</#if>
70<#if qstringmap["qrCode"]?has_content>
71 <#assign text_to_apply_source = "qr code" >
72</#if>
73<#assign campaignId = "" >
74<#assign ecidExt="">
75<#if qstringmap["ecid"]?has_content>
76 <#assign campaignId = qstringmap["ecid"]?first >
77 <#assign campaignId = htmlUtil.escape(campaignId)>
78 <#assign campaignId = htmlUtil.escapeJS(campaignId)>
79
80 <#assign ecidExt = qstringmap["ecid"]?first>
81 <#assign ecidExt = htmlUtil.escape(ecidExt)>
82 <#assign ecidExt = htmlUtil.escapeJS(ecidExt)>
83 <#assign ecidExt = "&ecid=" + ecidExt>
84</#if>
85<#if bCode?starts_with("amp") && (url?contains("11t1m"))>
86 <#assign ameriprise = true>
87<#else>
88 <#assign ameriprise = false>
89</#if>
90
91<#if mappedLC?has_content && !ameriprise>
92 <#assign lc = mappedLC >
93</#if>
94
95
96
97<#if lc?has_content>
98
99 <#assign firstNameLength = fName?length >
100 <#assign lastNameLength = lName?length >
101 <#if firstNameLength + lastNameLength > 19 >
102 <#if lastNameLength > 18 >
103 <#assign bLName = lName?substring(0,18)>
104 <#else>
105 <#assign bLName = lName>
106 </#if>
107 <#assign maxFirstName = 19 - bLName?length >
108 <#if firstNameLength > maxFirstName >
109 <#assign bFName = fName?substring(0,maxFirstName)>
110 <#else>
111 <#assign bFName = fName>
112 </#if>
113 <#else>
114 <#assign bFName = fName >
115 <#assign bLName = lName >
116 </#if>
117
118
119 <#assign prefix = "00000" >
120 <#assign lcWithPrefix = prefix + lc >
121 <#assign withPrefixLength = lcWithPrefix?length >
122 <#assign startHere = withPrefixLength - 5>
123 <#assign lc = lcWithPrefix?substring(startHere)>
124
125 <#assign clientProfileService = (serviceLocator.findService("com.elan.crc.user.service.CrcClientProfileLocalService"))! />
126 <#assign clientProfileList = clientProfileService.findByLocationCode(lc)>
127
128 <#if clientProfileList?first?has_content>
129 <#assign clientProfile = clientProfileList?first>
130 <#assign partnerName = clientProfile.getMarketingNameLong()>
131 <#assign pbu = clientProfile.getPbu()>
132 <#assign subbu = clientProfile.getSUBBRANDBUNBR()>
133 <#assign optoutData = utilServ.makeCall('crc_DDCSAAOptOut',pbu+'&'+subbu)>
134 <#if (optoutData?size == 0)>
135 <#assign clientDataService = (serviceLocator.findService("com.elan.crc.user.service.CrcPbuLocalService"))! />
136 <#assign clientProfileDataList = clientDataService.getByPbuAndSubBu(pbu,subbu)>
137 <#assign partnerUrl = clientProfileDataList.getPartnerMainUrl()>
138 <#if partnerUrl?has_content && !partnerUrl?matches(r"(?i)^https?\:\/\/.*")>
139 <#assign partnerUrl = 'https://' + partnerUrl>
140 </#if>
141 <#assign logoFileName = clientProfile.getLogoBFormat1()?replace(".", "-")?replace("-([^-]*)$", ".$1", "r")?lower_case>
142 <#assign cdnLogoUrl = (propsUtil.get('rackspace.cdn.web.url'))!>
143
144 <#if pbu == "0864054">
145 <#assign override = "berkshire">
146 <#else>
147 <#assign override = " ">
148 </#if>
149
150 <#-- this one should be delete for prod -->
151
152 <#assign cdnCardArtUrl = (propsUtil.get('rackspace.cdn.cardart.url'))!>
153 <#assign pageClass = secondaryBackgroundImage.cardType.getData()>
154
155 <#if (subbu_special?has_content)>
156 <#assign fiCardsData = utilServ.makeCall('crcTier3GetPbuData','0&' + pbu + '&' + subbu_special)>
157 <#else>
158 <#assign fiCardsData = utilServ.makeCall('crcTier3GetPbuData','0&' + pbu + '&' + subbu)>
159 </#if>
160
161
162 <#assign temp = []>
163 <#assign offerTypeList = []>
164 <#assign index = 0>
165 <#list fiCardsData as fib>
166 <#if !(offerTypeList?seq_contains(fib.offerType))>
167 <#assign offerTypeList = offerTypeList + [fib.offerType]>
168 <#assign temp = temp + fiCardsData[index..index]>
169 </#if>
170 <#assign index = index + 1>
171 </#list>
172 <#assign fiCardsData = temp>
173 <#if (fiCardsData?size > 0)>
174 <#if (subbu_special?has_content)>
175 <#assign lc_used = fiCardsData?first.WebLocationCode>
176 <#else>
177 <#if ameriprise>
178 <#assign lc_used = mappedLC>
179 <#else>
180 <#assign lc_used = lc>
181 </#if>
182 </#if>
183 <#assign productURL = "">
184 <#list fiCardsData as fib>
185 <#assign useprcaValue = fib.useprca!"">
186 <#if ameriprise>
187 <#if (fib.offerType=="101")>
188 <#assign productURL="premier-visa-signature">
189 <#assign productName="Premier Visa Signature">
190 <#assign productClass="ameriprise-premier-visa-signature">
191 <#elseif (fib.offerType=="103")>
192 <#assign productURL = "visa-signature">
193 <#assign productName = "Visa Signature">
194 <#assign productClass="ameriprise-visa-signature">
195 </#if>
196 <#else>
197 <#if (fib.offerType=="108" || fib.offerType=="109")>
198 <#assign productURL="consumer-platinum2103">
199 <#assign productName="Platinum">
200 <#elseif (fib.offerType=="104")>
201 <#assign productURL = "max-cash">
202 <#assign productName="Max Cash Preferred">
203 <#elseif (fib.offerType=="101" || fib.offerType=="103")>
204 <#assign productURL = "consumer-edr2112">
205 <#assign productName="Everyday Rewards+">
206 <#elseif fib.offerType == "115">
207 <#assign productURL = "secured">
208 <#assign productName="Secured">
209 <#elseif fib.offerType == "141">
210 <#assign productURL = "college-real-rewards">
211 <#assign productName="College Real Rewards">
212 <#elseif fib.offerType == "144">
213 <#assign productURL = "smart-business-rewards">
214 <#assign productName="Smart Business Rewards">
215 <#elseif fib.offerType == "147">
216 <#assign productURL = "max-cash-secured">
217 <#assign productName="Max Cash Secured">
218 <#elseif fib.offerType == "128">
219 <#assign productURL = "business-cash-preferred">
220 <#assign productName="Business Cash Preferred">
221 <#elseif fib.offerType == "143">
222 <#assign productURL = "business-real-rewards">
223 <#assign productName="Business Real Rewards">
224 <#elseif fib.offerType == "121">
225 <#assign productURL = "business-platinum2103">
226 <#assign productName="Business">
227 <#elseif fib.offerType == "138">
228 <#assign productURL = "travel-rewards-plus">
229 <#assign productName = "Travel Rewards+" >
230 <#elseif fib.offerType == "154">
231 <#assign productURL = "reserve-rewards-plus">
232 <#assign productName = "Reserve Rewards+" >
233 </#if>
234 </#if>
235
236 <#assign cardArtImage = cdnCardArtUrl + "/" + fib.filename + ".png">
237 <#assign cardArtImageAlt = cdnCardArtUrl + "/"+fib.filename+".jpg">
238 <#assign newSourceCode = fib.sourceCode>
239 <#assign newOfferId = fib.saaofferId>
240
241 <#assign empOfferId = "">
242 <#if fib?has_content>
243 <#assign empOfferId = fib.empofferId!"">
244 </#if>
245 <#assign marketingChannel = 'SAT2A'>
246 <#if isEmployee>
247 <#assign marketingChannel = 'EMPL'>
248 <#assign newOfferId = empOfferId>
249 </#if>
250
251 <#if url?matches(".*/${productURL}\\?.*")>
252 <#assign APR="">
253 <#assign AMF="">
254 <#assign BAL="">
255 <#assign sdata = utilServ.makeCall('crcDDCGetSchumerBox', newOfferId + '&' + newSourceCode)>
256 <#if (sdata?size > 0)>
257 <#list sdata as sItem>
258
259 <#if ((sItem.scrapedLabel?contains("Annual Percentage Rate (APR) for Purchases")) && (sItem.scrapedValue?has_content)) >
260 <#assign APR = sItem.scrapedValue>
261 <#elseif ((sItem.scrapedLabel?contains("Annual Membership Fee")) && (sItem.scrapedValue?has_content)) >
262 <#assign AMF = sItem.scrapedValue>
263 <#elseif ((sItem.scrapedLabel?contains("APR for Balance Transfers")) && (sItem.scrapedValue?has_content)) >
264 <#assign BAL = sItem.scrapedValue>
265 </#if>
266 <#if (APR?has_content && AMF?has_content && BAL?has_content)>
267 <#break>
268 </#if>
269 </#list>
270 <#else>
271 <script>
272 console.log('no scraped data');
273 </script>
274 </#if>
275 <#if ((fib.offerType == "108" || fib.offerType == "109" || fib.offerType == "121" ) && !ameriprise)>
276 <#if (sdata?size > 0)>
277 <#assign apr_string = "">
278 <#list sdata as d>
279 <#if (d.scrapedLabel?contains("Annual Percentage Rate (APR) for Purchases") && (d.scrapedValue?has_content))>
280 <#assign apr_string = d.scrapedValue?replace("(\n|\r\n|\r)+", " ","r")>
281 <#break>
282 </#if>
283 </#list>
284 <script>
285 $(document).ready(function () {
286 var aprText = "${apr_string}";
287 if (aprText) {
288 var matches= aprText.match(/\d+(\.\d+)?%?/g);
289 var billing_cycle = "";
290 var apr_min = "";
291 var apr_max = "";
292 var apr_max_formatted = "";
293 if (aprText.indexOf("Platinum:") != -1 || aprText.indexOf("Business:") != -1) {
294 billing_cycle = matches[1];
295 apr_min = matches[2];
296 apr_max = matches[3];
297 if (apr_max){
298 apr_max_formatted = '-' + apr_max;
299 }
300 }
301
302 if (billing_cycle) {
303 $(".scraped-billing-cycle").html(billing_cycle);
304 }
305 if (apr_min) {
306 $(".scraped-apr-min").html(apr_min);
307 }
308 $('.scraped-apr-max-formatted').html(apr_max_formatted);
309 if (apr_max) {
310 $('.scraped-apr-max').html(apr_max);
311 }
312
313 }
314 });
315 </script>
316 </#if>
317 </#if>
318 <#if ameriprise>
319 <#assign card_art_alt = partnerName + " " + productName + " " + " Card">
320 <#assign rollover_text = partnerName + " " + productName + " " + " Card">
321 <#else>
322 <#assign card_art_alt = partnerName + " " + productName + " " + " Card">
323 <#assign rollover_text = partnerName + " " + productName + " " + " Credit Card">
324 <#assign card_text = productName + " Card">
325 </#if>
326
327 <div class="hero-container ${pageClass} ${productClass!''}" title="${rollover_text!''}">
328 <div class="hero-main">
329
330 <div class="hero-main-container">
331 <div class="hero-main-offer">
332 <div class="offer-detail">
333 <div class="offer-detail-cardArt cardArtImg">
334 <img src="${cardArtImage!''}" alt="${card_art_alt!''}" title="${card_art_alt!''}" onerror="this.onerror=null;this.src='${cardArtImageAlt!''}'">
335 <p>${card_text!''}</p>
336 <#if fib.offerType=="108" || fib.offerType=="109">
337 <a href="javascript:void(0);" data-micromodal-trigger="modal-2">See how much you could save with a balance transfer</a>
338 </#if>
339 </div>
340 <div class="offer-detail-text text-color-default hide-desktop">
341 ${primaryHeadlineFeatureTop.getData()}
342 ${primaryHeadlineFeatureBottom.getData()}
343 </div>
344 <#if (useprcaValue == "1")>
345 <form class="form1 hide-desktop" action='${prcaURL}?locationCode=${lc_used}&offerId=${newOfferId}&preparerType=customer&mktChl=${marketingChannel}&applicationType=${applicationType}' method="post" id="BAAForm">
346 <label for="appDataBAA" style="position:absolute; clip:rect(0 0 0 0);">Application Data</label>
347 <textarea rows="20" cols="100" name="applicationData" id="appDataBAA" style="display:none;"></textarea>
348 <button
349 type="submit"
350 id="oadSecButton-top"
351 data-button-name="cta-button-top"
352 class="applyNowLink jn-button apply-button button-bg-color-custom"
353 disabled
354 >
355 ${ctaText.getData()}<span class="screen-reader-only"> for ${partnerName!''} ${productName!''} Card </span>
356 </button>
357 </form>
358 <#else>
359 <form class="form1 hide-desktop" action='${oadURL}?locationCode=${lc_used}&offerId=${newOfferId}&preparerType=customer&mktChl=${marketingChannel}' method="post" id="BAAForm">
360 <label for="appDataBAA" style="position:absolute; clip:rect(0 0 0 0);">Application Data</label>
361 <textarea rows="20" cols="100" name="applicationData" id="appDataBAA" style="display:none;"></textarea>
362 <button
363 type="submit"
364 id="oadSecButton-top"
365 data-button-name="cta-button-top"
366 class="applyNowLink jn-button apply-button button-bg-color-custom"
367 disabled
368 >
369 ${ctaText.getData()}<span class="screen-reader-only"> for ${partnerName!''} ${productName!''} Card </span>
370 </button>
371 </form>
372 </#if>
373 </div>
374 <div class="offer-header">
375 <div class="offer-text-top">
376 <div class="offer-title">
377 ${primaryHeadlineText.getData()}
378 </div>
379 <h1 class="offer-subtitle">
380 <#if isEmployee && employeePrimaryHeadlineFeature.getData()?has_content>
381 ${employeePrimaryHeadlineFeature.getData()}
382 <#else>
383 ${primaryHeadlineFeature.getData()}
384 </#if>
385 </h1>
386 </div>
387 <div class="offer-text-bottom hide-mobile">
388 <div class="offer-detail-text text-color-default ">
389 ${primaryHeadlineFeatureTop.getData()}
390 ${primaryHeadlineFeatureBottom.getData()}
391 <#-- allow for all except these url -->
392 <#if (fib.offerType == "108" ||
393 fib.offerType == "109" ||
394 fib.offerType == "121" ||
395 fib.offerType == "144"
396 )>
397 <br>
398 <a class="whiteLink" href="${oadURL_TC}?step=display&offerId=${newOfferId}&locationCode=${lc_used}" class="text-color-default" target="_blank">
399 <span class="screen-reader-only">${partnerName!''} ${productName!''} Card </span>See terms & conditions</a>
400 </#if>
401 </div>
402 <a tabindex="0" id="oadSecButton-top" data-button-name="cta-button-bottom" class="applyNowLink jn-button banner-cta-apply-button">${optionalCtaText.getData()}<span class="screen-reader-only"> for ${partnerName!''} ${productName!''} Card </span></a>
403
404 </div>
405 </div>
406
407 </div>
408 </div>
409 </div>
410 <div class="hero-primary-benefits">
411 <#if secondaryFeatureText.getData() != "">
412 <#assign featureCounter = 0>
413 <#list secondaryFeatureText.getSiblings() as item>
414 <div class="primary-benefit">
415 <div class="primary-benefit-wrapper text-color-white">
416 ${item.getData()}
417 <#if (fib.offerType=="108" || fib.offerType=="109") && (featureCounter == secondaryFeatureText.getSiblings()?size - 1)>
418 <a
419 href="${oadURL_TC}?step=display&offerId=${newOfferId}&locationCode=${lc_used}"
420 class="text-color-default"
421 target="_blank"
422 >
423 <span class="screen-reader-only">${partnerName!''} ${productName!''} Card </span>
424 Terms & Conditions
425 </a>
426 </#if>
427 </div>
428 </div>
429 <#assign featureCounter = featureCounter + 1>
430 </#list>
431 </#if>
432 </div>
433 </div>
434 <div class="standard-content-container" title="${rollover_text!''}">
435 <div class="product-details-container">
436 <div class="detail-background">
437 <h2>${secondaryHeadlineText.getData()}</h2>
438 <div class="secondary-benefits">
439 <div class="option">
440 ${additionalInfoGroupA.getData()}
441 <#if pbu != "0892445">
442 <div>
443 <#assign col1AmfOfferTypes = ["101", "141", "138", "154", "128"] >
444 <#assign col1AprOfferTypes = ["104", "121", "143", "144"] >
445 <#if col1AmfOfferTypes?seq_contains(fib.offerType)>
446 <#if (fib.offerType == "101")>
447 <h3>Annual Fee<sup>*</sup></h3>
448 <#else>
449 <h3>Annual Fee</h3>
450 </#if>
451 <p>${AMF!''}
452 <a href="${oadURL_TC}?step=display&offerId=${newOfferId}&locationCode=${lc_used}"
453 class="text-color-default" target="_blank">
454 <span class="screen-reader-only">${partnerName!''} ${productName!''} Card </span>Terms & Conditions
455 </a>
456 </p>
457 <#elseif col1AprOfferTypes?seq_contains(fib.offerType)>
458 <#if (fib.offerType == "104") >
459 <h3 >APR for Purchases:</h3>
460 <#elseif (fib.offerType == "144")>
461 <h3>APR for Purchases and Balance Transfers:</h3>
462 <#else>
463 <h3>Intro APR<sup>*</sup> for Purchases:</h3>
464 </#if>
465 <p>${APR!''}
466 <a href="${oadURL_TC}?step=display&offerId=${newOfferId}&locationCode=${lc_used}"
467 class="text-color-default" target="_blank">
468 <span class="screen-reader-only">${partnerName!''} ${productName!''} Card </span>Terms & Conditions
469 </a>
470 </p>
471
472 </#if>
473 </div>
474 </#if>
475 </div>
476 <div class="option">
477 ${additionalInfoGroupB.getData()}
478 <#if pbu != "0892445">
479 <div>
480 <#assign col2AmfOfferTypes = ["108", "109", "115", "144"] >
481 <#assign col2AprOfferTypes = ["138", "154", "128"] >
482 <#assign col2BalOfferTypes = ["101", "104", "141", "121", "143"] >
483 <#if col2AmfOfferTypes?seq_contains(fib.offerType)>
484 <h3>Annual Fee</h3>
485 <p>${AMF!''}
486 <a href="${oadURL_TC}?step=display&offerId=${newOfferId}&locationCode=${lc_used}"
487 class="text-color-default" target="_blank">
488 <span class="screen-reader-only">${partnerName!''} ${productName!''} Card </span>Terms & Conditions
489 </a>
490 </p>
491 <#elseif col2AprOfferTypes?seq_contains(fib.offerType)>
492 <#if (fib.offerType == "128")>
493 <h3>Intro APR<sup>*</sup> for Purchases:</h3>
494 <#else>
495 <h3>APR for Purchases:</h3>
496 </#if>
497 <p>${APR!''}
498 <a href="${oadURL_TC}?step=display&offerId=${newOfferId}&locationCode=${lc_used}"
499 class="text-color-default" target="_blank">
500 <span class="screen-reader-only">${partnerName!''} ${productName!''} Card </span>Terms & Conditions
501 </a>
502 </p>
503 <#elseif col2BalOfferTypes?seq_contains(fib.offerType)>
504 <h3>Intro APR<sup>*</sup> for Balance Transfers:</h3>
505 <p>${BAL!''}
506 <a href="${oadURL_TC}?step=display&offerId=${newOfferId}&locationCode=${lc_used}"
507 class="text-color-default" target="_blank">
508 <span class="screen-reader-only">${partnerName!''} ${productName!''} Card </span>Terms & Conditions
509 </a>
510 </p>
511
512 </#if>
513 </div>
514 </#if>
515 </div>
516 <#if additionalInfoGroupC?has_content || (isEmployee && employeeAdditionalInfoGroupC.getData()?has_content)>
517 <div class="option">
518 <#if isEmployee && employeeAdditionalInfoGroupC.getData()?has_content>
519 ${employeeAdditionalInfoGroupC.getData()}
520 <#else>
521 ${additionalInfoGroupC.getData()}
522 </#if>
523 <div>
524 <#assign col3AmfOfferTypes = ["104", "121", "143"] >
525 <#assign col3AprOfferTypes = ["101", "108", "109", "141", "147", "115"] >
526 <#assign col3BalOfferTypes = ["138", "154", "128"] >
527 <#if col3AmfOfferTypes?seq_contains(fib.offerType)>
528 <#if (fib.offerType == "104")>
529 <h3>Annual Fee<sup>*</sup></h3>
530 <#else>
531 <h3>Annual Fee</h3>
532 </#if>
533 <p>${AMF!''}
534 <a href="${oadURL_TC}?step=display&offerId=${newOfferId}&locationCode=${lc_used}"
535 class="text-color-default" target="_blank">
536 <span class="screen-reader-only">${partnerName!''} ${productName!''} Card </span>Terms & Conditions
537 </a>
538 </p>
539 <#elseif col3AprOfferTypes?seq_contains(fib.offerType)>
540 <#if (fib.offerType == "115" || fib.offerType == "147")>
541 <h3>APR for Purchases and Balance Transfers:</h3>
542 <#else>
543 <h3>Intro APR<sup>*</sup> for Purchases:</h3>
544 </#if>
545 <p>${APR!''}
546 <a href="${oadURL_TC}?step=display&offerId=${newOfferId}&locationCode=${lc_used}"
547 class="text-color-default" target="_blank">
548 <span class="screen-reader-only">${partnerName!''} ${productName!''} Card </span>Terms & Conditions
549 </a>
550 </p>
551 <#elseif col3BalOfferTypes?seq_contains(fib.offerType)>
552 <#if (fib.offerType == "128")>
553 <h3>Intro APR<sup>*</sup> for Balance Transfers:</h3>
554 <#else>
555 <h3>APR for Balance Transfers:</h3>
556 </#if>
557 <p>${BAL!''}
558 <a href="${oadURL_TC}?step=display&offerId=${newOfferId}&locationCode=${lc_used}"
559 class="text-color-default" target="_blank">
560 <span class="screen-reader-only">${partnerName!''} ${productName!''} Card </span>Terms & Conditions
561 </a>
562 </p>
563
564 </#if>
565 <#if (fib.offerType == "147")>
566 <h3>Annual Fee<sup>*</sup></h3>
567 <p>${AMF!''}
568 <a href="${oadURL_TC}?step=display&offerId=${newOfferId}&locationCode=${lc_used}"
569 class="text-color-default" target="_blank">
570 <span class="screen-reader-only">${partnerName!''} ${productName!''} Card </span>Terms & Conditions
571 </a>
572 </p>
573 </#if>
574 <#if (fib.offerType == "108" || fib.offerType == "109")>
575 <h3>Intro APR<sup>*</sup> for Balance Transfers:</h3>
576 <p>${BAL!''}
577 <a href="${oadURL_TC}?step=display&offerId=${newOfferId}&locationCode=${lc_used}"
578 class="text-color-default" target="_blank">
579 <span class="screen-reader-only">${partnerName!''} ${productName!''} Card </span>Terms & Conditions
580 </a>
581 </p>
582 </#if>
583 </div>
584 </div>
585 </#if>
586 </div>
587 </div>
588 </div>
589 </div>
590 <div class="banner-wrapper" title="${rollover_text!''}">
591 <div class="banner ${override}">
592 <div class="banner-cardArt cardArtImg">
593 <img src="${cardArtImage!''}" alt="${card_art_alt!''}" title="${card_art_alt!''}" onerror="this.onerror=null;this.src='${cardArtImageAlt!''}'">
594 </div>
595 <div class="banner-cta">
596 <div class="banner-cta-text text-color-white text-bold">
597 <#if isEmployee && employeeOptionalCtaFeatureText.getData()?has_content>
598 ${employeeOptionalCtaFeatureText.getData()}
599 <#else>
600 ${optionalCtaFeatureText.getData()}
601 </#if>
602 </div>
603 <a
604 tabindex="0"
605 id="oadSecButton"
606 data-button-name="cta-button-bottom"
607 class="applyNowLink jn-button banner-cta-apply-button button-bg-color-custom text-color-white"
608 >
609 ${optionalCtaText.getData()}<span class="screen-reader-only"> for ${partnerName!''} ${productName!''} Card</span></a>
610 </div>
611 </div>
612 </div>
613 <#break />
614 </#if>
615 </#list>
616
617 <script>
618 var reportingData = window.reportingData || {};
619 document.addEventListener('DOMContentLoaded', function() {
620 var page = location.pathname.split('/')[location.pathname.split('/').length-1];
621 var hostName = location.hostname;
622
623 function getDomainFromHostname(hostname) {
624 var parts = hostname.split('.');
625 return parts.length === 3 ? parts[1] : parts[0];
626 }
627 var domain = getDomainFromHostname(hostName);
628 var partnerName = "${partnerName!''}";
629
630 var ameriprise = '${ameriprise?string("yes", "no")}';
631 var locationCode = "${rlc!lc}";
632 var eidAmp = "";
633 if (ameriprise == "yes") {
634 var bankercode_amp = '${bCode}';
635 eidAmp = bankercode_amp.substring(3);
636 locationCode ="";
637 }
638
639 var heroCardImgs = document.querySelectorAll('.cardArtImg img');
640 for (var index = 0; index < heroCardImgs.length; index++) {
641 var heroCardImg = heroCardImgs[index];
642 var heroCardSrc = heroCardImg.getAttribute("src");
643 if(heroCardSrc != "") {
644 resizeImg(heroCardImg);
645 }
646 }
647 function resizeImg(img) {
648 img.addEventListener("load", function() {
649 var cardImgWidth = img.width;
650 var cardImgHeight = img.height;
651 if(cardImgWidth > cardImgHeight) {
652 img.style.width = "285px";
653 } else {
654 img.style.width = "150px";
655 }
656 });
657 }
658
659
660 $('.jn-button').removeAttr('disabled');
661 $('.jn-button').removeClass('jn-disabled');
662 jQuery('#oadSecButton, #oadSecButton-top').on('click', function(e) {
663 jQuery('#BAAForm').submit();
664 });
665
666 jQuery('#BAAForm').on('submit', function(e){
667 e.preventDefault();
668 var xmlData;
669 if(ameriprise == "yes") {
670 xmlData = '<?xml version="1.0"?>'+
671 "<prefillData>"+
672 "<versionNumber>1.0</versionNumber>"+
673 "<applicationData>"+
674 "<referral>" +
675 "<employeeId>" + eidAmp + "</employeeId>" +
676 "<storeNumber>"+"${bName!'0'}"+"</storeNumber>"+
677 "<divisionNumber></divisionNumber>"+
678 "</referral>" +
679 "<bankerInformation>"+
680 "<locationCode>" + locationCode + "</locationCode>"+
681 "<originatingBranchNumber>"+"${bName!'0'}"+"</originatingBranchNumber>"+
682 "<employeeID>${boeid!0}</employeeID>"+
683 "<name>" +
684 "<first>${bFName!'0'}</first>" +
685 "<last>${bLName!'0'}</last>" +
686 "</name>"+
687 "<phone>"+
688 "<areaCode>"+areaCode+"</areaCode>"+
689 "<exchange>"+exchangeCode+"</exchange>"+
690 "<number>"+num+"</number>"+
691 "</phone>"+
692 "</bankerInformation>"+
693 "</applicationData>"+
694 "</prefillData>"
695 } else if ('${isEmployee?string("yes", "no")}' == "yes") {
696 xmlData = '<?xml version="1.0"?>'+
697 "<prefillData>"+
698 "<versionNumber>1.0</versionNumber>"+
699 "<applicationData>"+
700 "<bankerInformation>"+
701 "<employeeFullName>Employee Product</employeeFullName>"+
702 "<employeeId>EMPPROD</employeeId>"+
703 "<employeePhoneNumber></employeePhoneNumber>"+
704 "<locationCode>" + locationCode + "</locationCode>"+
705 "<originatingBranchNumber>"+"${bName!'0'}"+"</originatingBranchNumber>"+
706 "<originatingBranchId></originatingBranchId>"+
707 "<name>" +
708 "<first>${bFName!'0'}</first>" +
709 "<last>${bLName!'0'}</last>" +
710 "</name>"+
711 "<phone>"+
712 "<areaCode>" + areaCode + "</areaCode>"+
713 "<exchange>" + exchangeCode + "</exchange>"+
714 "<number>" + num + "</number>"+
715 "</phone>"+
716 "</bankerInformation>"+
717 "<referral>" +
718 "<divisionNumber></divisionNumber>" +
719 "<partnerLocationID>" + locationCode + "</partnerLocationID>" +
720 "<referralId>EMPPROD</referralId>" +
721 "</referral>" +
722 "</applicationData>"+
723 "</prefillData>";
724 } else {
725 xmlData = '<?xml version="1.0"?>'+
726 "<prefillData>"+
727 "<versionNumber>1.0</versionNumber>"+
728 "<applicationData>"+
729 "<bankerInformation>"+
730 "<locationCode>" + locationCode + "</locationCode>"+
731 "<originatingBranchNumber>"+"${bName!'0'}"+"</originatingBranchNumber>"+
732 "<employeeID>${boeid!0}</employeeID>"+
733 "<name>" +
734 "<first>${bFName!'0'}</first>" +
735 "<last>${bLName!'0'}</last>" +
736 "</name>"+
737 "<phone>"+
738 "<areaCode>"+areaCode+"</areaCode>"+
739 "<exchange>"+exchangeCode+"</exchange>"+
740 "<number>"+num+"</number>"+
741 "</phone>"+
742 "</bankerInformation>"+
743 "</applicationData>"+
744 "</prefillData>"
745 }
746 console.log("useprcaValue---->"+${useprcaValue})
747 if('${useprcaValue}' =='1'){
748 if('${isEmployee?string("yes", "no")}' == "yes"){
749 var employeeFullName = "${fName!'0'}" + ' ' + "${lName!'0'}";
750 var firstName = "${fName!'0'}".trim();
751 var lastName = "${lName!'0'}".trim();
752 var fullName = employeeFullName.trim();
753
754 if (fullName.length <= 19) {
755 employeeFullName = fullName;
756 } else if (firstName.charAt(0) + ' ' + lastName.length <= 19) {
757 employeeFullName = firstName.charAt(0) + ' ' + lastName;
758 } else {
759 employeeFullName = firstName.charAt(0) + ' ' + lastName.substring(0, 17);
760 }
761 var applicationJsonData = {
762 "prefillData": {
763 "versionNumber": "1.0",
764 "applicationData": {
765 "bankerInformation": {
766 "locationCode": locationCode,
767 "originatingBranchId": "${bName!'0'}",
768 "employeeId": "EMPPROD",
769 "employeeFullName": "Employee Product",
770 "employeePhoneNumber": phoneNum
771 }
772 }
773 }
774 };
775 }else{
776 var employeeFullName = "${fName!'0'}" + ' ' + "${lName!'0'}";
777 var firstName = "${fName!'0'}".trim();
778 var lastName = "${lName!'0'}".trim();
779 var fullName = employeeFullName.trim();
780
781 if (fullName.length <= 19) {
782 employeeFullName = fullName;
783 } else if (firstName.charAt(0) + ' ' + lastName.length <= 19) {
784 employeeFullName = firstName.charAt(0) + ' ' + lastName;
785 } else {
786 employeeFullName = firstName.charAt(0) + ' ' + lastName.substring(0, 17);
787 }
788
789 var applicationJsonData = {
790 "prefillData": {
791 "versionNumber": "1.0",
792 "applicationData": {
793 "bankerInformation": {
794 "locationCode": locationCode,
795 "originatingBranchId": "${bName!'0'}",
796 "employeeId": "${boeid!0}",
797 "employeeFullName": employeeFullName,
798 "employeePhoneNumber": phoneNum
799 }
800 }
801 }
802 };
803 }
804 var jsonData = JSON.stringify(applicationJsonData);
805 jQuery('#appDataBAA').val(jsonData);
806 }else{
807 jQuery('#appDataBAA').val(xmlData);
808 }
809
810 var buttonName = jQuery('.jn-button').data('button-name');
811 /* SiteCatalyst onClick tracking */
812 reportingData.apply_button = buttonName;
813 AUI().ready(function() {
814 if (window.publisherFW) {
815 window.publisherFW.publishEvent("onClick", reportingData);
816 }
817 });
818
819 var paramString = '${bCode}' + "&" + xmlData + "&" + '${htmlUtil.escapeURL(htmlUtil.escapeJS(url))}';
820 /* CRC service call */
821 Liferay.Service(
822 '/crcutilities.crcremoteservice/make-call',
823 {
824 storedProcedure: 'crcDDCTextApplyLog',
825 parameters: paramString
826 },
827 function(obj)
828 {
829 //console.log("T2A logging call");
830 }
831 );
832
833 this.submit();
834 });
835 var regex = /\d+/g;
836 var bdNumber = "${bPhone!''}";
837 var phoneNum = bdNumber.match(regex);
838 var areaCode = "";
839 var exchangeCode = "";
840 var num = "";
841 if(phoneNum != null) {
842 phoneNum = phoneNum.join("");
843 areaCode = phoneNum.substring(0,3);
844 exchangeCode = phoneNum.substring(3,6);
845 num = phoneNum.substring(6,10);
846 }
847 var product = "";
848 switch(page) {
849 case "consumer-platinum2103":
850 product="Platinum Card"
851 break;
852 case "consumer-edr2112":
853 product="Everyday Rewards+ Card"
854 break;
855 case "secured":
856 product="Secured Card"
857 break;
858 case "business-cash-preferred":
859 product="Business Cash Preferred"
860 break;
861 case "business-real-rewards":
862 product="Business Real Rewards Card"
863 break;
864 case "business-rewards-plus":
865 product="Business Rewards PLUS Card"
866 break;
867 case "premier-visa-signature":
868 product="Premier Visa Signature Card"
869 break;
870 case "business-platinum2103":
871 product="Business Card"
872 break;
873 case "visa-signature":
874 product="Visa Signature Card"
875 break;
876 case "travel-rewards-plus":
877 product="Travel Rewards+ Card"
878 break;
879 case "reserve-rewards-plus":
880 product="Reserve Rewards+ Card"
881 break;
882 case "max-cash":
883 product="Max Cash Preferred Card"
884 break;
885 case "max-cash-secured":
886 product="Max Cash Secured Card"
887 break;
888 case "college-real-rewards":
889 product="College Real Rewards Card"
890 break;
891 case "smart-business-rewards":
892 product="Smart Business Rewards Card"
893 break;
894 default:
895 product = "All Cards";
896 }
897
898 /* update SiteCatalyst data object */
899 reportingData.current_page = "microsite:${partnerName}:" + domain + ':' + page.replace('-',' ');
900 reportingData.location_code = '${rlc!0}';
901 reportingData.product = product;
902 reportingData.site_section = 'credit cards';
903 reportingData.platform = 'microsite';
904 reportingData.partner_name = "${partnerName}";
905 reportingData.Banker_id = '${boeid}';
906 reportingData.Banker_code = '${bCode}';
907 reportingData.visitor_type = 'prospect';
908 reportingData.text_to_apply_source = '${text_to_apply_source}';
909 reportingData.page_type = 'product';
910 reportingData.campaign_id = '${campaignId}';
911
912 jQuery('.applyNowLink').on('click', function(e){
913 const bankerId = '${boeid}';
914 const employeeId = "";
915 let visitorId = bankerId;
916
917 if('${isEmployee?string("yes", "no")}' == "yes") {
918 visitorId = employeeId;
919 }
920 // get action url of form submit button
921 const href = document.getElementById('BAAForm').action;
922
923 const urlParams = new URLSearchParams(href);
924 let offerId = "";
925
926 if(urlParams.has('offerid')) {
927 offerId = urlParams.get('offerid');
928 }
929
930 if(urlParams.has('offerId')) {
931 offerId = urlParams.get('offerId');
932 }
933
934 window.dataLayer.push({
935 'event' : 'apply_payload',
936 'location_code': locationCode,
937 'banker_code': '${bCode}',
938 'offer_id': offerId,
939 'visitor_id': visitorId,
940 });
941 return false;
942 });
943 });
944 </script>
945
946 <#else>
947 <script>
948 console.log("FI Cards Data empty");
949 location.href = '${url404}';
950 </script>
951 </#if>
952 <#else>
953 <script>
954 console.log("Fi opt-out");
955 location.href = '${url404}';
956 </script>
957 </#if>
958 <#else>
959 <script>
960 console.log("client profile empty");
961 location.href = '${url404}';
962 </script>
963 </#if>
964
965</#if>
966<#assign clientdata = utilServ.makeCall('crcDDCTier1Customizations','0&'+pbu+'&'+subbu+'&11')>
967<#if (clientdata?size > 0)>
968 <#assign backgroundColor = clientdata[0].backgroundHexColor>
969</#if>
970<script>
971 // Makes the Header subtitle work if there is two lines of text
972 var consumerHeader = document.getElementsByClassName("consumer-card")[0];
973 if(consumerHeader){
974 var consumerHeroContainer = consumerHeader.getElementsByClassName("hero-main-container")[0];
975 const offerTextTop = consumerHeader.querySelector(".offer-text-top");
976 const gradientHeight = Math.max(offerTextTop.offsetHeight + 50, 200) + "px";
977 var consumerOfferHeader = consumerHeader.getElementsByClassName("offer-subtitle")[0];
978 const consumerSubtitle = consumerOfferHeader.getElementsByTagName("p")[0];
979 if (consumerSubtitle.innerText.length >= 76){
980 //two lines
981 consumerHeroContainer.style.background = "linear-gradient(180deg, ${backgroundColor!'#173989'} " + gradientHeight + ", #f8f8f8 " + gradientHeight + ")";
982 }
983 }
984
985 var buisnessHeader = document.getElementsByClassName("business-card")[0];
986 if(buisnessHeader) {
987 var buisnessHeroContainer = buisnessHeader.getElementsByClassName("hero-main-container")[0];
988 var buisnessOfferHeader = buisnessHeader.getElementsByClassName("offer-subtitle")[0];
989
990 if(buisnessOfferHeader.innerText.length >= 31 && buisnessOfferHeader.innerText.length < 48){
991 //not two lines but the header on tablet gose outside of allocated space.
992 buisnessHeroContainer.style.background = "linear-gradient(180deg, rgba(255,255,255,1) 40%, ${backgroundColor!'#173989'} 40%)";
993 } else if (buisnessOfferHeader.innerText.length >= 48){
994 //two lines
995 buisnessHeroContainer.style.background = "linear-gradient(180deg, rgba(255,255,255,1) 45%, ${backgroundColor!'#173989'} 45%)";
996 }
997 }
998</script>
处理模板时发生错误。
The following has evaluated to null or missing: ==> url404 [in template "10154#10192#157461637" at line 37, column 30] ---- 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#157461637" at line 37, column 28] ----
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<#if qstringmap["bankercode"]?has_content>
6 <#assign bankercode = qstringmap["bankercode"]?first>
7 <#assign bankercode = htmlUtil.escape(bankercode)>
8 <#assign bankercode = htmlUtil.escapeJS(bankercode)>
9 <#assign bankercode = htmlUtil.escapeURL(bankercode)>
10
11 <#assign fiData= utilServ.makeCall('crcDDCBankerAssistedAppSql','0&'+bankercode)>
12 <#if fiData?first?has_content>
13 <#assign fi = fiData?first>
14 <#if ((fi.projectId == "12") || (fi.projectId == "13") || (fi.projectId == "14"))>
15 <#assign subbu_special = fi.offerId>
16 </#if>
17 </#if>
18
19 <#assign bData = utilServ.makeCall('crcDDCBankerAssistedAppDetailSql','0&'+bankercode)>
20 <#list bData as b>
21 <#assign rLC = b.reallocationcode >
22 <#assign lc = b.locationcode >
23 <#assign mappedLC = b.mappedLocationCode >
24 </#list>
25
26 <#assign isEmployee = false>
27
28 <#if fiData?first?has_content>
29 <#assign fi = fiData?first>
30 <#if fi.projectType == "emp">
31 <#assign isEmployee = true>
32 </#if>
33 </#if>
34<#else>
35 <script>
36 console.log("MainProductBcode missing");
37 //location.href = '${url404}';
38 </script>
39</#if>
40
41<#if bankercode?starts_with("amp") && (url?contains("11t1m"))>
42 <#assign ameriprise = true>
43<#else>
44 <#assign ameriprise = false>
45</#if>
46
47<#if mappedLC?has_content && !ameriprise>
48 <#assign lc = mappedLC >
49</#if>
50
51
52<#if lc?has_content>
53 <#assign prefix = "00000" >
54 <#assign lcWithPrefix = prefix + lc >
55 <#assign withPrefixLength = lcWithPrefix?length >
56 <#assign startHere = withPrefixLength - 5>
57 <#assign lc = lcWithPrefix?substring(startHere)>
58 <#assign clientProfileService = (serviceLocator.findService("com.elan.crc.user.service.CrcClientProfileLocalService"))! />
59 <#assign clientProfileList = clientProfileService.findByLocationCode(lc)>
60
61 <#assign clientProfile = clientProfileList?first>
62 <#assign partnerName=clientProfile.getMarketingNameLong()>
63 <#assign pbu = clientProfile.getPbu()>
64 <#assign subbu = clientProfile.getSUBBRANDBUNBR()>
65
66 <#assign fultonBankpbu = "0727491">
67 <#if pbu == fultonBankpbu>
68 <style>
69 #hideFultonInfo {
70 display: none;
71 }
72 </style>
73 </#if>
74
75 <#assign optoutData = utilServ.makeCall('crc_DDCSAAOptOut',pbu+'&'+subbu)>
76 <#if (optoutData?size == 0)>
77 <#if (subbu_special?has_content)>
78 <#assign fiCardsData = utilServ.makeCall('crcTier3GetPbuData','0&' + pbu + '&' + subbu_special)>
79 <script>
80 console.log('new subbu', '${subbu_special!''}');
81 </script>
82 <#else>
83 <#assign fiCardsData = utilServ.makeCall('crcTier3GetPbuData','0&' + pbu + '&' + subbu)>
84 </#if>
85 <#if (fiCardsData?size > 0)>
86 <#assign cardProvider = utilServ.makeCall('crcDDCGetMcOrVisa', fiCardsData[0].offerType + '&' + lc)>
87 <#assign cardProviderAbbreviated = ''>
88 <#if (cardProvider?size > 0)>
89 <#-- This will be V for visa or M for mastercard. -->
90 <#assign cardProviderAbbreviated = cardProvider[0].cardType>
91 <#else>
92 <script>
93 console.log('No V or M data')
94 </script>
95 </#if>
96 <#list fiCardsData as fib>
97 <#switch fib.offerType>
98 <#case "101">
99 <#assign productURL = "consumer-edr2112">
100 <#assign productName = "Everyday Rewards+">
101 <#break>
102 <#case "104">
103 <#assign productURL = "max-cash">
104 <#assign productName = "Max Cash Preferred Card">
105 <#break>
106 <#case "108">
107 <#assign productURL="consumer-platinum2103">
108 <#assign productName="Platinum Card">
109 <#break>
110 <#case "109">
111 <#assign productURL="consumer-platinum2103">
112 <#assign productName="Platinum Card">
113 <#break>
114 <#case "115">
115 <#assign productURL = "secured">
116 <#assign productName = "Secured Card" >
117 <#break>
118 <#case "138">
119 <#assign productURL = "travel-rewards-plus">
120 <#assign productName = "Travel Rewards+" >
121 <#break>
122 <#case "141">
123 <#assign productURL = "college-real-rewards">
124 <#assign productName = "College Real Rewards" >
125 <#break>
126 <#case "147">
127 <#assign productURL = "max-cash-secured">
128 <#assign productName = "Max Cash Secured Card" >
129 <#break>
130 <#case "154">
131 <#assign productURL = "reserve-rewards-plus">
132 <#assign productName = "Reserve Rewards+" >
133 <#break>
134 <#case "121">
135 <#assign productURL = "business-platinum2103">
136 <#assign productName = "Business Card" >
137 <#break>
138 <#case "128">
139 <#assign productURL = "business-cash-preferred">
140 <#assign productName = "Business Cash Preferred" >
141 <#break>
142 <#case "143">
143 <#assign productURL = "business-real-rewards">
144 <#assign productName = "Business Real Rewards Card" >
145 <#break>
146 <#case "144">
147 <#assign productURL = "smart-business-rewards">
148 <#assign productName = "Smart Business Rewards Card" >
149 <#break>
150 <#default>
151 </#switch>
152 <#if productURL?has_content && url?matches(".*/${productURL}\\?.*")>
153 <#list product.getSiblings() as card>
154 <#if (card.offerType.getData() == fib.offerType)>
155 <div class="content-container" title="${partnerName!''} - Disclaimer">
156 <div class="jn-disclaimer">
157 <#if pbuList.getData()?has_content && pbuList.getData()?contains(pbu) && card.disclaimerAssociatedBank.getData()?has_content>
158 <#if isEmployee && card.employeeDisclaimerAssociatedBank?has_content>
159 ${card.employeeDisclaimerAssociatedBank.getData()}
160 <#else>
161 ${card.disclaimerAssociatedBank.getData()}
162 </#if>
163 <#else>
164 <#if isEmployee && card.employeeDisclaimerVisa?has_content && cardProviderAbbreviated?contains('V')>
165 ${card.employeeDisclaimerVisa.getData()}
166 <#elseif isEmployee && card.employeeDisclaimerMasterCard?has_content && cardProviderAbbreviated?contains('M')>
167 ${card.employeeDisclaimerMasterCard.getData()}
168 <#elseif (card.disclaimerVisa?has_content && cardProviderAbbreviated?contains('V'))>
169 ${card.disclaimerVisa.getData()}
170 <#elseif (card.disclaimerMasterCard?has_content && cardProviderAbbreviated?contains('M')) >
171 ${card.disclaimerMasterCard.getData()}
172 </#if>
173 </#if>
174 </div>
175 </div>
176 <#break>
177 </#if>
178 </#list>
179 <#break>
180 </#if>
181 </#list>
182 <#else>
183 <script>
184 console.log("Empty card data");
185 </script>
186 </#if>
187 <#else>
188 <script>
189 console.log("FI opt out");
190 </script>
191 </#if>
192
193<#else>
194 <script>
195 console.log("No lc for disclaimer");
196 </script>
197</#if>
处理模板时发生错误。
The following has evaluated to null or missing: ==> url404 [in template "10154#10192#153051515" at line 20, column 28] ---- Tip: If the failing expression is known to legally refer to something that's sometimes null or missing, either specify a default value like myOptionalVar!myDefault, or use <#if myOptionalVar??>when-present<#else>when-missing</#if>. (These only cover the last step of the expression; to cover the whole expression, use parenthesis: (myOptionalVar.foo)!myDefault, (myOptionalVar.foo)?? ---- ---- FTL stack trace ("~" means nesting-related): - Failed at: ${url404} [in template "10154#10192#153051515" at line 20, column 26] ----
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<#assign aDateTime = .now>
5<#assign currentYear = aDateTime?string.yyyy>
6
7<#if qstringmap["bankercode"]?has_content>
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.reallocationcode >
15 </#list>
16
17<#else>
18 <script>
19 console.log("MainProductBcode missing");
20 location.href = '${url404}';
21 </script>
22</#if>
23
24<#assign prefix = "00000" >
25<#assign lcWithPrefix = prefix + lc >
26<#assign withPrefixLength = lcWithPrefix?length >
27<#assign startHere = withPrefixLength - 5>
28<#assign lc = lcWithPrefix?substring(startHere)>
29<#if lc?has_content>
30 <#assign clientProfileService = (serviceLocator.findService("com.elan.crc.user.service.CrcClientProfileLocalService"))! />
31 <#assign clientProfileList = clientProfileService.findByLocationCode(lc)>
32 <#assign clientProfile = clientProfileList?first>
33 <#assign pbu = clientProfile.getPbu()>
34 <#assign subbu = clientProfile.getSUBBRANDBUNBR()>
35 <#assign partnerName=clientProfile.getMarketingNameLong()>
36 <#assign clientDataService = (serviceLocator.findService("com.elan.crc.user.service.CrcPbuLocalService"))! />
37 <#assign clientProfileDataList = clientDataService.getByPbuAndSubBu(pbu,subbu)>
38 <#assign partnerUrl = clientProfileDataList.getPartnerMainUrl()>
39 <script>//console.log('partnerUrl: ${partnerUrl}')</script>
40 <#if partnerUrl?has_content && !partnerUrl?matches(r"(?i)^https?\:\/\/.*")>
41 <#assign partnerUrl = 'https://' + partnerUrl>
42 <script>console.log('Come to here by accident')</script>
43 </#if>
44</#if>
45<script src="https://unpkg.com/micromodal/dist/micromodal.min.js"></script>
46
47<footer class="footer bg-color-black text-color-white">
48 ${footerContent.getData()}
49</footer>
50<!-- BEGIN CALIFORNIA OPT-OUT MODAL -->
51
52<style>
53 #opt-out-button,
54 .modal__btn.learn-more {
55 background: #0C2074;
56 border: 1px solid #0C2074;
57 color: white;
58 text-transform: uppercase;
59 text-decoration: none;
60 font-size: 16px;
61 padding: 0.5rem 2rem;
62 display: inline-block;
63 border-radius: 0;
64 }
65 #opt-out-button:hover,
66 .modal__btn.learn-more:hover {
67 color: white;
68 border-color: #2C76AF !important;
69 background-color: #2C76AF !important;
70 }
71 .modal__btn.learn-more {
72 background: white;
73 border: 1px solid #0C2074;
74 color: #0C2074;
75 }
76 #opt-out-button[disabled="true"] {
77 background-color: rgba(0,0,0,.15);
78 color: rgba(0,0,0,.45);
79 border-color: rgba(0,0,0,.25);
80 }
81 #opt-out-button:hover[disabled="true"] {
82 background-color: rgba(0,0,0,.15) !important;
83 color: rgba(0,0,0,.45) !important;
84 border-color: rgba(0,0,0,.25) !important;
85 }
86 #opt-out-button:focus {
87 outline-style: solid;
88 outline-color: white;
89 outline-offset: -3px;
90 outline-width: 1px;
91 }
92 .opt-out-link svg {
93 width: 30px;
94 height: 14px;
95 width: auto;
96 vertical-align: middle;
97 }
98 .modal__overlay {
99 position: fixed;
100 top: 0;
101 left: 0;
102 right: 0;
103 bottom: 0;
104 background: rgba(0,0,0,0.6);
105 display: flex;
106 justify-content: center;
107 align-items: center;
108 }
109
110 .modal__container {
111 background-color: #fff;
112 padding: 30px;
113 max-width: 500px;
114 max-height: 100vh;
115 border-radius: 4px;
116 overflow-y: auto;
117 box-sizing: border-box;
118 }
119
120 .modal__header {
121 display: flex;
122 justify-content: space-between;
123 align-items: center;
124 }
125
126 .modal__title {
127 margin-top: 0;
128 margin-bottom: 0;
129 font-weight: 600;
130 font-size: 20px;
131 line-height: 1.25;
132 color: #00449e;
133 box-sizing: border-box;
134 }
135
136 .modal__close {
137 background: transparent;
138 border: 1px solid white;
139 padding: 4px 8px;
140 }
141 .modal__close:hover {
142 border: 1px solid black;
143 }
144
145 .modal__header .modal__close:before { content: "\2715"; }
146
147 .modal__content {
148 margin-top: 2rem;
149 margin-bottom: 2rem;
150 line-height: 1.5;
151 }
152
153 @keyframes mmfadeIn {
154 from { opacity: 0; }
155 to { opacity: 1; }
156 }
157
158 @keyframes mmfadeOut {
159 from { opacity: 1; }
160 to { opacity: 0; }
161 }
162
163 @keyframes mmslideIn {
164 from { transform: translateY(15%); }
165 to { transform: translateY(0); }
166 }
167
168 @keyframes mmslideOut {
169 from { transform: translateY(0); }
170 to { transform: translateY(-10%); }
171 }
172
173 .micromodal-slide {
174 display: none;
175 }
176
177 .micromodal-slide.is-open {
178 display: block;
179 }
180
181 .micromodal-slide[aria-hidden="false"] .modal__overlay {
182 animation: mmfadeIn .3s cubic-bezier(0.0, 0.0, 0.2, 1);
183 }
184
185 .micromodal-slide[aria-hidden="false"] .modal__container {
186 animation: mmslideIn .3s cubic-bezier(0, 0, .2, 1);
187 }
188
189 .micromodal-slide[aria-hidden="true"] .modal__overlay {
190 animation: mmfadeOut .3s cubic-bezier(0.0, 0.0, 0.2, 1);
191 }
192
193 .micromodal-slide[aria-hidden="true"] .modal__container {
194 animation: mmslideOut .3s cubic-bezier(0, 0, .2, 1);
195 }
196
197 .micromodal-slide .modal__container,
198 .micromodal-slide .modal__overlay {
199 will-change: transform;
200 }
201</style>
202
203<div class="modal micromodal-slide" id="modal-1" aria-hidden="true">
204 <div class="modal__overlay" tabindex="-1" data-micromodal-close>
205 <div class="modal__container" role="dialog" aria-modal="true" aria-labelledby="modal-1-title">
206 <header class="modal__header">
207 <h2 class="modal__title" id="modal-1-title">
208 Your California privacy choices
209 </h2>
210 <button class="modal__close" aria-label="Close modal" data-micromodal-close></button>
211 </header>
212 <div class="modal__content" id="modal-1-content">
213 <div id="message-no-cookie">
214 <p>
215 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>
216
217 <p> </p>
218
219 <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>
220 </div>
221 <div id="message-with-cookie">
222 <p>You have successfully opted-out.</p>
223 </div>
224 </div>
225 <div class="modal__footer">
226 <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>
227 <button id="opt-out-button" class="modal__btn modal__btn-primary" aria-label="Opt Out and Close modal" onclick="window.californiaOptOut()">Opt Out</button>
228 </div>
229 </div>
230 </div>
231</div>
232<!-- END CALIFORNIA OPT-OUT MODAL -->
233
234<script>
235 const copyrightNode = document.querySelector('.footer .copyright');
236 const fdicNode = document.querySelector('.footer .fdic');
237 const agreementNode = document.querySelector('.footer .member-agreement');
238 if(agreementNode) {
239 agreementNode.innerHTML='<p><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></p>';
240 }
241 if (copyrightNode) {
242 copyrightNode.innerHTML = '<sup>©</sup> Elan Financial Services ' + ${currentYear};
243 copyrightNode.classList.add('ecdma-footer-client-name-copyright');
244 }
245 if (fdicNode) {
246 fdicNode.innerHTML = '<p><a class="text-color-white" href="https://login.elancreditcard.com/onlineCard/publicPrivacyPolicy.do?phase=privacyPolicy" target="_blank">Privacy and Security</a></p>';
247 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>');
248 }
249
250</script>
251<#if partnerUrl?has_content>
252 <script>
253 const homelinkNode = document.querySelector('.footer .copyright .homelink');
254 if (homelinkNode) {
255 homelinkNode.href="${partnerUrl!''}";
256 homelinkNode.title="${partnerName!''}";
257 homelinkNode.innerText="Home";
258 }
259 </script>
260</#if>
261<!-- BEGIN CALIFORNIA OPT-OUT MODAL LOGIC -->
262
263<script>
264 window.getCookieDomain = function() {
265 var hostname = window.location.hostname.split(".");
266 return hostname && hostname.slice(hostname.length - 2).join(".");
267 }
268 window.setToOptOut = function() {
269 if (window.getCookie('privacy_optout')) {
270 document.getElementById('message-no-cookie').style.display = 'none';
271 document.getElementById('message-with-cookie').style.display = 'block';
272 document.getElementById('opt-out-button').setAttribute('disabled', true)
273 } else {
274 document.getElementById('message-no-cookie').style.display = 'block';
275 document.getElementById('message-with-cookie').style.display = 'none';
276 }
277 }
278 window.getCookie = function(name) {
279 var value = '; ' + document.cookie;
280 var parts = value.split('; ' + name + '=');
281 if (parts.length === 2) return parts.pop().split(';').shift();
282 }
283 window.californiaOptOut = function() {
284 if (!window.getCookie('privacy_optout')) {
285 document.cookie = 'privacy_optout=1; path=/; domain=' + window.getCookieDomain() + '; expires=Thu, 31 Dec 2099 00:00:00 GMT;';
286 try {
287 if (window.CustomEvent) {
288 window.dispatchEvent(new CustomEvent('privacy_optout'));
289 } else {
290 var privacyOptoutEvent = document.createEvent('Event');
291 privacyOptoutEvent.initEvent('privacy_optout', true, true);
292 window.dispatchEvent(privacyOptoutEvent);
293 }
294 window.setToOptOut();
295 } catch (err) {
296 console.error(err);
297 }
298 }
299 }
300 MicroModal.init({
301 onShow: window.setToOptOut
302 });
303 AUI().ready(function() {
304 // user browser setting for Global Privacy Control to opt out of sharing information with third parties
305 const isBrowserGpcOptOut = navigator.globalPrivacyControl;
306 if(isBrowserGpcOptOut === true) {
307 window.californiaOptOut();
308 }
309 });
310</script>
311<!-- END CALIFORNIA OPT-OUT MODAL LOGIC -->