/*****************************************************************
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(
			MsgBegin, 
			MsgEnd,
			Objeto Form,
			'Nome do campo, Nome ficticio'
		)
Exemplo: RequiredFields('<%= Imprime("MsgErroObrigInicio") %>', '<%= Imprime("MsgErroObrigFim") %>', 'document.MyForm', 'nome,Nome','email,E-Mail','fone,Telefone')
*****************************************************************/
function RequiredFields(MsgBegin, MsgEnd, 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 acima e repita a operação.";
	var ErrorMessageBegin = MsgBegin;
	var ErrorMessageEnd = MsgEnd;
	
	//Loop para cada argumento passado
	for (var i = 3; i < arguments.length; i++) {
		Arguments = new String(arguments[i]);
		ArrFields = Arguments.split(",");
		
		//Verifica preenchimento de chebox		
		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;
			}
		}
	}
	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;
	}
}

/*****************************************************************
IsDate - Funcao para validar Data.
Syntax: IsDate(
				iYear (Ano da data),
				iMonth (Mes da data),
				iDay (Dia da data),
				sErrorMessage (Mensagem de erro OPCIONAL)
				)
*****************************************************************/
function IsDate (iYear, iMonth, iDay, sErrorMessage) {
	iMonth = iMonth - 1;
	
	var tempDate = new Date(iYear, iMonth, iDay);

	if ((tempDate.getFullYear() != iYear) || (iMonth != tempDate.getMonth()) || (iDay != tempDate.getDate())) {
		if (sErrorMessage) {
			alert(sErrorMessage);
		}
		else {
			alert("Data preenchida inválida");
		}
		return false
	}
	return true;
}

function IsCPF (CPF) {
	myFormValue = CPF;
	strAlert = "CPF preenchido inválido."
	if (myFormValue.length != 11 || CPF == "00000000000" || CPF == "11111111111" ||
		CPF == "22222222222" ||	CPF == "33333333333" || CPF == "44444444444" ||
		CPF == "55555555555" || CPF == "66666666666" || CPF == "77777777777" ||
		CPF == "88888888888" || CPF == "99999999999") {
		//alert(strAlert)
		return false; }
	soma = 0;
	for (i = 0; i < 9; i ++) {
		soma += myFormValue.charAt(i) * (10 - i);
	}
	digito1 = 11 - (soma % 11);
	if (digito1 >= 10) { digito1 = 0; }

	soma = 0;
	for (i = 0; i < 10; i ++) {
		soma += myFormValue.charAt(i) * (11 - i);
	}
	digito2 = 11 - (soma % 11);
	if (digito2 >= 10) { digito2 = 0; }
	if (digito1 != myFormValue.charAt(9) || digito2 != myFormValue.charAt(10)) {
		//alert(strAlert);
		return false;
	}
	return true;
}

/*****************************************************************
ValidaCPF - Funcao para validar CPF.
Syntax: ValidaCPF(
				num_cpf (valor do CPF),
				campo_cpf (campo input)
				)
*****************************************************************/
function ValidaCPF ( num_cpf , campo_cpf )
{

	var CPF = num_cpf; // Recebe o valor digitado no campo
	CPF = CPF.replace("-", "");
	CPF = CPF.replace(".", "");
	CPF = CPF.replace(".", "");

    // Verifica se os numeros digitados são todos iguais
    var i, numberEquals;    
    var firstNumber = CPF.substr(0, 1);
    numberEquals = true;
    for (i=0; i < CPF.length; i++)
    {
        if (firstNumber != CPF.substr(i, 1))
        {
            numberEquals = false;
            break;
        }        
    }    
    if (numberEquals)
    {
        alert("C.P.F. inválido!");
		document.getElementById(campo_cpf).value = '' ;
		document.getElementById(campo_cpf).focus() ;
		return false;        
    }
    
	// Aqui começa a checagem do CPF
	var posicao, j, soma, dv, dv_informado;
	var digito = new Array(10);
	dv_informado = CPF.substr(9, 2); // Retira os dois últimos dígitos do número informado
	
	// Desemembra o número do CPF na array DIGITO
	for (j=0; j<=8; j++) 
	{
		digito[j] = CPF.substr( j, 1);
	}
	
	// Calcula o valor do 10º dígito da verificação
	posicao = 10;
	soma = 0;
	for (j=0; j<=8; j++) 
	{
		soma = soma + digito[j] * posicao;
		posicao = posicao - 1;
	}
	
	digito[9] = soma % 11;
	
	if (digito[9] < 2) 
	{
		digito[9] = 0;
	}
	else
	{
		digito[9] = 11 - digito[9];
	}
	
	// Calcula o valor do 11º dígito da verificação
	posicao = 11;
	soma = 0;
	for (j=0; j<=9; j++) 
	{
		soma = soma + digito[j] * posicao;
		posicao = posicao - 1;
	}
	
	digito[10] = soma % 11;
	
	if (digito[10] < 2) 
	{
		digito[10] = 0;
	}
	else 
	{
		digito[10] = 11 - digito[10];
	}
	
	// Verifica se os valores dos dígitos verificadores conferem
	dv = digito[9] * 10 + digito[10];
	
	if (dv != dv_informado) 
	{
		alert("C.P.F. inválido!");
		document.getElementById(campo_cpf).value = '' ;
		document.getElementById(campo_cpf).focus() ;
		return false;
	}
	else
	{
	    return true;
	}
	
}

function AcceptTerm (status)
{
	if (status == true)
	{
		document.getElementById('SubmitButton').style.display = '';
	}
	else
	{
		document.getElementById('SubmitButton').style.display = 'none';
	}
}
