/**
* Bobolo CMS **************************************************************************************************
*
* $Date: 2010-01-28 10:31:12 +0100 (Thu, 28 Jan 2010) $
* $Rev: 788 $
*
*/

// Starta jQuery
$(document).ready(function(){

	// Lyssningsformaten
	$("#toggle_listening_formats").click(function() {
		$("#listening_formats").animate({ 
			"height": "toggle",
			"opacity": "1"
		}, 200);
		
	},function(){
		$("#listening_formats").animate({ 
			"height": "toggle",
			"opacity": "0"
		}, 200);
	});

	// Login / register
	$("a.toggle_login").click(function() {
		$("#registerlogin_2").animate({ 
			"height": "toggle",
			"opacity": "1"
		}, 200);
		$("#registerlogin_1").animate({ 
			"height": "toggle",
			"opacity": "0"
		}, 200);
		
	},function(){
		$("#registerlogin_2").animate({ 
			"height": "toggle",
			"opacity": "0"
		}, 200);
		$("#registerlogin_1").animate({ 
			"height": "toggle",
			"opacity": "1"
		}, 200);
	});

	$("div.vote_casting a").hover(function(e) {
		//alert('');
		$(this).parent().children("div.current_rating").hide();
	},function() {
		$(this).parent().children("div.current_rating").show();
	});
	
	// Betygsättning
	$("div.vote_casting a").click(function(e){
		
		// Förhindra normal länkklick
		e.preventDefault();
		
		// Plocka ut parametrar
		song_id = get_parameter_from_url("song_id", $(this).attr("href"));
		rating = get_parameter_from_url("rating", $(this).attr("href"));

		var this_rating = $(this);

		// Skicka POST-request
		$.post("/themes/rivendell/functionality/rate.php", { rating: rating, song_id: song_id}, function(xml) {
		
			// Svar från skript (om det är update eller add)
			if ($("action", xml).text() == "add") {
				this_rating.parent().parent().children("span.rating_response").html("Thanks for rating!");
			} else {
				this_rating.parent().parent().children("span.rating_response").html("Updated your rating!");
			}

			// Uppdatera text betyg och röster
			this_rating.parent().parent().children("span.rating_and_voters").html(
				"Average: " + $("average", xml).text() + " (" + $("count", xml).text() + " votes)"
			);
			
			// Sätt rätt betyg i skalan
			new_rating_width = $("average", xml).text() * 30;
			this_rating.parent().children("div.current_rating").width(new_rating_width);

		});
	});
});

// Hämta parametrar från länk-URL:en
function get_parameter_from_url(name, url) {
  name = name.replace(/[\[]/,"\\\[").replace(/[\]]/,"\\\]");
  var regexS = "[\\?&]"+name+"=([^&#]*)";
  var regex = new RegExp( regexS );
  var results = regex.exec( url );
  if( results == null )
    return "";
  else
    return results[1];
}

function attach_rating_functionality() {
	$("div.vote_casting a").click(function(e){
		
		// Förhindra normal länkklick
		e.preventDefault();
		
		// Plocka ut parametrar
		song_id = get_parameter_from_url("song_id", $(this).attr("href"));
		rating = get_parameter_from_url("rating", $(this).attr("href"));

		var this_rating = $(this);

		// Skicka POST-request
		$.post("themes/rivendell/functionality/rate.php", { rating: rating, song_id: song_id}, function(xml) {
		
			// Svar från skript (om det är update eller add)
			if ($("action", xml).text() == "add") {
				this_rating.parent().parent().children("span.rating_response").html("Thanks for rating!");
			} else {
				this_rating.parent().parent().children("span.rating_response").html("Updated your rating!");
			}

			// Uppdatera text betyg och röster
			this_rating.parent().parent().children("span.rating_and_voters").html(
				"Average: " + $("average", xml).text() + " (" + $("count", xml).text() + " votes)"
			);
			
			// Sätt rätt betyg i skalan
			new_rating_width = $("average", xml).text() * 30;
			this_rating.parent().children("div.current_rating").width(new_rating_width);

		});
	});
	
	// Betygsättning
	$("div.vote_casting a").hover(function(e) {
		$(this).parent().children("div.current_rating").hide();
	},function() {
		$(this).parent().children("div.current_rating").show();
	});
	
}

function update_now_playing(xml, logged_in) {
	$(xml).find('nowplaying').each(function(){
		var title = $(this).find('title').text();
		var url = $(this).find('url').text();
	
		var album = $(this).find('album').text();
		var album_url = $(this).find('album_url').text();
		var album_image = $(this).find('album_image').text();
	
		var artist = $(this).find('artist').text();
		var artist_url = $(this).find('artist_url').text();
		var artist_image = $(this).find('artist_image').text();
	
		var id = $(this).find('id').text();
		var year = $(this).find('year').text();
	
		var rating = $(this).find('rating').text();
		var votes = $(this).find('votes').text();
	
		//alert('['+rating + '][' + votes + ']');
		
		rating_width = (rating * 150) / 5;
		
		var data = '';
		
		// Omslagsbild
		if (album_image != "") {
			data = data + '<p class="nowplaying-image">';
	
			if (album_url != "") {
				data = data + '<a href="'+album_url+'">';
			}
			
			data = data + '<img src="'+album_image+'" class="albumArt" alt="'+album+'">';
	
			if (album_url != "") {
				data = data + '</a>';
			}
	
			data = data + '</p>';
		} else if (artist_image != "") {
			data = data + '<p class="nowplaying-image">';
	
			if (artist_url != "") {
				data = data + '<a href="'+artist_url+'">';
			}
			
			data = data + '<img src="'+artist_image+'" class="albumArt" alt="'+artist+'">';
	
			if (artist_url != "") {
				data = data + '</a>';
			}
	
			data = data + '</p>';
		} else {
			data = data + '<p class="nowplaying-image">';
			data = data + '<img src="/themes/rivendell/images/avatar-default.png" class="albumArt" alt="">';
			data = data + '</p>';
		}
	
		// Låttitel
		data = data + '<p class="nowplaying-songtitle"><a href="' + url + '">';

		// Minska storlek om den riskerar att bryta på flera rader
		if (title.length > 25) {
			data = data + '<span class="song song-smaller">' + title + '</span>';
		} else {
			data = data + '<span class="song">' + title + '</span>';
		}

		data = data + '</a></p>';
		
		// Betyg
		if (id) {
			data = data + '<div class="voting_and_rating rating_right_column">';
	
				data = data + '<div class="vote_casting">';
					
					if (logged_in == true) {
						data = data + '<a href="themes/rivendell/functionality/rate.php?song_id='+id+'&amp;rating=1" class="r1_unit rater" title="1 out of 5" rel="nofollow">1</a>';
						data = data + '<a href="themes/rivendell/functionality/rate.php?song_id='+id+'&amp;rating=2" class="r2_unit rater" title="2 out of 5" rel="nofollow">2</a>';
						data = data + '<a href="themes/rivendell/functionality/rate.php?song_id='+id+'&amp;rating=3" class="r3_unit rater" title="3 out of 5" rel="nofollow">3</a>';
						data = data + '<a href="themes/rivendell/functionality/rate.php?song_id='+id+'&amp;rating=4" class="r4_unit rater" title="4 out of 5" rel="nofollow">4</a>';
						data = data + '<a href="themes/rivendell/functionality/rate.php?song_id='+id+'&amp;rating=5" class="r5_unit rater" title="5 out of 5" rel="nofollow">5</a>';							
					}
					data = data + '<div class="current_rating" style="width: '+rating_width+'px;"></div>';
				data = data + '</div>';
				data = data + '<span class="rating_response"></span>';
	
			data = data + '</div>';
		} else {
			data = data + '<div class="voting_and_rating rating_right_column">';
				//data = data + '<div class="vote_casting"></div>';
				//data = data + '<span class="rating_response"></span>';
			data = data + '</div>';
		}
	
		// Album
		data = data + '<p class="nowplaying-album">';
		if (album != "") {
			data = data + '<a href="' + album_url + '"><span class="album">' + album + '</span></a>';
		}
		data = data + '</p>';

		// Artist
		data = data + '<p class="nowplaying-artist">';
		if (artist != "") {
			data = data + '<a href="' + artist_url + '"><span class="artist">' + artist + '</span></a>';
		}
		data = data + '</p>';
		

		// År
		data = data + '<p class="nowplaying-year">';
		if (year != "") {
			data = data + '<span class="year">' + year + '</span>';
		}	
		data = data + '</p>';
	
		$("#divNowPlaying").fadeOut(1000, function(){
			$("#divNowPlaying").html(data);
			
			// Koppla på events
			attach_rating_functionality();
			$("#divNowPlaying").fadeIn(1000);
		});		

		//$("#divNowPlaying").html(data);
		
		// Koppla på events på betygsättningen
		//attach_rating_functionality();
	});
}
