var tipoperacion = ["suma","resta","multiplicacion","division"];

var tipofruta = ["manzana","naranja","melocoton","platano"];

var frutasM = ["0203","0204","0302","0402"];
var frutasD = ["0602","0603","0802","0804"];

var datos1S = ["01","02","03","04"];
var datos2S = ["01","02","03","04"];
var datos1R = ["01","02","03","04"];
var datos2R = ["01","02","03","04"];
var datos1M = ["01","02","03","04"];
var datos2M = ["01","02","03","04"];
var datos1D = ["01","02","03","04"];
var datos2D = ["01","02","03","04"];

var elementoperacion = 0;
var elementofrut = 0;
var elemento = 0;
var elemento1 = 0;
var elemento2 = 0;

var operacion = "";
var operacionanterior = "";

var fruta = "";
var frutaanterior = "";

var dato1S = "";
var dato2S = "";
var dato1R = "";
var dato2R = "";
var dato1M = "";
var dato2M = "";
var dato1D = "";
var dato2D = "";

var datoM = "";
var datoD = "";

var sumando1 = 0;
var sumando2 = 0;
var minuendo = 0;
var sustraendo = 0;
var factor1 = 0;
var factor2 = 0;
var numerador = 0;
var denominador = 0;

var datoanteriorS = "";
var datoanteriorR = "";
var datoanteriorM = "";
var datoanteriorD = "";

var datosanteriorM = "";
var datosanteriorD = "";

var suma = 0;
var diferencia = 0;
var producto = 0;
var division = 0;

var textorespuesta = "";

var resultadoperacion = 0;

var imagenfruta = "fondoblanco.gif"; //localizacion de la imagen

var problematexto = ""; //texto del problema

var maximonivel = 5;

var archivo = "C:/opera01.txt"

//CONJUNTO DE FUNCIONES
function pregunta()
{
 
  //poner a cero el texto del problema
  problematexto = "";

  if (nivel == 1)
  {
    //sorteo de tipo de fruta
    elementofrut = aleatorio(0,tipofruta.length-1);
    fruta = tipofruta[elementofrut];
    while (frutaanterior == fruta)
    {
      elementofrut = aleatorio(0,tipofruta.length-1);
      fruta = tipofruta[elementofrut];
    }
  
    //eliminar fruta sorteado del conjunto de frutas
    if (tipofruta.length > 1)
    {
      tipofruta.splice(elementofrut,1)
    }
    else
    {
      tipofruta = ["manzana","naranja","melocoton","platano"]
    }  
    frutaanterior = fruta;
  }

  //sorteo de operacion
  elementoperacion = aleatorio(0,tipoperacion.length-1);
  operacion = tipoperacion[elementoperacion];
  while (operacionanterior == operacion)
  {
    elementoperacion = aleatorio(0,tipoperacion.length-1);
    operacion = tipoperacion[elementoperacion];
  }
  
  //eliminar operacion sorteado del conjunto de operacions
  if (tipoperacion.length > 1)
  {
    tipoperacion.splice(elementoperacion,1);
  }
  else
  {
    tipoperacion = ["suma","resta","multiplicacion","division"];
  }  
  operacionanterior = operacion;

  
  //sorteo de datos
  switch (operacion)
  {
    case "suma":
      sumando1 = 0;
      sumando2 = 0;  

      while (datoanteriorS == (dato1S+dato2S))
      {
        elemento1 = aleatorio(0,datos1S.length-1);
        dato1S = datos1S[elemento1];

        elemento2 = aleatorio(0,datos2S.length-1);
        dato2S = datos2S[elemento2];
      }

      datoanteriorS = dato1S+dato2S;

      sumando1 = parseInt(dato1S,10); //saca la base del dato y lo transforma en numerico
      sumando2 = parseInt(dato2S,10); //saca la base del dato y lo transforma en numerico
      suma = sumando1 + sumando2; //calcula la respuesta
      
      resultadoperacion = suma;

      //eliminar dato sorteado del conjunto de datos
      if (datos1S.length > 1)
      {
        datos1S.splice(elemento1,1)
      }
      else
      {
        switch (nivel)
        {
          case 1:
            datos1S = ["01","02","03","04"];
            break;
          case 2:
            datos1S = ["00","01","02","03","04","05"];
            break;
          case 3:
            datos1S = ["00","01","02","03","04","05","06","07","08","09","10"];
            break;
          case 4:
            datos1S = ["00","01","02","03","04","05","06","07","08","09","10"];
            break;
          case 5:
            datos1S = ["03","04","05","06","07","08","09"];
            break;
        }
      }
      
      if (datos2S.length > 1)
      {
        datos2S.splice(elemento2,1)
      }
      else
      {
        switch (nivel)
        {
          case 1:
            datos2S = ["01","02","03","04"];
            break;
          case 2:
            datos2S = ["00","01","02","03","04","05"];
            break;
          case 3:
            datos2S = ["00","01","02","03","04","05"];
            break;
          case 4:
            datos2S = ["00","01","02","03","04","05","06","07","08","09","10"];
            break;
          case 5:
            datos2S = ["03","04","05","06","07","08","09"];
            break;
        }
      }
      break;
    case "resta":
      minuendo = 0;
      sustraendo = 0;  

      while (datoanteriorR == (dato1R+dato2R))
      {
        elemento1 = aleatorio(0,datos1R.length-1);
        dato1R = datos1R[elemento1];

        elemento2 = aleatorio(0,datos2R.length-1);
        dato2R = datos2R[elemento2];
      }

      datoanteriorR = dato1R+dato2R;

      minuendo = parseInt(dato1R,10) + parseInt(dato2R,10); //saca la base del dato y lo transforma en numerico
      sustraendo = parseInt(dato1R,10); //saca la base del dato y lo transforma en numerico
      diferencia = parseInt(dato2R,10); //calcula la respuesta
      
      resultadoperacion = diferencia;

      //eliminar dato sorteado del conjunto de datos
      if (datos1R.length > 1)
      {
        datos1R.splice(elemento1,1)
      }
      else
      {
        switch (nivel)
        {
          case 1:
            datos1R = ["01","02","03","04"];
            break;
          case 2:
            datos1R = ["00","01","02","03","04","05"];
            break;
          case 3:
            datos1R = ["00","01","02","03","04","05","06","07","08","09","10"];
            break;
          case 4:
            datos1R = ["00","01","02","03","04","05","06","07","08","09","10"];
            break;
          case 5:
            datos1R = ["03","04","05","06","07","08","09"];
            break;
        }
      }
      if (datos2R.length > 1)
      {
        datos2R.splice(elemento2,1)
      }
      else
      {
        switch (nivel)
        {
          case 1:
            datos2R = ["01","02","03","04"];
            break;
          case 2:
            datos2R = ["00","01","02","03","04","05"];
            break;
          case 3:
            datos2R = ["00","01","02","03","04","05"];
            break;
          case 4:
            datos2R = ["00","01","02","03","04","05","06","07","08","09","10"];
            break;
          case 5:
            datos2R = ["03","04","05","06","07","08","09"];
            break;
        }
      } 
      break;
    case "multiplicacion":
      factor1 = 0;
      factor2 = 0;
      
      if (nivel == 1) //sorteo de datos para el nivel 1
      {
        while (datoanteriorM == datoM)
        {
          elemento = aleatorio(0,frutasM.length-1);
          datoM = frutasM[elemento];
        }
        datoanteriorM = datoM;

        factor1 = parseInt(datoM.slice(0,2),10); //saca la base del dato y lo transforma en numerico
        factor2 = parseInt(datoM.slice(2,5),10); //saca la base del dato y lo transforma en numerico
      }
      else //(nivel > 1)
      {
        //sorteo de datos
        while (datosanteriorM == (dato1M+dato2M))
        {
          elemento1 = aleatorio(0,datos1M.length-1);
          dato1M = datos1M[elemento1];

          elemento2 = aleatorio(0,datos2M.length-1);
          dato2M = datos2M[elemento2];
        }

        datosanteriorM = dato1M+dato2M;
    
        factor1 = parseInt(dato1M,10) //saca la base del dato y lo transforma en numerico
        factor2 = parseInt(dato2M,10); //saca la base del dato y lo transforma en numerico
      }

      producto = factor1 * factor2; //calcula la respuesta

      resultadoperacion = producto;

      //eliminar dato sorteado del conjunto de datos
      if (nivel == 1)
      {
        if (frutasM.length > 1)
        {
          frutasM.splice(elemento,1)
        }
        else
        {
          frutasM = ["0203","0204","0302","0402"];
        }
      }
      else
      {      
        if (datos1M.length > 1)
        {
          datos1M.splice(elemento1,1)
        }
        else
        {
          switch (nivel)
          {
            case 2:
              datos1M = ["00","01","02","03","04","05"];
              break;
            case 3:
              datos1M = ["00","01","02","03","04","05","06","07","08","09","10"];
              break;
            case 4:
              datos1M = ["00","01","02","03","04","05","06","07","08","09","10"];
              break;
            case 5:
              datos1M = ["03","04","05","06","07","08","09"];
              break;
          }
        }
        if (datos2M.length > 1)
        {
          datos2M.splice(elemento1,1)
        }
        else
        {
          switch (nivel)
          {
            case 2:
              datos2M = ["00","01","02","03","04","05"];
              break;
            case 3:
              datos2M = ["00","01","02","03","04","05"];
              break;
            case 4:
              datos2M = ["00","01","02","03","04","05","06","07","08","09","10"];
              break;
            case 5:
              datos2M = ["03","04","05","06","07","08","09"];
              break;
          }
        }
      }
      break;
    case "division":
      numerador = 0;
      denominador = 0;

      if (nivel == 1) //sorteo de datos para el nivel 1
      {
        while (datoanteriorD == datoD)
        {
          elemento = aleatorio(0,frutasD.length-1);
          datoD = frutasD[elemento];
        }
        datoanteriorD = datoD;

        numerador = parseInt(datoD.slice(0,2),10); //saca la base del dato y lo transforma en numerico
        denominador = parseInt(datoD.slice(2,5),10); //saca la base del dato y lo transforma en numerico
        division = numerador / denominador; //calcula la respuesta
      }
      else //(nivel > 1)
      {
        //sorteo de datos
        while (datosanteriorD == (dato1D+dato2D))
        {
          elemento1 = aleatorio(0,datos1D.length-1);
          dato1D = datos1D[elemento1];

          elemento2 = aleatorio(0,datos2D.length-1);
          dato2D = datos2D[elemento2];
        }

        datosanteriorD = dato1D+dato2D;
    
        numerador = parseInt(dato1D,10) * parseInt(dato2D,10); //saca la base del dato y lo transforma en numerico
        denominador = parseInt(dato1D,10); //saca la base del dato y lo transforma en numerico
        division = parseInt(dato2D,10); //calcula la respuesta
      }

      resultadoperacion = division;

      //eliminar dato sorteado del conjunto de datos
      if (nivel == 1)
      {
        if (frutasD.length > 1)
        {
          frutasD.splice(elemento,1)
        }
        else
        {
          frutasD = ["0602","0603","0802","0804"];
        }
      }
      else
      {      
        if (datos1D.length > 1)
        {
          datos1D.splice(elemento1,1)
        }
        else
        {
          switch (nivel)
          {
            case 2:
              datos1D = ["01","02","03","04","05"];
              break;
            case 3:
              datos1D = ["01","02","03","04","05","06","07","08","09","10"];
              break;
            case 4:
              datos1D = ["01","02","03","04","05","06","07","08","09","10"];
              break;
            case 5:
              datos1D = ["03","04","05","06","07","08","09"];
              break;
          }
        }
        if (datos2D.length > 1)
        {
          datos2D.splice(elemento1,1)
        }
        else
        {
          switch (nivel)
          {
            case 2:
              datos2D = ["00","01","02","03","04","05"];
              break;
            case 3:
              datos2D = ["00","01","02","03","04","05"];
              break;
            case 4:
              datos2D = ["00","01","02","03","04","05","06","07","08","09","10"];
              break;
            case 5:
              datos2D = ["03","04","05","06","07","08","09"];
              break;
          }
        }
      }
      break;
  }

  //lo siguiente es para probar, eliminarlo del programa
  //document.getElementById("tnivel").innerHTML = "N.: " + nivel + " / Rta.: " + resultadoperacion.toString();

  if (nivel > 1)
  {
    //pone en la pizarra el texto del problema
    switch (operacion)
    {
      case "suma":
        problematexto = sumando1 + " + " +  sumando2;
        break;
      case "resta":
        problematexto = minuendo + " – " +  sustraendo;
        break;
      case "multiplicacion":
        problematexto = factor1 + " × " +  factor2;
        break;
      case "division":
        problematexto = numerador + " : " +  denominador;
        break;
    }

    document.getElementById("texto").innerHTML = "&nbsp;"; //pone en pantalla el texto del problema
    document.getElementById("imagen").innerHTML = "<table border='0' cellpadding='0' cellspacing='0' style='border-collapse: collapse' bordercolor='#111111' width='85%'><tr><td width='100%'><p align='center'><font color='#FFFFFF' size='7'><b>" + problematexto + "</b></font></td></tr></table>";
  }
  else
  {
    switch (operacion)
    {
      case "suma":
        problematexto = "Calcula la " + operacion + " de " + sumando1 + " y " +  sumando2;
        break;
      case "resta":
        problematexto = "Calcula la resta de " + minuendo + " menos " +  sustraendo;
        break;
      case "multiplicacion":
        problematexto = "Calcula la multiplicación de " + factor1 + " por " +  factor2;
        break;
      case "division":
        problematexto = "Calcula la división de " + numerador + " entre " +  denominador;
        break;
    }

    document.getElementById("texto").innerHTML = problematexto; //pone en pantalla el texto del problema
    switch (operacion)
    {
      case "suma":
        imagenfruta = "imagenes/" + operacion + "/" + fruta + "/" + dato1S + dato2S + ".gif";
        break;
      case "resta":
        imagenfruta = "imagenes/" + operacion + "/" + fruta + "/" + (string3(parseInt(dato1R,10) + parseInt(dato2R,10)).toString()).slice(1,3) + dato1R + ".gif";
        break;
      case "multiplicacion":
        imagenfruta = "imagenes/" + operacion + "/" + fruta + "/" + datoM + ".gif";
        break;
      case "division":
        imagenfruta = "imagenes/" + operacion + "/" + fruta + "/" + datoD + ".gif";
        break;
    }
    
    document.getElementById("imagen").innerHTML = "<img src='" + imagenfruta + "'>"; //pone en pantalla la imagen del poligono
  } 
  
  document.getElementById("respuesta").value = ""; //borra el cajon de texto de la respuesta
  document.getElementById("respuesta").focus(); //pone el foco en el cajon de texto de la respuesta
}

function respuestavalida()
{
  textorespuesta = document.getElementById("respuesta").value;
  if (textorespuesta == resultadoperacion)  //si la respuesta es válida
  {
    return true;
  }
  else //si la respuesta NO es válida
  {
    return false;
  }
}

function inicializardatosnivel()
{
  switch (nivel)
  {
    case 1:
      datos1S = ["01","02","03","04"];
      datos2S = ["01","02","03","04"];
      datos1R = ["01","02","03","04"];
      datos2R = ["01","02","03","04"];
      frutasM = ["0203","0204","0302","0402"];
      frutasD = ["0602","0603","0802","0804"];
	  break;
    case 2:
      datos1S = ["00","01","02","03","04","05"];
      datos2S = ["00","01","02","03","04","05"];
      datos1R = ["00","01","02","03","04","05"];
      datos2R = ["00","01","02","03","04","05"];
      datos1M = ["00","01","02","03","04","05"];
      datos2M = ["00","01","02","03","04","05"];
      datos1D = ["01","02","03","04","05"];
      datos2D = ["00","01","02","03","04","05"];
	  break;
    case 3:
      datos1S = ["00","01","02","03","04","05","06","07","08","09","10"];
      datos2S = ["00","01","02","03","04","05"];
      datos1R = ["00","01","02","03","04","05","06","07","08","09","10"];
      datos2R = ["00","01","02","03","04","05"];
      datos1M = ["00","01","02","03","04","05","06","07","08","09","10"];
      datos2M = ["00","01","02","03","04","05"];
      datos1D = ["01","02","03","04","05","06","07","08","09","10"];
      datos2D = ["00","01","02","03","04","05"];
	  break;
    case 4:
      datos1S = ["00","01","02","03","04","05","06","07","08","09","10"];
      datos2S = ["00","01","02","03","04","05","06","07","08","09","10"];
      datos1R = ["00","01","02","03","04","05","06","07","08","09","10"];
      datos2R = ["00","01","02","03","04","05","06","07","08","09","10"];
      datos1M = ["00","01","02","03","04","05","06","07","08","09","10"];
      datos2M = ["00","01","02","03","04","05","06","07","08","09","10"];
      datos1D = ["01","02","03","04","05","06","07","08","09","10"];
      datos2D = ["00","01","02","03","04","05","06","07","08","09","10"];
	  break;
    case 5:
      datos1S = ["03","04","05","06","07","08","09"];
      datos2S = ["03","04","05","06","07","08","09"];
      datos1R = ["03","04","05","06","07","08","09"];
      datos2R = ["03","04","05","06","07","08","09"];
      datos1M = ["03","04","05","06","07","08","09"];
      datos2M = ["03","04","05","06","07","08","09"];
      datos1D = ["03","04","05","06","07","08","09"];
      datos2D = ["03","04","05","06","07","08","09"];
	  break;
  }
}