function ajaxUpdater(obj, element, url, noscroll, showOnCreate) {
    var form = "";
	
    if(obj != null)
	    if(obj['nodeName'] )
			form = $(obj).serialize(true);
	    else
	    	form = $(obj);

    var myAjax = new Ajax.Request(url, 
    			{
		   method: 'post',
		   parameters: form, 
		   onComplete: function(transport)
		   { 
		     $(element).update(transport.responseText);
		     if (!noscroll) $(element).scrollTo();
		   },
		   onFailure: function(transport){ $(element).update('Loading error<br><img src="/Discoverer/public/images/alarm.png">');},
		   onCreate: function(transport){ 
			   if(!showOnCreate)
				   $(element).update('Loading ...<br><img src="/Discoverer/public/images/ajax-loader.gif">');
		   }
		});
}

function limitText(limitField, limitNum)
{
    if (limitField.value.length > limitNum) {
        limitField.value = limitField.value.substring(0, limitNum);
    } 
}

function execAjax(form, url, srcElement, dstElement)
{
    obj = new Object();
    obj.srcElementValue = form.elements[srcElement].value;
    ajaxUpdater(obj, dstElement, url, true, false);
}

function execAjaxPI(form, url, srcElement, dstElement)
{
    obj = new Object();
    obj.srcElementValue = getRequestBody(document.getElementById('entry'));
    ajaxUpdater(obj, dstElement, url, true, false);
}

///////////////////////////////////////////////////////////////////////////////////////////
// executor functions
// traverse throught form and make ..&..&.. argument string
function getRequestBody(theForm) {
    var p = [];
    for (var i = theForm.elements.length-1; i >= 0; i--) {
        var fld = theForm.elements[i];
        switch (fld.type) {
            case "button": case "submit": case "reset": break;
            case "checkbox": case "radio": if (!fld.checked) break;
            default:
		if (fld.id.substr(0,3) == 'pi_' || fld.id.substr(0,5) == 'alarm')
                    if ("select" == fld.tagName.toLowerCase())
                        p.push(ncode(fld.name,fld.options[fld.selectedIndex].value));
                    else p.push(ncode(fld.name,fld.value));
        }
    }
    return p.join('&');
}
 
function ncode(n,v) {
    return encodeURIComponent(n) +
    '=' + encodeURIComponent(v);
}

function addArgument(place) {
	placeEl = document.getElementById(place);
	clo = placeEl.cloneNode(true);
	clo.childNodes[1].getAttributeNode("id").value="pi_argument_list[]";
	clo.childNodes[1].getAttributeNode("name").value="pi_argument_list[]";
	clo.style.display = 'block';
	placeEl.parentNode.appendChild(clo);
}

function delArgument(place) {
	placeEl = place.parentNode;
	placeEl.parentNode.removeChild(placeEl);
}

function switch_visibility(element_id) {
	var ele = document.getElementById(element_id);
	if (ele.style.display == 'block')
		val = 'none';
	else
		val = 'block';
	ele.style.display = val;
}

///////////////////////////////////////////////////////////////////////////////////////


function trim(stringToTrim) {
	stringToTrim = stringToTrim.replace(/^\s+/,"");
	stringToTrim = stringToTrim.replace(/\s+$/,"");
	return stringToTrim.replace(/\s+/g," ");
}

function checkRcps(rcps)
{
    var regExpPhone = new RegExp('^[+]?[0-9]{9,15}$');
    var regExpEmail = new RegExp('^[a-zA-Z0-9-_]+(\\.[a-zA-Z0-9-_]+)*@([a-zA-Z0-9-_]+\\.)+[a-zA-Z]{2,4}$');

    // comas and spaces separated
    rcps = rcps.replace(/,/g, " ");
    var ricipients = trim(rcps).split(" ");
    
    // obtail check type
    if (document.getElementById('entry').elements['ntf_type'].value == "EMAIL")
    	regTest = regExpEmail;
    else
    	regTest = regExpPhone;
    
    // test all ricipients
    var allok = true;
    for (var i = 0; i < ricipients.length; i++) {
        if (!regTest.test(ricipients[i]))
    	    allok = false;
    }

    // disable pridat button if ricipients not ok
    if (allok)
        document.getElementById('entry').elements['add_submit'].disabled = false;
    else
        document.getElementById('entry').elements['add_submit'].disabled = true;
}

function rand_string() { 
  return String((new Date()).getTime()).replace(/\D/gi,'') 
}

// Elementar PEN object operations
function PenSetApp(penObjectId, penAppPath)
{
  $(penObjectId).AppPath=penAppPath;
}

function PenRun(penObjectId, penParams) 
{
  $(penObjectId).RunApp(penParams); 
}

function PenGetResult(penObjectId)
{
  return $(penObjectId).AppExitCode;
}

function PenGetMetadata(penObjectId)
{
  var metadata = $(penObjectId).AppExitParams;
  return metadata;
}

function PenTerminate(penObjectId)
{
  return $(penObjectId).TerminateApp();
}


function cleanDiv(element) {
    $(element).update('');
}
  
function SelectAllCheckBoxes(theform)
{
    var formElements = $(theform).getElements();
    for(var i=0; i<formElements.length; i++)
    {
        if(formElements[i].type == "checkbox" && formElements[i].disabled == false)
        {
            formElements[i].checked=true;
        }
    }
} 

function ShowErrorMessage(element) {
	if($(element).style.visibility == "visible") {
		$(element).style.visibility = "hidden";
		$(element).style.height = "10px";
	}
	else {
		$(element).style.visibility = "visible";
		$(element).style.height = "auto";
	}
}


function UnselectAllCheckBoxes(theform)
{
    var formElements = $(theform).getElements();
    for(var i=0; i<formElements.length; i++)
    {
        if(formElements[i].type=="checkbox" && formElements[i].disabled == false)
        {
            formElements[i].checked=false;
        }
    }
}

function showHint(element, hint)
{
    var tmp = $(element).cumulativeOffset();
    var elementWidth = $(element).getWidth();
    var hintWidth = $(hint).getWidth();
    if($(hint).id != 'none')
    {
        $(hint).style.visibility = 'visible';
        $(hint).style.height = 'auto';
        $(hint).style.left = tmp[0] + ((elementWidth/2) - (hintWidth/2)) + "px";
        $(hint).style.top = tmp[1] - 30 + "px";
    }
}

function showMouseHint(hintElement, event)
{    
	var element;
    var posX;
    var posY;
    element = $(hintElement);
    pos = getMouseXY(event);
    
    var hintWidth = element.getWidth();
    if(element.id != 'none')
    {
    	element.style.visibility = 'visible';
    	element.style.height = 'auto';
    	element.style.left = pos[0] - (hintWidth/2) + "px";
    	element.style.top = pos[1] - 50 + "px";
    }
    
    last_div = hintElement;
}

function getMouseXY(e) 
{	
		var posx = 0;
		var posy = 0;
		if (!e) var e = window.event;
		if (e.pageX || e.pageY) 	{
			posx = e.pageX;
			posy = e.pageY;
		}
		else if (e.clientX || e.clientY) 	{
			posx = e.clientX + document.body.scrollLeft
				+ document.documentElement.scrollLeft;
			posy = e.clientY + document.body.scrollTop
				+ document.documentElement.scrollTop;
		}
		// posx and posy contain the mouse position relative to the document
		return new Array(posx, posy);
}

function createHintElement(id, text)
{
	var a = document.createElement('div');
	a.innerHTML = text;
	a.id = id;	
	a.className = "hint";
	a.style.zIndex = 100; 
	a.style.visibility = "hidden"; 
	a.style.height = "0px";
	cil = document.getElementById('content'); 
	cil.appendChild(a); 
}

function hiddenHint(element)
{
    if($(element) && $(element).id != 'none')
    {
        $(element).style.visibility = 'hidden';
        $(element).style.height = '0px';
    }
}

function popUp(URL, newWindow, toolbar, scrollbars,location,statusbar,menubar,resizable,width,height,left,top) {
    id = '';
	if(newWindow)
    {
    	day = new Date();
    	id = day.getTime();
    }
    eval("page" + id + " = window.open(URL, '" + id + "', 'toolbar="+toolbar+",scrollbars="+scrollbars+",location="+location+
    		",statusbar="+statusbar+",menubar="+menubar+",resizable="+resizable+",width="+width+",height="+height+
    		",left = "+left+",top = "+top+"');");
  }

function getActualTimestamp()
{
  var actualDate = new Date();
  var year = actualDate.getFullYear();
  var month = actualDate.getMonth() + 1;
  var date = actualDate.getDate();
  var hour = actualDate.getHours();
  var minute = actualDate.getMinutes();
  var second = actualDate.getSeconds();
  
  month = month < 10 ? '0' + month : month;
  date = date < 10 ? '0' + date : date;
  hour = hour < 10 ? '0' + hour : hour;
  minute = minute < 10 ? '0' + minute : minute;
  second = second < 10 ? '0' + second : second;

  return year + '-' + month + '-' + date + ' ' + hour + ':' + minute + ':' + second;
}

function allCheckBoxClick(theform, checkbox)
{
	if($(checkbox).checked == false)
		UnselectAllCheckBoxes(theform);
	else
		SelectAllCheckBoxes(theform);
}

function unSelectAllCheckBox(checkbox)
{
	$(checkbox).checked=false;
}

function openNewWindow(url, form)
{
    var pom = form.serialize();
    if(pom.match("checkbox") != null)
    {
	    pom = pom.replace(/=/g,'/');
	    pom = pom.replace(/&/g,'/');
	    url = url + "/"+pom;
	    
	    var timeStamp = new Date();
	    
	    window.open(url,timeStamp.getTime(),'width=1100,height=800,scrollbars=yes,resizable=yes');
    }
    else
    	alert('Musíte vybrat alespoň jednu položku z tabulky.');
}

function searchChecked(formName, className)
{
    var elements = $(formName).getElementsByClassName(className);
    var ajax = new Object();
    ajax.lastDataType = null;
    for(var i=0; i < elements.length;i++)
        if(elements[i].checked)
        {
            ajax[i] = elements[i].value;
            ajax.lastDataType = i;
        }
    return ajax;
}

/**************************** helpWindow - pomocne plovouci okno ****************/
/* registerSingleHelpWindow - registrace aktualniho pomocneho okna a skryti aktualne viditelnych
 *   id_div        - registrovane okno(DIV) 
 *   function_hide - funkce pro automaticke skryti okna
 * funkce neprovadi zobrazovani oken, pouze vyvolava skryti registrovanych oken tak, 
 * aby bylo vzdy videtelne pouze jedno helpWindow
 */
function registerSingleHelpWindow(id_div, function_hide)
{
	if (!window.HELPWINDOWS_ARRAY)
	    window.HELPWINDOWS_ARRAY = new Array();

	var pridej = false;

    for(var i = 0; i < HELPWINDOWS_ARRAY.length; i++)
    {
        if(HELPWINDOWS_ARRAY[i]['div'] == id_div)
            pridej = true;
        HELPWINDOWS_ARRAY[i]['function_hide'](HELPWINDOWS_ARRAY[i]['div']);
    }

    if(!pridej)
    	HELPWINDOWS_ARRAY.push({'div': id_div, 'function_hide': function_hide});
}

//------------------------- funkce pro zobrazovani vyberove tabulky-------------


// kontroluje input -> object element, dle datetime formatu -> 'yyyy-mm-dd hh:ii:ss'
var new_focus;
function checkDateTime(element)
{
	new_focus = element;
	s_date = element.value;
	var re_date;
	var invalid_date_message;
    re_date = /^\s*(\d{2,4})\-(\d{1,2})\-(\d{1,2})\s*(\d{1,2})\:(\d{1,2})\:(\d{1,2})\s*$/;
	invalid_date_message = "Povolený formát zadání je rrrr-mm-dd hh:mm:ss.";
    if (!re_date.exec(s_date))
	 {
    	 alert("Špatně zadané datum: '" + s_date + "'.\n"+invalid_date_message);
		 setTimeout("new_focus.focus();", 1);
		 //element.focus();
		 return false;
	 }

	 var n_day = Number(RegExp.$3),
	     n_month = Number(RegExp.$2),
	     n_year = Number(RegExp.$1),
	     n_hour = Number(RegExp.$4),
	     n_min = Number(RegExp.$5),
	     n_sec = Number(RegExp.$6);
	 
	 if (n_year < 100)
	     n_year += (n_year < this.a_tpl.centyear ? 2000 : 1900);
	 if (n_month < 1 || n_month > 12)
	 {
		     alert("Špatně zadaný měsíc: '" + n_month + "'.\nPovolené zadání je 01-12.");
			 setTimeout("new_focus.focus();", 1);
			 //element.focus();
			 return false;
     }
	 var d_numdays = new Date(n_year, n_month, 0);
	 if (n_day > d_numdays.getDate())
	 {
		 alert("Špatně zadaný den: '" + n_day + "'.\nPovolené zadání je 01 - " + d_numdays.getDate() + ".");
		 setTimeout("new_focus.focus();", 1);
		 //element.focus();
		 return false;
     }
	 if (n_hour < 0 || n_hour > 23)
	 {
		 alert("Špatně zadané hodiny: '" + n_hour + "'.\nPovolené zadání je 00-23");
		 setTimeout("new_focus.focus();", 1);
		 //element.focus();
		 return false;
	 }
	 if (n_min < 0 || n_min > 59)
	 {
		 alert("Špatně zadané minuty: '" + n_min + "'.\nPovolené zadání je 00-59");
		 setTimeout("new_focus.focus();", 1);
		 //element.focus();
		 return false;
     }
	 if (n_sec < 0 || n_sec > 59)
	 {
		 alert("Špatně zadané sekundy: '" + n_sec + "'.\nPovolené zadání je 00-59");
		 setTimeout("new_focus.focus();", 1);
		 //element.focus();
		 return false;
     }
	 return true;
}

//kontroluje input -> object element, dle date formatu -> 'yyyy-mm-dd'
var new_focus;
function checkDate(element)
{
	new_focus = element;
	s_date = element.value;
	var re_date;
	var invalid_date_message;
    re_date = /^\s*(\d{2,4})\-(\d{1,2})\-(\d{1,2})$/;
	invalid_date_message = "Povolený formát zadání je rrrr-mm-dd.";
    if (!re_date.exec(s_date))
	 {
    	 alert("Špatně zadané datum: '" + s_date + "'.\n"+invalid_date_message);
		 setTimeout("new_focus.focus();", 1);
		 //element.focus();
		 return false;
	 }

	 var n_day = Number(RegExp.$3),
	     n_month = Number(RegExp.$2),
	     n_year = Number(RegExp.$1);
	 
	 if (n_year < 100)
	     n_year += (n_year < this.a_tpl.centyear ? 2000 : 1900);
	 if (n_month < 1 || n_month > 12)
	 {
		     alert("Špatně zadaný měsíc: '" + n_month + "'.\nPovolené zadání je 01-12.");
			 setTimeout("new_focus.focus();", 1);
			 //element.focus();
			 return false;
     }
	 var d_numdays = new Date(n_year, n_month, 0);
	 if (n_day > d_numdays.getDate())
	 {
		 alert("Špatně zadaný den: '" + n_day + "'.\nPovolené zadání je 01 - " + d_numdays.getDate() + ".");
		 setTimeout("new_focus.focus();", 1);
		 //element.focus();
		 return false;
     }
	 return true;
}

// obsluzne funkce po stisku tlacitek obnovit a rozklikavaciho radia v tabulkach
// funkce vyhledava zaskrtnute check boxy v menu pro grafy
function getCheckedMenuGraph()
{
	var url = '';
    var all_groups_graph = document.getElementsByName('all_graph');
    for(var i = 0; i < all_groups_graph.length; i++)
    {
        var group = all_groups_graph[i];
        var group_name = group.id;
        if(group_name != 'all_graph')
        {    
            var group_elements = document.getElementsByName(group_name);
            for(var j = 0; j < group_elements.length; j++)
            {
                element = group_elements[j];
                var element_id = element.id;
                var element_name = element.name;
                var element_value = element.value;
                var element_checked = element.checked;
                if(element_name == group_name && element_checked == true)
                {
                    url += '/graph/' + element_value;
                }
            }
        }
    } 
	return url;
}

// funkce vyhledava zaskrtnute check boxy v menu pro tabulky
function getCheckedMenuTable()
{
	var url = '';
    var all_groups_table = document.getElementsByName('all_table');
	for(var i = 0; i < all_groups_table.length; i++)
	 {
	    var group = all_groups_table[i];
	    var group_name = group.id;
	    if(group_name != 'all_table')
	    {    
	        var group_elements = document.getElementsByName(group_name);
	        for(var j = 0; j < group_elements.length; j++)
	        {
	            element = group_elements[j];
	            var element_id = element.id;
	            var element_name = element.name;
	            var element_value = element.value;
	            var element_checked = element.checked;
	            if(element_name == group_name && element_checked == true)
	            {
	                url += '/table/' + element_value;
	            }
	        }
	    }
	}
	return url;
}

//funkce vyhledava zaskrtnute check boxy v menu pro dny (statistyky)
function getCheckedMenuDays()
{
	var url = '';
    var all_days = document.getElementsByName('days');
	for(var i = 0; i < all_days.length; i++)
	{
	    var element = all_days[i];
	    var element_id = element.id;
	    var element_name = element.name;
	    var element_value = element.value;
	    var element_checked = element.checked;
	    if(element_checked == true)
	    {
	        url += '/days/' + element_value;
	    }
	}
	return url;
}

// funkce meni vsechny podgrupy a vsechny checkboxy po stisknuti globalniho checkboxu
function changeAllGroupsMenu(element)
{
    var i;
    var group_elements;
    main_id = element.id;
    checked = element.checked;
    group_elements = document.getElementsByName(main_id);
    for(i = 0; i < group_elements.length; i++)
    {
        group_elements[i].checked = checked;
        changeOneGroupMenu(group_elements[i].id);
    } 
}

//funkce meni vsechny checkboxy po stisknuti podgrupoveho checkboxu
function changeOneGroupMenu(group)
{
    var i;
    var group_elements;
    main_check = document.getElementById(group);
    checked = main_check.checked;
    group_elements = document.getElementsByName(group);
    for(i = 0; i < group_elements.length; i++)
    {
        group_elements[i].checked = checked;
    } 
} 

//funkce prepina pracovni dny / vikend / cely tyden
function changeWeekGroup(typ, checked)
{
	var nochecked = true;
	if(checked == true)
		nochecked = false;
	
	if(typ == 'Po-Pa')
	{
		$('day_01').checked = checked;
		$('day_02').checked = checked;
		$('day_03').checked = checked;
		$('day_04').checked = checked;
		$('day_05').checked = checked;
		$('day_06').checked = nochecked;
		$('day_07').checked = nochecked;
		$('day_gr_01').checked = checked;
		$('day_gr_02').checked = nochecked;
		$('day_gr_03').checked = false;
	}
	else if(typ == 'So-Ne')
	{
		$('day_01').checked = nochecked;
		$('day_02').checked = nochecked;
		$('day_03').checked = nochecked;
		$('day_04').checked = nochecked;
		$('day_05').checked = nochecked;
		$('day_06').checked = checked;
		$('day_07').checked = checked;
		$('day_gr_01').checked = nochecked;
		$('day_gr_02').checked = checked;
		$('day_gr_03').checked = false;
	}
	else if(typ == 'Po-Ne')
	{
		$('day_01').checked = checked;
		$('day_02').checked = checked;
		$('day_03').checked = checked;
		$('day_04').checked = checked;
		$('day_05').checked = checked;
		$('day_06').checked = checked;
		$('day_07').checked = checked;
		$('day_gr_01').checked = checked;
		$('day_gr_02').checked = checked;
		$('day_gr_03').checked = checked;
	}
}

//nastavi fokus na prvni aktivni formularovy prvek na strance
function setFocus()
{
	var flag=false;
	for(z=0;z<document.forms.length;z++)
	{
		var form = document.forms[z];
		var elements = form.elements;
		for (var i=0;i<elements.length;i++)
		{
			var element = elements[i];
			if(element.type == 'text' &&
			!element.readOnly &&
			!element.disabled)
			{
				element.focus();
				flag=true;
				break;
			}
		}
		if(flag)
			break;
	}
}

//Simulates PHP's date function
Date.prototype.format = function(format) {
	var returnStr = '';
	var replace = Date.replaceChars;
	for (var i = 0; i < format.length; i++) {
		var curChar = format.charAt(i);
		if (replace[curChar]) {
			returnStr += replace[curChar].call(this);
		} else {
			returnStr += curChar;
		}
	}
	return returnStr;
};
Date.replaceChars = {
	shortMonths: ['L', 'Ú', 'B', 'D', 'K', 'Čn', 'Čc', 'S', 'Z', 'Ř', 'L', 'P'],
	longMonths: ['Leden', 'Únor', 'Březen', 'Duben', 'Květen', 'Červen', 'Červenec', 'Srpen', 'Září', 'Říjen', 'Listopad', 'Prosinec'],
	shortDays: ['Ne', 'Po', 'Út', 'St', 'Čt', 'Pá', 'So'],
	longDays: ['Neděle', 'Pondělí', 'Úterý', 'Středa', 'Čtvrtek', 'Pátek', 'Sobota'],
	
	// dny
	d: function() { return (this.getDate() < 10 ? '0' : '') + this.getDate(); },
	D: function() { return Date.replaceChars.shortDays[this.getDay()]; },
	j: function() { return this.getDate(); },
	l: function() { return Date.replaceChars.longDays[this.getDay()]; },
	N: function() { return this.getDay() + 1; },
	S: function() { return (this.getDate() % 10 == 1 && this.getDate() != 11 ? 'st' : (this.getDate() % 10 == 2 && this.getDate() != 12 ? 'nd' : (this.getDate() % 10 == 3 && this.getDate() != 13 ? 'rd' : 'th'))); },
	w: function() { return this.getDay(); },
	z: function() { return "není podporováno"; },
	// Week
	W: function() { return "není podporováno"; },
	// Month
	F: function() { return Date.replaceChars.longMonths[this.getMonth()]; },
	m: function() { return (this.getMonth() < 9 ? '0' : '') + (this.getMonth() + 1); },
	M: function() { return Date.replaceChars.shortMonths[this.getMonth()]; },
	n: function() { return this.getMonth() + 1; },
	t: function() { return "není podporováno"; },
	// Year
	L: function() { return (((this.getFullYear()%4==0)&&(this.getFullYear()%100 != 0)) || (this.getFullYear()%400==0)) ? '1' : '0'; },
	o: function() { return "není podporováno"; },
	Y: function() { return this.getFullYear(); },
	y: function() { return ('' + this.getFullYear()).substr(2); },
	// Time
	a: function() { return this.getHours() < 12 ? 'dopo' : 'odp'; },
	A: function() { return this.getHours() < 12 ? 'DOPO' : 'ODP'; },
	B: function() { return "není podporováno"; },
	g: function() { return this.getHours() % 12 || 12; },
	G: function() { return this.getHours(); },
	h: function() { return ((this.getHours() % 12 || 12) < 10 ? '0' : '') + (this.getHours() % 12 || 12); },
	H: function() { return (this.getHours() < 10 ? '0' : '') + this.getHours(); },
	i: function() { return (this.getMinutes() < 10 ? '0' : '') + this.getMinutes(); },
	s: function() { return (this.getSeconds() < 10 ? '0' : '') + this.getSeconds(); },
	// Timezone
	e: function() { return "není podporováno"; },
	I: function() { return "není podporováno"; },
	O: function() { return (-this.getTimezoneOffset() < 0 ? '-' : '+') + (Math.abs(this.getTimezoneOffset() / 60) < 10 ? '0' : '') + (Math.abs(this.getTimezoneOffset() / 60)) + '00'; },
	P: function() { return (-this.getTimezoneOffset() < 0 ? '-' : '+') + (Math.abs(this.getTimezoneOffset() / 60) < 10 ? '0' : '') + (Math.abs(this.getTimezoneOffset() / 60)) + ':' + (Math.abs(this.getTimezoneOffset() % 60) < 10 ? '0' : '') + (Math.abs(this.getTimezoneOffset() % 60)); },
	T: function() { var m = this.getMonth(); this.setMonth(0); var result = this.toTimeString().replace(/^.+ \(?([^\)]+)\)?$/, '$1'); this.setMonth(m); return result;},
	Z: function() { return -this.getTimezoneOffset() * 60; },
	// Full Date/Time
	c: function() { return this.format("Y-m-d") + "T" + this.format("H:i:sP"); },
	r: function() { return this.toString(); },
	U: function() { return this.getTime() / 1000; }
};

if(typeof String.prototype.trim !== 'function') 
{
    String.prototype.trim = function() 
    {
        return this.replace(/^\s+|\s+$/, ''); 
    }
}

/*
 * funkce zjisti velikost okna a vrati jeho vysku a sirku
 * */
function windowSize()
{
	var w = 0;
	var h = 0;

	//IE
	if(!window.innerWidth)
	{
		//strict mode
		if(!(document.documentElement.clientWidth == 0))
		{
			w = document.documentElement.clientWidth;
			h = document.documentElement.clientHeight;
		}
		//quirks mode
		else
		{
			w = document.body.clientWidth;
			h = document.body.clientHeight;
		}
	}
	//w3c
	else
	{
		w = window.innerWidth;
		h = window.innerHeight;
	}
	return {width:w,height:h};
}

/*
 * funkce vypocita a vrati souradnice stredu okna
 * */
function windowCenter()
{
	var hWnd = (arguments[0] != null) ? arguments[0] : {width:0,height:0};

	var _x = 0;
	var _y = 0;
	var offsetX = 0;
	var offsetY = 0;

	//IE
	if(!window.pageYOffset)
	{
		//strict mode
		if(!(document.documentElement.scrollTop == 0))
		{
			offsetY = document.documentElement.scrollTop;
			offsetX = document.documentElement.scrollLeft;
		}
		//quirks mode
		else
		{
			offsetY = document.body.scrollTop;
			offsetX = document.body.scrollLeft;
		}
	}
	//w3c
	else
	{
		offsetX = window.pageXOffset;
		offsetY = window.pageYOffset;
	}
	var size = windowSize();
	_x = ((size.width-hWnd.width)/2)+offsetX;
	_y = ((size.height-hWnd.height)/2)+offsetY;

	return{x:_x,y:_y};
}
