//////////////////////////////////////
//           navi 0.7              //
// CÓDIGO PARA NOVELAS VISUALES   //
///////////////////////////////////

/*
Lista de funciones
##################
Funciones de página:
	cargar, mostrar, ve_a, inicio, avanza, retrocede
Funciones de escritura:
	tf, te, ne, be, pe, fondo_texto, fo, tif
Funciones de efectos
	escribe, aparecer, desvanecer, brilla
Funciones de apoyo
	modificarcelda
*/

//inicializar variables
var letra = 0;//contador de la función escribe, para saber qué carácter escribir cada vez
var numero = 0;//contador para la función aparecer
var velocidad = 3;//velocidad a la que se muestra el texto
var titulo;//título de la obra
var fin;//última página
var pagina = 1;//página
var pagina_reserva;//página de reserva para cuando se vaya al inicio permitir volver a la página anterior
var i=1;//variable para la función cargar

/*
Leyenda:

- a: aparece elemento
- b: efecto brillar
- d: desaparece elemento
- e: pausa
- r: regresa a la página indicada.
- v: modifica la velocidad

- c: tabla de créditos
- f: tabla de fondos
- p: tabla de personajes
- t: tabla de diálogo;

- _c: alinea la imagen al centro (p)
- _d: alinea la imagen a la derecha (p)
- _i: alinea la imagen a la izquierda (p)

- _a: efecto aparecer (c,f,p,t)
- _e: efecto escribir (c,t)
- _p: efecto párrafo (c,t)

- _t: altura de tabla (c,t)
- _f: fondo (c,t)

*/
var a = new Array;//array de aparecer
var d = new Array;//array de desvanecer
var b = new Array;//array de efecto brillar
var e = new Array;//array de espera
var n = new Array;//array de narrador
var r = new Array;//array de regreso
var v = new Array;//array de velocidad
//sin efecto
var c = new Array;//array de créditos sin efecto
var f = new Array;//array de imágenes de fondo sin efecto
var p = new Array;//array de personajes sin efecto
var t = new Array;//array de líneas de texto sin efecto
//con efecto aparecer
var ca = new Array;
var fa = new Array;
var pa = new Array;
var ta = new Array;
//con efecto escribir
var ce = new Array;
var te = new Array;
//con párrafo
var cp = new Array;
var tp = new Array;
//con párrafo y aparecer
var cpa = new Array;
var tpa = new Array;
//con párrafo y escribir
var cpe = new Array;//NO FUNCIONALES
var tpe = new Array;

//alinear imagen de personaje
var pc = new Array;
var pd = new Array;
var pi = new Array;
var pca = new Array;
var pia = new Array;
var pda = new Array;

//altura de tabla
var ct = new Array;
var tt = new Array;
//fondo de tabla
var tf = new Array;
var cf = new Array;

//FUNCIONES DE PÁGINA

////////////////////////////////////////////////////////////
function cargar()
{
  if(navigator.appName != "Microsoft Internet Explorer")
  {
	modificarcelda("pjs").style.opacity = 0;
	if(i!=fin)
	{
		if(p[i]) modificarcelda("pjs").style.backgroundImage = "url('" + p[i] + "')";
		if(pa[i]) modificarcelda("pjs").style.backgroundImage = "url('" + pa[i] + "')";
		if(f[i]) modificarcelda("pjs").style.backgroundImage = "url('" + f[i] + "')";
		if(fa[i]) modificarcelda("pjs").style.backgroundImage = "url('" + fa[i] + "')";
		setTimeout("cargar()",100);
		i++;
	}
	else
	{
		modificarcelda("pjs").style.opacity = 0.9;
		modificarcelda("pjs").style.backgroundImage = "url('.')";
 		mostrar();
	}
 }
 else
 {
	mostrar();
 }

}

////////////////////////////////////////////////////////////
function mostrar()
{
	// muestro en la barra superior el título, su fondo y la página actual / total de páginas
	document.title = titulo;
	//reseteo veloc_mod a la velocidad de la historia (inútil por ahora)
	veloc_mod=velocidad;
	//compruebo si en la presente página hay cambios de texto, créditos, fondos, efectos o personajes y cambio los tamaños de las tablas y fondos
	if(n[pagina]) pon_narrador(n[pagina]);
	if(b[pagina]) haz_brillar(b[pagina]);
	if(v[pagina]) velocidad=v[pagina];
	if(r[pagina]) setTimeout("ve_a("+r[pagina]+");", 2000);
	if(e[pagina]) setTimeout("avanza();", e[pagina]*1000);
	if(a[pagina]) setTimeout('aparecer("'+a[pagina]+'",0)',100);
	if(d[pagina]) setTimeout('desvanecer("'+d[pagina]+'",0)',100);
	//
	if(t[pagina]) modificarcelda("txt").innerHTML = t[pagina];
	if(c[pagina]) modificarcelda("cre").innerHTML = c[pagina];
	if(f[pagina]) modificarcelda("loc").style.backgroundImage = "url('" + f[pagina] + "')";
	if(p[pagina]) modificarcelda("pjs").style.backgroundImage = "url('" + p[pagina] + "')";
	//
	if(pc[pagina]) pj_centro(pc[pagina]);
	if(pd[pagina]) pj_dcha(pd[pagina]);
	if(pi[pagina]) pj_izda(pi[pagina]);
	//
	if(ca[pagina]) creditos_aparecer(ca[pagina]);
	if(fa[pagina]) fondo_aparecer(fa[pagina]);
	if(pa[pagina]) pj_aparecer(pa[pagina]);
	if(pca[pagina]) pj_aparecer_centro(pca[pagina]);
	if(pia[pagina]) pj_aparecer_izda(pia[pagina]);
	if(pda[pagina]) pj_aparecer_dcha(pda[pagina]);
	if(ta[pagina]) texto_aparecer(ta[pagina]);
	if(te[pagina]) texto_efecto(te[pagina]);
	if(ce[pagina]) creditos_efecto(ce[pagina]);
	//
	if(tp[pagina]) modificarcelda("txt").innerHTML += tp[pagina] + "<br>";
	if(cp[pagina]) modificarcelda("cre").innerHTML += cp[pagina] + "<br>";
	//
	if(ct[pagina]) modificarcelda("creditos").style.height = ct[pagina];
	if(cf[pagina]) fondo_cambiar(cf[pagina],"creditos");
	if(tf[pagina]) fondo_cambiar(tf[pagina],"texto");
	if(tt[pagina]) modificarcelda("texto").style.height = tt[pagina];
	//
	if(cpa[pagina]) creditos_parrafo_aparecer(cpa[pagina]);
	if(cpe[pagina]) creditos_parrafo_efecto(cpe[pagina]);
	if(tpa[pagina]) texto_parrafo_aparecer(tpa[pagina]);
	if(tpe[pagina]) texto_parrafo_efecto(tpe[pagina]);

}

////////////////////////////////////////////////////////////
function ve_a(page)
{
	pagina_reserva = page;
	pagina = page;
	mostrar();
}

////////////////////////////////////////////////////////////
function volver()
{
	pagina = pagina_reserva;
	mostrar();
}

////////////////////////////////////////////////////////////
function inicio()
{
	pagina_reserva = page;
	pagina = 1;
	mostrar();
}

////////////////////////////////////////////////////////////
function avanza()
{
	if(pagina!=fin)
	{
		pagina += 1;
		mostrar();
	}
}

////////////////////////////////////////////////////////////
function retrocede()
{
	if(pagina!=1)
	{
		pagina -= 1;
		mostrar();
	}
}


//FUNCIONES DE ESCRITURA

///////////////////////////////////////////////////////////
function creditos_efecto(texto)
{
	letra=0;
	modificarcelda("cre").innerHTML = " ";
	escribe_creditos("cre", texto);
}

////////////////////////////////////////////////////////////
function creditos_parrafo_efecto(texto)
{
	letra=0;
	modificarcelda("cre").innerHTML += " ";
	escribe_parrafo_creditos("cre", texto);
}

///////////////////////////////////////////////////////////
function creditos_parrafo_aparecer(texto)
{
	var color = 0;
	modificarcelda("cre").innerHTML += "<span id='creditos"+numero+"'>"+texto+"</span>";
	aparecer("creditos"+numero+"",0);
	numero++;
}
///////////////////////////////////////////////////////////
function creditos_aparecer(texto)
{
	var color = 0;
	modificarcelda("cre").innerHTML = "<span id='creditos"+numero+"'>"+texto+"</span>";
	aparecer("creditos"+numero+"",0);
	numero++;
}

////////////////////////////////////////////////////////////
function haz_brillar(id)
{
	brilla(id);
}

////////////////////////////////////////////////////////////
function pon_narrador(texto)
{
	modificarcelda("narrador").innerHTML = texto;
}

////////////////////////////////////////////////////////////
function pj_centro(personaje)
{
	modificarcelda("pjs").style.backgroundPosition = "bottom center";
	modificarcelda("pjs").style.backgroundImage = "url(" + personaje + ")";
}

////////////////////////////////////////////////////////////
function pj_izda(personaje)
{
	modificarcelda("pjs").style.backgroundPosition = "bottom left";
	modificarcelda("pjs").style.backgroundImage = "url(" + personaje + ")";
}

////////////////////////////////////////////////////////////
function pj_dcha(personaje)
{
	modificarcelda("pjs").style.backgroundPosition = "bottom right";
	modificarcelda("pjs").style.backgroundImage = "url(" + personaje + ")";
}

////////////////////////////////////////////////////////////
function pj_aparecer(personaje)
{
	var newImage = "url(" + personaje + ")";
	modificarcelda("pjs").style.opacity = 0.1;
	setTimeout('aparecer("pjs",0)',100);
	modificarcelda("pjs").style.backgroundImage = newImage;
}

////////////////////////////////////////////////////////////
function pj_aparecer_centro(personaje)
{
	var newImage = "url(" + personaje + ")";
	modificarcelda("pjs").style.backgroundPosition = "bottom center";
	modificarcelda("pjs").style.opacity = 0.1;
	setTimeout('aparecer("pjs",0)',100);
	modificarcelda("pjs").style.backgroundImage = newImage;
}

////////////////////////////////////////////////////////////
function pj_aparecer_izda(personaje)
{
	var newImage = "url(" + personaje + ")";
	modificarcelda("pjs").style.backgroundPosition = "bottom left";
	modificarcelda("pjs").style.opacity = 0.1;
	setTimeout('aparecer("pjs",0)',100);
	modificarcelda("pjs").style.backgroundImage = newImage;
}

////////////////////////////////////////////////////////////
function pj_aparecer_dcha(personaje)
{
	var newImage = "url(" + personaje + ")";
	modificarcelda("pjs").style.backgroundPosition = "bottom right";
	modificarcelda("pjs").style.opacity = 0.1;
	setTimeout('aparecer("pjs",0)',100);
	modificarcelda("pjs").style.backgroundImage = newImage;
}

////////////////////////////////////////////////////////////
function fondo_cambiar(fondo,id)
{
	var newImage = "url(" + fondo + ")";
	modificarcelda(id).style.backgroundImage = newImage;
}

////////////////////////////////////////////////////////////
function fondo_aparecer(fondo)
{
	var newImage = "url(" + fondo + ")";
	modificarcelda("loc").style.opacity = 0.1;
	setTimeout('aparecer("loc",0)',100);
	modificarcelda("loc").style.backgroundImage = newImage;
}

///////////////////////////////////////////////////////////
function texto_parrafo_aparecer(texto)
{
	var color = 0;
	modificarcelda("txt").innerHTML += "<br><span id='parrafo"+numero+"'>"+texto+"</span>";
	aparecer("parrafo"+numero+"",0);
	numero++;
}

///////////////////////////////////////////////////////////
function texto_aparecer(texto)
{
	var color = 0;
	modificarcelda("txt").innerHTML = "<span id='parrafo"+numero+"'>"+texto+"</span>";
	aparecer("parrafo"+numero+"",0);
	numero++;
}

////////////////////////////////////////////////////////////
function texto_efecto(texto)
{
	letra=0;
	modificarcelda("txt").innerHTML = " ";
	escribe("txt", texto);
}

////////////////////////////////////////////////////////////
function texto_parrafo_efecto(texto)
{
	letra=0;
	modificarcelda("txt").innerHTML += "<br>";
	escribe_parrafo("txt", texto);
}



//FUNCIONES DE EFECTOS

////////////////////////////////////////////////////////////
function escribe(id,texto)
{
	if(letra<texto.length && te[pagina]==texto)
	{
		modificarcelda(id).innerHTML += texto.charAt(letra);
		letra++;
		setTimeout("escribe('"+id+"','"+texto+"')",velocidad*10);
	}
}

////////////////////////////////////////////////////////////
function escribe_creditos(id,texto)
{
	if(letra<texto.length && ce[pagina]==texto)
	{
		modificarcelda(id).innerHTML += texto.charAt(letra);
		letra++;
		setTimeout("escribe_creditos('"+id+"','"+texto+"')",velocidad*10);
	}
}

////////////////////////////////////////////////////////////
function escribe_parrafo(id,texto)
{
	if(letra<texto.length && tpe[pagina]==texto)
	{
		modificarcelda(id).innerHTML += texto.charAt(letra);
		letra++;
		setTimeout("escribe_parrafo('"+id+"','"+texto+"')",velocidad*10);
	}
}

////////////////////////////////////////////////////////////
function escribe_parrafo_creditos(id,texto)
{
	if(letra<texto.length && cpe[pagina]==texto)
	{
		modificarcelda(id).innerHTML += texto.charAt(letra);
		letra++;
		setTimeout("escribe_parrafo_creditos('"+id+"','"+texto+"')",velocidad*10);
	}
}

///////////////////////////////////////////////////////////
function aparecer(id,color)
{
	var obj = document.getElementById(id);
	var color_suma;
	obj.style.display = "block";
	if (!(color>=110))
	{
		obj.style.filter = 'alpha(opacity='+color+')';
		obj.style.opacity = color /100;
		obj.style.MozOpacity = color /100;
		obj.style.KHTMLOpacity = color /100;
		color_suma = color + 10;
		window.setTimeout ("aparecer('"+id+"',"+color_suma+");", 70);
	}
}

//////////////////////////////////////////////////////////
function desvanecer(id, color)
{
	var obj2 = document.getElementById(id);v
	var color_resta;
	if (!(color <=-10))
	{
		obj2.style.filter = 'alpha(opacity='+color+')';
		obj2.style.opacity = color /100;
		obj2.style.MozOpacity = color /100;
		obj2.style.KHTMLOpacity = color /100;
		color_resta = color - 10;
		window.setTimeout ("desvanecer('"+id+"',"+color_resta+");", 70);
	}
}

////////////////////////////////////////////////////////////
function brilla(id)
{
	if(b[pagina])
	{
		if(modificarcelda(id).style.opacity==0.6) modificarcelda(id).style.opacity = 0.2;
		else modificarcelda(id).style.opacity = 0.6;
		setTimeout("brilla('"+id+"')",500);
	}
	else
	{
		modificarcelda(id).style.opacity=0.6;
		modificarcelda(id).style.backgroundColor=null; //BUSCAR COMO QUITAR EL COLOR
	}
}

//FUNCIONES DE APOYO

////////////////////////////////////////////////////////////
function modificarcelda(id)
{
	return document.getElementById(id);
}

