
!function(){var root=this;var defaults={el:'#vvmRoot'};var VehicleTemplateRenderer=function(data,mediator,options){this.data=data;this.options=$.extend({},defaults,options);this.$el=$(this.options.el);this.viewportWidth=this.$el.parent().width();this.$el.width(data.vehicles.length*this.viewportWidth);this.mediator=mediator;this.mediator.subscribe('vehicleImageChange',this.onVehicleImageChange,this);this.mediator.subscribe('imageResourceUnavailable',this.onResourceUnavailable,this);this.bbtemplate=Handlebars.compile($('#billboardTemplate').html());this.template=this.options.template||Handlebars.compile($('#vehicleTemplate').html());this.currentPosition=this.findStart();this.$el.css({"margin-left":-(this.currentPosition*this.viewportWidth)});this.sendNotify(this.currentPosition);this.suppressImageChange=true;};VehicleTemplateRenderer.prototype={render:function(){var templatedHTML=this.template(this.data);this.$el.html(templatedHTML);this.$heroes=this.$el.find('.image-holder');this.$backgrounds=this.$el.find('.vehicle-background');this.$disclaimers=this.$el.find('.nameplate-disclaimer');},findStart:function(){var len=this.data.vehicles.length;while(len--){if(this.data.vehicles[len].current===true){return len;}}
return 0;},getCurrentVehicle:function(){return this.data.vehicles[this.currentPosition];},slide:function(where){var where=where||this.currentPosition;this.$el.animate({"margin-left":-(where*this.viewportWidth)},900,'inOutQuad',this.sendNotify.bind(this,where));},onVehicleImageChange:function(payload){if(this.suppressImageChange){this.suppressImageChange=false;return;}
$(this.$heroes[this.currentPosition]);var vehicleImageLoader=new EP2.ResourceLoader({url:payload.images,callback:this.renderImages.bind(this)}).load();var bgImage=this.getCurrentVehicle().backgroundImagePath[payload.index];this.currentImageIndex=payload.index;var currentImage=$(this.$backgrounds[this.currentPosition]).css('background-image');var currentBg=$(this.$backgrounds[this.currentPosition]);if(bgImage!==('null'||null)){if(currentImage.indexOf(bgImage)===-1){bgImage=[bgImage];currentBg.stop(true,true).fadeOut(350);var backgroundImageLoader=new EP2.ResourceLoader({url:bgImage,callback:this.updateBackgroundImage.bind(this)}).load();}}else{currentBg.css('background-image','none');}
var disclaimer=$(this.$disclaimers[this.currentPosition]);var color=this.getCurrentVehicle().disclaimerTextColor[0];if(color!=null){disclaimer.css('color','#'+color);}else{disclaimer.css('color','');}},onResourceUnavailable:function(){if(this.suppressImageChange){this.suppressImageChange=false;return;}
$(this.$heroes[this.currentPosition]).stop(true,true).fadeOut();},renderImages:function(images){var hero=$(this.$heroes[this.currentPosition]),len=images.length,i=0;hero.empty();for(i;i<len;i++){hero.append(images[i].resource);}
hero.stop(true,true).fadeIn();},updateBackgroundImage:function(images){var bg=$(this.$backgrounds[this.currentPosition]);bg.css('background-image','url("'+images[0].url+'")');bg.css('background-size','cover');bg.stop(true,true).fadeIn(750);},sendNotify:function(index){this.mediator.notify('vehicleChange',{vehicleIndex:index,data:this.data.vehicles[index]});},onPointerClicked:function(payload){var oldPos=this.currentPosition;if(payload.direction==='right'){this.currentPosition=this.currentPosition>0?this.currentPosition-1:(this.data.vehicles.length-1);}else{this.currentPosition=this.currentPosition<this.data.vehicles.length-1?this.currentPosition+1:0;}
if(oldPos!=this.currentPosition)
this.timeout=setTimeout(this.slide.bind(this),750);},billBoardRender:function(bbtemplateHTML){this.el=$('#billboard');if(bootstrapVehicleData.vehicles[0].billBoardImagePath===null){this.el.remove();return;}
this.el.html(bbtemplateHTML);$('#promoCarousel').css('display','none');this.el.delay(250).animate({height:517},250,function(){$('#promoCarousel').css({top:556}).fadeIn(250);$('#ctaDetails').insertAfter('#billboard > div');});}};root.VehicleTemplateRenderer=function(data,options){return new VehicleTemplateRenderer(data,options);};}.call(EP2);
