﻿function validate(_obj)
{
	if(typeof(_obj)!="object")
	{
		if(!document.getElementById(_obj))	
			return false;
		
		_obj=document.getElementById(_obj);
	}
	
	var result;
	var fields= new Array();
	var temp= new Array(_obj);

	for(var i=0; i<temp.length; i++)
	{
		if(temp[i].hasChildNodes)
		{
			for(var x=0; x<temp[i].childNodes.length;x++)
			{
				var node=temp[i].childNodes[x];
				if(node.nodeType==1)
				{
					temp.push(node);
					if(node.tagName.match(/(input|select|textarea)/i))
						fields.push(node);
				}
			}
		}
	}
	
	try
	{
		
		for(var j=0;j<fields.length; j++)
		{
			result=false;
			var field=fields[j];
			var resp;
			if((resp=isEmpty(field))!='')
			{
				if(field.getAttribute('reqAlt'))
				{
					var alternative = document.getElementById(field.getAttribute('reqAlt'));
					
					if(isEmpty(alternative)!='')
					{
						alert('It is necessary to fill in the '+field.getAttribute('fieldName')+' field or the '+alternative.getAttribute('fieldName'));
						field.focus();
						return false;
					}
				}
				else
				{
					alert(resp);
					field.focus();
					return false;
				}
			}
	
			/// check types
			result=false;
			
			if(field.getAttribute("fieldType"))
			{
				var type=field.getAttribute("fieldType");
		 		switch (type)
		 		{
		 			case "text":
		 				if(field.value.match(/^[A-Za-z' .ºªzçñäáàâãëéèêïíìîöóòôõüúùûÇÑÄÁÀÂÃËÉÈÊÏÍÌÎÖÓÒÔÕÜÚÙÛ]+$/ig) || field.value=="")
		 					result=true;
		 			break;
		 			case "number":
		 				if(field.value.match(/\d+/ig)==field.value || field.value=="")
			 				result=true;
					break;
					case "currency":
							if(field.value.match(/^\d+\,\d{0,3}$/ig)==field.value || field.value=="")
			 				result=true;
		 			break;
					case "email":
							if(field.value.match(/^([+_.A-Za-z0-9\-]+@([A-Za-z\-]+\.)+[A-Za-z\-]{2,}){1}$/ig) || field.value=="")
			 				result=true;
		 			break;
					case "phone":
		 				if(field.value.match(/^\d{9,}$/ig)==field.value || field.value=="")
			 				result=true;
		 			break;
		 		}
			 	
		 		if(!result)
		 		{
		 			alert(field.getAttribute('validMessage'));
		 			field.focus();
		 			return false;
		 		}
			}
		}
	
	}
	catch(e)
	{
		alert(e);
		return false;
	}	
	
	ShowFloating('info');
	
	return true;
}

function isEmpty(oField)
{
	if(oField.getAttribute('req') && oField.getAttribute('req')=="true")
	{
		if(oField.tagName=="INPUT")
		{
			var _type=oField.getAttribute('type').toLowerCase();
			
			if((_type == "text" || _type == "hidden" || _type == "password" || _type == "file") && oField.value == "")
			{
				return 'It is necessary to fill in the '+oField.getAttribute('fieldName')+' .';
			}
			else if(_type == "checkbox" && !oField.checked)
			{
				return 'It is necessary to fill in the '+oField.getAttribute('fieldName')+'.';
			}
		}
		
		if(oField.tagName == "SELECT")
		{
			var def= oField.options[0].value;
			if(oField.getAttribute("def"))
				def=oField.getAttribute("def");
			
			if(oField.value==def)
			{
				return 'You must select an option for the '+oField.getAttribute('fieldName');
			}		
		}	
	}
	
	return '';
}
