var backgr;  // polopruhledny div, ktery zastini stranku
var foregr;  // div, do ktereho AJAXem nacitame obsah
var xhr = new XMLHttpRequest();

// na zacatku ziskame ref na polopruhledne pozadi a cilovy div 
window.onload = function() {
	backgr = document.getElementById('ajax_bg');
	foregr = document.getElementById('ajax_target');
}


// vyvola na popredi div, do ktereho nacte formular ze skriptu akce
// typicke pouziti pro editaci ciselniku a vazby na typ moto u rizomy
function ajax_akce(url) {
	backgr.style.visibility = 'visible';
	foregr.style.visibility = 'visible';

	xhr.open('GET', '/admin/akce.php?ajax=1&' + url, true);
	xhr.onreadystatechange = function() {
		if (xhr.readyState == 4) {
			foregr.innerHTML = xhr.responseText;
			foregr.value = xhr.responseText;

			// v pripade chyby hodime hlasku a skryjeme okno
			if (xhr.status != 200) {
				alert(xhr.getAllResponseHeaders());
				ajax_hide();
			}
		}
	}
	xhr.send(null);
}

// odeslani POST pozadavku
// pridani kategorie nebo typu vyrobku
function ajax_post() {
	xhr.open('POST', '/admin/akce.php?ajax=1', true);
	xhr.setRequestHeader("Content-Type", "application/x-www-form-urlencoded; charset=windows-1250");
	xhr.setRequestHeader("Connection", "close");
	frm = document.getElementById('ajax_form');

	// po uspesnem splneni pozadavku obnovime seznam zalozek
	xhr.onreadystatechange = function() {
		if (xhr.readyState == 4) {
			if (xhr.status != 200) alert('AJAX POST: Problém s uložením do databáze!');
			else {
				ajax_get_html('/admin/akce.php?ajax=1&get_select=1&table=' + frm.table.value, document.getElementById(frm.table.value));
				ajax_hide();
			}
		}
	}
	xhr.send('action=add&table=' + frm.table.value + '&nazev=' + frm.nazev.value.toUpperCase());
}

// odeslani POST pozadavku, formular se musi jmenovat ajax_form
// po odeslani nacteme adresu get_url do elementu s id target
function ajax_post_form(get_url, target) {
	xhr.open('POST', '/admin/akce.php?ajax=1', true);
	xhr.setRequestHeader("Content-Type", "application/x-www-form-urlencoded; charset=windows-1250");
	xhr.setRequestHeader("Connection", "close");

	elements = document.getElementById('ajax_form').elements;
	content = [];

	// naparsujeme obsah formulare do tvaru pole=hodnota
	for (var i=0; i < elements.length; i++) {
		if (elements[i].attributes.name && elements[i].attributes.name.specified && !elements[i].disabled) {
			if (/^(select)$/i.test(elements[i].tagName)) {
				var options = elements[i].options;
				for (var j=0; j < options.length; j++) {
					if (options[j].selected) {
						var value = (options[j].attributes.value && options[j].attributes.value.specified ? options[j].value : options[j].text);
						content.push(encodeURIComponent(elements[i].name) + '=' + encodeURIComponent(value));
					}
				}
			}
			else if (!/^(submit|reset|button|file|image)$/i.test(elements[i].type) && (!/^(radio|checkbox)$/i.test(elements[i].type) || elements[i].checked)) {
				content.push(encodeURIComponent(elements[i].name) + '=' + encodeURIComponent(elements[i].value));
			}
		}
	}
	// alert(content.join('&'));

	// po uspesnem splneni pozadavku obnovime seznam zalozek
	xhr.onreadystatechange = function() {
		if (xhr.readyState == 4) {
			if (xhr.status != 200) alert('AJAX POST: Problém s uložením do databáze!');
			else {
				// alert(xhr.responseText);
				ajax_get_html(get_url, document.getElementById(target));
				ajax_hide();
			}
		}
	}
	xhr.send(content.join('&'));
}

// nacteni jedne hodnoty do inputu udaneho parametrem target
// uziva se ve spojeni s ajax_post_input
function ajax_get_input(url, target) {
	xhr.open('GET', url, true);

	xhr.onreadystatechange = function() {
		if (xhr.readyState == 4) {
			if (xhr.status != 200) alert(xhr.getAllResponseHeaders());
			else target.value = xhr.responseText;
		}
	}
	xhr.send(null);
}

// mj. nacteni options do selectu udaneho parametrem target
// uziva se ve spojeni s ajax_edit_select
function ajax_get_html(url, target) {
	var xhr = new XMLHttpRequest();
	xhr.open('GET', url, true);

	xhr.onreadystatechange = function() {
		if (xhr.readyState == 4) {
			if (xhr.status != 200) alert(xhr.getAllResponseHeaders());
			else target.innerHTML = xhr.responseText;
		}
	}
	xhr.send(null);
}

// ulozeni jednoho inputu prostrednictvim skriptu akce.php
// prvni argument je odkaz na input, ktery tuto funkci zavolal (po ulozeni se reloadne)
function ajax_post_input(caller, table, col, id) {
	xhr.open('POST', '/admin/akce.php?ajax=1&edit=' + id + '&table=' + table, true);
	xhr.setRequestHeader("Content-Type", "application/x-www-form-urlencoded; charset=windows-1250");
	xhr.setRequestHeader("Connection", "close");

	// po uspesnem splneni pozadavku zobrazime ikonku a reloadneme novou hodnotu
	xhr.onreadystatechange = function() {
		if (xhr.readyState == 4) {
			if (xhr.status != 200) alert('AJAX POST: Problém s uložením do databáze!');
			else {
				ajax_get_input('/admin/akce.php?ajax=1&table=' + table + '&col=' + col + '&get=' + id, caller);
				caller.parentNode.style.backgroundImage = 'url(/img/ikony/check.gif)';
			}
		}
	}
	xhr.send(col + '=' + caller.value);
}

// mazani z DB
// vyuziva funkce ajax_get_html, parametry jsou tabulka, ID radku, URL pro nacteni po smazani a cilovy element
function ajax_del(table, row, load_after, target) {
	xhr.open('GET', '/admin/akce.php?ajax=1&table=' + table + '&del=' + row, true);

	xhr.onreadystatechange = function() {
		if (xhr.readyState == 4) {
			if (xhr.status != 200) alert(xhr.getAllResponseHeaders());
			else ajax_get_html(load_after, target);
		}
	}
	xhr.send(null);
} 

// skryje AJAXove divy
function ajax_hide() {
	foregr.style.visibility = 'hidden';
	backgr.style.visibility = 'hidden';
	foregr.innerHTML = '';
} 

