function translate(msgField1, msgField2)
{
	var msg = msgField1.value;

	var msg_part = new Array();
	var current_part = '';
	var bracket_open = false;

	for (i = 0; i < msg.length; i++)
	{
		chr = msg.charAt(i);
		
		if (chr == '[')
		{
			bracket_open = true;
			msg_part[msg_part.length] = current_part;
			//current_part = chr;
			current_part = '';
		}
		else if (chr == ']' && bracket_open)
		{
			bracket_open = false;
			//current_part += chr;
			msg_part[msg_part.length] = current_part;
			current_part = '';
		}
		else
		{
			current_part += chr;
		}	
	}
	
	msg_part.push(current_part);

	var search_cap = new Array(/S(HCH|hch)/g, /[YJ][Oo]/g, /C[Hh]/g, /S[Hh]/g, /(E[Hh]|-E)/g, /[YJ][Uu]/g, /[YJ][Aa]/g, /Z[Hh]/g, /(#|'')/g, /A/g, /B/g, /[VW]/g, /G/g, /D/g, /E/g, /Z/g, /I/g, /J/g, /K/g, /L/g, /M/g, /N/g, /O/g, /P/g, /R/g, /C/g, /S/g, /T/g, /U/g, /F/g, /[HX]/g, /'/g, /Y/g);
	var replace_cap = new Array("Ù", "¨", "×", "Ø", "Ý", "Þ", "ß", "Æ", "Ú", "À", "Á", "Â", "Ã", "Ä", "Å", "Ç", "È", "É", "Ê", "Ë", "Ì", "Í", "Î", "Ï", "Ð", "Ö", "Ñ", "Ò", "Ó", "Ô", "Õ", "Ü", "Û");
	
	var search_small = new Array(/shch/g, /[yj]o/g, /ch/g, /sh/g, /(eh|-e)/g, /[yj]u/g, /[yj]a/g, /zh/g, /(#|'')/g, /a/g, /b/g, /[vw]/g, /g/g, /d/g, /e/g, /z/g, /i/g, /j/g, /k/g, /l/g, /m/g, /n/g, /o/g, /p/g, /r/g, /c/g, /s/g, /t/g, /u/g, /f/g, /[hx]/g, /'/g, /y/g);
	var replace_small = new Array("ù", "¸", "÷", "ø", "ý", "þ", "ÿ", "æ", "ú", "à", "á", "â", "ã", "ä", "å", "ç", "è","é", "ê", "ë", "ì", "í", "î", "ï", "ð", "ö", "ñ", "ò", "ó", "ô", "õ", "ü", "û");
	
	for (j = 0; j < msg_part.length; j++)
	{
		if (msg_part[j] != '')
		{
			for (k=0; k < search_cap.length; k++)
			{
				msg_part[j] = msg_part[j].replace(search_small[k],replace_small[k]);
				msg_part[j] = msg_part[j].replace(search_cap[k],replace_cap[k]);
			}
		}
		j++;
	}
	
	msg = msg_part.join("");

	msgField2.value = msg;
}
