function MM_findObj(n, d) { //v4.0
  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 stripLeads(aString) {
                        var c = 0;
                        if (aString.charAt(0) == ".") { c++; var negative = true; }
                        while ((c < aString.length) && (aString.charAt(c) == '0')) c++;
                        return((negative ? "." : "") + aString.substring(c, aString.length));
                }

                function isInteger(aNumber) {
                        return (stripLeads(aNumber) == stripLeads("" + parseInt(aNumber, 10)));
                }

                function checkChar(aChar) {
                        return ((aChar < "0") || (aChar > "9"));
                }

                function findNext(aStr, Idx) {
                        while ((Idx <= aStr.length) && (!checkChar(aStr.charAt(Idx)))) Idx++;
                        return (Idx <= aStr.length ? Idx : aStr.length+1);
                }

                function findPart(aString, Which) {
                        Which--;
                        var C = 0;
                        while ((Which > 0) && (C <= aString.length)) {
                                C = findNext(aString, C) + 1;
                                Which--;
                        }
                        if (C > aString.length)
                            return "";
                        else
                            return aString.substring(C,findNext(aString, C));
                }

function MM_validateForm() { //v4.0
var i,p,q,nm,test,num,min,max,errors="",args=MM_validateForm.arguments;
for (i=0; i<(args.length-2); i+=3) {
  test=args[i+2];
  val=MM_findObj(args[i]);

  if (val) {
    nm=val.name;
    if ((val=val.value)!="") {
      if (test.indexOf("isEmail")!=-1) {
          p=val.indexOf("@");
          if (p<1 || p==(val.length-1)) errors+="- \'"+nm+"\' musi zawierać adres e-mail.\n";
      } else if (test!="R") {

      if (test=="N" && val.indexOf(',')!=-1) {
         val = val.substring( 0, val.indexOf(',')) + '.' + val.substring( val.indexOf(',')+1, val.length);
         MM_findObj(args[i]).value = val;
      }

        if (isNaN(val) && test=="N") errors+="- \'"+nm+"\' musi zawierać liczbę.\n";

        if (test.indexOf("inRange") != -1) {
          p=test.indexOf(":");
          min=test.substring(8,p);
          max=test.substring(p+1);
          if (parseInt(val)<min || max<parseInt(val)) errors+="- \'"+nm+"\' musi zawierać liczbę pomiędzy "+min+" a "+max+".\n";
        } else if (test=="D") {

            n = 0;
            jesterror = false;
            while (n < val.length) {
              if (isNaN(val.substring(n,n+1)) && val.substring(n,n+1)!=".") jesterror = true;
              n++;
            }
            if (jesterror) {
               errors+="- Pole Data urodzin dziecka musi zawierać cyfry\n oddzielone kropkami (np: 25.12.2002).\n";
            } else {

               var day = findPart( val, 1);
               var month = findPart( val, 2);
               var year = findPart( val, 3);

               if (isInteger(day) && isInteger(month) && isInteger(year)) {
                   var theDay = new Date( year+"/"+month+"/"+day);
                   if (day != theDay.getDate()) errors+="- \'"+nm+"\' zła ilość dni w miesiącu.\n";
                   if (month > 12) errors+="- \'"+nm+"\' Ľle podany miesiąc (maks. 12).\n";
                   if (year < 1900 || year > 2100) errors+="- \'"+nm+"\' Ľle podany rok (min. 1900, maks. 2100).\n";
               } else {
                   errors+="- \'"+nm+"\' zły format daty (dd.mm.yyyy).\n";
               }
            }
        }
      }
    } else if (test!="D" && test!="N" && test!="isEmail") errors += "- \'"+nm+"\' jest niewypełnione.\n";
  }
 } if (errors) alert("Wystąpiły następujące błędy:\n"+errors);
 document.MM_returnValue = (errors == "");
}