 // these keys will be ignored by the mask.
// all these numbers where obtained on the keydown event
var keyRepresentation = {
    8    : 'backspace',
    9    : 'tab',
    13   : 'enter',
    16   : 'shift',
    17   : 'control',
    18   : 'alt',
    27   : 'esc',
    33   : 'page up',
    34   : 'page down',
    35   : 'end',
    36   : 'home',
    37   : 'left',
    38   : 'up',
    39   : 'right',
    40   : 'down',
    45   : 'insert',
    46   : 'delete',
    116  : 'f5',
    123  : 'f12',
    224  : 'command'
};

function cancelarOperacao(){	
	return confirm('Deseja realmente cancelar esta opera\347\343o?');
};

function removerInformacao(){	
	return confirm('Deseja realmente remover esta informa\347\343o?');
};

function ativarInformacao(){	
	return confirm('Deseja realmente ativar esta informa\347\343o?');
};

function desativarInformacao(){	
	return confirm('Deseja realmente desativar esta informa\347\343o?');
};

function check(id){
	var campo = document.getElementById(id);
	if(campo != null)
		campo.checked = true;
	else{
		var n = id.lastIndexOf(":");
		var idSearch = id;	  
		if(n > 0){
			idSearch = id.substring(n,id.length);
		}
		
		$( "input[id$='"+idSearch+"']" ).prop( "checked", true );
	}	  
};

function notcheck(id){
	document.getElementById(id).checked = false;
};

function checkOnlyOne(check, checkOnlyOne){
	var checkValue = false;
	
	if(jQuery(check).is(':checked')){
		checkValue = true;
	}
	
	jQuery("."+checkOnlyOne).attr('checked', false);

	jQuery(check).attr('checked', checkValue);
	
}

function checkAll(check, classe){	
	var checkValue = false;	
	if(jQuery(check).is(':checked')){
		checkValue = true;
	}	
	jQuery("."+classe).attr('checked', checkValue);	
}

function checkTodosMenosClasseEspecifica(check, classe){	
	var checkValue = false;	
	if(jQuery(check).is(':checked')){
		checkValue = true;
	}
	
	jQuery('input[type=checkbox]').each(function () {
        if (this.className != classe) {
        	this.checked = checkValue; 
        }
	});
	
	
}

function abrirPopup(URL) {
 
  var width = 150;
  var height = 250;
 
  var left = 99;
  var top = 99;
 
  window.open(URL,'janela', 'width='+width+', height='+height+', top='+top+', left='+left+', scrollbars=yes, status=no, toolbar=no, location=no, directories=no, menubar=no, resizable=no, fullscreen=no');
 
}

//Fun��o que limita um campo a uma quantidade determinada de caracteres.
function limitarCampo(campo, quant) {
    var texto = campo.value;
   
    if(qtdCaracteres(campo) > quant) {
    	campo.value = texto.substring(0, quant);
    }
}

function contarCaracteres(identificadorCampo, field){
	document.getElementById(field).innerHTML = qtdCaracteres(identificadorCampo);
}

function qtdCaracteres(campo) {
	var caracteres = campo.value;
	var tam = caracteres.length;
	
	var linhaInic = caracteres.split('\r\n').length;
    var quebras = caracteres.split('\r').length;
    
    return tam+linhaInic-quebras;
}

//Fun��o Javascript que faz com que um determinado campo receba apenas letras mai�sculas
function upperCase(campo, event) {
	campo.value = campo.value.toUpperCase();
};

function linkRelatorio(a){
	link = document.location.href;
	link += "&relatorio=true";
	
	jQuery(a).attr('href', link);
}

function getId(a){
	return"#"+a.replace(/:/g,"\\:");
}

function formatarMascara(src, event, mask, maxlengt) {
	var i;

	if (document.selection) // Internet Explorer
		i = Math.abs(document.selection.createRange().moveStart("character", -1000000));
	else // Firefox
		i = src.selectionStart;

	var saida = mask.substring(0,1);
	var texto = mask.substring(i);
	var rcode = event.which ? event.which : event.keyCode;

	if (isSpecialCharacterFromKeyboard(event)) {
		return false;
	}
	
	// Enter, backspace, delete e setas direcionais
	if (keyRepresentation[rcode] != null) {
		return true;
	}

	if (rcode >= 48 && rcode <= 57) {
		if (texto.substring(0,1) != saida) {
			src.value = src.value.substring(0,i) + texto.substring(0,1) + src.value.substring(i);
			
			if(maxlengt != null){
				src.value = src.value.substring(0,maxlengt-1);
			}
			
			
		}	
		return true;
	} else {
		return false;
	}
}

/**
 * Verifica se a tecla digitada � de um caracter especial, como
 * #, $, %, &, ( ou ' (ap�strofe).
 * 
 * Para os caracteres "#, $, %, &, (", � verificado se a tecla shift foi pressionada.
 * 
 * @param event
 * @return true se algum caracter especial for encontrado.
 */
function isSpecialCharacterFromKeyboard(event) {
	
	var specialChars = "#$%&(";
	
	var shift = event.shiftKey;
	var charCode = event.charCode || event.keyCode;
	var index = -1;
	
	if (shift) {
		index = specialChars.indexOf(String.fromCharCode(charCode));
	}
	
	return (index != -1) || charCode == 39; //Ap�strofe
}


function formatarInteiro(campo, evt, keypressing) {
	if (keypressing) {
		var charCode = (evt.which) ? evt.which : event.keyCode
		if (charCode > 31 && (charCode < 48 || charCode > 57))
			return false;
		return true;
	} else {
		
		var charCodes = event.keyCode;
		if (charCodes != '46' && charCodes != '37' && charCodes != '38' && 
				charCodes != '39' && charCodes != '40' && charCodes != '16') {
			campo.value = campo.value.replace(/\D+/, '');
		}
		
		
		
		
		
	}
}

function mascara_inteiro(campo){
	var texto = campo.value;
	var charCode = event.keyCode;
	if (charCode != '46' && charCode != '37' && charCode != '38' && 
			charCode != '39' && charCode != '40' && charCode != '16') {
		campo.value = texto.replace(/\D/g,"");       //Remove tudo o que não é dígito
	}
    return campo;
}

/**
 * Script para validar campos de data no formato dd/MM/yyyy 
 * Adaptado de http://www.javascriptkit.com/script/script2/validatedate.shtml
*/

function checkdate(inputId, inputLabel){
	var input = document.getElementById(inputId);
	if (input.value == "") return true;	
	var validformat=/^\d{2}\/\d{2}\/\d{4}$/; //Basic check for format validity
		var returnval=false;
		if (!validformat.test(input.value))
			alert(inputLabel + ": Formato de data inv�lido. Por favor, corrija e tente de novo.");
			else{ //Detailed check for valid date ranges
				var monthfield=input.value.split("/")[1];
				var dayfield=input.value.split("/")[0];
				var yearfield=input.value.split("/")[2];
				var dayobj = new Date(yearfield, monthfield-1, dayfield);
				if ((dayobj.getMonth()+1!=monthfield)||(dayobj.getDate()!=dayfield)||(dayobj.getFullYear()!=yearfield))
					alert(inputLabel + ": Dia, M�s ou Ano inv�lidos. Por favor, corrija e tente de novo.");
					else
						returnval=true;
			}
	if (returnval==false) input.select();
	return returnval;
}






function intdiv(op1, op2) {
	return (op1 / op2 - op1 % op2 / op2);
}

var hora, min;
function  relogioSession(tempo) {	
	
	if (jQuery('#tempoSessao')) {				
		jQuery('#tempoSessao').html ( '<b><em>Tempo Restante de Sessão:</b></em> <span id="spanRelogio" title="Tempo restante para a expiração da sessão."></span>');								
	}
	
	min = tempo;
	
	hora = intdiv(min, 60);
	
	min = min % 60;

	
	if (hora.toString().length == 1) { 
		hora = "0" + hora;
	}
	
	if (min.toString().length == 1) { 
		min = "0" + min;
	}
	
	if (jQuery('#spanRelogio')) { 
		jQuery('#spanRelogio').html(hora + ":" + min);				
	}
	
	setInterval(atualizarTempo, 60000);
	
}


var atualizarTempo =  function mostrarInformacaofunction() {
	if((hora > 0) || (min > 0)){
    	if(min == 0){
    		min = 59;
    		hora = hora - 1
        } else {
        	min = min - 1;
		}

        if(hora.toString().length == 1){
        	hora = "0" + hora;
        }

        if(min.toString().length == 1){
        	min = "0" + min;
        }

        if (jQuery('#spanRelogio')) { 
        	if (hora == 0 && min == 0) {
        		jQuery('#spanRelogio').html('Sessão Expirada');
        		jQuery('#botaoRenovarSession').hide("slow");
        	}
        	else { 
        		jQuery('#spanRelogio').html(hora + ":" + min);
        	}
        }
	}
}