/***
	Funções de controle das grids
	- gridCheckBox (marca/desmarca os checkbox da grid
	- gridDelete (controla a confirmação da exclusão dos registros)
	- 	
***/

// Marca/desmarca checkbox
function gridCheckBox(allBoxes, boxes)
{
	var allBoxes = document.getElementById(allBoxes);
	if (allBoxes.checked)
		{
			var boxes = document.getElementsByName(boxes);
		for (i = 0; i < boxes.length; i++) {
  			if (boxes[i].disabled != true) {
    				boxes[i].checked = true;
    			}
		}
		} else {
		var boxes = document.getElementsByName(boxes);
		for (i = 0; i < boxes.length; i++) {
  			if (boxes[i].disabled != true) {
  				boxes[i].checked = false;
  			}
		}
		}
}

// Confirmação de exclusão de registros a partir do grid
function gridDelete(form, boxes, action) 
{
  	var rows = document.getElementsByName(boxes);
  	var checked = false;
  	for(x = 0; x < rows.length; x++) {
      	if (rows[x].checked) {
          	checked = true;
  		}
  	}
  	if (!checked)
  	{  		
  		// Caixa de diálogo
		$(document).ready(function() {
			var $dialog = $('<div></div>') 
				.html('É necessário selecionar pelo menos um registro.')
				.dialog({
				autoOpen: false,
				modal: true,
				title: 'Excluir',
				buttons: {
					'Ok': function() {
						$(this).dialog('close');
					}
				}
			});
			$dialog.dialog('open');
		});  	
      	return false;
  	}
  	// Caixa de diálogo
	$(document).ready(function() {
		var $dialog = $('<div></div>') 
			.html('Tem certeza de que deseja excluir o(s) registro(s) selecionado(s)')
			.dialog({
			autoOpen: false,
			modal: true,
			title: 'Por favor confirmar a exclusão',
			buttons: {
				'Sim': function() {
					$(this).dialog('close');
		          	document.form.action = action;
        		  	$("form[name='" + form + "']").submit();					
				},
				'Não': function() {
					$(this).dialog('close');
					return false;
				}
			}
		});
		$dialog.dialog('open');
	});  	
	
	/*
  	
  	jConfirm('Tem certeza de que deseja excluir o(s) registro(s) selecionado(s)?', 
		'Por favor confirmar a exclusão', function(result)
  	{
      	if (result) {
      	} else {
          	return false;
      	}
  	});*/
}  

// Localizar registros a partir do grid
function gridSearch(form, action)
{
	jPrompt('Entre com o que deseja localizar', '', 'Localizar',
	function(result)
	{
		if (result) {
			document.getElementById('postSearch').value = result;
          	document.form.action = action;
			$("form[name='" + form + "']").submit();
		} else {
			return false;
		}
	});
}

// Função para controle da paginação
function gridPage(form, action, value)
{
	document.getElementById('postPage').value = value;
    document.form.action = action;
	$("form[name='" + form + "']").submit();
}

// Gera um alerta de hint
function hintAlert(hint)
{
  	// Caixa de diálogo
	$(document).ready(function() {
		var $dialog = $('<div></div>') 
			.html(hint)
			.dialog({
			autoOpen: false,
			modal: true,
			title: 'Informação',
			buttons: {
				'Ok': function() {
					$(this).dialog('close');
					return false;
				}
			}
		});
		$dialog.dialog('open');
	}); 
  	return false;
}

/**
* moeda
*
* @abstract Classe que formata de desformata valores monetários
* em float e formata valores de float em moeda.
*
* @author anselmo
*
* @example
* moeda.formatar(1000)
* >> retornar 1.000,00
* moeda.desformatar(1.000,00)
* >> retornar 1000
*
* @version 1.0
**/
var moeda = {
	/**
	* retiraFormatacao
	* Remove a formatação de uma string de moeda e retorna um float
	* @param {Object} num
	*/
	desformatar: function(num)
	{
		num = num.replace(".","");
		num = num.replace(",",".");
		return parseFloat(num);
	},
	/**
	* formatar
	* Deixar um valor float no formato monetário
	* @param {Object} num
	*/
	formatar: function(num)
	{
		x = 0;
		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;
		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;
	},
	
	/**
	* arredondar
	* @abstract Arredonda um valor quebrado para duas casas
	* decimais.
	* @param {Object} num
	*/
	arredondar: function(num){
		return Math.round(num*Math.pow(10,2))/Math.pow(10,2);
	}
}