Une erreur s'est produite lors du traitement du gabarit.
The following has evaluated to null or missing: ==> bankercode [in template "10153#10191#6524591" at line 42, 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 "10153#10191#6524591" at line 42, 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="&ecid="+qstringmap["ecid"]?first>
9<#else>
10 <#assign ecidExt="">
11</#if>
12
13<#if qstringmap["bankercode"]?has_content>
14 <#assign bankercode= qstringmap["bankercode"]?first>
15
16 <#assign fiData= utilServ.makeCall('crcDDCBankerAssistedApp','0&'+bankercode)>
17 <#if fiData?first?has_content>
18 <#assign fi = fiData?first>
19 <#if ((fi.projectId == "12") || (fi.projectId == "13") || (fi.projectId == "14"))>
20 <#assign subbu_special = fi.offerId>
21 </#if>
22 </#if>
23
24 <#assign bData = utilServ.makeCall('crcDDCBankerAssistedAppDetail','0&'+bankercode)>
25 <#list bData as b>
26 <#assign rLC = b.reallocationcode >
27 <#assign lc = b.locationcode >
28 <#assign mappedLC = b.mappedLocationCode >
29 </#list>
30<#else>
31 <script>
32 console.log("MainProductBcode missing");
33 //location.href = '${url404}';
34 </script>
35</#if>
36
37<#if url?contains('11t1')>
38 <#assign tier = '11t1'>
39<#elseif url?contains('11t2')>
40 <#assign tier = '11t2'>
41</#if>
42<#if bankercode?starts_with("amp") && (url?contains("11t1m"))>
43 <#assign ameriprise = true>
44<#else>
45 <#assign ameriprise = false>
46</#if>
47<#if ameriprise>
48 <#assign tier = '11t1m'>
49</#if>
50<#assign environment = url?replace('/${tier}.*','','r')>
51
52
53<#if mappedLC?has_content && !ameriprise>
54 <#assign lc = mappedLC >
55</#if>
56
57<#if lc?has_content>
58 <#assign prefix = "00000" >
59 <#assign lcWithPrefix = prefix + lc >
60 <#assign withPrefixLength = lcWithPrefix?length >
61 <#assign startHere = withPrefixLength - 5>
62 <#assign lc = lcWithPrefix?substring(startHere)>
63 <#assign clientProfileService = (serviceLocator.findService("com.elan.crc.user.service.CrcClientProfileLocalService"))! />
64 <#assign clientProfileList = clientProfileService.findByLocationCode(lc)>
65
66 <#assign clientProfile = clientProfileList?first>
67 <#assign partnerName = clientProfile.getMarketingNameLong()>
68 <#assign logoFileName = clientProfile.getLogoBFormat1()?replace(".", "-")?replace("-([^-]*)$", ".$1", "r")?lower_case>
69 <#assign cdnLogoUrl = propsUtil.get('rackspace.cdn.web.url')>
70 <#assign pbu = clientProfile.getPbu()>
71 <#assign subbu = clientProfile.getSUBBRANDBUNBR()>
72 <script>
73 console.log('pbu', '${pbu!''}');
74 console.log('subbu', '${subbu!''}');
75 </script>
76 <#assign optoutData = utilServ.makeCall('crc_DDCSAAOptOut',pbu+'&'+subbu)>
77 <#if (optoutData?size == 0)>
78 <#if (subbu_special?has_content)>
79 <#assign fiCardsData = utilServ.makeCall('crcTier3GetPbuData','0&' + pbu + '&' + subbu_special)>
80 <script>
81 console.log('new subbu', '${subbu_special!''}');
82 </script>
83 <#else>
84 <#assign fiCardsData = utilServ.makeCall('crcTier3GetPbuData','0&' + pbu + '&' + subbu)>
85 </#if>
86
87 <#if (fiCardsData?size > 0)>
88 <#assign temp = []>
89 <#assign offerTypeList = []>
90 <#assign index = 0>
91 <#list fiCardsData as fib>
92 <#if (fib.offerType?has_content && !(offerTypeList?seq_contains(fib.offerType)))>
93 <#assign offerTypeList = offerTypeList + [fib.offerType]>
94 <#assign temp = temp + fiCardsData[index..index]>
95 </#if>
96 <#assign index = index + 1>
97 </#list>
98 <#assign fiCardsData = temp>
99 <#if !(fiCardsData?size > 0)>
100 <script>
101 console.log("empty card/offerType List");
102 //location.href = '${url404}';
103 </script>
104 </#if>
105 <#if ameriprise>
106 <#assign lc_used = mappedLC>
107 <#else>
108 <#assign lc_used = lc>
109 </#if>
110 <div class="content-container content-container-main" title="${partnerName!''}">
111 <header class="jn-header">
112 <div>
113 <a href="${environment}/${tier}/index?bankercode=${bankercode}&ecdma-lc=${lc_used}${ecidExt}"><< Back to Overview</a>
114 </div>
115 <div>
116 <#if url?contains("11t2")>
117 <img src="${cdnLogoUrl!''}/${logoFileName!''}" alt="${partnerName!''}">
118 </#if>
119 <div class="styled-select slate">
120 <select>
121 <#list fiCardsData as fib>
122 <#if ameriprise>
123 <#if (fib.offerType=="101")>
124 <#assign productURL="premier-visa-signature">
125 <#assign productName="Ameriprise Premier Visa Signature">
126 <#elseif (fib.offerType=="103")>
127 <#assign productURL = "visa-signature">
128 <#assign productName = "Ameriprise Visa Signature">
129 </#if>
130 <#else>
131 <#if (fib.offerType=="108" || fib.offerType=="109")>
132 <#assign productURL="consumer-platinum2103">
133 <#assign productName="Platinum Card">
134 <#elseif (fib.offerType=="104")>
135 <#assign productURL = "max-cash">
136 <#assign productName = "Max Cash Preferred Card">
137 <#elseif (fib.offerType=="101" || fib.offerType=="103")>
138 <#assign productURL = "real-rewards">
139 <#assign productName = "Real Rewards Card">
140 <#elseif fib.offerType == "115">
141 <#assign productURL = "secured">
142 <#assign productName = "Secured Card" >
143 <#elseif fib.offerType == "144">
144 <#assign productURL = "smart-business-rewards">
145 <#assign productName = "Smart Business Rewards Card" >
146 <#elseif fib.offerType == "128">
147 <#assign productURL = "business-cashback">
148 <#assign productName = "Business Cash Card" >
149 <#elseif fib.offerType == "143">
150 <#assign productURL = "business-real-rewards">
151 <#assign productName = "Business Real Rewards Card" >
152 <#elseif fib.offerType == "121">
153 <#assign productURL = "business-platinum2103">
154 <#assign productName = "Business Card" >
155 </#if>
156 </#if>
157 <#if url?matches(".*/${productURL}.*")>
158 <option value="${environment}/${tier}/${productURL}?bankercode=${bankercode}&ecdma-lc=${lc_used}${ecidExt}" selected="selected">${productName}</option>
159 <#else>
160 <option value="${environment}/${tier}/${productURL}?bankercode=${bankercode}&ecdma-lc=${lc_used}${ecidExt}">${productName}</option>
161 </#if>
162
163 </#list>
164 </select>
165 </div>
166 </div>
167 </header>
168 </div>
169 <script>
170 var page = location.pathname.split('/')[location.pathname.split('/').length-1];
171 var partnerName = "${partnerName!0}";
172 var metaDesc = "";
173 switch (page) {
174 case "consumer-platinum2103":
175 document.title = "The purchasing power of Zero | "+partnerName+" Platinum Card";
176 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.";
177 break;
178 case "max-cash":
179 document.title = "Earn a $150 Bonus and 5% cash back | "+partnerName+" Max Cash Preferred Card";
180 metaDesc = "Apply Today for a "+partnerName+" Credit Card. Earn a $150 Bonus and 5% cash back on the two categories you select";
181 break;
182 case "real-rewards":
183 document.title = "Sign up and earn bonus points | "+partnerName+" Real Rewards Card";
184 metaDesc = "Apply Today for a "+partnerName+" Credit Card. Take home 2,500 bonus points after your first purchase.";
185 break;
186 case "secured":
187 document.title = "Strengthen your finances | "+partnerName+" Secured Card";
188 metaDesc = "Apply Today for a "+partnerName+" Credit Card. Use this card as a solid foundation to build your credit.";
189 break;
190 case "smart-business-rewards":
191 document.title = "2X rewards in your top 2 spend categories | "+partnerName+" Business Smart Business Rewards Card";
192 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.";
193 break;
194 case "business-cashback":
195 document.title = "Flexible rewards for your business | "+partnerName+" Business Cash Card";
196 metaDesc = "Apply Today for a "+partnerName+" Credit Card. Earn Cash back on common business expenses.";
197 break;
198 case "business-real-rewards":
199 document.title = "Earn up to 3X points with no caps | "+partnerName+" Business Real Rewards Card";
200 metaDesc = "Apply Today for a "+partnerName+" Credit Card. Get more rewards in the categories you spend the most on." ;
201 break;
202 case "business-platinum2103":
203 document.title = "Pay down your other credit card balances faster | "+partnerName+" Business Card";
204 metaDesc = "Apply Today for a "+partnerName+" Business Card. 0% Intro APR on Purchases and Balance Transfers for 15 Billing Cycles";
205 break;
206 case "premier-visa-signature":
207 document.title = "Exclusively for Ameriprise clients | Ameriprise® Premier Visa Signature® Card";
208 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.";
209 break;
210 case "visa-signature":
211 document.title = "Exclusively for Ameriprise clients | Ameriprise® Visa Signature® Card";
212 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.";
213 break;
214 }
215 if (metaDesc.length > 0) {
216 var m = document.createElement('meta');
217 m.name = 'description';
218 m.content = metaDesc;
219 document.head.appendChild(m);
220 }
221
222 AUI().ready(function () {
223 jQuery('.styled-select select').change(function () {
224 location.href = this.value;
225 });
226 });
227 </script>
228
229 <#else>
230 <script>
231 console.log("FI Cards Data empty");
232 //location.href = '${url404}';
233 </script>
234 </#if>
235 <#else>
236 <script>
237 console.log("FI opt out");
238 //location.href = '${url404}';
239 </script>
240 </#if>
241<#else>
242 <script>
243 console.log("location code empty");
244 //location.href = '${url404}';
245 </script>
246</#if>
Une erreur s'est produite lors du traitement du gabarit.
The following has evaluated to null or missing: ==> bCode [in template "10153#10191#6716946" at line 72, 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 "10153#10191#6716946" at line 72, 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('/11t1.*','','r')>
7<#assign oadURL_TC = 'https://online1.elancard.com/oad/terms.controller' >
8
9<#-- check bankercode validity -->
10
11<#if qstringmap["bankercode"]?has_content>
12 <#assign bCode= qstringmap["bankercode"]?first>
13
14 <#assign fiData= utilServ.makeCall('crcDDCBankerAssistedApp','0&'+bCode)>
15 <#if fiData?first?has_content>
16 <#assign fi = fiData?first>
17 <#if (fi.projectId == "12" || fi.projectId == "13" || fi.projectId == "14")>
18 <#assign subbu_special = fi.offerId>
19 </#if>
20 </#if>
21 <#assign bData = utilServ.makeCall('crcDDCBankerAssistedAppDetail','0&'+bCode)>
22 <#list bData as b>
23 <#assign lc = b.locationcode >
24 <#assign bName = b.branch >
25 <#assign bPhone = b.businessphone >
26 <#assign boeid = b.oeid >
27 <#assign fName = b.firstname?trim>
28 <#assign lName = b.lastname?trim>
29 <#assign rlc = b.reallocationcode >
30 <#assign mappedLC = b.mappedLocationCode >
31 </#list>
32 <script>
33 console.groupCollapsed("fi data from service call 'crcDDCBankerAssistedAppDetail'");
34 console.log('%clc: ', 'font-weight: bold; color: red;', '${lc}');
35 console.log('bName: ','${bName}')
36 console.log('bPhone: ','${bPhone}')
37 console.log('boeid','${boeid}')
38 console.log('fName: ','${fName}')
39 console.log('lName: ','${lName}')
40 console.log('rlc: ','${rlc}')
41 console.log('mappedLC: ','${mappedLC}')
42 console.groupEnd();
43 </script>
44 <#if qstringmap["ecdma-lc"]?has_content>
45 <#assign lc_url= qstringmap["ecdma-lc"]?first>
46 </#if>
47 <script>
48 console.log('%clc from URL: ', 'font-weight: bold; color: green;', '${lc_url}');
49 </script>
50
51<#else>
52 <script>
53 console.log("MainProductBcode missing");
54 //location.href = '${url404}';
55 </script>
56</#if>
57
58<#assign text_to_apply_source = "vanity url" >
59<#if qstringmap["sms"]?has_content>
60 <#assign sms = 1 >
61 <#assign text_to_apply_source = "sms" >
62</#if>
63<#if qstringmap["qrCode"]?has_content>
64 <#assign text_to_apply_source = "qr code" >
65</#if>
66<#assign campaignId = "" >
67<#assign ecidExt="">
68<#if qstringmap["ecid"]?has_content>
69 <#assign campaignId = qstringmap["ecid"]?first >
70 <#assign ecidExt="&ecid="+qstringmap["ecid"]?first>
71</#if>
72<#if bCode?starts_with("amp") && (url?contains("11t1m"))>
73 <#assign ameriprise = true>
74<#else>
75 <#assign ameriprise = false>
76</#if>
77<#if mappedLC?has_content && !ameriprise>
78<#assign lc = mappedLC >
79</#if>
80
81<#if lc?has_content>
82
83 <#assign firstNameLength = fName?length >
84 <#assign lastNameLength = lName?length >
85 <#if firstNameLength + lastNameLength > 19 >
86 <#if lastNameLength > 18 >
87 <#assign bLName = lName?substring(0,18)>
88 <#else>
89 <#assign bLName = lName>
90 </#if>
91 <#assign maxFirstName = 19 - bLName?length >
92 <#if firstNameLength > maxFirstName >
93 <#assign bFName = fName?substring(0,maxFirstName)>
94 <#else>
95 <#assign bFName = fName>
96 </#if>
97 <#else>
98 <#assign bFName = fName >
99 <#assign bLName = lName >
100 </#if>
101
102
103 <#assign prefix = "00000" >
104 <#assign lcWithPrefix = prefix + lc >
105 <#assign withPrefixLength = lcWithPrefix?length >
106 <#assign startHere = withPrefixLength - 5>
107 <#assign lc = lcWithPrefix?substring(startHere)>
108
109 <#assign clientProfileService = (serviceLocator.findService("com.elan.crc.user.service.CrcClientProfileLocalService"))! />
110 <#assign clientProfileList = clientProfileService.findByLocationCode(lc)>
111
112 <#if clientProfileList?first?has_content>
113 <#assign clientProfile = clientProfileList?first>
114 <#assign partnerName = clientProfile.getMarketingNameLong()>
115 <#assign pbu = clientProfile.getPbu()>
116 <#assign subbu = clientProfile.getSUBBRANDBUNBR()>
117
118 <#assign optoutData = utilServ.makeCall('crc_DDCSAAOptOut',pbu+'&'+subbu)>
119 <#if (optoutData?size == 0)>
120 <#assign clientDataService = (serviceLocator.findService("com.elan.crc.user.service.CrcPbuLocalService"))! />
121 <#assign clientProfileDataList = clientDataService.getByPbuAndSubBu(pbu,subbu)>
122 <#assign partnerUrl = clientProfileDataList.getPartnerMainUrl()>
123 <#if partnerUrl?has_content && !partnerUrl?matches(r"(?i)^https?\:\/\/.*")>
124 <#assign partnerUrl = 'https://' + partnerUrl>
125 </#if>
126 <#assign clientdata = utilServ.makeCall('crcDDCTier1Customizations','0&'+pbu+'&'+subbu+'&11')>
127 <#if (clientdata?size > 0)>
128 <#assign logoFileName = clientProfile.getLogoBFormat1()?replace(".", "-")?replace("-([^-]*)$", ".$1", "r")?lower_case>
129 <#assign cdnLogoUrl = propsUtil.get('rackspace.cdn.web.url')>
130 <#list clientdata as data>
131 <#assign billingCycle=data.BillingCycles>
132 </#list>
133 <#if pbu == "0864054">
134 <#assign override = "berkshire">
135 <#else>
136 <#assign override = " ">
137 </#if>
138
139 <#-- this one should be delete for prod -->
140
141 <#assign cdnLogoUrl = "https://4f61efb10f32ceb57895-3733e103896f37259213d6ad72acbe68.ssl.cf2.rackcdn.com">
142 <#assign logoFileName = pbu + "-" + subbu + ".png">
143
144 <#assign cdnCardArtUrl = propsUtil.get('rackspace.cdn.cardart.url')>
145 <#assign pageClass = secondaryBackgroundImage.cardType.getData()>
146
147 <#if (subbu_special?has_content)>
148 <#assign fiCardsData = utilServ.makeCall('crcTier3GetPbuData','0&' + pbu + '&' + subbu_special)>
149 <#else>
150 <#assign fiCardsData = utilServ.makeCall('crcTier3GetPbuData','0&' + pbu + '&' + subbu)>
151 </#if>
152
153
154 <#assign temp = []>
155 <#assign offerTypeList = []>
156 <#assign index = 0>
157 <#list fiCardsData as fib>
158 <#if !(offerTypeList?seq_contains(fib.offerType))>
159 <#assign offerTypeList = offerTypeList + [fib.offerType]>
160 <#assign temp = temp + fiCardsData[index..index]>
161 </#if>
162 <#assign index = index + 1>
163 </#list>
164 <#assign fiCardsData = temp>
165 <#if (fiCardsData?size > 0)>
166 <#if (subbu_special?has_content)>
167 <#assign lc_used = fiCardsData?first.WebLocationCode>
168 <#else>
169 <#if ameriprise>
170 <#assign lc_used = lc_url>
171 <#else>
172 <#assign lc_used = mappedLC>
173 </#if>
174 </#if>
175
176 <#list fiCardsData as fib>
177 <#if ameriprise>
178 <#if (fib.offerType=="101")>
179 <#assign productURL="premier-visa-signature">
180 <#assign productName="Premier Visa Signature">
181 <#assign productClass="ameriprise-premier-visa-signature">
182 <#elseif (fib.offerType=="103")>
183 <#assign productURL = "visa-signature">
184 <#assign productName = "Visa Signature">
185 <#assign productClass="ameriprise-visa-signature">
186 </#if>
187 <#else>
188 <#if (fib.offerType=="108") || (fib.offerType=="109")>
189 <#assign productURL="consumer-platinum">
190 <#assign productName="Platinum">
191 <#elseif (fib.offerType=="104")>
192 <#assign productURL = "max-cash">
193 <#assign productName="Max Cash Preferred">
194 <#elseif (fib.offerType=="101") || (fib.offerType=="103")>
195 <#assign productURL = "real-rewards">
196 <#assign productName="Real Rewards">
197 <#elseif fib.offerType == "115">
198 <#assign productURL = "secured">
199 <#assign productName="Secured">
200 <#elseif fib.offerType == "144">
201 <#assign productURL = "smart-business-rewards">
202 <#assign productName="Smart Business Rewards">
203 <#elseif fib.offerType == "128">
204 <#assign productURL = "business-cashback">
205 <#assign productName="Business Cash">
206 <#elseif fib.offerType == "143">
207 <#assign productURL = "business-real-rewards">
208 <#assign productName="Business Real Rewards">
209 <#elseif fib.offerType == "121">
210 <#assign productURL = "business-platinum2103">
211 <#assign productName="Business">
212 </#if>
213 </#if>
214 <#assign cardArtImage = cdnCardArtUrl + "/" + fib.filename + ".png">
215 <#assign cardArtImageAlt = cdnCardArtUrl + "/"+fib.filename+".jpg">
216 <#assign newSourceCode = fib.sourceCode>
217 <#assign newOfferId = fib.offerId>
218 <#if url?matches(".*/${productURL}.*")>
219 <#assign sdata = utilServ.makeCall('crcDDCGetSchumerBox', newOfferId + '&' + newSourceCode)>
220 <#if (sdata?size > 0)>
221 <#if (productURL=="platinum" && !ameriprise)>
222 <#assign apr = "">
223 <#list sdata as d>
224 <#if (d.scrapedLabel?contains("Annual Percentage Rate (APR) for Purchases") && (d.scrapedValue?has_content))>
225 <#assign apr = d.scrapedValue?replace("(\n|\r\n|\r)+", " ","r")>
226 <script>
227 console.log("scraped data exists");
228 console.log("APR", '${apr}')
229 </script>
230 <#break>
231 </#if>
232 </#list>
233 <script>
234 $(document).ready(function () {
235 var aprText = "${apr}";
236 if (aprText) {
237 var matches= aprText.match(/\d+(\.\d+)?%?/g);
238 var billing_cycle = "";
239 var apr_min = "";
240 var apr_max = "";
241 if (aprText.indexOf("Platinum:") != -1) {
242 billing_cycle = matches[1];
243 apr_min = matches[2];
244 apr_max = matches[3];
245 }
246 if (billing_cycle) {
247 $(".scraped-billing-cycle").html(billing_cycle);
248 }
249 if (apr_min) {
250 $(".scraped-apr-min").html(apr_min);
251 }
252 if (apr_max) {
253 $('.scraped-apr-max').html(apr_max);
254 }
255 }
256 });
257 </script>
258
259 </#if>
260 <#else>
261 <script>
262 console.log("scraped data missing");
263 </script>
264 </#if>
265 <#if ameriprise>
266 <#assign card_art_alt = partnerName + " " + productName + " " + " Card">
267 <#assign rollover_text = partnerName + " " + productName + " " + "Card">
268 <#else>
269 <#assign card_art_alt = partnerName>
270 <#assign rollover_text = partnerName + " " + productName + " " + " Credit Card">
271 <#assign card_text = productName + " Card">
272 </#if>
273 <div class="hero-container ${pageClass} ${productClass!''}" title="${rollover_text!''}">
274 <div class="hero-main">
275 <div class="hero-main-logo" title="${partnerName!''}">
276 <#if partnerUrl?has_content>
277 <a href="${partnerUrl!''}" title="${partnerName!''}"><img src="${cdnLogoUrl!''}/${logoFileName!''}" alt="${partnerName!''}"></a>
278 <#else>
279 <a title="${partnerName!''}"><img src="${cdnLogoUrl!''}/${logoFileName!''}" alt="${partnerName!''}"></a>
280 </#if>
281 <div class="hero-main-logo-homelink">
282 <#if ameriprise>
283 <a href="${environment}/11t1m/index?bankercode=${bCode}&ecdma-lc=${lc_used}${ecidExt}">Back to Overview</a>
284 <#else>
285 <a href="${environment}/11t1/index?bankercode=${bCode}&ecdma-lc=${lc}${ecidExt}">Back to Overview</a>
286 </#if>
287 </div>
288 </div>
289 <div class="hero-main-container">
290 <div class="hero-main-offer bg-color-white">
291 <div class="offer-header bg-color-black text-color-white text-bold">${primaryHeadlineText.getData()}</div>
292 <div class="offer-detail">
293 <div class="offer-detail-head">${primaryHeadlineFeature.getData()}</div>
294 <div class="offer-detail-text text-color-default">
295 ${primaryHeadlineFeatureTop.getData()}
296 ${primaryHeadlineFeatureBottom.getData()}
297 </div>
298 <div class="offer-detail-cardArt">
299 <img src="${cardArtImage!''}" alt="${card_art_alt!''}" title="${card_art_alt!''}" onerror="this.onerror=null;this.src='${cardArtImageAlt!''}'">
300 <p>${card_text!''}</p>
301 </div>
302 <#if (fiCardsData?size > 0)>
303
304 <form class="form1" action='${oadURL}?locationCode=${lc_used}&offerId=${newOfferId}&preparerType=customer&sourceCode=${newSourceCode}' method="post" id="BAAForm">
305 <label for="appDataBAA" style="position:absolute; clip:rect(0 0 0 0);">Application Data</label>
306 <textarea rows="20" cols="100" name="applicationData" id="appDataBAA" style="display:none;"></textarea>
307 <input type="submit" data-button-name="cta-button-top" title="Apply Now for ${rollover_text!'Credit Card'}" class="jn-button apply-button text-bold button-bg-color-custom text-color-white" value="${ctaText.getData()}" disabled />
308 </form>
309 <#else>
310 <form class="form2" action='${oadURL}?locationCode=${lc_used}&offerId=${offerId}&preparerType=customer&sourceCode=${sourceCode}' method="post" id="BAAForm">
311 <label for="appDataBAA" style="position:absolute; clip:rect(0 0 0 0);">Application Data</label>
312 <textarea rows="20" cols="100" name="applicationData" id="appDataBAA" style="display:none;"></textarea>
313 <input type="submit" data-button-name="cta-button-top" title="Apply Now for ${rollover_text!'Credit Card'}" class="jn-button apply-button text-bold button-bg-color-custom text-color-white" value="${ctaText.getData()}" disabled />
314 </form>
315 </#if>
316 </div>
317 </div>
318 </div>
319 </div>
320 <div class="hero-primary-benefits bg-color-black-half-transparent text-color-white">
321 <#if secondaryFeatureText.getData() != "">
322 <#foreach item in secondaryFeatureText.getSiblings()>
323 <div class="primary-benefit">
324 <div class="primary-benefit-wrapper text-color-white">
325 ${item.getData()}
326 </div>
327 </div>
328 </#foreach>
329 </#if>
330 </div>
331 </div>
332 <div class="standard-content-container" title="${rollover_text!''}">
333 <h2 class="learnmore text-color-custom text-bold" onclick="learnmore(event)">
334 LEARN MORE
335 <svg viewBox="0 0 150 100" width="45" height="30">
336 <polyline points="40 40 80 80 120 38" stroke-width="20"
337 stroke-linecap="butt" fill="none" stroke-linejoin="miter"/>
338 </svg>
339 </h2>
340 <h2 class="text-bold" id="more">${secondaryHeadlineText.getData()}</h2>
341 <div class="secondary-benefits">
342 <div class="option">
343 ${additionalInfoGroupA.getData()}
344 <#if pbu != "0892445">
345 <#if (sdata?size > 0)>
346 <div>
347
348 <#if (fib.offerType == "104") >
349
350 <#list sdata as d>
351 <#if (d.scrapedLabel?contains("Annual Percentage Rate") && (d.scrapedValue?has_content))>
352
353 <h3 class="text-color-custom"><strong>APR<sup>*</sup> for Purchases:</strong></h3>
354 <p>${d.scrapedValue} <a href="${oadURL_TC}?step=display&offerId=${newOfferId}&locationCode=${lc_used}" class="text-color-default" target="_blank">Terms & Conditions</a>
355 </p>
356 <#break>
357 </#if>
358 </#list>
359 <#list sdata as d>
360 <#if (d.scrapedLabel?contains("APR for Balance Transfers") && (d.scrapedValue?has_content))>
361
362 <h3 class="text-color-custom"><strong>Intro APR<sup>*</sup> for Purchases and Balance Transfers</strong></h3>
363 <p>${d.scrapedValue} <a href="${oadURL_TC}?step=display&offerId=${newOfferId}&locationCode=${lc_used}" class="text-color-default" target="_blank">Terms & Conditions</a>
364 </p>
365
366 <#break>
367 </#if>
368 </#list>
369 <#else>
370
371 <#if (fib.offerType == "115" || fib.offerType == "123")>
372 <h3 class="text-color-custom"><strong>APR for Purchases and Balance Transfers</strong></h3>
373 <#elseif (fib.offerType=="128" || fib.offerType=="143")>
374 <h3 class="text-color-custom"><strong>Annual Fee</strong></h3>
375 <#else>
376 <h3 class="text-color-custom"><strong>Intro APR<sup>*</sup> for Purchases and Balance Transfers</strong></h3>
377 </#if>
378 <#list sdata as d>
379 <#if (fib.offerType=="128" || fib.offerType=="143") >
380 <#if (d.scrapedLabel?contains("Annual Membership Fee") && (d.scrapedValue?has_content))>
381 <#if (fiCardsData?size > 0)>
382 <p>${d.scrapedValue} <a href="${oadURL_TC}?step=display&offerId=${newOfferId}&locationCode=${lc_used}"
383 class="text-color-default" target="_blank">Terms & Conditions</a>
384 </p>
385
386 <#else>
387 <p>${d.scrapedValue} <a href="${oadURL_TC}?step=display&offerId=${newOfferId}&locationCode=${lc_used}"
388 class="text-color-default" target="_blank">Terms & Conditions</a>
389 </p>
390 </#if>
391 <#break>
392 </#if>
393
394 <#else>
395 <#if (d.scrapedLabel?contains("Annual Percentage Rate") && (d.scrapedValue?has_content))>
396
397 <#if (fiCardsData?size > 0)>
398 <p>${d.scrapedValue} <a href="${oadURL_TC}?step=display&offerId=${newOfferId}&locationCode=${lc_used}" target="_blank">Terms & Conditions</a>
399 </p>
400 <#else>
401 <p>${d.scrapedValue} <a href="${oadURL_TC}?step=display&offerId=${newOfferId}&locationCode=${lc_used}" class="text-color-default" target="_blank">Terms & Conditions</a>
402 </p>
403 </#if>
404 <#break>
405 </#if>
406 </#if>
407 </#list>
408
409 </#if>
410 </div>
411 </#if>
412 </#if>
413 </div>
414 <div class="option">
415 ${additionalInfoGroupB.getData()}
416 <#if pbu != "0892445">
417 <div>
418 <#if (fiCardsData?size > 0)>
419 <#if (sdata?size > 0)>
420 <#if (fib.offerType=="128" || fib.offerType=="143")>
421 <h3 class="text-color-custom"><strong>Intro APR<sup>*</sup> for Purchases and Balance Transfers</strong></h3>
422 <#else>
423 <h3 class="text-color-custom"><strong>Annual Fee</strong></h3>
424 </#if>
425 <#list sdata as d>
426 <#if (fib.offerType=="128" || fib.offerType=="143")>
427 <#if (d.scrapedLabel?contains("Annual Percentage Rate") && (d.scrapedValue?has_content))>
428
429 <#if (fiCardsData?size > 0)>
430 <p>${d.scrapedValue} <a href="${oadURL_TC}?step=display&offerId=${newOfferId}&locationCode=${lc_used}"
431 class="text-color-default" target="_blank">Terms & Conditions</a>
432 </p>
433 <#else>
434 <p>${d.scrapedValue} <a href="${oadURL_TC}?step=display&offerId=${newOfferId}&locationCode=${lc_used}"
435 class="text-color-default" target="_blank">Terms & Conditions</a>
436 </p>
437 </#if>
438 <#break>
439 </#if>
440 <#else>
441 <#if (d.scrapedLabel?contains("Annual Membership Fee") && (d.scrapedValue?has_content))>
442
443 <#if (fiCardsData?size > 0)>
444 <p>
445 <#if (fib.offerType == "123")>
446 Annual Fee: ${d.scrapedValue}
447 <#else>
448 ${d.scrapedValue}
449 </#if>
450 <a href="${oadURL_TC}?step=display&offerId=${newOfferId}&locationCode=${lc_used}" target="_blank">Terms & Conditions</a>
451 </p>
452 <#else>
453 <p>
454 <#if (fib.offerType == "123")>
455 Annual Fee: ${d.scrapedValue}
456 <#else>
457 ${d.scrapedValue}
458 </#if>
459 <a href="${oadURL_TC}?step=display&offerId=${newOfferId}&locationCode=${lc_used}" class="text-color-default" target="_blank">Terms & Conditions</a>
460 </p>
461 </#if>
462 <#break>
463 </#if>
464 </#if>
465 </#list>
466 </#if>
467 </#if>
468 </div>
469 </#if>
470 </div>
471 </div>
472 </div>
473 <div class="banner-wrapper" title="${rollover_text!''}">
474 <div class="banner bg-color-custom ${override}">
475 <div class="banner-cardArt">
476 <img src="${cardArtImage!''}" alt="${card_art_alt!''}" title="${card_art_alt!''}" srcset="" onerror="this.onerror=null;this.src='${cardArtImageAlt!''}'">
477 </div>
478 <div class="banner-cta">
479 <div class="banner-cta-text text-color-white text-bold">
480 ${optionalCtaFeatureText.getData()}
481 </div>
482 <a id="oadSecButton" data-button-name="cta-button-bottom" title="Apply Now for ${rollover_text!'Credit Card'}" class="jn-button banner-cta-apply-button text-bold button-bg-color-white text-color-custom">${optionalCtaText.getData()}</a>
483 </div>
484 </div>
485 </div>
486
487
488 </#if>
489 </#list>
490
491 <script>
492 var reportingData = window.reportingData || {};
493 document.addEventListener('DOMContentLoaded', function() {
494 console.log('inside ready');
495 var page = location.pathname.split('/')[location.pathname.split('/').length-1];
496 var hostName = location.hostname;
497
498 function getDomainFromHostname(hostname) {
499 var parts = hostname.split('.');
500 return parts.length === 3 ? parts[1] : parts[0];
501 }
502 var domain = getDomainFromHostname(hostName);
503 var partnerName = "${partnerName!''}";
504
505 var ameriprise = '${ameriprise?string("yes", "no")}';
506 var locationCode = "${rlc!lc}";
507 var eidAmp = "";
508 if (ameriprise == "yes") {
509 var bankercode_amp = '${bCode}';
510 eidAmp = bankercode_amp.substring(3);
511 locationCode ="";
512 }
513
514 $('.jn-button').removeAttr('disabled');
515 $('.jn-button').removeClass('jn-disabled');
516 jQuery('#oadSecButton').on('click', function(e) {
517 jQuery('#BAAForm').submit();
518 });
519
520 jQuery('#BAAForm').on('submit', function(e){
521 e.preventDefault();
522 console.log('in custom submit');
523 var xmlData;
524 if(ameriprise == "yes") {
525 xmlData = '<?xml version="1.0"?>'+
526 "<prefillData>"+
527 "<versionNumber>1.0</versionNumber>"+
528 "<applicationData>"+
529 "<referral>" +
530 "<employeeId>" + eidAmp + "</employeeId>" +
531 "<storeNumber>"+"${bName!'0'}"+"</storeNumber>"+
532 "<divisionNumber></divisionNumber>"+
533 "</referral>" +
534 "<bankerInformation>"+
535 "<locationCode>" + locationCode + "</locationCode>"+
536 "<originatingBranchNumber>"+"${bName!'0'}"+"</originatingBranchNumber>"+
537 "<employeeID>${boeid!0}</employeeID>"+
538 "<name>" +
539 "<first>${bFName!'0'}</first>" +
540 "<last>${bLName!'0'}</last>" +
541 "</name>"+
542 "<phone>"+
543 "<areaCode>"+areaCode+"</areaCode>"+
544 "<exchange>"+exchangeCode+"</exchange>"+
545 "<number>"+num+"</number>"+
546 "</phone>"+
547 "</bankerInformation>"+
548 "</applicationData>"+
549 "</prefillData>"
550 } else {
551 xmlData = '<?xml version="1.0"?>'+
552 "<prefillData>"+
553 "<versionNumber>1.0</versionNumber>"+
554 "<applicationData>"+
555 "<bankerInformation>"+
556 "<locationCode>" + locationCode + "</locationCode>"+
557 "<originatingBranchNumber>"+"${bName!'0'}"+"</originatingBranchNumber>"+
558 "<employeeID>${boeid!0}</employeeID>"+
559 "<name>" +
560 "<first>${bFName!'0'}</first>" +
561 "<last>${bLName!'0'}</last>" +
562 "</name>"+
563 "<phone>"+
564 "<areaCode>"+areaCode+"</areaCode>"+
565 "<exchange>"+exchangeCode+"</exchange>"+
566 "<number>"+num+"</number>"+
567 "</phone>"+
568 "</bankerInformation>"+
569 "</applicationData>"+
570 "</prefillData>"
571 }
572 jQuery('#appDataBAA').val(xmlData);
573 var buttonName = jQuery('.jn-button').data('button-name');
574 /* SiteCatalyst onClick tracking */
575 reportingData.apply_button = buttonName;
576 AUI().ready(function() {
577 if (window.publisherFW) {
578 window.publisherFW.publishEvent("onClick", reportingData);
579 }
580 });
581
582 this.submit();
583 });
584 var regex = /\d+/g;
585 var bdNumber = "${bPhone!''}";
586 var phoneNum = bdNumber.match(regex);
587 var areaCode = "";
588 var exchangeCode = "";
589 var num = "";
590 if(phoneNum != null) {
591 phoneNum = phoneNum.join("");
592 areaCode = phoneNum.substring(0,3);
593 exchangeCode = phoneNum.substring(3,6);
594 num = phoneNum.substring(6,10);
595 }
596 var product = "";
597 switch(page) {
598 case "consumer-platinum2103":
599 product="Platinum Card"
600 break;
601 case "real-rewards":
602 product="Real Rewards Card"
603 break;
604 case "secured":
605 product="Secured Card"
606 break;
607 case "business-cashback":
608 product="Business Cash Card"
609 break;
610 case "business-real-rewards":
611 product="Business Real Rewards Card"
612 break;
613 case "business-rewards-plus":
614 product="Business Rewards PLUS Card"
615 break;
616 case "premier-visa-signature":
617 product="Premier Visa Signature Card"
618 break;
619 case "business-platinum2103":
620 product="Business"
621 break;
622 case "visa-signature":
623 product="Visa Signature Card"
624 break;
625 default:
626 product = "All Cards";
627 }
628
629 /* update SiteCatalyst data object */
630 reportingData.current_page = "microsite:${partnerName}:" + domain + ':' + page.replace('-',' ');
631 reportingData.location_code = '${rlc!0}';
632 reportingData.product = product;
633 reportingData.site_section = 'credit cards';
634 reportingData.platform = 'microsite';
635 reportingData.partner_name = "${partnerName}";
636 reportingData.Banker_id = '${boeid}';
637 reportingData.Banker_code = '${bCode}';
638 reportingData.visitor_type = 'prospect';
639 reportingData.text_to_apply_source = '${text_to_apply_source}';
640 reportingData.page_type = 'product';
641 reportingData.campaign_id = '${campaignId}';
642
643
644 });
645 </script>
646 <script async>
647 function learnmore(e) {
648 e.preventDefault();
649 var element = document.getElementById("more");
650 element.scrollIntoView({behavior: 'smooth'});
651 }
652 </script>
653 <#else>
654 <script>
655 console.log("FI Cards Data empty");
656 //location.href = '${url404}';
657 </script>
658 </#if>
659 <#else>
660 <script>
661 console.log("not Tier1 Fi");
662 //location.href = '${url404}';
663 </script>
664 </#if>
665 <#else>
666 <script>
667 console.log("Fi opt-out");
668 //location.href = '${url404}';
669 </script>
670 </#if>
671 <#else>
672 <script>
673 console.log("client profile empty");
674 //location.href = '${url404}';
675 </script>
676 </#if>
677</#if>
Une erreur s'est produite lors du traitement du gabarit.
The following has evaluated to null or missing: ==> qstringmap["bankercode"] [in template "10153#10191#7973976" at line 5, column 17] ---- Tip: It's the final [] step that caused this error, not those before it. ---- Tip: If the failing expression is known to legally refer to something that's sometimes null or missing, either specify a default value like myOptionalVar!myDefault, or use <#if myOptionalVar??>when-present<#else>when-missing</#if>. (These only cover the last step of the expression; to cover the whole expression, use parenthesis: (myOptionalVar.foo)!myDefault, (myOptionalVar.foo)?? ---- ---- FTL stack trace ("~" means nesting-related): - Failed at: #assign bCode = qstringmap["bankercod... [in template "10153#10191#7973976" at line 5, column 1] ----
1<#assign url = themeDisplay.getURLCurrent() >
2<#assign qstringmap = httpUtil.getParameterMap(httpUtil.getQueryString(url))>
3<#assign utilServ = (serviceLocator.findService("com.elan.crc.utilites.service.CRCRemoteServiceService"))! />
4
5<#assign bCode= qstringmap["bankercode"]?first>
6<#assign bData = utilServ.makeCall('crcDDCBankerAssistedAppDetailSql','0&'+bCode)>
7<#list bData as b>
8 <#assign lc = b.locationcode >
9 <#assign rLC = b.reallocationcode >
10 <#assign mappedLC = b.mappedLocationCode >
11</#list>
12<#if mappedLC?has_content && !(url?contains("11t1m"))>
13 <#assign lc = mappedLC >
14</#if>
15<#if lc?has_content>
16 <#assign prefix = "00000" >
17 <#assign lcWithPrefix = prefix + lc >
18 <#assign withPrefixLength = lcWithPrefix?length >
19 <#assign startHere = withPrefixLength - 5>
20 <#assign lc = lcWithPrefix?substring(startHere)>
21 <#assign clientProfileService = (serviceLocator.findService("com.elan.crc.user.service.CrcClientProfileLocalService"))! />
22 <#assign clientProfileList = clientProfileService.findByLocationCode(lc)>
23
24 <#assign clientProfile = clientProfileList?first>
25 <#assign partnerName=clientProfile.getMarketingNameLong()>
26</#if>
27
28<div class="content-container" title="${partnerName!''} - Disclaimer">
29 <div class="jn-disclaimer tier3-disclaimer-${class.getData()}">
30 ${content.getData()}
31 </div>
32</div>
Une erreur s'est produite lors du traitement du gabarit.
The following has evaluated to null or missing: ==> qstringmap["bankercode"] [in template "10153#10191#6590291" at line 6, column 17] ---- Tip: It's the final [] step that caused this error, not those before it. ---- Tip: If the failing expression is known to legally refer to something that's sometimes null or missing, either specify a default value like myOptionalVar!myDefault, or use <#if myOptionalVar??>when-present<#else>when-missing</#if>. (These only cover the last step of the expression; to cover the whole expression, use parenthesis: (myOptionalVar.foo)!myDefault, (myOptionalVar.foo)?? ---- ---- FTL stack trace ("~" means nesting-related): - Failed at: #assign bCode = qstringmap["bankercod... [in template "10153#10191#6590291" at line 6, 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 url404 = '/error/404.html'>
5
6<#assign bCode= qstringmap["bankercode"]?first>
7<#assign bData = utilServ.makeCall('crcDDCBankerAssistedAppDetail','0&'+bCode)>
8<#list bData as b>
9 <#assign lc = b.locationcode >
10 <#assign rLC = b.reallocationcode >
11 <#assign mappedLC = b.mappedLocationCode >
12</#list>
13
14<#if bCode?starts_with("amp") && (url?contains("11t1m"))>
15 <#assign ameriprise = true>
16<#else>
17 <#assign ameriprise = false>
18</#if>
19<#if mappedLC?has_content && !ameriprise>
20 <#assign lc = mappedLC >
21</#if>
22
23<#if lc?has_content>
24
25 <#assign prefix = "00000" >
26 <#assign lcWithPrefix = prefix + lc >
27 <#assign withPrefixLength = lcWithPrefix?length >
28 <#assign startHere = withPrefixLength - 5>
29 <#assign lc = lcWithPrefix?substring(startHere)>
30 <#assign clientProfileService = (serviceLocator.findService("com.elan.crc.user.service.CrcClientProfileLocalService"))! />
31 <#assign clientProfileList = clientProfileService.findByLocationCode(lc)>
32
33 <#assign clientProfile = clientProfileList?first>
34 <#assign pbu = clientProfile.getPbu()>
35 <#assign subbu = clientProfile.getSUBBRANDBUNBR()>
36 <#assign partnerName=clientProfile.getMarketingNameLong()>
37 <#assign clientDataService = (serviceLocator.findService("com.elan.crc.user.service.CrcPbuLocalService"))! />
38 <#assign clientProfileDataList = clientDataService.getByPbuAndSubBu(pbu,subbu)>
39 <#assign partnerUrl = clientProfileDataList.getPartnerMainUrl()>
40 <#if partnerUrl?has_content && !partnerUrl?matches(r"(?i)^https?\:\/\/.*") && !partnerUrl?matches(r"(?i)^https?\://.*")>
41 <#-- add protocal if missing -->
42 <#assign partnerUrl = 'https://' + partnerUrl>
43 </#if>
44 <footer class="footer bg-color-black text-color-white">
45 ${footerContent.getData()}
46 </footer>
47
48 <!-- BEGIN CALIFORNIA OPT-OUT MODAL STYLE AND MARKUP -->
49 <script src="https://unpkg.com/micromodal/dist/micromodal.min.js"></script>
50 <style>
51 #opt-out-button,
52 .modal__btn.learn-more {
53 background: #0C2074;
54 border: 1px solid #0C2074;
55 color: white;
56 text-transform: uppercase;
57 text-decoration: none;
58 font-size: 16px;
59 padding: 0.5rem 2rem;
60 display: inline-block;
61 border-radius: 0;
62 }
63 #opt-out-button:hover,
64 .modal__btn.learn-more:hover {
65 color: white;
66 border-color: #2C76AF !important;
67 background-color: #2C76AF !important;
68 }
69 .modal__btn.learn-more {
70 background: white;
71 border: 1px solid #0C2074;
72 color: #0C2074;
73 }
74 #opt-out-button[disabled="true"] {
75 background-color: rgba(0,0,0,.15);
76 color: rgba(0,0,0,.45);
77 border-color: rgba(0,0,0,.25);
78 }
79 #opt-out-button:hover[disabled="true"] {
80 background-color: rgba(0,0,0,.15) !important;
81 color: rgba(0,0,0,.45) !important;
82 border-color: rgba(0,0,0,.25) !important;
83 }
84 #opt-out-button:focus {
85 outline-style: solid;
86 outline-color: white;
87 outline-offset: -3px;
88 outline-width: 1px;
89 }
90 .opt-out-link svg {
91 width: 30px;
92 height: 14px;
93 width: auto;
94 vertical-align: middle;
95 }
96 .modal__overlay {
97 position: fixed;
98 top: 0;
99 left: 0;
100 right: 0;
101 bottom: 0;
102 background: rgba(0,0,0,0.6);
103 display: flex;
104 justify-content: center;
105 align-items: center;
106 }
107
108 .modal__container {
109 background-color: #fff;
110 padding: 30px;
111 max-width: 500px;
112 max-height: 100vh;
113 border-radius: 4px;
114 overflow-y: auto;
115 box-sizing: border-box;
116 }
117
118 .modal__header {
119 display: flex;
120 justify-content: space-between;
121 align-items: center;
122 }
123
124 .modal__title {
125 margin-top: 0;
126 margin-bottom: 0;
127 font-weight: 600;
128 font-size: 20px;
129 line-height: 1.25;
130 color: #00449e;
131 box-sizing: border-box;
132 }
133
134 .modal__close {
135 background: transparent;
136 border: 1px solid white;
137 padding: 4px 8px;
138 }
139 .modal__close:hover {
140 border: 1px solid black;
141 }
142
143 .modal__header .modal__close:before { content: "\2715"; }
144
145 .modal__content {
146 margin-top: 2rem;
147 margin-bottom: 2rem;
148 line-height: 1.5;
149 }
150
151 @keyframes mmfadeIn {
152 from { opacity: 0; }
153 to { opacity: 1; }
154 }
155
156 @keyframes mmfadeOut {
157 from { opacity: 1; }
158 to { opacity: 0; }
159 }
160
161 @keyframes mmslideIn {
162 from { transform: translateY(15%); }
163 to { transform: translateY(0); }
164 }
165
166 @keyframes mmslideOut {
167 from { transform: translateY(0); }
168 to { transform: translateY(-10%); }
169 }
170
171 .micromodal-slide {
172 display: none;
173 }
174
175 .micromodal-slide.is-open {
176 display: block;
177 }
178
179 .micromodal-slide[aria-hidden="false"] .modal__overlay {
180 animation: mmfadeIn .3s cubic-bezier(0.0, 0.0, 0.2, 1);
181 }
182
183 .micromodal-slide[aria-hidden="false"] .modal__container {
184 animation: mmslideIn .3s cubic-bezier(0, 0, .2, 1);
185 }
186
187 .micromodal-slide[aria-hidden="true"] .modal__overlay {
188 animation: mmfadeOut .3s cubic-bezier(0.0, 0.0, 0.2, 1);
189 }
190
191 .micromodal-slide[aria-hidden="true"] .modal__container {
192 animation: mmslideOut .3s cubic-bezier(0, 0, .2, 1);
193 }
194
195 .micromodal-slide .modal__container,
196 .micromodal-slide .modal__overlay {
197 will-change: transform;
198 }
199 </style>
200
201 <div class="modal micromodal-slide" id="modal-1" aria-hidden="true">
202 <div class="modal__overlay" tabindex="-1" data-micromodal-close>
203 <div class="modal__container" role="dialog" aria-modal="true" aria-labelledby="modal-1-title">
204 <header class="modal__header">
205 <h2 class="modal__title" id="modal-1-title">
206 Your California privacy choices
207 </h2>
208 <button class="modal__close" aria-label="Close modal" data-micromodal-close></button>
209 </header>
210 <div class="modal__content" id="modal-1-content">
211 <div id="message-no-cookie">
212 <p>
213 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>
214
215 <p> </p>
216
217 <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>
218 </div>
219 <div id="message-with-cookie">
220 <p>You have successfully opted-out.</p>
221 </div>
222 </div>
223 <div class="modal__footer">
224 <a href="https://login.elancreditcard.com/onlineCard/publicPrivacyPolicy.do?phase=privacyPolicy" target="_blank" class="modal__btn learn-more" aria-label="Learn more">Learn More</a>
225 <button id="opt-out-button" class="modal__btn modal__btn-primary" aria-label="Opt Out and Close modal" onclick="window.californiaOptOut()">Opt Out</button>
226 </div>
227 </div>
228 </div>
229 </div>
230 <!-- END CALIFORNIA OPT-OUT MODAL STYLE AND MARKUP -->
231 <script>
232 const fdicNode = document.querySelector('.footer .fdic')
233 </script>
234 <#if url?contains("11t1m")>
235 <script>
236 document.querySelector('.footer .copyright').classList.add("ecdma-footer-client-name-copyright");
237 fdicNode.innerHTML='<a class="text-color-white" href="https://login.elancreditcard.com/onlineCard/publicPrivacyPolicy.do?phase=privacyPolicy" target="_blank">Privacy and Security</a>';
238 </script>
239 <#else>
240 <script>
241 document.querySelector('.footer .copyright').classList.add("ecdma-footer-client-name-copyright");
242 document.querySelector('.footer .fdic').innerHTML='<a class="text-color-white" href="https://login.elancreditcard.com/onlineCard/publicPrivacyPolicy.do?phase=privacyPolicy" target="_blank">Privacy and Security</a>';
243 var newNode = document.createElement("div");
244 newNode.classList.add("member-agreement");
245 newNode.innerHTML='<a class="text-color-white" href="https://online1.elancard.com/oad/cmas.controller?locationCode=${lc!0}&preparerType=customer&isNewRequest=false" target="_blank">Cardmember Agreements</a>';
246 var parent = fdicNode.parentNode;
247 parent.insertBefore(newNode, fdicNode);
248 </script>
249 </#if>
250
251 <#if partnerUrl?has_content>
252 <script>
253 document.querySelector('.copyright .homelink').innerHTML="<a class='text-color-white' href='${partnerUrl!''}' title='${partnerName!''}' target='_blank'>Home</a>";
254 </script>
255 </#if>
256 <script>
257 /* BEGIN CALIFORNIA OPT-OUT MODAL TRIGGER */
258 fdicNode.insertAdjacentHTML('afterend', '<div style="display: inline-block; margin-left: 100px;"><a href="javascript:void(0);" class="opt-out-link text-color-white" data-micromodal-trigger="modal-1">Your California privacy choices <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 30 14" xml:space="preserve"><path d="M7.4 12.8h6.8l3.1-11.6H7.4C4.2 1.2 1.6 3.8 1.6 7s2.6 5.8 5.8 5.8z" fill-rule="evenodd" clip-rule="evenodd" fill="#fff"/><path d="M22.6 0H7.4c-3.9 0-7 3.1-7 7s3.1 7 7 7h15.2c3.9 0 7-3.1 7-7s-3.2-7-7-7zm-21 7c0-3.2 2.6-5.8 5.8-5.8h9.9l-3.1 11.6H7.4c-3.2 0-5.8-2.6-5.8-5.8z" fill-rule="evenodd" clip-rule="evenodd" fill="#06f"/><path d="M24.6 4c.2.2.2.6 0 .8L22.5 7l2.2 2.2c.2.2.2.6 0 .8-.2.2-.6.2-.8 0l-2.2-2.2-2.2 2.2c-.2.2-.6.2-.8 0-.2-.2-.2-.6 0-.8L20.8 7l-2.2-2.2c-.2-.2-.2-.6 0-.8.2-.2.6-.2.8 0l2.2 2.2L23.8 4c.2-.2.6-.2.8 0z" fill="#fff"/><path d="M12.7 4.1c.2.2.3.6.1.8L8.6 9.8c-.1.1-.2.2-.3.2-.2.1-.5.1-.7-.1L5.4 7.7c-.2-.2-.2-.6 0-.8.2-.2.6-.2.8 0L8 8.6l3.8-4.5c.2-.2.6-.2.9 0z" fill="#06f"/></svg></a></div>');
259 /* END CALIFORNIA OPT-OUT MODAL TRIGGER */
260 </script>
261 <!-- BEGIN CALIFORNIA OPT-OUT MODAL LOGIC -->
262 <script>
263 window.getCookieDomain = function() {
264 var hostname = window.location.hostname.split(".");
265 return hostname && hostname.slice(hostname.length - 2).join(".");
266 }
267 window.setToOptOut = function() {
268 if (window.getCookie('privacy_optout')) {
269 document.getElementById('message-no-cookie').style.display = 'none';
270 document.getElementById('message-with-cookie').style.display = 'block';
271 document.getElementById('opt-out-button').setAttribute('disabled', true)
272 } else {
273 document.getElementById('message-no-cookie').style.display = 'block';
274 document.getElementById('message-with-cookie').style.display = 'none';
275 }
276 }
277 window.getCookie = function(name) {
278 var value = '; ' + document.cookie;
279 var parts = value.split('; ' + name + '=');
280 if (parts.length === 2) return parts.pop().split(';').shift();
281 }
282 window.californiaOptOut = function() {
283 if (!window.getCookie('privacy_optout')) {
284 document.cookie = 'privacy_optout=1; path=/; domain=' + window.getCookieDomain() + '; expires=Thu, 31 Dec 2099 00:00:00 GMT;';
285 try {
286 if (window.CustomEvent) {
287 window.dispatchEvent(new CustomEvent('privacy_optout'));
288 } else {
289 var privacyOptoutEvent = document.createEvent('Event');
290 privacyOptoutEvent.initEvent('privacy_optout', true, true);
291 window.dispatchEvent(privacyOptoutEvent);
292 }
293 window.setToOptOut();
294 } catch (err) {
295 console.error(err);
296 }
297 }
298 }
299 MicroModal.init({
300 onShow: window.setToOptOut
301 });
302 AUI().ready(function() {
303 // user browser setting for Global Privacy Control to opt out of sharing information with third parties
304 const isBrowserGpcOptOut = navigator.globalPrivacyControl;
305 if(isBrowserGpcOptOut === true) {
306 window.californiaOptOut();
307 }
308 });
309 </script>
310 <!-- END CALIFORNIA OPT-OUT MODAL LOGIC -->
311</#if>