function VerificaMax (maxLength, clientId, sender) 
//maxLength => Tamanho máximo que o campo aceita
//ClientId => Id no lado do cliente do campo de texto
{
if(clientId.value.length > maxLength)
{
//Se o numero de caracteres foi maior que o permitido, avisa o usuário
//e retorna false
alert("O campo so suporta 120 caracteres");
return true;
}
else
{
//senao retorna verdadeiro
return false;
}

}
function MascaraCNPJ(obj)
{
    if(mascaraInteiro(obj)==false)
    {
        event.returnValue = false;
    }    
    return formataCampo(obj, '00.000.000/0000-00', event);
}
function validaHora(horario) {
    var hora, min;
    if (!(horario.match(/^[0-9]{2,2}[:]{0,1}[0-9]{2,2}$/))) {
        return false;
    }
    horario = retiraCaracter(horario, ':');
    hora = parseInt(horario.substr(0,2));
    min = parseInt(horario.substr(2,2));
    if ((hora < 0) || (hora >24)) {
        return false;
    }
    if ((min < 0) || (min >59)) {
        return false;
    }
}

function DataHora(evento, objeto){
	var keypress=(window.event)?event.keyCode:evento.which;
	campo = eval (objeto);
	if (campo.value == '00/00/0000 00:00:00')
	{
		campo.value=""
	}

	caracteres = '0123456789';
	separacao1 = '/';
	separacao2 = ' ';
	separacao3 = ':';
	conjunto1 = 2;
	conjunto2 = 5;
	conjunto3 = 10;
	conjunto4 = 13;
	conjunto5 = 16;
	if ((caracteres.search(String.fromCharCode (keypress))!=-1) && campo.value.length < (19))
	{
		if (campo.value.length == conjunto1 )
		campo.value = campo.value + separacao1;
		else if (campo.value.length == conjunto2)
		campo.value = campo.value + separacao1;
		else if (campo.value.length == conjunto3)
		campo.value = campo.value + separacao2;
		else if (campo.value.length == conjunto4)
		campo.value = campo.value + separacao3;
		else if (campo.value.length == conjunto5)
		campo.value = campo.value + separacao3;
	}
	else
		event.returnValue = false;
}

// Adiciona mascara de cep
function MascaraCEP(obj)
{
    if(mascaraInteiro(obj)==false)
    {
        event.returnValue = false;
    }    
    return formataCampo(obj, '00000-000', event);
}

// Adiciona mascara de data
function MascaraData(obj)
{
    if(mascaraInteiro(obj)==false)
    {
        event.returnValue = false;
    }    
    return formataCampo(obj, '00/00/0000', event);
}

// Adiciona mascara ao telefone
function MascaraTelefone(obj)
{    
    if(mascaraInteiro(obj)==false){
        event.returnValue = false;
    }    
    return formataCampo(obj, '(00)(00)0000-0000', event);
}

// Adiciona mascara ao CPF
function MascaraCPF(obj)
{
    if(mascaraInteiro(obj)==false){
        event.returnValue = false;
    }    
    return formataCampo(obj, '000.000.000-00', event);
}

// Valida numero inteiro com mascara
function mascaraInteiro()
{
    if (event.keyCode < 48 || event.keyCode > 57)
    {
        event.returnValue = false;
        return false;
    }
    return true;
}

// Valida data
function ValidaData(obj)
{
    exp = /\d{2}\/\d{2}\/\d{4}/
    if(!exp.test(obj.value))
        alert('Data Invalida!');            
}

// Valida o CPF digitado
function ValidaCPF(obj)
{
    var cpf = obj.value;
    exp = /\.|\-/g
    cpf = cpf.toString().replace( exp, "" );
    var digitoDigitado = eval(cpf.charAt(9)+cpf.charAt(10));
    var soma1=0, soma2=0;
    var vlr =11;
    
    for(i=0;i<9;i++){
        soma1+=eval(cpf.charAt(i)*(vlr-1));
        soma2+=eval(cpf.charAt(i)*vlr);
        vlr--;
    }    
    soma1 = (((soma1*10)%11)==10 ? 0:((soma1*10)%11));
    soma2=(((soma2+(2*soma1))*10)%11);
    
    var digitoGerado=(soma1*10)+soma2;
    if(digitoGerado!=digitoDigitado)    
        alert('CPF Invalido!');        
}

// Valida o CNPJ digitado
function ValidaCNPJ(obj)
{
    var cnpj = obj.value;
    var valida = new Array(6,5,4,3,2,9,8,7,6,5,4,3,2);
    var dig1= new Number;
    var dig2= new Number;
    
    exp = /\.|\-|\//g
    cnpj = cnpj.toString().replace( exp, "" );
    var digito = new Number(eval(cnpj.charAt(12)+cnpj.charAt(13)));
        
    for(i = 0; i<valida.length; i++)
    {
        dig1 += (i>0? (cnpj.charAt(i-1)*valida[i]):0);    
        dig2 += cnpj.charAt(i)*valida[i];    
    }
    dig1 = (((dig1%11)<2)? 0:(11-(dig1%11)));
    dig2 = (((dig2%11)<2)? 0:(11-(dig2%11)));
    
    if(((dig1*10)+dig2) != digito)    
        alert('CNPJ Invalido!');
}

// Formata de forma generica os campos
function formataCampo(campo, Mascara, evento) 
{
    var boleanoMascara;
    
    var Digitato = evento.keyCode;
    exp = /\-|\.|\/|\(|\)| /g
    campoSoNumeros = campo.value.toString().replace( exp, "" );
  
    var posicaoCampo = 0;    
    var NovoValorCampo="";
    var TamanhoMascara = campoSoNumeros.length;;
    
    if (Digitato != 8) 
    {
        for(i=0; i<= TamanhoMascara; i++) 
        {
            boleanoMascara  = ((Mascara.charAt(i) == "-") || (Mascara.charAt(i) == ".")
                                || (Mascara.charAt(i) == "/"))
            boleanoMascara  = boleanoMascara || ((Mascara.charAt(i) == "(")
                                || (Mascara.charAt(i) == ")") || (Mascara.charAt(i) == " "))
            if (boleanoMascara) 
            {
                NovoValorCampo += Mascara.charAt(i);
                  TamanhoMascara++;
            }
            else 
            {
                NovoValorCampo += campoSoNumeros.charAt(posicaoCampo);
                posicaoCampo++;
            }           
        }    
        campo.value = NovoValorCampo;
        return true;
    }
    else 
    {
        return true;
    }
}
	
//Funções de validação de campos
function MascaraTelefone(objeto)
{
   if(objeto.value.length == 0)
     objeto.value = '(' + objeto.value;

   if(objeto.value.length == 3)
      objeto.value = objeto.value + ')';

 if(objeto.value.length == 8)
     objeto.value = objeto.value + '-';
}

function so_numero()
{
	sPermitidos = ",9,37,39,38,40,8,46,"
	prok = sPermitidos.indexOf(","+event.keyCode+",")
	if( prok != -1 ){return true}
	
	if(event.shiftKey){return false}
	
	if( ( event.keyCode >= 96 && event.keyCode <= 105 ) || ( event.keyCode >= 48 && event.keyCode <= 57 ) )
	{return true}
	return false
}
function so_Valor()
{
	sPermitidos = ",9,37,39,38,40,8,46,"
	prok = sPermitidos.indexOf(","+event.keyCode+",")
	if( prok != -1 ){return true}
	
	if(event.shiftKey){return false}
	
	if( ( event.keyCode >= 96 && event.keyCode <= 105 ) || ( event.keyCode >= 48 && event.keyCode <= 57 ) || event.keyCode == 188 || event.keyCode == 190   )
	{
	    return true
	}
	return false
}

function format5Dec(oCam)
{
	//-----------------
	//caso objeto tenha valor selecionado, removê-los durante digitação
	//-----------------
	var sSelText = get_selection(oCam);
	if (sSelText != "")
	{
		oCam.value = "";
		document.selection.clear();
	}
	//-----------------
	
	nCode = event.keyCode
	
	sPermitidos = ",35,36,37,39,9,16,"
	prok = sPermitidos.indexOf(","+event.keyCode+",")
	if( prok != -1 ){return true}
	
	
	sVar = oCam.value
	sVar = repl(sVar, ",", "")
	sVar = repl(sVar, ".", "")
	nCode = event.keyCode
	
	if( isNaN(sVar) ){sVar=0}
	
	
	bVirg = false
	nNr = ""
	
	if( nCode==8 )//
	{
		sVar = fLeft( sVar, sVar.length-1 )
	}
	else if( nCode==46 )//del
	{
		sVar = ""
	}
	else if( event.keyCode >= 96 && event.keyCode <= 105 )
	{
		nNr = event.keyCode - 96
	}
	else if( event.keyCode >= 48 && event.keyCode <= 57 )
	{
		nNr = event.keyCode - 48
	}
	
	if( sVar == ","){sVar=""}
	
	if( isNaN(sVar) ){return false}
	if( Math.ceil(sVar) > 99999 ){return false}
	
	sVar = sVar + "" + nNr
	
	oCam.value = poeVirg5Dec(sVar)
	return false

}

function poeVirg5Dec(sStr)
{
	sZeros = ""
	
	sReturn = sStr
	sReturn = repl(sReturn, ",", "")
	sReturn = repl(sReturn, ".", "")
	
	if( isNaN(sReturn) ){return "0,"}
	
	sIni = fLeft(sReturn, 1) + ""
	sFim = "," + fRight(sReturn, sReturn.length-1)
	
	sTemp = ""
	cont = 0
	for( i=sIni.length; i--; i>0 )
	{
		cont++
		sPonto = ""
		if( cont == 3  )
		{sPonto = "."; cont = 0}
		
		s = sIni.substring( i ,i+1 )
		sTemp = sPonto + s + "" + sTemp
		
	}

	if( sTemp=="" ){sTemp = sIni}
	if( fLeft(sTemp,1)=="." ){ sTemp = fRight(sTemp, sTemp.length-1) }
	sIni = sTemp
	if(sIni==""){sIni="0"}
	
	sReturn =  sIni + "" + sFim
	return sReturn
}

function repl( aonde, oque, por )
{
	prok=0
	aonde = aonde.toString()
	oque = oque.toString()
	por = por.toString()
	
	while( prok != -1 )
	{
		aonde = aonde.replace(oque,por)
		prok = aonde.indexOf(oque)
	}
	return aonde
}    

function fLeft(sStr,nQtd)
{
	return sStr.substring(0,nQtd)
}

function fRight(sStr,nQtd)
{
	sStr = sStr.toString()
	nLen = sStr.length
	star = nLen-nQtd
	if( star < 1 ){ star=0 }
	return sStr.substring(star,nLen)
}

function validaData (data) 
{
	if ( (data == null) || (data.length < 10) ) 
	{
	  return false;
	}
	var jsDataValida = true;
	var jsDia = data.substring(0,2)-0;
	var jsMes = data.substring(3,5)-1;
	var jsAno = data.substring(6,10)-0;
	var oData = new Date(jsAno, jsMes, jsDia);    
	if (jsDia != oData.getDate()) { jsDataValida = false }
	if (jsMes != oData.getMonth()) { jsDataValida = false }
	if (jsAno != oData.getFullYear()) { jsDataValida = false }
	return jsDataValida;
}

var sender="event.srcElement"
	
function mask_data(e)
{
	alvo=eval(sender)
	if (document.all){
		x=event.keyCode;
	}else{
		x=e.which
	}
	
	sPermitidos = ",9,37,39,38,40,8,45,46,13,36,35,"
	prok = sPermitidos.indexOf(","+x+",")
	if( prok != -1 ){return true}
	
	if(document.all){
		if ( (x>47 && x<58) || (x>95 && x<106) )
		{
			if( x>95 )
				{x=x-96}
			else
				{ x=x-48}
			
			valor=alvo.value
			
			if(valor==3 && x > 1)
			{
				alvo.value= "0" + alvo.value + "/"
				return false;
			}
			
			if (valor.length==0)
				{if (x>3){alvo.value="0"}}
			if (valor.length==2 )
				{if (x>1){alvo.value+="/0"}else{alvo.value+="/"}}
			if(valor.length==3)
				if (x>1){alvo.value+="0"}
			if (valor.length==5){
				if (x>2){alvo.value+="/19"}else{
					if (x>0){alvo.value+="/"}else{alvo.value+="/20"}
				}
			}
			
			return true
		}
	}else{
		if( (x>47 && x<58) || ( x>95 && x<106) ){return true}
	}
	return false
}

function formatMoeda(oCam)
{

	nCode = event.keyCode
	
	sPermitidos = ",35,36,37,39,9,16,"
	prok = sPermitidos.indexOf(","+event.keyCode+",")
	if( prok != -1 ){return true}
	
	sVar = oCam.value
	sVar = repl(sVar, ",", "")
	sVar = repl(sVar, ".", "")
	nCode = event.keyCode
	
	if( isNaN(sVar) ){sVar=0}
	
	
	bVirg = false
	nNr = ""
	
	if( nCode==8 )
	{
		sVar = fLeft( sVar, sVar.length-1 )
	}
	else if( nCode==46 )//del
	{
		sVar = ""
	}
	else if( event.keyCode >= 96 && event.keyCode <= 105 )
	{
		nNr = event.keyCode - 96
	}
	else if( event.keyCode >= 48 && event.keyCode <= 57 )
	{
		nNr = event.keyCode - 48
	}
	
	if( sVar == ","){sVar=""}
	
	if( isNaN(sVar) ){return false}
	if( Math.ceil(sVar) > 999999999 ){return false}
	
	sVar = sVar + "" + nNr
	
	oCam.value = poeVirg(sVar)
	return false

}

function formatCalc(nNr)
{
	sTemp = nNr
	sTemp = repl(sTemp, ".", "")
	sTemp = repl(sTemp, ",", "")
	if( isNaN(sTemp) ){return 0}
	
	nNr = repl(nNr, ".", "")
	nNr = repl(nNr, ",", ".")
	
	return nNr
}

function poeVirg(sStr)
{
	sZeros = ""
	
	sReturn = sStr
	sReturn = repl(sReturn, ",", "")
	sReturn = repl(sReturn, ".", "")
	
	if( isNaN(sReturn) ){return "0,00"}
	
	sReturn = Math.ceil(sReturn) + ""
	
	if( sReturn.length > 2 )
	{
	}
	else
	{
		if( sReturn.length==1 )
		{sZeros="00"}
		if( sReturn.length==2 )
		{sZeros="0"}
		if( sReturn.length==3 )
		{sZeros=""}
		
		sReturn = sZeros + "" + sReturn
	}
	
	sIni = fLeft(sReturn, sReturn.length-2) + ""
	sFim = "," + fRight(sReturn, 2)
	
	sTemp = ""
	cont = 0
	for( i=sIni.length; i--; i>0 )
	{
		cont++
		sPonto = ""
		if( cont == 3  )
		{sPonto = "."; cont = 0}
		
		s = sIni.substring( i ,i+1 )
		sTemp = sPonto + s + "" + sTemp
		
	}
	if( sTemp=="" ){sTemp = sIni}
	if( fLeft(sTemp,1)=="." ){ sTemp = fRight(sTemp, sTemp.length-1) }
	sIni = sTemp
	sReturn =  sIni + "" + sFim
	return sReturn
}
	
//Funcões para validar CNPJ sem permitir caratteres diferenters de numeros 
function isNum( caractere )
{
	var strValidos = "0123456789"
	if ( strValidos.indexOf( caractere ) == -1 )
		return false;
	
	return true;
}

function validaTecla(campo, event)
{
	var BACKSPACE= 8;
	var key;
	var tecla;
	
	CheckTAB=true;
	tecla= event.keyCode;
		
	key = String.fromCharCode( tecla);
	 
	//alert( 'key: ' + tecla + ' -> campo: ' + campo.value);
	if ( tecla == 13 )
		return false;
	 
	if ( tecla == BACKSPACE )
		return true;
	 
	return ( isNum(key));
}
 
function RemoverPontos(txt)
{
	var vr = txt;
	txt = "";
	var tam = vr.length;
	var r = "";
	var i = 0;
	
	while(i <= tam)
	{
		r = vr.substr(i, 1);
		if((r != '.') && (r != '/') && (r != '-') )
			txt = txt + r;
			
		i++;
	}
	return(txt);
}

function FormataCNPJ(el)
{
	el.value = RemoverPontos(el.value); 
	
	vr = el.value;
	tam = vr.length;
	 
	if(vr.indexOf(".") == -1)
	{
		if ( tam <= 2 )
			el.value = vr;
		 
		if ( (tam > 2) && (tam <= 6) )
			el.value = vr.substr( 0, 2 ) + '.' + vr.substr( 2, tam );
		 
		if ( (tam >= 7) && (tam <= 10) )
			el.value = vr.substr( 0, 2 ) + '.' + vr.substr( 2, 3 ) + '.' + vr.substr( 5, 3 ) + '/';
		
		if ( (tam >= 11) && (tam <= 18) )
			el.value = vr.substr( 0, 2 ) + '.' + vr.substr( 2, 3 ) + '.' + vr.substr( 5, 3 ) + '/' + vr.substr( 8, 4 ) + '-' + vr.substr( 12, 2 ) ;
	}
	return true;
}         



function Limpar(valor, validos) 
{
    // retira caracteres invalidos da string
    var result = "";
    var aux;
    for (var i=0; i < valor.length; i++) 
    {
        aux = validos.indexOf(valor.substring(i, i+1));
        if (aux>=0) 
        {
            result += aux;
        }
    }
    return result;
}
function confirm_delete()
{
  if (confirm("Deseja deletar o registro?")==true)
    return true;
  else
    return false;
}
function isMaxLength(txtBox) 
{
    if(txtBox) 
    { 
        return ( txtBox.value.length <= 120);
    }
}
function ForceNumericInput(event, This, AllowDecimal, AllowMinus)
{
    if(arguments.length == 1)
    {
        var s = This.value;
        // garante que o sinal de "-" seja o primeiro do índice
        var i = s.lastIndexOf("-");
        if(i == -1)
            return;
        if(i != 0)
            This.value = s.substring(0,i)+s.substring(i+1);
            return;
    }
    switch(event.keyCode)
    {
        case 8:     // backspace
        case 9:     // tab
        case 37:    // left arrow
        case 39:    // right arrow
        case 46:    // delete
        event.returnValue = true;
        return;
    }
    if(event.keyCode == 189)     // sinal de número de negativo
    {
        if(AllowMinus == false)
        {
            CancelEventExecution(event);
            return;
        }
        // aguarda até que o controle tenha sido atualizado
        var s = "ForceNumericInput(document.getElementById('"+This.id+"'))";
        setTimeout(s, 250);
        return;
    }
    if(AllowDecimal && event.keyCode == 188)
    {
        if(This.value.indexOf(",") >= 0)
        {
            // restringe a digitação de apenas uma vírgula
            CancelEventExecution(event);
            return;
        }
        event.returnValue = true;
        return;
    }
    // permite caracteres entre 0 e 9
    if(event.keyCode >= 48 && event.keyCode <= 57)
    {
        event.returnValue = true;
        return;
    }
        CancelEventExecution(event);
    }
/*
* Cancela a execução de uma function mapeada por um evento
*/
function CancelEventExecution(event)
{
    if (navigator.appName == "Netscape")
    {
        event.preventDefault();
    }
    else
    {
        event.returnValue = false;
    }
}

