/**
 * Dependencies: FXMicrosite.js
 *				 jquery.js
 *				 swfobject.js [if including #musicPlayer]
 *
 */

FXMicrosite.episodeSelection = {
	
	currentSeason: null,
	currentEpisode: null,
	currentPlaylist: [],
	
	init: function(season) 
	{
		// events for epNumber in episode menu
		$(".epNumber").live('click', function() {
			var seasonNumber = season;
			var episodeNumber = $(this).attr("id");			
			FXMicrosite.episodeSelection.displayEpisode(seasonNumber, episodeNumber);
			return false;
		}).live('mouseover', function() {
			$(this).addClass('epNumberOver');
		}).live('mouseout', function() {
			$(this).removeClass('epNumberOver');
		});
		
		// event for playable mp3
		$(".playableMp3").live('click', function() {
			var dex = $(".trackTitle .playableMp3").index(this);
			if(dex == -1)
			{
				//dex = $(".trackBand .playableMp3").index(this);
				dex =  $(this).parents("tr").index("#content-musicHolderTable tr");
			}
			FXMicrosite.episodeSelection.playSong(FXMicrosite.episodeSelection.currentPlaylist[dex]);
			return false;
		});
		
		// display musicPlayer.swf if #musicPlayer exists
		if($("#musicPlayer").length)
		{
			swfobject.embedSWF('musicPlayer.swf', 'musicPlayer', '100%', '100%', '9', '/global/microsite/swf/expressinstall.swf', {}, {wmode: 'transparent', menu: 'false', scale:'noscale', allowScriptAccess:'always', allowFullScreen:'true'}, {id: 'musicPlayer'}); 
		}
		
		FXMicrosite.episodeSelection.displayEpisode(season, null);
	},
	
	displayEpisode: function(seasonNumber, episodeNumber)
	{		
		if(FXMicrosite.episodeSelection.currentSeason != seasonNumber || FXMicrosite.episodeSelection.currentEpisode != episodeNumber) // prevent requesting current episode again 
		{
			FXMicrosite.episodeSelection.currentSeason = seasonNumber;
			FXMicrosite.episodeSelection.currentEpisode = episodeNumber;
		
			$.getJSON(FXMicrosite.config.handler, {action: 'getEpisode', show: FXMicrosite.params.show, season: seasonNumber, episode: episodeNumber}, function(res) {
				if(res)
				{
					// build menu, if not built yet
					if($("#episodeMenu:empty").length)
					{
						FXMicrosite.episodeSelection.buildMenu(res.totalEpisodes);
					}
					
					// display episode info
					FXMicrosite.episodeSelection.displayEpisodeInfo(res);
					// display episode music
					FXMicrosite.episodeSelection.displayEpisodeMusic(res.music);
					
					trackLink(episodeNumber || res.totalEpisodes); // tracking
				}
			});
		}
	},
		
	// menu
	buildMenu: function(numEpisodes)
	{
		var menu = [];
		for(var i = 1; i <= numEpisodes; i++)
		{
			menu.push('<span class="epNumber" id="' + i + '">' + i + '</span> | ');
		}
		
		$("#episodeMenu").html(menu.join(""));
	},
	
	displayEpisodeInfo: function(episodeJSON)
	{
		var epTitle = [];
		
		// title
		epTitle.push('<span class="epTitle">' + episodeJSON.title + '</span><br />');
		epTitle.push('<span class="epSeason">' + episodeJSON.season + '</span> | <span class="epSeason">' + episodeJSON.number + '</span>');
		
		// fade in title and episode info
		$('#episodeTitle').fadeOut(function() {
			$(this).html(epTitle.join("")).fadeIn();
		});
		
		$('#content-episodeHolder').fadeOut(function() {
			$(this).html(episodeJSON.content).fadeIn(function(){
				FXMicrosite.Utils.setupScrollPane('#content-episodeHolder');
			});
		});
		
	},
	
	displayEpisodeMusic: function(episodeMusicJSON)
	{
		trackHTML = [];
		
		if(episodeMusicJSON.noMusic) // no tracks
		{
			trackHTML.push('<tr><td class="musicLink noMusic">' + episodeMusicJSON.noMusic + '</td>');
		}
		else
		{		
			var numTracks = episodeMusicJSON.track.length;
			var track, trackMp3, trackTitle, trackBand, trackLearnMore, trackHTML;
			
			// reset playlist
			FXMicrosite.episodeSelection.currentPlaylist = [];	
			
			// if only 1 song, json encode is not an array.  set the number of tracks to 1 and push episodeMusicJSON.track to an array.
			if (numTracks == undefined)
			{
				numTracks = 1;
				episodeMusicJSON.track = [episodeMusicJSON.track];
			}

			if(numTracks && !episodeMusicJSON.noMusic)
			{
				for(var i = 0; i < numTracks; i++)
				{
					track = episodeMusicJSON.track[i];

					trackMp3 		= track.mp3;
					trackTitle 		= track.trackTitle;
					trackBand		= track.band;
					trackLearnMore 	= track.learnMore;
					
					
					// has mp3 for track
					if(trackMp3)
					{
						trackHTML.push('<tr>');
						trackHTML.push('<td class="musicLink trackBand">');
						if(trackBand)
						{
							trackHTML.push('<a href="#" class="playableMp3">' + trackBand + '</a><br>');
						}
						trackHTML.push('<a href="#" class="playableMp3 trackTitle">' + trackTitle + '</a></td>');
						
						FXMicrosite.episodeSelection.currentPlaylist.push(trackMp3); // add track to playlist
					}
					else // no mp3 for track
					{
						trackHTML.push('<tr>');
						trackHTML.push('<td class="musicLink trackBand">' + trackBand + '<br>');
						trackHTML.push('<span class="musicLink trackTitle">' + trackTitle + '</span></td>');
						FXMicrosite.episodeSelection.currentPlaylist.push(''); // add empty track to playlist
					}
					
					trackHTML.push('<td class="learnMore" align="right" valign="top">');
					
					// if has learnMore information display image and link
					if(trackLearnMore)
					{
						trackHTML.push('<img src="assets/musicArrow.gif" class="musicArrow" /> ');
						trackHTML.push('<a class="learnMoreTxt" href="' + trackLearnMore + '" target="_blank">More</a>');
					}
					
					trackHTML.push('</td></tr>'); // end close row
				}
			}		
		}
		
		$('#content-musicHolderTable').fadeOut(function() {
			$(this).html(trackHTML.join("")).fadeIn();
			FXMicrosite.Utils.zebraStripes();
			FXMicrosite.Utils.setupScrollPane('#content-musicHolder');
		});
	},	
	
	seekForwardMusic: function() 
	{
		if(FXMicrosite.episodeSelection.currentPlaylist.length > 0)
		{
			var song = FXMicrosite.episodeSelection.currentPlaylist[0];
			song = song.replace("'", "");
			song = song.replace("\"", "");
			
			FXMicrosite.episodeSelection.playSong(song);
			
		}
	},
	
	playSong: function(song) 
	{
		FXMicrosite.Utils.SWF.send('musicPlayer', 'sendTextToFlash', song);
	}	
};
