﻿var AccessKEYs = new Array(
"8", "mezera"
,"9", "tabulátor"
,"13", "enter"
,"19", "pause/break"
,"27", "escape"
,"33", "page up"
,"34", "page dow"
,"35", "end"
,"36", "home"
,"37", "šipka vlevo"
,"38", "šipka nahoru"
,"39", "sipka doprava"
,"40", "šipka dolů"
,"45", "insert"
,"46", "delete"
,"48", "0"
,"49", "1"
,"50", "2"
,"51", "3"
,"52", "4"
,"53", "5"
,"54", "6"
,"55", "7"
,"56", "8"
,"57", "9"
,"65", "a"
,"66", "b"
,"67", "c"
,"68", "d"
,"69", "e"
,"70", "f"
,"71", "g"
,"72", "h"
,"73", "i"
,"74", "j"
,"75", "k"
,"76", "l"
,"77", "m"
,"78", "n"
,"79", "o"
,"80", "p"
,"81", "q"
,"82", "r"
,"83", "s"
,"84", "t"
,"85", "u"
,"86", "v"
,"87", "w"
,"88", "x"
,"89", "y"
,"90", "z"
,"96", "numerická 0"
,"97", "numerická 1"
,"98", "numerická 2"
,"99", "numerická 3"
,"100", "numerická 4"
,"101", "numerická 5"
,"102", "numerická 6"
,"103", "numerická 7"
,"104", "numerická 8"
,"105", "numerická 9"
,"106", "násobení"
,"107", "plus"
,"109", "mínus"
,"110", "tečka"
,"111", "rozdělovník"
,"112", "f1"
,"113", "f2"
,"114", "f3"
,"115", "f4"
,"116", "f5"
,"117", "f6"
,"118", "f7"
,"119", "f8"
,"120", "f9"
,"121", "f10"
,"122", "f11"
,"123", "f12"
,"187", "rovnítko"
,"188", "čárka"
,"219", "otevírací závorka"
,"221", "uzavírací závorka"
);


Tload[TCounts] = "AccessInit";
TCounts ++;

var AccessVert = { x: null, y: null };
var AccessColors = { backg: null, color: null, link: null, vlink:null };
var AccessText = null;
var AccessPosuv = null;

var AccessMaxKeys = 4;
var AccessMaxPressed = 5;

var AccessMatchKeyMainText = new Array(AccessMaxKeys*AccessMaxPressed);
var AccessMatchKeyMainLink = new Array(AccessMaxKeys*AccessMaxPressed);
var AccessMatchKeyMainCmdp = new Array(AccessMaxKeys*AccessMaxPressed);
var AccessMatchKeyMainCmd = new Array(AccessMaxKeys*AccessMaxPressed);

var AccessMatchKeyMainTextCount = 0;
var AccessMatchKeyTextInd = -1;

var AccessibilityKeys = new Array(4);
for (var i=0; i<AccessMaxKeys; i++) AccessibilityKeys[i] = new Array(2);
for (var i=0; i<AccessMaxKeys; i++) for (var j=0; j<2; j++) AccessibilityKeys[i][j] = 0;

var AccessibilityKeysRows = AccessMaxKeys;
var AccessibilityKeysCols = 2;

function AccessKeysToS()
{
	var s = '';
	for (var i=0; i<AccessibilityKeysRows; i++) 
        	for (var j=0; j<AccessibilityKeysCols; j++)
        	{
			s += AddZeros(AccessibilityKeys[i][j].toString("16"), 2);
        	}
	return s;
}


function AccessKeysFromS(s)
{
	var hi;
	for (var i=0; i<AccessibilityKeysRows; i++) 
        	for (var j=0; j<AccessibilityKeysCols; j++)
        	{
			hi = parseInt('0x'+s.substr(i*4 + j*2, 2));
			AccessibilityKeys[i][j] = hi;
        	}
}


function AccessInit()
{

	GetPosForElement(document.getElementById("control_posuvnik"), AccessVert);
	AccessText = document.getElementById("bodyc");

	AccessibilityKeys[0][0] = 97-32;
	AccessibilityKeys[1][0] = 115-32;
	AccessibilityKeys[2][0] = 100-32;
	AccessibilityKeys[3][0] = 102-32;

	AccessibilityKeys[0][1] = 114-32;
	AccessibilityKeys[1][1] = 116-32;
	AccessibilityKeys[2][1] = 121-32;
	AccessibilityKeys[3][1] = 117-32;

    var ac1 = fncCookieRead("ac1");
    if (ac1 == null) fncCookieWrite("ac1", 0);
    else AccessInvert(ac1, 1);

    var ac2 = fncCookieRead("ac2");
    if (ac2 == null) fncCookieWrite("ac2", 0xffffff);
    else AccessW(ac2);

    var ac3 = fncCookieRead("ac3");
    if (ac3 == null) fncCookieWrite("ac3", AccessKeysToS());
    else {
		AccessKeysFromS(ac3);
	}

	MatchKeys("MenuItems");
}


	document.onmousemove = AccessMouseMove;
	document.onmouseup = AccessMouseUp;
	document.onmousedown = AccessMouseDown;

function AccessMouseMove(e)
{

	var evt = (e) ? e : ((event) ? event : null);
	if (AccessPosuv != null)
	{
		var dx = 0;

		if (evt.clientX < AccessVert.x + 14) dx = 14;
		else 
			if (evt.clientX > AccessVert.x + 104) dx = 104;
			else
				dx = (evt.clientX - AccessVert.x);

		if (
			((!IE) && (evt.button == 0))
			||
			((IE) && (evt.button == 1))
		)
		{
			AccessPosuv.style.left = Math.abs(dx) + "px";
			AccessText.style.lineHeight=126+Math.abs(dx) + "%";
			AccessText.style.fontSize=Math.abs(dx) + "px";
		}

	}

	if (IE) window.event.cancelBubble = true;
	return false;

}

function AccessMouseDown(e)
{
	if (AccessPosuv != null) return;

        var evt = (e) ? e : ((event) ? event : null);
        var t = (IE) ? evt.srcElement : evt.target;

	if (t.id != 'posuvnikImg')
	{
		if (
			(t.type == "text") 
			|| (t.type == "textarea") 
			|| (t.type == "file") 
			|| (t.type == "select-one")
			|| (t.type == "button")
		) return true;
		else return false;
	}
	else
	{
		if (IE) AccessPosuv = t.parentElement;
		else AccessPosuv = t.parentNode;
	}

	if (IE) window.event.cancelBubble = true;
	return false;
}


function AccessMouseUp()
{
	AccessPosuv = null;

	if (IE) window.event.cancelBubble = true;
	return false;
}


function AddZeros(i, prec)
{
	var s = i.toString();
	while(s.length < prec)
	{
		s = "0" + s;
	}
	return s;
}


function AccessW(ac2)
{
	var b;
	var elm;
	for (var i=3; i<25; i++)
	{
		b = ac2 & parseInt(Math.pow(2, i));
		elm = document.getElementById("okno" + AddZeros(i, 3));
		if (elm == null) continue;
		if (b == 0) 
		{
			OKN_Min(elm.childNodes[1].childNodes[1].childNodes[0]);
		}
	}
}


function AccessInvert(u, sm)
{
	var NowInvert = false;
    if (sm == 1)
    {
        u = document.getElementById("control_checkBox_img");
        var ac1 = fncCookieRead("ac1") * 1;
        if (ac1 == 1) NowInvert = true; else NowInvert = false;
    }
    else
    {
	    if (u.src.indexOf('faja') != -1) NowInvert = false; else NowInvert = true;
    }

	if (NowInvert)
	{
		u.src = u.src.replace("checkbox.gif", "checkbox_faja.gif");

		AccessColors.backg = document.body.style.backgroundColor;
		AccessColors.color = document.body.style.color;

		var dieta_body = document.body;
		AccessColors.link  = dieta_body.style.link;
		AccessColors.vlink = dieta_body.vLink;

		document.body.style.backgroundColor = "#222";
		document.body.style.color = "#fff";

		dieta_body.style.link = "#7F7FF6";
		dieta_body.vLink = "#AA8CC5";

		NowInvert = true;
	}
	else
	{

		u.src = u.src.replace("checkbox_faja.gif", "checkbox.gif");
		document.body.style.backgroundColor = "";
		document.body.style.color = "";

		var dieta_body = document.body;
		dieta_body.style.link = "#00ff00";
		dieta_body.vLink = "#551A8B";

		NowInvert = false;
	}

	if (sm != 1) fncCookieWrite("ac1", (NowInvert ? 1 : 0));

}


function AccessReset()
{
	fncCookieWrite("ac1", 0);
	fncCookieWrite("ac2", 0xffffff);
	fncCookieWrite("ac3", "4152535444594655");
	document.location.href = document.location.href;
}


function AccessKeyListInit()
{
	var elmControlPtr = null;
	for (var i=0; i<AccessibilityKeysRows; i++) 
        	for (var j=0; j<AccessibilityKeysCols; j++)
        	{
			elmControlPtr = document.getElementById("AccessKl_" + i + "" + j);
                	for (var x=0; x<elmControlPtr.options.length; x++)
                	{
				if (elmControlPtr.options[x].value == AccessibilityKeys[i][j])
				{
					elmControlPtr.selectedIndex = x;
					break;
				}
                	}
        	}
}


var AccessKeyType = -1;
var AccessKeyCounter = 0;
var AccessKeyHandp = null;
var AccessKeyHandCounter = 0;

function AccessKeyPressHandlerRender()
{

	elmPtr = document.getElementById('AccessKeyDesk');

	var s = null;

	if (AccessMatchKeyMainText[AccessKeyType*AccessMaxPressed + AccessKeyCounter-1] == null)
	{
		if (AccessMatchKeyMainText[AccessKeyType*AccessMaxPressed + 1-1] == null) 
		{
			elmPtr.style.visibility = 'hidden';
			TickDone(AccessKeyHandp);
			return;
		}
		else AccessKeyCounter = 1; 
	}

	var tccnt = parseInt(AccessKeyHandCounter / 2);
	if (tccnt >= 5) location.href = AccessMatchKeyMainLink[AccessKeyType*AccessMaxPressed + AccessKeyCounter-1];
	

	s = '<H1>Přesměrování na </H1>';
	s += '<font size="80" color="red">' + AccessMatchKeyMainText[AccessKeyType*AccessMaxPressed + AccessKeyCounter-1] + '</font>';
	s += '<h1>za</h1>';
	s += '<font size="80" color="red">' + (5 - tccnt) + '</font><h1>sekund</h1>';

	elmPtr.innerHTML = s;

}

function AccessKeyPressHandler()
{
	AccessKeyPressHandlerRender();
	AccessKeyHandCounter ++;
}


function AccessKeyPress(KeyCode)
{

	if ((KeyCode > 96) && (KeyCode < 123)) KeyCode -= 32;
	if (KeyCode == 27) TickDone(AccessKeyHandp);

	for (var i=0; i<AccessibilityKeysRows; i++) 
		for (var j=0; j<AccessibilityKeysCols; j++) 
		{
			if (KeyCode != 0 && KeyCode == AccessibilityKeys[i][j]) 
			{

				if (AccessKeyType != i)
				{
					AccessKeyType = i;
					AccessKeyCounter = 0;
					TickDone(AccessKeyHandp);
				}

				if (AccessKeyCounter == 0)
				{
					AccessKeyHandCounter = 0;
					elmPtr = document.getElementById('AccessKeyDesk');
					elmPtr.style.visibility = 'visible';
					if (IE) elmPtr.style.top = (document.body.scrollTop + 200) + 'px';
					else	elmPtr.style.top = (window.pageYOffset + 200) + 'px';
					elmPtr.style.left = (parseInt(screen.availWidth / 2) - 200) + 'px';
					AccessKeyHandp = TickInit(AccessKeyPressHandler, 500);
				}

				AccessKeyCounter ++;
				if (AccessKeyCounter > AccessMaxPressed) AccessKeyCounter = 1;
				AccessKeyHandCounter = 0;

			}
		}
}


function MatchKeys(s)
{
	var elm = document.getElementById("MenuItems");
	for (var i=0; i<AccessMaxKeys*AccessMaxPressed; i++)
	{
		AccessMatchKeyMainLink[i] = null;
		AccessMatchKeyMainText[i] = null;
		AccessMatchKeyMainCmdp[i] = null;
	}
	AccessMatchKeyMainTextCount = 0;
	MatchKey(elm);
	for (var i=0; i<AccessMatchKeyMainTextCount; i++)
	{
		if (AccessMatchKeyMainCmdp[i] != null) 
		{
			var Kc = GetKeyForKey(AccessMatchKeyMainCmdp[i].innerHTML);
			AccessMatchKeyMainCmd[i] = Kc;
			if (Kc != -1)
			{
				var str = AccessMatchKeyMainCmdp[i].innerHTML;
				AccessMatchKeyMainCmdp[i].innerHTML = str.substr(0, str.indexOf('Key'))  + "'" + AccessKeyGetKeyName(AccessibilityKeys[Kc][0]) + "'";
			}
		}
	}
}


function AccessKeyGetKeyName(c)
{
	for (var i=0; AccessKEYs.length; i+=2)
	{
		if (AccessKEYs[i] == c) return AccessKEYs[i+1];
	}
	return null;
}


function GetKeyForKey(Key)
{
	var indexKey = -1;
	if (Key.indexOf('Key1') != -1) indexKey = 0;
	if (Key.indexOf('Key2') != -1) indexKey = 1;
	if (Key.indexOf('Key3') != -1) indexKey = 2;
	if (Key.indexOf('Key4') != -1) indexKey = 3;
	if (indexKey == -1) return "-1";
	else return indexKey;
}


function MatchKey(elm)
{
	for (var i=0; i<elm.childNodes.length; i++)
	{
		if (elm.childNodes[i].tagName == "TR") { AccessMatchKeyTextInd = -1;}
		if (elm.childNodes[i].name == "webLink") { AccessMatchKeyMainTextCount ++; AccessMatchKeyTextInd ++; }

		if (elm.childNodes[i].tagName == "SPAN" && AccessMatchKeyTextInd ==2)
		{
			AccessMatchKeyMainCmdp[AccessMatchKeyMainTextCount-1] = elm.childNodes[i];
			AccessMatchKeyTextInd ++;
		}

		if (elm.childNodes[i].tagName == "SPAN" && AccessMatchKeyTextInd ==1)
		{
			AccessMatchKeyMainText[AccessMatchKeyMainTextCount-1] = elm.childNodes[i].innerHTML;
			AccessMatchKeyTextInd ++;
		}

		if (elm.childNodes[i].tagName == "A" && AccessMatchKeyTextInd ==0)
		{
			AccessMatchKeyMainLink[AccessMatchKeyMainTextCount-1] = elm.childNodes[i].href;
			AccessMatchKeyTextInd ++;
		}

		if (elm.childNodes[i].childNodes.length > 0) MatchKey(elm.childNodes[i]);
	}
}


function AccessibilityKeyChange(o, value)
{
	var xi = parseInt(o.id.substr(9, 1));
	var xj = parseInt(o.id.substr(10, 1));

	for (var i=0; i<AccessibilityKeysRows; i++) 
	{
        	for (var j=0; j<AccessibilityKeysCols; j++)
        	{
			if (i == xi) 
			{
				if (j==xj)
				{
					value *= 1;
					AccessibilityKeys[i][j] = value.toString("16");
					fncCookieWrite("ac3", AccessKeysToS());
				}
			}
        	}
	}
}


