var CubikValidator = new function()
{
	/**
	 * Location for php file which validates the form elements
	 */
	this.phpValidatorUrl = "validator.php";
	
	//Validation form ELement
	this.formID = "";
	
	this.setForm = function(formID)
	{
		this.formID = formID;
	}
	
	
	/**
	 * Function to validate form values
	 * @param {Object} formID
	 */
	this.validate = function(formID,button)
	{

		CubikValidator.formID = formID;
		
		var Form = $(formID);
		
		if (Form) 
		{
			var elements = Form.getElements();
			var postVars = new Array();
			var elClassName,elType,elName,elTitle,validTypeAndMsg,sp,formElement;
			$A(elements).each(function(el)
			{
				elClassName = (el.className) ? el.className : el.readAttribute("class");
				elType = el.type;
				elName = el.readAttribute("name");
				elTitle = el.readAttribute("title");
				
				/*
				 * These attributes are required to validate element
				 * class
				 * id
				 * name
				 */
				if (elClassName && elClassName.match(/.*valid\[/) && elType && elName) // && elID) 
				{
					validTypeAndMsg = elClassName.replace(/.*valid\[/g, "");
					validTypeAndMsg = validTypeAndMsg.replace(/\]/g, "");
					sp = validTypeAndMsg.split(":");
					
					//This elements are sent to php via ajax
					formElement = 
					{
						type: elType,
						validType: sp[0],
						msg: sp[1],
						name: elName,
					//	id: elID,
						value: el.value,
						title : elTitle
					}
					postVars.push(formElement);
				}
			})
			if (postVars.length > 0) 
			{
				CubikValidator.post(postVars)
			}
		}
	}
	
	/**
	 * Send validation data to php validator via ajax
	 * @param object postVars
	 */
	this.post = function(postVars)
	{
		new Ajax.Request(CubikValidator.phpValidatorUrl, 
		{
			parameters: 
			{
				"postVars": Object.toJSON(postVars)
			},
			onSuccess: function(transport)
			{
				var Respnoce = transport.responseText.evalJSON();
				
				if (Respnoce && typeof Respnoce == "object") 
				{
					var error = "";
					$A(Respnoce).each(function(El)
					{
						if (El.error)
						{
							error += El.error+"\n";
						}
					});
					if (error != "")//IF there is erros, then these will be alertet to user
					{
						alert(error);
					}
					else //if not, form wil be submitted
					{
						$(CubikValidator.formID).submit();
					}
				}
			}
		});
	}
}
