$(document).ready(function() {
	
	$(function() {
		$("#page_articles").sortable();
		$("#page_articles").disableSelection();
	});
	
	$("#bag, #available").sortable({
		connectWith: 'ul'
	}).disableSelection();
	
	$('#bag').bind('sortreceive', function(event, ui) {

		$('#loading').show();
		var params = {'track' : ui.item.attr('id')};
		
		$.getJSON('/ajax/music/planner/addToBag', params, function(data) {
				updateCount();
				$('#planner_header').html(data[0].artist + ' - ' + data[0].title + ' added to bag').fadeIn('medium');
				$('#loading').hide();
			});
		}).bind('sortremove', function(event, ui) {
	
			$('#loading').show();
			var params = {'track' : ui.item.attr('id')};
			
			$.ajax({
				url: '/ajax/music/planner/removeFromBag',
				data: params,
				success: function(params) {
				updateCount();
				$('#loading').hide();
			}
		});
	});
}); 

function updateCount()
{
	$.get("/ajax/music/planner/getCount", function(data){
		$('#counter').html(data);
	});
}

function clearBag()
{
	$.get("/ajax/music/planner/clearBag", function(data){
		$('#planner_header').html(data + ' items deleted');
		$('#bag').html('');
		$('#counter').html('0');
	});
}

function removeTrack(id)
{
	$('#loading').show();
	var params = {'track' : id};
	
	$.getJSON(
		'/ajax/music/planner/removeFromBag', params, function(data) {
		updateCount();
		$('#planner_header').html(data[0].artist + ' - ' + data[0].title + ' removed from bag').fadeIn('medium');
		$('#track_' + data[0].id).fadeOut('slow');
		$('#loading').hide();
	});
}

$('#result_container').hide();

function lastfm(page)
{
	loading();
	
	var input = $('#search_lastfm');
	var type = $('input[name=search_type]:checked').val();
	var params = {'search' : input.attr('value'), 'type' : type, 'page' : page};
	
	$.getJSON('/ajax/music/lastfm/search', params, function(data) {
		
		loaded();
		
		$('#results').append($('<p>').html(data.startIndex + ' - ' + data.endIndex + ' of ' + data.totalResults + ' results found').attr('class', 'emphasize'));
		$('#results').append($('<ul>').attr('class', 'bag').attr('id', 'lfresult').attr('style', 'width:99%'));
		$.each(data.results, function() {
			var li = $('<li>').attr('class', 'track').attr('style', 'width:96%'); 
			$('#lfresult').append(li);

			switch (type) {
				case 'artist':

					var artist = this.name;
					$(li).append($('<img>').attr('src', this.image).attr('class', 'sleeve'));
					$(li).append($('<p>').append($('<a>').html(this.name).attr('title', 'Click to view most popular tracks by ' + this.name).click(function() {

					loading();

					var params = {'artist' : $(this).text()};
						
					$.getJSON('/ajax/music/lastfm/searchArtisttoptracks', params, function(data) {
						loaded();
						$('#results').append($('<p>').html('most popular tracks by ' + artist).attr('class', 'emphasize'));
						$('#results').append($('<ul>').attr('class', 'bag').attr('id', 'lfresult').attr('style', 'width:99%'));
							$.each(data.results, function() {
								var li = $('<li>').attr('class', 'track').attr('style', 'width:96%'); 
								$('#lfresult').append(li);
								$(li).append($('<img>').attr('src', this.image).attr('class', 'sleeve'));
								$(li).append($('<p>').html(artist));
								$(li).append($('<p>').html(this.name));
								$(li).append($('<button>').html('add to bag'));
							});
						});	
					})));
				break;

				case 'track':
					$(li).append($('<img>').attr('src', this.image).attr('class', 'sleeve'));
					$(li).append($('<p>').html(this.artist)).append($('<p>').html(this.name));
					var artist = this.artist;
					var name = this.name;
					$(li).append($('<button>').html('add to bag').click(function() {

						var params = {'artist' : artist, 'title' : name}
						$.getJSON('/ajax/music/planner/addToBagFromLastFM', params, function(data) {
							$('#planner_header').html(data[0].artist + ' - ' + data[0].title + ' added to bag').fadeIn('medium');
							$('#bag').append($('<li>').attr('id', 'track_' + data[0].id).attr('class', 'track').append($('<table>').append($('<tr>').append($('<td>').html(data[0].artist).attr('colspan', '3'))).append($('<tr>').append($('<td>').html(data[0].title).attr('colspan', '2')).append($('<button>').html('x').attr('class', 'clear')))));
						});
					}));
				break;
			}
		});
		paginator(data, page);
	});	
}

function paginator(data, current)
{
	var page;
	var ul = $('<ul>');
	for (page = 1; page <= Math.round(data.totalResults/data.itemsPerPage); page++) {
		if (page == current) {
			$(ul).append($('<li>').html(page).attr('onclick', 'lastfm(' + page +')').attr('class', 'selected'));
		} else {
			$(ul).append($('<li>').html(page).attr('onclick', 'lastfm(' + page +')'));
		}
	}

	$('#paginator').append(ul);	
}

function loading()
{
	$('#result_container').hide();
	$('#results').html('');
	$('#paginator').html('');
	$('#lastfm_loading').show();	
}

function loaded()
{
	$('#lastfm_loading').hide();
	$('#result_container').show();	
}
