Reviews Icon Pin Icon Appt Icon Phone Icon

2 Overhill Rd Suite 270, Scarsdale, NY 10583

Thank you for visiting Robert A. Horowitz, DDS! We hope that your experience with us was pleasant, and that your oral health needs were met with quick, efficient, and high-quality treatment. Please leave us a review detailing your experience with our periodontist. If you are new to the Scarsdale, New York, area, we welcome you to read some of our reviews to see what our patients have to say about their care. To learn more about our periodontal and implant services, and to make your appointment with our doctor, please call us today at 914-529-4136.

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));(function(k){if(k.base)return!1;var h=function(){this.version="1.7.1";this.errors=[]};h.prototype={constructor:h,augment:function(a){if(a&&"object"===typeof a){var c=this.constructor.prototype,d;for(d in a)a.hasOwnProperty(d)&&(c[d]=a[d])}return this}};h.prototype.extend=h.prototype;var b=k._b=k.base=new h;b.augment({parseQueryString:function(a){a=a||k.location.search;var c={};a.replace(/([^?=&]+)(=([^&]*))?/g,function(a,b,f,g){c[b]=g});return!1===this.isEmpty(c)?c:!1},isEmpty:function(a){if(a&&"object"===typeof a)for(var c in a)if(a.hasOwnProperty(c))return!1;return!0},listToArray:function(a){return Array.prototype.slice.call(a)},curry:function(a){var c=this;return function(){return a.apply(c,c.listToArray(arguments))}},overrideMethod:function(a,c,d,b){return(a[c]=d).apply(a,this.listToArray(b))},camelCase:function(a){return"string"===typeof a?a.replace(/(-|\s|_)+\w{1}/g,function(a){return a[1].toUpperCase()}):!1},uncamelCase:function(a,c){return"string"===typeof a?(c=c||"-",a.replace(/([A-Z]{1,})/g,function(a){return c+a.toLowerCase()}).toLowerCase()):!1},_createEvent:function(){return this.overrideMethod(this,"_createEvent","CustomEvent"in window?function(a,c,d,b,f){return"HTMLEvents"===d?new Event(c):"MouseEvents"===d?new MouseEvent(c,b):new CustomEvent(c,f)}:"createEventObject"in document?function(a,c,d,b,f){a=document.createEventObject();a.eventType=c;return a}:function(a,c,d,b,f){var e=document.createEvent(d);"HTMLEvents"===d?a.initEvent(c,b.bubbles,b.cancelable):"MouseEvents"===d?e.initMouseEvent(c,b.canBubble,b.cancelable,b.view,b.detail,b.screenX,b.screenY,b.clientX,b.clientY,b.ctrlKey,b.altKey,b.shiftKey,b.metaKey,b.button,b.relatedTarget):"CustomEvent"===d&&e.initCustomEvent(c,b.bubbles,b.cancelable,f);return e},arguments)},createEvent:function(a,c,d,e){if(c&&"object"===typeof c){var f={pointerX:0,pointerY:0,button:0,view:window,detail:1,screenX:0,screenY:0,clientX:0,clientY:0,ctrlKey:!1,altKey:!1,shiftKey:!1,metaKey:!1,bubbles:!0,cancelable:!0,relatedTarget:null};d&&"object"===typeof d&&(f=b.extendObject(f,d));d={HTMLEvents:/^(?:load|unload|abort|error|select|change|submit|reset|focus|blur|resize|scroll)$/,MouseEvents:/^(?:click|dblclick|mouse(?:down|up|over|move|out))$/};var g="CustomEvent",l;for(l in d)if(d.hasOwnProperty(l)&&a.match(d[l])){g=l;break}return this._createEvent(c,a,g,f,e)}return!1},_trigger:function(){return this.overrideMethod(this,"_trigger","createEvent"in document?function(a,c){a.dispatchEvent(c)}:function(a,c){a.fireEvent("on"+c.type,c)},arguments)},trigger:function(a,c,b){c&&"object"===typeof c&&(a="string"===typeof a?this.createEvent(a,c,null,b):a,this._trigger(c,a));return this},mouseWheelEventType:null,getMouseWheelEventType:function(){var a;(a=this.mouseWheelEventType)||(a="wheel","onmousewheel"in k?a="mousewheel":"DOMMouseScroll"in k&&(a="DOMMouseScroll"),a=this.mouseWheelEventType=a);return a},onMouseWheel:function(a,c,b,e){"undefined"===typeof c&&(c=window);var d=this,g=this.getMouseWheelEventType();jQuery(c).on(g,function(c){c=c||window.event;var f=Math.max(-1,Math.min(1,-c.deltaY||c.wheelDelta||-c.detail));"function"===typeof a&&a(f,c);"undefined"!==typeof b&&1==b&&d.preventDefault(c)},e);return this},offMouseWheel:function(a){"undefined"===typeof a&&(a=window);var c=this.getMouseWheelEventType();jQuery(a).off(c)},preventDefault:function(a){a=a||window.event;"function"===typeof a.preventDefault?a.preventDefault():a.returnValue=!1;return this},stopPropagation:function(a){a=a||window.event;"function"===typeof a.stopPropagation?a.stopPropagation():a.cancelBubble=!0;return this},getValue:function(a,c,b){return this.getProperty(a,c,b)},getProperty:function(a,c,b){return a&&"object"===typeof a&&a[c]?a[c]:"undefined"!==typeof b?b:""},getType:function(a){var c=typeof a;"object"===c&&!0===this.isArray(a)&&(c="array");return c},_isArray:function(){return this.overrideMethod(this,"_isArray","function"===typeof Array.isArray?function(a){return Array.isArray(a)}:function(a){return a instanceof Array?!0:!1},arguments)},isArray:function(a){return this._isArray(a)},_inArray:function(){return this.overrideMethod(this,"_inArray","function"===typeof Array.prototype.indexOf?function(a,c,b){return a.indexOf(c,b)}:function(a,c,b){var d=a.length;for(b=isNaN(b)?0:b;b)/i.test(f)?b.innerHTML=f:b.textContent=f);else if("data-"===g.substring(0,5))e.data(g,f);else{var l=typeof f;if("undefined"!==l&&""!=f){var m=g;switch(m){case "class":m="className";break;case "for":m="htmlFor";break;case "readonly":m="readOnly";break;case "maxlength":m="maxLength";break;case "cellspacing":m="cellSpacing";break;case "rowspan":m="rowSpan";break;case "colspan":m="colSpan";break;case "tabindex":m="tabIndex";break;case "cellpadding":m="cellPadding";break;case "usemap":m="useMap";break;case "frameborder":m="frameBorder";break;case "contenteditable":m="contentEditable"}"function"===l?(l=m,"undefined"!==typeof l&&"on"===l.substring(0,2)&&(l=l.substring(2)),m=l,e.on(m,f)):b[m]=f}}}!0===d?this.prepend(c,b):this.append(c,b);return b},createDocFragment:function(){return document.createDocumentFragment()},createTextNode:function(b,a){var c=document.createTextNode(b);a&&this.append(a,c);return c},addElement:function(b,a,c,d,e,f){return this.create(b,{id:a,className:c,innerHTML:d},e,f)},addButton:function(b,a,c,d,e,f,g){a={id:a,className:c,innerHTML:d};"button"===b&&(a.type="button");"function"===typeof e&&(a.onclick=e);return this.create(b,a,f,g)},addCheckbox:function(b,a,c,d,e,f){b={id:b,className:a,type:"checkbox"};"undefined"!==typeof f&&1==f&&(b.onclick=base.stopPropagation);"function"===typeof c&&(b.onchange=c);1==d&&(b.checked=!0);return this.create("input",b,e)},addRadio:function(b,a,c,d,e,f,g,l){b={id:b,name:a,className:c,value:d,type:"radio"};"undefined"!==typeof l&&1==l&&(b.onclick=base.stopPropagation);"function"===typeof e&&(b.onchange=e);1==f&&(b.checked=!0);return this.create("input",b,g)},addInput:function(b,a,c,d,e,f,g,l){b={id:a,className:c,value:d,type:b};b.onfocus=h;"function"===typeof e&&(e=base.createCallBack(null,e,[this.value]),b.onkeyup=e);f&&(b.placeholder=f);return this.create("input",b,g,l)},addTextarea:function(b,a,c,d,e,f){b={id:b,className:a,value:c};b.onfocus=h;"function"===typeof d&&(b.onblur=d,b.onkeyup=d);return this.create("textarea",b,e,f)},addSelect:function(b,a,c,d,e,f){var g={id:b,className:a,value:c};"function"===typeof d&&(g.onchange=function(){d.call(null,this.value);e=g=null});return this.create("select",g,e,f)},setupSelectOptions:function(b,a,c){if(null!==b&&("object"!==typeof b&&(b=document.getElementById(b)),a&&a.length))for(var d=0,e=a.length;da.length)return!1;this._remoteStates=[];this.setupStateManager();for(var b=this.state,d,e=0,f=a.length;ea.length)return!1;this.setupEventManager();for(var b=this.events,d=0,e=a.length;d= 0) { this.objects.splice(indexNumber, 1); } } } } }, stopTimer: function(animation) { if(animation) { var timer = animation.timer; window.clearTimeout(timer); } }, checkAnimating: function(obj) { var animationArray = []; for(var i = 0, maxLength = this.objects.length; i < maxLength; i++) { var animation = this.objects[i]; if(animation.object === obj) { animationArray.push(animation); } } return (animationArray.length >= 1)? animationArray : false; }, stopPreviousAnimations: function(obj) { this.removeObject(obj, 1); }, reset: function() { this.objects = []; } }, setupSelectingObject: function(object) { return (typeof object === 'string')? document.getElementById(object) : object; }, hide: function(object, animationClass, duration) { var obj = this.setupSelectingObject(object); jQuery(obj).addClass(animationClass); var callBack = base.createCallBack(null, removeClassAndHide, [obj, animationClass]); var timer = window.setTimeout(callBack, duration); this.animating.add(obj, animationClass, timer); }, show: function(object, animationClass, duration) { var obj = this.setupSelectingObject(object); jQuery(obj).addClass(animationClass); obj.style.display = 'block'; var callBack = base.createCallBack(null, removeAnimationClass, [obj, animationClass]); var timer = window.setTimeout(callBack, duration); this.animating.add(obj, animationClass, timer); }, set: function(object, animationClass, duration) { var obj = this.setupSelectingObject(object); jQuery(obj).addClass(animationClass); var callBack = base.createCallBack(null, removeAnimationClass, [obj, animationClass]); var timer = window.setTimeout(callBack, duration); this.animating.add(obj, animationClass, timer); } };(function(bpApp){ "use strict"; var Navigation = base.Component.extend( { constructor: function(scrollContainer, container) { base.Component.call(this, container); this.scrollContainer = scrollContainer; }, setup: function() { this.setupCurrentPage(); this.setupNav(); this.groups.selectPrimaryGroup(); }, setupGroups: function(optionsArray) { var self = this; this.groups = { lastSelectedGroup: null, options: [], createPanel: function() { var buttonBack = self.addButton('button', self.id + '_button_back', 'bttn back', '', '', 'main-nav-container'); }, addGroup: function(level, parent) { var container = self.scrollContainer, style = (level === 0)? 'primary' : 'sub-menu', number = (this.options.length); var groupPanel = self.addElement('div', self.id + '_nav_' + number + level, 'group-nav-container', '', self.scrollContainer); var navContainer = self.addElement('nav', self.id + '_nav_container', 'main-nav-container', '', groupPanel); var ul = self.addElement('ul', self.id + '_nav_ul_' + number + level, 'dropdown-menu ' + style, '', navContainer); var group = { level: level, parent: parent, element: groupPanel, list: ul, options: [], selected: false }; this.options.push(group); return group; }, reset: function() { this.lastSelectedGroup = null; this.options = []; this.optionNumber = 0; }, createGroup: function(optionsArray, level, parent) { level = level || 0; var group = this.addGroup(level, parent); var selected = false; if(typeof optionsArray !== 'undefined') { for(var i = 0, maxLength = optionsArray.length; i < maxLength; i++) { var element = optionsArray[i]; if(element) { var $ele = jQuery(element); var id = '[data-id=' + $ele.data('id') + ']'; var url = jQuery(id + ' > a').attr('href'); var childOptions = element.querySelectorAll(id + ' > ul > li'); var option = { element: element, url: url, number: this.optionNumber++, selected: 'no', pages: childOptions.length }; var childSelected = false; if(childOptions.length) { var data = this.createGroup(childOptions, (level + 1), group); childSelected = data.selected; group.options = childOptions; } option.child = (data)? data.group : null; var li = this.addOption(option, group.list, childSelected); if(selected !== true && option.selected === 'yes') { selected = true; group.active = true; } } } } return { group: group, selected: selected }; }, setup: function(optionsArray) { this.createPanel(); this.createGroup(optionsArray); }, createCallBack: function(group) { return base.createCallBack(this, this.selectGroup, [group]); }, selectGroup: function(group) { if(group && typeof group === 'object') { if(group.selected === false) { group.selected = true; this.selectGroupPanel(group); this.updateBackButton(group); this.lastSelectedGroup = group; } } }, selectPrimaryGroup: function() { var groups = this.options; var length = groups.length; if(length) { var selected = groups[0]; for(var i = length - 1; i >= 0; i--) { var group = groups[i]; if(group.active === true) { selected = group; break; } } this.selectGroup(selected); } }, getAnimationClass: function(lastNum, currentNum) { var animation = { selecting: 'pullRightIn', removing: 'pullLeft' }; if(lastNum === null) { animation.removing = 'no-change'; animation.selecting = 'no-change'; } else if(currentNum > lastNum) { animation.removing = 'pullLeft'; animation.selecting = 'pullRightIn'; } else if(currentNum < lastNum) { animation.removing = 'pullRight'; animation.selecting = 'pullLeftIn'; } return animation; }, selectGroupPanel: function(group) { var groups = this.options; var groupNumber = group.level; var lastOption = this.lastSelectedGroup, lastGroupNumber = (lastOption && typeof lastOption !== 'undefined')? lastOption.level: null, animations = this.getAnimationClass(lastGroupNumber, groupNumber); for(var i = 0, maxLength = groups.length; i < maxLength; i++) { var option = groups[i], panel = option.element; if(panel && group.element) { if(panel === group.element) { panel.style.zIndex = 5; var animationClass = animations.selecting; bpApp.animate.show(panel, animationClass, 800); } else { if(option === lastOption) { panel.style.zIndex = 4; var animationClass = animations.removing; bpApp.animate.hide(panel, animationClass, 1000); } else { panel.style.zIndex = 2; bpApp.animate.hide(panel, 'none', 0); } option.selected = false; } } } }, updateBackButton: function(group) { var button = document.getElementById(self.id + '_button_back'); if(group && typeof group.parent !== 'undefined') { button.onclick = base.createCallBack(this, this.selectGroup, [group.parent]); button.style.visibility = 'visible'; } else { button.style.visibility = 'hidden'; } }, optionNumber: 0, addOption: function(option, container, childSelected) { container.appendChild(option.element); option.selected = (childSelected === true)? 'yes' : self.checkSelection(option); return this.addNavOption(option, container); }, addNavOption: function(option, container) { var element = option.element; if(option.selected === 'yes') { jQuery(element).addClass('selected'); } if(option.pages && option.child) { var a = element.querySelector('a'); if(a) { var $caret = jQuery(a).find('.caret'); var callBack = this.createCallBack(option.child); $caret.on('click', function(e) { e.preventDefault(); callBack(); }); } } return option; } }; this.groups.setup(optionsArray); }, setupNav: function() { var currentPage = this.getCurrentPage(); var options = document.querySelectorAll('#' + this.scrollContainer + ' nav > ul > li'); this.setupGroups(options); }, getPageUrl: function(url) { var path = url.split('/'); var length = path.length - 1; var page = path[length]; if(page === '') { page = path[length - 1]; } return page; }, checkSelection: function(option) { var currentPage = this.currentPage; currentPage = currentPage.split('&')[0]; var url = option.url; url = this.getPageUrl(url); if(currentPage === url) { return 'yes'; } else if(!currentPage && url == '') { return 'yes'; } else if(currentPage === 'blog-post' && url === 'blog') { return 'yes'; } else { return 'no'; } }, 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(); }, getOptionStyle: function(tmpOption) { var optionStyle = (tmpOption.selected === 'yes')? 'nav-option selected' : 'nav-option'; return optionStyle; }, resetContainer: function() { var container = document.getElementById(this.container); if(container) { container.innerHTML = ''; } } }); bpApp.navigation = Navigation; })(bpApp); (function(bpApp){ "use strict"; var SlideController = function(container, onNumber, defaultPathUrl) { this.init(); this.animationMode = 'fade'; this.defaultPathUrl = (defaultPathUrl)? defaultPathUrl : '/slideshow/'; this.lastSelectedOption = null; this.onNumber = typeof onNumber !== 'undefined' ? onNumber: 0; this.optionsArray = []; this.timer = null; this.container = container; }; base.Component.extend( { constructor: SlideController, addKeyboardSupport: function() { var self = this; jQuery(document).on('keydown', function(e){ self.keyPress(e); }); }, keyPress: function(e) { var keyCode = e.keyCode; switch(keyCode) { case 37: this.selectPreviousOption(); break; case 39: this.selectNextOption(); break; } }, addOption: function(element) { var options = this.optionsArray; var number = options.length; var option = { optionNumber: number, element: element, crumbId: this.id + '_crumb_number_' + number, selected: 'no', setup: false }; options.push(option); this.createCrumb(option); return option; }, resetContainer: function() { var container = document.getElementById(this.container); container.innerHTML = ''; }, setup: function() { var containerEle = this.getContainerEle(); if(containerEle) { this.setupControlPanel(); this.setupOptions(); this.addKeyboardSupport(); } }, getContainerEle: function() { var container = this.container; return this.mainContainer || ( this.mainContainer = typeof container !== 'object'? document.getElementById(container) : container ); }, setupControlPanel: function() { var self = this; var containerEle = this.getContainerEle(); if(containerEle) { var button = this.addButton('a', '', 'arrow arrow_left', '', function(){ self.selectPreviousOption(); }, containerEle); button = this.addButton('a', '', 'arrow arrow_right', '', function(){ self.selectNextOption(); }, containerEle); var numberContainer = this.addElement('div', this.id + '_crumb_container', 'number_crumb_container', '', containerEle); this.addElement('div', this.id + '_slide_tab', 'slideTab', '', numberContainer); containerEle.onmouseover = base.createCallBack(this, this.stopTimer); containerEle.onmouseout = base.createCallBack(this, this.startTimer); } }, selectPrimaryOption: function() { if(typeof this.onNumber !== 'undefined') { this.selectOptionByNumber(this.onNumber); } else { this.selectNewPanel(); } }, setupOptions: function() { var container = typeof this.container === 'object'? this.container : document.getElementById(this.container); if(!container) { return false; } var optionsArray = container.querySelectorAll('.splash_container'); var maxLength = optionsArray.length; if(maxLength > 0) { for(var i = 0; i < maxLength; i++) { var tmpOption = this.addOption(optionsArray[i]); } } this.selectPrimaryOption(); }, loadSlideSrc: function(option) { if(option.setup === false) { option.setup = true; var path = this.defaultPathUrl || '', element = jQuery(option.element), src = element.data('bg-src'); if(src) { var ext = bpMain.getImageExt(); element.css('background-image', 'url(' + path + src + '.' + ext + ')'); } else { src = element.data('src'); if(src) { var img = element.find('.image_container > img'); img.attr('src', path + src); } } } }, getAnimation: function() { var animations = ['pullLeftIn', 'pullRightIn']; var animationNumber = Math.round(Math.random() * (animations.length - 1)); return animations[animationNumber]; }, createCrumb: function(tmpOption) { var self = this; var crumbContainer = this.id + '_crumb_container'; var optionClass = this.getCrumbClass(tmpOption); var option = this.addButton('div', tmpOption.crumbId, optionClass, tmpOption.crumbContent, function(){ self.selectOption(tmpOption); }, crumbContainer); }, getCrumbClass: function(tmpOption) { return (tmpOption.selected === 'yes')? 'option selected' : 'option'; }, selectNewPanel: function() { if(this.onNumber < (this.optionsArray.length - 1) && this.onNumber != null) { this.onNumber++; } else { this.onNumber = 0; } this.selectOptionByNumber(this.onNumber); }, getPanelClass: function(lastNum, currentNum) { var animation = { selecting: 'same', removing: '' }; var mode = this.animationMode || 'fade'; if(mode === 'left_right') { if(currentNum > lastNum) { animation.removing = 'pullLeft'; animation.selecting = 'pullRightIn'; } else if(currentNum < lastNum) { animation.removing = 'pullRight'; animation.selecting = 'pullLeftIn'; } } else { animation.removing = 'fadeOut'; animation.selecting = 'fadeIn'; } return animation; }, getPanelAnimations: function() { var selection = this.getSelectedOption(); var panelNumber = selection.optionNumber; var lastPanelNumber = (typeof this.lastSelectedOption !== 'undefined')? jQuery.inArray(this.lastSelectedOption, this.optionsArray): 0; return this.getPanelClass(lastPanelNumber, panelNumber); }, selectPanel: function(tmpOption) { var animations = this.getPanelAnimations(); var options = this.optionsArray; for(var i = 0, maxLength = options.length; i < maxLength; i++) { var option = options[i], panel = option.element; if(panel) { var panelStyle = panel.style; if(tmpOption.element === panel) { this.loadSlideSrc(option); panelStyle.zIndex = 2; panelStyle.position = (this.setAsBg === true)? 'absolute' : 'relative'; bpApp.animate.show(panel, animations.selecting, 1000); } else { var lastSelected = this.lastSelectedOption; if(lastSelected && lastSelected.element === panel) { panelStyle.zIndex = 1; panelStyle.position = 'absolute'; panelStyle.top = '0px'; bpApp.animate.hide(panel, animations.removing, 1000); } else { panel.style.display = 'none'; } } } var crumbId = option.crumbId; if(typeof crumbId !== 'undefined') { var crumbClass = this.getCrumbClass(option), crumb = document.getElementById(crumbId); if(crumb) { crumb.className = crumbClass; } } } }, getNextOption: function() { var lastSelectedOption = (this.lastSelectedOption !== null)? this.lastSelectedOption.optionNumber : 0; var nextOptionNumber = ++lastSelectedOption; var index = (nextOptionNumber < this.optionsArray.length)? nextOptionNumber : 0; return this.optionsArray[index]; }, selectNextOption: function() { var nextOption = this.getNextOption(); if(nextOption) { this.selectOption(nextOption); } }, getPreviousOption: function() { var lastSelectedOption = (this.lastSelectedOption !== null)? this.lastSelectedOption.optionNumber : 0; var previousOptionNumber = --lastSelectedOption; var index = (previousOptionNumber >= 0)? previousOptionNumber : (this.optionsArray.length - 1); return this.optionsArray[index]; }, selectPreviousOption: function() { var previousOption = this.getPreviousOption(); if(previousOption) { this.selectOption(previousOption); } }, setLastSelectedOption: function(option) { this.lastSelectedOption = option; }, unselectOption: function(tmpOption) { for(var j = 0, maxLength = this.optionsArray.length; j < maxLength; j++) { var option = this.optionsArray[j]; if(option !== tmpOption) { if(option.selected === 'yes') { option.selected = 'no'; } } } }, moveSlideTab: function(e) { var offset = jQuery(e).position(); var slideTab = jQuery('#' + this.id + '_slide_tab').css('left', offset.left + 'px'); }, selectOption: function(tmpOption) { this.stopTimer(); var object = tmpOption.element; var slideTab = document.getElementById(tmpOption.crumbId); if(slideTab) { this.moveSlideTab(slideTab); } if(tmpOption.selected === 'no') { tmpOption.selected = 'yes'; this.onNumber = jQuery.inArray(tmpOption, this.optionsArray); } else { tmpOption.selected = 'no'; } this.unselectOption(tmpOption); this.selectPanel(tmpOption); this.setLastSelectedOption(tmpOption); this.startTimer(); }, selectOptionByNumber: function(index) { var option = this.optionsArray[index]; if(option) { this.selectOption(option); } }, getSelectedOption: function() { for(var j = 0, maxLength = this.optionsArray.length; j < maxLength; j++) { var option = this.optionsArray[j]; if(option.selected === 'yes') { return option; } } return false; }, duration: 7000, startTimer: function() { var self = this; this.stopTimer(); this.timer = window.setTimeout(function(){ self.selectNewPanel(); }, this.duration); }, stopTimer: function() { window.clearTimeout(this.timer); } }); var SlideShow = function(container, defaultPathUrl, setAsBg, onNumber) { this.init(); this.defaultPathUrl = (defaultPathUrl)? defaultPathUrl : '/slideshow/'; this.setAsBg = (setAsBg)? setAsBg : false; this.animationMode = 'fade'; this.lastSelectedOption = null; this.onNumber = typeof onNumber !== 'undefined' ? onNumber: null; this.optionsArray = []; this.timer = null; this.container = container; }; SlideController.extend( { constructor: SlideShow, addOption: function(option) { var number = this.optionsArray.length; option.optionNumber = number; option.crumbId = this.id + '_crumb_number_' + number; option.selected = 'no'; this.optionsArray.push(option); this.createCrumb(option); option.element = this.createOptionPanel(option,this.container); }, setupOptions: function(optionsArray) { var maxLength = optionsArray.length; if(maxLength > 0) { var tmpNumber = 0; for(var i = 0; i < maxLength; i++) { var tmpOption = optionsArray[i]; this.addOption(tmpOption); } } this.selectPrimaryOption(); }, setup: function(optionsArray) { var containerEle = this.getContainerEle(); if(containerEle) { this.resetContainer(); this.setupControlPanel(); this.setupOptions(optionsArray); this.addKeyboardSupport(); } }, createOptionPanel: function(tmpOption, container) { if(tmpOption && tmpOption.url) { container = this.addLink('a','','','',tmpOption.url,container); } var spotlightContainer = this.addElement('div', '', 'splash_container', '', container); spotlightContainer.onmouseover = base.createCallBack(this, this.stopTimer); spotlightContainer.onmouseout = base.createCallBack(this, this.startTimer); spotlightContainer.style.display = 'none'; var imageURL = tmpOption.image; if(this.setAsBg == true) { if(imageURL) { spotlightContainer.style.backgroundImage = 'url(' + wpThemeUrl + this.defaultPathUrl + imageURL + ')'; } } else { if(imageURL) { var imageContainer = this.addElement('div','','image_container','',spotlightContainer); var image = this.addImage('','',wpThemeUrl + this.defaultPathUrl + imageURL,tmpOption.alt,imageContainer); } } var articleContainer = this.addElement('article', '', 'content_container ' + tmpOption.className, '', spotlightContainer); var animation = this.getAnimation(); var sectionContainer = this.addElement('section', '', 'spotlight dark ' + animation, '', articleContainer); var h2 = this.addElement('h2', '', 'title_text blue', tmpOption.title, sectionContainer); var text = this.addElement('div', '', 'light', tmpOption.content, sectionContainer); return spotlightContainer; } }); var OfficeSlideController = function(container, onNumber) { this.init(); this.animationMode = 'fade'; this.lastSelectedOption = null; this.onNumber = typeof onNumber !== 'undefined' ? onNumber: 0; this.optionsArray = []; this.timer = null; this.container = container; }; SlideController.extend( { constructor: OfficeSlideController, getPanelClass: function(lastNum, currentNum) { var animation = { selecting: 'same', removing: '' }; var mode = this.animationMode || 'fade'; if(mode === 'left_right') { if(currentNum > lastNum) { animation.removing = 'pullLeft'; animation.selecting = 'pullRightIn'; } else if(currentNum < lastNum) { animation.removing = 'pullRight'; animation.selecting = 'pullLeftIn'; } } else { animation.removing = 'fadeOut'; animation.selecting = 'slideDown'; } return animation; }, getAnimation: function() { var animations = ['pullLeftIn', 'pullRightIn']; var animationNumber = Math.round(Math.random() * (animations.length - 1)); return animations[animationNumber]; } }); bpApp.slideController = SlideController; bpApp.slideShow = SlideShow; window.spotlightPanel = SlideShow; bpApp.officeSlideController = OfficeSlideController; })(bpApp); (function(bpApp){ "use strict"; var LazyAnimator = base.Class.extend( { constructor: function(attrName, cacheElements) { this.attrName = (typeof attrName === 'string')? attrName : 'data-animate'; this.cacheElements = cacheElements === true? true : false; this.elements = []; this.setup(); }, setup: function() { this.setupEvents(); this.update(); return this; }, update: function() { this.elements = this.getElements(); this.checkScroll(); return this; }, removeElement: function(element) { var index = jQuery.inArray(element, this.elements); if(index > -1) { this.elements.splice(index, 1); } return this; }, getElements: function() { return jQuery('[' + this.attrName + ']:not(.animated)'); }, checkScroll: function() { var optionsArray = (this.cacheElements === true)? this.elements : this.getElements(); if(optionsArray.length) { var viewPortTop = jQuery(document).scrollTop(); var viewPortBottom = jQuery(window).height() + viewPortTop; var self = this; optionsArray.each(function(index, ele) { ele = jQuery(this); if(ele) { var optionDelay = ele.data('delay'); var delay = optionDelay !== null? optionDelay : 20; var position = ele.offset(); var optionTop = position.top + delay; var optionBottom = position.top + ele.height(); if(optionTop < viewPortBottom && optionTop >= viewPortTop) { self.animate(ele); } else if(optionBottom >= viewPortTop && optionBottom <= viewPortBottom) { self.animate(ele); } } }); } return this; }, animate: function(ele) { var animation = ele.attr(this.attrName); animation = animation || 'pullUp'; ele.addClass(animation); ele.addClass('animated'); this.removeElement(ele); return this; }, setupEvents: function() { var ele = jQuery(window); var self = this; var callBack = function() { self.checkScroll(); }; this.addEvents = function() { ele.on('scroll', callBack); }; this.removeEvents = function() { ele.off('scroll', callBack); }; this.addEvents(); return this; } }); bpApp.lazyAnimator = LazyAnimator; })(bpApp); (function(bpApp){ "use strict"; var ScrollHeader = base.Class.extend( { constructor: function(header, miniHeaderClass, distance) { this.header = (typeof header === 'string')? document.getElementById(header) : header; this.$header = jQuery(this.header); this.miniClassName = miniHeaderClass; this.headerMinified = false; this.distance = (typeof distance !== 'undefined')? distance : 300; this.$document = jQuery(document); this.$window = jQuery(window); this.setup(); }, setup: function() { var header = this.header; if(!header) { return false; } this.checkScroll(); this.addScroll(); }, addScroll: function() { var child = this; var tmpFunction = function(){ child.checkScroll(); }; var win = this.$window; win.on('scroll', tmpFunction); win.on('resize', tmpFunction); }, checkScroll: function() { var wind = this.$window; var scrollTop = wind.scrollTop(), documentHeight = (this.$document.height() - wind.height()); if(scrollTop >= this.distance) { if(this.headerMinified === false) { this.$header.addClass(this.miniClassName); this.headerMinified = true; } } else { if(this.headerMinified === true) { this.headerMinified = false; this.$header.removeClass(this.miniClassName); } } }, scrollToTop: function() { window.scrollTo(window.scrollX, 0); } }); bpApp.scrollHeader = ScrollHeader; })(bpApp); "use strict"; var Modal = base.Component.extend( { constructor: function(container) { base.Component.call(this, container); }, getLayout: function() { return this.cache('panel', { id: this.id, className: 'modal ' + this.modalClassName, header: this.addHeader(), body: this.addBody(), footer: this.addFooter() }); }, modalClassName: '', addHeader: function() { var id = this.id; return this.cache('titleContainer', { node: 'header', id: id + '_title_container', className: 'title-container', titleButtonGroup: { id: id + '_title_button_group', className: 'title-button-group', close: { node: 'button', className: 'title-bttn close', innerHTML: '', click: base.bind(this, this.decline) } }, titleLabel: { node: 'h4', id: id + '_title', className: 'title dark', textContent: this.getTitle() } }); }, addBody: function() { return this.cache('bodyContainer', { className: 'body-container', body: this.addBodyContent() }); }, addContentPanel: function(title, childeren) { return { title: { node: 'h2', className: 'left dark', textContent: title }, panel: { className: 'content-panel', children: childeren } }; }, addBodyContent: function() { return { panel: this.addContentPanel('Title', [ ]) }; }, addFooter: function() { var id = this.id; return { node: 'footer', id: id + '_button_container', className: 'button-container', buttons: this.addFooterButtons() }; }, addFooterButton: function(id, className, label, callBack) { var buttonAttr = { className: 'bttn ' + className, textContent: label, onclick: callBack }; if(id) { buttonAttr.id = this.id + id; } return buttonAttr; }, 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'; }, remove: function() { var panel = this.panel; if(panel) { this.removeElement(panel); } panel = document.getElementById(this.id + '_shadow'); if(panel) { this.removeElement(panel); } }, setup: function() { this.render(); this.setupHeaderOptions(); }, setupHeaderOptions: function() { }, checkToClose: function() { this.decline(); }, createShadow: function() { var self = this; this.addButton('div', this.id + '_shadow', 'modal-shadow fadeIn', '', function(){self.checkToClose();}, self.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() { this.toggleDisplay(); this.addBodyClass(); if(this.toggleMode === 'block') { } }, toggleMode: null, toggleDisplay: function() { var obj = this.panel, display = obj.style.display; if(display === '' || display === 'none') { obj.style.display = 'block'; this.toggleMode = 'block'; this.createShadow(); } else { obj.style.display = 'none'; this.toggleMode = 'none'; this.remove(); } }, addBodyClass: function() { document.body.classList.toggle('modal-open'); }});"use strict"; var ModalFormPanel = Modal.extend( { constructor: function(container) { container = container || document.body; Modal.call(this, container); }, addBody: function() { return this.cache('bodyContainer', { className: 'body-container', form: this.cache('form', this.addMainForm( this.addBodyContent() )) }); }, addMainForm: function(body) { return { node: 'form', id: this.id + '_form', method: 'POST', autocomplete: 'off', novalidate: true, body: body }; }, addBodyContent: function() { }, setupValidation: function() { BpFormValidator.monitor(jQuery(this.form)); }, addToggle: function() { var id = this.id + '_check'; return { className: 'data-toggle-panel', field: this.addInput('checkbox', 'Current Patient', '', '', 'toggle', id), label: { node: 'label', className: 'toggle-bttn', htmlFor: id } }; }, addRow: function(className, cols) { return { className: 'row ' + className, children: cols }; }, addInput: function(type, name, placeholder, value, className, id) { var layout = { node: 'input', type: type, name: name, autocomplete: 'none', value: value, className: className }; if(placeholder != '') { layout.placeholder = placeholder; } if(id != '') { layout.id = id; } return layout; }, addTextarea: function(name, placeholder, className) { return { node: 'textarea', name: name, autocomplete: 'off', placeholder: placeholder, className: className }; }, addHiddenFields: function(reason, id, name, subject, excludes) { return [ this.addInput('text', 'URL', '', '', 'honey'), this.addInput('hidden', 'the_reason', '', reason, 'the_reason', 'the_reason'), this.addInput('hidden', 'bpi_form_id', '', id), this.addInput('hidden', 'bpi_form_name', '', name), this.addInput('hidden', 'bpi_form_subject', '', subject), this.addInput('hidden', 'exclude_fields', '', excludes), { innerHTML: '
Your request has been sent!
We will be in contact with you shortly.
Please make sure ALL fields are filled out correctly.
' } ]; }, setup: function() { this.render(); this.setupHeaderOptions(); this.setupToggleEvent(); this.setupValidation(); }, setupToggleEvent: function() { var $element = jQuery(this.form).find("input.toggle"); $element.val("No"); $element.on('change', function() { if($element.is(':checked')) { $element.val('Yes'); } else { $element.val("No"); } }); }, addCol: function(colSpan, label, inputAttr) { var layout = { className: 'col-' + colSpan }; if(label != '') { layout.lable = { node: 'label', textContent: label }; } layout.input = inputAttr; return layout; }, 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 ModalAppointmentRequest = ModalFormPanel.extend({ modalClassName: 'appointment-request', addBodyContent: function() { var self = this; var date = new Date().toISOString().slice(0, 10); return { children: [ this.addRow('field-row', [ this.addCol('12', 'Name:', this.addInput('text', 'Name', 'e.g., John Doe', '', 'name val field_text') ) ]), this.addRow('field-row', [ this.addCol('12', 'Phone:', this.addInput('text', 'Phone', 'e.g., 123-456-7890', '', 'telephone val field_phone') ) ]), this.addRow('field-row', [ this.addCol('12', 'Email:', this.addInput('text', 'Email', 'e.g., john.doe@gmail.com', '', 'email val field_email') ) ]), this.addRow('date-time-row', [ this.addCol('6', 'Preferred Date', this.addInput('text', 'Preferred Date', 'MM/DD/YY', '') ), this.addCol('6', 'Preferred Time', this.addInput('text', 'Preferred Time', 'e.g., 9:00 AM', '', '') ) ]), this.addRow('field-row margin-top', [ this.addCol('12', 'Message:', this.addTextarea('Message', 'e.g., I would like to schedule an appointment.', '', 'val message') ) ]), this.addRow('radiobtns', [ { className: 'col-12 toggle-patient', text: { node: 'p', className: 'current_patient', textContent: 'Are you a current patient?' }, toggle: this.addToggle() } ]), this.addRow('center', [ { className: 'col-12', link: { node: 'button', className: 'send_button main-btn transition', textContent: 'Submit', click: function(e) { e.preventDefault(); var form = self.form; jQuery(form).submit(); } } } ]), { className: 'hidden-fields', children: this.addHiddenFields('appoint_request', 'appoint_request', 'Appointment Request', 'Appointment Request Submission', 'the_reason,bpi_form_id,bpi_form_name') } ] }; }, addSelect: function(options) { var self = this; return { node: 'select', name: 'location', className: 'val', onCreated: function(element) { self.setupSelectOptions(element, options); } }; }, addFooter: function() { return {}; }, getTitle: function() { return 'Request An Appointment'; } });"use strict";var ReviewModel = base.Model.extend({ defaults: { rating: 5, publish: 0, should_review: 1, send_email: 1 }});var LeaveReviewForm = ModalFormPanel.extend({ constructor: function(container) { this.model = new ReviewModel(); ModalFormPanel.call(this, container); }, modalClassName: 'review-modal', addHiddenFields: function() { return [ this.addInput('text', 'URL', '', '', 'honey') ]; }, addBodyContent: function() { return { panel: this.addContentPanel('Please leave a review', [ this.addRow('field-row', [ this.addCol('12', 'Display Name:', this.addDataInput('text', 'reviewer', 'e.g., John Doe', 'entry-reviewer val') ) ]), this.addRow('field-row', [ this.addCol('12', 'Select Number of Stars:', this.addRatingContainer() ) ]), this.addRow('field-row', [ this.addCol('12', 'Review:', this.addDataReview('review', 'What did you think?', 'entry-review val') ) ]), this.addHiddenFields(), { innerHTML: '
Thank you for your submission
Please make sure ALL fields are filled out correctly.
' }, this.cache('alertContainer', { className: 'alert-container' }) ]) }; }, 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)) ]; }, accept: function() { this.request(); }, validate: function() { var model = this.model.get(); if (!model.url) { var review = model.review, reviewer = model.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 model = this.model.get(); var data = { action: 'newStoreReview', review: base.prepareJsonUrl(model) }, ajaxurl = '/wp-admin/admin-ajax.php'; $.post(ajaxurl, data, base.bind(this, this.requestResponse)); } }, requestResponse: function(response) { this.addAlert('success', response); this.form.reset(); this.removeAndCallBack(); }, addAlert: function(type, msg) { var alertPanel = new AlertPanel( type, msg, this.alertContainer ); alertPanel.setup(); }, 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 = { node: 'input', type: 'radio', id: id, name: 'modal-rating', value: number, checked: (number === 5), change: function() { self.model.set('rating', this.value) } }, starLabel = { node: 'label', for: id, innerHTML: '' + number + ' stars' }; layout.children.push(starInput); layout.children.push(starLabel); } return layout; }, addDataInput: function(type, prop, placeholder, className) { var layout = { node: 'input', type: type, autocomplete: 'off', className: className, bind: this.bind(this.model, prop) }; if(placeholder !== '') { layout.placeholder = placeholder; } return layout; }, addDataReview: function(name, placeholder, className) { var layout = { node: 'textarea', name: name, autocomplete: 'off', className: className, bind: this.bind(this.model, name) }; if (placeholder !== '') { layout.placeholder = placeholder; } return layout; }, getTitle: function() { return 'Leave a Review'; }});var AlertPanel = function(type, msg, container){ this.init(); this.type = type; this.msg = msg; this.container = container;};base.Component.extend({ constructor: AlertPanel, getLayout: function() { return this.cache('panel', { id: this.id, className: this.getPanelClass(), innerHTML: this.msg }); }, setup: function() { this.render(); this.msgTimeOut(3000); }, 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); }});(function(bpApp){ "use strict"; var VideoPanel = base.Component.extend( { constructor: function(video, callbackFunction, container) { base.Component.call(this, container); this.video = video; this.callbackFunction = callbackFunction; }, remove: function() { var panel = this.panel; if(panel) { panel.parentNode.removeChild(panel); } panel = document.getElementById(this.id + '_shadow'); if(panel) { panel.parentNode.removeChild(panel); } }, getLayout: function() { var self = this; return this.cache('panel', { id: this.getId(), className: 'panel video-panel slideIn', title: { className: 'title-container', titleLabel: { node: 'h1', className: 'title title-text left dark', textContent: this.video.title } }, body: this.cache('iframeContainer', { className: 'body-container' }), footer: { className: 'button-container', closeButton: { node: 'button', className: 'bttn bttn-decline', textContent: 'Close', click: function(){ self.decline(); } } } }); }, setup: function() { this.render(); this.setupVideoIframe(); }, setupVideoIframe: function() { var self = this; window.setTimeout(function() { self.addIframe('', '', self.video.source, self.iframeContainer); }, 500); }, decline: function() { this.display(); }, display: function() { this.toggleDisplay(); }, createShadow: function() { var self = this; var backdrop = this.addButton('div', this.id + '_shadow','panel-shadow video-shadow fadeIn','', function(){ self.decline(); }, document.body); this.addButton('button', '', 'bttn top close', '', '', backdrop); }, toggleMode: null, toggleDisplay: function() { var obj = document.getElementById(this.id); var display = obj.style.display; if(!display || display === 'none') { obj.style.display = 'block'; this.toggleMode = 'block'; this.createShadow(); } else { obj.style.display = 'none'; this.toggleMode = 'none'; this.remove(); } } }); bpApp.videoPanel = VideoPanel; })(bpApp); "use strict"; var bpMain = { setupAppDefault: function() { this.mark('site-setup'); this.Navigation.setup(); this.Videos.setup(); this.Services.setup(); this.Modals.setup(); this.setupFancyBox(); this.setupAutoScroll(); this.setupPeekThrough(); this.mark('site-complete'); }, setupFancyBox: function() { jQuery(".pics").fancybox({ openEffect:'elastic', closeEffect:'elastic', helpers: { overlay : { locked: false } } }); jQuery(".videos").click(function() { jQuery.fancybox({ openEffect:'elastic', closeEffect:'elastic', helpers: { overlay : { locked: false } }, 'padding' : 0, 'autoScale' : false, 'transitionIn' : 'none', 'transitionOut' : 'none', 'title' : this.title, 'width' : 680, 'height' : 495, 'href' : this.href.replace(new RegExp("watch\?v=", "i"), 'v/'), 'type' : 'swf', 'swf' : { 'wmode' : 'transparent', 'allowfullscreen' : 'true' } }); return false; }); }, exceptions: ['myModal'], addException: function(exception) { this.exceptions.push(exception); }, setupAutoScroll: function() { var exceptions = this.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 false; } } } }); }, mapsSetup: false, setupGoogleMaps: function(attrName) { attrName = attrName || 'data-map-src'; jQuery('iframe[' + attrName + ']').each(function(index, element) { element = jQuery(element); var src = element.attr(attrName); if(src) { element.addClass('fadeIn'); element.attr('src', src); } }); }, setupCoolMap: function() { var self = this; jQuery('.map-overlay').click(function() { if(self.mapsSetup !== true) { self.setupGoogleMaps(); self.mapsSetup = true; } jQuery(this).fadeOut(); }); jQuery('.map-area').mouseleave(function() { jQuery('.map-overlay').fadeIn(); }); }, setupPeekThrough: function() { var $elements = jQuery('section[data-type="background"]'); if($elements[0]) { var $win = jQuery(window); $win.scroll(function() { var winScrollTop = $win.scrollTop(); $elements.each(function() { var $bgobj = jQuery(this); var yPos = -(winScrollTop / $bgobj.data('speed')); var coords = '50% '+ yPos + 'px'; $bgobj.css({ backgroundPosition: coords }); }); }); } }, mark: function(mark) { var perf = window.performance; if(perf) { window.performance.mark(mark); } }, nextGenImages: false, hasWebP: function(callBack) { var self = this; var uri = 'data:image/webp;base64,UklGRiQAAABXRUJQVlA4IBgAAAAwAQCdASoCAAEAAQAcJaQAA3AA/v3AgAA='; var img = new window.Image(); img.onload = function() { jQuery('body').addClass('webp'); self.nextGenImages = true; self.makeCallBack(callBack, true); }; img.onerror = function() { self.makeCallBack(callBack, false); }; img.src = uri; }, makeCallBack: function(callBack, data) { if (typeof callBack === 'function') { callBack(data); } }, imgExt: null, getImageExt: function() { return this.imgExt || (this.imgExt = (this.nextGenImages)? 'webp' : 'jpg'); }, loadDeferredImages: function(loadWebp) { jQuery('body').addClass('loaded'); jQuery('img[data-src]').each(function(i, ele) { var src; if (loadWebp) { var fileExt = /jpg|png/ig; var dataSrc = jQuery(this).data('src'); src = dataSrc.split(fileExt).join('webp'); } else { src = jQuery(this).data('src'); } ele.src = src; }); }}; bpMain.Services = { setup: function() { var IframeLoader = function(id) { this.id = id; this.element = null; }; IframeLoader.prototype = { constructor: IframeLoader, setup: function() { this.element = document.getElementById(this.id); if(this.element) { this.setHeight(); this.addEvents(); var self = this; window.setTimeout(function() { self.setHeight(); }, 2500); } }, setHeight: function() { var iFrame = this.element; var doc = iFrame.contentDocument? iFrame.contentDocument : iFrame.contentWindow.document; var height = doc.body? doc.body.scrollHeight : 650; if(height < 650) { height = 650; } iFrame.height = height; }, addEvents: function() { var self = this; jQuery(this.element).on('load', function() { self.setHeight(); }); jQuery(window).on('resize', function() { self.setHeight(); }); } }; var serviceName = ""; var iframes = document.querySelectorAll("iframe"); for (var i=0; i < iframes.length; i++ ) { serviceName = iframes[i].id; if (serviceName) { var iframeLoader = new IframeLoader(serviceName); iframeLoader.setup(); } } }}; bpMain.Navigation = { setup: function() { this.setupMinifyNavigation(); this.setupNavEvents(); }, setupMinifyNavigation: function() { var scroller = new bpApp.scrollHeader('sticky-header', 'sticky', 400); }, setupNavEvents: function() { var self = this; var button = jQuery('#main-nav-toggle'); button.on('click', function(){ self.toggleNav(); }); }, navHidden: true, 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 === true) { this.navHidden = false; header.addClass('opened nav-d'); nav.addClass('open'); button.addClass('nav-close'); footBar.addClass('nav-d'); if(jQuery(window).width() < 767) { address.css({'bottom': '60px', 'position': 'fixed'}); } else { address.css('position', 'fixed'); } appNav.groups.selectPrimaryGroup(); } else { this.navHidden = true; header.removeClass('opened nav-d'); nav.removeClass('open'); button.removeClass('nav-close'); footBar.removeClass('nav-d'); address.css({'position': 'relative', 'bottom': '0px'}); } }}; bpMain.Modals = { setup: function() { this.setupModals(); }, setupModals: function() { var attrName = 'data-modal'; var self = this; var elements = jQuery('[' + attrName + ']').each(function(index, element) { element = jQuery(element); var modalName = element.attr(attrName); if(modalName) { element.on('click', function() { var modalClass = window[modalName]; if(modalClass) { var modal = new modalClass(); modal.setup(); modal.display(); } }); } }); }}; bpMain.Videos = { setup: function(attrName) { attrName = attrName || 'data-video-src'; var self = this; var elements = jQuery('[' + attrName + ']').each(function(index, element) { element = jQuery(element); var src = element.attr('data-video-src'); if(src) { var title = element.attr('data-title'); element.on('click', function() { self.view(title, src); }); } }); }, createBackgroundVideo: function(container, src) { return new bpApp.BackgroundVideo(container, src); }, view: function(title, src) { var vid = { title: title, source: src }; var panel = new bpApp.videoPanel(vid, '', document.body); panel.setup(); panel.display(); }}; bpMain.SlideShow = { setup: function(type) { type = type || 'modern'; switch(type) { case 'controller': this.setupSlideController(); break; case 'tour': this.setupSlideshow1(); break; case 'reviews': this.setupSlideshow3(); break; case 'nivo': this.setupNivoSlider(); break; } }, setupSlideController: function(container) { container = container || 'slides'; var optionsArray = []; jQuery('#' + container + ' .splash_container').each(function(i, ele) { optionsArray.push(i); }); var startNumber = Math.round(Math.random() * (optionsArray.length - 1)); var spotlight = new bpApp.slideController(container, startNumber, '/wp-content/themes/bravo'); spotlight.duration = 7000; spotlight.setup(); }, createSlideShow: function(container, path, bg, optionsArray, duration) { duration = duration || 7000; var startNumber = Math.round(Math.random() * (optionsArray.length - 1)); var slideShow = new bpApp.slideShow(container, path, bg, startNumber); slideShow.duration = duration; slideShow.setup(optionsArray); return slideShow; }, createSlideOption: function(image, alt, title, content, className, url, crumbContent) { return { title: title, content: content, className: className, image: image, alt: alt, url: url, crumbContent: crumbContent }; }, setupSlideshow1: function() { var optionsArray = [ this.createSlideOption('tour.jpg'), this.createSlideOption('tour.jpg'), this.createSlideOption('tour.jpg') ]; this.createSlideShow('tour', '/images/', true, optionsArray); }, setupSlideshow3: function() { var optionsArray = [ this.createSlideOption('', '', '', 'This is where rotating reviews can go. Three to five lines will be fine. The reviews will auto rotate every few seconds or so. This is where rotating reviews can go. Three to five lines will be fine. The reviews will auto rotate every few seconds or so. This is where rotating reviews can go. Three to five lines will be fine.”

- Example Patient

' ), this.createSlideOption('', '', '', 'This is where rotating reviews can go. Three to five lines will be fine. The reviews will auto rotate every few seconds or so. This is where rotating reviews can go. Three to five lines will be fine. The reviews will auto rotate every few seconds or so. This is where rotating reviews can go. Three to five lines will be fine.”

- Example Patient

' ), this.createSlideOption('', '', '', 'This is where rotating reviews can go. Three to five lines will be fine. The reviews will auto rotate every few seconds or so. This is where rotating reviews can go. Three to five lines will be fine. The reviews will auto rotate every few seconds or so. This is where rotating reviews can go. Three to five lines will be fine.”

- Example Patient

' ) ]; this.createSlideShow('reviews', '', false, optionsArray); }}; var appNav = new bpApp.navigation('nav-scroll-container', 'main-nav-container'); appNav.setup(); jQuery(function() { if(wpPageID === '2') { } else { } bpMain.hasWebP(function(result) { bpMain.getImageExt(); bpMain.SlideShow.setup('controller'); var loadWebp = (bpMain.imgExt === 'webp' && wpPageID === '2'); bpMain.loadDeferredImages(loadWebp); }); bpMain.setupAppDefault(); bpMain.setupCoolMap(); var lazyAnimator = new bpApp.lazyAnimator(); jQuery(document).ready(function($) { var stickyNavTop = $('.banner_social').offset().top; var stickyNav = function() { var scrollTop = $(window).scrollTop(); if ($(window).width() > 1026) { if (scrollTop > stickyNavTop) { $('.banner_social').addClass('sticky'); } else { $('.banner_social').removeClass('sticky'); } } }; stickyNav(); $(window).scroll(function() { stickyNav(); }); }); });