Lisävarusteet

— 4 Merkintöjä per sivu
Näytetään tulokset 1 - 4 / 9

Promotuotteet

Genelec metallitarra

Mitat: 5,9cm x 1,2cm

Metallilogo, jossa kirjaimet on eriteltynä toisistaan. Helppo kuitenkin liimata kiinni, sillä tarrassa on mukana ns. asetin jonka avulla kokonaisuuden saa liimattua kerralla paikalleen.

9 €

GLM 4 muki

Vetoisuus 3 dl.

12 €

Genelec muki

Vetoisuus 2 dl.

10 €

The Ones metallitarra

Koko 4 x 5 cm

9 €

Genelec kuksa + Genelec Moments -kahvi

Suomessa valmistettu ekologinen Genelec-kuksa.

28 €

Genelec take away -termosmuki

Take away -termosmuki josta nautit kahvit, teet tai vettä. Istuu hyvin käteen ja on helppo pitää puhtaana.

32 €

Genelec kuksa

Suomessa valmistettu ekologinen kuksa.

22 €

Kangaskassi 'The Ones'

Kangaskassi 'The Ones'

9 €

Genelec AcoustiTape

Helppokäyttöinen, jokaisen audioammattilaisen korvaamaton työkalu.

18 €
Virhe tapahtui prosessoidessa esitysmallia.
An error has occurred when reading existing sub-variable "image"; see cause exception! The type of the containing value was: extended_hash+string (org.json.JSONObject wrapped into f.e.b.StringModel)

----
FTL stack trace ("~" means nesting-related):
	- Failed at: ${listingImage.assets.image.url}  [in template "20116#20152#373955" at line 119, column 54]
----
1<#----------------------------------------------------------------------------- 
2    INIT 
3------------------------------------------------------------------------------> 
4<#include "${templatesPath}/227209" /> 
5 
6<#assign cmsContentService = serviceLocator.findService("com.ch5finland.genelec.cms.service.CMSContentService") > 
7<#assign cmsContentFormatterService = serviceLocator.findService("com.ch5finland.genelec.cms.service.CMSContentFormatterService") > 
8<#assign profileService = serviceLocator.findService("com.ch5finland.genelec.cms.service.ProfileService") > 
9<#assign profile = profileService.getProfile(request) > 
10<#assign instanceId = themeDisplay.getPortletDisplay().getId()> 
11<#assign siteDefaultLocale = portalUtil.getSiteDefaultLocale(groupId)?string?replace("_","-") > 
12 
13<#switch themeDisplay.getLanguageId()> 
14    <#case "fi_FI"> 
15        <#assign t = {  
16            "buyProduct" : "Osta", 
17            "deliveryTime" : "Toimitusaika", 
18            "deliveryTo" : "Toimitetaan" 
19        }>     
20     <#break> 
21    <#default> 
22        <#assign t = {  
23            "buyProduct" : "Buy Product", 
24            "deliveryTime" : "Delivery time", 
25            "deliveryTo" : "Delivery to" 
26        }> 
27</#switch> 
28 
29<#----------------------------------------------------------------------------- 
30    LOOP ENTRIES 
31------------------------------------------------------------------------------> 
32<#if entries?has_content> 
33    <#if portletDisplay.getTitle() != "Asset Publisher"> 
34        <h2 class="section-heading col-xs-12 text-bolder">${portletDisplay.getTitle()}</h2> 
35    </#if> 
36    <div class="product-cards cards-tight-container mt-4">  
37        <div class="row"> 
38             
39        <#--------------------------------------------------------------------- 
40            Group entries by sku 
41        -----------------------------------------------------------------------> 
42       <#assign resultSku = []> 
43        <#list entries as curEntry> 
44            <#assign articleIdAsString = curEntry.getAssetRenderer().getArticle().getArticleId() > 
45            <#assign cmsEntity = cmsContentService.getEntityByArticleId(profile, articleIdAsString) > 
46            <#assign type = cmsEntity.getField(profile, "/entity/type/id")> 
47            <#if cmsEntity.getField(profile, "/entity/fields/sku")?has_content> 
48                <#assign sku = cmsEntity.getField(profile, "/entity/fields/sku")> 
49                <#if sku?length &gt; 7> 
50                    <#assign sku = sku?substring(0, 8)> 
51                    <#if !resultSku?has_content || !resultSku?seq_contains(sku)> 
52                        <#assign resultSku = resultSku + [sku] /> 
53                    </#if> 
54                </#if> 
55            </#if> 
56        </#list> 
57        <#assign resultSkuTemp = []> 
58        <#list entries as curEntry> 
59 
60            <#--------------------------------------------------------------------- 
61                    INIT ENTRY 
62            ----------------------------------------------------------------------> 
63            <#assign articleIdAsString = curEntry.getAssetRenderer().getArticle().getArticleId() > 
64            <#assign cmsEntity = cmsContentService.getEntityByArticleId(profile, articleIdAsString) > 
65            <#if cmsEntity.getLocalizedField(profile, "/entity/fields/summary")?has_content> 
66                <#assign summary = cmsContentFormatterService.getMarkdown(cmsEntity.getLocalizedField(profile, "/entity/fields/summary"))> 
67            </#if> 
68            <#if cmsEntity.getField(profile, "/entity/fields/listPriceEur")?has_content> 
69                <#assign price = cmsEntity.getField(profile, "/entity/fields/listPriceEur")> 
70            </#if> 
71             
72            <#if cmsEntity.getField(profile, "/entity/id")?has_content> 
73                <#assign id = cmsEntity.getField(profile, "/entity/id")> 
74            </#if> 
75           <#if cmsEntity.getLocalizedField(profile, "/entity/relationships/listingImage/locales")?has_content> 
76                <#assign listingImage = cmsEntity.getLocalizedField(profile, "/entity/relationships/listingImage/locales") > 
77            </#if> 
78            <#if cmsEntity.getLocalizedField(profile, "/entity/fields/b2cVisibilityKey")?has_content> 
79                <#assign b2cVisibility = cmsEntity.getLocalizedField(profile, "/entity/fields/b2cVisibilityKey")> 
80            </#if> 
81            <#assign showItem = false> 
82            <#if type == "promotionalItem"> 
83                <#if cmsEntity.getField(profile, "/entity/fields/sku")?has_content> 
84                    <#assign skuwithsize = cmsEntity.getField(profile, "/entity/fields/sku")> 
85                    <#if skuwithsize?length &gt; 7> 
86                        <#assign skuwithsize = skuwithsize?substring(0, 8)> 
87                        <#if resultSku?seq_contains(skuwithsize) && !resultSkuTemp?seq_contains(skuwithsize)> 
88                            <#assign resultSkuTemp = resultSkuTemp + [skuwithsize] /> 
89                            <#assign showItem = true> 
90                        </#if> 
91                    </#if> 
92                </#if> 
93            <#else> 
94                <#assign showItem = true> 
95            </#if> 
96            <#if cmsContentService.getUrlForEntity(themeDisplay, id)?has_content>                             
97                <#assign pageUrl = cmsContentService.getUrlForEntity(themeDisplay, id)>  
98            <#else> 
99                <#assign pageUrl = ""> 
100            </#if> 
101 
102            <#if showItem> 
103            <div class="col-12 col-sm-6 col-md-4 col-xl-3">  
104            <#if type == "promotionalItem"> 
105                <div class="card card-img promotionalItem-card" onClick="openPromotionalItemPopup${instanceId}('${id}-${instanceId}')"> 
106            <#else> 
107                <#if pageUrl?has_content> 
108                    <a href="${pageUrl}"> 
109                </#if> 
110                <div class="card card-img promotionalItem-card"> 
111            </#if> 
112                    <div class="aspect-ratio aspect-ratio-4-to-3"> 
113                    <#if listingImage?has_content> 
114                        <#assign listingImageAlt = "" > 
115                        <#if !listingImage.properties.isNull("altText")> 
116                            <#assign listingImageAlt = localizeField(listingImage.properties.altText, profile.getCMSLangCode()) > 
117                        </#if> 
118                            <picture>  
119                                <source data-srcset="${listingImage.assets.image.url}?w=250&amp;fm=webp" type="image/webp" class="aspect-ratio-item-fluid aspect-ratio-item-center-middle" srcset="${listingImage.assets.image.url}?w=250&amp;fm=webp">  
120                                <img class="aspect-ratio-item-fluid aspect-ratio-item-center-middle" style="height: 100%; opacity: 1;" data-src="${listingImage.assets.image.url}?w=250" src="${listingImage.assets.image.url}?w=250" alt="${listingImageAlt}">   
121                            </picture> 
122 
123                    </#if> 
124                    </div> 
125                    <div class="card-padding-tight text-dark"> 
126                     
127                        <h4 class="text-bolder promoItem-title"> 
128                            <#if cmsEntity.getLocalizedField(profile, "/entity/fields/title")?has_content> 
129                                ${cmsEntity.getLocalizedField(profile, "/entity/fields/title")} 
130                            </#if> 
131                        </h4> 
132                        <div class="text-bolder small promoItem-summary"> 
133                            <#if summary?has_content> 
134                                ${summary} 
135                            </#if> 
136                        </div> 
137                    <#if price?has_content> 
138                        <div class="text-bolder">${price} €</div> 
139                    </#if> 
140                    </div> 
141                </div> 
142                <#if type != "promotionalItem"> 
143                    <#if pageUrl?has_content> 
144                        </a> 
145                    </#if> 
146                </#if> 
147            </div> 
148            </#if> 
149        </#list> 
150        </div>  
151    </div> 
152 
153 
154 
155<#--  Popup  --> 
156<#if type == "promotionalItem"> 
157<div id="theme-popupPromotionalItem-${instanceId}" class="popup"> 
158<#list entries as curEntry> 
159<#assign variants = ""> 
160    <#assign articleIdAsString = curEntry.getAssetRenderer().getArticle().getArticleId() > 
161    <#assign cmsEntity = cmsContentService.getEntityByArticleId(profile, articleIdAsString) > 
162    <#if cmsEntity.getField(profile, "/entity/id")?has_content> 
163        <#assign id = cmsEntity.getField(profile, "/entity/id")> 
164    </#if> 
165    <#if cmsEntity.getLocalizedField(profile, "/entity/assets/mainImage")?has_content> 
166        <#assign mainImage = cmsEntity.getLocalizedField(profile, "/entity/assets/mainImage") > 
167    </#if> 
168    <#if cmsEntity.getField(profile, "/entity/relationships/images")?has_content> 
169        <#assign images = cmsEntity.getField(profile, "/entity/relationships/images") > 
170    </#if> 
171    <#if cmsEntity.getLocalizedField(profile, "/entity/fields/b2cVisibilityKey")?has_content> 
172        <#assign b2cVisibility = cmsEntity.getLocalizedField(profile, "/entity/fields/b2cVisibilityKey")> 
173    </#if> 
174    <#if cmsEntity.getField(profile, "/entity/fields")?has_content> 
175        <#assign fields = cmsEntity.getField(profile, "/entity/fields")> 
176    </#if> 
177    <#if cmsEntity.getField(profile, "/entity/fields/variants/rows")?has_content> 
178        <#assign variants = cmsEntity.getField(profile, "/entity/fields/variants/rows")> 
179    </#if> 
180 
181    <#if curEntry?index == 0> 
182    <div class="close-button-container"> 
183        <button class="close" onClick="closePromotionalItemPopup${instanceId}('${id}-${instanceId}')" id="closeButtonPromotionalItem-${id}-${instanceId}"></button> 
184    </div> 
185    <div class="panel popup-content" id="popupContentPromotionalItem-${instanceId}"> 
186        <div class="panel-body"> 
187    </#if> 
188 
189        <div class="promotionalItemContent" id="promotionalItemContent-${id}-${instanceId}"> 
190            <div class="row"> 
191                <div class="col-lg-6"> 
192                    <#if images?has_content> 
193                        <div class="zoom-gallery variant-gallery" id="main-img-${id}-${instanceId}">  
194                        <#list images.iterator() as img> 
195                            <#assign imgId = img.id> 
196                            <#assign altText = "" > 
197                            <#if !img.properties.isNull("altText") > 
198                                <#assign altText = localizeField(img.properties.altText, profile.getCMSLangCode()) > 
199                            </#if> 
200                             
201                            <#if img?index = 0> 
202                                 <#if img.assets.image.mediaType?contains("video")> 
203                                    <div data-slide-id="video-${imgId}" class="zoom-gallery-slide video-slide"> 
204                                        <video class="buy-section-video lazy"> 
205                                            <data-src src="${img.url}" type="video/mp4"></data-src> 
206                                        </video> 
207                                    </div> 
208                                <#else> 
209                                    <div data-slide-id="zoom-${id}-${instanceId}" class="zoom-gallery-slide active zoom-${id}-${instanceId}"> 
210                                        <a class="MagicZoom product-page-product-image" id="zoom-demo-${id}-${instanceId}" href="${img.assets.image.url}?fm=jpg&q=85&w=2000"> 
211                                            <img id="buy-product-main-img" class="" src="${img.assets.image.url}?fm=jpg&q=85&w=610" alt="${altText}" /> 
212                                        </a> 
213                                    </div> 
214                                </#if> 
215                            </#if> 
216                        </#list> 
217                            <div class="selectors"> 
218                                <div id="thumb-img-${id}" class=""> 
219                                    <div class="promotionalItem-carousel owl-carousel owl-theme image-carousel-container">    
220                                        <#list images.iterator() as img> 
221                                            <#assign altText = "" > 
222                                            <#if !img.properties.isNull("altText") > 
223                                                <#assign altText = localizeField(img.properties.altText, profile.getCMSLangCode()) > 
224                                            </#if>                                         
225                                            <#if img.assets.image.mediaType?contains("video")> 
226                                                <div class="image-carousel-wrapper">  
227                                                    <a data-slide-id="video-${imgId}" class="video-thumb"> 
228                                                        <span class="icon-play"></span> 
229                                                    </a> 
230                                                </div> 
231                                            <#else> 
232                                                <div class="image-carousel-wrapper">  
233                                                    <a data-slide-id="zoom-${id}-${instanceId}" data-zoom-id="zoom-demo-${id}-${instanceId}" href="${img.assets.image.url}?fm=jpg&q=85&w=2000" data-image="${img.assets.image.url}?fm=jpg&q=85&w=610" class="img-thumb"> 
234                                                        <img data-src="${img.assets.image.url}?fm=jpg&q=85&w=120" class="owl-lazy" alt="${altText}" /> 
235                                                    </a> 
236                                                </div> 
237                                            </#if>    
238                                        </#list>                        
239                                    </div> 
240                                </div> 
241                            </div> 
242                        </div> 
243                    </#if> 
244                </div> 
245 
246 
247 
248                <div class="col-lg-6"> 
249                <#assign itemSizes = ""> 
250                <#if cmsEntity.getField(profile, "/entity/fields/listPriceEur")?has_content> 
251                    <#assign price = cmsEntity.getField(profile, "/entity/fields/listPriceEur")> 
252                </#if> 
253                <#if cmsEntity.getLocalizedField(profile, "/entity/fields/itemSize")?has_content> 
254                    <#assign itemSizes = cmsEntity.getLocalizedField(profile, "/entity/fields/itemSize")> 
255                </#if> 
256                <#if cmsEntity.getLocalizedField(profile, "/entity/fields/deliveryTime")?has_content> 
257                    <#assign deliveryTime = cmsEntity.getLocalizedField(profile, "/entity/fields/deliveryTime")> 
258                </#if> 
259                <#if cmsEntity.getLocalizedField(profile, "/entity/fields/deliveryRegions")?has_content> 
260                    <#assign deliveryRegions = cmsEntity.getLocalizedField(profile, "/entity/fields/deliveryRegions")> 
261                </#if> 
262                <#if cmsEntity.getLocalizedField(profile, "/entity/fields/content")?has_content> 
263                    <#assign content =  cmsContentFormatterService.getMarkdown(cmsEntity.getLocalizedField(profile, "/entity/fields/content"))> 
264                </#if> 
265                <#if cmsEntity.getLocalizedField(profile, "/entity/fields/title")?has_content> 
266                    <h2 class="product-page-product-title">${cmsEntity.getLocalizedField(profile, "/entity/fields/title")}</h2> 
267                </#if> 
268                <#if itemSizes?has_content> 
269                    <h4 class="text-bolder"> 
270                        <#list itemSizes.iterator() as itemSize> 
271                            ${itemSize}<#sep>,  
272                        </#list> 
273                    </h4> 
274                </#if> 
275                <#if content?has_content> 
276                    <div class="small promoItem-content">${content}</div> 
277                </#if> 
278                <#if b2cVisibility ="showWithPrice"> 
279                <#if price?has_content> 
280                    <div class="price-variant"> 
281                        <span class="h1">${price} €</span> 
282                        <span class="h3">/<@liferay.language key="unit"/></span> 
283                        <span class="text-muted small text-bold"><@liferay.language key="inc-vat"/></span> 
284                    </div> 
285                </#if> 
286                <#elseif b2cVisibility = "showForPurchase"> 
287                <#if price?has_content> 
288                    <div class="price-variant"> 
289                        <span class="h1">${price} €</span> 
290                        <span class="h3">/<@liferay.language key="unit"/></span> 
291                        <span class="text-muted small text-bold"><@liferay.language key="inc-vat"/></span> 
292                    </div> 
293                </#if> 
294                <br> 
295                <#if deliveryTime?has_content || deliveryRegions?has_content> 
296                    <p class="text-muted text-bolder small"> 
297                        <#if deliveryTime?has_content> 
298                            <@liferay.language key="delivery-time"/> ${deliveryTime}<br> 
299                        </#if> 
300                        <#if deliveryRegions?has_content> 
301                            <@liferay.language key="delivery-to"/> 
302                            <#list deliveryRegions.iterator() as deliveryRegion> 
303                                ${deliveryRegion}<#sep>,  
304                            </#list> 
305                        </#if> 
306                    </p>  
307                </#if> 
308                <#if variants?has_content && !variants?contains("Default")> 
309                <div class="size-container"> 
310                <p class="text-muted text-bolder small sizeText"><@liferay.language key="size"/></p> 
311                    <select class="form-control product-size-dropdown" onchange="changeSku(this.value, '${id}')" style=""> 
312                    <#list variants.iterator() as variant> 
313                        <#if variant?index == 0> 
314                            <option value="${variant.SKU}" selected="">${variant.Variant}</option> 
315                        <#else> 
316                            <option value="${variant.SKU}">${variant.Variant}</option> 
317                        </#if> 
318                    </#list> 
319                    </select> 
320                </div> 
321 
322                </#if> 
323                <#assign skus = ""> 
324                <#if variants?has_content> 
325                    <#assign skus = variants.get(0).SKU> 
326                <#elseif fields.sku?has_content> 
327                    <#assign skus = fields.sku> 
328                </#if> 
329                <#if skus?has_content> 
330                    <div class="btn-container">      
331                        <a class="btn btn-theme btn-product-page-buy-${instanceId} btn-bold btn-medium promoBuyBtn-${id}" href="#"  data-sku="${skus}"> 
332                            ${t.buyProduct} 
333                        </a> 
334 
335                        <select class="form-control buy-product-dropdown" style=""> 
336                            <option value="1" selected="">1</option> 
337                            <option value="2">2</option> 
338                            <option value="3">3</option> 
339                            <option value="4">4</option> 
340                            <option value="5">5</option> 
341                            <option value="6">6</option> 
342                            <option value="7">7</option> 
343                            <option value="8">8</option> 
344                            <option value="9">9</option> 
345                            <option value="10">10</option> 
346                        </select> 
347 
348                    </div> 
349                </#if> 
350                </#if> 
351                 
352                <#-- Additional information --> 
353                 
354                <#if cmsEntity.getField(profile, "/entity/relationships/additionalInformation")?has_content> 
355                 
356                    <div id="additional-accordion-${id}-${instanceId}"> 
357                        <div class="card additionalinfo"> 
358                            <div class="card-header" id="additional-heading-${id}-${instanceId}"> 
359                             
360                                <a href="#" class="font-weight-bold" style="display: block;" data-toggle="collapse" data-target="#additional-${id}-${instanceId}" aria-expanded="true" aria-controls="additional-${id}-${instanceId}"> 
361                                    ${cmsEntity.getLocalizedField(profile, "/entity/relationships/additionalInformation/properties/title")} 
362                                    <i class="fa fa-chevron-down pull-right mt-1" aria-hidden="true"></i> 
363                                </a> 
364                                 
365                            </div> 
366 
367                            <div id="additional-${id}-${instanceId}" class="collapse" aria-labelledby="additional-heading-${id}-${instanceId}" data-parent="#additional-accordion-${id}-${instanceId}"> 
368                            <div class="card-body"> 
369                                <#if cmsEntity.getField(profile, "/entity/relationships/additionalInformation/properties/summary")?has_content> 
370                                    <div>${cmsContentFormatterService.getMarkdown(cmsEntity.getLocalizedField(profile, "/entity/relationships/additionalInformation/properties/summary"))}</div> 
371                                </#if> 
372                                <#if cmsEntity.getField(profile, "/entity/relationships/additionalInformation/properties/content")?has_content> 
373                                    <div>${cmsContentFormatterService.getMarkdown(cmsEntity.getLocalizedField(profile, "/entity/relationships/additionalInformation/properties/content"))}</div> 
374                                </#if>                            </div> 
375                            </div> 
376                        </div>                     
377                    </div> 
378                </#if> 
379                 
380                </div> 
381            </div> 
382        </div> 
383    <#if curEntry?index == (curEntry?size-1)> 
384        </div> 
385    </div> 
386    </#if> 
387    </#list> 
388</div> 
389</#if> 
390 
391</#if> 
392 
393<style> 
394 
395    .product-cards { 
396        margin: auto -4px; 
397
398 
399    .card { 
400        border: 1px solid #CCC; 
401        cursor: pointer; 
402
403     
404    .card.additionalinfo { 
405        border-left : none; 
406        border-right: none; 
407        margin-top: 40px; 
408
409     
410    .additionalinfo .card-header { 
411        background-color: #fff; 
412        border-bottom: none; 
413
414     
415    .card-padding-tight { 
416        padding: calc(10 / 16 * 1em); 
417        min-height: 5em; 
418
419     
420    .cards-tight-container .card { 
421        margin-bottom: 0; 
422    }    
423     
424    .close-button-container { 
425        position: absolute; 
426        left: 50%; 
427        transform: translateX(-50%); 
428        width: 85%; 
429        max-width: 1300px; 
430        z-index: 1; 
431
432 
433    [class*="btn-product-page-buy"] { 
434        width: 40%; 
435        min-width: 250px; 
436        height: 43px; 
437
438 
439    .buy-product-dropdown { 
440        display: inline-block; 
441        width: 60px; 
442        height: 43px !important; 
443        border-radius: 0; 
444        border-left: none; 
445        position: absolute; 
446        clear: left; 
447        padding-left: 2%; 
448        font-size: 1.3em; 
449        border: 2px solid #ced4da; 
450        border-left: none; 
451        line-height: 20px; 
452
453 
454    .product-size-dropdown { 
455        display: inline-block; 
456        width: 100px; 
457        height: 43px !important; 
458        border-radius: 0; 
459        clear: left; 
460        padding-left: 2%; 
461        font-size: 1.3em; 
462        border: 2px solid #ced4da; 
463        line-height: 20px; 
464
465 
466    .size-container{ 
467        margin-top: 25px; 
468        margin-bottom: 0; 
469
470 
471    .cards-tight-container .row>[class*="col-"] { 
472        padding: 4px !important; 
473
474 
475    .promotionalItemContent { 
476        display:none; 
477
478 
479    .promotionalItem-carousel .owl-prev { 
480        width: 17px; 
481        height: 100px; 
482        position: absolute; 
483        left: -20px; 
484        top: 47%; 
485        transform: translateY(-50%); 
486        display: block !important; 
487        border:0px solid black; 
488        font-size: 2em !important; 
489
490 
491    .promotionalItem-carousel .owl-next { 
492        width: 17px; 
493        height: 100px; 
494        position: absolute; 
495        right: -20px; 
496        top: 47%; 
497        transform: translateY(-50%); 
498        display: block !important; 
499        border:0px solid black; 
500        font-size: 2em !important; 
501
502    .image-carousel-container { 
503            width: 100%; 
504            padding: 30px 10px 10px 10px; 
505
506    .mz-thumb { 
507            width: 72px; 
508            height: 95px; 
509            opacity: .3; 
510            border: 1px solid #CCC; 
511            padding: 5px; 
512            margin: 0 5px; 
513             
514    /* Applies to every thumbnail */ 
515
516 
517    .video-thumb{ 
518        width: 72px; 
519        height: 95px; 
520        opacity: .3; 
521        border: 1px solid #CCC; 
522        padding: 5px; 
523        margin: 0 5px; 
524        display: block; 
525
526    .mz-thumb:hover:not(.mz-thumb-selected) img { 
527        filter: none !important; 
528        -webkit-filter: none !important; 
529 
530
531    .mz-thumb.active { 
532        border-bottom: 4px solid #007A53; 
533        opacity: 1; 
534 
535    /* Applies to the active thumbnail */ 
536
537 
538 
539    .video-thumb.active { 
540        border-bottom: 4px solid #007A53; 
541        opacity: 1; 
542         
543
544    .mz-thumb-selected img { 
545        filter: none !important; 
546        -webkit-filter: none !important;  
547
548    .mz-thumb img { 
549        box-shadow: none !important;  
550        max-height: 85px; 
551
552    .mz-expand-thumbnails .magic-thumb-selected img { 
553        filter: none !important; 
554        -webkit-filter: none !important;  
555 
556
557    .mz-expand-thumbnails .magic-thumb>img { 
558        filter: brightness(50%); 
559        -webkit-filter: brightness(50%); 
560 
561
562    .variant-gallery { 
563        display:none; 
564
565    .zoom-gallery-slide {  
566        display: none;  
567
568    .zoom-gallery-slide.active {  
569        display: block;  
570
571    .zoom-gallery .selectors a span { 
572        position: absolute; 
573        color:#fff; 
574        text-shadow: 0px 1px 10px #000; 
575        top:50%; 
576        left:50%; 
577        display: inline-block; 
578        transform:translateY(-50%) translateX(-50%);  
579        -webkit-transform:translateY(-50%) translateX(-50%); 
580        font-size:50px; 
581        z-index: 100; 
582
583    .image-carousel-wrapper{ 
584        height:102px; 
585        width:80px; 
586 
587
588 
589    .promoItem-content p{ 
590       font-family: 'Helvetica Neue LT W01_75 Bold', Arial, sans-serif; 
591
592 
593    .sizeText{ 
594        margin-bottom:5px; 
595
596</style> 
597 
598<script> 
599$(window).on("load", function() { 
600    var maxHeight = Math.max.apply(null, $('.promoItem-summary').map(function(){return $(this).height()})); 
601        $('.promoItem-summary').height(maxHeight); 
602 }); 
603 
604$(window).on("load", function() { 
605    var maxHeight = Math.max.apply(null, $('.promoItem-title').map(function(){return $(this).height()})); 
606        $('.promoItem-title').height(maxHeight); 
607 }); 
608 
609 
610$(window).on("load", function() { 
611    var maxHeight = Math.max.apply(null, $('.promotionalItem-card').map(function(){return $(this).height()})); 
612        $('.promotionalItem-card').height(maxHeight); 
613 }); 
614 
615function openPromotionalItemPopup${instanceId}(promotionalItemId) { 
616    var shortPromotionalItemId = promotionalItemId.replace("com_liferay_asset_publisher_web_portlet_AssetPublisherPortlet_",""); 
617     
618    window.location.hash = "#dialog-" + shortPromotionalItemId; 
619 
620    openPopup("PromotionalItem-${instanceId}"); 
621    $('#promotionalItemContent-'+promotionalItemId).show(); 
622 
623    //update: 
624    $('#theme-popupPromotionalItem-${instanceId} .close').attr('id','closeButtonPromotionalItem-'+promotionalItemId); 
625    $('#theme-popupPromotionalItem-${instanceId} .close').attr('onclick', 'closePromotionalItemPopup${instanceId}("' + promotionalItemId + '")'); 
626    $('#closeButtonPromotionalItem-'+promotionalItemId).show(); 
627 
628    $('div[id^=main-img]').hide(); 
629    $("#main-img-"+promotionalItemId).show(); 
630     
631    $('.zoom-gallery-slide').removeClass('active'); 
632    $('.zoom-'+promotionalItemId).addClass('active'); 
633 
634    $('.img-thumb').removeClass('active'); 
635    $('.video-thumb').removeClass('active'); 
636    $('.mz-thumb-selected').addClass('active'); 
637 
638    MagicZoom.start('zoom-demo-'+promotionalItemId); 
639     
640
641 
642function closePromotionalItemPopup${instanceId}(promotionalItemId) { 
643    history.pushState(null, null, ' '); 
644    closePopup("PromotionalItem-${instanceId}"); 
645    $('#promotionalItemContent-'+promotionalItemId).hide(); 
646 
647    //update: 
648    $('#closeButtonPromotionalItem-'+promotionalItemId).hide(); 
649
650 
651// close popup when clicking outside of the element 
652$(document).mouseup(function (e) { 
653    if(!$('#popupContent'+"PromotionalItem-"+'${instanceId}').is(e.target) &&  
654        $('#popupContent'+"PromotionalItem-"+'${instanceId}').has(e.target).length == 0 &&  
655        $(e.target).attr('class') != 'close' && 
656        $('#theme-popup'+"PromotionalItem-"+'${instanceId}').css("display") == "block"){ 
657        closePopup("PromotionalItem-${instanceId}"); 
658        $('div[id^=promotionalItemContent-]').hide(); 
659        history.pushState(null, null, ' '); 
660
661}); 
662 
663 $('.promotionalItem-carousel').owlCarousel({ 
664    loop:false, 
665    nav:true, 
666    dots:false, 
667    navText : ['<i class="icon-angle-left">','<i class="icon-angle-right">'], 
668    margin:5, 
669    lazyLoad:true, 
670    responsive:{ 
671        0:{items:3, slideBy:3}, 
672        600:{items:5, slideBy:5}, 
673        1000:{items:7, slideBy:7} 
674     }, 
675}); 
676 
677 
678$('.zoom-gallery .selectors a').hover(function(e) { 
679        $('.zoom-gallery .zoom-gallery-slide').removeClass('active'); 
680        $('.zoom-gallery .zoom-gallery-slide[data-slide-id="'+$(this).attr('data-slide-id')+'"]').addClass('active'); 
681        e.preventDefault(); 
682    }); 
683 
684 
685$('.video-thumb').hover(function(){ 
686    $(".buy-section-video").get(0).play(); 
687    $('.img-thumb').removeClass('active'); 
688    $(this).addClass('active'); 
689}); 
690 
691$('.img-thumb').hover(function(){ 
692    $('.video-thumb').removeClass('active'); 
693    $('.img-thumb').removeClass('active'); 
694    $(this).addClass('active'); 
695    if ($(".video-thumb").length){ 
696        $(".buy-section-video").get(0).pause(); 
697
698     
699}); 
700$( document ).ready(function() { 
701$('.mz-thumb-selected').addClass('active'); 
702}); 
703 
704 
705 
706 
707 $(document).on('click', '.mz-expand', function () { 
708     $('.img-thumb').removeClass('active'); 
709    $('.mz-thumb-selected').addClass('active'); 
710}); 
711 
712 
713var mzOptions = { 
714    zoomMode: 'off', 
715    zoomPosition: 'inner', 
716    selectorTrigger: 'hover', 
717    lazyZoom: true, 
718    autostart: false, 
719    onZoomReady: function() { 
720            $('.mz-thumb-selected').addClass('active'); 
721
722}; 
723 
724$('.btn-product-page-buy-${instanceId}').click(function(event){ 
725         
726        genelec.cart().then(function(cart){ 
727            let qty  = $(event.target).parent().find(".buy-product-dropdown").val(); 
728            let sku = $(event.target).attr("data-sku"); 
729             
730            // qty is number and sku exists 
731            if (!isNaN(qty) && sku) { 
732                cart.add(sku, qty).then(function(){$( document ).trigger("genelec-shopping-cart-updated");}); 
733
734        }); 
735     
736        return false; 
737    }); 
738 
739    function changeSku(sku, id) {         
740    $('.promoBuyBtn-' + id).attr('data-sku', sku); 
741 
742}; 
743 
744<#-- 
745 Open popup if id in hash  
746--> 
747$( document ).ready(function() { 
748 
749    if (!window.dialogOpenTriggerHandled && window.location.hash.startsWith("#dialog")) { 
750        var popUpId = window.location.hash.replace("#dialog-", "").replace("INSTANCE", "com_liferay_asset_publisher_web_portlet_AssetPublisherPortlet_INSTANCE"); 
751        var instance = popUpId.split("-")[1]; 
752        var popUpOpenFunction = "openPromotionalItemPopup" + instance; 
753        window[popUpOpenFunction](popUpId); 
754
755     
756    window.dialogOpenTriggerHandled= true; 
757}); 
758 
759 
760 
761</script>