// JavaScript Document

function validarFormulario(form, errMsg)
{
	var errors = 0;
	var inputs = form.getElementsByTagName('input');
	var selects = form.getElementsByTagName('select');
	var areas = form.getElementsByTagName('textarea');

	for(i=0;i<inputs.length; i++)
	{
		remWarning(inputs[i]);
		if(inputs[i].className.indexOf('req')!=-1)
		{
			if(inputs[i].className.indexOf('email')!=-1)
			{
				//validar mail
				if(isEmpty(inputs[i]) || !isMail(inputs[i]))
				{
					addWarning(inputs[i]);
					errors++;
				}
			}

			else if(inputs[i].className.indexOf('uri')!=-1)
			{
				//validar uri
				if(isEmpty(inputs[i]) || !isUri(inputs[i]))
				{
					addWarning(inputs[i]);
					errors++;
				}
			}

			else if(inputs[i].className.indexOf('checkbox')!=-1)
			{
				//validar checkboxes
				if(isEmpty(inputs[i]) || !isChecked(inputs[i]))
				{
					addWarning(inputs[i]);
					errors++;
				}
			}

			else if(inputs[i].className.indexOf('date')!=-1)
			{
				//validar fechas
				if(isEmpty(inputs[i]) || !isDate(inputs[i]))
				{
					addWarning(inputs[i]);
					errors++;
				}
			}

			else if(inputs[i].className.indexOf('eq-')!=-1)
			{
				//validar password contra otro campo
				var regex = /eq\-(\S+)/;
				inputs[i].className.match(regex);
				if(!isEqual(inputs[i],document.getElementById(RegExp.$1)))
				{
					addWarning(inputs[i]);
					errors++;
					alert("Password not match!");
				}
			}

			else if(inputs[i].className.indexOf('eqq-')!=-1)
			{
				//validar password contra otro campo
				var regex = /eq\-(\S+)/;
				inputs[i].className.match(regex);
				if(!isEqual(inputs[i],document.getElementById(RegExp.$1)))
				{
					addWarning(inputs[i]);
					errors++;
					alert("Email not match!");
				}
			}

			else
			{
				//validar vacio
				if(isEmpty(inputs[i]))
				{
					addWarning(inputs[i]);
					errors++;
				}
			}
		}
	}

	for(i=0;i<selects.length; i++)
	{
		remWarning(selects[i]);
		if(selects[i].className.indexOf('req')!=-1)
		{
			if(selects[i].selectedIndex == 0)
			{
				addWarning(selects[i]);
				errors++;
			}
		}
	}

	for(i=0;i<areas.length; i++)
	{
		remWarning(areas[i]);
		if(areas[i].className.indexOf('req')!=-1)
		{
			if(isEmpty(areas[i]))
			{
				addWarning(areas[i]);
				errors++;
			}
		}
	}

	if(errMsg && errors>0)
	{
		alert(errMsg);
	}

	if(errors>0)
		return false;
	else
		return true;

}

function isEmpty(obj)
{
	return(obj.value == "");
}

function isMail(obj)
{
	return /\w{1,}[@][\w\-]{1,}([.]([\w\-]{1,})){1,3}$/.test(obj.value);
}

function isUri(obj)
{
	return /^(http|https|ftp|rmtp|mms):\/\/(([A-Z0-9][A-Z0-9_-]*)(\.[A-Z0-9][A-Z0-9_-]*)+)(:(\d+))?\/?/i.test(obj.value);
}

function isChecked(obj)
{
	return obj.checked;
}

function isDate(obj)
{
	var regex = /^(\d{1,2})\/(\d{1,2})\/(\d{2,4})$/;
	if(!regex.test(obj.value)) return false;
	var d = new Date(obj.value.replace(regex, '$2/$1/$3'));
	return (parseInt(RegExp.$2, 10) == (1+d.getMonth())) &&
	(parseInt(RegExp.$1, 10) == d.getDate()) &&
	(parseInt(RegExp.$3, 10) == d.getFullYear() );
}

function isEqual(obj1,obj2)
{
	return (obj1.value == obj2.value);
}

function addWarning(obj)
{
	obj.className += " warningError";
}

function remWarning(obj)
{
	obj.className = obj.className.replace(" warningError", "");
}

