').appendTo("body"),b=a.children(),b=b.innerWidth()-b.height(99).innerWidth();a.remove();return b});if(f.support.fixedPosition===v){a=f.support;d=f('').appendTo("body");var e=20===d[0].offsetTop||15===d[0].offsetTop;d.remove();a.fixedPosition=e}f.extend(b.defaults,{scrollbarWidth:f.scrollbarWidth(),fixed:f.support.fixedPosition,parent:f("body")});a=f(r).width();J.addClass("fancybox-lock-test");d=f(r).width();J.removeClass("fancybox-lock-test");f("").appendTo("head")})})(window,document,jQuery);(function(d){function e(a){var b=a||window.event,c=[].slice.call(arguments,1),f=0,e=0,g=0,a=d.event.fix(b);a.type="mousewheel";b.wheelDelta&&(f=b.wheelDelta/120);b.detail&&(f=-b.detail/3);g=f;b.axis!==void 0&&b.axis===b.HORIZONTAL_AXIS&&(g=0,e=-1*f);b.wheelDeltaY!==void 0&&(g=b.wheelDeltaY/120);b.wheelDeltaX!==void 0&&(e=-1*b.wheelDeltaX/120);c.unshift(a,f,e,g);return(d.event.dispatch||d.event.handle).apply(this,c)}var c=["DOMMouseScroll","mousewheel"];if(d.event.fixHooks)for(var h=c.length;h;)d.event.fixHooks[c[--h]]=d.event.mouseHooks;d.event.special.mousewheel={setup:function(){if(this.addEventListener)for(var a=c.length;a;)this.addEventListener(c[--a],e,false);else this.onmousewheel=e},teardown:function(){if(this.removeEventListener)for(var a=c.length;a;)this.removeEventListener(c[--a],e,false);else this.onmousewheel=null}};d.fn.extend({mousewheel:function(a){return a?this.bind("mousewheel",a):this.trigger("mousewheel")},unmousewheel:function(a){return this.unbind("mousewheel",a)}})})(jQuery);(function ($) { "use strict"; var F = $.fancybox, format = function( url, rez, params ) { params = params || ''; if ( $.type( params ) === "object" ) { params = $.param(params, true); } $.each(rez, function(key, value) { url = url.replace( '$' + key, value || '' ); }); if (params.length) { url += ( url.indexOf('?') > 0 ? '&' : '?' ) + params; } return url; }; F.helpers.media = { defaults : { youtube : { matcher : /(youtube\.com|youtu\.be|youtube-nocookie\.com)\/(watch\?v=|v\/|u\/|embed\/?)?(videoseries\?list=(.*)|[\w-]{11}|\?listType=(.*)&list=(.*)).*/i, params : { autoplay : 1, autohide : 1, fs : 1, rel : 0, hd : 1, wmode : 'opaque', enablejsapi : 1 }, type : 'iframe', url : '//www.youtube.com/embed/$3' }, vimeo : { matcher : /(?:vimeo(?:pro)?.com)\/(?:[^\d]+)?(\d+)(?:.*)/, params : { autoplay : 1, hd : 1, show_title : 1, show_byline : 1, show_portrait : 0, fullscreen : 1 }, type : 'iframe', url : '//player.vimeo.com/video/$1' }, metacafe : { matcher : /metacafe.com\/(?:watch|fplayer)\/([\w\-]{1,10})/, params : { autoPlay : 'yes' }, type : 'swf', url : function( rez, params, obj ) { obj.swf.flashVars = 'playerVars=' + $.param( params, true ); return '//www.metacafe.com/fplayer/' + rez[1] + '/.swf'; } }, dailymotion : { matcher : /dailymotion.com\/video\/(.*)\/?(.*)/, params : { additionalInfos : 0, autoStart : 1 }, type : 'swf', url : '//www.dailymotion.com/swf/video/$1' }, twitvid : { matcher : /twitvid\.com\/([a-zA-Z0-9_\-\?\=]+)/i, params : { autoplay : 0 }, type : 'iframe', url : '//www.twitvid.com/embed.php?guid=$1' }, twitpic : { matcher : /twitpic\.com\/(?!(?:place|photos|events)\/)([a-zA-Z0-9\?\=\-]+)/i, type : 'image', url : '//twitpic.com/show/full/$1/' }, instagram : { matcher : /(instagr\.am|instagram\.com)\/p\/([a-zA-Z0-9_\-]+)\/?/i, type : 'image', url : '//$1/p/$2/media/?size=l' }, google_maps : { matcher : /maps\.google\.([a-z]{2,3}(\.[a-z]{2})?)\/(\?ll=|maps\?)(.*)/i, type : 'iframe', url : function( rez ) { return '//maps.google.' + rez[1] + '/' + rez[3] + '' + rez[4] + '&output=' + (rez[4].indexOf('layer=c') > 0 ? 'svembed' : 'embed'); } } }, beforeLoad : function(opts, obj) { var url = obj.href || '', type = false, what, item, rez, params; for (what in opts) { if (opts.hasOwnProperty(what)) { item = opts[ what ]; rez = url.match( item.matcher ); if (rez) { type = item.type; params = $.extend(true, {}, item.params, obj[ what ] || ($.isPlainObject(opts[ what ]) ? opts[ what ].params : null)); url = $.type( item.url ) === "function" ? item.url.call( this, rez, params, obj ) : format( item.url, rez, params ); break; } } } if (type) { obj.href = url; obj.type = type; obj.autoHeight = false; } } };}(jQuery));"use strict"; var Modal = base.Component.extend( { render: function() { return { 'aria-modal': true, className: 'modal ' + this.modalClassName, onState: [ 'displayed', { 'modal-visible': true } ], header: this.addHeader(), body: this.addBody() }; }, setupStates: function() { var self = this; return { displayed: { state: false, callBack: function(value) { if (value === true) { document.body.classList.add('modal-open'); self.createShadow(); } else { document.body.classList.remove('modal-open'); self.backdrop.destroy(); self.destroy(); } } } }; }, addEvents: function() { this.keyboardEvents(); }, keyboardEvents: function() { var self = this; var state = this.state; document.onkeydown = function(evt) { evt = evt || window.event; if (evt.keyCode == 27 && state.get('displayed')) { self.display(); } }; }, modalClassName: '', title: '', addHeader: function() { return ModalHeader({ title: this.title || null, callBack: base.bind(this, this.display) }); }, addBody: function() { return { role: 'dialog', className: 'body-container', children: this.addBodyContent() }; }, addBodyContent: function() { return []; }, addFooter: function() { var id = this.id; return { tag: 'footer', id: id + '_button_container', className: 'button-container', buttons: this.addFooterButtons() }; }, addFooterButton: function(id, className, label, callBack) { return { tag: 'button', className: 'bttn ' + className, textContent: label, onclick: callBack, id: (id) ? this.id + id : null }; }, addFooterButtons: function() { return [ this.addFooterButton('_button_1', 'bttn-red', 'Cancel', base.bind(this, this.decline)), this.addFooterButton('_button_2', 'bttn-green', 'Save', base.bind(this, this.accept)) ]; }, getTitle: function() { return 'Edit Panel'; }, setupHeaderOptions: function() { }, checkToClose: function() { this.decline(); }, createShadow: function() { this.backdrop = new Shadow({ callBack: base.bind(this, this.display) }); this.backdrop.setup(this.container); }, returnCallBack: function(data) { var callBack = this.callbackFunction; if(typeof callBack === 'function') { callBack(data); } }, removeAndCallBack: function(data) { this.returnCallBack(data); window.setTimeout(base.bind(this, this.display), 200); }, accept: function() { this.removeAndCallBack(); }, decline: function() { this.display(); }, display: function() { var state = this.state; state.set('displayed', !state.get('displayed')); }});if(navigator.userAgent.indexOf('MSIE')!==-1 || navigator.appVersion.indexOf('Trident/') > -1){ var ModalIE = Modal.extend( { modalClassName: 'ie-error', addBodyContent: function() { return { innerHTML: 'This browser is not supported due to security vulnerabilities. Please use a secure browser such as Chrome, Edge, or Firefox.' }; } }); var ieError = new ModalIE(); ieError.setup(document.body); ieError.display();}"use strict";var ConfirmModal = Modal.extend({ title: 'Confirm Submission', addBodyContent: function(e) { var self = this, name = this.name, success = this.success, failure = this.failure, data = this.data, form = this.form; return [ P({ className: 'success', innerHTML: success }), P({ className: 'failure', text: failure }), { className: 'page-form-confirm', children: [ P({ text: 'Just wanted to confirm you are ready to submit! Press \'confirm\' to continue.' }), { className: 'catch-secondary-btn transition center', text: 'Edit Form', click: function() { self.display(); } }, { className: 'catch-primary-btn transition center', text: 'Confirm', click: function(e) { jQuery.post(ajax_url, data, function(e) { if (e.match(/1/)) { self.panel.classList.add('form_success'); if(name && typeof _gaq !== 'undefined') { _gaq.push(['_trackEvent', 'Form Submission', name]); } } else if (e.match(/^alert:/)) { alert(e.replace(/^alert:/,'')); } else if (e.match(/(^\/\w+|http)/)) { window.location = e; } else { self.panel.classList.add('form_failure'); } }); return false; } } ] } ]; }});var bpApp={};(function(e){var h=base.Class,k=h.extend({constructor:function(){this.modules=[]},add:function(a){if("function"===typeof a){var b=new a;this.modules.push(b)}return b},mark:function(a){window.performance&&window.performance.mark(a)},setup:function(){this.mark("module-setup");for(var a,b=this.modules,c=0,d=b.length;c ul > li'); this.setupGroup(options); return { button: this.cache('backEle', Button( { className: 'bttn back', text: 'Back' })), children: this.groups }; }, setupGroup: function(options, level, parentGroup) { level = level || 0; var selected = false, group = this.addGroup(level, parentGroup); if(options) { for(var i = 0, maxLength = options.length; i < maxLength; i++) { var element = options[i]; if(!element) { continue; } var childSelected = false, childGroup = null, childOptions = this.getChildOptions(element); if(childOptions.length) { var result = this.setupGroup(childOptions, (level + 1), group); childSelected = result.selected; childGroup = result.group; } var option = this.setupOption(element, childGroup, childSelected); group.addOption(option); if(option.selected && selected !== true) { selected = true; } } } return { group: group, selected: selected }; }, addGroup: function(level, parentGroup) { var group = new Group( { level: level, parentGroup: parentGroup, options: [], selected: false }); this.groups.push(group); return group; }, setupOption: function(element, childGroup, childSelected) { var link = this.getLink(element); var url = link.attr('href'); var selected = childSelected || this.checkSelection(url); var label = link[0].textContent; return new Option( { element: element, child: childGroup, url: url, label: label, selected: selected, callBack: base.bind(this, this.selectGroup) }); }, getLink: function(element) { return jQuery(element).find(' > a'); }, getChildOptions: function(element) { return jQuery(element).find(' > .sub-menu > li'); }, afterSetup: function() { this.selectPrimaryGroup(); this.layoutGroups = null; }, selectGroup: function(group) { if(!group || typeof group !== 'object') { return false; } if(group.selected === true) { return false; } group.selected = true; this.selectGroupPanel(group); this.updateBackButton(group); this.lastSelectedGroup = group; }, selectPrimaryGroup: function() { var groups = this.groups, length = groups.length; if(length < 1) { return false; } var selected = groups[0]; this.selectGroup(selected); }, getAnimationClass: function(lastNum, currentNum) { var animation = { selecting: 'pull-right-in-transparent', removing: 'pull-left-transparent' }; if(lastNum === null) { animation.removing = 'no-change'; animation.selecting = 'no-change'; } else if(currentNum > lastNum) { animation.removing = 'pull-left-transparent'; animation.selecting = 'pull-right-in-transparent'; } else if(currentNum < lastNum) { animation.removing = 'pull-right-transparent'; animation.selecting = 'pull-left-in-transparent'; } return animation; }, getAniamtion: function(group) { var groupNumber = group.level; var lastOption = this.lastSelectedGroup, lastGroupNumber = (lastOption && typeof lastOption !== 'undefined')? lastOption.level: null; return this.getAnimationClass(lastGroupNumber, groupNumber); }, selectGroupPanel: function(group) { var animations = this.getAniamtion(group); var lastOption = this.lastSelectedGroup; var groups = this.groups; for(var i = 0, maxLength = groups.length; i < maxLength; i++) { var option = groups[i], panel = option.panel; if(!panel) { continue; } if(panel === group.panel) { panel.style.zIndex = 5; var animationClass = animations.selecting; bpApp.animate.show(panel, animationClass, 300); } else { if(option === lastOption) { panel.style.zIndex = 4; var animationClass = animations.removing; bpApp.animate.hide(panel, animationClass, 300); } else { panel.style.zIndex = 2; bpApp.animate.hide(panel, 'none', 0); } option.selected = false; } } }, updateBackButton: function(group) { var button = this.backEle; if(group && typeof group.parentGroup !== 'undefined') { button.onclick = base.createCallBack(this, this.selectGroup, [group.parentGroup]); button.style.opacity = '1'; } else { button.style.opacity = '0'; } }, getPageUrl: function(url) { var path = (url != undefined) ? url.split('/') : ''; var length = path.length - 1; var page = path[length]; if(page === '') { page = path[length - 1]; } return page; }, checkSelection: function(url) { var currentPage = this.currentPage; currentPage = currentPage.split('&')[0]; url = this.getPageUrl(url); if(currentPage === url) { return true; } else if(!currentPage && url == '') { return true; } else if(currentPage === 'blog-post' && url === 'blog') { return true; } else { return false; } }, getCurrentPage: function() { var path = window.location.pathname, page; var pattern = /\//g, pageSlashCount = path.match(pattern); if(pageSlashCount.length > 1) { var parts = path.split('/'), length = parts.length - 1; var end = parts[length]; if(end === '') { end = parts[length - 1]; } page = end; } else { page = path.substring(path.lastIndexOf("/") + 1); } return page.replace("/", ""); }, setupCurrentPage: function() { this.currentPage = this.getCurrentPage(); } }); function responsiveCheck(x) { if (x.matches) { if (!mobileNavbar) { return false; } var navHeight = mobileNavbar.offsetHeight; root.style.setProperty('--mobile-nav-height', navHeight + 'px'); var prevScrollpos = window.pageYOffset; window.onscroll = function() { var currentScrollPos = window.pageYOffset; if (navHeight < currentScrollPos && prevScrollpos < currentScrollPos) { mobileNavbar.classList.add('pull-up'); } else { mobileNavbar.classList.remove('pull-up'); } prevScrollpos = currentScrollPos; } } } var mobileNavbar = document.getElementById("mobile-navbar"); var root = document.documentElement; var x = window.matchMedia("(max-width: 1025px)"); x.addListener(responsiveCheck); responsiveCheck(x); var img = jQuery('#mobile-navbar picture img')[0]; img.onload = function() { responsiveCheck(x); }; bpApp.Navigation = Navigation; })(bpApp); (function(g){var f=base.Component,k=f.extend({render:function(){var a=this.option||{};return{tag:"figure",className:"single-slide","data-bg-src":this.addBg(),onState:this.setOnState(),image:this.addImage(a),section:this.addSection(a)}},setOnState:function(){return["selected",{active:!0,inactive:!1,lower:-1}]},addSection:function(a){return a.title||a.content?{tag:"figcaption",className:"content-container "+(a.className||""),h2:{tag:"h2",className:a.reviewerClassName||"title-text",text:a.title},content:{tag:"p",text:a.content}}:null},setupStates:function(){return{selected:!1,isSetup:{state:!1,callBack:base.bind(this,this.load)}}},getUrl:function(){var a=this.option;return a&&a.image?wpChildThemeUrl+this.defaultPathUrl+a.image:!1},addBg:function(){return this.setAsBg?this.getUrl():null},addImage:function(a){var b=this.getUrl();return!1===b||1==this.setAsBg?null:{className:"image-container",image:{tag:"img",src:wpParentThemeUrl+"/images/blank.gif","data-src":b,alt:a.alt}}},load:function(a){if(!0!==a)return!1;a=this.panel;var b=g.getImageExt()||"jpg",c=base.data(a,"bg-src");if(c)base.css(a,"background-image","url("+c+"."+b+")");else{var d=a.querySelector(".image-container > img");(c=base.data(d,"src"))&&window.setTimeout(function(){c+="."+b;base.attr(d,"src",c)},10)}},isSelected:function(){return!0===this.state.get("selected")},select:function(){this.state.set({selected:!0,isSetup:!0});var a=this.panel,b=this.animationIn;void 0===b&&(b="fadeIn");g.animate.show(a,b,1E3);this.crumb.select()},unselect:function(a){this.state.set("selected",!1);a=this.panel;var b=this.animationOut;void 0===b&&(b="fadeOut");g.animate.hide(a,b,1E3);this.crumb.unselect()},lower:function(){this.state.set("selected",-1)}}),m=k.extend({beforeSetup:function(){this.panel=this.element},afterSetup:function(){base.builder.onState(this.panel,this.setOnState(),this)},render:function(){this.container.appendChild(this.panel)},buildLayout:function(){this.render();base.DataTracker.add(this.panel,"components",{component:this});this.rendered=!0}}),n=f.extend({render:function(){return{tag:"li",className:"slide-tab"}},getPosition:function(a){var b={x:0,y:0};if(a&&"object"===typeof a)for(var c=2;0',click:base.bind(this,this.togglePlay)}},togglePlay:function(a){var b=this.parent;a.preventDefault();b.togglePlay()}}),q=f.extend({render:function(){return{tag:"li",className:"option","aria-label":"Slide "+(this.number+1),onState:["selected",{selected:!0}],innerHTML:this.content||null,click:base.bind(this,this.selectOption)}},setupStates:function(){return{selected:this.selected||!1}},useCallBack:function(){"function"===typeof this.callBack&&this.callBack(this.option)},select:function(){this.state.set("selected",!0)},unselect:function(){this.state.set("selected",!1)},selectOption:function(a){a.preventDefault();this.select();this.unselect();this.useCallBack()}});f=f.extend({duration:7E3,beforeSetup:function(){this.defaultPathUrl=this.defaultPathUrl||"";var a=a||0;this.onNumber="undefined"!==typeof a?a:0;this.setAsBg=this.setAsBg||!1;this.options=[];this.timer=null},afterSetup:function(){this.selectPrimaryOption();this.addSlideshow();this.startTimer();this.getHeight()},render:function(){this.setupOptions();return{className:"slide-container",tabindex:"0",onState:["playing",{playing:!0}],children:[this.addButton("arrow-left",base.bind(this,this.selectPreviousOption)),this.addButton("arrow-right",base.bind(this,this.selectNextOption)),this.cache("slideContainerEle",{className:"slides",children:this.options}),{tag:"ul",className:"number-crumb-container",slider:this.cache("slideTab",new n),children:this.setupCrumbs()}]}},addButton:function(a,b){return{tag:"a","aria-label":"arrow-left"===a?"Previous slide":"Next slide",className:"arrow "+a,click:b}},setupStates:function(){return{playing:!1,inView:!1}},setupEvents:function(){return[["keydown",document,base.bind(this,this.keyPress)]]},addSlideshow:function(){var a=this.container;if(!a)return!1;var b=a.parentNode;if(!b)return!1;b.appendChild(this.panel);b.removeChild(a)},getHeight:function(){for(var a=100,b=this.options,c=0,d=b.length;ca&&(a=e)}this.slideContainerEle.style.minHeight=a+"px"},keyPress:function(a){var b=g.elementInViewport(this.panel),c=document.getElementsByTagName("form").length;if(b&&!c&&!document.body.classList.contains("modal-open"))switch(a.keyCode){case 32:a.preventDefault();this.togglePlay();break;case 37:this.selectPreviousOption();break;case 39:this.selectNextOption()}},getSlides:function(){return this.container.querySelectorAll(".single-slide")},setupOptions:function(){var a=[],b=this.getSlides(),c=b.length;if(0=this.size.width},update:function(){this.getElements();this.resize();this.checkScroll();return this},updatePosition:function(a){var b=a.element;a.position=base.position(b,0);a.size=base.getSize(b)},updateOptionPositions:function(){for(var a=this.options,b=a.length,c=0;c=c?this.animate(e,l):g>=c&&g<=d&&this.animate(e,l)}}return this},phoneSize:600,animate:function(a,b){var c=a.element,d=a.animation;window.setTimeout(function(){base.addClass(c,d).addClass(c,"animated")},b||0);this.removeOption(a);return this},ticking:!1,scroll:function(a){if(!this.ticking){var b=this;n(function(){b.checkScroll(a);b.ticking=!1});this.ticking=!0}},setupEvents:function(){this.callBack=base.bind(this,this.checkScroll);var a=base.bind(this,this.scroll),b=base.bind(this,this.resize),c=window;this.addEvents=function(){base.on("scroll",c,a,!1);base.on("resize",c,b)};this.removeEvents=function(){base.off("scroll",c,a,!1);base.off("resize",c,b)};this.addEvents();return this}});m.lazyAnimator=p})(bpApp);(function(d){var e=base.Class.extend({constructor:function(a,b,c){this.header="string"===typeof a?document.getElementById(a):a;this.$header=jQuery(this.header);this.miniClassName=b;this.headerMinified=!1;this.distance="undefined"!==typeof c?c:300;this.$document=jQuery(document);this.$window=jQuery(window);this.setup()},setup:function(){if(!this.header)return!1;this.checkScroll();this.addScroll()},addScroll:function(){var a=this,b=function(){a.checkScroll()},c=this.$window;c.on("scroll",b);c.on("resize",b)},checkScroll:function(){var a=this.$window,b=a.scrollTop();this.$document.height();a.height();b>=this.distance?!1===this.headerMinified&&(this.$header.addClass(this.miniClassName),this.headerMinified=!0):!0===this.headerMinified&&(this.headerMinified=!1,this.$header.removeClass(this.miniClassName))},scrollToTop:function(){window.scrollTo(window.scrollX,0)}});d.scrollHeader=e})(bpApp);"use strict";var ModalFormPanel = Modal.extend( { afterSetup: function() { BpFormValidator.monitor(jQuery(this.form.panel)); }, addBody: function() { return { className: 'body-container', children: [this.cache('form', this.addBodyContent())] }; }, decline: function() { var form = this.form; if(form) { form.reset(); var $form = jQuery(form); $form.removeClass('form_failure'); $form.find('input, select, textarea').each(function() { var $element = jQuery(this); $element.removeClass('success_val'); $element.removeClass('error_val'); }); } this.display(); }});"use strict";var practiceData = typeof practiceData !== 'undefined' ? practiceData : { name: null, enabled: false };var AppointmentFormv2 = Form.extend( { className: 'form-appointment-modal', formTitle: 'Appointment Request', addFormBody: function () { var id = this.getId('optional-message'); var formBody = [ Row({ children: [ Column({ columns: '6', children: FloatingInput({ name: 'First Name', label: 'First Name', placeholder: 'Jaime', required: true }) }), Column({ columns: '6', children: FloatingInput({ name: 'Last Name', label: 'Last Name', placeholder: 'Doe', required: true }) }) ] }), new PreferredContact, Row({ children: [ Column({ columns: '6', children: FloatingInput({ name: 'Date', label: 'Preferred Date', type: 'date', placeholder: 'mm/dd/yyyy', value: weekAway }) }), Column({ columns: '6', children: FloatingInput({ name: 'Time', label: 'Preferred Time', type: 'time', placeholder: '09:00 AM', value: '09:00' }) }) ] }), this.addLocations(), OptionalMessage({ id: id }), ]; if (practiceData && practiceData.enabled) { var privacyPolicyUrl = '/privacy-policy'; var consentLabel = practiceData.name ? `By checking this box I consent to receive text messages, calls, or emails from ${practiceData.name}. Check out our privacy policy.` : 'By checking this box I consent to receive text messages, calls, or emails. Check out our privacy policy.'; formBody.push(LabelCheckbox({ name: 'Contact Consent Opt-in', label: consentLabel, value: 'yes', id: 'Contact Consent Opt-in', required: true })); } formBody.push(this.addSubmit()); return formBody; }, addSubmit: function () { return { className: 'bp-submit-wrap', children: Button({ type: 'submit', className: 'send_button main-btn transition', text: this.submit }) }; }, getFormData: function (form) { var data = { action: 'form_submittion', data: form.serialize() }; return data; } });"use strict";var ModalAppointmentRequest = ModalFormPanel.extend({ modalClassName: 'appointment-request', title: 'Request an Appointment', addBodyContent: function() { return new AppointmentFormv2({ formType: 'Modal' }); }, afterSetup: function() { if (charlie.appCode === '' || !charlie.apptRequest) { BpFormValidator.monitor(jQuery(this.form.panel)); } }, });var BannerVideo = base.Component.extend({ videoSrc: "", vimeoId: "", bannerOverlay: null, captions: null, autoplay: !0, loop: !0, poster: null, muted: !0, videoId: "banner-video", appendIds: "", defaultControls: !1, render: function () { var a = this, b = this.bannerOverlay; return { className: "home-banner", children: [this.cache("videoBanner", { tag: "video", id: this.videoId, className: "home-video", width: "600", height: "400", loop: this.loop, autoplay: this.state.get("playing"), muted: this.muted, poster: this.poster, controls: this.defaultControls, source: { tag: "source", src: this.videoSrc, type: "video/mp4" }, captions: this.captions ? { tag: "track", src: this.captions, kind: "captions", srclang: "en", label: "English" } : null, onState: ["playing", function (c, d) { d ? c.play() : c.pause(); b && a.bannerClass() }] }), !this.defaultControls && this.controls()] } }, controls: function () { return { className: "video-controls", children: [this.pausePlay(), this.muteUnmute(), this.captions ? this.addCaptions() : null] } }, pausePlay: function () { return { tag: "button", id: "video-pause" + this.appendIds, "aria-label": "Pause", innerHTML: '', click: base.bind(this, this.togglePlay), onState: ["playing", function (a, b) { b ? (a.classList.remove("paused"), a.setAttribute("aria-label", "Pause")) : (a.classList.add("paused"), a.setAttribute("aria-label", "Play")) }] } }, muteUnmute: function () { var a = this; return { tag: "button", className: this.muted ? "muted" : "unmuted", id: "video-mute" + this.appendIds, "aria-label": "Unmute", innerHTML: '', click: function () { var b = a.videoBanner; b.muted ? (this.setAttribute("aria-label", "Mute"), this.classList.add("unmuted"), this.classList.remove("muted"), b.muted = !1) : (this.setAttribute("aria-label", "Unmute"), this.classList.add("muted"), this.classList.remove("unmuted"), b.muted = !0) } } }, addCaptions: function () { var a = this; return { tag: "button", id: "captions" + this.appendIds, "aria-label": "Show captions", innerHTML: '', click: function () { var b = a.videoBanner, c = b.textTracks[0].mode; this.classList.toggle("captions"); "showing" === c ? (this.setAttribute("aria-label", "Show captions"), b.textTracks[0].mode = "hidden") : (this.setAttribute("aria-label", "Hide captions"), b.textTracks[0].mode = "showing") } } }, togglePlay: function () { var a = this.state; a.set("playing", !a.get("playing")) }, keyPress: function (a) { var b = document.getElementsByTagName("form").length; !bpApp.elementInViewport(this.panel) || 32 !== a.keyCode || b || document.body.classList.contains("modal-open") || (a.preventDefault(), this.togglePlay()) }, videoActive: function () { this.state.get("playing") && this.bannerOverlay.classList.add("video-active") }, bannerClass: function () { var a = this, b = this.bannerOverlay; this.state.get("playing") ? window.setTimeout(function () { a.videoActive() }, 2E3) : b.classList.remove("video-active") }, showHover: function () { var a = this, b = this.bannerOverlay; this.state.get("playing") && (b.classList.remove("video-active"), window.setTimeout(function () { a.videoActive() }, 8E3)) }, setupEvents: function () { var a = this; return this.bannerOverlay ? [["keydown", document, base.bind(this, this.keyPress)], ["mousemove", a.videoBanner, function (b) { a.showHover() }]] : [["keydown", document, base.bind(this, this.keyPress)]] }, setupStates: function () { return { playing: this.autoplay } }, afterSetup: function () { this.videoBanner.setAttribute("playsinline", ""); this.vimeoId && this.fetchVimeoThumbnail(this.vimeoId); }, fetchVimeoThumbnail: function (vimeoId) { const oEmbedUrl = `https://vimeo.com/api/oembed.json?url=https://vimeo.com/${vimeoId}`; fetch(oEmbedUrl).then(res => { if (!res.ok) throw new Error(`HTTP error! status: ${res.status}`); return res.json(); }).then(data => { data.thumbnail_url ? this.videoBanner.setAttribute("poster", data.thumbnail_url) : console.error("Thumbnail URL not found in response:", data); }).catch(err => console.error("Error fetching Vimeo thumbnail:", err)); }});"use strict";var ReviewModel = base.Model.extend({ defaults: { rating: 5, publish: 0, should_review: 1, send_email: 1 }});var LeaveReviewForm = ModalFormPanel.extend({ beforeSetup: function() { this.data = new ReviewModel(); }, modalClassName: 'review-modal-updated', title: 'Leave a Review', addHiddenFields: function() { return { tag: 'input', type: 'text', name: 'URL', autocomplete: 'none', className: 'honey' }; }, addBodyContent: function() { return { tag: 'form', method: 'post', children: [ { tag: 'label', text: 'Display Name', children: this.addDataInput() }, { tag: 'label', text: 'Star Rating', children: this.addRatingContainer() }, { tag: 'label', text: 'Review', children: this.addDataReview() }, this.addHiddenFields(), { tag: 'button', className: 'main-btn transition', text: 'Submit Review', click: base.bind(this, this.accept) } ] }; }, accept: function() { this.request(); }, validate: function() { var data = this.data.get(); if (!data.url) { var review = data.review, reviewer = data.reviewer, msg = ''; if (!review) { msg += '- Please enter a review '; } if (!reviewer) { msg += '- Please enter a display name'; } if (msg !== '') { this.addAlert('failure', msg); } else { return true; } } return false; }, request: function() { var $ = jQuery; if (this.validate()) { var data = this.data.get(); var params = { action: 'newStoreReview', review: base.prepareJsonUrl(data) }, ajaxurl = '/wp-admin/admin-ajax.php'; $.post(ajaxurl, params, base.bind(this, this.requestResponse)); } }, requestResponse: function(response) { this.addAlert('success', response); this.form.reset(); }, addAlert: function(type, msg) { var alertPanel = new AlertPanel({ type: type, msg: msg }); alertPanel.setup(this.alertContainer); }, addRatingContainer: function() { var layout = { className: 'stars-container', children: [] }; var ratings = 5, self = this; for (var i = ratings; i > 0; i--) { var number = i, id = 'ratingStar' + number, starInput = { tag: 'input', type: 'radio', id: id, name: 'modal-rating', value: number, checked: (number === 5), change: function() { self.data.set('rating', this.value) } }, starLabel = { tag: 'label', 'aria-label': number + ' stars', for: id, innerHTML: '' }; layout.children.push(starInput); layout.children.push(starLabel); } return layout; }, addDataInput: function() { return { tag: 'input', type: 'text', autocomplete: 'off', className: 'name-reviewer val', bind: 'reviewer', required: true, placeholder: 'John D.' }; }, addDataReview: function() { return { tag: 'textarea', name: 'review', autocomplete: 'off', className: 'review-message val', bind: 'review', required: true, placeholder: 'What did you think?' }; }, getTitle: function() { return 'Leave a Review'; }});var AlertPanel = base.Component.extend({ render: function() { return { className: this.getPanelClass(), innerHTML: this.msg }; }, getPanelClass: function() { return this.type === 'success' ? 'saveSuccess' : 'saveFailure'; }, msgTimeOut: function (fade) { var self = this; window.setTimeout(function() { bpApp.animate.hide(self.panel, 'fadeOut', 500, function() { self.destroy(); } ); }, fade); }});var VideoPanel = Modal.extend({ modalClassName: 'video-panel', addBodyContent: function() { return { tag: 'iframe', src: this.src, allow: 'autoplay' }; }}); (function (bpApp, global) { "use strict"; var container = jQuery('#nav-scroll-container')[0], appNav = new bpApp.Navigation(); appNav.setup(container); var addModule = function (module) { return bpApp.addModule(module) }; var stickHeader = function () { var ele = jQuery('#sticky-header')[0]; if (!ele) { return !1 } var height = 400, heightElement = jQuery('#sticky-scroll-height'); if (heightElement[0]) { height = heightElement.height() } new bpApp.scrollHeader(ele, 'sticky', height) }; var desktopNav = function () { var ele = jQuery('.headerarea nav.main-nav-container')[0]; if (!ele) { return !1 } ele.setAttribute('aria-label', 'desktop navigation') }; var updateViewport = function () { var viewport = jQuery('meta[name="viewport"]'); if (!viewport) { return !1 } viewport = viewport[0]; viewport.setAttribute('content', "width=device-width, initial-scale=1, maximum-scale=5") }; addModule({ navHidden: !0, setup: function () { stickHeader(); desktopNav(); updateViewport(); this.addEvents() }, addEvents: function () { var self = this; var button = jQuery('#main-nav-toggle'); button.on('click', function () { self.toggleNav(); document.body.classList.toggle('menu-open') }) }, toggleNav: function () { var header = jQuery('.top-banner-row'), button = jQuery('#main-nav-toggle'), nav = jQuery('#main-nav-container'), footBar = jQuery('.bottom-bar'), address = jQuery('.bottom-bar.inner'); if (this.navHidden === !0) { this.navHidden = !1; header.addClass('opened nav-d'); nav.addClass('open'); button.addClass('nav-close'); footBar.addClass('nav-d'); if (jQuery(global).width() < 767) { address.css({ 'bottom': '60px', 'position': 'fixed' }) } else { address.css('position', 'fixed') } appNav.selectPrimaryGroup() } else { this.navHidden = !0; header.removeClass('opened nav-d'); nav.removeClass('open'); button.removeClass('nav-close'); footBar.removeClass('nav-d'); address.css({ 'position': 'relative', 'bottom': '0px' }) } } }); var bpSlideShow = addModule({ create: function (type, options) { type = type || 'controller'; switch (type) { case 'controller': this.controller(options); break; case 'office': this.office(options); break; case 'reviews': this.reviews(options); break } }, controller: function (slideOptions) { var container = jQuery('#slides')[0]; if (!container) { return !1 } var options = container.querySelectorAll('.single-slide'); var startNumber = this.getStart(options); var slideAnimationIn = this.tryProp(slideOptions, 'animationIn') || 'fadeIn'; var slideAnimationOut = this.tryProp(slideOptions, 'animationOut') || 'fadeOut'; var slideTimer = this.tryProp(slideOptions, 'duration') || 7000; var deferTime = this.tryProp(slideOptions, 'defer') || 0; var spotlight = new bpApp.SlideController({ onNumber: startNumber, defaultPathUrl: '', duration: slideTimer, animationIn: slideAnimationIn, animationOut: slideAnimationOut }); if (deferTime > 0) { setTimeout(function() { spotlight.setup(container); }, deferTime); } else { spotlight.setup(container); } }, tryProp: function (options, property) { if (!options) { return } return options[property] }, getStart: function (options) { return Math.round(Math.random() * (options.length - 1)) }, createSlideShow: function (container, path, bg, options, duration) { container = jQuery('#' + container)[0]; duration = duration || 7000; var startNumber = this.getStart(options); var slideShow = new bpApp.SlideShow({ onNumber: startNumber, defaultPathUrl: path, slides: options, setAsBg: bg, duration: 7000 }); slideShow.setup(container); return slideShow }, addSlide: function (image, alt, title, content, className, url, crumbContent) { return { title: title, content: content, className: className, image: image, alt: alt, url: url, crumbContent: crumbContent } }, office: function (options, id) { id = id || 'tour'; this.createSlideShow(id, '/images/slideshow/', !1, options) }, reviews: function (options) { this.createSlideShow('reviews', '', !1, options) } }); var convertReviews = function (options) { if (!options) { return !1 } for (var i = 0, length = options.length; i < length; i++) { var option = options[i]; option.title = option.reviewer; option.className = 'reviews-section'; option.reviewerClassName = 'patient-name' } return options }; var _slideShow = bpSlideShow; global.DefaultSlider = function (options) { _slideShow.create('controller', options) }; global.OfficeSlider = function (options, id) { _slideShow.office(options, id) }; global.ReviewSlider = function (options) { options = convertReviews(options); _slideShow.create('reviews', options) }; addModule({ setup: function () { this.navModals(); this.externalLinks(); this.setupModals(); this.setupVideos() }, navModals: function () { var navModalItem = jQuery('li.data-modal a'); if (navModalItem.length === 0) { return !1 } navModalItem.each(function () { var self = jQuery(this); var navModalLink = self.attr('href').replace('#', ''); self.attr('data-modal', navModalLink); self.removeAttr('href'); self.attr('tabindex', 0) }) }, setupModals: function () { var attrName = 'data-modal', self = this; jQuery('[' + attrName + ']').each(function (index, element) { element = jQuery(element); element.attr('tabindex', 0); element.attr('role', 'button'); element.attr('aria-haspopup', !0); var modalName = element.attr(attrName); if (!modalName) { return !1 } element.attr('data-cta-name', modalName.toLowerCase()); element.on('click', function () { var modalClass = global[modalName]; if (!modalClass) { return !1 } bpApp.GA4Tracking('opened_modal'); var modal = new modalClass(); modal.setup(document.body); modal.display() }) }) }, setupVideos: function (attrName) { attrName = attrName || 'data-video-src'; var self = this; jQuery('[' + attrName + ']').each(function (index, element) { element = jQuery(element); var src = element.attr('data-video-src'); if (!src) { return !1 } element.on('click', function () { self.view(src) }) }) }, view: function (src) { var panel = new VideoPanel({ src: src }); panel.setup(document.body); panel.display() }, externalLinks: function () { var attrName = 'target', self = this; jQuery('[' + attrName + ']').each(function (index, element) { element = jQuery(element); element.append('') }) } }); bpApp.createBackgroundVideo = function (container, src) { return new bpApp.BackgroundVideo(container, src) }; addModule({ setup: function () { var IframeLoader = base.Class.extend({ heightAdded: !1, constructor: function (element) { this.element = element; if (element) { this.setup() } }, setup: function () { this.addEvents(); var self = this; setTimeout(function () { if (!self.heightAdded) { self.setHeight() } }, 2500) }, setHeight: function () { var iFrame = this.element; var doc = iFrame.contentDocument ? iFrame.contentDocument : iFrame.contentWindow.document; var height = 100; if (charlie.iframeHeight) { height = doc.body.scrollHeight + parseInt(charlie.iframeHeight) } else { height = doc.body.scrollHeight + 100 } if (height < 100) { height = 100 } iFrame.height = height }, addEvents: function () { var self = this; jQuery(this.element).on('load', function () { self.setHeight(); self.heightAdded = !0 }) } }); var iframes = document.querySelectorAll(".services-iframe"), length = iframes.length; for (var i = 0; i < length; i++) { new IframeLoader(iframes[i]) } } }); bpApp.exceptions = ['tab-description', 'tab-additional_information']; bpApp.addException = function (exception) { this.exceptions.push(exception) }; bpApp.imgExt = null; bpApp.getImageExt = function () { return (nextGenImages) ? 'webp' : 'jpg' }; bpApp.GA4Tracking = function (event) { event = event.replace(/ /g, "_").toLowerCase(); if (typeof gtag === 'function') { gtag('event', event) } }; addModule({ setup: function () { this.telTracking(); this.appointmentTracking(); this.setupFancyBox(); this.setupAutoScroll(); this.loadDeferredImages(); this.lazyLoadViewport() }, telTracking: function () { jQuery("a[href^='tel:']").click(function () { bpApp.GA4Tracking('Click to Call') }) }, appointmentTracking:function(){const e=["www.localmed.com","www.flexbook.me","www.patientviewer.com","yapiapp.io","book.modento.io","form.jotform.com","patientportal.carestack.com","app.nexhealth.com","microsite.adit.com","book2.getweave.com","www.zocdoc.com","www.appointnow.com","rwl.io","patientportal-cs4.carestack.com","aaronpittsdmd.com","www.patientsreach.com","dental4.me","flexbook.me","www.aspenheightsdental.com","d1.patientconnect365.com","rwlogin.com","clients.mindbodyonline.com","limelight.solutionreach.com","www.smilereminder.com","nexhealth.com","app.neem.software","www.online-chat.io","book.getweave.com","www.dentalinsider.com","apply.sunbit.com","www.google.com","www.houstonuptowndentistry.com","patientviewer.com","patient.modento.io","tawk.to","modento.app.link","yourdentistoffice.com","local.demandforce.com","camelback.focusortho.com","bookit.dentrixascend.com","dedicatedsmiles.meetkasper.com","p.adit.com","onlinebooking.mydentistlink.com","schedule.solutionreach.com","edgebooking.ortho2.com","www.patientconnect365.com","app.smilevirtual.com","dentist9381.setmore.com","scheduling.simplifeye.co","app.operadds.com","tworiversdentistry.mydentalvisit.com","app.modento.io","ib4.me","drjenniferortega.mydentalvisit.com","truelark.com","selectdentalaz.focusortho.com","app.acuityscheduling.com","hellopatient.tab32.com","www.doctible.com","www.myarvadadentist.com","www.bluthfamilydental.com","dentistryofgilbert.meetkasper.com","truesmiles.meetkasper.com","mycw202.ecwcloud.com","consultation.shenandoahortho.com","lcl.md","www.localmed.com","www.zocdoc.com","www.dental4.me","app.operadds.com","bit.ly"];jQuery(document).on("click","a",(function(){const n=jQuery(this).attr("href");if(n){const o=new URL(n,window.location.origin).hostname.replace(/^www\./,"");e.some((n=>n.replace(/^www\./,"")===o))&&bpApp.GA4Tracking("appointment_request")}})); }, setupFancyBox: function () { if (!jQuery.fancybox) { return } jQuery(".pics").fancybox({ openEffect: 'elastic', closeEffect: 'elastic', helpers: { overlay: { locked: !1 } } }) }, setupAutoScroll: function () { var exceptions = bpApp.exceptions; var pattern = /^\//; jQuery('a[href*="#"]:not([href="#"])').click(function () { if (location.pathname.replace(pattern, '') === this.pathname.replace(pattern, '') && location.hostname === this.hostname) { var hash = this.hash.slice(1), index = jQuery.inArray(hash, exceptions); if (index === -1) { var target = jQuery(this.hash); target = target.length ? target : jQuery('[id=' + hash + ']'); if (target.length) { jQuery('html,body').animate({ scrollTop: target.offset().top }, 800); return !1 } } } }) }, loadDeferredImages: function () { var loadWebp = (nextGenImages === !0), ext = bpApp.getImageExt(); jQuery('body').addClass('loaded'); jQuery('img[data-src]').each(function (i, ele) { this.loading = "lazy"; var $ele = jQuery(this), src; if (loadWebp) { var dataSrc = String($ele.data('src')), fileExt = /\.jpg|\.png/ig; src = dataSrc.indexOf('.svg') !== -1 ? dataSrc : (dataSrc.replace(fileExt, '') + '.webp') } else { src = $ele.data('src') } ele.src = src }) }, lazyLoadViewport: function () { var att = 'data-map-src', maps = [].slice.call(document.querySelectorAll('iframe[' + att + ']')), active = !1; function lazyLoad() { maps.forEach(function (map) { map.loading = "lazy"; map.title = "Google Map"; bpApp.elementInViewport(map, function () { map.src = map.getAttribute(att); maps = maps.filter(function (iframe) { return iframe !== map }); if (maps.length === 0) { document.removeEventListener("scroll", lazyLoad); global.removeEventListener("resize", lazyLoad); global.removeEventListener("orientationchange", lazyLoad) } jQuery('.map-overlay').fadeOut() }) }) } document.addEventListener("scroll", lazyLoad, { passive: !0 }); global.addEventListener("resize", lazyLoad, { passive: !0 }); global.addEventListener("orientationchange", lazyLoad, { passive: !0 }) } })})(bpApp, window);"use strict";var practiceData = typeof practiceData !== 'undefined' ? practiceData : { name: null, enabled: false };var AppointmentForm = Form.extend( { className: 'appointment-form', formTitle: 'Appointment Request', addFormBody: function () { var formBody = [ FloatingInput({ name: 'Name', label: 'Name', placeholder: 'First Last', required: true }), Row({ children: [ Column({ columns: '6', children: PhoneInput }), Column({ columns: '6', children: EmailInput }) ] }), Row({ children: [ Column({ columns: '6', children: FloatingInput({ name: 'Date', label: 'Date', type: 'date', value: tomorrow }) }), Column({ columns: '6', children: FloatingInput({ name: 'Time', label: 'Time', type: 'time', value: '09:00' }) }) ] }), this.addLocations(), FloatingTextarea({ name: 'Message', label: 'Message', className: 'appointment-message', placeholder: 'I would like to schedule an appointment.' }), this.addSwitch({ name: 'Current Patient', value: 'Yes', label: 'Are you a current patient?' }), ]; if (practiceData && practiceData.enabled) { var privacyPolicyUrl = '/privacy-policy'; var consentLabel = practiceData.name ? `By checking this box I consent to receive text messages, calls, or emails from ${practiceData.name}. Check out our privacy policy.` : 'By checking this box I consent to receive text messages, calls, or emails. Check out our privacy policy.'; formBody.push(LabelCheckbox({ name: 'Contact Consent Opt-in', label: consentLabel, value: 'yes', id: 'Contact Consent Opt-in', required: true })); } formBody.push(this.addSubmit()); return formBody; } });"use strict";var practiceData = typeof practiceData !== 'undefined' ? practiceData : { name: null, enabled: false };var ContactForm = Form.extend( { className: 'contact-form', formTitle: 'Contact Form', addFormBody: function () { var formBody = [ FirstLast, new PreferredContact, FloatingTextarea({ name: 'Message', label: 'Message', className: 'appointment-message' }), ]; if (practiceData && practiceData.enabled) { var privacyPolicyUrl = '/privacy-policy'; var consentLabel = practiceData.name ? `By checking this box I consent to receive text messages, calls, or emails from ${practiceData.name}. Check out our privacy policy.` : 'By checking this box I consent to receive text messages, calls, or emails. Check out our privacy policy.'; formBody.push(LabelCheckbox({ name: 'Contact Consent Opt-in', label: consentLabel, value: 'yes', id: 'Contact Consent Opt-in', required: true })); } formBody.push(this.addSubmit()); return formBody; } });
+
⌧
To all our valued patients and guests,
We are so glad to be open again and seeing our wonderful patients while also following State Board protocols, which include some of the following:
Our staff is screened daily.
Every patient is screened before their appointment.
We highly recommend wearing a face covering inside our office.
Time is extended between patients to ensure proper time to clean and sterilize rooms.
In these times, we do understand if you are in the “high risk” category or just do not feel comfortable coming to the office and choose to cancel your appointment. We are doing our absolute best to bring the best quality and the most efficient dental experience we can.
Thank you for your patience and understanding in these uncertain times.