function isEmailAddr(email)
{
    var result = false;
    var theStr = new String(email);
    var index = theStr.indexOf("@");
    if (index > 0)
    {
        var pindex = theStr.indexOf(".",index);
        if ((pindex > index+1) && (theStr.length > pindex+1))
        result = true;
    }
    return result;
}

function validRequired(formField,fieldLabel)
{
    var result = true;
    
    if (formField.value == "")
    {
        alert('Proszę wpisać wartość w pole: "' + fieldLabel +'"');
        formField.focus();
        result = false;
    }
    
    return result;
}

function allDigits(str)
{
    return inValidCharSet(str,"0123456789");
}

function allDigitsPoint(str)
{
    return inValidCharSet(str,"0123456789.");
}

function allDigitsComa(str)
{
    return inValidCharSet(str,"0123456789,");
}

function inValidCharSet(str,charset)
{
    var result = true;

    // Note: doesn't use regular expressions to avoid early Mac browser bugs    
    for (var i=0;i<str.length;i++)
        if (charset.indexOf(str.substr(i,1))<0)
        {
            result = false;
            break;
        }
    
    return result;
}

function validEmail(formField,fieldLabel,required)
{
    var result = true;
    
    if (required && !validRequired(formField,fieldLabel))
        result = false;

    if (result && formField.value && ((formField.value.length < 3) || !isEmailAddr(formField.value)) )
    {
        alert("Proszę wpisać prawidłowy email: yourname@yourdomain.com");
        formField.focus();
        result = false;
    }
   
  return result;

}

function validNum(formField,fieldLabel,required)
{
    var result = true;

    if (required && !validRequired(formField,fieldLabel))
        result = false;
  
    if (result)
    {
        if (!allDigits(formField.value))
        {
            alert('Proszę wprowadzić prawidłową liczbę do pola "' + fieldLabel +'".');
            formField.focus();        
            result = false;
        }
    } 
    
    return result;
}

function validDecimal(formField,fieldLabel,required)
{
    var result = true;

    if (required && !validRequired(formField,fieldLabel))
        result = false;
  
    if (result)
    {
        if (!allDigitsComa(formField.value))
        {
            alert('Proszę wprowadzić prawidłową liczbę (format: 9,99) do pola "' + fieldLabel +'".');
            formField.focus();        
            result = false;
        }
    } 
    
    return result;
}

function validInt(formField,fieldLabel,required)
{
    var result = true;

    if (required && !validRequired(formField,fieldLabel))
        result = false;
  
     if (result)
     {
         var num = parseInt(formField.value);
         if (isNaN(num))
         {
             alert('Proszę wprowadzić prawidłową liczbę do pola "' + fieldLabel +'".');
            formField.focus();        
            result = false;
        }
    } 
    
    return result;
}

function validYear(formField,fieldLabel,required)
{
    var result = true;

    if (required && !validRequired(formField,fieldLabel))
        result = false;
  
    if (result && formField.value)
    {
        var num = parseInt(formField.value);
        if (isNaN(num) || num < 1901 || num > 2155)
        {
            alert('Proszę wprowadzić prawidłowy rok (1901-2155) do pola "' + fieldLabel +'".');
            formField.focus();        
            result = false;
        }
    } 
    
    return result;
}

function validYearSpan(formFieldFrom,formFieldTo,fieldLabel,required)
{
    var result = true;

    if (required && (!validRequired(formFieldFrom,fieldLabel) || !validRequired(formFieldTo,fieldLabel)))
        result = false;

    if (result)
    {
        var numFrom = parseInt(formFieldFrom.value);
        var numTo = parseInt(formFieldTo.value);
        if (numFrom > numTo)
        {
            alert('Proszę wprowadzić prawidłowy zakres lat do pola "' + fieldLabel +'".');
            formField.focus();        
            result = false;
        }
    } 
    
    return result;
}


function validDate(formField,fieldLabel,required)
{
    var result = true;

    if (required && !validRequired(formField,fieldLabel))
        result = false;
  
     if (result && formField.value)
     {
         var elems = formField.value.split("-");
         
         result = (elems.length == 3); // should be three components
         
         if (result)
         {
             var month = parseInt(elems[1], 10);
              var day = parseInt(elems[2], 10);
             var year = parseInt(elems[0], 10);
            result = allDigits(elems[1]) && (month > 0) && (month < 13) &&
                     allDigits(elems[2]) && (day > 0) && (day < 32) &&
                     allDigits(elems[0]) && ((elems[0].length == 2) || (elems[0].length == 4));
         }
         
          if (!result)
         {
             alert('Proszę wprowadzić datę w formacie rrrr-mm-dd w polu "' + fieldLabel +'".');
            formField.focus();        
        }
    } 
    
    return result;
}

function validCode(formField,fieldLabel,required)
{
    var result = true;

    if (required && !validRequired(formField,fieldLabel))
        result = false;
  
     if (result && formField.value)
     {
         var elems = formField.value.split("-");
         
         result = (elems.length == 2); // should be two components
         
         if (result)
         {
            result = allDigits(parseInt(elems[0])) && (elems[0].length == 2) &&
                              allDigits(parseInt(elems[1])) && (elems[1].length == 3);
         }
         
          if (!result)
         {
             alert('Proszę wprowadzić kod pocztowy w formacie 99-999 w polu "' + fieldLabel +'".');
            formField.focus();        
        }
    } 
    
    return result;
}

function checkNullValues(theForm, fields, human) {
    var i=0;
    var result = "";
    for (i=0; i<fields.length; i++) {
        if (!('data[' + fields[i] + ']' in theForm)) alert ('Brak: ' + 'data[' + fields[i] + ']')
        if (theForm['data[' + fields[i] + ']'].value == "") {
            result += "\n - " + human[i];
        }
    }
    if (result != "") {
        return confirm('Niewypełnione pola:' + result + "\n\nZapisać?");
    }
    
    return true;
}

<!-- Original:  Tom Khoury (twaks@yahoo.com) -->

<!-- This script and many more are available free online at -->
<!-- The JavaScript Source!! http://javascript.internet.com -->

<!-- Begin
function placeFocus() {
if (document.forms.length > 0) {
var field = document.forms[0];
for (i = 0; i < field.length; i++) {
if ((field.elements[i].type == "text") || (field.elements[i].type == "textarea") || (field.elements[i].type.toString().charAt(0) == "s")) {
document.forms[0].elements[i].focus();
break;
         }
      }
   }
}
//  End -->

function toggleBox(szDivID, iState) // 1 visible, 0 hidden
{
    if(document.layers)       //NN4+
    {
       document.layers[szDivID].visibility = iState ? "show" : "hide";
    }
    else if(document.getElementById)      //gecko(NN6) + IE 5+
    {
        var obj = document.getElementById(szDivID);
        obj.style.visibility = iState ? "visible" : "hidden";
    }
    else if(document.all)    // IE 4
    {
        document.all[szDivID].style.visibility = iState ? "visible" : "hidden";
    }
}

function Show (id) {
    //show layer
    document.getElementById(id).style.display="";
}

function Hide (id) {
    //hide layer
    document.getElementById(id).style.display="none";
}

function ShowHide (id) {
    //show layer
    if (document.getElementById(id).style.display=='none') {
        document.getElementById(id).style.display="";
        document.getElementById(id).disabled=false;
    } else {
        document.getElementById(id).style.display="none";
        document.getElementById(id).disabled=true;
    }
}

function Display (id, state) {
    //hide/show layer
    if (state) {
        document.getElementById(id).style.display="";
    } else {
        document.getElementById(id).style.display="none";
    }
}

function Disabled (id, state) {
    //disable on/off input
    document.getElementById(id).value="";
    document.getElementById(id).disabled=state;
}

function getkey(e)
{
    if (window.event)
        return window.event.keyCode;
    else if (e)
        return e.which;
    else
        return null;
}

function goodchars(e, goods)
{
    var key, keychar;
    key = getkey(e);
    if (key == null) return true;
    // get character
    keychar = String.fromCharCode(key);
    keychar = keychar.toLowerCase();
    goods = goods.toLowerCase();
    // check goodkeys
    if (goods.indexOf(keychar) != -1)
        return true;
    // control keys
    if ( key==null || key==0 || key==8 || key==9 || key==13 || key==27 )
        return true;
    // else return false
    return false;
}

