var isLoading = false;
var intervalID;

$(function() {

	var apacheStone 		= 'xml/apacheStonePlaylist.xml';
	var pastEpisodeSeason 	= 'xml/episodeSeason1.xml';
	var stripeValue			= 0;
	
	playlistInitFromXML(apacheStone, 'music', 'bandApacheStone', true);
	episodeInit('xml/episodeSeason5.xml', 'bandSeason5');
	//episodeInit(pastEpisodeSeason, 'bandSeasonPast');
		
	//Select which season info to load
	$("select").change(function () {
		var str = $("select").attr("value");
		
		if(str) {
			trackView('pastSeason' + str);
			var episodeSeason = 'xml/episodeSeason'+str+'.xml';
			episodeInit(episodeSeason, 'bandSeasonPast');
			$("img.band-seasonPastImage").attr("src","assets/RM_season0" + str + ".jpg");
		}
    });
		
	// number of episodes
	function getNumEpisodesInXML(xml) {
		return $(xml).find('episode').length;
	}
	
	// generate episode menu and display it
	function episodeInit(episodeXML, divID) {
		// GENERATE MENU
		
		var menuDiv = $("#" + divID + " .band-episodeMenu");
		
		// clear current menu
		menuDiv.html("<span class=\"epTitle\">EPISODE </span>");
		
		$.get(episodeXML, function(xml) 
		{
			var total = getNumEpisodesInXML(xml);
	
			for(var i = 1; i <= total; i++)
			{	
				menuDiv.append( "<span class=\"epNumber\" id=\"" + i + "\">" + i + "</span> | ");
				// episodeMenu data holds xml file for season
				menuDiv.data("xml", episodeXML);
			}
			
			// register click and hover events for episode guide
			registerMenuEvents();
			
			var epToLoad = i - 1;
			if (divID != "bandSeason5") {
				epToLoad = 1;
				episode(epToLoad, episodeXML, divID);
			} 
			
			intervalID = setInterval("showHidePlayButton()", 100);
		});
	}	
		
	function playlistInitFromXML(xml, parentNodeName, playlistDiv, isDownloadable)
	{
		$.get(xml, function(xml) 
		{
			setupPlaylist($(xml).find(parentNodeName), playlistDiv, isDownloadable);
		});
	}

	function episode(x, episodeXML, divID) {
		var episodeObj 	= {};
		
		// add 'ep' prefix
		x = 'ep' + x;

		isLoading = true;
		$.get(episodeXML, function(xml) {
			$(xml).find('episode').each(
			function() 
			{
				var episode = $(this);
				// get correct episode
				if(episode.find('id').text() == x) 
				{
					var epTitleDiv 		= $('#' + divID + ' .band-episodeTitle');
					var seasonDiv 		= $('#' + divID + ' .band-season');
					var epHolderDiv 	= $('#' + divID + ' .band-content-episodeHolder');
					var musicHolderDiv 	= $('#' + divID + ' .band-content-musicHolder');
				
					epTitleDiv.hide();
					epHolderDiv.hide();
					musicHolderDiv.hide();
				
					episodeObj.title 	= episode.find('title').text();
					episodeObj.season 	= episode.find('season').text();
					episodeObj.number 	= episode.find('number').text();
					episodeObj.content 	= episode.find('content').text();
												
					// Episode title
					var title = "<span class=\"epTitle\">" + episodeObj.title + "</span>";
					epTitleDiv.html(title);
					epTitleDiv.fadeIn();
					
					
					// Season X - Episode X
					var seasonEp = "<span class=\"epSeason\">" + episodeObj.season + "</span> - <span class=\"epSeason\">" + episodeObj.number + "</span>";						
					seasonDiv.html(seasonEp);
					seasonDiv.fadeIn();

					// content
					epHolderDiv.html(episodeObj.content);
					epHolderDiv.fadeIn();
					epHolderDiv.jScrollPane({scrollbarWidth:8, scrollbarMargin:10}); //add custom scrollbar
							 
					setupPlaylist(episode.find('music'), divID, false);
					isLoading = false;
				}
			});
		});

		// only track individual episodes for season 5
		if (divID == "bandSeason5")
			trackLink(x); //Track episodes as page click
	}
	
	
	function setupPlaylist(parentNode, playlistHolderDiv, isDownloadable)
	{
		var playlistAry = new Array();
	
		// traverse through music
		if (playlistHolderDiv == 'bandApacheStone')
			var music = "<table border=\"0\" width=\"480\" cellspacing=\"0\" cellpadding=\"3\" class=\"stripeMeEven\">";	
		else
			var music = "<table border=\"0\" width=\"410\" cellspacing=\"0\" cellpadding=\"3\" class=\"stripeMeEven\">";	

		var musicHolderDiv 	= $('#' + playlistHolderDiv + ' .band-content-musicHolder');
				
		var hasTracks = false;
		parentNode.find('track').each(					
		function(i)
		{
			hasTracks = true;
			var track = $(this);
											
			music += "<tr>";
						
			var band	   = track.find('band').text();
			var mp3  	   = track.find('mp3').text();
			var trackTitle = track.find('trackTitle').text();			
			// members
			var members    = track.find('members').text();			
			
			if(mp3 != "")
			{
				playlistAry.push(mp3);
			}
			
			// push mp3 to playlist array
			//playlistAry.push(mp3);
			
			if(band)
			{
				music += "<td width=\"100\" class=\"musicLink\">";
				if(mp3)
				{
					music += "<a href=\"#musicTop\" onclick=\"playSong('" + mp3 + "'," + i + ",'" + playlistHolderDiv + "','" + trackTitle + "');\">" + band + "</a>";
				}
				else
				{
					music += "" + band + "";
				}
				music += "</td>";
			}
			
			if(trackTitle)
			{
				var tTitle = trackTitle.replace("'","");
				music += "<td>";
				if(mp3)
				{
					music += "<a href=\"#musicTop\" onclick=\"playSong('" + mp3 + "', " + i + ",'" + playlistHolderDiv + "','" + tTitle + "');\">\"" + trackTitle + "\"<\a>";
				}
				else
				{
					music += "\"" + trackTitle + "\"";
				}
				music += "</td>";			
			}				
			
			// learnMore
			var learnMore = track.find('learnMore').text();
			music += "<td width=\"80\" class=\"learnMore\" align=\"left\" valign=\"bottom\">";
			if(learnMore)
			{
				music += 	"<img src=\"assets/musicArrow.gif\" /> <a href=\"" + learnMore + "\" target=\"_blank\">Learn More</a>";
			}			
			music += "</td>";

			// get download content if any
			if(isDownloadable)
			{
				var download = track.find('download').text();			
				music += "<td width=\"100\" class=\"learnMore\" align=\"right\" valign=\"bottom\">";
				if(download) 
				{
					music += 	"<a href=\"#musicTop\" onclick=\"playSong('" + mp3 + "', " + i + ",'" + playlistHolderDiv + "','" + trackTitle + "');\"><img src=\"assets/buttonListen.gif\" /></a>";
				}
				music += "</td>";			
			}
			
			// end close row
			music += "</tr>";
			
			// members
			if(members)
			{
				music += "<tr><td colspan=\"3\">";
				
				track.find('member').each(function() {
					music += $(this).text() + "<br />";
				});
				
				music += "</td></tr>";
			}			
									
		});
		
		if(!hasTracks) {
			var noMusicTxt = "Coming Soon";
			var noMusic = parentNode.find("noMusic").text();						
			if(noMusic)
			{
				noMusicTxt = noMusic;
			}
		
			music += "<tr>" +
						"<td class=\"musicLink\">" + noMusicTxt + "</td>" +	
					"</tr>";
		}
		
		music += '</table>';
		
		// save playlist to musicHolderDiv
		musicHolderDiv.data("playlist", playlistAry);
		
		musicHolderDiv.html(music);
		
		//if (stripeValue >= 1)
			$("#" + playlistHolderDiv + " .stripeMeEven tr:even").addClass("alt"); //add striping
		//stripeValue++;
		
		musicHolderDiv.fadeIn();
		musicHolderDiv.jScrollPane({scrollbarWidth:8, scrollbarMargin:5}); //add custom scrollbar
		isLoading = false;
	}
	
	// registers click and hover events for elements with .epNumber class
	function registerMenuEvents() 
	{
		$(".epNumber").click(function() {
			var x = $(this).attr("id");
			var xml = $(this).parent().data('xml'); // retreive xml from episodeMenu
			var divID = $(this).parent().parent().attr('id');
			episode(x, xml, divID);	
			intervalID = setInterval("showHidePlayButton()", 100);			
		});
		
		$(".epNumber").hover(
			function(){
				var cssObj = 
				{
					'color' : '#ebc883'
				}
				$(this).css(cssObj);
			},
			function(){
				var cssObj = 
				{
					'color' : '#bfbfbf'
				}
				$(this).css(cssObj);
			}
		);
	}
});

function showHidePlayButton() {
	if(!isLoading)
	{
		if($('#bandSeason5 .band-content-musicHolder').data('playlist')) 
		{
			var playlistCount = $('#bandSeason5 .band-content-musicHolder').data('playlist').length;
			stopPlayer(playlistCount, "musicVideoController");		
		}
		clearInterval(intervalID);
	}
}

function playSong(mp3, dex, playlistHolderDiv,trackTitle)
{
	var musicHolderDiv = $('#' + playlistHolderDiv + ' .band-content-musicHolder');
	var playlist = musicHolderDiv.data('playlist');
	var mp3 = playlist[dex];
	
	// save dex of mp3 playing
	musicHolderDiv.data('curPlayingDex', dex);
	
	// which flash player to send to
	var flashID = (playlistHolderDiv == "bandApacheStone") ? "musicController" : "musicVideoController";
	
	collectText(mp3, flashID);
	
	//track event
	trackView(trackTitle);
}

// season 5
function seekForwardVideoMusic()
{
	var musicHolderDiv = $('#bandSeason5 .band-content-musicHolder');	
	nextTrack(musicHolderDiv, "musicVideoController");
}

function seekRewindVideoMusic()
{
	var musicHolderDiv = $('#bandSeason5 .band-content-musicHolder');	
	prevTrack(musicHolderDiv, "musicVideoController");
}

// apache stone
function seekForwardMusic()
{
	var musicHolderDiv = $('#bandApacheStone .band-content-musicHolder');
	nextTrack(musicHolderDiv, "musicController");
}

function seekRewindMusic()
{
	var musicHolderDiv = $('#bandApacheStone .band-content-musicHolder');
	prevTrack(musicHolderDiv, "musicController");
}


function nextTrack(musicHolderDiv, flashID)
{
	// get playlist
	var playlist = musicHolderDiv.data('playlist');
	
	if(playlist.length > 0)
	{		
		// get current playing index
		var curPlayingDex = musicHolderDiv.data('curPlayingDex');
			
		// go to next track
		// end of playlist, so go back to first track
		if(curPlayingDex == null || curPlayingDex == playlist.length - 1)
		{
			curPlayingDex = 0;
		}
		else
		{
			curPlayingDex++;
		}	
		
		var mp3 = playlist[curPlayingDex];
		// save new dex
		musicHolderDiv.data('curPlayingDex', curPlayingDex);
			
		// send to flash
		collectText(mp3, flashID);	
	}
}

function prevTrack(musicHolderDiv, flashID)
{
	// get playlist
	var playlist = musicHolderDiv.data('playlist');
	
	if(playlist.length > 0)
	{
		
		// get current playing index
		var curPlayingDex = musicHolderDiv.data('curPlayingDex');
		
		// go to prev track
		// if curPlayingDex doesn't exist for some reason
		if(curPlayingDex == null)
		{
			curPlayingDex = 0;
		}
		// beginning of playlist, so go to last track
		else if(curPlayingDex == 0)
		{
			curPlayingDex = playlist.length - 1;
		}
		else
		{
			curPlayingDex--;
		}	
		
		var mp3 = playlist[curPlayingDex];
		// save new dex
		musicHolderDiv.data('curPlayingDex', curPlayingDex);
		
		// send to flash
		collectText(mp3, flashID);	
	}
}




	
