window.fwk.controllers.player = {};

window.fwk.controllers.player.url_playlist = null;
window.fwk.controllers.player.url_player = null;
window.fwk.controllers.player.url_add_history = null;
window.fwk.controllers.player.url_get_history = null;
window.fwk.controllers.player.url_api = null;
window.fwk.controllers.player.url_api_default = null;
window.fwk.controllers.playerprefijo_default = null;

window.fwk.controllers.currentPlayer = null;

/**
 * Lee los atributos del elemento y arma un json con los datos para ser pasados
 * a la funcion que hace play del contenido
 * @param	element	(object)	El elemento html de donde voy a extraer los datos necesarios
 * @returns (json)
 */
window.fwk.controllers.player.uiElementToJson = function(element) {
	var ret = {
		group_id: element.attr("group_id"),
		content_id: element.attr("content_id"),
		encode_id: element.attr("encode_id"),
		url_api: element.attr("url_api"),
		url_order: element.attr("url_order")
	};
	return ret;
}

window.fwk.controllers.player.playlistNext = function() {
	var total = parseInt($("#carroplaylist").attr("carrTotal"));
	var current = parseInt($("#carroplaylist").attr("carrCurrent"));
	//Me posiciono en el carrusel en la posicion que me corresponde
	if (current+1 < total) {
		$("#carroplaylist").carrouselMoveTo(current+1);
		//disparo el click
		$(".carroplaylist-item-selected").click();
	}	
}

window.fwk.controllers.player.playlistPrevious = function() {
	var current = parseInt($("#carroplaylist").attr("carrCurrent"));
	//Me posiciono en el carrusel en la posicion que me corresponde
	if (current-1 >= 0) {
		$("#carroplaylist").carrouselMoveTo(current-1);
		//disparo el click
		$(".carroplaylist-item-selected").click();
	}	
}

/**
 * Refresca el contenido de la playlist (carrusel)
 * @param object params JSON con los parametros
 */
window.fwk.controllers.player.updatePlaylist = function(params) {
	window.fwk.debugJson(params,"updatePlaylist");
	//Guardo la url con la que se cargo la playlist carrusel
	window.fwk.controllers.player.url_api = params.url_api;
	//Obtengo la playlist
	$.get(window.fwk.controllers.player.url_playlist,params,function(html,textStatus) {
		$("#carroplaylist #pagina").html(html);
		//Obtengo el item en donde me tengo que posicionar
		if (params.url_order == -1 || $("#carroplaylist #pagina > div").length < params.url_order) {
			//Si el nro es mayor a la cantidad del carrousel pongo esto en -1 para que lo pueda calcular mas abajo
			params.url_order = -1;
			//Lo tengo que buscar por group_id
			$("#carroplaylist #pagina div[group_id='"+params.group_id+"']").each(function() {
				if (params.url_order == -1) {
					params.url_order = $(this).parent().children().index(this);
				}
			});
		}
		
		//Si no encontro el orden arriba entonces lo dejo en 0 para que funcione bien
		//el calculo de prender y apagar los botones
		if (params.url_order == -1) {
			params.url_order = 0;
		}
		
		//alert("url_order calculado: "+params.url_order);
		
		//Inicializo los scores
		$(".carroplaylist-item .item-score").score();
		//Inicializo el carrusel
		$("#carroplaylist").carrousel({
			itemStart: params.url_order
		});
		
		//Actualizo los botones de siguiente/anterior
		var total = $("#carroplaylist").attr("carrTotal");
		var current = parseInt(params.url_order);
		if ( current-1 >= 0) {
			var url_img = $(".carroplaylist-item:eq("+(current-1)+")").attr("url_img");
			$(".ui-playlist-previous img").attr("src",url_img);
			$(".ui-playlist-previous").css("visibility","").show();
		} else {
			$(".ui-playlist-previous").hide();
		}
		if (current+1 < total) {
			var url_img = $(".carroplaylist-item:eq("+(current+1)+")").attr("url_img");
			$(".ui-playlist-next img").attr("src",url_img);
			$(".ui-playlist-next").css("visibility","").show();
		} else {
			$(".ui-playlist-next").hide();
		}
		//Inicializa el manejo de la playlist carrusel
		window.fwk.controllers.player.managePlaylist();
	});	
}

/** 
 * Funcion que captura los eventos de la playlist de carrusel y actualiza los botones
 * de navegacion correspondientes.
 * Tambien captura el click del item seleccionado para disparar el play
 */
window.fwk.controllers.player.managePlaylist = function() {
	$(".carroplaylist-item-selected").live("click",function() {
		//Actualizo los botones de siguiente/anterior
		var total = $("#carroplaylist").attr("carrTotal");
		var current = parseInt($("#carroplaylist").attr("carrCurrent"));
		if (current-1 >= 0) {
			var url_img = $(".carroplaylist-item:eq("+(current-1)+")").attr("url_img");
			$(".ui-playlist-previous img").attr("src",url_img);
			$(".ui-playlist-previous").css("visibility","").show();
		} else {
			$(".ui-playlist-previous").hide();
		}
		if (current+1 < total) {
			var url_img = $(".carroplaylist-item:eq("+(current+1)+")").attr("url_img");
			$(".ui-playlist-next img").attr("src",url_img);
			$(".ui-playlist-next").css("visibility","").show();
		} else {
			$(".ui-playlist-next").hide();
		}
	});	
}

/**
 * Cierra la playlist Carrousel
 */
window.fwk.controllers.player.closePlaylist = function() {
	//$("#dwrPlaylist").drawer("close");
	$("#carroplaylist .button-close").click();
}

/**
 * Agrega un item en el historial de reproduccion
 */
window.fwk.controllers.player.addHistory = function(params) {
	$.get(window.fwk.controllers.player.url_add_history,params,function(data,textStatus) {
	});
}

/**
 * Abre todos los tabs relacionados con el stopvideo
 */
window.fwk.controllers.player.stopVideoOpenAll = function() {
	$("#dwrHistory,#relacionados,#social,#browser").drawer("open");
	//Guardo la metrica
	window.fwk.common.metricas.hit("player_stopvideo",window.fwk.controllers.player.getParamsMetricas("player_stopvideo"));
}

/**
 * Cierra todos los tabs relacionados con el stopvideo
 */
window.fwk.controllers.player.stopVideoCloseAll = function () {
	$("#dwrHistory,#relacionados,#social,#browser").drawer("close");
}

/**
 * Cierro absolutamente todos los drawer's
 */
window.fwk.controllers.player.closeAllDrawers = function() {
	$(".drawer").drawer("close");	
}

/**
 * Obtengo los datos necesarios para armar el json que se debe pasar a la funcion de metricas
 * @param label (string) Para que tipo de metrica tengo que armar los parametros
 * @returns (json)
 */
window.fwk.controllers.player.getParamsMetricas = function(label) {
	var currMedia = window.fwk.controllers.currentPlayer.player("currentMedia");
	if (currMedia) {
		var ret = {
			path: window.fwk.controllers.player.getPathMetricas(window.fwk.controllers.player.url_api),
			title: currMedia.getCommonProp("title"),
			content_id: currMedia.getMaterialProp("content_id"),
			encode_id: currMedia.getMaterialProp("encode_id")
		}
		switch (label) {
			case "video_ver_finalizado":
				var auxDate = new Date(1,0,1,0,0,window.fwk.controllers.currentPlayer.player("mediaLength"))
				ret.player_position = "0"+auxDate.toLocaleTimeString().replace(/:/g,"-");
				break;
		}
	}
	return ret;
}
/**
 * Devuelve el path que se debe utilizar para la metrica
 * @param url (string) URL que se debe parsear para obtener el path
 * @returns (string)
 */
window.fwk.controllers.player.getPathMetricas = function(url) {
	//Bueno obtengo el fromController y fromAction para tratar de adivinar de donde pudo venir esto
	var fromController = window.fwk.controllers.player.getParamFromUrl(url,"fromController");
	var fromAction = window.fwk.controllers.player.getParamFromUrl(url,"fromAction");
	var ret = "";
	switch (fromController) {
		case "tapa":
			switch (fromAction) {
				case "destacado":
					ret = window.fwk.getCurrentFullPath()+"/destacado";
					break;
			}			
			break;
		case "relacionados":
			switch (fromAction) {
				case "getrelacionados":
					ret = "contenidos relacionados";
					break;
			}
			break;
		case "buscador":
		case "browser":
			switch (fromAction) {
				case "resultadopage":
				case "getitems":
					//Averiguo si es lo mas visto o lo mas nuevo
					var type = window.fwk.controllers.player.getParamFromUrl(url,"ranking");
					switch (type) {
						case "getfeatured":
							ret = window.fwk.getCurrentFullPath()+"/lo nuevo";
							break;
						case "getmostviewed":
							ret = window.fwk.getCurrentFullPath()+"/lo mas visto";
							break;
						default:
							var nombreSite = window.fwk.common.metricas.metricasSite;
							var words = window.fwk.controllers.player.getParamFromUrl(url,"words");
							ret = "resultados de busqueda de "+nombreSite+" "+words;
							break;
					}
					break;
			}
			break;		
	}
	return ret;
}

/**
 * Obtengo el valor asignado a un parametro en la url
 * @param url (string) URL de donde voy a obtener el parametro
 * @param param (string) Nombre del parametro que debo obtener el valor
 * @returns (string)
 */
window.fwk.controllers.player.getParamFromUrl = function(url,param) {
	//quito lo que viene despues de ?
	var urlAux = url;
	var pos = urlAux.indexOf("?");
	if (pos) {
		urlAux = urlAux.substr(0,pos);
	}
	var aUrl = urlAux.split('/');
	var ret = null;
	for(var i = 0; i < aUrl.length; i++) {
		if (aUrl[i].toLowerCase() == param.toLowerCase()) {
			ret = aUrl[i+1];
			break;
		}
	}
	return ret;
}