// JavaScript Document
var currentArtist = new String();
var currentTitle = new String();
var currentShow = new String();
var playStatus = new String();
var networkId = new String();
var musicbrainzId = new String();
var artistPic = new String();
var urlkey = new String();

 $(document).ready(function() { 
	networkId = $.query['networkId'];
	status('Starting up...');
	getNowPlaying();
	getNowNext();
 });



function getNowPlaying(){
	status('Getting Now Playing...');
   	$.ajax({
		type: "GET",
		url: "proxy_nowplaying.php?networkId="+networkId+'&'+Math.random(),
		dataType: "xml",
		success: function(xmlData)
		{
			xmlDataSet = xmlData;
			parseNowPlaying();
		}
	});
	// do this every X x1000 seconds
	setTimeout ( getNowPlaying, '10000' );
}

function getNowNext(){
	status('Getting Now and Next Show info...');
   	$.ajax({
		type: "GET",
		url: "proxy_nownext.php?networkId="+networkId+"&"+Math.random(),
		dataType: "xml",
		success: function(xmlNowNextData)
		{
			xmlNowNext = xmlNowNextData;
			parseNowNext();
		}
	});
	// do this every minute
	setTimeout ( getNowNext, '60000' );
}

function parseNowNext(){
	
	status('Parsing Now and Next Show info');
	var now = $(xmlNowNext).find("programme")[0];
	var next = $(xmlNowNext).find("programme")[1];
	var then = $(xmlNowNext).find("programme")[2];
	var nowshow = $(now).find("title").text();
	
	if (nowshow!=currentShow){
		$('#nownext').fadeOut('slow',function(){	
			var nowstr = "<span>" + nowshow +"</span>";
			var nextstr = "<span>"+$(next).find("starttime").text() + ' - ' + $(next).find("title").text() +"</span>";
			var thenstr = "<span>"+$(then).find("starttime").text() + ' - ' + $(then).find("title").text() +"</span>";
			$('#now').html(nowstr);
			$('#next').html(nextstr);	
			$('#then').html(thenstr);
			$('#nownext').fadeIn('slow');
			currentShow=nowshow;
		});
	}
	$('#status').fadeOut('slow');
} 

function parseNowPlaying(){
	
	status('Parsing Now Playing');

	playStatus = $(xmlDataSet).find('status').text();
	if (playStatus=="playing")
	{
		var lastplayed = $(xmlDataSet).find("song")[0];
		var newTitle = $(lastplayed).find('title').text();
		var newArtist = $(lastplayed).find('artist').text();
		urlkey = $(lastplayed).find('urlkey').text();
	}
	else
	{
		var newTitle = 'Nothing playing right now';
		var newArtist = 'More songs coming soon...';
	}
	
	if (newArtist != currentArtist || newTitle != currentTitle){
		currentArtist = newArtist;
		currentTitle = newTitle;
		displayNowPlaying();
	}
	else{
		status('Now Playing - no change. Nothing to do.');	
		$('#status').fadeOut('slow');
	}
}

function displayNowPlaying(){

	artist = currentArtist;
	title = currentTitle;
	var row;
	row =  '<div class="artist"><span>'+artist+'</span></div>';
	row += '<div class="title"><span>'+title+'</span></div>';
	$("#nowplayingdata").hide('slow', function(){
		$("#nowplayingdata").html(row);
		$("#nowplayingdata").show('slow',function(){
			
			status('Displaying Now Playing');
			//alert(playStatus);

			if (playStatus=='playing'){
				getArtistInfo(artist);
				getYoutube(artist,title,urlkey,networkId);
				getFlickrImgs(artist);
				getTopTracks(artist);
				getFans(artist);
				getEvents(artist);
				getLyrics(artist,title);
				getWebcam();
			} 
			else
			{
				//$('#flickrimg').SlideOutUp('slow', function(){
					$('#musicbrainz').empty();
					$('#flickrimg').empty();
					$('#youtube').empty();
				//});
				
				
			//	$('#toptracks').SlideOutUp('slow', function(){
					$('#toptracks').empty();
			//	});
				
				
			//	$('#fans').SlideOutUp('slow', function(){
					$('#fans').empty();
			//	});
				
				
			//	$('#events').SlideOutUp('slow', function(){
					$('#events').empty();
			//	});
				
				
			//	$('#lyrics').SlideOutUp('slow', function(){
					$('#lyrics').empty();
			//	});
				
			}
			
		});
	});

}
 // now the modules to grab all the content from the various web sources.

function getFlickrImgs(artist){
	
	$('#flickrimg').hide();
	var text = ''+encodeURIComponent(artist)+'';
	var numImgs = 12;
	jsonurl = "http://api.flickr.com/services/rest/?method=flickr.photos.search&text="+text+"&api_key=ee1467712c72701a17abca3aff1f0959&per_page="+numImgs+"&sort=relevance&content_type=1&format=json&jsoncallback=?";
	$.getJSON(jsonurl,
	function(data){
		$('#flickrimg').html('<h3>Flickr Images</h3><p></p>');
		$(data.photos.photo).each(function(){
			$('#flickrimg p').append('<a href="http://www.flickr.com/photos/'+this.owner+'/'+this.id+'/" target="_blank"><img src="http://static.flickr.com/'+this.server+'/'+this.id+'_'+this.secret+'_s.jpg"></a>')	
		})
		$('#flickrimg').show('slow');
		status('Displaying Flickr Images');

	});
	
}
function getArtistInfo(artist){
 	
	$.ajax({
		type: "GET",
		url: "proxy_lastfm_artistinfo.php?artist="+encodeURIComponent(artist),
		dataType: "xml",
		success: function(xmlData)
		{			
			var toptag = $(xmlData).find("similarartists");
			var pic = $(toptag).attr('picture');
			var mbid = $(toptag).attr('mbid');
			if (pic!=null) artistPic = pic;
			if (mbid!=null) {
				musicbrainzId = mbid;
				getMusicbrainzData(mbid);
			}
			status('Getting Similar Artist and Musicbrainz ID');
		}
	});
}

function getMusicbrainzData(mbid){

	
	$('#musicbrainz').hide(); 
	$.ajax({
		type: "GET",
		url: "proxy_musicbrainz.php?mbid="+musicbrainzId,
		dataType: "xml",
		success: function(xmlData)
		{			
			var home = new String();
			var discogs = new String();
			var myspace = new String();
			var wikipedia = new String();
			var imdb = new String();
			
			var rels = $(xmlData).find("relation");
			rels.each(function(){
				//alert($(this).attr("target"));
				if ($(this).attr("type")=='OfficialHomepage') home = $(this).attr("target");
				if ($(this).attr("type")=='Discogs') discogs = $(this).attr("target");
				if ($(this).attr("type")=='Myspace') myspace = $(this).attr("target");
				if ($(this).attr("type")=='Wikipedia') wikipedia = $(this).attr("target");
				if ($(this).attr("type")=='IMDb') imdb = $(this).attr("target");
			})
			$('#musicbrainz').html('<h3>MusicBrainz Data</h3><div></div>');
			if (home!='') $('#musicbrainz div').append('<a target="_blank" align="absmiddle" href="'+home+'"><img src="imgs/home.gif" /></a>');
			if (discogs!='') $('#musicbrainz div').append('<a target="_blank" align="absmiddle" href="'+discogs+'"><img src="imgs/discogs.gif" /></a>');
			if (myspace!='') $('#musicbrainz div').append('<a target="_blank" align="absmiddle" href="'+myspace+'"><img src="imgs/myspace.gif" /></a>');
			if (wikipedia!='') $('#musicbrainz div').append('<a target="_blank"  align="absmiddle" href="'+wikipedia+'"><img src="imgs/wikipedia.gif" /></a>');
			if (imdb!='') $('#musicbrainz div').append('<a target="_blank" align="absmiddle" href="'+imdb+'"><img src="imgs/imdb.gif" /></a>');
			
			$('#musicbrainz').show('slow');
			status('Displaying MusicBrainz');
		}
	});
	
};

function getTopTracks(artist){
	
	$('#toptracks').hide();   	
	$.ajax({
		type: "GET",
		url: "proxy_lastfm_toptracks.php?artist="+encodeURIComponent(artist),
		dataType: "xml",
		success: function(xmlData)
		{			
			$('#toptracks').html('<h3>'+artist+'\'s Top 10 Tracks</h3><ol></ol>');
			var tracks = $(xmlData).find("track");
			tracks = tracks.slice(0,10);
			tracks.each(function(){
				//alert('got');
				var name = $(this).find('name');
				if (name.text()==currentTitle) $('#toptracks ol').append('<li><b>'+name.text()+'</b> &lt;-- Now Playing</li>');
				else $('#toptracks ol').append('<li>'+name.text()+'</li>');
			});
			$('#toptracks').show('slow');
			status('Displaying Top Track data from Last.fm');
		}
	});
}

function getYoutube(artist,title,urlkey,networkId){
	
	$('#youtube').hide();  
	$.ajax({
		type: "GET",
		url: "proxy_youtube.php?artist="+escape(artist)+"&title="+escape(title)+"&urlkey="+encodeURIComponent(urlkey)+"&networkId="+encodeURIComponent(networkId)+"",
		dataType: "xml",
		success: function(xmlData)
		{			
			
			var video = $(xmlData).find("video");
			video = video.slice(0,1);
			var id = $(video).find("id").text();
			if (id!=''){
				$('#youtube').html('<h3>YouTube video for '+title+'</h3><div></div>');
				$('#youtube div').append('<object width="425" height="355"><param name="movie" value="http://www.youtube.com/v/'+id+'&autoplay=1&volume=0"></param><param name="wmode" value="transparent"></param><param name="volume" value="0"></param><embed src="http://www.youtube.com/v/'+id+'&autoplay=1&volume=0" type="application/x-shockwave-flash" wmode="transparent" width="425" height="355"></embed></object>');
				$('#youtube').show('slow');
				status('Displaying YouTube video');
			}
			
		}
	});
}


function getFans(artist){
	
   	$.ajax({
		type: "GET",
		url: "proxy_lastfm_fans.php?artist="+encodeURIComponent(artist),
		dataType: "xml",
		success: function(xmlData)
		{
			
			$('#fans').html('<h3>'+artist+'\'s Top Fans</h3><div></div>');
			var fansraw = $(xmlData).find("user");
			var fans = new Array();
			fansraw.each(function(){
				var img = $(this).find('image').text();
				if (!img.match(".gif") && !img.match("nouser_140px.jpg")) fans.push($(this));
			});
			fans = fans.slice(0,12);
			$.each(fans,function(){
				var img = $(this).find('image').text();
				var usr = $(this).attr('username');
				$('#fans div').append('<a target="_blank" href="http://www.last.fm/user/'+usr+'"><img height="75" width="75" src="'+img+'" /></a>');
			});
			status('Displaying top Last.fm fans for this artist');
		}
	});
}
function getEvents(artist){
	
   	$.ajax({
		type: "GET",
		url: "proxy_lastfm_events.php?artist="+encodeURIComponent(artist),
		dataType: "xml",
		success: function(xmlData)
		{
			var tracks = $(xmlData).find("item");
		
				$('#events').html('<h3>'+artist+'\'s Upcoming Events</h3><ul></ul>');
				tracks = tracks.slice(0,10);
				tracks.each(function(){
					//alert('got');
					var name = $(this).find('title');
					$('#events ul').append('<li>'+name.text()+'</li>');
				});
				status('Displaying Events for this Artist from Last.fm');
			
		}
	});
}
function getLyrics(artist,title){

   	$.ajax({
		type: "GET",
		url: "proxy_lyrics.php?artist="+encodeURIComponent(artist)+"&title="+encodeURIComponent(title),
		dataType: "xml",
		success: function(xmlData)
		{
			
			var lyrics = $(xmlData).find("tx").text();
			if (lyrics!=''){
				$('#lyrics').html('<h3>Lyrics!</h3><p></p>');
				lyrics = lyrics.replace(/\[br\]/g, "<br />")
				$('#lyrics p').append(lyrics);
				status('Displaying Lyrics for this Track');
			}	
			else $('#lyrics').empty();
			
		}
	});
}

function getWebcam(){

var src = new String();
if (networkId=='radio1') src = "http://www.bbc.co.uk/radio1/webcam/images/live/webcam.jpg";
else if (networkId=='radio2') src = "http://www.bbc.co.uk/radio2/webcam/live/radio2.jpg";
else if (networkId=='6music') src = "http://www.bbc.co.uk/6music/webcam/live/6music.jpg";
else if (networkId=='1xtra') src = "http://www.bbc.co.uk/1xtra/webcam/live/1xtraa.jpg";


$('#webcam').html('<h3>Studio Webcam</h3><img src="'+src+'?'+Math.random()+'">');
	

}

function status(text){
	$('#status').show();
	$('#status').html(text);
}
