/**
 * @author enrique
 */
playlist = function(settings){
    /** 
     * Saca el listado de los vídeos del playlist
     * @param {string} urlVars	Variables a pasar en la consulta al servidor
     */
    showPlayList = function(urlVars){
        jQuery.ajax({
            beforeSend: function(){
                jQuery("#" + settings.playlistId).replaceWith('<div id="' + settings.playlistId + '"><img src="' + settings.imagesUrl + 'ajax-loading.gif"></div>');
            },
            type: "POST",
            dataType: "json",
            data: "locale=" + settings.locale + "&" + urlVars,
            url: settings.baseUrl + settings.urlPhpPlayList,
            success: function(msg){
                jQuery("#" + settings.playlistId).replaceWith('<div id="' + settings.playlistId + '" </div>');
                jQuery("#" + settings.paginacionIdPl).replaceWith('<div id="' + settings.paginacionIdPl + '" </div>');
                if (msg['numeroResultados'] > 0) {//Si es una cadena no hay que hacer nada, no hay v�deos					   	
                    for (i = 0; i < msg['resultados'].length; i++) {
                        playlistContent(msg['resultados'][i]);
                    }
                    settings.numeroPaginasPl = msg['num_paginas'];
                    settings.actualPagePl = msg['pagina_actual'];
                    if (settings.actualPagePl == null || settings.actualPagePl == 0) {
                        settings.actualPagePl = 1
                    };
                    paginaPrePl(msg['paginacion']);
                    for (keyVar in msg['paginacion']) {
                        paginacionContentPl(keyVar, msg['paginacion'][keyVar]);
                    }
                    paginaSigPl(msg['paginacion']);
                }
                else {
                    videosVacioPl(msg['vacio']);
                }
            }
        })
    }
    /** 
     * Crea en enlace a la página en el playlist
     * @param {array} numPag Número de la página
     * @param {string} link	Enlaces de la paginación
     */
    paginacionContentPl = function(numPag, link){
        numberDivs = 'pag_num_pl_' + keyVar;
        idLink = 'pag_link_pl_' + keyVar;
        jQuery("#" + settings.paginacionIdPl).append('<div class="page"><a href="javascript:;" id="' + idLink + '"> ' + keyVar + '</a></div>');
        paginacionEventsPl(numPag, link);
    }
    /** 
     * Asocia un evento para la paginación del playlist
     * @param {array} numPag Número de la página
     * @param {string} link	Enlace de la paginación
     */
    paginacionEventsPl = function(numPag, link){
        if (numPag == settings.actualPagePl) {
            jQuery("#pag_link_pl_" + numPag).attr({
                className: "page_on"
            });
            settings.changeLangUrlPl = link;
        }
        else {
            jQuery("#pag_link_pl_" + numPag).attr({
                className: "page_off"
            });
            jQuery("#pag_link_pl_" + numPag).bind("click", function(){
                showPlayList(link)
            });
        }
    }
    /** 
     * Crea los divs de los vídeos del playlist
     * @param {array} dataVideo	Variables a pasar en la consulta al servidor
     */
    playlistContent = function(dataVideo){
        var idVideo = dataVideo['id'];
        var idDivVideo = 'video_pl_' + idVideo;
        var titulo = dataVideo['titulo'];
        var tituloCortado = dataVideo['titulo_cortado'];
        var descripcion = dataVideo['descripcion'];
        var fecha = dataVideo['fecha_insercion'];
        var file = dataVideo['file'];
        jQuery("#" + settings.playlistId).append('<div id="' + idDivVideo + '" class="item"></div>');
        //jQuery("#" + idDivVideo).append('<div class="info">');
                
        jQuery("#" + idDivVideo).append('<div class="name">' + tituloCortado + '</div>');
                
        jQuery("#" + idDivVideo).append('<div class="description">' + descripcion + '</div>');
        
        jQuery("#" + idDivVideo).append('<div class="icons">' +
        '<a href="javascript:;" id="pl_ply_' +
        idVideo +
        '" title="Reproducir vídeo"><img src="' +
        settings.imagesUrl +
        'icon_playlist_play.gif" alt="Reproducir vídeo"></a>' +
        '<a href="javascript:;" id="pl_del_' +
        idVideo +
        '" title="Eliminar vídeo"><img src="' +
        settings.imagesUrl +
        'icon_playlist_delete.gif" alt="Eliminar vídeo"></a>');
        
        jQuery("#" + idDivVideo).append('<div class="cleaner"><img src="' + settings.imagesUrl + 'pixel.gif"></div>');
        
        playlistEvents(dataVideo);
        activeDivVideo(idVideo);
    }
    /** 
     * Asocia los eventos a los vídeos del playlist
     * @param {array} dataVideo	Variables a pasar en la consulta al servidor
     */
    playlistEvents = function(dataVideo){
        jQuery("#pl_ply_" + dataVideo['id']).bind("click", function(){
            playVideo(dataVideo['id'], dataVideo['file'])
        });
        jQuery("#pl_ply_" + dataVideo['id']).bind("click", function(){
            videoName(dataVideo['titulo'], dataVideo['descripcion'])
        });
        jQuery("#pl_del_" + dataVideo['id']).bind("click", function(){
            delFromPlaylist(dataVideo['id'])
        });
    }
    /** 
     * Muestra la página previa del listado en el playlist
     * @param {array} dataPag	Enlaces de la paginación
     */
    paginaPrePl = function(dataPag){
        var anterior = settings.actualPagePl * 1 - 1;
        if (anterior <= 0) {
            anterior = 1;
        }
        jQuery("#" + settings.paginacionIdPl).append('<div id="pag_pre_pl"></div>');
        jQuery("#pag_pre_pl").append('<a href="javascript:;" id="link_pag_pre_pl"><img src="' + settings.imagesUrl + 'icon_listado_page_pre.jpg"></a>');
        if (settings.actualPagePl > 1) {
            jQuery("#link_pag_pre_pl").bind("click", function(){
                showPlayList(dataPag[anterior])
            });
        }
        else {
            jQuery("#pag_pre_pl").attr({
                className: "disabled"
            });
        }
    }
    /** 
     * Muestra la página siguiente del listado en el playlist
     * @param {array} dataPag	Enlaces de la paginación
     */
    paginaSigPl = function(dataPag){
        var siguiente = settings.actualPagePl * 1 + 1;
        if (siguiente >= settings.numeroPaginasPl) {
            siguiente = settings.numeroPaginasPl;
        }
        jQuery("#" + settings.paginacionIdPl).append('<div id="pag_sig_pl"></div>');
        jQuery("#pag_sig_pl").append('<a href="javascript:;" id="link_pag_sig_pl"><img src="' + settings.imagesUrl + 'icon_listado_page_post.jpg"></a>');
        jQuery("#link_pag_sig_pl").bind("click", function(){
            showPlayList(dataPag[siguiente])
        });
        if (settings.actualPagePl < settings.numeroPaginasPl) {
            jQuery("#link_pag_sig_pl").bind("click", function(){
                showPlayList(dataPag[siguiente])
            });
        }
        else {
            jQuery("#pag_sig_pl").attr({
                className: "disabled"
            });
        }
    }
    videosVacioPl = function(msg){
        jQuery("#" + settings.playlistId).append(msg);
    }
    /** 
     * Añade un vídeo al playlist
     * @param {int} idVideo	Id del vídeo
     */
    addToPlaylist = function(idVideo){
        if (idVideo == null) {
            idVideo = settings.idVideoPlaying;
        }
        jQuery.ajax({
            type: "POST",
            dataType: "json",
            url: settings.baseUrl + settings.urlPhpAdd,
            data: "id_video=" + idVideo,
            success: function(msg){
                if (msg['recargar'] == true) {
                    showPlayList();
                }
                jQuery("#" + settings.seleccionMsgId).empty();
                jQuery("#" + settings.seleccionMsgId).append(msg['msg']);
                setTimeout(function(){
                    jQuery("#" + settings.seleccionMsgId).empty();
                }, 3000);
            }
        })
    }
    /** 
     * Borra un vídeo del playlist
     * @param {int} idVideo	Id del vídeo
     */
    delFromPlaylist = function(idVideo){
        jQuery.ajax({
            type: "POST",
            dataType: "json",
            url: settings.baseUrl + settings.urlPhpDel,
            data: "id_video=" + idVideo,
            success: function(msg){
                showPlayList();
            }
        })
    }
	showPlayList();
}
