//
// SPOLECNE FCE
//

// detekce zmeny klicovych polozek
var changed = false;

// zaznamenani zmeny klicovych polozek
function change() {
	changed = true;
}

// mohu opustit formular?
function canLeave() {
	if (changed && !confirm('Zahodit provedené změny?'))
		return false;
	else
		return true;
}

// zobrazi nebo skryte pole "<this.name>_new"
function hashChange(obj) {
	if (!document.getElementById) return;

	var opp = document.getElementById(obj.name + '_new');
	if (opp) {
		if (obj.value == -2) {
			opp.style.display = '';
			opp.select();
			opp.focus();
		}
		else
			opp.style.display = 'none';
	}
	change();
}

// prevede znaky na HTML entity
function html(str) {
	if (str)
		return str.replace(/&/g,'&amp;').replace(/</g,'&lt;').replace(/>/g,'&gt;');
	else
		return '';
}

// otevre nove okno prohlizece
function openWindow(uri, name, width, height) {
	var left = Math.round((screen.width  - width ) / 2);
	var top  = Math.round((screen.height - height) / 2);

	if (left < 0) left = 0;
	if (top  < 0) top  = 0;

	var w = window.open(
		uri,
		name,
		'width='+ width +',height='+ height +',left='+ left +',top='+ top +',resizable,scrollbars'
	);
	w.focus();
	return w;
}

// sestavi URL
// pr.: makeUrl('foo.php', {'action':'get', 'id':145})
function makeUrl(link, params) {
	var result = link;
	var sep = '?';
	for (var key in params) {
		result += sep + escape(key) +'='+ escape(params[key]);
		sep = '&';
	}
	return result;
}

// prejde na nove URL
// pr.: gotoUrl('foo.php', {'action':'get', 'id':145})
function gotoUrl(link, params) {
	var url = makeUrl(link, params);
	if (url)
		window.location = url;
}

// vyhledavani elementu podle tagu a tridy
function getElementsByClass(tagname, classname) {
	var result = new Array();
	if (document.getElementsByTagName) {
		var elements = document.getElementsByTagName(tagname);
		for (var i=0; i<elements.length; i++) {
			if (elements[i].className.match(classname))
				result.push(elements[i]);
		}
	}
	return result;
}

// prevede cesky integer na normalni integer
function czToInt(str) {
	return parseInt(str.replace(/\s/g,''));
}

// prevede cesky float na normalni float
function czToFloat(str) {
	return parseFloat(str.replace(/\s/g,'').replace(/,/,'.'));
}

// zaokrouhleni realneho cisla
function roundFloat(num, decimals) {
	if (isNaN(num))
		return NaN;

	num*= Math.pow(10, decimals);
	num = Math.round(num);
	num/= Math.pow(10, decimals);
	return num;
}

// formatuje realne cislo
function numberFormat(num, decimals, de_sep, th_sep) {
	if (isNaN(num))
		return NaN;

	num = roundFloat(num, decimals);

	var a = String(num).split('.');
	var n = a[0];

	var d = '';
	if (a.length > 1)
		d = a[1];

	var re = /(\d+)(\d{3})/;
	while (re.test(n)) {
		n = n.replace(re,'$1'+ th_sep +'$2');
	}
	for (var i=d.length; i<decimals; i++) {
		d += '0';
	}
	if (d.length > 0)
		n += de_sep;
	return n + d;
}

// prevede realne cislo na peneze
function floatToMoney(num) {
	return numberFormat(num, 0,',',' ');
}

// hleda polozku selectu
function getOption(select, id) {
	var result = null;
	for (var i=0; i<select.options.length; i++) {
		if (select.options[i].value == id) {
			result = select.options[i];
			break;
		}
	}
	return result;
}

// prida polozku do selectu
function addOption(select, before, id, text) {
	var option = document.createElement('option');
	option.value = id;
	option.appendChild(document.createTextNode(text));
	if (before)
		select.insertBefore(option, before);
	else
		select.appendChild(option);
}

