function setMsg(msg, displayAlert) {
	if ( (msg || '') != '' && displayAlert ) { alert( msg.replace(/<br\/>/g, "\n") ); }
	$('tdMsg').innerHTML = ( msg == '' ? '&nbsp;' : '<blink>' + msg + '</blink>' );
}

function SetarInputInvalido(obj) {
  obj = $(obj);
  if ( !obj.hasClassName('inputInvalido') ) {
    obj.addClassName('inputInvalido');
  }
}

function RemoverInputInvalido(obj) {
  obj = $(obj);
  if ( obj.hasClassName('inputInvalido') ) {
    obj.removeClassName('inputInvalido');
  }
}

function formataNumero(obj) {
	setMsg('');
  var s = obj.value.toString();
  s = s.soAlgarismos();
  obj.value = (s==''?'0':s);
}

function SuperTrim(obj) {
 	setMsg('')
  var s = obj.value.toString();
  s = s.superTrim();
	var c;
	var temp = "";
	for (var i=0; i<s.length; i++) {
		c = s.charCodeAt(i);
		if (c>31 || c==10 || c==13 || c==9) temp += s[i];
	}
  obj.value = temp;
}

function ValidarCEP( obj, returnIfNull, showMsg, displayMsg ) {
 	setMsg('')
	
	returnIfNull = ((returnIfNull==undefined) ? true : returnIfNull);
	showMsg = ((showMsg==undefined) ? true : showMsg);
	displayMsg = ((displayMsg==undefined) ? true : displayMsg);
	
	var s = obj.value.toString();
	s = s.soAlgarismos();
	if ( s == '' ) {
		if (returnIfNull)	return true;
		// else...
		if(showMsg) setMsg('Informe o CEP de sua residência.', displayMsg)
		return false;
	}
	while ( s.length < 8 ) s = "0" + s;
 	s = s.replace( /(\d\d\d\d\d)(\d\d\d)/, "$1-$2" );
	obj.value = s;
	return true;
  
}

function ValidarData( obj, returnIfNull, showMsg, displayMsg ) {
 	setMsg('')
	
	returnIfNull = ((returnIfNull==undefined) ? true : returnIfNull);
	showMsg = ((showMsg==undefined) ? true : showMsg);
	displayMsg = ((displayMsg==undefined) ? true : displayMsg);
	
	var s = obj.value.toString().superTrim();
	if ( s == '' ) return returnIfNull;

	var d = new Date();
	d.parseBR(obj.value);
	if( !d ) {
		if(showMsg) setMsg('Digite a data no formato "dd/mm/aaaa".', displayMsg)
		return false;
	}
	obj.value = d.formatBR();
	return d;
}

function ValidarDataNascimento( obj, returnIfNull, showMsg, displayMsg ) { 
 	setMsg('')
  RemoverInputInvalido(obj);
	
	returnIfNull = ((returnIfNull==undefined) ? true : returnIfNull);
	showMsg = ((showMsg==undefined) ? true : showMsg);
	displayMsg = ((displayMsg==undefined) ? true : displayMsg);
	
	var s = obj.value.toString().superTrim();
	if ( s == '' ) return returnIfNull;

	var d = new Date();
	d.parseBR(obj.value);
	if( !d ) {
		if(showMsg) setMsg('Digite a data no formato "dd/mm/aaaa".', displayMsg)
		return false;
	}
	obj.value = d.formatBR();
	
	var dataAtual = new Date();
	var idade = dataAtual.getFullYear() - d.getFullYear();
	if ( idade > 80 || idade < 14 ) {
		SetarInputInvalido(obj);
		if (showMsg) {
		  var msg = "Verifique a data de nascimento informada.\n"
		      + "A idade deve estar entre 14 e 80 anos para o cadastro."
		  setMsg ( msg, displayMsg );
		}
    return false;
  }	
	return d;

}

function ValidarEmail( obj, returnIfNull, showMsg, displayMsg ) { 
 	setMsg('')
  RemoverInputInvalido(obj);

	returnIfNull = ((returnIfNull==undefined) ? true : returnIfNull);
	showMsg = ((showMsg==undefined) ? true : showMsg);
	displayMsg = ((displayMsg==undefined) ? true : displayMsg);

	var s = obj.value;
	s = s.replace(/\s+/g,''); // sem espaços
	s = s.replace( /[\.]{2,}/g, '.' ); //dois pontos juntos
	if ( s == '' ) {
		if (returnIfNull) return true;
		// else...
		if(showMsg) setMsg('Informe um endereço de Email para contato.', displayMsg)
		return false;
		
	}
	obj.value = s;
	if ( !s.emailValido() ) {
	  SetarInputInvalido(obj);
		if(showMsg) setMsg('Email inválido', displayMsg)
		return false;
 	} 
 	return true;
 }
 
function ValidarCPF( obj, returnIfNull, showMsg, displayMsg ) { 
 	setMsg('')
  RemoverInputInvalido(obj);
  
	returnIfNull = ((returnIfNull==undefined) ? true : returnIfNull);
	showMsg = ((showMsg==undefined) ? true : showMsg);
	displayMsg = ((displayMsg==undefined) ? true : displayMsg);

	var s = obj.value.toString()
	if (s=='') return returnIfNull;
	s = s.cpfOK();
	if (!s) {
		SetarInputInvalido(obj);
		if(showMsg) setMsg('Número de CPF inválido.', displayMsg)
	 	return false; 
	}
	obj.value = s;
	return true;
 };

function ValidarSenha( obj, returnIfNull, showMsg, displayMsg ) { 
 	setMsg('')
	RemoverInputInvalido(obj);

	returnIfNull = ((returnIfNull==undefined) ? true : returnIfNull);
	showMsg = ((showMsg==undefined) ? true : showMsg);
	displayMsg = ((displayMsg==undefined) ? true : displayMsg);

	var s = obj.value;
	if ( s == '' ) {
		return returnIfNull;
	}
	if ( /[^-._a-zA-Z0-9]/g.test( s ) || s.length > 8 ) {
		SetarInputInvalido(obj);
		if(showMsg) {
			msg = "Caracteres inválidos na senha: utilize apenas letras, algarismos,\ntraço, ponto ou sublinha.\nMáximo de 8 caracteres.";
			setMsg(msg, displayMsg)
		}
		return false;
	}
	return true;
 };


function createXMLHttpRequest() {
	try { return new XMLHttpRequest(); } catch(e) {};
	try { return new ActiveXObject("Msxml2.XMLHTTP");	} catch(e) {};
	try { return new ActiveXObject("Microsoft.XMLHTTP"); } catch(e) {};
	alert("Seu navegador não suporta navegação XMLHttpRequest. Não posso exibir o conteúdo.");
	return null;
}

function generateUniqueID() {
	return new Date().getTime();
}

function ShowHideMenuItens(obj) {
	setMsg('');
	// encontra a primeira TR acima de obj
	// e seleciona a TR abaixo
	targetObj = $(obj).up('tr').next();
	if (targetObj.visible()) {
		targetObj.hide();
		return true;
	}

	$$('tr.trMenu').each( function(item) {
			item.next().hide();
		}
	)

	targetObj.show();
}

function ShowHideNextSibling(obj) {
	var targetObj = $(obj).next();
	if ( targetObj ) {targetObj.toggle()};
}

function HideNextSibling(obj) {
	var targetObj = $(obj).next();
	if ( targetObj ) {targetObj.hide()};
}

function ShowNextSibling(obj) {
	var targetObj = $(obj).next();
	if ( targetObj ) {targetObj.show()};
}

function ShowHideNextTR(obj) {
	var targetObj = $(obj).up('tr').next();
	if ( targetObj ) {targetObj.toggle()};
}

