t1 = new Array();
t1["'"] = "ь";
t1["#"] = "ъ";
t1["a"] = "а";
t1["b"] = "б";
t1["c"] = "ц";
t1["d"] = "д";
t1["e"] = "е";
t1["f"] = "ф";
t1["g"] = "г";
t1["h"] = "х";
t1["i"] = "и";
t1["j"] = "й";
t1["k"] = "к";
t1["l"] = "л";
t1["m"] = "м";
t1["n"] = "н";
t1["o"] = "о";
t1["p"] = "п";
t1["q"] = "ъ";
t1["r"] = "р";
t1["s"] = "с";
t1["t"] = "т";
t1["u"] = "у";
t1["v"] = "в";
t1["w"] = "щ";
t1["x"] = "х";
t1["y"] = "ы";
t1["z"] = "з";
t1["ä"] = "э";
t1["ë"] = "ё";

t2 = new Array();
t2["цх"] = "ч";
t2["сх"] = "ш";
t2["шх"] = "щ";
t2["зх"] = "ж";
t2["йа"] = "я";
t2["йе"] = "э";
t2["йо"] = "ё";
t2["йу"] = "ю";
t2["ыа"] = "я";
t2["ыо"] = "ё";
t2["ыу"] = "ю";
t2["+у"] = "у";
t2["+о"] = "о";
t2["+е"] = "е";
t2["+а"] = "а";
t2["+а"] = "а";
t2["+с"] = "с";
t2["+х"] = "х";
/*t2["тс"] = "ц";*/

t3 = new Array();
/* t3["цйа"] = "тся";
t3["цыа"] = "тся";
t3[" ы "] = " у "; */

var fuenteheight = 9;
var fuentewidth = 7;
var cirilico = true; 

function isUpperCase(letra)
{ 
	if( letra == "+" )	return "?";
	else if( (letra == letra.toLowerCase()) || (letra == "#") || (letra == "'")) return "n";
	else if(letra == letra.toUpperCase()) return "y";
	else return "?";
}

function anyadir_bus(evnt)
{

	var codigo = void 0;	
	codigo = evnt.which;
	var area = document.busqueda.q;  
	if( evnt.keyCode == 27) cambiar(2);		
	else if( !cirilico ) return false;
	else if ((codigo >= 33)&&(!(evnt.ctrlKey||evnt.altKey))) 
	{
    	var letra = String.fromCharCode(codigo);

		evnt.preventDefault(); // <- aqui esá el error, explorer no entiende esto
		
    	var anterior = area.value.substring(0,area.selectionStart); 
    	var posterior = area.value.substring(area.selectionEnd);
		var scroll_pixelX = area.scrollTop;
    	if(codigo < 300){
    	
    		var nueva_letra = traducir_letra(anterior,letra);    			
    		var nuevo_anterior = adaptar(anterior, nueva_letra, letra);    		
    	}
    	else
    	var nuevo_anterior = anterior+letra;
    	area.value = nuevo_anterior+posterior; 
		area.setSelectionRange(nuevo_anterior.length,nuevo_anterior.length);
		area.scrollTop = cuentalineas(nuevo_anterior)*fuenteheight;
		area.focus();  		
	}
	return false;
}

		 
function anyadir(evnt) {		
	
	var codigo = void 0;	
	codigo = evnt.which;
	var area = document.formul.textito;   
	if( evnt.keyCode == 27) cambiar(2);		
	else if( !cirilico ) return false;
	else if ((codigo >= 33)&&(!(evnt.ctrlKey||evnt.altKey))) 
	{
    	var letra = String.fromCharCode(codigo);

		evnt.preventDefault(); // <- aqui esá el error, explorer no entiende esto
		
    	var anterior = area.value.substring(0,area.selectionStart); 
    	var posterior = area.value.substring(area.selectionEnd);
		var scroll_pixelX = area.scrollTop;
    	if(codigo < 300){
    	
    		var nueva_letra = traducir_letra(anterior,letra);    			
    		var nuevo_anterior = adaptar(anterior, nueva_letra, letra);    		
    	}
    	else
    	var nuevo_anterior = anterior+letra;
    	area.value = nuevo_anterior+posterior; 
		area.setSelectionRange(nuevo_anterior.length,nuevo_anterior.length);
		area.scrollTop = cuentalineas(nuevo_anterior)*fuenteheight;
		area.focus();  		
	}
	return false;
}

function traducir_letra(txt, letra)
{
 		var upcase = isUpperCase(letra);
 		letra = letra.toLowerCase();
		var old_letra = letra;
		if( t1[letra] ) letra = t1[letra];
			else letra = old_letra;
		if(upcase == "y") letra = letra.toUpperCase();
		return letra;
}

function adaptar(anterior, nletra, letra)
/*anterior, nueva_letra*/
{
		
	len = anterior.length;
	if(len < 1) return anterior+nletra;
	var pletra = anterior.charAt(len-2); /*penultima*/
	var uletra = anterior.charAt(len-1); /*ultima*/
	var uupcase = isUpperCase(uletra);	
	var nupcase = isUpperCase(nletra);
	var par = uletra.toLowerCase()+nletra.toLowerCase();
	var trio = pletra.toLowerCase()+par;

	if( ((nletra == "ъ") || (nletra =="ь")) && (uupcase == "y") )
			nletra = nletra.toUpperCase();		
	if( ((uletra == "Ъ") || (uletra == "Ь" )) && (nupcase == "n"))
			anterior = anterior.substring(0,len-1)+uletra.toLowerCase();
	
	if( t3[trio] )
	{
		if(uupcase == "y")  return anterior.substring(0,len-2)+ t3[trio].toUpperCase();
		if(uupcase == "n")  return anterior.substring(0,len-2)+ t3[trio];
		else  
		{
				if(nupcase == "y")
					 return anterior.substring(0,len-2)+ t3[trio].toUpperCase();
				else return anterior.substring(0,len-2)+ t3[trio];
		}		
	}
	else if( t2[par] && (letra.toLowerCase() != "x") )
	{
		if(uupcase == "y")  return anterior.substring(0,len-1)+ t2[par].toUpperCase();
		if(uupcase == "n")  return anterior.substring(0,len-1)+ t2[par];
		else  
		{
				if(nupcase == "y")
					 return anterior.substring(0,len-1)+ t2[par].toUpperCase();
				else return anterior.substring(0,len-1)+ t2[par];
		}		
	}
	else return anterior+nletra;
}

function addchar2(letra) {
    if(caseLower) {        
        addchar(letra);
    }
    else {
        addchar(letra.toUpperCase());
    }
}

function addchar(letra,evnt) {
    var area = document.formul.textito;
    var anterior = area.value.substring(0,area.selectionStart); 
    var posterior = area.value.substring(area.selectionEnd);
    area.value = anterior+letra+posterior; 
    area.setSelectionRange(anterior.length+1,anterior.length+1);
    document.formul.textito.focus(); 
    return false;
}

var caseLower = true;
function toggleCaps() {
   var charKeys = getElementsByClass('char', null, 'td');
   for(i=0;i<charKeys.length; i++){                      
      if(caseLower) {
          charKeys[i].innerHTML = charKeys[i].innerHTML.toUpperCase(); 
      }
      else {
          charKeys[i].innerHTML = charKeys[i].innerHTML.toLowerCase(); 
      }
      
   }
   caseLower = !caseLower;
}

function getElementsByClass( searchClass, domNode, tagName) { 
	if (domNode == null) domNode = document;
	if (tagName == null) tagName = '*';
	var el = new Array();
	var tags = domNode.getElementsByTagName(tagName);
	var tcl = " "+searchClass+" ";
	for(i=0,j=0; i<tags.length; i++) { 
		var test = " " + tags[i].className + " ";
		if (test.indexOf(tcl) != -1) 
			el[j++] = tags[i];
	} 
	return el;
} 


function cuentalineas(anterior) {
	var enters = 0;
	var cuenta = 0;
	var i = 0;
	while (i < anterior.length) {
		if( anterior[i] == "\n" ) enters++;
		cuenta++;
		if( cuenta*fuentewidth >= document.formul.textito.clientHeight){
			cuenta = 0;
			enters++;	
		}
		i++;			
	}
	return enters;
}

function cambiar(arg){
	var lat = document.formul.b_latin.style;
	var cyr = document.formul.b_ciril.style;
	if( arg == 0 ){
		lat.borderColor = "blue";
		lat.color = "blue";
		lat.fontWeight = "bold";
		cyr.borderColor = "grey";
		cyr.color = "grey";
		cyr.fontWeight = "normal";
		cirilico = false;
	}
	else if( arg == 1){
		cyr.borderColor = "blue";
		cyr.color = "blue";
		cyr.fontWeight = "bold";
		lat.borderColor = "grey";
		lat.color = "grey";
		lat.fontWeight = "normal";
		cirilico = true;
	}
	else {
		cirilico = !cirilico;
		cambiar(cirilico);		
	}
	document.formul.textito.focus();
	return true;
}

function sel_todo()
{
	document.formul.textito.setSelectionRange(0,document.formul.textito.value.length);
	document.formul.textito.focus();
	return true;
}

function popUp(URL) {
  day = new Date();
  id = day.getTime();
  eval("page" + id + " = window.open(URL, '" + id + "', 'toolbar=0,scrollbars=1,location=0,statusbar=0,menubar=0,resizable=1,width=800,height=600,left = 20,top = -20');");
  }


