Une erreur s'est produite lors du traitement du gabarit.
The following has evaluated to null or missing:
==> cmsEntity.getLocalizedField(profile, "/entity/fields/title")  [in template "20116#20152#307443" at line 36, column 29]

----
Tip: If the failing expression is known to be legally refer to something that's sometimes null or missing, either specify a default value like myOptionalVar!myDefault, or use <#if myOptionalVar??>when-present<#else>when-missing</#if>. (These only cover the last step of the expression; to cover the whole expression, use parenthesis: (myOptionalVar.foo)!myDefault, (myOptionalVar.foo)??
----

----
FTL stack trace ("~" means nesting-related):
	- Failed at: #assign productTitle = cmsEntity.getL...  [in template "20116#20152#307443" at line 36, column 5]
----
1<#-- 
2 
3    Accessory Main Image 
4     
5--> 
6 
7<#assign instanceId = themeDisplay.getPortletDisplay().getId()> 
8<#assign portletId = "p_p_id_" + instanceId + "_"> 
9 
10<#if cmsEntity?has_content> 
11<#include "${templatesPath}/227222" />  
12 
13<@sectionHeader title="${title}" menuTitle="${menuTitle}" cssClasses="bg-white" id="accessory-main-image"/> 
14<#assign ns = themeDisplay.portletDisplay.getId() > 
15<#assign siteDefaultLocale = portalUtil.getSiteDefaultLocale(groupId)?string?replace("_","-") > 
16 
17<#assign listPriceField = "listPrice" > 
18<#assign iconSetPath ="/o/genelec-site-theme/images/icons/symbol-defs.svg"> 
19<#if cmsEntity.getField(profile, "/entity/relationships/variants")?has_content> 
20    <#assign variants = cmsEntity.getField(profile, "/entity/relationships/variants") > 
21</#if> 
22<#if cmsEntity.getField(profile, "/entity/fields")?has_content> 
23    <#assign fields = cmsEntity.getField(profile, "/entity/fields") >  
24</#if> 
25 
26<#assign minimumWebshopAmount = 1 > 
27<#if !fields.isNull("minimumWebshopAmount")> 
28    <#assign minimumWebshopAmount = fields.minimumWebshopAmount > 
29</#if> 
30<#assign buyUnit = "unit"> 
31<#if minimumWebshopAmount gt 1> 
32   <#assign buyUnit = "pair">  
33</#if> 
34 
35<#if cmsEntity.getField(profile, "/entity/fields/title")?has_content> 
36    <#assign productTitle = cmsEntity.getLocalizedField(profile, "/entity/fields/title")> 
37</#if> 
38<#if cmsEntity.getField(profile, "/entity/fields/summary")?has_content > 
39    <#assign summary = cmsContentFormatterService.getMarkdown(cmsEntity.getLocalizedField(profile, "/entity/fields/summary"))> 
40</#if> 
41<#assign content = "" > 
42 
43<#if cmsEntity.getLocalizedField(profile, "/entity/fields/content")?has_content > 
44    <#assign content = cmsContentFormatterService.getMarkdown(cmsEntity.getLocalizedField(profile, "/entity/fields/content"))> 
45</#if> 
46 
47<#assign portalUrl = themeDisplay.getPortalURL() > 
48<#assign currentURL = portalUrl + themeDisplay.getURLCurrent()  > 
49<@appendHTMLMetas currentURL cmsEntity "product" /> 
50 
51        <div class="row"> 
52            <div class="col-lg-6"> 
53                <#if productTitle?has_content> 
54                    <div class="product-page-heading"> 
55                        <h1>${productTitle}</h1> 
56                        <#if cmsEntity.getLocalizedField(profile, "/entity/fields/subtitle")?has_content> 
57                            <h1 class="subtitle">${cmsEntity.getLocalizedField(profile, "/entity/fields/subtitle")}</h1> 
58                        </#if> 
59                    </div> 
60                </#if> 
61                    <div class="row justify-content-between"> 
62                        <div class="col-lg-12 article-content"> 
63                            <#if summary?has_content> 
64                                <div class="product-page-intro">${summary}</div>  
65                            </#if> 
66                            <hr> 
67                        </div>  
68                    </div>  
69                    <form class="product-page-form">  
70                 
71                    <p> 
72                        <#list variants.iterator() as variant> 
73                            <#assign id = variant.id> 
74                            <#assign sku = accessoryVariantSKU(variant) > 
75 
76                            <#if !fields.isNull("b2cVisibilityKey")>  
77                                <@b2Visibility container=fields field="b2cVisibilityKey" langCode="${siteDefaultLocale}"/> 
78                                <#if sku?has_content> 
79                                    <#if b2cVisibility = "showWithPrice" && variant?index = 0 || b2cVisibility = "showForPurchase" && variant?index = 0> 
80                                            <div id="price-${id}"> 
81                                                <span class="h1"  data-variant-price="${sku}" data-qty="${minimumWebshopAmount}" ></span> 
82                                                <span class="h3">/<@liferay.language key="${buyUnit}"/> </span> 
83                                                <span class="text-muted small text-bold"><@liferay.language key="inc-vat"/></span> 
84                                            </div> 
85                                    <#elseif b2cVisibility ="showWithPrice" || b2cVisibility = "showForPurchase"> 
86                                            <div class="price-variant" id="price-${id}"> 
87                                                <span class="h1" data-variant-price="${sku}" data-qty="${minimumWebshopAmount}"></span> 
88                                                <span class="h3">/<@liferay.language key="${buyUnit}"/></span> 
89                                                <span class="text-muted small text-bold"><@liferay.language key="inc-vat"/></span> 
90                                            </div> 
91                                    </#if> 
92                                </#if> 
93                            </#if> 
94                        </#list> 
95                    </p> 
96     
97                    <#list variants.iterator() as variant> 
98                        <#if !variant.properties.isNull("shopifyAccessoryVariant")> 
99                            <#assign sku = accessoryVariantSKU(variant) > 
100                        <#else> 
101                            <#assign sku = ""> 
102                        </#if> 
103                        <#break> 
104                    </#list> 
105                    <div class="buy-section-buttons"> 
106                    <#if !fields.isNull("b2cVisibilityKey")>  
107                        <@b2Visibility container=fields field="b2cVisibilityKey" langCode="${siteDefaultLocale}"/> 
108                         
109                            <#if b2cVisibility = "showForPurchase" && sku != ""> 
110                                <div class="btn-container">      
111                                    <a class="btn btn-theme btn-product-page-buy btn-bold btn-medium"  
112                                        href="#" 
113                                        data-sku="${sku}" data-qty="${minimumWebshopAmount}" > 
114                                            <@liferay.language key="buy-product"/> 
115                                    </a> 
116 
117                                </div> 
118                            </#if> 
119                     </#if> 
120                     <div class="btn-container"> 
121                        <a class="btn btn-black-white btn-medium text-bolder" href="#_genelecsitedealermap_genelec-site-map"> 
122                            <@liferay.language key="search-dealer"/> 
123                            <@linkIcon cssClasses="icon tiny-icon" alt="" icon="arrow-black"/> 
124                        </a> 
125                    </div> 
126                 </div> 
127                </form> 
128 
129                <!-- delivery returns warranty --> 
130                <@printDeliveryRow fields=fields siteLang=siteDefaultLocale /> 
131                <!-- // delivery returns warranty -->                  
132                 
133                  <#if content?has_content> 
134                        <div class="text-intro">${content}</div>  
135                    </#if> 
136                <#if cmsEntity.getField(profile, "/entity/relationships/accessorySpecifications/properties/lengthMin")?has_content> 
137                <div class="text-bolder"> 
138                    Length min. 
139                </div> 
140                <div class="text-medium"> 
141                    ${cmsEntity.getField(profile, "/entity/relationships/accessorySpecifications/properties/lengthMin")}  
142                    mm 
143                </div> 
144                </#if> 
145                <#if cmsEntity.getField(profile, "/entity/relationships/accessorySpecifications/properties/lengthMax")?has_content> 
146                <div class="text-bolder"> 
147                    Length max. 
148                </div> 
149                <div class="text-medium"> 
150                    ${cmsEntity.getField(profile, "/entity/relationships/accessorySpecifications/properties/lengthMax")}  
151                    mm 
152                </div> 
153                </#if> 
154                <#if cmsEntity.getField(profile, "/entity/relationships/accessorySpecifications/properties/width")?has_content> 
155                <div class="text-bolder"> 
156                    <@liferay.language key="width"/> 
157                </div> 
158                <div class="text-medium"> 
159                    ${cmsEntity.getField(profile, "/entity/relationships/accessorySpecifications/properties/width")}  
160                    mm 
161                </div> 
162                </#if> 
163                <#if cmsEntity.getField(profile, "/entity/relationships/accessorySpecifications/properties/height")?has_content> 
164                <div class="text-bolder"> 
165                    <@liferay.language key="height"/> 
166                </div> 
167                <div class="text-medium"> 
168                    ${cmsEntity.getField(profile, "/entity/relationships/accessorySpecifications/properties/height")}  
169                    mm 
170                </div> 
171                </#if> 
172 
173 
174                 
175 
176            </div> 
177            <div class="col-lg-6"> 
178                <#list variants.iterator() as variant> 
179                <#assign vImages = variantImages(variant,siteDefaultLocale) > 
180                 
181                <#if vImages?has_content> 
182                    <#if variant?index = 0> 
183                        <@imageZoom  
184                            id=variant.id  
185                            cssClasses="zoom-gallery-slide active"  
186                            images=vImages 
187                            carouselCss="accessory-main-carousel owl-carousel owl-theme image-carousel-container"  
188                            zoomCss="MagicZoom accessory-page-product-image" 
189                            videoCss="accessory-main-video" 
190                            />  
191                    <#else> 
192                    <@imageZoom  
193                        id=variant.id  
194                        variantCss="variant-gallery"  
195                        cssClasses="zoom-gallery-slide active"  
196                        images=vImages 
197                        carouselCss="accessory-main-carousel owl-carousel owl-theme image-carousel-container"  
198                        zoomCss="MagicZoom accessory-page-product-image" 
199                        videoCss="accessory-main-video" 
200                    /> 
201                    </#if> 
202                </#if> 
203                </#list> 
204                <#list variants.iterator() as variant> 
205                    <#if !variant.properties.isNull("colorCode")> 
206                        <#if variant?index == 0> 
207                            <div class="text-bold"><@liferay.language key="color-options"/></div> 
208                        </#if> 
209                        <#assign color = "${variant.properties.colorCode}"> 
210                        <#assign sku = accessoryVariantSKU(variant) > 
211                     
212                    <#if variant?index = 0> 
213                        <@variantChange id=variant.id checked="checked" color=color sku=sku/> 
214                    <#else> 
215                        <@variantChange id=variant.id color=color sku=sku/> 
216                    </#if> 
217                    </#if> 
218                </#list> 
219            </div> 
220        </div> 
221 <@sectionFooter/> 
222 
223<style> 
224 
225    .product-page-product-title { 
226        font-weight: 600; 
227        margin-bottom: 0; 
228    } 
229 
230    .product-page-form { 
231        margin-bottom: 15px; 
232    } 
233 
234    .btn-product-page-buy { 
235        width: 40%; 
236        min-width: 250px;  
237        height: 43px  
238    } 
239 
240    .btn-bold { 
241        border-width: 2px; 
242        text-transform: uppercase; 
243        font-weight: 800; 
244    } 
245 
246    .buy-product-dropdown { 
247        display: inline-block; 
248        width: 60px; 
249        height: 43px !important; 
250        border-radius: 0; 
251        border-left: none; 
252        position: absolute; 
253        clear: left; 
254        padding-left: 2%; 
255        font-size: 1.3em; 
256        border: 2px solid #ced4da; 
257        border-left: none; 
258        line-height: 20px; 
259    } 
260 
261    .buy-product-dropdown h3 { 
262        display: inline; 
263        vertical-align: middle; 
264    } 
265 
266    .buy-product-dropdown svg { 
267        width: 20px; 
268        line-height: .2; 
269        vertical-align: middle; 
270    } 
271 
272.accessory-main-carousel .owl-prev { 
273    width: 17px; 
274    height: 100px; 
275    position: absolute; 
276    left: -20px; 
277    top: 47%; 
278    transform: translateY(-50%); 
279    display: block !important; 
280    border:0px solid black; 
281    font-size: 2em !important; 
282} 
283 
284.accessory-main-carousel .owl-next { 
285    width: 17px; 
286    height: 100px; 
287    position: absolute; 
288    right: -20px; 
289    top: 47%; 
290    transform: translateY(-50%); 
291    display: block !important; 
292    border:0px solid black; 
293    font-size: 2em !important; 
294} 
295 
296.accessory-main-video{ 
297    height:396px; 
298    width:396px; 
299} 
300 
301.price-variant { 
302        display:none; 
303    } 
304 
305</style> 
306 
307<script> 
308    
309     $('.accessory-main-carousel').owlCarousel({ 
310    loop:false, 
311    nav:true, 
312    dots:false, 
313    margin:5, 
314    lazyLoad:true, 
315    navText : ['<i class="icon-angle-left">','<i class="icon-angle-right">'], 
316    responsive:{ 
317        0:{items:3, slideBy:3}, 
318        600:{items:4, slideBy:4}, 
319        1000:{items:5, slideBy:5} 
320     }, 
321}); 
322 
323<#if isWebstoreEnabled()> 
324// Add product into shopping cart  
325    $('.btn-product-page-buy').click(function(event){ 
326 
327            genelec.cart().then(function(cart){ 
328                let qty  = $(event.target).attr("data-qty"); 
329                let sku = $(event.target).attr("data-sku"); 
330                 
331                // qty is number and sku exists 
332                if (!isNaN(qty) && sku) { 
333                    cart.add(sku, qty).then(function(){$( document ).trigger("genelec-shopping-cart-updated");}); 
334                } 
335            }); 
336        return false; 
337    }); 
338 
339    genelec.shopify.fillPrices('#${portletId}'); 
340</#if>     
341 
342</script> 
343</#if> 
344 
345<#function accessoryVariantSKU variant> 
346    <#if hasWebstoreSupport(variant,siteDefaultLocale)> 
347        <#assign sku = localizeField(variant.properties.shopifyAccessoryVariant, siteDefaultLocale) > 
348    <#else> 
349        <#assign sku = ""> 
350    </#if>  
351    <#return sku> 
352</#function> 
Une erreur s'est produite lors du traitement du gabarit.
The following has evaluated to null or missing:
==> cmsEntity.getField(profile, documentPath)  [in template "20116#20152#211671" at line 14, column 30]

----
Tip: If the failing expression is known to be legally refer to something that's sometimes null or missing, either specify a default value like myOptionalVar!myDefault, or use <#if myOptionalVar??>when-present<#else>when-missing</#if>. (These only cover the last step of the expression; to cover the whole expression, use parenthesis: (myOptionalVar.foo)!myDefault, (myOptionalVar.foo)??
----

----
FTL stack trace ("~" means nesting-related):
	- Failed at: #assign documents = cmsEntity.getFiel...  [in template "20116#20152#211671" at line 14, column 9]
----
1<#--  </div></div>  --> 
2 
3<#if cmsEntity?has_content> 
4<#include "${templatesPath}/227222" />  
5<#assign siteDefaultLocale = portalUtil.getSiteDefaultLocale(groupId)?string?replace("_","-") > 
6<#assign reviewsPath = "/entity/relationships/reviews/"+profile.getCMSLangCode()+"/references" > 
7 
8<#if cmsEntity.getField(profile, "/entity/relationships/documents")?has_content || cmsEntity.getField(profile, reviewsPath)?has_content || cmsEntity.getField(profile, "/entity/relationships/faqs")?has_content> 
9<#assign pageTemplate = "${getPageTemplateNameByUuid('${themeDisplay.layout.layoutPrototypeUuid}')}"> 
10 
11<#if cmsEntity.getField(profile, "/entity/relationships/documents")?has_content> 
12    <#assign documentPath = "/entity/relationships/documents/"+profile.getCMSLangCode()+"/references" > 
13    <#if documentPath?has_content> 
14        <#assign documents = cmsEntity.getField(profile, documentPath) > 
15    </#if> 
16</#if> 
17<#if cmsEntity.getField(profile, reviewsPath)?has_content> 
18    <#assign reviews = cmsEntity.getField(profile, reviewsPath) > 
19</#if> 
20 
21<#if cmsEntity.getField(profile, "/entity/relationships/faqs")?has_content> 
22        <#assign faqs = cmsEntity.getField(profile, "/entity/relationships/faqs") > 
23        <#if groupField(cmsEntity,"/entity/relationships/faqs", groupId)?has_content> 
24            <#assign faqs = groupField(cmsEntity,"/entity/relationships/faqs", groupId).references > 
25        </#if> 
26</#if> 
27 
28<@sectionHeader title="${title}" menuTitle="${menuTitle}" cssClasses="bg-blue-darker product-page-downloads" id="section-downloads"/> 
29 
30 
31<#assign documentsDocumentTypes = ["operating manual", "guide", "other manual", "brochure", "catalogue", "datasheet", "software release note"]> 
32<#assign downloadsDocumentTypes = ["line drawing","simulation file", "test signal", "software realese note", "certificate", "technical paper", "article or publication"]> 
33<#assign reviewsDocumentTypes = ["review"]> 
34 
35<#assign reviewColContent = "" /> 
36<#assign downloadColContent = "" /> 
37<#assign documentColContent = "" /> 
38 
39<#if documents?has_content> 
40    <#list documents.iterator() as document> 
41        <#assign documentType = ""> 
42        <#if !document.properties.isNull("documentTypeKey")> 
43            <#assign documentType = localizeField(document.properties.documentTypeKey)?lower_case> 
44        <#elseif !document.properties.isNull("documentType")> 
45            <#assign documentType = localizeField(document.properties.documentType)?lower_case> 
46        </#if> 
47        <#if !document.assets.isNull("file") && !document.assets.file.isNull("mediaType")> 
48            <#assign mediaType = document.assets.file.mediaType?replace(".","/")> 
49        </#if> 
50 
51        <#if downloadsDocumentTypes?seq_contains(documentType)> 
52            <#assign downloadColContent> 
53                ${downloadColContent} 
54                <#if !document.assets.isNull("file")> 
55                    <a href="${document.assets['file'].url}" target="_blank" rel="noopener noreferrer" class="type-${documentType?replace(" ", "-")}"> 
56                        <#if mediaType?keep_after_last("/") = "pdf"> 
57                            <span class="text-bolder">${localizeField(document.properties.title, profile.getCMSLangCode())}<span style="white-space: nowrap">&nbsp;<@linkIcon cssClasses="icon tiny-icon" alt="pdf" icon="pdf-green"/></span></span> 
58                        <#else> 
59                            <span class="text-bolder">${localizeField(document.properties.title, profile.getCMSLangCode())}<span style="white-space: nowrap">&nbsp;<@linkIcon cssClasses="icon tiny-icon" alt="" icon="download-green"/></span></span> 
60                        </#if> 
61                    </a> 
62                </#if> 
63            </#assign> 
64        <#elseif documentsDocumentTypes?seq_contains(documentType)> 
65            <#assign documentColContent> 
66                ${documentColContent} 
67                <#if !document.assets.isNull("file")> 
68                    <a href="${document.assets['file'].url}" target="_blank" rel="noopener noreferrer" class="type-${documentType?replace(" ", "-")}"> 
69                        <span class="text-bolder">${localizeField(document.properties.title, profile.getCMSLangCode())}<span style="white-space: nowrap">&nbsp;<@linkIcon cssClasses="icon tiny-icon" alt="pdf" icon="pdf-green"/></span></span> 
70                    </a> 
71                </#if> 
72            </#assign> 
73        </#if> 
74    </#list> 
75</#if> 
76 
77<#if reviews?has_content> 
78    <#list reviews.iterator() as review> 
79        <#assign id = review.id> 
80        <#assign reviewColContent> 
81            ${reviewColContent} 
82            <#if !review.properties.isNull("url")> 
83                <a href="${review.properties.url}" target="_blank" rel="noopener noreferrer" class="type-review"> 
84                    <span class="text-bolder">${review.properties.heading}<span style="white-space: nowrap">&nbsp;<@linkIcon cssClasses="icon tiny-icon" alt="" icon="external-green"/></span></span> 
85                </a>  
86            <#else> 
87                <a href="#/" onClick="openDocumentReviewPopup('${id}')"  class="type-review"> 
88                    <span class="text-bolder"> 
89                        ${review.properties.heading} 
90                    </span> 
91                </a> 
92            </#if> 
93        </#assign> 
94    </#list> 
95</#if> 
96 
97<div class="row bg-white table-row-padding"> 
98 
99    <div class="col-md-4"> 
100        <#if documentColContent?has_content> 
101            <h3><@liferay.language key="documents"/></h3> 
102                ${documentColContent} 
103        </#if> 
104         
105    </div> 
106     
107    <div class="col-md-4"> 
108        <#if downloadColContent?has_content> 
109            <h3><@liferay.language key="downloads"/></h3> 
110            ${downloadColContent} 
111        </#if> 
112    </div> 
113 
114 
115    <div class="col-md-4"> 
116        <#if reviewColContent?has_content> 
117            <h3><@liferay.language key="reviews"/></h3> 
118            ${reviewColContent} 
119        </#if> 
120    </div> 
121     
122    <#if faqs?has_content && !faqs.keys??> 
123        <#assign showFAQCount = 3 > 
124     
125        <div id="faqs" class="row bg-white table-row-padding"> 
126            <div class="col-md-7"> 
127                <h3><@liferay.language key="faq"/></h3> 
128                <#list faqs.iterator() as faq> 
129                    <#assign id = faq.id> 
130                 
131                    <div class="faq_element <#if faq?index gte showFAQCount>hidden</#if>"  > 
132                        <div class="faq_element_question col-lg-12" onclick="faqShowAnswer('${id}');"> 
133 
134                            <i class="icon-plus-sign" id="faq-plus-${id}"></i> 
135                            <i class="icon-minus-sign" id="faq-minus-${id}" style="display: none;"></i> 
136 
137                            <a href="#faq_element_answer" class="ml-4" > 
138                                <#assign question = faq.properties.question> 
139                                <h4 class="text-bolder">${question}</h4> 
140                            </a> 
141                        </div>  
142                        <div class="faq_element_answer ml-4" id="faq-element-answer-${id}"> 
143                            <#assign answer = cmsContentFormatterService.getMarkdown(faq.properties.answer)> 
144                            ${answer?replace('h1>|h2>', 'h5>', 'r')?replace('h3>', 'h6>')} 
145                        </div> 
146                    </div> 
147                </#list> 
148 
149                <#if faqs.length() gt showFAQCount> 
150                    <a href="#" onclick="$('#faqs .hidden').removeClass('hidden'); $(this).hide();return false;"><@liferay.language key="show-more"/></a> 
151                </#if> 
152            </div> 
153        </div> 
154    </#if> 
155</div> 
156<@sectionFooter/> 
157 
158 
159<#-- Popup --> 
160<#if reviews?has_content> 
161    <div id="theme-popupDocumentReview" class="popup"> 
162        <#list reviews.iterator() as review> 
163            <#assign id = review.id> 
164         
165                <#if review?index == 0> 
166                    <div class="close-button-container"> 
167                        <button class="close" onClick="closeDocumentReviewPopup('${id}')" id="closeButtonDocumentReview-${id}"></button> 
168                    </div> 
169 
170                    <div class="panel popup-content" id="popupContentDocumentReview"> 
171                        <div class="panel-body"> 
172                </#if> 
173 
174                            <div class="documentReviewContent" id="documentReviewContent-${id}"> 
175                                <div class="h1 section-heading text-bolder">${review.properties.heading}</div> 
176                                <#if !review.properties.isNull("summary")> 
177                                    <#assign summary = cmsContentFormatterService.getMarkdown(review.properties.summary)> 
178                                    ${summary} 
179                                </#if> 
180                             
181                                <#if !review.properties.isNull("content")>  
182                                    <#assign content = cmsContentFormatterService.getMarkdown(localizeField(review.properties.content, profile.getCMSLangCode()))> 
183                                    ${content} 
184                                </#if> 
185                            </div> 
186 
187                <#if review?index == (review?size - 1)> 
188                        </div> 
189                    </div> 
190                </#if> 
191                 
192        </#list> 
193    </div> 
194</#if> 
195 
196</#if> 
197 
198<script> 
199function faqShowAnswer(id){ 
200 
201    var wasHidden = $("#faq-element-answer-"+id).is(":hidden"); 
202 
203    // Close all  
204    $("#faqs .faq_element_answer").hide(); 
205    $("#faqs .icon-plus-sign").show(); 
206    $("#faqs .icon-minus-sign").hide(); 
207 
208    if (wasHidden) { 
209        var answer = $("#faq-element-answer-"+id); 
210        $("#faq-plus-"+id).hide(); 
211        $("#faq-minus-"+id).show(); 
212        answer.show(); 
213        console.log(answer.parent().find(".faq_element_question")); 
214        if(!inViewport(answer.parent().find(".faq_element_question").first())) { 
215             
216            var scrollFix = 10; // some margin 
217            var questionPos = answer.parent().find(".faq_element_question").first().offset().top; 
218             
219            // ControlBar 
220            if ($("#ControlMenu").is(":visible")) { 
221                scrollFix += $("#ControlMenu").height(); 
222            } 
223 
224            // subnavi  
225            if ($("#submenu-links").is(":visible")) { 
226                scrollFix += $("#submenu-links").height(); 
227            }  
228            console.log("Scrollfix " + scrollFix) 
229             
230            var scrollTo = questionPos - scrollFix; 
231             
232            $('html, body').animate({ 
233                scrollTop: (scrollTo-1) 
234            },500, function(){ 
235                setTimeout(function() { 
236                    $('html, body').scrollTop(scrollTo); 
237                }, 200); 
238            }); 
239        } 
240 
241    } 
242}; 
243 
244function inViewport(el) { 
245    var elementTop = el.offset().top; 
246    var elementBottom = elementTop + el.outerHeight(); 
247 
248    var viewportTop = $(window).scrollTop(); 
249    var viewportBottom = viewportTop + $(window).height(); 
250 
251    return elementBottom > viewportTop && elementTop < viewportBottom; 
252} 
253 
254function openDocumentReviewPopup(reviewId) { 
255    openPopup("DocumentReview"); 
256    $('#documentReviewContent-'+reviewId).show(); 
257 
258    //update: 
259    $('#theme-popupDocumentReview .close').attr('id','closeButtonDocumentReview-'+reviewId); 
260    $('#theme-popupDocumentReview .close').attr('onclick', 'closeDocumentReviewPopup("' + reviewId + '")'); 
261    $('#closeButtonDocumentReview-'+reviewId).show(); 
262} 
263 
264function closeDocumentReviewPopup(reviewId) { 
265    closePopup("DocumentReview"); 
266    $('#documentReviewContent-'+reviewId).hide(); 
267 
268    //update: 
269    $('#closeButtonDocumentReview-'+reviewId).hide(); 
270} 
271function closeDownloadsPopup(e) { 
272    if(!$('#popupContent'+"DocumentReview").is(e.target) &&  
273        $('#popupContent'+"DocumentReview").has(e.target).length == 0 &&  
274        $(e.target).attr('class') != 'close' && 
275        $('#theme-popup'+"DocumentReview").css("display") == "block"){ 
276        closePopup("DocumentReview"); 
277        $('div[id^=documentReviewContent-]').hide(); 
278         
279    } 
280}; 
281 
282$(document).on({ 
283    "mouseup": function (e) { closeDownloadsPopup(e); }, 
284    "touchstart": function (e) { closeDownloadsPopup(e); } 
285}); 
286 
287 
288</script> 
289 
290</#if> 

Trouver un revendeur

Saisissez votre ville pour trouver le revendeur Genelec le plus proche

Filtres
X Filtres
All
Moniteurs de studio
Enceintes domestiques
Installation AV
Service technique
Centre d’expérience
SAM Certified
Smart IP Certified
Pays sélectionné