function debug(v) {
	console.debug(v);
}

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 = $("#" + formID + " :input");
			var postVars = new Array();
			var elClassName, elType, elName, elTitle, validTypeAndMsg, sp, formElement;
			elements.each(function(el) {
				el = $(this);
				
				elClassName = (el.className) ? el.className : el.attr("class");
				elType = el.attr("type");
				elName = el.attr("name");
				elTitle = el.attr("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.val(),
						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) {
		$.ajax(
		{
			url: CubikValidator.phpValidatorUrl,
			data: 
			{
				"postVars": postVars
			},
			type: "POST",
			dataType: "json",
			success: function(res) {
				var error = "";
				$.each(res, function(index, 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();
				}
			}
		});
	}
}

