if(navigator.appName=="Netscape" && document.getElementById) ns=true;
else ns=false;



//*******************************************************
//dopuszczalne wpisy do ID taga INPUT
//*******************************************************

//NNULL	- niedopuszczalne ppozostawienie pustego pola
//NUM	- tylko liczby
//MIN	- min ilosc znakow (np. MIN3;) razem z ";", bezpośrednio przed polem name
//MAX	- min ilosc znakow (np. MAX3;) razem z ";", bezpośrednio przed polem name

//ZIP	- pole typu kod pocztowy
//NIP	- pole typu NIP
//EMAIL	- pole typu email
//PHONE	- pole typu telefon
//

//name	- nazwa pola do wyswietlenia, zawsze na koncu
//!!!! w NS konieczne puste onKeypress="" w ramach taga INPUT

//*******************************************************
//konstruktor obiektu drzewa
//*******************************************************
//fobj - obiekt formularza, fun - zewn. funkcja obslugi wysylania formularza
var sendFormChecker;
function formChecker(fobj, fun)	
{	
	this.form=fobj;
	
	sendFormChecker=fun; 
	this.form.onsubmit=chkNull;

	for(i=0; i<this.form.length; i++)
		this.form[i].onkeypress=chkEl;
}

//*******************************************************
//*******************************************************

function chkEl(e)
{	
	var keyC=ns?e.which:event.keyCode;
	obj=ns?e.currentTarget:event.srcElement;
	str=obj.value;

	num=obj.id.indexOf("NUM")!=-1?true:false;
	max=obj.id.indexOf("MAX")!=-1?true:false;

	if(max)
	{	start=obj.id.indexOf("MAX")+3;
		end=obj.id.lastIndexOf(",")-3;
		max_l=obj.id.substr(start,end);
		
		if(str.length>=max_l && keyC!=0) //max
		{	obj.value=str.substr(0,max_l);
			return false;
		}
	}

	if(num)	//numeric
	{	
		if(keyC==46)
		{	if(str.indexOf(".")!=-1)	return false;
			else
				if(str.length>0)		return true;
		}

		if((keyC>=48 && keyC<58) ||	keyC==0)
			return true;
	}
	else	//pozostale
		return true;

	return false;	
}

function Trim(str)
{
	var s_sp=/^\s+/;
	var e_sp=/ *\s$/;

	str=str.replace(s_sp,"");
	str=str.replace(e_sp,"");
	
	return str;
}
       
function isPhone(str)
{
	var alph=/[^\d \s \- \+ \( \) \\ \/ \.]/gi;

	if(alph.test(str) || str.length<7)	return 0;
	else								return 1;
}

function isEmail(str)
{
	var mail_format = /^[a-zA-Z0-9-_.]+\@[a-zA-Z0-9-_.]+\.[a-zA-Z0-9-_.]+/;

	if(mail_format.test(str))	return 1;
	else						return 0;
}	

function isZip(str)
{
	var zip_format = /^\d\d\-\d\d\d$/;

	if(zip_format.test(str))	return 1;
	else						return 0;
}	

function isNIP(str)
{
	var zip_format = /^\d{1,3}\-\d{1,3}\-\d{1,3}\-\d{1,3}$/;

	if(zip_format.test(str))	return 1;
	else						return 0;
}


function chkNull()
{	
	var v_str	= "";
	var f_name	= "";
	for(i=0; i<this.length; i++)
		//if((this.lz.checked == false) || (this[i].name == "nazwa"))
	{
		v_str	= Trim(this[i].value);
		f_name	= this[i].id.substr(this[i].id.lastIndexOf(";")+1);

		if(this[i].id.indexOf("NNULL")!=-1 && v_str=="")
		{	alert("Pole \""+f_name+"\" nie może pozostać puste !");
			return false;
		}

		if(this[i].id.indexOf("MIN")!=-1 && v_str.length>0)
		{	start=this[i].id.indexOf("MIN")+3;
			end=this[i].id.indexOf(";",start);
			if(eval(this[i].id.substring(start,end))>v_str.length)
			{	alert("Za mało znaków w polu \""+f_name+"\" !");
				return false;
			}
		}

		if(this[i].id.indexOf("MAX")!=-1 && this[i].value.length>0)
		{	start=this[i].id.indexOf("MAX")+3;
			end=this[i].id.lastIndexOf(";")-3;
			max_l=this[i].id.substr(start,end);
			this[i].value=v_str.substr(0,max_l);
		}		

		if(this[i].id.indexOf("PHONE")!=-1 && v_str!="")
		{	if(isPhone(v_str)==0) 
			{	alert("Podaj poprawny numer telefonu w polu \""+f_name+"\" !");
				return false;
			}
		}
		
		if(this[i].id.indexOf("PHONE_M")!=-1)
		{	if(isPhone(v_str)==0) 
			{	alert("Podaj poprawny numer telefonu w polu \""+f_name+"\" !");
				return false;
			}
		}  

		if(this[i].id.indexOf("EMAIL")!=-1 && v_str!="")
		{	if(isEmail(v_str)==0) 
			{	alert("Adres podany w polu \""+f_name+"\" nie jest poprawny !");
				return false;
			}
		} 
		
		if(this[i].id.indexOf("EMAIL_M")!=-1)
		{	if(isEmail(v_str)==0) 
			{	alert("Adres podany w polu \""+f_name+"\" nie jest poprawny !");
				return false;
			}
		} 

		if(this[i].id.indexOf("ZIP")!=-1)
		{	if(isZip(v_str)==0) 
			{	alert("Nieprawidłowo wypełnione pole \""+f_name+"\" !");
				return false;
			}
		}
		
		if(this[i].disabled==false && this[i].id.indexOf("NIP")!=-1)
		{	if(v_str=="")
			{	alert("Pole \""+f_name+"\" nie może pozostać puste !");
		    	return false;
			}
			if(isNIP(v_str)==0) 
			{	alert("Nieprawidłowo wypełnione pole \""+f_name+"\" !");
		    	return false;
			}
			
		}
		var squot=/'/gi;

		//v_str=v_str.replace(squot,"''");

		this[i].value=v_str;
		
	}
	
	sendFormChecker();
}

