// Transliteration conversion script
// Written by pl@yer specially for besedka.be
// Inspired by convertion algorithm used at imho.ws
// Copying or usage at a host different from 
// 	besedka.be
// of that script or any part of it, 
// without written permission of pl@yer restricted!
// (c) 2005

var elc="p_help";
//var elp = "p_help_link";
// Alphabetic
var rusCap = "ÀÁÂÃÄÅ¨ÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖ×ØÙüÛúÝÞß";
var rusLow = "àáâãäå¸æçèéêëìíîïðñòóôõö÷øùüûúýþÿ";

// One character letters
var t_table1 = "ABVGDEZIJKLMNOPRSTUFHXCWYabvgdezijklmnoprstufhxcwy'~";
var w_table1 = "ÀÁÂÃÄÅÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÕÖÙÛàáâãäåçèéêëìíîïðñòóôõõöùûüú";

// Two character letters
var t_table2 = "J'I'E'YOJOZHCHSHYUJUYAJAj'i'e'yojozhchshyujuyaja";//Defined later: YoYoZhChShYuJuYaJa";
var w_table2 = "ÉÉÝ¨¨Æ×ØÞÞßßééý¸¸æ÷øþþÿÿ";//Defined later: ¨¨Æ×ØÞÞßß";

// HTML Special characters
var spec_table=new Array("&trade;","&amp;","&lt;","&gt;","&nbsp;","&copy;","&reg;");


function initHelpLayer(){
	var
	translit_help  = "<div id='p_help' style='position:absolute;display:none;visibility:hidden;right:15px;z-index:2;vertical-align:middle;font-weight:bold'>";
	translit_help += "<table width='200' frame='box' cellspacing='1' bgcolor='#CCCCCC' style='font-size:12px;'>";
	var up_row = "";
	var lo_row = "";
	for (k = 0; k < rusCap.length; k++){
			var c = rusCap.charAt(k);
			up_row += "<td scope='col'>" + c + "</td>";
			lo_row += "<td>";

			var l = -1;
			while ((l = w_table1.indexOf(c, l+1)) != -1){
					lo_row += " " + t_table1.charAt(l) + " ";
			}
			while ((l = w_table2.indexOf(c, l+1)) != -1){
					lo_row += " " + t_table2.charAt(2*l) + "" + t_table2.charAt(2*l+1) + " ";
			}

			lo_row += "</td>";
	}
	lo_row = lo_row.replace(/[ ]{2}/g, ",&nbsp;");
	translit_help += "<tr align='center' valign='middle' bgcolor='#FFFF99'>" + up_row + "</tr>";
	translit_help += "<tr align='center' valign='middle' bgcolor='#FFFFCC'>" + lo_row + "</tr>";
	up_row = lo_row = "";
	for (k = 0; k < rusLow.length; k++){
			var c = rusLow.charAt(k);
			up_row += "<td scope='col'>" + c + "</td>";
			lo_row += "<td>";

			var l = -1;
			while ((l = w_table1.indexOf(c, l+1)) != -1){
					lo_row += " " + t_table1.charAt(l) + " ";
			}
			while ((l = w_table2.indexOf(c, l+1)) != -1){
					lo_row += " " + t_table2.charAt(2*l) + "" + t_table2.charAt(2*l+1) + " ";
			}
			lo_row += "</td>";
	}
	lo_row = lo_row.replace(/[ ]{2}/g, ",&nbsp;");
	translit_help += "<tr align='center' valign='middle' bgcolor='#FFFF99'>" + up_row + "</tr>";
	translit_help += "<tr align='center' valign='middle' bgcolor='#FFFFCC'>" + lo_row + "</tr>";
	translit_help += "</table></div>";
	document.write(translit_help);

	// Two character letters
	// Redefine for better support
	t_table2 += "YoYoZhChShYuJuYaJa";
	w_table2 += "¨¨Æ×ØÞÞßß";
}




function setHelpVisible(iState){

if(document.getElementById)	//gecko(NN6)+IE5+
{
	var obj=document.getElementById(elc);
	obj.style.visibility=iState?"visible":"hidden";
	obj.style.display=iState?"":"none";
} else if(document.all)	//IE4
{
	document.all[elc].style.visibility = iState ? "visible":"hidden";
	document.all[elc].style.display = iState? "":"none";
} else if(document.layers)	//NN4+
{
	document.layers[elc].visibility=iState?"show":"hide";
	document.layers[elc].display=iState?"":"none";
}
return true;
}

var i;

function skip(str, ch1, ch2, cancel_char){
	var new_str = "";
	var len = str.length;
	var i_old = i;
	while ((i<len) && (str.substr(i,1)==ch1))
  {
      new_str+= ch1;
      i++;

      if (str.substr(i,1)==cancel_char){
        i = i_old;
	return "";
      }
      var c = '';
      while ( (i<len) && ((c=str.substr(i,1))!=ch2) )
	  {
		if (str.substr(i,1)==cancel_char){
	            i = i_old;
		    return "";
    		}
		new_str+=c;
		i++;
	  }
	  
	  if (c != ch2){
	    i = i_old;
	    return "";
	  }
	  if (i<len)
	  {
	    new_str+=ch2;	  
	    i++;
	  }
	  else
	  	return new_str;
  }
  return new_str;
}

function translit(str){
 var len = str.length;
 var new_str="";

 for (i = 0; i < len; i++)
 {
 //skip BBCode
 new_str += skip(str, "[", "]", "");
 // Skip tags
 new_str += skip(str, "<", ">", "");
 // Skip quotes
 new_str += skip(str, "\"", "\"", "");
 // Skip smiles
 new_str += skip(str, ":", ":", " ");

 //skip html special characters
  while ((i<len) && (str.substr(i,1)=='&'))
  {
	  	for (j=0; j<spec_table.length; j++)
	  	{
			var spec_len=spec_table[j].length;
			if ((i<=len-spec_len) && (str.substr(i,spec_len)==spec_table[j]))
			{
				new_str+=str.substr(i,spec_len);
				i+=spec_len;
				if (i==len)
				{
						return new_str;
				}
				break;
			}
	  }
  }

  // Check for 2-character letters
  is2char=false;
  if (i < len-1) {
   for(j = 0; j < w_table2.length; j++)
   {
    if(str.substr(i, 2) == t_table2.substr(j*2,2)) {
     new_str+= w_table2.substr(j, 1);
     i++;
     is2char=true;
     break;
    }
   }
  }

  if(!is2char && (i<len)) {
   // Convert one-character letter
   var c = str.substr(i, 1);
   var pos = t_table1.indexOf(c);
   if (pos < 0)
    new_str+= c;
   else
    new_str+= w_table1.substr(pos, 1);
  }
 }

 return new_str;
}

var textar = new Array();
var redoar = new Array();

function redo(){
    if (textar && (textar.length > 0)){
        textar.push( document.REPLIER.Post.value );
	document.REPLIER.Post.value = redoar.pop();

    }
}

function undo(){
	if (textar && (textar.length > 0)){
	     redoar.push( document.REPLIER.Post.value );
	     document.REPLIER.Post.value = textar.pop();
	}
}

function rusLang() {
if (!textar || textar.constructor.toString().indexOf("Array") == -1) textar = new Array();
textar.push(document.REPLIER.Post.value);
document.REPLIER.Post.value = translit(document.REPLIER.Post.value);
}
