function validaConteudo(condicao, texto)
{
  // valida string
  // aceita apenas numeros e virgula --> /[^0-9,]/i;
  var caracteresInvalidos = condicao;
  if(texto.search(caracteresInvalidos) != -1)
  {
    return false;
  }
  return true;
}


// <!-- função para retirar espaços em branco das estremidades de uma string -->
function trim(sValor)
{
   sRetorno=sValor;
   for (iTrim=0,nTrim=Math.ceil(sRetorno.length/2);iTrim<nTrim;iTrim++)
   {
     if (sRetorno.charAt(0)==' ')
     {  
       sRetorno=sRetorno.substring(1,sRetorno.length);
     };
     if (sRetorno.charAt(sRetorno.length-1)==' ')
     {
       sRetorno=sRetorno.substring(0,sRetorno.length-1);
     };
   }
   return sRetorno;
}

function formataValor(obj, digitos)
{
   if(obj.value.length == digitos)
   {
     if (obj.value.indexOf(",")==-1)
         obj.value += ",";
    }
 }

function formataValorMonetario(campooriginal,decimais)
{
  var posicaoPontoDecimal;
  var campo = '';
  var resultado = '';
  var pos,sep,dec;
  
  if (campooriginal.value == "")
    return false;

//Retira possiveis separadores de milhar
  for (pos=0; pos < campooriginal.value.length; pos ++)
  {
    if (campooriginal.value.charAt(pos)!='.')
        campo = campo + campooriginal.value.charAt(pos);
  }     

//Formata valor monetário com decimais
  posicaoPontoDecimal = campo.indexOf(',');
  if (posicaoPontoDecimal != -1)
   {
      sep = 0;
      for (pos=posicaoPontoDecimal-1;pos >= 0;pos--)
      {
        sep ++;
        if (sep > 3)
        {
//           resultado = '.' + resultado;
           sep = 1;
        }

        resultado = campo.charAt(pos) + resultado;   
      }

      // Trata parte decimal
      if (parseInt(decimais) > 0 )
      {
         resultado = resultado + ',';
      
         pos=posicaoPontoDecimal+1;
         for (dec = 1;dec <= parseInt(decimais); dec++)
         {
           if (pos < campo.length)
           {
              resultado = resultado + campo.charAt(pos);
              pos++;
           }
           else
              resultado = resultado + '0';   
         }

      } // trata decimais
   }
   // Trata valor monetário sem decimais
   else
   {
      sep = 0;
      for (pos=campo.length-1;pos >= 0;pos--)
      {
        sep ++;
        if (sep > 3)
        {
//           resultado = '.' + resultado;
           sep = 1;
        }
        resultado = campo.charAt(pos) + resultado;   
      }
      // Trata parte decimal
      if (parseInt(decimais) > 0 )
      {
         resultado = resultado + ',';
         for (dec = 1;dec <= parseInt(decimais); dec++)
         {
              resultado = resultado + '0';   
         }
      } // trata decimais
   }
   campooriginal.value = resultado;
}
    
    function Primeira_Maiuscula(obj)
    {
       var texto, letra, tamanho;
       
       texto = obj.value;
       tamanho = obj.value.length;
       for (var i=0; i<tamanho; i++)
       {
          if (letra == " ")
          {   
             if ((i+1)<tamanho)
             {
                letra = texto.charAt(i+1).toUpperCase();
                texto = texto.substring(0, i+1);        
                texto += letra;
                texto += obj.value.substring(i+2, tamanho);
             }
          }
          else
          {
               letra = texto.charAt(i+1).toLowerCase();
               texto = texto.substring(0, i+1);        
               texto += letra;
               texto += obj.value.substring(i+2, tamanho);
          }
       }
       if (tamanho>0)
       {
          letra = texto.charAt(0).toUpperCase();
          texto = texto.substring(1, tamanho);      
          texto = letra + texto;
       }
       obj.value = texto;
    }


    /****************************************************************************
    Funções de Data
    ****************************************************************************/
    
    function formataData(obj)
    {
      if((obj.value.length == 2) || (obj.value.length == 5))
          obj.value = obj.value + "/";
    }
    
    function validaData(obj)
    { 
      //alert(obj.value.substring(3,5));
      if(obj.value.length > 0)
      { 
          // verificando quantidade de barras
          var qtdBarras = 0;
          for (i = 0; i < obj.value.length; i++)
          {
             if(obj.value.charAt(i) == "/")
                qtdBarras++;
          }
          if(qtdBarras > 2)
          {
            alert("Data invalida. \n" + "Informe apenas duas barras.");            
            obj.value = "";
            obj.focus();
            return false;
          }
            
          // verificando se algum caracter invalido foi digitado
          if(validaConteudo(/[^0-9/]/i, obj.value) == false)
          {
            alert("Data invalida. \n" + "Caracteres invalidos.");            
            obj.value = "";
            obj.focus();
            return false;
          }
          
          // verificando quantidade de caracteres informados
          if(obj.value.length < 10)
          {
             alert("Data invalida. \n" + "Formato de data invalido.");
             obj.value = "";
             obj.focus();
             return false;
          }
          
          // verificando dia informado
          if( (parseInt(obj.value.substring(0,2), 10) <= 0) || (parseInt(obj.value.substring(0,2), 10) > 31) )
          {
             alert("Data invalida. \n" + "Dia deve estar entre 1 e 31");
             obj.value = "";
             obj.focus();
             return false;
          }
          
          // verificando mes informado
          if( (parseInt(obj.value.substring(3,5), 10) <= 0) || (parseInt(obj.value.substring(3,5), 10) > 12) )
          {
             alert("Data invalida. \n" + "Mes deve estar entre 1 e 12");
             obj.value = "";
             obj.focus();
             return false;
          }
          
          // verificando ano informado
          if(parseInt(obj.value.substring(6,10), 10) <= 0)
          {
             alert("Data invalida. \n" + "Ano deve ser maior que 0");
             obj.value = "";
             obj.focus();
             return false;
          }
          
          return true;
      }
    }
    
//Formatação de strings: Telefone, CEP, CPF
function formatar_string(Objeto, Tipo) 
{
    var mascara = '';
    if (Tipo == 'telefone')
        mascara = '####-####';
    if (Tipo == 'cep')
        mascara = '##.###-###';
    if (Tipo == 'cpf')
        mascara = '###.###.###-##';
    if (Tipo == 'hora')
        mascara = '##:##';

    var campo = Objeto.value.length;
    var saida = mascara.substring(0,1);
    var texto = mascara.substring(campo);
    if (texto.substring(0,1) != saida) 
    {
        Objeto.value += texto.substring(0,1);
    }
}

function validarDataJu(pStr)
{
    //Fonte: http://www.mhavila.com.br/topicos/web/valform.html
    //O que faz: 
    //- valida os dias permitidos de acordo com o mês. 
    //  Para este último, foram criados três grupos alternativos de pares dia/mês: 
    //- Os dias 1 a 29 ((0?[1-9]|[12]\d)) são aceitos em todos os meses (1 a 12): (0?[1-9]|1[0-2]) 
    //- Dia 30 é válido em todos os meses, exceto fevereiro (02): (0?[13-9]|1[0-2]) 
    //- Dia 31 é permitido em janeiro (01), março (03), maio (05), julho (07), agosto (08), outubro (10) e dezembro (12): (0?[13578]|1[02]). 
    //* A única coisa que a expressão não é capaz de testar é a validade do dia 29/fev apenas para anos bissextos.

    var reDate = /^((0?[1-9]|[12]\d)\/(0?[1-9]|1[0-2])|30\/(0?[13-9]|1[0-2])|31\/(0?[13578]|1[02]))\/(19|20)?\d{2}$/;

    if (pStr.value != "")
    {
        if (!reDate.test(pStr.value))
        {
            alert("Data invalida, " + pStr.value + ".");
            pStr.focus();
        }
    }

} // doDate


//Valida CPF
function valida_CPF(s)
{
	var i;
	s = limpa_string(s);
	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) return false;
	d1 = 11 - (d1 % 11);
	if (d1 > 9) d1 = 0;
	if (dv.charAt(0) != d1)
	{
		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)
	{
		return false;
	}
        return true;
}


//Valida GCG
function valida_CGC(s)
{
	var i;
	s = limpa_string(s);
	var c = s.substr(0,12);
	var dv = s.substr(12,2);
	var d1 = 0;
	for (i = 0; i < 12; i++)
	{
		d1 += c.charAt(11-i)*(2+(i % 8));
	}
        if (d1 == 0) return false;
        d1 = 11 - (d1 % 11);
	if (d1 > 9) d1 = 0;
	if (dv.charAt(0) != d1)
	{
		return false;
	}

	d1 *= 2;
	for (i = 0; i < 12; i++)
	{
		d1 += c.charAt(11-i)*(2+((i+1) % 8));
	}
	d1 = 11 - (d1 % 11);
	if (d1 > 9) d1 = 0;
	if (dv.charAt(1) != d1)
	{
		return false;
	}
        return true;
}

function limpa_string(S){
// Deixa so' os digitos no numero
var Digitos = "0123456789";
var temp = "";
var digito = "";
    for (var i=0; i<S.length; i++){
      digito = S.charAt(i);
      if (Digitos.indexOf(digito)>=0){temp=temp+digito}
    }
    return temp
}

//Exemplo de como usar: OpcoesPagamento.aspx.cs
function open_window(obj)
{
    window.open(obj,'', 'height=600, width=800,status= no, resizable= yes, scrollbars=yes, toolbar=yes,location=no,menubar=yes,top=0,left=0');
}
