/*

	Form Checker v.1.0.2
	Firan Corneliu
	firan.corneliu@gmail.com

*/

function checkForm (formID)
{	
	var generalError   = "There was an error with the data you have submitted.";
	
	var checkRes  = 1;
	var alertMess = '';
	var formRel = $(formID).getAttribute('rel');
	
	if (formRel && formRel!="nocheck")
	{
		var formRelArr  = String($(formID).getAttribute('rel')).split('_');
		var formMessage = formRelArr[0];
		var formRule    = formRelArr[1];
		var formMin     = formRelArr[2];
		var formMax     = formRelArr[3];
	}

	var allNodes  = Form.getElements(formID);	
	for(i = 0; i < allNodes.length; i++) 
	{
		var element = allNodes[i];
		if (String(element.getAttribute('rel'))!='null' || formRule)
		{
			rel     = String(element.getAttribute('rel')).split('_');
			
			rule    = (formRule) ? formRule : rel[0];
			message = rel[1];
			min	    = (formMin) ? formMin : rel[2];
			max	    = (formMax) ? formMax : rel[3];
			
			validElement = 1;									
			switch (rule)
			{
				case 'no-empty' :
					if (!element.value.length || element.value == '0')
						validElement = 0;
				break;
				case 'select':
					var val = element.options[element.selectedIndex].text;
					if (val == min)
					{
						validElement = 0;
					}
				break;
				case 'numerical' :
					re = new RegExp("^\\d+$","ig");
					if (element.value.length)
					{		
						ok = re.test(element.value);
						if (!ok)
							validElement = 0;
					}
				break;
				case 'alphanumerical' :
					re = new RegExp("\\w","ig");					
					if (element.value.length)
					{
						ok = re.test(element.value);						
						if (!ok)
							validElement = 0;
					}
				break;
				case 'email' :
					re = new RegExp("\\b[A-Z0-9\.\_\%\+\-]+\@[A-Z0-9\.\-]+\\.[A-Z]{2,4}\\b","ig");
					if (element.value.length)
					{
						ok = re.test(element.value);
						if (!ok)
							validElement = 0;
					}
				break;
				case 'float' :
					re = new RegExp("^[0-9.]+$","ig");
					if (element.value.length)
					{
						ok = re.test(element.value);
						if (!ok)
							validElement = 0;
					}
				break;
				case 'equal' :
					if ((element.value != $(min).value) || (!element.value.length))
					{
						validElement = 0;
					}
				break;
				case 'limit' : 
				break;
			}
			
			if (((min && element.value.length<min) || 
			    (max && element.value.length>max)) &&
			     element.value.length)
		    {
		    	validElement = 0;
		    }
			
			if (!validElement)
			{
				checkRes = 0;
				element.className += ' inputError';
				if (message)
				{
					alertMess += message + "\n";
				}
			}
			else
			{
				element.className = element.className.replace(/inputError/,'');
			}
		}		
	}
	
	

	if (!checkRes)
	{
		if (formMessage)
			alertMess = formMessage;
			
		if (alertMess)
			alert(alertMess);
		else
			alert(generalError);

		return false;
	}
	else
	{	
		return true;
	}
	
}

function addActions()
{
	var forms    = document.getElementsByTagName('form');
	for (var i=0; i<forms.length; i++)
	{	
		if (forms[i].getAttribute("rel")!="nocheck")
		{
			forms[i].onsubmit = function () {
				return checkForm(this);	
			}
		}
	}
}

Event.observe(window, 'load', addActions, false);