/* ------------------------------------------------------------------------
	For the feature items navigator
------------------------------------------------------------------------- */

(function($) {
	$.fn.playlist = function(settings) {
		settings = jQuery.extend({
					animationSpeed: 'fast', /* fast/slow/normal */
					playlistHeight: 75,
					logged: false
				}, settings);

		var $playlist = $(this);
		var currentPlaylist = 0;
		var playlistJson;

		var defaultHTML = "";
		defaultHTML +=	'<a href="#" class="mp_thumbnail">';
		defaultHTML +=	'	<img src="" alt="" /><span>&nbsp;</span>';
		defaultHTML +=	'</a>';
		defaultHTML +=	'<div class="mp_nav mp_number_nav">';
		defaultHTML +=	'	<ul>';
		defaultHTML +=	'		<li class="disabled"><a href="#" class="b_prev" title="Page précédente">Précédent</a></li>';
		defaultHTML +=	'		<li class="mp_pages"><ul><li class="selected">1</li><li>de 1</li></ul></li>';
		defaultHTML +=	'		<li><a href="#" class="b_next" title="Page suivante">Suivant</a></li>';
		defaultHTML +=	'	</ul>';
		defaultHTML +=	'</div>';
		defaultHTML +=	'<p>';
		defaultHTML +=	'	<strong>Playlist 1</strong><br /><span>10</span> vid&eacute;oclip<span class="plural">s</span>.';
		defaultHTML +=	'	<a class="mp_delete" href="#" title="Supprimer la playlist">Supprimer</a>';
		defaultHTML +=	'</p>';
		defaultHTML +=	'<ul class="mp_song-list">';
		defaultHTML +=	'	<li><a href="#"><span>1</span> <strong>Nom du vidéoclip</strong>  Nom du groupe</a></li>';
		defaultHTML +=	'</ul>';

		initPlaylist();

		$playlist.find('.mp_b_contract').click(function(){
			_close();
			return false;
		});

		$playlist.find('.mp_nav .b_prev').live('click',function(){
			if($(this).hasClass('disabled')) return false;
			if(playlistJson['items'].length == 1) return false;
			_changePlaylist('down');
			return false;
		});
		$playlist.find('.mp_nav .b_next').live('click',function(){
			if($(this).hasClass('disabled')) return false;
			if(playlistJson['items'].length == 1) return false;
			_changePlaylist('up');
			return false;
		});

		function initPlaylist(){
			//LOGGED
			if(settings.logged){
				//$playlist.find('.mp_b_expand').click(function(){
					//$('#playlistLoaderBeforeShown').show();
					$.ajax({
						type: "get",
						cache: false,
						dataType: "json",
						url: "/ajax/getplaylists.jsp",
						success: function(callback){
							$('#playlistLoaderBeforeShown').hide();
							//SHOW HERorHIS PLAYLIST
							if(callback.items != null){ //no error
								playlistJson = eval(callback);
								$playlist.find('.mp_content').empty().html(defaultHTML);
								if(playlistJson['items'].length == 1){
									$playlist.find(".b_next").addClass("disabled");
								}
								_open();
								
								//deletePlaylist registration
                $playlist.find('.mp_delete').live('click',function(){
            			if($(this).hasClass('disabled')) return false;
            			if(playlistJson['items'].length == 0) return false;
            			if(confirm("Voulez-vous vraiment supprimer la playlist '" + playlistJson['items'][currentPlaylist]['text_playlist_name'] + "' ?")){
            			   _deletePlaylist(playlistJson['items'][currentPlaylist]['playlistId']);
            			}
                  return false;
            		});
							}
							//NOTHING IN HERorHIS PLAYLIST
							else{
								$playlist.removeClass('mp_playlists_closed');
							}
						}
						//,error:function(xhr,err,e){ alert( "Error: " + err ); }
					});
					//return false;
				//});
			}
			//NOT LOGGED
			else{			
				$('#playlistLoaderBeforeShown').hide();				
				$playlist.find('.mp_content').empty().html("Cr&#233;ez des playlists personnelles de vid&#233;oclips ou de vid&#233;os d'&#233;mission en vous <a href=\"#\" style=\"color:#dd2118;\" id=\"playlist_login\">connectant au site</a>. Toutes vos vid&eacute;os seront alors sauvegard&eacute;es en un seul endroit.");
				$playlist.find('a').needLogin();
				$playlist.removeClass('mp_playlists_closed');
			}
		}

		function _open(){
			_replaceContent();

			_checkScroll();

			$playlist.removeClass('mp_playlists_closed');
		}

		function _changePlaylist(direction){
			(direction == 'up') ? currentPlaylist++ : currentPlaylist--;
			$playlist.find('.mp_content').fadeOut(settings.animationSpeed, function(){
				$playlist.find('.disabled').removeClass('disabled');

				if(currentPlaylist <= 0){
					currentPlaylist = 0;
					$playlist.find('.b_prev').addClass('disabled');
				}else if(currentPlaylist >= (playlistJson['items'].length-1)){
					currentPlaylist = playlistJson['items'].length-1;
					$playlist.find('.b_next').addClass('disabled');
				}

				_replaceContent();

				$(this).fadeIn();

				_checkScroll();
			});
		}
		
		function _deletePlaylist(playlistId){
			var responseObj;
			var numberOfPlaylists = 0;
      $.ajax({
				type: "get",
				cache: false,
				dataType:"json",
				data:"playlistId="+playlistId,
				url: "/ajax/deletePlaylist.jsp",
				async: false,
				success: function(callback){
				  responseObj = eval(callback);
				  numberOfPlaylists = responseObj['numberOfPlaylists'];
				 }
        });
        
        if(numberOfPlaylists == 0){
          $playlist.find('.mp_content').empty().html("Pour ajouter un vid&eacute;oclip ou une vid&eacute;o d'&eacute;mission, vous n'avez qu'&agrave; cliquer sur l'ic&ocirc;ne &laquo; Playlist + &raquo; &agrave; la droite du lecteur vid&eacute;o. ");   
        }
        else {
          currentPlaylist = 0;
          initPlaylist();
        }
            
		}

		function _replaceContent(){

			// Make sure the scroll is not there if not needed
			if($playlist.find('.jScrollPaneContainer').size() > 0){
				$playlist.find('.jScrollPaneContainer').remove();
				$playlist.find('.mp_content').append('<ul class="mp_song-list"></ul>');
			}

			// Paging
			$playlist.find('.mp_pages li:first').text(currentPlaylist+1);
			$playlist.find('.mp_pages li:last').text('de ' + playlistJson['items'].length);

			// Thumbnail
			$playlist.find('.mp_thumbnail').attr('href',playlistJson['items'][currentPlaylist]['url_thumbnail']);
			$playlist.find('.mp_thumbnail img').attr('src',playlistJson['items'][currentPlaylist]['text_thumbnail']).css({'width':'97px','height':'55px'});

			// Title
			$playlist.find('p strong').text(playlistJson['items'][currentPlaylist]['text_playlist_name']);

			// Length
			$playlist.find('p span:first').text(playlistJson['items'][currentPlaylist]['playlist_details'].length)
			if(playlistJson['items'][currentPlaylist]['playlist_details'].length <= 1){
				$playlist.find('p span.plural').hide();
			}else{
			$playlist.find('p span.plural').show();
			}
			
			//playlistId
			
			
			// Playlist items
			toInject = "";
			for (var i=0; i < playlistJson['items'][currentPlaylist]['playlist_details'].length; i++) {
				toInject += "<li><a href='"+playlistJson['items'][currentPlaylist]['playlist_details'][i]['text_url']+"'><span>"+(i+1)+"</span> <strong>"+playlistJson['items'][currentPlaylist]['playlist_details'][i]['text_videoclip_name']+"</strong>"+playlistJson['items'][currentPlaylist]['playlist_details'][i]['text_artist']+"</a></li>";
			};

			$playlist.find('.mp_song-list').html(toInject);

			// Pager [if a new playlist has been added dynamically]
			if(currentPlaylist < (playlistJson['items'].length-1)){
				$playlist.find('.mp_nav .b_next').removeClass('disabled');
			}

		}

		function _checkScroll(){
			if($playlist.find('.mp_song-list').height() > settings.playlistHeight){
				$playlist.find('.mp_song-list').height(settings.playlistHeight).jScrollPane({scrollbarWidth:14,scrollBarMargin:0});
			}
		}

		function _close(){
			$playlist.addClass('mp_playlists_closed');
		}

	}
})(jQuery);