
/**
*Substitui todas as ocorrencias de token por newtoken na String
*/
String.prototype.replaceAll = function(token, newtoken) 
{
	var value = this;	
	while(value.indexOf(token) != -1) 
	{
 		value = value.replace(token, newtoken);
	}
	return value;
}

function isRadio(campo) 
{
    if(campo.length)
    {
        if(campo[0].type == "radio")
        {
        	return true;
        }
    }
    else
    {
        if(campo.type == "radio")
        {
        	return true;
        }
    }
    return false;
} 

function fnFormataDecimal(campo, separadorDecimal, casasDecimais)
{
	var separadorMilhar = '.';	
	if(separadorDecimal == separadorMilhar)
	{
		separadorMilhar = ',';
	}
	
	var valor = campo.value;
    
    //Retira caracteres não numéricos
    for(var i = 0; i < valor.length; i++)
    {
    	if(!CaracterNumerico(valor.charAt(i)))
    	{
    		valor = valor.replace(valor.charAt(i), "");
    		i--;
    	}
    }
    
    /*
    *Verifica se o tamanho do conteudo formatado será maior que 
    *o tamanho máximo do campo
    *se for maior retira o primeiro caracter
    */    
    var tamanho = valor.length;
    var nSeparadores = 0;
    var estouro = true;    
    do
    {
	    if((tamanho < (casasDecimais + 3)) && (tamanho > 1))
	    {
	    	nSeparadores = 1;
	    }
	    else
	    if(tamanho > (casasDecimais + 3))
	    {
	    	nSeparadores = tamanho - casasDecimais;
	    	if(nSeparadores % 3 == 0)
	    	{
	    		nSeparadores = (nSeparadores / 3) - 1;
	    	}
	    	else
	    	{
	    		nSeparadores = (nSeparadores / 3);
	    	}
	    	nSeparadores++;
	    }
	    
	    if((tamanho + nSeparadores) > campo.maxLength)
	    {
	    	valor = valor.substring(1);
	    	tamanho = valor.length;
	    	nSeparadores = 0;
	    }
	    else
	    {
	    	estouro = false;
	    }
	}
	while(estouro)
    
    var valorFormatado = '';
    if(valor.length > 0)
    {
	    /*
	    *Se o valor tiver mais de 1 caracter e menos de (casasDecimais + 1)
	    *Adiciona '0' à esquerda
	    */	    
	    while(valor.length < (casasDecimais + 1))
	    {
	    	valor = "0" + valor;
	    }
	    	    
	    /*
	    *Se o valor tiver mais de (casasDecimais + 1) caracteres
	    *Retira todos os '0's à esquerda
	    */
	    while((valor.length > (casasDecimais + 1)) && (valor.charAt(0) == "0"))
	    {
	    	valor = valor.substring(1);
	    }
	    
	    var formatouD = false;
		var count = 0;
		for(var i = (valor.length - 1); i >= 0; i--)
		{			
			//adiciona o separador de milhares
			if((count == 3) && (formatouD))
			{
				valorFormatado = separadorMilhar + valorFormatado;
				count = 0;
			}
			
			//adiciona o separador de casas decimais
			if((count == casasDecimais) && (!formatouD))
			{
				valorFormatado = separadorDecimal + valorFormatado;
				formatouD = true;
				count = 0;
			}			
			
			valorFormatado = valor.charAt(i) + valorFormatado;
			count++;
		}
	}
	
	campo.value = valorFormatado;
}

function focusNext(campo)
{
    var form = campo.form;
    
    for(var i = 0; i < form.elements.length; i++)
    {
    	var elemento = form.elements[i];
    	if(elemento == campo)
    	{
    		if((i + 1) < form.elements.length)
    		{
    			try
    			{
    				form.elements[i + 1].focus();
    				return;
    			}catch(e){}
    		}
    		else
    		{
    			try
    			{
    				focusSalvar();
    			}
    			catch(e){}
    		}
    	}    
    }
    
    /*
    while(campo.nextSibling)
	{
		campo = campo.nextSibling;
		
		try
		{
			campo.focus();
			return;
		}
		catch(e){}
	}
	*/
}

function TEL_PART(value)
{
	if(value.length < 4)
	{
		return false;
	}
	else
	if(!Inteiro(value))
	{
		return false;
	}
	return true;
}

function DDD(value)
{
	if(value.length < 2)
	{
		return false;
	}
	else
	if(!Inteiro(value))
	{
		return false;
	}
	return true;
}

function Vazio(campo)
{
    if(campo.value == "")
	return true;
    else
    return false;
}



function RadioNaoSelecionado(campo)
{
    if(campo.length)
    {
        for(var i = 0;  i < campo.length; i++)
        {
            if(campo[i].checked)
                return false;
        }

        return true;
    }
    else
    {
        if(campo.checked)
            return false;
        else
            return true;
    }
}

function CheckBoxSelecionado(form, prefix)
{
	var checked = false;
	for(var i = 0; i < form.elements.length; i++)
	{
		if(form.elements[i].name.indexOf(prefix) != -1)
		{
			if(form.elements[i].checked)
			{
				checked = true;
				break;
			}
		}
	}
	
	return checked;
}

/**
*Verifica se o radio tem algum item selecionado
*
*@param campo field html
*
*@return 'true' se algum dos itens estiver selecionado 
*        caso contrário retorna 'false'
*/
function NaoSelecionado(campo)
{
    if(campo.options)
    {
	if(campo.options[campo.selectedIndex].value == "-1")

		return true;

	else

		return false;
    }
    else if(campo.value)
    {
        return Vazio(campo);
    }
    else
        return true;
}



function Inteiro(texto)

{   

	if(texto.length == 0)

		return false; 

		

	for (var i=0; i < texto.length; i++)

	{

		if (!CaracterNumerico(texto.charAt(i)))

			return false;

	}

	

	return true;

}

function Inteiro1(texto)

{  
 if(texto=="0.0")
{
          return true;
          }
          else
          
          {

	if(texto.length == 0)

		return false; 

		

	for (var i=0; i < texto.length; i++)

	{

		if (!CaracterNumerico(texto.charAt(i)))

			return false;

	}

	

	return true;
}
}



function CaracterNumerico(caracter)
{ 
	return (caracter >= "0" && caracter <=  "9" ? true : false );
}

function Data(data)
{
	var parts = data.split("/");
	
	if(parts.length)
	{
		if(parts.length == 3)
		{
			var dia = data.split("/")[0];
			var mes = data.split("/")[1];
			var ano = data.split("/")[2];
		
			return DataValida(dia, mes, ano);
		}
		else
		if(parts.length == 2)
		{
			var dia = '01';
			var mes = data.split("/")[0];
			var ano = data.split("/")[1];
		
			return DataValida(dia, mes, ano);
		}
		else
		{
			return false;
		}
	}
	else
	{
		return false;
	}
}

function DataValida(dia, mes, ano)
{ 

	if (!Inteiro(dia) || !Inteiro(mes) || !Inteiro(ano))

		return false;

		

	var t_dia = parseInt(dia,10);

	var t_mes = parseInt(mes,10);

	var t_ano = parseInt(ano,10);

	

	return ((t_dia < 1 || t_dia > DiasMes(t_mes, t_ano)) || (t_mes < 1 || t_mes > 12) || (t_ano < 1900) ? false : true );

}

function ComparaData(a_dia, a_mes, a_ano, b_dia, b_mes, b_ano)
{ 
	a = parseInt(a_ano + padLeft(a_mes, '0', 2) + padLeft(a_dia, '0', 2));
	b = parseInt(b_ano + padLeft(b_mes, '0', 2) + padLeft(b_dia, '0', 2));
	
	if(a < b)
	{
		return -1;
	} 
	else
	if(a == b)
	{
		return 0;
	}
	else
	{
		return 1;	
	}
}

function HorarioValido(hora, minuto)
{ 

	if (!Inteiro(hora) || !Inteiro(minuto))
		return false;

	var t_hora = parseInt(hora,10);
	var t_minuto = parseInt(minuto,10);

	return ((t_hora < 0 || t_hora > 23) || (t_minuto < 0 || t_minuto > 59) ? false : true );
}


function DiasMes( p_mes, p_ano )

{

  var t_dias_nor  = [31,28,31,30,31,30,31,31,30,31,30,31];

  var t_dias_bis  = [31,29,31,30,31,30,31,31,30,31,30,31];



  return ( Bissexto(p_ano) ? t_dias_bis[p_mes-1] : t_dias_nor[p_mes-1] );

}



function Bissexto( p_ano )

{

  return ( p_ano%4==0 ? (p_ano%100==0 ?  (p_ano%400==0 ? true : false) : true) : false);

}



function Email(p_parm)

{

	return ( p_parm.indexOf("@") > 0 && p_parm.indexOf("@") != p_parm.length - 1 ? true : false );

}	



function CEP( p_parm ) {

  var re_cep = /\d{5}\-\d{3}/;

  return ( p_parm.length == 9 ? 

            ( p_parm.substr("-") != "" ? 

                ( re_cep.test(p_parm) ? 

                    true : false )

	 : false ) : ( (p_parm.length == 8 || p_parm.length == 5)  && Inteiro(p_parm) ? true : false ) );

}



function CNPJ( p_parm ) {


  var re_cnpj = /\d{2}\.\d{3}\.\d{3}\/\d{4}\-\d{2}/;
  

  var t_formato = ( p_parm.length == 18 ? ( re_cnpj.test(p_parm) ? true : false )

				        : ( p_parm.length == 14 && Inteiro(p_parm) ? true : false ) );

  if ( !t_formato ) return false;

  // calcula dígitos verificadores 99.999.999/0001-XY

  else

 {
    
	p_parm = p_parm.replace(".", "");
	p_parm = p_parm.replace(".", "");
	p_parm = p_parm.replace("/", "");
	p_parm = p_parm.replace("-", "");
    	

      var i, j, k, t_soma=0, t_digito=0, t_resto=0;
	  // primeiro digito X

      for (i=5,k=0; i>1; i--,k++)

          t_soma += Number(p_parm.charAt(k))*i;

      for (i=9; i>1; i--,k++)

          t_soma += Number(p_parm.charAt(k))*i;

      t_resto = t_soma % 11;

      t_digito = ( t_resto < 2 ? 0 : (11-t_resto) );

      if ( p_parm.charAt(12) != t_digito ) return false;



      // segundo digito Y

      for (t_soma=0,i=6,k=0; i>1; i--,k++)

          t_soma += Number(p_parm.charAt(k))*i;

      for (i=9; i>2; i--,k++)

          t_soma += Number(p_parm.charAt(k))*i;

      t_soma += t_digito * 2;

      t_resto = t_soma % 11;

      t_digito = ( t_resto < 2 ? 0 : (11-t_resto) );

      if ( p_parm.charAt(13) != t_digito ) return false;

    }

  return true;

}



function CPF( p_parm ) {



    var re_cpf = /\d{3}\.\d{3}\.\d{3}\-\d{2}/;

  var t_formato = ( p_parm.length == 14 ? ( re_cpf.test(p_parm) ? true : false )

                                        : ( p_parm.length == 11 && Inteiro(p_parm) ? true : false ) );

  if ( !t_formato ) return false;

  // calcula dígitos verificadores 999.999.999-XY

  else

    {

      var i, j, k, t_soma1=0, t_soma2=0, t_digito=0, t_resto=0;



      // primeiro digito X

      for (i=10,j=11,k=0; i>1; i--,j--,k++)  {

          t_soma1 += Number(p_parm.charAt(k))*i;

          t_soma2 += Number(p_parm.charAt(k))*j;

      }

      t_resto = t_soma1 % 11;

      t_digito = ( t_resto < 2 ? 0 : (11-t_resto) );

      if ( p_parm.charAt(9) != t_digito ) return false;



      // segundo digito Y

      t_soma2 += t_digito * 2;

      t_resto = t_soma2 % 11;

      t_digito = ( t_resto < 2 ? 0 : (11-t_resto) );

      if ( p_parm.charAt(10) != t_digito ) return false;

    }

  return true;

}

function trim(value)
{
	while(value.charCodeAt(0) == '32')
	{
   		value = value.substring(1, value.length);
  	}
  	
  	while(value.charCodeAt(value.length-1) == "32")
  	{
   		value = value.substring(0, value.length-1);
  	}
  	
  	return value;
}

function fnFormataValorOLD(campo, evento)
{
    var casasDecimais = 2;
    var separadorDecimal = ',';
    
    var valor = campo.value;
    
    
    var code = (window.Event) ? evento.which : evento.keyCode;
	
	alert("code: " + code);
    
    //campo.value = fnFormataCasas(valor);
}

function fnFormataCasas(txt_valor)
{
	

	if(casas)
	{
		alert("casas");
	}
}

function RRfnFormataCasas(txt_valor, casas)
{
    var valor = txt_valor;
    valor = valor.replace(".","").replace(",","");

	// TIRA CARACTERES INVÁLIDOS
    var temp_valor = "";
    for(var i = 0; i < valor.length; i++)
    {
        if(valor.charAt(i) >= '0' && valor.charAt(i) <= '9')
            temp_valor = temp_valor + valor.charAt(i);
    }
    
    valor = temp_valor;
	var tamanho = valor.length;
	    
    if(tamanho > 2)
    {
        var centavos = valor.substring(valor.length - 2,valor.length);
        var inteiro = valor.substring(0,valor.length - 2);
        var inteiroFormatado = "";

        var cont = 0;
        for(var i = inteiro.length - 1; i >= 0; i--)
        {
            inteiroFormatado = inteiro.charAt(i) + inteiroFormatado;
            cont++;

            if(cont == 3 && i > 0)
            {
                inteiroFormatado = "." + inteiroFormatado;
                cont = 0;
            }
        }                   
		temp_valor =  inteiroFormatado + "," + centavos;
    }    
    return temp_valor ;
}

function fnFormataDinheiro(txt_valor)
{
    var valor = txt_valor;
    valor = valor.replace(".","").replace(",","");

	// TIRA CARACTERES INVÁLIDOS
    var temp_valor = "";
    for(var i = 0; i < valor.length; i++)
    {
        if(valor.charAt(i) >= '0' && valor.charAt(i) <= '9')
            temp_valor = temp_valor + valor.charAt(i);
    }
    
    valor = temp_valor;
	var tamanho = valor.length;
	    
    if(tamanho > 2)
    {
        var centavos = valor.substring(valor.length - 2,valor.length);
        var inteiro = valor.substring(0,valor.length - 2);
        var inteiroFormatado = "";

        var cont = 0;
        for(var i = inteiro.length - 1; i >= 0; i--)
        {
            inteiroFormatado = inteiro.charAt(i) + inteiroFormatado;
            cont++;

            if(cont == 3 && i > 0)
            {
                inteiroFormatado = "." + inteiroFormatado;
                cont = 0;
            }
        }                   
		temp_valor =  inteiroFormatado + "," + centavos;
    }    
    return temp_valor ;
}


function LimpaValor(valor)
{
	var temp_valor = "";
    for(var i = 0; i < valor.length; i++)
    {
        if(valor.charAt(i) >= '0' && valor.charAt(i) <= '9')
            temp_valor = temp_valor + valor.charAt(i);
    }
    return temp_valor;
}

function padLeft(string, caracter, qtde)
{
	while(string.length < qtde)
	{
		string = caracter + string;
	}
	
	return string;
}

function padRigth(string, caracter, qtde)
{
	while(string.length < qtde)
	{
		string = string + caracter;
	}
	
	return string;
}

function mascara(o,f) 
{
	v_obj = o;
	v_fun = f;
	setTimeout("execmascara()",1);
}

function execmascara()
{
    v_obj.value = v_fun(v_obj.value);
}

function apenasNumeros(valor) 
{
    return valor.replace(/[^0-9]/,"");
}
