/*****************************************************************
LimitTextArea - Limita o tamanho de um campo textarea
Syntax: LimitTextArea(
			Objeto Form,
			Tamanho maximo do campo
		)
Obs: Deve ser usado no onKeyDown e onKeyUp event handles do textarea
*****************************************************************/
function LimitTextArea(sObject, iNumber) {
	var sValue = eval(sObject).value;
	if (sValue.length >= iNumber) {
		eval(sObject).value = sValue.substring(0, iNumber);
	}
}

/*****************************************************************
RequiredFields - Obrigada o preenchimento de determinados campos
Syntax: RequiredFields(
			Objeto Form,
			'Nome do campo, Nome ficticio'
		)
Exemplo: RequiredFields('document.MyForm', 'nome,Nome','email,E-Mail','fone,Telefone')
*****************************************************************/
function RequiredFields(sObject) {
	var ErrorMessageBegin = "Não foi possivel completar a operação desejada.\n\nProblema:\nO campo obrigatório \'";
	var ErrorMessageEnd = "' não foi preenchido.\n\nSolução:\nPreencha o campo mencionado a cima e repita a operação.";
	
	//Loop para cada argumento passado
	for (var i = 1; i < arguments.length; i++) {
		Arguments = new String(arguments[i]);
		ArrFields = Arguments.split(",");
		
		//Verifica preenchimento de chebox
		//alert(eval(sObject)[ArrFields[0]].type)
		if (eval(sObject)[ArrFields[0]].type == "checkbox") {
			if (!eval(sObject)[ArrFields[0]].checked) {
				alert(ErrorMessageBegin + ArrFields[1] + ErrorMessageEnd);
				return false;
			}
		}
		//Verifica preenchimento de text
		else if (eval(sObject)[ArrFields[0]].type == "text" || eval(sObject)[ArrFields[0]].type == "password" || eval(sObject)[ArrFields[0]].type == "textarea" || eval(sObject)[ArrFields[0]].type == "select-one" || eval(sObject)[ArrFields[0]].type == "select-multiple") {
			if (eval(sObject)[ArrFields[0]].value.length == 0) {
				alert(ErrorMessageBegin + ArrFields[1] + ErrorMessageEnd);
				eval(sObject)[ArrFields[0]].focus();
				return false;
			}
		}
		//Verifica preenchimento de radio
		else {
			for (var x = 0; x < eval(sObject)[ArrFields[0]].length; x++) {
				if (eval(sObject)[ArrFields[0]][x].checked) {
					var CheckedOK = true;
				}
			}
			if (!CheckedOK) {
				alert(ErrorMessageBegin + ArrFields[1] + ErrorMessageEnd);
				return false;
			}
			var CheckedOK = false;
		}
	}
	return true;
}

/*****************************************************************
IsNumeric - Funcao para validar numerico.
Syntax: IsNumeric(
				sNumber (String a ser validada),
				iLength (Tamanho maximo do numero OPCIONAL),
				sErrorMessage (Mensagem de erro OPCIONAL)
				)
*****************************************************************/
function IsNumeric(sNumber, sLength, sErrorMessage) {
	if (sNumber) {
		if (isNaN(sNumber)) {
			if (sErrorMessage) {
				alert(sErrorMessage);
			}
			else {
				alert("Campo somente numerico preenchido incorretamente");
			}
			return false;
		}
	
		if (iLength) {
			if (sNumber.length > sLength) {
				if (sErrorMessage) {
					alert(sErrorMessage);
				}
				else {
					alert("Campo somente numerico preenchido incorretamente");
				}
			}
		}
		return true;
	}
}

/*****************************************************************
IsEmail - Funcao para validar e-mail.
Syntax: IsEmail(
				sEmail (Email a ser validado),
				sErrorMessage (Mensagem de erro OPCIONAL)
				)
*****************************************************************/
function IsEmail(sEmail, sErrorMessage) {
	if (sEmail) {
		var Expression = /^[a-zA-Z0-9._-]+@([a-zA-Z0-9.-]+\.)+[a-zA-Z0-9.-]{2,4}$/;
		
		if (!Expression.test(sEmail)) {
			if (sErrorMessage) {
				alert(sErrorMessage);
			}
			else {
				alert("Formato de Email preenchido inválido");
			}
			return false;
		}
		return true;
	}
}

/*****************************************************************
IsCEP - Funcao para validar CEP.
Syntax: IsCEP(
				sCEP (CEP a ser validado),
				sErrorMessage (Mensagem de erro OPCIONAL)
				)
*****************************************************************/
function IsCEP(sCEP, sErrorMessage) {
	if (sCEP) {
		if (sCEP.length < 8 || isNaN(sCEP)) {
			if (sErrorMessage) {
				alert(sErrorMessage);
			}
			else {
				alert("Formato de CEP preenchido inválido");
			}
			return false;
		}
		return true;
	}
}
