//ver 1.1.2

function initValidateObject ()
{
	ValidateObject = new Object ();
	ValidateObject.display = 0;
	ValidateObject.validations = new Array ();
	ValidateObject.validations1 = new Array ();
	ValidateObject.validations2 = new Array ();
	ValidateObject.validations3 = new Array ();
	ValidateObject.validations4 = new Array ();
	ValidateObject.validations5 = new Array ();
	ValidateObject.validations6 = new Array ();
	ValidateObject.validations7 = new Array ();
	ValidateObject.validations8 = new Array ();
	ValidateObject.validations9 = new Array ();
	ValidateObject.validations10 = new Array ();
	ValidateObject.isEmpty = function (s)
	{
		if (s == null || s.length == 0)
			return true;
		return !/\S/.test (s);
	};
	ValidateObject.isEmail = function (field)
	{
		var s = field.value;
		var email_pattern = new RegExp ("^[\\w\\.=-]+@[\\w\\.-]+\\.[\\w\\.-]{2,4}$");
		if (!email_pattern.test (s))
		{
			field.focus ();
			return 2;
		}
		return 0;
	};
	ValidateObject.isDoubleEmail = function (field)
	{
		var sep_e = field.split ("|");
		var e1 = eval (sep_e[0]);
		var e2 = eval (sep_e[1]);
		var email_pattern = new RegExp ("^[\\w\\.=-]+@[\\w\\.-]+\\.[\\w\\.-]{2,4}$");
		if (!email_pattern.test (e1.value))
		{
			e1.focus ();
			return 2;
		}
		if (e1.value != e2.value)
		{
			e2.focus ();
			return 3;
		}
		return 0;
	};
	ValidateObject.isInt = function (field)
	{
		var s = field.value;
		if (!(/^-?\d+$/.test (s)))
		{
			field.focus ();
			return 2;
		}
		return 0;
	};
	ValidateObject.isPozitiveInt = function (field)
	{
		var s = field.value;
		var poz_pattern = new RegExp ("^\\d\\d*$");
		if (!(poz_pattern.test (s)))
		{
			field.focus ();
			return 2;
		}
		return 0;
	};
	ValidateObject.isFloat = function (field)
	{
		var s = field.value;
		var float_pattern = new RegExp ("^-?(\\d\\d*\\.\\d*$)|(^-?\\d\\d*$)|(^-?\\.\\d\\d*$)");
		if (!float_pattern.test (s))
		{
			field.focus ();
			return 2;
		}
		return 0;
	};
	ValidateObject.isURL = function (field)
	{
		var s = field.value;
		var URL_pattern = new RegExp ("[a-zA-Z0-9-]+");
		var URL_pattern1 = new RegExp ("[`=!@#$%^&*()_,.|<>?;':]+");
		var is_url = 0;
		if (!URL_pattern.test (s))
		{
			field.focus ();
			is_url = 2;
		}
		if (URL_pattern1.test (s))
		{
			field.focus ();
			is_url = 2;
		}
		return is_url;
	};
	ValidateObject.isPassword = function (field)
	{
		var sep_p = field.split ("|");
		var p1 = eval (sep_p[0]);
		var p2 = eval (sep_p[1]);
		if (p1.value.length == 0)
		{
			p1.focus ();
			return 2;
		}
		if (p1.value != p2.value)
		{
			p2.focus ();
			return 3;
		}
		return 0;
	};
	ValidateObject.getValObject = function (nr)
	{
		switch (nr)
		{
			case 1:
				return this.validations1;
			case 2:
				return this.validations2;
			case 3:
				return this.validations3;
			case 4:
				return this.validations4;
			case 5:
				return this.validations5;
			case 6:
				return this.validations6;
			case 7:
				return this.validations7;
			case 8:
				return this.validations8;
			case 9:
				return this.validations9;
			case 10:
				return this.validations10;
		}
	}
	ValidateObject.validate = function (nr)
	{
		var i, checkToMake, field, chkMail, chkInt, divNode, Form;
		var rValue = true;
		this.display = 0;
		this.validations = this.getValObject (nr);
		if (!document.getElementById ('divValidate' + nr))
		{
			field = eval (this.validations[0][0]);
			Form = field.form;
			divNode = document.createElement ('div');
			divNode.id = "divValidate" + nr;
			divNode.name = "divValidate" + nr;
			Form.appendChild (divNode);
		}
		else
			divNode = document.getElementById ('divValidate' + nr);
		for (i=0; i<this.validations.length; i++)
		{
			checkToMake = this.validations[i][1];
			switch (checkToMake)
			{
				case 'notblank':
					field = eval (this.validations[i][0]);
					if (this.isEmpty (field.value))
					{
						this.displayCompleteError (divNode, this.validations[i][2]);
						field.focus ();
						rValue = false;
					}
					break;
				case 'is_Email':
					field = eval (this.validations[i][0]);
					chkMail = this.isEmail (field);
					if (chkMail == 2)
					{
						this.displayCompleteError (divNode, this.validations[i][2]);
						rValue = false;
					}
					break;
				case 'is_doubleEmail':
					field = this.validations[i][0];
					chkInt = this.isDoubleEmail (field)
					if (chkInt == 2)
					{
						this.displayCompleteError (divNode, this.validations[i][2]);
						rValue = false;
					}
					if (chkInt == 3)
					{
						this.displayCompleteError (divNode, "Email-urile nu sunt identice");
						rValue = false;
					}
					break;
				case 'is_Int':
					field = eval (this.validations[i][0]);
					chkInt = this.isInt (field);
					if (chkInt == 2)
					{
						this.displayCompleteError (divNode, this.validations[i][2]);
						rValue = false;
					}
					break;
				case 'is_pozitiveInt':  
					field = eval (this.validations[i][0]);
					chkInt = this.isPozitiveInt (field);
					if (chkInt == 2)
					{
						this.displayCompleteError (divNode, this.validations[i][2]);
						rValue = false;
					}
					break;
				case 'is_Float':
					field = eval (this.validations[i][0]);
					chkInt = this.isFloat (field);
					if (chkInt == 2)
					{
						this.displayCompleteError (divNode, this.validations[i][2]);
						rValue = false;
					}
					break;
				case 'chkSelect':
					field = eval (this.validations[i][0]);
					if (field.value == "00")
					{
						this.displayCompleteError (divNode, this.validations[i][2]);
						rValue = false;
					}
					break;
				case 'is_URL':
					field = eval (this.validations[i][0]);
					chkInt = this.isURL (field);
					if (chkInt == 2)
					{
						this.displayCompleteError (divNode, this.validations[i][2]);
						rValue = false;
					}
					break;
				case 'is_Password':
					field = this.validations[i][0];
					chkInt = this.isPassword (field)
					if (chkInt == 2)
					{
						this.displayCompleteError (divNode, this.validations[i][2]);
						rValue = false;
					}
					if (chkInt == 3)
					{
						this.displayCompleteError (divNode, "Parolele nu sunt identice");
						rValue = false;
					}
					break;
			}
		}
		return rValue;
	};
	ValidateObject.displayCompleteError  = function (divNode, str)
	{
		if (divNode.style.display == "block")
		{
			var error_Paragraph = document.createElement("p");
			var error_Text = document.createTextNode(str);
			error_Paragraph.appendChild(error_Text);
			if (this.display == 0)
				divNode.innerHTML = '<p>' + str + '</p>';
			else
				divNode.innerHTML = divNode.innerHTML + '<p>' + str + '</p>';
			this.display = 1;
		}
		else
		{
			divNode.style.display = "block";
			this.display = 1;
			var errorParagraph = document.createElement("p");
			var errorText = document.createTextNode(str);
			errorParagraph.appendChild(errorText);
			divNode.appendChild (errorParagraph);
		}
	};
	return ValidateObject;
}

