Thank you for visiting London Bridge Smiles. We invite you to read some of our patient testimonials to see what people in Virginia Beach, Virginia, and surrounding areas think about their dental care by Dr. Alan Kessler and Dr. Tiffany Foster-Kessler. To learn more about us, and to make your appointment with our dentists, please contact our office at 757-340-8805.

The requested content cannot be loaded.
Please try again later.

',closeBtn:'',next:'',prev:''},openEffect:"fade",openSpeed:250,openEasing:"swing",openOpacity:!0,openMethod:"zoomIn",closeEffect:"fade",closeSpeed:250,closeEasing:"swing",closeOpacity:!0,closeMethod:"zoomOut",nextEffect:"elastic",nextSpeed:250,nextEasing:"swing",nextMethod:"changeIn",prevEffect:"elastic",prevSpeed:250,prevEasing:"swing",prevMethod:"changeOut",helpers:{overlay:!0,title:!0},onCancel:f.noop,beforeLoad:f.noop,afterLoad:f.noop,beforeShow:f.noop,afterShow:f.noop,beforeChange:f.noop,beforeClose:f.noop,afterClose:f.noop},group:{},opts:{},previous:null,coming:null,current:null,isActive:!1,isOpen:!1,isOpened:!1,wrap:null,skin:null,outer:null,inner:null,player:{timer:null,isActive:!1},ajaxLoad:null,imgPreload:null,transitions:{},helpers:{},open:function(a,d){if(a&&(f.isPlainObject(d)||(d={}),!1!==b.close(!0)))return f.isArray(a)||(a=t(a)?f(a).get():[a]),f.each(a,function(e,c){var k={},g,h,j,m,l;"object"===f.type(c)&&(c.nodeType&&(c=f(c)),t(c)?(k={href:c.data("fancybox-href")||c.attr("href"),title:c.data("fancybox-title")||c.attr("title"),isDom:!0,element:c},f.metadata&&f.extend(!0,k,c.metadata())):k=c);g=d.href||k.href||(q(c)?c:null);h=d.title!==v?d.title:k.title||"";m=(j=d.content||k.content)?"html":d.type||k.type;!m&&k.isDom&&(m=c.data("fancybox-type"),m||(m=(m=c.prop("class").match(/fancybox\.(\w+)/))?m[1]:null));q(g)&&(m||(b.isImage(g)?m="image":b.isSWF(g)?m="swf":"#"===g.charAt(0)?m="inline":q(c)&&(m="html",j=c)),"ajax"===m&&(l=g.split(/\s+/,2),g=l.shift(),l=l.shift()));j||("inline"===m?g?j=f(q(g)?g.replace(/.*(?=#[^\s]+$)/,""):g):k.isDom&&(j=c):"html"===m?j=g:!m&&(!g&&k.isDom)&&(m="inline",j=c));f.extend(k,{href:g,type:m,content:j,title:h,selector:l});a[e]=k}),b.opts=f.extend(!0,{},b.defaults,d),d.keys!==v&&(b.opts.keys=d.keys?f.extend({},b.defaults.keys,d.keys):!1),b.group=a,b._start(b.opts.index)},cancel:function(){var a=b.coming;a&&!1!==b.trigger("onCancel")&&(b.hideLoading(),b.ajaxLoad&&b.ajaxLoad.abort(),b.ajaxLoad=null,b.imgPreload&&(b.imgPreload.onload=b.imgPreload.onerror=null),a.wrap&&a.wrap.stop(!0,!0).trigger("onReset").remove(),b.coming=null,b.current||b._afterZoomOut(a))},close:function(a){b.cancel();!1!==b.trigger("beforeClose")&&(b.unbindEvents(),b.isActive&&(!b.isOpen||!0===a?(f(".fancybox-wrap").stop(!0).trigger("onReset").remove(),b._afterZoomOut()):(b.isOpen=b.isOpened=!1,b.isClosing=!0,f(".fancybox-item, .fancybox-nav").remove(),b.wrap.stop(!0,!0).removeClass("fancybox-opened"),b.transitions[b.current.closeMethod]())))},play:function(a){var d=function(){clearTimeout(b.player.timer)},e=function(){d();b.current&&b.player.isActive&&(b.player.timer=setTimeout(b.next,b.current.playSpeed))},c=function(){d();p.unbind(".player");b.player.isActive=!1;b.trigger("onPlayEnd")};if(!0===a||!b.player.isActive&&!1!==a){if(b.current&&(b.current.loop||b.current.index=c.index?"next":"prev"],b.router=e||"jumpto",c.loop&&(0>a&&(a=c.group.length+a%c.group.length),a%=c.group.length),c.group[a]!==v&&(b.cancel(),b._start(a)))},reposition:function(a,d){var e=b.current,c=e?e.wrap:null,k;c&&(k=b._getPosition(d),a&&"scroll"===a.type?(delete k.position,c.stop(!0,!0).animate(k,200)):(c.css(k),e.pos=f.extend({},e.dim,k)))},update:function(a){var d=a&&a.type,e=!d||"orientationchange"===d;e&&(clearTimeout(B),B=null);b.isOpen&&!B&&(B=setTimeout(function(){var c=b.current;c&&!b.isClosing&&(b.wrap.removeClass("fancybox-tmp"),(e||"load"===d||"resize"===d&&c.autoResize)&&b._setDimension(),"scroll"===d&&c.canShrink||b.reposition(a),b.trigger("onUpdate"),B=null)},e&&!s?0:300))},toggle:function(a){b.isOpen&&(b.current.fitToView="boolean"===f.type(a)?a:!b.current.fitToView,s&&(b.wrap.removeAttr("style").addClass("fancybox-tmp"),b.trigger("onUpdate")),b.update())},hideLoading:function(){p.unbind(".loading");f("#fancybox-loading").remove()},showLoading:function(){var a,d;b.hideLoading();a=f('
').click(b.cancel).appendTo("body");p.bind("keydown.loading",function(a){if(27===(a.which||a.keyCode))a.preventDefault(),b.cancel()});b.defaults.fixed||(d=b.getViewport(),a.css({position:"absolute",top:0.5*d.h+d.y,left:0.5*d.w+d.x}))},getViewport:function(){var a=b.current&&b.current.locked||!1,d={x:n.scrollLeft(),y:n.scrollTop()};a?(d.w=a[0].clientWidth,d.h=a[0].clientHeight):(d.w=s&&r.innerWidth?r.innerWidth:n.width(),d.h=s&&r.innerHeight?r.innerHeight:n.height());return d},unbindEvents:function(){b.wrap&&t(b.wrap)&&b.wrap.unbind(".fb");p.unbind(".fb");n.unbind(".fb")},bindEvents:function(){var a=b.current,d;a&&(n.bind("orientationchange.fb"+(s?"":" resize.fb")+(a.autoCenter&&!a.locked?" scroll.fb":""),b.update),(d=a.keys)&&p.bind("keydown.fb",function(e){var c=e.which||e.keyCode,k=e.target||e.srcElement;if(27===c&&b.coming)return!1;!e.ctrlKey&&(!e.altKey&&!e.shiftKey&&!e.metaKey&&(!k||!k.type&&!f(k).is("[contenteditable]")))&&f.each(d,function(d,k){if(1h[0].clientWidth||h[0].clientHeight&&h[0].scrollHeight>h[0].clientHeight),h=f(h).parent();if(0!==c&&!j&&1g||0>k)b.next(0>g?"up":"right");d.preventDefault()}}))},trigger:function(a,d){var e,c=d||b.coming||b.current;if(c){f.isFunction(c[a])&&(e=c[a].apply(c,Array.prototype.slice.call(arguments,1)));if(!1===e)return!1;c.helpers&&f.each(c.helpers,function(d,e){if(e&&b.helpers[d]&&f.isFunction(b.helpers[d][a]))b.helpers[d][a](f.extend(!0,{},b.helpers[d].defaults,e),c)});p.trigger(a)}},isImage:function(a){return q(a)&&a.match(/(^data:image\/.*,)|(\.(jp(e|g|eg)|gif|png|bmp|webp|svg)((\?|#).*)?$)/i)},isSWF:function(a){return q(a)&&a.match(/\.(swf)((\?|#).*)?$/i)},_start:function(a){var d={},e,c;a=l(a);e=b.group[a]||null;if(!e)return!1;d=f.extend(!0,{},b.opts,e);e=d.margin;c=d.padding;"number"===f.type(e)&&(d.margin=[e,e,e,e]);"number"===f.type(c)&&(d.padding=[c,c,c,c]);d.modal&&f.extend(!0,d,{closeBtn:!1,closeClick:!1,nextClick:!1,arrows:!1,mouseWheel:!1,keys:null,helpers:{overlay:{closeClick:!1}}});d.autoSize&&(d.autoWidth=d.autoHeight=!0);"auto"===d.width&&(d.autoWidth=!0);"auto"===d.height&&(d.autoHeight=!0);d.group=b.group;d.index=a;b.coming=d;if(!1===b.trigger("beforeLoad"))b.coming=null;else{c=d.type;e=d.href;if(!c)return b.coming=null,b.current&&b.router&&"jumpto"!==b.router?(b.current.index=a,b[b.router](b.direction)):!1;b.isActive=!0;if("image"===c||"swf"===c)d.autoHeight=d.autoWidth=!1,d.scrolling="visible";"image"===c&&(d.aspectRatio=!0);"iframe"===c&&s&&(d.scrolling="scroll");d.wrap=f(d.tpl.wrap).addClass("fancybox-"+(s?"mobile":"desktop")+" fancybox-type-"+c+" fancybox-tmp "+d.wrapCSS).appendTo(d.parent||"body");f.extend(d,{skin:f(".fancybox-skin",d.wrap),outer:f(".fancybox-outer",d.wrap),inner:f(".fancybox-inner",d.wrap)});f.each(["Top","Right","Bottom","Left"],function(a,b){d.skin.css("padding"+b,w(d.padding[a]))});b.trigger("onReady");if("inline"===c||"html"===c){if(!d.content||!d.content.length)return b._error("content")}else if(!e)return b._error("href");"image"===c?b._loadImage():"ajax"===c?b._loadAjax():"iframe"===c?b._loadIframe():b._afterLoad()}},_error:function(a){f.extend(b.coming,{type:"html",autoWidth:!0,autoHeight:!0,minWidth:0,minHeight:0,scrolling:"no",hasError:a,content:b.coming.tpl.error});b._afterLoad()},_loadImage:function(){var a=b.imgPreload=new Image;a.onload=function(){this.onload=this.onerror=null;b.coming.width=this.width/b.opts.pixelRatio;b.coming.height=this.height/b.opts.pixelRatio;b._afterLoad()};a.onerror=function(){this.onload=this.onerror=null;b._error("image")};a.src=b.coming.href;!0!==a.complete&&b.showLoading()},_loadAjax:function(){var a=b.coming;b.showLoading();b.ajaxLoad=f.ajax(f.extend({},a.ajax,{url:a.href,error:function(a,e){b.coming&&"abort"!==e?b._error("ajax",a):b.hideLoading()},success:function(d,e){"success"===e&&(a.content=d,b._afterLoad())}}))},_loadIframe:function(){var a=b.coming,d=f(a.tpl.iframe.replace(/\{rnd\}/g,(new Date).getTime())).attr("scrolling",s?"auto":a.iframe.scrolling).attr("src",a.href);f(a.wrap).bind("onReset",function(){try{f(this).find("iframe").hide().attr("src","//about:blank").end().empty()}catch(a){}});a.iframe.preload&&(b.showLoading(),d.one("load",function(){f(this).data("ready",1);s||f(this).bind("load.fb",b.update);f(this).parents(".fancybox-wrap").width("100%").removeClass("fancybox-tmp").show();b._afterLoad()}));a.content=d.appendTo(a.inner);a.iframe.preload||b._afterLoad()},_preloadImages:function(){var a=b.group,d=b.current,e=a.length,c=d.preload?Math.min(d.preload,e-1):0,f,g;for(g=1;g<=c;g+=1)f=a[(d.index+g)%e],"image"===f.type&&f.href&&((new Image).src=f.href)},_afterLoad:function(){var a=b.coming,d=b.current,e,c,k,g,h;b.hideLoading();if(a&&!1!==b.isActive)if(!1===b.trigger("afterLoad",a,d))a.wrap.stop(!0).trigger("onReset").remove(),b.coming=null;else{d&&(b.trigger("beforeChange",d),d.wrap.stop(!0).removeClass("fancybox-opened").find(".fancybox-item, .fancybox-nav").remove());b.unbindEvents();e=a.content;c=a.type;k=a.scrolling;f.extend(b,{wrap:a.wrap,skin:a.skin,outer:a.outer,inner:a.inner,current:a,previous:d});g=a.href;switch(c){case "inline":case "ajax":case "html":a.selector?e=f("
").html(e).find(a.selector):t(e)&&(e.data("fancybox-placeholder")||e.data("fancybox-placeholder",f('
').insertAfter(e).hide()),e=e.show().detach(),a.wrap.bind("onReset",function(){f(this).find(e).length&&e.hide().replaceAll(e.data("fancybox-placeholder")).data("fancybox-placeholder",!1)}));break;case "image":e=a.tpl.image.replace("{href}",g);break;case "swf":e='',h="",f.each(a.swf,function(a,b){e+='';h+=" "+a+'="'+b+'"'}),e+='"}(!t(e)||!e.parent().is(a.inner))&&a.inner.append(e);b.trigger("beforeShow");a.inner.css("overflow","yes"===k?"scroll":"no"===k?"hidden":k);b._setDimension();b.reposition();b.isOpen=!1;b.coming=null;b.bindEvents();if(b.isOpened){if(d.prevMethod)b.transitions[d.prevMethod]()}else f(".fancybox-wrap").not(a.wrap).stop(!0).trigger("onReset").remove();b.transitions[b.isOpened?a.nextMethod:a.openMethod]();b._preloadImages()}},_setDimension:function(){var a=b.getViewport(),d=0,e=!1,c=!1,e=b.wrap,k=b.skin,g=b.inner,h=b.current,c=h.width,j=h.height,m=h.minWidth,u=h.minHeight,n=h.maxWidth,p=h.maxHeight,s=h.scrolling,q=h.scrollOutside?h.scrollbarWidth:0,x=h.margin,y=l(x[1]+x[3]),r=l(x[0]+x[2]),v,z,t,C,A,F,B,D,H;e.add(k).add(g).width("auto").height("auto").removeClass("fancybox-tmp");x=l(k.outerWidth(!0)-k.width());v=l(k.outerHeight(!0)-k.height());z=y+x;t=r+v;C=E(c)?(a.w-z)*l(c)/100:c;A=E(j)?(a.h-t)*l(j)/100:j;if("iframe"===h.type){if(H=h.content,h.autoHeight&&1===H.data("ready"))try{H[0].contentWindow.document.location&&(g.width(C).height(9999),F=H.contents().find("body"),q&&F.css("overflow-x","hidden"),A=F.outerHeight(!0))}catch(G){}}else if(h.autoWidth||h.autoHeight)g.addClass("fancybox-tmp"),h.autoWidth||g.width(C),h.autoHeight||g.height(A),h.autoWidth&&(C=g.width()),h.autoHeight&&(A=g.height()),g.removeClass("fancybox-tmp");c=l(C);j=l(A);D=C/A;m=l(E(m)?l(m,"w")-z:m);n=l(E(n)?l(n,"w")-z:n);u=l(E(u)?l(u,"h")-t:u);p=l(E(p)?l(p,"h")-t:p);F=n;B=p;h.fitToView&&(n=Math.min(a.w-z,n),p=Math.min(a.h-t,p));z=a.w-y;r=a.h-r;h.aspectRatio?(c>n&&(c=n,j=l(c/D)),j>p&&(j=p,c=l(j*D)),cz||y>r)&&(c>m&&j>u)&&!(19n&&(c=n,j=l(c/D)),g.width(c).height(j),e.width(c+x),a=e.width(),y=e.height();else c=Math.max(m,Math.min(c,c-(a-z))),j=Math.max(u,Math.min(j,j-(y-r)));q&&("auto"===s&&jz||y>r)&&c>m&&j>u;c=h.aspectRatio?cu&&j
').appendTo(b.coming?b.coming.parent:a.parent);this.fixed=!1;a.fixed&&b.defaults.fixed&&(this.overlay.addClass("fancybox-overlay-fixed"),this.fixed=!0)},open:function(a){var d=this;a=f.extend({},this.defaults,a);this.overlay?this.overlay.unbind(".overlay").width("auto").height("auto"):this.create(a);this.fixed||(n.bind("resize.overlay",f.proxy(this.update,this)),this.update());a.closeClick&&this.overlay.bind("click.overlay",function(a){if(f(a.target).hasClass("fancybox-overlay"))return b.isActive?b.close():d.close(),!1});this.overlay.css(a.css).show()},close:function(){var a,b;n.unbind("resize.overlay");this.el.hasClass("fancybox-lock")&&(f(".fancybox-margin").removeClass("fancybox-margin"),a=n.scrollTop(),b=n.scrollLeft(),this.el.removeClass("fancybox-lock"),n.scrollTop(a).scrollLeft(b));f(".fancybox-overlay").remove().hide();f.extend(this,{overlay:null,fixed:!1})},update:function(){var a="100%",b;this.overlay.width(a).height("100%");I?(b=Math.max(G.documentElement.offsetWidth,G.body.offsetWidth),p.width()>b&&(a=p.width())):p.width()>n.width()&&(a=p.width());this.overlay.width(a).height(p.height())},onReady:function(a,b){var e=this.overlay;f(".fancybox-overlay").stop(!0,!0);e||this.create(a);a.locked&&(this.fixed&&b.fixed)&&(e||(this.margin=p.height()>n.height()?f("html").css("margin-right").replace("px",""):!1),b.locked=this.overlay.append(b.wrap),b.fixed=!1);!0===a.showEarly&&this.beforeShow.apply(this,arguments)},beforeShow:function(a,b){var e,c;b.locked&&(!1!==this.margin&&(f("*").filter(function(){return"fixed"===f(this).css("position")&&!f(this).hasClass("fancybox-overlay")&&!f(this).hasClass("fancybox-wrap")}).addClass("fancybox-margin"),this.el.addClass("fancybox-margin")),e=n.scrollTop(),c=n.scrollLeft(),this.el.addClass("fancybox-lock"),n.scrollTop(e).scrollLeft(c));this.open(a)},onUpdate:function(){this.fixed||this.update()},afterClose:function(a){this.overlay&&!b.coming&&this.overlay.fadeOut(a.speedOut,f.proxy(this.close,this))}};b.helpers.title={defaults:{type:"float",position:"bottom"},beforeShow:function(a){var d=b.current,e=d.title,c=a.type;f.isFunction(e)&&(e=e.call(d.element,d));if(q(e)&&""!==f.trim(e)){d=f('
'+e+"
");switch(c){case "inside":c=b.skin;break;case "outside":c=b.wrap;break;case "over":c=b.inner;break;default:c=b.skin,d.appendTo("body"),I&&d.width(d.width()),d.wrapInner(''),b.current.margin[2]+=Math.abs(l(d.css("margin-bottom")))}d["top"===a.position?"prependTo":"appendTo"](c)}}};f.fn.fancybox=function(a){var d,e=f(this),c=this.selector||"",k=function(g){var h=f(this).blur(),j=d,k,l;!g.ctrlKey&&(!g.altKey&&!g.shiftKey&&!g.metaKey)&&!h.is(".fancybox-wrap")&&(k=a.groupAttr||"data-fancybox-group",l=h.attr(k),l||(k="rel",l=h.get(0)[k]),l&&(""!==l&&"nofollow"!==l)&&(h=c.length?f(c):e,h=h.filter("["+k+'="'+l+'"]'),j=h.index(this)),a.index=j,!1!==b.open(h,a)&&g.preventDefault())};a=a||{};d=a.index||0;!c||!1===a.live?e.unbind("click.fb-start").bind("click.fb-start",k):p.undelegate(c,"click.fb-start").delegate(c+":not('.fancybox-item, .fancybox-nav')","click.fb-start",k);this.filter("[data-fancybox-start=1]").trigger("click");return this};p.ready(function(){var a,d;f.scrollbarWidth===v&&(f.scrollbarWidth=function(){var a=f('
').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);"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)); } }, });"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 spotlight = new bpApp.SlideController({ onNumber: startNumber, defaultPathUrl: '', duration: slideTimer, animationIn: slideAnimationIn, animationOut: slideAnimationOut }); 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.setupFancyBox(); this.setupAutoScroll(); this.loadDeferredImages(); this.lazyLoadViewport() }, telTracking: function () { jQuery("a[href^='tel:']").click(function () { bpApp.GA4Tracking('Click to Call') }) }, 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);var PojoA11yOptions = {"focusable":"","remove_link_target":"","add_role_links":"","enable_save":"","save_expiration":""};!function(){var t=-1 a"),this.cache.$skipToContent=n("#pojo-a11y-skip-content"),this.cache.$body=n("body")},settings:{minFontSize:120,maxFontSize:200,buttonsClassPrefix:"pojo-a11y-btn-",bodyClassPrefix:"pojo-a11y-",bodyFontClassPrefix:"pojo-a11y-resize-font-",storageKey:"pojo-a11y",expires:PojoA11yOptions.save_expiration?36e5*PojoA11yOptions.save_expiration:432e5},variables:{currentFontSize:120,currentSchema:null},activeActions:{},buildElements:function(){this.cache.$body.prepend(this.cache.$toolbar),this.cache.$body.prepend(this.cache.$skipToContent)},bindEvents:function(){var e=this;e.cache.$btnToolbarToggle.on("click",function(t){t.preventDefault(),e.cache.$toolbar.toggleClass("pojo-a11y-toolbar-open"),e.cache.$toolbar.hasClass("pojo-a11y-toolbar-open")?e.cache.$toolbarLinks.attr("tabindex","0"):e.cache.$toolbarLinks.attr("tabindex","-1")}),n(o).on("keyup",function(t){9===t.which&&e.cache.$btnToolbarToggle.is(":focus")&&(e.cache.$toolbar.addClass("pojo-a11y-toolbar-open"),e.cache.$toolbarLinks.attr("tabindex","0"))}),e.bindToolbarButtons()},bindToolbarButtons:function(){var s=this;s.cache.$toolbarToolsLinks.on("click",function(t){t.preventDefault();var e=n(this),o=e.data("action"),i=e.data("action-group"),a=!1;"reset"!==o?(-1!==["toggle","schema"].indexOf(i)&&(a=e.hasClass("active")),s.activateButton(o,a)):s.reset()})},activateButton:function(t,e){var o=this.getButtonByAction(t).data("action-group");this.activeActions[t]=!e,this.actions[o].call(this,t,e),this.saveToLocalStorage()},getActiveButtons:function(){return this.cache.$toolbarToolsLinks.filter(".active")},getButtonByAction:function(t){return this.cache.$toolbarToolsLinks.filter("."+this.settings.buttonsClassPrefix+t)},actions:{toggle:function(t,e){var o=this.getButtonByAction(t),i=e?"removeClass":"addClass";e?o.removeClass("active"):o.addClass("active"),this.cache.$body[i](this.settings.bodyClassPrefix+t)},resize:function(t,e){var o=this.variables.currentFontSize;"resize-plus"===t&&this.settings.maxFontSize>o&&(this.variables.currentFontSize+=10),"resize-minus"===t&&this.settings.minFontSize Skip to content