An error occurred while processing the template.
The following has evaluated to null or missing: ==> pbu [in template "10154#10192#155404894" at line 883, column 74] ---- Tip: If the failing expression is known to legally refer to something that's sometimes null or missing, either specify a default value like myOptionalVar!myDefault, or use <#if myOptionalVar??>when-present<#else>when-missing</#if>. (These only cover the last step of the expression; to cover the whole expression, use parenthesis: (myOptionalVar.foo)!myDefault, (myOptionalVar.foo)?? ---- ---- FTL stack trace ("~" means nesting-related): - Failed at: #assign clientdata = utilServ.makeCal... [in template "10154#10192#155404894" at line 883, 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
9<#if oadURL?contains("uat-")>
10 <#assign oadURL_TC = 'https://uat-online1.elancard.com/oad/terms.controller' >
11<#else>
12 <#assign oadURL_TC = 'https://online1.elancard.com/oad/terms.controller' >
13</#if>
14<#-- check bankercode validity -->
15
16<#if qstringmap["bankercode"]?has_content>
17 <#assign bCode= qstringmap["bankercode"]?first>
18 <#assign bCode= htmlUtil.escapeJS(bCode)>
19 <#assign bCode= htmlUtil.escape(bCode)>
20 <#assign isEmployee = false>
21
22 <#assign fiData= utilServ.makeCall('crcDDCBankerAssistedAppSql','0&'+bCode)>
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 <#else>
32 <script>
33 console.log("fiData missing");
34 location.href = '${url404}';
35 </script>
36 </#if>
37 <#assign bData = utilServ.makeCall('crcDDCBankerAssistedAppDetailSql','0&'+bCode)>
38 <#if !bData?first?has_content>
39 <script>
40 console.log("bData missing");
41 location.href = '${url404}';
42 </script>
43 </#if>
44 <#list bData as b>
45 <#assign lc = b.locationcode >
46 <#assign bName = b.branch >
47 <#assign bPhone = b.businessphone >
48 <#assign boeid = b.oeid >
49 <#assign fName = b.firstname?trim>
50 <#assign lName = b.lastname?trim>
51 <#assign rlc = b.reallocationcode >
52 <#assign mappedLC = b.mappedLocationCode >
53 </#list>
54
55<#else>
56 <script>
57 console.log("MainProductBcode missing");
58 location.href = '${url404}';
59 </script>
60</#if>
61
62<#assign text_to_apply_source = "vanity url" >
63<#if qstringmap["sms"]?has_content>
64 <#assign sms = 1 >
65 <#assign text_to_apply_source = "sms" >
66</#if>
67<#if qstringmap["qrCode"]?has_content>
68 <#assign text_to_apply_source = "qr code" >
69</#if>
70<#assign campaignId = "" >
71<#assign ecidExt="">
72<#if qstringmap["ecid"]?has_content>
73 <#assign campaignId = qstringmap["ecid"]?first >
74 <#assign campaignId = htmlUtil.escape(campaignId)>
75 <#assign campaignId = htmlUtil.escapeJS(campaignId)>
76
77 <#assign ecidExt = qstringmap["ecid"]?first>
78 <#assign ecidExt = htmlUtil.escape(ecidExt)>
79 <#assign ecidExt = htmlUtil.escapeJS(ecidExt)>
80 <#assign ecidExt = "&ecid=" + ecidExt>
81</#if>
82<#if bCode?starts_with("amp") && (url?contains("11t1m"))>
83 <#assign ameriprise = true>
84<#else>
85 <#assign ameriprise = false>
86</#if>
87
88<#if mappedLC?has_content && !ameriprise>
89 <#assign lc = mappedLC >
90</#if>
91
92
93
94<#if lc?has_content>
95
96 <#assign firstNameLength = fName?length >
97 <#assign lastNameLength = lName?length >
98 <#if firstNameLength + lastNameLength > 19 >
99 <#if lastNameLength > 18 >
100 <#assign bLName = lName?substring(0,18)>
101 <#else>
102 <#assign bLName = lName>
103 </#if>
104 <#assign maxFirstName = 19 - bLName?length >
105 <#if firstNameLength > maxFirstName >
106 <#assign bFName = fName?substring(0,maxFirstName)>
107 <#else>
108 <#assign bFName = fName>
109 </#if>
110 <#else>
111 <#assign bFName = fName >
112 <#assign bLName = lName >
113 </#if>
114
115
116 <#assign prefix = "00000" >
117 <#assign lcWithPrefix = prefix + lc >
118 <#assign withPrefixLength = lcWithPrefix?length >
119 <#assign startHere = withPrefixLength - 5>
120 <#assign lc = lcWithPrefix?substring(startHere)>
121
122 <#assign clientProfileService = (serviceLocator.findService("com.elan.crc.user.service.CrcClientProfileLocalService"))! />
123 <#assign clientProfileList = clientProfileService.findByLocationCode(lc)>
124
125 <#if clientProfileList?first?has_content>
126 <#assign clientProfile = clientProfileList?first>
127 <#assign partnerName = clientProfile.getMarketingNameLong()>
128 <#assign pbu = clientProfile.getPbu()>
129 <#assign subbu = clientProfile.getSUBBRANDBUNBR()>
130 <#assign optoutData = utilServ.makeCall('crc_DDCSAAOptOut',pbu+'&'+subbu)>
131 <#if (optoutData?size == 0)>
132 <#assign clientDataService = (serviceLocator.findService("com.elan.crc.user.service.CrcPbuLocalService"))! />
133 <#assign clientProfileDataList = clientDataService.getByPbuAndSubBu(pbu,subbu)>
134 <#assign partnerUrl = clientProfileDataList.getPartnerMainUrl()>
135 <#if partnerUrl?has_content && !partnerUrl?matches(r"(?i)^https?\:\/\/.*")>
136 <#assign partnerUrl = 'https://' + partnerUrl>
137 </#if>
138 <#assign logoFileName = clientProfile.getLogoBFormat1()?replace(".", "-")?replace("-([^-]*)$", ".$1", "r")?lower_case>
139 <#assign cdnLogoUrl = (propsUtil.get('rackspace.cdn.web.url'))!>
140
141 <#if pbu == "0864054">
142 <#assign override = "berkshire">
143 <#else>
144 <#assign override = " ">
145 </#if>
146
147 <#-- this one should be delete for prod -->
148
149 <#assign cdnCardArtUrl = (propsUtil.get('rackspace.cdn.cardart.url'))!>
150 <#assign pageClass = secondaryBackgroundImage.cardType.getData()>
151
152 <#if (subbu_special?has_content)>
153 <#assign fiCardsData = utilServ.makeCall('crcTier3GetPbuData','0&' + pbu + '&' + subbu_special)>
154 <#else>
155 <#assign fiCardsData = utilServ.makeCall('crcTier3GetPbuData','0&' + pbu + '&' + subbu)>
156 </#if>
157
158
159 <#assign temp = []>
160 <#assign offerTypeList = []>
161 <#assign index = 0>
162 <#list fiCardsData as fib>
163 <#if !(offerTypeList?seq_contains(fib.offerType))>
164 <#assign offerTypeList = offerTypeList + [fib.offerType]>
165 <#assign temp = temp + fiCardsData[index..index]>
166 </#if>
167 <#assign index = index + 1>
168 </#list>
169 <#assign fiCardsData = temp>
170 <#if (fiCardsData?size > 0)>
171 <#if (subbu_special?has_content)>
172 <#assign lc_used = fiCardsData?first.WebLocationCode>
173 <#else>
174 <#if ameriprise>
175 <#assign lc_used = mappedLC>
176 <#else>
177 <#assign lc_used = lc>
178 </#if>
179 </#if>
180 <#assign productURL = "">
181 <#list fiCardsData as fib>
182 <#if ameriprise>
183 <#if (fib.offerType=="101")>
184 <#assign productURL="premier-visa-signature">
185 <#assign productName="Premier Visa Signature">
186 <#assign productClass="ameriprise-premier-visa-signature">
187 <#elseif (fib.offerType=="103")>
188 <#assign productURL = "visa-signature">
189 <#assign productName = "Visa Signature">
190 <#assign productClass="ameriprise-visa-signature">
191 </#if>
192 <#else>
193 <#if (fib.offerType=="108" || fib.offerType=="109")>
194 <#assign productURL="consumer-platinum2103">
195 <#assign productName="Platinum">
196 <#elseif (fib.offerType=="104")>
197 <#assign productURL = "max-cash">
198 <#assign productName="Max Cash Preferred">
199 <#elseif (fib.offerType=="101" || fib.offerType=="103")>
200 <#assign productURL = "consumer-edr2112">
201 <#assign productName="Everyday Rewards+">
202 <#elseif fib.offerType == "115">
203 <#assign productURL = "secured">
204 <#assign productName="Secured">
205 <#elseif fib.offerType == "141">
206 <#assign productURL = "college-real-rewards">
207 <#assign productName="College Real Rewards">
208 <#elseif fib.offerType == "144">
209 <#assign productURL = "smart-business-rewards">
210 <#assign productName="Smart Business Rewards">
211 <#elseif fib.offerType == "147">
212 <#assign productURL = "max-cash-secured">
213 <#assign productName="Max Cash Secured">
214 <#elseif fib.offerType == "128">
215 <#assign productURL = "business-cash-preferred">
216 <#assign productName="Business Cash Preferred">
217 <#elseif fib.offerType == "143">
218 <#assign productURL = "business-real-rewards">
219 <#assign productName="Business Real Rewards">
220 <#elseif fib.offerType == "121">
221 <#assign productURL = "business-platinum2103">
222 <#assign productName="Business">
223 <#elseif fib.offerType == "138">
224 <#assign productURL = "travel-rewards-plus">
225 <#assign productName = "Travel Rewards+" >
226 <#elseif fib.offerType == "154">
227 <#assign productURL = "reserve-rewards-plus">
228 <#assign productName = "Reserve Rewards+" >
229 </#if>
230 </#if>
231
232 <#assign cardArtImage = cdnCardArtUrl + "/" + fib.filename + ".png">
233 <#assign cardArtImageAlt = cdnCardArtUrl + "/"+fib.filename+".jpg">
234 <#assign newSourceCode = fib.sourceCode>
235 <#assign newOfferId = fib.saaofferId>
236
237 <#assign empOfferId = "">
238 <#if fib?has_content>
239 <#assign empOfferId = fib.empofferId!"">
240 </#if>
241 <#assign marketingChannel = 'SAT2A'>
242 <#if isEmployee>
243 <#assign marketingChannel = 'empl'>
244 <#assign newOfferId = empOfferId>
245 </#if>
246
247 <#if url?matches(".*/${productURL}\\?.*")>
248 <#assign APR="">
249 <#assign AMF="">
250 <#assign BAL="">
251 <#assign sdata = utilServ.makeCall('crcDDCGetSchumerBox', newOfferId + '&' + newSourceCode)>
252 <#if (sdata?size > 0)>
253 <#list sdata as sItem>
254
255 <#if ((sItem.scrapedLabel?contains("Annual Percentage Rate (APR) for Purchases")) && (sItem.scrapedValue?has_content)) >
256 <#assign APR = sItem.scrapedValue>
257 <#elseif ((sItem.scrapedLabel?contains("Annual Membership Fee")) && (sItem.scrapedValue?has_content)) >
258 <#assign AMF = sItem.scrapedValue>
259 <#elseif ((sItem.scrapedLabel?contains("APR for Balance Transfers")) && (sItem.scrapedValue?has_content)) >
260 <#assign BAL = sItem.scrapedValue>
261 </#if>
262 <#if (APR?has_content && AMF?has_content && BAL?has_content)>
263 <#break>
264 </#if>
265 </#list>
266 <#else>
267 <script>
268 console.log('no scraped data');
269 </script>
270 </#if>
271 <#if ((fib.offerType == "108" || fib.offerType == "109" || fib.offerType == "121" ) && !ameriprise)>
272 <#if (sdata?size > 0)>
273 <#assign apr_string = "">
274 <#list sdata as d>
275 <#if (d.scrapedLabel?contains("Annual Percentage Rate (APR) for Purchases") && (d.scrapedValue?has_content))>
276 <#assign apr_string = d.scrapedValue?replace("(\n|\r\n|\r)+", " ","r")>
277 <#break>
278 </#if>
279 </#list>
280 <script>
281 $(document).ready(function () {
282 var aprText = "${apr_string}";
283 if (aprText) {
284 var matches= aprText.match(/\d+(\.\d+)?%?/g);
285 var billing_cycle = "";
286 var apr_min = "";
287 var apr_max = "";
288 var apr_max_formatted = "";
289 if (aprText.indexOf("Platinum:") != -1 || aprText.indexOf("Business:") != -1) {
290 billing_cycle = matches[1];
291 apr_min = matches[2];
292 apr_max = matches[3];
293 if (apr_max){
294 apr_max_formatted = '-' + apr_max;
295 }
296 }
297
298 if (billing_cycle) {
299 $(".scraped-billing-cycle").html(billing_cycle);
300 }
301 if (apr_min) {
302 $(".scraped-apr-min").html(apr_min);
303 }
304 $('.scraped-apr-max-formatted').html(apr_max_formatted);
305 if (apr_max) {
306 $('.scraped-apr-max').html(apr_max);
307 }
308
309 }
310 });
311 </script>
312 </#if>
313 </#if>
314 <#if ameriprise>
315 <#assign card_art_alt = partnerName + " " + productName + " " + " Card">
316 <#assign rollover_text = partnerName + " " + productName + " " + " Card">
317 <#else>
318 <#assign card_art_alt = partnerName + " " + productName + " " + " Card">
319 <#assign rollover_text = partnerName + " " + productName + " " + " Credit Card">
320 <#assign card_text = productName + " Card">
321 </#if>
322
323 <div class="hero-container ${pageClass} ${productClass!''}" title="${rollover_text!''}">
324 <div class="hero-main">
325
326 <div class="hero-main-container">
327 <div class="hero-main-offer">
328 <div class="offer-detail">
329 <div class="offer-detail-cardArt cardArtImg">
330 <img src="${cardArtImage!''}" alt="${card_art_alt!''}" title="${card_art_alt!''}" onerror="this.onerror=null;this.src='${cardArtImageAlt!''}'">
331 <p>${card_text!''}</p>
332 <#if fib.offerType=="108" || fib.offerType=="109">
333 <a href="javascript:void(0);" data-micromodal-trigger="modal-2">See how much you could save with a balance transfer</a>
334 </#if>
335 </div>
336 <div class="offer-detail-text text-color-default hide-desktop">
337 ${primaryHeadlineFeatureTop.getData()}
338 ${primaryHeadlineFeatureBottom.getData()}
339 </div>
340
341 <form class="form1 hide-desktop" action='${oadURL}?locationCode=${lc_used}&offerId=${newOfferId}&preparerType=customer&mktChl=${marketingChannel}' method="post" id="BAAForm">
342 <label for="appDataBAA" style="position:absolute; clip:rect(0 0 0 0);">Application Data</label>
343 <textarea rows="20" cols="100" name="applicationData" id="appDataBAA" style="display:none;"></textarea>
344 <button
345 type="submit"
346 data-button-name="cta-button-top"
347 class="applyNowLink jn-button apply-button button-bg-color-custom"
348 disabled
349 >
350 ${ctaText.getData()}<span class="screen-reader-only"> for ${partnerName!''} ${productName!''} Card </span>
351 </button>
352 </form>
353 </div>
354 <div class="offer-header">
355 <div class="offer-text-top">
356 <div class="offer-title">
357 ${primaryHeadlineText.getData()}
358 </div>
359 <h1 class="offer-subtitle">
360 <#if isEmployee && employeePrimaryHeadlineFeature?has_content>
361 ${employeePrimaryHeadlineFeature.getData()}
362 <#else>
363 ${primaryHeadlineFeature.getData()}
364 </#if>
365 </h1>
366 </div>
367 <div class="offer-text-bottom hide-mobile">
368 <div class="offer-detail-text text-color-default ">
369 ${primaryHeadlineFeatureTop.getData()}
370 ${primaryHeadlineFeatureBottom.getData()}
371 <#-- allow for all except these url -->
372 <#if (fib.offerType == "108" ||
373 fib.offerType == "109" ||
374 fib.offerType == "121" ||
375 fib.offerType == "144"
376 )>
377 <br>
378 <a class="whiteLink" href="${oadURL_TC}?step=display&offerId=${newOfferId}&locationCode=${lc_used}" class="text-color-default" target="_blank">
379 <span class="screen-reader-only">${partnerName!''} ${productName!''} Card </span>See terms & conditions</a>
380 </#if>
381 </div>
382 <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>
383
384 </div>
385 </div>
386
387 </div>
388 </div>
389 </div>
390 <div class="hero-primary-benefits">
391 <#if secondaryFeatureText.getData() != "">
392 <#assign featureCounter = 0>
393 <#list secondaryFeatureText.getSiblings() as item>
394 <div class="primary-benefit">
395 <div class="primary-benefit-wrapper text-color-white">
396 ${item.getData()}
397 <#if (fib.offerType=="108" || fib.offerType=="109") && (featureCounter == secondaryFeatureText.getSiblings()?size - 1)>
398 <a
399 href="${oadURL_TC}?step=display&offerId=${newOfferId}&locationCode=${lc_used}"
400 class="text-color-default"
401 target="_blank"
402 >
403 <span class="screen-reader-only">${partnerName!''} ${productName!''} Card </span>
404 Terms & Conditions
405 </a>
406 </#if>
407 </div>
408 </div>
409 <#assign featureCounter = featureCounter + 1>
410 </#list>
411 </#if>
412 </div>
413 </div>
414 <div class="standard-content-container" title="${rollover_text!''}">
415 <div class="product-details-container">
416 <div class="detail-background">
417 <h2>${secondaryHeadlineText.getData()}</h2>
418 <div class="secondary-benefits">
419 <div class="option">
420 ${additionalInfoGroupA.getData()}
421 <#if pbu != "0892445">
422 <div>
423 <#assign col1AmfOfferTypes = ["101", "141", "138", "154", "128"] >
424 <#assign col1AprOfferTypes = ["104", "121", "143", "144"] >
425 <#if col1AmfOfferTypes?seq_contains(fib.offerType)>
426 <#if (fib.offerType == "101")>
427 <h3>Annual Fee<sup>*</sup></h3><br/>
428 <#else>
429 <h3>Annual Fee</h3><br/>
430 </#if>
431 <p>${AMF!''}
432 <a href="${oadURL_TC}?step=display&offerId=${newOfferId}&locationCode=${lc_used}"
433 class="text-color-default" target="_blank">
434 <span class="screen-reader-only">${partnerName!''} ${productName!''} Card </span>Terms & Conditions
435 </a>
436 </p>
437 <#elseif col1AprOfferTypes?seq_contains(fib.offerType)>
438 <#if (fib.offerType == "104") >
439 <h3 >APR for Purchases:</h3>
440 <#elseif (fib.offerType == "144")>
441 <h3>APR for Purchases and Balance Transfers:</h3>
442 <#else>
443 <h3>Intro APR<sup>*</sup> for Purchases:</h3>
444 </#if>
445 <p>${APR!''}
446 <a href="${oadURL_TC}?step=display&offerId=${newOfferId}&locationCode=${lc_used}"
447 class="text-color-default" target="_blank">
448 <span class="screen-reader-only">${partnerName!''} ${productName!''} Card </span>Terms & Conditions
449 </a>
450 </p>
451
452 </#if>
453 </div>
454 </#if>
455 </div>
456 <div class="option">
457 ${additionalInfoGroupB.getData()}
458 <#if pbu != "0892445">
459 <div>
460 <#assign col2AmfOfferTypes = ["108", "109", "115", "144"] >
461 <#assign col2AprOfferTypes = ["138", "154", "128"] >
462 <#assign col2BalOfferTypes = ["101", "104", "141", "121", "143"] >
463 <#if col2AmfOfferTypes?seq_contains(fib.offerType)>
464 <h3>Annual Fee</h3>
465 <p>${AMF!''}
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 <#elseif col2AprOfferTypes?seq_contains(fib.offerType)>
472 <#if (fib.offerType == "128")>
473 <h3>Intro APR<sup>*</sup> for Purchases:</h3>
474 <#else>
475 <h3>APR for Purchases:</h3>
476 </#if>
477 <p>${APR!''}
478 <a href="${oadURL_TC}?step=display&offerId=${newOfferId}&locationCode=${lc_used}"
479 class="text-color-default" target="_blank">
480 <span class="screen-reader-only">${partnerName!''} ${productName!''} Card </span>Terms & Conditions
481 </a>
482 </p>
483 <#elseif col2BalOfferTypes?seq_contains(fib.offerType)>
484 <h3>Intro APR<sup>*</sup> for Balance Transfers:</h3>
485 <p>${BAL!''}
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
492 </#if>
493 </div>
494 </#if>
495 </div>
496 <#if additionalInfoGroupC?has_content || (isEmployee && employeeAdditionalInfoGroupC?has_content)>
497 <div class="option">
498 <#if isEmployee && employeeAdditionalInfoGroupC?has_content>
499 ${employeeAdditionalInfoGroupC.getData()}
500 <#else>
501 ${additionalInfoGroupC.getData()}
502 </#if>
503 <div>
504 <#assign col3AmfOfferTypes = ["104", "121", "143"] >
505 <#assign col3AprOfferTypes = ["101", "108", "109", "141", "147", "115"] >
506 <#assign col3BalOfferTypes = ["138", "154", "128"] >
507 <#if col3AmfOfferTypes?seq_contains(fib.offerType)>
508 <#if (fib.offerType == "104")>
509 <h3>Annual Fee<sup>*</sup></h3>
510 <#else>
511 <h3>Annual Fee</h3>
512 </#if>
513 <p>${AMF!''}
514 <a href="${oadURL_TC}?step=display&offerId=${newOfferId}&locationCode=${lc_used}"
515 class="text-color-default" target="_blank">
516 <span class="screen-reader-only">${partnerName!''} ${productName!''} Card </span>Terms & Conditions
517 </a>
518 </p>
519 <#elseif col3AprOfferTypes?seq_contains(fib.offerType)>
520 <#if (fib.offerType == "115" || fib.offerType == "147")>
521 <h3>APR for Purchases and Balance Transfers:</h3>
522 <#else>
523 <h3>Intro APR<sup>*</sup> for Purchases:</h3>
524 </#if>
525 <p>${APR!''}
526 <a href="${oadURL_TC}?step=display&offerId=${newOfferId}&locationCode=${lc_used}"
527 class="text-color-default" target="_blank">
528 <span class="screen-reader-only">${partnerName!''} ${productName!''} Card </span>Terms & Conditions
529 </a>
530 </p>
531 <#elseif col3BalOfferTypes?seq_contains(fib.offerType)>
532 <#if (fib.offerType == "128")>
533 <h3>Intro APR<sup>*</sup> for Balance Transfers:</h3>
534 <#else>
535 <h3>APR for Balance Transfers:</h3>
536 </#if>
537 <p>${BAL!''}
538 <a href="${oadURL_TC}?step=display&offerId=${newOfferId}&locationCode=${lc_used}"
539 class="text-color-default" target="_blank">
540 <span class="screen-reader-only">${partnerName!''} ${productName!''} Card </span>Terms & Conditions
541 </a>
542 </p>
543
544 </#if>
545 <#if (fib.offerType == "147")>
546 <h3>Annual Fee<sup>*</sup></h3>
547 <p>${AMF!''}
548 <a href="${oadURL_TC}?step=display&offerId=${newOfferId}&locationCode=${lc_used}"
549 class="text-color-default" target="_blank">
550 <span class="screen-reader-only">${partnerName!''} ${productName!''} Card </span>Terms & Conditions
551 </a>
552 </p>
553 </#if>
554 <#if (fib.offerType == "108" || fib.offerType == "109")>
555 <h3>Intro APR<sup>*</sup> for Balance Transfers:</h3>
556 <p>${BAL!''}
557 <a href="${oadURL_TC}?step=display&offerId=${newOfferId}&locationCode=${lc_used}"
558 class="text-color-default" target="_blank">
559 <span class="screen-reader-only">${partnerName!''} ${productName!''} Card </span>Terms & Conditions
560 </a>
561 </p>
562 </#if>
563 </div>
564 </div>
565 </#if>
566 </div>
567 </div>
568 </div>
569 </div>
570 <div class="banner-wrapper" title="${rollover_text!''}">
571 <div class="banner ${override}">
572 <div class="banner-cardArt cardArtImg">
573 <img src="${cardArtImage!''}" alt="${card_art_alt!''}" title="${card_art_alt!''}" onerror="this.onerror=null;this.src='${cardArtImageAlt!''}'">
574 </div>
575 <div class="banner-cta">
576 <div class="banner-cta-text text-color-white text-bold">
577 <#if isEmployee && employeeOptionalCtaFeatureText?has_content>
578 ${employeeOptionalCtaFeatureText.getData()}
579 <#else>
580 ${optionalCtaFeatureText.getData()}
581 </#if>
582 </div>
583 <a
584 tabindex="0"
585 id="oadSecButton"
586 data-button-name="cta-button-bottom"
587 class="applyNowLink jn-button banner-cta-apply-button button-bg-color-custom text-color-white"
588 >
589 ${optionalCtaText.getData()}<span class="screen-reader-only"> for ${partnerName!''} ${productName!''} Card</span></a>
590 </div>
591 </div>
592 </div>
593 <#break />
594 </#if>
595 </#list>
596
597 <script>
598 var reportingData = window.reportingData || {};
599 document.addEventListener('DOMContentLoaded', function() {
600 var page = location.pathname.split('/')[location.pathname.split('/').length-1];
601 var hostName = location.hostname;
602
603 function getDomainFromHostname(hostname) {
604 var parts = hostname.split('.');
605 return parts.length === 3 ? parts[1] : parts[0];
606 }
607 var domain = getDomainFromHostname(hostName);
608 var partnerName = "${partnerName!''}";
609
610 var ameriprise = '${ameriprise?string("yes", "no")}';
611 var locationCode = "${rlc!lc}";
612 var eidAmp = "";
613 if (ameriprise == "yes") {
614 var bankercode_amp = '${bCode}';
615 eidAmp = bankercode_amp.substring(3);
616 locationCode ="";
617 }
618
619 var heroCardImgs = document.querySelectorAll('.cardArtImg img');
620 for (var index = 0; index < heroCardImgs.length; index++) {
621 var heroCardImg = heroCardImgs[index];
622 var heroCardSrc = heroCardImg.getAttribute("src");
623 if(heroCardSrc != "") {
624 resizeImg(heroCardImg);
625 }
626 }
627 function resizeImg(img) {
628 img.addEventListener("load", function() {
629 var cardImgWidth = img.width;
630 var cardImgHeight = img.height;
631 if(cardImgWidth > cardImgHeight) {
632 img.style.width = "285px";
633 } else {
634 img.style.width = "150px";
635 }
636 });
637 }
638
639
640 $('.jn-button').removeAttr('disabled');
641 $('.jn-button').removeClass('jn-disabled');
642 jQuery('#oadSecButton, #oadSecButton-top').on('click', function(e) {
643 jQuery('#BAAForm').submit();
644 });
645
646 jQuery('#BAAForm').on('submit', function(e){
647 e.preventDefault();
648 var xmlData;
649 if(ameriprise == "yes") {
650 xmlData = '<?xml version="1.0"?>'+
651 "<prefillData>"+
652 "<versionNumber>1.0</versionNumber>"+
653 "<applicationData>"+
654 "<referral>" +
655 "<employeeId>" + eidAmp + "</employeeId>" +
656 "<storeNumber>"+"${bName!'0'}"+"</storeNumber>"+
657 "<divisionNumber></divisionNumber>"+
658 "</referral>" +
659 "<bankerInformation>"+
660 "<locationCode>" + locationCode + "</locationCode>"+
661 "<originatingBranchNumber>"+"${bName!'0'}"+"</originatingBranchNumber>"+
662 "<employeeID>${boeid!0}</employeeID>"+
663 "<name>" +
664 "<first>${bFName!'0'}</first>" +
665 "<last>${bLName!'0'}</last>" +
666 "</name>"+
667 "<phone>"+
668 "<areaCode>"+areaCode+"</areaCode>"+
669 "<exchange>"+exchangeCode+"</exchange>"+
670 "<number>"+num+"</number>"+
671 "</phone>"+
672 "</bankerInformation>"+
673 "</applicationData>"+
674 "</prefillData>"
675 } else if ('${isEmployee?string("yes", "no")}' == "yes") {
676 xmlData = '<?xml version="1.0"?>'+
677 "<prefillData>"+
678 "<versionNumber>1.0</versionNumber>"+
679 "<applicationData>"+
680 "<bankerInformation>"+
681 "<employeeFullName>Employee Product</employeeFullName>"+
682 "<employeeId>EMPPROD</employeeId>"+
683 "<employeePhoneNumber></employeePhoneNumber>"+
684 "<locationCode>" + locationCode + "</locationCode>"+
685 "<originatingBranchNumber>"+"${bName!'0'}"+"</originatingBranchNumber>"+
686 "<originatingBranchId></originatingBranchId>"+
687 "<name>" +
688 "<first>${bFName!'0'}</first>" +
689 "<last>${bLName!'0'}</last>" +
690 "</name>"+
691 "<phone>"+
692 "<areaCode>" + areaCode + "</areaCode>"+
693 "<exchange>" + exchangeCode + "</exchange>"+
694 "<number>" + num + "</number>"+
695 "</phone>"+
696 "</bankerInformation>"+
697 "<referral>" +
698 "<divisionNumber></divisionNumber>" +
699 "<partnerLocationID>" + locationCode + "</partnerLocationID>" +
700 "<referralId>EMPPROD</referralId>" +
701 "</referral>" +
702 "</applicationData>"+
703 "</prefillData>";
704 } else {
705 xmlData = '<?xml version="1.0"?>'+
706 "<prefillData>"+
707 "<versionNumber>1.0</versionNumber>"+
708 "<applicationData>"+
709 "<bankerInformation>"+
710 "<locationCode>" + locationCode + "</locationCode>"+
711 "<originatingBranchNumber>"+"${bName!'0'}"+"</originatingBranchNumber>"+
712 "<employeeID>${boeid!0}</employeeID>"+
713 "<name>" +
714 "<first>${bFName!'0'}</first>" +
715 "<last>${bLName!'0'}</last>" +
716 "</name>"+
717 "<phone>"+
718 "<areaCode>"+areaCode+"</areaCode>"+
719 "<exchange>"+exchangeCode+"</exchange>"+
720 "<number>"+num+"</number>"+
721 "</phone>"+
722 "</bankerInformation>"+
723 "</applicationData>"+
724 "</prefillData>"
725 }
726 jQuery('#appDataBAA').val(xmlData);
727 var buttonName = jQuery('.jn-button').data('button-name');
728 /* SiteCatalyst onClick tracking */
729 reportingData.apply_button = buttonName;
730 AUI().ready(function() {
731 if (window.publisherFW) {
732 window.publisherFW.publishEvent("onClick", reportingData);
733 }
734 });
735
736 var paramString = '${bCode}' + "&" + xmlData + "&" + '${htmlUtil.escapeURL(htmlUtil.escapeJS(url))}';
737 /* CRC service call */
738 Liferay.Service(
739 '/crcutilities.crcremoteservice/make-call',
740 {
741 storedProcedure: 'crcDDCTextApplyLog',
742 parameters: paramString
743 },
744 function(obj)
745 {
746 //console.log("T2A logging call");
747 }
748 );
749
750 this.submit();
751 });
752 var regex = /\d+/g;
753 var bdNumber = "${bPhone!''}";
754 var phoneNum = bdNumber.match(regex);
755 var areaCode = "";
756 var exchangeCode = "";
757 var num = "";
758 if(phoneNum != null) {
759 phoneNum = phoneNum.join("");
760 areaCode = phoneNum.substring(0,3);
761 exchangeCode = phoneNum.substring(3,6);
762 num = phoneNum.substring(6,10);
763 }
764 var product = "";
765 switch(page) {
766 case "consumer-platinum2103":
767 product="Platinum Card"
768 break;
769 case "consumer-edr2112":
770 product="Everyday Rewards+ Card"
771 break;
772 case "secured":
773 product="Secured Card"
774 break;
775 case "business-cash-preferred":
776 product="Business Cash Preferred"
777 break;
778 case "business-real-rewards":
779 product="Business Real Rewards Card"
780 break;
781 case "business-rewards-plus":
782 product="Business Rewards PLUS Card"
783 break;
784 case "premier-visa-signature":
785 product="Premier Visa Signature Card"
786 break;
787 case "business-platinum2103":
788 product="Business Card"
789 break;
790 case "visa-signature":
791 product="Visa Signature Card"
792 break;
793 case "travel-rewards-plus":
794 product="Travel Rewards+ Card"
795 break;
796 case "reserve-rewards-plus":
797 product="Reserve Rewards+ Card"
798 break;
799 case "max-cash":
800 product="Max Cash Preferred Card"
801 break;
802 case "max-cash-secured":
803 product="Max Cash Secured Card"
804 break;
805 case "college-real-rewards":
806 product="College Real Rewards Card"
807 break;
808 case "smart-business-rewards":
809 product="Smart Business Rewards Card"
810 break;
811 default:
812 product = "All Cards";
813 }
814
815 /* update SiteCatalyst data object */
816 reportingData.current_page = "microsite:${partnerName}:" + domain + ':' + page.replace('-',' ');
817 reportingData.location_code = '${rlc!0}';
818 reportingData.product = product;
819 reportingData.site_section = 'credit cards';
820 reportingData.platform = 'microsite';
821 reportingData.partner_name = "${partnerName}";
822 reportingData.Banker_id = '${boeid}';
823 reportingData.Banker_code = '${bCode}';
824 reportingData.visitor_type = 'prospect';
825 reportingData.text_to_apply_source = '${text_to_apply_source}';
826 reportingData.page_type = 'product';
827 reportingData.campaign_id = '${campaignId}';
828
829 jQuery('.applyNowLink').on('click', function(e){
830 const bankerId = '${boeid}';
831 const employeeId = "";
832 let visitorId = bankerId;
833
834 if('${isEmployee?string("yes", "no")}' == "yes") {
835 visitorId = employeeId;
836 }
837 // get action url of form submit button
838 const href = document.getElementById('BAAForm').action;
839
840 const urlParams = new URLSearchParams(href);
841 let offerId = "";
842
843 if(urlParams.has('offerid')) {
844 offerId = urlParams.get('offerid');
845 }
846
847 if(urlParams.has('offerId')) {
848 offerId = urlParams.get('offerId');
849 }
850
851 window.dataLayer.push({
852 'event' : 'apply_payload',
853 'location_code': locationCode,
854 'banker_code': '${bCode}',
855 'offer_id': offerId,
856 'visitor_id': visitorId,
857 });
858 return false;
859 });
860 });
861 </script>
862
863 <#else>
864 <script>
865 console.log("FI Cards Data empty");
866 location.href = '${url404}';
867 </script>
868 </#if>
869 <#else>
870 <script>
871 console.log("Fi opt-out");
872 location.href = '${url404}';
873 </script>
874 </#if>
875 <#else>
876 <script>
877 console.log("client profile empty");
878 location.href = '${url404}';
879 </script>
880 </#if>
881
882</#if>
883<#assign clientdata = utilServ.makeCall('crcDDCTier1Customizations','0&'+pbu+'&'+subbu+'&11')>
884<#if (clientdata?size > 0)>
885 <#assign backgroundColor = clientdata[0].backgroundHexColor>
886</#if>
887<script>
888 // Makes the Header subtitle work if there is two lines of text
889 var consumerHeader = document.getElementsByClassName("consumer-card")[0];
890 if(consumerHeader){
891 var consumerHeroContainer = consumerHeader.getElementsByClassName("hero-main-container")[0];
892 const offerTextTop = consumerHeader.querySelector(".offer-text-top");
893 const gradientHeight = Math.max(offerTextTop.offsetHeight + 50, 200) + "px";
894 var consumerOfferHeader = consumerHeader.getElementsByClassName("offer-subtitle")[0];
895 const consumerSubtitle = consumerOfferHeader.getElementsByTagName("p")[0];
896 if (consumerSubtitle.innerText.length >= 76){
897 //two lines
898 consumerHeroContainer.style.background = "linear-gradient(180deg, ${backgroundColor!'#173989'} " + gradientHeight + ", #f8f8f8 " + gradientHeight + ")";
899 }
900 }
901
902 var buisnessHeader = document.getElementsByClassName("business-card")[0];
903 if(buisnessHeader) {
904 var buisnessHeroContainer = buisnessHeader.getElementsByClassName("hero-main-container")[0];
905 var buisnessOfferHeader = buisnessHeader.getElementsByClassName("offer-subtitle")[0];
906
907 if(buisnessOfferHeader.innerText.length >= 31 && buisnessOfferHeader.innerText.length < 48){
908 //not two lines but the header on tablet gose outside of allocated space.
909 buisnessHeroContainer.style.background = "linear-gradient(180deg, rgba(255,255,255,1) 40%, ${backgroundColor!'#173989'} 40%)";
910 } else if (buisnessOfferHeader.innerText.length >= 48){
911 //two lines
912 buisnessHeroContainer.style.background = "linear-gradient(180deg, rgba(255,255,255,1) 45%, ${backgroundColor!'#173989'} 45%)";
913 }
914 }
915</script>
An error occurred while processing the template.
The following has evaluated to null or missing: ==> lc [in template "10154#10192#153051515" at line 25, column 34] ---- Tip: If the failing expression is known to legally refer to something that's sometimes null or missing, either specify a default value like myOptionalVar!myDefault, or use <#if myOptionalVar??>when-present<#else>when-missing</#if>. (These only cover the last step of the expression; to cover the whole expression, use parenthesis: (myOptionalVar.foo)!myDefault, (myOptionalVar.foo)?? ---- ---- FTL stack trace ("~" means nesting-related): - Failed at: #assign lcWithPrefix = prefix + lc [in template "10154#10192#153051515" at line 25, column 1] ----
1<#assign url = themeDisplay.getURLCurrent() >
2<#assign qstringmap = httpUtil.getParameterMap(httpUtil.getQueryString(url))>
3<#assign utilServ = (serviceLocator.findService("com.elan.crc.utilites.service.CRCRemoteServiceService"))! />
4<#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 -->