/* Archivo: js/actualizaciones.js
 * Descripción: Actualizaciones.
 * Autor: Guillermo Martínez <gmartinez@visionados.js>
 */

// Crea espacios.
  YAHOO.namespace ("Actualizaciones");


/* Modelos que mostrará en el diálogo. */
  YAHOO.Actualizaciones.MOD_EXPLORER = 'explorer';
  YAHOO.Actualizaciones.MOD_MULTIMEDIA = 'multimedia';
  YAHOO.Actualizaciones.MOD_B3 = 'B3';
  YAHOO.Actualizaciones.MOD_B2 = 'B';
  YAHOO.Actualizaciones.MOD_B  = 'B';
  YAHOO.Actualizaciones.MOD_A4 = 'A4';
  YAHOO.Actualizaciones.MOD_A3 = 'A3';
  YAHOO.Actualizaciones.MOD_A2 = 'A';
  YAHOO.Actualizaciones.MOD_A  = 'A';



/* Diálogo. */
  YAHOO.Actualizaciones.Dialogo = null;
/* Para tener la lista de modelos a mano. */
  YAHOO.Actualizaciones.ListaModelos = new Array ();



/* Inicializa la página.
 * El parámetro indica qué modelos mostrará. */
  YAHOO.Actualizaciones.Inicializa = function (ModelosMostrados)
  {
    var Cnt;

    try {
      YAHOO.Actualizaciones.ObtieneListaModelos (ModelosMostrados)
    // Diálogo.
      YAHOO.Actualizaciones.Dialogo = YAHOO.Actualizaciones.TDialogo.Nuevo (ModelosMostrados);
    // Para mostrar el diálogo cuando pulse sobre el enlace.
      if (ModelosMostrados == YAHOO.Actualizaciones.MOD_EXPLORER) {
	document.getElementById ("BtnDescargaActualizacionIGO").onclick = function ()
	{
	  document.getElementById ("modelo").value = YAHOO.Actualizaciones.ListaModelos[0].id;
	  YAHOO.Actualizaciones.Dialogo.show (true);
	};
	document.getElementById ("BtnDescargaActualizacionNDRIVE").onclick = function ()
	{
	  document.getElementById ("modelo").value = YAHOO.Actualizaciones.ListaModelos[1].id;
	  YAHOO.Actualizaciones.Dialogo.show (true);
	};
      }
      else if (ModelosMostrados == YAHOO.Actualizaciones.MOD_MULTIMEDIA) {
	
	  document.getElementById ("BtnDescargaActualizacionNDRIVE").onclick = function ()
	  {
	    document.getElementById ("modelo").value = YAHOO.Actualizaciones.ListaModelos[0].id;
	    YAHOO.Actualizaciones.Dialogo.show (true);
	  };
	  document.getElementById ("BtnDescargaActualizacionIGO").onclick = function ()
	  {
	    document.getElementById ("modelo").value = YAHOO.Actualizaciones.ListaModelos[1].id;
	    YAHOO.Actualizaciones.Dialogo.show (true);
	  };
	
      }
      else {
	for (Cnt=0; Cnt<YAHOO.Actualizaciones.ListaModelos.length; ++Cnt) {
	  if (YAHOO.Actualizaciones.ListaModelos[Cnt].id == ModelosMostrados) {
	    document.getElementById ("modelo").value = ModelosMostrados;
	    document.getElementById ("tenvio").innerHTML =
	      YAHOO.Actualizaciones.ListaModelos[Cnt].nombre.toUpperCase ();
	  }
	}
	YAHOO.util.Event.addListener("BtnDescargaActualizacion", "click", YAHOO.Actualizaciones.Dialogo.show, YAHOO.Actualizaciones.Dialogo, true);
	YAHOO.util.Event.addListener("BtnDescargaActualizacion2", "click", YAHOO.Actualizaciones.Dialogo.show, YAHOO.Actualizaciones.Dialogo, true);
      }
    }
    catch (Error) {
      alert (Error);
    }
  }



/* Obtiene la lista de modelos. */
  YAHOO.Actualizaciones.ObtieneListaModelos = function (ModelosMostrados)
  {
    var XMLHttpRequest, ListaModelos, Cnt;

  // Obtenemos la lista.
    XMLHttpRequest = new xhr ();
    XMLHttpRequest.ex ({url:"busca.php", query:"dato=modelos", async:false});
    ListaModelos = eval ("("+XMLHttpRequest.responseText+")");
  // Según indique el parámetro, mostrará o no los modelos.
    if (ModelosMostrados == YAHOO.Actualizaciones.MOD_EXPLORER) {
	for (Cnt=0; Cnt<ListaModelos.length; Cnt++) {
	  if (ListaModelos[Cnt].nombre.toLowerCase ().indexOf ('explorer') != -1)
	    YAHOO.Actualizaciones.ListaModelos.push (ListaModelos[Cnt]);
	}
    }
    else if (ModelosMostrados == YAHOO.Actualizaciones.MOD_MULTIMEDIA) {
	for (Cnt=0, Elm=0; Cnt<ListaModelos.length; Cnt++) {
	  if (ListaModelos[Cnt].nombre.toLowerCase ().indexOf ('multimedia') != -1)
	    YAHOO.Actualizaciones.ListaModelos.push (ListaModelos[Cnt]);
	}
    }
    else {
	for (Cnt=0, Elm=0; Cnt<ListaModelos.length; Cnt++) {
	  if (ListaModelos[Cnt].nombre.toLowerCase ().indexOf ('explorer') < 0
	   && ListaModelos[Cnt].nombre.toLowerCase ().indexOf ('multimedia') < 0)
	    YAHOO.Actualizaciones.ListaModelos.push (ListaModelos[Cnt]);
	}
    }
  }



/* Diálogo de selección del modelo. */
  YAHOO.namespace ("Actualizaciones.TDialogo");
  YAHOO.Actualizaciones.TDialogo.Nuevo = function (ModelosMostrados)
  {
    var Dialogo = null;

    if (ModelosMostrados == YAHOO.Actualizaciones.MOD_EXPLORER) {
      document.getElementById ('tenvio').innerHTML = 'EXPLORER';
    }
    else if (ModelosMostrados == YAHOO.Actualizaciones.MOD_MULTIMEDIA) {
      document.getElementById ('tenvio').innerHTML = 'MULTIMEDIA';
    }
    else {
      document.getElementById ('modelo').value = ModelosMostrados;
    }
  // Crea el diálogo.
    Dialogo = new YAHOO.widget.Dialog (
      "DlgDescargaActualizacion", {
	width: "340px", fixedcenter: true, visible: false,
	constraintintoviewport: true,
	buttons: [{
	  text: "Enviar",
	  handler: function () {
	    if (this.validate ())
	      location.href = "descarga_archivo.php?modelo=" +
		document.getElementById ('modelo').value + "&codigo=" +
		document.getElementById ('codigo').value;
	  }
	}]
      }
    );
  // Añade métodos.
    Dialogo.callback = {
      success: function (o) { ; },
      failure: function (o) { alert ("Hubo un problema.\n"+o.status); }
    };
    Dialogo.validate = YAHOO.Actualizaciones.TDialogo.ValidaCampos;
    Dialogo.render ();
    return Dialogo;
  }


  YAHOO.Actualizaciones.TDialogo.ValidaCampos = function ()
  {
    var Datos, XMLHttpRequest, Resultado = false;

    try  {
      Datos = this.getData ();

      if (Datos.codigo.length < 2)
	throw "Debe indicar un codigo valido.";
      XMLHttpRequest = new xhr ();
      XMLHttpRequest.ok = function (Request) {
	Resultado = Request.responseText;
      };
      XMLHttpRequest.ex ({url:"comprobar_codigo.php",
			  query:"codigo="+Datos.codigo+"&modelo="+Datos.modelo,
			  async:false});
      if (XMLHttpRequest.responseText.toLowerCase () != 'ok')
	throw 'Codigo no valido'; // XMLHttpRequest.responseText;
      return true;
    }
    catch (Error) {
      alert (Error);
      return false;
    }
  }
