// Variable que contiene el texto inicial de campo de texto del formulario de búsqueda de videos
var textoBusqueda;

// Reemplaza los enlaces de la programación
function reemplazarDestinoEnlacesProgramacion() {
	$("#programacion > li > p > a[href*='tratarAplicacionVideo']").each(
		function(){
			var enlace = $(this).attr("href");
			if (enlace != undefined) {
				enlace = enlace.replace(/tratarAplicacionVideo/, "cargarFichaVideoAjax"); 
				$(this).unbind("click");
				$(this).click(function(){
					enviarPeticionFicha(enlace);
					cambiarVideoActivo($(this));
					return false;
				});
			}
		}
	);
}

// Reemplaza los destinos de los enlaces del listado de videos
function reemplazarDestinoEnlacesListado() {

	// Enlaces del listado de resultados que cargarían una ficha
	$(".listavideos > li > a[href*='tratarAplicacionVideo']").each(function(){cambiarEnlacesFichaListado($(this));});
	$(".listavideos > li > div > span > a[href*='tratarAplicacionVideo']").each(function(){cambiarEnlacesFichaListado($(this));});
	
	// Enlaces de la paginacion
	$(".paginacion > ul > li > a[href*='tratarAplicacionVideo']").each(function(){cambiarEnlacesListado($(this));});
	$(".listado > .anterior > a[href*='tratarAplicacionVideo']").each(function(){cambiarEnlacesListado($(this));});
	$(".listado > .siguiente > a[href*='tratarAplicacionVideo']").each(function(){cambiarEnlacesListado($(this));});
	
	// Enlaces del listado de categorías
	$("#listadoCategorias > li > a").each(function(){cambiarEnlacesListado($(this));});
}

// Reemplaza el action del buscador de videos
function reemplazarActionBuscador() {
	// Action del formulario
	var action = $("#videoForm").attr("action");
	if (action != undefined && !action.match("Ajax")) {	
		action = action.replace(/tratarAplicacionVideo/, "tratarAplicacionVideoAjax");
		$("#videoForm").attr("action", action);
		$("#videoForm").unbind("submit");
		$("#videoForm").submit(	function(){
									if ($("#buscarvideo").val() == textoBusqueda) {	// No se ha cambiado el texto de búsqueda
										$("#buscarvideo").val('');
									}
									enviarPeticionListado(action + '?' + $("#videoForm").serialize());
									return false;
								});		
	}
	
}

// Cambia los href de los enlaces del listado para que invoquen al action con Ajax
function cambiarEnlacesListado(objeto) {
	var enlace = $(objeto).attr("href");
	if (enlace != undefined) {
		enlace = enlace.replace(/tratarAplicacionVideo/, "tratarAplicacionVideoAjax");
		$(objeto).unbind("click");
		$(objeto).click(function(){
			enviarPeticionListado(enlace); 
			return false;
		});
	}
}

// Cambia los href de los enlaces a fichas del listado por la llamada al action con ajax
function cambiarEnlacesFichaListado(objeto) {
	var enlace = $(objeto).attr("href");
	if (enlace != undefined) {
		enlace = enlace.replace(/tratarAplicacionVideo/, "cargarFichaVideoAjax");
		$(objeto).unbind("click");
		$(objeto).click(function(){
			enviarPeticionFicha(enlace);
			cambiarVideoActivo($(objeto)); 
			return false;
		});
	}
}

// Cuando se realiza un cambio de video en el reproductor, hay que cambiar cual es el video activo
function cambiarVideoActivo(enlace) {

	$(".activo").remove();
	
	// Reemplaza los identificadores del buscador y los enlaces de paginación y categoria	
	var identificador = extraerIdentificadorURL($(enlace).attr("href"));
	if (identificador > 0) {
		$("#videoForm #identificador").val(identificador);
		$("#listadoCategorias > li > a").each(function(){ cambiarIdentificadorEnlace($(this), identificador); });
		$(".paginacion > ul > li > a[href*='tratarAplicacionVideo']").each(function(){ cambiarIdentificadorEnlace($(this), identificador); });
		$(".listado > .anterior > a[href*='tratarAplicacionVideo']").each(function(){ cambiarIdentificadorEnlace($(this), identificador); });
		$(".listado > .siguiente > a[href*='tratarAplicacionVideo']").each(function(){ cambiarIdentificadorEnlace($(this), identificador); });		

		var caja = $("#video" + identificador + " .conimg");
		if (caja != null && caja != undefined) {
			$(caja).append("<span class=\"activo\"><img src=\"pages/img/es/aplicaciones/reproducir.gif\"/></span>");
		}

	}
	
}


// Petición AJAX que reemplaza el listado de videos
function enviarPeticionListado(enlace) {
	mostrarCargandoListado();
	$.ajax({
		type: "POST",
		url: enlace,
		success:function(data){
					$("#videos .listado").html(data).hide().fadeIn();
					inicializar();
				},
		error:	function() {
					$("#videos .listado").html("No se ha podido recuperar el listado de videos").hide().fadeIn();
				}
	});	
	return false;
}

// Petición AJAX que reemplaza el reproductor de video
function enviarPeticionFicha(enlace) {
	mostrarCargandoFicha();
	$.ajax({
		type: "POST",
		url: enlace,
		success:function(data){					
					$("#video").html(data).fadeIn();
					inicializar();
				},
		error:	function() {
					$("#video").html("No se ha podido recuperar el video").hide().fadeIn();
				}
	});	
	return false;
}

// Muestra una imagen mientras se realiza la petición
function mostrarCargandoListado() {
	$("#videos .listado").html("<div style=\"width:100%; height:200px; text-align:center; padding-top:100px;\"><img src=\"pages/img/es/aplicaciones/ajax-loader.gif\" style=\"float:none;\"/></div>");
}

// Muestra una imagen mientras se realiza la petición
function mostrarCargandoFicha() {
	var altura = $("#video .objeto object").attr("height");
	$("#video .objeto").html("<div style=\"width:100%; height:" + altura + "px; text-align:center;\"><img style=\"padding-top:140px;\" src=\"pages/img/es/aplicaciones/ajax-loader-negro.gif\" style=\"float:none;\"/></div>");
}

// Extrae el identificador de una url, del tipo: http://.../tratarAplicacionVideo.do?identificador=50
function extraerIdentificadorURL(url) { 
	var identificador = 0;
	if (url != '') {
		identificador = url.match(/(\d)*$/)[0];
	}
	return identificador;
}

// Cambia el identificador de un enlace por uno nuevo
function cambiarIdentificadorEnlace(objeto, identificador) {
	$(objeto).attr("href", $(objeto).attr("href").replace(/identificador=(\d)*/, 'identificador='+identificador));
}


// Inicialización
function inicializar() {
	reemplazarDestinoEnlacesProgramacion();
	reemplazarDestinoEnlacesListado();
	reemplazarActionBuscador();
	textoBusqueda = $("#buscarvideo").val();
}

$(document).ready(inicializar);
