<!--

function checkForm(fname, action)
{
	this.add = checkForm_add_field;
	this.msg = checkForm_message;
	this.send = checkForm_send;
	this.validate = checkForm_validate_fld;
	this.blink_fld = checkForm_blink_field;
	this.deleteAll =checkForm_clear_fields;
	this.add_list = checkForm_addFromList;
	//end functions

	this.regxpObj = new Array();
	this.regxpObj["int"] = /^[0-9]+$/i;
	this.regxpObj["float"] = /^[0-9\.]+$/i;
	this.regxpObj["date"] = /^[0-9]{4}\-[0-9]{2}\-[0-9]{2}$/i;
	this.regxpObj["time"] = /^[0-9]{2}\-[0-9]{2}\-[0-9]?$/i;
	this.regxpObj["date_time"] = /^[0-9]{4}\-[0-9]{2}\-[0-9]{2}\ [0-9]{2}\:[0-9]{2}\:[0-9]{2}$/i;
	this.regxpObj["post_code"] = /^[0-9]{2}\-[0-9]{3}$/i;
	this.regxpObj["phone"] = /^[0-9 \(\)\.\-wewn\/]{6}$/i;
	this.regxpObj["www"] = /^(http:\/\/)?www[0-9_a-z._-]+\.[a-z]{2,3}([\/0-9_a-z\.]{1,})?(\/?.*)?$/i;
	this.regxpObj["email"] = /^[0-9_a-z.-]+(@|\(at\))+[0-9_a-z._-]+\.[a-z]{2,3}$/i;
	this.regxpObj["price"] = /^[0-9]{1,}([\.]{1})?([0-9]{2})?$/i;
	this.regxpObj["max_9"] = /^[0-9]{1}$/i;



	action = ''+action;
	this.fObj = document.forms[fname];
	this.oldAction = this.fObj.action;
	this.action = (action.length == 0 || action == "undefined")? "index.php" : action ;
	this.ok = true;
	this.defaultBorderStyle = "1 solid #666666";
	this.selectBorderStyle = "1 solid #FF0000";
	this.formName = fname;
	this.box = new Array();
	this.msg_function = message;//display_message;
	this.is_prompt = false;
	this.messages =
	{
		"no_fld" : "Brak pola formularza o podanej nazwie (%1) .",
		"no_type" : "Nieznany typ (%1) zmiennej w formularzu o nazwie (%2).",
		"empty_hdn" : "Pole ukryte (%1) ma zerową wartość.",
		"no_value" : "Pole (%1) nie ma wpisanej wartości.",
		"no_option" : "Pole (%1) nie ma wybranej żadnej z opcji.",
		"no_between" : "Wartoć pola (%1) powinna zawierać się pomiędzy (%2) a (%3).",
		"bad_fill" : "Pole (%1) zostało błędnie wypełnione.",
		"to_short" : "Pole (%1) powinno być wypełnione conajmniej (%2) znakami.",
		"to_small_sel" : "Pole (%1) powinno mieć zaznaczone conajmniej (%2) opcje.",
		"send" : "Czy napewno wysłać formularz ?",
		"err" : "Formularz nie może zostać wysłany z powodu uprzednich błędów."
	};
}
//- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

function checkForm_add_field(n, t, d, r, m)
{
	var i = this.box.length;
	var tmp;
	var tmp_r;
	var j;

	if(this.ok)
	{
		var tmp = this.fObj.elements[n];

		if(tmp == null || ''+tmp == "undefined" || ''+tmp.length == 0)
		{
			this.msg("no_fld", n);
			this.ok = false;
		}
		else
		{
			for(j=0; j<i; j++)
			{
				if(''+this.box[j]["name"] == n)
				{
					i = j;
					break;
				}
			}

			this.box[i] = new Array();
			this.box[i]["name"] = n;
		}

		if(this.ok)
		{
			var tmp_r = ''+this.regxpObj[t];

			if(tmp_r.indexOf("/", 0) == -1 && t != "" && t != "all")
			{
				this.msg("no_type", t, n);
				this.ok = false;
			}
			else
				this.box[i]["reg"] = (t == "" || t == "all")? "all": t ;
		}

		if(this.ok)
		{
			this.box[i]["require"] = (isNaN(parseInt(r)))? ((r == true)? 1 : 0) : r ;
			this.box[i]["max_val"] = (isNaN(parseInt(m)))? false : m ;
		}

		if(this.ok)
		{
			tmp = ''+this.fObj.elements[n].type;
			
			if(tmp == "text" || tmp == "textarea" || tmp == "password" || tmp == "file" || tmp == "hidden")
			{
				this.box[i]["type"] = (tmp.indexOf("select", 0) != -1)? "select" : tmp ;
				this.box[i]["length"] = 1;
			}
			else
			{
				if(isNaN(parseInt(this.fObj.elements[n].length)))
					this.box[i]["length"] = 1;
				else
					this.box[i]["length"] = this.fObj.elements[n].length;	

				if(this.box[i]["length"] > 1)
					this.box[i]["type"] = (tmp.indexOf("select", 0) != -1)? "select": ''+this.fObj.elements[n][0].type;
				else
					this.box[i]["type"] = (tmp.indexOf("select", 0) != -1)? "select": tmp;
			}
			this.box[i]["display"] = (d.length == 0)? 0 : d ;
		}
	}
}

//- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

function checkForm_addFromList()
{
	var tmp_l = checkForm_addFromList.arguments;
	var k;

	for(k=0; k<tmp_l.length; k++)
		this.add(tmp_l[k], "", 0, 1);
}

//- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

function checkForm_clear_fields()
{
	this.box = "";
	this.box = new Array();
}

//- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

function checkForm_message()
{
	var tmp_a = checkForm_message.arguments;
	var tmp_d = ""+this.messages[tmp_a[0]];
	var i;

	for(i=1; i<tmp_a.length; i++)
		tmp_d = tmp_d.replace("%"+i, tmp_a[i]);

	if(this.msg_function == false)
		alert(tmp_d);
	else
	{
		if(tmp_a.length > 1 && tmp_a[1].indexOf("javascript") != -1)
			this.msg_function(tmp_d, tmp_a[1]);
		else
			this.msg_function(tmp_d);
	}
}

//- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

function checkForm_send()
{
	var to = this.box.length;
	var validate = 0;
	var i = 0;

	//	1 - brak wartości
	//	2 - brak zaznaczenia
	//	3 - błędnie wypełnione
	//	4 - zbyt krótki string
	//	5 - za mało zaznaczonych
	//	6 - nie zawiera się pomiędzy
	
	if(this.ok)
	{
		for(i=0; i<to; i++)
		{
			validate = this.validate(i);

			if(validate != 0)
			{
				tmp = this.box[i]["type"];

				if(tmp == "text" || tmp == "textarea" || tmp == "password")
					this.blink_fld(this.fObj.name, 1, this.box[i]["name"], this.defaultBorderStyle, this.selectBorderStyle, 0);
				else if((tmp == "radio" || tmp == "checkbox") && this.box[i]["length"] > 1)
					this.blink_fld(this.fObj.name, 2, this.box[i]["name"], "", "", 0);
			}

			if(validate == 1)
			{
				if(this.box[i]["display"] == 0)
					this.msg("empty_hdn", this.box[i]["name"]);
				else
					this.msg("no_value", this.box[i]["display"]);
			}

			if(validate == 2)
				this.msg("no_option", this.box[i]["display"]);

			if(validate == 3)
				this.msg("bad_fill", this.box[i]["display"]);

			if(validate == 4)
				this.msg("to_short", this.box[i]["display"], this.box[i]["require"]);

			if(validate == 5)
				this.msg("to_small_sel", this.box[i]["display"], this.box[i]["require"]);

			if(validate == 6)
				this.msg("no_between", this.box[i]["display"], this.box[i]["require"], this.box[i]["max_val"]);
				
			if(validate != 0)
				break;
		}

		if(validate == 0)
		{
			if(this.is_prompt)
			{
				if(this.msg_function)
					this.msg("send", "javascript:document."+this.formName+".action='"+this.action+"'; document."+this.formName+".submit()");
				else
				{
					if(confirm(""+this.messages["send"]))
					{
						this.fObj.action = this.action;
						this.fObj.submit();
					}
				}
			}
			else
			{
				this.fObj.action = this.action;
				this.fObj.submit();
			}

		}
	}
	else
		this.msg("err");
}

//- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

function checkForm_validate_fld(i)
{
	var tmp_t = this.box[i]["type"];
	var tmp_n = this.box[i]["name"];
	var tmp_r = this.box[i]["require"];
	var tmp_max = this.box[i]["max_val"];
	var tmp_reg = this.box[i]["reg"];
	var tmp=0;
	var ret = -1;
	var j;

	if(tmp_t == "text" || tmp_t == "textarea" || tmp_t == "password" || tmp_t == "hidden" || tmp_t == "file")
	{
		tmp = this.fObj.elements[tmp_n].value;
		
		if(tmp_reg == "int")
		{
			if(isNaN(parseInt(tmp)) || !tmp.match(/^[0-9]{1,}$/gi))
				ret = 3;
			else
			{
				if(tmp_max)
					ret = (tmp > tmp_max || tmp < tmp_r)? 6 : 0 ;
				else
				{
					if(tmp_r == 1)
						ret = (tmp.length == 0)? 1 : 0 ;
					else if(tmp_r > 1)
						ret = (tmp.length < tmp_r)? 4 : 0 ;
					else
						ret = 0;
				}
			}
		}
		else if(tmp_reg == "all")
		{
			if(tmp_r == 1)
				ret = (tmp.length == 0)? 1 : 0 ;
			else if(tmp_r > 1)
				ret = (tmp.length < tmp_r)? 4 : 0 ;
			else
				ret = 0;
		}
		else
		{
			if(tmp.length == 0 && tmp_r == 1)
				ret = 1;
			else
			{
				if(tmp.length > 0)
					ret = (tmp.match(this.regxpObj[tmp_reg]))? 0 : 3 ;
				else
					ret = 0;
			}
		}
	}
	else
	{
		ret = (tmp_r == 1 || tmp_t == "select")? 2 : 5;

		if(tmp_r > 0)
		{
			for(j=0; j<this.box[i]["length"]; j++)
			{
				if(tmp_t == "select")
				{
					if(this.fObj.elements[tmp_n][j].selected)
						tmp = (this.fObj.elements[tmp_n].options[this.fObj.elements[tmp_n].selectedIndex].value.length == 0)? 0 : 1 ;
					else
						tmp = 0;
				}
				else
				{
					if(this.box[i]["length"] == 1)
						tmp = (this.fObj.elements[tmp_n].checked)? tmp+1 : tmp ;
					else
						tmp = (this.fObj.elements[tmp_n][j].checked)? tmp+1 : tmp ;
				}

				if(tmp >= tmp_r || (tmp_t == "select" && tmp == 1))
				{
					ret = 0;
					break;
				}

			}
		}
		else
			ret = 0;
	}

	return ret;
}

//- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

function checkForm_blink_field(f, t, fl, bd, bs, i)
{
	var i;
	i = i+1;

	if(t == 1)
	{
		if(i < 7)
			setTimeout("checkForm_blink_field('"+f+"', "+t+", '"+fl+"', '"+bd+"', '"+bs+"', "+i+")", 200);

		if((document.all || (!document.all && !document.layers)) && navigator.userAgent.indexOf("Opera") == -1)
			document.forms[f].elements[fl].style.border = (i%2 == 1)? bd : bs ;
	}
	else if(t == 2)
	{
		if(i < 6)
			setTimeout("checkForm_blink_field('"+f+"', "+t+", '"+fl+"', '"+bd+"', '"+bs+"', "+i+")", 200);

		document.forms[f].elements[fl][0].checked = (i%2 == 1)? true : false ;
	}
}

//-->

