function abre(pagina,janela,w,h,scrolling) {
	window.open(pagina,janela,'width='+w+',height='+h+',scrollbars='+scrolling+',toolbar=no,location=no,status=no,menubar=no,resizable=no,left=0,top=5');
}
function abreJanela(pagina,janela,w,h,scrolling) {
	window.open(pagina,janela,'width='+w+',height='+h+',scrollbars='+scrolling+',toolbar=yes,location=no,status=no,menubar=yes,resizable=no,left=0,top=5');
}


function txtBoxFormat(objForm, strField, sMask, evtKeyPress) {
     var i, nCount, sValue, fldLen, mskLen,bolMask, sCod, nTecla;
	
	browser=navigator.appName;
		
     if(browser=="Microsoft Internet Explorer") { // Internet Explorer
       nTecla = evtKeyPress.keyCode; }
     else if(browser=="Netscape") { // Nestcape
       nTecla = evtKeyPress.which;
     }
	//Retorna true se a tecla for TAB	
     if(nTecla==0 || nTecla==8){
	   return true;
	 }
     sValue = objForm[strField].value;

     // Limpa todos os caracteres de formatação que
     // já estiverem no campo.
     sValue = sValue.toString().replace( "-", "" );
     sValue = sValue.toString().replace( "-", "" );
     sValue = sValue.toString().replace( ".", "" );
     sValue = sValue.toString().replace( ".", "" );
     sValue = sValue.toString().replace( "/", "" );
     sValue = sValue.toString().replace( "/", "" );
     sValue = sValue.toString().replace( "(", "" );
     sValue = sValue.toString().replace( "(", "" );
     sValue = sValue.toString().replace( ")", "" );
     sValue = sValue.toString().replace( ")", "" );
     sValue = sValue.toString().replace( " ", "" );
     sValue = sValue.toString().replace( " ", "" );
     
     fldLen = sValue.length;
     mskLen = sMask.length;
     
     

     i = 0;
     nCount = 0;
     sCod = "";
     mskLen = fldLen;

     while (i <= mskLen) {
       bolMask = ((sMask.charAt(i) == "-") || (sMask.charAt(i) == ".") || (sMask.charAt(i) == "/"));
       bolMask = bolMask || ((sMask.charAt(i) == "(") || (sMask.charAt(i) == ")") || (sMask.charAt(i) == " "));

       if (bolMask) {
         sCod += sMask.charAt(i);
         mskLen++; }
       else {
         sCod += sValue.charAt(nCount);
         nCount++;
       }

       i++;
     }

     objForm[strField].value = sCod;

     if (nTecla != 8) { // backspace
       if (sMask.charAt(i-1) == "9") { // apenas números...
         return ((nTecla > 47) && (nTecla < 58)); } // números de 0 a 9
       else { // qualquer caracter...
         return true;
       } }
     else {
       return true;
     }
}
//-----------------------------------------------------
//Funcao: Mascara de preenchimento de moeda
//Parametro:
//   objTextBox : Objeto (TextBox)
//   SeparadorMilesimo : Caracter separador de milésimos
//   SeparadorDecimal : Caracter separador de decimais
//   e : Evento
//Retorno: Booleano
//Autor: Gabriel Fróes
//Data Criação: 15/02/2005
//-----------------------------------------------------
function MascaraDecimal(objTextBox, SeparadorMilesimo, SeparadorDecimal, e, casas){
    var sep = 0;
    var key = '';
    var i = j = 0;
    var len = len2 = 0;
    var strCheck = '0123456789';
    var aux = aux2 = '';
    var whichCode ='';
    browser=navigator.appName;
    if(browser=="Microsoft Internet Explorer") { // Internet Explorer
       whichCode = e.keyCode; }
     else if(browser=="Netscape") { // Nestcape
       whichCode = e.which;
     }
    //var whichCode = (window.Event) ? e.which : e.keyCode;
    //alert(whichCode);
    if (whichCode == 13 || whichCode == 8 || whichCode == 0) return true;
    key = String.fromCharCode(whichCode); // Valor para o código da Chave
    if (strCheck.indexOf(key) == -1) return false; // Chave inválida
    len = objTextBox.value.length;
    for(i = 0; i < len; i++)
        if ((objTextBox.value.charAt(i) != '0') && (objTextBox.value.charAt(i) != SeparadorDecimal)) break;
    aux = '';
    for(; i < len; i++)
        if (strCheck.indexOf(objTextBox.value.charAt(i))!=-1) aux += objTextBox.value.charAt(i);
    aux += key;
    len = aux.length;
    
    var zeros='';
    for(var k=0;k<(casas-len);k++){
    	zeros+='0';
    }
    //alert(zeros+' '+casas+' '+len);
    
    if (len == 0) objTextBox.value = '';
    if (len > 0 && len <= casas) objTextBox.value = '0' + SeparadorDecimal + zeros + aux;
    if (len > casas) {
        aux2 = '';
        for (j = 0, i = len - (casas+1); i >= 0; i--) {
            if (j == (casas+1)) {
                aux2 += SeparadorMilesimo;
                j = 0;
            }
            aux2 += aux.charAt(i);
            j++;
        }
        objTextBox.value = '';
        len2 = aux2.length;
        for (i = len2 - 1; i >= 0; i--)
        objTextBox.value += aux2.charAt(i);
        objTextBox.value += SeparadorDecimal + aux.substr(len - casas, len);
    }
    return false;
}

function MascaraMoeda(objTextBox, SeparadorMilesimo, SeparadorDecimal, e){
    return MascaraDecimal(objTextBox, SeparadorMilesimo, SeparadorDecimal, e,2);
}
function MascaraCh(objTextBox, SeparadorMilesimo, SeparadorDecimal, e){
    var sep = 0;
    var key = '';
    var i = j = 0;
    var len = len2 = 0;
    var strCheck = '0123456789';
    var aux = aux2 = '';
    var whichCode ='';
    browser=navigator.appName;
    if(browser=="Microsoft Internet Explorer") { // Internet Explorer
       whichCode = e.keyCode; }
     else if(browser=="Netscape") { // Nestcape
       whichCode = e.which;
     }
    //var whichCode = (window.Event) ? e.which : e.keyCode;
    //alert(whichCode);
    if (whichCode == 13 || whichCode == 8 || whichCode == 0) return true;
    key = String.fromCharCode(whichCode); // Valor para o código da Chave
    if (strCheck.indexOf(key) == -1) return false; // Chave inválida
    len = objTextBox.value.length;
    for(i = 0; i < len; i++)
        if ((objTextBox.value.charAt(i) != '0') && (objTextBox.value.charAt(i) != SeparadorDecimal)) break;
    aux = '';
    for(; i < len; i++)
        if (strCheck.indexOf(objTextBox.value.charAt(i))!=-1) aux += objTextBox.value.charAt(i);
    aux += key;
    len = aux.length;
    if (len == 0) objTextBox.value = '';
    if (len == 1) objTextBox.value = '0'+ SeparadorDecimal + '0' + '0' + aux;
    if (len == 2) objTextBox.value = '0'+ SeparadorDecimal + '0' + aux;
    if (len == 3) objTextBox.value = '0'+ SeparadorDecimal + aux;
    if (len > 3) {
        aux2 = '';
        for (j = 0, i = len - 4; i >= 0; i--) {
            if (j == 3) {
                aux2 += SeparadorMilesimo;
                j = 0;
            }
            aux2 += aux.charAt(i);
            j++;
        }
        objTextBox.value = '';
        len2 = aux2.length;
        for (i = len2 - 1; i >= 0; i--)
        objTextBox.value += aux2.charAt(i);
        objTextBox.value += SeparadorDecimal + aux.substr(len - 3, len);
    }
    return false;
}
function copia(campo_origem,campo_fim) {
  origem = campo_origem;
  copias = campo_fim;
  copias.value = origem.value;
}


//-----------------------------------------------------
//Funcao: Mascara que valida DATA CPF CNPJ
//-----------------------------------------------------

//adiciona mascara de cnpj
function MascaraCNPJ(cnpj){
    if(mascaraInteiro(cnpj)==false){
        event.returnValue = false;
    }    
    return formataCampo(cnpj, '00.000.000/0000-00', event);
}

//adiciona mascara de cep
function MascaraCep(cep){
    if(mascaraInteiro(cep)==false){
        event.returnValue = false;
    }    
    return formataCampo(cep, '00000-000', event);
}

//adiciona mascara de data
function MascaraData(data){
    if(mascaraInteiro(data)==false){
        event.returnValue = false;
    }    
    return formataCampo(data, '00/00/0000', event);
}

//adiciona mascara ao telefone
function MascaraTelefone(tel){    
    if(mascaraInteiro(tel)==false){
        event.returnValue = false;
    }    
    return formataCampo(tel, '(00) 0000-0000', event);
}

//adiciona mascara ao CPF
function MascaraCPF(cpf){
    if(mascaraInteiro(cpf)==false){
        event.returnValue = false;
    }    
    return formataCampo(cpf, '000.000.000-00', event);
}

//valida telefone
function ValidaTelefone(tel){
    exp = /\(\d{2}\)\ \d{4}\-\d{4}/
    if(!exp.test(tel.value)){
        alert('Numero de Telefone Invalido!');
        tel.value="";
        tel.focus();
    }
}

//valida CEP
function ValidaCep(cep){
    exp = /\d{2}\d{3}\-\d{3}/
    if(!exp.test(cep.value)){
        alert('Numero de Cep Invalido!');
        cep.value="";
        cep.focus();
    }        
}

//valida data
function ValidaData(data){
    exp = /\d{2}\/\d{2}\/\d{4}/
    if(!exp.test(data.value)){
        alert('Data Invalida!');
        data.value="";
        data.focus();
    }            
}

//valida o CPF digitado
function ValidarCPF(Objcpf){
    var cpf = Objcpf.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!');
        Objcpf.value="";
        Objcpf.focus();
    }        
}

function Verifica_CPF(cpf) {
	var CPF = cpf.value; // Recebe o valor digitado no campo
	exp = /\.|\-/g
    CPF = CPF.toString().replace( exp, "" );
// Aqui começa a checagem do CPF
	var POSICAO, I, 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 (I=0; I<=8; I++) {
  		DIGITO[I] = CPF.substr( I, 1);
	}

// Calcula o valor do 10º dígito da verificação
	POSICAO = 10;
	SOMA = 0;
   	for (I=0; I<=8; I++) {
    	SOMA = SOMA + DIGITO[I] * 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 (I=0; I<=9; I++) {
    	SOMA = SOMA + DIGITO[I] * 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('CPF inválido');
      	cpf.value = '';
      	cpf.focus();
      	return false;
   	}
}


//valida numero inteiro com mascara
function mascaraInteiro(){
    if (event.keyCode < 48 || event.keyCode > 57){
        event.returnValue = false;
        return false;
    }
    return true;
}

//valida o CNPJ digitado
function ValidarCNPJ(ObjCnpj){
    var cnpj = ObjCnpj.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!');
        ObjCnpj.value="";
        //ObjCnpj.focus();
    }
        
}

//formata de forma generica os campos
function formataCampo(campo, Mascara, evento) {
    var boleanoMascara;
    
    var Digitato = evento;
    exp = /\-|\.|\/|\(|\)| /g
    campoSoNumeros = campo.value.toString().replace( exp, "" );
  
    var posicaoCampo = 0;    
    var NovoValorCampo="";
    var TamanhoMascara = campoSoNumeros.length;;
    
    if (Digitato != 8) { // backspace
        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;
    }
}
function sleep(milliseconds) {
  var start = new Date().getTime();
  for (var i = 0; i < 1e7; i++) {
    if ((new Date().getTime() - start) > milliseconds){
      break;
    }
  }
}
function comparaData(data1,data2){
	var arrData1=data1.split("/");
	if(arrData1.length==1){
		arrData1=data1.split("-");
	}
	var arrData2=data2.split("/");
	if(arrData2.length==1){
		arrData2=data2.split("-");
	}
	
	var intData1=parseInt( arrData1[2].toString() + arrData1[1].toString() + arrData1[0].toString() );
	var intData2=parseInt( arrData2[2].toString() + arrData2[1].toString() + arrData2[0].toString() );
	
	if ( intData2 > intData1 )
	{
  		return -1;
	}else if( intData2 < intData1 ){
  		return 1;
	}else{
		return 0;
	}
}

function float2moeda(num) {

   x = 0;
   var reg = /^[0-9]$/;	

   if(num<0) {
      num = Math.abs(num);
      x = 1;
   }
   
   if(isNaN(num)) num = "0";
      cents = Math.floor((num*100+0.5)%100);

   num = Math.floor((num*100+0.5)/100).toString();

   if(cents < 10) cents = "0" + cents;
   if(reg.exec(cents)!= null) cents = cents + "0";
      for (var i = 0; i < Math.floor((num.length-(1+i))/3); i++)
         num = num.substring(0,num.length-(4*i+3))
               +num.substring(num.length-(4*i+3));
               
               ret = num + '.' + cents;
               
                if (x == 1) ret = ' - ' + ret;
                
                return ret;

}


// função de validação de data
function validaDat(campo,valor) {
	var date=valor;
	var ardt=new Array;
	var ExpReg=new RegExp("(0[1-9]|[12][0-9]|3[01])[-/](0[1-9]|1[012])[-/][12][0-9]{3}");
	ardt=date.split("/");
	if(ardt.length<3){
		ardt=date.split("-");
	}
	erro=false;
	if ( date.search(ExpReg)==-1){
		erro = true;
		}
	else if (((ardt[1]==4)||(ardt[1]==6)||(ardt[1]==9)||(ardt[1]==11))&&(ardt[0]>30))
		erro = true;
	else if ( ardt[1]==2) {
		if ((ardt[0]>28)&&((ardt[2]%4)!=0))
			erro = true;
		if ((ardt[0]>29)&&((ardt[2]%4)==0))
			erro = true;
	}
	if (erro) {
		alert("\"" + valor + "\" não é uma data válida!!!");
		campo.focus();
		campo.value = "";
		return false;
	}
	return true;
}

function CheckDate(pObj) {
	  var expReg = /^((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}$/;
	  var aRet = true;
	  if ((pObj) && (pObj.match(expReg)) && (pObj != '')) {
	        var dia = pObj.substring(0,2);
	        var mes = pObj.substring(3,5);
	        var ano = pObj.substring(6,10);
	        if ((mes == 4 || mes == 6 || mes == 9 || mes == 11 ) && dia > 30) 
	          aRet = false;
	        else 
	          if ((ano % 4) != 0 && mes == 2 && dia > 28) 
	                aRet = false;
	          else
	                if ((ano%4) == 0 && mes == 2 && dia > 29)
	                  aRet = false;
	  }  else 
	        aRet = false;  
	  return aRet;
}

function isDataFutura(dt){
	var data = new Date();
	var dia = data.getDate();
	var mes = data.getMonth();
	var ano = data.getFullYear();
	
	if(dia<10){
		 dia="0"+dia;
	}
	if(mes<10){
		 mes="0"+mes;
	}
	// Pega a data de hoje no seguinte formato: November 22 2006
	var dataAtual = dia + '/' + mes + '/' + ano;
	
	if((comparaData(dataAtual,dt))==-1){
		//alert("Deveria dar true "+dataAtual+" - "+dt);
		return true;
	}
	//alert("Deveria dar false");
	return false;
}


