Web Content Display
Web Content Display
An error occurred while processing the template.
Error on line 36, column 1 in 10154#10192#153417670 clientProfileList?first is undefined. It cannot be assigned to clientProfile
1<#assign utilServ = serviceLocator.findService("crc-utilities-portlet", "com.elan.crc.utilities.service.CRCRemoteServiceService") >
2<#assign oadURL = propsUtil.get('elan.oad.url') >
3<#assign url = request.attributes.CURRENT_URL >
4<#assign qstringmap = httpUtil.getParameterMap(httpUtil.getQueryString(url))>
5<#assign url404 = '/error/404.html' >
6<#assign environment = url?replace('/11t3.*','','r')>
7
8<#assign text_to_apply_source = "vanity url" >
9<#if qstringmap["sms"]?has_content>
10 <#assign sms = 1 >
11 <#assign text_to_apply_source = "sms" >
12</#if>
13<#if qstringmap["qrCode"]?has_content>
14 <#assign text_to_apply_source = "qr code" >
15</#if>
16
17<#assign lc= qstringmap["ecdma-lc"]?first>
18<#assign prefix = "00000" >
19<#assign lcWithPrefix = prefix + lc >
20<#assign withPrefixLength = lcWithPrefix?length >
21<#assign startHere = withPrefixLength - 5>
22<#assign lc = lcWithPrefix?substring(startHere)>
23
24<#if qstringmap["ecid"]?has_content>
25 <#assign ecidExt="&ecid="+qstringmap["ecid"]?first>
26 <#assign campaignId = qstringmap["ecid"]?first >
27<#else>
28 <#assign ecidExt="">
29 <#assign campaignId = "" >
30</#if>
31
32
33
34<#assign clientProfileService = serviceLocator.findService("crc-clientprofile-portlet", "com.elan.crc.servicebuilder.crcclientprofile.service.CrcClientProfileLocalService") >
35<#assign clientProfileList = clientProfileService.findByLocationCode(lc)>
36<#assign clientProfile = clientProfileList?first>
37<#assign partnerName = clientProfile.getMarketingNameLong()>
38<#assign pbu = clientProfile.getPbu()>
39<#assign subbu = clientProfile.getSUBBRANDBUNBR()>
40
41<#assign logoFileName = clientProfile.getLogoBFormat1()?replace(".", "-")?replace("-([^-]*)$", ".$1", "r")?lower_case>
42<#assign cdnLogoUrl = propsUtil.get('rackspace.cdn.web.url')>
43<#assign fiCardsData = utilServ.makeCall('crcTier3GetPbuData','0&'+pbu+'&'+subbu)>
44
45<#-- Begin: filter duplicated cards-->
46<#assign temp = []>
47<#assign offerTypeList = []>
48<#if (fiCardsData?size > 0)>
49 <#assign index = 0>
50 <#list fiCardsData as fib>
51 <#if (fib.offerType?has_content && !(offerTypeList?seq_contains(fib.offerType)))>
52 <#assign offerTypeList = offerTypeList + [fib.offerType]>
53 <#assign temp = temp + fiCardsData[index..index]>
54 </#if>
55 <#assign index = index + 1>
56 </#list>
57 <#assign fiCardsData = temp>
58 <#if (fiCardsData?size > 0)>
59 <div class="content-container content-container-main" title="${partnerName!''}">
60 <#if url?contains("index")>
61 <#assign product="All Cards">
62 <header class="jn-header">
63 <div class="header-logo">
64 <img src="${cdnLogoUrl!''}/${logoFileName!''}" alt="${partnerName!''}" title="${partnerName!''}">
65 </div>
66 </header>
67 <#else>
68 <header class="jn-header">
69 <div>
70 <a href="${environment}/11t3/index?ecdma-lc=${lc}${ecidExt}"><< Back to Overview</a>
71 </div>
72 <div>
73 <img src="${cdnLogoUrl!''}/${logoFileName!''}" alt="${partnerName!''}" title="${partnerName!''}">
74 <div class="styled-select slate">
75 <select>
76 <#list fiCardsData as fib>
77 <#if (fib.offerType=="108" || fib.offerType=="109")>
78 <#assign productURL="consumer-platinum2103">
79 <#assign productName="Platinum Card">
80 <#elseif fib.offerType=="104">
81 <#assign productURL = "max-cash">
82 <#assign productName = "Max Cash Preferred Card">
83 <#elseif (fib.offerType=="101" || fib.offerType=="103")>
84 <#assign productURL = "real-rewards">
85 <#assign productName = "Real Rewards Card">
86 <#elseif fib.offerType == "115">
87 <#assign productURL = "secured">
88 <#assign productName = "Secured Card" >
89 <#elseif fib.offerType == "144">
90 <#assign productURL = "smart-business-rewards">
91 <#assign productName = "Smart Business Rewards Card" >
92 <#elseif fib.offerType == "128">
93 <#assign productURL = "business-cashback">
94 <#assign productName = "Business Cash Card" >
95 <#elseif fib.offerType == "143">
96 <#assign productURL = "business-real-rewards">
97 <#assign productName = "Business Real Rewards Card" >
98 <#elseif fib.offerType == "121">
99 <#assign productURL = "business-platinum2103">
100 <#assign productName = "Business Card" >
101 </#if>
102 <#if url?matches(".*/${productURL}.*")>
103 <#assign product = productURL>
104 <option value="${environment}/11t3/${productURL}?ecdma-lc=${lc}${ecidExt}" selected="selected">${productName}</option>
105 <#else>
106 <option value="${environment}/11t3/${productURL}?ecdma-lc=${lc}${ecidExt}">${productName}</option>
107 </#if>
108 </#list>
109 </select>
110 </div>
111 </div>
112 </header>
113 <script>
114 AUI().ready(function () {
115 jQuery('.styled-select select').change(function () {
116 location.href = this.value;
117 });
118 });
119 </script>
120 </#if>
121 </div>
122 <script>
123 document.addEventListener('DOMContentLoaded', function() {
124 console.log('inside ready');
125 var page = location.pathname.split('/')[location.pathname.split('/').length-1];
126 var hostName = location.hostname;
127 function getDomainFromHostname(hostname) {
128 var parts = hostname.split('.');
129 return parts.length === 3 ? parts[1] : parts[0];
130 }
131 var domain = getDomainFromHostname(hostName);
132 var partnerName = "${partnerName!''}";
133 var product = "All Cards";
134 switch(page) {
135 case "max-cash":
136 product="Max Cash Preferred Card"
137 break;
138 case "consumer-platinum2103":
139 product="Platinum Card"
140 break;
141 case "real-rewards":
142 product="Real Rewards Card"
143 break;
144 case "secured":
145 product="Secured Card"
146 break;
147 case "smart-business-rewards":
148 product="Smart Business Rewards Card"
149 break;
150 case "business-cashback":
151 product="Business Cash Card"
152 break;
153 case "business-real-rewards":
154 product="Business Real Rewards Card"
155 break;
156 case "visa-business":
157 product="Business Card"
158 break;
159 default:
160 product = "All Cards";
161 }
162 var lc = "${lc!'0'}";
163 var pageType = "product";
164 if (page == "index") {
165 document.title = partnerName + " Credit Card Index Page";
166 }
167 var utag_data = window.utag_data || {};
168
169 /* update SiteCatalyst data object */
170 utag_data.current_page = "microsite:${partnerName}:" + domain + ':' + page.replace('-',' ');
171 utag_data.page_type = 'product';
172 utag_data.site_section = 'credit cards';
173 utag_data.platform = 'microsite';
174 utag_data.campaign_id = '${campaignId}';
175 utag_data.location_code = lc;
176 utag_data.partner_name = partnerName;
177 utag_data.product = product;
178 utag_data.text_to_apply_source = '${text_to_apply_source}';
179 utag_data.visitor_type = 'prospect';
180 utag_data.Banker_id = '0';
181 utag_data.Banker_code = '0';
182
183
184 /* SiteCatalyst pageView tracking */
185 AUI().ready(function() {
186 if (window.publisherFW) {
187 //console.log("pageView");
188 window.publisherFW.publishEvent("pageView", utag_data);
189 }
190 });
191
192 jQuery('.jn-button, .applyNowLink').on('click', function(e){
193 var buttonName = $(this).data('button-name');
194 var productName = $(this).data('product-name');
195 /* SiteCatalyst onClick tracking */
196 utag_data.applyButton = buttonName;
197 utag_data.product = productName;
198
199 if (window.publisherFW) {
200 //console.log('clicked', utag_data);
201 window.publisherFW.publishEvent("onClick", utag_data);
202 }
203
204 });
205
206 jQuery('.applyNowLink').on('click', function(e){
207 ga("send", {
208 hitType: "event",
209 eventAction: "ApplyNow",
210 eventCategory: "click",
211 eventLabel: "BottomButton"
212 });
213 });
214
215 });
216 </script>
217 <#else>
218 <script>
219 console.log("Empty card list");
220 location.href = '${url404}';
221 </script>
222 </#if>
223<#else>
224 <script>
225 console.log("FI Cards Data empty", "pbu:", "${pbu}", ",subbu:","${subbu}");
226 location.href = '${url404}';
227 </script>
228</#if>
Web Content Display
An error occurred while processing the template.
Error on line 31, column 1 in 10154#10192#153417688 clientProfileList?first is undefined. It cannot be assigned to clientProfile
1<#assign url = request.attributes.CURRENT_URL >
2<#assign oadURL = propsUtil.get('elan.oad.url') >
3<#assign qstringmap = httpUtil.getParameterMap(httpUtil.getQueryString(url))>
4<#assign utilServ = serviceLocator.findService("crc-utilities-portlet", "com.elan.crc.utilities.service.CRCRemoteServiceService")>
5<#assign url404 = '/error/404.html'>
6<#assign oadURL_TC = 'https://online1.elancard.com/oad/terms.controller' >
7
8<#assign lc= qstringmap["ecdma-lc"]?first>
9<#assign prefix = "00000" >
10<#assign lcWithPrefix = prefix + lc >
11<#assign withPrefixLength = lcWithPrefix?length >
12<#assign startHere = withPrefixLength - 5>
13<#assign lc = lcWithPrefix?substring(startHere)>
14
15
16<#if qstringmap["ecid"]?has_content>
17 <#assign ecidExt="&ecid="+qstringmap["ecid"]?first>
18<#else>
19 <#assign ecidExt="">
20</#if>
21
22<#assign campaignId = "" >
23<#assign ecidExt="">
24<#if qstringmap["ecid"]?has_content>
25 <#assign campaignId = qstringmap["ecid"]?first >
26 <#assign ecidExt="&ecid="+qstringmap["ecid"]?first>
27</#if>
28
29<#assign clientProfileService = serviceLocator.findService("crc-clientprofile-portlet", "com.elan.crc.servicebuilder.crcclientprofile.service.CrcClientProfileLocalService") >
30<#assign clientProfileList = clientProfileService.findByLocationCode(lc)>
31<#assign clientProfile = clientProfileList?first>
32<#assign partnerName = clientProfile.getMarketingNameLong()>
33<#assign pbu = clientProfile.getPbu()>
34<#assign subbu = clientProfile.getSUBBRANDBUNBR()>
35<#assign cdnCardArtUrl = propsUtil.get('rackspace.cdn.cardart.url')>
36
37<#assign fiCardsData=utilServ.makeCall('crcTier3GetPbuData','0&'+ pbu + '&'+subbu)>
38<#assign temp = []>
39<#assign consumerCards = []>
40<#assign businessCards = []>
41<#assign offerTypeList = []>
42<#assign index = 0>
43<#assign consumerOfferTypes = ["101", "108", "109", "115", "104"]>
44<#assign businessOfferTypes = ["128", "123", "121", "143", "144"]>
45<#list fiCardsData as fib>
46 <#if (fib.offerType?has_content && !(offerTypeList?seq_contains(fib.offerType)))>
47 <#assign offerTypeList = offerTypeList + [fib.offerType]>
48 <#if (consumerOfferTypes?seq_contains(fib.offerType))>
49 <#assign consumerCards = consumerCards + fiCardsData[index..index]>
50 <#elseif (businessOfferTypes?seq_contains(fib.offerType))>
51 <#assign businessCards = businessCards + fiCardsData[index..index]>
52 </#if>
53 <#assign temp = temp + fiCardsData[index..index]>
54 </#if>
55 <#assign index = index + 1>
56</#list>
57
58<#assign fiCardsData = temp>
59<#if (fiCardsData?size > 0)>
60 <#if url?contains("index")>
61 <#assign offerId = "">
62 <#assign sourceCode = "">
63 <#assign cardArtImage = "">
64 <#assign productUrl = "">
65 <#assign cardIndex = 0>
66 <#if (class.getData() == "landing-consumer" && consumerCards?size > 0)>
67 <#if (offerTypeList?seq_contains("108")) || (offerTypeList?seq_contains("109"))>
68 <#list consumerCards as card>
69 <#if (card.offerType=="108") || (card.offerType=="109")>
70 <#assign offerId = card.offerId>
71 <#assign sourceCode = card.sourceCode>
72 <#assign cardArtImage = cdnCardArtUrl + "/"+card.filename+".png">
73 <#assign cardArtImageAlt = cdnCardArtUrl + "/"+card.filename+".jpg">
74 <#assign productUrl="consumer-platinum2103">
75 <#assign product="Platinum">
76 <#assign cardIndex = 2>
77 <#assign scrapedData = utilServ.makeCall('crcDDCGetSchumerBox', '${card.offerId}' + '&'+ '${card.sourceCode}')>
78 <#if (scrapedData?size > 0)>
79 <#list scrapedData as sItem>
80 <#if ((sItem.scrapedLabel?contains("Annual Percentage Rate (APR) for Purchases")) && (sItem.scrapedValue?has_content)) >
81 <#assign apr = sItem.scrapedValue?replace("(\n|\r\n|\r)+", " ","r")>
82 <#break>
83 </#if>
84 </#list>
85 <script>
86 $(document).ready(function () {
87 var aprText = "${apr}";
88 console.log(aprText);
89 if (aprText) {
90 try {
91 var matches= aprText.match(/\d+(\.\d+)?%?/g);
92 var billing_cycle = matches[1];
93 var apr_min = apr_min = matches[2];
94 var apr_max = apr_max = matches[3];
95 console.log('billing_cycle', billing_cycle);
96 console.log('apr_min', apr_min);
97 console.log('apr_max', apr_max);
98 if (billing_cycle) {
99 $(".scraped-billing-cycle").html(billing_cycle);
100 }
101 if (apr_min) {
102 $(".scraped-apr-min").html(apr_min);
103 }
104 if (apr_max) {
105 $('.scraped-apr-max').html(apr_max);
106 }
107
108 } catch (e) {
109 console.log(e);
110 }
111 }
112 });
113 </script>
114 </#if>
115 </#if>
116 </#list>
117 <#else>
118 <#assign displayedCard = consumerCards[0]>
119 <#assign offerId = displayedCard.offerId>
120 <#assign sourceCode = displayedCard.sourceCode>
121 <#assign cardArtImage = cdnCardArtUrl + "/"+ displayedCard.filename + ".png">
122 <#assign cardArtImageAlt = cdnCardArtUrl + "/"+ displayedCard.filename + ".jpg">
123 <#if (displayedCard.offerType=="101" || displayedCard.offerType=="103")>
124 <#assign productUrl="real-rewards">
125 <#assign product="Real Rewards">
126 <#assign cardIndex = 1>
127 <#elseif (displayedCard.offerType=="104")>
128 <#assign productUrl = "max-cash">
129 <#assign product="Max Cash Preferred">
130 <#assign cardIndex = 0>
131 <#elseif (displayedCard.offerType=="115")>
132 <#assign productUrl = "secured">
133 <#assign product="Secured">
134 <#assign cardIndex = 3>
135 </#if>
136 </#if>
137 <#if product != "">
138 <#assign card_text = product + " Card">
139 </#if>
140 </#if>
141 <#if (class.getData() == "landing-business" && businessCards?size > 0)>
142 <#if (offerTypeList?seq_contains("144")) >
143 <#list businessCards as card>
144 <#if (card.offerType=="144")>
145 <#assign offerId = card.offerId>
146 <#assign sourceCode = card.sourceCode>
147 <#assign cardArtImage = cdnCardArtUrl + "/"+card.filename+".png">
148 <#assign cardArtImageAlt = cdnCardArtUrl + "/"+card.filename+".jpg">
149 <#assign productUrl="smart-business-rewards">
150 <#assign product="Smart Business Rewards">
151 <#assign cardIndex = 0>
152 </#if>
153 </#list>
154 <#else>
155 <#assign displayedCard = businessCards[0]>
156 <#assign offerId = displayedCard.offerId>
157 <#assign sourceCode = displayedCard.sourceCode>
158 <#assign cardArtImage = cdnCardArtUrl + "/"+ displayedCard.filename + ".png">
159 <#assign cardArtImageAlt = cdnCardArtUrl + "/"+ displayedCard.filename + ".jpg">
160 <#if (displayedCard.offerType=="143")>
161 <#assign productUrl="business-real-rewards">
162 <#assign product="Business Real Rewards">
163 <#assign cardIndex = 2>
164 <#elseif (displayedCard.offerType=="128")>
165 <#assign productUrl="business-cash">
166 <#assign product="Business Cash">
167 <#assign cardIndex = 1>
168 <#elseif (displayedCard.offerType=="121")>
169 <#assign productUrl = "business-platinum2103">
170 <#assign product="Business">
171 <#assign cardIndex = 3>
172 </#if>
173 </#if>
174 <#if product != "">
175 <#assign card_text = product + " Card">
176 </#if>
177 </#if>
178
179 <div class="content-container content-container-main product-${productUrl} tier3-hero-${class.getData()}" title="${partnerName!''} ${product!''} Credit Card">
180 <div class="jn-hero jn-hero-card">
181 <article class="jn-hero-container">
182 <div class="jn-hero-container-data">
183 <article>
184 <div>
185 <img src="${cardArtImage!''}" alt="${partnerName!''}" title="${partnerName!''}" class="jn-img-responsive" onerror="this.onerror=null;this.src='${cardArtImageAlt!''}'">
186 <p>${card_text!''}</p>
187 </div>
188 <div>
189 <div>${productTitle.getSiblings()[cardIndex].primaryHeadlineText.getData()}</div>
190 <div class="feature-text">${productTitle.getSiblings()[cardIndex].primaryHeadlineFeature.getData()}</div>
191 <#if termsAndConditions.getData() == "yes">
192 <div class="intro">
193 <strong>Intro APR<sup>*</sup> for Purchases and Balance Transfers: </strong>${apr!''}
194 <a href="${oadURL_TC}?step=display&offerId=${offerId}&locationCode=${lc}" target="_blank">Terms & Conditions</a>
195 </div>
196 </#if>
197 <a href="${oadURL}?locationCode=${lc}&offerId=${offerId}&preparerType=customer"
198 class="jn-button" data-button-name="cta-button-top" data-product-name="${productUrl!''}"
199 title="Apply Now for ${partnerName!''} ${product!''} Credit Card">${productTitle.getSiblings()[cardIndex].ctaText.getData()}</a>
200 </div>
201 </article>
202 </div>
203 </article>
204 </div>
205 </div>
206 <#else>
207 <#list fiCardsData as fib>
208 <#switch fib.offerType>
209 <#case "144">
210 <#assign cardIndex = 0 >
211 <#assign productUrl = "smart-business-rewards">
212 <#assign product="Smart Business Rewards">
213 <#break>
214 <#case "104">
215 <#assign cardIndex = 0 >
216 <#assign productUrl="max-cash">
217 <#assign product="Max Cash Preferred">
218 <#break>
219 <#case "128">
220 <#assign cardIndex = 1 >
221 <#assign productUrl = "business-cashback">
222 <#assign product="Business Cash">
223 <#break>
224 <#case "108">
225 <#assign cardIndex = 2 >
226 <#assign productUrl = "consumer-platinum2103">
227 <#assign product="Platinum">
228 <#break>
229 <#case "109">
230 <#assign cardIndex = 2 >
231 <#assign productUrl = "consumer-platinum2103">
232 <#assign product="Platinum">
233 <#break>
234 <#case "143">
235 <#assign cardIndex = 2 >
236 <#assign productUrl = "business-real-rewards">
237 <#assign product="Business Real Rewards">
238 <#break>
239 <#case "101">
240 <#assign cardIndex = 1 >
241 <#assign productUrl = "real-rewards">
242 <#assign product="Real Rewards">
243 <#break>
244 <#case "103">
245 <#assign cardIndex = 1 >
246 <#assign productUrl = "real-rewards">
247 <#assign product="Real Rewards">
248 <#break>
249 <#case "121">
250 <#assign cardIndex = 3 >
251 <#assign productUrl = "business-platinum2103">
252 <#assign product="Business">
253 <#break>
254 <#case "115">
255 <#assign cardIndex = 3 >
256 <#assign productUrl = "secured">
257 <#assign product="Secured">
258 <#break>
259 <#default>
260 </#switch>
261 <#assign cardArtImage = cdnCardArtUrl + "/" + fib.filename + ".png">
262 <#assign cardArtImageAlt = cdnCardArtUrl + "/" + fib.filename + ".jpg">
263 <#if url?matches(".*/${productUrl}.*")>
264 <#if (fib.offerType=="108" || fib.offerType=="109" || fib.offerType == "121")>
265 <#assign scrapedData = utilServ.makeCall('crcDDCGetSchumerBox', '${fib.offerId}' + '&'+ '${fib.sourceCode}')>
266 <#if (scrapedData?size > 0)>
267 <#list scrapedData as sItem>
268 <#if ((sItem.scrapedLabel?contains("Annual Percentage Rate (APR) for Purchases")) && (sItem.scrapedValue?has_content)) >
269 <#assign apr = sItem.scrapedValue?replace("(\n|\r\n|\r)+", " ","r")>
270 <#break>
271 </#if>
272 </#list>
273 <script>
274 $(document).ready(function () {
275 var aprText = "${apr}";
276 console.log(aprText);
277 if (aprText) {
278 try {
279 var matches= aprText.match(/\d+(\.\d+)?%?/g);
280 var billing_cycle = matches[1];
281 var apr_min = apr_min = matches[2];
282 var apr_max = apr_max = matches[3];
283 console.log('billing_cycle', billing_cycle);
284 console.log('apr_min', apr_min);
285 console.log('apr_max', apr_max);
286 if (billing_cycle) {
287 $(".scraped-billing-cycle").html(billing_cycle);
288 }
289 if (apr_min) {
290 $(".scraped-apr-min").html(apr_min);
291 }
292 if (apr_max) {
293 $('.scraped-apr-max').html(apr_max);
294 }
295
296 } catch (e) {
297 console.log(e);
298 }
299 }
300 });
301 </script>
302 </#if>
303 </#if>
304 <#if product != "">
305 <#assign card_text = product + " Card">
306 </#if>
307 <div class="content-container content-container-main" title="${partnerName!''} ${product!''} Credit Card">
308 <div class="jn-hero jn-hero-card">
309 <article class="jn-hero-container">
310 <div class="jn-hero-container-data">
311 <article>
312 <div>
313 <img src="${cardArtImage!''}" alt="${partnerName!''}" title="${partnerName!''}"
314 class="jn-img-responsive" onerror="this.onerror=null;this.src='${cardArtImageAlt!''}'">
315 <p>${card_text!''}</p>
316 </div>
317 <div>
318 <div>${productTitle.getSiblings()[cardIndex].primaryHeadlineText.getData()}</div>
319 <div class="feature-text">${productTitle.getSiblings()[cardIndex].primaryHeadlineFeature.getData()}</div>
320 <#if termsAndConditions.getData() == "yes">
321 <div class="intro">
322 <strong>Intro APR<sup>*</sup> for Purchases and Balance Transfers: </strong>${apr!''}
323 <a href="${oadURL_TC}?step=display&offerId=${offerId}&locationCode=${lc}" target="_blank">Terms & Conditions</a>
324 </div>
325 </#if>
326 <a href="${oadURL}?locationCode=${lc}&offerId=${fib.offerId}&preparerType=customer"
327 class="jn-button" data-button-name="cta-button-top" data-product-name="${productUrl!''}"
328 title="Apply Now for ${partnerName!''} ${product!''} Credit Card">${productTitle.getSiblings()[cardIndex].ctaText.getData()}</a>
329 </div>
330 </article>
331 </div>
332 </article>
333 </div>
334 </div>
335
336 </#if>
337 </#list>
338
339 </#if>
340</#if>
Web Content Display
An error occurred while processing the template.
Error on line 31, column 1 in 10154#10192#153417688 clientProfileList?first is undefined. It cannot be assigned to clientProfile
1<#assign url = request.attributes.CURRENT_URL >
2<#assign oadURL = propsUtil.get('elan.oad.url') >
3<#assign qstringmap = httpUtil.getParameterMap(httpUtil.getQueryString(url))>
4<#assign utilServ = serviceLocator.findService("crc-utilities-portlet", "com.elan.crc.utilities.service.CRCRemoteServiceService")>
5<#assign url404 = '/error/404.html'>
6<#assign oadURL_TC = 'https://online1.elancard.com/oad/terms.controller' >
7
8<#assign lc= qstringmap["ecdma-lc"]?first>
9<#assign prefix = "00000" >
10<#assign lcWithPrefix = prefix + lc >
11<#assign withPrefixLength = lcWithPrefix?length >
12<#assign startHere = withPrefixLength - 5>
13<#assign lc = lcWithPrefix?substring(startHere)>
14
15
16<#if qstringmap["ecid"]?has_content>
17 <#assign ecidExt="&ecid="+qstringmap["ecid"]?first>
18<#else>
19 <#assign ecidExt="">
20</#if>
21
22<#assign campaignId = "" >
23<#assign ecidExt="">
24<#if qstringmap["ecid"]?has_content>
25 <#assign campaignId = qstringmap["ecid"]?first >
26 <#assign ecidExt="&ecid="+qstringmap["ecid"]?first>
27</#if>
28
29<#assign clientProfileService = serviceLocator.findService("crc-clientprofile-portlet", "com.elan.crc.servicebuilder.crcclientprofile.service.CrcClientProfileLocalService") >
30<#assign clientProfileList = clientProfileService.findByLocationCode(lc)>
31<#assign clientProfile = clientProfileList?first>
32<#assign partnerName = clientProfile.getMarketingNameLong()>
33<#assign pbu = clientProfile.getPbu()>
34<#assign subbu = clientProfile.getSUBBRANDBUNBR()>
35<#assign cdnCardArtUrl = propsUtil.get('rackspace.cdn.cardart.url')>
36
37<#assign fiCardsData=utilServ.makeCall('crcTier3GetPbuData','0&'+ pbu + '&'+subbu)>
38<#assign temp = []>
39<#assign consumerCards = []>
40<#assign businessCards = []>
41<#assign offerTypeList = []>
42<#assign index = 0>
43<#assign consumerOfferTypes = ["101", "108", "109", "115", "104"]>
44<#assign businessOfferTypes = ["128", "123", "121", "143", "144"]>
45<#list fiCardsData as fib>
46 <#if (fib.offerType?has_content && !(offerTypeList?seq_contains(fib.offerType)))>
47 <#assign offerTypeList = offerTypeList + [fib.offerType]>
48 <#if (consumerOfferTypes?seq_contains(fib.offerType))>
49 <#assign consumerCards = consumerCards + fiCardsData[index..index]>
50 <#elseif (businessOfferTypes?seq_contains(fib.offerType))>
51 <#assign businessCards = businessCards + fiCardsData[index..index]>
52 </#if>
53 <#assign temp = temp + fiCardsData[index..index]>
54 </#if>
55 <#assign index = index + 1>
56</#list>
57
58<#assign fiCardsData = temp>
59<#if (fiCardsData?size > 0)>
60 <#if url?contains("index")>
61 <#assign offerId = "">
62 <#assign sourceCode = "">
63 <#assign cardArtImage = "">
64 <#assign productUrl = "">
65 <#assign cardIndex = 0>
66 <#if (class.getData() == "landing-consumer" && consumerCards?size > 0)>
67 <#if (offerTypeList?seq_contains("108")) || (offerTypeList?seq_contains("109"))>
68 <#list consumerCards as card>
69 <#if (card.offerType=="108") || (card.offerType=="109")>
70 <#assign offerId = card.offerId>
71 <#assign sourceCode = card.sourceCode>
72 <#assign cardArtImage = cdnCardArtUrl + "/"+card.filename+".png">
73 <#assign cardArtImageAlt = cdnCardArtUrl + "/"+card.filename+".jpg">
74 <#assign productUrl="consumer-platinum2103">
75 <#assign product="Platinum">
76 <#assign cardIndex = 2>
77 <#assign scrapedData = utilServ.makeCall('crcDDCGetSchumerBox', '${card.offerId}' + '&'+ '${card.sourceCode}')>
78 <#if (scrapedData?size > 0)>
79 <#list scrapedData as sItem>
80 <#if ((sItem.scrapedLabel?contains("Annual Percentage Rate (APR) for Purchases")) && (sItem.scrapedValue?has_content)) >
81 <#assign apr = sItem.scrapedValue?replace("(\n|\r\n|\r)+", " ","r")>
82 <#break>
83 </#if>
84 </#list>
85 <script>
86 $(document).ready(function () {
87 var aprText = "${apr}";
88 console.log(aprText);
89 if (aprText) {
90 try {
91 var matches= aprText.match(/\d+(\.\d+)?%?/g);
92 var billing_cycle = matches[1];
93 var apr_min = apr_min = matches[2];
94 var apr_max = apr_max = matches[3];
95 console.log('billing_cycle', billing_cycle);
96 console.log('apr_min', apr_min);
97 console.log('apr_max', apr_max);
98 if (billing_cycle) {
99 $(".scraped-billing-cycle").html(billing_cycle);
100 }
101 if (apr_min) {
102 $(".scraped-apr-min").html(apr_min);
103 }
104 if (apr_max) {
105 $('.scraped-apr-max').html(apr_max);
106 }
107
108 } catch (e) {
109 console.log(e);
110 }
111 }
112 });
113 </script>
114 </#if>
115 </#if>
116 </#list>
117 <#else>
118 <#assign displayedCard = consumerCards[0]>
119 <#assign offerId = displayedCard.offerId>
120 <#assign sourceCode = displayedCard.sourceCode>
121 <#assign cardArtImage = cdnCardArtUrl + "/"+ displayedCard.filename + ".png">
122 <#assign cardArtImageAlt = cdnCardArtUrl + "/"+ displayedCard.filename + ".jpg">
123 <#if (displayedCard.offerType=="101" || displayedCard.offerType=="103")>
124 <#assign productUrl="real-rewards">
125 <#assign product="Real Rewards">
126 <#assign cardIndex = 1>
127 <#elseif (displayedCard.offerType=="104")>
128 <#assign productUrl = "max-cash">
129 <#assign product="Max Cash Preferred">
130 <#assign cardIndex = 0>
131 <#elseif (displayedCard.offerType=="115")>
132 <#assign productUrl = "secured">
133 <#assign product="Secured">
134 <#assign cardIndex = 3>
135 </#if>
136 </#if>
137 <#if product != "">
138 <#assign card_text = product + " Card">
139 </#if>
140 </#if>
141 <#if (class.getData() == "landing-business" && businessCards?size > 0)>
142 <#if (offerTypeList?seq_contains("144")) >
143 <#list businessCards as card>
144 <#if (card.offerType=="144")>
145 <#assign offerId = card.offerId>
146 <#assign sourceCode = card.sourceCode>
147 <#assign cardArtImage = cdnCardArtUrl + "/"+card.filename+".png">
148 <#assign cardArtImageAlt = cdnCardArtUrl + "/"+card.filename+".jpg">
149 <#assign productUrl="smart-business-rewards">
150 <#assign product="Smart Business Rewards">
151 <#assign cardIndex = 0>
152 </#if>
153 </#list>
154 <#else>
155 <#assign displayedCard = businessCards[0]>
156 <#assign offerId = displayedCard.offerId>
157 <#assign sourceCode = displayedCard.sourceCode>
158 <#assign cardArtImage = cdnCardArtUrl + "/"+ displayedCard.filename + ".png">
159 <#assign cardArtImageAlt = cdnCardArtUrl + "/"+ displayedCard.filename + ".jpg">
160 <#if (displayedCard.offerType=="143")>
161 <#assign productUrl="business-real-rewards">
162 <#assign product="Business Real Rewards">
163 <#assign cardIndex = 2>
164 <#elseif (displayedCard.offerType=="128")>
165 <#assign productUrl="business-cash">
166 <#assign product="Business Cash">
167 <#assign cardIndex = 1>
168 <#elseif (displayedCard.offerType=="121")>
169 <#assign productUrl = "business-platinum2103">
170 <#assign product="Business">
171 <#assign cardIndex = 3>
172 </#if>
173 </#if>
174 <#if product != "">
175 <#assign card_text = product + " Card">
176 </#if>
177 </#if>
178
179 <div class="content-container content-container-main product-${productUrl} tier3-hero-${class.getData()}" title="${partnerName!''} ${product!''} Credit Card">
180 <div class="jn-hero jn-hero-card">
181 <article class="jn-hero-container">
182 <div class="jn-hero-container-data">
183 <article>
184 <div>
185 <img src="${cardArtImage!''}" alt="${partnerName!''}" title="${partnerName!''}" class="jn-img-responsive" onerror="this.onerror=null;this.src='${cardArtImageAlt!''}'">
186 <p>${card_text!''}</p>
187 </div>
188 <div>
189 <div>${productTitle.getSiblings()[cardIndex].primaryHeadlineText.getData()}</div>
190 <div class="feature-text">${productTitle.getSiblings()[cardIndex].primaryHeadlineFeature.getData()}</div>
191 <#if termsAndConditions.getData() == "yes">
192 <div class="intro">
193 <strong>Intro APR<sup>*</sup> for Purchases and Balance Transfers: </strong>${apr!''}
194 <a href="${oadURL_TC}?step=display&offerId=${offerId}&locationCode=${lc}" target="_blank">Terms & Conditions</a>
195 </div>
196 </#if>
197 <a href="${oadURL}?locationCode=${lc}&offerId=${offerId}&preparerType=customer"
198 class="jn-button" data-button-name="cta-button-top" data-product-name="${productUrl!''}"
199 title="Apply Now for ${partnerName!''} ${product!''} Credit Card">${productTitle.getSiblings()[cardIndex].ctaText.getData()}</a>
200 </div>
201 </article>
202 </div>
203 </article>
204 </div>
205 </div>
206 <#else>
207 <#list fiCardsData as fib>
208 <#switch fib.offerType>
209 <#case "144">
210 <#assign cardIndex = 0 >
211 <#assign productUrl = "smart-business-rewards">
212 <#assign product="Smart Business Rewards">
213 <#break>
214 <#case "104">
215 <#assign cardIndex = 0 >
216 <#assign productUrl="max-cash">
217 <#assign product="Max Cash Preferred">
218 <#break>
219 <#case "128">
220 <#assign cardIndex = 1 >
221 <#assign productUrl = "business-cashback">
222 <#assign product="Business Cash">
223 <#break>
224 <#case "108">
225 <#assign cardIndex = 2 >
226 <#assign productUrl = "consumer-platinum2103">
227 <#assign product="Platinum">
228 <#break>
229 <#case "109">
230 <#assign cardIndex = 2 >
231 <#assign productUrl = "consumer-platinum2103">
232 <#assign product="Platinum">
233 <#break>
234 <#case "143">
235 <#assign cardIndex = 2 >
236 <#assign productUrl = "business-real-rewards">
237 <#assign product="Business Real Rewards">
238 <#break>
239 <#case "101">
240 <#assign cardIndex = 1 >
241 <#assign productUrl = "real-rewards">
242 <#assign product="Real Rewards">
243 <#break>
244 <#case "103">
245 <#assign cardIndex = 1 >
246 <#assign productUrl = "real-rewards">
247 <#assign product="Real Rewards">
248 <#break>
249 <#case "121">
250 <#assign cardIndex = 3 >
251 <#assign productUrl = "business-platinum2103">
252 <#assign product="Business">
253 <#break>
254 <#case "115">
255 <#assign cardIndex = 3 >
256 <#assign productUrl = "secured">
257 <#assign product="Secured">
258 <#break>
259 <#default>
260 </#switch>
261 <#assign cardArtImage = cdnCardArtUrl + "/" + fib.filename + ".png">
262 <#assign cardArtImageAlt = cdnCardArtUrl + "/" + fib.filename + ".jpg">
263 <#if url?matches(".*/${productUrl}.*")>
264 <#if (fib.offerType=="108" || fib.offerType=="109" || fib.offerType == "121")>
265 <#assign scrapedData = utilServ.makeCall('crcDDCGetSchumerBox', '${fib.offerId}' + '&'+ '${fib.sourceCode}')>
266 <#if (scrapedData?size > 0)>
267 <#list scrapedData as sItem>
268 <#if ((sItem.scrapedLabel?contains("Annual Percentage Rate (APR) for Purchases")) && (sItem.scrapedValue?has_content)) >
269 <#assign apr = sItem.scrapedValue?replace("(\n|\r\n|\r)+", " ","r")>
270 <#break>
271 </#if>
272 </#list>
273 <script>
274 $(document).ready(function () {
275 var aprText = "${apr}";
276 console.log(aprText);
277 if (aprText) {
278 try {
279 var matches= aprText.match(/\d+(\.\d+)?%?/g);
280 var billing_cycle = matches[1];
281 var apr_min = apr_min = matches[2];
282 var apr_max = apr_max = matches[3];
283 console.log('billing_cycle', billing_cycle);
284 console.log('apr_min', apr_min);
285 console.log('apr_max', apr_max);
286 if (billing_cycle) {
287 $(".scraped-billing-cycle").html(billing_cycle);
288 }
289 if (apr_min) {
290 $(".scraped-apr-min").html(apr_min);
291 }
292 if (apr_max) {
293 $('.scraped-apr-max').html(apr_max);
294 }
295
296 } catch (e) {
297 console.log(e);
298 }
299 }
300 });
301 </script>
302 </#if>
303 </#if>
304 <#if product != "">
305 <#assign card_text = product + " Card">
306 </#if>
307 <div class="content-container content-container-main" title="${partnerName!''} ${product!''} Credit Card">
308 <div class="jn-hero jn-hero-card">
309 <article class="jn-hero-container">
310 <div class="jn-hero-container-data">
311 <article>
312 <div>
313 <img src="${cardArtImage!''}" alt="${partnerName!''}" title="${partnerName!''}"
314 class="jn-img-responsive" onerror="this.onerror=null;this.src='${cardArtImageAlt!''}'">
315 <p>${card_text!''}</p>
316 </div>
317 <div>
318 <div>${productTitle.getSiblings()[cardIndex].primaryHeadlineText.getData()}</div>
319 <div class="feature-text">${productTitle.getSiblings()[cardIndex].primaryHeadlineFeature.getData()}</div>
320 <#if termsAndConditions.getData() == "yes">
321 <div class="intro">
322 <strong>Intro APR<sup>*</sup> for Purchases and Balance Transfers: </strong>${apr!''}
323 <a href="${oadURL_TC}?step=display&offerId=${offerId}&locationCode=${lc}" target="_blank">Terms & Conditions</a>
324 </div>
325 </#if>
326 <a href="${oadURL}?locationCode=${lc}&offerId=${fib.offerId}&preparerType=customer"
327 class="jn-button" data-button-name="cta-button-top" data-product-name="${productUrl!''}"
328 title="Apply Now for ${partnerName!''} ${product!''} Credit Card">${productTitle.getSiblings()[cardIndex].ctaText.getData()}</a>
329 </div>
330 </article>
331 </div>
332 </article>
333 </div>
334 </div>
335
336 </#if>
337 </#list>
338
339 </#if>
340</#if>
Web Content Display
An error occurred while processing the template.
Error on line 35, column 1 in 10154#10192#153417676 clientProfileList?first is undefined. It cannot be assigned to clientProfile
1<#assign utilServ = serviceLocator.findService("crc-utilities-portlet", "com.elan.crc.utilities.service.CRCRemoteServiceService") >
2<#assign oadURL = propsUtil.get('elan.oad.url') >
3<#assign url = request.attributes.CURRENT_URL >
4<#assign qstringmap = httpUtil.getParameterMap(httpUtil.getQueryString(url))>
5<#assign environment = url?replace('/index.*','','r')>
6<#assign oadURL_TC = 'https://online1.elancard.com/oad/terms.controller' >
7
8<script>
9console.log('${url}');
10</script>
11
12<#assign lc= qstringmap["ecdma-lc"]?first>
13<#assign prefix = "00000" >
14<#assign lcWithPrefix = prefix + lc >
15<#assign withPrefixLength = lcWithPrefix?length >
16<#assign startHere = withPrefixLength - 5>
17<#assign lc = lcWithPrefix?substring(startHere)>
18
19
20<#if qstringmap["ecid"]?has_content>
21 <#assign ecidExt="&ecid="+qstringmap["ecid"]?first>
22<#else>
23 <#assign ecidExt="">
24</#if>
25
26<#if oadURL?contains("uat-")>
27 <#assign oadURL_TC = 'https://uat-online1.elancard.com/oad/terms.controller' >
28<#else>
29 <#assign oadURL_TC = 'https://online1.elancard.com/oad/terms.controller' >
30</#if>
31
32
33<#assign clientProfileService = serviceLocator.findService("crc-clientprofile-portlet", "com.elan.crc.servicebuilder.crcclientprofile.service.CrcClientProfileLocalService") >
34<#assign clientProfileList = clientProfileService.findByLocationCode(lc)>
35<#assign clientProfile = clientProfileList?first>
36<#assign partnerName = clientProfile.getMarketingNameLong()>
37<#assign pbu = clientProfile.getPbu()>
38<#assign subbu = clientProfile.getSUBBRANDBUNBR()>
39<script>
40 console.log('pbu:', "${pbu}", 'subbu:', '${subbu}');
41 console.log('url:', "${environment}");
42</script>
43<#assign cdnCardArtUrl = propsUtil.get('rackspace.cdn.cardart.url')>
44
45<#if qstringmap["ecid"]?has_content>
46 <#assign ecidExt="&ecid="+qstringmap["ecid"]?first>
47 <#assign campaignId = qstringmap["ecid"]?first >
48<#else>
49 <#assign ecidExt="">
50 <#assign campaignId = "" >
51</#if>
52
53<#assign fiCardsData = utilServ.makeCall('crcTier3GetPbuData','0&'+ pbu +'&'+subbu)>
54<#-- filter duplicated cards-->
55<#assign consumerCards = []>
56<#assign businessCards = []>
57<#assign offerTypeList = []>
58<#assign consumerOfferTypes =['104', '101', '108', '109', '115']>
59<#assign businessOfferTypes =['144', '128', '143', '121', '123']>
60<#assign index = 0>
61<#list fiCardsData as fib>
62 <#if (fib.offerType?has_content && !(offerTypeList?seq_contains(fib.offerType)))>
63 <#assign offerTypeList = offerTypeList + [fib.offerType]>
64 <#if consumerOfferTypes?seq_contains(fib.offerType)>
65 <#assign consumerCards = consumerCards + fiCardsData[index..index]>
66 <#elseif (businessOfferTypes?seq_contains(fib.offerType))>
67 <#assign businessCards = businessCards + fiCardsData[index..index]>
68 </#if>
69 </#if>
70 <#assign index = index + 1>
71</#list>
72
73<#if ((consumerCards?size > 0) || (businessCards?size > 0))>
74 <div class="content-container content-container-main jn-consumer-content">
75 <#if ((consumerCards?size > 0) && (businessCards?size > 0))>
76 <nav class="jn-primary-nav two-tabs">
77 <ul>
78 <li title="${partnerName!''} - Personal products">
79 <a href="#" class="tab-nav active" id="consumerTab"><span>Personal</span></a>
80 </li>
81 <li title="${partnerName!''} - Business products">
82 <a href="#" class="tab-nav" id="businessTab"><span>Business</span></a>
83 </li>
84 </ul>
85 </nav>
86 <#else>
87 <#if (consumerCards?size > 0)>
88 <nav class="jn-primary-nav" title="${partnerName!''} - Personal products">
89 <ul>
90 <li>
91 <p class="tab-nav" id="consumerTab"><span>Personal</span></p>
92 </li>
93 </ul>
94 </nav>
95 </#if>
96 <#if (businessCards?size > 0)>
97 <nav class="jn-primary-nav" title="${partnerName!''} - Business products">
98 <ul>
99 <li>
100 <p class="tab-nav" id="businessTab"><span>Business</span></p>
101 </li>
102 </ul>
103 </nav>
104 </#if>
105 </#if>
106 <#if (consumerCards?size > 0)>
107 <div class="tab-more-wrapper">
108 <div class="jn-consumer-content-wrapper jn-tab-content active transition-start" data-id="consumerTab" title="${partnerName!''} - Personal products">
109
110 <#list consumerCards as fib>
111 <#assign cardArtImage = cdnCardArtUrl + "/" + fib.filename + ".png" >
112 <#assign cardArtImageAlt = cdnCardArtUrl + "/" + fib.filename + ".jpg" >
113 <#switch fib.offerType>
114 <#case "101">
115 <#assign productName = "real-rewards">
116 <#assign product="Real Rewards">
117 <#assign cardIndex = 1>
118 <#break>
119 <#case "108">
120 <#assign productName = "consumer-platinum2103">
121 <#assign product="Platinum">
122 <#assign cardIndex = 2>
123 <#break>
124 <#case "109">
125 <#assign productName = "consumer-platinum2103">
126 <#assign product="Platinum">
127 <#assign cardIndex = 2>
128 <#break>
129 <#case "115">
130 <#assign productName = "secured">
131 <#assign product="Secured">
132 <#assign cardIndex = 3>
133 <#break>
134 <#case "104">
135 <#assign productName = "max-cash">
136 <#assign product="Max Cash">
137 <#assign cardIndex = 0>
138 <#break>
139 <#default>
140 </#switch>
141 <#assign titleText = consumerTitle.getSiblings()[cardIndex].Title.getData()>
142 <#assign titleText = titleText?replace('<[^>]+>','','r')>
143 <#assign APR="">
144 <#assign AMF="">
145 <#assign BAL="">
146 <#assign scrapedData = utilServ.makeCall('crcDDCGetSchumerBox', fib.offerId + '&'+ fib.sourceCode)>
147 <#if (scrapedData?size > 0)>
148 <#list scrapedData as sItem>
149 <#if ((sItem.scrapedLabel?contains("Annual Percentage Rate (APR) for Purchases")) && (sItem.scrapedValue?has_content)) >
150 <#assign APR = sItem.scrapedValue>
151 <#elseif ((sItem.scrapedLabel?contains("Annual Membership Fee")) && (sItem.scrapedValue?has_content)) >
152 <#assign AMF = sItem.scrapedValue>
153 <#elseif ((sItem.scrapedLabel?contains("APR for Balance Transfers")) && (sItem.scrapedValue?has_content)) >
154 <#assign BAL = sItem.scrapedValue>
155 </#if>
156 <#if (APR?has_content && AMF?has_content && BAL?has_content)>
157 <#break>
158 </#if>
159 </#list>
160 </#if>
161 <div class="jn-consumer-item item-${fib.offerType}" title="${partnerName!''} ${product!''} Credit Card">
162 <img src="${cardArtImage!''}" alt="${titleText}" class="jn-img-responsive" onerror="this.onerror=null;this.src='${cardArtImageAlt!''}'">
163 <h4>${consumerTitle.getSiblings()[cardIndex].Title.getData()}</h4>
164 <p>${consumerTitle.getSiblings()[cardIndex].headlineText.getData()}</p>
165 <ul class="actions">
166 <li>
167 <a href="${oadURL}?locationCode=${lc}&offerId=${fib.offerId}&preparerType=customer"
168 class="applyNowLink" data-button-name="apply-now-link" data-product-name="${productName!''}"
169 title="Apply Now for ${partnerName!''} ${product!''} Credit Card">${consumerTitle.getSiblings()[cardIndex].applyNow.getData()}</a>
170 </li>
171 <li><a href="${environment}/${productName}?ecdma-lc=${lc}${ecidExt}">${consumerTitle.getSiblings()[cardIndex].LearnMore.getData()}</a>
172 </li>
173 </ul>
174 <div class="jn-additional">
175 <ul class="${fib.offerType}">
176 <#if (fib.offerType == "104")>
177 <li class="${fib.offerType}">
178 <p>
179 <strong>APR<sup>*</sup> for Purchases: </strong>
180 ${APR!''} <a href="${oadURL}?locationCode=${lc}&offerId=${fib.offerId}&preparerType=customer#termsAndCond-details" target="_blank" class="t_c_link">Terms & Conditions</a></p>
181 </li>
182 <li class="${fib.offerType}">
183 <p>
184 <strong>Intro APR<sup>*</sup> for Balance Transfers: </strong>
185 ${BAL!''} <a href="${oadURL}?locationCode=${lc}&offerId=${fib.offerId}&preparerType=customer#termsAndCond-details" target="_blank" class="t_c_link">Terms & Conditions</a></p>
186 </li>
187 <#elseif (fib.offerType == "115")>
188 <li class="${fib.offerType}">
189 <p>
190 <strong>APR<sup class="tag-1">1</sup> for Purchases and Balance Transfers: </strong>
191 ${APR!''} <a href="${oadURL_TC}?locationCode=${lc}&offerId=${fib.offerId}&preparerType=customer#termsAndCond-details" target="_blank" class="t_c_link">Terms & Conditions</a></p>
192 </li>
193 <#elseif (fib.offerType == "101")>
194 <li class="${fib.offerType}">
195 <p>
196 <strong>Intro APR<sup class="tag-1">1</sup> for Purchases and Balance Transfers: </strong>
197 ${APR!''} <a href="${oadURL}?locationCode=${lc}&offerId=${fib.offerId}&preparerType=customer#termsAndCond-details" target="_blank" class="t_c_link">Terms & Conditions</a></p>
198 </li>
199 <#else>
200 <li class="${fib.offerType}">
201 <p>
202 <strong>Intro APR<sup>*</sup> for Purchases and Balance Transfers: </strong>
203 ${APR!''} <a href="${oadURL}?locationCode=${lc}&offerId=${fib.offerId}&preparerType=customer#termsAndCond-details" target="_blank" class="t_c_link">Terms & Conditions</a></p>
204 </li>
205 </#if>
206
207
208
209 <#if consumerTitle.getSiblings()[cardIndex].additionalInfo.getSiblings()?has_content>
210 <#list consumerTitle.getSiblings()[cardIndex].additionalInfo.getSiblings() as marketingInfo>
211 <li>${marketingInfo.getData()}</li>
212 </#list>
213 </#if>
214 <li>
215 <p>Annual Fee: ${AMF!''} <a href="${oadURL_TC}?step=display&offerId=${fib.offerId}&locationCode=${lc}" target="_blank" class="t_c_link">Terms & Conditions</a></p>
216 </li>
217 </ul>
218 </div>
219 </div>
220 </#list>
221 </div>
222 </div>
223 </#if>
224 <#if (businessCards?size > 0)>
225 <div class="tab-more-wrapper">
226 <div class="jn-consumer-content-wrapper jn-tab-content transition-start" data-id="businessTab" title="${partnerName!''} - Business products">
227
228 <#list businessCards as fib>
229 <#assign cardArtImage = cdnCardArtUrl + "/"+fib.filename+".png">
230 <#assign cardArtImageAlt = cdnCardArtUrl + "/"+fib.filename+".jpg">
231 <#switch fib.offerType>
232 <#case "144">
233 <#assign productName = "smart-business-rewards">
234 <#assign product="Smart Business Rewards">
235 <#assign cardIndex = 4>
236 <#break>
237 <#case "128">
238 <#assign productName = "business-cashback">
239 <#assign product="Business Cash">
240 <#assign cardIndex = 5>
241 <#break>
242 <#case "143">
243 <#assign productName = "business-real-rewards">
244 <#assign product="Business Real Rewards">
245 <#assign cardIndex = 6>
246 <#break>
247 <#case "121">
248 <#assign productName = "business-platinum2103">
249 <#assign product="Business Card">
250 <#assign cardIndex = 7>
251 <#break>
252 <#default>
253 </#switch>
254
255 <#assign APR="">
256 <#assign AMF="">
257 <#assign scrapedData = utilServ.makeCall('crcDDCGetSchumerBox', fib.offerId + '&'+ fib.sourceCode)>
258 <#if (scrapedData?size > 0)>
259 <#list scrapedData as sItem>
260 <#if ((sItem.scrapedLabel?contains("Annual Percentage Rate (APR) for Purchases")) && (sItem.scrapedValue?has_content)) >
261 <#assign APR = sItem.scrapedValue>
262 <#elseif ((sItem.scrapedLabel?contains("Annual Membership Fee")) && (sItem.scrapedValue?has_content)) >
263 <#assign AMF = sItem.scrapedValue>
264 </#if>
265 <#if (APR?has_content && AMF?has_content)>
266 <#break>
267 </#if>
268 </#list>
269 </#if>
270
271 <div class="jn-consumer-item" title="${partnerName!''} ${product!''} Credit Card">
272 <img src="${cardArtImage!''}" alt="${partnerName!''}" class="jn-img-responsive" onerror="this.onerror=null;this.src='${cardArtImageAlt!''}'">
273 <h4>${consumerTitle.getSiblings()[cardIndex].Title.getData()}</h4>
274 <p>${consumerTitle.getSiblings()[cardIndex].headlineText.getData()}</p>
275 <ul class="actions">
276 <li>
277 <a href="${oadURL}?locationCode=${lc}&offerId=${fib.offerId}&preparerType=customer"
278 class="applyNowLink" data-button-name="apply-now-link" data-product-name="${productName!''}"
279 title="Apply Now for ${partnerName!''} ${product!''} Credit Card">${consumerTitle.getSiblings()[cardIndex].applyNow.getData()}</a>
280 </li>
281 <li><a href="${environment}/${productName}?ecdma-lc=${lc}${ecidExt}">${consumerTitle.getSiblings()[cardIndex].LearnMore.getData()}</a></li>
282 </ul>
283 <div class="jn-additional">
284 <ul>
285 <#if (fib.offerType == "144")>
286 <li>
287 <p>
288 <strong>APR<sup>*</sup> for Purchases and Balance Transfers: </strong>
289 ${APR!''}
290 <a href="${oadURL_TC}?step=display&offerId=${fib.offerId}&locationCode=${lc}" target="_blank" class="t_c_link">Terms & Conditions</a>
291 </p>
292 </li>
293 <#else>
294 <li>
295 <p>
296 <strong>Intro APR<sup>*</sup> for Purchases and Balance Transfers: </strong>
297 ${APR!''}
298 <a href="${oadURL_TC}?step=display&offerId=${fib.offerId}&locationCode=${lc}" target="_blank" class="t_c_link">Terms & Conditions</a>
299 </p>
300 </li>
301 </#if>
302 <#if consumerTitle.getSiblings()[cardIndex].additionalInfo.getSiblings()?has_content>
303 <#list consumerTitle.getSiblings()[cardIndex].additionalInfo.getSiblings() as marketingInfo>
304 <li>${marketingInfo.getData()}</li>
305 </#list>
306 </#if>
307 <li><p>Annual Fee: ${AMF!''} <a
308 href="${oadURL_TC}?step=display&offerId=${fib.offerId}&locationCode=${lc}" target="_blank" class="t_c_link">Terms & Conditions</a></p>
309 </li>
310 </ul>
311 </div>
312 </div>
313
314 </#list>
315 </div>
316 </div>
317 </#if>
318 <div class="more-link" ><a href="#" role="button" aria-label="More Cards"><div class="more-text">MORE <br> CARDS </div><div class="more-caret"></div></a></div>
319 <div class="less-link"><a href="#" role="button" aria-label="Less Cards"><div class="less-caret"></div> <div class="less-text">BACK</div></a></div>
320 </div>
321
322 <script>
323 document.addEventListener('DOMContentLoaded', function() {
324 var tabs=$('.tab-nav');
325 var consumerSelector = '.jn-consumer-content-wrapper.jn-tab-content[data-id="consumerTab"]';
326 var businessSelector = '.jn-consumer-content-wrapper.jn-tab-content[data-id="businessTab"]';
327 var screenWidthMobile = 768;
328 var screenWidth = window.innerWidth;
329 if (tabs.length == 1) {
330 $(tabs).parent().css('margin', '0');
331 if ($(consumerSelector).length > 0) {
332 hideHeroAndDisclaimer('business');
333 showHeroAndDisclaimer('consumer');
334 changeCardLayout(consumerSelector);
335 renumberFootnote("consumer");
336 createMetaTag("consumer");
337 }
338 if ($(businessSelector).length > 0) {
339 $(businessSelector).addClass('active');
340 hideHeroAndDisclaimer('consumer');
341 showHeroAndDisclaimer('business');
342 changeCardLayout(businessSelector);
343 renumberFootnote("business");
344 createMetaTag("business");
345 }
346 if(screenWidth > screenWidthMobile) {
347 if ($("#consumerTab").length > 0) {
348 if ($(consumerSelector + ' .jn-consumer-item').length > 3) {
349 $('.more-link').show();
350 } else {
351 $('.more-link').hide();
352 $('.less-link').hide();
353 }
354 } else if ($("#businessTab").length > 0) {
355 if ($(businessSelector + ' .jn-consumer-item').length > 3) {
356 $('.more-link').show();
357 } else {
358 $('.more-link').hide();
359 $('.less-link').hide();
360 }
361 }
362 }
363 }
364 if (tabs.length == 2) {
365 renumberFootnote("consumer");
366 renumberFootnote("business");
367 createMetaTag("consumer");
368 if ($(consumerSelector + ' .jn-consumer-item').length < 3) {
369 changeCardLayout(consumerSelector);
370 }
371 if ($(businessSelector + ' .jn-consumer-item').length < 3) {
372 changeCardLayout(businessSelector);
373 }
374 if(screenWidth > screenWidthMobile) {
375 if ($(consumerSelector + ' .jn-consumer-item').length > 3) {
376 $('.more-link').show();
377 } else {
378 $('.more-link').hide();
379 $('.less-link').hide();
380 }
381 $(tabs).click(function(){
382 if ($(this).attr('id') === "consumerTab") {
383 if ($(consumerSelector + ' .jn-consumer-item').length > 3) {
384 slideDiv = $('.jn-tab-content.active');
385 $(slideDiv).removeClass('transition-left');
386 $('.less-link').hide();
387 $('.more-link').show();
388 } else {
389 $('.less-link').hide();
390 $('.more-link').hide();
391 }
392 }
393 if ($(this).attr('id') === "businessTab") {
394 if ($(businessSelector + ' .jn-consumer-item').length > 3) {
395 slideDiv = $('.jn-tab-content.active');
396 $(slideDiv).removeClass('transition-left');
397 $('.less-link').hide();
398 $('.more-link').show();
399 } else {
400 $('.less-link').hide();
401 $('.more-link').hide();
402 }
403 }
404 });
405 }
406 var tabsNav = document.querySelectorAll('.tab-nav');
407 togglePrimaryNav(tabsNav);
408 }
409 $('.more-link, .less-link').click(function(e){
410 e.preventDefault();
411 });
412 $('.more-link').click(function(){
413 slideDiv = $('.jn-tab-content.active');
414 $(slideDiv).addClass('transition-left');
415 $('.less-link').show();
416 $(this).hide();
417 });
418 $('.less-link').click(function(){
419 slideDiv = $('.jn-tab-content.active');
420 $(slideDiv).removeClass('transition-left');
421 $(this).hide();
422 $('.more-link').show();
423 });
424 });
425 // Primary Nav function
426
427 function togglePrimaryNav(elem) {
428 for (var i = 0; i < elem.length; i++) {
429 elem[i].addEventListener("click", function(e) {
430
431 var current = this,
432 allSections = document.querySelectorAll('[data-id]'),
433 section = document.querySelector("[data-id='"+ current.id +"']");
434
435 for (var a = 0; a < allSections.length; a++) {
436 allSections[a].classList.remove('active');
437 }
438 for (var c = 0; c < elem.length; c++) {
439 if (current != elem[c]) {
440 elem[c].classList.remove('active');
441 } else {
442 current.classList.add('active');
443 section.classList.add('active');
444 hideHeroAndDisclaimer('consumer');
445 hideHeroAndDisclaimer('business');
446 if(current.getAttribute('id') === "consumerTab"){
447 showHeroAndDisclaimer('consumer');
448 } else if(current.getAttribute('id') === "businessTab"){
449 showHeroAndDisclaimer('business');
450 }
451 }
452 }
453 e.preventDefault();
454 });
455 }
456 }
457
458 function renumberFootnote(type) {
459 var discriptionSelector = '.jn-consumer-content-wrapper.jn-tab-content' + '[data-id="' + type + 'Tab"]';
460 var disclaimerSelector = '.tier3-disclaimer-landing-' + type;
461 var heroSelector = '.tier3-hero-landing-' + type;
462 var numOfFootnote = $(disclaimerSelector + ' sup').length;
463 var showList = [];
464 var hideList=[];
465 for (var i = 1; i <= numOfFootnote; i++) {
466 var cssClass="tag-" + i;
467 if ($(discriptionSelector + ' sup').hasClass(cssClass) || $(heroSelector + ' sup').hasClass(cssClass)) {
468 showList.push(i);
469 } else {
470 hideList.push(i);
471 }
472 }
473 for (var i = 1; i < showList.length + 1; i++) {
474 if(showList[i-1] != i) {
475 var className="tag-" + showList[i-1];
476 $(heroSelector).find("." + className).html(i);
477 // $(discriptionSelector).find("." + className).html(i);
478 $(disclaimerSelector).find("." + className).html(i);
479 }
480 }
481 for (var i = 0; i <hideList.length; i++) {
482 var cname="tag-" + hideList[i];
483 $(disclaimerSelector).find("." + cname).parent().hide();
484 }
485 }
486
487 function changeCardLayout(cssSelector) {
488 var numOfCards = $(cssSelector + ' .jn-consumer-item').length;
489 console.log('numofcards', numOfCards);
490 if(numOfCards == 1) {
491 $(cssSelector).addClass('one-card');
492 } else if (numOfCards == 2) {
493 $(cssSelector).addClass('two-card');
494 }
495 }
496 function hideHeroAndDisclaimer(type) {
497 try {
498 document.querySelector('.tier3-hero-landing-'+ type).classList.remove('show');
499 document.querySelector('.tier3-hero-landing-'+ type).classList.add('hide');
500 } catch (e) {
501 console.log(e);
502 }
503
504 try {
505 document.querySelector('.tier3-disclaimer-landing-'+ type).classList.remove('show');
506 document.querySelector('.tier3-disclaimer-landing-'+ type).classList.add('hide');
507 } catch (e) {
508 console.log(e);
509 }
510
511 }
512 function showHeroAndDisclaimer(type) {
513 try {
514 document.querySelector('.tier3-hero-landing-'+ type).classList.add('show');
515 document.querySelector('.tier3-hero-landing-'+ type).classList.remove('hide');
516 } catch (e) {
517 console.log(e);
518 }
519
520 try {
521 document.querySelector('.tier3-disclaimer-landing-'+ type).classList.add('show');
522 document.querySelector('.tier3-disclaimer-landing-'+ type).classList.remove('hide');
523 } catch (e) {
524 console.log(e);
525 }
526
527 }
528 function createMetaTag(type) {
529 var partnerName = "${partnerName!0}";
530 var product_name = $('.jn-hero-container .jn-button').data('product-name');
531 var metaDesc ="";
532 if (type == "consumer") {
533 if(product_name == "consumer-platinum2103") {
534 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.";
535 } else if(product_name == "real-rewards") {
536 metaDesc = "Apply Today for a "+partnerName+" Credit Card. Take home 2,500 bonus points after your first purchase.";
537 } else if(product_name == "secured") {
538 metaDesc = "Apply Today for a "+partnerName+" Credit Card. Use this card as a solid foundation to build your credit.";
539 } else if(product_name == "max-cash") {
540 metaDesc = "Apply Today for a "+partnerName+" Credit Card. Earn a $150 Bonus and 5% cash back on the two categories you select.";
541 }
542
543 } else if (type == "business") {
544 if(product_name == "business-cashback") {
545 metaDesc = "Apply Today for a "+partnerName+" Credit Card. Earn Cash back on common business expenses.";
546 } else if(product_name == "business-real-rewards") {
547 metaDesc = "Apply Today for a "+partnerName+" Credit Card. Get more rewards in the categories you spend the most on.";
548 } else if(product_name == "business-visa") {
549 metaDesc = "Apply Today for a "+partnerName+" Business Card. 0% Intro APR on Purchases and Balance Transfers for 15 Billing Cycles";
550 } else if(product_name == "smart-business-rewards") {
551 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.";
552 }
553 }
554 var m = document.createElement('meta');
555 m.name = 'description';
556 m.content = metaDesc;
557 document.head.appendChild(m);
558 }
559
560 </script>
561</#if>
Web Content Display
An error occurred while processing the template.
Error on line 14, column 1 in 10154#10192#153417682 clientProfileList?first is undefined. It cannot be assigned to clientProfile
1<#assign utilServ = serviceLocator.findService("crc-utilities-portlet", "com.elan.crc.utilities.service.CRCRemoteServiceService") >
2<#assign url = request.attributes.CURRENT_URL >
3<#assign qstringmap = httpUtil.getParameterMap(httpUtil.getQueryString(url))>
4
5<#assign lc= qstringmap["ecdma-lc"]?first>
6<#assign prefix = "00000" >
7<#assign lcWithPrefix = prefix + lc >
8<#assign withPrefixLength = lcWithPrefix?length >
9<#assign startHere = withPrefixLength - 5>
10<#assign lc = lcWithPrefix?substring(startHere)>
11
12<#assign clientProfileService = serviceLocator.findService("crc-clientprofile-portlet", "com.elan.crc.servicebuilder.crcclientprofile.service.CrcClientProfileLocalService") >
13<#assign clientProfileList = clientProfileService.findByLocationCode(lc)>
14<#assign clientProfile = clientProfileList?first>
15<#assign partnerName = clientProfile.getMarketingNameLong()>
16
17 <div class="content-container" title="${partnerName!''} - Disclaimer">
18 <div class="jn-disclaimer tier3-disclaimer-${class.getData()}">
19 ${content.getData()}
20 </div>
21 </div>
Web Content Display
An error occurred while processing the template.
Error on line 14, column 1 in 10154#10192#153417682 clientProfileList?first is undefined. It cannot be assigned to clientProfile
1<#assign utilServ = serviceLocator.findService("crc-utilities-portlet", "com.elan.crc.utilities.service.CRCRemoteServiceService") >
2<#assign url = request.attributes.CURRENT_URL >
3<#assign qstringmap = httpUtil.getParameterMap(httpUtil.getQueryString(url))>
4
5<#assign lc= qstringmap["ecdma-lc"]?first>
6<#assign prefix = "00000" >
7<#assign lcWithPrefix = prefix + lc >
8<#assign withPrefixLength = lcWithPrefix?length >
9<#assign startHere = withPrefixLength - 5>
10<#assign lc = lcWithPrefix?substring(startHere)>
11
12<#assign clientProfileService = serviceLocator.findService("crc-clientprofile-portlet", "com.elan.crc.servicebuilder.crcclientprofile.service.CrcClientProfileLocalService") >
13<#assign clientProfileList = clientProfileService.findByLocationCode(lc)>
14<#assign clientProfile = clientProfileList?first>
15<#assign partnerName = clientProfile.getMarketingNameLong()>
16
17 <div class="content-container" title="${partnerName!''} - Disclaimer">
18 <div class="jn-disclaimer tier3-disclaimer-${class.getData()}">
19 ${content.getData()}
20 </div>
21 </div>