');this.$target.append($('',{src:_.escape(this.$target.data('oe-expression')||this.$target.data('src')),frameborder:'0',allowfullscreen:'allowfullscreen',sandbox:'allow-scripts allow-same-origin',}));return def;},});registry.ul=Animation.extend({selector:'ul.o_ul_folded, ol.o_ul_folded',events:{'click .o_ul_toggle_next':'_onToggleNextClick','click .o_ul_toggle_self':'_onToggleSelfClick',},_onToggleNextClick:function(ev){ev.preventDefault();var $target=$(ev.currentTarget);$target.toggleClass('o_open');$target.closest('li').next().toggleClass('o_close');},_onToggleSelfClick:function(ev){ev.preventDefault();var $target=$(ev.currentTarget);$target.toggleClass('o_open');$target.closest('li').find('ul,ol').toggleClass('o_close');},});registry.gallery=Animation.extend({selector:'.o_gallery:not(.o_slideshow)',xmlDependencies:['/website/static/src/xml/website.gallery.xml'],read_events:{'click img':'_onClickImg',},_onClickImg:function(ev){var self=this;var $cur=$(ev.currentTarget);var urls=[];var idx=undefined;var milliseconds=undefined;var params=undefined;var $images=$cur.closest('.o_gallery').find('img');var size=0.8;var dimensions={min_width:Math.round(window.innerWidth*size*0.9),min_height:Math.round(window.innerHeight*size),max_width:Math.round(window.innerWidth*size*0.9),max_height:Math.round(window.innerHeight*size),width:Math.round(window.innerWidth*size*0.9),height:Math.round(window.innerHeight*size)};$images.each(function(){urls.push($(this).attr('src'));});var $img=($cur.is('img')===true)?$cur:$cur.closest('img');idx=urls.indexOf($img.attr('src'));milliseconds=$cur.closest('.o_gallery').data('interval')||false;params={srcs:urls,index:idx,dim:dimensions,interval:milliseconds,id:_.uniqueId('slideshow_')};var $modal=$(qweb.render('website.gallery.slideshow.lightbox',params));$modal.modal({keyboard:true,backdrop:true,});$modal.on('hidden.bs.modal',function(){$(this).hide();$(this).siblings().filter('.modal-backdrop').remove();$(this).remove();});$modal.find('.modal-content, .modal-body.o_slideshow').css('height','100%');$modal.appendTo(document.body);$modal.one('shown.bs.modal',function(){self.trigger_up('animation_start_demand',{editableMode:false,$target:$modal.find('.modal-body.o_slideshow'),});});},});registry.gallerySlider=Animation.extend({selector:'.o_slideshow',xmlDependencies:['/website/static/src/xml/website.gallery.xml'],start:function(){var self=this;this.$carousel=this.$target.is('.carousel')?this.$target:this.$target.find('.carousel');this.$indicator=this.$carousel.find('.carousel-indicators');this.$prev=this.$indicator.find('li.o_indicators_left').css('visibility','');this.$next=this.$indicator.find('li.o_indicators_right').css('visibility','');var $lis=this.$indicator.find('li[data-slide-to]');var nbPerPage=Math.floor(this.$indicator.width()/$lis.first().outerWidth(true))-3;var realNbPerPage=nbPerPage||1;var nbPages=Math.ceil($lis.length/realNbPerPage);var index;var page;update();function hide(){$lis.each(function(i){$(this).toggleClass('d-none',!(i>=page*nbPerPage&&i<(page+1)*nbPerPage));});if(self.editableMode){return;}
if(page<=0){self.$prev.detach();}else{self.$prev.prependTo(self.$indicator);}
if(page>=nbPages-1){self.$next.detach();}else{self.$next.appendTo(self.$indicator);}}
function update(){index=$lis.index($lis.filter('.active'))||0;page=Math.floor(index/realNbPerPage);hide();}
this.$carousel.on('slide.bs.carousel.gallery_slider',function(){setTimeout(function(){var $item=self.$carousel.find('.carousel-inner .carousel-item-prev, .carousel-inner .carousel-item-next');var index=$item.index();$lis.removeClass('active').filter('[data-slide-to="'+index+'"]').addClass('active');},0);});this.$indicator.on('click.gallery_slider','> li:not([data-slide-to])',function(){page+=($(this).hasClass('o_indicators_left')?-1:1);page=Math.max(0,Math.min(nbPages-1,page));self.$carousel.carousel(page*realNbPerPage);hide();});this.$carousel.on('slid.bs.carousel.gallery_slider',update);return this._super.apply(this,arguments);},destroy:function(){this._super.apply(this,arguments);if(!this.$indicator){return;}
this.$prev.prependTo(this.$indicator);this.$next.appendTo(this.$indicator);this.$carousel.off('.gallery_slider');this.$indicator.off('.gallery_slider');},});registry.socialShare=Animation.extend({selector:'.oe_social_share',xmlDependencies:['/website/static/src/xml/website.share.xml'],read_events:{'mouseenter':'_onMouseEnter',},_bindSocialEvent:function(){this.$('.oe_social_facebook').click($.proxy(this._renderSocial,this,'facebook'));this.$('.oe_social_twitter').click($.proxy(this._renderSocial,this,'twitter'));this.$('.oe_social_linkedin').click($.proxy(this._renderSocial,this,'linkedin'));this.$('.oe_social_google-plus').click($.proxy(this._renderSocial,this,'google-plus'));},_render:function(){this.$target.popover({content:qweb.render('website.social_hover',{medias:this.socialList}),placement:'bottom',container:this.$target,html:true,trigger:'manual',animation:false,}).popover("show");this.$target.off('mouseleave.socialShare').on('mouseleave.socialShare',function(){var self=this;setTimeout(function(){if(!$(".popover:hover").length){$(self).popover('dispose');}},200);});},_renderSocial:function(social){var url=encodeURIComponent(document.URL.split(/[?#]/)[0]);var title=document.title.split(" | ")[0];var hashtags=' #'+document.title.split(" | ")[1].replace(' ','')+' '+this.hashtags;var social_network={'facebook':'https://www.facebook.com/sharer/sharer.php?u='+url,'twitter':'https://twitter.com/intent/tweet?original_referer='+url+'&text='+encodeURIComponent(title+hashtags+' - ')+url,'linkedin':'https://www.linkedin.com/shareArticle?mini=true&url='+url+'&title='+encodeURIComponent(title),'google-plus':'https://plus.google.com/share?url='+url,};if(!_.contains(_.keys(social_network),social)){return;}
var wHeight=500;var wWidth=500;window.open(social_network[social],'','menubar=no, toolbar=no, resizable=yes, scrollbar=yes, height='+wHeight+',width='+wWidth);},_onMouseEnter:function(){var social=this.$target.data('social');this.socialList=social?social.split(','):['facebook','twitter','linkedin','google-plus'];this.hashtags=this.$target.data('hashtags')||'';this._render();this._bindSocialEvent();},});registry.facebookPage=Animation.extend({selector:'.o_facebook_page',start:function(){var def=this._super.apply(this,arguments);var params=_.pick(this.$el.data(),'href','height','tabs','small_header','hide_cover','show_facepile');if(!params.href){return def;}
params.width=utils.confine(Math.floor(this.$el.width()),180,500);var src=$.param.querystring('https://www.facebook.com/plugins/page.php',params);this.$iframe=$('',{src:src,class:'o_temp_auto_element',width:params.width,height:params.height,css:{border:'none',overflow:'hidden',},scrolling:'no',frameborder:'0',allowTransparency:'true',});this.$el.append(this.$iframe);return def;},destroy:function(){this._super.apply(this,arguments);if(this.$iframe){this.$iframe.remove();}},});registry._fixAppleCollapse=Animation.extend({selector:'.s_faq_collapse [data-toggle="collapse"]',events:{'click':function(){},},});return{Class:Animation,registry:registry,};});;
/* /website/static/src/js/content/zoomodoo.js defined in bundle 'web.assets_frontend' */
odoo.define('website.content.zoomodoo',function(require){'use strict';var dw,dh,rw,rh,lx,ly;var defaults={linkTag:'a',linkAttribute:'data-zoom-image',event:'click',preventClicks:true,disabledOnMobile:true,beforeShow:$.noop,beforeHide:$.noop,onShow:$.noop,onHide:$.noop,onMove:$.noop};function ZoomOdoo(target,options){this.$target=$(target);this.opts=$.extend({},defaults,options,this.$target.data());if(this.isOpen===undefined){this._init();}}
ZoomOdoo.prototype._init=function(){if(window.outerWidth>467||!this.opts.disabledOnMobile){this.$link=this.$target.find(this.opts.linkTag).length&&this.$target.find(this.opts.linkTag)||this.$target;this.$image=this.$target.find('img').length&&this.$target.find('img')||this.$target;this.$flyout=$('');var $attach=this.$target;if(this.opts.attach!==undefined&&this.$target.parents(this.opts.attach).length){$attach=this.$target.parents(this.opts.attach);}
$attach.parent().on('mousemove.zoomodoo touchmove.zoomodoo',$.proxy(this._onMove,this));$attach.parent().on('mouseleave.zoomodoo touchend.zoomodoo',$.proxy(this._onLeave,this));this.$target.on(this.opts.event+'.zoomodoo touchstart.zoomodoo',$.proxy(this._onEnter,this));if(this.opts.preventClicks){this.$target.on('click.zoomodoo',function(e){e.preventDefault();});}}};ZoomOdoo.prototype.show=function(e,testMouseOver){var w1,h1,w2,h2;var self=this;if(this.opts.beforeShow.call(this)===false)return;if(!this.isReady){return this._loadImage(this.$link.attr(this.opts.linkAttribute),function(){if(self.isMouseOver||!testMouseOver){self.show(e);}});}
var $attach=this.$target;if(this.opts.attach!==undefined&&this.$target.parents(this.opts.attach).length){$attach=this.$target.parents(this.opts.attach);}
$attach.parent().append(this.$flyout);w1=this.$target.width();h1=this.$target.height();w2=this.$flyout.width();h2=this.$flyout.height();dw=this.$zoom.width()-w2;dh=this.$zoom.height()-h2;if(dw<0)dw=0;if(dh<0)dh=0;rw=dw/w1;rh=dh/h1;this.isOpen=true;this.opts.onShow.call(this);if(e){this._move(e);}};ZoomOdoo.prototype._onEnter=function(e){var touches=e.originalEvent.touches;this.isMouseOver=true;if(!touches||touches.length===1){e.preventDefault();this.show(e,true);}};ZoomOdoo.prototype._onMove=function(e){if(!this.isOpen)return;e.preventDefault();this._move(e);};ZoomOdoo.prototype._onLeave=function(){this.isMouseOver=false;if(this.isOpen){this.hide();}};ZoomOdoo.prototype._onLoad=function(e){if(!e.currentTarget.width)return;this.isReady=true;this.$flyout.html(this.$zoom);if(e.data.call){e.data();}};ZoomOdoo.prototype._loadImage=function(href,callback){var zoom=new Image();this.$zoom=$(zoom).on('load',callback,$.proxy(this._onLoad,this));zoom.style.position='absolute';zoom.src=href;};ZoomOdoo.prototype._move=function(e){if(e.type.indexOf('touch')===0){var touchlist=e.touches||e.originalEvent.touches;lx=touchlist[0].pageX;ly=touchlist[0].pageY;}else{lx=e.pageX||lx;ly=e.pageY||ly;}
var offset=this.$target.offset();var pt=ly-offset.top;var pl=lx-offset.left;var xt=Math.ceil(pt*rh);var xl=Math.ceil(pl*rw);if(xl<0||xt<0||xl>dw||xt>dh){this.hide();}else{var top=xt*-1;var left=xl*-1;this.$zoom.css({top:top,left:left});this.opts.onMove.call(this,top,left);}};ZoomOdoo.prototype.hide=function(){if(!this.isOpen)return;if(this.opts.beforeHide.call(this)===false)return;this.$flyout.detach();this.isOpen=false;this.opts.onHide.call(this);};$.fn.zoomOdoo=function(options){return this.each(function(){var api=$.data(this,'zoomOdoo');if(!api){$.data(this,'zoomOdoo',new ZoomOdoo(this,options));}else if(api.isOpen===undefined){api._init();}});};});;
/* /website/static/src/js/menu/navbar.js defined in bundle 'web.assets_frontend' */
odoo.define('website.navbar',function(require){'use strict';var rootWidget=require('web_editor.root_widget');var concurrency=require('web.concurrency');var Widget=require('web.Widget');var websiteRootData=require('website.WebsiteRoot');var websiteNavbarRegistry=new rootWidget.RootWidgetRegistry();var WebsiteNavbar=rootWidget.RootWidget.extend({events:_.extend({},rootWidget.RootWidget.prototype.events||{},{'click [data-action]':'_onActionMenuClick','mouseover > ul > li.dropdown:not(.show)':'_onMenuHovered','click .o_mobile_menu_toggle':'_onMobileMenuToggleClick',}),custom_events:_.extend({},rootWidget.RootWidget.prototype.custom_events||{},{action_demand:'_onActionDemand',edit_mode:'_onEditMode',ready_to_save:'_onSave',}),init:function(){this._super.apply(this,arguments);this._widgetDefs=[$.Deferred()];},start:function(){var self=this;return this._super.apply(this,arguments).then(function(){self._widgetDefs[0].resolve();});},_attachComponent:function(){var def=this._super.apply(this,arguments);this._widgetDefs.push(def);return def;},_getRegistry:function(){return websiteNavbarRegistry;},_handleAction:function(actionName,params,_i){var self=this;return this._whenReadyForActions().then(function(){var defs=[];_.each(self._widgets,function(w){if(!w.handleAction){return;}
var def=w.handleAction(actionName,params);if(def!==null){defs.push(def);}});if(!defs.length){if(_i>50){console.warn(_.str.sprintf("Action '%s' was not able to be handled.",actionName));return $.Deferred().reject();}
return concurrency.delay(100).then(function(){return self._handleAction(actionName,params,(_i||0)+1);});}
return $.when.apply($,defs);});},_whenReadyForActions:function(){return $.when.apply($,this._widgetDefs);},_onActionMenuClick:function(ev){var $button=$(ev.currentTarget);$button.prop('disabled',true);this._handleAction($button.data('action')).always(function(){$button.prop('disabled',false);});},_onActionDemand:function(ev){var def=this._handleAction(ev.data.actionName,ev.data.params);if(ev.data.onSuccess){def.done(ev.data.onSuccess);}
if(ev.data.onFailure){def.fail(ev.data.onFailure);}},_onEditMode:function(){var self=this;this.$el.addClass('editing_mode');_.delay(function(){self.do_hide();},800);},_onMenuHovered:function(ev){var $opened=this.$('> ul > li.dropdown.show');if($opened.length){$opened.find('.dropdown-toggle').dropdown('toggle');$(ev.currentTarget).find('.dropdown-toggle').dropdown('toggle');}},_onMobileMenuToggleClick:function(){this.$el.parent().toggleClass('o_mobile_menu_opened');},_onSave:function(ev){ev.data.defs.push(this._handleAction('on_save'));},});var WebsiteNavbarActionWidget=Widget.extend({actions:{},handleAction:function(actionName,params){var action=this[this.actions[actionName]];if(action){return $.when(action.apply(this,params||[]));}
return null;},});websiteRootData.websiteRootRegistry.add(WebsiteNavbar,'#oe_main_menu_navbar');return{WebsiteNavbar:WebsiteNavbar,websiteNavbarRegistry:websiteNavbarRegistry,WebsiteNavbarActionWidget:WebsiteNavbarActionWidget,};});;
/* /website/static/src/js/html_editor.test.js defined in bundle 'web.assets_frontend' */
odoo.define('website.test.html_editor',function(require){'use strict';var tour=require('web_tour.tour');var base=require('web_editor.base');tour.register('html_editor_multiple_templates',{test:true,url:'/aboutus',wait_for:base.ready(),},[{content:"enter edit mode",trigger:'a[data-action=edit]',},{content:"drop a snippet",trigger:'#oe_snippets .oe_snippet:has(.s_cover) .oe_snippet_thumbnail',run:"drag_and_drop #oe_structure_test_ui",},{content:"save the page",extra_trigger:'#wrapwrap .s_cover',trigger:"#web_editor-top-edit button[data-action=save]",},{content:"open customize menu",extra_trigger:"body:not(.editor_enable)",trigger:'#customize-menu > a',},{content:"open html editor",trigger:'#html_editor',},{content:"add something in the aboutus view",trigger:'div.ace_line .ace_xml:contains("aboutus")',run:function(){ace.edit('ace-view-editor').getSession().insert({row:3,column:1},'
somenewcontent
\n');},},{content:"select oe_structure specific view",trigger:'div.ace_line .ace_xml:contains("somenewcontent")',run:function(){var viewId=$('#ace-view-list option:contains("oe_structure")').val();$('#ace-view-list').val(viewId).trigger('change');},},{content:"add something in the oe_structure specific view",extra_trigger:'#ace-view-id:contains("website.aboutus_oe_structure_test_ui")',trigger:'div.ace_line .ace_xml:contains("s_cover")',run:function(){ace.edit('ace-view-editor').getSession().insert({row:2,column:1},'
anothernewcontent
\n');},},{content:"save the html editor",extra_trigger:'div.ace_line .ace_xml:contains("anothernewcontent")',trigger:".o_ace_view_editor button[data-action=save]",},{content:"check that the page has both modification",extra_trigger:'#wrapwrap:contains("anothernewcontent")',trigger:'#wrapwrap:contains("somenewcontent")',run:function(){},},]);tour.register('test_html_editor_scss',{test:true,url:'/aboutus',wait_for:base.ready(),},[{content:"open customize menu",extra_trigger:'#wrap:visible',trigger:'#customize-menu > a',},{content:"open html editor",trigger:'#html_editor',},{content:"open type switcher",trigger:'.o_ace_type_switcher button',},{content:"select scss files",trigger:'.o_ace_type_switcher_choice[data-type="scss"]',},{content:"select 'website.ui.scss'",trigger:'#ace-scss-list',run:function(){var scssId=$('#ace-scss-list option:contains("website.ui")').val();$('#ace-scss-list').val(scssId).trigger('change');},},{content:"add some scss content in the file",trigger:'div.ace_line .ace_variable:contains("body.o_connected_user")',run:function(){ace.edit('ace-view-editor').getSession().insert({row:2,column:0},'#wrap {display: none;}\n');},},{content:"save the html editor",extra_trigger:'div.ace_line:contains("#wrap {display: none;}")',trigger:".o_ace_view_editor button[data-action=save]",},{content:"check that the scss modification got applied",trigger:'body:has(#wrap:hidden)',run:function(){},},{content:"reset view (after reload, html editor should have been reopened where it was)",trigger:'#ace-view-id button[data-action="reset"]',},{content:"confirm reset warning",trigger:'.modal-footer .btn-primary',},{content:"check that the scss file was reset correctly, wrap content should now be visible again",trigger:'#wrap:visible',run:function(){},},]);});;
/* /website_mail/static/src/js/follow.js defined in bundle 'web.assets_frontend' */
odoo.define('website_mail.follow',function(require){'use strict';var sAnimation=require('website.content.snippets.animation');sAnimation.registry.follow=sAnimation.Class.extend({selector:'.js_follow',start:function(){var self=this;this.is_user=false;this._rpc({route:'/website_mail/is_follower',params:{model:this.$target.data('object'),res_id:this.$target.data('id'),},}).always(function(data){self.is_user=data.is_user;self.email=data.email;self.toggle_subscription(data.is_follower,data.email);self.$target.removeClass('d-none');});if(!this.editableMode){$('.js_follow > .input-group-append.d-none').removeClass('d-none');this.$target.find('.js_follow_btn, .js_unfollow_btn').on('click',function(event){event.preventDefault();self._onClick();});}
return this._super.apply(this,arguments);},_onClick:function(){var self=this;var $email=this.$target.find(".js_follow_email");if($email.length&&!$email.val().match(/.+@.+/)){this.$target.addClass('o_has_error').find('.form-control, .custom-select').addClass('is-invalid');return false;}
this.$target.removeClass('o_has_error').find('.form-control, .custom-select').removeClass('is-invalid');var email=$email.length?$email.val():false;if(email||this.is_user){this._rpc({route:'/website_mail/follow',params:{'id':+this.$target.data('id'),'object':this.$target.data('object'),'message_is_follower':this.$target.attr("data-follow")||"off",'email':email,},}).then(function(follow){self.toggle_subscription(follow,email);});}},toggle_subscription:function(follow,email){follow=follow||(!email&&this.$target.attr('data-unsubscribe'));if(follow){this.$target.find(".js_follow_btn").addClass('d-none');this.$target.find(".js_unfollow_btn").removeClass('d-none');}
else{this.$target.find(".js_follow_btn").removeClass('d-none');this.$target.find(".js_unfollow_btn").addClass('d-none');}
this.$target.find('input.js_follow_email').val(email||"").attr("disabled",email&&(follow||this.is_user)?"disabled":false);this.$target.attr("data-follow",follow?'on':'off');},});});;
/* /website_mail/static/src/js/website_mail.js defined in bundle 'web.assets_frontend' */
odoo.define('website_mail.thread',function(require){'use strict';var ajax=require('web.ajax');var core=require('web.core');var qweb=core.qweb;var PortalChatter=require('portal.chatter').PortalChatter;PortalChatter.include({_loadTemplates:function(){return $.when(this._super(),ajax.loadXML('/website_mail/static/src/xml/website_mail.xml',qweb));},});});;
/* /website_form/static/src/js/website_form.js defined in bundle 'web.assets_frontend' */
odoo.define('website_form.animation',function(require){'use strict';var core=require('web.core');var time=require('web.time');var ajax=require('web.ajax');var sAnimation=require('website.content.snippets.animation');var _t=core._t;var qweb=core.qweb;sAnimation.registry.form_builder_send=sAnimation.Class.extend({selector:'.s_website_form',willStart:function(){var def;if(!$.fn.datetimepicker){def=ajax.loadJS("/web/static/lib/tempusdominus/tempusdominus.js");}
return $.when(this._super.apply(this,arguments),def);},start:function(editable_mode){if(editable_mode){this.stop();return;}
var self=this;this.templates_loaded=ajax.loadXML('/website_form/static/src/xml/website_form.xml',qweb);this.$target.find('.o_website_form_send').on('click',function(e){self.send(e);});var l10n=_t.database.parameters;var datepickers_options={minDate:moment({y:1900}),maxDate:moment({y:9999,M:11,d:31}),calendarWeeks:true,icons:{time:'fa fa-clock-o',date:'fa fa-calendar',next:'fa fa-chevron-right',previous:'fa fa-chevron-left',up:'fa fa-chevron-up',down:'fa fa-chevron-down',},locale:moment.locale(),format:time.getLangDatetimeFormat(),};this.$target.find('.o_website_form_datetime').datetimepicker(datepickers_options);datepickers_options.format=time.getLangDateFormat();this.$target.find('.o_website_form_date').datetimepicker(datepickers_options);return this._super.apply(this,arguments);},destroy:function(){this._super.apply(this,arguments);this.$target.find('button').off('click');},send:function(e){e.preventDefault();this.$target.find('.o_website_form_send').off('click').addClass('disabled').attr('disabled','disabled');var self=this;self.$target.find('#o_website_form_result').empty();if(!self.check_error_fields({})){self.update_status('invalid');return false;}
this.form_fields=this.$target.serializeArray();$.each(this.$target.find('input[type=file]'),function(outer_index,input){$.each($(input).prop('files'),function(index,file){self.form_fields.push({name:input.name+'['+outer_index+']['+index+']',value:file});});});var form_values={};_.each(this.form_fields,function(input){if(input.name in form_values){if(Array.isArray(form_values[input.name])){form_values[input.name].push(input.value);}else{form_values[input.name]=[form_values[input.name],input.value];}}else{if(input.value!==''){form_values[input.name]=input.value;}}});for(var key in this.$target.data()){if(_.str.startsWith(key,'form_field_')){form_values[key.replace('form_field_','')]=this.$target.data(key);}}
ajax.post(this.$target.attr('action')+(this.$target.data('force_action')||this.$target.data('model_name')),form_values).then(function(result_data){result_data=$.parseJSON(result_data);if(!result_data.id){self.update_status('error');if(result_data.error_fields){self.check_error_fields(result_data.error_fields);}}else{var success_page=self.$target.attr('data-success_page');if(success_page){$(window.location).attr('href',success_page);}
else{self.update_status('success');}
self.$target[0].reset();}}).fail(function(result_data){self.update_status('error');});},check_error_fields:function(error_fields){var self=this;var form_valid=true;this.$target.find('.form-field').each(function(k,field){var $field=$(field);var field_name=$field.find('.col-form-label').attr('for');var inputs=$field.find('.o_website_form_input:not(#editable_select)');var invalid_inputs=inputs.toArray().filter(function(input,k,inputs){if(input.required&&input.type==='checkbox'){var checkboxes=_.filter(inputs,function(input){return input.required&&input.type==='checkbox';});return!_.any(checkboxes,function(checkbox){return checkbox.checked;});}else if($(input).hasClass('o_website_form_date')){if(!self.is_datetime_valid(input.value,'date')){return true;}}else if($(input).hasClass('o_website_form_datetime')){if(!self.is_datetime_valid(input.value,'datetime')){return true;}}
return!input.checkValidity();});$field.removeClass('o_has_error').find('.form-control, .custom-select').removeClass('is-invalid');if(invalid_inputs.length||error_fields[field_name]){$field.addClass('o_has_error').find('.form-control, .custom-select').addClass('is-invalid')
if(_.isString(error_fields[field_name])){$field.popover({content:error_fields[field_name],trigger:'hover',container:'body',placement:'top'});$field.data("bs.popover").config.content=error_fields[field_name];$field.popover('show');}
form_valid=false;}});return form_valid;},is_datetime_valid:function(value,type_of_date){if(value===""){return true;}else{try{this.parse_date(value,type_of_date);return true;}catch(e){return false;}}},parse_date:function(value,type_of_date,value_if_empty){var date_pattern=time.getLangDateFormat(),time_pattern=time.getLangTimeFormat();var date_pattern_wo_zero=date_pattern.replace('MM','M').replace('DD','D'),time_pattern_wo_zero=time_pattern.replace('HH','H').replace('mm','m').replace('ss','s');switch(type_of_date){case'datetime':var datetime=moment(value,[date_pattern+' '+time_pattern,date_pattern_wo_zero+' '+time_pattern_wo_zero],true);if(datetime.isValid())
return time.datetime_to_str(datetime.toDate());throw new Error(_.str.sprintf(_t("'%s' is not a correct datetime"),value));case'date':var date=moment(value,[date_pattern,date_pattern_wo_zero],true);if(date.isValid())
return time.date_to_str(date.toDate());throw new Error(_.str.sprintf(_t("'%s' is not a correct date"),value));}
return value;},update_status:function(status){var self=this;if(status!=='success'){this.$target.find('.o_website_form_send').removeClass('disabled').removeAttr('disabled').on('click',function(e){self.send(e);});}
var $result=this.$('#o_website_form_result');this.templates_loaded.done(function(){$result.replaceWith(qweb.render("website_form.status_"+status));});},});});;
/* /website_rating/static/src/js/website_mail.js defined in bundle 'web.assets_frontend' */
odoo.define('website_rating.thread',function(require){'use strict';var ajax=require('web.ajax');var core=require('web.core');var Widget=require('web.Widget');var qweb=core.qweb;var _t=core._t;var PortalChatter=require('portal.chatter').PortalChatter;PortalChatter.include({events:_.extend({},PortalChatter.prototype.events,{"mousemove .stars i":"_onMoveStar","mouseleave .stars i":"_onMoveOutStar","click .stars":"_onClickStar","mouseleave .stars":"_onMouseleaveStar","click .o_website_rating_select":"_onClickStarDomain","click .o_website_rating_select_text":"_onClickStarDomainReset",}),init:function(parent,options){this._super.apply(this,arguments);if(!_.contains(this.options,'display_rating')){this.options=_.defaults(this.options,{'display_rating':false,'rating_default_value':0.0,});}
this.set('rating_card_values',{});this.set('rating_value',false);this.on("change:rating_value",this,this._onChangeRatingDomain);this.labels={'0':"",'1':_t("I hate it"),'2':_t("I don't like it"),'3':_t("It's okay"),'4':_t("I like it"),'5':_t("I love it"),};this.user_click=false;this.set("star_value",this.options.rating_default_value);this.on("change:star_value",this,this._onChangeStarValue);},willStart:function(){var self=this;return this._super.apply(this,arguments).then(function(result){if(result['rating_stats']){var rating_data={'avg':self.round_to_half(result['rating_stats']['avg']),'percent':[],};_.each(_.keys(result['rating_stats']['percent']),function(rating){if(07)){return Math.round(converted);}else{return(parseInt(converted,10)+0.5);}},_loadTemplates:function(){return $.when(this._super(),ajax.loadXML('/website_rating/static/src/xml/website_mail.xml',qweb));},_messageFetchPrepareParams:function(){var params=this._super.apply(this,arguments);if(this.options['display_rating']){params['rating_include']=true;}
return params;},_onClickStar:function(e){this.user_click=true;this.$input.val(this.get("star_value"));},_onClickStarDomain:function(e){var $tr=this.$(e.currentTarget);var num=$tr.data('star');if($tr.css('opacity')==1){this.set('rating_value',num);this.$('.o_website_rating_select').css({'opacity':0.5,});this.$('.o_website_rating_select_text[data-star="'+num+'"]').css({'visibility':'visible','opacity':1,});this.$('.o_website_rating_select[data-star="'+num+'"]').css({'opacity':1,});}},_onClickStarDomainReset:function(e){e.stopPropagation();this.set('rating_value',false);this.$('.o_website_rating_select_text').css('visibility','hidden');this.$('.o_website_rating_select').css({'opacity':1,});},_onChangeRatingDomain:function(){var domain=[];if(this.get('rating_value')){domain=[['rating_value','=',this.get('rating_value')]];}
this._changeCurrentPage(1,domain);},_onChangeStarValue:function(){var val=this.get("star_value");var index=Math.floor(val);var decimal=val-index;this.$star_list.removeClass('fa-star fa-star-half-o').addClass('fa-star-o');this.$('.stars').find("i:lt("+index+")").removeClass('fa-star-o fa-star-half-o').addClass('fa-star');if(decimal){this.$('.stars').find("i:eq("+(index)+")").removeClass('fa-star-o fa-star fa-star-half-o').addClass('fa-star-half-o');}
this.$('.rate_text .label').text(this.labels[index]);},_onMouseleaveStar:function(e){this.$('.rate_text').hide();},_onMoveStar:function(e){var index=this.$('.stars i').index(e.currentTarget);this.$('.rate_text').show();this.set("star_value",index+1);},_onMoveOutStar:function(){if(!this.user_click){this.set("star_value",parseInt(this.$input.val()));}
this.user_click=false;},});});;
/* /sale/static/src/js/product_configurator_mixin.js defined in bundle 'web.assets_frontend' */
odoo.define('sale.ProductConfiguratorMixin',function(require){'use strict';var concurrency=require('web.concurrency');var core=require('web.core');var utils=require('web.utils');var ajax=require('web.ajax');var _t=core._t;var ProductConfiguratorMixin={events:{'change .css_attribute_color input':'_onChangeColorAttribute','change .main_product:not(.in_cart) input.js_quantity':'onChangeAddQuantity','change [data-attribute_exclusions]':'onChangeVariant'},isSelectedVariantAllowed:true,computePriceTotal:function(){},onChangeVariant:function(ev){var $parent=$(ev.target).closest('.js_product');if(!$parent.data('uniqueId')){$parent.data('uniqueId',_.uniqueId());}
this._throttledGetCombinationInfo($parent.data('uniqueId'))(ev);},_getCombinationInfo:function(ev){var self=this;var $component;if($(ev.currentTarget).closest('form').length>0){$component=$(ev.currentTarget).closest('form');}else if($(ev.currentTarget).closest('.oe_optional_products_modal').length>0){$component=$(ev.currentTarget).closest('.oe_optional_products_modal');}else if($(ev.currentTarget).closest('.o_product_configurator').length>0){$component=$(ev.currentTarget).closest('.o_product_configurator');}else{$component=$(ev.currentTarget);}
var qty=$component.find('input[name="add_qty"]').val();var $parent=$(ev.target).closest('.js_product');var combination=this.getSelectedVariantValues($parent);var parentCombination=$parent.find('ul[data-attribute_exclusions]').data('attribute_exclusions').parent_combination;var productTemplateId=parseInt($parent.find('.product_template_id').val());self._checkExclusions($parent,combination);return ajax.jsonRpc(this._getUri('/product_configurator/get_combination_info'),'call',{'product_template_id':productTemplateId,'product_id':this._getProductId($parent),'combination':combination,'add_qty':parseInt(qty),'pricelist_id':this.pricelistId||false,'parent_combination':parentCombination,}).then(function(combinationData){self._onChangeCombination(ev,$parent,combinationData);});},handleCustomValues:function($target){var $variantContainer;var $customInput=false;if($target.is('input[type=radio]')&&$target.is(':checked')){$variantContainer=$target.closest('ul').closest('li');$customInput=$target;}else if($target.is('select')){$variantContainer=$target.closest('li');$customInput=$target.find('option[value="'+$target.val()+'"]');}
if($variantContainer){if($customInput&&$customInput.data('is_custom')){var attributeValueId=$customInput.data('value_id');var attributeValueName=$customInput.data('value_name');if($variantContainer.find('.variant_custom_value').length===0||$variantContainer.find('.variant_custom_value').data('attribute_value_id')!==parseInt(attributeValueId)){$variantContainer.find('.variant_custom_value_label').remove();$variantContainer.find('.variant_custom_value').remove();var $input=$('',{type:'text','data-attribute_value_id':attributeValueId,'data-attribute_value_name':attributeValueName,class:'variant_custom_value form-control'});var isRadioInput=$target.is('input[type=radio]')&&$target.closest('label.css_attribute_color').length===0;if(isRadioInput){$input.addClass('custom_value_radio');$target.closest('div').after($input);}else{var $label=$('