function decodeBase64(s) { var e = {}, i, b = 0, c, x, l = 0, a, r = '', w = String.fromCharCode, L = s.length; var A = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"; for (i = 0; i < 64; i++) { e[A.charAt(i)] = i; } for (x = 0; x < L; x++) { c = e[s.charAt(x)]; b = (b << 6) + c; l += 6; while (l >= 8) { ((a = (b >>> (l -= 8)) & 0xff) || (x < (L - 2))) && (r += w(a)); } } return r; }; function parse_query_string(query) { var vars = query.split("&"); var query_string = {}; for (var i = 0; i < vars.length; i++) { var pair = vars[i].split("="); var key = decodeURIComponent(pair[0]); var value = decodeURIComponent(pair[1]); // If first entry with this name if (typeof query_string[key] === "undefined") { query_string[key] = decodeURIComponent(value); // If second entry with this name } else if (typeof query_string[key] === "string") { var arr = [query_string[key], decodeURIComponent(value)]; query_string[key] = arr; // If third or later entry with this name } else { query_string[key].push(decodeURIComponent(value)); } } return query_string; } //define some variables var gegevens = {}; var queue = []; var commandQueue = []; var rootmap = "."; var autoVrijgave = {}; var uurVrijgave = {}; $doctorall = []; $overlay = $('#overlay'); $overlayshown = false; $(function () { $.cookieMessage({ mainMessage: 'privacybanner', acceptButton: 'privacybanner_acceptbutton', backgroundColor: 'white', fontSize: '14px', fontColor: 'black', btnBackgroundColor: '#f2a920', btnFontSize: '11px', btnFontColor: 'white', linkFontColor: 'blue', expirationDays: 20, cookieName: 'cookieMessage' }); var $overlay = $('.overlay-cancel'); var $navlink = $('.nav-link.main'); //bind the menu $navlink.on('click', function (e) { $navlink.removeClass('active'); $(this).addClass('active'); var link = $(this).data('tpl'); var command = $(this).data('command'); if ($(this).data('content') == "doctor") { $context = {doctor: doctor, user: user}; console.log($context); } else if ($(this).data('content') == "user") { $context = {user: user}; } else if ($(this).data('content') != "") { $context = $(this).data('content'); } else { $context = ""; } addTemplateQueue(link, "#content", $context); if (command == "") { //console.log("no command issued, please issue one"); } else { addCommandQueue(command); } triggerTemplateQueue(); e.preventDefault(); }); //bind the login $(".password-button").on('click', function (e) { e.preventDefault(); $(".overlay-reset").css({"display": "flex"}); $('#overlay-cancel-reset').unbind().on('click', function (e) { e.preventDefault(); $(".overlay-reset").hide(); }); $('.account-reset').unbind().on('click', function (e) { e.preventDefault(); $.ajax({ url: rootmap + "/inc/request.php", method: "POST", data: {call: "reset", email: $("#reset-email").val(), practice: config.practice.id} }).done(function (e) { $(".overlay-reset").hide(); $(".overlay-title").html('forgotpassword'); $(".overlay-message").html("processingchangepassword"); $overlay.css({"display": "flex"}); }); }); }); $(".inlogbutton").on('click', function (e) { e.preventDefault(); $.ajax({ url: rootmap + "/inc/request.php", method: "POST", data: {call: "login", user: $("#user").val(), pass: $("#pass").val()} }).done(function (e) { //check if login is oke // if true refresh the page; // else show popup ( TODO ) if (e == 1) { location.reload(); } else { $(".overlay-title").html("error_usernamepasswordmismatchtitle"); $(".overlay-message").html("error_usernamepasswordmismatch"); $overlay.css({"display": "flex"}); } }); }); // load the default view if (check == 1) { getPleaseRegister(); } else if (config.userlevel == 0 || login == 1) { getDoctors(); } else { getRegister(); } $("#overlay-cancel").on('click', function (e) { $overlay.hide(); }); $(window).resize(function () { resizeMenu(); }); }); function getRegister() { addTemplateQueue("home", "#content", {"name": config.practice.name}); triggerTemplateQueue(); // } function getPleaseRegister() { addTemplateQueue("pleaseregister", "#content", {"name": config.practice.name}); addCommandQueue("definePleaseRegister"); triggerTemplateQueue(); } function definePleaseRegister() { $.ajax({ url: rootmap + "/inc/request.php", method: "POST", dataType: "json", data: { call: "requestregister", id: config.practice.id, }, }).done(function (e) { }); /*$("#aanvraag").unbind().on('click', function (e) { $.ajax({ url: rootmap + "/inc/request.php", method: "POST", dataType: "json", data: { call: "requestregister", id : config.practice.id, }, }).done(function (e) { $(".overlay-cancel .overlay-message").html("//php echo _("registersuccess")"); $('#overlay-cancel').show(); $('#overlay-cancel').unbind().on('click', function (e) { e.preventDefault(); $(".overlay-cancel").hide(); }); $(".overlay-cancel").css({"display": "flex"}); }); });*/ } function getDoctors() { addTemplateQueue("appointments", "#content", {doctor: doctor, user: user}); addCommandQueue("defineAppointments"); triggerTemplateQueue(); } function createRegister() { $(".saveregistratie").unbind().on('click', function (e) { e.preventDefault(); if (checkPassValue("registerprofile") && formValidate('fullregister')) { register(); } }); $(".annuleerregistratie").unbind().on('click', function (e) { $link = $('*[data-tpl="appointments"]'); $(".nav-link.main.active").removeClass("active"); $link.addClass("active"); addTemplateQueue("appointments", "#content", {doctor: doctor, user: user}); addCommandQueue("defineAppointments"); triggerTemplateQueue(); e.preventDefault(); }); } function register() { user = {}; user.email = $("#email").val(); user.password = $("#password").val(); user.voornaam = $("#voornaam").val(); user.achternaam = $("#achternaam").val(); user.geboortedag = $("#geboortedag").val(); user.geboortemaand = $("#geboortemaand").val(); user.geboortejaar = $("#geboortejaar").val(); user.gender = $('.form-check-input:checked').val(); user.straat = $("#straat").val(); user.huisnummer = $("#huisnummer").val(); user.bus = $("#bus").val(); user.postcode = $("#postcode").val(); user.plaats = $("#plaats").val(); user.telefoon = $("#telefoon").val(); $.ajax({ url: rootmap + "/inc/request.php", method: "POST", dataType: "json", data: { call: "register", user: user, practice: config.practice.id }, }).done(function (e) { if (e[0] == 1) { $(".overlay-cancel .overlay-message").html("error_usernameused"); $('#overlay-cancel').show(); $('#overlay-cancel').unbind().on('click', function (e) { e.preventDefault(); $(".overlay-cancel").hide(); }); $(".overlay-cancel").css({"display": "flex"}); } else if (e[0] == 2) { $(".overlay-cancel .overlay-message").html("error_emailused"); $('#overlay-cancel').show(); $('#overlay-cancel').unbind().on('click', function (e) { e.preventDefault(); $(".overlay-cancel").hide(); }); $(".overlay-cancel").css({"display": "flex"}); } else if (e[0] == 0) { $(".overlay-cancel .overlay-message").html("bedanktregistratie"); $('#overlay-cancel').show(); $('#overlay-cancel').unbind().on('click', function (e) { e.preventDefault(); //$(".overlay-cancel").hide(); location.reload(); }); $(".overlay-cancel").css({"display": "flex"}); } }); } function defineRegister() { addCommandQueue("createRegister"); initOptions($('#geboortejaar'), $('#geboortemaand')); initListenerDate($('#geboortejaar'), $('#geboortemaand'), $('#geboortedag')); } //define the commands for the appointments page" function defineAppointments() { //var url_string = window.location.href; //var url = new URL(url_string); //var c = url.searchParams.get("id"); //var view = 0; //view = url.searchParams.get("view"); var query = window.location.search.substring(1); var qs = parse_query_string(query); var c = qs.id; var view = 0; view = qs.view; if (c !== null && typeof c !== 'undefined') { c = atob(c); if ($('.choose-doctor.' + c)[0]) { $iddoctor = $('.choose-doctor.' + c); $check = $('.doctor-check'); $checka = $('.choose-doctor'); $checka.removeClass("achecked"); if (!$iddoctor.find('.doctor-check').hasClass("checked")) { $check.removeClass('checked'); $iddoctor.find('.doctor-check').addClass('checked'); $iddoctor.addClass("achecked"); $("#doctor-collapse-" + c).addClass("show"); autoVrijgave = {}; uurVrijgave = {}; $('#calendar').fullCalendar('refetchEvents'); $(".calhidden").css('visibility', 'visible'); } else { $check.removeClass('checked'); } } } $(".viewdef").on('click', function (e) { $context = {doctor: doctor, user: user}; addTemplateQueue("appointments", "#content", $context); addCommandQueue("defineAppointments"); triggerTemplateQueue(); e.preventDefault(); }); $(".viewwiz").on('click', function (e) { //todo variable min/max time, check date format, evt altinput en altformat $('#meeting-time').flatpickr({ minDate: "today", enableTime: true, dateFormat: "d/m/Y H:i", time_24hr: true, minTime: "6:40", maxTime: "17:55", defaultDate: "today" }) $('.wizstep .choose-doctor').on('click', function () { $('.wizstep .choose-doctor').removeClass("active"); $(this).toggleClass('active'); $(".selectconsult").hide(); $(".wiznext").attr('style', 'display: inline-block !important'); $id = $(this).find(".doctor-name").data("id"); $("#consulttype" + $id).show(); $(".entername").text($(this).find(".doctor-name").text().trim()); }) $('.wizstep .wiznext').unbind().on('click', function () { $(this).closest('.wizstep').removeClass('show'); $(this).closest('.wizstep').next('.wizstep').addClass('show'); //console.log("triggerd"); $('#fullcalendarWizard').fullCalendar("refetchEvents"); resizeMenu(); }) $('.wizstep .wizprevious').unbind().on('click', function () { $(this).closest('.wizstep').removeClass('show'); $(this).closest('.wizstep').prev('.wizstep').addClass('show'); resizeMenu(); }) $('.viewdefault').removeClass("show"); $('.viewalldoctors').removeClass("show"); //$('.viewwizard').show(); /* todo: remove test code*/ $('.viewwizard').addClass("show"); $('#fullcalendarWizard').fullCalendar({ header: { left: 'prev,next today title', center: '', right: '' }, titleFormat: 'DD/MM/YY', listDayFormat: 'dddd D MMMM YYYY', defaultView: 'listDay', minTime: "06:00:00", maxTime: "23:00:00", allDaySlot: false, slotDuration: "00:15:00", slotLabelFormat: "H:mm", views: { agendaWeek: { height: 750, contentHeight: 750, }, listWeek: { displayEventEnd: false, timeFormat: "dd HH:mm", }, }, //titleFormat:' dddd D MMMM YYYY', eventSources: [ { url: rootmap + '/inc/request.php', type: 'get', data: function () { return { call: "getEvents", doctor: $(".wizardselectdoctor.active .doctor-name").data("id"), consult: $('#consulttype' + $(".wizardselectdoctor.active .doctor-name").data("id")).val(), practice: config.practice.id, }; }, error: function () { }, color: 'yellow', // a non-ajax option textColor: 'black' // a non-ajax option }, ], eventRender: function (event, element) { if (event.consultation != "note") { //get the difference in hours between the current local time and the event start time //remove this current time and retrieve it from the server as a "general" time var now = moment.utc(moment().format("YYYY-MM-DD HH:mm:ss")); var duration = event.start.diff(now, 'hours'); var hours = duration; if (now.format("X") > event.start.format("X")) { console.log(now.format("X")); console.log(event.start.format("X")); console.log(event); return false; } //check for automatic release of timeslot if (event.afspraak != 0 && event.afspraak != null && !isNaN(event.afspraak)) { if (event.afspraak > hours) { uurVrijgave[event.teamid] = "yes"; } else if (uurVrijgave[event.teamid] == "yes") { } else { return false; } } //check if timeslot should be release one by one if (event.automatisch == "checked") { if (typeof autoVrijgave[event.teamid] != "undefined") { if (autoVrijgave[event.teamid].start.isBefore(event.start)) { return false; } else { //$('#calendar').fullCalendar('removeEvents', autoVrijgave[event.teamid]._id); autoVrijgave[event.teamid] = event; } } else { autoVrijgave[event.teamid] = event; } } } else { var now = moment.utc(moment().format("YYYY-MM-DD HH:mm:ss")); var duration = event.start.diff(now, 'hours'); var hours = duration; if (now.format("X") > event.start.format("X")) { return false; } } }, eventClick: function (event, jsEvent, view) { if (event.consultation != "note") { d = moment(event.start.format("YYYY-MM-DD HH:mm:ss"), "YYYY-MM-DD HH:mm:ss"); if (moment().isAfter(d)) { //console.log(d); //console.log(moment()); autoVrijgave = {}; uurVrijgave = {}; $(this).fullCalendar('refetchEvents'); } else { if (event.weergave == "checked") { } else { booking(event); } } } }, loading: function (isLoading, view) { $(this).addClass('loading'); }, viewRender: function (view, element) { autoVrijgave = {}; uurVrijgave = {}; }, eventAfterAllRender: function (view) { $("#fullcalendarWizard").removeClass('loading'); resizeMenu(); $('#fullcalendarWizard').fullCalendar('removeEvents', function (eventObject) { if (typeof autoVrijgave[eventObject.teamid] != "undefined") { if (eventObject._id != autoVrijgave[eventObject.teamid]._id) { return true; } } }); }, }); }); $(".viewall").on('click', function (e) { $('.viewdefault').removeClass("show"); $('.viewwizard').removeClass("show"); //$('.viewalldoctors').show(); /* todo: remove test code*/ $('.viewalldoctors').addClass("show"); $i = 0; $(".calendar").each(function () { $id = $(this).data("id"); $('.idvall' + $id).fullCalendar({ header: { left: 'prev,next today title', center: '', right: '' }, titleFormat: 'DD/MM/YY', listDayFormat: 'dddd D MMMM YYYY', defaultView: 'listDay', minTime: "06:00:00", maxTime: "23:00:00", allDaySlot: false, slotDuration: "00:15:00", slotLabelFormat: "H:mm", views: { agendaWeek: { height: 750, contentHeight: 750, }, listWeek: { displayEventEnd: false, timeFormat: "dd HH:mm", }, }, //titleFormat:' dddd D MMMM YYYY', eventSources: [ { url: rootmap + '/inc/request.php', type: 'get', data: function () { console.log($doctorall); console.log($i); console.log($(this).closest(".calendar")); return { call: "getEvents", doctor: $id, consult: "all", practice: config.practice.id, }; }, error: function () { }, color: 'yellow', // a non-ajax option textColor: 'black' // a non-ajax option }, ], eventRender: function (event, element) { if (event.consultation != "note") { //get the difference in hours between the current local time and the event start time //remove this current time and retrieve it from the server as a "general" time var now = moment.utc(moment().format("YYYY-MM-DD HH:mm:ss")); var duration = event.start.diff(now, 'hours'); var hours = duration; if (now.format("X") > event.start.format("X")) { return false; } //check for automatic release of timeslot if (event.afspraak != 0 && event.afspraak != null && !isNaN(event.afspraak)) { if (event.afspraak > hours) { uurVrijgave[event.teamid] = "yes"; } else if (uurVrijgave[event.teamid] == "yes") { } else { return false; } } //check if timeslot should be release one by one if (event.automatisch == "checked") { if (typeof autoVrijgave[event.teamid] != "undefined") { if (autoVrijgave[event.teamid].start.isBefore(event.start)) { return false; } else { //$('#calendar').fullCalendar('removeEvents', autoVrijgave[event.teamid]._id); autoVrijgave[event.teamid] = event; } } else { autoVrijgave[event.teamid] = event; } } } else { var now = moment.utc(moment().format("YYYY-MM-DD HH:mm:ss")); var duration = event.start.diff(now, 'hours'); var hours = duration; if (now.format("X") > event.start.format("X")) { return false; } } }, eventClick: function (event, jsEvent, view) { if (event.consultation != "note") { d = moment(event.start.format("YYYY-MM-DD HH:mm:ss"), "YYYY-MM-DD HH:mm:ss"); if (moment().isAfter(d)) { autoVrijgave = {}; uurVrijgave = {}; $(this).fullCalendar('refetchEvents'); } else { if (event.weergave == "checked") { } else { booking(event); } } } }, eventAfterAllRender: function (view) { $(".calendar").removeClass('loading'); resizeMenu(); $('.calendar').fullCalendar('removeEvents', function (eventObject) { if (typeof autoVrijgave[eventObject.teamid] != "undefined") { if (eventObject._id != autoVrijgave[eventObject.teamid]._id) { return true; } } }); }, loading: function (isLoading, view) { $(this).addClass('loading'); }, viewRender: function (view, element) { autoVrijgave = {}; uurVrijgave = {}; }, }); $i++; }); }); //$(".viewwiz").trigger("click"); if (typeof event_id != "undefined") { bookingAfterLogin(event_id); } $('#no-preference-appointment').on('click', function (e) { e.preventDefault(); $('.overlay-find').css({"display": "flex"}); var start = new moment(); var end = new moment(); end.add(7, 'days'); $.ajax({ url: rootmap + "/inc/request.php", method: "POST", dataType: "json", data: { call: "quickfind", start: start.format("YYYY-MM-DD"), end: end.format("YYYY-MM-DD"), practice: config.practice.id }, }).done(function (e) { console.log(e); e.start = moment.utc(e.start); e.end = moment.utc(e.end); $event = e; booking($event); $('.overlay-find').css({"display": "none"}); }).fail(function (e) { $('.overlay-find').css({"display": "none"}); }); }); $("#doctorselect").on("change", function (e) { $(".hiddenoptions").hide(); $(".hiddenoptions." + $(this).val()).show(); }); $start = "no"; var scrollTime = moment().format("HH:mm:ss"); $('#calendar').fullCalendar({ height: 750, contentHeight: 750, header: { left: 'prev,next today', center: 'title', right: 'listWeek,agendaWeek' }, defaultView: 'listWeek', // put your options and callbacks here minTime: "06:00:00", maxTime: "23:00:00", allDaySlot: false, slotDuration: "00:15:00", slotLabelFormat: "H:mm", scrollTime: scrollTime, views: { agendaWeek: { height: 750, contentHeight: 750, }, listWeek: { displayEventEnd: false, timeFormat: "dd HH:mm", }, }, titleFormat: ' dddd D MMMM YYYY', eventSources: [ { url: rootmap + '/inc/request.php', type: 'get', data: function () { return { call: "getEvents", doctor: $(".achecked").data("id"), consult: $('#doctor-collapse-' + $(".achecked").data("id") + '.doctor-chosen select').val(), practice: config.practice.id, }; }, error: function () { }, color: 'yellow', // a non-ajax option textColor: 'black' // a non-ajax option }, ], loading: function (isLoading, view) { if (isLoading) { } }, eventDataTransform: function (eventData) { if (eventData.consultation == "note") { } else { var title = $('#doctor-collapse-' + $(".achecked").data("id") + '.doctor-chosen select option:selected').text(); title = title.trim(); if (eventData.weergave != "checked") { eventData.title = title; } } return eventData; }, eventRender: function (event, element) { if (event.consultation != "note") { //get the difference in hours between the current local time and the event start time //remove this current time and retrieve it from the server as a "general" time var now = moment.utc(moment().format("YYYY-MM-DD HH:mm:ss")); var duration = event.start.diff(now, 'hours'); var hours = duration; if (now.format("X") > event.start.format("X")) { return false; } //check for automatic release of timeslot if (event.afspraak != 0 && event.afspraak != null && !isNaN(event.afspraak)) { if (event.afspraak > hours) { uurVrijgave[event.teamid] = "yes"; } else if (uurVrijgave[event.teamid] == "yes") { } else { return false; } } //check if timeslot should be release one by one /* if (autoVrijgave[event.teamid] == "yes") { console.log(event.teamid); console.log(event); console.log("triggerd in the iffff?"); return false; } else {*/ if (event.automatisch == "checked") { if (typeof autoVrijgave[event.teamid] != "undefined") { if (autoVrijgave[event.teamid].start.isBefore(event.start)) { return false; } else { //$('#calendar').fullCalendar('removeEvents', autoVrijgave[event.teamid]._id); autoVrijgave[event.teamid] = event; } } else { autoVrijgave[event.teamid] = event; } } //} } else { var now = moment.utc(moment().format("YYYY-MM-DD HH:mm:ss")); var duration = event.start.diff(now, 'hours'); var hours = duration; if (now.format("X") > event.start.format("X")) { return false; } } }, eventClick: function (event, jsEvent, view) { if (event.consultation != "note") { d = moment(event.start.format("YYYY-MM-DD HH:mm:ss"), "YYYY-MM-DD HH:mm:ss"); if (moment().isAfter(d)) { //console.log(d); //console.log(moment()); autoVrijgave = {}; uurVrijgave = {}; $('#calendar').fullCalendar('refetchEvents'); } else { if (event.weergave == "checked") { } else { booking(event); } } } }, loading: function (isLoading, view) { $("#calendar").addClass('loading'); }, viewRender: function (view, element) { autoVrijgave = {}; uurVrijgave = {}; }, eventAfterAllRender: function (view) { $("#calendar").removeClass('loading'); resizeMenu(); $('#calendar').fullCalendar('removeEvents', function (eventObject) { if (typeof autoVrijgave[eventObject.teamid] != "undefined") { if (eventObject._id != autoVrijgave[eventObject.teamid]._id) { return true; } } }); }, }); $(".selectconsult").on('change', function () { autoVrijgave = {}; uurVrijgave = {}; $('#calendar').fullCalendar('refetchEvents'); }); flatpickr.l10ns.default.firstDayOfWeek = 1; flatpickr.localize(flatpickr.l10ns.nl); flatpickr.localize(flatpickr.l10ns.fr); flatpickr("#daypicker", { dateFormat: 'Y-m-d', inline: true, enableTime: false, contentHeight: 800, locale: "nl", // locale: "nl", onChange: function (selectedDates, dateStr, instance) { autoVrijgave = {}; uurVrijgave = {}; $('#calendar').fullCalendar('gotoDate', dateStr); }, }); flatpickr("#calendarWizard", { dateFormat: 'Y-m-d', inline: true, enableTime: false, contentHeight: 800, locale: "nl", // locale: "nl", onChange: function (selectedDates, dateStr, instance) { $('#fullcalendarWizard').fullCalendar('gotoDate', dateStr); }, }) flatpickr("#daypickerAll", { dateFormat: 'Y-m-d', inline: true, enableTime: false, contentHeight: 800, locale: "nl", // locale: "nl", onChange: function (selectedDates, dateStr, instance) { autoVrijgave = {}; uurVrijgave = {}; $(".calendar").each(function () { $id = $(this).data("id"); $('.idvall' + $id).fullCalendar('gotoDate', dateStr); }); }, }); $(".doctor-chosen").on("transitionend", function (event) { $start = "no"; }); $('.choose-doctor').on('click', function () { autoVrijgave = {}; uurVrijgave = {}; if ($start == "no") { $start = "yes"; $check = $('.doctor-check'); $checka = $('.choose-doctor'); $checka.removeClass("achecked"); if (!$(this).find('.doctor-check').hasClass("checked")) { $check.removeClass('checked'); $(this).find('.doctor-check').addClass('checked'); $(this).addClass("achecked"); autoVrijgave = {}; uurVrijgave = {}; $('#calendar').fullCalendar('refetchEvents'); $(".calhidden").css('visibility', 'visible'); } else { $check.removeClass('checked'); } } }); $('#bevestigafspraak').on('mouseup', function () { $overlay.css({"display": "flex"}); $overlayshown = true; }); $('#overlay-cancel').on('click', function (e) { e.preventDefault(); $overlay.hide(); $overlayshown = false; }); $(document).click(function (event) { //console.log('overlayshown = ' + $overlayshown); if ($overlayshown && !$(event.target).closest('#dialog').length) { // $('#dialog').hide(); } }); console.log(view); switch (view) { case "1": console.log("triggerd 1"); $(".viewswitchers").hide(); //$("viewdef").click(); break; case "2": console.log("triggerd 2"); $(".viewall").click(); $(".viewswitchers").hide(); // code block break; case "3": console.log("triggerd 3"); $(".viewwiz").click(); $(".viewswitchers").hide(); // code block break; default: // code block } } function bookingAfterLogin(event) { event.start = moment.utc(event.start); event.end = moment.utc(event.end); event.idz = event.id; $("#reason").val(""); $(".overlay-cancel .overlay-message").html("onemoment_checking"); $(".overlay-cancel").css({"display": "flex"}); $('#overlay-cancel').hide(); $.ajax({ url: rootmap + "/inc/request.php", method: "POST", data: {call: "makeAppointment", id: event.idz, practice: config.practice.id}, }).done(function (e) { if (e == 2) { $(".overlay-cancel").hide(); $('#overlay-cancel').show(); $(".overlayConfirm .type").text(event.title); $(".overlayConfirm .date").text(event.start.format("DD/MM/YYYY - HH:mm")); $(".overlayConfirm .doctor").text($(".selectdoctor." + event.doctorid).first().text()); $(".overlayConfirm").css({"display": "flex"}); $('#overlay-cancel-confirm').unbind().on('click', function (e) { e.preventDefault(); $(".overlayConfirm").hide(); $(".overlay-cancel .overlay-message").html("onemoment"); $(".overlay-cancel").css({"display": "flex"}); $('#overlay-cancel').hide(); $.ajax({ url: rootmap + "/inc/request.php", method: "POST", data: {call: "unlockAppointment", id: event.idz, type: "normal"}, }).done(function (e) { $(".overlay-cancel").hide(); event_id = undefined; }); }); $(".save-booking").unbind().on('click', function (e) { e.preventDefault(); //$uid = $("#kiespersoon").val(); $gebruiker = $("#kiespersoon option:selected").text(); if ($("#kiespersoon").val() == user[0].uid) { $gebruiker = "none"; } $uid = user[0].uid; $reason = $("#reason").val(); $email = $('#notifyemail:checkbox:checked').length > 0; $sms = $('#notifysms:checkbox:checked').length > 0; $practiceid = config.practice.id; $doctorid = event.doctorid; $(".overlayConfirm").hide(); $(".overlay-cancel .overlay-message").html("onemoment_booking"); $(".overlay-cancel").css({"display": "flex"}); $('#overlay-cancel').hide(); $.ajax({ url: rootmap + "/inc/request.php", method: "POST", data: { call: "book", practiceid: $practiceid, doctorid: $doctorid, id: event.idz, user: $uid, reason: $reason, notifymail: $email, notifysms: $sms, gebruiker: $gebruiker, event: { idz: event.idz, start: event.start.format("X"), end: event.end.format("X"), textColor: "white", color: "green", doctorid: $doctorid, reason: $reason } }, }).done(function (e) { $(".overlay-cancel .overlay-message").html("appointmentbooked"); $('#overlay-cancel').show(); $('#overlay-cancel').unbind().on('click', function (e) { e.preventDefault(); autoVrijgave = {}; uurVrijgave = {}; $('#calendar').fullCalendar("refetchEvents"); $(".overlay-cancel").hide(); event_id = undefined; }); }); }); } else if (e == 3) { $(".overlay-cancel .overlay-message").html("error_blocked"); $('#overlay-cancel').show(); $('#overlay-cancel').unbind().on('click', function (e) { e.preventDefault(); autoVrijgave = {}; uurVrijgave = {}; $('#calendar').fullCalendar("refetchEvents"); $(".overlay-cancel").hide(); event_id = undefined; }); } else { $(".overlay-cancel .overlay-message").html("error_appointmenttaken"); $('#overlay-cancel').show(); $('#overlay-cancel').unbind().on('click', function (e) { e.preventDefault(); autoVrijgave = {}; uurVrijgave = {}; $('#calendar').fullCalendar("refetchEvents"); $(".overlay-cancel").hide(); event_id = undefined; }); } }).fail(function (e) { $(".overlay-cancel .overlay-message").html("error_appointmenttaken"); $('#overlay-cancel').show(); $('#overlay-cancel').unbind().on('click', function (e) { e.preventDefault(); autoVrijgave = {}; uurVrijgave = {}; $('#calendar').fullCalendar("refetchEvents"); $(".overlay-cancel").hide(); event_id = undefined; }); }); } function booking(event) { if (event == 0) { $(".overlay-cancel .overlay-message").html("noavailableappointmentsquickbooking"); $(".overlay-cancel").css({"display": "flex"}); $('#overlay-cancel').show(); } else { $(".overlay-cancel .overlay-message").html("onemoment_checking"); $(".overlay-cancel").css({"display": "flex"}); $('#overlay-cancel').hide(); $.ajax({ url: rootmap + "/inc/request.php", method: "POST", data: {call: "makeAppointment", id: event.idz, practice: config.practice.id}, }).done(function (e) { if (e == 2) { $(".overlay-cancel").hide(); $('#overlay-cancel').show(); //$(".overlayConfirm .type").text(event.title); $(".overlayConfirm .type").text(event.title); $(".overlayConfirm .date").text(event.start.format("DD/MM/YYYY - HH:mm")); $(".overlayConfirm .doctor").text($(".selectdoctor." + event.doctorid).first().text()); $(".overlayConfirm").css({"display": "flex"}); $('#overlay-cancel-confirm').unbind().on('click', function (e) { e.preventDefault(); $(".overlayConfirm").hide(); $(".overlay-cancel .overlay-message").html("onemoment"); $(".overlay-cancel").css({"display": "flex"}); $('#overlay-cancel').hide(); $.ajax({ url: rootmap + "/inc/request.php", method: "POST", data: {call: "unlockAppointment", id: event.idz, type: "normal"}, }).done(function (e) { $(".overlay-cancel").hide(); }); }); $(".save-booking").unbind().on('click', function (e) { e.preventDefault(); //$uid = $("#kiespersoon").val(); $gebruiker = $("#kiespersoon option:selected").text(); if ($("#kiespersoon").val() == user[0].uid) { $gebruiker = "none"; } $uid = user[0].uid; $reason = $("#reason").val(); $email = $('#notifyemail:checkbox:checked').length > 0; $sms = $('#notifysms:checkbox:checked').length > 0; $practiceid = config.practice.id; $doctorid = event.doctorid; $(".overlayConfirm").hide(); $(".overlay-cancel .overlay-message").html("onemoment_booking"); $(".overlay-cancel").css({"display": "flex"}); $('#overlay-cancel').hide(); $.ajax({ url: rootmap + "/inc/request.php", method: "POST", data: { call: "book", practiceid: $practiceid, doctorid: $doctorid, id: event.idz, user: $uid, reason: $reason, notifymail: $email, notifysms: $sms, gebruiker: $gebruiker, event: { idz: event.idz, start: event.start.format("X"), end: event.end.format("X"), textColor: "white", color: "green", doctorid: $doctorid, reason: $reason } }, }).done(function (e) { $(".overlay-cancel .overlay-message").html("appointmentbooked"); $('#overlay-cancel').show(); $('#overlay-cancel').unbind().on('click', function (e) { e.preventDefault(); autoVrijgave = {}; uurVrijgave = {}; $('#calendar').fullCalendar("refetchEvents"); $(".overlay-cancel").hide(); }); }); }); } else if (e == 1) { $(".overlay-cancel").hide(); $(".overlay-login").css({"display": "flex"}); $(".overlay-login .cancel").unbind().on('click', function (e) { $.ajax({ url: rootmap + "/inc/request.php", method: "POST", data: {call: "unlockAppointment", id: event.idz, type: "force"}, }).done(function (e) { $(".overlay-login").hide(); }); e.preventDefault(); }); $(".overlay-login .registrationredirect").unbind().on('click', function (e) { $.ajax({ url: rootmap + "/inc/request.php", method: "POST", data: {call: "unlockAppointment", id: event.idz, type: "force"}, }).done(function (e) { $link = $('*[data-tpl="register"]'); $(".nav-link.main.active").removeClass("active"); $link.addClass("active"); addTemplateQueue("register", "#content", ""); addCommandQueue("defineRegister"); $(".overlay-login").hide(); triggerTemplateQueue(); }); e.preventDefault(); }); $(".overlay-login .inlogbutton-overlay").unbind().on('click', function (e) { e.preventDefault(); $.ajax({ url: rootmap + "/inc/request.php", method: "POST", data: {call: "login", user: $("#user-overlay").val(), pass: $("#pass-overlay").val()} }).done(function (e) { //check if login is oke // if true refresh the page; // else show popup if (e == 1) { $doctorid = event.doctorid; eventz = { doctorid: $doctorid, id: event.idz, start: event.start.format(), end: event.end.format(), textColor: "white", color: "green", title: event.title, }; $.ajax({ url: rootmap + "/inc/request.php", method: "POST", data: {call: "saveEvent", event: eventz}, }).done(function (e) { $.ajax({ url: rootmap + "/inc/request.php", method: "POST", data: {call: "unlockAppointment", id: event.idz, type: "force"}, }).done(function (e) { location.reload(); }); }).fail(function (e) { location.reload(); }); } else { $(".overlay-login").hide(); $(".overlay-cancel .overlay-title").html("error_tryagain"); $(".overlay-cancel .overlay-message").html("error_incorrectusernamepassword"); $(".overlay-cancel ").css({"display": "flex"}); $("#overlay-cancel").show(); } }); }); } else if (e == 3) { $(".overlay-cancel .overlay-message").html("error_blocked"); $('#overlay-cancel').show(); $('#overlay-cancel').unbind().on('click', function (e) { e.preventDefault(); autoVrijgave = {}; uurVrijgave = {}; $('#calendar').fullCalendar("refetchEvents"); $(".overlay-cancel").hide(); event_id = undefined; }); } else { $(".overlay-cancel .overlay-message").html("error_appointmenttaken"); $('#overlay-cancel').show(); $('#overlay-cancel').unbind().on('click', function (e) { e.preventDefault(); autoVrijgave = {}; uurVrijgave = {}; $('#calendar').fullCalendar("refetchEvents"); $(".overlay-cancel").hide(); }); } }).fail(function (e) { $(".overlay-cancel .overlay-message").html("error_appointmenttaken"); $('#overlay-cancel').show(); $('#overlay-cancel').unbind().on('click', function (e) { e.preventDefault(); autoVrijgave = {}; uurVrijgave = {}; $('#calendar').fullCalendar("refetchEvents"); $(".overlay-cancel").hide(); }); }); } } function defineProfile() { $(".cancel-updateprofile").on('click', function (e) { e.preventDefault(); $link = $('*[data-tpl="appointments"]'); $(".nav-link.main.active").removeClass("active"); $link.addClass("active"); addTemplateQueue("appointments", "#content", {doctor: doctor, user: user}); addCommandQueue("defineAppointments"); triggerTemplateQueue(); }); if (user[0].field_gender == "M") { $("#man").prop("checked", true); } else { $("#vrouw").prop("checked", true); } $(".account-save-account").on('click', function (e) { e.preventDefault(); clearVerification(); if ($(".person-link-family").hasClass("active")) { $(".overlay-create").hide(); $(".overlay-cancel .overlay-message").html("onemoment_changingsubprofile"); $(".overlay-cancel").css({"display": "flex"}); $('#overlay-cancel').hide(); $.ajax({ url: rootmap + "/inc/request.php", method: "POST", dataType: "json", data: { voornaam: $("#voornaam").val(), call: "smallCreateUpdate", achternaam: $("#achternaam").val(), geboortedag: $("#geboortedag").val(), geboortemaand: $("#geboortemaand").val(), geboortejaar: $("#geboortejaar").val(), gender: $("input[name=gender]:checked").val(), id: $(".person-link-family.active").data("id") }, }).done(function (e) { tempUser = e; $(".overlay-cancel .overlay-message").html("updatesaved"); $('#overlay-cancel').show(); $('#overlay-cancel').unbind().on('click', function (e) { e.preventDefault(); $(".overlay-cancel").hide(); user[0] = tempUser; var link = $(".nav-link.main.active").data('tpl'); var command = $(".nav-link.main.active").data('command'); $context = {user: user}; addTemplateQueue(link, "#content", $context); addCommandQueue(command); triggerTemplateQueue(); }); }).fail(function (e) { $(".overlay-cancel .overlay-message").html("error"); $('#overlay-cancel').show(); $('#overlay-cancel').unbind().on('click', function (e) { e.preventDefault(); $(".overlay-cancel").hide(); }); }); } else { $a = true; if (!checkPassValue("profile")) { $a = false; } if (!formValidate("fullprofile")) { $a = false; } if ($a) { $(".overlay-cancel .overlay-message").html("onemoment_changingprofile"); $(".overlay-cancel").css({"display": "flex"}); $('#overlay-cancel').hide(); $checkEmail = $("#email").val(); $.ajax({ url: rootmap + "/inc/request.php", method: "POST", dataType: "json", data: $("#fullprofile").serialize(), }).done(function (e) { tempUser = e; if ($checkEmail == user[0].email) { $(".overlay-cancel .overlay-message").html("success_updatedprofile"); $('#overlay-cancel').show(); $('#overlay-cancel').unbind().on('click', function (e) { e.preventDefault(); $(".overlay-cancel").hide(); user[0] = tempUser; var link = $(".nav-link.main.active").data('tpl'); var command = $(".nav-link.main.active").data('command'); $context = {user: user}; addTemplateQueue(link, "#content", $context); addCommandQueue(command); triggerTemplateQueue(); }); } else if ($checkEmail == e.email) { $(".overlay-cancel .overlay-message").html("success_updatedprofile"); $('#overlay-cancel').show(); $('#overlay-cancel').unbind().on('click', function (e) { e.preventDefault(); $(".overlay-cancel").hide(); user[0] = tempUser; var link = $(".nav-link.main.active").data('tpl'); var command = $(".nav-link.main.active").data('command'); $context = {user: user}; addTemplateQueue(link, "#content", $context); addCommandQueue(command); triggerTemplateQueue(); }); } else { $(".overlay-cancel .overlay-message").html("error_unusableemail"); $('#overlay-cancel').show(); $('#overlay-cancel').unbind().on('click', function (e) { e.preventDefault(); $(".overlay-cancel").hide(); user[0] = tempUser; var link = $(".nav-link.main.active").data('tpl'); var command = $(".nav-link.main.active").data('command'); $context = {user: user}; addTemplateQueue(link, "#content", $context); addCommandQueue(command); triggerTemplateQueue(); }); } }).fail(function (e) { $(".overlay-cancel .overlay-message").html("error"); $('#overlay-cancel').show(); $('#overlay-cancel').unbind().on('click', function (e) { e.preventDefault(); $(".overlay-cancel").hide(); }); }); } } }); $(".add-person").on('click', function () { $(".overlay-create").css({"display": "flex"}); $('#overlay-cancel-create').unbind().on('click', function (e) { e.preventDefault(); $(".overlay-create").hide(); }); $('.account-create').unbind().on('click', function (e) { e.preventDefault(); clearVerification(); if (formValidate("simpleprofile")) { $(".overlay-create").hide(); $(".overlay-cancel .overlay-message").html("onemoment_addinguser"); $(".overlay-cancel").css({"display": "flex"}); $('#overlay-cancel').hide(); $.ajax({ url: rootmap + "/inc/request.php", method: "POST", dataType: "json", data: $("#simpleprofile").serialize(), }).done(function (e) { tempUser = e; $(".overlay-cancel .overlay-message").html("success_useradded"); $('#overlay-cancel').show(); $('#overlay-cancel').unbind().on('click', function (e) { e.preventDefault(); $(".overlay-cancel").hide(); user[0] = tempUser; var link = $(".nav-link.main.active").data('tpl'); var command = $(".nav-link.main.active").data('command'); $context = {user: user}; addTemplateQueue(link, "#content", $context); addCommandQueue(command); triggerTemplateQueue(); }); }).fail(function (e) { $(".overlay-cancel .overlay-message").html("error"); $('#overlay-cancel').show(); $('#overlay-cancel').unbind().on('click', function (e) { e.preventDefault(); $(".overlay-cancel").hide(); }); }); } }); }); $(".choose-doctor").unbind().on('click', function () { $('.account-data input, .contact-data input').removeAttr('disabled'); if (!$(this).hasClass("active")) { $(".choose-doctor").removeClass('active'); $(this).addClass("active"); } else { $(".choose-doctor").removeClass('active'); } if ($(this).hasClass("person-link-family")) { $id = $(this).data("key"); $('.account-data input, .contact-data input').attr('disabled', ""); $("#voornaam").val(user[0].family[$id].voornaam); $("#achternaam").val(user[0].family[$id].achternaam); $("#geboortedag").val(user[0].family[$id].geboortedag); $("#geboortemaand").val(user[0].family[$id].geboortemaand); $("#geboortejaar").val(user[0].family[$id].geboortejaar); if (user[0].family[$id].gender == "M") { $("#man").prop("checked", true); } else { $("#vrouw").prop("checked", true); } } else { $("#voornaam").val(user[0].field_first_name); $("#achternaam").val(user[0].field_last_name); $("#geboortedag").val(user[0].field_dag); $("#geboortemaand").val(user[0].field_maand); $("#geboortejaar").val(user[0].field_jaar); if (user[0].field_gender == "M") { $("#man").prop("checked", true); } else { $("#vrouw").prop("checked", true); } } }); $(".delete-person").unbind().on('click', function (e) { e.preventDefault(); $id = $(this).data("id"); $("#overlay-cancel-con").show(); $("#overlay-confirm").show(); $(".overlay-confirm .overlay-title").html("areyousure"); $(".overlay-confirm .overlay-message").html("areyousure_deleteuser"); $(".overlay-confirm").css({"display": "flex"}); $("#overlay-cancel-con").unbind().on('click', function (e) { $(".overlay-confirm").hide(); }); $("#overlay-confirm").unbind().on('click', function (e) { $(".overlay-confirm .overlay-message").html("onemoment"); $("#overlay-cancel-con").hide(); $("#overlay-confirm").hide(); $.ajax({ url: rootmap + "/inc/request.php", method: "POST", dataType: "json", data: {call: "deletefamily", id: $id} }).done(function (e) { $(".overlay-confirm").hide(); user[0] = e; var link = $(".nav-link.main.active").data('tpl'); var command = $(".nav-link.main.active").data('command'); $context = {user: user}; addTemplateQueue(link, "#content", $context); addCommandQueue(command); triggerTemplateQueue(); }); }); }); initOptions($('#geboortejaar'), $('#geboortemaand')); initOptions($('#geboortejaar-popup'), $('#geboortemaand-popup')); initListenerDate($('#geboortejaar'), $('#geboortemaand'), $('#geboortedag')); initListenerDate($('#geboortejaar-popup'), $('#geboortemaand-popup'), $('#geboortedag-popup')); $("#geboortedag").val(user[0].field_dag); $("#geboortemaand").val(user[0].field_maand); $("#geboortejaar").val(user[0].field_jaar); } function history() { $(".choose-doctor").on('click', function () { if (!$(this).hasClass("active")) { $(".choose-doctor").removeClass('active'); $(this).addClass("active"); } else { $(".choose-doctor").removeClass('active'); } }); $(".delete-person").on('click', function (e) { $("#overlay-cancel-con").show(); $("#overlay-confirm").show(); $(".overlay-confirm .overlay-title").html("areyousure"); $(".overlay-confirm .overlay-message").html("areyousure_deleteappointment"); $(".overlay-confirm").css({"display": "flex"}); var id = $(this).data("id") $("#overlay-cancel-con").unbind().on('click', function (e) { $(".overlay-confirm").hide(); }); $("#overlay-confirm").unbind().on('click', function (e) { $(".overlay-confirm .overlay-message").html("onemoment"); $("#overlay-cancel-con").hide(); $("#overlay-confirm").hide(); $.ajax({ url: rootmap + "/inc/request.php", method: "POST", data: {call: "annul", id: id} }).done(function (e) { $(".overlay-confirm").hide(); addTemplateQueue("history", "#content", ""); addCommandQueue("history"); triggerTemplateQueue(); }); }); e.preventDefault(); }); $('.reason-link').unbind().click(function (e) { e.preventDefault(); // console.log('clicked appointment reason'); var $clickedAppointmentRow = $(e.target).closest('.appointment-reason').closest('tr'); $clickedAppointmentRow.toggleClass('open'); $clickedAppointmentRow.find('span').toggleClass('shown'); $clickedAppointmentRow.next('.reason-row').toggleClass('shown'); }); } function addTemplateQueue(name, div, context) { var tempQueue = {name: name, div: div, context: context}; queue.push(tempQueue); } function addCommandQueue(name, argz) { var tempQueuez = {name: name, argz: argz}; commandQueue.push(tempQueuez); } function triggerTemplateQueue() { getTemplate(); } function triggerCommandQueue() { getCommand(); } function getCommand() { if (commandQueue.length != 0) { var tempQueue = commandQueue.shift(); //console.log(tempQueue); executeFunctionByName(tempQueue.name, window, tempQueue.argz); getCommand(); } } function getTemplate() { //console.log("triggerd"); var tempQueue = queue.shift(); $.get(rootmap + '/views/' + tempQueue.name + '.tpl.php', function (data) { }, 'html').done(function (e) { $(tempQueue.div).empty(); var template = Handlebars.compile(e); //console.log(tempQueue.context); $(tempQueue.div).empty().html(template(tempQueue.context)).promise().done(function (e) { resizeMenu(); if (queue.length != 0) { getTemplate(); } else { triggerCommandQueue(); } }); }); } function resizeMenu() { $("#content .left-column").removeAttr("style"); $(".page-nav").removeAttr("style"); if ($(".navbar-toggler").is(":visible")) { //console.log($(".fc-center").width()); } else { $contentHeight = $("#content").height(); $contentHeight = $contentHeight + 53; $windowHeight = window.innerHeight; $height = $contentHeight; if ($windowHeight > $contentHeight) { $height = $windowHeight; } $("#content .left-column").css("height", $height - 53); $(".page-nav").css("height", $height); } } function executeFunctionByName(functionName, context, args) { //context = $.context; var args = Array.prototype.slice.call(arguments, 2); var namespaces = functionName.split("."); var func = namespaces.pop(); for (var i = 0; i < namespaces.length; i++) { context = context[namespaces[i]]; } return context[func].apply(context, args); } function initListenerDate($yearSelect, $monthSelect, $daySelect) { $monthSelect.unbind().change(function () { reloadDays($yearSelect.val(), $monthSelect.val(), $daySelect) }); $yearSelect.unbind().change(function () { reloadDays($yearSelect.val(), $monthSelect.val(), $daySelect) }); } function reloadDays($year, $month, $day) { var temp = $day.val(); $day.empty(); var $daysInPickedMonth = moment($year + '-' + $month, 'YYYY-MM').daysInMonth(); for (var i = 1; i <= $daysInPickedMonth; i++) { var option = new Option(i, i); $day.append($(option)); } //gekozen dag terug invullen $day.find('[value="' + temp + '"]').attr('selected', 'selected'); } function initOptions($yearSelect, $monthSelect) { $year = new Date().getFullYear(); //jaren aanvullen for (var i = ($year + 100); i >= $year; i--) { var j = i - 100; var option = new Option(j, j); $yearSelect.append($(option)); } //maanden aanvullen for (i = 1; i <= 12; i++) { i = i.toString(); if (i.length == 1) { i = i; } var month = moment(i, 'MM').format('MMMM'); var option = new Option(month, i); $monthSelect.append($(option)); } } function clearVerification() { $("#passwordhelp").html(""); $(".has-error").removeClass("has-error"); } function checkPassValue(id) { var $help = $('#passwordhelp'); if ($("#" + id + " #password").val() === $("#" + id + " #confirm_password").val()) { return true } else { $("#" + id + " #password").addClass('has-error'); $("#" + id + " #confirm_password").addClass('has-error'); $help.html("error_incorrectusernamepassword"); return false; } } function formValidate(formID) { var $form = $('#' + formID), $input = $form.find('input,textarea,select'), valid = true; $(".has-error").removeClass("has-error"); $form.removeClass("has-error"); $input.each(function () { var $el = $(this), type = $el.attr('type'); if (type === 'radio') { if ($el.is(':checked')) { $('#' + $el.attr('name')).val($el.val()); } } if ($el.attr('required')) { var value = $el.val(); if (!value || !value.length) { valid = false; $el.addClass('has-error'); } } }); return valid; }