/**
* плейлист в плеере
*/
var Playlist =
{
    pane : null,
    api : null,
    playlistsDomElement : null,
    playlistSelector : "#playlist-queue",
    jspPanelSelector : "#playlist-queue .jspPane",
    scrollPanelSelector : ".scroll-pane",
    jspTrackSelector : ".jspTrack",

    /**
     * Переименование плейлиста
     * @param playlist_id
     * @author ilyabazhenov
     */
    renamePlaylist : function (playlist_id, new_name)
    {
        if (playlist_id && playlist_id > 0 && new_name && new_name.length > 0  && $.cookie("auth") == 1)
        {
            $.ajax(
            {
                type: "POST",
                url: "/playlist/renameplaylist/playlist_id/" + playlist_id + "/title/" + encodeURI(new_name) + "/format/ajax/",
                dataType: "json",
                success: function(msg)
                {
                    TConsole.log("renameplaylist response");
                    TConsole.log(msg);
                    $("#playlist-chooser span.playlistId_" + playlist_id).parent().find("a").text(new_name);
                    return true;
                }
            });
        }
        return false;
    },

    /**
     * Создание нового плейлиста. Если вызывать без параметров, то просто создаться новый плейлист,
     * если с параметрами - то сначала создаться новый плейлист, потом в него добавится конент
     * @param content_type
     * @param content_id
     */
    newPlaylist : function (content_type, content_id)
    {
        if ($.cookie("auth") == 1)  //проверяем, авторизованы ли
        {
            window.top.$.fancybox( {href:'#createNewPlaylist', centerOnScroll : true, overlayColor:"black",  overlayOpacity:0.65,  onComplete: function()   //открываем окно
            {
                window.top.$("form#formCreateNewPlaylist").submit(function()    //обработчик формы
                {
                    var new_playlist_title = window.top.$("input#newPlaylistTitle").val();
                    if (new_playlist_title.length == 0) //проверяем, ввели ли название
                    {
                        alert('Пожалуйста, введите имя для нового плейлиста');
                    }
                    else
                    {
                    	window.top.$("form#formCreateNewPlaylist").unbind('submit');
                    	window.top.$("input#newPlaylistTitle").val('');
                        window.top.Playlist.createPlaylist(new_playlist_title, content_type, content_id);
                        $.fancybox.close();
                    }
                    return false;
                });
            }});
        }
        else
        {
            alert('Для работы с плейлистами, необходимо авторизоваться');
        }
    },

    createPlaylistFromTracksAndPlay : function (title, content_ids, play_after, delete_after)
    {
        var newid = 0;
        if (jQuery.isArray(content_ids) !== true) {
            $.makeArray(content_ids);   
        }        
        content_id = content_ids.pop();
        var add_string = "/type/tracks/contentid/" + content_id;
        $.ajax(
        {
            type: "POST",
            async: false,
            url: "/playlist/createplaylist" + add_string + "/format/ajax/",
            data : {title : encodeURI(title)},
            dataType: "json",
            success: function(msg)
            {
                if (msg.status != 'error') {
                    newid = msg.newid;
                } else {
                    alert('Не удалось загрузить все песни. Попробуйте включать по одной.');
                }
            }
        });             
        if (newid > 0) {
            $.each(content_ids, function(key, value) {
                id = newid;
                window.top.Playlist.addToPlaylist('tracks', value, id);
            });
            window.top.Playlist.loadPlaylist(newid, 'user', true, play_after, null, delete_after);
        }        
        
    },
    createPlaylist : function (title, content_type, content_id)
    {
        var add_string = "";
        if ((content_type == "tracks" || content_type == "albums" || content_type == "artist") && content_id > 0)   //если нужно добавить контент..
        {
           add_string = "/type/" + content_type + "/contentid/" + content_id;
        }
        $.ajax(
        {
            type: "POST",
            url: "/playlist/createplaylist" + add_string + "/format/ajax/",
            data : {title : encodeURI(title)},
            dataType: "json",
            success: function(msg)
            {
                if (msg.newid)
                {
                    //добавляем в список плейлистов созданный плейлист
                    window.top.iframeAdapter.getElement("ul.playlist-items.playlists-list").prepend('<li><span class="playlistId_'+ msg.newid +'" style="display:none;"></span><a href="/playlist/user/id/'+msg.newid+'">' + title + '</a></li>');
                    alert('Плейлист создан');
                    return true;
                }
                else
                {
                    alert('При создании плейлиста возникла ошибка');
                    return false;
                }
            }
        });
    },


    /**
     * Загрузка плейлиста в верхнем фрейме
     * @param int playlist_id
     * @param string playlist_type
     * @author ilyabazhenov
     */
    loadPlaylist : function (playlist_id, playlist_type, reload_player, play_after, guid, delete_after_load)
    {
        window.top.Slider.open();
        if (playlist_id != window.top.Pleer.currentPlaylistId || reload_player == true)
        {
            $.cookie('current_playlist_id', playlist_id, {path : '/'});
            $.cookie('current_playlist_type', playlist_type, {path : '/'});
            window.top.$(window.top.Playlist.jspPanelSelector).fadeOut('fast');
			window.top.$(".jspArrow").width("0");	/* хак для стрелочек */
            window.top.$(window.top.Playlist.jspPanelSelector).html('<div class="loading"></div>').fadeIn("fast");
            window.top.$(window.top.Playlist.jspPanelSelector).css('left','0px');
            $.ajax({
                type: "POST",
                url: "/playlist/getplaylist/id/" + playlist_id + "/type/"+playlist_type+"/format/ajax/",
                dataType : "html",
                success: function(msg)
                {
                    window.top.$(window.top.Playlist.jspPanelSelector).html("").css('left','0px');
                    var pane = window.top.$(window.top.Playlist.scrollPanelSelector);
                    var api = pane.data('jsp');
                    api.getContentPane().html(msg);
                    api.reinitialise();
					window.top.$(".jspArrow").width("44");	/* хак для стрелочек */
                    //window.top.Playlist.gotoTrack(window.top.$("."+window.top.Pleer.currentTrackGuid).parent());
                    $.cookie('current_playlist_id', playlist_id, {path : '/'});
                    $.cookie('current_playlist_type', playlist_type, {path : '/'});

                    if (play_after == true && guid)
                    {
                        window.top.Pleer.Play(guid, true, playlist_type, playlist_id);
                    }
                    else if (play_after == true && typeof(guid) == "undefined")
                    {
                        window.top.$(".jspPane li").first().click();
                    }

                    window.top.Pleer.setActivePlayingElements();
                if (delete_after_load == true) {
                    $.ajax({
                        type: "POST",
                        url: "/playlist/delete/playlistid/"+playlist_id+"/format/ajax/",
                        dataType : "html",
                        success: function(msg)
                        {
                        
                        }
                    });
                }
                }
            });
        }
        else
        {
            if (play_after == true && guid)
            {
                window.top.Pleer.Play(guid, true, playlist_type, playlist_id);
            }
        }
         if (location.href.indexOf('radio') != -1 && !window.top.iframeAdapter.checkIframe()) {
             $("#slider div").unbind('click');
         }
        
    },

    /**
     * Перезагрузка скрола в верхнем плейлисте
     * @author ilyabazhenov
     */
    /*scroll_reinitialist : function ()
    {
        var pane = window.top.$(window.top.Playlist.scrollPanelSelector);
        var api = pane.data('jsp');
        api.getContentPane().html(msg);
        api.reinitialise();
    },*/

    /**
     * Добавление трека в плейлист на сервере
     * @param content_type
     * @param content_id
     * @param to_playlist_id
     */
    addToPlaylist : function (content_type, content_id, to_playlist_id)
    {
        if (content_type != null && content_id != null && to_playlist_id != null)
        {
            $.ajax({
                type: "POST",
                url: "/playlist/addtoplaylist/format/ajax",
                dataType : "json",
                data: {id : content_id, content_type : content_type, to_playlist : to_playlist_id},
                success: function(msg)
                {
                    if (msg.status != "ok")
                    {
                        return false;
                    }
                    if (to_playlist_id == window.top.Pleer.currentPlaylistId)
                    {
                        window.top.Playlist.loadPlaylist(to_playlist_id, window.top.Pleer.currentPlaylistType, true);
                    }
                    return true;
                }
            });
        }
        else return false;
    },

	/**
	* играть трек
	*/
	playTrack: function(guid, playlist_id, playlist_type)
    {
        Pleer.Play(guid, true, playlist_type, playlist_id );
	},

	/**
	* инициализация скрола.
	*/
	init: function()
    {
        window.top.Playlist.playlistsDomElement = window.top.$(window.top.Playlist.playlistSelector);
        window.top.Playlist.pane = window.top.$(window.top.Playlist.scrollPanelSelector);
        window.top.Playlist.pane.jScrollPane({animateScroll: true, animateDuration: 800, showArrows: true, arrowButtonSpeed: 300});
        window.top.Playlist.api = window.top.Playlist.pane.data("jsp");
		
		/* хак для стрелочек */
		$(".jspArrow").width("44");	
	},

	/**
	* переходим на текущий трек в плейлисте
	*/
	gotoTrack: function(current)
    {
        if (current != null)
        {
            window.top.Playlist.pane.find('.active').removeClass('active');
            current.addClass("active");

            var trackMargin = parseInt(current.css("marginLeft"))+parseInt(current.css("marginRight"));
            if (window.top.$(window.top.Playlist.jspTrackSelector).size() > 0)
            {
                if (current.offset())
                {
                    var scrollElement = (current.offset().left - trackMargin) - (window.top.Playlist.pane.width()/2 - current.width()) - (current.width()/2);
                }
            }
            window.top.Playlist.api.scrollBy(scrollElement, 0);
        }
		return false;
	},

	/**
	* при изменении окна выставлять трек по центру и переинициализировать скрол.
	*/
	resize: function(){
		var throttleTimeout;
		$(window).resize(function()
	    {
				var elementDisplay = $(window.top.Playlist.playlistsDomElement).css("display");
				if (elementDisplay != "none")
                {
					if ($.browser.msie) {
						/* FIX-IE. При нескольких изменений окна IE — падает при попытке переинициализировать скролл. Потому ставим задержку в 50 милисекунд. */
						if (!throttleTimeout) {
							throttleTimeout = setTimeout(
								function()
								{
									window.top.$(".jspArrow").width("0");	/* хак для стрелочек */
                                                                        if (window.top.Playlist.api != null) {
                                                                            window.top.Playlist.api.reinitialise();
                                                                        }
									window.top.$(".jspArrow").width("44");	/* хак для стрелочек */
									throttleTimeout = null;
								},
								50
							);
						}
					} else {
						window.top.$(".jspArrow").width("0");	/* хак для стрелочек */
                                                if (window.top.Playlist.api != null) {
                                                      window.top.Playlist.api.reinitialise();
                                                }
						window.top.$(".jspArrow").width("44");	/* хак для стрелочек */
					}
					var current = $(window.top.Playlist.playlistsDomElement).find(".active").first();
                    if (current.hasClass("active"))
					    window.top.Playlist.gotoTrack(current);
				}
			}
		);
	}
}
