var cache = {};
var current_artist;
var current_track;
var current_url;
var current_source;

var names = {'R1':'Radio 1','R2':'Radio 2','R3':'Radio 3','R4':'Radio 4','R5':'5 Live','R6':'6 Music'};

var mbidXhr;
var artistXhr;
var tracksXhr;
var bitsXhr;

$(function() {
$('#submit').click(function() 
{
	var username = $('#username').val(); 
	var password_hash = hex_md5($('#password').val()); 
	clearBoxes();
	current_source = "last.fm";
	$('#login_failed').hide();
	$.ajax({
		url:'/service/station',
		data:{'username':username, 'password_hash':password_hash},
		success:handleMbidLoaded,
		dataType:'json'});

});

});

function clearBoxes()
{
	$('#artists_data').empty();
	$('#artists_data').append('<div align="center"><img class="throbber" src="/images/throbber.gif" /></div>');
	$('#artists').fadeIn();
	$('#tracks_data').empty();
	$('#tracks_data').append('<div align="center"><img class="throbber" src="/images/throbber.gif" /></div>');
	$('#tracks').fadeIn();
	$('#track_stats').fadeOut();
	$('#stat_key').empty();			
	$('#stat_tempo').empty();			
	$('#current_track').fadeOut();

	if(mbidXhr)
		mbidXhr.abort();
	if(artistXhr)
		artistXhr.abort();
	if(tracksXhr)
		tracksXhr.abort();
	if(bitsXhr)
		bitsXhr.abort();

}

function loadBoxes(id)
{
	clearBoxes();
	current_source = names[id];
	mbidXhr = $.ajax({url:'/service/station/'+id, success:handleMbidLoaded, dataType:'json'}); 
}

function handleMbidLoaded(data)
{
	cache = data;
	result = cache['result'];
	if(result.length > 0)
	{
		loadArtists(result[0]['mbid']);
		current_track = result[0]['name']
		current_url = "http://bbc.co.uk/music/artists/"+result[0]['mbid'];
		$('#track_link').attr("href", current_url);
		$('#source').empty();
		$('#source').append(current_source);
		loadTracks(result[0]['mbid'], result[0]['name']);
		loadBits(result[0]['mbid'], result[0]['name']);
	}
	else
	{
		$('#artists_data').empty();
		$('#artists_data').append('<div class="frown">:(</div>');
		$('#tracks_data').empty();
		$('#tracks_data').append('<div class="frown">:(</div>');
	}

	if(cache['status'] && cache['status'] == "login_fail")
	{
		$('#login_failed').fadeIn();
	}
}

function loadArtists(mbid)
{
	artistXhr = $.ajax({
		url:'/service/mbecho/'+mbid,
		success:function(data) 
		{
			var source = data['query'];
			current_artist = source['name'];
			$('#playing_artist').empty();
			$('#playing_artist').append(current_artist);
			$('#playing_track').empty();
			$('#playing_track').append(current_track);
			$('#current_track').fadeIn();

			var similar = data['similar'];
			$('#artists_data').empty(); 
			$('#artists_data').hide();
			

			if(similar.length > 0)
			{
				for(var i=0; i<similar.length; i++)
				{
					var imgUrl = ' <a href="'+similar[i]['image']+'" class="lightbox"><img src="/images/camera.jpeg" /></a>';
					if(similar[i]['image'] == "/images/no_pic.jpg")
						imgUrl = '';
					$('#artists_data').append('<div><a target="_blank" href="'+similar[i]['url']+'">'+similar[i]['name']+'</a>'+imgUrl+'</div>');
				}
				$('a.lightbox').lightBox()
			}
			else
			{
				$('#artists_data').empty();
				$('#artists_data').append('<div class="frown">:(</div>');
			}
			
			$('#artists_data').fadeIn();
		},
		dataType:'json',
	});
}

function loadTracks(mbid, track_name)
{
	tracksXhr = $.ajax({
		url:'/service/lastrec/'+mbid+'/'+escape(track_name),
		success:function(data)
		{
			$('#tracks_data').empty(); 
			$('#tracks_data').hide();
			
			var result = data['result'];
			if(result.length > 0)
			{
				for(var i=0; i<result.length; i++)
				{
					var imgUrl = ' <a href="'+result[i]['image']+'" class="lightbox2"><img src="/images/camera.jpeg" /></a>';
					if(result[i]['image'] == "/images/no_pic.jpg")
						imgUrl = '';
					$('#tracks_data').append('<div><a target="_blank" href="'+result[i]['url']+'">'+result[i]['artist']+" - "+result[i]['track']+'</a>'+imgUrl+'</div>');
				}
				$('a.lightbox2').lightBox()
			}
			else
			{
				$('#tracks_data').empty();
				$('#tracks_data').append('<div class="frown">:(</a>');
			}
			$('#tracks_data').fadeIn();
		},
		dataType:'json',
	});
}

function loadBits(mbid, track_name)
{
	bitsXhr = $.ajax({
		url:'/service/bits/'+mbid+'/'+escape(track_name),
		success:function(data)
		{
			$('#track_stats').hide();
			var result = data['result'];
			if(result)
			{
				$('#stat_key').append(result['key']+' '+result['mode']);
				$('#stat_tempo').append(Math.round(result['tempo'])+' BPM');
				$('#track_stats').fadeIn();
			}
		},
		dataType:'json',
	});
}

