//Crear un mapeo de clases de los planetas con los siguiente estructura
class Galaxia{
	constructor(galaxia_id, nombre, tipo_galaxia){
		this.galaxia_id = galaxia_id;
		this.nombre = nombre;
		this.tipo_galaxia = tipo_galaxia;
	}
}

class Planeta{
	//1. Escribir un metodo que permita agregar un nuevo planeta
	constructor(planeta_id, galaxia_id, nombre, fotos){
		this.planeta_id = planeta_id;
		this.galaxia_id = galaxia_id;
		this.nombre = nombre;
		this.fotos = fotos;
	}

	//1. Escribir un metodo que permita agregar un nuevo planeta
	agregar(planetas){
		planeta = new Planeta(this.idPlaneta, this.idGalaxia, this.nombrePlaneta, this.fotosPlaneta);
		planetas.push(planeta);
	}

	//3. Escribir un metodo que permita actualizar los datos de un planeta
	actualizar(nuevoIdGalaxia, nuevoNombrePlaneta, nuevoFotosPlaneta){
		this.galaxia_id = nuevoIdGalaxia;
		this.nombre = nuevoNombrePlaneta;
		this.fotos = nuevoFotosPlaneta;
	}

	//6. Escribir un metodo que devuelva la lista de lunas del planeta
	getLunas(lunasParametro){
		let lunass = [];
		for(i=0; i<lunasParametro.length; i++){
			if(lunasParametro[i].planeta_id==this.planeta_id){
				lunass.push(lunasParametro[i]);
				console.log(lunasParametro[i].nombre);
			}
		}
		return lunass;
	}

	//4. Escribir un metodo para calcular la distancia de un planeta en relacion al Sol
	distanciaAlSol(){
		var str = this.nombre.toLowerCase();
		if(str=="mercurio"){
			return 5791000000;
		}		
		else if(str=="venus"){
			return 1082000000;
		}
		else if(str=="tierra"){
			return 1496000000;
		}
		else if(str=="marte"){
			return 2279000000;
		}
		else if(str=="jupiter"){
			return 7785000000;
		}
		else if(str=="saturno"){
			return 1434000000000;
		}
		else if(str=="urano"){
			return 2871000000000;
		}
		else if(str=="neptuno"){
			return 4495000000000;
		}
	}
	
	//5. Escribir un metodo para calcular la distancia de un planeta en relacion a la tierra
	distanciaATierra(planeta){
		var str = this.nombre.toLowerCase();
		if(str=="mercurio"){
			return 77000000;
		}		
		else if(str=="venus"){
			return 40000000;
		}
		else if(str=="tierra"){
			return 0;
		}
		else if(str=="marte"){
			return 59000000;
		}
		else if(str=="jupiter"){
			return 594000000;
		}
		else if(str=="saturno"){
			return 15000000000;
		}
		else if(str=="urano"){
			return 2720000000;
		}
		else if(str=="neptuno"){
			return 43000000000;
		}
	}
	//7. Escribir un metodo que devuelva las fotografias del planeta
	getFotografias(){
		return this.fotos;
	}

	//2. Escribir un metodo que permita borrar un planeta
	borrar(listaPlanetas){
		for(i=0; i<listaPlanetas.length; i++){
			if(listaPlanetas[i].planeta_id == this.planeta_id){
				console.log("Se eliminó " + planetas[i].nombre);
				listaPlanetas.splice(i,1);
			}
		}
	}
}

class Luna{
	constructor(nombre, planeta_id, fotos){
		this.nombre = nombre;
		this.planeta_id = planeta_id;
		this.fotos = fotos;
	}
}
//Lista de Galaxias
let galaxias = [];

//Lista de Planetas
let planetas = [];

//Lista de Lunas
let lunas = [];


//1. Escribir un metodo que permita agregar un nuevo planeta
function agregarPlaneta(idPlaneta, idGalaxia, nombrePlaneta, fotosPlaneta){
	planeta = new Planeta(idPlaneta, idGalaxia, nombrePlaneta, fotosPlaneta);

	planetas.push(planeta);
}

//2. Escribir un metodo que permita borrar un planeta
function borrarPlaneta(idPlaneta){
	for(i=0; i<planetas.length; i++){
		if(planetas[i].planeta_id == idPlaneta){
			console.log("Se eliminó " + planetas[i].nombre);
			planetas.splice(i,1);
		}
	}
}

//3. Escribir un metodo que permita actualizar los datos de un planeta
function actualizarDatosPlaneta(idPlaneta, nuevoIdGalaxia, nuevoNombrePlaneta, nuevoFotosPlaneta){
	for(i=0; i<planetas.length; i++){
		if(planetas[i].planeta_id == idPlaneta){
			console.log("Se actualiza " + planetas[i].nombre);
			planetas[i].actualizar(nuevoIdGalaxia, nuevoNombrePlaneta, nuevoFotosPlaneta);
		}
	}
}

//6. Escribir un metodo que devuelva la lista de lunas del planeta
function lunasDe(idPlaneta){
	let lunasDePlaneta = [];
	for(i=0; i<lunas.length; i++){
		if(lunas[i].planeta_id==idPlaneta){
			lunasDePlaneta.push(lunas[i]);
			console.log(lunas[i].nombre);
		}
	}
	return lunasDePlaneta;
}

//7. Escribir un metodo que devuelva las fotografias del planeta
function fotografias(idPlaneta){
	let fotogafiasDePlaneta = [];
	for(i=0; i<lunas.length; i++){
		if(planetas[i].planeta_id==idPlaneta){
			fotografiasDePlaneta.push(planetas[i].fotos);
			console.log(planetas[i].fotos);
		}
	}
	return fotografiasDePlaneta;
}

//Devuelve una lista de los planetas correspondientes al id de 
//la galaxia recibida
function planetasDe(idGalaxia){
	
	let planetasDeGalaxia = [];	
	for(i=0; i<planetas.length; i++){
		
		if(planetas[i].galaxia_id==idGalaxia){
			planetasDeGalaxia.push(planetas[i]);
			//console.log(planetas[i]);
		}
	}
	return planetasDeGalaxia;
}




/**
 * Todo el código a continuación fue creado para dar
 * dinamismo a los archivos html
 */

//Esta función es para inicializar las listas con datos
//para poder probarlos
function crearDatos(){
	//Se añaden las galaxias	
	let galaxia = new Galaxia(1, "Via Lactea", "Espiral");
	galaxias.push(galaxia);

	galaxia = new Galaxia(2, "Nube de Magallanes", "Eliptica");
	galaxias.push(galaxia);

	galaxia = new Galaxia(3, "Sculptor", "Esferoidal");
	galaxias.push(galaxia);

	agregarPlaneta(1, 1, "Tierra", ["https://www.caracteristicas.co/wp-content/uploads/2017/02/planeta-tierra-min-e1487870067631.jpg", "http://www.bodecor.com/image/cache/data/productos/JUEGOSEDUCATIVOS/6883636513p-500x500.jpg", "https://i2.wp.com/www.4vientos.net/wp-content/uploads/2018/03/TIERRA-PLANETA-AMANECER-1.jpg?resize=800%2C439"]);
	agregarPlaneta(2, 1, "Saturno", ["https://upload.wikimedia.org/wikipedia/commons/thumb/c/c7/Saturn_during_Equinox.jpg/1200px-Saturn_during_Equinox.jpg","https://upload.wikimedia.org/wikipedia/commons/thumb/c/c7/Saturn_during_Equinox.jpg/1200px-Saturn_during_Equinox.jpg", "https://www.meteorologiaenred.com/wp-content/uploads/2018/08/Atm%C3%B3sfera-de-Saturno.jpg"]);
	agregarPlaneta(3, 2, "Krypton", ["https://www.ecured.cu/images/thumb/c/cf/Krypton_%28planeta%29.jpg/260px-Krypton_%28planeta%29.jpg", "https://vignette.wikia.nocookie.net/starwars/images/d/d6/Toydaria-TCW.png/revision/latest?cb=20130506235119", "https://vignette.wikia.nocookie.net/supergirl/images/b/b5/Planet_Krypton.png/revision/latest?cb=20171206023736&path-prefix=es"]);
	agregarPlaneta(4, 3, "Cybertron", ["https://upload.wikimedia.org/wikipedia/en/2/2d/MovieCybertron.jpg", "https://vignette.wikia.nocookie.net/michaelbaystransformers/images/c/cf/Movie_Cybertron.jpg/revision/latest?cb=20151108163309", "https://www.meme-arsenal.com/memes/c559b3b9e3d0a90b3c267b0a611a5f61.jpg"]);

	let luna = new Luna("Luna", 1, ["https://upload.wikimedia.org/wikipedia/commons/thumb/d/dd/Full_Moon_Luc_Viatour.jpg/280px-Full_Moon_Luc_Viatour.jpg","https://upload.wikimedia.org/wikipedia/commons/thumb/d/d8/Ganymede_g1_true_2.jpg/270px-Ganymede_g1_true_2.jpg","https://images2.corriereobjects.it/methode_image/2017/01/11/Scienze/Foto%20Scienze%20-%20Trattate/AFP_JQ6DS-0002-kUPG-U43270811099596WNF-1224x916@Corriere-Web-Sezioni-593x443.jpg?v=20170111154027"]);
	lunas.push(luna);

	luna = new Luna("Titan", 2, ["https://www.muyinteresante.com.mx/wp-content/uploads/2018/05/httpstved-prod.adobecqms.netcontentdameditorialTelevisamexicomuyinteresantemxjuniorespacio170220titan.imgo_-770x528.jpg","https://encrypted-tbn0.gstatic.com/images?q=tbn:ANd9GcTLEUZwBd52os9ND0Zwo7dxvl2IkePZMPCKsBjuGE2XRi28I_1J","https://encrypted-tbn0.gstatic.com/images?q=tbn:ANd9GcTUv60cmCb7ABSLqdRrQdOT2p8X1jZAqGbQQwzt5rxB5ZUxUqYh"]);
	lunas.push(luna);

	luna = new Luna("Encelado", 2, ["https://upload.wikimedia.org/wikipedia/commons/thumb/5/5f/Enceladusstripes_cassini.jpg/250px-Enceladusstripes_cassini.jpg", "https://static.scientificamerican.com/arabic/cache/file/531AF767-D9AC-4D9E-B13D2A5C98DEC186_source.jpg", "https://cdn.img.inosmi.ru/images/23704/25/237042551.jpg"]);
	lunas.push(luna);
}

crearDatos();

//Carga las galaxias en el select del html
function cargarSelectGalaxia(){
	let galaxiaSelect = document.getElementById("galaxiaSelect");

	for(i=0; i<galaxias.length; i++){
		let option = document.createElement("option");
		option.value = galaxias[i].galaxia_id;
		option.innerHTML = galaxias[i].nombre;
		galaxiaSelect.appendChild(option);
	}
}

cargarSelectGalaxia();



 //Esta función habilita la parte de información de la galaxia
 //Obtiene la galaxia seleccionada y muestra su información
function mostrarDetalleGalaxia(){
	console.log("mostrando detalle de la galaxia");
	var galaxiaSelect = document.getElementById("galaxiaSelect");
	var galaxia = galaxiaSelect.options[galaxiaSelect.selectedIndex].value;
	console.log(galaxia);
	planetastmp = planetasDe(galaxia);

	listaPlanetas = document.getElementById("listaPlanetas");
	while (listaPlanetas.firstChild) {
		listaPlanetas.removeChild(listaPlanetas.firstChild);
	}

	
	for(i=0; i<planetastmp.length; i++){
		item = document.createElement("li");
		item.innerHTML= planetastmp[i].nombre;
		document.getElementById("listaPlanetas").appendChild(item);
	}

	document.getElementById("informacionGalaxia").removeAttribute("hidden");
}