var RecommendationsEventsDispatcher=function(){this.pushLoadEvent=function(n){this.pushVisibleItemsEvent("recommendations.carousel.load",this.extractEventData(n))},this.pushScrollForwardEvent=function(n){this.pushVisibleItemsEvent("recommendations.carousel.scroll.forward",this.extractEventData(n))},this.pushScrollBackwardEvent=function(n){this.pushVisibleItemsEvent("recommendations.carousel.scroll.backward",this.extractEventData(n))},this.pushVisibleItemsEvent=function(n,t){var i=dataLayer||[];i.push({event:n,visibleCards:(t||[]).join(",")})},this.extractEventData=function(n){return!n||!n.items||!n.items.length?[]:n.items.map(function(t,i){var r=$(t);return[r.attr("data-custom"),n.firstVisibleCardNumber+i,r.attr("data-correlation"),r.attr("data-rectype"),r.attr("data-recsrc")].join()})}},JobsMegaStripeEventsDispatcher=function(){this.pushLoadEvent=function(n){this.pushVisibleItemsEvent("jobsmegastripe.carousel.load",n)},this.pushAutoScrollForwardEvent=function(n){this.pushVisibleItemsEvent("jobsmegastripe.carousel.player.autoscroll",n)},this.pushPlayerStateChange=function(n,t){this.pushVisibleItemsEvent("jobsmegastripe.carousel.player."+t.playerState,n,t)},this.pushPlayerReady=function(n){this.pushVisibleItemsEvent("jobsmegastripe.carousel.player.ready",n)},this.pushScrollForwardEvent=function(n){this.pushVisibleItemsEvent("jobsmegastripe.carousel.scroll.forward",n)},this.pushScrollBackwardEvent=function(n){this.pushVisibleItemsEvent("jobsmegastripe.carousel.scroll.backward",n)},this.pushVisibleItemsEvent=function(n,t,i){i=i||{};var r=dataLayer||[];r.push({event:n,cards:t.cardData,currentCard:t.currentCard,playerState:t.playerState,playerData:i})}},HomepageCarouselViewModel=function(n,t,i,r){var u=this,f=ko.observable(0),e,h,c,o,s;u.itemCount=n,u.left=ko.observable(0),u.animating=ko.observable(0),u.focusAfterAnimate=null,u.analyticsEventsDispatcher=null,u.tabHasFocus=!0,e=i||!1,u.youtubeVideos={},u.jobsMegaStripeTimeoutMilliseconds=5e3,u.defaultTimoutMilliseconds=3e3,u.normalContainerWidth=905,u.miniStripeContainerWidth=543,u.megaStripeContainerWidth=465,u.miniJobStripeContainerWidth=679,u.MotorsStripeContainerWidth=708,u.PropertyStripeContainerWidth=708,u.normalCardBlockSize=5,u.jobsStripeCardBlockSize=4,u.miniStripeCardBlockSize=3,u.sweetPropertiesCardBlockSize=1,u.motorsCardBlockSize=4,u.propertyStripeCardBlockSize=4,u.InitAnalyticsEventDispatcher=function(n){var i=$(n).attr("data-parameters"),t;i&&(t=$.parseJSON(i),t&&t.analyticsEventDispatcherClassName&&typeof window[t.analyticsEventDispatcherClassName]=="function"&&(u.analyticsEventsDispatcher=new window[t.analyticsEventDispatcherClassName]))},u.InitAnalyticsEventDispatcher(t),h=function(n){if(n=n||!1,!u.hasNext())return!1;var r=u.left(),t=u.getContainerWidth(),i=r-t,e=i-t*2;u.lazyLoadImages(e),u.left(i),f(f()+1),u.analyticsEventsDispatcher&&(u.isJobsMegaStripe()&&n?u.analyticsEventsDispatcher.pushAutoScrollForwardEvent(u.getVisibleCardsData()):u.analyticsEventsDispatcher.pushScrollForwardEvent(u.getVisibleCardsData()))},c=function(){if(!u.hasPrevious())return!1;var n=u.left(),t=u.getContainerWidth(),i=n+t;u.left(i),f(f()-1),u.analyticsEventsDispatcher&&u.analyticsEventsDispatcher.pushScrollBackwardEvent(u.getVisibleCardsData())},u.clickNext=function(){e=!1,u.pauseAllVideos(),h()},u.clickPrevious=function(){e=!1,u.pauseAllVideos(),c()},u.clearAnalyticsLoadEvent=function(){u.loadEventTimeout&&clearTimeout(u.loadEventTimeout)},u.tapHandler=function(n){var i=$(n.target).parents("div.watchlist"),t,r;i&&i.length>0||(n.preventDefault(),t=$(n.target).parents("div.supergrid-listing"),t.hasClass("touch-hover")?t.hasClass("touch-hover")&&(window.location.href=t.parent().attr("href")):(r=$("div.supergrid-listing"),r.removeClass("touch-hover"),t.addClass("touch-hover")))},u.swipeRightHandler=function(){u.clickPrevious(),u.sendDataLayerSwipeEvent(t,"right")},u.swipeLeftHandler=function(){u.clickNext(),u.sendDataLayerSwipeEvent(t,"left")},u.keyDown=function(n,t){if(u.isAnimating())return!1;if((n!=9||t)&&n!=39){if((n==9&&t||n==37)&&u.previousCard())return!1}else if(u.nextCard())return!1;return!0},u.focusCard=function(){var o=u.getFocusedCard(),r=u.getFocusedCardNumber(o),h=u.getFocusedCardBlockIdx(r),s=u.getCarouselCardBlockSize(),i,e,n;return o?(i=f()*s+1,e=(f()+1)*s,r<i||r>e?(r<i?(n=$(t).find(".tile"+i)[0],n.focus()):(n=$(t).find(".tile"+i)[0],n.focus(),n=$(t).find(".tile"+e)[0],n.focus()),!0):void 0):(u.clearFocus(),!1)},u.clearFocus=function(){var n=$("div.supergrid-listing");n.removeClass("touch-hover")},u.hasFocusedCard=function(){return u.getFocusedCard()},u.getFocusedCard=function(){var n=$(t).find(".:focus");return!n[0]||!n[0].className?!1:n[0].className.indexOf("tile")<0&&(n=n.parent(),!n[0]||!n[0].className)?!1:n[0].className.indexOf("tile")<0?!1:n},u.getFocusedCardNumber=function(n){var n=n||u.getFocusedCard(),t;return n?(t=n[0].className.replace("tile",""),!t)?!1:(t=parseInt(t),t<0)?!1:t:!1},u.getFocusedCardBlockIdx=function(n){var n=n||u.getFocusedCardNumber(),t,i;return n?(t=u.getCarouselCardBlockSize(),i=parseInt((n-1)/t),i):!1},u.isAnimating=function(){return u.animating},u.focusAfterAnimation=function(n){u.animating=!0,u.focusAfterAnimate=n},u.afterAnimate=function(){u.animating=!1,u.focusAfterAnimate&&(u.focusAfterAnimate.focus(),u.focusAfterAnimate=null)},u.nextCard=function(){var r=u.getFocusedCard(),n=u.getFocusedCardNumber(r),f=u.getFocusedCardBlockIdx(n),e=u.getCarouselCardBlockSize(),i;return r?(i=$(t).find(".tile"+(n+1))[0],i)?(n>0&&n>=(f+1)*e?(u.clickNext(),u.focusAfterAnimation(i)):i.focus(),!0):!1:!1},u.previousCard=function(){var r=u.getFocusedCard(),n=u.getFocusedCardNumber(r),e=u.getFocusedCardBlockIdx(n),f=u.getCarouselCardBlockSize(),i;return r?(i=$(t).find(".tile"+(n-1))[0],i)?n>f&&!u.hasPrevious()?!1:(n>1&&n<=e*f+1?(u.clickPrevious(),u.focusAfterAnimation(i)):i.focus(),!0):!1:!1},u.lazyLoadImages=function(n){var i=-n,r=function(n,t){var r=$(t).parent(),u=0;return(r&&r.position()&&r.position().left&&(u=r.position().left),u>i)?!1:!0};$(t).find('img.image-lazy-load:not([data-image-url=""]), div.image-lazy-load:not([data-image-url=""])').filter(r).each(function(n,t){var i=$(t),r=i.attr("data-image-url");i.attr("data-image-url",""),i.is("img")?i.attr("src",r):i.css({"background-image":'url("'+r+'")'})})},u.getCarouselCardBlockSize=function(){var n=1;return n=u.isMegaStripe()?u.sweetPropertiesCardBlockSize:u.isMiniStripe()?u.miniStripeCardBlockSize:u.isJobsStripe()?u.jobsStripeCardBlockSize:u.isMotorsStripe()?u.motorsCardBlockSize:u.isPropertyStripe()?u.propertyStripeCardBlockSize:u.normalCardBlockSize},u.getCarouselCardBlockCount=function(){var n=u.getCarouselCardBlockSize(),t;return n<=0&&(n=1),t=u.itemCount/n},u.getContainerWidth=function(){var n=0;return n=u.isMegaStripe()?u.megaStripeContainerWidth:u.isMiniStripe()?u.miniStripeContainerWidth:u.isJobsMiniStripe()?u.miniJobStripeContainerWidth:u.isMotorsStripe()?u.MotorsStripeContainerWidth:u.isPropertyStripe()?u.PropertyStripeContainerWidth:u.normalContainerWidth},u.getJobsVideoCardData=function(){for(var t=$(".jobs-featured-video > div > ul > li > div > div.image"),i=[],r,n=0;n<t.length;n++)r={listingId:$(t[n]).data("listing-id"),videoKey:$(t[n]).data("video-key"),position:n},i.push(r);return i},u.getJobsMegaStripeVisibleCardsData=function(){var n=u.getJobsVideoCardData(),t=n[f()];return{currentCard:t,cardData:n}},u.getVisibleCardsData=function(){if(u.isJobsMegaStripe())return u.getJobsMegaStripeVisibleCardsData();var r=u.getCarouselCardBlockSize(),n=f()*r+1,i=$(t).find(".tile"+n)[0],e=[];return i?(visibleSiblings=$(i).nextUntil(".tile"+(n+r),"a").toArray(),e=[i].concat(visibleSiblings)):n=0,{firstVisibleCardNumber:n,items:e}},u.isMegaStripe=function(){return typeof $(t)[0]=="undefined"?!1:t.id=="MegaStripe"||t.id=="SweetProperties"||t.id=="JobsMarketingSection_FeaturedVideoJobsMegaStripeTile"||$(t).hasClass("mega-stripe-widget")},u.isMiniStripe=function(){return $(t).hasClass("mini-stripe")},u.isJobsStripe=function(){return $(t).hasClass("jobs-stripe")},u.isJobsMegaStripe=function(){return $(t).hasClass("mega-stripe-jobs-widget")},u.isJobsMiniStripe=function(){return $(t).hasClass("jobs-mini-stripe")},u.isMotorsStripe=function(){return $(t).is("#RelatedListingsCarousel")},u.isPropertyStripe=function(){return $(t).is("#PropertyRelatedListingsCarousel")},u.isMobileDevice=function(){return/Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(navigator.userAgent)},u.onPlayerStateChange=function(n){var t,i;u.analyticsEventsDispatcher&&(t=u.getPlayerState(n.data),t!=="NA")&&(i={playerState:t,playTime:n.target.getCurrentTime(),videoLength:n.target.getDuration(),videoId:n.target.getVideoData().video_id},u.analyticsEventsDispatcher.pushPlayerStateChange(u.getVisibleCardsData(),i))},u.onPlayerReady=function(){u.analyticsEventsDispatcher&&u.analyticsEventsDispatcher.pushPlayerReady(u.getVisibleCardsData())},u.getPlayerState=function(n){return n===0?"ended":n===1?"playing":n===2?"paused":"NA"},u.sendDataLayerSwipeEvent=function(n,t){n.length>0&&(n=n[0]);var i=dataLayer||[];i.push({event:"custom.carousel.swipe","gtm.element.id":n.id,"gtm.element.classes":n.className,"gtm.swipedirection":t})},u.playVideo=function(n,t){if(e=!1,typeof YT=="undefined")$(document).append('<script src="https://www.youtube.com/iframe_api"><\/script>'),window.onYouTubeIframeAPIReady=function(){u.playVideo.call(u,n,t)};else{var i=$(t.currentTarget),r=i.attr("data-video-key");u.youtubeVideos[r]=new YT.Player(i.find(".center-cropped")[0],{videoId:r,events:{onError:function(){$.ajax({url:"/API/Ajax/embeddedcontent.aspx?embeddedContentType=YouTube&action=logerror&embeddedContentKey="+r,complete:function(){var n=i.attr("data-listing-id");window.location.href="/Browse/Listing.aspx?id="+n}})},onReady:u.onPlayerReady,onStateChange:u.onPlayerStateChange},playerVars:{autoplay:u.isMobileDevice()?0:1,autohide:1,controls:1,modestbranding:1,rel:0,showinfo:0,fs:0}})}},u.pauseAllVideos=function(){for(key in u.youtubeVideos)typeof u.youtubeVideos[key]=="object"&&u.youtubeVideos[key].pauseVideo()},u.cardBlockCount=ko.computed(function(){return u.getCarouselCardBlockCount()}),u.hasNext=ko.computed(function(){return f()<u.getCarouselCardBlockCount()-1}),u.hasPrevious=ko.computed(function(){return f()>0}),u.analyticsEventsDispatcher&&(u.loadEventTimeout&&clearTimeout(u.loadEventTimeout),u.loadEventTimeout=setTimeout(function(){u.analyticsEventsDispatcher.pushLoadEvent(u.getVisibleCardsData())},r?0:2e3)),o=u.isJobsMegaStripe()===!0?u.jobsMegaStripeTimeoutMilliseconds:u.defaultTimoutMilliseconds,s=function(){e&&(u.tabHasFocus&&h(!0)!==!1?setTimeout(s,o):setTimeout(s,o))},$(window).focus(function(){u.tabHasFocus=!0}),$(window).blur(function(){u.tabHasFocus=!1}),e&&setTimeout(s,o)}