function changeBackgroundColor(id,color)
{
	var input = $(id);
	
	if(input.style)
	{
		input.initBackgroundColor = input.style.backgroundColor;
		input.style.backgroundColor = color;
	}
}

function resetBackgroundColor(id)
{
	var input = $(id);
	var color = '';
	
	if(input.initBackgroundColor)
	{
		color = input.initBackgroundColor;
	}
	
	if(input.style)
	{
		input.style.backgroundColor = color;
	}
}

function validEmail(id,name,color)
{
	var input = $(id);
	var value = $F(id);
	var error = "";
	
	resetBackgroundColor(id);
	
	if( !_validEmail(value) )
	{
		changeBackgroundColor(id,color);
		error = name + ": la direccion de e-mail parece ser invalida.\n";
	}
	
	return error;
}

function _validEmail (emailStr)
{
	var emailPat = /^(.+)@(.+)$/;
	var specialChars = "\\(\\)<>@,;:\\\\\\\"\\.\\[\\]";
	var validChars = "\[^\\s" + specialChars + "\]";
	var quotedUser = "(\"[^\"]*\")";
	var ipDomainPat = /^\[(\d{1,3})\.(\d{1,3})\.(\d{1,3})\.(\d{1,3})\]$/;
	var atom = validChars + '+';
	var word = "(" + atom + "|" + quotedUser + ")";
	var userPat = new RegExp("^" + word + "(\\." + word + ")*$");
	var domainPat = new RegExp("^" + atom + "(\\." + atom +")*$");
	
	var matchArray = emailStr.match(emailPat);
	if ( matchArray == null )
	{
		return false;
	}
	var user = matchArray[1];
	var domain = matchArray[2];
	
	if ( user.match(userPat) == null )
	{
	    return false;
	}
	
	var IPArray = domain.match(ipDomainPat);
	if ( IPArray != null )
	{
		  for ( var i = 1; i <= 4; i++ )
		  {
		    if ( IPArray[i] > 255 )
		    {
					return false;
		    }
	    }
	    
	    return true;
	}
	
	var domainArray = domain.match(domainPat);
	if ( domainArray == null )
	{
	    return false;
	}
	
	var atomPat = new RegExp(atom,"g");
	var domArr = domain.match(atomPat);
	var len = domArr.length;
	if ( domArr[domArr.length-1].length < 2 || domArr[domArr.length-1].length > 3 )
	{
	   return false;
	}
	
	if ( len < 2 )
	{
	   return false;
	}
	
	return true;
}

function validPassword(id,verify,name,length,color)
{
	var input_1 = $(id);
	var value_1 = $F(id);
	var input_2 = $(verify);
	var value_2 = $F(verify);
	var error = "";
	
	resetBackgroundColor(id);
	resetBackgroundColor(verify);
	
	if(!value_1 || !value_2)
	{
		changeBackgroundColor(id,color);
		changeBackgroundColor(verify,color);
		error = name + ": debe llenar este campo y su verificacion.\n";
	}
	else if( value_1 != value_2 )
	{
		changeBackgroundColor(id,color);
		changeBackgroundColor(verify,color);
		error = name + ": la clave y su verificacion deben ser iguales.\n";
	}
	else if( value_1.length < length )
	{
		changeBackgroundColor(id,color);
		changeBackgroundColor(verify,color);
		error = name + ": la clave debe tener al menos " + length + " caracteres.\n";
	}
	
	return error;
}

function validNotEmpty(id,name,color)
{
	var input = $(id);
	var value = $F(id);
	var error = "";
	
	resetBackgroundColor(id);
	
	if(!value)
	{
		changeBackgroundColor(id,color);
		error = name + ": debe llenar este campo.\n";
	}
	
	return error;
}

function validOneChecked(form_id,id,name)
{
	var inputs = $A($(form_id)[id]).$All(function(i){return i.checked});
	var error = "";
	
	if( inputs.length <= 0 )
	{
		error = name + ": debe chequear al menos una opcion.\n";
	}
	
	return error;
}

function validNumeric(id,name,color)
{
	var input = $(id);
	var value = $F(id);
	var error = "";
	
	resetBackgroundColor(id);
	
	if(isNaN(value))
	{
		changeBackgroundColor(id,color);
		error = name + ": debe ser numerico.\n";
	}
	
	return error;
}

function validMoreThanZero(id,name,color)
{
	var input = $(id);
	var value = $F(id);
	var error = validNumeric(id,name,color);
	
	if(!error)
	{
		resetBackgroundColor(id);
		
		if( Number(value) <= 0 )
		{
			changeBackgroundColor(id,color);
			error = name + ": debe ser mayor a cero.\n";
		}
	}
	
	return error;
}

function validInteger(id,name,color)
{
	var input = $(id);
	var value = $F(id);
	var error = validNumeric(id,name,color);
	
	if(!error)
	{
		resetBackgroundColor(id);
		
		if( parseInt(value) != Number(value) )
		{
			changeBackgroundColor(id,color);
			error = name + ": debe ser un numero entero.\n";
		}
	}
	
	return error;
}

function radioValue(formID,radioID)
{
	var f = $(formID);
	var r = f[radioID];
	var o;
	
	if(r)
	{
		for( var i = 0; i < r.length; i++ )
		{
			o = r[i];
			
			if( o.checked )
			{
				return o.value;
			}
		}
	}
	
	return null;
}