function setfocus()
{
	document.forms.textformularz.texterja.focus();
    updateStartEnd();	
}

var szyft = 0;
function shift() { if (szyft == 0) szyft = 1; else szyft = 0; }
function digit1() {updatepage("1", "!");}
function digit2(){updatepage("2","\"");};
function digit3(){updatepage("3","¹");};
function digit4(){updatepage("4",";");};
function digit5(){updatepage("5","%");};
function digit6(){updatepage("6",":");};
function digit7(){updatepage("7","?");};
function digit8(){updatepage("8","*");};
function digit9(){updatepage("9","(");};
function digit0(){updatepage("0",")");};
function minus(){updatepage("-","_");};
function plus(){updatepage("=","+");};
function letter_jo(){ updatepage("¸", "¨")}
function letter_shorti() { updatepage("é","É"); }
function letter_tse() { updatepage("ö", "Ö"); }
function letter_u() { updatepage("ó", "Ó"); }
function letter_ka() { updatepage("ê","Ê"); }
function letter_ie() { updatepage("å","Å"); }
function letter_en() { updatepage("í","Í"); }
function letter_ghe() { updatepage("ã","Ã"); }
function letter_sha() { updatepage("ø","Ø"); }
function letter_shcha() { updatepage("ù","Ù"); }
function letter_ze() { updatepage("ç","Ç"); }
function letter_ha() { updatepage("õ","Õ"); }
function letter_hard_sign() { updatepage("ú","Ú"); }
function letter_ef() { updatepage("ô","Ô"); }
function letter_yeru() { updatepage("û","Û"); }
function letter_ve() { updatepage("â","Â"); }
function letter_a() { updatepage("à","À"); }
function letter_pe() { updatepage("ï","Ï"); }
function letter_er() { updatepage("ð","Ð"); }
function letter_o() { updatepage("î","Î"); }
function letter_el() { updatepage("ë","Ë"); }
function letter_de() { updatepage("ä","Ä"); }
function letter_zhe() { updatepage("æ","Æ"); }
function letter_e() { updatepage("ý","Ý"); }
function letter_ya() { updatepage("ÿ","ß"); }
function letter_che() { updatepage("÷","×"); }
function letter_es() { updatepage("ñ","Ñ"); }
function letter_em() { updatepage("ì","Ì"); }
function letter_i() { updatepage("è","È"); }
function letter_te() { updatepage("ò","Ò"); }
function letter_soft_sign() { updatepage("ü","Ü"); }
function letter_be() { updatepage("á","Á"); }
function letter_yu() { updatepage("þ","Þ"); }
function kropka() { updatepage( "." , "," ); }
function slash() { updatepage("\\", "/"); }
function spacja() { updatepage(" "," "); }

function updatepage( bukwa1, bukwa2 )
{
  if (bukwa1 == ".")
  {
    if (szyft==0) 
		{ 
			insert(document.forms.textformularz.texterja, bukwa1);
			document.forms.textformularz.texterja.focus();
		};
    if (szyft==1) 
		{ 
			insert(document.forms.textformularz.texterja, bukwa2);
			document.forms.textformularz.texterja.focus();
		};
  }
  else
  {
    if (document.forms.capslockformularz.capslock.checked) { help=bukwa2; bukwa2=bukwa1; bukwa1=help; }
    if (szyft==1) { 
      //document.forms.textformularz.texterja.value += bukwa2; 
      insert(document.forms.textformularz.texterja, bukwa2);
      document.forms.textformularz.texterja.focus();
    }
    if (szyft==0) { 
      //document.forms.textformularz.texterja.value += bukwa1;
      insert(document.forms.textformularz.texterja, bukwa1);
      document.forms.textformularz.texterja.focus();
    }
  }
  szyft = 0;
}

// NEW FUNCTION
function insert(element,ins) {
    // gecko based
    if (element.setSelectionRange){
        var start = element.selectionStart;
        var end = element.selectionEnd;
        if (is_chrome) {
            start = selectionStart;
            end = selectionEnd;
        }
        element.value = element.value.substring(0,start) + ins + element.value.substring(end,element.value.length);

        start++;
        if (is_chrome) {
          selectionStart = start;
          selectionEnd = start;
        }

	element.selectionStart = start;
        element.selectionEnd = start;

    }
    // IE
    else if (document.selection && document.selection.createRange) {
        element.focus();
        var range = document.selection.createRange();
        range.text = ins;
	range.collapse(false);
        range.select();
    }
} 

function selectall()
{
  document.forms.textformularz.texterja.select();
}


var inputupper = new Array(
126,	//~
33,	//!
64,	//@
35,	//#
36,	//$
37,	//%
94,	//^
38,	//&
42,	//*
40,	//(
41,	//)
95,	//_
43,	//+
81,	//Q
87,	//W
69,	//E
82,	//R
84,	//T
89,	//Y
85,	//U
73,	//I
79,	//O
80,	//P
123,	//{
125,	//}
65,	//A
83,	//S
68,	//D
70,	//F
71,	//G
72,	//H
74,	//J
75,	//K
76,	//L
58,	//:
34,	//"
90,	//Z
88,	//X
67,	//C
86,	//V
66,	//B
78,	//N
77,	//M
60,	//<
62,	//>
63,	//?
124 //| //MSW*/
);

var inputlower = new Array(
96,	//`
49,	//1
50,	//2
51,	//3
52,	//4
53,	//5
54,	//6
55,	//7
56,	//8
57,	//9
48,	//0
45,	//-
61,	//=
113,	//q
119,	//w
101,	//e
114,	//r
116,	//t
121,	//y
117,	//u
105,	//i
111,	//o
112,	//p
91,	//[
93,	//]
97,	//a
115,	//s
100,	//d
102,	//f
103,	//g
104,	//h
106,	//j
107,	//k
108,	//l
59,	//;
39,	//'
122,	//z
120,	//x
99,	//c
118,	//v
98,	//b
110,	//n
109,	//m
44,	//,
46,	//.
47,	////
92 //\ //MSW*/
);


var outputlowercase = new Array(
"¸",	//~
"1",	//1
"2",	//2
"3",	//3
"4",	//4
"5",	//5
"6",	//6
"7",	//7
"8",	//8
"9",	//9
"0",	//0
"-",	//-
"=",	//=
"é",	//q
"ö",	//w
"ó",	//e
"ê",	//r
"å",	//t
"í",	//y
"ã",	//u
"ø",	//i
"ù",	//o
"ç",	//p
"õ",	//[
"ú",	//]
"ô",	//a
"û",	//s
"â",	//d
"à",	//f
"ï",	//g
"ð",	//h
"î",	//j
"ë",	//k
"ä",	//l
"æ",	//;
"ý",	//'
"ÿ",	//z
"÷",	//x
"ñ",	//c
"ì",	//v
"è",	//b
"ò",	//n
"ü",	//m
"á",	//,
"þ",	//.
".", "\\" //*/
);

var outputuppercase = new Array(
"¨",	//~
"!",	//1
"\"",	//2
"¹",	//3
";",	//4
"%",	//5
":",	//6
"?",	//7
"*",	//8
"(",	//9
")",	//0
"_",	//-
"+",	//=
"É",	//q
"Ö",	//w
"Ó",	//e
"Ê",	//r
"Å",	//t
"Í",	//y
"Ã",	//u
"Ø",	//i
"Ù",	//o
"Ç",	//p
"Õ",	//[
"Ú",	//]
"Ô",	//a
"Û",	//s
"Â",	//d
"À",	//f
"Ï",	//g
"Ð",	//h
"Î",	//j
"Ë",	//k
"Ä",	//l
"Æ",	//;
"Ý",	//'
"ß",	//z
"×",	//x
"Ñ",	//c
"Ì",	//v
"È",	//b
"Ò",	//n
"Ü",	//m
"Á",	//,
"Þ",	//.
",",	///
"/" /// //MSW*/
);

var translate = true;

var selectionStart = -1;
var selectionEnd = -1;

var is_chrome = navigator.userAgent.toLowerCase().indexOf('chrome') > -1;

function getKeyCode(e) {
  var myKeyCode=0;
  
  // Internet Explorer 4+
  if ( document.all ) {
    myKeyCode=e.keyCode;

  // Netscape 4
  } else if ( document.layers ) {
    myKeyCode=e.which;

  // Netscape 6
  } else if ( document.getElementById ) {
    myKeyCode=e.which;
  }

  return myKeyCode;
}

function resetctrls() {
  translate = true;
}

function checkControlAlt(e) {

  var myKeyCode = getKeyCode(e); 

  if (myKeyCode == 17 || myKeyCode == 18) {
    translate = false;
  }
}

function keyUp(e) {
  updateStartEnd();
  
   var myKeyCode = getKeyCode(e);
 
  if (myKeyCode == 17 || myKeyCode == 18) {
    translate = true;
  }
}

function updateStartEnd() 
{
  if (document.forms.textformularz.texterja.setSelectionRange) 
  {
    selectionStart = document.forms.textformularz.texterja.selectionStart;
    selectionEnd = document.forms.textformularz.texterja.selectionEnd;
  }
}

function translateKeyCode(e) {
 
  var myKeyCode = getKeyCode(e);
  
  if (!translate)
    return true;
  
  //MSW
  if (document.getElementById("ruskey").checked) translate = true;
  else translate = false;
  //MSW

  if (!translate)
    return true;

  var index = -1
  var isLower = -1;

  for (var i = 0; i < inputlower.length; i++) {
    if (inputlower[i] == myKeyCode) {
      index = i;
      isLower = 0;
    }
  }

  if (isLower == -1) {
    for (var i = 0; i < inputupper.length; i++) {
      if (inputupper[i] == myKeyCode) {
        index = i;
        isLower = 1;
      }
    }
  }

  if (index >= 0) {
    insert(document.forms.textformularz.texterja, (isLower == 1) ? outputuppercase[index] : outputlowercase[index]);
    updateStartEnd();
    return false;
  } else {
    updateStartEnd();
  }
}
