function renderPartDay(n){try{return n._ExtraProperties.PartOfDaySwitch==!1?"":"<span class='tagExtraProperty'>"+translate(n._ExtraProperties.PartOfDay)+"<\/span>"}catch(t){return console.log("error: getBookablePartDay "+t),""}}function RenderBookableDays(n){var t=[],r,i;return t[0]="zo",t[1]="ma",t[2]="di",t[3]="wo",t[4]="do",t[5]="vr",t[6]="za",console.log(n._ExtraProperties.SpecificDay,"SpecificDay"),n._ExtraProperties.SpecificDay?(r=n._ExtraProperties.BookableDays.split(","),i=[],_.each(r,function(n){i.push(t[n])}),console.log(i,"daylist"),"<span class='tagExtraProperty'>  "+i.join(",")+"<\/span>"):""}function RenderOnlinePayMandatory(n){var t="online betalen";return gExtrasettings.ShowOnlyOnlinePayment&&gExtrasettings.GlobalPrePaidment?"<span class='tagExtraProperty'>  "+t+gExtrasettings.GlobalPrePaidmentValue+"% <\/span>":gExtrasettings.ShowOnlyOnlinePayment?"<span class='tagExtraProperty'>  "+t+"<\/span>":n._ExtraProperties.OnlinePaymentMandatory?gExtrasettings.GlobalPrePaidment?"<span class='tagExtraProperty'>  "+t+gExtrasettings.GlobalPrePaidmentValue+"% <\/span>":"<span class='tagExtraProperty'>  "+t+"<\/span>":""}function translate(n){return n.replace("morning","ochtend").replace("afternoon","middag").replace("evening","avond")}function nearest(n,t){return n=n/t,Math.round(n)*t}function DuoTimes(n){var t=[],i=_.groupBy(n);return _.each(i,function(n,i){n.length>1&&t.push(i)}),t}function displaySmallFractionPrice(n){try{var t=accounting.formatMoney(n,""),i=accounting.settings.number.decimal,r=t.split(i)[0],u=t.split(i)[1];return"        <div class='priceService'>          &euro;   "+r+"<span class='priceService_fraction'> "+u+"<\/span>          <span class='priceService_period'>  <\/span>      <\/div>"}catch(e){return accounting.formatMoney(n,"")}}function roundcents(n){return app.appsettings.get("Roundcents")&&(cents=.05,n=n/cents,n=Math.round(n)*cents),n}function inclVAT(n,t){return VATRate=app.appsettings.get("VAT"+t),t=="Free"&&(VATRate=0),roundcents(n+n/100*VATRate)}function checkCurrentTime(n){try{var t=new Date,i=$("#datepicker").datepicker("getDate");return t.toDateString()==i.toDateString()&&(currenthour=t.getHours()+1,starthourResource=n.split(":")[0],starthourResource<=currenthour)?currenthour+":00":n}catch(r){return n}}function toSeconds(n){var t=n.split(":");return t[0]*3600+t[1]*60+ +t[2]}function checkImage(n,t,i){var r=new Image;r.onload=t;r.onerror=i;r.src=n}function setBannerImage(n){var n=n==""||n=="nvt"?"":n.replace(/ /g,"_").toLowerCase();image_url_Category="https://sarasoft.blob.core.windows.net/images/logo_"+tenantid+"_"+n+".png";image_url="https://sarasoft.blob.core.windows.net/images/logo_"+tenantid;gWebsiteurl.indexOf("http")==-1&&(gWebsiteurl+="http://"+gWebsiteurl);checkImage(image_url_Category,function(){$("#CompanyLogo").html("<a href="+gWebsiteurl+"><img src='"+image_url_Category+"' /><\/a>")},function(){checkImage(image_url,function(){$("#CompanyLogo").html("<a href="+gWebsiteurl+"><img src='"+image_url+"' /><\/a>")},function(){$("#CompanyLogo").html("<h1 class='salonname themecolor'>"+app.appsettings.get("BusinessName")+"<\/h1>")})})}function getSetting(n){if(Category!=null)return Category.indexOf("-")>=0?(setting=Category.split("-"),setting[n]):Category}function isFloat(x){return!isNaN(x)&&!isInt(eval(x))&&x.toString().length>0}function isInt(x){return!isNaN(x)&&eval(x).toString().length==parseInt(eval(x)).toString().length}function InjectResourceService(n,t){var i=[],r,u,f;try{if(i=JSON.parse(t.get("Tool")),i!=null&&i.length>0)for(r=0;r<i.length;r++)u=new Service(i[r]),u.set("linked",!0),f=t.toJSON(),f.Category=f.Category.Group,f.createticket=r==0?!0:!1,u.set("ContainerService",JSON.stringify(f)),u.set("ContainerServiceId",t.get("Id")),n.add(u)}catch(e){}}function CreatArrayTimeSlots(n,t){var o=n.get("Duration")/5,r=[],f=0,u,e,i;try{if(r=JSON.parse(n.get("Tool")),r!=null&&r.length>0){for(u=0;u<r.length;u++){for(timeslotstaken=r[u].Duration/5,i=0;i<timeslotstaken;i++)t.push(1);for(timesloteopen=r[u].ProcessTime/5,i=0;i<timesloteopen;i++)t.push(0);f=f+timeslotstaken+timesloteopen}if(e=o-f,e>0)for(i=0;i<e;i++)t.push(1)}}catch(s){}}function calculateTotalDurationOLD(n,t){var f=t.get("Duration")+t.get("ProcessTime"),e=t.get("Tool"),i=[],r,u;try{if(i=JSON.parse(e),$.isArray(i))for(r=0;r<i.length;r++)u=n.get(i[r].ServiceId),u!=null&&(f=f+u.get("Duration")+u.get("ProcessTime"))}catch(o){}return f}function calculateTotalDuration(n){var r=0,f=n.get("Tool"),t=[],i,u;try{if(t=JSON.parse(f),$.isArray(t))for(i=0;i<t.length;i++)u=new Service(t[i]),r=r+u.get("Duration")+u.get("ProcessTime")}catch(e){}return r}function IsGlobalBuffer(){try{var n=!1;return typeof gExtrasettings.Globalbuffertime!="undefined"&&(n=gExtrasettings.Globalbuffertime==!0),n}catch(t){return!1}}function IsGlobalPrepayment(){try{var n=!1;return typeof gExtrasettings.GlobalPrePaidment!="undefined"&&(n=gExtrasettings.GlobalPrePaidment==!0),n}catch(t){return!1}}function GetBufferTime(n,t){var i=null,r;try{r=JSON.parse(n.get("BufferTimeJSON"));i=r[t]}catch(u){}return i}function AddRemoveLinkedServicesOLD(n,t,i,r){var u=[],f,e;try{if(u=JSON.parse(i.get("Tool")),u!=null&&u.length>0)for(f=0;f<u.length;f++)r=="add"&&(e=new Service(u[f]),r=="add"?(e.set("linked",!0),t.add(e)):t.remove(e.Id))}catch(o){}}function AddRemoveLinkedServices(n,t,i,r){var u=[],f,o,e;try{if(u=JSON.parse(i.get("Tool")),u!=null&&u.length>0)for(f=0;f<u.length;f++)r=="add"?(o=n.get(u[f].ServiceId),o!=null&&(o.set("linked",!0),e=o.clone(),e.set("OrigId",e.id),e.set("Id",u[f].Id),t.add(e))):t.remove(u[f].Id)}catch(s){}}function getParameterByName(n){n=n.replace(/[\[]/,"\\[").replace(/[\]]/,"\\]");var i=new RegExp("[\\?&]"+n+"=([^&#]*)"),t=i.exec(location.href);return t==null?"":decodeURIComponent(t[1].replace(/\+/g," "))}function scrollToAnchor(n){var t=$("#"+n);$("html,body").animate({scrollTop:t.offset().top},"slow")}function OverwriteLabels(n,t){try{n.ResourceSelection=t.labelResourceSelection;n.placeholderfirstname=t.placeholderfirstname;n.placeholderremarks=t.placeholderremarks}catch(i){}}function dateToTicks(n){return n.getTime()*1e4+621355968000000000}function DialogWidth(n){return $(window).width()>n?n:"90%"}function parseExtraProperties(n){var t={BookableDays:"",DuoBooking:!1,OnlinePaymentMandatory:!1,PartOfDay:"",PartOfDaySwitch:!1,SpecificDay:!1,SpecificServiceInfo:""},i;try{if(n!=null&&n!="")return i=JSON.parse(n),$.extend(t,i)}catch(r){console.log(n,"error: parseExtraProperties "+r)}return t}function GetDiscountPrice(n,t){var o,r;try{var i=t,s=n;if(i._ExtraProperties.DiscountPriceSwitch!=undefined){if(i._ExtraProperties.DiscountPriceSwitch){var u=i._ExtraProperties.DiscountPriceStart,f=i._ExtraProperties.DiscountPriceEnd,r=i._ExtraProperties.DiscountPrice;if(r!==undefined&&r!=="")if(u!==undefined&&u!==""&&f!==undefined&&f!==""){var n=moment.unix(s,"DD-MM-YYYY"),h=moment(u,"DD-MM-YYYY"),e=moment(f,"DD-MM-YYYY");if(e=e.add(1,"day"),n>=h&&n<=e)return o=i._ExtraProperties.DiscountPrice,r=parseFloat(o.replace(",",".")),r}else return i.get("Price")}}else return i.get("Price")}catch(c){return}}function OpenMyAppointments(){var r,t,n,i;$("#MyAppointments").html()!=undefined&&$("#MyAppointments").dialog("close");r=this;MyAppointments.collection=new MyAppointmentCollection;t=new MyAppointments.Page({collection:MyAppointments.collection});MyAppointments.collection.url="/api/MyAppointmentsApi/GetScheduledAppointments?tid="+tenantid;MyAppointments.collection.fetch({data:"tenantId="+tenantid+"&Status=Scheduled,OnlineScheduled,Confirmed"}).fail(function(){}).success(function(){});n=$("<div id='MyAppointments'><div id='dialogcontent'><\/div><\/div>");i=t.render().el;$(n,"#dialogcontent").html(i);$(n).dialog({title:"",dialogClass:"mybookings",height:650,height:window.innerHeight,width:DialogWidth(450),position:{my:"top",at:"top",of:window},width:380,show:{effect:"slide",direction:"right"},hide:{effect:"slide",direction:"right"},position:{my:"right top",at:"right+10 bottom-40",collision:"none none",of:"#moreactionsactionloginmenu"},create:function(){$(this).parent().css({position:"fixed"})},buttons:{Sluiten:function(){$(this).dialog("close")}},close:function(){$("#MyAppointments").dialog("destroy");$("#MyAppointments").remove()}})}var gSelectedcontactfromList=null,vwContactList=Backbone.View.extend({template:_.template($("#tmpSelectContact").html()),addOne:function(n){this.itemview=new vwContactListItem({model:n});this.$("#contactlist").append(this.itemview.render().el)},render:function(){return $(this.el).html(this.template()),this.collection.each(this.addOne,this),this}}),vwContactListItem=Backbone.View.extend({tagName:"li",template:_.template($("#tmpContactitem").html()),events:{click:"selectContact"},selectContact:function(){$(".contact-checkbox").html('<i class="fa fa-circle-o"><\/i>');this.$(".contact-checkbox").html('<i class="fa fa-check-circle checkbox-selected"><\/i> ');gSelectedcontactfromList=this.model},render:function(){return this.$el.html(this.template(this.model.toJSON())),this}}),OnlineCustomerView,TicketItem,Service,Services,MyAppointmentModel,MyAppointmentCollection;window.FormsAll=window.FormsAll||{};FormsAll.IntakeForm=Backbone.View.extend({TemplateTitle:null,questions:null,Template:_.template($("#tmpIntakeFormOnline").html()),TemplateSend:_.template($("#tmpIntakeSend").html()),events:{"click #btnSaveOnline":"saveOnline"},initialize:function(){if(this.model=this.options.note,this.collection=this.options.notes,this.formtype=this.options.formtype,this.contact=this.options.contact,this.questions=new collectionQuestions,this.questions.comparator=function(n){return n.get("order")},this.options.intakeformtemplate){var n=JSON.parse(this.options.intakeformtemplate);this.TemplateTitle=n.Title;this.questions.reset(JSON.parse(n.Questions));this.error=""}else this.error="Geen intakeformulier gevonden",this.error+="<br> Ga naar Instellingen->Intakeformulieren om formulier aan te maken."},saveOnline:function(){var t=this,n;if(!$("#intakeform").valid()){alert("niet alle verplicht velden ingevuld.");return}n={};n.NoteType="IntakeForm";n.ContactId=this.contact.get("id");n.TextField2="(klant ingevuld)";n.TextField3=moment().format("DD-MM-YYYY hh:mm");n.TextField20=this.$("#intakeform").serialize();n.TextField21=this.options.intakeformtemplate;this.model.save(n).done(function(n){$(t.el).html(t.TemplateSend({model:n}))}).fail(function(){alert("Fout bij opslaan.")})},render:function(){var n=this.contact.toJSON();return this.model.get("TextField2")=="(klant ingevuld)"?($(this.el).html(this.TemplateSend({model:this.model.toJSON(),contact:n})),this):($(this.el).html(this.Template({model:this.model.toJSON(),contact:n})),this.error!="")?($(this.el).find("#intakeform").html(this.error),this.$("#btnSave").hide(),this):(this.renderQuestions(),this.$("#intakeform").validate({errorPlacement:function(n,t){t.parent().append(n)}}),$.extend($.validator.messages,{required:"Veld is verplicht."}),this)},renderQuestions:function(){var n=$(this.el).find("#QuestionsPlaceholder");n.html("");_.each(this.questions.models,function(t){var r=t.toJSON(),u=t.get("type"),i;switch(u){case"checkbox":i=_.template($("#tmpCheckbox").html());break;case"radio":i=_.template($("#tmpRadio").html());break;case"text":i=_.template($("#tmpText").html());break;case"select":i=_.template($("#tmpSelect").html());break;case"textblock":i=_.template($("#tmpTextblock").html());break;default:i=_.template($("#tmpUnknown").html())}n.append(i({model:r}))})}});var FormModel=Backbone.Model.extend({idAttribute:"Id",defaults:{Title:"",TextField1:"",TextField2:"",TextField3:"",TextField4:"",TextField5:"",TextField6:"",TextField7:"",TextField8:"",TextField9:"",TextField10:"",TextField11:"",TextField12:"",TextField13:"",TextField14:"",TextField15:"",TextField16:"",TextField17:"",TextField18:"",TextField19:"",NoteType:"",CreatedAt:new Date},url:function(){return"/api/note/"+this.get("Id")}}),Forms=Backbone.Collection.extend({model:FormModel,url:"/api/note",groupby:function(n){return Grouped=this.groupBy(n)},sortByField:function(n,t){sorted=_.sortBy(this.models,function(t){return t.get(n)});t==="desc"&&(sorted=sorted.reverse());this.models=sorted},comparator:function(n){return-moment(n.get("created"))}}),mQuestion=Backbone.Model.extend({idAttribute:"id",defaults:{type:"",question:"",options:[],value:"",order:0,validate:!1}}),collectionQuestions=Backbone.Collection.extend({model:mQuestion,initialize:function(){this.on("change",this.check,this)},check:function(){}}),LanguageDefault,LanguageNL={Services:"KIES DIENST(EN)",DateTime:"PLAN AFSPRAAK",HelpSelectAService:"Kies dienst(en)",ButtonContinue:"GA VERDER",HelpNoServicesFound:"Geen diensten gevonden.",TimePickerText1:"Beschikbare tijden.",ReserveHeader1:"JE GEGEVENS",ReserveHeader2:"JOUW AFSPRAAK",ReserveName:"Naam",ReserveContactDetails:"Contact gegevens",ReserveButtonChange:"Aanpassen",ReserveButtonConfirm:"BOEK NU!",ReserveConfirmHeader:"Afspraak bevestiging",ReserveBookMore:"Nog een afspraak boeken",LoginButton:"Login",ResourceSelection:"Kies medewerker",Cancel:"Afzeggen",Confirm:"Bevestigen",Schedul:"Gepland",OnlineScheduled:"Gepland",Cancelled:"Afgezegd",Confirmed:"Bevestigd",Scheduled:"Gepland",Closed:"Gesloten",OnlineScheduled:"Gepland",ClosedMessage:"Uw afspraken zijn gesloten",CancelledMessage:"Uw afspraken zijn afgezegd",ConfirmedMessage:"Uw afspraken zijn bevestigd",ScheduledMessage:"Uw afspraken zijn gepland",CancelledIcon:'<i class="fa fa-thumbs-o-down"><\/i>',ConfirmedIcon:'<i class="fa fa-thumbs-o-up"><\/i>',ScheduledIcon:'<i class="fa fa-calendar"><\/i>',ClosedIcon:" ",OnlineScheduledIcon:'<i class="fa fa-calendar"><\/i>',placeholderfirstname:"Voornaam",placeholderremarks:"Opmerkingen"},LanguageEN={Services:"CHOOSE",DateTime:"PLAN APPOINTMENT",HelpSelectAService:"Choose service(s)",ButtonContinue:"CONTINUE",HelpNoServicesFound:"No services found.",TimePickerText1:"Available times.",ReserveHeader1:"YOUR DATA",ReserveHeader2:"YOUR APPOINMENT",ReserveName:"Name",ReserveContactDetails:"Contact information",ReserveButtonChange:"Change",ReserveButtonConfirm:"BOOK NOW!",ReserveConfirmHeader:"Confirmation",ReserveBookMore:"Book another appointment",LoginButton:"Login",ResourceSelection:"Choose employee",Cancel:"Cancel",Confirm:"Confirm",Schedul:"Schedul",OnlineScheduled:"Scheduled",Cancelled:"Cancelled",Confirmed:"Confirmed",Scheduled:"Scheduled",Closed:"Closed",OnlineScheduled:"Scheduled",ClosedMessage:"Your appointments are closed",CancelledMessage:"Your appointments are cancelled",ConfirmedMessage:"Your appointments are confirmed",ScheduledMessage:"Your appointments are scheduled",CancelledIcon:'<i class="fa fa-thumbs-o-down"><\/i>',ConfirmedIcon:'<i class="fa fa-thumbs-o-up"><\/i>',ScheduledIcon:'<i class="fa fa-calendar"><\/i>',ClosedIcon:" ",OnlineScheduledIcon:'<i class="fa fa-calendar"><\/i>',placeholderfirstname:"Firstname",placeholderremarks:"Remarks"},PossibleTimes;window.OnlineBookingViewOLD=Backbone.View.extend({id:"SelfServicePage",selectedservices:null,totalduration:0,totalprice:0,_servicescollection:[],timeslotbuttonObjects:[],weekday:new Array(7),businessopen:"",businessclosed:"",selectedresourceindex:-1,availablityitems:null,response:null,AvailableResources:{},AvailableBydate:{},selectedresource:null,selectedservice:null,BusinessHours:null,resourcePossibleTimes:null,AllResourceAvailableTimes:null,possibletimes:null,rendered2:!1,VATHigh:0,VATLow:0,continueBeforeShowDay:!0,servicesChildview:null,timestepsize:15,template:_.template($("#OnlineBookingTemplate").html()),initialize:function(){this.selectedservices=new Services;onlinebookingview=this;_SelfserviceBookingView=this;this.weekday[0]="Zondag";this.weekday[1]="Maandag";this.weekday[2]="Dinsdag";this.weekday[3]="Woensdag";this.weekday[4]="Donderdag";this.weekday[5]="vrijdag";this.weekday[6]="Zaterdag"},events:{"change #selectresource":"changeSelectResource","click #btnSelecttime":"renderTimePicker","click #btnReserve":"reserve","click #SelectedService":"ShowServices"},ShowServices:function(){$("#SelectedService").hide();this.servicesChildview==null&&this.renderServiceList(app.ResourceServicesList);$("#placeholderServicesList").slideDown(200)},render:function(){return $(this.el).html(this.template()),$(".button",$(this.el)).button(),$.support.placeholder&&$("label",$(this.el)).hide(),this},renderServiceList:function(n){var t=this,r=$("#filtersDropDown").val(),i=getSetting(0);i!="nvt"&&i!=""&&(n=n.byCategory(i));this.servicesChildview=new ServicesList({collection:n});t.servicesChildview.onlinebooking=!0;t.servicesChildview.parent=t;n.length>0?this.$("#placeholderServicesList").html(t.servicesChildview.render().el):this.$("#placeholderServicesList").html("<div class='InfoMessage'> "+LanguageDefault.HelpNoServicesFound+"<\/div>")},getresourcesforService:function(n){_thisview=this;this.availablityitems=new AvailablityItems;this.availablityitems.url="/api/onlineBook/resources";dateText=moment(new Date).format("YY/MMM/DD");this.availablityitems.fetch({data:"&companyid="+tenantid+"&ServiceId="+n,parse:!1}).done(function(n){_thisview.BusinessHours=app.appsettings.get("BusinessHours");_thisview.VATHigh=app.appsettings.get("VATHigh");_thisview.VATLow=app.appsettings.get("VATLow");_thisview.response=n;_.each(n,function(n){_.each(_thisview.selectedservices.models,function(){});_thisview.AvailableResources[n.resourceid]=n});_thisview.renderSelectResources(_thisview.AvailableResources);now=new Date;_thisview.getMonthAppointments(now.getFullYear(),now.getMonth()+1,null)})},renderSelectResources:function(){var r=$("<div id='selectresource-container'><\/div>"),n,t;r.append("<div id='selectresource-header' class='themecolor'><i class='fa fa-user-plus 1x'><\/i>&nbsp;"+LanguageDefault.ResourceSelection+"<\/div> ");n=$("<select id='selectresource' class='pulldown'><\/select>");i=0;_.each(_thisview.availablityitems.models,function(t){i++;var r=t.get("resourcename");r=r.indexOf("-")>-1?r.split("-")[1]:r;n.append("<option value='"+t.get("resourceid")+"' >"+r+"<\/option>")});i>1&&n.prepend("<option value='0' SELECTED >Geen voorkeur<\/option>");t=n.val();t!=0?(_thisview.selectedresource=_thisview.AvailableResources[t],$("#selectresource").html("")):(_thisview.selectedresource=null,$("#selectresource").html(r.append(n)))},changeSelectResource:function(n){resourceid=$(n.target).val();_thisview.selectedresource=_thisview.AvailableResources[resourceid];now=new Date($("#datepicker").datepicker("getDate"));_thisview.getMonthAppointments(now.getFullYear(),now.getMonth()+1,1)},renderDatePicker:function(){this.$("#selectresource").show();this.$("#SelectDateTimeMessage").hide();this.$("#datepicker").empty();this.$("#datepicker").datepicker("destroy");this.$("#datepicker").datepicker({showWeek:!1,prevText:"<i class='fa fa-arrow-left 1x'><\/i>",nextText:"<i class='fa fa-arrow-right 1x'><\/i>",gotoCurrent:!0,minDate:"0d",onSelect:onlinebookingview.datePickerSelectDate,onChangeMonthYear:onlinebookingview.getMonthAppointments,beforeShowDay:onlinebookingview.datePickerShowDay});$.datepicker.setDefaults($.datepicker.regional.nl)},datePickerSelectDate:function(n){var t,r,i;this.continueBeforeShowDay=!0;t=onlinebookingview;$(".timecontainer").hide();$(".displaydate").html(moment(n).format("DD MMMM YYYY"));r=t.selectedservice.get("Title");curr_day=new Date(n).getDay();selectdatum=$.datepicker.formatDate("yy-mm-dd",new Date(n));t.selecteddate=new Date(n);i=_thisview.getAllresTimes(selectdatum,curr_day,t.selecteddate);onlinebookingview.resourcePossibleTimes=_thisview.selectedresource!=null?i[_thisview.selectedresource.resourceid]:i[0];$("#datepicker").datepicker("refresh");$("#datepicker .Open").length==0||$("#timepicker").html("");$("#btnReserve").addClass("selectbutton-disabled");$(".ui-timepicker .ui-state-active").removeClass();onlinebookingview.resourcePossibleTimes.length>0?(onlinebookingview.AllResourceAvailableTimes=i,onlinebookingview.renderTimePicker()):$("#btnReserve").addClass("selectbutton-disabled")},getMonthAppointments:function(n,t){var r=moment([n,t-1]),u=moment(r).endOf("month"),i=new Appointments;i.url="/api/onlineBook/Appointments";i.fetch({data:"companyid="+tenantid+"&month="+t+"&year="+n}).done(function(){_thisview.MonthAppointments=i;gNewGoogleImplemation?_.each(_thisview.AvailableResources,function(n){n.GoogleAccountRegistered&&_thisview.AddGoogleEventsNEW(r,u,n,i)}):_.each(_thisview.AvailableResources,function(n){n.GoogleCalendarUrl!=""&&n.GoogleCalendarUrl!=null&&n.GoogleCalendarUrl.indexOf("https://www.google.com")!=-1&&_thisview.AddGoogleEvents(r,u,n,i,n.GoogleCalendarUrl)});_thisview.$("#datepicker").show();$(".ui-datepicker-calendar a:first-child:nth(0)").trigger("click")})},AddGoogleEventsNEW:function(n,t,i,r){var u=i.resourceid,f={resourceId:u,FilterStartDate:n.toISOString(),FilterEndDate:t.toISOString()};$.ajax({type:"GET",url:"/api/GoogleCalendarApi/GetGoogleEventsForResource",data:f,success:function(n){r.add(n)},error:function(){}})},AddGoogleEvents:function(n,t,i,r,u){var s=this,f=[],e={"start-min":n.toISOString(),"start-max":t.toISOString(),singleevents:!0,"max-results":9999,q:"-SARA"},o=u;$.ajax({url:o+"?alt=json-in-script&callback=?",dataType:"json",async:!1,data:e,error:function(){return!1}}).fail(function(){return!1}).done(function(n){if(n.feed.entry)return $.each(n.feed.entry,function(n,t){var h=t.summary.$t,e,u;dateparts=h.split(" ");e={Jan:"01",Feb:"02",Mrt:"03",Apr:"04",Mei:"05",Jun:"06",Jul:"07",Aug:"08",Sep:"09",Okt:"10",Nov:"11",Dec:"12"};try{var o=dateparts[4],s=e[dateparts[3]],r=dateparts[2].replace(".","");r=r.length==1?"0"+r:r;var c=dateparts[5],l=dateparts[7].substring(0,5),a=o+"-"+s+"-"+r+"T"+c,v=o+"-"+s+"-"+r+"T"+l}catch(y){return}u="";$.each(t.link,function(){this.type=="text/html"&&(u=this.href)});f.push({title:"[Google] "+t.title.$t,url:u,start:a,end:v,resourceId:i.resourceid,className:"googleEvents",AppointmentType:"TimeOff",editable:!1})}),_.each(f,function(n){r.add(n)}),$(".ui-datepicker-calendar a:first-child:nth(0)").trigger("click"),!0}).always(function(){})},datePickerShowDay:function(n){var t,r,f,i,u;if(this.continueBeforeShowDay){t=null;this.selectedresource&&(t=JSON.parse(this.selectedresource.workhours));r=n.getDay();datum=$.datepicker.formatDate("mm/dd/yy",n);f=!1;selectdatum=$.datepicker.formatDate("yy-mm-dd",n);i=_thisview.getAllresTimes(selectdatum,r,n);u=_thisview.selectedresource!=null?i[_thisview.selectedresource.resourceid]:i[0];switch(u.length){case 2:return[!0,"Open TwoSlotsFree"];case 1:return[!0,"Open OneSlotFree"];case 0:return[!0,"NoneSlotsFree"];default:return[!0,"Open"]}}else return[!0,"Open"]},renderTimePicker:function(){$("#timepicker").html("");$("#messagetijden").html("");thisview=this;this.possibletimes=new PossibleTimes({timeslots:thisview.resourcePossibleTimes,Alltimeslots:thisview.AllResourceAvailableTimes,selectedresource:thisview.selectedresource,selectedservice:thisview.selectedservice,selectedservices:thisview.selectedservices});this.$("#timepicker").html("");this.$("#timepicker").html(this.possibletimes.render().el);this.$("#timepickerheader").show()},reserve:function(n){$(n.target).hasClass("selectbutton-disabled")||this.possibletimes.reserve()},displayError:function(n){if(dialogcontainer=$("<div id='errormessagebox'><\/div>"),dialogcontainer.dialog({modal:!0,autoOpen:!1,show:"shake",buttons:[{text:"akkoord","class":"greenbutton",click:function(){dialogcontainer.dialog("destroy")}}]}),n.ModelState){var t="";_.each(n.ModelState,function(n){t+="<li>"+n+"<\/li>"});dialogcontainer.html(t);dialogcontainer.dialog("open");return}if(n.Message){dialogcontainer.html(n.Message);dialogcontainer.dialog("open");return}if(n.ExceptionMessage){dialogcontainer.html("exception: "+n.ExceptionMessage);dialogcontainer.dialog("open");return}},getAllresTimes:function(n,t,i){var r,u;return AllResTime={},_thisview=this,_.each(this.AvailableResources,function(r){dayappointments=_thisview.MonthAppointments.getDayByResource(n,r.resourceid);AllResTime[r.resourceid]=_thisview.getPossibleTimes(dayappointments,r,t,i)}),r=[],_.each(AllResTime,function(n){_.each(n,function(n){r.push(n)})}),r.sort(function(n,t){return new Date("1970/01/01 "+n)-new Date("1970/01/01 "+t)}),u=_.unique(r),AllResTime[0]=u,AllResTime},getPossibleTimes:function(n,t,i,r){var c,e,o,s,rt,v,u,y,p,w,b,k,h,ut,ft;onlinebookingview.initchecktool();BusinessInfo=app.appsettings.get("BusinessInfo");gAgendaOpeningTime?(this.businessopen=app.appsettings.get("AgendaBeginTime"),this.businessclosed=app.appsettings.get("AgendaEndTime")):(this.businessopen=JSON.parse(app.appsettings.get("Businesshours"))[i][0],this.businessclosed=JSON.parse(app.appsettings.get("Businesshours"))[i][1]);ToolsCapacity=parseInt(ToolsArray[t.Tool]);c=[];thisview=onlinebookingview;var f=JSON.parse(t.workhours),l=!1,nt=moment(r).format("YYYY-MM-DD"),a=moment(new Date).format("YYYY-MM-DD");if(nt==a)if(minimalbookingtime=parseInt(app.appsettings.get("MinimalBookingTime")),(minimalbookingtime==""||minimalbookingtime==0||minimalbookingtime==undefined)&&(minimalbookingtime=2),timenow=new Date,timenow.addHours(minimalbookingtime),timenowdate=moment(timenow).format("YYYY-MM-DD"),timenowdate==a){l=!0;var e=0,tt=thisview.getTimeSlotIndex(timenow.getHours()+":"+timenow.getMinutes()),it=thisview.getTimeSlotIndex(f[i][0][0]);e=it<=tt?thisview.getTimeSlotIndex(timenow.getHours()+":"+timenow.getMinutes()):thisview.getTimeSlotIndex(f[i][0][0]);o=thisview.getTimeSlotIndex(f[i][0][1])}else l=!0,o=thisview.getTimeSlotIndex(f[i][0][1]),e=o;else e=thisview.getTimeSlotIndex(f[i][0][0]),o=thisview.getTimeSlotIndex(f[i][0][1]);for(s=[],rt=1,s.push({}),v=thisview.getTimeSlotIndex(thisview.businessclosed),u=0;u<v;u++)s[u]="unavailable";for(j=e;j<o;j++)s[j]="Free";for(y=f[i].length,u=1;u<y;u++)if(f[i][u][0]!=""&&f[i][u][0]!="Gesloten"&&f[i][u][1]!=""&&f[i][u][1]!="Gesloten")for(p=f[i][u][0],w=f[i][u][1],e=thisview.getTimeSlotIndex(_thisview.timeToFloat(p)),o=thisview.getTimeSlotIndex(_thisview.timeToFloat(w)),j=e;j<o;j++)s[j]="Free";b=n.filter(function(n){return n.get("resourceId")===t.resourceid&&n.get("AppointmentType")=="TimeOn"});_.each(b,function(n){var i,r,t;for(startdatum=n.get("start").split("T")[1],enddatum=n.get("end").split("T")[1],i=l?e:thisview.getTimeSlotIndex(startdatum),r=thisview.getTimeSlotIndex(enddatum),t=i;t<r;t++)s[t]="Free"});k=n.filter(function(n){return n.get("resourceId")===t.resourceid&&n.get("AppointmentType")!=="TimeOn"&&n.get("AppointmentType")!=="AddedService"&&n.get("AppointmentType")!=="Returned"});_.each(k,function(n){var i,r,t;for(startdatum=n.get("start").split("T")[1],enddatum=n.get("end").split("T")[1],startdatum=moment(n.get("start")).format("HH:mm"),enddatum=moment(n.get("end")).format("HH:mm"),i=thisview.getTimeSlotIndex(startdatum),r=thisview.getTimeSlotIndex(enddatum),t=i;t<r;t++)s[t]="Booked"});onlinebookingview.timestepsize;h=this.totalduration/this.timestepsize;Tool=t.Tool;Tool==null&&(Tool="Geen tool");ut=t.resourcename;onlinebookingview.checkfortools;s.push("unavailable");var d=[],u=0,g=0;return _.each(s,function(n,t){n=="Free"?(u==0&&(g=t),u++):(n=="unavailable"||n=="Booked"||n=="ToolInUse")&&u>0&&(h<=u&&d.push({type:n,timeslotstart:g,length:u}),u=0)}),ft="timeslot-free",_.each(d,function(n){for(var f=app.appsettings.get("TakeDurationSteps"),i=0;i<=n.length-h;){var e=n.timeslotstart+i,r=onlinebookingview.timeToFloat(onlinebookingview.businessopen)+e*onlinebookingview.timestepsize/60,u=Math.floor(r),t=Math.round((r-u)*60);t=t.toString()=="0"?"00":t.toString();t=t.toString()=="5"?"05":t.toString();c.push(u+":"+t);f?i=i+h:i++}}),c},initchecktool:function(){var t,n;if(ToolsArray=[],app.appsettings.get("ToolsCapacity")!=null)try{for(t=JSON.parse(app.appsettings.get("ToolsCapacity")),n=0;n<t.length;n++)ToolsArray[t[n].devicename]=t[n].quantity;onlinebookingview.checkfortools=!0}catch(i){ToolsArray.notool="0";onlinebookingview.checkfortools=!1}else ToolsArray.notool="0",onlinebookingview.checkfortools=!1},CheckToolAvailabilty:function(n,t,i,r){var f=thisview.businessopen+":00",h=onlinebookingview.timestepsize.toString()=="5"?"05":onlinebookingview.timestepsize.toString(),l="00:"+h+":00",u,e,o,s;for(j=0;j<t;j++)if(u=Math.abs(toSeconds(f)+toSeconds(l)),e=[Math.floor(u/3600),Math.floor(u%3600/60),u%60],c=e.map(function(n){return n<10?"0"+n:n}).join(":"),o=_thisview.MonthAppointments,i!=null&&i!="")s=o.filter(function(n){return f>=n.get("start").split("T")[1]&&c<=n.get("end").split("T")[1]&&n.get("Tool")==i&&n.get("resourceId")!=r&&n.get("AppointmentType")=="Appointment"}),s.length>=ToolsCapacity&&(n[j]="ToolInUse"),f=c;else return;return},getCookie:function(n){for(var r=n+"=",u=document.cookie.split(";"),i,t=0;t<u.length;t++)if(i=u[t].trim(),i.indexOf(r)==0)return i.substring(r.length,i.length);return""},storeclosed:function(n){return daynr=n.getDay(n),daynr==0?!0:void 0},timeToFloat:function(n){var t,r,u,i,f=[":","."],e;if(parseInt(n,10)===n||parseFloat(n)===n)t=n;else for(n=n.toString(),e=f.length,i=0;i<e;i=i+1)u=f[i],n.indexOf(u)>0&&(r=n.split(u),t=parseInt(r[0],10)+parseInt(r[1],10)/60,n.indexOf("p")>0&&t<=12&&(t=t+12));return t},getTimeSlotIndex:function(n){var t=this,i=t.timeToFloat(this.businessopen),r=onlinebookingview.timestepsize/60;return n=t.timeToFloat(n),Math.round((n-i)/r)},addMinutes:function(n,t){return new Date(n.getTime()+t*6e4)}});var PossibleTimes,AppointmentAsArray=[],AppointmentsLastTimeSlots=[],workingtimeblocks=[],FoundApplianceAppointments=[],duobookingfound=!1,SpecificBookingDate=[],ActieStartDate="",ActieEndDate="",BookableStartDate="",BookableEndDate="",gOnlineBookingViewVersion="27062023";window.OnlineBookingView=Backbone.View.extend({id:"SelfServicePage",selectedservices:null,totalduration:0,totalprice:0,_servicescollection:[],timeslotbuttonObjects:[],weekday:new Array(7),businessopen:"",businessclosed:"",selectedresourceindex:-1,availablityitems:null,response:null,AvailableResources:{},AvailableBydate:{},selectedresource:null,selectedservice:null,BusinessHours:null,resourcePossibleTimes:null,AllResourceAvailableTimes:null,possibletimes:null,rendered2:!1,VATHigh:0,VATLow:0,continueBeforeShowDay:!0,servicesChildview:null,InitialfetchedAppointments:!1,monthfetched:null,initdatepicker:!1,foundresources:[],timestepsize:5,template:_.template($("#OnlineBookingTemplate").html()),resourceworkdays:[],resourceTimeOffDates:[],ShowOnlyPlanner:!1,initialize:function(){this.selectedservices=new Services;onlinebookingview=this;_SelfserviceBookingView=this;this.weekday[0]="Zondag";this.weekday[1]="Maandag";this.weekday[2]="Dinsdag";this.weekday[3]="Woensdag";this.weekday[4]="Donderdag";this.weekday[5]="vrijdag";this.weekday[6]="Zaterdag";this.BusinessHours=app.appsettings.get("BusinessHours");this.VATHigh=app.appsettings.get("VATHigh");this.VATLow=app.appsettings.get("VATLow");localStorage.removeItem("AddedProducts")},events:{"change #selectresource":"changeSelectResource","click #btnSelecttime":"renderTimePicker","click #btnReserve":"reserve","click #btnWaitList":"btnwaitlist","click #SelectedService":"ShowServices","click #btnBackButton":"PreviousStep","click .servicetopnav":"NextStep","click #btnNextButton":"NextStep","click #shoppingcartbtn, .shoppingcartheader":"ShowShoppingCart","click #btnMoveAppointments":"MoveAppointments"},render:function(){var n,t;return $(this.el).html(this.template()),$(".button",$(this.el)).button(),$.support.placeholder&&$("label",$(this.el)).hide(),this.renderDatePicker(),this.$("#datepicker").hide(),n=getParameterByName("AppId"),n!=""&&this.RenderShowOnlyPlanner("VERPLAATS AFSPRAAK"),t=getParameterByName("sId"),t!=""&&this.RenderShowOnlyPlanner("PLAN AFSPRAAK"),$(".logininfoContainer").is(":visible")&&(this.$(".servicetopnav").css("top","40px"),this.$(".plannertopnav").css("top","40px")),this},RenderShowOnlyPlanner:function(n){this.ShowOnlyPlanner=!0;this.ShowOnlyPlanner&&(this.$(".Col1").hide(),this.$(".Col2").show(),largescreen&&this.$(".Col2").addClass("ShowOnlyPlanner"),this.$(".plannertopnav").html('<h1 class="themebg" id="DateTimeHeader">'+n+"<\/h1>"))},renderDatePicker:function(){this.$("#selectresource").show();this.$("#datepicker").empty();this.$("#datepicker").datepicker("destroy");var n=0;gStartMondayCalendar&&(n=1);this.$("#datepicker").datepicker({showWeek:!1,prevText:"<i title='' class='fa fa-arrow-left 1x datepickerarrows'><\/i>",nextText:"<i title='' class='fa fa-arrow-right 1x datepickerarrows'><\/i>",gotoCurrent:!0,maxDate:gMaxMonthsAhead,minDate:"0d",firstDay:n,onSelect:onlinebookingview.datePickerSelectDate,onChangeMonthYear:onlinebookingview.getMonthAppointments,beforeShowDay:onlinebookingview.datePickerShowDay});$.datepicker.setDefaults($.datepicker.regional.nl);this.$("#datepicker").prepend("<h1 class='plannerheader'><i class='fa fa-calendar'><\/i> Kies datum<\/h1>")},datePickerShowDay:function(n){var s=this,f,r,u,t,e,o,i;if(this.continueBeforeShowDay){if(f=null,this.selectedresource&&(f=JSON.parse(this.selectedresource.workhours)),r=n.getDay(),datum=$.datepicker.formatDate("mm/dd/yy",n),selectdatum=$.datepicker.formatDate("yy-mm-dd",n),onlinebookingview.IsSpecificDatesBookable(onlinebookingview.selectedservices.models,selectdatum))return[!0,"NoneSlotsFree "];if(u="",onlinebookingview.IsDiscountDate(onlinebookingview.selectedservices.models,selectdatum)&&(u=" ActionPriceDate"),gCheckDayOff&&onlinebookingview.IsResourceDayOff(selectdatum))return[!0,"NoneSlotsFree SlotDAYOFF"];if(t=onlinebookingview.getAllresTimes(selectdatum,r,n),e=gDuoBooking?onlinebookingview.SearchPropertyFromServiceItems("DuoBooking")?onlinebookingview.GetPossibleTimesArrayForDuoBooking(t,!1):onlinebookingview.selectedresource!=null?t[onlinebookingview.selectedresource.id]:t[0]:onlinebookingview.selectedresource!=null?t[onlinebookingview.selectedresource.id]:t[0],gSpecificDaysBooking&&(o=onlinebookingview.CheckIfDayBookable(r),o==!1))return[!0,"NoneSlotsFree"];switch(e.length){case 2:return[!0,"Open TwoSlotsFree"];case 1:return[!0,"Open OneSlotFree"];case 0:return i=[!0,"NoneSlotsFree "],gWaitList&&(gFixWaitList==!1?onlinebookingview.WaitListAvailable(onlinebookingview.selectedresource,n)&&(i=[!0,"NoneSlotsFree WaitListSlot"]):onlinebookingview.selectedresource==undefined||onlinebookingview.selectedresource==null?onlinebookingview.WaitListAvailableAllResources(r,onlinebookingview.selectedresource,n)==!0&&(i=[!0,"NoneSlotsFree WaitListSlot"]):onlinebookingview.WaitListAvailableSelectedResource(onlinebookingview.selectedresource,n)&&(i=[!0,"NoneSlotsFree WaitListSlot"])),i;default:return[!0,"Open"+u]}}else return[!0,"Open"+u]},datePickerSelectDate:function(n){var t,i;if(onlinebookingview.$("#datepicker").show(),this.continueBeforeShowDay=!0,t=onlinebookingview,$(".timecontainer").hide(),i=t.selectedservice.get("Title"),curr_day=new Date(n).getDay(),selectdatum=$.datepicker.formatDate("yy-mm-dd",new Date(n)),t.selecteddate=new Date(n),$("#MoveAppointmentContainer").hide(),onlinebookingview.IsResourceDayOff(selectdatum)){$("#timepicker").html("");$("#btnReserve").addClass("selectbutton-disabled");$("#RegisterWaitList").hide();return}if(AllresTimes=onlinebookingview.getAllresTimes(selectdatum,curr_day,t.selecteddate),onlinebookingview.resourcePossibleTimes=_thisview.selectedresource!=null?AllresTimes[_thisview.selectedresource.id]:AllresTimes[0],gDuoBooking&&onlinebookingview.SearchPropertyFromServiceItems("DuoBooking")&&(onlinebookingview.resourcePossibleTimes=onlinebookingview.GetPossibleTimesArrayForDuoBooking(AllresTimes,!0)),$("#datepicker").datepicker("refresh"),$("#datepicker .Open").length==0?$("#timepicker").html("<div class='FullyBooked'>Deze maand volgeboekt<\/div>"):$("#timepicker").html(""),$("#btnReserve").addClass("selectbutton-disabled"),$("#timepicker").html(""),$(".ui-timepicker .ui-state-active").removeClass(),$("#RegisterWaitList").hide(),onlinebookingview.IsSpecificDatesBookable(onlinebookingview.selectedservices.models,t.selecteddate)){$("#timepicker").html("");return}onlinebookingview.resourcePossibleTimes.length>0?(onlinebookingview.AllResourceAvailableTimes=AllresTimes,onlinebookingview.renderTimePicker(),$("#timepicker").show(),gWaitList&&$("#RegisterWaitList").hide(),gSpecificDaysBooking&&onlinebookingview.CheckIfDayBookable(curr_day)==!1&&($("#timepicker").html(""),$("#RegisterWaitList").hide())):($("#timepicker").html(""),gWaitList&&(gFixWaitList==!1?onlinebookingview.WaitListAvailable(t.selectedresource,new Date(n))&&($("#timepicker").html(""),$("#RegisterWaitList").show()):$(".ui-datepicker-current-day").hasClass("WaitListSlot")&&($("#timepicker").html(""),$("#RegisterWaitList").show())),gSpecificDaysBooking&&onlinebookingview.CheckIfDayBookable(curr_day)==!1&&($("#timepicker").html(""),$("#RegisterWaitList").hide()),$("#btnReserve").addClass("selectbutton-disabled"))},renderTimePicker:function(){$("#timepicker").html("");$("#messagetijden").html("");thisview=this;this.possibletimes=new PossibleTimes({timeslots:thisview.resourcePossibleTimes,Alltimeslots:thisview.AllResourceAvailableTimes,selectedresource:thisview.selectedresource,selectedservice:thisview.selectedservice,selectedservices:thisview.selectedservices,parent:thisview});this.$("#timepicker").html("");this.$("#timepicker").html(this.possibletimes.render().el);this.$("#timepickerheader").show()},RefreshTImes:function(){var i=this,n=$("#datepicker").datepicker("getDate"),u=n.getDay(),r=n.getMonth()+1,f=n.getFullYear(),e,t;datum=$.datepicker.formatDate("mm/dd/yy",n);e=!1;selectdatum=$.datepicker.formatDate("yy-mm-dd",n);t=new Appointments;t.url="/api/onlineBook/appointmentsgoogle";t.fetch({data:"companyid="+tenantid+"&month="+r+"&year="+f+"&google=true"}).done(function(){onlinebookingview.MonthAppointments=t;onlinebookingview.monthfetched=r;onlinebookingview.InitialfetchedAppointments=!0;var f=onlinebookingview.getAllresTimes(selectdatum,u,n);onlinebookingview.resourcePossibleTimes=i.selectedresource!=null?f[i.selectedresource.resourceid]:f[0];onlinebookingview.AllResourceAvailableTimes=f;onlinebookingview.renderTimePicker()})},ShowShoppingCart:function(){var n=$("#FooterServices").position().top-380;$("#shoppingcartplaceholder").css({top:n});$("#shoppingcartplaceholder").toggle("slide");gHideDuration&&$(".durationservice").hide()},IsDiscountDate:function(n,t){try{var i=!1;_.each(n,function(n){if(n._ExtraProperties.DiscountPriceSwitch!=undefined&&n._ExtraProperties.DiscountPriceSwitch){var r=n._ExtraProperties.DiscountPriceStart,u=n._ExtraProperties.DiscountPriceEnd,f=n._ExtraProperties.DiscountPrice;if(f!==undefined&&f!==""){if(r!==undefined&&r!==""&&u!==undefined&&u!==""){var e=moment(t),o=moment(r,"DD-MM-YYYY"),s=moment(u,"DD-MM-YYYY");e>=o&&e<=s&&(i=!0)}}else i=!1}})}catch(r){return i}return i},IsSpecificDatesBookable:function(n,t){try{var i=!1;_.each(n,function(n){if(n._ExtraProperties.SpecificPeriodeDatesSwitch){var r=n._ExtraProperties.bookableDateStart,u=n._ExtraProperties.bookableDateEnd,s=n._ExtraProperties.bookableActionPrice;if(r!==undefined&&r!==""&&u!==undefined&&u!==""){var f=moment(t),e=moment(r,"DD-MM-YYYY"),o=moment(u,"DD-MM-YYYY");(f>=e&&f<=o)==!1&&(i=!0)}}})}catch(r){return i}return i},ShowServices:function(){$("#SelectedService").hide();this.servicesChildview==null&&this.renderServiceList(app.ResourceServicesList);$("#placeholderServicesList").slideDown(200)},renderServiceList:function(n){var i=this,h=$("#filtersDropDown").val(),u=Category,r,t,o,s,f,e;u!="nvt"&&u!=""&&(n=n.byCategory(u));r=getParameterByName("CategoryId");r!="nvt"&&r!=""&&(n=n.byCategoryId(r));t=getParameterByName("sId");t!=""&&(n=n.byServiceId(t),o=n.first(),s=o.get("Title"),this.$("#DateTimeHeader").html("PLAN AFSPRAAK : "+s));f=getParameterByName("filterOnServices");f!=""&&(n=n.FilterServices(f));e=getParameterByName("FilterCategory");e!=""&&(n=n.FilterCategory(e));this.servicesChildview=new ServicesList({collection:n});i.servicesChildview.onlinebooking=!0;i.servicesChildview.parent=i;n.length>0?this.$("#placeholderServicesList").html(i.servicesChildview.render().el):this.$("#placeholderServicesList").html("<div class='InfoMessage'> "+LanguageDefault.HelpNoServicesFound+"<\/div>");t!=""&&$("#"+t).click();gHideDuration&&(this.$(".durationlabel").hide(),this.$("#totalservicestime").hide(),this.$(".durationservice").hide())},getDynamicResourcesforService:function(){var t;onlinebookingview.AvailableResources=[];t=[];onlinebookingview.foundresources=[];var i=onlinebookingview.selectedservices.toJSON(),n=jQuery.grep(i,function(n){return n.linked==!1}),r=n.length;_.each(_thisapp.BookableResources.models,function(t){var i=0,u=null,f=0,e=jQuery.grep(_thisapp.ResourceServicesListJSON,function(n){return n.ResourceId==t.id});_.each(n,function(n){u=jQuery.grep(e,function(t){return t.ServiceId==n.Id});u.length>0&&(i++,f=t.id)});i==r&&(onlinebookingview.AvailableResources[f]=t.toJSON(),onlinebookingview.foundresources.push(t.toJSON()))});this.AvailableResources.length==0?($("#ui-message").html('<div id="ErrorMessage" >Deze combinatie diensten kan niet geboekt worden maak een andere keuze. Of neem contact met ons op.<\/div>'),$(".timepickercontainer").hide(),$("#datepicker").hide(),$("#btnReserve").addClass("selectbutton-disabled")):($("#ui-message").html(""),gShowResourcesAsList?($("#datepicker").hide(),$(".timepickercontainer").hide()):($(".timepickercontainer").show(),$("#datepicker").show()),$(".selectbutton").addClass("selectbutton-disabled"));this.renderDynamicSelectResources(this.AvailableResources);gWaitList&&(this.init_resourceworkweek(),this.init_resourceworkweek2())},renderDynamicSelectResources:function(n){gShowResourcesAsList?this.renderDynamicSelectResourcesList(n):this.renderDynamicSelectResourcesDropdown(n)},renderDynamicSelectResourcesList:function(n){var t,i,r;gShowNoPreference=!1;gShowNoPreference=GeenVoorkeuroptieNietTonen?!0:onlinebookingview.foundresources.length==1?!0:!1;t=n.slice(0);t.sort(function(n,t){return n.AgendaOrder-t.AgendaOrder});i=new ResourcesListView({collection:t,parent:this});gDuoBooking&&onlinebookingview.SearchPropertyFromServiceItems("DuoBooking")&&(LanguageDefault.ResourceSelection="Kies 2 medewerkers",i=new ResourcesListViewDuoBooking({collection:t,parent:this}));i.parent=this;r=$("<div id='selectresource-container'><\/div>");r.append("<h1 class='plannerheader' id='selectresource-header'><i class='fa fa-user-plus 1x'><\/i>&nbsp;"+LanguageDefault.ResourceSelection+"<\/h1> ");r.append(i.render().el);$("#selectresource").html(r);gSelectServicesAndResources?this.SetSelectedResources():(largescreen||this.ShowOnlyPlanner)&&tenantid!=6862&&$("#resourceslist dd:first").trigger("click");gDuoBooking&&(onlinebookingview.SearchPropertyFromServiceItems("DuoBooking")?($("#selectresource").show(),duobookingfound=!0):duobookingfound=!1);gExtrasettings.HideResources&&$("#selectresource").hide()},SetSelectedResources:function(){try{var n=getParameterByName("r").split(",");_.each(n,function(n){var t=$("dd[data-resourceid="+n+"]");$("dd[data-resourceid="+n+"]").click()});gSelectServicesAndResources=!1}catch(t){gSelectServicesAndResources=!1}},changeSelectedResource:function(n){onlinebookingview.selectedresource=onlinebookingview.AvailableResources[n];$("#timeslotscontainer").hide();now=new Date($("#datepicker").datepicker("getDate"));$("#datepicker").hide();var t=now.getMonth()+1,i=now.getFullYear();t==onlinebookingview.monthfetched?(gCheckDayOff&&(onlinebookingview.resourceTimeOffDates=onlinebookingview.getResourceTimeOffEvents(i,t)),$(".ui-datepicker-calendar a:first-child:nth(0)").trigger("click")):onlinebookingview.getMonthAppointments(i,t,1)},FindAppliancesAppointments:function(){FoundApplianceAppointments=[];var n="";_.each(app.onlinebookingview.selectedservices.models,function(t){if(t.get("Color")!=null&&t.get("Color")!="")return n=t.get("Color"),!1});n!=""&&(FoundApplianceAppointments=onlinebookingview.MonthAppointments.getDayByRoom(selectdatum,n))},FindAppliancesAppointmentsV2:function(){var t,n;try{t=this;FoundApplianceAppointments=[];n=[];_.each(app.onlinebookingview.selectedservices.models,function(t){var i=_.where(_thisapp.AppliancesList,{ServiceId:t.get("Id")}),r;i.length>0&&(r=_.where(_thisapp.AppliancesList,{ResourceId:i[0].ResourceId}),_.each(r,function(t){n.push(t.ServiceId)}))});FoundApplianceAppointments=onlinebookingview.MonthAppointments.getDayByServiceIds(selectdatum,n)}catch(i){}},getAllresTimes:function(n,t,i){var r,u;return AllResTime={},_thisview=this,gCheckForRoom&&this.FindAppliancesAppointments(),_.each(this.AvailableResources,function(r){dayappointments=onlinebookingview.MonthAppointments.getDayByResource(n,r.id);AllResTime[r.id]=gNewTimeslotsystem?onlinebookingview.getPossibleTimes2(dayappointments,r,t,i):onlinebookingview.getPossibleTimes(dayappointments,r,t,i)}),r=[],_.each(AllResTime,function(n){_.each(n,function(n){r.push(n)})}),r.sort(function(n,t){return new Date("1970/01/01 "+n)-new Date("1970/01/01 "+t)}),u=_.unique(r),AllResTime[0]=u,AllResTime},getPossibleTimes2:function(n,t,i,r){var f,u,e;return BusinessInfo=app.appsettings.get("BusinessInfo"),gAgendaOpeningTime?(this.businessopen=app.appsettings.get("AgendaBeginTime"),this.businessclosed=app.appsettings.get("AgendaEndTime"),gFixStartSchedule&&(this.businessopen="00:00"),this.businessclosed="23:55"):(this.businessopen=JSON.parse(app.appsettings.get("Businesshours"))[i][0],this.businessclosed="23:55"),f=[],this.CreateArrayAgendaNEW3(f,n,t,i,r),u=[],gExtrasettings.ShowOnlyJoiningTimesSlot?gFIXaansluitend?n.length==0?this.FindTimeSlotsInWorkingTime(f,u,!1):this.FindAansluitendeTimeslots(f,u,!0):(this.FindAansluitendeTimeslots(f,u,!0),tenantid==5917||tenantid==7966||tenantid==6854?this.FindTimeSlotsInWorkingTime(f,u,!1):u.length==0&&this.FindTimeSlotsInWorkingTime(f,u,!1)):this.FindTimeslotsInFreeblocks(f,u,!1),u=_.unique(u),e="",e=gCheckPartDay?gPartOfDay:this.CheckParyOfDay(),e!=""&&(u=this.FilterOnPartOfDay(u,e)),gCheckForRoomv2&&this.FindAppointmentsWithAppliances(u,t),u},minuteValue:function(n){return n=n.split(":"),n[0]*60+n[1]*1},FindAppointmentsWithAppliances:function(n,t){var r,i;try{r=this;FoundApplianceAppointments=[];FoundApplianceIds=[];i=[];_.each(app.onlinebookingview.selectedservices.models,function(u){var f=_.where(_thisapp.AppliancesList,{ServiceId:u.get("Id")}),e,o,s;f.length>0&&(FoundApplianceIds.push(f[0].ResourceId),e=_.where(_thisapp.AppliancesList,{ResourceId:f[0].ResourceId}),_.each(e,function(n){i.push(n.ServiceId)}),FoundApplianceAppointments=onlinebookingview.MonthAppointments.getDayByServiceIds(selectdatum,i,t.id),o=_thisapp.ApplianceCollection,s=o.get(FoundApplianceIds).get("AgendaOrder"),r.CheckIfOverlapping(n,FoundApplianceAppointments,s))})}catch(u){}},CheckIfOverlapping:function(n,t,i){var u=n.slice(),r;i==0&&(i=1);r=this;try{_.each(u,function(u){var f=0,o=u,e;start_newappointmenttime=r.minuteValue(o);end_newappointmenttime=start_newappointmenttime+r.totalduration;_.each(t.models,function(n){startdatum=n.get("start").split("T")[1];enddatum=n.get("end").split("T")[1];start_appointmenttime=r.minuteValue(startdatum);end_appointmenttime=r.minuteValue(enddatum);start_newappointmenttime<end_appointmenttime&&start_appointmenttime<end_newappointmenttime&&f++});f>=i&&(e=n.indexOf(u),n.splice(e,1))})}catch(f){}},CheckIfOverlappingOLD:function(n,t){var o=new window.Event(n),s=this.collection.filter(function(n){return n.get("Status")!=="Cancelled"&&n.get("Service").indexOf(t)!=0}),i=new window.Events(s),u,f,e,r;for(i.add(o),i=i.toJSON(),u=i[0],e=!1,r=1;r<i.length;r++)if(u=i[r-1],f=i[r],typeof f.id=="undefined"||typeof u.id=="undefined"){if(this.minuteValue(moment(u.end.replace("T"," ")).format("HH:mm"))>this.minuteValue(moment(f.start.replace("T"," ")).format("HH:mm"))){e=!0;break}}else continue;return e},CreateArrayAgendaNEW2:function(n,t,i,r,u){var y,g,h,a,e,o,s,p,nt,tt,c,l,k,v,f,d;for(thisview=onlinebookingview,y=!1,g=1,n.push({}),h=thisview.getTimeSlotIndex(thisview.businessclosed),f=0;f<h;f++)n[f]=1;a=/\d\d[:]\d\d/;e=this.GetWorkHours(u,i);gSpecificAvailability&&(resourceid=i.id,e=_thisview.ConvertWorkingStringHoursToArray(e,r,resourceid,t));try{o=thisview.getTimeSlotIndex(e[r][0][0]);s=thisview.getTimeSlotIndex(e[r][0][1])}catch(it){o=thisview.getTimeSlotIndex("Werkt niet");s=thisview.getTimeSlotIndex("Werkt niet")}for(workingtimeblocks=[],f=0;f<e[r].length;f++)if(a.test(e[r][f][0])&&a.test(e[r][f][1])){startofperiodetime=e[r][f][0];endofperiodetime=e[r][f][1];try{o=thisview.getTimeSlotIndex(_thisview.timeToFloat(startofperiodetime));s=thisview.getTimeSlotIndex(_thisview.timeToFloat(endofperiodetime));workingtimeblocks.push({start:o,end:s})}catch(rt){}for(j=o;j<s;j++)n[j]=0}p=t.filter(function(n){return n.get("resourceId")===i.id&&n.get("AppointmentType")=="TimeOn"});_.each(p,function(t){var r,u,i;for(startdatum=t.get("start").split("T")[1],enddatum=t.get("end").split("T")[1],r=thisview.getTimeSlotIndex(startdatum),u=thisview.getTimeSlotIndex(enddatum),i=r;i<u;i++)n[i]=0,workingtimeblocks.push({start:r,end:u})});(gCheckForRoom||gCheckForRoomv2)&&_.each(FoundApplianceAppointments.models,function(t){var r,u,i;for(startdatum=t.get("start").split("T")[1],enddatum=t.get("end").split("T")[1],r=thisview.getTimeSlotIndex(startdatum),u=thisview.getTimeSlotIndex(enddatum),i=r;i<u;i++)n[i]=1});nt=moment(u).format("YYYY-MM-DD");tt=moment(new Date).format("YYYY-MM-DD");minimalbookingtime=parseInt(app.appsettings.get("MinimalBookingTime"));minimalbookingtime==""&&minimalbookingtime==undefined&&(minimalbookingtime=2);var c=new Date,w=c.addHours(minimalbookingtime).setHours(0,0,0,0),b=u.setHours(0,0,0,0);if(b<w)for(f=0;f<h;f++)n[f]=1;if(b==w&&(y=!0,c=new Date,l=c.addHours(minimalbookingtime),minimalbookingtime>=0))if(k=l.getHours(),k<=23){if(v=thisview.getTimeSlotIndex(l.getHours()+":"+l.getMinutes()),v>=1)for(f=0;f<v;f++)n[f]=1}else for(f=0;f<h;f++)n[f]=1;return d=t.filter(function(n){return n.get("resourceId")===i.id&&n.get("AppointmentType")!=="TimeOn"&&n.get("AppointmentType")!=="AddedService"&&n.get("AppointmentType")!=="Returned"}),AppointmentsLastTimeSlots=[],(typeof gExtrasettings.JoiningOnTimeslotsType=="undefined"||gExtrasettings.JoiningOnTimeslotsType=="0")&&_.each(workingtimeblocks,function(n){n.end-AppointmentAsArray.length>0&&AppointmentsLastTimeSlots.push(n.end-AppointmentAsArray.length);AppointmentsLastTimeSlots.push(n.start);AppointmentsLastTimeSlots.push(n.end)}),_.each(d,function(t){var i,u,r;for(startdatum=t.get("start").split("T")[1],enddatum=t.get("end").split("T")[1],startdatum=moment(t.get("start")).format("HH:mm"),enddatum=moment(t.get("end")).format("HH:mm"),i=thisview.getTimeSlotIndex(startdatum),u=thisview.getTimeSlotIndex(enddatum),AppointmentAsArray.indexOf(0)!=-1?i-AppointmentAsArray.indexOf(0)>0&&AppointmentsLastTimeSlots.push(i-AppointmentAsArray.indexOf(0)):i-AppointmentAsArray.length>0&&AppointmentsLastTimeSlots.push(i-AppointmentAsArray.length),AppointmentsLastTimeSlots.push(u),r=i;r<u;r++)n[r]=1}),AppointmentsLastTimeSlots.push(n.length),n.push(1),n},CreateArrayAgendaNEW3:function(n,t,i,r,u){var s,o,f,e;for(thisview=onlinebookingview,s=1,n.push({}),o=thisview.getTimeSlotIndex(thisview.businessclosed),f=0;f<o;f++)n[f]=1;if(e=this.GetWorkHours(u,i),gSpecificAvailability&&(resourceid=i.id,e=_thisview.ConvertWorkingStringHoursToArray(e,r,resourceid,t)),workingtimeblocks=[],this.AddWorkHoursToArray(n,workingtimeblocks,e,r),this.AddTimeOnEventsToArray(n,t,i,workingtimeblocks),this.MinimalBookingTimePossibilty(n,o,u),gGroupBooking){const u=i.Fullname,r=u.match(/(\d+)\s*personen/i);r&&this.CheckIfAvailable(r,t)||this.AddEventsToArray(n,t,i,workingtimeblocks)}else this.AddEventsToArray(n,t,i,workingtimeblocks);return n.push(1),n},CheckIfAvailable:function(n,t){for(var e=!0,u,f,r,i=0;i<t.length;i++)if(t.at(i).get("AppointmentType")==="TimeOff")return!1;if(n&&n[1]){for(u=parseInt(n[1],10),f=0,r=0;r<t.length;r++)t.at(r).get("AppointmentType")!=="TimeOn"&&f++;if(isNaN(u))return console.error("Capaciteit is geen geldig getal."),!1;f>=u&&(e=!1)}return e},AddWorkHoursToArray:function(n,t,r,u){var f,e,o=/\d\d[:]\d\d/;try{f=thisview.getTimeSlotIndex(r[u][0][0]);e=thisview.getTimeSlotIndex(r[u][0][1])}catch(s){f=thisview.getTimeSlotIndex("Werkt niet");e=thisview.getTimeSlotIndex("Werkt niet")}for(i=0;i<r[u].length;i++)if(o.test(r[u][i][0])&&o.test(r[u][i][1])){startofperiodetime=r[u][i][0];endofperiodetime=r[u][i][1];try{f=thisview.getTimeSlotIndex(_thisview.timeToFloat(startofperiodetime));e=thisview.getTimeSlotIndex(_thisview.timeToFloat(endofperiodetime));t.push({start:f,end:e})}catch(h){}for(j=f;j<e;j++)n[j]=0}},AddTimeOnEventsToArray:function(n,t,i,r){var u=t.filter(function(n){return n.get("resourceId")===i.id&&n.get("AppointmentType")=="TimeOn"});_.each(u,function(t){var u,f,i;for(startdatum=t.get("start").split("T")[1],enddatum=t.get("end").split("T")[1],u=thisview.getTimeSlotIndex(startdatum),f=thisview.getTimeSlotIndex(enddatum),i=u;i<f;i++)n[i]=0,r.push({start:u,end:f})})},CheckRooms:function(n){(gCheckForRoom||gCheckForRoomv2)&&_.each(FoundApplianceAppointments.models,function(t){var r,u,i;for(startdatum=t.get("start").split("T")[1],enddatum=t.get("end").split("T")[1],r=thisview.getTimeSlotIndex(startdatum),u=thisview.getTimeSlotIndex(enddatum),i=r;i<u;i++)n[i]=1})},MinimalBookingTimePossibilty:function(n,t,i){var c=moment(i).format("YYYY-MM-DD"),l=moment(new Date).format("YYYY-MM-DD"),u,f,h,e,r;minimalbookingtime=parseInt(app.appsettings.get("MinimalBookingTime"));minimalbookingtime==""&&minimalbookingtime==undefined&&(minimalbookingtime=2);var u=new Date,o=u.addHours(minimalbookingtime).setHours(0,0,0,0),s=i.setHours(0,0,0,0);if(s<o)for(r=0;r<t;r++)n[r]=1;if(s==o&&(TakeMinimalBookingTime=!0,u=new Date,f=u.addHours(minimalbookingtime),minimalbookingtime>=0))if(h=f.getHours(),h<=23){if(e=thisview.getTimeSlotIndex(f.getHours()+":"+f.getMinutes()),e>=1)for(r=0;r<e;r++)n[r]=1}else for(r=0;r<t;r++)n[r]=1},AddEventsToArray:function(n,t,i,r){var u=t.filter(function(n){return n.get("resourceId")===i.id&&n.get("AppointmentType")!=="TimeOn"&&n.get("AppointmentType")!=="AddedService"&&n.get("AppointmentType")!=="Returned"});AppointmentsLastTimeSlots=[];(typeof gExtrasettings.JoiningOnTimeslotsType=="undefined"||gExtrasettings.JoiningOnTimeslotsType=="0")&&_.each(r,function(n){n.end-AppointmentAsArray.length>0&&AppointmentsLastTimeSlots.push(n.end-AppointmentAsArray.length);AppointmentsLastTimeSlots.push(n.start);AppointmentsLastTimeSlots.push(n.end)});_.each(u,function(t){var i,u,r;for(startdatum=t.get("start").split("T")[1],enddatum=t.get("end").split("T")[1],startdatum=moment(t.get("start")).format("HH:mm"),enddatum=moment(t.get("end")).format("HH:mm"),i=thisview.getTimeSlotIndex(startdatum),u=thisview.getTimeSlotIndex(enddatum),AppointmentAsArray.indexOf(0)!=-1?i-AppointmentAsArray.indexOf(0)>0&&AppointmentsLastTimeSlots.push(i-AppointmentAsArray.indexOf(0)):i-AppointmentAsArray.length>0&&AppointmentsLastTimeSlots.push(i-AppointmentAsArray.length),AppointmentsLastTimeSlots.push(u),r=i;r<u;r++)n[r]=1});AppointmentsLastTimeSlots.push(n.length)},FilterOnPartOfDayxxx:function(n,t){var i=n;try{switch(t){case"morning":return n.filter(function(n){return parseInt(n.split(":")[0])<12});case"afternoon":return n.filter(function(n){return parseInt(n.split(":")[0])>=12&&parseInt(n.split(":")[0])<18});case"evening":return n.filter(function(n){return parseInt(n.split(":")[0])>18});default:return n}}catch(r){return n}},FilterOnPartOfDay:function(n,t){var f=n,i=[],r=[],u=[];return t.indexOf("morning")>-1&&(i=n.filter(function(n){return parseInt(n.split(":")[0])<12})),t.indexOf("afternoon")>-1&&(r=n.filter(function(n){return parseInt(n.split(":")[0])>=12&&parseInt(n.split(":")[0])<18})),t.indexOf("evening")>-1&&(u=n.filter(function(n){return parseInt(n.split(":")[0])>=18})),i.concat(r).concat(u)},FindTimeSlots1:function(n,t,i){var v=this.totalduration/this.timestepsize,y=app.appsettings.get("TakeDurationSteps"),e=app.appsettings.get("DefaultStepSize"),r,s,f;e==null&&(e=15);var h=e/5,o=0,c=0;for(i&&(c=AppointmentsLastTimeSlots[o]),r=c;r<=n.length-AppointmentAsArray.length;){for(s=!0,f=0;f<=AppointmentAsArray.length;){if(n[r+f]+AppointmentAsArray[f]==2){s=!1;break}f++}if(s){var l=onlinebookingview.timeToFloat(onlinebookingview.businessopen)+r/12,a=Math.floor(l),u=Math.round((l-a)*60);u=u.toString()=="0"?"00":u.toString();u=u.toString()=="5"?"05":u.toString();t.push(a+":"+u)}i?AppointmentsLastTimeSlots.length>=2?(r=AppointmentsLastTimeSlots[o],o++):r=r+h:r=r+h}},FindTimeSlotsInWorkingTime:function(n,t){var u=this.totalduration/this.timestepsize,f=app.appsettings.get("TakeDurationSteps"),i=app.appsettings.get("DefaultStepSize");i==null&&(i=15);i=30;var r=i/5;_.each(workingtimeblocks,function(i,u){for(var o,e,u=i.start;u<=i.end;){for(o=!0,e=0;e<=AppointmentAsArray.length;){if(n[u+e]+AppointmentAsArray[e]==2){o=!1;break}e++}if(o){var s=onlinebookingview.timeToFloat(onlinebookingview.businessopen)+u/12,h=Math.floor(s),f=Math.round((s-h)*60);f=f.toString()=="0"?"00":f.toString();f=f.toString()=="5"?"05":f.toString();t.push(h+":"+f)}u=u+r}})},FindAansluitendeTimeslots:function(n,t){var u=this.totalduration/this.timestepsize,f=app.appsettings.get("TakeDurationSteps"),i=app.appsettings.get("DefaultStepSize");i==null&&(i=15);var e=i/5,r=0;AppointmentsLastTimeSlots=_.unique(AppointmentsLastTimeSlots);AppointmentsLastTimeSlots.sort(function(n,t){return n-t});r=AppointmentsLastTimeSlots[0];_.each(AppointmentsLastTimeSlots,function(i){for(var f=!0,u=0;u<=AppointmentAsArray.length;){if(n[i+u]+AppointmentAsArray[u]==2){f=!1;break}u++}if(f){var e=onlinebookingview.timeToFloat(onlinebookingview.businessopen)+i/12,o=Math.floor(e),r=Math.round((e-o)*60);r=r.toString()=="0"?"00":r.toString();r=r.toString()=="5"?"05":r.toString();t.push(o+":"+r)}})},FindTimeslotsInFreeblocks:function(n,t){var r=app.appsettings.get("TakeDurationSteps"),i=app.appsettings.get("DefaultStepSize");i==null&&(i=15);var e=i/5,u=this.totalduration/this.timestepsize,f=this.FindFreeBlocks(n,u);_.each(f,function(f,e){for(var l=0,c,s,e=f.timeslotstart;e<=f.timeslotend;){for(c=!0,s=0;s<=AppointmentAsArray.length;){if(n[e+s]+AppointmentAsArray[s]==2){c=!1;break}s++}if(c){var a=onlinebookingview.timeToFloat(onlinebookingview.businessopen)+e/12,h=Math.floor(a),o=Math.round((a-h)*60);o=o.toString()=="0"?"00":o.toString();o=o.toString()=="5"?"05":o.toString();r?t.push(h+":"+o):gTimeStepfix?l==0?t.push(h+":"+o):isInt(o/i)&&t.push(h+":"+o):isInt(o/i)&&t.push(h+":"+o)}r?e=e+u:e++;l++}})},FindFreeBlocks:function(n){var r=[],t=0,i=0;return _.each(n,function(n,u){n==0?(t==0&&(i=u),t++):n==1&&t>0&&(r.push({type:n,timeslotstart:i,timeslotend:i+t,length:t}),t=0)}),r},ConvertWorkingStringHoursToArray:function(n,t,i,r){var l=this,o=[],f,u;try{if(r.comparator=function(n){return new Date(n.get("start"))},f=r.where({AppointmentType:"Time",resourceId:i}),f.length>0){u=f[0].get("title");u=u.replace(/(\r\n|\n|\r)/gm,"");var e="[{windows}]",s=u.split(","),h="",c=s.length;_.each(s,function(n,t){var i='["{start}","{end}"]';i=i.replace("{start}",n.split("-")[0]);i=i.replace("{end}",n.split("-")[1]);t<c-1&&(i+=",");h+=i});e=e.replace("{windows}",h);o=JSON.parse(e)}else return n}catch(a){return n}return n[t]=o,n},GetWorkHours:function(n,t){var i="";return t.WorkHoursPeriodes!=null&&(i=JSON.parse(t.WorkHoursPeriodes),t.unevenweek&&moment(n).week()%2!=0&&t.WorkHoursPeriodes2!=null&&(i=JSON.parse(t.WorkHoursPeriodes2))),i},getMonthAppointments:function(n,t,i){gGoogleBackendFetch?onlinebookingview.getMonthAppointmentsBackend(n,t,i):onlinebookingview.getMonthAppointmentsFrontend(n,t,i)},getMonthAppointmentsBackendxxx:function(n,t){onlinebookingview.$("#datepicker").hide();onlinebookingview.$("#timepicker").hide();onlinebookingview.$("#loadtimes").show();_thisview=this;var r=moment([n,t-1]),u=moment(r).endOf("month"),i=new Appointments;i.url="/api/onlineBook/appointmentsgoogle";i.fetch({data:"companyid="+tenantid+"&month="+t+"&year="+n+"&google=true"}).done(function(){onlinebookingview.MonthAppointments=i;onlinebookingview.monthfetched=t;onlinebookingview.InitialfetchedAppointments=!0;$("#datepicker").datepicker("refresh");onlinebookingview.$("#datepicker").show();onlinebookingview.$("#timepicker").show();onlinebookingview.$("#loadtimes").hide();$(".ui-datepicker-calendar a:first-child:nth(0)").trigger("click")})},getMonthAppointmentsBackend:function(n,t){var i;onlinebookingview.$("#datepicker").hide();onlinebookingview.$("#timepicker").hide();onlinebookingview.$("#loadtimes").show();_thisview=this;var u=moment([n,t-1]),f=moment(u).endOf("month"),r=new Appointments;r.url="/api/onlineBook/Appointments?IncludeGoogleEvents=true";i={data:"companyid="+tenantid+"&month="+t+"&year="+n};tenantid==9827&&(i={data:"companyid="+tenantid+"&month="+t+"&year="+n+"&c="+Math.random(9999)});r.fetch(i).done(function(i){var r=new Appointments(i.SARAEvents).add(i.GoogleEvents);onlinebookingview.MonthAppointments=r;gCheckDayOff&&(onlinebookingview.resourceTimeOffDates=onlinebookingview.getResourceTimeOffEvents(n,t));onlinebookingview.monthfetched=t;onlinebookingview.InitialfetchedAppointments=!0;$("#datepicker").datepicker("refresh");onlinebookingview.$("#datepicker").show();onlinebookingview.$("#timepicker").show();onlinebookingview.$("#loadtimes").hide();$(".ui-datepicker-calendar a:first-child:nth(0)").trigger("click")})},getMonthAppointmentsFrontend:function(n,t){onlinebookingview.$("#datepicker").hide();onlinebookingview.$("#timepicker").hide();onlinebookingview.$("#loadtimes").show();_thisview=this;var r=moment([n,t-1]),u=moment(r).endOf("month"),i=new Appointments;i.url="/api/onlineBook/Appointments";i.fetch({data:"companyid="+tenantid+"&month="+t+"&year="+n}).done(function(){onlinebookingview.MonthAppointments=i;gCheckDayOff&&(onlinebookingview.resourceTimeOffDates=onlinebookingview.getResourceTimeOffEvents(n,t));onlinebookingview.monthfetched=t;onlinebookingview.InitialfetchedAppointments=!0;var f=[];_.each(onlinebookingview.AvailableResources,function(n){if(n.GoogleAccountRegistered){var t=n.id,e={resourceId:t,FilterStartDate:r.toISOString(),FilterEndDate:u.toISOString()};f.push($.ajax({type:"GET",url:"/api/GoogleRead",data:e,success:function(n){i.add(n)}}))}});f.length>=1?$.when.apply(this,f).done(function(){$("#datepicker").datepicker("refresh");onlinebookingview.$("#datepicker").show();onlinebookingview.$("#timepicker").show();onlinebookingview.$("#loadtimes").hide();$(".ui-datepicker-calendar a:first-child:nth(0)").trigger("click")}).fail(function(){alert("Google agenda niet meegenomen")}):($("#datepicker").datepicker("refresh"),onlinebookingview.$("#datepicker").show(),onlinebookingview.$("#timepicker").show(),onlinebookingview.$("#loadtimes").hide(),$(".ui-datepicker-calendar a:first-child:nth(0)").trigger("click"))})},AddGoogleEventsNEW:function(n,t,i,r){var u=i.resourceid,f={resourceId:u,FilterStartDate:n.toISOString(),FilterEndDate:t.toISOString()};$.ajax({type:"GET",url:"/api/GoogleCalendarApi/GetGoogleEventsForResource",data:f,success:function(n){r.add(n)},error:function(){}})},AddGoogleEvents:function(n,t,i,r,u){var s=this,f=[],e={"start-min":n.toISOString(),"start-max":t.toISOString(),singleevents:!0,"max-results":9999,q:"-SARA"},o=u;$.ajax({url:o+"?alt=json-in-script&callback=?",dataType:"json",async:!1,data:e,error:function(){return!1}}).fail(function(){return!1}).done(function(n){if(n.feed.entry)return $.each(n.feed.entry,function(n,t){var h=t.summary.$t,e,u;dateparts=h.split(" ");e={Jan:"01",Feb:"02",Mrt:"03",Apr:"04",Mei:"05",Jun:"06",Jul:"07",Aug:"08",Sep:"09",Okt:"10",Nov:"11",Dec:"12"};try{var o=dateparts[4],s=e[dateparts[3]],r=dateparts[2].replace(".","");r=r.length==1?"0"+r:r;var c=dateparts[5],l=dateparts[7].substring(0,5),a=o+"-"+s+"-"+r+"T"+c,v=o+"-"+s+"-"+r+"T"+l}catch(y){return}u="";$.each(t.link,function(){this.type=="text/html"&&(u=this.href)});f.push({title:"[Google] "+t.title.$t,url:u,start:a,end:v,resourceId:i.resourceid,className:"googleEvents",AppointmentType:"TimeOff",editable:!1})}),_.each(f,function(n){r.add(n)}),$(".ui-datepicker-calendar a:first-child:nth(0)").trigger("click"),!0}).always(function(){})},PreviousStep:function(){$(".Col1").show();$(".Col2").hide()},NextStep:function(){window.innerWidth<820&&($(".Col1").hide(),$(".Col2").show(),gExtrasettings.HideResources?($("#selectresource").hide(),$("#resourceslist dd:first").trigger("click")):tenantid!=6862&&$("#resourceslist dd:first").trigger("click"),$(window).scrollTop(0))},reserve:function(n){$(n.target).hasClass("selectbutton-disabled")||this.possibletimes.reserve()},MoveAppointments:function(){this.possibletimes.MoveAppointment()},displayError:function(n){if(dialogcontainer=$("<div id='errormessagebox'><\/div>"),dialogcontainer.dialog({modal:!0,autoOpen:!1,show:"shake",buttons:[{text:"akkoord","class":"greenbutton",click:function(){dialogcontainer.dialog("destroy")}}]}),n.ModelState){var t="";_.each(n.ModelState,function(n){t+="<li>"+n+"<\/li>"});dialogcontainer.html(t);dialogcontainer.dialog("open");return}if(n.Message){dialogcontainer.html(n.Message);dialogcontainer.dialog("open");return}if(n.ExceptionMessage){dialogcontainer.html("exception: "+n.ExceptionMessage);dialogcontainer.dialog("open");return}},initchecktool:function(){var t,n;if(ToolsArray=[],app.appsettings.get("ToolsCapacity")!=null)try{for(t=JSON.parse(app.appsettings.get("ToolsCapacity")),n=0;n<t.length;n++)ToolsArray[t[n].devicename]=t[n].quantity;onlinebookingview.checkfortools=!0}catch(i){ToolsArray.notool="0";onlinebookingview.checkfortools=!1}else ToolsArray.notool="0",onlinebookingview.checkfortools=!1},CheckToolAvailabilty:function(n,t,i,r){var f=thisview.businessopen+":00",h=onlinebookingview.timestepsize.toString()=="5"?"05":onlinebookingview.timestepsize.toString(),l="00:"+h+":00",u,e,o,s;for(j=0;j<t;j++)if(u=Math.abs(toSeconds(f)+toSeconds(l)),e=[Math.floor(u/3600),Math.floor(u%3600/60),u%60],c=e.map(function(n){return n<10?"0"+n:n}).join(":"),o=_thisview.MonthAppointments,i!=null&&i!="")s=o.filter(function(n){return f>=n.get("start").split("T")[1]&&c<=n.get("end").split("T")[1]&&n.get("Tool")==i&&n.get("resourceId")!=r&&n.get("AppointmentType")=="Appointment"}),s.length>=ToolsCapacity&&(n[j]="ToolInUse"),f=c;else return;return},getCookie:function(n){for(var r=n+"=",u=document.cookie.split(";"),i,t=0;t<u.length;t++)if(i=u[t].trim(),i.indexOf(r)==0)return i.substring(r.length,i.length);return""},storeclosed:function(n){return daynr=n.getDay(n),daynr==0?!0:void 0},timeToFloat:function(n){var t,r,u,i,f=[":","."],e;if(parseInt(n,10)===n||parseFloat(n)===n)t=n;else for(n=n.toString(),e=f.length,i=0;i<e;i=i+1)u=f[i],n.indexOf(u)>0&&(r=n.split(u),t=parseInt(r[0],10)+parseInt(r[1],10)/60,n.indexOf("p")>0&&t<=12&&(t=t+12));return t},getTimeSlotIndex:function(n){var t=this,i=t.timeToFloat(this.businessopen),r=onlinebookingview.timestepsize/60;return n=t.timeToFloat(n),Math.round((n-i)/r)},addMinutes:function(n,t){return new Date(n.getTime()+t*6e4)},GetPossibleTimesArrayForDuoBooking:function(n,t){var i,f,r,u,e,o;try{if(i=[],f=$(".resourceslist .ui-state-active2"),f.length==2)_.each(f,function(n){var t=$(n).attr("data-resourceid");i.push(t)});else for(r=[],_.each(onlinebookingview.AvailableResources,function(t){t.id!=0&&r.push({id:t.id,length:n[t.id].length})}),r=_.sortBy(r,"length").reverse(),u=0;u<2;u++)i.push(r[u].id);e=i.length;combined=n[i[0]];_.each(i,function(t,i){i!=0&&(combined=combined.concat(n[t]))});duoarray=[];o=_.groupBy(combined);_.each(o,function(n,t){n.length>e-1&&duoarray.push(t)})}catch(s){}return t&&(gduoresourcesids=i),duoarray},SearchPropertyFromServiceItems:function(n){var i=this,t=0;try{_.each(i.selectedservices.models,function(i){var r=i.get("ExtraProperties"),u,f;r!=null&&(u=JSON.parse(r),f=u[n],f==!0&&t++)})}catch(r){return!1}return t>0},CheckIfDayBookable:function(n){var t=!0;try{_.each(this.selectedservices.models,function(i){i._ExtraProperties.SpecificDay&&i._ExtraProperties.BookableDays!=""&&i._ExtraProperties.BookableDays.indexOf(n)==-1&&(t=!1)})}catch(i){console.log("CheckIfDayBookable "+i)}return t},CheckIfDayBookablexxxx:function(n){var t=!0;console.log(this.selectedservices.models,"bekend");try{_.each(this.selectedservices.models,function(i){var r,u;typeof i!="undefined"&&i!=null&&(r=i.get("ExtraProperties"),typeof r!="undefined"&&r!=null&&(u=JSON.parse(r),u.SpecificDay?u.BookableDays.indexOf(n)==-1&&(t=!1):[0,1,2,3,4,5,6,7].indexOf(n)==-1&&(t=!1)))})}catch(i){console.log(i,"ex");t=!0}return t},CheckParyOfDay:function(){var n="";try{_.each(_thisview.selectedservices.models,function(t){var i,r;typeof t!="undefined"&&t!=null&&(i=t.get("ExtraProperties"),typeof i!="undefined"&&i!=null&&(r=JSON.parse(i),r.PartOfDaySwitch&&r.PartOfDay!=""&&(n=r.PartOfDay)))})}catch(t){}return n},CheckIfDayBookableOLD:function(n){var t,i;try{if(typeof app.onlinebookingview.selectedservice!="undefined"&&app.onlinebookingview.selectedservice!=null&&(t=app.onlinebookingview.selectedservice.get("ExtraProperties"),typeof t!="undefined"&&t!=null))if(i=JSON.parse(t),i.SpecificDay){if(i.BookableDays.indexOf(n)==-1)return!1}else return!0}catch(r){return!0}return!0},getPossibleTimes:function(n,t,i,r){var o,f,e,l;BusinessInfo=app.appsettings.get("BusinessInfo");gAgendaOpeningTime?(this.businessopen=app.appsettings.get("AgendaBeginTime"),this.businessclosed=app.appsettings.get("AgendaEndTime")):(this.businessopen=JSON.parse(app.appsettings.get("Businesshours"))[i][0],this.businessclosed=JSON.parse(app.appsettings.get("Businesshours"))[i][1]);o=[];this.CreateArrayAgendaNEW(o,n,t,i,r);var s=this.totalduration/this.timestepsize,h=[],u=0,c=0;return _.each(o,function(n,t){n=="Free"?(u==0&&(c=t),u++):(n=="unavailable"||n=="Booked"||n=="ToolInUse")&&u>0&&(s<=u&&h.push({type:n,timeslotstart:c,length:u}),u=0)}),f=[],e=app.appsettings.get("DefaultStepSize"),e==null&&(e=15),l="timeslot-free",_.each(h,function(n){for(var u=app.appsettings.get("TakeDurationSteps"),i=0;i<=n.length-s;){var h=n.timeslotstart+i,o=onlinebookingview.timeToFloat(onlinebookingview.businessopen)+h*onlinebookingview.timestepsize/60,r=Math.floor(o),t=Math.round((o-r)*60);t=t.toString()=="0"?"00":t.toString();t=t.toString()=="5"?"05":t.toString();u?f.push(r+":"+t):isInt(t/e)&&f.push(r+":"+t);u?i=i+s:i++}}),f},CreateArrayAgendaNEW:function(n,t,i,r,u){var c,d,s,y,p,w,o,b,h,f,k;for(thisview=onlinebookingview,c=!1,d=1,n.push({}),s=thisview.getTimeSlotIndex(thisview.businessclosed),f=0;f<s;f++)n[f]="unavailable";var l=/\d\d[:]\d\d/,e=this.GetWorkHours(u,i),a=thisview.getTimeSlotIndex(e[r][0][0]),v=thisview.getTimeSlotIndex(e[r][0][1]);for(f=0;f<e[r].length;f++)if(l.test(e[r][f][0])&&l.test(e[r][f][1])){startofperiodetime=e[r][f][0];endofperiodetime=e[r][f][1];try{a=thisview.getTimeSlotIndex(_thisview.timeToFloat(startofperiodetime));v=thisview.getTimeSlotIndex(_thisview.timeToFloat(endofperiodetime))}catch(g){}for(j=a;j<v;j++)n[j]="Free"}if(y=t.filter(function(n){return n.get("resourceId")===i.resourceid&&n.get("AppointmentType")=="TimeOn"}),_.each(y,function(t){var r,u,i;for(startdatum=t.get("start").split("T")[1],enddatum=t.get("end").split("T")[1],r=thisview.getTimeSlotIndex(startdatum),u=thisview.getTimeSlotIndex(enddatum),i=r;i<u;i++)n[i]="Free"}),p=moment(u).format("YYYY-MM-DD"),w=moment(new Date).format("YYYY-MM-DD"),minimalbookingtime=parseInt(app.appsettings.get("MinimalBookingTime")),p==w&&(c=!0,minimalbookingtime==""&&minimalbookingtime==undefined&&(minimalbookingtime=2),o=new Date,minimalbookingtime>=0))if(b=o.getHours()+minimalbookingtime,b<=23){if(o.addHours(minimalbookingtime),h=thisview.getTimeSlotIndex(o.getHours()+":"+o.getMinutes()),h>=1)for(f=0;f<h;f++)n[f]=1}else for(f=0;f<s;f++)n[f]=1;return k=t.filter(function(n){return n.get("resourceId")===i.resourceid&&n.get("AppointmentType")!=="TimeOn"&&n.get("AppointmentType")!=="AddedService"&&n.get("AppointmentType")!=="Returned"}),_.each(k,function(t){var r,u,i;for(startdatum=t.get("start").split("T")[1],enddatum=t.get("end").split("T")[1],startdatum=moment(t.get("start")).format("HH:mm"),enddatum=moment(t.get("end")).format("HH:mm"),r=thisview.getTimeSlotIndex(startdatum),u=thisview.getTimeSlotIndex(enddatum),i=r;i<u;i++)n[i]="Booked"}),n.push("unavailable"),n},GetPossibleTimesArrayForDuoBookingOLD:function(n,t){var i,r,u,f,e;try{if(i=[],tenantid==6559||tenantid==8867)for(r=[],_.each(onlinebookingview.AvailableResources,function(t){t.id!=0&&r.push({id:t.id,length:n[t.id].length})}),r=_.sortBy(r,"length").reverse(),u=0;u<2;u++)i.push(r[u].id);else _.each(onlinebookingview.AvailableResources,function(n){n.id!=0&&i.push(n.id)});f=i.length;combined=n[i[0]];_.each(i,function(t,i){i!=0&&(combined=combined.concat(n[t]))});duoarray=[];e=_.groupBy(combined);_.each(e,function(n,t){n.length>f-1&&duoarray.push(t)})}catch(o){}return t&&(gduoresourcesids=i),duoarray},getDynamicResourcesforServiceOLD:function(){onlinebookingview.AvailableResources=[];onlinebookingview.foundResources=0;var n=this.selectedservices.models.length;_.each(_thisapp.BookableResources.models,function(t){var r=0,i=null,u=0,f=jQuery.grep(_thisapp.ResourceServicesListJSON,function(n){return n.resourceid==t.id});_.each(onlinebookingview.selectedservices.models,function(n){i=jQuery.grep(f,function(t){return t.ServiceId==n.id});i.length>0&&(r++,u=t.id)});r==n&&(onlinebookingview.AvailableResources[u]=i[0],onlinebookingview.foundResources++)});this.AvailableResources.length==0?($("#warningmessage").html('<div id="ErrorMessage" style=/"color:orange !important;border-color:orange  !important/">Geen medewerker of locatie beschikbaar.<\/div>'),$(".timepickercontainer").hide(),$("#datepicker").hide(),$(".selectbutton").addClass("selectbutton-disabled")):($("#warningmessage").html(""),$(".timepickercontainer").show(),$("#datepicker").show());this.renderDynamicSelectResources(this.AvailableResources)},renderDynamicSelectResourcesDropdown:function(n){var u=$("<div id='selectresource-container'><\/div>"),t,r;u.append("<h1 class='plannerheader' id='selectresource-header'><i class='fa fa-user-plus 1x'><\/i>&nbsp;"+LanguageDefault.ResourceSelection+"<\/h1> ");t=$("<select id='selectresource' class='pulldown'><\/select>");i=0;_.each(n,function(n){i++;var r=n.resourcename;r=r.indexOf("-")>-1?r.split("-")[1]:r;t.append("<option value='"+n.resourceid+"' >"+r+"<\/option>")});i>1&&(GeenVoorkeuroptieNietTonen||t.prepend("<option value='0' SELECTED >Geen voorkeur<\/option>"));r=t.val();GeenVoorkeuroptieNietTonen?(_thisview.selectedresource=n[r],$("#selectresource").html(u.append(t))):r!=0?(_thisview.selectedresource=_thisview.AvailableResources[r],$("#selectresource").html("")):(_thisview.selectedresource=null,$("#selectresource").html(u.append(t)))},getresourcesforService:function(n){var t=this;this.availablityitems=new AvailablityItems;this.availablityitems.url="/api/onlineBook/resources";dateText=moment(new Date).format("YY/MMM/DD");this.availablityitems.fetch({data:"&companyid="+tenantid+"&ServiceId="+n,parse:!1}).done(function(n){var i=JSON.stringify(t.availablityitems.toJSON());localStorage.setItem("storageResources",i);t.BusinessHours=app.appsettings.get("BusinessHours");t.VATHigh=app.appsettings.get("VATHigh");t.VATLow=app.appsettings.get("VATLow");t.response=n;_.each(n,function(n){_.each(t.selectedservices.models,function(){});t.AvailableResources[n.resourceid]=n});t.renderSelectResources(t.AvailableResources);now=new Date;t.getMonthAppointments(now.getFullYear(),now.getMonth()+1,null)})},renderSelectResources:function(){var r=$("<div id='selectresource-container'><\/div>"),n,t;r.append("<h1 class='plannerheader' id='selectresource-header'><i class='fa fa-user-plus 1x'><\/i>&nbsp;"+LanguageDefault.ResourceSelection+"<\/h1> ");n=$("<select id='selectresource' class='pulldown'><\/select>");i=0;_.each(_thisview.availablityitems.models,function(t){i++;var r=t.get("resourcename");r=r.indexOf("-")>-1?r.split("-")[1]:r;n.append("<option value='"+t.get("resourceid")+"' >"+r+"<\/option>")});i>1&&(gShowNoPreference||n.prepend("<option value='0' SELECTED >Geen voorkeur<\/option>"));t=n.val();gShowNoPreference?(_thisview.selectedresource=_thisview.AvailableResources[t],$("#selectresource").html(r.append(n))):t!=0?(_thisview.selectedresource=_thisview.AvailableResources[t],$("#selectresource").html("")):(_thisview.selectedresource=null,$("#selectresource").html(r.append(n)))},getMonthAppointmentsOLD:function(n,t){_thisview=this;var r=moment([n,t-1]),u=moment(r).endOf("month"),i=new Appointments;i.url="/api/onlineBook/Appointments";i.fetch({data:"companyid="+tenantid+"&month="+t+"&year="+n}).done(function(){onlinebookingview.MonthAppointments=i;localStorage.setItem("month",t);gNewGoogleImplemation&&_.each(_thisview.AvailableResources,function(n){n.GoogleAccountRegistered&&_thisview.AddGoogleEventsNEW(r,u,n,i)});onlinebookingview.$("#datepicker").show();$(".ui-datepicker-calendar a:first-child:nth(0)").trigger("click")})},changeSelectResource:function(n){resourceid=$(n.target).val();_thisview.selectedresource=_thisview.AvailableResources[resourceid];now=new Date($("#datepicker").datepicker("getDate"));_thisview.getMonthAppointments(now.getFullYear(),now.getMonth()+1,1)},CreateArrayAgenda:function(n,t,i,r,u){var o,s,g,l,e,a,v,y,p,w;thisview=onlinebookingview;var f=JSON.parse(i.workhours),h=!1,b=moment(u).format("YYYY-MM-DD"),c=moment(new Date).format("YYYY-MM-DD");if(b==c)if(minimalbookingtime=parseInt(app.appsettings.get("MinimalBookingTime")),(minimalbookingtime==""||minimalbookingtime==0||minimalbookingtime==undefined)&&(minimalbookingtime=2),timenow=new Date,timenow.addHours(minimalbookingtime),timenowdate=moment(timenow).format("YYYY-MM-DD"),timenowdate==c){h=!0;var o=0,k=thisview.getTimeSlotIndex(timenow.getHours()+":"+timenow.getMinutes()),d=thisview.getTimeSlotIndex(f[r][0][0]);o=d<=k?thisview.getTimeSlotIndex(timenow.getHours()+":"+timenow.getMinutes()):thisview.getTimeSlotIndex(f[r][0][0]);s=thisview.getTimeSlotIndex(f[r][0][1])}else h=!0,s=thisview.getTimeSlotIndex(f[r][0][1]),o=s;else o=thisview.getTimeSlotIndex(f[r][0][0]),s=thisview.getTimeSlotIndex(f[r][0][1]);for(g=1,n.push({}),l=thisview.getTimeSlotIndex(thisview.businessclosed),e=0;e<l;e++)n[e]="unavailable";for(j=o;j<s;j++)n[j]="Free";for(a=f[r].length,e=1;e<a;e++)if(f[r][e][0]!=""&&f[r][e][0]!="Gesloten"&&f[r][e][1]!=""&&f[r][e][1]!="Gesloten")for(v=f[r][e][0],y=f[r][e][1],o=thisview.getTimeSlotIndex(_thisview.timeToFloat(v)),s=thisview.getTimeSlotIndex(_thisview.timeToFloat(y)),j=o;j<s;j++)n[j]="Free";return p=t.filter(function(n){return n.get("resourceId")===i.resourceid&&n.get("AppointmentType")=="TimeOn"}),_.each(p,function(t){var r,u,i;for(startdatum=t.get("start").split("T")[1],enddatum=t.get("end").split("T")[1],r=h?o:thisview.getTimeSlotIndex(startdatum),u=thisview.getTimeSlotIndex(enddatum),i=r;i<u;i++)n[i]="Free"}),w=t.filter(function(n){return n.get("resourceId")===i.resourceid&&n.get("AppointmentType")!=="TimeOn"&&n.get("AppointmentType")!=="AddedService"&&n.get("AppointmentType")!=="Returned"}),_.each(w,function(t){var r,u,i;for(startdatum=t.get("start").split("T")[1],enddatum=t.get("end").split("T")[1],startdatum=moment(t.get("start")).format("HH:mm"),enddatum=moment(t.get("end")).format("HH:mm"),r=thisview.getTimeSlotIndex(startdatum),u=thisview.getTimeSlotIndex(enddatum),i=r;i<u;i++)n[i]="Booked"}),n.push("unavailable"),n},GetStartSlot:function(n,t,i,r){var u=0,f,e;return thisview=onlinebookingview,minimalbookingtime=parseInt(app.appsettings.get("MinimalBookingTime")),(minimalbookingtime==""||minimalbookingtime==0||minimalbookingtime==undefined)&&(minimalbookingtime=2),timenow=new Date,timenow.addHours(minimalbookingtime),timenowdate=moment(timenow).format("YYYY-MM-DD"),timenowdate==t?(TakeMinimalBookingTime=!0,f=thisview.getTimeSlotIndex(timenow.getHours()+":"+timenow.getMinutes()),e=thisview.getTimeSlotIndex(i[curr_day][0][0]),u=e<=f?thisview.getTimeSlotIndex(timenow.getHours()+":"+timenow.getMinutes()):thisview.getTimeSlotIndex(i[curr_day][r][0])):(TakeMinimalBookingTime=!0,u=-1),u},WaitListAvailable:function(n,t){var i,r,u;try{return i=t.getDay(),r=moment(),moment(t).diff(r,"days")>=0?(u=!1,n!=null?moment(t).week()%2!=0&&onlinebookingview.resourceworkweek2[n.id]!=null?onlinebookingview.resourceworkweek2[n.id][i]:onlinebookingview.resourceworkweek[n.id][i]:moment(t).week()%2!=0&&onlinebookingview.resourceworkweek2[0]!=null?onlinebookingview.resourceworkweek2[0][i]:onlinebookingview.resourceworkweek[0][i]):!1}catch(f){return console.log(f),!1}},WaitListAvailableAllResources:function(n,t,i){var u=this,n=i.getDay(),f=moment(),r=[];return _.each(_thisview.AvailableResources,function(n,t){var t=n.id;u.WaitListAvailableSelectedResource(n,i)&&u.WaitListResourceTimeOff(t,i)==!1?r.push(!0):r.push(!1)}),r.indexOf(!0)>-1?!0:!1},WaitListAvailableSelectedResource:function(n,t){var i,r,u;try{return i=t.getDay(),r=moment(),moment(t).diff(r,"days")>=0?(u=!1,moment(t).week()%2!=0&&onlinebookingview.resourceworkweek2[n.id]!=null?onlinebookingview.resourceworkweek2[n.id][i]:onlinebookingview.resourceworkweek[n.id][i]):!1}catch(f){return console.log("Error: WaitListAvailableSelectedResource",f),!1}},WaitListResourceTimeOff:function(n,t){var i=moment(t).format("YYYY-MM-DD");return onlinebookingview.resourceTimeOffDates[n].indexOf(i)>-1?!0:!1},init_resourceworkweek:function(){var n=this,t;this.resourceworkweek=[];_.each(onlinebookingview.AvailableResources,function(t){var r=JSON.parse(t.WorkHoursPeriodes),i=[];_.each(r,function(n,t){var r=n[0];i[t]=r.indexOf("Werkt niet")>-1?!1:!0});n.resourceworkweek[t.id]=i});t=[!1,!1,!1,!1,!1,!1,!1];_.each(n.resourceworkweek,function(n){_.each(n,function(n,i){n==!0&&(t[i]=!0)})});n.resourceworkweek[0]=t},init_resourceworkweek2:function(){var n=this,t;this.resourceworkweek2=[];_.each(onlinebookingview.AvailableResources,function(t){if(t.unevenweek){var r=JSON.parse(t.WorkHoursPeriodes2),i=[];_.each(r,function(n,t){var r=n[0];i[t]=r.indexOf("Werkt niet")>-1?!1:!0});n.resourceworkweek2[t.id]=i}else n.resourceworkweek2[t.id]=null});t=[!1,!1,!1,!1,!1,!1,!1];_.each(n.resourceworkweek2,function(n){_.each(n,function(n,i){n==!0&&(t[i]=!0)})});n.resourceworkweek2[0]=t},btnwaitlist:function(){var n=tenantid,t=_.pluck(thisview.selectedservices.toJSON(),"Id").join(","),i=moment(this.selecteddate).format("X"),r="/account/dummysignIn?cid="+n+"&Category=WaitList&service="+t+"&r=0&b="+i+"&Custid=0";window.location=r},IsResourceDayOff:function(n){try{if(onlinebookingview.selectedresource!=null){var t=onlinebookingview.selectedresource.id;return onlinebookingview.resourceTimeOffDates[t].indexOf(n)>-1?!0:!1}return onlinebookingview.resourceTimeOffDates[0].indexOf(n)>-1?!0:!1}catch(i){return!1}},getResourceTimeOffEvents:function(n,t){var r;try{var f=this,i=[],u=0;return _.each(onlinebookingview.AvailableResources,function(t){var f=onlinebookingview.MonthAppointments.getTimeOffEventsByResourceId(t.id,n),e=_.pluck(f.toJSON(),"start"),r=[];_.each(e,function(n){r.push(moment(n).format("YYYY-MM-DD"))});i[t.id]=r;u++}),r=[],_.each(f.getDaysOfMonth(n,t),function(n){countfounddate=0;_.each(i,function(t){t.indexOf(n)>-1&&countfounddate++});countfounddate>=u&&r.push(n)}),i[0]=r,console.log("ResourceTimeOffDates:",i),i}catch(e){return console.log("getResourceTimeOffEvents",e),[]}},getDaysOfMonth:function(n,t){for(var f=moment(n+"-"+t,"YYYY-MM"),i=f.daysInMonth(),r=[],u;i;)u=moment().date(i),r.push(u.format("YYYY-MM-DD")),i--;return r}});OnlineCustomerView=Backbone.View.extend({tagName:"div",events:{"change input, change textarea":"validateFields","click #Createsalonaccount":"ShowPassword","click #NewsLetter":"NewsLetter"},GeneralAgreement:function(){if(gNewSaveConsent)try{var n=CustomerConsents.initialisedConsents.get(1);n||(n=new CustomerConsents.ConsentModel,n.set("Id",1),CustomerConsents.initialisedConsents.add(n));n.set("ApprovedBy",$("#EmailAddress").val());n.set("ApprovedDate",new Date);n.set("ApprovedHow","Online Reservering");n.set("ApprovedTo","Privacyverklaring");n.set("Status",$("#GeneralAgreement").is(":checked")?"Ja":"Nee");n.set("Remarks","")}catch(t){}},NewsLetter:function(){if(gNewSaveConsent)try{var n=CustomerConsents.initialisedConsents.get(2);n||(n=new CustomerConsents.ConsentModel,n.set("Id",2),CustomerConsents.initialisedConsents.add(n));n.set("ApprovedBy",$("#EmailAddress").val());n.set("ApprovedDate",new Date);n.set("ApprovedHow",$("#NewsLetter").is(":checked")?"Online reservering":"Afgemeld online reservering");n.set("ApprovedTo","Nieuwsbrief");n.set("Status",$("#NewsLetter").is(":checked")?"Ja":"Nee");n.set("Remarks","")}catch(t){}},showcountrydropdown:function(n){n.preventDefault();var t=$(".dropdown-content");t.length>0&&t.css("visibility")!=="hidden"&&t.css("display")!=="none"?t.hide():t.show()},changedCountry:function(n){$(".dropbtn").text($(n.target).data("countrycode"));var t=$(n.target).data("countrycode");$(".dropdown-content").hide()},changephone:function(){var n=$("#HomePhone").intlTelInput("getNumber");localStorage.HomePhone=n;$("#HomePhone").val(n)},ShowPassword:function(n){$(n.target).is(":checked")?$(".passwordcontainer").show():$(".passwordcontainer").hide()},validateFields:function(){this.$("#CustomerDetailData").validate();gExtrasettings.FirstNameMandatory==!0&&this.$("#FirstName").rules("add",{required:!0,messages:{required:"Voornaam is verplicht"}});this.$("#LastName").rules("add",{required:!0,messages:{required:"Achternaam is verplicht"}});DummyAccount&&($.validator.addMethod("validEmailWithTLD",function(n,t){return this.optional(t)||/^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.(com|org|net|edu|gov|mil|biz|info|mobi|name|aero|jobs|museum|co|io|xyz|tech|online|[a-zA-Z]{2})$/.test(n)},"Geen valide email"),this.$("#EmailAddress").rules("add",{validEmailWithTLD:!0,required:!0,messages:{required:"E-mailadres is verplicht",validEmailWithTLD:"Voer een geldig e-mailadres in met een correcte domeinnaam (bijv. .com, .nl)."}}));ShowAddress&&(gExtrasettings.AddressMandatory==!0||gExtrasettings.AddressMandatory==undefined)&&(this.$("#Postcode").rules("add",{required:!0,messages:{required:"Postcode is verplicht"}}),gFixValidateAdresHouseNumber?($.validator.addMethod("regexAddress",function(n,t,i){return this.optional(t)||i.test(n)},"straat en huisnummer is verplicht."),this.$("#Address").rules("add",{required:!0,messages:{required:"Dit veld is verplicht."},regexAddress:/^(.)+[1-9][0-9]*(([-][1-9][0-9]*)|([\s]?[a-zA-Z ]+))?$/i})):this.$("#Address").rules("add",{required:!0,messages:{required:"Adres is verplicht"}}),this.$("#City").rules("add",{required:!0,messages:{required:"Woonplaats is verplicht"}}));(gExtrasettings.MobileMandatory==!0||gExtrasettings.MobileMandatory==undefined)&&($.validator.addMethod("regexMobile",function(n,t,i){return this.optional(t)||i.test(n)},"Geen valide mobiel, minimaal 10 cijfers"),this.$("#HomePhone").rules("add",{regexMobile:/^[\+]?[0-9]{10,}$/,required:!0,messages:{required:"Mobiel is verplicht"}}));gExtrasettings.ShowFieldBirthday==!0&&gExtrasettings.BirthdayMandatory&&($.validator.addMethod("regexBirthday",function(n,t,i){return this.optional(t)||i.test(n)},"Geen valide verjaardag (dd-mm-jjjj)"),this.$("#Birthdate").rules("add",{regexBirthday:/^(0?[1-9]|[12][0-9]|3[01])-(0?[1-9]|1[0-2])-(\d{4})$/,required:!0,messages:{required:"Verjaardag verplicht"}}));this.$("#Createsalonaccount").is(":checked")&&(this.$("#Password").rules("add",{required:!0,minlength:4,messages:{required:"Voer wachtwoord in",minlength:"minimaal 4 characters"}}),this.$("#ConfirmPassword").rules("add",{required:!0,messages:{required:"Herhaal wachtwoord"}}),this.$("#ConfirmPassword").rules("add",{equalTo:"#Password",messages:{equalTo:"wachtwoord komt niet overeen"}}));gShowAgreementlink&&(this.$("#GeneralAgreement").rules("add",{required:!0,messages:{required:"Is verplicht"}}),$("#GeneralAgreement").is(":checked")?$(".generalAgreementContainer").removeClass("ConfirmAgreement"):$(".generalAgreementContainer").addClass("ConfirmAgreement"))},render:function(){return _thisview=this,this.template=_.template($("#customerTemplate").html()),$(this.el).html(this.template(this.model)),gNewSaveConsent&&(this.model.NewsLetter?this.$("#NewsLetter").prop("checked",!0):this.$("#NewsLetter").prop("checked",!1)),this}});gOnlineReserveVersion="05-07-2023b";window.ReserveView=Backbone.View.extend({id:"ReservePage",template:_.template($("#reserveTemplate").html()),templateConfirm:_.template($("#tmpConfirmMessage").html()),templateConfirmEmail:_.template($("#tmpConfirmEmailMessage").html()),selectedservices:null,totalduration:0,totalprice:0,selectedservice:null,selectedresource:null,selecteddate:null,contact:null,CustomerView:null,NewClient:!1,NewAppointments:null,appointmentuniqueid:0,appointmentbatchUrl:"",appointmentjson:"",prepaymentpercentage:0,OldTotalPrice:0,ShowOldTotalPrice:!1,TotalDiscount:0,events:{"click #btnConfirm":"BookNowButton","click #NewsLetter":"NewsLetter","click #stepback":"showplanner","click #btnBookWaitList":"CreateBookWaitListEntry","click #addproductsbtn, .addproducts":"Addproducts"},Addproducts:function(){var t,n;if(OnlineShop.ProductsFetched){t=new OnlineShop.page({collection:OnlineShop.FetchedProductsList});t.render();return}n=new OnlineShop.productcollection;n.url="/api/ProductsOnline?cid="+tenantid;n.fetch().done(function(){OnlineShop.ProductsFetched=!0;OnlineShop.FetchedProductsList=n;var t=new OnlineShop.page({collection:n});t.render()})},showplanner:function(){if($("#SelfServicePage").length==1)$("#MainContent").show(),$("#MainContentConfirmBooking").hide();else{var n=getParameterByName("cid"),t=getParameterByName("Category"),i=getParameterByName("service"),r=getParameterByName("r"),u=getParameterByName("b"),f=getParameterByName("mobile");redirecturl=f==-1?"/book?cid="+n+"&Category="+t+"&service="+i+"&r="+r+"&b="+u:"/book?cid="+n+"&Category="+t+"&service="+i+"&r="+r+"&b="+u+"&mobile=1";window.location=redirecturl}},CheckIfRememberInput:function(){if(DummyAccount)try{$("#RememberInput").is(":checked")?this.$(".stored").each(function(){localStorage[$(this).attr("name")]=$(this).val()}):this.$(".stored").each(function(){localStorage.removeItem($(this).attr("name"))})}catch(n){}},NewsLetter:function(){if(DummyAccount)try{$("#NewsLetter").is(":checked")?(localStorage.NewsLetter=!0,this.contact.set("NewsLetter",!0)):(localStorage.NewsLetter=!1,this.contact.set("NewsLetter",!1))}catch(n){}},initialize:function(){this.NewAppointments=new Appointments;this.appointmentuniqueid=Math.random().toString(36).substr(2,9);thisreserveappview=this;document.addEventListener("visibilitychange",function(){document.visibilityState==="visible"&&$("#btnConfirm").removeClass("selectbutton-disabled")})},initfields:function(){localStorage.FirstName&&this.$("#FirstName").val(localStorage.FirstName);localStorage.LastName&&this.$("#LastName").val(localStorage.LastName);localStorage.EmailAddress&&this.$("#EmailAddress").val(localStorage.EmailAddress);localStorage.EmailAddress&&this.$("#EmailAddress").val(localStorage.EmailAddress);localStorage.Postcode&&this.$("#Postcode").val(localStorage.Postcode);localStorage.Address&&this.$("#Address").val(localStorage.Address);localStorage.City&&this.$("#City").val(localStorage.City);localStorage.HomePhone&&this.$("#HomePhone").val(localStorage.HomePhone);gShowBirthdate&&localStorage.Birthdate&&this.$("#Birthdate").val(localStorage.Birthdate);gNewSaveConsent||(localStorage.NewsLetter?localStorage.NewsLetter=="true"?(this.$("#NewsLetter").prop("checked",!0),this.contact.set("NewsLetter",!0)):(this.$("#NewsLetter").prop("checked",!1),this.contact.set("NewsLetter",!1)):(this.$("#NewsLetter").prop("checked",!0),this.contact.set("NewsLetter",!0)));gShowAgreementlink&&localStorage.GeneralAgreement&&localStorage.GeneralAgreement=="true"},render:function(){var n,t;return _thisview=this,gLinkedServices||(this.selectedservices.comparator=function(n){return n.get("Title")},this.selectedservices.sort()),n=moment.unix(this.selecteddate).format("DD MMM YYYY HH:mm"),gWaitList&&getParameterByName("Category")=="WaitList"&&(n=moment.unix(this.selecteddate).format("DD MMM YYYY")),$(this.el).html(this.template({selectedresource:this.selectedresource,selectedservice:this.selectedservice.toJSON(),selectedservices:this.selectedservices,selecteddate:n,selectedtime:moment.unix(this.selecteddate).format("HH:mm"),selectedday:moment.unix(this.selecteddate).format("dddd")})),this.contact.isNew()?(this.NewClient=!0,this.contact.set("tenantId",tenantid),AuthenticatedUsername.indexOf("-facebook")==-1?(this.contact.set("LastName",""),this.rendercontact(this.contact)):$.getScript("https://connect.facebook.net/en_UK/all.js",function(){FB?(FB.init({appId:gFaceBookAppId}),FB.getLoginStatus(function(n){n.status==="connected"?FB.api("/me",function(n){_thisview.contact.set("FirstName",n.first_name);_thisview.contact.set("LastName",n.last_name);_thisview.rendercontact(_thisview.contact)}):_thisview.rendercontact(_thisview.contact)})):_thisview.rendercontact(_thisview.contact)})):(this.NewClient=!1,this.rendercontact(this.contact)),this.$(".button").button(),DummyAccount&&this.initfields(),t=getParameterByName("CustId"),t==1&&this.GetFBProfile(),gExtrasettings.OnlineLoginNotRequired&&this.$(".accountcontainter").hide(),this.RenderDuoBooking(),this.RenderOnlinePayment(),gExtrasettings.HideResources==!0&&this.$(".ServiceProviderDetails").hide(),gExtrasettings.HideNewsLetterCheck==!0&&this.$(".Newslettercontainer").hide(),getParameterByName("TicketId")!=""&&this.$("#stepback").hide(),getParameterByName("Category")=="WaitList"&&(this.$("#btnBookWaitList").show(),this.$("#btnConfirm").hide(),this.$("#webversion").hide(),this.$(".payment").hide()),gHideDuration&&this.$(".durationservice").hide(),this.$("#btnConfirm").removeClass("selectbutton-disabled"),this.$("#appointmentdetails").append('<span style="font-size:8px;color:#c0c0c0;float:right" >v270122-1025<\/span>'),this.RenderDiscount(),gExtrasettings.OnlineLoginNotRequired==!1&&this.RenderLoginLink(),window.innerWidth<820&&this.$(".headercustomerform").html("AFSPRAAK BEVESTIGEN"),this},rendershoppingCart:function(){var i,n,t;OnlineShop.AddedServices=this.selectedservices;OnlineShop.AddedProducts=new OnlineShop.productcollection;i=new OnlineShop.ShoppingCartProductsView({collection:OnlineShop.AddedProducts,reserveview:this});n=localStorage.getItem("AddedProducts");n&&(t=JSON.parse(n),OnlineShop.AddedProducts.reset(t))},RenderLoginLink:function(){var n=localStorage.getItem("redirecturl"),t=getParameterByName("cid"),i=getParameterByName("Category"),r=getParameterByName("service"),u=getParameterByName("r"),f=getParameterByName("b"),e=getParameterByName("mobile");n=e==-1?"/book/reserve?cid="+t+"&Category="+i+"&service="+r+"&r="+u+"&b="+f:"/book/reserve?cid="+t+"&Category="+i+"&service="+r+"&r="+u+"&b="+f+"&mobile=1";authenticated=="False"&&$("#loginlink").html("<a href='"+n+"' class='themecolor'><i class='fa fa-sign-in fa-1x'><\/i> Inloggen<\/a>")},RenderOnlinePayment:function(){if(gOnlinepayment&&this.$(".payment").show(),gShowPaymentMandatory&&this.IsServicePaymentMandatory()&&this.$(".payment").show(),this.IsGlobalPaymentMandatory(),gOnlinePaymentOnservice&&this.RenderExtraProperties(),this.prepaymentpercentage!=0){var n=accounting.formatMoney(this.selectedservices.Total()/100*this.prepaymentpercentage);this.$("#prepaidpercentagefield").html(n)}},RenderDiscountOLD:function(){var i,r,u;try{var n=this.tobebookedqueue,t=0,f=this.selecteddate,t=n.TotalDiscount(f);t>0&&(i=roundcents(n.TotalizeVAT()),r=accounting.formatMoney(roundcents(n.TotalizeVAT())),this.$(".OldPrice").html(r),this.$(".OldPrice").show(),u=i-t,this.$(".Price").html(accounting.formatMoney(roundcents(u))),this.$(".Price").addClass("ActionPrice"))}catch(e){return}},RenderDiscount:function(){var e,r,u,i,f;try{e=this;var n=this.tobebookedqueue,t=0,o=this.selecteddate;_.each(n.models,function(n){var l,a;if(n._ExtraProperties.DiscountPriceSwitch!=undefined&&n._ExtraProperties.DiscountPriceSwitch){var r=n._ExtraProperties.DiscountPriceStart,u=n._ExtraProperties.DiscountPriceEnd,i=n._ExtraProperties.DiscountPrice;if(i!==undefined&&i!=="")if(r!==undefined&&r!==""&&u!==undefined&&u!==""){var e=moment.unix(o,"DD-MM-YYYY"),s=moment(r,"DD-MM-YYYY"),f=moment(u,"DD-MM-YYYY");if(f=f.add(1,"day"),e.isBetween(s,f,null,"[]")){var h=n._ExtraProperties.DiscountPrice,c=accounting.toFixed(h,2),i=parseFloat(c);t+=i;l=n.get("Price")*1-i}}else a=n._ExtraProperties.bookableActionPrice}});t>0&&(r=roundcents(n.TotalizeVAT()),u=accounting.formatMoney(roundcents(n.TotalizeVAT())),this.$(".OldPrice").html(u),this.$(".OldPrice").show(),i=r-t,this.$(".Price").html(accounting.formatMoney(roundcents(i))),this.$(".Price").addClass("ActionPrice"),this.prepaymentpercentage!=0&&(f=accounting.formatMoney(i/100*this.prepaymentpercentage),this.$("#prepaidpercentagefield").html(f)))}catch(s){return}},IsServicePaymentMandatory:function(){var t=this,n=!1;return _.each(t.selectedservices.models,function(t){t._ExtraProperties.OnlinePaymentMandatory&&(n=!0)}),n},IsGlobalPaymentMandatory:function(){var n=this,t;gExtrasettings.ShowOnlyOnlinePayment&&(n.$("#onlinepayment").click(),n.$("#cashcontrol").hide(),t=parseInt(gExtrasettings.GlobalPrePaidmentValue),isNaN(t)||t!=0&&(n.prepaymentpercentage=t,n.$(".prepaidcontainer").show()))},RenderExtraProperties:function(){var n=this;try{_.each(n.selectedservices.models,function(t){if(t._ExtraProperties.OnlinePaymentMandatory){n.$("#onlinepayment").click();n.$("#cashcontrol").hide();var i=parseInt(gExtrasettings.GlobalPrePaidmentValue);isNaN(i)||i!=0&&(n.prepaymentpercentage=i,n.$(".prepaidcontainer").show())}})}catch(t){console.log("RenderExtraProperties "+t)}},RenderDuoBooking:function(){var n=this;try{_.each(n.selectedservices.models,function(t){t._ExtraProperties.DuoBooking&&(n.$(".ServiceProviderDetails").hide(),n.RenderTotalPriceDuo())})}catch(t){console.log("RenderDuoBooking "+t)}},RenderTotalPriceDuo:function(){var t=this,i,n,r,u;try{i=t.selectedservices.models[0].get("Price")*1;n=getParameterByName("r");n.indexOf("-")>-1&&(n=n.split("-"),r=n.length,u=accounting.formatMoney(r*i),t.$(".Price").html(u))}catch(f){}},GetFBProfile:function(){var n=this;FB.getLoginStatus(function(t){t.status==="connected"&&FB.api("me?fields=id,name,first_name,last_name,email,gender,birthday,link,picture.width(800).height(800)",function(t){t!=null&&(n.$("#FirstName").val(t.first_name),n.$("#LastName").val(t.last_name),n.$("#EmailAddress").val(t.email),n.contact.set("gender",t.gender),n.contact.set("CustomerImageUrl",t.picture.data.url),n.contact.set("Facebookaccount",!0),n.contact.set("Birthday",t.birthday))})})},rendercontact:function(n){this.CustomerView=new OnlineCustomerView({model:n.toJSON()});this.$("#CustomerDetails").html(this.CustomerView.render().el);tenantid==7613&&this.$("#appointmentremarks",this).attr("placeholder","Geef je trouwdatum door");tenantid==10336&&this.$("#appointmentremarks",this).attr("placeholder","Trouwdatum en/of opmerkingen: ");tenantid==5926&&this.$("#appointmentremarks").hide()},CheckGoogleEvent:function(n,t){var i=this;try{var r=moment.unix(t).utc(),u=r.format("YYYY-MM-DDTHH:mm:00"),f=r.add(5,"m").format("YYYY-MM-DDTHH:mm:00");$.get("/api/GoogleRead?resourceId="+n+"&FilterStartDate="+u+"&FilterEndDate="+f+"&IncludeSARAEvents=false&CreateRangeEvents=false").always(function(n){var r=_.template($("#tmpDialogTimeNotAvailable").html()),t=moment.unix(i.selecteddate).format("DD-MMM-YY HH:mm"),u=r({date:t});n.length>0?(app.DialogNotification(u),app.SendAdminEmail(tenantid+" | CheckGoogleEvent blocked "+t," Afspraak kon niet worden geboekt is bezet.")):i.StartBookingProcess()})}catch(e){i.StartBookingProcess()}},BookNowButton:function(n){if(n.preventDefault(),!$("#btnConfirm").hasClass("selectbutton-disabled"))if($("#btnConfirm").addClass("selectbutton-disabled"),this.CheckIfRememberInput(),gfeatureCaptchaSecurity)grecaptcha.reset(),grecaptcha.execute();else try{this.selectedresource.GoogleAccountRegistered&&gCheckGoogleEvent==!0?this.CheckGoogleEvent(this.selectedresource.id,this.selecteddate):this.StartBookingProcess()}catch(n){this.StartBookingProcess()}},StartBookingProcess:function(){var n=$("#onlinepayment:checked").val();n?getParameterByName("TicketId")==""?(this.CustomerView.validateFields(),$("#CustomerDetailData").valid()?gBatchAppointments?this.UpdateAndCreateAppointmentBatch(!0):this.UpdateAndCreateAppointment(!0):($("#btnConfirm").removeClass("selectbutton-disabled"),$("html, body").animate({scrollTop:0},"slow"))):this.RetryPayment():(this.CustomerView.validateFields(),$("#CustomerDetailData").valid()?gBatchAppointments?this.UpdateAndCreateAppointmentBatch(!1):this.UpdateAndCreateAppointment(!1):($("#btnConfirm").removeClass("selectbutton-disabled"),$("html, body").animate({scrollTop:0},"slow")))},ExpandServices:function(n){var n=_thisview.selectedservices,t=null;_.each(_thisview.selectedservices.models,function(i){i.get("CombinedServices")&&(InjectResourceService(n,i),t=i);t&&_thisview.selectedservices.remove(t)})},GetBufferTime:function(n){var t,i;if(n.get("BufferTime")){t="";try{return t=JSON.parse(n.get("BufferTimeJSON")),i=new Service(t),i.get("Duration")}catch(r){}}},ContactSelectFromList:function(n){gSelectedcontactfromList==null?(n.FirstName=$("#FirstName").val(),n.LastName=$("#LastName").val(),n.Remarks=""):gSelectedcontactfromList.get("Remarks")!="NewCustomer"?(n.FirstName=gSelectedcontactfromList.get("FirstName"),n.LastName=gSelectedcontactfromList.get("LastName"),n.Remarks=""):(n.FirstName=$("#FirstName").val(),n.LastName=$("#LastName").val(),n.Remarks="NewCustomer")},DisplayMultipleContactList:function(n){var t,i,r;$("#loadtimes").hide();$("#appointmentdetails").show();t=new ConsumerContact;t.set("FirstName","Nieuwe klant");t.set("Remarks","NewCustomer");i=new ConsumerContacts(n);i.add(t);r=new vwContactList({collection:i});$("#PlaceHolderMultipleContactsFound").html(r.render().el);$("#emailaddressfound").html($("#EmailAddress").val())},UpdateAndCreateAppointmentBatch:function(n){var i,t,r,f,u;if(i=0,i=gNewTicketModule?this.selectedservices.Total():roundcents(this.selectedservices.TotalizeVAT()),i<=0&&n==!0){$("#ui-message").hide();$("#ui-message").html('<div id="ErrorMessage" >Bedrag is 0 euro er valt niks online te betalen.<\/div>').fadeIn(2e3).fadeOut(1e3);return}$("#loadtimes").show();$("#appointmentdetails").hide();_thisview=this;t={};this.$("#CustomerDetails").find("input").each(function(){var n=$(this);t[n.attr("Id")]=n.val()});gExtrasettings.ShowFieldBirthday==!0&&(r=moment(t.Birthdate,"DD-MM-YYYY").format("YYYY-MM-DD"),f=moment(t.Birthdate,"DD-MM-YYYY").format("MM"),r!="Invalid date"?(t.Birthdate=r,t.Birthmonth=f):t.Birthdate="");this.contact.set("FirstName",$("#FirstName").val());this.contact.set("LastName",$("#LastName").val());gCheckMultipleContactsFound&&this.ContactSelectFromList(t);t.NewsLetter=!1;$("#NewsLetter").is(":checked")&&(t.NewsLetter=!0);gNewSaveConsent&&(u=JSON.stringify(CustomerConsents.initialisedConsents),t.ExtraProperties=u,this.contact.set("ExtraProperties",u));this.contact.url="/api/contact/"+this.contact.id;DummyAccount&&(this.contact.url="/api/contact/"+this.contact.id+"?dummyaccount=true");this.CheckBlockCustomer(t,n)},CheckBlockCustomer:function(n,t){var u,f;var o=n.EmailAddress,i=this,s=this.selectedresource.id,r="",e=!1;gExtrasettings.ResourceCustomerStop&&(e=gExtrasettings.ResourceCustomerStop.includes(s),r="klantenstop-dienstverlener");u=!1;i.CheckNewCustomerBlockOnservice()==!0&&(u=!0,r="klantenstop-dienst");f=!1;gExtrasettings.BlockNewCustomers&&(f=!0,r="Klantenstop");f||e||u?$.ajax({type:"GET",url:"/api/Contact?companyid="+tenantid+"&EmailAddress="+o+"&GetCheckIfCustomerExists=1"}).done(function(u){u?i.UpdateContact(n,t):i.displayError(r)}).fail(function(n){i.displayError(n)}):this.UpdateContact(n,t)},CheckNewCustomerBlockOnservice:function(){var t=this,n=!1;try{return _.each(t.selectedservices.models,function(t){t._ExtraProperties.NewCustomerBlock&&(n=!0)}),n}catch(i){return n}},UpdateContact:function(n,t){_thisview=this;this.contact.save(n,{async:!1,success:function(n){gCheckMultipleContactsFound&&$("#RememberInput").is(":checked")&&(localStorage.FirstName=_thisview.contact.get("FirstName"),localStorage.LastName=_thisview.contact.get("LastName"));_thisview.ConvertServiceToAppointments(t,n);$.ajax({type:"POST",contentType:"application/json",data:JSON.stringify(_thisview.appointmentjson),url:_thisview.appointmentbatchUrl,success:function(){if($("#loadtimes").hide(),$("#appointmentdetails").show(),t)gNewTicketModule?_thisview.CreateTicket2(!0):_thisview.CreateTicket(!0);else _thisview.confirmMessage(!1)}}).fail(function(n){$("#loadtimes").hide();$("#appointmentdetails").show();$("#btnConfirm").removeClass("selectbutton-disabled");_thisview.displayError(n)})}}).fail(function(n){if($("#btnConfirm").removeClass("selectbutton-disabled"),gCheckMultipleContactsFound){if(n.responseText){var t=JSON.parse(n.responseText);t.StatusCode=="MultipleContactsFound"?_thisview.DisplayMultipleContactList(t.ListContacts):_thisview.displayError(n)}}else _thisview.displayError(n)})},SaveAppointments:function(n){var t=this;$.ajax({type:"POST",contentType:"application/json",data:JSON.stringify(t.appointmentjson),url:t.appointmentbatchUrl,success:function(){if($("#loadtimes").hide(),$("#appointmentdetails").show(),n)gNewTicketModule?t.CreateTicket2(!0):t.CreateTicket(!0);else t.confirmMessage(!1)}}).fail(function(n){$("#loadtimes").hide();$("#appointmentdetails").show();$("#btnConfirm").removeClass("selectbutton-disabled");t.displayError(n)})},ConvertServiceToAppointments:function(n,t){var i=this;if(i.appointmentbatchUrl==""){var r=0,u=i.tobebookedqueue.models.length-1;_.each(i.tobebookedqueue.models,function(f,e){var s=f.get("Duration"),o,c,l,h,y,a,v,p;IsGlobalBuffer()==!1?f.get("BufferTime")&&(gNewBuffertime?e==u&&(o=0,o=i.GetBufferTime(f),s+=o):(o=0,o=i.GetBufferTime(f),s+=o)):e==u&&(o=0,o=gExtrasettings.GlobalbuffertimeValue*1,s+=o);e==0?(c=moment.unix(i.selecteddate),r=s*1,l=moment.unix(i.selecteddate).add(s,"m"),h=f.get("ProcessTime")*1,r=r+h):(c=moment.unix(i.selecteddate).add(r,"m"),l=moment.unix(i.selecteddate).add(r+s,"m"),r=r+s*1,h=f.get("ProcessTime")*1,r=r+h);y=new Appointment;onlinepayment=1;n&&(onlinepayment=2);DummyAccount==!0?(a=$("#Password").val(),$("#Password").val()==""&&(a="na"),i.appointmentbatchUrl="/api/Appointment?customerid="+t.id+"&password="+a+"&appointmentbatchv2="+onlinepayment,v=getParameterByName("nid"),v!=""&&(i.appointmentbatchUrl="/api/Appointment?customerid="+t.id+"&password="+a+"&appointmentbatchv2="+onlinepayment+"&nid="+v)):i.appointmentbatchUrl="/api/Appointment?customerid=0&password=0&appointmentbatchv2="+onlinepayment;p=i.CreateNewAppointment(c,l,f);e++});gDuoBooking&&i.DuplicateAppointments();i.appointmentjson=i.NewAppointments.toJSON()}},CreateNewAppointment:function(n,t,i){var u;_thisview=this;var r={},o=this.$("#FirstName").val(),s=this.$("#LastName").val(),h=this.$("#HomePhone").val(),c=o.trim()+" "+s.trim(),e=tenantid+"-"+this.contact.get("id")+"-"+moment.unix(this.selecteddate).format("MMDDYYYY")+"-"+this.appointmentuniqueid,f="";return gPreferStaff&&localStorage.preferredstaff&&(f=localStorage.preferredstaff=="true"?"[Prefer]":""),this.AppointmentID=e,r.tenantId=tenantid,r.title=c,r.ClientType=this.NewClient?"NewCustomer":"Regular",i.get("linked")?(r.ServiceId=i.get("ContainerServiceId"),r.Tool=i.get("ContainerService")):(r.ServiceId=i.get("Id"),r.Tool="Geen"),i.get("TimeOffEvent")?(r.title=i.get("Title"),r.AppointmentType="TimeOff",r.Status="TimeOff",r.start=n.format("YYYY-MM-DD HH:mm"),r.end=t.format("YYYY-MM-DD HH:mm"),r.resourceIdOld=99,r.CustomerID=this.contact.get("id"),r.resourceId=this.selectedresource.id,r.resourceName=this.selectedresource.Fullname+f):(r.Status="OnlineScheduled",r.start=n.format("YYYY-MM-DD HH:mm"),r.end=t.format("YYYY-MM-DD HH:mm"),r.AppointmentID=e,r.ResourceServiceId=0,r.resourceId=this.selectedresource.id,r.resourceName=this.selectedresource.Fullname+f,r.Price=i.get("Price"),r.TaxType=i.get("TaxType"),r.Category=i.get("Category").Group,u=i.get("Color"),r.Service=gCheckForRoom||gCheckForRoomv2?u!=""&&u!=null?i.get("Title")+" ~ ["+u+"]":i.get("Title"):i.get("Title"),r.CustomerID=this.contact.get("id"),r.Note=$("#appointmentremarks").val(),r.OnlineBooking=!0,r.HomeNumber=h,r.resourceIdOld=99),this.NewAppointments.add(r),r},DuplicateAppointments:function(){var t,n;t=this;try{n=getParameterByName("r");n.indexOf("-")>-1&&(n=n.split("-"),n.shift(),_.each(n,function(n){var r=t.NewAppointments.models[0],i=r.clone();i.set("resourceId",n);t.NewAppointments.add(i)}))}catch(i){}},CreateTicket2:function(){var i=this,c=new Date,t=this.NewAppointments.models[0],f=t.get("AppointmentID"),s=t.get("start"),e=moment(s).utc(),o=new TicketsCollection,n,r,u,h;o.url="/api/ticket?customerid="+this.contact.id;n=new Ticket({Title:t.get("title"),CustomerID:t.get("CustomerID"),Status:"Open",TicketDate:e});gInvoiceChooseResourcev2&&(n.set("ResourceId",t.get("resourceId")),n.set("ResourceName",t.get("resourceName")));o.add(n);r=this.CreateTicketItems2(this.NewAppointments.models,e);gSaleProducts&&(r=this.CreateTicketProductsItems(r,e,t));n.set({tenantId:tenantid,Version:"2",ticketitems:r.toJSON()});this.prepaymentpercentage!=0&&n.set("Properties",this.prepaymentpercentage);n.url("api/ticket");u=!1;h=i.contact.id;DummyAccount||(u=!0);n.save().done(function(t){var o,e,r;if(TicketId=n.get("Id"),o=t.TotalAmountVAT,o<1&&(o=1),e=getParameterByName("mobile"),Onlinepaymentv2){r="/Paymentv2?cid="+tenantid+"&Category="+Category+"&service="+serviceId+"&r="+resourceId+"&b="+BookedDateTime+"&amount=0&TicketId="+TicketId+"&AppointmentID="+f+"&CustId="+i.contact.id+"&Account="+u+"&mobile="+e;UpdateMolliev2&&(r="/PaymentMolliev2?cid="+tenantid+"&Category="+Category+"&service="+serviceId+"&r="+resourceId+"&b="+BookedDateTime+"&amount=0&TicketId="+TicketId+"&AppointmentID="+f+"&CustId="+i.contact.id+"&Account="+u+"&mobile="+e);try{window.location!==window.parent.location?window.open(r,"_blank"):document.location=r}catch(s){document.location=r}}else document.location="/Payment?cid="+tenantid+"&Category="+Category+"&service="+serviceId+"&r="+resourceId+"&b="+BookedDateTime+"&amount=0&TicketId="+TicketId+"&AppointmentID="+f+"&CustId="+i.contact.id+"&Account="+DummyAccount+"&mobile="+e})},CreateTicketItems2:function(n,t){var r=this,i=new TicketItems;return _.each(n,function(n){var f,u;ticketitem=new TicketItem;UsedPackageId=null;u=null;try{u=JSON.parse(n.get("Tool"))}catch(e){}if(f=0,f=r.GetDiscountPrice(n.get("ServiceId")),u!=null){if(!u.createticket)return;u=JSON.parse(n.get("Tool"));ticketitem.set({TicketDate:t,TicketItemType:"Service",TicketDate:t,TicketItemType:"Service",ContactId:n.get("CustomerID"),AppointmentId:n.get("id"),ResourceId:n.get("resourceId"),ResourceName:n.get("resourceName"),ServiceId:n.get("ServiceId"),ServiceName:u.Title,TaxType:u.TaxType,Category:u.Category,tenantId:n.get("tenantId"),TaxType:u.TaxType,PriceVAT:u.Price,UnitPrice:u.Price,Discount:UsedPackageId!=null?u.Price:f,Quantity:1})}else ticketitem.set({TicketDate:t,TicketItemType:"Service",ContactId:n.get("CustomerID"),AppointmentId:n.get("id"),ResourceId:n.get("resourceId"),ResourceName:n.get("resourceName"),ServiceId:n.get("ServiceId"),ServiceName:n.get("Service"),Category:n.get("Category"),tenantId:tenantid,TaxType:n.get("TaxType"),PriceVAT:n.get("Price"),UnitPrice:n.get("Price"),Discount:UsedPackageId!=null?appointement.get("Price"):f,Quantity:1});i.add(ticketitem)}),i},CreateTicketProductsItems:function(n,t,i){var e=this,r=i.get("CustomerID"),u=i.get("resourceId"),f=i.get("resourceName");return _.each(OnlineShop.AddedProducts.models,function(i){var e=new TicketItem({tenantId:tenantid,TicketItemType:"Product",TicketDate:t,ContactId:r,ProductId:i.get("Id"),ResourceId:u,ResourceName:f,Category:"ONLINE",ServiceName:i.get("Title"),TaxType:i.get("TaxType"),UnitPrice:i.get("Price"),Quantity:1,Discount:0});n.add(e)}),n},GetDiscountPrice:function(n){var t=this.tobebookedqueue.get(n);try{if(t._ExtraProperties.DiscountPriceSwitch!=undefined&&t._ExtraProperties.DiscountPriceSwitch){var i=t._ExtraProperties.DiscountPriceStart,r=t._ExtraProperties.DiscountPriceEnd,u=t._ExtraProperties.DiscountPrice;if(u!==undefined&&u!==""&&i!==undefined&&i!==""&&r!==undefined&&r!==""){var e=moment.unix(this.selecteddate,"DD-MM-YYYY"),o=moment(i,"DD-MM-YYYY"),f=moment(r,"DD-MM-YYYY");if(f=f.add(1,"day"),e.isBetween(o,f,null,"[]"))return u}}return 0}catch(s){return console.log("error IsActionPeriod"+s),0}},RetryPayment:function(){var f=this,t=getParameterByName("TicketId"),n=getParameterByName("amount");n=n.replace(",",".");var i=getParameterByName("AppointmentID"),r=getParameterByName("CustId"),u=!1;DummyAccount||(u=!0);document.location=Onlinepaymentv2?"/Paymentv2?cid="+tenantid+"&Category="+Category+"&service="+serviceId+"&r="+resourceId+"&b="+BookedDateTime+"&amount="+n+"&TicketId="+t+"&AppointmentID="+i+"&CustId="+r+"&Account="+u:"/Payment?cid="+tenantid+"&Category="+Category+"&service="+serviceId+"&r="+resourceId+"&b="+BookedDateTime+"&amount="+n+"&TicketId="+t+"&AppointmentID="+i+"&CustId="+r+"&Account="+DummyAccount},confirmMessage:function(n){var u=GoogleReserve.getConversionCookie(),t;if(u!=""&&GoogleReserve.PostConversionCode(2),t=app.appsettings.get("OnlineReturnURL"),t!=null&&t.length>4){gBatchAppointments||(this.sendEmailConfirm(),this.sendSMSConfirm());window.open(t,"_top");return}gBatchAppointments||(this.sendEmailConfirm(),this.sendSMSConfirm());this.appointmentconfirm=$("#appointmentdetails dl").html();_thisreserview=this;message=app.appsettings.get("OnlineConfirmMessage");var i=this.$("#FirstName").val(),r=this.$("#LastName").val(),o=this.$("#HomePhone").val(),f=this.contact.get("EmailAddress"),e=i+" "+r;n&&(message+="<div class='succesmessage'><i class=\"fa fa-check-circle\" style='color:green'><\/i>Betaling ontvangen<\/div>");message=message.replace(/[\n\r]/g,"<br>");message=message.replace("[Title]",e);message=message.replace("[Date]",moment.unix(_thisreserview.selecteddate).format("DD MMMM YYYY"));message=message.replace("[Time]",moment.unix(_thisreserview.selecteddate).format("HH:mm"));message=message.replace("[Resource]",this.selectedresource.Fullname);message=message.replace("[Company]",app.appsettings.get("BusinessName"));message=message.replace("[Email]",f);message=message.replace("[Services]",this.appointmentconfirm);message=message.replace("[FirstName]",i);message=message.replace("[LastName]",r);message=message.replace("[ResourceName]",this.selectedresource.Fullname);$("#MainContent").html(_thisreserview.templateConfirm({message:message}));gNoAppReload&&$("#MainContentConfirmBooking").html(_thisreserview.templateConfirm({message:message}))},sendConfirmations:function(){var t=getParameterByName("CustId"),n;try{n=this;$.post("/api/mailsend?confirmationmessages=1",{tenantId:tenantid,CustomerID:t,AppointmentID:n.AppointmentID,ResourceName:n.selectedresource.Fullname,Subject:"",MessageType:"",Message:""}).done(function(){}).fail(function(xhr,textStatus,errorThrown){var err=eval("("+xhr.responseText+")");err.ExceptionMessage;err.Message})}catch(i){}},sendEmailConfirm:function(){var t;try{var i=this,r=this.selectedservices.toJSON(),n=$("<dl>");_.each(r,function(t){n.append("<dt><strong>"+t.Title+"<\/strong> "+t.Duration+" min.<\/dt>")});n.append("<\/dt>");t=null;gNewTimeslotsystem&&(t=n.html());customerid=this.contact.get("id");$.post("/api/mailsend",{tenantId:tenantid,CustomerID:customerid,AppointmentID:i.AppointmentID,ResourceName:i.selectedresource.Fullname,Subject:"Afspraakbevestiging",MessageType:"Confirm",Message:t}).done(function(){}).fail(function(xhr,textStatus,errorThrown){var err=eval("("+xhr.responseText+")");err.ExceptionMessage;err.Message})}catch(u){$.post("/api/mailsend?sarasystem=1",{Email:"info@sarasalonsoft.nl",Subject:"Bevesting online reserveren email niet verzonden.",Message:"tenantid "+tenantid+"CustomerId "+customerid,From:"info@sarasalonsoft.nl"}).done(function(){}).fail(function(xhr,textStatus,errorThrown){var err=eval("("+xhr.responseText+")");err.ExceptionMessage;err.Message})}},sendSMSConfirm:function(){var t;var i=this,r=this.selectedservices.toJSON(),n=$("<dl>");_.each(r,function(t){n.append("<dt><strong>"+t.Title+"<\/strong> "+t.Duration+" min.<\/dt>")});n.append("<\/dt>");t=null;gNewTimeslotsystem&&(t=n.html());customerid=this.contact.get("id");$.post("/api/mailsend?sendsms=1",{tenantId:tenantid,CustomerID:customerid,AppointmentID:i.AppointmentID,ResourceName:i.selectedresource.Fullname,Subject:"Afspraakbevestiging",MessageType:"Confirm",Message:t}).done(function(){}).fail(function(xhr,textStatus,errorThrown){var err=eval("("+xhr.responseText+")");err.ExceptionMessage;err.Message})},sendConfirmMessage:function(n){var t=this.templateConfirmEmail({settings:app.appsettings.toJSON(),selectedresource:this.selectedresource,selectedservice:this.selectedservice.toJSON(),selectedservices:this.selectedservices,contact:this.contact.toJSON(),totalprice:this.totalprice,selecteddate:moment.unix(this.selecteddate).format("DD MMMM YYYY HH:mm"),selectedtime:moment.unix(this.selecteddate).format("HH:mm"),selectedday:moment.unix(this.selecteddate).format("dddd"),ShowOnlinePayment:n,remark:$("#appointmentremarks").val()});$.post(" /api/mailsend?sendmail=1",{TenandId:tenantid,ResourceId:this.selectedresource.id,Subject:"Nieuwe Online afspraak geboekt "+moment.unix(this.selecteddate).format("DD MMMM YYYY"),Message:t})},sendFailedBookingEmail:function(){var n=this;$.post(" /api/mailsend?notificationmessage=1",{CustomerID:n.contact.id,MessageType:"Bookingfailed"})},displayError:function(errormessage){var _thisview,err,restartlink;_thisview=this;typeof errormessage=="string"?(err={},err.Message=errormessage):err=eval("("+errormessage.responseText+")");$("#btnConfirm").removeClass("selectbutton-disabled");var cid=getParameterByName("cid"),restartlink="<div style='text-align:center'><a style='color:white;font-weight:bold' href='/book?cid="+cid+"' >opnieuw proberen<\/a><\/div>",HTMLmessage="";if(err.Message)if(err.Message.includes("Klantenstop"))HTMLmessage="<div class='WarningMessageYellow'><h2><i class='fa fa-hand-paper-o'><\/i> Klantenstop<\/h2><p>Op dit moment accepteren we geen nieuwe klanten. Onze excuses voor het ongemak.<\/p><\/div>",$("#ui-message").html(HTMLmessage+"<br/><br/>"),$("#loadtimes").hide(),$("#appointmentdetails").show(),$("#btnConfirm").hide();else if(err.Message.includes("klantenstop-dienstverlener"))HTMLmessage="<div class='WarningMessageYellow'><h2><i class='fa fa-hand-paper-o'><\/i> Klantenstop<\/h2><p>Vanwege een klantenstop voor deze dienstverlener accepteren momenteel geen nieuwe afspraken. We raden aan contact met ons op te nemen voor verdere informatie.<\/p><\/div>",$("#ui-message").html(HTMLmessage+"<br/><br/>"),$("#loadtimes").hide(),$("#appointmentdetails").show(),$("#btnConfirm").hide();else if(err.Message.includes("klantenstop-dienst"))HTMLmessage="<div class='WarningMessageYellow'><h2><i class='fa fa-hand-paper-o'><\/i> Klantenstop<\/h2><p>Vanwege een klantenstop voor deze behandeling/dienst accepteren momenteel geen nieuwe afspraken. We raden aan contact met ons op te nemen voor verdere informatie.<\/p><\/div>",$("#ui-message").html(HTMLmessage+"<br/><br/>"),$("#loadtimes").hide(),$("#appointmentdetails").show(),$("#btnConfirm").hide();else{if(err.Message.includes("Valideren")){HTMLmessage="<div class='WarningMessageYellow'><i class='fa fa-check'><\/i><span> Je dient eenmalig je email te laten valideren. Je ontvangt een e-mail met een bevestigingslink, klik daarop.<\/span><\/div>";$("#ui-message").html(HTMLmessage+"<br/><br/>");return}if(err.Message.includes("maximaal 20 afspraken per dag")){HTMLmessage="<div class='WarningMessageYellow'><i class='fa fa-exclamation-circle'><\/i><span>  Je kunt maximaal 20 afspraken per dag maken.<\/p><\/div>";$("#ui-message").html(HTMLmessage+"<br/><br/>");$("#btnConfirm").hide();return}if(err.Message.includes("Blacklisted")){HTMLmessage="<div class='WarningMessageYellow'><i class='fa fa-hand-paper-o'><\/i><span>  Momenteel kunt u niet online boeken. Neem telefonisch contact op met ons of via email.<\/div>";$("#ui-message").html(HTMLmessage+"<br/><br/>");$("#loadtimes").hide();$("#appointmentdetails").show();$("#btnConfirm").hide();return}HTMLmessage="<div class='WarningMessageYellow'><i class='fa fa-exclamation-circle'><\/i> <span>"+err.Message+". Neem telefonisch contact op met ons of via email.<\/span><\/div>";$("#ui-message").html(HTMLmessage+"<br/><br/>");restartlink="<div style='text-align:center'><a style='color:black;font-weight:bold' href='/book?cid="+cid+"' >opnieuw proberen<\/a><\/div>";$(".WarningMessageYellow").append(restartlink);$("#btnConfirm").hide()}else HTMLmessage="<div id='ErrorMessage' class='themebordercolor' ><i class='fa fa-exclamation-circle'><\/i> Afspraak niet mogelijk, neem telefonisch contact op of probeer het later nog eens."+restartlink+"<\/div>",$("#ui-message").html(HTMLmessage),$("#btnConfirm").hide()},SendErrorMessage:function(){customer="";this.contact&&(customeremail=this.contact.get("EmailAddress"))},displayErrorOLD:function(err){var _thisview,err,cid,requiredfields;if(_thisview=this,err=eval("("+err.responseText+")"),$("#btnConfirm").removeClass("selectbutton-disabled"),cid=getParameterByName("cid"),ErrMessage=$("<div id='ErrorMessage' class='themebordercolor'><\/div>"),restartlink="<div style='text-align:center'><a class='link' href='/book?cid="+cid+"' >opnieuw proberen<\/a><\/div>",err.Message){if(err.Message.indexOf("valideren")!=-1){$("#errormessageContainer").html("<div id='ErrorMessage' class='themebordercolor' style='margin-top:50px'>"+err.Message+"<\/div><br /> <br />");return}if(err.Message.indexOf("Klantenstop")!=-1){$("#MainContent").html("<div id='ErrorMessage1' class='meldingyellow' >  <h2>Klantenstop<\/h2> <p>Op dit moment accepteren we geen nieuwe klanten. Onze excuses voor het ongemak.<\/p><\/div><br/><br/> ");return}$("#MainContent").html("<div id='ErrorMessage' style='margin-top:50px'>"+err.Message+"  email of neem telefonisch contact op met ons.<\/div><br/><br/>  ");return}if($("#MainContent").html("<div id='ErrorMessage' class='themebordercolor' style='margin-top:50px'>Afspraak niet mogelijk neem telefonisch contact op met ons, of probeer het nog eens.<\/div><br/><br/>"),$("#MainContent").append(restartlink),customer="",this.contact&&(customeremail=this.contact.get("EmailAddress")),$.post(" /api/mailsend?sarasystem=1",{From:"info@sarasalonsoft.nl",Email:"sarasofttest@gmail.com",Subject:"Klant afspraak niet gelukt. voor klantnummer"+cid+" voor klant "+customeremail,Message:"Klant afspraak niet gelukt. voor klantnummer"+cid+" voor klant "+customeremail}),err.ModelState){requiredfields="";_.each(err.ModelState,function(n){requiredfields+="<li>"+n+"<\/li>"});ErrMessage.append(requiredfields);return}if(err.Message){ErrMessage.append(err.Message);return}if(err.ExceptionMessage){ErrMessage.append(err.ExceptionMessage);return}},CreateBookWaitListEntry:function(){var i,n,t;(this.CustomerView.validateFields(),$("#CustomerDetailData").valid()!=!1)&&($("#loadtimes").show(),$("#appointmentdetails").hide(),i=this,$("#btnBookWaitList").hasClass("selectbutton-disabled")||($("#btnBookWaitList").addClass("selectbutton-disabled"),_thisview=this,n={},this.$("#CustomerDetails").find("input").each(function(){var t=$(this);n[t.attr("Id")]=t.val()}),gExtrasettings.ShowFieldBirthday&&(n.Birthdate=moment(this.$("#CustomerDetails").find("#Birthdate").val(),"DD-MM-YYYY").format("MM-DD-YYYY")),this.contact.set("FirstName",$("#FirstName").val()),this.contact.set("LastName",$("#LastName").val()),gCheckMultipleContactsFound&&this.ContactSelectFromList(n),n.NewsLetter=!1,$("#NewsLetter").is(":checked")&&(n.NewsLetter=!0),gNewSaveConsent&&(t=JSON.stringify(CustomerConsents.initialisedConsents),n.ExtraProperties=t,this.contact.set("ExtraProperties",t)),this.contact.url="/api/contact/"+this.contact.id,DummyAccount&&(this.contact.url="/api/contact/"+this.contact.id+"?dummyaccount=true"),this.contact.save(n,{async:!1,success:function(n){var t,r;gCheckMultipleContactsFound&&$("#RememberInput").is(":checked")&&(localStorage.FirstName=_thisview.contact.get("FirstName"),localStorage.LastName=_thisview.contact.get("LastName"));t=[];r="";_.each(_thisview.tobebookedqueue.models,function(n){t.push({ServiceId:n.get("Id"),Title:n.get("Title"),Duration:n.get("Duration")});r+=n.get("Title")+" "+n.get("Duration")+"min <br>"});var u=$("#appointmentremarks").val(),f={CreatedAt:moment.unix(_thisview.selecteddate).format("MM-DD-YYYY HH:mm"),ContactId:n.id,TextField1:JSON.stringify(t),TextField4:"CreatedOnline",TextField5:r,NoteDescription:u};$.ajax({type:"POST",contentType:"application/json",data:JSON.stringify(f),url:"/api/WaitList",success:function(n){$("#loadtimes").hide();$("#appointmentdetails").show();_thisview.ConfirmWaitList(n)}}).fail(function(n){n.responseText.indexOf("ContactExists")?$("#MainContent").html(i.templateConfirm({message:"Je staat al op de lijst. Hou je email in de gaten, zodra een plek vrij komt ontvang je een email"})):_thisview.displayError(n)})}}).fail(function(n){if($("#btnBookWaitList").removeClass("selectbutton-disabled"),gCheckMultipleContactsFound){if(n.responseText){var t=JSON.parse(n.responseText);t.StatusCode=="MultipleContactsFound"?_thisview.DisplayMultipleContactList(t.ListContacts):_thisview.displayError(n)}}else _thisview.displayError(n)})))},ConfirmWaitList:function(){var t=this,n=" Je bent toegevoegd aan de wachtlijst        je krijgt een bericht zodra een tijdslot beschikbaar komt!";n=n.replace(/[\n\r]/g,"<br>");$("#MainContent").html(t.templateConfirm({message:n}))},UpdateAndCreateAppointment:function(n){var i,t;i=gNewTicketModule?this.selectedservices.Total():roundcents(this.selectedservices.TotalizeVAT());$("#btnConfirm").hasClass("selectbutton-disabled")||($("#btnConfirm").addClass("selectbutton-disabled"),_thisview=this,t={},this.$("#CustomerDetails").find("input").each(function(){var n=$(this);t[n.attr("Id")]=n.val()}),this.contact.set("FirstName",$("#FirstName").val()),this.contact.set("LastName",$("#LastName").val()),t.NewsLetter=!1,$("#NewsLetter").is(":checked")&&(t.NewsLetter=!0),this.contact.url="/api/contact/"+this.contact.id,DummyAccount&&(this.contact.url="/api/contact/"+this.contact.id+"?dummyaccount=true"),this.contact.save(t,{async:!1,success:function(t){var r=[],i=0;_.each(_thisview.tobebookedqueue.models,function(n,u){var f=n.get("Duration"),c,o,s,e,h,l;n.get("BufferTime")&&(c=0,c=_thisview.GetBufferTime(n),f+=c);u==0?(o=moment.unix(_thisview.selecteddate),i=f*1,s=moment.unix(_thisview.selecteddate).add(f,"m"),e=n.get("ProcessTime")*1,i=i+e):(o=moment.unix(_thisview.selecteddate).add(i,"m"),s=moment.unix(_thisview.selecteddate).add(i+f,"m"),i=i+f*1,e=n.get("ProcessTime")*1,i=i+e);h=new Appointment;DummyAccount==!0?(l=$("#Password").val(),$("#Password").val()==""&&(l="na"),h.url="/api/appointment?customerid="+t.id+"&password="+l):h.url="/api/appointment";r.push(h.save(_thisview.CreateNewAppointment(o,s,n)));u++});$.when.apply(this,r).done(function(){if(n)gNewTicketModule?_thisview.CreateTicket2(!0):_thisview.CreateTicket(!0);else _thisview.sendConfirmMessage(),_thisview.confirmMessage(!1)}).fail(function(n){$("#btnConfirm").removeClass("selectbutton-disabled");_thisview.displayError(n)})}}).fail(function(n){$("#btnConfirm").removeClass("selectbutton-disabled");_thisview.displayError(n)}))},CreateTicket:function(){var f,i,n,e,h;var u=this,c=new Date,r=this.NewAppointments.models[0],o=r.get("AppointmentID"),s=r.get("start"),t=moment(s);t.set("hour",moment().get("hour"));t.set("minute",moment().get("minute"));f=new TicketsCollection;f.url=DummyAccount==!0?"/api/ticket?customerid="+this.contact.id:"/api/ticket";i=new Ticket({Title:r.get("title"),CustomerID:r.get("CustomerID"),Status:"Open",TicketDate:t});f.add(i);n=new TicketItems;_.each(this.NewAppointments.models,function(i){var r;ticketitem=new TicketItem;r=null;try{r=JSON.parse(i.get("Tool"))}catch(u){}if(r!=null){if(!r.createticket)return;r=JSON.parse(i.get("Tool"));ticketitem.set({TicketDate:t,TicketItemType:"Service",TicketDate:t,TicketItemType:"Service",ContactId:i.get("CustomerID"),AppointmentId:i.get("id"),ResourceId:i.get("resourceId"),ResourceName:i.get("resourceName"),ServiceId:i.get("ServiceId"),ServiceName:r.Title,TaxType:r.TaxType,Price:r.Price,Category:r.Category,OrginalPrice:r.Price,tenantId:i.get("tenantId")})}else ticketitem.set({TicketDate:t,TicketItemType:"Service",ContactId:i.get("CustomerID"),AppointmentId:i.get("id"),ResourceId:i.get("resourceId"),ResourceName:i.get("resourceName"),ServiceId:i.get("ServiceId"),ServiceName:i.get("Service"),TaxType:i.get("TaxType"),Price:i.get("Price"),Category:i.get("Category"),OrginalPrice:i.get("Price"),tenantId:tenantid});n.add(ticketitem)});i.set("ticketitems",n.toJSON());n.Totalise();e=!1;h=u.contact.id;DummyAccount||(e=!0);i.save({Price:n.TotalPrice,TotalAmount:n.TotalPrice,TotalAmountVAT:n.TotalAmountVAT,TotalVAT:n.TotalVAT,TotalVATHigh:n.TotalVATHigh,TotalVATLow:n.TotalVATLow,tenantId:tenantid}).done(function(){var t,r;TicketId=i.get("Id");t=n.TotalAmountVAT;t<1&&(t=1);Onlinepaymentv2?(r="/Paymentv2?cid="+tenantid+"&Category="+Category+"&service="+serviceId+"&r="+resourceId+"&b="+BookedDateTime+"&amount=0&TicketId="+TicketId+"&AppointmentID="+o+"&CustId="+u.contact.id+"&Account="+e,window.open(r,"_blank")):document.location="/Payment?cid="+tenantid+"&Category="+Category+"&service="+serviceId+"&r="+resourceId+"&b="+BookedDateTime+"&amount=0&TicketId="+TicketId+"&AppointmentID="+o+"&CustId="+u.contact.id+"&Account="+DummyAccount})},RenderExtraPropertiesxxx:function(){var n=this;try{_.each(n.selectedservices.models,function(t){var u=t.get("ExtraProperties"),r,i;u!=null&&(r=JSON.parse(u),r.OnlinePaymentMandatory&&(n.$("#onlinepayment").click(),n.$("#cashcontrol").hide(),IsGlobalPrepayment()&&(i=parseInt(gExtrasettings.GlobalPrePaidmentValue),isNaN(i)||i!=0&&(n.prepaymentpercentage=i,n.$(".prepaidcontainer").show()))),r.DuoBooking&&n.$(".ServiceProviderDetails").hide())})}catch(t){}},ValidateRecaptcha:function(n){var t=this;$.ajax({type:"GET",url:"/api/appointment?grecaptchtoken="+n,dataType:"json",success:function(){alert("validated");t.StartBookingProcess();$("#btnConfirm").removeClass("selectbutton-disabled")},error:function(){$("#btnConfirm").addClass("selectbutton-disabled");alert("boeking maken gaat op moment niet.")}})}});var ResourcesListView=Backbone.View.extend({tagName:"div",id:"resourceslist",events:{},initialize:function(){this.OnlineBookingView=this.options.parent},selectresource:function(){},render:function(){_thisview=this;var n=$("<dl class='resourceslist'> <\/dl>"),t=0;return _.each(this.collection,function(i){var r;t==0&&(gShowNoPreference||(r=new ResourceItem({model:null,OnlineBookingView:_thisview.OnlineBookingView}),n.append(r.render().el)));r=new ResourceItem({model:i,OnlineBookingView:_thisview.OnlineBookingView});n.append(r.render().el);t++}),_thisview.$el.append(n),this}}),ResourceItem=Backbone.View.extend({tagName:"dd",iconUnchecked:"fa-circle-o",iconChecked:"fa-check-circle",events:{click:"selectresource"},initialize:function(){this.OnlineBookingView=this.options.OnlineBookingView},selectresource:function(){var n=$(this.el).attr("data-resourceid");$(this.el).hasClass("ui-state-active2")||($("#resourceslist").find(".selecticon i").removeClass(this.iconChecked).addClass(this.iconUnchecked),$("#resourceslist").find("dd").removeClass("ui-state-active2"),$(this.el).find(".selecticon i").removeClass(this.iconUnchecked).addClass(this.iconChecked),$(this.el).addClass("ui-state-active2"),this.OnlineBookingView.changeSelectedResource(n))},render:function(){var n=this.model,t;return this.model==null?($(this.el).attr("data-resourceid",0),$(this.el).append('<div style="width:49px;height:49px;border-radius:50%;background:#f0f0f0;float: left;margin-right:5px;"><i class="fa fa-users fa-2x" style="float: left;margin-right: 10px;color: #DADADA;margin-left: 8px;margin-top: 9px;"><\/i><\/div>'),$(this.el).append("<div class='resouritem' data-resourceid=0 style='margin-top:10px;'><span class='titlelabel'>Geen voorkeur<\/span><span class='selecticon' style='float:right'><i class='fa "+this.iconUnchecked+"'><\/i><\/span><\/div>"),$(this.el).append("<div style='clear:both'><\/div>")):($(this.el).attr("data-resourceid",n.id),n.ProfileImageUrl==""||n.ProfileImageUrl==null?$(this.el).append('<div class="resourcestatus" style="width:49px;height:49px;border-radius:50%;background:#e9e9e9;float: left;margin-right:4px;"><i class="fa fa-user fa-2x" style="float: left;margin-right: 10px;color: #DADADA;margin-left: 12px;margin-top: 5px;"><\/i><\/div>'):(t="<div style='background-image:url([profileimage])' class='profileimageitem'   ><\/div>",t=t.replace("[profileimage]",n.ProfileImageUrl),$(this.el).append(t)),$(this.el).append("<div class='resouritem' data-resourceid="+n.id+" style='margin-top:10px;'><span class='titlelabel'>"+n.Fullname+"<\/span><span class='selecticon' style='float:right'><i class='fa "+this.iconUnchecked+"'><\/i><\/span><br/><span class='jobtitle' style='font-size:12px;color:#a0a0a0'>"+n.JobTitle+"<\/span><\/div>"),$(this.el).append("<div style='clear:both'><\/div>")),this}}),ResourcesListViewDuoBooking=Backbone.View.extend({tagName:"div",id:"resourceslist",events:{},initialize:function(){this.OnlineBookingView=this.options.parent},selectresource:function(){},render:function(){_thisview=this;var n=$("<dl class='resourceslist'> <\/dl>"),t=0;return _.each(this.collection,function(i){var r;t==0&&(gShowNoPreference||(r=new ResourceItemDuoBooking({model:null,OnlineBookingView:_thisview.OnlineBookingView}),n.append(r.render().el)));r=new ResourceItemDuoBooking({model:i,OnlineBookingView:_thisview.OnlineBookingView});n.append(r.render().el);t++}),_thisview.$el.append(n),this}}),ResourceItemDuoBooking=Backbone.View.extend({tagName:"dd",iconUnchecked:"fa-circle-o",iconChecked:"fa-check-circle",events:{click:"selectresource"},initialize:function(){this.OnlineBookingView=this.options.OnlineBookingView},selectresource:function(){var n=$(this.el).attr("data-resourceid");if(n==0){$("#resourceslist").find(".selecticon i").removeClass(this.iconChecked).addClass(this.iconUnchecked);$("#resourceslist").find("dd").removeClass("ui-state-active2");this.OnlineBookingView.changeSelectedResource(n);return}$(this.el).hasClass("ui-state-active2")?($(this.el).find(".selecticon i").removeClass(this.iconUnchecked),$(this.el).removeClass("ui-state-active2")):$(".resourceslist .ui-state-active2").length<2&&($(this.el).find(".selecticon i").removeClass(this.iconUnchecked).addClass(this.iconChecked),$(this.el).addClass("ui-state-active2"),18&&($("#datepicker").hide(),$("#timepicker").hide()));$(".resourceslist .ui-state-active2").length==2?this.OnlineBookingView.changeSelectedResource(0):($("#datepicker").hide(),$("#timepicker").hide())},render:function(){var n=this.model,t;return this.model==null?($(this.el).attr("data-resourceid",0),$(this.el).append('<div style="width:49px;height:49px;border-radius:50%;background:#f0f0f0;float: left;margin-right:5px;"><i class="fa fa-users fa-2x" style="float: left;margin-right: 10px;color: #DADADA;margin-left: 8px;margin-top: 9px;"><\/i><\/div>'),$(this.el).append("<div class='resouritem' data-resourceid=0 style='margin-top:10px;'><span class='titlelabel'>Geen voorkeur<\/span><span class='selecticon' style='float:right'><i class='fa "+this.iconUnchecked+"'><\/i><\/span><\/div>"),$(this.el).append("<div style='clear:both'><\/div>")):($(this.el).attr("data-resourceid",n.id),n.ProfileImageUrl==""||n.ProfileImageUrl==null?$(this.el).append('<div class="resourcestatus" style="width:49px;height:49px;border-radius:50%;background:#e9e9e9;float: left;margin-right:4px;"><i class="fa fa-user fa-2x" style="float: left;margin-right: 10px;color: #DADADA;margin-left: 12px;margin-top: 5px;"><\/i><\/div>'):(t="<div style='background-image:url([profileimage])' class='profileimageitem'   ><\/div>",t=t.replace("[profileimage]",n.ProfileImageUrl),$(this.el).append(t)),$(this.el).append("<div class='resouritem' data-resourceid="+n.id+" style='margin-top:10px;'><span class='titlelabel'>"+n.Fullname+"<\/span><span class='selecticon' style='float:right'><i class='fa "+this.iconUnchecked+"'><\/i><\/span><br/><span class='jobtitle' style='font-size:12px;color:#a0a0a0'>"+n.JobTitle+"<\/span><\/div>"),$(this.el).append("<div style='clear:both'><\/div>")),this}}),gPartOfDay="",ServicesList=Backbone.View.extend({tagName:"div",id:"serviceslist",className:"servicescollapse",onlinebooking:!1,render:function(){$(this.el).empty();var i=_.groupBy(this.collection.models,function(n){return n.attributes.Category.Group}),n=this,t=0;return _.each(i,function(i,r){t++;var u=$("<dl class='onlineservicelist'> <\/dl>");u.append("<dt><strong>"+r+"<i class='fa fa-chevron-right' style='float:right;color:#c0c0c0'><\/i><\/strong><\/dt>");_.each(i,function(n){var t=new ServiceItem({model:n});t.parent=this;u.append(t.render().el)});n.$el.append(u)}),n.$el.find("dl dt").last().addClass("lastcategory"),(Category==""||Category=="nvt")&&n.$("dt").click(function(){$(this).nextUntil("dt").toggle();var n=$(this).find("i").hasClass("fa-chevron-right");n===!0?$(this).find("i").removeClass("fa-chevron-right").addClass("fa-chevron-down"):$(this).find("i").removeClass("fa-chevron-down").addClass("fa-chevron-right");$(this).hasClass("lastcategory")}),t==1&&n.$("dt").click(),this}}),ServiceItem=Backbone.View.extend({tagName:"dd",events:{"click .more":"moreless",click:"multiselect"},initialize:function(){$(this.el).attr("Id",this.model.get("Id"))},iconUnchecked:"fa-circle-o",iconChecked:"fa-check-circle",moreless:function(n){n.stopPropagation();n.preventDefault();$(".shortdescription",this.el).is(":visible")?($(".shortdescription",this.el).hide(),$(".longdescription",this.el).show()):$(".longdescription",this.el).is(":visible")&&($(".longdescription",this.el).hide(),$(".shortdescription",this.el).show())},SearchPropertyFromServiceItems:function(n){var i=this,t=0;try{_.each(app.onlinebookingview.selectedservices.models,function(i){var r=i.get("ExtraProperties"),u,f;r!=null&&(u=JSON.parse(r),f=u[n],f==!0&&t++)})}catch(r){return!1}return t>0},Ismember:function(n,t){var r=n.split(","),i=[];return _.each(r,function(n){t.indexOf(n)>-1&&i.push(n)}),i.join(",")},CheckDayParts:function(n){var i=this,t;return gPartOfDay="",t=!0,_.each(n.filterByDayPart().models,function(n,r){var f=n._ExtraProperties.PartOfDay,u;r>0?(u=i.Ismember(f,gPartOfDay),u==""?t=!1:gPartOfDay=u):gPartOfDay=f}),t},disableService:function(n){var t=this;$(".NotAvailable").removeClass("NotAvailable");_.each(_thisapp.ResourceServicesList.filterByDayPart().models,function(i){var r=i._ExtraProperties.PartOfDay,u=t.Ismember(r,n);u==""?(console.log(i.id,"not found"),$("#"+i.id).addClass("NotAvailable")):console.log(i.id," found")})},multiselect:function(n){var r,u,f,t,e,i;if(console.log("mulitselect"),n.preventDefault(),n.stopPropagation(),$("#timepickercontainer").hide(),$("#RegisterWaitList").hide(),$(this.el).hasClass("ui-state-active2")){if($(this.el).find("."+this.iconChecked).removeClass(this.iconChecked).addClass(this.iconUnchecked),app.onlinebookingview.selectedservices.remove(this.model),$(this.el).removeClass("ui-state-active2"),gCheckPartDay&&this.CheckDayParts(app.onlinebookingview.selectedservices)==!1){$("#ui-message").notify("show",{type:"error",iconerror:"",autohidedelay:3e3,closebutton:!0,autohide:!0,closebutton:!0,message:"Dagdeel combinatie niet mogelijk "+gPartOfDay});return}}else{if(gSingleSelect&&app.onlinebookingview.selectedservices.length==1&&(r=app.onlinebookingview.selectedservices.at(0),app.onlinebookingview.selectedservices.remove(r),$("#serviceslist dd").removeClass("ui-state-active2")),app.onlinebookingview.selectedservices.add(this.model),gCheckPartDay&&this.CheckDayParts(app.onlinebookingview.selectedservices)==!1){u=this.model._ExtraProperties.PartOfDay;$("#ui-message").notify("show",{type:"error",iconerror:"",autohidedelay:3e3,closebutton:!0,autohide:!0,closebutton:!0,message:"Dagdeel combinatie is niet mogelijk: "+translate(u)+"  en "+translate(gPartOfDay)});app.onlinebookingview.selectedservices.remove(this.model);return}if(gDuoBooking&&this.SearchPropertyFromServiceItems("DuoBooking")&&app.onlinebookingview.selectedservices.length>1){app.onlinebookingview.selectedservices.remove(this.model);$("#ui-message").notify("show",{type:"error",iconerror:"",autohidedelay:3e3,closebutton:!0,autohide:!0,closebutton:!0,message:"Niet mogelijk om duo behandeling in combinatie te boeken."});return}$(this.el).find("."+this.iconUnchecked).removeClass(this.iconUnchecked).addClass(this.iconChecked);$(this.el).addClass("ui-state-active2")}app.onlinebookingview.selectedservice=this.model;app.onlinebookingview.totalduration=0;app.onlinebookingview.totalprice=0;f=_.template($("#ShoppingbasketTemplate").html());$("#shoppingcartplaceholder").html(f({selectedservices:app.onlinebookingview.selectedservices.toJSON()}));app.onlinebookingview.selectedservices.length>0?($("#SelectDateTimeMessage").hide(),$("#FooterServices").slideDown(),largescreen||$(".nextbutton").show(),t=app.onlinebookingview.selectedservices.TotalDuration(),this.CreateAppointmentArray(t),ShowPrices&&(gShowSmallFractionPrice?(e=displaySmallFractionPrice(app.onlinebookingview.selectedservices.Total()),$("#totalprice").html(e)):$("#totalprice").html(accounting.formatMoney(app.onlinebookingview.selectedservices.Total()))),$("#totalservices").html(app.onlinebookingview.selectedservices.length),$("#totalservicestime").html(t+" min "),i=app.onlinebookingview.selectedservices.TotalDurationWithBuffer(),app.onlinebookingview.totalduration=i,gGlobalbufferfix&&IsGlobalBuffer()==!0&&(app.onlinebookingview.totalduration=i+gExtrasettings.GlobalbuffertimeValue*1),gDynamicresources&&app.onlinebookingview.getDynamicResourcesforService(this.model.get("Id")),ActieStartDate!="",largescreen&&(gShowResourcesAsList||($("#datepicker").show(),$("#timepicker").show(),$(".ui-datepicker-calendar .ui-state-active").trigger("click"))),$("#selectresource-container").show(300)):($("#ui-message").html(""),$("#FooterServices").hide(),$("#container-datetimepickers").hide(),$("#SelectDateTimeMessage").show(),$("#totalprice").html(""),$("#totalservices").html(""),$("#datepicker").hide(),$("#timepicker").hide(),$(".nextbutton").hide(),$("#totalservicestime").html("0 min "),$("#selectresource-container").hide(300),$(".selectbutton").addClass("selectbutton-disabled"),$(".navto_datetime").hide(300),$("#datepickerExtraInfo").hide())},CreateAppointmentArray:function(n){if(gNewTimeslotsystem){AppointmentAsArray=[];var i=n/5,t=app.onlinebookingview.selectedservices.models.length-1;_.each(app.onlinebookingview.selectedservices.models,function(n,i){var u,r;if(n.get("CombinedServices"))CreatArrayTimeSlots(n,AppointmentAsArray);else{for(timeslotstaken=n.get("Duration")/5,r=0;r<timeslotstaken;r++)AppointmentAsArray.push(1);for(u=0,IsGlobalBuffer()==!1?n.get("BufferTime")&&(gNewBuffertime?i==t&&(u=GetBufferTime(n,"Duration"),u=u/5):(u=GetBufferTime(n,"Duration"),u=u/5)):i==t&&(u=gExtrasettings.GlobalbuffertimeValue/5),r=0;r<u;r++)AppointmentAsArray.push(1);for(timesloteopen=n.get("ProcessTime")/5,r=0;r<timesloteopen;r++)AppointmentAsArray.push(0)}})}},render:function(){var n=this.model,t="",i,r,f,e,o,u,s,h;return ShowPrices&&(t=gShowSmallFractionPrice?displaySmallFractionPrice(n.get("Price")):accounting.formatMoney(n.get("Price"))),i=n.get("Title").length>200?n.get("Title").substring(0,199)+"...":n.get("Title"),gPrestatiecodes?(i=i.replace(/^\d+\s*\|/," "),$(this.el).append("<div><span class='titlelabel'>"+i+"<\/span><span class='selecticon' style='float:right'><i class='fa "+this.iconUnchecked+"'><\/i><\/span><\/div>")):$(this.el).append("<div><span class='titlelabel'>"+i+"<\/span><span class='selecticon' style='float:right'><i class='fa "+this.iconUnchecked+"'><\/i><\/span><\/div>"),$(this.el).append("<div style='clear:both'><\/div>"),r=n.get("Duration"),tenantid==7436&&(f=n.get("Price"),f==0&&(t="")),getParameterByName("sId")==""&&this.model._ExtraProperties.OnlyBookableDirectLink&&$(this.el).attr("class","hideService"),this.IsActionPrice(this.model)?($(this.el).append("<div class='ActionPrice' style='float:right;'><b style='text-decoration: line-through' >"+t+"<\/b><\/div>"),$(this.el).append("<div class='normalprice'><span class='durationlabel'><i class='fa fa-clock-o 1x'><\/i>"+r+"min <\/span><span style='float:right'><b>"+displaySmallFractionPrice(this.model._ExtraProperties.bookableNormalPrice)+"<\/b><\/div>")):this.IsDiscountPrice(this.model)?(e=this.model._ExtraProperties.DiscountPrice*1,o=this.model.get("Price")*1-e,$(this.el).append("<div class='discountpricecontainer' > <div class='ActionPrice' style='float:right;'><b style='text-decoration: line-through' >"+displaySmallFractionPrice(o)+"<\/b><\/div><div class='normalprice'><span class='durationlabel'><i class='fa fa-clock-o 1x'><\/i>"+r+"min <\/span><span style='float:right'><b>"+t+"<\/b><\/div><\/div>")):$(this.el).append("<div ><span class='durationlabel'><i class='fa fa-clock-o 1x'><\/i>"+r+"min <\/span><span style='float:right'><b>"+t+"<\/b><\/div>"),$(this.el).append("<div style='clear:both'><\/div>"),n.get("Description")!==null&&typeof n.get("Description")!="undefined"&&(u=n.get("Description"),u.length>162?(s=n.get("Description").substring(0,162)+"...",h=n.get("Description"),$(this.el).append('<div class="shortdescription">'+s+'<span class="more">meer<\/span><\/div>'),$(this.el).append("<div class=\"longdescription\" style='display:none'>"+h+'<span class="more">minder<\/span><\/div>')):$(this.el).append('<div class="shortdescription">'+u+"<\/div>")),gCheckPartDay,(Category==""||Category=="nvt")&&$(this.el).attr("style","display:none"),this},IsActionPrice:function(n){try{var t=n._ExtraProperties.SpecificBookDateOptions,i=n._ExtraProperties.bookableNormalPrice;if(t!=undefined&&t!==""&&(t=="SpecificPeriode"||n._ExtraProperties.SpecificPeriodeDatesSwitch))return i!=undefined&&i!==""?!0:!1}catch(r){return console.log("error IsActionPeriod"+r),!1}},IsDiscountPrice:function(n){try{if(n._ExtraProperties.DiscountPriceSwitch!=undefined&&n._ExtraProperties.DiscountPriceSwitch){var t=n._ExtraProperties.DiscountPriceStart,i=n._ExtraProperties.DiscountPriceEnd,u=n._ExtraProperties.DiscountPrice;if(u!==undefined&&u!==""&&t!==undefined&&t!==""&&i!==undefined&&i!==""){var f=moment(),o=moment(t,"DD-MM-YYYY").format("MM"),r=moment(i,"DD-MM-YYYY");if(r=r.add(1,"day"),f<=r)return!0}}return!1}catch(e){return console.log("error IsActionPeriod"+e),!1}},IsActionService:function(n){var t=!1,i;try{if(i=n._ExtraProperties.SpecificBookDateOptions,i!==undefined&&i!==""&&(i=="SpecificPeriode"||n._ExtraProperties.SpecificPeriodeDatesSwitch)&&(t=!0),t)return t;_.each(app.onlinebookingview.selectedservices.models,function(i){var r=i._ExtraProperties.SpecificBookDateOptions;r!==undefined&&r!==""&&r=="SpecificPeriode"&&(t=!0);n._ExtraProperties.SpecificPeriodeDatesSwitch&&(t=!0)})}catch(r){}return t},initOnlineBooking:function(){app.onlinebookingview.totalduration=0;app.onlinebookingview.totalprice=0;app.onlinebookingview.selectedservice=this.model;app.onlinebookingview._servicescollection=[];app.onlinebookingview.timeslotbuttonObjects=[];app.onlinebookingview.selectedresourceindex=-1;app.onlinebookingview.availablityitems=null;app.onlinebookingview.response=null;app.onlinebookingview.AvailableResources={};app.onlinebookingview.AvailableBydate={};app.onlinebookingview.selectedresource=null;app.onlinebookingview.resourcePossibleTimes=null;app.onlinebookingview.AllResourceAvailableTimes=null;app.onlinebookingview.possibletimes=null;app.onlinebookingview.rendered2=!1;app.onlinebookingview.continueBeforeShowDay=!0;app.onlinebookingview.servicesChildview=null;$(".selectbutton").addClass("selectbutton-disabled");$("#timepickerheader").hide();$("#timepicker").html("");gDynamicresources||app.onlinebookingview.getresourcesforService(this.model.get("Id"));return}});TicketItem=Backbone.Model.extend({idAttribute:"Id"});var TicketItems=Backbone.Collection.extend({model:TicketItem,url:"/api/ticketitem",Total:function(){return this.reduce(function(n,t){return n+t.get("Price")*1},0)},TotalizeVAT:function(){return this.reduce(function(n,t){return n+inclVAT(t.get("Price"),t.get("TaxType"))*1},0)},TotalRewardPoints:function(){return this.reduce(function(n,t){var i=t.get("RewardPoints");return i=i==null?0:i,n+i},0)},Totalise:function(){var n=app.appsettings.get("VATLow")/100,t=app.appsettings.get("VATHigh")/100;this.TotalVATLow=this.byTaxtype("Low").Total()*n;this.TotalVATHigh=this.byTaxtype("High").Total()*t;this.TotalVAT=this.TotalVATLow+this.TotalVATHigh;this.TotalPackageAmountVAT=this.byPackages().TotalizeVAT();this.TotalPrice=this.Total();this.TotalAmountVAT=this.TotalizeVAT()},byPackages:function(){return filtered=this.filter(function(n){return n.get("UsedPackageId")!=null}),new TicketItems(filtered)},byGiftCardsbyContactId:function(n){return filtered=this.filter(function(t){return t.get("SpecialType")=="GiftCard"&&t.get("ContactId")==n}),new TicketItems(filtered)},groupby:function(n){return Grouped=this.groupBy(n)},byTaxtype:function(n){return filtered=this.filter(function(t){return t.get("TaxType")==n}),new TicketItems(filtered)},byTicketType:function(n){return filtered=this.filter(function(t){return t.get("TicketItemType")===n}),new TicketItems(filtered)},byContactId:function(n){return filtered=this.filter(function(t){return t.get("ContactId")===n}),new TicketItems(filtered)},allServices:function(){return filtered=this.filter(function(n){return n.get("ServiceId")!=null}),new TicketItems(filtered)},allProducts:function(){return filtered=this.filter(function(n){return n.get("ProductId")!=null}),new TicketItems(filtered)},allSpecials:function(){return filtered=this.filter(function(n){return n.get("SpecialId")!=null}),new TicketItems(filtered)}}),Ticket=Backbone.Model.extend({idAttribute:"Id",defaults:{TicketType:"Ticket",TotalAmount:"0.00",TotalAmountVAT:"0.00",TotalVAT:"0.00",VAT:"0",PayByCash:"0.00",PayByCheck:"0.00",PayByGift:"0.00",PayByHouse:"0.00",PayByCreditCard1:"0.00",PayByCreditCard2:"0.00",PayByCreditCard3:"0.00",TotalPackageAmountVAT:"0.00",Discount:"0",RewardPoints:"0.00"},initialize:function(){this.ticketitems},parse:function(n){return this.ticketitems=new TicketItems(n.TicketItems||null,{parse:!0}),delete n.TicketItems,date=new Date(n.TicketDate),n}}),TicketsCollection=Backbone.Collection.extend({model:Ticket,filteredStatus:"",url:"/api/ticket",byStatus:function(n){return filtered=this.filter(function(t){return t.get("Status")==n}),new TicketsCollection(filtered)},byTicketType:function(n){return filtered=this.filter(function(t){return t.get("TicketType")==n}),new TicketsCollection(filtered)},byContactID:function(n){return filtered=this.filter(function(t){return t.get("ContactID")==n}),new TicketsCollection(filtered)},TotalBy:function(n){return this.reduce(function(t,i){return t+i.get(n)*1},0)},groupby:function(n){return Grouped=this.groupBy(n)},GroupTotal:function(n,t,i){return filtered=this.filter(function(i){return i.get(n)==t}),filtered.reduce(function(n,t){return n+t.get(i)},0)}});window.PossibleTimes=Backbone.View.extend({template:_.template($("#timeslotsbuttons").html()),selectedservice:null,selectedservices:null,selecteddate:null,selectedtime:null,initialize:function(){_.bindAll(this);this.render()},events:{"click a":"selecttime"},render:function(){var n=$("<table class='ui-timepicker'><\/table>"),t=$("<tr><\/tr>"),i=1;return _.each(this.options.timeslots,function(r){var f=r.split(":")[0],u=r.split(":")[1];u=u.toString()=="0"?"00":u.toString();gExtrasettings.ShowOnlyJoiningTimesSlot?n.append("<tr><td ><a style='width:250px' href='#' hour='"+f+"'  minute='"+u+"'>"+f+":"+u+"<\/a><\/td><\/tr>"):(i==5&&(n.append(t),t=$("<tr><\/tr>"),i=1),i++,t.append("<td><a href='#' hour='"+f+"'  minute='"+u+"'>"+f+":"+u+"<\/a><\/td>"))}),n.append(t),containerdiv=$("<div class='timepickercontainer'><\/div>"),containerdiv.append("<h1 class='plannerheader'><i class='fa fa-clock-o 1x'><\/i> Kies tijd<\/h1>"),containertimeslots=$("<div class='timeslotscontainer'><\/div>"),$(this.el).html(containerdiv.append(containertimeslots.append(n))),containerdiv.append("<div id='selectedDateTime'> <\/div>"),this.delegateEvents(),this},selecttime:function(n){var t,i;n.preventDefault();$(".ui-timepicker .ui-state-active").removeClass("ui-state-active");$(n.target).addClass("ui-state-active");hour=$(n.target).attr("hour");minute=$(n.target).attr("minute");this.hour=hour;this.minute=minute;this.selectedtime=hour+":"+minute;t=new Date($("#datepicker").datepicker("getDate"));$("#selectedDateTime").html("<h1 class='plannerheader' style='border-top:1px solid #d0d0d0;margin-top:5px;color:black !important;font-weight:bol !important' >"+moment(t).format("dddd DD MMM")+" om "+this.selectedtime+"<\/h1>");i=getParameterByName("AppId");i!=""?$("#MoveAppointmentContainer").show():$("#btnReserve").removeClass("selectbutton-disabled");gSkipVolgendeButton&&this.reserve()},selectresource:function(n){var i,t;return(gPreferStaff&&(localStorage.preferredstaff=!1),selectedresource=this.options.selectedresource,selectedresource!=null)?(gPreferStaff&&(localStorage.preferredstaff=!0),selectedresource.id):(i=this.options.Alltimeslots,kandidaten=[],t=-1,_.each(i,function(i,r){r!="0"&&i.indexOf(n)>-1&&(i.length>=t&&kandidaten.push({resourceid:r,slots:i.length}),t=i.length)}),kandidaten=_.sortBy(kandidaten,function(n){return n.slots}),kandidaten=kandidaten.reverse(),kandidaten[0].resourceid)},reserve:function(){var e=this,t,i,f,n,u;if($("#btnReserve").addClass("selectbutton-disabled"),selecteddate=moment($("#datepicker").datepicker("getDate")).format("YYYY-MM-DD"),t=$("#datepicker").datepicker("getDate"),t.setHours(this.hour),t.setMinutes(this.minute),cid=tenantid,i=[],this.options.selectedservices.models.length>0?(_.each(this.options.selectedservices.models,function(n){typeof n.get("OrigId")!="undefined"||i.push(n.get("Id"))}),s=i.join(",")):s=this.options.selectedservice.get("Id"),f=this.hour+":"+this.minute,r=this.selectresource(f),gDuoBooking&&duobookingfound){if(this.options.selectedservices.models.length>1){alert("Een van de gekozen behandelingen is een duo behandeling deze kunnen niet in combinatie geboekt worden. Herstel dit eerst.");return}r=gduoresourcesids.join("-")}if(b=moment(t).format("X"),n="/account/dummysignIn?cid="+cid+"&Category="+Category+"&service="+s+"&r="+r+"&b="+b+"&Custid=0",u=getParameterByName("nid"),u!=""&&(n="/account/dummysignIn?cid="+cid+"&Category="+Category+"&service="+s+"&r="+r+"&b="+b+"&Custid=0&nid="+u),authenticated=="True"&&(n=location.href.indexOf("mobile")==-1?"/book/reserve?cid="+cid+"&Category="+Category+"&service="+s+"&r="+r+"&b="+b:"/book/reserve?cid="+cid+"&Category="+Category+"&service="+s+"&r="+r+"&b="+b+"&mobile=1"),gNoAppReload){this.ShowReserveViewPage(n,Category,s,r,b);return}window.location=n},ShowReservePage:function(n,t,i,r,u){t=t;Service=i;Resource=r;BookedDateTime=u;DummyAccount=authenticated=="True"?!1:!0;serviceId=i;resourceId=r.toString();t=t;serviceId=i;resourceId=r.toString();FeatureMultipleContacts=1;var f="cid="+cid+"&Category="+t+"&service="+i+"&r="+r+"&b="+u+"&Custid=0";app.navigate("#reserve/"+f);app.reserve("#reserve/"+f)},ShowReserveViewPage:function(n,t,i,r,u){var s,e,o;t=t;Service=i;Resource=r;BookedDateTime=u;DummyAccount=authenticated=="True"?!1:!0;serviceId=i;resourceId=r.toString();t=t;serviceId=i;resourceId=r.toString();FeatureMultipleContacts=1;s="cid="+cid+"&Category="+t+"&service="+i+"&r="+r+"&b="+u+"&Custid=2";history.pushState({},"Titel van de pagina",n);var f=new ReserveView,h=i,c=h.split(",");f.tobebookedqueue=new Services;e=new Services;_.each(this.options.selectedservices.models,function(n){e.add(n);n.get("CombinedServices")?InjectResourceService(f.tobebookedqueue,n):f.tobebookedqueue.add(n)});o=this.options.parent.AvailableResources[r];f.selectedservice=e.models[0];f.selectedservices=e;f.selectedresource=o;f.selecteddate=u;f.contact=gConsumerContact;$("#MainContentConfirmBooking").html(f.render().el);$("#MainContent").hide();$("#MainContentConfirmBooking").show();window.scrollTo(0,0)},reserveOLD:function(){var o=this,n,t,e,i,u,f;if($("#btnReserve").addClass("selectbutton-disabled"),selecteddate=moment($("#datepicker").datepicker("getDate")).format("YYYY-MM-DD"),n=$("#datepicker").datepicker("getDate"),n.setHours(this.hour),n.setMinutes(this.minute),cid=tenantid,t=[],this.options.selectedservices.models.length>0?(_.each(this.options.selectedservices.models,function(n){typeof n.get("OrigId")!="undefined"||t.push(n.get("Id"))}),s=t.join(",")):s=this.options.selectedservice.get("Id"),e=this.hour+":"+this.minute,r=this.selectresource(e),gDuoBooking&&duobookingfound){if(this.options.selectedservices.models.length>1){alert("Een van de gekozen behandelingen is een duo behandeling deze kunnen niet in combinatie geboekt worden. Herstel dit eerst.");return}r=gduoresourcesids.join("-")}b=moment(n).format("X");gExtrasettings.OnlineLoginNotRequired==!0?gNoAppReload?(Category=Category,Service=s,Resource=r,BookedDateTime=b,DummyAccount=!0,serviceId=s,resourceId=r.toString(),Category=Category,serviceId=s,resourceId=r.toString(),FeatureMultipleContacts=1,i="cid="+cid+"&Category="+Category+"&service="+s+"&r="+r+"&b="+b+"&Custid=0",app.navigate("#reserve/"+i),app.reserve("#reserve/"+i)):(u="/account/dummysignIn?cid="+cid+"&Category="+Category+"&service="+s+"&r="+r+"&b="+b+"&Custid=0",f=getParameterByName("nid"),f!=""&&(u="/account/dummysignIn?cid="+cid+"&Category="+Category+"&service="+s+"&r="+r+"&b="+b+"&Custid=0&nid="+f),window.location=u):window.location=location.href.indexOf("mobile")==-1?"/book/reserve?cid="+cid+"&Category="+Category+"&service="+s+"&r="+r+"&b="+b:"/book/reserve?cid="+cid+"&Category="+Category+"&service="+s+"&r="+r+"&b="+b+"&mobile=1"},MoveAppointment:function(){var f=this,t,n;t=this.hour+":"+this.minute;selecteddate=moment($("#datepicker").datepicker("getDate")).format("YYYY-MM-DD");n=$("#datepicker").datepicker("getDate");n.setHours(this.hour);n.setMinutes(this.minute);var i=getParameterByName("AppId"),r=moment(n).format("DD-MM-YYYYTHH:mm"),u=this.selectresource(t);postEndpoint="/api/Appointment/?AppId="+i+"&moveToDateTime="+r+"&resourceId="+u;$.post(postEndpoint).done(function(n){app.movedappointment=n;Backbone.history.navigate("/RenderConfirmMove/ok",{trigger:!0})}).fail(function(n){var t=JSON.parse(n.responseText);$("#ui-message").html('<div id="ErrorMessage" >'+t.Message+".<\/div>")})},RenderConfirmMoveAppointment:function(n){var t=_.template($("#tmpConfirmAppointmentMove").html());$("#MainContent").html(t({message:n}))}});$(document).ajaxSend(function(){$("#ajaxmessage").show()});$(document).ajaxComplete(function(){$("#ajaxmessage").hide()});$(document).ajaxError(function(){});String.prototype.leftstring=function(t){try{var i=this.indexOf(t);return i>-1?this.substring(0,n):this}catch(r){return string}};String.prototype.rightstring=function(n){try{var t=this.indexOf(n);return t>-1?(len=this.length,this.substring(t+1,len)):this}catch(i){return string}};String.prototype.replaceAll=function(n,t){var i=this;return i.split(n).join(t)};$.datepicker.regional.nl={closeText:"Sluiten",prevText:"<",nextText:">",currentText:"Vandaag",monthNames:["januari","februari","maart","april","mei","juni","juli","augustus","september","oktober","november","december"],monthNamesShort:["jan","feb","maa","apr","mei","jun","jul","aug","sep","okt","nov","dec"],dayNames:["zondag","maandag","dinsdag","woensdag","donderdag","vrijdag","zaterdag"],dayNamesShort:["zon","maa","din","woe","don","vri","zat"],dayNamesMin:["zo","ma","di","wo","do","vr","za"],isRTL:!1};jQuery(function(){jQuery.support.placeholder=!1;test=document.createElement("input");"placeholder"in test&&(jQuery.support.placeholder=!0)});Date.prototype.addHours=function(n){return this.setHours(this.getHours()+n),this},function(n){n.fn.tablecollapse2=function(t){var i=n.extend({iconexpand:"fa-minus-square-o",iconcollapse:"fa-plus-square-o",alltoggle:!0,alltoggletext:"Alle",table:""},t),r;return expandcollapse="<span class='ui-expandcollapse'><a id='collapseAll'  ><i class='collapseicon fa "+i.iconcollapse+"'> <\/i> "+i.alltoggletext+"<\/a> <\/span>",$TABLE=n(i.table),r=$TABLE.find(".categorybody tr:first-child"),i.alltoggle&&(this.html(expandcollapse),collapseall=this.find("#collapseAll"),collapseall.toggle(function(){r.each(function(){tbody=n(this).parent();tbody.find("th:first-child i").removeClass(i.iconexpand).addClass(i.iconcollapse);tbody.find("tr").hide();tbody.find("tr:first-child").show()});collapseall.find(".collapseicon").removeClass(i.iconcollapse).removeClass(i.iconexpand).addClass(i.iconcollapse)},function(){r.each(function(){tbody=n(this).parent();tbody.find("th:first-child i").removeClass(i.iconcollapse).addClass(i.iconexpand);tbody.find("tr").show();tbody.find("tr:first-child").show()});collapseall.find(".collapseicon").removeClass(i.iconcollapse).removeClass(i.iconexpand).addClass(i.iconexpand)})),_.each(r,function(t){tbody=n(t).parent();tbody.find("th:first-child").prepend("<i class='collapseicon fa "+i.iconexpand+"'><\/i>")}),r.toggle(function(){tbody=n(this).parent();tbody.find("th:first-child i").removeClass(i.iconexpand).addClass(i.iconcollapse);tbody.find("tr").hide();tbody.find("tr:first-child").show()},function(){tbody=n(this).parent();tbody.find("th:first-child i").removeClass(i.iconcollapse).addClass(i.iconexpand);tbody.find("tr").show()}),this};n.fn.tablecollapse2OLD=function(t){var i=n.extend({iconexpand:"fa-minus-square-o",iconcollapse:"fa-plus-square-o",table:""},t),r;return expandcollapse="<span class='ui-expandcollapse'><a id='collapseAll'  ><i class='collapseicon fa "+i.iconcollapse+"'><\/i><\/a> <a id='expandAll'  ><i class='collapseicon fa "+i.iconexpand+"'><\/i><\/a><\/span>",this.html(expandcollapse),$TABLE=n(i.table),r=$TABLE.find(".categorybody tr:first-child"),this.find("#collapseAll").click(function(){r.each(function(){tbody=n(this).parent();tbody.find("th:first-child i").removeClass(i.iconexpand).addClass(i.iconcollapse);tbody.find("tr").hide();tbody.find("tr:first-child").show()})}),this.find("#expandAll").click(function(){r.each(function(){tbody=n(this).parent();tbody.find("th:first-child i").removeClass(i.iconcollapse).addClass(i.iconexpand);tbody.find("tr").show();tbody.find("tr:first-child").show()})}),_.each(r,function(t){tbody=n(t).parent();tbody.find("th:first-child").prepend("<i class='collapseicon fa "+i.iconexpand+"'><\/i>")}),r.toggle(function(){tbody=n(this).parent();tbody.find("th:first-child i").removeClass(i.iconexpand).addClass(i.iconcollapse);tbody.find("tr").hide();tbody.find("tr:first-child").show()},function(){tbody=n(this).parent();tbody.find("th:first-child i").removeClass(i.iconcollapse).addClass(i.iconexpand);tbody.find("tr").show()}),this};n.fn.tablesearch2=function(t){function u(t,r){var u;n(".serviceitemcategory").hide();r.hide();t==""?(r.show(),_this.find("#btnSearch").html('<i class="fa fa-search"><\/i>')):(u=i.searchcolumn!=-1?r.find("td:eq("+i.searchcolumn+"):containsi('"+t+"')"):r.find("td:containsi('"+t+"')"),u.parent().show(),u.parent().parent().find(".categoryRow").show(),_this.find("#btnSearch").html(u.length+" gevonden."))}var i=n.extend({searchcolumn:0,table:""},t),r;search="<span class='ui-tablesearch'> <input id='search' style='padding:5px' type='text' value='' placeholder=' zoeken...' /><button id='btnSearch' class='pure-button pure-button-primary  greenbutton'><i class=\"fa fa-search\"><\/i><\/button><\/span>";this.html(search);$TABLE=n(i.table);r=$TABLE.find("tbody tr");_this=this;this.find("#btnSearch").click(function(n){n.preventDefault();u(_this.find("#search").val(),r)});this.find("#search").keyup(function(t){t.which==13&&(searchvalue=n(t.target).val(),u(searchvalue,r))})};n.fn.slideupdown=function(t){var i=n.extend({container:"",iconUp:"fa-arrow-right",iconDown:"fa-arrow-down"},t);n(this).toggle(function(){n("#"+i.container).slideUp(200);n(this).find("i").removeClass(i.iconUp).addClass(i.iconDown)},function(){n("#"+i.container).slideDown(200);n(this).find("i").removeClass(i.iconDown).addClass(i.iconUp)})}}(jQuery);window.GoogleReserve=window.GoogleReserve||{};GoogleReserve.SetConversionCookie=function(n,t){try{var r=n,u=window.location.host,i="_rwg_token="+t+";_merchant_id="+r+";max-age=2592000;domain="+u+";path=/";document.cookie=i;console.log(" cookie set: "+i)}catch(f){console.error("GoogleReserveInitConversion ",f)}};GoogleReserve.getConversionCookie=function(){try{var n=document.cookie.split("; ").find(function(n){return n.startsWith("_rwg_token=")});return n!=undefined?rwgTokenValue=n.split("=")[1]:(console.log("_rwg_token - not found"),"")}catch(t){return console.error("Error:",t),""}};GoogleReserve.PostConversionCode=function(n){var t=GoogleReserve.getConversionCookie(),i=JSON.stringify({conversion_partner_id:20000665,rwg_token:t,merchant_changed:n});$.ajax({url:"https://www.google.com/maps/conversion/debug/collect",type:"POST",contentType:"text/plain",data:i,success:function(n,t){console.log("Success ",n,t)},error:function(n,t,i){console.error("Error:",i)}})};Service=Backbone.Model.extend({idAttribute:"Id",defaults:{linked:!1},initialize:function(){var n=this.get("ExtraProperties");this._ExtraProperties=parseExtraProperties(n)}});Services=Backbone.Collection.extend({url:"/api/Service",model:Service,Total:function(){return this.reduce(function(n,t){return n+t.get("Price")*1},0)},TotalDiscount:function(n){return this.reduce(function(t,i){return t+GetDiscountPrice(n,i)*1},0)},TotalizeVAT:function(){var n=app.appsettings.get("VATLow")/100,t=app.appsettings.get("VATHigh")/100;return this.reduce(function(i,r){var u=r.get("Price"),f=r.get("TaxType");return f=="Low"?i+u+u*n:f=="High"?i+u+u*t:i+u},0)},TotalDuration:function(){return this.reduce(function(n,t){return n+t.get("Duration")},0)},TotalDurationWithBuffer:function(){return this.reduce(function(n,t){if(t.get("CombinedServices"))return n+calculateTotalDuration(t);var i=0;return t.get("BufferTime")&&(i=GetBufferTime(t,"Duration")),n+t.get("Duration")+t.get("ProcessTime")+i},0)},byCategory:function(n){return filtered=this.filter(function(t){return t.get("Category").Group.toUpperCase().trim()==n.toUpperCase().trim()}),new Services(filtered)},byServiceId:function(n){return filtered=this.filter(function(t){return t.get("Id")==n}),new Services(filtered)},FilterServices:function(n){return filtered=this.filter(function(t){var i=!1;try{i=t.get("Title").toLowerCase().indexOf(n)>-1}catch(r){}return i}),new Services(filtered)},FilterCategory:function(n){return filtered=this.filter(function(t){var i=!1,r=t.get("CategoryGroup").toUpperCase().trim(),u=n.toUpperCase().trim();try{i=r.indexOf(u)>-1}catch(f){}return i}),new Services(filtered)},byCategoryId:function(n){return filtered=this.filter(function(t){return t.get("Category").Id==n}),new Services(filtered)},ByServiceOrigId:function(n){return Result=this.where({OrigId:n})},groupby:function(n){return Grouped=this.groupBy(n)},filterByDayPart:function(){return filtered=this.filter(function(n){return n._ExtraProperties.PartOfDaySwitch==!0}),new Services(filtered)}});window.setting=Backbone.Model.extend({});window.settings=Backbone.Collection.extend({model:setting,url:"/api/setting"});var ConsumerContact=Backbone.Model.extend({defaults:{idAttribute:"id",FirstName:"",LastName:"",EmailAddress:"",HomePhone:"",City:"",RepeatEmailAddress:"",Postcode:"",Address:"",City:"",NewsLetter:null,ExtraProperties:null,Birthdate:""}}),ConsumerContacts=Backbone.Collection.extend({model:ConsumerContact}),AvailablityItem=Backbone.Model.extend({}),AvailablityItems=Backbone.Collection.extend({model:AvailablityItem,byServiceId:function(n,t){return filtered=this.filter(function(i){return i.get("ServiceId")==n&&i.get("resourceid")==t}),new AvailablityItems(filtered)}}),BookableResource=Backbone.Model.extend({}),BookableResources=Backbone.Collection.extend({model:BookableResource}),ApplianceModel=Backbone.Model.extend({}),ApplianceCollection=Backbone.Collection.extend({model:ApplianceModel}),Appointment=Backbone.Model.extend({defaults:{AppointmentType:"Appointment",title:"",resourceId:0,resourceName:"",editable:!0,allDay:!1,Category:"",Status:"New",ClientType:"NewRequest",TicketID:"0",CustomerID:0,Service:"",Note:"",HomeNumber:"0",MobileNumber:"0",ScheduledBy:"",DayNumber:0,ShowEvent:!0,AppointmentLogItems:[]},url:function(){return"/api/Appointment/"+this.get("id")}}),Appointments=Backbone.Collection.extend({model:Appointment,url:"/api/appointment",groupby:function(n){return Grouped=this.groupBy(n)},getDay:function(n){return filtered=this.filter(function(t){return t.get("start").split("T")[0]==n}),new Appointments(filtered)},getDayByResource:function(n,t){return filtered=this.filter(function(i){return i.get("start").split("T")[0]==n&&i.get("resourceId")==t}),new Appointments(filtered)},groupby:function(n){return Grouped=this.groupBy(n)},getDayByRoom:function(n,t){return filtered=this.filter(function(i){return i.get("start").split("T")[0]==n&&i.get("Service").indexOf(t)!=-1}),new Appointments(filtered)},getDayByServiceId:function(n,t){return filtered=this.filter(function(i){return i.get("start").split("T")[0]==n&&i.get("ServiceId")==t}),new Appointments(filtered)},getDayByServiceId:function(n,t,i){return filtered=this.filter(function(r){return r.get("start").split("T")[0]==n&&r.get("ServiceId")==t&&r.get("resourceId")!=i}),new Appointments(filtered)},getDayByServiceIds:function(n,t){return filtered=this.filter(function(i){return i.get("start").split("T")[0]==n&&t.includes(i.get("ServiceId"))}),new Appointments(filtered)},getTimeOffEventsByResourceId:function(n,t){try{var i=this.filter(function(i){return moment(i.get("start")).format("YYYY")==t&&i.get("resourceId")==n&&i.get("AppointmentType")=="TimeOff"&&i.get("Service")=="AllDay"});return new Appointments(i)}catch(r){console.log("getAllHolidayDates ",r)}}});Backbone.Collection.prototype.saveAll=function(n){return $.when.apply($,_.map(this.models,function(t){return t.hasChanged()?t.save(null,n).then(_.identity):t}))};window.CustomerConsents=window.CustomerConsents||{};CustomerConsents.initialisedConsents=null;CustomerConsents.ConsentModel=Backbone.Model.extend({idAttribute:"Id",defaults:{ApprovedDate:new Date,ApprovedBy:"",ApprovedTo:"",ApprovedHow:"",Remarks:"",Type:"Consent",Status:"Approved"}});CustomerConsents.ConsentCollection=Backbone.Collection.extend({model:CustomerConsents.ConsentModel,checkApproved:function(n){var t=!1;return _.each(this.models,function(i){i.get("Status")=="Ja"&&i.get("Id")==n&&(t=!0)}),t}});window.MyAppointments=window.MyAppointments||{};MyAppointments.Page=Backbone.View.extend({events:{"change input[name=selectstatus]":"filterAppointments","click #refreshbutton":"refreshlist"},refreshlist:function(){this.collection.url="/api/MyAppointmentsApi/GetScheduledAppointments?tid="+tenantid;this.collection.fetch({data:"tenantId="+tenantid+"&Status=Scheduled,OnlineScheduled,Confirmed"}).fail(function(){$("#placeholderList").html(" Afspraken konden niet worden opgehaald. ")}).success(function(){})},initialize:function(){this.template=_.template($("#tmpMyAppointmentsPage").html());this.listenTo(this.collection,"reset",this.renderList)},filterAppointments:function(){var n=$("input[name=selectstatus]:checked").val();MyAppointments.collection.fetch({data:"tenantId="+gTenantId+"&Status="+n})},render:function(){return $(this.el).html(this.template()),gProfielContact!=null&&gProfielContact.RewardPoints!=null&&$("#rewardpoints",this.el).html(gProfielContact.RewardPoints),$("#tabs",this.el).tabs(),gExtrasettings.PortalHideRewardPoints&&this.$("#LoyalityPoints",this.el).hide(),this},renderList:function(){var u=this,n=$("#placeholderList"),t,i,r;n.html("");this.collection.length>0?(t=this.collection.groupby("GroupId"),i=_.sortBy(t,function(n){return n[0].get("start")}),_.each(i,function(t){var r=t[0].get("AppointmentID").replace(" ","_"),i=$("<div class='appointmentcontainer' id='"+r+"'><\/div>"),u=new MyAppointments.Category({model:t[0]});i.append(u.render().el);_.each(t,function(r,u){var f=new MyAppointments.AppointmentItems({model:r,templateId:"tmpMyAppointmentItem"});i.append(f.render().el);u==t.length-1&&(f=new MyAppointments.AppointmentButtons({model:r,templateId:"tmpMyAppointmentButtons"}),i.append(f.render().el));n.append(i)})})):(r=_.template($("#tmpMyAppointmentNoResults").html()),n.html(r()).show(0),$(".notfound").effect("shake","slow"));gExtrasettings.PortalHideCancelButton&&$(".cancelbutton").hide();gExtrasettings.PortalHideConfirmlButton&&$(".confirmbutton").hide();gExtrasettings.PortalHideMoveButton&&$(".movebutton").hide()}});MyAppointments.Category=Backbone.View.extend({events:{},initialize:function(){this.templateCategory=_.template($("#tmpMyAppointmentCategory").html());$(this.el).addClass("category")},render:function(){var n=this.model;return $(this.el).append(this.templateCategory(n.toJSON())),this}});MyAppointments.AppointmentItems=Backbone.View.extend({initialize:function(){this.Template=_.template($("#tmpMyAppointmentItem").html());$(this.el).addClass("appointment")},render:function(){var n=this.model;return $(this.el).append(this.Template(n.toJSON())),$(this.el).append("<div style='clear:both'><\/div>"),this}});MyAppointments.AppointmentButtons=Backbone.View.extend({initialize:function(){this.Template=_.template($("#tmpMyAppointmentButtons").html());$(this.el).addClass("appointmentbuttons")},render:function(){var n=this.model;return $(this.el).append(this.Template(n.toJSON())),$(this.el).append("<div style='clear:both'><\/div>"),$(this.el,".actions").dropit(),this}});MyAppointmentModel=Backbone.Model.extend({defaults:{AppointmentType:"Appointment",title:"",resourceId:0,resourceName:"",editable:!0,allDay:!1,Category:"",Status:"New",ClientType:"NewRequest",TicketID:"0",CustomerID:0,Service:"",Note:"",HomeNumber:"0",MobileNumber:"0",ScheduledBy:"",DayNumber:0,ShowEvent:!0,AppointmentLogItems:[]},parse:function(n){var i=n.start,t=moment(n.start).format("YYYY-MM-DD");return n.GroupId=t,n},url:function(){return"/api/Appointment/"+this.get("id")}});MyAppointmentCollection=Backbone.Collection.extend({model:MyAppointmentModel,url:"/api/appointment",groupby:function(n){return Grouped=this.groupBy(n)},getDay:function(n){return filtered=this.filter(function(t){return t.get("start").split("T")[0]==n}),new Appointments(filtered)},getDayByResource:function(n,t){return filtered=this.filter(function(i){return i.get("start").split("T")[0]==n&&i.get("resourceId")==t}),new Appointments(filtered)},groupby:function(n){return Grouped=this.groupBy(n)}});window.OnlineShop=window.OnlineShop||{};OnlineShop.productmodel=Backbone.Model.extend({idAttribute:"Id"});OnlineShop.productcollection=Backbone.Collection.extend({model:OnlineShop.productmodel,Total:function(){return this.reduce(function(n,t){return n+t.get("Price")*1},0)}});window.OnlineShop=window.OnlineShop||{};OnlineShop.vwProductsList=Backbone.View.extend({template:_.template($("#tmpOnlineShop_vwProductsTable").html()),initialize:function(){},render:function(){return this.$el.html(this.template()),this.collection.each(this.addOne,this),this},addOne:function(n){var t=new OnlineShop.vwProductsListItem({model:n});this.$("tbody").append(t.render().el)}});OnlineShop.vwProductsListItem=Backbone.View.extend({template:_.template($("#tmpOnlineShop_vwProductsListItem").html()),tagName:"tr",events:{"change .chkboxProduct":"AddProduct","click .productitem":"toggleCheckbox"},initialize:function(){},render:function(){var n=!1;return OnlineShop.AddedProducts!=null&&(n=OnlineShop.AddedProducts.get(this.model.id)!==undefined),this.$el.html(this.template(_.extend(this.model.toJSON(),{checked:n}))),this},toggleCheckbox:function(n){if(!$(n.target).hasClass(".chkboxProduct")){var t=this.$(".chkboxProduct"),i=!t.prop("checked");t.prop("checked",i).trigger("change")}},AddProduct:function(n){n.preventDefault();$(n.target).attr("checked")?OnlineShop.AddedProducts.add(this.model):OnlineShop.AddedProducts.remove(this.model);this.updateLocalStorage()},updateLocalStorage:function(){var n=JSON.stringify(OnlineShop.AddedProducts.toJSON());localStorage.setItem("AddedProducts",n)}});window.OnlineShop=window.OnlineShop||{};OnlineShop.page=Backbone.View.extend({events:{},initialize:function(){},render:function(){var n=$("#tmpOnlineShop_page").html(),t;return $(this.el).html(_.template(n)),this.renderproductsList(),$("#shopDialog").length===0&&$("body").append('<div id="shopDialog" style="display:none;"><\/div>'),$("#shopDialog").html($(this.el)),t=this,$("#shopDialog").dialog({title:"Kies extra’s",resizable:!0,draggable:!0,width:DialogWidth(450),height:"auto",close:function(){},buttons:[{text:"Gereed","class":"selectbutton",click:function(){console.log("Gereed-knop geklikt!");$("#shopDialog").dialog("close")}}]}),$("#shopDialog").dialog("open"),this},renderOLD:function(){var n=$("#tmpOnlineShop_page").html();return $(this.el).html(_.template(n)),this.renderproductsList(),$(this.el).dialog({title:"Kies producten",resizable:!0,draggable:!0,resizable:!0,width:DialogWidth(450),height:"auto",buttons:[{text:"Gereed","class":"selectbutton",click:function(){$(this).dialog("close")}}]}),this},renderproductsList:function(){var n=new OnlineShop.vwProductsList({collection:this.collection});this.collection.length>0?this.$("#products_placeholder").html(n.render().el):this.$("#products_placeholder").html("Geen producten gevonden.")}});window.OnlineShop=window.OnlineShop||{};OnlineShop.AddedServices=null;OnlineShop.AddedProducts=null;OnlineShop.ProductsFetched=!1;OnlineShop.FetchedProductsList=null;OnlineShop.ShoppingCartProductsView=Backbone.View.extend({tagName:"dl",reserveview:null,initialize:function(){this.listenTo(this.collection,"add",this.render);this.listenTo(this.collection,"remove",this.render);this.listenTo(this.collection,"reset",this.render);this.listenTo(this.collection,"change",this.render);this.reserveview=this.options.reserveview},render:function(){var n,t,i;this.$el.empty();this.collection.each(function(n){var t=new OnlineShop.ProductItem({model:n});this.$el.append(t.render().el)},this);n=OnlineShop.AddedServices.Total()+OnlineShop.AddedProducts.Total();t=accounting.formatMoney(OnlineShop.AddedServices.Total()+OnlineShop.AddedProducts.Total());this.reserveview.prepaymentpercentage!=0&&(i=accounting.formatMoney(n/100*this.reserveview.prepaymentpercentage),$("#prepaidpercentagefield").html(i));$("#totalshoppingcart").html(t);$("#Placeholder_Productshoppingcart").html(this.$el)}});OnlineShop.ProductItem=Backbone.View.extend({tagName:"dt",initialize:function(){this.listenTo(this.model,"change",this.render)},render:function(){return this.$el.text(this.model.get("Title")),this}})