/* /web/static/src/js/services/session.js defined in bundle 'web.assets_frontend' */ odoo.define('web.session',function(require){"use strict";var Session=require('web.Session');var modules=odoo._modules;var session=new Session(undefined,undefined,{modules:modules,use_cors:false});session.is_bound=session.session_bind();return session;});; /* /website/static/src/js/content/website_root.js defined in bundle 'web.assets_frontend' */ odoo.define('root.widget',function(require){'use strict';require('web.dom_ready');var websiteRootData=require('website.WebsiteRoot');var websiteRoot=new websiteRootData.WebsiteRoot(null);return websiteRoot.attachTo(document.body).then(function(){return websiteRoot;});});odoo.define('website.WebsiteRoot',function(require){'use strict';var ajax=require('web.ajax');var core=require('web.core');var Dialog=require('web.Dialog');var utils=require('web.utils');var BodyManager=require('web_editor.BodyManager');var weContext=require('web_editor.context');var rootWidget=require('web_editor.root_widget');var sAnimation=require('website.content.snippets.animation');require("website.content.zoomodoo");var _t=core._t;var websiteRootRegistry=new rootWidget.RootWidgetRegistry();var lang=utils.get_cookie('frontend_lang')||weContext.get().lang;var localeDef=ajax.loadJS('/web/webclient/locale/'+lang.replace('-','_'));var WebsiteRoot=BodyManager.extend({events:_.extend({},BodyManager.prototype.events||{},{'click .js_change_lang':'_onLangChangeClick','click .js_publish_management .js_publish_btn':'_onPublishBtnClick','submit .js_website_submit_form':'_onWebsiteFormSubmit','click .js_disable_on_click':'_onDisableOnClick','click .js_multi_website_switch':'_multiWebsiteSwitch','click .js_multi_company_switch':'_multiCompanySwitch',}),custom_events:_.extend({},BodyManager.prototype.custom_events||{},{animation_start_demand:'_onAnimationStartDemand',animation_stop_demand:'_onAnimationStopDemand',main_object_request:'_onMainObjectRequest',ready_to_clean_for_save:'_onAnimationStopDemand',}),init:function(){this._super.apply(this,arguments);this.animations=[];},willStart:function(){return $.when(this._super.apply(this,arguments),localeDef);},start:function(){var defs=[this._super.apply(this,arguments)];defs.push(this._startAnimations());if(!this.$('.js_change_lang').length){var $links=this.$('ul.js_language_selector li a:not([data-oe-id])');var m=$(_.min($links,function(l){return $(l).attr('href').length;})).attr('href');$links.each(function(){var $link=$(this);var t=$link.attr('href');var l=(t===m)?"default":t.split('/')[1];$link.data('lang',l).addClass('js_change_lang');});} this.$(".o_image[data-mimetype^='image']").each(function(){var $img=$(this);if(/gif|jpe|jpg|png/.test($img.data('mimetype'))&&$img.data('src')){$img.css('background-image',"url('"+$img.data('src')+"')");}});this.$('.zoomable img[data-zoom]').zoomOdoo();if(window.location.hash.indexOf("scrollTop=")>-1){this.el.scrollTop=+window.location.hash.match(/scrollTop=([0-9]+)/)[1];} if($.fn.placeholder){$('input, textarea').placeholder();} return $.when.apply($,defs);},_getRegistry:function(){return websiteRootRegistry;},_startAnimations:function(editableMode,$from){var self=this;editableMode=editableMode||false;if($from===undefined){$from=this.$('#wrapwrap');} this._stopAnimations($from);var defs=_.map(sAnimation.registry,function(Animation,animationName){var selector=Animation.prototype.selector||'';var $target=$from.find(selector).addBack(selector);var defs=_.map($target,function(el){var animation=new Animation(self,editableMode);self.animations.push(animation);return animation.attachTo($(el));});return $.when.apply($,defs);});return $.when.apply($,defs);},_stopAnimations:function($from){var removedAnimations=_.map(this.animations,function(animation){if(!$from||$from.filter(animation.el).length||$from.find(animation.el).length){animation.destroy();return animation;} return null;});this.animations=_.difference(this.animations,removedAnimations);},_onAnimationStartDemand:function(ev){this._startAnimations(ev.data.editableMode,ev.data.$target).done(ev.data.onSuccess).fail(ev.data.onFailure);},_onAnimationStopDemand:function(ev){this._stopAnimations(ev.data.$target);},_onLangChangeClick:function(ev){ev.preventDefault();var $target=$(ev.target);var redirect={lang:$target.data('lang'),url:encodeURIComponent($target.attr('href').replace(/[&?]edit_translations[^&?]+/,'')),hash:encodeURIComponent(window.location.hash)};window.location.href=_.str.sprintf("/website/lang/%(lang)s?r=%(url)s%(hash)s",redirect);},_onMainObjectRequest:function(ev){var repr=$('html').data('main-object');var m=repr.match(/(.+)\((\d+),(.*)\)/);ev.data.callback({model:m[1],id:m[2]|0,});},_onPublishBtnClick:function(ev){ev.preventDefault();var $data=$(ev.currentTarget).parents(".js_publish_management:first");this._rpc({route:$data.data('controller')||'/website/publish',params:{id:+$data.data('id'),object:$data.data('object'),},}).done(function(result){$data.toggleClass("css_unpublished css_published");$data.find('input').prop("checked",result);$data.parents("[data-publish]").attr("data-publish",+result?'on':'off');});},_onWebsiteFormSubmit:function(ev){var $buttons=$(ev.currentTarget).find('button[type="submit"], a.a-submit');_.each($buttons,function(btn){var $btn=$(btn);$btn.html(' '+$btn.text());$btn.prop('disabled',true);});},_onDisableOnClick:function(ev){$(ev.currentTarget).addClass('disabled');},_multiWebsiteSwitch:function(ev){var websiteId=ev.currentTarget.getAttribute('website-id');var websiteDomain=ev.currentTarget.getAttribute('domain');var url=window.location.href;if(websiteDomain&&window.location.hostname!==websiteDomain){var path=window.location.pathname+window.location.search+window.location.hash;url=websiteDomain+path;} window.location.href=$.param.querystring(url,{'fw':websiteId});},_multiCompanySwitch:function(ev){var company_id_to_switch_to=ev.currentTarget.getAttribute('company-id');this._rpc({model:'res.users',method:'write',args:[odoo.session_info.user_id,{'company_id':parseInt(company_id_to_switch_to,10)}],}).then(function(){window.location.reload(true);});},});return{WebsiteRoot:WebsiteRoot,websiteRootRegistry:websiteRootRegistry,};});; /* /web_editor/static/src/js/content/body_manager.js defined in bundle 'web.assets_frontend' */ odoo.define('web_editor.BodyManager',function(require){'use strict';var weContext=require('web_editor.context');var rootWidget=require('web_editor.root_widget');var ServiceProviderMixin=require('web.ServiceProviderMixin');var session=require('web.session');var BodyManager=rootWidget.RootWidget.extend(ServiceProviderMixin,{init:function(){this._super.apply(this,arguments);ServiceProviderMixin.init.call(this);},willStart:function(){return $.when(this._super.apply(this,arguments),session.is_bound);},_call_service:function(event){if(event.data.service==='ajax'&&event.data.method==='rpc'){var route=event.data.args[0];if(_.str.startsWith(route,'/web/dataset/call_kw/')){var params=event.data.args[1];var options=event.data.args[2];params.kwargs.context=_.extend({},weContext.get(),params.kwargs.context||{});if(options){params.kwargs.context=_.omit(params.kwargs.context,options.noContextKeys);event.data.args[2]=_.omit(options,'noContextKeys');} params.kwargs.context=JSON.parse(JSON.stringify(params.kwargs.context));}} return ServiceProviderMixin._call_service.apply(this,arguments);},});return BodyManager;});; /* /web_editor/static/src/js/root_widget.js defined in bundle 'web.assets_frontend' */ odoo.define('web_editor.root_widget',function(require){'use strict';var Class=require('web.Class');var dom=require('web.dom');var mixins=require('web.mixins');var session=require('web.session');var Widget=require('web.Widget');var RootWidget=Widget.extend({custom_events:_.extend({},Widget.prototype.custom_events||{},{registry_update:'_onRegistryUpdate',get_session:'_onGetSession',}),init:function(){this._super.apply(this,arguments);this._widgets=[];this._listenToUpdates=false;this._getRegistry().setParent(this);},start:function(){var defs=[this._super.apply(this,arguments)];defs.push(this._attachComponents());this._listenToUpdates=true;return $.when.apply($,defs);},_attachComponent:function(childInfo,$from){var self=this;var $elements=dom.cssFind($from||this.$el,childInfo.selector);var defs=_.map($elements,function(element){var w=new childInfo.Widget(self);self._widgets.push(w);return w.attachTo(element);});return $.when.apply($,defs);},_attachComponents:function($from){var self=this;var childInfos=this._getRegistry().get();var defs=_.map(childInfos,function(childInfo){return self._attachComponent(childInfo,$from);});return $.when.apply($,defs);},_getRegistry:function(){},_onGetSession:function(event){if(event.data.callback){event.data.callback(session);}},_onRegistryUpdate:function(ev){ev.stopPropagation();if(this._listenToUpdates){this._attachComponent(ev.data);}},});var RootWidgetRegistry=Class.extend(mixins.EventDispatcherMixin,{init:function(){mixins.EventDispatcherMixin.init.call(this);this._registry=[];},add:function(Widget,selector){var registryInfo={Widget:Widget,selector:selector,};this._registry.push(registryInfo);this.trigger_up('registry_update',registryInfo);},get:function(){return this._registry;},});return{RootWidget:RootWidget,RootWidgetRegistry:RootWidgetRegistry,};});; /* /portal/static/src/js/portal.js defined in bundle 'web.assets_frontend' */ odoo.define('portal.portal',function(require){'use strict';require('web.dom_ready');if(!$('.o_portal').length){return $.Deferred().reject("DOM doesn't contain '.o_portal'");} if($('.o_portal_details').length){var state_options=$("select[name='state_id']:enabled option:not(:first)");$('.o_portal_details').on('change',"select[name='country_id']",function(){var select=$("select[name='state_id']");state_options.detach();var displayed_state=state_options.filter("[data-country_id="+($(this).val()||0)+"]");var nb=displayed_state.appendTo(select).show().size();select.parent().toggle(nb>=1);});$('.o_portal_details').find("select[name='country_id']").change();} if($('.o_portal_search_panel').length){$('.o_portal_search_panel .search-submit').click(function(){var search=$.deparam(window.location.search.substring(1));search.search_in=$(".o_portal_search_panel .dropdown-item.active").attr("href").replace("#","");search.search=$(".o_portal_search_panel input[name='search']").val();window.location.search=$.param(search);});$('.o_portal_search_panel .dropdown-menu').find('.dropdown-item').click(function(e){e.preventDefault();$(this).parents('.dropdown-menu').find('.dropdown-item').removeClass('active');$(this).closest('.dropdown-item').addClass('active');var label=$(this).clone();label.find('span.nolabel').remove();$(".o_portal_search_panel span#search_label").text(label.text());});$('.o_portal_search_panel .dropdown-menu').find('.dropdown-item.active').trigger('click');$(".o_portal_search_panel input[name='search']").on('keyup',function(e){if(e.keyCode===13){$('.o_portal_search_panel .search-submit').trigger('click');}});}});; /* /portal/static/src/js/portal_tour.js defined in bundle 'web.assets_frontend' */ odoo.define('portal.tour',function(require){'use strict';var tour=require("web_tour.tour");tour.register('portal_load_homepage',{test:true,url:'/my',},[{content:"Check portal is loaded",trigger:'a[href*="/my/account"]:contains("Edit"):first',},{content:"Load my account details",trigger:'input[value="Joel Willis"]'}]);});; /* /portal/static/src/js/portal_chatter.js defined in bundle 'web.assets_frontend' */ odoo.define('portal.chatter',function(require){'use strict';var base=require('web_editor.base');var ajax=require('web.ajax');var core=require('web.core');var dom=require('web.dom');var Widget=require('web.Widget');var rpc=require('web.rpc');var time=require('web.time');var qweb=core.qweb;var _t=core._t;var PortalChatter=Widget.extend({template:'portal.chatter',events:{"click .o_portal_chatter_pager_btn":'_onClickPager','click .o_portal_chatter_composer_btn':'_onSubmitButtonClick',},init:function(parent,options){this._super.apply(this,arguments);this.options=_.defaults(options||{},{'allow_composer':true,'display_composer':false,'csrf_token':odoo.csrf_token,'message_count':0,'pager_step':10,'pager_scope':5,'pager_start':1,'is_user_public':true,'is_user_publisher':false,'domain':[],});this.set('messages',[]);this.set('message_count',this.options['message_count']);this.set('pager',{});this.set('domain',this.options['domain']);this._current_page=this.options['pager_start'];this._onSubmitButtonClick=dom.makeButtonHandler(this._onSubmitButtonClick);},willStart:function(){var self=this;return $.when(rpc.query({route:'/mail/chatter_init',params:this._messageFetchPrepareParams()}),this._loadTemplates()).then(function(result){self.result=result;self.options=_.extend(self.options,self.result['options']||{});return result;});},start:function(){this.on("change:messages",this,this._renderMessages);this.on("change:message_count",this,function(){this._renderMessageCount();this.set('pager',this._pager(this._current_page));});this.on("change:pager",this,this._renderPager);this.on("change:domain",this,this._onChangeDomain);this.set('message_count',this.options['message_count']);this.set('messages',this.preprocessMessages(this.result['messages']));return this._super.apply(this,arguments);},messageFetch:function(domain){var self=this;return rpc.query({route:'/mail/chatter_fetch',params:self._messageFetchPrepareParams()}).then(function(result){self.set('messages',self.preprocessMessages(result['messages']));self.set('message_count',result['message_count']);});},preprocessMessages:function(messages){_.each(messages,function(m){m['author_avatar_url']=_.str.sprintf('/web/image/%s/%s/author_avatar/50x50','mail.message',m.id);m['published_date_str']=_.str.sprintf(_t('Published on %s'),moment(time.str_to_datetime(m.date)).format('MMMM Do YYYY, h:mm:ss a'));});return messages;},_changeCurrentPage:function(page,domain){this._current_page=page;var d=domain?domain:_.clone(this.get('domain'));this.set('domain',d);},_loadTemplates:function(){return ajax.loadXML('/portal/static/src/xml/portal_chatter.xml',qweb);},_messageFetchPrepareParams:function(){var self=this;var data={'res_model':this.options['res_model'],'res_id':this.options['res_id'],'limit':this.options['pager_step'],'offset':(this._current_page-1)*this.options['pager_step'],'allow_composer':this.options['allow_composer'],};if(self.options['token']){data['token']=self.options['token'];} if(this.get('domain')){data['domain']=this.get('domain');} return data;},_pager:function(page){var page=page||1;var total=this.get('message_count');var scope=this.options['pager_scope'];var step=this.options['pager_step'];var page_count=Math.ceil(parseFloat(total)/step);var page=Math.max(1,Math.min(parseInt(page),page_count));scope-=1;var pmin=Math.max(page-parseInt(Math.floor(scope/2)),1);var pmax=Math.min(pmin+scope,page_count);if(pmax-scope>0){pmin=pmax-scope;}else{pmin=1;} var pages=[];_.each(_.range(pmin,pmax+1),function(index){pages.push(index);});return{"page_count":page_count,"offset":(page-1)*step,"page":page,"page_start":pmin,"page_previous":Math.max(pmin,page-1),"page_next":Math.min(pmax,page+1),"page_end":pmax,"pages":pages};},_renderMessages:function(){this.$('.o_portal_chatter_messages').html(qweb.render("portal.chatter_messages",{widget:this}));},_renderMessageCount:function(){this.$('.o_message_counter').replaceWith(qweb.render("portal.chatter_message_count",{widget:this}));},_renderPager:function(){this.$('.o_portal_chatter_pager').replaceWith(qweb.render("portal.pager",{widget:this}));},_onChangeDomain:function(){var self=this;this.messageFetch().then(function(){var p=self._current_page;self.set('pager',self._pager(p));});},_onClickPager:function(ev){ev.preventDefault();var page=$(ev.currentTarget).data('page');this._changeCurrentPage(page);},_onSubmitButtonClick:function(){return $.Deferred();},});base.ready().then(function(){$('.o_portal_chatter').each(function(index){var $elem=$(this);var mail_thread=new PortalChatter(null,$elem.data());mail_thread.appendTo($elem);});});return{PortalChatter:PortalChatter,};});; /* /portal/static/src/js/portal_signature.js defined in bundle 'web.assets_frontend' */ odoo.define('portal.signature_form',function(require){"use strict";require('web_editor.ready');var ajax=require('web.ajax');var base=require('web_editor.base');var core=require('web.core');var Widget=require("web.Widget");var rpc=require("web.rpc");var qweb=core.qweb;var SignatureForm=Widget.extend({template:'portal.portal_signature',events:{'click #o_portal_sign_clear':'clearSign','click .o_portal_sign_submit':'submitSign','init #o_portal_sign_accept':'initSign',},init:function(parent,options){this._super.apply(this,arguments);this.options=_.extend(options||{},{csrf_token:odoo.csrf_token,});},willStart:function(){return this._loadTemplates();},start:function(){this.initSign();},initSign:function(){this.$("#o_portal_signature").empty().jSignature({'decor-color':'#D1D0CE','color':'#000','background-color':'#fff','height':'142px','width':'100%',});this.empty_sign=this.$("#o_portal_signature").jSignature('getData','image');},clearSign:function(){this.$("#o_portal_signature").jSignature('reset');},submitSign:function(ev){ev.preventDefault();var self=this;var $confirm_btn=self.$el.find('button[type="submit"]');var partner_name=self.$("#o_portal_sign_name").val();var signature=self.$("#o_portal_signature").jSignature('getData','image');var is_empty=signature?this.empty_sign[1]===signature[1]:true;this.$('#o_portal_sign_name').parent().toggleClass('o_has_error',!partner_name).find('.form-control, .custom-select').toggleClass('is-invalid',!partner_name);this.$('#o_portal_sign_draw').toggleClass('bg-danger text-white',is_empty);if(is_empty||!partner_name){return false;} $confirm_btn.prepend(' ');$confirm_btn.attr('disabled',true);return rpc.query({route:this.options.callUrl,params:{'res_id':this.options.resId,'access_token':this.options.accessToken,'partner_name':partner_name,'signature':signature?signature[1]:false,},}).then(function(data){self.$('.fa-spinner').remove();if(data.error){self.$('.o_portal_sign_error_msg').remove();$confirm_btn.before(qweb.render('portal.portal_signature_error',{message:data.error}));$confirm_btn.attr('disabled',false);} else if(data.success){$confirm_btn.remove();var $success=qweb.render("portal.portal_signature_success",{widget:data});self.$('#o_portal_sign_draw').parent().replaceWith($success);} if(data.force_refresh){if(data.redirect_url){window.location=data.redirect_url;}else{window.location.reload();}}});},_loadTemplates:function(){return ajax.loadXML('/portal/static/src/xml/portal_signature.xml',qweb);},});base.ready().then(function(){$('.o_portal_signature_form').each(function(){var hasBeenReset=false;var $elem=$(this);var form=new SignatureForm(null,$elem.data());form.appendTo($elem);$elem.parents('.modal').on('shown.bs.modal',function(ev){$elem.trigger('resize');if(!hasBeenReset){hasBeenReset=true;form.initSign();}});});});return{SignatureForm:SignatureForm,};});; /* /portal/static/src/js/portal_sidebar.js defined in bundle 'web.assets_frontend' */ odoo.define('portal.PortalSidebar',function(require){"use strict";var config=require('web.config');var core=require('web.core');var Widget=require('web.Widget');var time=require('web.time');var session=require('web.session');var _t=core._t;var PortalSidebar=Widget.extend({start:function(){var self=this;this._super.apply(this,arguments);this._setDelayLabel();},_setDelayLabel:function(){var $sidebarTimeago=this.$el.find('.o_portal_sidebar_timeago');_.each($sidebarTimeago,function(el){var dateTime=moment(time.auto_str_to_date($(el).attr('datetime'))),today=moment().startOf('day'),diff=dateTime.diff(today,'days',true),displayStr;session.is_bound.then(function(){if(diff===0){displayStr=_t('Due today');}else if(diff>0){displayStr=_.str.sprintf(_t('Due in %1d days'),Math.abs(diff));}else{displayStr=_.str.sprintf(_t('%1d days overdue'),Math.abs(diff));} $(el).text(displayStr);});});},_printIframeContent:function(href){if($.browser.mozilla){window.open(href,'_blank');return;} if(!this.printContent){this.printContent=$('');this.$el.append(this.printContent);this.printContent.on('load',function(){$(this).get(0).contentWindow.print();});}else{this.printContent.get(0).contentWindow.print();}},});return PortalSidebar;});; /* /auth_signup/static/src/js/signup.js defined in bundle 'web.assets_frontend' */ odoo.define('auth_signup.signup',function(require){'use strict';var base=require('web_editor.base');base.ready().then(function(){if($('.oe_signup_form').length>0){$('.oe_signup_form').on('submit',function(ev){var $form=$(ev.currentTarget);var $btn=$form.find('.oe_login_buttons > button[type="submit"]');$btn.attr('disabled','disabled');$btn.prepend(' ');});}});});; /* /website/static/src/js/utils.js defined in bundle 'web.assets_frontend' */ odoo.define('website.utils',function(require){'use strict';var ajax=require('web.ajax');var core=require('web.core');var weContext=require('web_editor.context');var qweb=core.qweb;function autocompleteWithPages(self,$input){$input.autocomplete({source:function(request,response){return self._rpc({model:'website',method:'search_pages',args:[null,request.term],kwargs:{limit:15,},}).then(function(exists){var rs=_.map(exists,function(r){return r.loc;});response(rs);});},});} function prompt(options,_qweb){if(typeof options==='string'){options={text:options};} var xmlDef;if(_.isUndefined(_qweb)){_qweb='website.prompt';xmlDef=ajax.loadXML('/website/static/src/xml/website.xml',core.qweb);} options=_.extend({window_title:'',field_name:'','default':'',init:function(){},},options||{});var type=_.intersection(Object.keys(options),['input','textarea','select']);type=type.length?type[0]:'input';options.field_type=type;options.field_name=options.field_name||options[type];var def=$.Deferred();$.when(xmlDef).then(function(){var dialog=$(qweb.render(_qweb,options)).appendTo('body');options.$dialog=dialog;var field=dialog.find(options.field_type).first();field.val(options['default']);field.fillWith=function(data){if(field.is('select')){var select=field[0];data.forEach(function(item){select.options[select.options.length]=new window.Option(item[1],item[0]);});}else{field.val(data);}};var init=options.init(field,dialog);$.when(init).then(function(fill){if(fill){field.fillWith(fill);} dialog.modal('show');field.focus();dialog.on('click','.btn-primary',function(){var backdrop=$('.modal-backdrop');def.resolve(field.val(),field,dialog);dialog.modal('hide').remove();backdrop.remove();});});dialog.on('hidden.bs.modal',function(){var backdrop=$('.modal-backdrop');def.reject();dialog.remove();backdrop.remove();});if(field.is('input[type="text"], select')){field.keypress(function(e){if(e.which===13){e.preventDefault();dialog.find('.btn-primary').trigger('click');}});}});return def;} function websiteDomain(){var websiteID=weContext.get()['website_id'];return['|',['website_id','=',false],['website_id','=',websiteID]];} return{autocompleteWithPages:autocompleteWithPages,prompt:prompt,websiteDomain:websiteDomain,};});; /* /website/static/src/js/website.js defined in bundle 'web.assets_frontend' */ odoo.define('website.website',function(require){'use strict';var weContext=require('web_editor.context');var weGetContext=weContext.get;weContext.get=function(context){var html=document.documentElement;return _.extend({website_id:html.getAttribute('data-website-id')|0,},weGetContext(context),context);};});odoo.define('website.website_modal',function(require){'use strict';require('web.dom_ready');$('body').on('shown.bs.modal',function(e){$(e.target).addClass('modal_shown');});});; /* /website/static/src/js/content/compatibility.js defined in bundle 'web.assets_frontend' */ odoo.define('website.content.compatibility',function(require){'use strict';require('web.dom_ready');var browser=_.findKey($.browser,function(v){return v===true;});if($.browser.mozilla&&+$.browser.version.replace(/^([0-9]+\.[0-9]+).*/,'\$1')<20){browser='msie';} browser+=(','+$.browser.version);var mobileRegex=/android|webos|iphone|ipad|ipod|blackberry|iemobile|opera mini/i;if(mobileRegex.test(window.navigator.userAgent.toLowerCase())){browser+=',mobile';} document.documentElement.setAttribute('data-browser',browser);var htmlStyle=document.documentElement.style;var isFlexSupported=(('flexWrap'in htmlStyle)||('WebkitFlexWrap'in htmlStyle)||('msFlexWrap'in htmlStyle));if(!isFlexSupported){document.documentElement.setAttribute('data-no-flex','');} return{browser:browser,isFlexSupported:isFlexSupported,};});; /* /website/static/src/js/content/lazy_template_call.js defined in bundle 'web.assets_frontend' */ odoo.define('website.content.lazy_template_call',function(require){'use strict';var Widget=require('web.Widget');var websiteRootData=require('website.WebsiteRoot');var LazyTemplateRenderer=Widget.extend({start:function(){var $oeCalls=this.$('[data-oe-call]');var oeCalls=_.uniq($oeCalls.map(function(){return $(this).data('oe-call');}).get());if(!oeCalls.length){return $.when(this._super.apply(this,arguments));} var def=this._rpc({route:'/website/multi_render',params:{ids_or_xml_ids:oeCalls,},}).then(function(data){_.each(data,function(d,k){var $data=$(d).addClass('o_block_'+k);$oeCalls.filter('[data-oe-call="'+k+'"]').each(function(){$(this).replaceWith($data.clone());});});});return $.when(this._super.apply(this,arguments),def);},});websiteRootData.websiteRootRegistry.add(LazyTemplateRenderer,'#wrapwrap');return LazyTemplateRenderer;});; /* /website/static/src/js/content/menu.js defined in bundle 'web.assets_frontend' */ odoo.define('website.content.menu',function(require){'use strict';var dom=require('web.dom');var sAnimation=require('website.content.snippets.animation');sAnimation.registry.affixMenu=sAnimation.Class.extend({selector:'header.o_affix_enabled',start:function(){var def=this._super.apply(this,arguments);if(this.editableMode){return def;} var self=this;this.$headerClone=this.$target.clone().addClass('o_header_affix affix').removeClass('o_affix_enabled');this.$headerClone.insertAfter(this.$target);this.$headers=this.$target.add(this.$headerClone);this.$dropdowns=this.$headers.find('.dropdown');this.$dropdownMenus=this.$headers.find('.dropdown-menu');this.$navbarCollapses=this.$headers.find('.navbar-collapse');_.each(this.$headerClone.find('[data-toggle="collapse"]'),function(el){var $source=$(el);var targetIDSelector=$source.attr('data-target');var $target=self.$headerClone.find(targetIDSelector);$source.attr('data-target',targetIDSelector+'_clone');$target.attr('id',targetIDSelector.substr(1)+'_clone');});$(window).on('resize.affixMenu scroll.affixMenu',_.throttle(this._onWindowUpdate.bind(this),200));setTimeout(this._onWindowUpdate.bind(this),0);return def;},destroy:function(){if(this.$headerClone){this.$headerClone.remove();$(window).off('.affixMenu');} this._super.apply(this,arguments);},_onWindowUpdate:function(){if(this.$navbarCollapses.hasClass('show')){return;} var wOffset=$(window).scrollTop();var hOffset=this.$target.scrollTop();this.$headerClone.toggleClass('affixed',wOffset>(hOffset+300));this.$dropdowns.add(this.$dropdownMenus).removeClass('show');this.$navbarCollapses.removeClass('show').attr('aria-expanded',false);},});sAnimation.registry.autohideMenu=sAnimation.Class.extend({selector:'header #top_menu',start:function(){var self=this;var defs=[this._super.apply(this,arguments)];this.noAutohide=this.$el.closest('.o_no_autohide_menu').length;if(!this.noAutohide){var $navbar=this.$el.closest('.navbar');_.each($navbar.find('img'),function(img){if(img.complete){return;} var def=$.Deferred();defs.push(def);$(img).one('load',function(){def.resolve();});});var $window=$(window);$window.on('load.autohideMenu',function(){$window.trigger('resize');});} return $.when.apply($,defs).then(function(){if(!self.noAutohide){dom.initAutoMoreMenu(self.$el,{unfoldable:'.divider, .divider ~ li'});} self.$el.removeClass('o_menu_loading');});},destroy:function(){this._super.apply(this,arguments);if(!this.noAutohide){$(window).off('.autohideMenu');dom.destroyAutoMoreMenu(this.$el);}},});sAnimation.registry.menuDirection=sAnimation.Class.extend({selector:'header .navbar .nav',events:{'show.bs.dropdown':'_onDropdownShow',},start:function(){this.defaultAlignment=this.$el.is('.ml-auto, .ml-auto ~ *')?'right':'left';return this._super.apply(this,arguments);},_checkOpening:function(alignment,liOffset,liWidth,menuWidth,windowWidth){if(alignment==='left'){return(liOffset+menuWidth<=windowWidth);}else{return(liOffset+liWidth-menuWidth>=0);}},_onDropdownShow:function(ev){var $li=$(ev.target);var $menu=$li.children('.dropdown-menu');var liOffset=$li.offset().left;var liWidth=$li.outerWidth();var menuWidth=$menu.outerWidth();var windowWidth=$(window).outerWidth();$menu.removeClass('dropdown-menu-left dropdown-menu-right');var alignment=this.defaultAlignment;if($li.nextAll(':visible').length===0){alignment='right';} for(var i=0;i<2;i++){if(!this._checkOpening(alignment,liOffset,liWidth,menuWidth,windowWidth)){alignment=(alignment==='left'?'right':'left');}} $menu.addClass('dropdown-menu-'+alignment);},});});; /* /website/static/src/js/content/snippets.animation.js defined in bundle 'web.assets_frontend' */ odoo.define('website.content.snippets.animation',function(require){'use strict';var Class=require('web.Class');var core=require('web.core');var dom=require('web.dom');var mixins=require('web.mixins');var utils=require('web.utils');var Widget=require('web.Widget');var qweb=core.qweb;window.requestAnimationFrame=window.requestAnimationFrame||window.webkitRequestAnimationFrame||window.mozRequestAnimationFrame||window.msRequestAnimationFrame||window.oRequestAnimationFrame||function(callback){setTimeout(callback,10);};window.cancelAnimationFrame=window.cancelAnimationFrame||window.webkitCancelAnimationFrame||window.mozCancelAnimationFrame||window.msCancelAnimationFrame||window.oCancelAnimationFrame||function(id){clearTimeout(id);};if(!window.performance||!window.performance.now){window.performance={now:function(){return Date.now();}};} var AnimationEffect=Class.extend(mixins.ParentedMixin,{init:function(parent,updateCallback,startEvents,$startTarget,options){mixins.ParentedMixin.init.call(this);this.setParent(parent);options=options||{};this._minFrameTime=1000/(options.maxFPS||100);this._updateCallback=updateCallback;this.startEvents=startEvents||'scroll';this.$startTarget=$($startTarget||window);this._getStateCallback=options.getStateCallback||((this.startEvents==='scroll'&&this.$startTarget[0]===window)?function(){return window.pageYOffset;}:false)||((this.startEvents==='resize'&&this.$startTarget[0]===window)?function(){return{width:window.innerWidth,height:window.innerHeight};}:false)||function(){return undefined;};this.endEvents=options.endEvents||false;this.$endTarget=options.$endTarget?$(options.$endTarget):this.$startTarget;this._updateCallback=this._updateCallback.bind(parent);this._getStateCallback=this._getStateCallback.bind(parent);this._uid='_animationEffect'+_.uniqueId();this.startEvents=_processEvents(this.startEvents,this._uid);if(this.endEvents){this.endEvents=_processEvents(this.endEvents,this._uid);} function _processEvents(events,namespace){events=events.split(' ');return _.each(events,function(e,index){events[index]+=('.'+namespace);}).join(' ');}},destroy:function(){mixins.ParentedMixin.destroy.call(this);this.stop();},start:function(){this._paused=false;this._rafID=window.requestAnimationFrame((function(t){this._update(t);this._paused=true;}).bind(this));if(this.endEvents){this.$startTarget.on(this.startEvents,(function(e){if(this._paused){_.defer(this.play.bind(this,e));}}).bind(this));this.$endTarget.on(this.endEvents,(function(){if(!this._paused){_.defer(this.pause.bind(this));}}).bind(this));}else{var pauseTimer=null;this.$startTarget.on(this.startEvents,_.throttle((function(e){this.play(e);clearTimeout(pauseTimer);pauseTimer=_.delay((function(){this.pause();pauseTimer=null;}).bind(this),2000);}).bind(this),250,{trailing:false}));}},stop:function(){this.$startTarget.off(this.startEvents);if(this.endEvents){this.$endTarget.off(this.endEvents);} this.pause();},play:function(e){this._newEvent=e;if(!this._paused)return;this._paused=false;this._rafID=window.requestAnimationFrame(this._update.bind(this));this._lastUpdateTimestamp=undefined;},pause:function(){if(this._paused)return;this._paused=true;window.cancelAnimationFrame(this._rafID);this._lastUpdateTimestamp=undefined;},_update:function(timestamp){if(this._paused)return;this._rafID=window.requestAnimationFrame(this._update.bind(this));var elapsedTime=0;if(this._lastUpdateTimestamp){elapsedTime=timestamp-this._lastUpdateTimestamp;if(elapsedTimemaxHeight){maxHeight=height;} $item.toggleClass('active',isActive);});_.each($items,function(el){$(el).css('min-height',maxHeight);});},_onEditionSlide:function(){this._computeHeights();},_onImageLoaded:function(){this._computeHeights();},});registry.parallax=Animation.extend({selector:'.parallax',effects:[{startEvents:'scroll',update:'_onWindowScroll',}],start:function(){this._rebuild();$(window).on('resize.animation_parallax',_.debounce(this._rebuild.bind(this),500));return this._super.apply(this,arguments);},destroy:function(){this._super.apply(this,arguments);$(window).off('.animation_parallax');},_rebuild:function(){if(!this.$bg||!this.$bg.length){this.$bg=this.$('> .s_parallax_bg');if(!this.$bg.length){this.$bg=$('',{class:'s_parallax_bg'+(this.$target.hasClass('oe_custom_bg')?' oe_custom_bg':''),}).prependTo(this.$target);}} var urlTarget=this.$target.css('background-image');if(urlTarget!=='none'){this.$bg.css('background-image',urlTarget);} this.$target.css('background-image','none');this.speed=parseFloat(this.$target.attr('data-scroll-background-ratio')||0);this.$target.toggleClass('s_parallax_is_fixed',this.speed===1);var noParallaxSpeed=(this.speed===0||this.speed===1);this.$target.toggleClass('s_parallax_no_overflow_hidden',noParallaxSpeed);if(noParallaxSpeed){this.$bg.css({transform:'',top:'',bottom:'',});return;} this.viewport=document.body.clientHeight-$('#wrapwrap').position().top;this.visible_area=[this.$target.offset().top];this.visible_area.push(this.visible_area[0]+this.$target.innerHeight()+this.viewport);this.ratio=this.speed*(this.viewport/10);this.$bg.css({top:-this.ratio,bottom:-this.ratio,});},_onWindowScroll:function(scrollOffset){if(this.speed===0||this.speed===1){return;} var vpEndOffset=scrollOffset+this.viewport;if(vpEndOffset>=this.visible_area[0]&&vpEndOffset<=this.visible_area[1]){this.$bg.css('transform','translateY('+_getNormalizedPosition.call(this,vpEndOffset)+'px)');} function _getNormalizedPosition(pos){var r=(pos-this.visible_area[1])/(this.visible_area[0]-this.visible_area[1]);return Math.round(this.ratio*(2*r-1));}},});registry.share=Animation.extend({selector:'.s_share, .oe_share',start:function(){var url_regex=/(\?(?:|.*&)(?:u|url|body)=)(.*?)(&|#|$)/;var title_regex=/(\?(?:|.*&)(?:title|text|subject)=)(.*?)(&|#|$)/;var url=encodeURIComponent(window.location.href);var title=encodeURIComponent($('title').text());this.$('a').each(function(){var $a=$(this);$a.attr('href',function(i,href){return href.replace(url_regex,function(match,a,b,c){return a+url+c;}).replace(title_regex,function(match,a,b,c){return a+title+c;});});if($a.attr('target')&&$a.attr('target').match(/_blank/i)&&!$a.closest('.o_editable').length){$a.on('click',function(){window.open(this.href,'','menubar=no,toolbar=no,resizable=yes,scrollbars=yes,height=550,width=600');return false;});}});return this._super.apply(this,arguments);},});registry.mediaVideo=Animation.extend({selector:'.media_iframe_video',start:function(){var def=this._super.apply(this,arguments);if(this.$target.children('iframe').length){return def;} this.$target.empty();this.$target.append('
 
'+'
 
');this.$target.append($('