var Strings = new Object();
var AsciiTableFrom = '؊ݎ';
var AsciiTableTo = 'acdeeinorstuuyzACDEEINORSTUUYZEOUeouAa';
var WinXPSP2 = (window.navigator.userAgent.indexOf("SV1") != -1);

// nove okno
function win(url, width, height, resizable, scroll)
{
	if (!width)
		width = 300;
	if (!height)
		width = 300;
	if (scroll == null)
		scroll = 0;
	
	if (document.all)
	{
		var x = Math.round(window.screen.availWidth / 2 - width / 2);
		var y = Math.round(window.screen.availHeight / 2 - height / 2);
		if (x < 0) x = 10;
		if (y < 0) y = 10;
	}
	else
		var x = 200, y = 200;

	var features = 'height='+height+', left='+x+', location=no, menubar=no, resizable='+(resizable ? 'yes' : 'no')+', '
		+'scrollbars='+(scroll ? 'yes' : 'no')+', status=no, titlebar=no, toolbar=no, top='+y+', width='+width;
	
	window.open(url, '_blank', features);
}

// zobrazeni media
function show(url, width, height)
{
	var resizable = false;
	if (!width && !height)
	{
		width = 400;
		height = 400;
		var resizable = true;
	}
	else
	{
		width = !width ? 300 : width + 20;
		height = !height ? 300 : height + 20;
	
		if (width < 100)
			width = 100;
	}
	
	if (document.all)
	{
		var x = Math.round(window.screen.availWidth / 2 - width / 2);
		var y = Math.round(window.screen.availHeight / 2 - height / 2);
		if (x < 0) x = 10;
		if (y < 0) y = 10;
	}
	else
		var x = 200, y = 200;

	var features = 'height='+height+', left='+x+', location=no, menubar=no, resizable='+(resizable ? 'yes' : 'no')+', '
		+'scrollbars=no, status=no, titlebar=no, toolbar=no, top='+y+', width='+width;
	
	window.open(url, '_blank', features);
}

// nove okno
function getWin(url, width, height, resizable, scroll)
{
	if (!width)
		width = 300;
	if (!height)
		width = 300;
	if (scroll == null)
		scroll = 0;
	
	if (document.all)
	{
		var x = Math.round(window.screen.availWidth / 2 - width / 2);
		var y = Math.round(window.screen.availHeight / 2 - height / 2);
		if (x < 0) x = 10;
		if (y < 0) y = 10;
	}
	else
		var x = 200, y = 200;

	var features = 'height='+height+', left='+x+', location=no, menubar=no, resizable='+(resizable ? 'yes' : 'no')+', '
		+'scrollbars='+(scroll ? 'yes' : 'no')+', status=no, titlebar=no, toolbar=no, top='+y+', width='+width;
	
	return window.open(url, '_blank', features);
}

// novy dialog - modalni
function dialog(url, width, height, resizable, scroll, modeless)
{
	if (!width)
		width = 300;
	if (!height)
		width = 300;
	if (WinXPSP2)
		height += 20;

	var features = 'dialogHeight: '+height+'px; dialogWidth: '+width+'px; status: off; help: no; resizable: '+(resizable ? 'yes' : 'no')+'; '
		+'scroll: '+(scroll ? 'yes' : 'no')+'; center: yes; edge: sunken';
	
	return modeless ? window.showModelessDialog(url, window, features) : window.showModalDialog(url, window, features);
}

// dialog nahledu
function preview(url, width, height)
{
	var resizable = true;
	if (!width && !height)
	{
		width = 400;
		height = 400;
		var resizable = true;
	}
	else
	{
		width = !width ? 300 : width + 20;
		height = !height ? 300 : height + 50;
	
		if (width < 100)
			width = 100;
	}
	
	if (WinXPSP2)
		height += 20;

	var features = 'dialogHeight: '+height+'px; dialogWidth: '+width+'px; status: no; help: no; resizable: '+(resizable ? 'yes' : 'no')+'; '
		+'scroll: no; center: yes; edge: sunken';
	
	window.showModalDialog(url, window, features);
}

// presmerovani stranky
function pgRedirect(params, url)
{
	if (!url)
		url = document.location.toString();

	document.location = urlChange(url, params);
}

// uprava URL
function urlChange(url, params)
{
	if (!params)
		return url;

	if (url.indexOf('?'))
	{
		url.match(/^(.*)\?(.*)#?(.*)$/);
		url = RegExp.$1;
		var pairs = RegExp.$2.split('&');
		var hash = RegExp.$3 ? RegExp.$3 : null;
		var stayPairs = new Array();
		for (var i = 0; i < pairs.length; i++)
		{
			var kv = pairs[i].split('=');
			if (typeof(params[ kv[0] ]) == 'undefined')
				stayPairs[stayPairs.length] = pairs[i];
		}
		pairs = stayPairs;
		for (var key in params)
		{
			if (params[key] !== null)
				pairs[pairs.length] = escape(key)+'='+escape(params[key]);
		}
	}
	else
	{
		url.match(/^(.*)#?(.*)$/);
		url = RegExp.$1;
		var hash = RegExp.$2 ? RegExp.$2 : null;
		var pairs;
		for (var key in params)
		{
			if (params[key] !== null)
				pairs[pairs.length] = escape(key)+'='+escape(params[key]);
		}
	}
	return url+'?'+pairs.join('&')+(hash ? '#'+hash : '')
}

// meni velikost obsahove casti
function pgResize()
{
	var css = document.styleSheets[2];
	if (css.rules[0].style.width == '100%')
	{
		// small
		css.rules[0].style.width = '530px';
		css.rules[1].style.left = '7px';
		css.rules[2].style.width = '300px';
		document.cookie = 'CmsPageResizeMode=1';
		document.cookie = 'CmsPageResizeQuery='+escape(document.location.search.substr(1));
	}
	else
	{
		// big
		css.rules[0].style.width = '100%';
		css.rules[1].style.left = '4px';
		css.rules[2].style.width = '400px';
		document.cookie = 'CmsPageResizeMode=3';
		document.cookie = 'CmsPageResizeQuery='+escape(document.location.search.substr(1));
	}
}

// formatuje cislo na retezec
function numFormat(num, dec, decPnt, thsSep)
{
	if (isNaN(num))
		return 'NaN';
	
	if (dec == null) dec = 0;
	if (decPnt == null) decPnt = ',';
	if (thsSep == null) thsSep = '';
	
	if (dec > 0)
	{
		var pow = Math.pow(10, dec);
		num = Math.round(num * pow) / pow;
		num = num.toString();
		if (num.indexOf('.') != -1)
		{
			var pnt = num.indexOf('.');
			var numInt = num.substr(0, pnt);
			var numDec = num.substring(pnt + 1, pnt + 1 + dec);
			while (numDec.length < dec)
				numDec += '0';
		}
		else
		{
			var numInt = num;
			var numDec = pow.toString().substr(1);
		}
	}
	else
	{
		var numDec = '';
		var numInt = Math.round(num).toString();
	}

	if (thsSep && numInt.length > 3)
	{
		var ths = new Array();
		var mod = numInt.length % 3;
		var max = Math.floor(numInt.length / 3);
		if (mod)
			ths[0] = numInt.substr(0, mod);
		for (var i = 0; i < max; i++)
			ths[ths.length] = numInt.substr(i * 3 + mod, 3);
		
		numInt = ths.join(thsSep);
	}
	
	return dec ? numInt + decPnt + numDec : numInt;
}

// kontrola input-boxu (priradit udalosti onkeypress)
function inpNumVal(obj, dec, neg)
{
	if (isNumVal(obj.value, dec, neg))
	{
		obj.style.color = '#0000FF';
		return dec ? parseFloat(obj.value.replace(/ /g, '').replace(/,/g, '.')) : parseInt(obj.value.replace(/ /g, ''));
	}
	else
	{
		obj.style.color = '#E60000';
		return dec ? numFormat(0, dec) : 0;
	}
}

// formatovani cisla input-boxu (priradit onblur)
function inpNumFmt(obj, dec, neg)
{
	if (isNumVal(obj.value, dec, neg))
		obj.value = numFormat(parseFloat(obj.value.replace(/ /g, '').replace(/,/g, '.')), dec, ',', ' ');
}

// validace cisla
function isNumVal(num, dec, neg)
{
	num = num.toString();
	var re = dec ? (neg ? /^-?(\d+ )*\d+(|[\.,]\d+)$/ : /^(\d+ )*\d+(|[\.,]\d+)$/) : (neg ? /^-?(\d+ )*\d+$/ : /^(\d+ )*\d+$/);
	return num.match(re);
}

// validace stisknuti cisla na klavesnici
function isDigit()
{
	return ((event.keyCode >= 48) && (event.keyCode <= 57));
}

// vraci cele cislo
function getNumInt(val, defaultVal)
{
	var num = parseInt(val);
	return isNaN(num) ? (defaultVal != null ? defaultVal : 0) : num;
}
		
// vraci realne cislo
function getNumFloat(val, defaultVal)
{
	var num = parseFloat(val);
	return isNaN(num) ? (defaultVal != null ? defaultVal : 0) : num;
}
	
// vymaze obsah
function inpEmpty(obj)
{
	obj.value = '';
}

// vyjme obsah do schranky
function inpCut(obj)
{
	window.clipboardData.setData('Text', obj.value);
	obj.value = '';
}

// kopiruje obsah do schranky
function inpCopy(obj)
{
	window.clipboardData.setData('Text', obj.value);
}

// vlozi obsah ze schranky
function inpPaste(obj)
{
	var txt = window.clipboardData.getData('Text');
	obj.value = txt ? txt : '';
}

// meni label na ident
function makeIdent(obj, label)
{
	if (obj.value.length == 0)
		obj.value = toAscii(label.value).replace(/[^A-Za-z0-9]+/g, '-').replace(/^-|-$/, '').toLowerCase();
}

// opravuje URL: www.neco.cz na http://www.neco.cz/
function repairUrl(obj, protocol)
{
	if (!protocol)
		protocol = 'http';
	
	if (obj.value.match(/^([a-z0-9-]+\.){1,}[a-z]{2,}(\/?)$/i))
		obj.value = protocol+'://'+obj.value+(!RegExp.$2.length ? '/' : '');
	else if (obj.value.match(/^([a-z0-9-]+\.){1,}[a-z]{2,}\/.+$/i))
		obj.value = protocol+'://'+obj.value;
}

// zasobnik udalosti provadenych po uzavreni stranky
function pgUnloader()
{
	for (var i = 0; i < pgUnloaderStack.length; i++)
		pgUnloaderStack[i]();
}
var pgUnloaderStack = new Array();
window.onunload = pgUnloader;

// zasobnik udalosti provadenych po natazeni stranky
function pgOnloader()
{
	for (var i = 0; i < pgOnloaderStack.length; i++)
		pgOnloaderStack[i]();
}
var pgOnloaderStack = new Array();
window.onload = pgOnloader;

// zasobnik udalosti provadenych pred uzavreni stranky
function pgOnBeforeUnload()
{
	for (var i = 0; i < pgOnBeforeUnloadStack.length; i++)
		pgOnBeforeUnloadStack[i]();
}
var pgOnBeforeUnloadStack = new Array();
window.onbeforeunload = pgOnBeforeUnload;


var tabs = new Object;
function tabSwitch(tab, name, id)
{
	var old = tabs[name];
	if (old)
	{
		old.block.style.display = 'none';
		old.tab.className = 'item';
	}
	tabs[name] = {'block': document.all.item('Tab'+name+id), 'tab': tab};
	tabs[name].block.style.display = 'block';
	tabs[name].tab.className = 'item selected';
	tabs[name].active = id;
}
function tabCopyLang(tabName, elmSrc, elmDst)
{
	var tab = tabs[tabName];
	if (!tab)
		return;

	if (elmDst)
	{
		var elm = tab.block.all.item(elmSrc);
		if (elm)
		{
			for (var i = 0; i < elmDst.length; i++)
			{
				try
				{
					document.all.item(elmDst[i]).value = elm.value;
				}
				catch (e) {}
			}
		}
	}
	else
	{
		var elm = tab.block.all.item(elmSrc);
		var elms = document.all.item(elmSrc);
		if (elm && elms)
		{
			for (var i = 0; i < elms.length; i++)
				elms[i].value = elm.value;
		}
	}
}

// konverze znakovych sad
function toAscii(str)
{
	var newStr = '';
	for (var i = 0; i < str.length; i++)
	{
		var ch = str.charAt(i);
		var pos = AsciiTableFrom.indexOf(ch);
		if (pos >= 0)
			newStr += AsciiTableTo.substr(pos, 1);
		else
			newStr += ch;
	}
	return newStr;
}

// skryje vsechny podpolozky
function hideChildren(parent, disable,param)
{
	if (!parent)
		return;
	
	if (parent.children)
	{
		for (var i = 0; i < parent.children.length; i++)
		{
			if (parent.children[i].children)
				hideChildren(parent.children[i], disable);
		}
	}
	parent.style.display = 'none';
	if (disable)
		parent.disabled = true;
}

// zobrazi vsechny podpolozky
function showChildren(parent, disable,param)
{
	if (!parent)
		return;
	
	if (parent.children)
	{
		for (var i = 0; i < parent.children.length; i++)
		{
			if (parent.children[i].children)
				showChildren(parent.children[i], disable);
		}
	}
	parent.style.display = '';
	if (disable)
		parent.disabled = false;
}

function ClearResourceForm(sqlColumn)
{
	fieldIDName = sqlColumn+'Name';
	fieldIDID = sqlColumn+'ID';
	fieldIDIDx = sqlColumn+'IDx';
	formButtonClear = sqlColumn+'formButtonClear';
	formButtonAdd = sqlColumn+'formButtonAdd';
	Preview = sqlColumn+'Preview';
	
	document.getElementById(fieldIDName).innerHTML = '<em>nen vybrno</em>';
	document.getElementById(fieldIDID).value = 0;
	document.getElementById(fieldIDIDx).value = 0;
	document.getElementById(Preview).innerHTML = '&nbsp;';
	document.getElementById(formButtonClear).style.display = 'none';
	document.getElementById(formButtonAdd).style.display = '';
}

// automaticke doplneni
function inpAutocomplete(elm, names)
{
	if (elm.value == '' || event.keyCode < 31 || '46;37;38;39;40;33;34;35;36;45;'.indexOf(event.keyCode+';') != -1)
		return;
	
	for (var i = 0; i < names.length; i++)
	{
		if (names[i].indexOf(elm.value) == 0)
		{
			var src = elm.value;
			elm.value = names[i];
			var rng = elm.createTextRange();
			rng.moveStart('character', src.length);
			rng.select();
		}
	}
}

// zmena zobrazeni
function switchDisplay(id)
{
	var on = document.all.item(id+'On');
	var off = document.all.item(id+'Off');
	var img = event.srcElement;
	if (on.style.display == 'none')
	{
		on.style.display = 'block';
		off.style.display = 'none';
		img.src = img.src.replace(/plus/, 'minus');
		document.cookie = 'CmsSwitchDisplayMode=1';
	}
	else
	{
		on.style.display = 'none';
		off.style.display = 'block';
		img.src = img.src.replace(/minus/, 'plus');
		document.cookie = 'CmsSwitchDisplayMode=2';
	}
	document.cookie = 'CmsSwitchDisplayID='+id;
	document.cookie = 'CmsSwitchDisplayQuery='+escape(document.location.search.substr(1));
}

// zmena zobrazeni radky listu
function switchDisplayRow(img)
{
	var tr = img.parentElement.parentElement.nextSibling;
	if (tr.style.display == 'none')
	{
		tr.style.display = 'block';
		img.src = img.src.replace(/plus/, 'minus');
	}
	else
	{
		tr.style.display = 'none';
		img.src = img.src.replace(/minus/, 'plus');
	}
}

// zvyrazni HTML syntaxi
function htmlSyntax(html)
{
	html = html.replace(new RegExp('(<SCRIP'+'T[^>]*>)((?:.|\r\n|\n)*?)(</SCRIP'+'T>)', 'gi'), '$1__LT__SPAN class="html-js"__GT__$1__LT__/SPAN__GT__$2');
	html = html.replace(/&(\w+);/g, '__LT__SPAN class="html-entity"__GT__&amp;$1;__LT__/SPAN__GT__');
	html = html.replace(/<(\/?)([\w:]+)([^>]*)>/g, htmlSyntaxCallback);
	html = html.replace(/<!--((?:.|\r\n|\n)*?)-->/g, '<SPAN class="html-comment">&lt;!--$1--&gt;</SPAN>');
	html = html.replace(/\r?\n/g, '<BR>');
	html = html.replace(/\t/g, '&nbsp;&nbsp;&nbsp;');
	html = html.replace(/__LT__/g, '<');
	html = html.replace(/__GT__/g, '>');
	return html;
}
function htmlSyntaxCallback(all, close, tag, param)
{
	if (param.length)
	{
		param = param.replace(/__LT__SPAN.+?__GT__|__LT__\/SPAN__GT__/g, '');
		param = param.replace(/&amp;/g, '&');
		param = param.replace(/(\w+)=("|')([^\2]*?)\2/g, '<SPAN class="html-attrib">$1</SPAN>=<SPAN class="html-value">$2$3$2</SPAN>');
		param = param.replace(/(\s\w+)=([^"'\s]+)/g, '<SPAN class="html-attrib">$1</SPAN>=<SPAN class="html-value">$2</SPAN>');
	}
	return '<SPAN class="html-tag">&lt;'+close+tag+(param.length ? '</SPAN>'+param+'<SPAN class="html-tag">&gt;</SPAN>' : '&gt;</SPAN>');
}

// koduje spec. HTML znaky
function htmlSpecialChars(str)
{
	return CD_INPUT(str);
}
// konverze
function CD_INPUT(str)
{
	return str.replace(/&/g, '&amp;').replace(/</g, '&lt;').replace(/>/g, '&gt;').replace(/"/g, '&quot;').replace(/'/g, '&#039;');
}
function CD_TEXT(str)
{
	return str.replace(/</g, '&lt;').replace(/>/g, '&gt;').replace(/\n/g, '<br>');
}
function CD_JS(str)
{
	return str.replace(/\\/g, '\\\\').replace(/"/g, '\\"').replace(/'/g, '\\\'');
}
function focusFirstElement()
{
	if (!document.forms(0))
		return;
	
	var form = document.forms(0);
	for (var i = 0; i < form.elements.length; i++)
	{
		var elm = form.elements(i);
		try
		{
			elm.focus();
			break;
		}
		catch (e) {}
	}
}
function zeroPad(str, num)
{
	if (!num)
		num = 2;
	
	str = str.toString();
	return '00000000000000000000000000000000'.substr(0, num - str.length)+str;
}



var checkflag = 'false';

function check(field)
{
	if (checkflag == 'false')
	{
		for (i = 0; i < field.length; i++)
		{
			field[i].checked = true;}
			checkflag = 'true';
			return 'odznait ve';
		}
	else
	{
		for (i = 0; i < field.length; i++)
		{
			field[i].checked = false; }
			checkflag = 'false';
			return 'oznait ve';
	}
}

function moveItem(index,to)
{
	var list = document.form.list;
	var total = list.options.length-1;
	
	if (index == -1) return false;
	if (to == +1 && index == total) return false;
	if (to == -1 && index == 0) return false;
	var items = new Array;
	var values = new Array;
	for (i = total; i >= 0; i--) {
	items[i] = list.options[i].text;
	values[i] = list.options[i].value;
	}
	for (i = total; i >= 0; i--) {
	if (index == i) {
	list.options[i + to] = new Option(items[i],values[i + to], 0, 1);
	list.options[i] = new Option(items[i + to], values[i]);
	i--;
	}
	else {
	list.options[i] = new Option(items[i], values[i]);
	   }
	}
	list.focus();
}

function submitForm() {
var list = document.form.list;
var theList = "?";
// start with a "?" to make it look like a real query-string
for (i = 0; i <= list.options.length-1; i++) { 
theList += "list" + list.options[i].value + "=" + list.options[i].text;
// a "&" only BETWEEN the items, so not at the end
if (i != list.options.length-1) theList += "&";
}
location.href = document.form.action + theList;
}


function ChangeZeroHide(param,row, rule)
{
	param = parseInt(param);
	switch (param)
	{
		case 0:
		{
      hideChildren(document.all( row ), false, true);
			break;
		}
		default:
		{
			showChildren(document.all( row ), false, true);
			break;
		}
	}
}

function ChangeZeroShow(param,row,rule)
{
	param = parseInt(param);
	switch (param)
	{
		case 0:
		{
			showChildren(document.all( row ), false, true);
			break;
		}
		default:
		{
			hideChildren(document.all( row ), false, true);
			break;
		}
	}
}


function orderUp()
{
	var order = document.getElementById('Order');
	var master = order.selectedIndex;
	if (master < 1)
		return;
	else
		order.options[master].swapNode(order.options[master - 1]);
}

function orderDown()
{
	var order = document.getElementById('Order');
	var master = order.selectedIndex;
	if (master + 1 == order.length)
		return;
	else
		order.options[master].swapNode(order.options[master + 1]);
}

function orderSubmit()
{
	var order = document.getElementById('Order');
	if (order.options.length)
	{
		var stack = new Array();
		for (var i = 0; i < order.options.length; i++)
			stack[i] = order.options[i].value+'='+i;
	
		document.getElementById('OrderSet').value = stack.join(',');
		return true;
	}
	return false;
}
function orderByKey()
{
	var order = document.getElementById('Order');
	var master = order.selectedIndex;
	if (master < 0)
		return;
	
	var option = document.createElement('OPTION');
	var value = order.options[master].value;
	var text = order.options[master].innerText;
	var target = 0;
	
	switch (event.keyCode)
	{
		// PgUp
		case 33:
		{
			target = master - 10;
			break;
		}
		// PgDown
		case 34:
		{
			target = master + 10;
			break;
		}
		// Up
		case 38:
		{
			target = master - 1;
			break;
		}
		// Down
		case 40:
		{
			target = master + 1;
			break;
		}
		// Home
		case 36:
		{
			target = 0;
			break;
		}
		// End
		case 35:
		{
			target = order.options.length - 1;
			break;
		}
		default:
		{
			return;
		}
	}

	if (target > order.options.length - 1)
		target = order.options.length - 1;
	else if (target < 0)
		target = 0;
	
	order.options.remove(master);
	order.options.add(option, target);
	option.value = value;
	option.innerText = text;
	order.selectedIndex = target;
	event.cancelBubble = true;
	event.returnValue = false;
	return false;
}

function roundTo(number, spaces)
{
	var number = number;
	var spaces = parseInt(spaces) ? parseInt(spaces) : 1;
	var divider = Math.pow(10, spaces);

	return Math.round(number * divider) / divider;
}

function check_all_items(max){
  var checked = 1;
  
  for (i = 0; i < max; i++){
    if(document.getElementById('order_items'+i).checked == ""){
      checked = 0;
      break;
    }
  }
  
  if(checked == 0){
  for (i = 0; i < max; i++)
  document.getElementById('order_items'+i).checked = "x";
  }else{
  for (i = 0; i < max; i++)
  document.getElementById('order_items'+i).checked = "";
  }
}

