/*
* Máscaras JavaScrip utilizadas por todo o sistema
*
* @category   includes
* @package    mascaras
* @author     Christian Paul Pach <christian@pach.com.br>
* @copyright  -
* @license    -
* @version    CVS: $Id:$
* @link       includes/js/
* @since      Arquivo disponível desde a versão 1.0.0
*/

//onkeypress="return validatecla(this, event)"
function chvalidos( caractere ){ 
	var strValidos = "qwertyuiopasdfghjklzxcvbnmQWERTYUIOPASDFGHJKLZXCVBNM1234567890" 
	if ( strValidos.indexOf( caractere ) == -1 ) 
		return false; 
	return true;  
}
function validatecla(campo, event) { 
	var e = event || window.event;
	var key; 
	var tecla; 
	CheckTAB=true; 
	var tecla= e.keyCode || e.which;
	key = String.fromCharCode( tecla);   
	if (tecla == 9 ||  tecla == 13 || tecla == 8) return true; 
	return ( chvalidos(key)); 
}   
//onkeyup="return limita(this, 100)"
function limita( campo,limite ){ 
	if( campo.value.length>limite ){
		campo.value = campo.value.substr(0,limite);
	}
} 

//onkeypress="return validanum(this, event)"
function chnum( caractere ){ 
	var strValidos = "0123456789" 
	if ( strValidos.indexOf( caractere ) == -1 ) 
		return false; 
	return true;  
} 
function validanum(campo, event) { 
	var e = event || window.event;
	var key; 
	var tecla; 
	CheckTAB=true;
	var tecla= e.keyCode || e.which;
	key = String.fromCharCode( tecla);   
	if (tecla == 9 ||  tecla == 13 || tecla == 8) return true; 
	return ( chnum(key)); 
}
//onkeypress="return validaval(this, event)"
function chval( caractere ){ 
	var strValidos = "0123456789," 
	if ( strValidos.indexOf( caractere ) == -1 ) 
		return false; 
	return true;  
} 
function validaval(campo, event) { 
	var e = event || window.event;
	var BACKSPACE= 8;   
	var key; 
	var tecla; 
	CheckTAB=true; 
	var tecla= e.keyCode || e.which;
	key = String.fromCharCode( tecla);   
	if (tecla == 9 ||  tecla == 13 || tecla == 8) return true; 
	return ( chval(key)); 
}
//mascara data onkeypress="return validanum(this, event)" onkeyup="mdata(this,event)"
 function mdata(campo, event){
     var e = event || window.event;
	 if (campo.value.length > 2)
     	if (campo.value.charAt(campo.value.length - 1) == '/' && campo.value.charAt(campo.value.length - 2) == '/')
        	campo.value = campo.value.substr(0,campo.value.length - 2);
	 if (e.keyCode != 8)
     	if (campo.value.length == 2 || campo.value.length == 5)
    		campo.value += '/';
  }
//mascara mes/ano onkeypress="return validanum(this, event)" onkeyup="mmesano(this,event)"
 function mmesano(campo,event){
     var e = event || window.event;
	 if (campo.value.length > 2)
     	if (campo.value.charAt(campo.value.length - 1) == '/' && campo.value.charAt(campo.value.length - 2) == '/')
        	campo.value = campo.value.substr(0,campo.value.length - 2);
	  if (e.keyCode != 8)
     	if (campo.value.length == 2)
    		campo.value += '/';
  }
//mascara cep onkeypress="return validanum(this, event)" onkeyup="mcep(this,event)"
 function mcep(campo,event){
	 var e = event || window.event;
	 if (e.keyCode != 8)
		 if (campo.value.length == 5)
   		 	campo.value += "-";
  }
 //mascara competencia mes/ano onkeyup="mcomp(this,event)"
 function mcomp(campo,event){
	var e = event || window.event;
	 if (e.keyCode != 8)
		 if (campo.value.length == 2)
   		 	campo.value += "/";
  }
//mascara hora onkeypress="return validanum(this, event)" onkeyup="mhora(this,event)"
 function mhora(campo,event){
     var e = event || window.event;
	 if (campo.value.length > 2)
       if(campo.value.charAt(campo.value.length - 1) == ':' && campo.value.charAt(campo.value.length - 2) == ':')
          campo.value = campo.value.substr(0,campo.value.length - 2);
	 if (e.keyCode != 8)
   	  if (campo.value.length == 2 || campo.value.length == 5) 
	  	campo.value += ':';
  }
//mascara hora2 onkeypress="return validanum(this, event)" onkeyup="mhora2(this,event)"
 function mhora2(campo,event){
     var e = event || window.event;
	 if (campo.value.length > 2)
       if(campo.value.charAt(campo.value.length - 1) == ':' && campo.value.charAt(campo.value.length - 2) == ':')
          campo.value = campo.value.substr(0,campo.value.length - 2);
	 if (e.keyCode != 8)
   	  if (campo.value.length == 2) 
	  	campo.value += ':';
  }

function retornaKeyCode(evt) {
 var isNav, isIE;
 var theKey;
 
 if (parseInt(navigator.appVersion.charAt(0)) >= 4) {
  isNav = (navigator.appName == "Netscape") ? true : false;
  isIE = (navigator.appName.indexOf("Microsoft" != -1)) ? true : false;
 }
   
 if (isNav) 
  theKey = evt.which;
 else if (isIE) 
  theKey = window.event.keyCode;
   
 return theKey;
}
function retiraNaoNumericos( OBJ ){
 var i;
 STR = new String("");
 
 for(i=0;i<OBJ.value.length;i++)
  if (OBJ.value.charAt(i)>="0" && OBJ.value.charAt(i)<="9")
   STR = STR + OBJ.value.charAt(i);
 
 OBJ.value = STR;
 return STR;
}
function inverteString ( vlr){
 var i; 
 STR = new String("");
 
 for(i=vlr.length; i>=0; i--)
  STR = STR + vlr.charAt(i);
 
 return STR;
}
function trimZerosAEsquerda( vlr){
 var i;
 STR = new String("");
 
 for (i=0; i<vlr.length; i++)
  if ( ( vlr.charAt(i) != '0') && ( vlr.charAt(i) != '.') )
   break;
 
 for (;i<vlr.length;i++)
  STR = STR + vlr.charAt(i);
  
 return STR;  
}
function fillZerosAEsquerda( vlr, minLength ){
 var i;
 STR = new String("");
 
 vlr= trimZerosAEsquerda (vlr);
 
 for (i=0; i < (minLength - vlr.length); i++)
  STR = "0" + STR;
 
 return STR;  
}
function identificaBrowser(){
 var strBrowser;
 
 versao = navigator.appVersion;
 nomeBrowser = navigator.appName;
 
 if (navigator.appName.indexOf("Microsoft") != -1) 
  strBrowser = "IE";
 else if(navigator.appName.indexOf("Netscape") != -1)
  strBrowser = "NE";
 else
  strBrowser = "OO";
 
 return strBrowser;
}
function posicionaCursor(OBJ, LOC, POS)
{
 
 LOC = LOC.toUpperCase();
 
 //Só funciona no IE
 if (identificaBrowser() !="IE")
 
  return;
 
 else
 
 {
  if ((LOC == "I") || (LOC == "M") || (LOC == "F"))
  { 
  
   var posicao;
   
   if (LOC == "I")
    posicao = 0;
   
   if (LOC == "F")
    posicao = OBJ.value.length;
   
   if (LOC == "M")
    posicao = POS;
     
   var tRange = OBJ.createTextRange();
   tRange.move("character",posicao);
   tRange.select();
   
  }
  return;
 
 }
}
function criazeros(casas){
	var i;
	var j='';
	for(i=0;i<casas;i++){
		j = j+'0';
	}
	return j;
}
// onkeydown="formatamoeda(this,retornaKeyCode(event),2)" onkeyup="formatamoeda(this,retornaKeyCode(event),2)"
function formatamoeda( OBJ, key , casas){
	var i,j,uBound;
	if(!casas) casas=2;
	//teclas delete, backspace, shift, nao disparam o evento
	if( key!=16 && !(key>36 && key<41) ){
		invertedSTR = new String("");
		invertedSTR = retiraNaoNumericos ( OBJ );
		invertedSTR = inverteString ( invertedSTR );
		if ( invertedSTR.length < 15+casas ){
			UBound = invertedSTR.length;
		}else{
			UBound = 15+casas;
		}
		for(j=0;j<=casas;j++){
			if ( invertedSTR.length == j ){
				UBound = casas+1;
				invertedSTR = invertedSTR + criazeros(casas-j+1);
			}
		}
		STR = new String("");
		for ( i=0; i<UBound; i++){
			STR = STR + invertedSTR.charAt(i);   
			if (i==casas-1)
				STR = STR + ",";
			if ( (i==casas+2) || (i==casas+5) || (i==casas+8) || (i==casas+11) || (i==casas+14) || (i==casas+17) )
				STR = STR + ".";
		}
  
	  STR = inverteString(STR);
	  STR = trimZerosAEsquerda ( STR );
	  STR = fillZerosAEsquerda ( STR, casas+2 );
	 
	  OBJ.value = STR;
	  
	  posicionaCursor(OBJ, "F", 0)
 	}
}

// onkeydown="formataMoeda(this,retornaKeyCode(event))" onkeyup="formataMoeda(this,retornaKeyCode(event))"
function formataMoeda( OBJ, key ){
 var i, uBound;
 //teclas delete, backspace, shift, nao disparam o evento
 if( key!=16 && !(key>36 && key<41) ){
  invertedSTR = new String("");
  invertedSTR = retiraNaoNumericos ( OBJ );
  invertedSTR = inverteString ( invertedSTR );
  if ( invertedSTR.length < 12 ){
   UBound = invertedSTR.length;
  }
  else{
   UBound = 12;
  }
  if ( invertedSTR.length == 0 ){
   UBound = 3;
   invertedSTR = invertedSTR + "0000";
  }
 
  if ( invertedSTR.length == 1 ){
   UBound = 3;
   invertedSTR = invertedSTR + "000";
  }
 
  if ( invertedSTR.length == 2 ){
   UBound = 3;
   invertedSTR = invertedSTR + "00";
  }
 
  STR = new String("");
  for ( i=0; i<UBound; i++){
   STR = STR + invertedSTR.charAt(i);
   
   if (i==1)
    STR = STR + ",";
 
   if ( (i==4) || (i==7) || (i==10) )
    STR = STR + ".";
  }
  
  STR = inverteString(STR);
  STR = trimZerosAEsquerda ( STR );
  STR = fillZerosAEsquerda ( STR, 4 );
 
  OBJ.value = STR;
  
  posicionaCursor(OBJ, "F", 0)
 }
}

// onkeydown="formataMoeda3(this,retornaKeyCode(event))" onkeyup="formataMoeda3(this,retornaKeyCode(event))"
function formataMoeda3( OBJ, key ){
 var i, uBound;
 //teclas delete, backspace, shift, nao disparam o evento
 if( key!=16 && !(key>36 && key<41) ){
  invertedSTR = new String("");
  invertedSTR = retiraNaoNumericos ( OBJ );
  invertedSTR = inverteString ( invertedSTR );
  if ( invertedSTR.length < 12 ){
   UBound = invertedSTR.length;
  }
  else{
   UBound = 12;
  }
/* 
  if ( invertedSTR.length == 0 ){
   UBound = 3;
   invertedSTR = invertedSTR + "0000";
  }
 
  if ( invertedSTR.length == 1 ){
   UBound = 3;
   invertedSTR = invertedSTR + "000";
  }
 
  if ( invertedSTR.length == 2 ){
   UBound = 3;
   invertedSTR = invertedSTR + "00";
  }
*/
  if ( invertedSTR.length == 0 ){
   UBound = 4;
   invertedSTR = invertedSTR + "0000";
  }
 
  if ( invertedSTR.length == 1 ){
   UBound = 4;
   invertedSTR = invertedSTR + "000";
  }
 
  if ( invertedSTR.length == 2 ){
   UBound = 4;
   invertedSTR = invertedSTR + "00";
  }
  
  if ( invertedSTR.length == 3 ){
   UBound = 4;
   invertedSTR = invertedSTR + "0";
  }
  STR = new String("");
  for ( i=0; i<UBound; i++){
   STR = STR + invertedSTR.charAt(i);
   
   if (i==2)
    STR = STR + ",";
 
   if ( (i==5) || (i==8) || (i==11) )
    STR = STR + ".";
  }
  
  STR = inverteString(STR);
  STR = trimZerosAEsquerda ( STR );
  STR = fillZerosAEsquerda ( STR, 5 );
 
  OBJ.value = STR;
  
  posicionaCursor(OBJ, "F", 0)
 }
}
function formataMoedaSimple(val,casas){
		var i, uBound;
		if(!casas) casas=2;
		invertedSTR = new String("");
		for(i=0;i<val.length;i++)
			if (val.charAt(i)>="0" && val.charAt(i)<="9")
		invertedSTR = invertedSTR + val.charAt(i);
		if(val.charAt(val.length-casas)==',')
			invertedSTR = invertedSTR + '0';
		invertedSTR = inverteString ( invertedSTR );
		if ( invertedSTR.length < 15+casas ){
			UBound = invertedSTR.length;
		}else{
			UBound = 15+casas;
		}
		for(j=0;j<=casas;j++){
			if ( invertedSTR.length == j ){
				UBound = casas+1;
				invertedSTR = invertedSTR + criazeros(casas-j+1);
			}
		}
		STR = new String("");
		for ( i=0; i<UBound; i++){
			STR = STR + invertedSTR.charAt(i);   
			if (i==casas-1)
				STR = STR + ",";
			if ( (i==casas+2) || (i==casas+5) || (i==casas+8) || (i==casas+11) || (i==casas+14) || (i==casas+17) )
				STR = STR + ".";
		}
		STR = inverteString(STR);
		STR = trimZerosAEsquerda ( STR );
		STR = fillZerosAEsquerda ( STR, casas+2 ); 
		return STR;
}

