//******************************************************************************
//
//                    (c)2001 Jiří Pilný - ABAK, spol. s r.o.
//
// Skript kontroluje vyplnění INPUT polí formuláře označených atributem
// "checkempty" a syntaktickou správnost adres elektronické pošty u polí
// označených atributem "checkemail". Dají se použít i pro pole TEXTAREA
// a SELECT.
// Pokud pole nesplňuje podmínku, zobrazí hlášení, ve kterém použije pro označení
// vstupního pole popisek z prvku LABEL případně jméno pole a poté přesune kurzor
// na dané vstupní pole.
// Určeno pouze pro prohlížeče MS IE 4.0 a vyšší.
//
// Příklad použití:
// <script language="JavaScript" defer type="text/javascript"
// src="http://linux.programator.cz/skripty/checkform.js"></script>
// <form action="form2mail.php" method="post" onsubmit="return checkform(this);">
// <label for="jmeno">Jméno odesilatele</label>
// <input id="jmeno" name="jmeno" checkempty>
// <input name="mail" checkempty checkemail>
// <select name="vyber" checkempty>
//    <option value="" selected>Vyberte...</option>
//    <option value="1">První platná volba</option>
//    <option value="2">Druhá platná volba</option>
// </select>
// <textarea name="poznamky" checkempty></textarea>
// ... další pole formuláře ...
// </form>
//
//******************************************************************************

function IsMail(mail) {
	//netestuje nepřípustné znaky ani vícenásobný výskyt @.
	var zavinac, tecka;
	zavinac=mail.indexOf("@");
	tecka=mail.lastIndexOf(".");
	if ((zavinac<1) || (zavinac>(mail.length-6)) || (tecka<4) || (tecka>mail.length-3) || (tecka<mail.length-4) || (tecka<zavinac+3)) {
		return false;
	}
	else {
		return true;
	}
}
function getLabelText(elem) {
// vrátí textový popisek vstupního prvku nebo jméno prvku, pokud příslušný LABEL nenajde
	var labels;
	labels = document.all.tags("LABEL");
	// projít všechny prvky LABEL
	for (var i=0; i < labels.length; i++) {
		//otestovat, zda patří k předanému vstupnímu poli
		if (labels[i].htmlFor == elem.id) {
			return labels[i].innerText 
		}
	}
	return elem.name;
}
function checkform(formular) {
	var element, labelText;
	// jiné prohlížeče pustit dál bez kontroly
	if (navigator.appName != "Microsoft Internet Explorer" || navigator.appVersion.substring(0,1) < 4){
		return true;
	}
	//projít všechny vstupní prvky formuláře
	for (var i=0; i<formular.elements.length; i++) {
		element = formular.elements[i];
		// otestovat vyplnění polí
		if (element.getAttribute("checkempty")!= null && element.value=="") {
			// označit pole popiskem
			labelText = getLabelText(element);
			// odlišit hlášení podle typu vstupního pole
			if (element.tagName == "SELECT") {
				alert("Vyberte, prosím, ze seznamu \""+labelText+"\".");
			}
			else {
				alert("Vyplňte, prosím, pole \""+labelText+"\".");
			}
			element.focus();
			return false;
		}
		//otestovat syntaxi emailu
		if (element.getAttribute("checkemail")!= null && !IsMail(element.value)) {
			// označit pole popiskem
			labelText = getLabelText(element);
			alert("Zadaný e-mail v poli \""+labelText+"\" obsahuje chybu. Opravte ji, prosím.");
			element.focus();
			return false;
		}
	}
	return true;
}