var lastChkEl = "";

function MM_preloadImages() {
  var d=document; if(d.images){ if(!d.MM_p) d.MM_p=new Array();
    var i,j=d.MM_p.length,a=MM_preloadImages.arguments; for(i=0; i<a.length; i++)
    if (a[i].indexOf("#")!=0){ d.MM_p[j]=new Image; d.MM_p[j++].src=a[i];}}
}

function MM_swapImgRestore() {
  var i,x,a=document.MM_sr; for(i=0;a&&i<a.length&&(x=a[i])&&x.oSrc;i++) x.src=x.oSrc;
}

function MM_findObj(n, d) {
  var p,i,x;  if(!d) d=document; if((p=n.indexOf("?"))>0&&parent.frames.length) {
    d=parent.frames[n.substring(p+1)].document; n=n.substring(0,p);}
  if(!(x=d[n])&&d.all) x=d.all[n]; for (i=0;!x&&i<d.forms.length;i++) x=d.forms[i][n];
  for(i=0;!x&&d.layers&&i<d.layers.length;i++) x=MM_findObj(n,d.layers[i].document);
  if(!x && document.getElementById) x=document.getElementById(n); return x;
}

function MM_swapImage() {
  var i,j=0,x,a=MM_swapImage.arguments; document.MM_sr=new Array; for(i=0;i<(a.length-2);i+=3)
   if ((x=MM_findObj(a[i]))!=null){document.MM_sr[j++]=x; if(!x.oSrc) x.oSrc=x.src; x.src=a[i+2];}
}

MM_preloadImages("/images/objednat2.jpg", "/images/kontakt2.jpg", "/images/otazky2.jpg");

function setOnSubmit() {
	for (var a = 0, frm = document.forms, aLen = frm.length; a < aLen; a++) {
		frm[a].onsubmit = valFrm;
	}
}

function valFrm() {
  errNote = "";
	for (var curEl, frm = this.elements, a = 0, aLen = frm.length; a < aLen; a++) {
		curEl = frm[a]; 
    curElClass = curEl.className;
		if (curElClass != "") { checkFld(frm, curElClass.split(" "), curEl); }
	}
  lastChkEl = "";
  var ref = this.elements["afterCheck"];
  if (ref) {
    eval("errNote += " + ref.value + "();"); 
  }
	if (errNote == "") { return true;	}
	else { window.alert(errNote); return false; }
}

function checkFld(frm, rls, fld) {
	for (var curRule, curLen, a = 0, aLen = rls.length; a < aLen; a++) {
		curRule = rls[a];
		switch (curRule) {
			case "el_required": {
				switch (fld.type) {
					case "textarea": case "text": case "password":  {
						if (fld.value == "") { errNote += "Pole: " + fld.title + " je potrebné vyplniť\n"; return; }
						break;
					}
					case "radio": {
						if (fld.name != lastChkEl) {
							lastChkEl = fld.name;
							for (var elChecked = false, p = 0, pLen = frm.length; p < pLen; p++) {
								curEl = frm[p];
								if (curEl.type == "radio" && curEl.name == fld.name && curEl.checked) { elChecked = true; }
							}
							if (!elChecked) { errNote += "V poli: " + fld.title + " je potrebné zaškrtnúť jednu z možností\n"; return; }
						}
						break;
					}
          case "checkbox": {
  					if (!fld.checked) { errNote += "Pole: " + fld.title + " je potrebné zaškrtnúť\n"; return; }
  					break;
          }
					case "select-one": {
						if (fld.options.selectedIndex == 0) {	errNote += "Z poľa: " + fld.title + " je potrebné si vybrať jednu možnosť\n";	return;	}
						break;
					}
         case "select-multiple": {
						if (fld.options.selectedIndex == -1) { errNote += "Z poľa: " + fld.title + " je potrebné si vybrať min. jednu možnosť\n"; return; }
						break;
					}
				}
				break;
			}
			case "el_digit": {
				switch (fld.type) {
					case "text": case "password": case "textarea": {
						var fldVal = fld.value;
						if (!isDigit(fldVal)) { errNote += "V poli: " + fld.title + " sa môžu vyskytovať iba číslice\n"; return; }
						break;
					}
				}
				break;
			}
			case "el_natural": {
				switch (fld.type) {
					case "textarea": case "text": case "password": {
						var fldVal = fld.value;
						if (isNaN(fldVal) || !isInt(fldVal) || fldVal < 1) { errNote += "Do poľa: " + fld.title + " je potrebné zadať prirodzené číslo\n"; return; }
						break;
					}
				}
				break;
			}
			case "el_float": {
				switch (fld.type) {
					case "textarea": case "text": case "password": {
						fld.value = replaceComma(fld.value);
						if (isNaN(fld.value) || !isFloat(fld.value)) { errNote += "Do poľa: " + fld.title + " je potrebné zadať reálne číslo\n"; return; }
						break;
					}
				}
				break;
			}
			case "el_email": {
				switch (fld.type) {
					case "textarea": case "text": case "password": {
						var fldVal = fld.value;
						if (!isEmail(fldVal)) { errNote += "V poli: " + fld.title + " je zadaná neplatná e-mailová adresa\n"; return; }
						break;
					}
				}
				break;
			}
			default: {
				if (curRule.indexOf("_min") > 0) {
					curLen = curRule.substr(6);
					if (fld.value.length < curLen) { errNote += "Min. povolený počet znakov v poli: " + fld.title + " je " + curLen + "\n"; return; }
				}
				else {
					if (curRule.indexOf("_max") > 0) {
						curLen = curRule.substr(6);
						if (fld.value.length > curLen) { errNote += "Max. povolený počet znakov v poli: " + fld.title + " je " + curLen + "\n"; return; }
					}
				}
				break;
			}
		}
	}
}

function replaceComma(n) {
  return n.replace(/,/gi, ".");
}

function isDigit(n) {
	for (var a = 0, aLen = n.length; a < aLen; a++) {
		if (isNaN( n.charAt(a))) { return false; }
	}
	return true;
}

function isInt(n) {
	var o = parseInt(n, 10);
	if (isNaN(o)) { return false; }
  else { return n == o && n.toString() == o.toString(); }
}

function isFloat(n) {
	var o = parseFloat(n);
	if (isNaN(o)) { return false; }
  else { return n == o && n.toString() == o.toString(); }
}

function isEmail(eml) {
  return /^[_a-zA-Z0-9-]+(\.[_a-zA-Z0-9-]+)*@[a-zA-Z0-9-]+(\.[a-zA-Z0-9-]+)*(\.[a-zA-Z]{2,3})$/.test(eml);
}

window.onload = setOnSubmit;

