/////////////////////////////////////////////////////////////////
// Representación en caracteres Braille
// Jorge Elissalde 2002
//
// This program was made for Fundación Braille del Uruguay
// The use and redistribution of the code is free.
//
/////////////////////////////////////////////////////////////////

function CargarImagen(c) {
	tl = new Image(); 
	tl.src = "imagenes_con_generador/" + c + ".jpg";
	tl = new Image(); 
	tl.src = "imagenes_sin_generador/" + c + ".jpg";
}


function PrecargarImagenes() {
	CargarImagen("mayuscula");
	CargarImagen("numero");
	CargarImagen("punto");
	CargarImagen("coma");
	CargarImagen("punto_coma");
	CargarImagen("dos_puntos");
	CargarImagen("guion");
	CargarImagen("admiracion");
	CargarImagen("interrogacion");
	CargarImagen("comilla");
	CargarImagen("abre_parentesis");
	CargarImagen("cierra_parentesis");
	CargarImagen("suma");

	CargarImagen("enie");
	CargarImagen("asterisco");
	CargarImagen("cedilla");
	CargarImagen("arroba");
	
	CargarImagen("aacento_agudo");
	CargarImagen("eacento_agudo");
	CargarImagen("iacento_agudo");
	CargarImagen("oacento_agudo");
	CargarImagen("uacento_agudo");
	
	for (i=97; i<=122; i++) {
		c = unescape('%' + i.toString(16));
		CargarImagen(c);
	}
}

function LetraMayuscula(c) {
	if (c >= 'A' && c <= 'Z') {
		m = c.charCodeAt(0) + 32;
		c = unescape('%' + m.toString(16));
		return c;
	}
	if (c == 'Ç')
		return 'ç';
	if (c == 'Ñ')	
		return 'ñ';
	if (c == 'Á') 	
		return 'á';
	if (c == 'É')	
		return 'é';
	if (c == 'Í')	
		return 'í';
	if (c == 'Ó')	
		return 'ó';
	if (c == 'Ú') 	
		return 'ú';
	return false;
}

function SignoPuntuacion(c) {
	switch (c) {
	case '.':	return "punto";
	case ',':	return "coma";
	case ';':	return "punto_coma";
	case ':':	return "dos_puntos";
	case '_':
	case '-':	return "guion";
	case '!':
	case '¡':	return "admiracion";
	case '?':
	case '¿':	return "interrogacion";
	case '\'':
	case '"':	return "comilla";
	case '(':	return "abre_parentesis";
	case ')':	return "cierra_parentesis";
	case '+':	return "suma";
	case '*':	return "asterisco";
	case '@':	return "arroba";
	}
	return false;
}


function TituloPuntuacion(c) {
	switch (c) {
	case '.':	return "punto";
	case ',':	return "coma";
	case ';':	return "punto y coma";
	case ':':	return "dos puntos";
	case '_':
	case '-':	return "guión";
	case '!':
	case '¡':	return "signo de admiración";
	case '?':
	case '¿':	return "signo de interrogación";
	case '\'':
	case '"':	return "comilla";
	case '(':	return "abre paréntesis";
	case ')':	return "cierra paréntesis";
	case '+':	return "más";
	case '*':	return "asterisco";
	case '@':	return "arroba";
	}
	return false;
}


function CaracterRepresentable(c) {
	if (c == " ")
		return true;
	if (c >= '0' && c <= '9')
		return true;
	if (c >= 'a' && c <= 'z')
		return true;
	if (c == 'ñ' || c == 'ç' || c == 'á' || c == 'é' || c == 'í' || c == 'ó' || c == 'ú')
		return true;
	if (c == 'à' || c == 'è' || c == 'ì' || c == 'ò' || c == 'ù')
		return true;
	if (LetraMayuscula(c))
		return true;
	if (SignoPuntuacion(c))
		return true;
	return false;
}



function BuscarObjeto(n,d) {
  var p,i,x;

  if (!d)
	d=document;
  if((p=n.indexOf("?"))>0&&parent.frames.length) {
        d=parent.frames[n.substring(p+1)].document;
        n=n.substring(0,p);
  }
  if(!(x=d[n])&&d.all)
        x=d.all[n];
  for (i=0;!x&&i<d.forms.length;i++)
        x=d.forms[i][n];
  for(i=0;!x&&d.layers&&i<d.layers.length;i++)
        x=BuscarObjeto(n,d.layers[i].document);
  if(!x && document.getElementById)
        x=document.getElementById(n);
  return x;
}


function SetImagen(objname, imagen) {
      var obj = BuscarObjeto(objname);
      obj.src = imagen;       
}


function InsertarBraille(c,c_texto,id) {
	var ver_generador = BuscarObjeto("ver_generador").checked;

	if (ver_generador)
		path_imagen = "imagenes_con_generador/";
	else	path_imagen = "imagenes_sin_generador/";

	imagen_normal = path_imagen + c + ".jpg";
	id = "img_" + id;
	s  = "<td>";

	if (!ver_generador) {
		////////////////////////////////////////////////
	 	// activa el cambio en linea de la imagen sin
                // generador a imagen con generador
                ////////////////////////////////////////////////
		s += "<a href=\"JavaScript:PuntoBraille()\" ";
                imagen_gen = "imagenes_con_generador/" + c + ".jpg";
                s += " OnMouseOver=\"SetImagen('"+id+"','"+imagen_gen+"')\" ";
                s += " OnMouseOut=\"SetImagen('"+id+"','"+imagen_normal+"')\" ";
		s += " >";
	}

	s += "<img border=0 src='" + imagen_normal + "'";
	s += " title='" + c_texto + "' alt='" + c_texto + "'";
	s += " name='"+id+"'";
	s += ">";

	if (!ver_generador)
		s += "</a>";
	s += "</td>\n";
	return s;
}


function MostrarBraille() {
	var txt = BuscarObjeto("texto_tinta").value
	var ver_tinta = BuscarObjeto("ver_tinta").checked;
	var ver_generador = BuscarObjeto("ver_generador").checked;
		
	var outTXT_link ;
	var outTXT_letra;
	var fuente = "<font face='Verdana,Arial' size=2>";	
	
	if (txt.length == 0)
		return;
	
	outTXT_link  = "<table border=0 cellpadding=0 cellspacing=0><tr>";
	outTXT_letra = "</tr><tr>";
	mayuscula    = false;
	numero       = false;
	nchars       = 0;
	charID	     = 0;

	for (i=0; i<txt.length; i++,charID++) {
		c = txt.charAt(i);
		if (c == '\n' || nchars >= 27) {
			nchars = 0;
			if (ver_tinta) {
				outTXT_link  += outTXT_letra;
				outTXT_letra  = "</tr><tr>";
			}
			else {
				outTXT_link += "</tr>";
		 	}	
			outTXT_link  += "<tr><td>&nbsp;</td></tr>";
			outTXT_letra += "<td>&nbsp;</td></tr><tr>";
			outTXT_link += "</tr><tr>";
			if (c == '\n') {
				mayuscula = false;
				continue;
			}
		}
		if (!CaracterRepresentable(c))
			continue;

		++nchars;
		c_texto = c;
		if (c == " ") {
			// espacio
			outTXT_link  += "<td width=25>&nbsp;</td>";
			outTXT_letra += "<td width=25>&nbsp;</td>";
			mayuscula = false;
			numero    = false;
			continue;
		}
		if ((remp=SignoPuntuacion(c))) {
			if (c == '.')
				mayuscula = false;
				
			t = TituloPuntuacion(c);
			outTXT_link  += InsertarBraille(remp,t,charID);
			outTXT_letra += "<td align='center'><font face='Verdana, Arial' size=2>"+c+"</b></td>";	
			continue;
		}
		if ((remp=LetraMayuscula(c))) {
			// mayúscula
			if (!mayuscula) {
				// doble mayúscula ?
				if (i<txt.length && LetraMayuscula(txt.charAt(i+1))) {
					outTXT_link += InsertarBraille("mayuscula","signo de mayúscula",charID++);
					outTXT_letra += "<td align='center'><font face='Verdana, Arial' size=1>(may)</td>";
				}
				outTXT_link += InsertarBraille("mayuscula","signo de mayúscula",charID++);
				outTXT_letra += "<td align='center'><font face='Verdana, Arial' size=1>(may)</td>";	
				mayuscula = true;
			}
			c = remp;
		}
		if (c >= '0' && c <= '9') {
			// número
			if (!numero) {
				outTXT_link  += InsertarBraille("numero","signo de número",charID++);
				outTXT_letra += "<td align='center'><font face='Verdana, Arial' size=1>(nro)</td>";	
				numero = true;
			}
			if (c == '0')
				c = 'j';
			else {
				m = c.charCodeAt(0)+48;
				c = unescape('%' + m.toString(16));
			}
		}

		
		switch (c) {
		case 'ç':
			outTXT_link  += InsertarBraille("cedilla","ç",charID);
			outTXT_letra += "<td align='center'>" + fuente + c_texto + "</b></td>";
			continue ;		
		case 'ñ':
			outTXT_link  += InsertarBraille("enie","ñ",charID);
			outTXT_letra += "<td align='center'>" + fuente + c_texto + "</b></td>";
			continue ;		
		case 'à':
		case 'á':
			outTXT_link  += InsertarBraille("aacento_agudo",c,charID);
			outTXT_letra += "<td align='center'>" + fuente + c_texto + "</b></td>";
			continue ;		
		case 'è':
		case 'é':
			outTXT_link  += InsertarBraille("eacento_agudo",c,charID);
			outTXT_letra += "<td align='center'>" + fuente + c_texto + "</b></td>";
			continue ;		
		case 'ì':
		case 'í':
			outTXT_link  += InsertarBraille("iacento_agudo",c,charID);
			outTXT_letra += "<td align='center'>" + fuente + c_texto + "</b></td>";
			continue ;		
		case 'ò':
		case 'ó':
			outTXT_link  += InsertarBraille("oacento_agudo",c,charID);
			outTXT_letra += "<td align='center'>" + fuente + c_texto + "</b></td>";
			continue ;		
		case 'ù':
		case 'ú':
			outTXT_link  += InsertarBraille("uacento_agudo",c,charID);
			outTXT_letra += "<td align='center'>" + fuente + c_texto + "</b></td>";
			continue ;		

		}
		
		outTXT_link  += InsertarBraille(c,c_texto,charID);
		outTXT_letra += "<td align='center'>" + fuente + c_texto + "</b></td>";
	}
	if (ver_tinta)
		outTXT_link += outTXT_letra;
	outTXT_link += "</tr></table>";
	t = BuscarObjeto("texto_braille");
	t.innerHTML = outTXT_link;
}


function rand() {
	now=new Date()
	num=(now.getSeconds())%10
   	num=num+1
   	return num;
}

function EnviarLog() {
	var txt = BuscarObjeto("texto_tinta").value
	var tl  = new Image();
	tl.src  = "http://fbraille.com.uy/alfabeto/alog.php?txt="+txt+"&r=" + rand();
}


function submit_form() {
	MostrarBraille();
	EnviarLog();
	return false;
}

function PuntoBraille() {
}