//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;
	}

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

	//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;
	}
}

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);
		}
	}
}

//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;
}

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();

function cargarSelects(){
    let planetaSelect = document.getElementById("selectBaja");
    let selectModificacion = document.getElementById("selectModificacion");
    
    while(planetaSelect.firstChild){
        planetaSelect.removeChild(planetaSelect.firstChild);
        selectModificacion.removeChild(selectModificacion.firstChild);
    }

	for(i=0; i<planetas.length; i++){
		let option = document.createElement("option");
		option.value = planetas[i].planeta_id;
		option.innerHTML = planetas[i].nombre;
        planetaSelect.appendChild(option);
        
        let option2 = document.createElement("option");
		option2.value = planetas[i].planeta_id;
		option2.innerHTML = planetas[i].planeta_id;
        selectModificacion.appendChild(option2);        
	}
}
cargarSelects();

function alta(){    
    let idPlaneta = document.getElementById("idPlanetaAlta").value;
    let idGalaxia = document.getElementById("idGalaxiaAlta").value;
    let nombrePlaneta = document.getElementById("nombrePlanetaAlta").value;
    let fotoPlaneta = document.getElementById("fotoPlanetaAlta").value;

    if(idPlaneta==""||idGalaxia==""||nombrePlaneta==""||fotoPlaneta==""){
        alert("algún campo está vacío y eso no puede ser che memby");
        return;
    }

    agregarPlaneta(idPlaneta, idGalaxia, nombrePlaneta, [fotoPlaneta]);
    console.log(nombrePlaneta + " agregado!");
    cargarSelects();
}

function baja(){
    var planetaSelect = document.getElementById("selectBaja");
    var idPlaneta = planetaSelect.options[planetaSelect.selectedIndex].value;
    borrarPlaneta(idPlaneta);
    console.log("se borró exitosamente mi gente");
    console.log(planetas.length);
    cargarSelects();
}

function modificacion(){
    var planetaSelect = document.getElementById("selectModificacion");
    var idPlaneta = planetaSelect.options[planetaSelect.selectedIndex].value;
    var nuevoNombrePlaneta = document.getElementById("nombrePlanetaModificacion");
    var nuevoIdGalaxia = document.getElementById("idGalaxiaModificacion");

    for(i=0; i<planetas.length; i++){
        if(planetas[i].planeta_id==idPlaneta){
            planetas[i].actualizar(nuevoIdGalaxia, nuevoNombrePlaneta);
        }
    }

    cargarSelects();

    
    console.log("ejecutando funcion modificacion()");
}

function cargarValoresModificacion(){
    var selectPlaneta = document.getElementById("selectModificacion");
    var idPlaneta = selectPlaneta.options[selectPlaneta.selectedIndex].value;
    var nombrePlaneta;
    var idGalaxia;

    for(i=0; i<planetas.length; i++){
        if(planetas[i].planeta_id==idPlaneta){
            nombrePlaneta = planetas[i].nombre;
            idGalaxia = planetas[i].galaxia_id;
        }
    }

    document.getElementById("nombrePlanetaModificacion").value=nombrePlaneta;
    document.getElementById("idGalaxiaModificacion").value=idGalaxia;
}