function showModalAguarde(mensagem) {
	if (mensagem==undefined) mensagem="Processando...";
	jQuery.blockUI({ 
		message: mensagem,
		css: {
				border: 'none',
				padding: '15px',
				backgroundColor: '#000',
				'-webkit-border-radius': '10px',
				'-moz-border-radius': '10px',
				opacity: .5,
				color: '#FFFFFF'
			 }
	});

	//seta css de campo disabled no IE
	jQuery("input:disabled, textarea:disabled, select:disabled").addClass("fieldReadOnly");
}

function hideModalAguarde() {
	jQuery.unblockUI();

	//seta css de campo disabled no IE
	jQuery("input:disabled, textarea:disabled, select:disabled").addClass("fieldReadOnly");
}

// se existe alguma mensagem mover a tela para lá
function mostrarMensagensAposAjax() {
	if ($.trim( $('#listaMensagens').html())) {
		scrollToMessages();
	}
}

function scrollToMessages() {
	$.scrollTo('#listaMensagens', {speed:500});
}

//Para evitar duplo submit
function evitarDuploSubmit() {
 jQuery("form").submit(function() {
 	showModalAguarde();
     return true;
 });
};

function aplicarMascaras(){
	// remove mascaras antes de aplicar
	// aparentemente corrige o problema de quando as mascaras ficavam zuadas
	jQuery(".valorMonetario").maskMoney('unmasked');
	jQuery(".valorPercentual").maskMoney('unmasked');
	jQuery(".notaTecnica").maskMoney('unmasked');

	// mascara de valor monetario
	jQuery(".valorMonetario").maskMoney({precision:2, thousands:'.', decimal:',', affixesStay: false, allowZero:false});
	
	// mascara de valor percentual
	jQuery(".valorPercentual").maskMoney({precision:6, thousands:'.', decimal:',', affixesStay: false, allowZero:true});

}

function bloquearStringsCamposNumericos() {
	jQuery('.numbersOnly').keypress(function (event) {
		var keyCode = event.which ? event.which : event.keyCode;
		if(keyCode >= 48 && keyCode <= 57 || // numeros 
				keyCode >= 35 && keyCode <= 40 || // home, end e setas
				keyCode == 8  || // backspace 
				keyCode == 9  || // tab
				keyCode == 13 || // enter
				keyCode == 46)  // delete
			return;
		event.preventDefault();		
	});
}

// Aplica acessibilidade ao menu caso usuario resolva navegar usando o teclado
function menuAcessivel() {
	// Itens de menu de primeiro nivel
	jQuery(".menuItem > a").focusin(function()  {
		jQuery(this.parentNode).css("background", "#ADAD94");
		menuExpandir(this.parentNode);
	});
	jQuery(".menuItem > a").focusout(function() {
		jQuery(this.parentNode).css("background", "#F7A227");
		menuContrair(this.parentNode);
	});
	
	// Itens de menu de segundo nivel
	jQuery(".menuItem > .subMenuItem > a").focusin(function() {
		jQuery(this.parentNode).css("background", "#ADAD94");
		menuExpandir(this.parentNode.parentNode);
	});
	jQuery(".menuItem > .subMenuItem > a").focusout(function() {
		jQuery(this.parentNode).css("background", "#F7A227");
		menuContrair(this.parentNode.parentNode);
	});

	// Itens de menu de terceiro nivel
	jQuery(".menuItem > .subMenuItem > .subMenuItem > .subMenuItem > a").focusin(function() {
		jQuery(this.parentNode).css("background", "#ADAD94");
		menuExpandir(this.parentNode.parentNode.parentNode.parentNode);
		menuExpandir(this.parentNode.parentNode.parentNode);
	});
	jQuery(".menuItem > .subMenuItem > .subMenuItem > .subMenuItem > a").focusout(function() {
		jQuery(this.parentNode).css("background", "#F7A227");
		menuContrair(this.parentNode.parentNode.parentNode.parentNode);
		menuContrair(this.parentNode.parentNode.parentNode);
	});
}

function menuExpandir(element) {
	var elements = jQuery(element).children(".subMenuItem");
	elements.css("left", "auto");
	elements.find("a").css("height", "2em");

	jQuery(element).mouseenter(function() {
		var subMenus = jQuery(this).children(".subMenuItem");
		subMenus.css("left","auto");
		subMenus.find("a").css("height", "2em");
	});
}

function menuContrair(element) {
	var elements = jQuery(element).children(".subMenuItem");
	elements.css("left", "-1000em");
	elements.find("a").css("height", "0em");
	
	jQuery(element).mouseleave(function() {
		var subMenus = jQuery(this).children(".subMenuItem");
		subMenus.css("left","-1000em");
		subMenus.find("a").css("height", "0em");
	});
}


// Utilizado no componente do primefaces <p:fileDownload> para retirar o 'Aguarde' da tela
function showDownloadStatus() {
}

function hideDownloadStatus() {
	 hideModalAguarde();
}

function handleGerarRelatorio(exigeCatpcha, form) {
	if (!exigeCatpcha) {
		form.target='_blank';
	}
}

//Executar assim que o documento eh carregado
//Deixar sempre ao final desse arquivo
jQuery(document).ready(function() {
	aplicarMascaras();
	evitarDuploSubmit();
	bloquearStringsCamposNumericos();
	menuAcessivel();
});