// Lista de escenas desiponibles

var listaEscenas;	



// Lista de botones para la secciones

var liSecciones;	



// El indice dentro de la lista de la escena que se esta mostrando 

var indexActual;	



/*

	Este objeto se usara como arreglo asosiativo para registar variables

	y sus valores desde las escenas. Tambien de aqui se sacaran las

	variables para inyectarlas en el applet que la solicite

	

	Ver metodos submitVarsToApplet(), registraVar(nameVar, valueVar)

*/

var hashVariables;	 



var nEscenasIntro;



/*

*********************************************************************

* Metodos para el manejo de las escenas 

*********************************************************************

*/





/**

	Inicia las variables y parcea la lista de secciones con sus respectivas

	rutas a las escenas que contienen en el tag <ul id = 'listaSecciones'> 

*/

function initPage(){



	var idULEscenas = 'listaSecciones';

	var ULEscenas = document.getElementById(idULEscenas); 

	var listaLiTmp = ULEscenas.getElementsByTagName('li');

	var auxIndex = 0;

	

	listaEscenas = new Array();

	hashVariables = new Object;

	liSecciones = new Array();

	indexActual = -1;

	nEscenasIntro = 0;

	for(var i = 0;i<listaLiTmp.length ;i++){

		tmpLi = listaLiTmp[i];

		grandParent = tmpLi.parentNode;

	

		if(grandParent == ULEscenas){		

			var linkTmp = document.createElement('a');

			liSecciones[liSecciones.length] = tmpLi;

			var span2 = tmpLi.getElementsByTagName('span');

			if(span2.length <=0){

				alert("No se encontro la etiqueta para la seccion en :\n"+tmpLi.innerHTML);

				continue;

			}

			span2 = span2[0];

			linkTmp.href="javascript:ponEscena("+auxIndex+");void(0);";

			linkTmp.innerHTML = span2.innerHTML;

			span2.innerHTML = "";

			span2.appendChild(linkTmp);	

		} else {

			while((grandParent != ULEscenas) && (grandParent != null))

				grandParent = grandParent.parentNode;

				

			if(grandParent == ULEscenas){

				listaEscenas[listaEscenas.length] = tmpLi;

				auxIndex = auxIndex + 1;

				if(liSecciones.length<=1){

					nEscenasIntro++;

				}

			} 

		}

	}





	ponEscena(0);



}







/*

*********************************************************************

* Funciones para los botones de herramientas

*********************************************************************

*/



function cerrar(){

	try{

		window.close();

	}catch(e){

		alert("No se pudo cerrar la ventana\n"+e);

	}

}







function AbrirCentrado(Url,NombreVentana,width,height,extras) {

var largo = width;

var altura = height;

var adicionales= extras;

var top = (screen.height-altura)/2;

var izquierda = (screen.width-largo)/2; nuevaVentana=window.open(''+ Url + '',''+ NombreVentana + '','width=' + largo + ',height=' + altura + ',top=' + top + ',left=' + izquierda + ',features=' + adicionales + '');

nuevaVentana.focus();

}



function verCreditos(){

	var largo = 760;

        var altura = 290;

	var adicionales= ' ';

	var top = (screen.height-altura)/2;

	var izquierda = (screen.width-largo)/2; 

	var cfgWin = "resizable=no,location=no,menubar=no,status=no,titlebar=no,toolbar=no";

	nuevaVentana=window.open(''+ 'docs/creditos.html' + '',''+ 'creditos' + '','width=' + largo + ',height=' + altura + ',top=' + top + ',left=' + izquierda + ',features=' + adicionales + ''+ cfgWin);

	nuevaVentana.focus();

	

}



function verDocumentacion(pagina){

	var pagina='docs/info.html'

	var largo = 800;

        var altura = 600;

	var adicionales= ' ';

	var top = 10;

	var izquierda = (screen.width-largo)/2; 

	var cfgWin = "resizable=yes,location=no,menubar=no,status=no,titlebar=no,toolbar=no, scrollbars=yes";

	nuevaVentana=window.open(''+ pagina + '',''+ 'documentacion' + '','width=' + largo + ',height=' + altura + ',top=' + top + ',left=' + izquierda + ',features=' + adicionales + ''+ cfgWin);

	nuevaVentana.focus();

}

function verCalculadora(pagina){

	var pagina2='escenas/calculadora/index.html'

	var largo = 500;

        var altura = 300;

	var adicionales= ' ';

	var top = 10;

	var izquierda = (screen.width-largo)/2; 

	var cfgWin = "resizable=yes,location=no,menubar=no,status=no,titlebar=no,toolbar=no, scrollbars=yes";

	nuevaVentana=window.open(''+ pagina2 + '',''+ 'documentacion' + '','width=' + largo + ',height=' + altura + ',top=' + top + ',left=' + izquierda + ',features=' + adicionales + ''+ cfgWin);

	nuevaVentana.focus();

}

/*

*********************************************************************

* Funciones para la navegacion

*********************************************************************

*/



function anteriorEscena(){

	if (indexActual>0) {

		var nextIndex =	Math.max(indexActual-1,0);

		ponEscena(nextIndex);

	}

}



function siguienteEscena(){

	if (indexActual+1<listaEscenas.length) {

		var nextIndex =	Math.min(indexActual+1,listaEscenas.length-1);

		ponEscena(nextIndex);

	}

}





function ponEscena(indexEscena){

	indexActual = indexEscena;

	var idContenedor = 'containerApplet';

	var iframeC = document.getElementById(idContenedor);

	if(!iframeC){

		alert("No se pudo encontrar el iframe : '"+idContenedor+"'");

		return;

	}



	limpiaSeleccionSeccion();

	var otraClase = (indexActual < nEscenasIntro)?'primerElementoAct':'seccionActiva'

	var tmpLi = listaEscenas[indexActual];

	var tmpParent = tmpLi.parentNode;

	while(tmpParent.tagName.toLowerCase() != 'li'){

		tmpParent = tmpParent.parentNode ;

	}

	tmpParent.className = otraClase;

	iframeC.src = tmpLi.innerHTML;

}







function limpiaSeleccionSeccion(){

	for(var i = 0; i<liSecciones.length;i++){

		liSecciones[i].className = (i==0)?"primerElemento":'';

	}

}















/*

*********************************************************************

* Registro y volcado al applet de variables

*********************************************************************

*/



function registraVar(nameVar, valueVar){

	var arrayNames = nameVar.split(',');

	var arrayValues = valueVar.split(',');

	

	

	if(arrayNames.length != arrayValues.length){

		alert("El numero de elementos de las listas no coincide");

	}

	

	for (var i = 0; i < arrayNames.length;i++){

		var key = arrayNames[i];

		var val = arrayValues[i];



		hashVariables[key] = val;

	}

}







function submitVarsToApplet(){

	var idContenedor = 'containerApplet';

	var iframeAct = document.getElementById(idContenedor);

	var strDump = '';

	for(var a in hashVariables){

		var valueTmp = hashVariables[a];

		if(''.match(/^\d+(\.\d+)?/i)){

			valueTmp = parseFloat(valueTmp);

		} else {

			valueTmp = "'"+valueTmp+"'";

		}

		strDump += a+"="+valueTmp+"\n";

	}

	

	var listaApplets = null;

	if(iframeAct.contentDocument)

		listaApplets = iframeAct.contentDocument.getElementsByTagName('applet');

	else

		listaApplets = iframeAct.contentWindow.document.getElementsByTagName('applet');

		

	

	if(listaApplets.length > 0){

		var applet = listaApplets[0]; 

		try{

			applet.undump(strDump);

			applet.refresh();

		} catch(e){

			alert(e);

		}

	}

}









/*

*********************************************************************

* Funcion de debug

*********************************************************************

*/

function inspectObj(obj){

	for(var a in obj){

		if(!confirm(a+" = "+obj[a]))

			break;

	}

}