timers = new Array();
doubleTables = new Array();
resp = new Array();
var hide_timer = null;

function IsDef(variable)
{
    return (typeof(window[variable]) == "undefined")?  false: true;
}

function AjaxFormTimer(timer, id1, id2, data, limit, show, func, time,
		instance_id, media)
{
	clearTimeout(timers[timer]);
	document.getElementById(id2).className="ajax-timer";
	timers[timer] = setTimeout(func + "( '"+id1+"', '"+id2+"', '"+data+
			"', '"+limit+"', '"+show+"', '"+instance_id+"', '"+media+"' )", 
			time);
}

function AjaxFormTimer3(timer, id1, id2, data, data2, data3, limit, show, func, 
		time, instance_id, media)
{
	clearTimeout(timers[timer]);
	document.getElementById(id2).className="ajax-timer";
	timers[timer] = setTimeout(func + "( '"+id1+"', '"+id2+"', '"+data+
			"', '"+data2+"', '"+data3+"', '"+limit+"', '"+show+
			"', '"+instance_id+"', '"+media+"' )", 
			time);
}

function AjaxListFill(data, id)
{
	list = new List();
	list.Process(data);
	ajax = new AjaxList(list);
	ajax.FillCombo(id);	
}

function AjaxListFillCheckboxes(data, prefix, suffix, start, stop)
{
	list = new List();
	list.Process(data);
	ajax = new AjaxList(list);	
	ajax.FillCheckBoxes(prefix, suffix, start, stop);
}

function SelectorFill(data, id)
{
	list = new List();
	list.Process(data);
	selector = new Selector(list, id);	
	selector.FillDiv(id);	
}

function AjaxListSelectedValue(value, id)
{
	obj = document.getElementById(id);
	for (var i = 0; i < obj.options.length; i++) 
	{ 
		if (obj.options[i].value = value) {obj.selectedIndex = i;}
	}
}

function GetFirstSubstring (data, delimiter)
{
	var data_parts = data.split(delimiter);
	return data_parts[0];
}

function urlencode (str)
{
    // URL-encodes string 
    //
    // version: 910.813
    // discuss at: http://phpjs.org/functions/urlencode
    // +   original by: Philip Peterson
    // +   improved by: Kevin van Zonneveld (http://kevin.vanzonneveld.net)
    // +      input by: AJ
    // +   improved by: Kevin van Zonneveld (http://kevin.vanzonneveld.net)
    // +   improved by: Brett Zamir (http://brett-zamir.me)
    // +   bugfixed by: Kevin van Zonneveld (http://kevin.vanzonneveld.net)
    // +      input by: travc
    // +      input by: Brett Zamir (http://brett-zamir.me)
    // +   bugfixed by: Kevin van Zonneveld (http://kevin.vanzonneveld.net)
    // +   improved by: Lars Fischer
    // +      input by: Ratheous
    // +      reimplemented by: Brett Zamir (http://brett-zamir.me)
    // +   bugfixed by: Joris
    // %          note 1: This reflects PHP 5.3/6.0+ behavior
    // *     example 1: urlencode('Kevin van Zonneveld!');
    // *     returns 1: 'Kevin+van+Zonneveld%21'
    // *     example 2: urlencode('http://kevin.vanzonneveld.net/');
    // *     returns 2: 'http%3A%2F%2Fkevin.vanzonneveld.net%2F'
    // *     example 3: urlencode('http://www.google.nl/search?q=php.js&;ie=utf-8&oe=utf-8&aq=t&rls=com.ubuntu:en-US:unofficial&client=firefox-a');
    // *     returns 3: 'http%3A%2F%2Fwww.google.nl%2Fsearch%3Fq%3Dphp.js%26ie%3Dutf-8%26oe%3Dutf-8%26aq%3Dt%26rls%3Dcom.ubuntu%3Aen-US%3Aunofficial%26client%3Dfirefox-a'
    var hexStr = function (dec) {
        return '%' + (dec < 16 ? '0' : '') + dec.toString(16).toUpperCase();
    };
 
    var ret = '',
            unreserved = /[\w.-]/; // A-Za-z0-9_.- // Tilde is not here for historical reasons; to preserve it, use rawurlencode instead
    str = (str+'').toString();
 
    for (var i = 0, dl = str.length; i < dl; i++) {
        var ch = str.charAt(i);
        if (unreserved.test(ch)) {
            ret += ch;
        }
        else {
            var code = str.charCodeAt(i);
            if (0xD800 <= code && code <= 0xDBFF) { // High surrogate (could change last hex to 0xDB7F to treat high private surrogates as single characters); https://developer.mozilla.org/index.php?title=en/Core_JavaScript_1.5_Reference/Global_Objects/String/charCodeAt
                ret += ((code - 0xD800) * 0x400) + (str.charCodeAt(i+1) - 0xDC00) + 0x10000;
                i++; // skip the next one as we just retrieved it as a low surrogate
            }
            // We never come across a low surrogate because we skip them, unless invalid
            // Reserved assumed to be in UTF-8, as in PHP
            else if (code === 32) {
                ret += '+'; // %20 in rawurlencode
            }
            else if (code < 128) { // 1 byte
                ret += hexStr(code);
            }
            else if (code >= 128 && code < 2048) { // 2 bytes
                ret += hexStr((code >> 6) | 0xC0);
                ret += hexStr((code & 0x3F) | 0x80);
            }
            else if (code >= 2048) { // 3 bytes (code < 65536)
                ret += hexStr((code >> 12) | 0xE0);
                ret += hexStr(((code >> 6) & 0x3F) | 0x80);
                ret += hexStr((code & 0x3F) | 0x80);
            }
        }
    }
    return ret;
}

function FormDone(button, loading, redirect)
{
	document.getElementById(button).disabled = true;
	document.getElementById(loading).className="ajax-done";
	document.getElementById(GetFirstSubstring(button, '_')).className="form-done"; 
	document.getElementById(loading).innerHTML="Operace byla úspěšně dokončena";
	setTimeout("FormDoneRedirect('"+redirect+"')", 1000);
}

function FormDoneRedirect(redirect)
{
	window.location = redirect;	
}

function ignoreSelection(comboId, keys)
{	
	combo = document.getElementById(comboId);
	
	for(i=0;i<keys.length;i++)	
		if (combo[combo.selectedIndex].value == keys[i]) 
		{
			combo.selectedIndex = -1;
		}		
}

function addReason(event, question)
{
	if (!confirm(question)) 
		return false;
	
	var target;
	
	if (!event.target)
		target = event.srcElement;
	else
		target = event.target;
	
	var reason = prompt("Důvod provedení operace:", "");
		
	if ((reason) || (reason == ""))
	{
		if (reason == "") reason = "Neudáno";
		target.href = target.href + "&info=" + urlencode(reason);
		return true;
	}
	else
	{
		return false;
	}
}

function menuTopExpand()
{
	//alert('Ted se rozbali menu.');
	/*var allTags = document.getElementsByTagName('li');

	for (i=0; i < allTags.length; i++) {
		//if (allTags[i].className == 'hidden') {
				allTags[i].style.display = 'list-item';
		//}
	}*/
	
	var menu = document.getElementById('topmenuhidden');
	
	var items = menu.getElementsByTagName('li');
	var origheight = (Math.floor((items.length)/7) + 1) * 25; 
	//alert(origheight);
	if (menu.style.display != 'block')
	{
		var expand = document.getElementById('expandlink');
		expand.innerHTML = "<img src=\"style/ico/collapse16.png\" alt=\"Méně\" /> Méně"; 
		
		menu.style.height = '0px'
		menu.style.display = 'block';
		
		sizeto('topmenuhidden', 0, origheight)
	}
	else
	{
		var expand = document.getElementById('expandlink');
		expand.innerHTML = "<img src=\"style/ico/expand16.png\" alt=\"Více\" /> Více";
		
		//sizeto('topmenuhidden', origheight, 0)
		menu.style.display = 'none';
	}
}

function sizeto(elemname, size, destsize)
{
  var elem = document.getElementById(elemname);
  
  elem.style.height = (size) + "px";

  if (size < destsize - 30)
    x = 20;
  else
    x = (destsize - size) / 5;

  if (x < 1) x = 1;
  
  if (size + 1 < destsize) 
  {
    setTimeout('sizeto(\''+elemname+'\', '+(size+x)+', '+destsize+')', 10);
    return;
  }

//  hide_timer = setTimeout("hide_menu("+num+")", 1000);
}
