<?xml version='1.0' encoding='UTF-8'?><uidget><metadata><name>Horaires</name><api_version>1.0</api_version><size height='310' width='250' /><blog en='1157' /><server>local://HourCptServer</server></metadata><view><content>&lt;div class=&quot;uih_view&quot;&gt;
  &lt;h3 class=&quot;title_uih_view font_title_3&quot;&gt;&lt;/h3&gt;
  &lt;div class=&quot;uih_content&quot;&gt;
    &lt;div class=&quot;uih_open_or_close font_title_4&quot;&gt;&lt;/div&gt;
    &lt;div class=&quot;uih_all_days_week&quot;&gt;&lt;/div&gt;
    &lt;div class=&quot;uih_holiday_exist&quot; style= &quot;font-size: 10px; text-align: right;&quot;&gt;&lt;/div&gt;
    &lt;div class=&quot;warning_different_time_zone&quot; style= &quot;font-size: 10px;&quot;&gt;&lt;/div&gt;
  &lt;/div&gt;
&lt;/div&gt;</content><properties><inputText default='"Horaires d&apos;ouverture"' name='title_view' title='Titre' /><trigger_view help='Indiquez vos horaires d&apos;ouverture réguliers' icon='ui_menu' method='init_panel' text='Horaires réguliers' url='/cpt/add_hours' /><trigger_view help='Programmez vos vacances' icon='ui_menu' method='init_holidays' text='Jours fermés' url='/cpt/holidays' /><trigger_view help='Indiquez vos jours d&apos;ouverture exceptionnels' icon='ui_menu' method='init_exceptions' text='Ouvertures exeptionnelles' url='/cpt/exceptional_opening' /><checkbox class='uic_prop_slider_anim' default='true' help='Affiche les heures ou seulement Ouvert/Fermé' name='only_open_or_close' value='Afficher les heures' /><checkbox class='uic_prop_slider_anim regroup_days' default='false' help='Regroupe automatiquement les jours consécutifs qui ont les mêmes horaires' name='regroup_days' value='Grouper les jours similaires ' /><checkbox class='uic_prop_slider_anim start_from_today' default='false' help='Le premier jour affiché peut être soit le premier jour de la semaine soit le jour actuel (par exemple, quand votre site est consulté le Vendredi, les horaires commencent par Vendredi, puis Samedi... jusqu&apos;au Jeudi suivant).' name='start_from_today' value='Commencer par le jour actuel' /></properties><design_properties><checkbox default='true' help='Si coché, la hauteur du module sera automatiquement ajustée à son contenu.' name='auto_size' value='Taille auto' /><colors background='' colspan='1' default='[&apos;rgba(255, 0, 0, 1)&apos;]' display='' elts='1' name='closed_color' title='Couleur du texte quand Fermé' /><checkbox default='true' name='toggle_odd' value='Couleurs alternées' /><colors background='' class='odd_bgcolor' colspan='1' default='[&apos;rgba(125, 125, 125, 0.1)&apos;]' display='' elts='1' name='odd_bgcolor' title='Deuxième couleur de fond' /><checkbox class='toggle_odd_font_color' default='false' name='toggle_odd_font_color' value='Deuxième couleur de police' /><colors background='' class='odd_font_color' colspan='1' default='[&apos;rgba(0, 0, 0, 0.8)&apos;]' display='' elts='1' name='font_color_hour' title='Couleur de police' /><align class='title_alignment' default='&apos;left&apos;' name='align' title='Alignement du titre' with_justify='false' /><trigger_preset class='gtbackdrop_prop_custom' gt_type='backdrop' help='Sélectionnez un style prédéfini de fond' icon='palette' mode='select' name='backdrop_preset' text='Style de fond' /></design_properties></view><script>UI_List.UI_Hour={initialize:function(t){this.cpt=t},
onDisplay:function(t){this.format_hour=&quot;HH:mm&quot;
;this.format_date=&quot;DD/MM/YYYY&quot;
;this.size_getter_el=$(&quot;&lt;div&gt;&lt;/div&gt;&quot;).appendTo(t)[0]
;this.cpt.setOptions([&quot;locked&quot;,&quot;fixed&quot;,&quot;footer&quot;,&quot;sticky&quot;])
;this.cpt.use_graphical_preset(&quot;backdrop&quot;,[&quot;backdrop_preset&quot;])
;this.cpt_id=this.cpt.getId()
;this.cpt.node.removeClassMatch(/ui_hour_/).addClass(&quot;ui_hour_&quot;+this.cpt_id)
;this.n={title:this.cpt.componentBody.find(&quot;.title_uih_view&quot;),
content:this.cpt.componentBody.find(&quot;.uih_content&quot;)};var e=this
;if(!this.cpt.getData(&quot;regular_hours&quot;)){
this.cpt.data.regular_hours={}
;$.each([&quot;monday&quot;,&quot;tuesday&quot;,&quot;wednesday&quot;,&quot;thursday&quot;,&quot;friday&quot;],function(t,i){
e.cpt.data.regular_hours[i]={open:!0,list:[{
start:moment(&quot;08:00&quot;,&quot;HH:mm&quot;).format(e.format_hour),
end:moment(&quot;18:00&quot;,&quot;HH:mm&quot;).format(e.format_hour)}]}})
;$.each([&quot;saturday&quot;,&quot;sunday&quot;],function(t,i){
e.cpt.data.regular_hours[i]={open:!1,list:[{
start:moment(&quot;09:00&quot;,&quot;HH:mm&quot;).format(e.format_hour),
end:moment(&quot;12:00&quot;,&quot;HH:mm&quot;).format(e.format_hour)},{
start:moment(&quot;14:00&quot;,&quot;HH:mm&quot;).format(e.format_hour),
end:moment(&quot;17:00&quot;,&quot;HH:mm&quot;).format(e.format_hour)}]}})}
this.n.title.html(this.cpt.data.title_view)
;&quot;editor&quot;!=v.mode||this.cpt.data.timezone_editor||(this.cpt.data.timezone_editor=moment.tz.guess())
;this.set_view_hour();this.applyPreset();this.showProp()
;is_colored()&amp;&amp;sigCtl.connect(&quot;Theme.changed&quot;,function(){
e.applyStyle()})},onSelect:function(){this.showProp()},
onPropertyChanged:function(t){
t.include(&quot;title_view&quot;)&amp;&amp;this.n.title.html(this.cpt.data.title_view)
;(t.include(&quot;regular_hours&quot;)||t.include(&quot;regroup_days&quot;)||t.include(&quot;start_from_today&quot;)||t.include(&quot;only_open_or_close&quot;))&amp;&amp;this.set_view_hour()
;if(t.include(&quot;backdrop_preset&quot;)){this.showProp()
;this.applyPreset()}this.applyStyle();this.showProp()
;this._autoSize()},onResizeStop:function(){this._autoSize()},
onDeselect:function(){},onDeviceChanged:function(){
this._autoSize()},_autoSize:function(){
if(this.cpt.data.auto_size){var t=this;t.cpt.setSize({
h:t.size_getter_el.offsetTop})}},init_panel:function(){
var t=$(&quot;.dt_pickers_day&quot;),e=this,i=this.cpt.data.regular_hours
;$(&quot;.warning_wrapper&quot;).hide();$.each(t,function(t,a){
var o=$(&quot;.dt_picker&quot;,this),n=a.closest(&quot;fieldset&quot;).className.split(&quot; &quot;)[0].replace(&quot;uih_&quot;,&quot;&quot;),d=$(&quot;.regular_hour_openclosed&quot;,$(a).parent())
;d.prop(&quot;checked&quot;,i[n].open);$(&quot;.add_hours&quot;,$(a)).hide()
;if(!i[n].open){$(a).hide()
;$(a).parent().toggleClass(&quot;closed_day&quot;,!$(a).is(&quot;:visible&quot;))}
$(d).on(&quot;click&quot;,function(){
n=a.closest(&quot;fieldset&quot;).className.split(&quot; &quot;)[0].replace(&quot;uih_&quot;,&quot;&quot;)
;$(a).toggle()
;$(a).parent().toggleClass(&quot;closed_day&quot;,!$(a).is(&quot;:visible&quot;))
;var t=!i[n].open;i[n].open=t;e.set_view_hour()})
;e.double_time_pickers(o,a,i,!0,n)})},init_holidays:function(){
var t=this;this.confirm_save_then(function(){var e=[]
;t.cpt.ask({request:&quot;get_holidays&quot;},function(i){if(i.holidays){
i.holidays.each(function(i){
i.datetime_end=moment(i.datetime_end).format(t.format_date)
;i.datetime_start=moment(i.datetime_start).format(t.format_date)
;e.push(i)});e.sort(t.compare_holidays)
;var a=$(&quot;#uih_hidden_template_holidays&quot;).html()
;e.each(function(i){$(&quot;.uih_all_holidays&quot;).append(a)
;$(&quot;.uih_one_holiday&quot;).last().data(&quot;holiday&quot;,i)
;t.picker_holidays($(&quot;.uih_one_holiday&quot;).last(),e,!0)})
;$(&quot;.uih_one_holiday:first&quot;).is(&quot;:visible&quot;)&amp;&amp;$(&quot;.uih_no_holiday&quot;).hide()
;$(&quot;#uih_add_holidays&quot;).on(&quot;click&quot;,function(){
$(&quot;.uih_all_holidays&quot;).append(a);one_hol=$(&quot;.uih_one_holiday&quot;)
;var i={datetime_start:moment().format(t.format_date),
datetime_end:moment().format(t.format_date),name:&quot;&quot;
},o=$(&quot;.uih_one_holiday&quot;).last().data(&quot;holiday&quot;,i)
;$(&quot;.uih_no_holiday&quot;).hide();one_hol=$(&quot;.uih_one_holiday&quot;)
;e.push(i);t.picker_holidays(o,e,!1);t.save_holidays(o)
;t.set_view()})}})})},picker_holidays:function(t,e,i){
var a=this,o=$(t).find(&quot;.uih_dt_wrapper_holiday&quot;).first(),n=$(t).find(&quot;.uih_dt_wrapper_holiday&quot;).last(),d=o.find(&quot;input[type=text]&quot;),s=n.find(&quot;input[type=text]&quot;),_=$(&quot;.input_name_holiday&quot;,$(t))
;if(i){d.val(t.data(&quot;holiday&quot;).datetime_start)
;s.val(t.data(&quot;holiday&quot;).datetime_end)
;_.val(t.data(&quot;holiday&quot;).name)}_.on(&quot;change&quot;,function(){
t.data(&quot;holiday&quot;).name=$(this).val();a.save_holidays(t)})
;a.init_defaultpicker(o,n,this.format_date)
;o.on(&quot;dp.change&quot;,function(e){
var i=e.date.format(a.format_date),o=t.data(&quot;holiday&quot;).datetime_end,n=moment(i,a.format_date),d=moment(o,a.format_date)
;t.data(&quot;holiday&quot;).datetime_start=i;if(n.diff(d)&gt;0){s.val(i)
;t.data(&quot;holiday&quot;).datetime_end=i}a.save_holidays(t)
;a.set_view()});n.on(&quot;dp.change&quot;,function(e){
var i=e.date.format(a.format_date),o=t.data(&quot;holiday&quot;).datetime_start,n=moment(o,a.format_date),_=moment(i,a.format_date)
;_&lt;moment().startOf(&quot;day&quot;)&amp;&amp;(i=moment().format(a.format_date))
;s.val(i);t.data(&quot;holiday&quot;).datetime_end=i;if(n.diff(_)&gt;0){
d.val(i);t.data(&quot;holiday&quot;).datetime_start=i}a.save_holidays(t)
;a.set_view()})
;$(&quot;.remove_one_holiday&quot;,$(t)).on(&quot;click&quot;,function(){
t.data(&quot;holiday&quot;).statut=&quot;delete&quot;;a.save_holidays(t,5e3)})},
save_holidays:function(t,e){self=this
;if(e)this.undo_save(t,e);else{
holiday_send=JSON.parse(JSON.stringify(t.data(&quot;holiday&quot;)))
;holiday_send.datetime_start=moment(holiday_send.datetime_start,self.format_date).format(&quot;YYYY-MM-DD&quot;)
;holiday_send.datetime_end=moment(holiday_send.datetime_end,self.format_date).format(&quot;YYYY-MM-DD&quot;)
;this.cpt.ask({request:&quot;save_holiday&quot;,holiday:holiday_send
},function(e){
t.data(&quot;holiday&quot;).id||(t.data(&quot;holiday&quot;).id=e.id_holiday)
;if(t.data(&quot;holiday&quot;).statut){$(t).remove()
;$(&quot;.uih_one_holiday:first&quot;).is(&quot;:visible&quot;)||$(&quot;.uih_no_holiday&quot;).show()
}self.set_view_hour()})}},undo_save:function(t,e){self=this
;save_to=setTimeout(function(){
jQuery.contains(document,t[0])&amp;&amp;(t.data(&quot;holiday&quot;)?self.save_holidays(t):self.save_exception(t))
},e);t.children().hide();compteur=e/1e3
;t.append($(sprintf(&quot;&lt;a id = &apos;uih_undo_remove&apos;&gt;La date sera supprim\xe9e dans %1$s s...&quot;,&quot;&lt;span class = &apos;uih_compteur&apos;&gt;&quot;+compteur+&quot;&lt;/span&gt;&quot;)+&quot; Annuler &lt;/a&gt;&quot;).on(&quot;click&quot;,function(){
clearTimeout(save_to);$(&quot;#uih_undo_remove&quot;).remove()
;t.children().show();self.set_view_hour()}))
;$(&quot;#uih_undo_remove&quot;,t).data(&quot;compteur&quot;,compteur)
;var i=setInterval(function(){
$(&quot;.uih_compteur&quot;,t).text($(&quot;#uih_undo_remove&quot;,t).data(&quot;compteur&quot;,$(&quot;#uih_undo_remove&quot;,t).data(&quot;compteur&quot;)-1).data(&quot;compteur&quot;))
},1e3);setTimeout(function(){clearInterval(i);i=null
},1e3*$(&quot;#uih_undo_remove&quot;,t).data(&quot;compteur&quot;))},
init_exceptions:function(){var t=this
;this.confirm_save_then(function(){var e=[];t.cpt.ask({
request:&quot;get_exceptions&quot;},function(i){if(i.exceptions){
i.exceptions.each(function(i){
i.day=moment(i.day).format(t.format_date)
;i.datetime_end=moment(i.datetime_end,&quot;HH:mm&quot;).format(t.format_hour)
;i.datetime_start=moment(i.datetime_start,&quot;HH:mm&quot;).format(t.format_hour)
;if(&quot;&quot;!=i.datetime_start_opt){
i.datetime_start_opt=moment(i.datetime_start_opt,&quot;HH:mm&quot;).format(t.format_hour)
;i.datetime_end_opt=moment(i.datetime_end_opt,&quot;HH:mm&quot;).format(t.format_hour)
}e.push(i)});e.sort(t.compare_exceptions)
;var a=$(&quot;#uih_hidden_template_exceptions&quot;).html()
;e.each(function(i){$(&quot;.uih_all_exceptions&quot;).append(a)
;$(&quot;.uih_one_exception&quot;).last().data(&quot;exception&quot;,i)
;t.picker_exceptions($(&quot;.uih_one_exception&quot;).last(),e,!0)})
;$(&quot;.uih_one_exception:first&quot;).is(&quot;:visible&quot;)&amp;&amp;$(&quot;.uih_no_exception&quot;).hide()
;$(&quot;.warning_wrapper&quot;).hide()
;$(&quot;#uih_add_exceptions&quot;).on(&quot;click&quot;,function(){
$(&quot;.uih_all_exceptions&quot;).append(a);var i={
day:moment().format(t.format_date),
datetime_start:moment(&quot;08:00&quot;,&quot;HH:mm&quot;).format(t.format_hour),
datetime_end:moment(&quot;18:00&quot;,&quot;HH:mm&quot;).format(t.format_hour),
datetime_start_opt:&quot;&quot;,datetime_end_opt:&quot;&quot;,name:&quot;&quot;
},o=$(&quot;.uih_one_exception&quot;).last().data(&quot;exception&quot;,i)
;$(&quot;.uih_no_exception&quot;).hide();e.push(i)
;t.picker_exceptions(o,e,!1);t.save_exception(o)
;t.set_view_hour()})}})})},picker_exceptions:function(t,e,i){
var a=this,o=$(t).find(&quot;.dt_wrapper_date_exception&quot;),n=o.find(&quot;input[type=text]&quot;),d=$(&quot;.uih_input_name_exception&quot;,$(t))
;if(i){d.val(t.data(&quot;exception&quot;).name)
;n.val(t.data(&quot;exception&quot;).day)}$(&quot;.add_hours&quot;,$(t)).hide()
;$(&quot;.warning_wrapper&quot;,$(t)).hide()
;a.double_time_pickers($(&quot;.dt_picker&quot;,t),t,t,!1)
;o.datetimepicker({format:a.format_date,
defaultDate:moment().format(a.format_date)})
;d.on(&quot;change&quot;,function(){t.data(&quot;exception&quot;).name=$(this).val()
;a.save_exception(t)});o.on(&quot;dp.change&quot;,function(e){
var i=e.date.format(a.format_date)
;if(moment(i,a.format_date)&lt;moment().startOf(&quot;day&quot;)){
n.val(moment().format(a.format_date))
;i=moment().format(a.format_date)}t.data(&quot;exception&quot;).day=i
;a.save_exception(t);a.set_view_hour()})
;$(&quot;.remove_one_exception&quot;,$(t)).on(&quot;click&quot;,function(){
t.data(&quot;exception&quot;).statut=&quot;delete&quot;;a.save_exception(t,5e3)})},
save_exception:function(t,e){self=this
;if(e)this.undo_save(t,e);else{
exception_copy=JSON.parse(JSON.stringify(t.data(&quot;exception&quot;)))
;exception_copy.day=moment(exception_copy.day,self.format_date).format(&quot;YYYY-MM-DD&quot;)
;exception_copy.datetime_start=moment(exception_copy.datetime_start,self.format_hour).format(&quot;HH:mm&quot;)
;exception_copy.datetime_end=moment(exception_copy.datetime_end,self.format_hour).format(&quot;HH:mm&quot;)
;if(exception_copy.datetime_start_opt){
exception_copy.datetime_start_opt=moment(exception_copy.datetime_start_opt,self.format_hour).format(&quot;HH:mm&quot;)
;exception_copy.datetime_end_opt=moment(exception_copy.datetime_end_opt,self.format_hour).format(&quot;HH:mm&quot;)
}self.cpt.ask({request:&quot;save_exception&quot;,exception:exception_copy
},function(e){
e.id_new_excep&amp;&amp;(t.data(&quot;exception&quot;).id=e.id_new_excep)
;if(t.data(&quot;exception&quot;).statut){$(t).remove()
;$(&quot;.uih_one_exception:first&quot;).is(&quot;:visible&quot;)||$(&quot;.uih_no_exception&quot;).show()
}self.set_view_hour()})}},compare_holidays:function(t,e){
var i=moment(t.datetime_end,this.format_date),a=moment(e.datetime_end,this.format_date)
;return i.isAfter(a)?1:-1},compare_exceptions:function(t,e){
var i=moment(t.date,this.format_date),a=moment(e.date,this.format_date)
;return i.isAfter(a)?1:-1},init_defaultpicker:function(t,e,i){
t.datetimepicker({format:i,defaultDate:moment().format(i)
}).css({cursor:&quot;pointer&quot;});e.datetimepicker({format:i,
defaultDate:moment().format(i)}).css({cursor:&quot;pointer&quot;})},
initpicker:function(t,e,i,a,o,n){if(n){numb=1*o
;i.val(t[e].list[numb].start);a.val(t[e].list[numb].end)
}else if(o){i.val(t.data(&quot;exception&quot;).datetime_start_opt)
;a.val(t.data(&quot;exception&quot;).datetime_end_opt)}else{
i.val(t.data(&quot;exception&quot;).datetime_start)
;a.val(t.data(&quot;exception&quot;).datetime_end)}},
d_time_pickers:function(t,e,i,a,o){
var n=$(e).find(&quot;.dt_wrapper&quot;).first(),d=$(e).find(&quot;.dt_wrapper&quot;).last(),s=n.find(&quot;input[type=text]&quot;),_=d.find(&quot;input[type=text]&quot;),r=this,m=&quot;second_dt_pickers dt_picker&quot;==$(e).attr(&quot;class&quot;)
;if(a){if(m&amp;&amp;!i[o].list[1]){$(e).hide()
;$(&quot;.add_hours&quot;,$(t)).show()}
}else if(m&amp;&amp;&quot;&quot;==i.data(&quot;exception&quot;).datetime_end_opt){
$(e).hide();$(&quot;.add_hours&quot;,$(t)).show()}
m?(a&amp;&amp;i[o].list[1]||!a&amp;&amp;&quot;&quot;!=i.data(&quot;exception&quot;).datetime_start_opt)&amp;&amp;r.initpicker(i,o,s,_,m,a):r.initpicker(i,o,s,_,m,a)
;r.init_defaultpicker(n,d,this.format_hour)
;n.on(&quot;dp.change&quot;,function(n){
start_date=n.date.format(r.format_hour);if(m)if(a){
o=e.closest(&quot;fieldset&quot;).className.replace(&quot;uih_&quot;,&quot;&quot;)
;end_date=i[o].list[1].end;i[o].list[1].start=start_date}else{
i.data(&quot;exception&quot;).datetime_start_opt=start_date
;end_date=i.data(&quot;exception&quot;).datetime_end_opt
;r.save_exception(i)}else if(a){
o=e.closest(&quot;fieldset&quot;).className.replace(&quot;uih_&quot;,&quot;&quot;)
;end_date=i[o].list[0].end;i[o].list[0].start=start_date}else{
i.data(&quot;exception&quot;).datetime_start=start_date
;end_date=i.data(&quot;exception&quot;).datetime_end;r.save_exception(i)}
var d=moment(start_date,r.format_hour),s=moment(end_date,r.format_hour)
;m?$(&quot;.warning_wrapper:last&quot;,$(t)).toggle(d.diff(s)&gt;0):$(&quot;.warning_wrapper:first&quot;,$(t)).toggle(d.diff(s)&gt;0)
;r.cpt.setHasChanged();r.set_view_hour()})
;d.on(&quot;dp.change&quot;,function(n){var d=n.date.format(r.format_hour)
;if(m)if(a){o=e.closest(&quot;fieldset&quot;).className.replace(&quot;uih_&quot;,&quot;&quot;)
;start_date=i[o].list[1].start;i[o].list[1].end=d}else{
i.data(&quot;exception&quot;).datetime_end_opt=d
;start_date=i.data(&quot;exception&quot;).datetime_start_opt
;r.save_exception(i)}else if(a){
o=e.closest(&quot;fieldset&quot;).className.replace(&quot;uih_&quot;,&quot;&quot;)
;start_date=i[o].list[0].start;i[o].list[0].end=d}else{
i.data(&quot;exception&quot;).datetime_end=d
;start_date=i.data(&quot;exception&quot;).datetime_start
;r.save_exception(i)}
var s=moment(start_date,r.format_hour),_=moment(d,r.format_hour)
;m?$(&quot;.warning_wrapper:last&quot;,$(t)).toggle(s.diff(_)&gt;0):$(&quot;.warning_wrapper:first&quot;,$(t)).toggle(s.diff(_)&gt;0)
;r.cpt.setHasChanged();r.set_view_hour()})},
double_time_pickers:function(t,e,i,a,o){var n=this
;$.each(t,function(t,d){n.d_time_pickers(e,d,i,a,o)})
;$(&quot;.add_hours&quot;,$(e)).on(&quot;click&quot;,function(){
if(!$(&quot;.second_dt_pickers&quot;,e).is(&quot;:visible&quot;)){
$(&quot;.second_dt_pickers&quot;,$(e)).show()
;$(&quot;.warning_wrapper&quot;,$(e)).hide()
;var t=moment(&quot;08:00&quot;,&quot;HH:mm&quot;).format(n.format_hour),d=moment(&quot;14:00&quot;,&quot;HH:mm&quot;).format(n.format_hour),s=moment(&quot;12:00&quot;,&quot;HH:mm&quot;).format(n.format_hour),_=moment(&quot;18:00&quot;,&quot;HH:mm&quot;).format(n.format_hour)
;if(a)i[o].list=[{start:t,end:s},{start:d,end:_}];else{
i.data(&quot;exception&quot;).datetime_start=t
;i.data(&quot;exception&quot;).datetime_start_opt=d
;i.data(&quot;exception&quot;).datetime_end=s
;i.data(&quot;exception&quot;).datetime_end_opt=_;n.save_exception(i)}
n.set_view_hour();$(&quot;.add_hours&quot;,$(e)).hide()
;$(e).find(&quot;.first_dt_pickers .dt_wrapper:first .dtpd_start&quot;).val(t)
;$(e).find(&quot;.first_dt_pickers .dt_wrapper:last .dtpd_end&quot;).val(s)
;$(e).find(&quot;.second_dt_pickers .dt_wrapper:first .dtpd_start&quot;).val(d)
;$(e).find(&quot;.second_dt_pickers .dt_wrapper:last .dtpd_end&quot;).val(_)
}});$(&quot;.remove_hours&quot;,$(e)).on(&quot;click&quot;,function(){
if($(&quot;.second_dt_pickers&quot;,e).is(&quot;:visible&quot;)){
$(&quot;.add_hours&quot;,$(e)).show();if(a)i[o].list=[i[o].list[0]];else{
i.data(&quot;exception&quot;).datetime_start_opt=&quot;&quot;
;i.data(&quot;exception&quot;).datetime_end_opt=&quot;&quot;;n.save_exception(i)}
n.set_view_hour();$(&quot;.second_dt_pickers&quot;,$(e)).hide()}})},
set_view_hour:function(){var t=this
;this.cpt.idserver?t.cpt.ask({request:&quot;get_for_view_start_today&quot;
},function(e){t.set_view(!0,e)}):this.set_view(!1)},
set_view:function(t,e){
var i,a=[[&quot;monday&quot;,&quot;Lundi&quot;],[&quot;tuesday&quot;,&quot;Mardi&quot;],[&quot;wednesday&quot;,&quot;Mercredi&quot;],[&quot;thursday&quot;,&quot;Jeudi&quot;],[&quot;friday&quot;,&quot;Vendredi&quot;],[&quot;saturday&quot;,&quot;Samedi&quot;],[&quot;sunday&quot;,&quot;Dimanche&quot;]],o=[],n=this,d=this.cpt.getData(&quot;regroup_days&quot;),s=0,_=JSON.parse(JSON.stringify(this.cpt.getData(&quot;regular_hours&quot;)))
;$(&quot;.uih_all_days_week&quot;,n.n.content).html(&quot;&lt;div class = &apos;uih_day_week&apos;&gt; &lt;div class = &apos;uih_name_day&apos;&gt;&lt;/div&gt; &lt;div class = &apos;hour_opening_day&apos;&gt; &lt;/div&gt; &lt;/div&gt;&quot;)
;$(&quot;.uih_holiday_exist&quot;,n.n.content).empty()
;var r=moment().tz(this.cpt.data.timezone_editor||moment.tz.guess())
;r.utcOffset()!=moment().utcOffset()&amp;&amp;$(&quot;.warning_different_time_zone&quot;,n.n.content).html(&quot;Attention : vous n&apos;\xeates pas localis\xe9 dans le m\xeame fuseau horaire.&quot;)
;for(var m=0;m&lt;7;m++){o.push(r);r=r.clone().add(1,&quot;d&quot;)}
r=r.clone().add(-7,&quot;d&quot;)
;if(!this.cpt.getData(&quot;start_from_today&quot;)){
var c=o[0].isoWeekday()-1
;for(m=0;m&lt;c;m++)o.splice(m,0,o.splice(7-c+m,1)[0])}
if(t&amp;&amp;(e.exceptions||e.holidays))for(s=0;s&lt;7;s++){
i=o[s].isoWeekday()-1;e.holidays.each(function(t){
if(moment(t.datetime_start).diff(o[s].startOf(&quot;day&quot;))&lt;=0&amp;&amp;moment(t.datetime_end).diff(o[s].startOf(&quot;day&quot;))&gt;=0){
_[a[i][0]].open=!1;_[a[i][0]].holiday=!0
;_[a[i][0]].date=o[s].format(&quot;DD/MM&quot;)}})
;e.exceptions.each(function(t){
if(moment(t.day).format(&quot;YYYY-MM-DD&quot;)==o[s].format(&quot;YYYY-MM-DD&quot;)){
_[a[i][0]].open=!0;_[a[i][0]].list=[{
start:moment(t.datetime_start,&quot;HH:mm&quot;).format(n.format_hour),
end:moment(t.datetime_end,&quot;HH:mm&quot;).format(n.format_hour)}]
;&quot;&quot;!=t.datetime_start_opt&amp;&amp;_[a[i][0]].list.push({
start:moment(t.datetime_start_opt,&quot;HH:mm&quot;).format(n.format_hour),
end:moment(t.datetime_end_opt,&quot;HH:mm&quot;).format(n.format_hour)})
;_[a[i][0]].exception=!0;_[a[i][0]].date=o[s].format(&quot;DD/MM&quot;)}})
}this.open_or_closed_at(_,a,r,o)
;this.n.content.find(&quot;.uih_all_days_week&quot;).toggle(this.cpt.getData(&quot;only_open_or_close&quot;))
;if(this.cpt.getData(&quot;only_open_or_close&quot;)){
this.regroup_days(_,d,o,a);this.inserthtml(o,_,d,a)}
this.applyStyle();this._autoSize()},
comparedatadays:function(t,e){if(t.open!=e.open)return!1
;if(!t.open&amp;&amp;!e.open)return!0
;if(t.list.length!=e.list.length)return!1
;if(t.exception||e.exception)return!1
;for(var i=0;i&lt;t.list.length;i++){
if(t.list[i].start!=e.list[i].start)return!1
;if(t.list[i].end!=e.list[i].end)return!1}return!0},
regroup_days:function(t,e,i,a){var o=1,n=this,d=!1
;index=i[1].isoWeekday()-1;if(0==index){d=!0;index_moins=7}
for(var s=!1;a[o]&amp;&amp;o&lt;7;){
if(a[index])d?index_moins-=1:index_moins=index-1;else{index=0
;d=!0;s||(index_moins+=1)}
if(e&amp;&amp;n.comparedatadays(t[a[index][0]],t[a[index_moins][0]])){
delete t[a[index][0]]
;a[index_moins][1]=a[index_moins][1].split(&quot; - &quot;)[0]+&quot; - &quot;+a[index][1]
;&quot;sunday&quot;==a[index][0]&amp;&amp;(s=!0);a.splice(index,1);i.splice(o,1)
}else{
$(&quot;.uih_all_days_week&quot;,n.n.content).append($(&quot;.uih_day_week:first&quot;,n.n.content.clone()))
;o++;index++;d=!1}}},inserthtml:function(t,e,i,a){
var o=!1,n=this,d=$(&quot;.uih_day_week&quot;,this.cpt.node)
;$(&quot;.uih_view&quot;,this.cpt.node).html();$.each(d,function(d){
index2=i?n.find_index(t[d],a):t[d].isoWeekday()-1
;$(&quot;.uih_name_day&quot;,this).html(a[index2][1])
;if(e[a[index2][0]].open){
$(&quot;.hour_opening_day&quot;,this).html(&quot;&lt;p class = &apos;first_hour_opening&apos;&gt; &lt;/p&gt;&quot;)
;$(&quot;.first_hour_opening&quot;,this).html(e[a[index2][0]].list[0].start+&quot; - &quot;+e[a[index2][0]].list[0].end)
;if(e[a[index2][0]].list[1]){
$(&quot;.hour_opening_day&quot;,this).append(&quot;&lt;p class = &apos;second_hour_opening&apos;&gt; &lt;/p&gt;&quot;)
;$(&quot;.second_hour_opening&quot;,this).html(e[a[index2][0]].list[1].start+&quot; - &quot;+e[a[index2][0]].list[1].end)
}
e[a[index2][0]].exception&amp;&amp;$(&quot;.hour_opening_day&quot;,this).addClass(&quot;exception&quot;)
}else{$(&quot;.hour_opening_day&quot;,this).html(&quot;FERM\xc9&quot;)
;$(&quot;.hour_opening_day&quot;,this).addClass(&quot;closed_day&quot;)
;if(e[a[index2][0]].holiday){
$(&quot;.hour_opening_day&quot;,this).addClass(&quot;holiday&quot;)
;$(&quot;.hour_opening_day&quot;,this).append(&quot;*&quot;);o=!0}}})
;o&amp;&amp;$(&quot;.uih_holiday_exist&quot;,this.n.content).html(&quot;(*) Jours exceptionnellement ferm\xe9s&quot;)
},confirm_save_then:function(t){
this.cpt.idserver?t():confirm(sprintf(&quot;Souhaitez-vous sauvegarder cette page (dans le brouillon) pour commencer la configuration du module ?&quot;))?this.cpt.page.saveAndCleanHistory().done(t):$(&quot;#design_blocks_wrapper&quot;).desactivate()
},open_or_closed_at:function(t,e,i,a){day=e[i.isoWeekday()-1][0]
;var o=moment(t[day].list[0].start,this.format_hour),n=moment(t[day].list[0].end,this.format_hour),d=72e5
;o.diff(n)&gt;=0&amp;&amp;n.add(1,&quot;days&quot;)
;if(t[day].open)if(o.diff(i)&lt;=0&amp;&amp;n.diff(i)&gt;=0)this.insert_open(n,d,t,i,0,day);else if(i.diff(o)&lt;=0)this.insert_closed(o,d,t,i,0,day);else if(t[day].list[1]){
var s=moment(t[day].list[1].start,this.format_hour),_=moment(t[day].list[1].end,this.format_hour)
;o.diff(s)&gt;=0&amp;&amp;s.add(1,&quot;days&quot;);o.diff(_)&gt;=0&amp;&amp;_.add(1,&quot;days&quot;)
;s.diff(i)&lt;=0&amp;&amp;_.diff(i)&gt;=0?this.insert_open(_,d,t,i,1,day):i.diff(s)&lt;=0?this.insert_closed(s,d,t,i,1,day):this.find_next_day_open_same_week(t,e,i,a)
}else this.find_next_day_open_same_week(t,e,i,a);else this.find_next_day_open_same_week(t,e,i,a)
},find_index:function(t,e){
var i=null,a=t._d.getDayName().toLowerCase()
;$.each(e,function(t,e){a==e[0]&amp;&amp;(i=t)});return i},
insert_open:function(t,e,i,a,o,n){if(t.diff(a)&lt;=e){
$(&quot;.uih_open_or_close&quot;,this.n.content).html(sprintf(&quot;OUVERT : Ferme bient\xf4t, \xe0 %1$s&quot;,i[n].list[o].end))
;$(&quot;.uih_open_or_close&quot;,this.n.content).addClass(&quot;time_closed_soon&quot;)
}else{
$(&quot;.uih_open_or_close&quot;,this.n.content).html(sprintf(&quot;OUVERT : Ferme \xe0 %1$s&quot;,i[n].list[o].end))
;$(&quot;.uih_open_or_close&quot;,this.n.content).addClass(&quot;time_open&quot;)}},
insert_closed:function(t,e,i,a,o,n){if(a.diff(t)&gt;=-e){
$(&quot;.uih_open_or_close&quot;,this.n.content).html(sprintf(&quot;FERM\xc9 : Ouvre bient\xf4t, \xe0 %1$s&quot;,i[n].list[o].start))
;$(&quot;.uih_open_or_close&quot;,this.n.content).addClass(&quot;time_open_soon&quot;)
}else{
$(&quot;.uih_open_or_close&quot;,this.n.content).html(sprintf(&quot;FERM\xc9 : Ouvre \xe0 %1$s&quot;,i[n].list[o].start))
;$(&quot;.uih_open_or_close&quot;,this.n.content).addClass(&quot;time_closed&quot;)}
},find_next_day_open_same_week:function(t,e,i,a){
var o,n,d=i.isoWeekday(),s=this
;if(this.cpt.getData(&quot;start_from_today&quot;)){o=1;n=0
}else n=(o=i.isoWeekday())-1;for(var _=null;a[o]!=a[n]&amp;&amp;!_;){
t[e[d%=7][0]].open&amp;&amp;(_=sprintf(&quot;%1$s \xe0 %2$s&quot;,e[d][1],t[e[d][0]].list[0].start))
;d++;o=++o%7}
$(&quot;.uih_open_or_close&quot;,this.n.content).addClass(&quot;time_closed&quot;)
;if(_)$(&quot;.uih_open_or_close&quot;,this.n.content).html(sprintf(&quot;FERM\xc9 : Ouvert %1$s&quot;,_));else{
this.cpt.ask({request:&quot;next_day_open&quot;,
regular_hours:this.cpt.data.regular_hours},function(t){
if(t.next_day_open[0]){
var e=moment(t.next_day_open[0]).format(s.format_date),i=moment(t.next_day_open[1],&quot;HH:mm&quot;).format(s.format_hour)
;$(&quot;.uih_open_or_close&quot;,s.n.content).html(sprintf(&quot;FERM\xc9 : Ouvre %1$s \xe0 %2$s&quot;,e,i))
}else $(&quot;.uih_open_or_close&quot;,s.n.content).html(&quot;FERM\xc9&quot;)})
;$(&quot;.uih_open_or_close&quot;,this.n.content).html(&quot;FERM\xc9&quot;)}},
showProp:function(){
var t=$(this.component.propertyNode).add(this.component.propertyDesignNode)
;$(&quot;.start_from_today, .regroup_days&quot;,t).toggle(this.cpt.getData(&quot;only_open_or_close&quot;))
;$(&quot;.odd_bgcolor&quot;,t).toggle(this.cpt.data.toggle_odd)
;$(&quot;.toggle_odd_font_color&quot;,t).toggle(this.cpt.data.toggle_odd)
;$(&quot;.odd_font_color&quot;,t).toggle(this.cpt.data.toggle_odd_font_color&amp;&amp;this.cpt.data.toggle_odd)
;$(&quot;.title_alignment&quot;,t).toggle(!this.cpt.getGTPreset(&quot;backdrop&quot;,&quot;backdrop_preset&quot;))
},applyStyle:function(){
$(&quot;#ui_hour_style_&quot;+this.cpt_id).remove();var t=&quot;&quot;
;t+=&quot;.ui_hour_&quot;+this.cpt_id+&quot; .hour_opening_day.closed_day{color:&quot;+this.cpt.getData(&quot;closed_color&quot;)+&quot;;}&quot;
;if(this.cpt.getData(&quot;toggle_odd&quot;)){
t+=&quot;.ui_hour_&quot;+this.cpt_id+&quot; .uih_day_week:nth-child(odd) {background-color: &quot;+(this.cpt.getData(&quot;odd_bgcolor&quot;)||&quot;rgba(0, 0, 0, 0.05)&quot;)+&quot;;}&quot;
;this.cpt.getData(&quot;toggle_odd_font_color&quot;)&amp;&amp;(t+=&quot;.ui_hour_&quot;+this.cpt_id+&quot; .uih_day_week:nth-child(odd) {color: &quot;+(this.cpt.getData(&quot;font_color_hour&quot;)||&quot;rgba(0, 0, 0, 0.8)&quot;)+&quot;;}&quot;)
}
t+=&quot;.ui_hour_&quot;+this.cpt_id+&quot; .title_uih_view:not(.gt_backdrop_title), .ui_hour_&quot;+this.cpt_id+&quot; .uih_content:not(.gt_backdrop_content) .uih_open_or_close{text-align:&quot;+this.cpt.data.align+&quot;}&quot;
;$(&quot;head&quot;).append(&quot;&lt;style id=&apos;ui_hour_style_&quot;+this.cpt_id+&quot;&apos;&gt;&quot;+t+&quot;&lt;/style&gt;&quot;)
},applyPreset:function(){if(GraphicalType.available){
var t=GraphicalType.graphical_types.backdrop.preset_data.prefix,e=this.cpt.componentBody.find(&quot;.uih_view&quot;)
;e.removeClassMatch(new RegExp(t))
;var i=this.cpt.getGTPreset(&quot;backdrop&quot;,&quot;backdrop_preset&quot;);if(i){
e.find(&quot;.title_uih_view&quot;).addClass(&quot;gt_backdrop_title&quot;)
;e.find(&quot;.uih_content&quot;).addClass(&quot;gt_backdrop_content&quot;)
;e.addClass(t+&quot; &quot;+t+&quot;_&quot;+i)}else{
e.find(&quot;.title_uih_view&quot;).removeClass(&quot;gt_backdrop_title&quot;)
;e.find(&quot;.uih_content&quot;).removeClass(&quot;gt_backdrop_content&quot;)}}}};</script><style>.uih_all_days_week{padding-top:10px}
.uih_day_week{display:grid;grid-template-columns:1fr 1fr;padding:5px 3px;align-items:center}
.uih_name_day{text-align:left}
.hour_opening_day{text-align:right}
.hour_opening_day.closed_day{font-weight:700}
.uih_content:not(.gt_backdrop_content) .uih_open_or_close{padding-top:10px}
.detected_device_mobile .uih_view{text-align:center}
.detected_device_mobile .uih_all_days_week{padding:0 20px}
.title_uih_view:empty{display:none}
.title_uih_view:empty+.uih_open_or_close{padding:0}</style></uidget>