    var email_regex = /^((\"[^\"\f\n\r\t\v\b]+\")|([\w\!\#\$\%\&'\*\+\-\~\/\^\`\|\{\}]+(\.[\w\!\#\$\%\&'\*\+\-\~\/\^\`\|\{\}]+)*))@((\[(((25[0-5])|(2[0-4][0-9])|([0-1]?[0-9]?[0-9]))\.((25[0-5])|(2[0-4][0-9])|([0-1]?[0-9]?[0-9]))\.((25[0-5])|(2[0-4][0-9])|([0-1]?[0-9]?[0-9]))\.((25[0-5])|(2[0-4][0-9])|([0-1]?[0-9]?[0-9])))\])|(((25[0-5])|(2[0-4][0-9])|([0-1]?[0-9]?[0-9]))\.((25[0-5])|(2[0-4][0-9])|([0-1]?[0-9]?[0-9]))\.((25[0-5])|(2[0-4][0-9])|([0-1]?[0-9]?[0-9]))\.((25[0-5])|(2[0-4][0-9])|([0-1]?[0-9]?[0-9])))|((([A-Za-z0-9\-])+\.)+[A-Za-z\-]+))$/;
    var login_regex = /^[a-zA-Z0-9_]+$/;
    var word_regex = /^[a-zA-Z±æê³ñó¶¼¿¡ÆÊ£ÑÓ¦¬¯]+$/;
    var postcode_regex = /^(([0-9]{2}-[0-9]{3})|([0-9]{5}))$/;
    var phone_regex = /^[0-9- ()]+$/;
    var nip_regex = /^(([0-9]{3}-[0-9]{3}-[0-9]{2}-[0-9]{2})|([0-9]{3}-[0-9]{2}-[0-9]{2}-[0-9]{3})|([0-9]{10}))$/;
    
    function checkForm(form, fields) {
	var kom = '';	
	var value = '';

	for (i = 0; i < fields.length; i++) {
	    value = form.elements[fields[i][0]].value
	    if (fields[i][1] && value == '') {
		kom = kom + "Puste pole " + fields[i][3] + "\n";
	    }
	    if (value != '') {
		switch (fields[i][2]) {
		    case 'word' :
			if (!word_regex.test(value))
    			    kom = kom + "Niepoprawne pole " + fields[i][3] + "\n";	    
    			break;
		    case 'login' :
			if (!login_regex.test(value))
//    			    kom = kom + "Niepoprawne pole " + fields[i][3] + "\n";	    
    			    kom = kom + "Podales bledny identyfikator. Sprobuj jeszcze raz." + "\n";	    
    			break;
		    case 'password' :
			if (value.length < 1)
    			    kom = kom + "Niepoprawne pole " + fields[i][3] + "\n";	    
    			break;
		    case 'email' :
			if (!email_regex.test(value))
    			    kom = kom + "Niepoprawne pole " + fields[i][3] + "\n";	    
    			break;			
		    case 'postcode' :
			if (!postcode_regex.test(value))
    			    kom = kom + "Niepoprawne pole " + fields[i][3] + "\n";	    
    			break;			
		    case 'phone' :
			if (!phone_regex.test(value))
    			    kom = kom + "Niepoprawne pole " + fields[i][3] + "\n";	    
    			break;			
		    case 'nip' :
			if (!nip_regex.test(value))
    			    kom = kom + "Niepoprawne pole " + fields[i][3] + "\n";	    
    			break;
		    case 'checkbox' :
			if (fields[i][1] && !form.elements[fields[i][0]].checked)
    			    kom = kom + fields[i][3] + "\n";	    
    			break;	
		    case 'radio' :
				el = form.elements[fields[i][0]];
				found = false;
				for (k = 0; k < el.length; k++) {
					if (el[k].checked) {
						found = true;
					}
				}
				if (!found)
				{
    			    kom = kom + fields[i][3] + "\n";	    
				}
    			break;	
		    case 'select' :
				el = form.elements[fields[i][0]];
				found = false;
				for (k = 0; k < el.length; k++) {
					if (el[k].selected) {
						found = true;
					}
				}
				if (!found)
				{
    			    kom = kom + fields[i][3] + "\n";	    
				}
    			break;	
		    case 'any' :
			break;
		    default:
			kom = kom + "Nieznany typ pola " + fields[i][3] + "(" + fields[i][2] + ")\n";
		}
	    }
	}	    
	if (kom != '') {
	    kom = 'UWAGA!\n'+kom;
	    alert(kom);
	    return false;
	}
	return true;
    }
