/**
 *  Класс для работы с аудиоплеером
 *  @author ilyabazhenov
 */
var Pleer =
{
    //находимся ли мы в iframe
    inFrame : false,
    iFrameObject : null,
	playerBlock : 'player-device',
    //играет ли сейчас что-нибудь
    isPlay : false,
    PleerOptions : {
        AllowScriptAccess : 'always',
        wmode : 'transparent'
    },

    UserPlaylists : {
        playlists : {}
    },
    
    scrollWithPage : false,

    fromPlaylist : true,

    currentTrackGuid : null,
    currentPlaylistId : null,
    currentPlaylistType : null,

    //переменные для flash плеера
    flashvars : {
        sid : $.cookie("PHPSESSID"),                //id сессии берем из кук
        guid : "07926dbced83a8b78637c42d55b18407"   //трек по умолчанию
    },

    /**
     * Инициализация плеера на странице
     * @author ilyabazhenov
     */
    init: function ()
    {
        Pleer.flashvars.guid = $(window.top.document).find('#pleer-guid-default').val();
        Pleer.flashvars.sid = $(window.top.document).find('#pleer-sid').val();
        Pleer.inFrame = window.top!=window.self;
        //если мы не в iframe - то вставляем плеер
        if (Pleer.inFrame == false)
        {
            swfobject.embedSWF( "/swfs/TravaAudio.swf", Pleer.playerBlock, "100%", "40", "9.0.0", "expressInstall.swf", Pleer.flashvars, Pleer.PleerOptions);
            Pleer.currentTrackGuid = Pleer.flashvars.guid;
            
            if ($.cookie('pleer-scroll') == 'true' || $.cookie('pleer-scroll') == 'false')
            {
            	if ($.cookie('pleer-scroll') == 'true')
            	{
            		Pleer.scrollWithPage = true;
            		$(".pin-button").addClass('active');
            	}
            	else
            	{
            		Pleer.scrollWithPage = false;
            		$(".pin-button").removeClass('active');
            	}
            }
        }
    },
      
    initMini : function (guid) {
    	Pleer.flashvars.guid = guid;
    	swfobject.embedSWF( "/swfs/TravaAudioMini.swf", Pleer.playerBlock, "100%", "100", "9.0.0", "expressInstall.swf", Pleer.flashvars, Pleer.PleerOptions);
        Pleer.currentTrackGuid = Pleer.flashvars.guid;
    },

    setActivePlayingElements : function (guid)
    {
        if (window.top.Pleer.fromPlaylist)
        {
            if (guid == null) guid = window.top.Pleer.currentTrackGuid;

            //в верхнем плейлисте
            window.top.Playlist.gotoTrack(window.top.$("." + guid).parent());
            //в таблице плейлистов
            var cur_window = null;
            if (window.top.iframeAdapter.checkIframe())
            {
                cur_window = window.top.Pleer.getIframeElement();
            }
            else
            {
                cur_window = window.top;
            }

            $(Pleer.getIframeElement()).contents().find(".playlist-table td.number .guid."+guid).parent().addClass("active").parent().addClass("active").parent().parent().parent().addClass("active");
        }
    },

    hideActivePlayingElements : function (guid)
    {
        if (guid == null) guid = window.top.Pleer.currentTrackGuid;
        //в таблице плейлистов
        var cur_window = null;
        if (window.top.iframeAdapter.checkIframe())
        {
            cur_window = window.top.Pleer.getIframeElement().contentDocument;
        }
        else
        {
            cur_window = window.top;
        }
        $(Pleer.getIframeElement()).contents().find(".playlist-table td.number .guid."+guid).parent().removeClass("active").parent().removeClass("active").parent().parent().parent().removeClass("active");
        //в верхнем плейлисте
        $(".playlist-play-track.active").removeClass('active');
    },

    getFlashObject : function ()
    {
        return thisMovie(Pleer.playerBlock);
    },

    Play: function(guid, from_playlist, type_playlist, playlist_id)
    {
        // если у нас открыто радио и включают трек из хитов
        if (location.href.indexOf('radio') >= 0) { 
            if ( guid.substr(0, 7) != 'channel') {
                window.top.iframeAdapter.getElement('.play-radio').removeClass('active');
                window.top.iframeAdapter.getElement('.radio .radio-stat').text('Радио выключено');            
            }
        }
        if (from_playlist && from_playlist != "") Pleer.fromPlaylist = true;
        else Pleer.fromPlaylist = false;
        if (type_playlist && type_playlist != "") Pleer.currentPlaylistType = type_playlist;
        if (playlist_id && playlist_id != "")
        {
            Pleer.currentPlaylistId = playlist_id;
            Pleer.fromPlaylist = true;
        }
        else
        {
            Pleer.fromPlaylist = false;
            Pleer.currentPlaylistType = null;
            Pleer.currentPlaylistId = null;
        }
        try
        {
            Pleer.getFlashObject().SendToPleer(guid);
            Pleer.currentTrackGuid = guid;
            if (!playlist_id || playlist_id == "")
            {
                Pleer.getFlashObject().SetNext("");
                Pleer.getFlashObject().SetPrev("");
            }
            return true;
        }
        catch ( e )
        {
            TConsole.log('Pleer play error: ' + e.description);
            return false;
        }
    },

    /**
     * Пауза в текущем проигрываемом треке
     * Вызывается вручную из скриптов
     */
    Pause: function(bool)
    {
        try
        {
            Pleer.getFlashObject().JsPlay(bool);
        }
        catch ( e )
        {
            TConsole.log('error: '+e.description);
        }
    },

    getCurrentTrack : function ()
    {
        return Pleer.currentTrackGuid;
    },


    /**
     * Перестроение в iframe
     * @author ilyabazhenov
     */
    initIframe : function ()
    {
        if (!Pleer.inFrame)
        {
        	Pleer.inFrame = true;
            var height = $("#content-container").height();

            $("#content-container").html('<iframe id="contentFrame" frameborder="0"></iframe>');
            $("#content-container").prepend('<div id="content-loading" style="margin-left:' + ( $(window).width() / 2 - 12) + 'px; margin-top: 200px; "><img src="/images/loader.gif"></div>');
            Pleer.iFrameObject = document.getElementById('contentFrame');
            $(Pleer.iFrameObject).css('overflow', 'hidden');
            $(Pleer.iFrameObject).css('visibility',"hidden");
            $(Pleer.iFrameObject).css('width',"100%");
            $(Pleer.iFrameObject).attr('src', window.location.href + '?iframe=true');

            $(Pleer.iFrameObject).bind('load', function ()
            {
                $("#content-loading").remove();
                $(Pleer.getIframeElement()).css('overflow', 'hidden');
                $(Pleer.getIframeElement()).css('height', $(Pleer.iFrameObject).contents().find('#content-container').height());
                $(Pleer.getIframeElement()).css('width',"100%");
                $(Pleer.getIframeElement()).contents().find('html').css('overflow', 'hidden');
                $(Pleer.getIframeElement()).css('visibility',"visible");
                $(Pleer.getIframeElement()).show();
                window.top.iframeAdapter.scrollTo("#wrap", 0);

                var src = $(Pleer.getIframeElement()).attr('src');
                var new_src = '';
                new_src = src.replace("?iframe=true", "");
                new_src = new_src.replace("&iframe=true", "");
                new_src = new_src.replace(document.location.host, "");
                new_src = new_src.replace('http://', "");

                window.top.document.location.href = "#!" + new_src;
                
                if (!$.browser.msie && (parseInt($.browser.version, 10) != 7 && parseInt($.browser.version, 10) != 8 ))
                {
                    $(window.top.document).find('title').html($(Pleer.getIframeElement()).contents().find('title').html());
                }
                
                window.top.iframeAdapter.getElement("a").bind('click', function ()
                {
                	if ($(this).attr('href') != '' && $(this).attr('href') != '#' && $(this).attr('href').indexOf('download/download') < 0 && $(this).attr('href').indexOf('download/get') < 0)
                    {
                    	iframeAdapter.goTo( $(this).attr('href') );
                        return false;
                    }
                } );
				$("#content-loading").remove();
                window.top.Pleer.setActivePlayingElements();
                TConsole.log('Iframe init complete.');
            });
        }
    },

    /**
     * Возвращает элемент iframe
     */
    getIframeElement : function ()
    {
        if (!Pleer.iFrameObject)
        {
            return window.top.document.getElementById('contentFrame');
        }
        else
        {
            return Pleer.iFrameObject;
        }
    },

    /**
     * Вызывается, когда нужно загрузить в iframe определенный url
     * @param url
     */
    frameLoad : function (url)
    {
        $(window.top.Pleer.getIframeElement()).css('overflow', 'hidden');
        $(window.top.Pleer.getIframeElement()).css('visibility',"hidden");
        $("#content-container").prepend('<div id="content-loading" style="margin-left:' + ( $(window).width() / 2 - 12) + 'px; margin-top: 200px; "><img src="/images/loader.gif"></div>');
        $(window.top.Pleer.getIframeElement()).css('width',"100%");
        window.top.Pleer.getIframeElement().contentDocument.location.href = url;
        $(Pleer.iFrameObject).attr('src', url);
    }
}

    function SendToPleer( Guid )
    {

    }

    /**
     * Метод, вызываемый плеером, когда он начинает играть трек
     * @param guid
     * @author ilyabazhenov
     */
    function JsStreamStart(guid)
    {
        window.top.Pleer.initIframe();
        if (window.top.Pleer.fromPlaylist)
        {
            window.top.Pleer.currentTrackGuid = guid;
            window.top.Pleer.setActivePlayingElements(guid);
        }

        return true;
    }

    /**
     * Метод, вызываемый при инициализации плеера на странице
     * @param bool
     * @author ilyabazhenov
     */
    function getShuffle(bool)
    {
        if ($.cookie("auth") == 1)
        {
            $.ajax({
                type: "POST",
                url: '/playlist/getshuffle/',
                data:{
                    shuffle: bool
                },
                success: function(response) {
                    return new Boolean(response);
                }
            });
        } else return false;
    }


    /**
     * Метод вызываемый плеером, когда пользователь нажимает shuffle (играть в перемешку)
     * @param bool
     * @author ilyabazhenov
     */
    function SetShuffle(bool)
    {
        if ($.cookie("auth") == 1)
        {
            $.ajax({
                type: "POST",
                url: '/playlist/setshuffle/',
                data:{
                    shuffle: bool
                },
                success: function(response) {
                    return new Boolean(response);
                }
            });
        }
    }


    /**
     * 
     * @param guid
     */
    function JsStreamEnd(guid)
    {
        window.top.Pleer.currentTrackGuid = null;
        window.top.Pleer.hideActivePlayingElements(guid);
    }

    /**
     * Метод, вызываемый из плеера, при окончании получения информации о треке
     * @param guid
     * @author ilyabazhenov
     */
    function TrackInfoFetched(guid)
    {
        if (window.top.Pleer.fromPlaylist != true)
        {
            window.top.Pleer.getFlashObject().SetNext("");
            window.top.Pleer.getFlashObject().SetPrev("");
        }
        return false;
    }


    function thisMovie(movieName)
    {
        if (navigator.appName.indexOf("Microsoft") != -1) {
            flowPlayer = parent.window[movieName];
        } else {
            flowPlayer = parent.document[movieName];
        }
        if (flowPlayer == undefined){
            var flowPlayer	= document.getElementById(Pleer.playerBlock);
        }
        return flowPlayer;
    }
