/** 
 * Plugin para el funcionamiento del index
 * @param {String} options	Parámetros de configuración
 */
jQuery.fn.ajaxIndex = function(options){
    /** 
     * Objeto con la configuración
     * @var {Object}
     */
    var settings = jQuery.extend({
        domain: '',//Dominio
        baseUrl: '/',//root path
        flowPath: '/public/flowplayer/',//Path al flowplayer
        videoPath: '/public/attachments/videos/', //path a los videos de flash
        imagesUrl: 'public/imagenes/', //ruta a las imágenes
        urlPhpCats: 'index/listadocats',//url al controller con las categorías 
        urlPhpList: 'index/listadovids',//url al controller con los vídeos
        urlPhpAdd: 'index/addToPlaylist', //usl al controller para añadir al playlist
        urlPhpDel: 'index/delFromPlaylist', //usl al controller para borrar al playlist
        urlPhpPlayList: 'index/listPlaylist',//url al controller con la lista de vídeos del playlist
        urlActiveLive: 'index/activelive',//url para determinar si hay directos en el inicio
        urlLocalizador: 'index/localizacion',//Urll para el cambio de idioma
        urlLocaleVideo: 'index/videolang',//Url al cambio de vídeo al cambiar de idioma
        urlStatic: 'index/static',//Url para el cambio de partes estáticas de la página
        urlBuscadorName: 'index/buscador',//Url para optener el nombre del resutlado del buscador
        urlLiveVideo: 'index/livevideo', //Url con los datos del vídeo directo 
        urlLivePrograms: 'index/liveprograms',//Url a la programación de directo
        urlShare: 'index/shareflash',//Url para aumentar el contador de reproducciones y logs de diferidos
        urlShareLive: 'index/sharelive',//Url para aumentar el contador de reproducciones y logs de directos
        urlLiveChannel: 'index/livechannel',//Url para cargar un directo externo
        urlIframe: 'index/loadiframe',//Url para la carga de un iframe
        urlCss: 'index/changecss',//Url para cargar la css del área
        buscadorLiveId: '',//Id del buscador de directos
        destacadosId: '',//Id del botón del destacados
        fechaInicio: '',//Id del input de búsqueda fecha de inicio
        tituloBusLive: '',//Id del input de búsqueda por título
        buscadorId: '',//Id del buscador
        playlistId: '',//Id del playlist
        seleccionMsgId: '',//Id con los mensajes del playlist
        canalResultadosId: '',//Id con el nombre del canal en la columna de videos
        cargadoCanalesId: '',//Id del div con la carga de los canales
        campoBusqueda: '',//Id del input de búsqueda
        idVideoPlaying: '',//Id del vídeo reproduciéndose
        videosId: '',//Id del div donde se vuelcan los vídeos
        paginacionId: '', //Id del dv donde se vuelca la paginación
        paginacionIdPl: '', // Id del dv donde se vuelca la paginación del playlist
        channelId: '',//Id del canal elegido
        cerrarIframe:'',//Id del enlace para cerrar el iframe
        channelName: '',//Nombre del canal elegido (o destados o resultados de la búsqueda)
        canalesId: '',//Id del div donde se vuelcan los canales
        videoPlayingId: '',//Id del div donde se indica el nombre del vídeo reproduciéndose.
        videoPlayingFile: '',//Nombre del archivo reproduciéndose
        localizadorClass: '',//Clase del div con el área elegida
        playerButtonsId: '',//Id del div con los botones del player
        actualPage: '', //Número de página actual
        numeroPaginas: '',//Número de páginas
        actualPagePl: '', //Número de página actual del playlist
        numeroPaginasPl: '',//Número de páginas del playlist
        contentHolder: '',//Id del div del player
        player: '',//Objeto con el reproductor
        playerId: '', //Id del embed del player
        plegarId: '',//Imagen para plegar el arbol de categorías
        playerWidth: '',//Anchura del reproductor
        playerHeight: '',//Altura del reproductor
        loadedVideos: '',//Videos sacados por el listado
        urlVideo: '', //Id de vídeo pasado por url
        locale: '',//Idioma
        initVideoFile: '',//Video inicial. Cambia el insertar de nuevo el player de flash
        playlistText: '',//Id del div para los mensajes del playlist
        changeLangUrl: '',//Variables a pasar sacar el listado de vídeos al cambiar de idioma
        changeLangUrlpl: '',//Variables a pasar sacar el listado de vídeos al cambiar de idioma
        liveMessageId: 'liveMessageId',//Div con mensajes de directo
        primerNivel: 'primerNivel',//Id del enlace para sacar las categorias
        liveMessageId: 'liveMessageId',//Mensajes de estado de la reproducción en directo
        directoDivId: '',//Id de div con la programación de directo
        liveType: '',//Tipo de directo, p2p o streaming
        channelObj: '',//Objeto de los canales
        bannerObj: '',//Objeto de los banners
        buscadorVideosObj: '',//Onjeto del buscador de vídeos        
        videoListObj: '',//Objeto con el listado de videos
        playlistObj: '',//Objeto con el playlist
        liveListObj: '',//Objeto con el listado de directos
        canalInicial: {
            es: 'Destacados',
            en: 'highlights'
        },//Nombre de los canales iniciales
        playerObj: '',//Objeto con el player
        externalFrame: '',//Div donde se carga un frame externo
        arbolCat: '',//Indica si se muestran las categorías como arbol o no
        inicioCanal: ''//Botón que muestra los canales iniciales
    }, options);
    
    ////////////////////////////////Información////////////////////////////    
    /** 
     * Cambia la class del vídeo activo, en el listado y en el playlist
     * @param {string} idVideo	Id del vídeo activo
     */
    activeDivVideo = function(idVideo){
        jQuery(".play_pl_on").attr({
            className: "item"
        });
        jQuery(".play_on").attr({
            className: "item"
        });
        jQuery("#video_pl_" + settings.idVideoPlaying).attr({
            className: "play_pl_on"
        });
        jQuery("#video_" + settings.idVideoPlaying).attr({
            className: "play_on"
        });
    }
    ////////////////////////////////Acciones////////////////////////////    
    
    /** 
     * Cambia el idioma de la aplicación
     * @param {string} lang	Nuevo idioma
     */
    changeLocale = function(lang){
        settings.locale = lang;
        //Sustituimos la variable local por la que corresponda, pj. locale=es& por locale=en&
        var regularExp = /locale=[a-z]*&/;
        var newUrl = settings.changeLangUrl.replace(regularExp, 'locale=' + settings.locale + '&');
        if (settings.changeLangUrlPl) {//Cambia el listado del playlist de idioma, si existe el playlist.
            var newUrlPl = settings.changeLangUrlPl.replace(regularExp, 'locale=' + settings.locale + '&')
            showPlayList(newUrlPl);
        }
        showList(newUrl);//Cambia el listado de vídeos de idioma	
        var newUrlLive = settings.urlLive.replace(regularExp, 'locale=' + settings.locale + '&');
        showLive(newUrlLive);
        showCat(0, true);
        //Localizador
        jQuery.ajax({
            beforeSend: function(){
                jQuery("#" + settings.cargadoCanalesId).replaceWith('<div id="' + settings.cargadoCanalesId + '"><img src="' + settings.imagesUrl + 'ajax-loading.gif"></div>');
            },
            type: "POST",
            dataType: "json",
            url: settings.baseUrl + settings.urlLocalizador,
            data: "locale=" + settings.locale + "&id_cat=" + settings.channelId,
            success: function(msg){
                //Crea un div por canal
                for (i = 0; i < msg.length; i++) {
                    nombreCanal(msg);
                    localizador(msg);
                }
            }
        })
        //Carga el vídeo en el idioma
        switch (settings.player.identificador) {
            case 'flowplayer':
                jQuery.ajax({
                    type: "POST",
                    dataType: "json",
                    url: settings.baseUrl + settings.urlLocaleVideo,
                    data: "locale=" + settings.locale + "&id_video=" + settings.idVideoPlaying,
                    success: function(msg){
                        playVideo(settings.idVideoPlaying, msg[0]['file']);
                        videoName(msg[0]['titulo'], msg[0]['descripcion']);
                    }
                })
                break;
            case 'winplayer':
                jQuery.ajax({
                    type: "POST",
                    dataType: "json",
                    data: "locale=" + settings.locale + "&id_video=" + settings.liveId,
                    url: settings.baseUrl + settings.urlLiveVideo,
                    success: function(msg){
                        videoName(msg[0]['titulo'], msg[0]['descripcion']);
                    }
                })
                break;
        }
        //Componentes estáticos de la página que se cargan al inicios		
        jQuery.ajax({
            type: "POST",
            dataType: "json",
            url: settings.baseUrl + settings.urlStatic,
            data: "locale=" + settings.locale,
            success: function(msg){
                jQuery("#" + settings.playlistText).text(msg['playlist']);
                //Varios
                jQuery("#primerNivel").attr("title", msg['infoIcono']);
                jQuery("#primerNivel").text(msg['seleccione']);
                jQuery("#playlistText").text(msg['seleccion']);
                jQuery("#directosTitle").text(msg['directos']);
                //Botones superiores del player
                jQuery("#play_live").text(msg['directos']);
                jQuery("#player_opinion").text(msg['opinion']);
                jQuery("#player_recomendar").text(msg['recomendar']);
                //Footer
                jQuery("#footerQuien").text(msg['quienes']);
                jQuery("#footerQuien").attr({
                    href: settings.baseUrl + 'quien?locale=' + lang
                });
                jQuery("#footerStreaming").text(msg['streaming']);
                jQuery("#footerStreaming").attr({
                    href: settings.baseUrl + 'streaming?locale=' + lang
                });
                jQuery("#footerPlataforma").text(msg['plataforma']);
                jQuery("#footerPlataforma").attr({
                    href: settings.baseUrl + 'plataforma?locale=' + lang
                });
                jQuery("#footerContacto").text(msg['contacto']);
                jQuery("#footerContacto").attr({
                    href: settings.baseUrl + 'contacto?locale=' + lang
                });
                jQuery("#footerAyuda").text(msg['ayuda']);
                jQuery("#footerAyuda").attr({
                    href: settings.baseUrl + 'ayuda?locale=' + lang
                });
                jQuery("#footerLegal").text(msg['legal']);
                jQuery("#footerLegal").attr({
                    href: settings.baseUrl + 'legal?locale=' + lang
                });
                jQuery("#footerCondiciones").text(msg['condiciones']);
                jQuery("#footerCondiciones").attr({
                    href: settings.baseUrl + 'condiciones?locale=' + lang
                });
                jQuery("#footerDesarrolado").text(msg['desarrollado']);
                jQuery("#footerDesarrolado").attr({
                    href: settings.baseUrl + 'desarrollado?locale=' + lang
                });
                jQuery("#servicioStreaming").text(msg['serviciosStreaming']);
                jQuery("#disenoWeb").text(msg['diseno']);
                jQuery("#registro").text(msg['registro']);
                //Buscador
                jQuery("#buscadorLiveId").attr("value", msg['buscar']);
                jQuery("#buscadorTitulo").text(msg['buscador']);
                //Buscador directos
                jQuery("#buscadorId").attr("value", msg['buscar']);
                jQuery("#buscadorTituloLive").text(msg['buscadorDirectos']);
                jQuery("#buscaTitulo").text(msg['tituloBusqueda']);
                jQuery("#buscaFecha").text(msg['fechaInicio']);
            }
        })
        //Imágenes
        jQuery("#player_embed").attr({          
		    src: settings.baseUrl + settings.imagesUrl + settings.locale + '/boton_util_1.jpg'
        });
        jQuery("#player_opinion").attr({
            src: settings.baseUrl + settings.imagesUrl + settings.locale + '/boton_util_send.jpg'
        });
        jQuery("#player_recomendar").attr({
            src: settings.baseUrl + settings.imagesUrl + settings.locale + '/boton_util_send.jpg'
        });
        jQuery("#player_add").attr({
            src: settings.baseUrl + settings.imagesUrl + settings.locale + '/boton_util_add.jpg'
        });
        //Cabecera
        jQuery("#header").attr({
            className: "header_" + settings.locale
        });
        showPlayList();
    }
    /** 
     * Indica el nombre y descripción del video
     * @param {string} nombreVideo	Nombre del vídeo
     * @param {string} descripcion	Descripción del vídeo
     */
    videoName = function(nombreVideo, descripcion){
    
        jQuery("#" + settings.videoPlayingId).replaceWith('<div id="' + settings.videoPlayingId + '" </div>');
        jQuery("#" + settings.videoPlayingId).append('<strong>' + nombreVideo + '</strong>: ');
        jQuery("#" + settings.videoPlayingId).append(descripcion);
    }
    
    /** 
     * lanza la ventana de recomendar vídeo
     * @param {int} idVideo	Id del vídeo
     */
    recomendarVideo = function(idVideo){
        if (idVideo == null) {
            idVideo = settings.idVideoPlaying;
        }
       // winRef = window.open("recomendar?url=" + settings.domain + "&id_video=" + idVideo + "&locale=" + settings.locale, 'recomendar'/*, 'left=20,top=20,width=500,height=580,toolbar=1,resizable=0'*/);
     var url = "recomendar?url=" + settings.domain + "&id_video=" + idVideo + "&locale=" + settings.locale;
	  if (settings.player.stop) {
                    settings.player.stop();
                }
                jQuery("#" + settings.contentHolder).css('display', 'none');
                jQuery("#" + settings.videosId).css('display', 'none');
                jQuery("." + settings.externalFrame).css('display', 'block');
                jQuery("." + settings.externalFrame + " > iframe").attr('src', url);
	}
    /** 
     * Lanza el formualario para enviar email de opinión
     */
    opinion = function(){
      //  winRef = window.open("opinion?locale=" + settings.locale + "&id_video=" + settings.idVideoPlaying, 'opinion'/*, 'left=20,top=20,width=500,height=580,toolbar=1,resizable=0'*/);
   	var url = "opinion?locale=" + settings.locale + "&id_video=" + settings.idVideoPlaying;
	 if (settings.player.stop) {
                    settings.player.stop();
                }
                jQuery("#" + settings.contentHolder).css('display', 'none');
                jQuery("#" + settings.videosId).css('display', 'none');
                jQuery("." + settings.externalFrame).css('display', 'block');
                jQuery("." + settings.externalFrame + " > iframe").attr('src', url);	
    }
    /** 
     * Lanza la página con el código de embed
     */
    embedVideo = function(){
        url = "index/embed?id_video=" + settings.idVideoPlaying;
	    if (settings.player.stop) {
                    settings.player.stop();
                }
                jQuery("#" + settings.contentHolder).css('display', 'none');
                jQuery("#" + settings.videosId).css('display', 'none');
                jQuery("." + settings.externalFrame).css('display', 'block');
                jQuery("." + settings.externalFrame + " > iframe").attr('src', url);
           
	}
    /** 
     * Asocia el evento para cambiar de idioma
     * @param {string} lang	Idioma
     */
    langLink = function(lang){
        jQuery("#img_" + lang).bind("click", function(){
            changeLocale(lang)
        });
    }
    //Acciones al cargar la página
    jQuery(document).ready(function(){
        //Botones
        /*
         jQuery("#play_live").bind("click", function(){
         playLive()
         });
         */
        jQuery("#player_embed").bind("click", function(){
            embedVideo(null)
        });
        jQuery("#player_opinion").bind("click", function(){
            opinion()
        });
        jQuery("#player_recomendar").bind("click", function(){
            recomendarVideo(null)
        });
        jQuery("#player_add").bind("click", function(){
            addToPlaylist(null)
        });
        for (var key in settings.localeKeys) {
            langLink(key)
        }
        var navigatorVersion = navigator.appVersion;
        var regularExp6 = /MSIE 6.0/;
        var regularExp7 = /MSIE 7.0/;
        if (regularExp6.test(navigatorVersion) == true && regularExp7.test(navigatorVersion) == false) {
            jQuery("#" + settings.canalesId).attr("id", "canalesIE");
            settings.canalesId = 'canalesIE';
        }
        jQuery("#" + settings.destacadosId).bind("click", function(){
            settings.channelObj.selectedChannel('destacado');
            settings.channelObj.nombreCanal(settings.canalInicial[settings.locale]);
            showList("destacado=1&locale=" + settings.locale);
        });
        //Reproductor
        settings.playerObj = new player(settings)
        //Canales
        settings.channelObj = new channels(settings);
        //Localizador de canal inicial
        settings.channelObj.selectedChannel('destacado');//marca el canal incial, destacados;	       
       
         //Banners
         settings.bannerObj = new banners(settings.baseUrl);
          /*
         //Buscador de vídeos
         settings.buscadorVideosObj = new buscadorVideos(settings);
         //Buscador de directos
         settings.buscadoLiveObj = new buscadorLive(settings);
         //Playlist
         settings.playlistObj = new playlist(settings);         
         */
        //Listado de vídeos
		//Directos
		settings.liveListObj = new liveList(settings);
        settings.videoListObj = new videoList(settings);        
    })
    
}
