/*
 * Software is distributed on an "AS IS" basis,
 * WITHOUT WARRANTY OF ANY KIND, either express or implied.
 * Usage of this code allowed only with reference to SoftCorporation LLC.
 * including the link to SoftCorporation LLC. web site: http://www.softcorporation.com
 * Copyright (C) 2000 SoftCorporation LLC. All Rights Reserved.
 */
var SE  = "`qwertyuiop[]\\asdfghjkl;'zxcvbnm,./~@#$^&QWERTYUIOP{}|ASDFGHJKL:\"ZXCVBNM<>?";
//var SR0 = new Array(
//0x60,0x71,0x77,1077,1088,1090,1099,1091,1080,1086,1087,1096,1097,1101,1072,1089,1076,1092,1075,1093,1081,1082,1083,1095,39,1079,1100,1094,1074,1073,1085,1084,44,46,1098,1070,34,8470,63,47,92,1071,1046,1045,1056,1058,1067,1059,1048,1054,1055,1064,1065,1069,1040,1057,1044,1060,1043,1061,1048,1050,1051,1063,34,Ox451,1068,1062,1042,1041,1053,1052,59,58,1066);
var SR1 = new Array(
1102,1103,1078,1077,1088,1090,1099,1091,1080,1086,1087,1096,1097,1101,1072,1089,1076,1092,1075,1093,1081,1082,1083,1095,1105,1079,1100,1094,1074,1073,1085,1084,44,46,1098,1070,34,8470,63,92,47,1071,1046,1045,1056,1058,1067,1059,1048,1054,1055,1064,1065,1069,1040,1057,1044,1060,1043,1061,1049,1050,1051,1063,1025,1047,1068,1062,1042,1041,1053,1052,59,58,1066);
var SR2 = new Array(
96,1081,1094,1091,1082,1077,1085,1075,1096,1097,1079,1093,1098,92,1092,1099,1074,1072,1087,1088,1086,1083,1076,1078,1101,1103,1095,1089,1084,1080,1090,1100,1073,1102,46,126,8470,63,47,94,38,1049,1062,1059,1050,1045,1053,1043,1064,1065,1047,1061,1066,92,1060,1067,1042,1040,1055,1056,1054,1051,1044,1046,1069,1071,1063,1057,1052,1048,1058,1068,1041,1070,44);
var lang = 'ru';
var layout = '1';
var capsLock = false;
var shift = false;
var br = "";
var hideTime = true;
var oRTE;

if (parseInt(navigator.appVersion)>=3)
{
  if (navigator.appName.indexOf("Microsoft")!=-1) br = "IE"
  else if (navigator.appName.indexOf("Mac")!=-1) br = "MAC"
  else if (navigator.appName.indexOf("Netscape")!=-1) br = "NC";
}
if (br != "IE")
{
	alert("Attention! This version works only with Microsoft Internet Explorer.");
}

function getkey(evt)
{
  if (window.event) return window.event.keyCode
  else return (evt.which || evt.charCode || evt.keyCode);
}

function initialize()
{
  displayTime();
  changeTime(window.document.cyr.select);
  oRTE.focus();
}

function setkey(e, s)
{
  e.keyCode = s;
}

function swLang(form, e)
{
  if (getkey(e) == 123)
  {
	chgLang(form);
  }
}

function translate(evt)
{
  var key = getkey(evt);
  if (lang == 'ru')
  {
    var c = String.fromCharCode(key);
    var i = SE.indexOf(c);
    if (i >= 0)
    {
      if (layout == '1')
      {
        c = SR1[i];
        setkey(evt, c);
      }
      else if (layout == '2')
      {
        c = SR2[i];
        setkey(evt, c);
      }
    }
  }
}

function swapImage(name, image)
{
  if (window.document.images) window.document.images[name].src = image;
}

function chgLayout(form, l)
{
  layout = l.value;
  l.checked = true;
  if (layout == '1') swapImage('imgLayout','lay1.gif')
  else if (layout == '2') swapImage('imgLayout','lay2.gif')
  oRTE.focus();
}

function chgLang(form)
{
  if (lang == 'en')
  {
    lang = 'ru';
    swapImage("imgLang", "images/lang_ru.gif");
  }
  else
  {
    lang = 'en';
    swapImage("imgLang", "images/lang_en.gif");
  }
  oRTE.focus();
}

function pressBtn(chr)
{
  var c = chr;
  oRTE.focus();
  if (chr == 'bs') { backAtCursor(oRTE); }
  else if ( chr == 'enter' ) { insertHTML('<br>'); }
  else if (chr == 'caps') { capsLock = !capsLock; }
  else if (chr == 'shift-l' || chr == 'shift-r') { shift = true; }
  else if (chr == 'ctrl-l' || chr == 'ctrl-r') { }
  else if (chr == 'alt-l' || chr == 'alt-r') { }
  else
  {
    if (chr == 'space') { c = ' '; }
//    else if ( chr == 'enter' ) { c = '\n'; }
    else if (chr == 'tab') { c = '\t'; }
    else 
    {
	if (capsLock)
      {
        if (shift)
	  {
          shift = false;
	  }
	  else
	  {
          c = getUpCase(chr);
	  }
      }
	if (shift)
	{
        c = getUpCase(chr);
	  shift = false;
	}
      if (lang == 'ru')
      {
        var i = SE.indexOf(c);
        if (i >= 0)
        {
          if (layout == '1')
          {
            c = String.fromCharCode(SR1[i]);
          }
          else if (layout == '2')
          {
            c = String.fromCharCode(SR2[i]);
          }
        }
      }
    }
    insertAtCursor(oRTE, c);
  }
  oRTE.focus();
}

function insertAtCursor(fld, val)
{
  //IE support
  if (document.selection)
  {
    fld.focus();
    var sel = document.selection.createRange();
    sel.text = val;
  }
  //MOZILLA/NETSCAPE support
  else if (fld.selectionStart || fld.selectionStart == '0') 
  {
    var startPos = fld.selectionStart;
    var endPos = fld.selectionEnd;
    fld.value = fld.value.substring(0, startPos) + val + fld.value.substring(endPos, fld.value.length);
  }
  else
  {
    fld.value += val;
  }
}

function backAtCursor(fld)
{
  if (document.selection)
  {
    fld.focus();
    sel = document.selection.createRange();
    if(sel.text.length > 0)
    {
      sel.text='';
    }
	else
	{
      sel.moveStart('character',-1);
      sel.text='';
    }
    sel.select();
  }
  else if (fld.selectionStart || fld.selectionStart == '0') 
  {
	//MOZILLA/NETSCAPE support
    var startPos = fld.selectionStart;
    var endPos = fld.selectionEnd;
    fld.value = fld.value.substring(0, startPos-1) + fld.value.substring(endPos, fld.value.length);
    fld.selectionStart = startPos-1;
    fld.selectionEnd = startPos-1;
    fld.focus();
  }
  else
  {
    fld.value=fld.value.substr(0,(fld.value.length-1));
    fld.focus();
  }
}

function getUpCase(chr)
{
  var out = chr;
  switch (chr) 
  {
    case "`" : out="~"; break;
    case "1" : out="!"; break;
    case "2" : out="@"; break;
    case "3" : out="#"; break;
    case "4" : out="$"; break;
    case "5" : out="%"; break;
    case "6" : out="^"; break;
    case "7" : out="&"; break;
    case "8" : out="*"; break;
    case "9" : out="("; break;
    case "0" : out=")"; break;
    case "-" : out="_"; break;
    case "=" : out="+"; break;
    case ";" : out=":"; break;
    case "[" : out="{"; break;
    case "]" : out="}"; break;
    case "," : out="<"; break;
    case "." : out=">"; break;
    case "'" : out='"'; break;
    case "/" : out="?"; break;
    case "\\" : out="|"; break;	
    default :  out = chr.toUpperCase();
  }
  return out;
}

function copyText(field)
{
  window.clipboardData.setData('Text', field.innerText);
}

function keyDown(form, evt)
{
//  ieKeyDown(evt, oRTE);
//  translate(evt);
}

function ieKeyDown(evt, rte)
{
	var key = (evt.which || evt.charCode || evt.keyCode);
	if (key == 123)
	{
	  chgLang(window.document.cyr);
	}
    else if (key == 116)
	{
//	  evt.keyCode = 0;
//	  evt.preventDefault();
//	  evt.stopPropagation();
	}
}

function ieKeyPress(evt, rte)
{
	var key = (evt.which || evt.charCode || evt.keyCode);
//	var stringKey = String.fromCharCode(key).toLowerCase();
	
    if (key == 13)
    {
      if (!insertParag)
	  {
		//insert <br> tag instead of <p>
		//change the key pressed to null
		evt.keyCode = 0;
		insertHTML('<br>');
        insertParag = true;
		return;
	  }
    }
    insertParag = false;
    translate(evt);
}

function spellcheck()
{
  if (!navigator.javaEnabled())
  {
	  if (confirm("Java is not enabled. Click Ok to go to download page."))
	      window.open("http://www.java.sun.com", "Download");
	  return;
  }
  try
  {
    alert("Suggester info: " + document.banner.getAppletInfo());
  }
  catch(exception) 
  {
    if (confirm("Suggester is not yet supported here. Click Ok to open simple text page."))
      window.open("http://www.softcorporation.com/products/cyrillic", "new");
  }
}

function raiseButton(e) 
{
	var el = window.event.srcElement;
	className = el.className;
	if (className == 'rteImage' || className == 'rteImageLowered') 
	{
		el.className = 'rteImageRaised';
	}
}

function normalButton(e) {
	var el = window.event.srcElement;
	
	className = el.className;
	if (className == 'rteImageRaised' || className == 'rteImageLowered') {
		el.className = 'rteImage';
	}
}

function lowerButton(e) 
{
	var el = window.event.srcElement;
	className = el.className;
	if (className == 'rteImage' || className == 'rteImageRaised') 
	{
		el.className = 'rteImageLowered';
	}
}

function clearAll(rte)
{
  if (window.confirm('WARNING: All editor data will be lost!!'))
  {
 	oRTE.document.body.innerHTML='';
	oRTE.focus();
  }
}

function submitSearch(url)
{
  var text = oRTE.document.body.innerText;
  if (text.length == 0)
  {
    alert('Please enter text to search.');
	oRTE.focus();
    return;
  }
  if (text.length > 50)
  {
    if (!window.confirm('WARNING: Do you really wish to send all editor text to the search engine?'))
    {
	  return;
    }
  }
  window.open(url + buildURL(trim(clean(text))));
}

function trim(string)
{
  var trim_pattern=/^\s*|\s*$/g;
  return string.replace(trim_pattern,"");
}

function clean(string)
{
  var clean_pattern=/\s+/g;
  return string.replace(clean_pattern," ");
}
 
