
function confirmarCancelamento() {
	return confirm('Você realmente deseja cancelar a operação?');
}

function confirmarLogout() {
	return confirm('Você realmente deseja sair do sistema?');
}

function confirmarRemocao() {
	return confirm('Você realmente deseja remover este registro?');
}

function confirmarDesativacao() {
	return confirm('Você realmente deseja desativar este registro?');
}

function confirmarExclusao() {
	return confirm('Você realmente deseja excluir este(s) registro(s)?');
}

function alertarExclusao() {
	return alert('Selecione ao menos um registro para exlusão.');
}

function confirmarExclusaoAll(form, group) {
	if (hasChecked(form, group)) {
		confirmarExclusao();
	} else {
		alertarExclusao();
	}
}

function hasChecked(form, group) {
	var e = form.elements;
	var g = e[group];

	if(g.length == undefined){
		if(g.checked)		
			return true;			
	}else{
		for (var i = 0, n = g.length; i < n; ++i) {
			if (g[i].checked) 				
				return true; 		
		}
	}
	return false;
	
}

function checkAll(form, group, check) {
	var e = form.elements;
	var g = e[group];
	
	if(g.length == undefined){
		if (check)
			g.checked = 'checked';
		else
			g.checked = '';		
	}
	else{
		for (var i = 0, n = g.length; i < n; ++i) {
			if (check)
				g[i].checked = 'checked';
			else
				g[i].checked = '';
		}
	}
}

function hasSelected(radioObj) {
	if (!radioObj)
		return false;
		
	var radioLength = radioObj.length;
	
	for (var i = 0; i < radioLength; i++) {
		if (radioObj[i].checked) {
			return true;
		}
	}
	
	return false;
}

function confirmarDesassociacao() {
	return confirm('Você realmente deseja desassociar este registro?');
}

function isEmailAddress(theElement) {
	var s = theElement.value;
	var filter=/^[A-Za-z][A-Za-z0-9_.]*@[A-Za-z0-9_]+\.[A-Za-z0-9_.]+[A-za-z]$/;
	
	if (s.length == 0) 
		return false;
	
	if (filter.test(s))
		return true;
	else
		theElement.focus();
		
	return false;
}

function showLIinUL(type, idUL) {
	var elems = getEl(idUL).getChildrenByTagName('li'); 
	for (i = 0; i < elems.length; i++) {
		var e = elems[i];
		if (e.hasClass(type))
			e.setDisplayed(true);
		else
			e.setDisplayed(false);
	}
}

function showLIinULExcept(type, idUL, except) {
	var elems = getEl(idUL).getChildrenByTagName('li'); 
	for (i = 0; i < elems.length; i++) {
		var e = elems[i];
		if (!e.hasClass(except)) {
			if (e.hasClass(type))
				e.setDisplayed(true);
			else
				e.setDisplayed(false);
		}
	}
}

/*
 * Inicio da Definicao de Teclas Especiais
 * @author David Pereira
 * @date   26/07/2006
 */
KEY_BACKSPACE = 8,
KEY_TAB		= 9,
KEY_RETURN	= 13,
KEY_ESC		= 27,
KEY_LEFT		= 37,
KEY_UP		= 38,
KEY_RIGHT		= 39,
KEY_DOWN		= 40,
KEY_DELETE	= 46,
KEY_SHIFT 	= 16;
KEY_END 		= 35;
KEY_HOME 		= 36;

var teclasEspeciais = new Array(
	KEY_BACKSPACE,	// 08 - Backspace
	KEY_TAB, 			// 09 - Tab
	KEY_RETURN, 		// 13 - Enter
	KEY_SHIFT,		// 16 - Shift
	KEY_ESC,			// 27 - Esc
	KEY_END, 			// 35 - End
	KEY_HOME, 		// 36 - Home
	KEY_LEFT, 		// 37 - Seta esquerda
	KEY_UP, 			// 38 - Seta para cima
	KEY_RIGHT, 		// 39 - Seta direita
	KEY_DOWN, 		// 40 - Seta abaixo
	KEY_DELETE  		// 46 - Delete
);

function formatarMascara(src, event, mask) {
	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;

	// Enter, backspace, delete e setas direcionais
	if (teclasEspeciais.indexOf(rcode) != -1) {
		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);
		return true;
	} else {
		return false;
	}
}

function formataData(src, event) {
	return formatarMascara(src, event, '##/##/####');
}

function formataCep(src, event) {
	return formatarMascara(src, event, '#####-###');
}

function formataCpfCnpj(src, event, elem) {
	if (getEl(elem).dom.checked) {
		return formatarMascara(src, event, '###.###.###-##');
	} else {
		return formatarMascara(src, event, '##.###.###/####-##');
	}
}

function limitaCpfCnpj(elem, tipo) {
	elDom = getEl(elem).dom;
	if (tipo == 'F') {
		elDom.value = '';	
		elDom.maxLength = 14;
	} else {
		elDom.value = '';
		elDom.maxLength = 18;
	}
}

/*
 * Inicio da funcao para formatacao de valor
 * @author 	David Pereira
 * @date 	26/07/2006
 */

function formataValor(campo, event, casas) {

     var point = '.';
     var comma = ',';
     var sep = 0;
     var key = '';
     var i = j = 0;
     var len = len2 = 0;
     var strCheck = '0123456789';
     var aux = aux2 = '';
     var rcode = event.which ? event.which : event.keyCode;
	 casas = parseInt(casas);

     if (teclasEspeciais.indexOf(rcode) != -1) {
          return true; // Teclas especiais
     }

	 if (rcode >= 96 && rcode <= 105)
		rcode -= 48; // Teclado num?rico, c?digo diferente

     key = String.fromCharCode(rcode); // Pega o valor da tecla pelo c?digo

     if (strCheck.indexOf(key) == -1){
          return false; // Filtra teclas inv?lidas
     }

     len = campo.value.length;
     for(; i < len; i++){
          if (strCheck.indexOf(campo.value.charAt(i))!=-1){
               aux += campo.value.charAt(i);
          }
     }

     aux += key;
     len = aux.length;

	 if (len == 0)     { campo.value = ''; }
     if (len <= casas) { campo.value = aux; }
     if (len > casas) {
          aux2 = '';
          for (j = 0, i = len - (casas + 1); i >= 0; i--) {
               if (j == casas + 1) {
                    aux2 += point;
                    j = 0;
               }
               aux2 += aux.charAt(i);
               j++;
          }
          campo.value = '';
          len2 = aux2.length;
          for (i = len2 - 1; i >= 0; i--){
               campo.value += aux2.charAt(i);
          }
          campo.value += comma + aux.substr(len - casas, len);
     }

     return false;
}

function setValue(elem, value) {
	getEl(elem).dom.value = value;
}

function ativaDesativa(ativar, desativar) {
	getEl(ativar).dom.disabled = false;
	getEl(desativar).dom.disabled = true;
}