var RELOJ;
var NUMERO_LINEAS;
var LINEA_ACTUAL;
var ULTIMA_LINEA;
var VELOCIDAD;
var PGM_I;
var PGM_J;
var PGM_K;
var PGM_L;
/* ------------------------------------------------------- */
function changeLocation ( url )
{
window.location = url;
}
/* ------------------------------------------------------- */
function mostrarCodigo ()
{
var codigo = obtenerCodigo ();
NUMERO_LINEAS = codigo.length;
var content = document.getElementById ( "code-block" );
var i;
var nLinea;
var linea;
var nombreLinea;
content.innerHTML = "";
for ( i = 0; i < codigo.length; i++ )
{
if ( i + 1 < 10 )
{
nLinea = "00" + String ( i + 1 );
}
else if ( i + 1 > 9 && i + 1 < 100 )
{
nLinea = "0" + String ( i + 1 );
}
else
nLinea = String ( i + 1 );
nLinea = "
" + nLinea + "
";
nombreLinea = "codeline_" + String ( i + 1 );
linea = nLinea + "" + codigo [ i ] + "
";
content.innerHTML += linea;
}
}
/* ------------------------------------------------------------------- */
function validateNumber ( n )
{
if ( n == "" )
return false;
if ( !/^([0-9])*$/.test ( n ) )
return false;
return true;
}
/* ------------------------------------------------------------------- */
function resaltarLinea ( id )
{
var obj = document.getElementById ( "codeline_" + String ( id ) );
obj.className = "codeline_highlight";
}
/* ------------------------------------------------------------------- */
function limpiarLinea ( id )
{
var obj = document.getElementById ( "codeline_" + String ( id ) );
obj.className = "codeline";
}
function limpiarLineas ()
{
var obj;
var i;
for ( i = 0; i < NUMERO_LINEAS; i++ )
limpiarLinea ( i + 1 );
}
/* ------------------------------------------------------------------- */
function limpiarVariables ()
{
var codigo = obtenerCodigo ();
NUMERO_LINEAS = codigo.length;
LINEA_ACTUAL = 0;
ULTIMA_LINEA = 0;
PGM_I = 0;
PGM_J = 0;
PGM_K = 0;
PGM_L = 0;
VELOCIDAD = 2000;
}
/* ------------------------------------------------------------------- */
function iniciarPrograma ()
{
var boton = document.getElementById ( "simulator-boton" );
limpiarLineas ();
limpiarVariables ();
boton.innerHTML = "Detener";
boton.className = "simulator-boton-rojo";
if ( NUMERO_LINEAS > 0 )
{
inicializarDatosOperacion ();
dibujarTorres ();
LINEA_ACTUAL = 1;
leerLinea ();
}
else
{
alert ( "No existe código para ejecutar" );
}
}
/* ------------------------------------------------------------------- */
function finalizarPrograma ()
{
var boton = document.getElementById ( "simulator-boton" );
alert ( "El Algoritmo ha finalizado su ejecución" );
clearTimeout ( RELOJ );
boton.innerHTML = "Ejecutar Algoritmo";
boton.className = "simulator-boton-normal";
}
/* ------------------------------------------------------------------- */
function procesarLinea ()
{
var operacion;
var respuesta;
ULTIMA_LINEA = LINEA_ACTUAL;
respuesta = procesarLineaOperacion ( LINEA_ACTUAL );
if ( respuesta == -1 )
{
return false;
}
else
{
LINEA_ACTUAL = respuesta;
if ( LINEA_ACTUAL >= NUMERO_LINEAS + 1 )
{
finalizarPrograma ();
return false;
}
}
return true;
}
/* ------------------------------------------------------------------- */
function leerLinea ()
{
var resultado;
if ( ULTIMA_LINEA != 0 )
limpiarLinea ( ULTIMA_LINEA );
resaltarLinea ( LINEA_ACTUAL );
resultado = procesarLinea ();
if ( resultado )
RELOJ = setTimeout ( "leerLinea()", VELOCIDAD );
}
/* ------------------------------------------------------------------- */
function procesarBoton ()
{
var boton = document.getElementById ( "simulator-boton" );
if ( boton.innerHTML == "Ejecutar Algoritmo" )
{
iniciarPrograma ();
}
else
finalizarPrograma ();
}