At Crosby Dental Center, patient satisfaction is our top priority! If you would like to learn what people experience when they visit Dr. Jim Nored, we invite you to browse our reviews and see for yourself why our patients are so loyal. Our dentist and team are proud to offer exceptional dental care in a relaxed, friendly environment. Please contact our dental office in Crosby, Texas, to schedule your next appointment!
",error:'

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)); var bpApp = { extendObject: function(sourceObj, targetObj) { if(typeof sourceObj === 'object' && typeof targetObj === 'object') { for(var property in sourceObj) { if(sourceObj.hasOwnProperty(property) && typeof targetObj[property] === 'undefined') { targetObj[property] = sourceObj[property]; } } return targetObj; } return false; }, extendClass: function(sourceClass, targetClass) { var source = (typeof sourceClass === 'function')? sourceClass.prototype : sourceClass, target = (typeof targetClass === 'function')? targetClass.prototype : targetClass; if(typeof source === 'object' && typeof target === 'object') { var obj = this.createObject(source); this.extendObject(source, obj); for(var prop in target) { obj[prop] = target[prop]; } return obj; } return false; }, createObject: function(object) { if(typeof Object.create !== 'function') { var obj = function(){}; obj.prototype = object; return new obj(); } else { return Object.create(object); } }, createCallBack: function(obj, method, argArray) { if(typeof method === 'function') { argArray = argArray || []; return function() { return method.apply(obj, argArray); }; } else { return false; } }}; bpApp.htmlBuilder = function(){}; bpApp.htmlBuilder.prototype = { constructor: bpApp.htmlBuilder, create: function(nodeName, attrObject, container, prepend) { var filterProperty = function(prop) { switch(prop) { case 'class': prop = 'className'; break; } return prop; }; var removePrefix = function(prop) { if(typeof prop !== 'undefined') { if(prop.substring(0, 2) === 'on') { prop = prop.substring(2); } } return prop; }; var obj = document.createElement(nodeName); if(typeof attrObject === 'object') { for(var prop in attrObject) { var propName = filterProperty(prop), attrPropValue = attrObject[prop]; if(prop === 'innerHTML') { if(typeof attrPropValue !== 'undefined' && attrPropValue !== '') { var pattern = /<[a-z][\s\S]*>/i; if(pattern.test(attrPropValue)) { obj.innerHTML = attrPropValue; } else { obj.textContent = attrPropValue; } } } else if(prop.substring(0, 5) === 'data-') { jQuery(obj).data(prop, attrObject[prop]); } else { if(typeof attrObject[prop] !== 'undefined' && attrObject[prop] != '') { if(typeof attrObject[prop] === 'function') { propName = removePrefix(propName); jQuery(obj).on(propName, attrObject[prop]); } else { obj[propName] = attrObject[prop]; } } } } } try { if(prepend == true) { this.prepend(container, obj); } else { this.append(container, obj); } } catch(e) { console.log(obj); } return obj; }, append: function(parent, child) { if(typeof parent === "undefined") { parent = document.body; } else if(typeof parent === 'string') { parent = document.getElementById(parent); } if(typeof parent === 'object') { parent.appendChild(child); } return this; }, prepend: function(parent, child) { if(typeof parent === "undefined") { parent = document.body; } else if(typeof parent === 'string') { parent = document.getElementById(parent); } if(typeof parent === 'object') { parent.insertBefore(child, parent.firstChild); } return this; }, createObject: function(object, id, tmpClass, text, container, prepend) { var attr = { id: id, 'className': tmpClass, innerHTML: text }; return this.create(object, attr, container, prepend); }, createButton: function(type,id,tmpClass,text,callBackFn,container,prepend) { var attr = { id: id, 'className': tmpClass, innerHTML: text }; if(typeof callBackFn === 'function') { attr.onclick = callBackFn; } return this.create(type, attr, container, prepend); }, createLink: function(type,id,tmpClass,text,url,container,prepend) { var attr = { id: id, 'className': tmpClass, innerHTML: text }; if(url !== null) { attr.href = url; } return this.create(type, attr, container, prepend); }, createIframe: function(id, className, src, container, prepend) { var attr = { id: id, 'className': className }; if(typeof src !== 'undefined') { attr.src = src; } attr.width = '100%'; attr.height = '100%'; attr.frameBorder = "0"; return this.create('iframe', attr, container, prepend); }, createImage: function(id, tmpClass, src, alt, container, prepend) { var attr = { id: id, 'className': tmpClass }; if(typeof alt !== 'undefined') { attr.alt = alt; } if(typeof src !== 'undefined') { attr.src = src; } return this.create('img', attr, container, prepend); } }; var removeClassAndHide = function(obj, animationClass){ obj.style.display = 'none'; removeAnimationClass(obj, animationClass); }; var removeAnimationClass = function(obj, animationClass){ jQuery(obj).removeClass(animationClass); bpApp.animate.animating.remove(obj); }; bpApp.animate = { animating: { objects: [], add: function(object, className, timer) { this.stopPreviousAnimations(object); this.addObject(object, className, timer); }, addObject: function(object, className, timer) { if(object) { var animation = { object: object, className: className, timer: timer }; this.objects.push(animation); } }, remove: function(object) { var objectIndex = this.removeObject(object); }, removeObject: function(object, removeClass) { if(object) { var animating = this.checkAnimating(object); if(animating !== false) { var animations = animating; for(var i = 0, maxLength = animations.length; i < maxLength; i++) { var animation = animations[i]; this.stopTimer(animation); if(removeClass) { jQuery(animation.object).removeClass(animation.className); } var indexNumber = jQuery.inArray(animation, this.objects); if(indexNumber >= 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 = bpApp.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 = bpApp.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 = bpApp.createCallBack(null, removeAnimationClass, [obj, animationClass]); var timer = window.setTimeout(callBack, duration); this.animating.add(obj, animationClass, timer); } }; bpApp.navigation = function(scrollContainer, container){ var navigation = bpApp.navigation; this.number = (typeof navigation.number === 'undefined')? navigation.number = 0 : (++navigation.number); this.id = 'navigation_panel_' + this.number; this.scrollContainer = scrollContainer; this.container = container; }; bpApp.navigation.prototype = bpApp.extendClass( bpApp.htmlBuilder, { constructor: bpApp.navigation, 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.createButton('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.createObject('div', self.id + '_nav_' + number + level, 'group-nav-container', '', self.scrollContainer); var navContainer = self.createObject('nav', self.id + '_nav_container', 'main-nav-container', '', groupPanel); var ul = self.createObject('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 childOptions = element.querySelectorAll('#' + element.id + ' > ul > li'); var option = { element: element, 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; } } } } return { group: group, selected: selected }; }, setup: function(optionsArray) { this.createPanel(); this.createGroup(optionsArray); }, createCallBack: function(group) { return bpApp.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; if(groups.length) { this.selectGroup(groups[0]); } }, 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 = bpApp.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 callBack = this.createCallBack(option.child); a.onclick = 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); }, checkSelection: function(option) { var currentPage = this.currentPage; currentPage = currentPage.split('&')[0]; var url = (typeof option.url === 'string')? option.url.replace('/', '') : null; if(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; var pattern = /\//g; var pageSlashCount = path.match(pattern); if(pageSlashCount.length > 1) { var start = path.indexOf("/") + 1; var length = path.indexOf("/", 2) + 1; var end = length - start; var tmpLocation = path.substring(start, end); } else { var tmpLocation = path.substring(path.lastIndexOf("/") + 1); } return tmpLocation.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.slideController = function(container, onNumber) { var constructor = bpApp.slideController; this.number = (typeof constructor.number === 'undefined')? constructor.number = 0 : (++constructor.number); this.id = 'bp_slide_controller_' + this.number; this.animationMode = 'fade'; this.lastSelectedOption = null; this.onNumber = typeof onNumber !== 'undefined' ? onNumber: 0; this.optionsArray = []; this.timer = null; this.container = container; }; bpApp.slideController.prototype = bpApp.extendClass(bpApp.htmlBuilder, { constructor: bpApp.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 option = {}; var number = this.optionsArray.length; option.optionNumber = number; option.nameId = element.id; option.element = element; option.crumbId = this.id + '_crumb_number_' + number; option.selected = 'no'; option.setup = false; this.optionsArray.push(option); this.createCrumb(option); return option; }, resetContainer: function() { var container = document.getElementById(this.container); container.innerHTML = ''; }, setup: function() { this.setupControlPanel(); this.setupOptions(); this.addKeyboardSupport(); }, setupControlPanel: function() { var self = this; var button = this.createButton('a', '', 'arrow arrow_left', '', function(){ self.selectPreviousOption(); }, this.container); button = this.createButton('a', '', 'arrow arrow_right', '', function(){ self.selectNextOption(); }, this.container); var numberContainer = this.createObject('div', this.id + '_crumb_container', 'number_crumb_container', '', this.container); var slideTab = this.createObject('div', this.id + '_slide_tab', 'slideTab', '', numberContainer); }, 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) { var tmpNumber = 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 element = jQuery(option.element); var bg = element.data('background-image'); if(bg) { element.css('background-image', bg); } else { var src = element.data('src'); if(src) { var img = element.find('.image_container > img'); img.attr('src', 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.createButton('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(); for(var i = 0, maxLength = this.optionsArray.length; i < maxLength; i++) { var option = this.optionsArray[i], nameId = option.nameId, panel = document.getElementById(nameId); if(panel) { if(tmpOption.nameId === nameId) { this.loadSlideSrc(option); panel.style.zIndex = 2; panel.style.position = (this.setAsBg === true)? 'absolute' : 'relative'; bpApp.animate.show(panel, animations.selecting, 1000); } else { if(this.lastSelectedOption && this.lastSelectedOption.nameId === nameId) { panel.style.zIndex = 1; panel.style.position = 'absolute'; panel.style.top = '0px'; bpApp.animate.hide(panel, animations.removing, 1000); } } } 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 = document.getElementById(tmpOption.nameId); 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); }}); bpApp.slideShow = function(container, defaultPathUrl, setAsBg, onNumber) { var constructor = bpApp.slideShow; this.number = (typeof constructor.number === 'undefined')? constructor.number = 0 : (++constructor.number); this.id = 'bp_spotlight_' + this.number; 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; }; bpApp.slideShow.prototype = bpApp.extendClass(bpApp.slideController, { constructor: bpApp.slideShow, addOption: function(option) { var number = this.optionsArray.length; option.optionNumber = number; option.nameId = this.id + '_option_number_' + number; option.crumbId = this.id + '_crumb_number_' + number; option.selected = 'no'; this.optionsArray.push(option); this.createCrumb(option); var panel = 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) { this.resetContainer(); this.setupControlPanel(); this.setupOptions(optionsArray); this.addKeyboardSupport(); }, createOptionPanel: function(tmpOption, container) { if(tmpOption && tmpOption.url) { container = this.createLink('a','','','',tmpOption.url,container); } var spotlightContainer = this.createObject('div', tmpOption.nameId, 'splash_container', '', container); spotlightContainer.onmouseover = bpApp.createCallBack(this, this.stopTimer); spotlightContainer.onmouseout = bpApp.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.createObject('div','','image_container','',spotlightContainer); var image = this.createImage('','',wpThemeUrl + this.defaultPathUrl + imageURL,tmpOption.alt,imageContainer); } } var articleContainer = this.createObject('article', '', 'content_container ' + tmpOption.className, '', spotlightContainer); var animation = this.getAnimation(); var sectionContainer = this.createObject('section', '', 'spotlight dark ' + animation, '', articleContainer); var h2 = this.createObject('h2', '', 'title_text blue', tmpOption.title, sectionContainer); var text = this.createObject('div', '', 'light', tmpOption.content, sectionContainer); }}); var spotlightPanel = bpApp.slideShow;bpApp.officeSlideController = function(container, onNumber) { var constructor = bpApp.officeSlideController; this.number = (typeof constructor.number === 'undefined')? constructor.number = 0 : (++constructor.number); this.id = 'bp_slide_controller_' + this.number; this.animationMode = 'fade'; this.lastSelectedOption = null; this.onNumber = typeof onNumber !== 'undefined' ? onNumber: 0; this.optionsArray = []; this.timer = null; this.container = container; }; bpApp.officeSlideController.prototype = bpApp.extendClass(bpApp.slideController, { constructor: bpApp.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.lazyAnimator = function(attrName, cacheElements) { this.attrName = (typeof attrName === 'string')? attrName : 'data-animate'; this.cacheElements = cacheElements === true? true : false; this.elements = []; this.setup(); }; bpApp.lazyAnimator.prototype = { constructor: bpApp.lazyAnimator, 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() { var elements; try { elements = document.querySelectorAll('[' + this.attrName + ']:not(.animated)'); } catch(e) {} if(elements) { return Array.prototype.slice.call(elements); } return []; }, 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; for(var i = 0, maxLength = optionsArray.length; i < maxLength; i++) { var element = optionsArray[i]; if(element) { var ele = jQuery(element); 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) { this.animate(element); } else if(optionBottom >= viewPortTop && optionBottom <= viewPortBottom) { this.animate(element); } } } } return this; }, animate: function(element) { var ele = jQuery(element); var animation = ele.attr(this.attrName); animation = animation || 'fadeInSlow'; ele.addClass(animation); ele.addClass('animated'); this.removeElement(element); return this; }, setupEvents: function() { var ele = jQuery(document.body); 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.scrollHeader = function(header, miniHeaderClass, distance) { this.header = (typeof header === 'string')? document.getElementById(header) : header; this.miniClassName = miniHeaderClass; this.headerMinified = false; this.distance = (typeof distance !== 'undefined')? distance : 300; this.setup(); }; bpApp.scrollHeader.prototype = { constructor: bpApp.scrollHeader, setup: function() { var header = this.header; if(!header) { return false; } this.checkScroll(); this.addScroll(); }, addScroll: function() { var child = this; var tmpFunction = function(){ child.checkScroll(); }; jQuery(window).on('scroll', tmpFunction); jQuery(window).on('resize', tmpFunction); }, checkScroll: function() { var wind = jQuery(window); var scrollTop = wind.scrollTop(), documentHeight = (jQuery(document).height() - wind.height()); if(scrollTop >= this.distance) { if(this.headerMinified === false) { jQuery(this.header).addClass(this.miniClassName); this.headerMinified = true; } } else { if(this.headerMinified === true) { this.headerMinified = false; jQuery(this.header).removeClass(this.miniClassName); } } }, scrollToTop: function() { window.scrollTo(window.scrollX, 0); }}; bpApp.videoPanel = function(video, callbackFunction, container){ this.number = (typeof bpApp.videoPanel.number === 'undefined')? bpApp.videoPanel.number = 0 : (++bpApp.videoPanel.number); this.id = 'video_panel_' + this.number; this.video = video; this.callbackFunction = callbackFunction; this.container = container; }; bpApp.videoPanel.prototype = bpApp.extendClass( bpApp.htmlBuilder, { constructor: bpApp.videoPanel, remove: function() { var panel = document.getElementById(this.id); if(panel) { panel.parentNode.removeChild(panel); } panel = document.getElementById(this.id + '_shadow'); if(panel) { panel.parentNode.removeChild(panel); } }, createPanel: function() { var panel = this.createObject('div', this.id, 'panel video-panel slideIn', '', this.container); var title = this.createObject('div', this.id + '_title_container', 'title-container', '', this.id); var titleLabel = this.createObject('h1', '', 'title title-text left dark', this.video.title, title); var container = this.createObject('div', '', 'body-container', '', this.id); var self = this; window.setTimeout(function(){ self.createIframe(self.id + '_iframe', '', self.video.source, container); }, 500); var buttons = this.createObject('div', this.id + '_button_container', 'button-container', '', this.id); var button1 = this.createButton('button', this.id + '_button_1', 'bttn bttn-decline', 'Close', function(){ self.decline(); }, buttons); }, setup: function() { this.createPanel(); }, decline: function() { this.display(); }, display: function() { this.toggleDisplay(); }, createShadow: function() { var self = this; var backdrop = this.createButton('div', this.id + '_shadow','panel-shadow video-shadow fadeIn','', function(){ self.decline(); }, document.body); this.createButton('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.localData = { storage: null, setup: function() { this.supported = this.checkSupport(); if(this.supported === true) { this.storage = window.localStorage; } }, supported: false, checkSupport: function() { if(typeof window.Storage !== "undefined" && window.localStorage) { return true; } return false; }, get: function(key) { if(this.supported === true) { var value = this.storage.getItem(key); if(typeof value !== 'undefined') { return JSON.parse(value); } } return null; }, set: function(key, value) { if(this.supported === true) { value = JSON.stringify(value); this.storage.setItem(key, value); } }, clear: function() { if(this.supported === true) { this.storage.clear(); } }}; bpApp.formValidator = { errorClass: 'error_val', acceptedClass: 'success_val', isValidEmail: function(email) { var regExp = /^(([^<>()[\]\\.,;:\s@\"]+(\.[^<>()[\]\\.,;:\s@\"]+)*)|(\".+\"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/; return regExp.test(email); }, isValidPhone: function(phone) { var pattern = /[^0-9]/g; phone = phone.toString().replace(pattern, ''); if(!isNaN(phone)) { if(phone.substr(0, 1) === '1') { phone = phone.substring(1); } if(phone.length == 10 && phone.substr(0, 3) !== '555') { return true; } } return false; }, isValidDate: function(date) { if(typeof date !== 'undefined') { var result = new Date(date).toDateString(); if(result != 'Invalid Date') { return true; } } return false; }, isRadioChecked: function(groupName) { if(typeof groupName !== 'undefined') { var radios = document.getElementsByName(groupName); if(radios && radios.length) { for(var i = 0, maxLength = radios.length; i < maxLength; i++) { var radio = radios[i]; if(radio.type === 'radio' && radio.checked) { return true; } } } } return false; }, isValidField: function(val) { if(typeof val !== 'undefined' && val != '') { return true; } return false; }, validateForm: function(form) { var self = this; var errors = { number: 0, message: '' }; var updateError = function(field) { var upperCaseWords = function(str) { var pattern = /\w\S*/g; return str.replace(pattern, function(txt){return txt.charAt(0).toUpperCase() + txt.substr(1).toLowerCase();}); }; var fieldName = field.attr('name') || field.attr('id'); if(fieldName) { var pattern = /[^a-zA-Z1-9]/g; fieldName = fieldName.replace(pattern, ' '); fieldName = upperCaseWords(fieldName); } errors.number++; errors.message += fieldName + " is empty or invalid.
"; }; if(typeof form == 'object') { var previousRadios = []; jQuery(form).find('input.val, select.val, textarea.val').each(function(i) { var field = jQuery(this); var node = field[0]; var nodeName = node.nodeName.toLowerCase(); if(nodeName === 'input' && field.attr('type') === 'radio') { var groupName = field[0].name; if(jQuery.inArray(groupName, previousRadios) == '-1') { previousRadios.push(groupName); var validField = self.isRadioChecked(groupName); if(validField == false) { updateError(field); } } } else { var validField = self.validateField(field); if(validField == false) { updateError(field); } } }); } return errors; }, validateField: function(field) { var self = this; var showValidateStyle = function(field, isValid) { if(isValid == true) { field.removeClass(self.errorClass); field.addClass(self.acceptedClass); return true; } else { field.addClass(self.errorClass); field.removeClass(self.acceptedClass); return false; } }; var returnValue = false; var field = jQuery(field); if(field) { var val = field.val(); var placeholder = field.attr('placeholder') || field.attr('alt'), type = field.attr('type'); if(field.attr('type') === 'checkbox') { var validField = field.is(':checked'); returnValue = showValidateStyle(field, validField); } else if(!self.isValidField(val) || val == placeholder) { returnValue = showValidateStyle(field, false); } else if(field.hasClass('field_email') || type === 'email') { var validField = self.isValidEmail(val); returnValue = showValidateStyle(field, validField); } else if(field.hasClass('field_phone') || type === 'tel') { var validField = self.isValidPhone(val); returnValue = showValidateStyle(field, validField); } else if(field.hasClass('field_date') || type === 'date') { var validField = self.isValidDate(val); returnValue = showValidateStyle(field, validField); } else { returnValue = showValidateStyle(field, true); } } return returnValue; }, resetForm: function(form) { if(form && typeof form === 'object') { var elements = form.elements; if(elements) { for(var i = 0, maxLength = elements.length; i < maxLength; i++) { var element = elements[i]; this.removeStyles(element); } } } }, removeStyles: function(field) { var field = jQuery(field); if(field) { field.removeClass(this.errorClass); field.removeClass(this.acceptedClass); } } }; var bpMain = { setupAppDefault: function() { this.setupMinifyNavigation(); this.setupFancyBox(); this.setupServicesIframe(); this.setupAutoScroll(); this.addVideoPanels(); this.newStickyFooter(); this.setupNavEvents(); this.setupGoogleMaps(); this.modalFormReset(); this.formCheckBoxYes(); this.setupPeekThrough(); }, enableSlideShow: function(type) { type = type || 'modern'; switch(type) { case 'controller': this.setupSlideController(); break; case 'modern': this.setupSlideshow1(); break; case 'inner': this.setupSlideshow2(); break; case 'reviews': this.setupSlideshow3(); break; case 'nivo': this.setupNivoSlider(); break; } }, setupSlideController: function() { var spotlight = new bpApp.slideController('slides'); spotlight.duration = 7000; spotlight.setup(); }, setupSlideshow1: function() { var optionsArray = [ { title: '', content: '', className: '', image: '1.jpg', alt: '', url: '', crumbContent: '' }, { title: '', content: '', className: '', image: '2.jpg', alt: '', url: '', crumbContent: '' } ]; var startNumber = Math.round(Math.random() * (optionsArray.length - 1)); var spotlight = new bpApp.slideShow('slides', '/images/', true, startNumber); spotlight.duration = 7000; spotlight.setup(optionsArray); }, setupSlideshow2: function() { var optionsArray = [ { title: '', content: '', className: '', image: 'internal1.jpg', alt: '', url: '', crumbContent: '' }, { title: '', content: '', className: '', image: 'internal2.jpg', alt: '', url: '', crumbContent: '' }, { title: '', content: '', className: '', image: 'internal3.jpg', alt: '', url: '', crumbContent: '' } ]; var startNumber = Math.round(Math.random() * (optionsArray.length - 1)); var spotlight = new bpApp.slideShow('slides', '/images/slideshow/', true, startNumber); spotlight.duration = 7000; spotlight.setup(optionsArray); }, setupSlideshow3: function() { var optionsArray = [ { title: '', content: '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

', className: '', image: '', alt: '', url: '', crumbContent: '' }, { title: '', content: '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

', className: '', image: '', alt: '', url: '', crumbContent: '' }, { title: '', content: '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

', className: '', image: '', alt: '', url: '', crumbContent: '' } ]; var startNumber = Math.round(Math.random() * (optionsArray.length - 1)); var spotlight = new bpApp.slideShow('reviews', '', false, startNumber); spotlight.duration = 7000; spotlight.setup(optionsArray); }, addVideoPanels: 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.viewVideo(title, src); }); } }); }, viewVideo: function(title, src) { var vid = { title: title, source: src }; var panel = new bpApp.videoPanel(vid, '', document.body); panel.setup(); panel.display(); }, 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; }); }, setupMinifyNavigation: function() { var scroller = new bpApp.scrollHeader('navarea', 'sticky', 400); }, setupAutoScroll: function() { var exceptions = ['myModal']; 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; } } } }); }, setupServicesIframe: function() { var IframeLoader = function(id) { this.id = id; this.element = null; this.document = null; }; IframeLoader.prototype = { constructor: IframeLoader, setup: function() { this.element = document.getElementById(this.id); if(this.element) { this.addEvents(); } }, getDocument: function() { var ifrm = this.element; if(this.document === null && ifrm) { this.document = ifrm.contentDocument? ifrm.contentDocument : ifrm.contentWindow.document; } return this.document; }, setHeight: function() { var getHeight = function(doc) { var body = doc.body, html = doc.documentElement; var height = Math.max( body.scrollHeight, body.offsetHeight, html.clientHeight, html.scrollHeight, html.offsetHeight ); return height; }; var ifrm = this.element; var doc = this.getDocument(); if(doc) { ifrm.style.visibility = 'hidden'; ifrm.style.height = getHeight(doc) + "px"; ifrm.style.visibility = 'visible'; } window.setTimeout(function() { ifrm.style.height = getHeight(doc) + "px"; }, 120); }, resetHeight: function() { var ifrm = this.element; ifrm.style.height = 'auto'; }, addEvents: function() { var self = this; jQuery(this.element).on('load', function() { self.setHeight(); }); jQuery(window).on('resize', function() { self.resetHeight(); self.setHeight(); }); } }; var iframeLoader = new IframeLoader('servicesIframe'); iframeLoader.setup(); }, newStickyFooter: function () { jQuery(function($) { var windowHeight = $(window).height(); var bodyHeight = $('body').height(); if (bodyHeight <= windowHeight) { var missHeight = windowHeight - bodyHeight; var contentHeight = missHeight + $('#main').height(); $('#main').css('min-height', contentHeight); } }); }, setupGoogleMaps: function(attrName) { var setupMaps = function() { attrName = attrName || 'data-map-src'; var elements = jQuery('iframe[' + attrName + ']').each(function(index, element) { element = jQuery(element); var src = element.attr(attrName); if(src) { element.addClass('fadeIn'); element.attr('src', src); } }); }; window.setTimeout(setupMaps, 5000); }, setupCoolMap: function() { jQuery('.map-overlay').click(function() { jQuery(this).fadeOut(); }); jQuery('.map-area').mouseleave(function() { jQuery('.map-overlay').fadeIn(); }); }, modalFormReset: function() { jQuery('body').click(function() { if (!jQuery('.modal').hasClass('in')) { jQuery('.modal input').removeClass('error_val'); jQuery('.modal textarea').removeClass('error_val'); jQuery('.modal input').removeClass('success_val'); jQuery('.modal textarea').removeClass('success_val'); document.getElementById("custom_form2").reset(); jQuery('#custom_form2').removeClass('form_failure'); } }); }, formCheckBoxYes: function() { jQuery("input.toggle").val("No"); jQuery('input.toggle').on('change', function() { if ( jQuery(this).is(':checked') ) { jQuery("input.toggle").val('Yes'); } else { jQuery("input.toggle").val("No"); } }); }, setupPeekThrough: function() { jQuery('section[data-type="background"]').each(function(){ var $bgobj = jQuery(this); jQuery(window).scroll(function() { var yPos = -(jQuery(window).scrollTop() / $bgobj.data('speed')); var coords = '50% '+ yPos + 'px'; $bgobj.css({ backgroundPosition: coords }); }); }); }, 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'}); } }}; var appNav = new bpApp.navigation('nav-scroll-container', 'main-nav-container'); appNav.setup(); jQuery(function() { if(wpPageID === '2') { } else { } bpMain.enableSlideShow('controller'); bpMain.setupCoolMap(); var lazyAnimator = new bpApp.lazyAnimator(); bpMain.setupAppDefault(); });