{"id":2202,"date":"2026-01-09T16:20:13","date_gmt":"2026-01-09T21:20:13","guid":{"rendered":"https:\/\/njforeveryoungmd.com\/?page_id=2202"},"modified":"2026-02-17T15:14:11","modified_gmt":"2026-02-17T20:14:11","slug":"appointment-form","status":"publish","type":"page","link":"https:\/\/njforeveryoungmd.com\/en_nz\/appointment-form\/","title":{"rendered":"Appointment Form"},"content":{"rendered":"\t\t<div data-elementor-type=\"wp-page\" data-elementor-id=\"2202\" class=\"elementor elementor-2202\" data-elementor-post-type=\"page\">\n\t\t\t\t<div class=\"elementor-element elementor-element-8248732 e-flex e-con-boxed e-con e-parent\" data-id=\"8248732\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t\t\t<div class=\"elementor-element elementor-element-e020cab elementor-widget elementor-widget-html\" data-id=\"e020cab\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"html.default\">\n\t\t\t\t\t<!DOCTYPE html>\n<html lang=\"en\">\n<head>\n    <meta charset=\"UTF-8\">\n    <meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\">\n    <title>Book Appointment<\/title>\n    <style>\n        :root {\n            --primary: #9bc426;\n            --primary-dark: #8ab022;\n            --text: #000000;\n            --bg: #ffffff;\n            --gray: #f5f5f5;\n            --border: #e0e0e0;\n        }\n\n        * {\n            margin: 0;\n            padding: 0;\n            box-sizing: border-box;\n        }\n\n        body {\n            font-family: 'Segoe UI', Tahoma, Geneva, Verdana, sans-serif;\n            background: #ffffff;\n            min-height: 100vh;\n            color: var(--text);\n            display: flex;\n            flex-direction: column;\n        }\n\n        .container {\n            max-width: 900px;\n            margin: 0 auto;\n            padding: 20px;\n            width: 100%;\n            flex: 1;\n        }\n\n        .header {\n            text-align: center;\n            margin-bottom: 30px;\n            padding-bottom: 20px;\n            border-bottom: 1px solid var(--border);\n        }\n\n        .header h1 {\n            color: var(--text);\n            font-size: 28px;\n            margin-bottom: 5px;\n        }\n\n        .header p {\n            color: #666;\n            font-size: 14px;\n        }\n\n        .progress-container {\n            margin-bottom: 40px;\n            position: relative;\n            padding: 0 20px;\n        }\n\n        .progress-bar {\n            display: flex;\n            justify-content: space-between;\n            position: relative;\n            z-index: 1;\n        }\n\n        .progress-line {\n            position: absolute;\n            top: 15px;\n            left: 20px;\n            right: 20px;\n            height: 2px;\n            background: var(--border);\n            z-index: 0;\n        }\n\n        .progress-line-fill {\n            position: absolute;\n            top: 15px;\n            left: 20px;\n            height: 2px;\n            background: var(--primary);\n            z-index: 0;\n            transition: width 0.3s ease;\n            width: 0%;\n        }\n\n        .step-indicator {\n            width: 32px;\n            height: 32px;\n            background: white;\n            border: 2px solid var(--border);\n            border-radius: 50%;\n            display: flex;\n            align-items: center;\n            justify-content: center;\n            font-weight: bold;\n            color: #999;\n            transition: all 0.3s ease;\n            cursor: default;\n        }\n\n        .step-indicator.active {\n            border-color: var(--primary);\n            color: var(--primary);\n            background: white;\n        }\n\n        .step-indicator.completed {\n            background: var(--primary);\n            border-color: var(--primary);\n            color: white;\n        }\n\n        .step-content {\n            display: none;\n            animation: fadeIn 0.4s ease;\n        }\n\n        .step-content.active {\n            display: block;\n        }\n\n        @keyframes fadeIn {\n            from { opacity: 0; transform: translateY(10px); }\n            to { opacity: 1; transform: translateY(0); }\n        }\n\n        .section-title {\n            font-size: 24px;\n            margin-bottom: 25px;\n            color: var(--text);\n            font-weight: 600;\n        }\n\n        .services-grid {\n            display: grid;\n            grid-template-columns: repeat(auto-fill, minmax(280px, 1fr));\n            gap: 15px;\n        }\n\n        .service-card {\n            border: 2px solid var(--border);\n            border-radius: 8px;\n            padding: 15px;\n            cursor: pointer;\n            transition: all 0.2s;\n            display: flex;\n            align-items: center;\n            justify-content: space-between;\n            background: white;\n        }\n\n        .service-card:hover {\n            border-color: var(--primary);\n            background: #fafafa;\n        }\n\n        .service-card.selected {\n            border-color: var(--primary);\n            background: #f0f7e6;\n        }\n\n        .check-icon {\n            width: 20px;\n            height: 20px;\n            border: 2px solid #ddd;\n            border-radius: 50%;\n            display: flex;\n            align-items: center;\n            justify-content: center;\n            color: white;\n            transition: all 0.2s;\n            flex-shrink: 0;\n            margin-left: 10px;\n        }\n\n        .service-card.selected .check-icon {\n            background: var(--primary);\n            border-color: var(--primary);\n        }\n\n        .doctor-list {\n            display: grid;\n            grid-template-columns: repeat(auto-fill, minmax(200px, 1fr));\n            gap: 20px;\n        }\n\n        .doctor-card {\n            border: 2px solid var(--border);\n            border-radius: 8px;\n            padding: 20px;\n            text-align: center;\n            cursor: pointer;\n            transition: all 0.2s;\n        }\n\n        .doctor-card:hover {\n            border-color: var(--primary);\n        }\n\n        .doctor-card.selected {\n            border-color: var(--primary);\n            background: #f0f7e6;\n        }\n\n        .doctor-card.disabled {\n            opacity: 0.5;\n            cursor: not-allowed;\n            pointer-events: none;\n        }\n\n        .doctor-avatar {\n            width: 80px;\n            height: 80px;\n            background: #eee;\n            border-radius: 50%;\n            margin: 0 auto 15px;\n            display: flex;\n            align-items: center;\n            justify-content: center;\n            font-size: 30px;\n            color: #aaa;\n        }\n\n        .doctor-name {\n            font-weight: bold;\n            margin-bottom: 5px;\n        }\n\n        .doctor-role {\n            font-size: 12px;\n            color: #666;\n        }\n\n        .form-group {\n            margin-bottom: 20px;\n        }\n\n        .form-group label {\n            display: block;\n            margin-bottom: 8px;\n            font-weight: 500;\n            color: #333;\n        }\n\n        .form-control {\n            width: 100%;\n            padding: 12px 15px;\n            border: 2px solid var(--border);\n            border-radius: 8px;\n            font-size: 16px;\n            transition: border-color 0.3s;\n            outline: none;\n        }\n\n        .form-control:focus {\n            border-color: var(--primary);\n        }\n\n        .date-time-container {\n            display: grid;\n            grid-template-columns: 1fr 1fr;\n            gap: 30px;\n        }\n\n        .time-slots {\n            display: grid;\n            grid-template-columns: repeat(auto-fill, minmax(90px, 1fr));\n            gap: 10px;\n            max-height: 300px;\n            overflow-y: auto;\n        }\n\n        .time-slot {\n            padding: 10px;\n            border: 1px solid var(--border);\n            border-radius: 6px;\n            text-align: center;\n            cursor: pointer;\n            font-size: 14px;\n            transition: all 0.2s;\n        }\n\n        .time-slot:hover {\n            border-color: var(--primary);\n            color: var(--primary);\n        }\n\n        .time-slot.selected {\n            background: var(--primary);\n            color: white;\n            border-color: var(--primary);\n        }\n\n        .buttons-container {\n            margin-top: 40px;\n            display: flex;\n            justify-content: space-between;\n            padding-top: 20px;\n            border-top: 1px solid var(--border);\n        }\n\n        .btn {\n            padding: 12px 30px;\n            border-radius: 50px;\n            font-size: 16px;\n            font-weight: 600;\n            cursor: pointer;\n            transition: all 0.2s;\n            border: none;\n            outline: none;\n        }\n\n        .btn-secondary {\n            background: #f5f5f5;\n            color: #666;\n        }\n\n        .btn-secondary:hover {\n            background: #e0e0e0;\n        }\n\n        .btn-primary {\n            background: var(--primary);\n            color: white;\n            box-shadow: 0 4px 15px rgba(155, 196, 38, 0.3);\n        }\n\n        .btn-primary:hover {\n            background: var(--primary-dark);\n            transform: translateY(-1px);\n        }\n\n        \/* Success Popup *\/\n        .popup-overlay {\n            display: none;\n            position: fixed;\n            top: 0;\n            left: 0;\n            width: 100%;\n            height: 100%;\n            background: rgba(0, 0, 0, 0.5);\n            z-index: 1000;\n            justify-content: center;\n            align-items: center;\n        }\n\n        .popup-overlay.active {\n            display: flex;\n        }\n\n        .popup-content {\n            background: white;\n            border-radius: 12px;\n            max-width: 600px;\n            width: 90%;\n            box-shadow: 0 10px 40px rgba(0, 0, 0, 0.3);\n            overflow: hidden;\n            animation: popupSlideIn 0.3s ease;\n        }\n\n        @keyframes popupSlideIn {\n            from { transform: scale(0.9); opacity: 0; }\n            to { transform: scale(1); opacity: 1; }\n        }\n\n        .popup-header {\n            background: white;\n            padding: 30px 30px 10px;\n            text-align: center;\n            border-bottom: 1px solid #f0f0f0;\n        }\n\n        .popup-header h2 {\n            font-size: 24px;\n            color: var(--text);\n            margin-bottom: 20px;\n        }\n\n        .popup-body {\n            background: #4a4a4a;\n            color: white;\n            padding: 40px 30px;\n            text-align: center;\n        }\n\n        .success-icon {\n            width: 100px;\n            height: 100px;\n            background: white;\n            border-radius: 50%;\n            margin: 0 auto 30px;\n            display: flex;\n            align-items: center;\n            justify-content: center;\n        }\n\n        .success-icon svg {\n            width: 50px;\n            height: 50px;\n            stroke: var(--primary);\n            stroke-width: 3;\n        }\n\n        .appointment-details {\n            font-size: 16px;\n            line-height: 1.8;\n            margin-bottom: 20px;\n        }\n\n        .appointment-details strong {\n            color: var(--primary);\n            font-weight: 600;\n        }\n\n        .appointment-location {\n            font-size: 14px;\n            opacity: 0.9;\n            margin-top: 20px;\n        }\n\n        .contact-info {\n            font-size: 14px;\n            margin-top: 25px;\n            padding-top: 25px;\n            border-top: 1px solid rgba(255, 255, 255, 0.2);\n        }\n\n        .popup-footer {\n            padding: 20px 30px;\n            text-align: center;\n            background: white;\n        }\n\n        .popup-close-btn {\n            background: #e0e0e0;\n            color: #666;\n            border: none;\n            padding: 12px 40px;\n            border-radius: 50px;\n            font-size: 16px;\n            font-weight: 600;\n            cursor: pointer;\n            transition: all 0.2s;\n        }\n\n        .popup-close-btn:hover {\n            background: #d0d0d0;\n        }\n\n        @media (max-width: 768px) {\n            .date-time-container {\n                grid-template-columns: 1fr;\n            }\n            .buttons-container {\n                flex-direction: column-reverse;\n                gap: 10px;\n            }\n            .btn {\n                width: 100%;\n            }\n            .popup-content {\n                width: 95%;\n            }\n            .popup-header, .popup-body, .popup-footer {\n                padding: 20px;\n            }\n        }\n    <\/style>\n<\/head>\n<body>\n\n    <div class=\"container\">\n        <div class=\"header\">\n            <h1>Book Appointment<\/h1>\n            <p>Follow the steps below to schedule your visit<\/p>\n        <\/div>\n\n        <div class=\"progress-container\">\n            <div class=\"progress-line\"><\/div>\n            <div class=\"progress-line-fill\" id=\"progressLine\"><\/div>\n            <div class=\"progress-bar\">\n            <div class=\"step-indicator active\" id=\"step1-ind\">1<\/div>\n                <div class=\"step-indicator\" id=\"step2-ind\">2<\/div>\n                <div class=\"step-indicator\" id=\"step3-ind\">3<\/div>\n                <div class=\"step-indicator\" id=\"step4-ind\">4<\/div>\n                <div class=\"step-indicator\" id=\"step5-ind\">5<\/div>\n\n            <\/div>\n        <\/div>\n\n       \n            <div class=\"step-content active\" id=\"step1\">\n                <h2 class=\"section-title\">Have You Visited Us Before?<\/h2>\n                <div class=\"services-grid\">\n                    <div class=\"service-card\" onclick=\"selectPatientType(this, 'New Patient')\">\n                        <span>New Patient<\/span>\n                        <div class=\"check-icon\"><\/div>\n                    <\/div>\n                    <div class=\"service-card\" onclick=\"selectPatientType(this, 'Follow-Up \/ Existing Patient')\">\n                        <span>Follow-Up \/ Existing Patient<\/span>\n                        <div class=\"check-icon\"><\/div>\n                    <\/div>\n                <\/div>\n            <\/div>\n\n            <div class=\"step-content\" id=\"step2\">\n                <h2 class=\"section-title\">What Most Interests You?<\/h2>\n                <div class=\"services-grid\" id=\"servicesList\"><\/div>\n            <\/div>\n\n            <div class=\"step-content\" id=\"step3\">\n                <h2 class=\"section-title\">Who Would You Like to See<\/h2>\n                <div class=\"doctor-list\" id=\"doctorList\"><\/div>\n            <\/div>\n\n            <div class=\"step-content\" id=\"step4\">\n                <h2 class=\"section-title\">Your Details<\/h2>\n                <div class=\"form-group\">\n                    <label>Full Name<\/label>\n                    <input type=\"text\" class=\"form-control\" id=\"name\" required>\n                <\/div>\n                <div class=\"form-group\">\n                    <label>Email Address<\/label>\n                    <input type=\"email\" class=\"form-control\" id=\"email\" required>\n                <\/div>\n                <div class=\"form-group\">\n                    <label>Phone Number<\/label>\n                    <input type=\"tel\" class=\"form-control\" id=\"phone\" required>\n                <\/div>\n                <div class=\"form-group\">\n                    <label>Address<\/label>\n                    <input type=\"text\" class=\"form-control\" id=\"address\" required>\n                <\/div>\n            <\/div>\n\n            <div class=\"step-content\" id=\"step5\">\n                <h2 class=\"section-title\">Select Date & Time<\/h2>\n                <div class=\"date-time-container\">\n                    <div>\n                        <label style=\"display:block; margin-bottom:10px; font-weight:500;\">Select Date<\/label>\n                        <input type=\"date\" class=\"form-control\" id=\"appointmentDate\" required style=\"font-size: 18px;\">\n                    <\/div>\n                    <div>\n                        <label style=\"display:block; margin-bottom:10px; font-weight:500;\">Select Time<\/label>\n                        <div class=\"time-slots\" id=\"timeSlots\"><\/div>\n                    <\/div>\n                <\/div>\n            <\/div>\n\n            <div class=\"buttons-container\">\n                <button type=\"button\" class=\"btn btn-secondary\" id=\"prevBtn\" onclick=\"changeStep(-1)\" style=\"display: none;\">Back<\/button>\n                <button type=\"button\" class=\"btn btn-primary\" id=\"nextBtn\" onclick=\"changeStep(1)\">Next<\/button>\n            <\/div>\n        <\/div>\n    <\/div>\n\n    <!-- Success Popup -->\n    <div class=\"popup-overlay\" id=\"successPopup\">\n        <div class=\"popup-content\">\n            <div class=\"popup-header\">\n                <h2>Appointment has been Requested<\/h2>\n            <\/div>\n            <div class=\"popup-body\">\n                <div class=\"success-icon\">\n                    <svg fill=\"none\" stroke=\"currentColor\" viewBox=\"0 0 24 24\">\n                        <path stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 12h6m-6 4h6m2 5H7a2 2 0 01-2-2V5a2 2 0 012-2h5.586a1 1 0 01.707.293l5.414 5.414a1 1 0 01.293.707V19a2 2 0 01-2 2z\"><\/path>\n                        <path stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5v6m6-6v6\"><\/path>\n                    <\/svg>\n                <\/div>\n                <div class=\"appointment-details\">\n                    Your appointment request for <strong id=\"popupDateTime\"><\/strong> at <strong id=\"popupLocation\">Piscataway<\/strong> in <strong>Piscataway, NJ<\/strong> has been received.\n                <\/div>\n                <div class=\"appointment-location\">\n                    You will receive a text message confirming receipt of this request and then another after your appointment has been confirmed. (SMS and data rates may apply)\n                <\/div>\n                <div class=\"contact-info\">\n                    For additional assistance or to change your request, please call us at <strong>(908) 300-7227<\/strong>\n                <\/div>\n            <\/div>\n            <div class=\"popup-footer\">\n                <button class=\"popup-close-btn\" onclick=\"closePopup()\">Close<\/button>\n            <\/div>\n        <\/div>\n    <\/div>\n\n    <script>\n        let patientType = null;\n\n        \/\/ Service to Doctor mapping\n       const serviceMapping = {\n            \/\/ Skin & Aesthetic Treatments\n            \"Skin Concerns (Acne, Pores, Texture, Pigmentation, Redness)\": [\n                \"Janna Hernandez RN\",\n                \"Ashley Loricka RN\"\n            ],\n        \n            \"Microneedling \/ Collagen Stimulation\": [\n                \"Janna Hernandez RN\",\n                \"Ashley Loricka RN\",\n                \"Bridget Markwood\"\n            ],\n        \n            \"Facials (DiamondGlow \/ Dermaplaning)\": [\n              \n                \"Bridget Markwood\"\n            ],\n        \n            \"Chemical Peels\": [\n              \n                \"Bridget Markwood\"\n            ],\n        \n            \/\/ Injectables & Regenerative\n            \"Injectables (Botox, Filler, Kybella, Y Lift)\": [\n                \"Janna Hernandez RN\",\n                \"Smita Ohri MD\"\n            ],\n        \n            \"PRP (Face or Scalp \/ Hair Restoration)\": [\n                \"Janna Hernandez RN\"\n            ],\n        \n            \/\/ Laser & Body\n            \"Laser Hair Removal\": [\n                \"Janna Hernandez RN\",\n                \"Ashley Loricka RN\"\n            ],\n        \n            \/\/ Medical & Wellness\n            \"Hormones & Integrative Medicine\": [\n                \"Janna Hernandez RN\",\n                \"Smita Ohri MD\"\n            ],\n        \n            \"Weight Loss (Semaglutide Program)\": [\n                \"Janna Hernandez RN\"\n            ],\n        \n            \"IV Therapy & Injections (IVs, B12, Glutathione)\": [\n                \"Janna Hernandez RN\",\n                \"Ashley Loricka RN\"\n            ],\n        \n            \/\/ Decision Support\n            \"Not sure \u2014 help me choose \/ consultation\": [\n                \"Any available specialist\",\n                \"Janna Hernandez RN\",\n                \"Ashley Loricka RN\",\n                \"Smita Ohri MD\",\n                \"Bridget Markwood\",\n                \"Alexi Torres\",\n                \"Pricilla Velez\"\n            ]\n        };\n\n\n\n\n        const services = Object.keys(serviceMapping);\n\n        const doctors = [\n            { name: \"Any available specialist\", role: \"General Specialist\" },\n            { name: \"Janna Hernandez RN\", role: \"Registered Nurse\" },\n            { name: \"Ashley Loricka RN\", role: \"Registered Nurse \" },\n            { name: \"Smita Ohri MD\", role: \"Longevity Physician\" },\n            {name:\"Pricilla Velez\",role:\"Front Office staff\"},\n            { name: \"Bridget Markwood\",role: \"Aesthetician\"},\n            { name: \"Alexi Torres\", role: \"Medical Assistant\"}\n        ];\n\n        const timeSlots = [\n            \"9:00 AM\", \"9:30 AM\", \"10:00 AM\", \"10:30 AM\", \"11:00 AM\", \"11:30 AM\",\n            \"12:00 PM\", \"12:30 PM\", \"1:00 PM\", \"1:30 PM\", \"2:00 PM\", \"2:30 PM\",\n            \"3:00 PM\", \"3:30 PM\", \"4:00 PM\", \"4:30 PM\", \"5:00 PM\"\n        ];\n        const doctorWeeklySchedule = {\n            \"Janna Hernandez RN\": {\n                wednesday: { start: \"10:00 AM\", end: \"5:30 PM\" },\n                saturday: { start: \"9:00 AM\", end: \"2:30 PM\" }\n            },\n        \n            \"Ashley Loricka RN\": {\n                monday:    { start: \"10:00 AM\", end: \"5:00 PM\" },\n                tuesday:   { start: \"12:00 PM\", end: \"7:30 PM\" },\n                thursday:  { start: \"10:00 AM\", end: \"5:00 PM\" },\n                friday:    { start: \"10:00 AM\", end: \"5:00 PM\" },\n                saturday:  { start: \"10:00 AM\", end: \"3:30 PM\" }\n            },\n        \n            \"Smita Ohri MD\": {\n                monday:    { start: \"10:00 AM\", end: \"5:30 PM\" },\n                tuesday:   { start: \"12:00 PM\", end: \"7:30 PM\" },\n                thursday:  { start: \"10:00 AM\", end: \"5:30 PM\" },\n                friday:    { start: \"10:00 AM\", end: \"5:30 PM\" }\n            },\n            \"Alexi Torres\":{\n                monday:    { start: \"10:00 AM\", end: \"5:30 PM\" },\n                tuesday:   { start: \"12:00 PM\", end: \"8:00 PM\" },\n                wednesday: {start: \"10:00 AM\", end: \"5:30 PM\"},\n                thursday:  { start: \"10:00 AM\", end: \"5:30 PM\" },\n                friday:    { start: \"10:00 AM\", end: \"5:30 PM\" },\n              \n            },\n            \"Bridget Markwood\":{\n                monday:    { start: \"9:30 AM\", end: \"5:00 PM\" },\n                tuesday:   { start: \"12:00 PM\", end: \"8:00 PM\" },\n                wednesday: {start: \"9:30 AM\", end: \"5:00 PM\" },\n                thursday:  { start: \"9:30 AM\", end: \"5:00 PM\"  },\n                friday:    { start: \"9:30 AM\", end: \"5:00 PM\"  },\n            },\n             \"Pricilla Velez\": {\n                monday:    { start: \"10:00 AM\", end: \"5:30 PM\" },\n                tuesday:   { start: \"12:00 PM\", end: \"8:00 PM\" },\n                friday:    { start: \"10:00 AM\", end: \"5:30 PM\" }\n            },\n        };\n\n\n        let currentStep = 1;\n        let selectedService = null;\n        let selectedDoctor = null;\n        let selectedTime = null;\n\n        document.addEventListener('DOMContentLoaded', () => {\n            renderServices();\n            renderDoctors();\n            renderTimeSlots();\n            \n            const today = new Date().toISOString().split('T')[0];\n            const dateInput = document.getElementById('appointmentDate');\n            dateInput.min = today;\n            dateInput.value = today;\n        });\n\n        function renderServices() {\n            const container = document.getElementById('servicesList');\n            container.innerHTML = services.map(service => `\n                <div class=\"service-card\" onclick=\"selectService(this, '${service.replace(\/'\/g, \"\\\\'\")}')\">\n                    <span>${service}<\/span>\n                    <div class=\"check-icon\">\n                        <svg fill=\"none\" stroke=\"currentColor\" viewBox=\"0 0 24 24\" style=\"width:14px;height:14px\"><path stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"3\" d=\"M5 13l4 4L19 7\"><\/path><\/svg>\n                    <\/div>\n                <\/div>\n            `).join('');\n        }\n\n        function selectService(el, service) {\n            document.querySelectorAll('.service-card').forEach(s => s.classList.remove('selected'));\n            el.classList.add('selected');\n            selectedService = service;\n            updateAvailableDoctors();\n        }\n\n        function updateAvailableDoctors() {\n            const availableDoctors = serviceMapping[selectedService] || [];\n            const doctorCards = document.querySelectorAll('.doctor-card');\n            \n            doctorCards.forEach(card => {\n                const doctorName = card.getAttribute('data-doctor');\n                if (availableDoctors.includes(doctorName)) {\n                    card.classList.remove('disabled');\n                } else {\n                    card.classList.add('disabled');\n                }\n            });\n            \n            selectedDoctor = null;\n        }\n\n        function renderDoctors() {\n            const container = document.getElementById('doctorList');\n            container.innerHTML = doctors.map(doc => `\n                <div class=\"doctor-card\" data-doctor=\"${doc.name}\" onclick=\"selectDoctor(this, '${doc.name}')\">\n                    <div class=\"doctor-avatar\">${doc.name.charAt(0)}<\/div>\n                    <div class=\"doctor-name\">${doc.name}<\/div>\n                    <div class=\"doctor-role\">${doc.role}<\/div>\n                <\/div>\n            `).join('');\n        }\n        \n        function selectPatientType(el, type) {\n            document.querySelectorAll('#step1 .service-card').forEach(c => c.classList.remove('selected'));\n            el.classList.add('selected');\n            patientType = type;\n        }\n\n\n        function selectDoctor(el, name) {\n            if (el.classList.contains('disabled')) return;\n            document.querySelectorAll('.doctor-card').forEach(d => d.classList.remove('selected'));\n            el.classList.add('selected');\n            selectedDoctor = name;\n            renderTimeSlots(selectedDoctor);\n\n        }\n\n        async function renderTimeSlots(selectedDoctor) {\n    const container = document.getElementById(\"timeSlots\");\n    container.innerHTML = \"\";\n\n    if (!selectedDoctor || !doctorWeeklySchedule[selectedDoctor]) return;\n\n    const dateInput = document.getElementById(\"appointmentDate\");\n    const dateValue = dateInput.value || new Date().toISOString().split(\"T\")[0];\n    dateInput.value = dateValue;\n\n    const date = new Date(dateValue + \"T00:00:00\");\n    const weekday = date.toLocaleDateString(\"en-US\", { weekday: \"long\" }).toLowerCase();\n\n    const daySchedule = doctorWeeklySchedule[selectedDoctor][weekday];\n\n    if (!daySchedule) {\n        container.innerHTML = `<p style=\"color:#999;\">${selectedDoctor} is off today<\/p>`;\n        return;\n    }\n\n    \/* \ud83d\udd39 FETCH BOOKED SLOTS FOR THIS DOCTOR + DATE *\/\n    const response = await fetch(\n        `\/wp-json\/wp-appointment\/v1\/booked-slots?doctor=${encodeURIComponent(selectedDoctor)}&date=${dateValue}`\n    );\n    const data = await response.json();\n\n    const bookedSlots = data.success ? data.bookedSlots : [];\n\n    const startMin = toMinutes(daySchedule.start);\n    const endMin   = toMinutes(daySchedule.end);\n    \n    \n    \n    const now = new Date();\n    const isToday = date.toDateString() === now.toDateString();\n    const currentMinutes = now.getHours() * 60 + now.getMinutes();\n    \n    const validSlots = timeSlots.filter(time => {\n        const minutes = toMinutes(time);\n    \n        \n        if (minutes < startMin || minutes > endMin) return false;\n    \n        \n        if (bookedSlots.includes(time)) return false;\n    \n       \n        if (isToday && minutes <= currentMinutes) return false;\n    \n        return true;\n    });\n\n\n    if (!validSlots.length) {\n        container.innerHTML = `<p style=\"color:#999;\">No available slots<\/p>`;\n        return;\n    }\n\n    container.innerHTML = validSlots.map(time => `\n        <div class=\"time-slot\" onclick=\"selectTime(this, '${time}')\">${time}<\/div>\n    `).join('');\n}\n\n\n        function toMinutes(time) {\n            const [t, meridian] = time.split(\" \");\n            let [h, m] = t.split(\":\").map(Number);\n        \n            if (meridian === \"PM\" && h !== 12) h += 12;\n            if (meridian === \"AM\" && h === 12) h = 0;\n        \n            return h * 60 + m;\n        }\n        document.getElementById(\"appointmentDate\")\n    .addEventListener(\"change\", () => renderTimeSlots(selectedDoctor));\n    \n        \n        \n    \n\n\n\n\n\n        function selectTime(el, time) {\n            document.querySelectorAll('.time-slot').forEach(t => t.classList.remove('selected'));\n            el.classList.add('selected');\n            selectedTime = time;\n        }\n\n        function changeStep(direction) {\n            if (direction === 1 && !validateStep(currentStep)) return;\n\n            if (currentStep === 5 && direction === 1) {\n                submitForm();\n                return;\n            }\n\n            currentStep += direction;\n            updateUI();\n        }\n\n        function updateUI() {\n            document.querySelectorAll('.step-content').forEach((el, index) => {\n                if (index + 1 === currentStep) {\n                    el.classList.add('active');\n                } else {\n                    el.classList.remove('active');\n                }\n            });\n\n            const progress = ((currentStep - 1) \/ 4) * 100;\n            document.getElementById('progressLine').style.width = `${progress}%`;\n\n            for (let i = 1; i <= 5; i++) {\n                const ind = document.getElementById(`step${i}-ind`);\n                ind.classList.remove('active', 'completed');\n                if (i < currentStep) ind.classList.add('completed');\n                if (i === currentStep) ind.classList.add('active');\n            }\n\n            document.getElementById('prevBtn').style.display = currentStep === 1 ? 'none' : 'block';\n            document.getElementById('nextBtn').textContent = currentStep === 5 ? 'Submit' : 'Next';\n            \n            window.scrollTo(0, 0);\n        }\n\n        function validateStep(step) {\n            if (step === 1) {\n                if (!patientType) {\n                    alert('Please select whether you are a new or returning patient.');\n                    return false;\n                }\n            } \n            else if (step === 2) {\n                if (!selectedService) {\n                    alert('Please select a service.');\n                    return false;\n                }\n            } \n            else if (step === 3) {\n                if (!selectedDoctor) {\n                    alert('Please select a provider.');\n                    return false;\n                }\n            } \n            else if (step === 4) {\n                const required = ['name', 'email', 'phone', 'address'];\n                for (let id of required) {\n                    if (!document.getElementById(id).value.trim()) {\n                        alert('Please fill in all fields.');\n                        return false;\n                    }\n                }\n            } \n            else if (step === 5) {\n                if (!selectedTime) {\n                    alert('Please select a time.');\n                    return false;\n                }\n            }\n            return true;\n        }\n\n\n        function submitForm() {\n            const name = document.getElementById('name').value;\n            const email = document.getElementById('email').value;\n            const phone = document.getElementById('phone').value;\n            const address = document.getElementById('address').value;\n            const date = document.getElementById('appointmentDate').value;\n            \n            \/\/ Format date for display\n            const dateObj = new Date(date + 'T00:00:00');\n            const options = { weekday: 'long', year: 'numeric', month: 'long', day: 'numeric' };\n            const formattedDate = dateObj.toLocaleDateString('en-US', options);\n            \n            \/\/ Show popup first\n            document.getElementById('popupDateTime').textContent = `${formattedDate} at ${selectedTime}`;\n            document.getElementById('successPopup').classList.add('active');\n\n            \n            \/\/ Create hidden form for submission\n            setTimeout(() => {\n                const payload = {\n                    name: name,\n                    patientType: patientType,\n                    email: email,\n                    phone: phone,\n                    address: address,\n                    service: selectedService,\n                    doctor: selectedDoctor,\n                    appointmentDate: date,\n                    appointmentTime: selectedTime\n                };\n            \n                fetch('https:\/\/njforeveryoungmd.com\/wp-json\/wp-appointment\/v1\/submit', {\n                    method: 'POST',\n                    headers: {\n                        'Content-Type': 'application\/json'\n                        },\n                        body: JSON.stringify(payload)\n                    })\n                    .then(response => {\n                        if (!response.ok) {\n                            throw new Error('Failed to submit appointment request');\n                        }\n                        return response.json();\n                    })\n                    .then(data => {\n                   \/\/ Google Analytics - track successful appointment request\n                        if (typeof gtag === 'function') {\n                            gtag('event', 'conversion', {'send_to': 'AW-17861128646\/ZOftCMHjgeYbEMbj7MRC'});\n                        }\n                    })\n                    .catch(error => {\n                        console.error('Submission error:', error);\n                        alert('There was an error submitting your request. Please try again.');\n                    });\n                \n                }, 500);\n\n        }\n\n        function closePopup() {\n            document.getElementById('successPopup').classList.remove('active');\n            \/\/ Reset form\n            currentStep = 1;\n            selectedService = null;\n            selectedDoctor = null;\n            selectedTime = null;\n            document.getElementById('name').value = '';\n            document.getElementById('email').value = '';\n            document.getElementById('phone').value = '';\n            document.getElementById('address').value = '';\n            document.querySelectorAll('.service-card').forEach(s => s.classList.remove('selected'));\n            document.querySelectorAll('.doctor-card').forEach(d => d.classList.remove('selected'));\n            document.querySelectorAll('.time-slot').forEach(t => t.classList.remove('selected'));\n            updateUI();\n        }\n    <\/script>\n<\/body>\n<\/html>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t","protected":false},"excerpt":{"rendered":"<p>Book Appointment Book Appointment Follow the steps below to schedule your visit 1 2 3 4 5 Have You Visited Us Before? New Patient Follow-Up \/ Existing Patient What Most Interests You? Who Would You Like to See Your Details Full Name Email Address Phone Number Address Select Date &#038; Time Select Date Select Time [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"footnotes":""},"class_list":["post-2202","page","type-page","status-publish","hentry"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.4 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>Appointment Form - Forever Young Complete Healthcare<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/njforeveryoungmd.com\/en_nz\/appointment-form\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Appointment Form - Forever Young Complete Healthcare\" \/>\n<meta property=\"og:description\" content=\"Book Appointment Book Appointment Follow the steps below to schedule your visit 1 2 3 4 5 Have You Visited Us Before? New Patient Follow-Up \/ Existing Patient What Most Interests You? Who Would You Like to See Your Details Full Name Email Address Phone Number Address Select Date &#038; Time Select Date Select Time [&hellip;]\" \/>\n<meta property=\"og:url\" content=\"https:\/\/njforeveryoungmd.com\/en_nz\/appointment-form\/\" \/>\n<meta property=\"og:site_name\" content=\"Forever Young Complete Healthcare\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/ForeverYoungHealthCare\" \/>\n<meta property=\"article:modified_time\" content=\"2026-02-17T20:14:11+00:00\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data1\" content=\"9 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/njforeveryoungmd.com\\\/appointment-form\\\/\",\"url\":\"https:\\\/\\\/njforeveryoungmd.com\\\/appointment-form\\\/\",\"name\":\"Appointment Form - Forever Young Complete Healthcare\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/njforeveryoungmd.com\\\/#website\"},\"datePublished\":\"2026-01-09T21:20:13+00:00\",\"dateModified\":\"2026-02-17T20:14:11+00:00\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/njforeveryoungmd.com\\\/appointment-form\\\/#breadcrumb\"},\"inLanguage\":\"en-NZ\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/njforeveryoungmd.com\\\/appointment-form\\\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/njforeveryoungmd.com\\\/appointment-form\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/njforeveryoungmd.com\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Appointment Form\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/njforeveryoungmd.com\\\/#website\",\"url\":\"https:\\\/\\\/njforeveryoungmd.com\\\/\",\"name\":\"Forever Young Complete Healthcare\",\"description\":\"Complete Health Care, Luxury Med Spa\",\"publisher\":{\"@id\":\"https:\\\/\\\/njforeveryoungmd.com\\\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/njforeveryoungmd.com\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-NZ\"},{\"@type\":\"Organization\",\"@id\":\"https:\\\/\\\/njforeveryoungmd.com\\\/#organization\",\"name\":\"Forever Young Complete Healthcare\",\"url\":\"https:\\\/\\\/njforeveryoungmd.com\\\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-NZ\",\"@id\":\"https:\\\/\\\/njforeveryoungmd.com\\\/#\\\/schema\\\/logo\\\/image\\\/\",\"url\":\"https:\\\/\\\/njforeveryoungmd.com\\\/wp-content\\\/uploads\\\/2025\\\/11\\\/Untitled-design-1.png\",\"contentUrl\":\"https:\\\/\\\/njforeveryoungmd.com\\\/wp-content\\\/uploads\\\/2025\\\/11\\\/Untitled-design-1.png\",\"width\":1200,\"height\":1200,\"caption\":\"Forever Young Complete Healthcare\"},\"image\":{\"@id\":\"https:\\\/\\\/njforeveryoungmd.com\\\/#\\\/schema\\\/logo\\\/image\\\/\"},\"sameAs\":[\"https:\\\/\\\/www.facebook.com\\\/ForeverYoungHealthCare\",\"https:\\\/\\\/www.instagram.com\\\/foreveryoung.medspa\"]}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Appointment Form - Forever Young Complete Healthcare","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/njforeveryoungmd.com\/en_nz\/appointment-form\/","og_locale":"en_US","og_type":"article","og_title":"Appointment Form - Forever Young Complete Healthcare","og_description":"Book Appointment Book Appointment Follow the steps below to schedule your visit 1 2 3 4 5 Have You Visited Us Before? New Patient Follow-Up \/ Existing Patient What Most Interests You? Who Would You Like to See Your Details Full Name Email Address Phone Number Address Select Date &#038; Time Select Date Select Time [&hellip;]","og_url":"https:\/\/njforeveryoungmd.com\/en_nz\/appointment-form\/","og_site_name":"Forever Young Complete Healthcare","article_publisher":"https:\/\/www.facebook.com\/ForeverYoungHealthCare","article_modified_time":"2026-02-17T20:14:11+00:00","twitter_card":"summary_large_image","twitter_misc":{"Est. reading time":"9 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/njforeveryoungmd.com\/appointment-form\/","url":"https:\/\/njforeveryoungmd.com\/appointment-form\/","name":"Appointment Form - Forever Young Complete Healthcare","isPartOf":{"@id":"https:\/\/njforeveryoungmd.com\/#website"},"datePublished":"2026-01-09T21:20:13+00:00","dateModified":"2026-02-17T20:14:11+00:00","breadcrumb":{"@id":"https:\/\/njforeveryoungmd.com\/appointment-form\/#breadcrumb"},"inLanguage":"en-NZ","potentialAction":[{"@type":"ReadAction","target":["https:\/\/njforeveryoungmd.com\/appointment-form\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/njforeveryoungmd.com\/appointment-form\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/njforeveryoungmd.com\/"},{"@type":"ListItem","position":2,"name":"Appointment Form"}]},{"@type":"WebSite","@id":"https:\/\/njforeveryoungmd.com\/#website","url":"https:\/\/njforeveryoungmd.com\/","name":"Forever Young Complete Healthcare","description":"Complete Health Care, Luxury Med Spa","publisher":{"@id":"https:\/\/njforeveryoungmd.com\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/njforeveryoungmd.com\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-NZ"},{"@type":"Organization","@id":"https:\/\/njforeveryoungmd.com\/#organization","name":"Forever Young Complete Healthcare","url":"https:\/\/njforeveryoungmd.com\/","logo":{"@type":"ImageObject","inLanguage":"en-NZ","@id":"https:\/\/njforeveryoungmd.com\/#\/schema\/logo\/image\/","url":"https:\/\/njforeveryoungmd.com\/wp-content\/uploads\/2025\/11\/Untitled-design-1.png","contentUrl":"https:\/\/njforeveryoungmd.com\/wp-content\/uploads\/2025\/11\/Untitled-design-1.png","width":1200,"height":1200,"caption":"Forever Young Complete Healthcare"},"image":{"@id":"https:\/\/njforeveryoungmd.com\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/www.facebook.com\/ForeverYoungHealthCare","https:\/\/www.instagram.com\/foreveryoung.medspa"]}]}},"_links":{"self":[{"href":"https:\/\/njforeveryoungmd.com\/en_nz\/wp-json\/wp\/v2\/pages\/2202","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/njforeveryoungmd.com\/en_nz\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/njforeveryoungmd.com\/en_nz\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/njforeveryoungmd.com\/en_nz\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/njforeveryoungmd.com\/en_nz\/wp-json\/wp\/v2\/comments?post=2202"}],"version-history":[{"count":246,"href":"https:\/\/njforeveryoungmd.com\/en_nz\/wp-json\/wp\/v2\/pages\/2202\/revisions"}],"predecessor-version":[{"id":2794,"href":"https:\/\/njforeveryoungmd.com\/en_nz\/wp-json\/wp\/v2\/pages\/2202\/revisions\/2794"}],"wp:attachment":[{"href":"https:\/\/njforeveryoungmd.com\/en_nz\/wp-json\/wp\/v2\/media?parent=2202"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}