// Create club homepage namespace
var ClubHome = (typeof ClubHome=="object") ? ClubHome : {};

var theURL  = window.location.href;
var theClub = "mlb";
if (theURL.indexOf("c_id=")!=-1) theClub=theURL.substring(theURL.indexOf("c_id=")+5,theURL.indexOf("c_id=")+8);
theClub = theClub.toUpperCase();

ClubHome.debugMode=false;
ClubHome.log = function(msg){ if (typeof console!="undefined" && ClubHome.debugMode){ console.log("ClubHome: " + msg); }}

// 30 minute refresh
setTimeout(function(){document.location.reload(true);},1800000);

// Create club homepage js lib
bam.extend(ClubHome, {
	promotionsCarousel : {
		initCallback : function(carousel){
			// Hover button change.
			carousel.buttonNext.hover(
				function(){ $(this).css({ "background-position" :"-48px -21px" }); },
				function(){ $(this).css({ "background-position" :"-48px 0" }); }
			);
			carousel.buttonPrev.hover(
				function(){ $(this).css({ "background-position" :"0 -21px" }); },
				function(){ $(this).css({ "background-position" :"0 0" }); }
			);
			// add click events for next & previous
			carousel.buttonNext.click(function(){
				bam.tracking.track({
					async:{
						isDynamic:true,
						compName:theClub + " Homepage Promotions",
						compActivity:"Next",
						actionGen:true				
					}
				}, $(this)[0]);
			});
			carousel.buttonPrev.click(function(){
				bam.tracking.track({
					async:{
						isDynamic:true,
						compName:theClub + " Homepage Promotions",
						compActivity:"Previous",
						actionGen:true
					}
				}, $(this)[0]);
			});
			$("#promotions_pagination .p1").css({"color":"#000"});
			$("#promotions_pagination a").click(function(){
				var page = $(this).attr("class").substring(1);
				var indx = parseInt(page)*3-2;
				ClubHome.promotionsCarousel.ignoreNextLastInCallback = true;
				carousel.scroll(indx);
				$("#promotions_pagination a").css({"color" : "#b3b3b3"});
				$(this).css({"color":"#000"});
				carousel.startAuto(0);
				bam.tracking.track({
					async:{
						isDynamic:true,
						compName:theClub + " Homepage Promotions",
						compActivity:"Navigation " + page + " Click",
						actionGen:true
						}
				}, $(this)[0]);	
				return false;		
			});	
			$("#promotions li a").click(function(){
				var panel="";
				var listItems = $("#promotions .promotionsLI");
				var parentListItem=$(this).parents("li.promotionsLI");		
				if(listItems.index(parentListItem)==-1){
					//map cloned items
					listItems = $("#promotions .isClone");
					parentListItem=$(this).parents("li.isClone");
					panel=listItems.index(parentListItem);
					panel=(panel<3)?panel+10:panel-2;  
				}else{
					panel=listItems.index(parentListItem)+1;
				}	
				setTimeout(function(){
					bam.tracking.track({
						async:{
							isDynamic:false,
							compName:theClub + " Homepage Promotions",
							compActivity:"Panel " + panel + " Click",
							actionGen:true,
							mwContentId:parentListItem.find(".promotions_contentID").text()
						}
					}, $(this)[0]);
				},600);
				return true;
			});	
			$("#promotions_wrapper").css({visibility:"visible"});
		},		
		ignoreNextLastInCallback : false,
		itemLastInCallbackAfterAnimation : function (carousel, item, idx, state){
			if(ClubHome.promotionsCarousel.ignoreNextLastInCallback==false){
				$("#promotions_pagination a").css({"color" : "#b3b3b3"});
				$("#promotions_pagination .p"+(idx/3)).css({"color":"#000"});
			}
			else{
				ClubHome.promotionsCarousel.ignoreNextLastInCallback=false;
			}
		}
	}
});



// Homestand component
ClubHome.initHomestand = function(){	
	bam.loadSync("/shared/scripts/bam/bam.dom.js");	
	var series2, _isPopped=false, _isActive, _popID="", _isInit=true;		
	$("#seriesPopContainer").remove().insertAfter("#metaWrap");		
	ClubHome.loadSeriesPop = function(){		
		$("#homestandContainer, .seriesTickets a").addClass("waitCursor");	
		var gID,gIDs,tlink,dayOfWeek,date,timeLocal,homePitcher,homePitcherRecord,awayPitcher,awayPitcherRecord,curOpp,prevOpp,nextOpp,seriesPopHTML="",seriesCount=0;					
		$.ajax({
			url:		"/"+theClub.toLowerCase()+"/components/ticketing/ticket_data_"+theClub.toLowerCase()+".xml",
			timeout: 	5000,						
			error: 		function(xhr) {ClubHome.log("Error loading homestand promos: " + xhr.status + " " + xhr.statusText)},		
			async:		false,		
			success: 	function(xml) {	 				
				$("game",xml).each(function(n){						
					if(seriesCount<3){						
						gID = $(this).attr("id");
						gIDs = gID.split("_");							
						tlink = $(this).find("tlink").text();												
						dayOfWeek = $(this).find("dayOfWeek").text().substr(0,3);
						date = $(this).find("date").text();
						timeLocal = $(this).find("timeLocal").text();
						homePitcher = $(this).find("homePitcher").text() || "Pitcher TBA";
						homePitcherRecord = $(this).find("homePitcherRecord").text();
						awayPitcher = $(this).find("awayPitcher").text() || "Pitcher TBA";
						awayPitcherRecord = $(this).find("awayPitcherRecord").text();				
						curOpp = $(this).find("opponentLocale").text();
						prevOpp = $("game:eq("+(n-1)+")",xml).find("opponentLocale").text() || "";
						nextOpp = $("game:eq("+(n+1)+")",xml).find("opponentLocale").text() || "";						
						if(n==0 || curOpp != prevOpp) seriesPopHTML+='<div class="series"><div class="seriesPop">';						
						seriesPopHTML+='<div id="game_' + gIDs[0] + "_" + gIDs[1] + "_" + gIDs[2] + '">';							
						seriesPopHTML+= '<div class="seriesGameHdr primary">';
						if(tlink!==""){
							tlink = "javascript:void(openNonTIXXWindow('" + tlink + "','home'));";		
							seriesPopHTML+= '<a href="'+tlink+'"><img class="tixImg" src="/images/schedule/icon_ticket.gif"></a>';														
						}		
						seriesPopHTML+= dayOfWeek + '., ' + date.substr(0,3) + (date.substr(0,3)=="May"?" ":". "); 					
						seriesPopHTML+= date.substr(date.indexOf(" ")) + ' @ ' + timeLocal + '</div>';
						seriesPopHTML+='<div class="seriesGameContent"><div class="seriesGameContentPad"><div class="homeStarter">';				
						seriesPopHTML+=(homePitcher=="Pitcher TBA")?homePitcher:homePitcher+' ('+homePitcherRecord+')';				
						seriesPopHTML+='</div><div class="awayStarter">vs. ';
						seriesPopHTML+=(awayPitcher=="Pitcher TBA")?awayPitcher:awayPitcher+' ('+awayPitcherRecord+')';			
						seriesPopHTML+='</div></div></div></div>';
						if(curOpp != nextOpp) {
							seriesPopHTML+='</div><div class="textXs seriesLegend"><div class="moreArrows"><div class="moreArrowTop"></div><div class="moreArrowBottom"></div></div><div class="tixPurchase"><img src="http://mlb.mlb.com/images/schedule/icon_ticket.gif" align="absmiddle" style="padding-bottom:2px" /> = Purchase Tickets</div><div class="closePop">[ close ]</div></div></div>';
							seriesCount++;
						}					
					}					
				});
				$("#seriesPopData").html(seriesPopHTML);	
				// pass begin date
				ClubHome.loadSeriesPromos($("game:first",xml).attr("id").replace(/_/g,"").substr(0,8));				
			}
		});
	}	
	
	ClubHome.loadSeriesPromos = function(begin){	
		var end=begin.substr(0,4);
			end+=(begin.substr(4,2)*1+2 < 10) ? "0"+(begin.substr(4,2)*1+2) : begin.substr(4,2)*1+2;
			end+=begin.substr(6,2);						
		$.ajax({
			url:		"/ticketing-client/GamePromotion.tiksrv",
			timeout: 	5000,						
			error: 		function(xhr) {ClubHome.log("Error loading homestand promos: " + xhr.status + " " + xhr.statusText)},						
			data:		{team_id: _teamID, begin_date: begin, end_date: end},	// _teamID is set in homestand.jsp		
			async:		false,				
			success: 	function(xml) { 	
				var gID, gIDs, dID, newPromo;
				$("promotion",xml).each(function(n){	
					gID=$(this).parent().attr("game_id");								
					gIDs=gID.split("/");				
					$gameContainer = $("#game_" + gIDs[0] + "_" + gIDs[1] + "_" + gIDs[2]);				
					oID = $(this).attr("offer_id");					
					// sorting?					
					if($gameContainer.find("#"+oID).size() == 0){					
						$("<div class='seriesGameContent' id='"+oID+"'><div class='seriesGameContentPad seriesGamePromo' puid='"+gID.replace(/-/g,"_").replace(/\//g,"_")+"'>" + $(this).attr("offer_name") + "</div></div>")
						.insertAfter($gameContainer.find(".seriesGameContent:last"));						
					}											
				});
			}	
		});	
		$("#homestandContainer, .seriesTickets a").removeClass("waitCursor");			
		$(".seriesGamePromo").click(function(){ 					
			window.open(
				'/schedule/promotions_popup.jsp?c_id='+theClub.toLowerCase()+'&puid='+$(this).attr("puid"), 
				'mlb_promo', 
				'width=316,height=300,location=no,menubar=no,scrollbars=yes,status=no,toolbar=no,resizable=yes'
			);				
		});		
		
	}
	
	ClubHome.showSeriesPop = function(series){		
		var setDisplay="block",popOffSet=135;			
		if($("#seriesPopContainer").css("display")=="block")setDisplay="none";		
		if(series!=series2)setDisplay="block";	
		series2=series;			
		$("#seriesPopContainer").css("display",setDisplay);		
		if(_isInit)ClubHome.loadSeriesPop();
		_isInit=false;				
		// hide past games
		$(".series div[id^=game_]").each(function(){
			var _gameDate=this.id.substr(5).replace(/_/g,"");
			if(_currentDate>_gameDate) $(this).hide();	// _currentDate is set in homestand.jsp				
		});			
		$("#seriesPopContainer .series").hide();		
		var thisSeries = $("#seriesPopContainer .series:eq("+series+")");
		thisSeries.show();				
		if(thisSeries.height()>262)ClubHome.addSeriesScrolling(series);			
		var linkPosition=bam.dom.getPosition($(".seriesTickets")[series]);	
		//reposition popup
		$(".popright").parent().css({top:linkPosition.Top-popOffSet,left:linkPosition.Left+176});	
		$(".popleft").parent().css({top:linkPosition.Top-popOffSet,left:linkPosition.Left-179});	
		$(".closePop").css("cursor","pointer").click(function() {ClubHome.hideSeriesPopup()});
		_isPopped=true;
		_popID=series;		
	}		
	
	ClubHome.addSeriesScrolling = function(series){
		var thisSeries = $(".seriesPop:eq("+series+")"),
			thisLegend = thisSeries.next();
		thisSeries.css({height: "262px", overflow: "hidden"});							
		thisLegend.find(".moreArrows").show();								
		thisLegend.find(".moreArrowBottom").hover(
			function () {$(this).addClass("moreArrowBottomHover")},
			function () {$(this).removeClass("moreArrowBottomHover")}					
		)
		.click(function() {$('.seriesPop').animate({scrollTop: '+=262px'}, 1000)});			
		thisLegend.find(".moreArrowTop").hover(
			function () {$(this).addClass("moreArrowTopHover")},
			function () {$(this).removeClass("moreArrowTopHover")}					
		)
		.click(function() {$('.seriesPop').animate({scrollTop: '-=262px'}, 1000)});				
		$('.tixPurchase').width(120);
	}		
		
	ClubHome.hideSeriesPopup = function() {
		if(!!_isPopped){ 
			$("#seriesPopContainer").hide().css("top","-1000px") 
			_popID=""; _isPopped=false; _isActive=false;
		};	
	}			
	
	//assign events		
	$(".seriesTickets a").hover(function(){ 		
		var idx=$(".seriesTickets a").index($(this));		
		if(idx!==_popID)ClubHome.showSeriesPop(idx);	
		clearTimeout(_isActive);		
	}, function() {
		_isActive=setTimeout(function(){ ClubHome.hideSeriesPopup(); },3000);	
	}).click(function(){
		var idx=$(".seriesTickets a").index($(this));	
		if(!!_isPopped)	ClubHome.hideSeriesPopup()
		else ClubHome.showSeriesPop(idx);	
	});	
	$("#seriesPopData").hover(
		function(){ clearTimeout(_isActive); },
		function(){ _isActive=setTimeout(function(){ ClubHome.hideSeriesPopup(); },3000);	 }
	);	
	// assign "series at a glance" and promotion schedule links	
	$(".seriesGlance a").each(function(){$(this).attr("href","/schedule/sortable.jsp?c_id="+theClub.toLowerCase())});			
	// this hides a bug in FF3. Bugzilla.mozilla.org #442542
	$(window).resize( ClubHome.hideSeriesPopup );
}


ClubHome.initVideoCarousel = function(){	
	ClubHome.videoCarousel = new FlashObject("/flash/mediawall/y2009/thumb_carousel.swf", "carousel_flash_obj", "256", "116", "9", "#ffffff");	
	ClubHome.videoCarousel.addParam("wmode", "transparent");
	ClubHome.videoCarousel.addParam("scale", "noScale");	
   	ClubHome.videoCarousel.addVariable("width", 256);
	ClubHome.videoCarousel.addVariable("height", 116);
	ClubHome.videoCarousel.addVariable("club", theClub.toLowerCase());
	ClubHome.videoCarousel.addVariable("tracking_call", "ClubHome.trackVideoCarouselClicks");					
	ClubHome.videoCarousel.write("video_carousel_flash");	
}


ClubHome.trackVideoCarouselClicks=function(clickedArea){
	// Ex arg: NYY MORE VIDEOS: 3993637 
	bam.tracking.track({
		async:{
			isDynamic: false,
			compName: theClub + " Video Corner",
			compActivity: "Video Corner Video Link Click",
			actionGen:true
		}
	}, $(this)[0]);
}	


ClubHome.videoPlayer = (function(){
	var _self = {	
		playerObj: null,
		autoPlay:  true,
		createPlayer: function(props){					
			_self.playerObj = new bam.FlvPlayer({
				skin           : "/flash/video/v2/skins/mlb_teamHPmini.swf",
				hideControls   : false,
				self           : "ClubHome.videoPlayer.playerObj",
				elemId         : "ClubHomeFlashPlayer",
				height         : 173,
				width          : 256,
				containerId    : "video_player",
				defaultVolume  : 35,
				debugMode      : false,
				autoRewind	   : true,
				pageComponent  : "video_corner",
				onPlayerLoaded : function(){
					var vp = ClubHome.videoPlayer, pObj = _self.playerObj;				
					var clipProps = [
													 {type:'video', path:props.flv, content_id:ClubHome.videoId, duration:props.duration}
//													 {type:'freewheelAd', content_id:ClubHome.videoId, duration:props.duration},
//													 {type:"video", videoPath:props.flv}
													];
					if(bam.FlvPlayer.prerollPlatform==="dc") {
						var head=(Date.parse(new Date())/1000).toString();
						var tail=((Math.round((Math.random() + 1) * 10000)).toString()).slice(1,5);	
						var prerollUrl = "http://ad.doubleclick.net/pfadx/" + ClubHome.teamCommonName.toLowerCase().replace(" ","") + ".mlb/homepage;"+dc_keyVal+"pos=1;sz=256x144;tile=1;ord="+head+tail;						
						clipProps = [{type:"dartPreroll", prerollPath:prerollUrl},{type:"video", videoPath:props.flv}];					
					}			
					if (!vp.onPlayerLoadedWasCalled){					
						vp.onPlayerLoadedWasCalled=true;
						if(!!vp.autoPlay){ 			
							pObj.startPlaylist(clipProps);
						}else{						
							pObj.setBeginPoster('/flash/video/y2009/beginposter_v3.swf?stagew=256&stageh=166&thumb='+escape(ClubHome.videoThumb));						
							pObj.setPlaylist(clipProps);							
						}						
					}					
				},
				onPlaylistBegin : function(){ _self.trackPlaylistBegin(); },
				onPlaylistComplete: function() {
					ClubHome.videoPlayer.autoPlay=false;
					bam.tracking.track({videoComplete:{playerContext:ClubHome.videoCompName}});
				}
			});			
			$("#flash_item_title").html(props.title);
			$("#flash_item_blurb").html(props.blurb);		
		},
		
		
		trackPlaylistBegin: function(){			
			bam.tracking.track({ 
				async_media:{
					mediaID        : ClubHome.videoId + "|MLB_FLASH_300K_PROGDNLD",
					playerType     : "Flash",
					playerContext  : ClubHome.videoCompName,
					contextVersion : "2.0",
					streamType     : "Progressive Download",
					bitRate        : "300K",
					actionGen	   : (!!ClubHome.videoPlayer.autoPlay)?false:true
				}
			});			
		}
	}
	return _self;	
})();



// this is called in clubhome.linescore.js to key off gamestate	

ClubHome.initRow1Videos = function(gamestate, inning, away, home){		

	ClubHome.HTHLinescore.isInit=false;			
	
	/* TBYB 
	if(gamestate=="live"&&inning>1&&ClubHome.suppressTBYB!="suppressTBYB"){
		ClubHome.videoTitle = "Video from the game in progress"; 
		ClubHome.videoBlurb = "Subscribe to MLB.TV Premium to watch the full game.";
		ClubHome.videoThumb = "";
		ClubHome.videoFile = "http://mediadownloads.mlb.com/mlbam/preview/" + away + home + "_164_preview.mp4";
	}
	*/
	
	ClubHome.videoPlayer.createPlayer({
		title		  : ClubHome.videoTitle,
		blurb         : ClubHome.videoBlurb, 
		flv           : ClubHome.videoFile,
		duration	  : bam.media.getDurationInSeconds(ClubHome.videoDuration)
	});	
	
}


// Initialize Club Homepage
$(document).ready(function(){		

	ClubHome.initHomestand();	
	
	//Initialize promotions carousel
	$('#promotions').jcarousel({
		auto               : 0,
		wrap               : "both",
		scroll             : 3,
		size               : 12,
		visible            : 3,
		start			   : (typeof(randomizePromotions)!="undefined"&&randomizePromotions)?genRandNum(4)*3+1:1,
		initCallback       : ClubHome.promotionsCarousel.initCallback,
		itemLastInCallback : {onAfterAnimation: ClubHome.promotionsCarousel.itemLastInCallbackAfterAnimation}
	});		
	
	// Video Autoplay Biz
	ClubHome.videoPlayer.autoPlay = (GetCookie("ClubHome.autoPlay")=="true");
	if (GetCookie("ClubHome.autoPlay")==null) ClubHome.videoPlayer.autoPlay = true; // enable autoplay if cookie is not present (null)
	
	if(!!ClubHome.videoPlayer.autoPlay) $("#autoplayLinkLabel").text("Disable Autoplay")
	else $("#autoplayLinkLabel").text("Enable Autoplay");
	
	//adding autoplay link handler
	$("#autoplayLink").click(function(){
		if (ClubHome.videoPlayer.autoPlay){
				SetCookie("ClubHome.autoPlay","false",180,"","mlb.com");
				$("#autoplayLinkLabel").text("Enable Autoplay");
				ClubHome.videoPlayer.autoPlay = false;
			} else {
				SetCookie("ClubHome.autoPlay","true",180,"","mlb.com"); 
				$("#autoplayLinkLabel").text("Disable Autoplay");
				ClubHome.videoPlayer.autoPlay = true;				
			}		
		bam.tracking.track({async:{isDynamic:false, compName:ClubHome.videoCompName, compActivity:"Disable Auto-play Click", actionGen:true}});
		return false;
	});		
	
	// attach tracking to "more from" links	
	$("#more_from a").click(function(){	
		var parentListItem=$(this).parents("div.mf_item"),
			panel=$("#more_from > div.mf_item").index(parentListItem)+1;	
		bam.tracking.track({
			async:{
				isDynamic:false,
				compName:theClub + " Homepage More From",
				compActivity:"Panel " + panel + " Click",
				actionGen:true,
				mwContentId:parentListItem.find(".morefrom_contentID").text()
			}
		}, $(this)[0]);				
	});

});

