﻿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();
  }
}