/********************************************************
* Nome: isNull
* Descrição: Verifica se o conteúdo de um campo é vazio ou não.
* Parâmetros: 
*		oForm - O objeto formulário que contenha o campo a ser validado.
*		field - Nome do campo a ser validado.
*       msg - Mensagem a ser mostrada ao usuário caso o campo esteja vazio.
*
* 2003 Modem Media do Brasil Ltda.
********************************************************/
function isNull(oForm, field, msg) {
   var srcField, typeField, aux;
	srcField = oForm[field];
	typeField = (typeof srcField.type == "undefined" ? srcField[0].type : srcField.type);
	if(typeField == "radio" || typeField == "checkbox")
	{
		return isRadioNull(oForm, field, msg);		
	}	
	else if(typeField == "select-one")
	{
		return isComboNull(oForm, field, msg);			
	}
	else if(typeField == "text" ||
            typeField == "textarea" ||
            typeField == "file" ||
            typeField == "password")
	{
		return isTextNull(oForm, field, msg);
	}
}

/********************************************************
* Nome: isTextNull
* Descrição: Verifica se o conteúdo de um campo texto é vazio ou não.
* Parâmetros: 
*		oForm - O objeto formulário que contenha o campo a ser validado.
*		field - Nome do campo a ser validado.
*       msg - Mensagem a ser mostrada ao usuário caso o campo esteja vazio.
*
* 2003 Modem Media do Brasil Ltda.
********************************************************/
function isTextNull(oForm, field, msg) {
   var srcField, reg_exp, aux;
	srcField = oForm[field];
	reg_exp = / /g;
	aux = srcField.value.replace(reg_exp,'');
	if (aux == '') { 
		alert(msg);
		srcField.focus();
		return true;
	}
	return false;
}

/********************************************************
* Nome: isRadioNull
* Descrição: Verifica se um campo radio button foi selecionado dentro do conjunto
*				 de radio buttons ou caso seja único.
* Parâmetros: 
*		oForm - O objeto formulário que contenha o(s) campo(s) radio button.
*		field - Nome do campo a ser validado.
*       msg - Mensagem a ser mostrada ao usuário caso nenhum radio tenha sido selecionado.
*
* 2003 Modem Media do Brasil Ltda.
********************************************************/
function isRadioNull(oForm, field, msg) {
   var srcField;
	srcField = oForm[field];
	if(typeof( srcField[0] ) == "undefined")
	{
		  if ( srcField.checked )
		    return false;
		  else
		  {
				alert(msg);
				srcField.focus();
				return true;		  		
		  }
	}
	else
	{
		for ( var iCount = 0 ;  ; iCount ++ )
		{
		  if ( typeof( srcField[iCount] ) == "undefined" )
		    break;
		  if ( srcField[iCount].checked )
		    return false
		}
		alert(msg);
		srcField[0].focus();
		return true;
	}
}

/********************************************************
* Nome: isComboNull
* Descrição: Verifica se alguma opção do combo foi selecionada ou não.
* Parâmetros: 
*		oForm - O objeto formulário que contenha o combo.
*		field - Nome do combo a ser validado.
*       msg - Mensagem a ser mostrada ao usuário caso nenhuma opção do combo tenha sido selecionada.
*
* 2003 Modem Media do Brasil Ltda.
********************************************************/
function isComboNull(oForm, field, msg) {
   var srcField;
	srcField = oForm[field];
  if ( srcField[srcField.selectedIndex].value == "" )
  {
	 alert(msg);
    srcField.focus()
    return true
  }
  return false
}


/********************************************************
* Nome: isEmail
* Descrição: Verifica se o conteúdo de um campo texto corresponde a um email ou não.
* Parâmetros: 
*		oForm - O objeto formulário que contenha o campo a ser validado.
*		field - Nome do campo a ser validado.
*       msg - Mensagem a ser mostrada ao usuário caso o texto do campo não corresponda a um email.
*
* 2003 Modem Media do Brasil Ltda.
********************************************************/
function isEmail(oForm, field, msg) {
   var srcField;
	srcField = oForm[field];
  	var str = srcField.value
	if (str != "") {
	  	var r1 = new RegExp("(@.*@)|(\\.\\.)|(@\\.)|(^\\.)");
	  	var r2 = new RegExp("^.+\\@(\\[?)[a-zA-Z0-9\\-\\.]+\\.([a-zA-Z]{2,3}|[0-9]{1,3})(\\]?)$");
	  	if ( (!r1.test(str) && r2.test(str)) )
	   	 return true
	  	alert(msg);
	  	srcField.focus();
	  	return false
	} else
		return true;
}


/********************************************************
* Nome: isCPF
* Descrição: Verifica se o conteúdo de um campo texto corresponde a um cpf válido ou não.
* Parâmetros: 
*		oForm - O objeto formulário que contenha o campo a ser validado.
*		field - Nome do campo a ser validado.
*       msg - Mensagem a ser mostrada ao usuário caso o texto do campo não corresponda a um cpf válido.
*
* 2003 Modem Media do Brasil Ltda.
********************************************************/
function isCPF(oForm, field, msg) {
   var oInput;
	oInput = oForm[field];
	var s = oInput.value
	while(s.length < 11)
		s = "0" + s;
	
	var i;
	var c = s.substr(0,9);
	var dv = s.substr(9,2);
	var d1 = 0;
	for (i = 0; i < 9; i++){
    		d1 += c.charAt(i)*(10-i);
   	}
	if (d1 == 0)
	{
	  alert(msg);
	  oInput.focus();
	  return false;
	}
    d1 = 11 - (d1 % 11);
    if (d1 > 9) d1 = 0;
    if (dv.charAt(0) != d1){
	  alert(msg);
	  oInput.focus();
	  return false;
    }
    
    d1 *= 2;
    for (i = 0; i < 9; i++){
    	d1 += c.charAt(i)*(11-i);
    }
    d1 = 11 - (d1 % 11);
    if (d1 > 9) d1 = 0;
    if (dv.charAt(1) != d1){
		alert(msg);
	  oInput.focus();
	  return false;
    }
    return true;
}


/********************************************************
* Nome: isCNPJ
* Descrição: Verifica se o conteúdo de um campo texto corresponde a um cnpj válido ou não.
* Parâmetros: 
*		oForm - O objeto formulário que contenha o campo a ser validado.
*		field - Nome do campo a ser validado.
*       msg - Mensagem a ser mostrada ao usuário caso o texto do campo não corresponda a um cnpj válido.
*
* 2003 Modem Media do Brasil Ltda.
********************************************************/
function isCNPJ(oForm, field, msg) {
   var oInput;
	oInput = oForm[field];
	var CNPJ = oInput.value
	
	while(CNPJ.length<14)
		CNPJ = "0" + CNPJ
	
	if (CNPJ.length<14)
	{
	  alert(msg);
	  oInput.focus();
	  return false;
	}
		
	CNPJ1 = CNPJ.substr(0, 12);
	CNPJ2 = CNPJ.substr(12, 2);
	Mult = "543298765432";
	Controle = "";
	Digito = 0;
		
	for (j = 1; j <= 2; j++)
	{
		Soma = 0;
		for (i = 0; i <= 11; i++)
		{
			Soma = Soma + (parseInt(CNPJ1.substr(i, 1)) * parseInt(Mult.substr(i, 1)));
		}
		if (j == 2)
		{
			Soma = Soma + (2 * Digito);
		}
		Digito = (parseInt(Soma) * 10) % 11;
		if (Digito == 10)
		{
			Digito = 0;
		}
		Controle = Controle + Digito.toString();
		Mult = "654329876543";			
	}

	if (Controle!=CNPJ2){		
		alert(msg)
		oInput.focus()
		return false;
	}
	else
	{
	   return true
	}	
}

/********************************************************
* Nome: isCNPJCPF
* Descrição: Verifica o tamanho do conteudo do campo e repassa para validar CPF ou CNPJ
* Parâmetros: 
*		oForm - O objeto formulário que contenha o campo a ser validado.
*		field - Nome do campo a ser validado.
*       msg - Mensagem a ser mostrada ao usuário caso o texto do campo não corresponda a um cnpj válido.
*
* 2003 Modem Media do Brasil Ltda.
********************************************************/
function isCNPJCPF(oForm, field, msg) {
	var oInput;
	oInput = oForm[field];
	var s = oInput.value
	if (s.length <= 11)
		return isCPF(oForm, field, msg);
	else
		return isCNPJ(oForm, field, msg);
}

/********************************************************
* Nome: isData
* Descrição: Verifica se o conteúdo de um campo texto corresponde a uma data válida ou não.
* Parâmetros: 
*		oForm - O objeto formulário que contenha o campo a ser validado.
*		field - Nome do campo a ser validado.
*       msg1 - Mensagem a ser mostrada ao usuário caso o texto do campo não esteja no formato correto dd/mm/aaaa
*       msg2 - Mensagem a ser mostrada ao usuário caso o texto do campo não corresponda a uma data válida.
*
* 2003 Modem Media do Brasil Ltda.
********************************************************/
function isData(oForm, field, msg1, msg2) {
   var oInput;
	oInput = oForm[field];
	
	if(oInput.value == "") {
		return true;
	}
	
	else if (isTextNull(oForm, field, msg2)) 
	{
		return false;
	}
	else if(oInput.value.substring(0,10).length != 10)
	{
		alert(msg1);
		oInput.select();
		oInput.focus();
		return false;
	}
	else if((oInput.value.substr(2,1) != "/") || (oInput.value.substr(5,1) != "/"))
	{
		alert(msg1);
		oInput.select();
		oInput.focus();
		return false;
	}
	else if(!isNaN(parseInt(oInput.value.substr(0,2))) && !isNaN(parseInt(oInput.value.substr(3,2))) && !isNaN(parseInt(oInput.value.substr(6,4))))
	{
		var iDia,iMes,iAno;
		var dData;
		iDia = oInput.value.substr(0,2);
		iMes = oInput.value.substr(3,2);
		iAno = oInput.value.substr(6,4);
		dData = new Date(iAno,iMes - 1,iDia);
		if(iDia != dData.getDate())
		{
			alert(msg2);
			oInput.select();
			oInput.focus();
			return false;
		}
		else if(iMes != (dData.getMonth()+1))
		{
			alert(msg2);
			oInput.select();
			oInput.focus();
			return false;
		}
		else if(iAno != dData.getFullYear())
		{
			alert(msg2);
			oInput.select();
			oInput.focus();
			return false;
		}			
	}
	else
	{
		alert(msg1);
		oInput.select();
		oInput.focus();
		return false;
	}
	return true;

}


/********************************************************
* Nome: isDataMes
* Descrição: Verifica se o conteúdo de um campo texto corresponde a uma data (mês/ano) válida ou não.
* Parâmetros: 
*		oForm - O objeto formulário que contenha o campo a ser validado.
*		field - Nome do campo a ser validado.
*       msg1 - Mensagem a ser mostrada ao usuário caso o texto do campo não esteja no formato correto mm/aaaa
*       msg2 - Mensagem a ser mostrada ao usuário caso o texto do campo não corresponda a um mês válido.
*       msg3 - Mensagem a ser mostrada ao usuário caso o texto do campo não corresponda a um ano válido.
*
* 2003 Modem Media do Brasil Ltda.
********************************************************/
function isDataMes(oForm, field, msg1 , msg2, msg3) {
   var oInput;
	oInput = oForm[field];
	if (isTextNull(oForm, field, msg2)) 
	{
		return false;
	}
	else if(oInput.value.substring(0,7).length != 7)
	{
		alert(msg1);
		oInput.select();
		oInput.focus();
		return false;
	}
	else if (oInput.value.substr(2,1) != "/")
	{
		alert(msg1);
		oInput.select();
		oInput.focus();
		return false;
	}
	else if(!isNaN(parseInt(oInput.value.substr(0,2))) && !isNaN(parseInt(oInput.value.substr(3,4))) )
	{
		var iDia,iMes,iAno;
		var dData;
		iDia = "01";
		iMes = oInput.value.substr(0,2);
		iAno = oInput.value.substr(3,4);
		dData = new Date(iAno,iMes - 1,iDia);
		if(iMes != (dData.getMonth()+1))
		{
			alert(msg2);
			oInput.select();
			oInput.focus();
			return false;
		}
		else if(iAno != dData.getFullYear())
		{
			alert(msg3);
			oInput.select();
			oInput.focus();
			return false;
		}			
	}
	else
	{
		alert(msg1);
		oInput.select();
		oInput.focus();
		return false;
	}
	return true;

}


/********************************************************
* Nome: isInteger
* Descrição: Verifica se o conteúdo de um campo texto corresponde a um valor numérico inteiro ou não.
* Parâmetros: 
*		oForm - O objeto formulário que contenha o campo a ser validado.
*		field - Nome do campo a ser validado.
*       msg - Mensagem a ser mostrada ao usuário caso o texto do campo não corresponda a um valor numérico inteiro.
*
* 2003 Modem Media do Brasil Ltda.
********************************************************/
function isInteger(oForm, field, msg) {
   var oInput;
	oInput = oForm[field];
	var sInput = oInput.value;
	
	while ( sInput.charAt(0) == "0" )
	{
	 	sInput = sInput.substring(1);
	}
	
	var reg_exp, aux;
	reg_exp = / /g;
	aux = sInput.replace(reg_exp,'');
	
	if(aux != '')
	{
		if ( !isNaN(parseInt(sInput)) )
		 if ( String(parseInt(sInput)) == String(sInput) )
		 {
		/*
		   if ( typeof(iMaxValue) != "undefined" )
		   {
		     if ( parseInt(oInput.value) > iMaxValue ) {
		       alert("Esse campo não deve ser maior que " + String(iMaxValue))
		       return false
		     }
		   }
		 */
		   return true;
		 }
		alert(msg);
		oInput.focus();		
		return false;
	}
	else
	{
		return true;
	}
}


/********************************************************
* Nome: isNumber
* Descrição: Verifica se o conteúdo de um campo texto corresponde a um valor numérico ou não.
* Parâmetros: 
*		oForm - O objeto formulário que contenha o campo a ser validado.
*		field - Nome do campo a ser validado.
*       msg - Mensagem a ser mostrada ao usuário caso o texto do campo não corresponda a um valor numérico.
*
* 2003 Modem Media do Brasil Ltda.
********************************************************/
function isNumber(oForm, field, msg) {
   var oInput;
	oInput = oForm[field];
	var sInput = oInput.value;
	
	while ( sInput.charAt(0) == "0" )
	{
	 	sInput = sInput.substring(1);
	}
	
	var reg_exp, aux;
	reg_exp = / /g;
	aux = sInput.replace(reg_exp,'');
	
	if(aux != '')
	{		
		reg_exp = /,/g;
		aux = sInput.replace(reg_exp,'.');
		if ( !isNaN(parseFloat(aux)) )
		   return true;
		alert(msg);
		oInput.focus();		
		return false;
	}
	else
	{
		return true;
	}
}

/********************************************************
* Nome: isTime
* Descrição: Verifica se o conteúdo de um campo de horário corresponde a hh:mm
* Parâmetros: 
*		oForm - O objeto formulário que contenha o campo a ser validado.
*		field - Nome do campo a ser validado.
*       msg - Mensagem a ser mostrada ao usuário caso o texto do campo não corresponda a um valor válido.
*
* 2003 Modem Media do Brasil Ltda.
********************************************************/
function isTime(oForm, field, msg) {	
	var oInput;
	oInput = oForm[field];
	var sInput = oInput.value;
	
	if ( sInput.length == 0 )
	  return true

	aDate = String(sInput).split(":")
	if ( aDate.length == 2 )
	{
		if ( !isNaN(aDate[0]) && !isNaN(aDate[1]) )
		{
		      if ( aDate[0].length != 2 || aDate[1].length != 2 )
		      {
		      	alert(msg);
					oInput.focus();
		      	return false
		      }

			if ( (parseInt(aDate[0],10) > -1) && (parseInt(aDate[0],10) < 24) )
			{
				if( (parseInt(aDate[1],10) > -1) && (parseInt(aDate[1],10) < 60) )
				{
				  return true
				}
				else
				{
  				alert(msg);
				oInput.focus();
  				return false
				}
			}
			else
			{
				alert(msg);
				oInput.focus();
				return false
			}
		}
		else {
			alert(msg);
			oInput.focus();
			return false
		}
	}
	alert(msg);
	oInput.focus();
	return false
}


/********************************************************
* Nome: isCurrency
* Descrição: Retira da variável os pontos e subtitui a vírgula por ponto.
* Parâmetros: 
*		oForm - O objeto formulário que contenha o campo a ser validado.
*		field - Nome do campo a ser validado.
*       msg - Mensagem a ser mostrada ao usuário caso o texto do campo não corresponda a um valor válido.
*
* 2003 Modem Media do Brasil Ltda.
********************************************************/
function isCurrency(oForm, field, msg) {
	var oInput;
	var valueFinal;
	oInput = oForm[field];
	var sInput = oInput.value;
	
	sInput = sInput.replace('.','');
	
	valueFinal = sInput.replace(',','.');

	oInput.value = valueFinal;
	return true;

	//alert(msg);
	//return false;
}

/********************************************************
* Nome: isCep
* Descrição: Verifica se o CEP digitado está no formato válido
* Parâmetros:
*		oForm - O objeto formulário que contenha o campo a ser validado.
*		field - Nome do campo a ser validado.
*		  msg - Mensagem a ser mostrada ao usuário caso o texto do campo não corresponda a um valor válido.
*
* 2004 Interativa Comunicação e Tecnologia
********************************************************/
function isCep(oForm, field, msg)
{
	var oInput;
	oInput = oForm[field];
	var sInput = oInput.value;
	
  if (sInput == "")
  {
    alert(msg);

    return (false);
  } 

  if (sInput.length <= 4)
  {
   	alert(msg);

   	return (false);
  }  

  { 
   var Numeros = "0123456789";
   var Posic, Carac;
   var Temp = sInput.length;    
   var Cont = 0;
   for (var i=0; i < Temp; i++)   
   {  
   Carac =  sInput.charAt (i);
   Posic  = Numeros.indexOf (Carac);   
   if (Posic > -1)   
	  Cont++;      
   }   
   if (Cont == 9)
   {
    	alert(msg);

    	return (false);
   } 
 }
  { 
   var Numeros = "0123456789-";
   var Posic, Carac;
   var Temp = sInput.length;    
   var Cont = 0;
   for (var i=0; i < Temp; i++)   
   {  
   Carac =  sInput.charAt (i);
   Posic  = Numeros.indexOf (Carac);   
   if (Posic == -1)   
      {	  
    	alert(msg);

    	return (false);
      }
   }   
 }
 
 return (true);
 
}    

/***********************************************
* Nome: MascaraCEP
* Descrição: Cria uma mascara para o campo de CEP
* Parâmetros:
*			formtato - padrão do CEP a ser formatado
*			keypress - código da tecla digitada
*			 objeto  - objeto na qual é aplicada a função
*
* 2004 Interativa Comunicação e Tecnologia
***********************************************/
function MascaraCEP (formato, keypress, objeto)
{
	campo = eval (objeto);
	if (formato=='CEP')
		{
		caracteres = '01234567890';
		separacoes = 1;
		separacao1 = '-';
		conjuntos = 2;
		conjunto1 = 5;
		conjunto2 = 3;
		if ((caracteres.search(String.fromCharCode (keypress))!=-1) && campo.value.length < 
		(conjunto1 + conjunto2 + 1))
			{
			if (campo.value.length == conjunto1) 
			   campo.value = campo.value + separacao1;
			}
		else 
			event.returnValue = false;
	}
}

/***********************************************
* Nome: MascaraTelefone 
* Descrição: Cria uma mascara para telefones
*
***********************************************/
function MascaraTelefone (formato, keypress, objeto)
{
	campo = eval (objeto);
	if (formato=='TEL')
		{
		caracteres = '01234567890';
		separacoes = 1;
		separacao1 = '-';
		conjuntos = 2;
		conjunto1 = 5;
		conjunto2 = 3;
		if ((caracteres.search(String.fromCharCode (keypress))!=-1))
			{
				event.returnValue = true;
			}
		else 
			event.returnValue = false;
	}
}