/*
FILE:		VALID.JS
DESC.:		Simple HTML form validation.
VERSION:	1.0
*/

NUMBER =	1;
PASSWORD =	2;
PHONE =		3;
EMAIL =		4;
NAME =		5;
ADDRESS =	6;
PNR =		7;
ZIPCODE =	8;
REGEXP =	9;

LANG_SV =	0;
LANG_EN =	1;

var defaultMsg = new Array(
					new Array(
						"Det markerade fältet måste fyllas i.",
						"Det markerade fältet får bara innehålla siffror", "Det markerade fältet får bara innehålla bokstäver och siffror.",
						"Det markerade fältet får bara innehålla siffror, mellanslag och bindestreck.",
						"Det markerade fältet ska vara en email-adress.", "Det markerade fältet får inte innehålla siffror.",
						"Det markerade fältet får bara innehålla bokstäver, siffror, mellanslag och bindestreck.",
						"Det markerade fältet måste vara ett personnummer på formen: ååmmdd-nnnn.",
						"Det markerade fältet är felaktigt ifyllt."),
					new Array(
						"The marked field is required.",
						"The marked field may only contain numerals.", "The marked field may only contain letters and numerals.",
						"The marked field may only contain numerals, spaces and hyphens.",
						"The marked field must be a valid email address.", "The marked field may not contain numerals.",
						"The marked field may only contain letters, numerals, spaces and hyphens.",
						"The marked field must be a personal number: yymmdd-nnnn.",
						"The marked field has an error.")
				 );



function Valid(_form, _lang)
{
	var obj = document.forms[_form];
	var ents = new Array();
	var lang = _lang;
	
	
	this.addInput = function (name, msg, type)
	{
		var ret = "";
		
		if (type == null)
			ret = name + ";;" + msg
		else
			ret = name + ";" + msg + ";" + type
		
		ents.push(ret);
	};
	
	this._validSubmit = function ()
	{
		for (i = 0; i < ents.length; i++)
		{
			var str = ents[i].split(";");
			name = str[0];
			msg = str[1];
			type = str[2];
			var field = eval("obj." + name);
			
			
			if (field.value == "")
			{
				if (!msg)
					msg = defaultMsg[lang][0];
				
				alert(msg);
				field.focus();
				return false;
			}
			
			if (type == NUMBER)
			{
				if (!(/^\d+$/.test(field.value)))
				{
					alert(defaultMsg[lang][NUMBER]);
					field.focus();
					return false;
				}
			}
			else if (type == PASSWORD)
			{
				if (!(/^[A-Za-z0-9]+$/.test(field.value)))
				{
					alert(defaultMsg[lang][PASSWORD]);
					field.focus();
					return false;
				}
  			}
			else if (type == PHONE || type == ZIPCODE)
			{
				if (!(/^[0-9\-\s]+$/.test(field.value)))
				{
					alert(defaultMsg[lang][PHONE]);
					field.focus();
					return false;
				}
  			}
			else if (type == EMAIL)
			{
				if (!(/^([a-zA-Z0-9_\.\-])+\@(([a-zA-Z0-9\-])+\.)+([a-zA-Z0-9]{2,4})+$/.test(field.value)))
				{
					alert(defaultMsg[lang][EMAIL]);
					field.focus();
					return false;
				}
  			}
			else if (type == NAME)
			{
				if (!(/^[\D]+$/.test(field.value)))
				{
					alert(defaultMsg[lang][NAME]);
					field.focus();
					return false;
				}
  			}
			else if (type == ADDRESS)
			{
				if (!(/^[0-9a-zA-Z\.\-\s]+$/.test(field.value)))
				{
					alert(defaultMsg[lang][ADDRESS]);
					field.focus();
					return false;
				}
  			}
			else if (type == PNR)
			{
				if (!(/^\d{6,6}-\d{4,4}$/.test(field.value)))
				{
					alert(defaultMsg[lang][PNR]);
					field.focus();
					return false;
				}
  			}
			else if (type == REGEXP)
			{
				if (!(eval(msg).test(field.value)))
				{
					alert(defaultMsg[lang][REGEXP]);
					field.focus();
					return false;
				}
  			}
		}
		
		return true;
	};
	
	obj.onsubmit = this._validSubmit;
}

/* END: VALID.JS */