//troca o class do obj quando este está em 'edição'
var classAnterior;
var	bOkDataHora = true;
var contPonto = 0;

//Constante para validação de data
var CONST_VALIDAR_DATA = true;
///////////////////////////Referenciando as informações do menu
/*var stringMenu = "";

if (top.fraMenu) {
	stringMenu = "top.fraaMenu";
} else if (parent.top.fraMenu) {
	stringMenu = "parent.top.fraMenu";
} else if (parent.parent.top.fraMenu) {
	stringMenu = "parent.parent.top.fraMenu";
} else if (parent.parent.top.fraMenu) {
	stringMenu = "parent.parent.top.fraMenu";
}
if (opener) {
	if (opener) {
		stringMenu = "opener";
	}
	if (opener.top) {
		if (opener.top.fraMenu) {
			stringMenu = "opener.top.fraMenu";
		} else if (parent.opener.top.fraMenu) {
			stringMenu = "parent.opener.top.fraMenu";
		} else if (parent.parent.opener.top.fraMenu) {
			stringMenu = "parent.parent.opener.top.fraMenu";
		} else if (parent.parent.opener.top.fraMenu) {
			stringMenu = "parent.parent.opener.top.fraMenu";
		}
	}
	if (opener.parent.top) {
		if (opener.parent.top.fraMenu) {
			stringMenu = "opener.parent.top.fraMenu";
		} else if (parent.opener.parent.top.fraMenu) {
			stringMenu = "parent.opener.parent.top.fraMenu";
		} else if (parent.parent.opener.parent.top.fraMenu) {
			stringMenu = "parent.parent.opener.parent.top.fraMenu";
		} else if (parent.parent.opener.parent.top.fraMenu) {
			stringMenu = "parent.parent.opener.parent.top.fraMenu";
		}
	}

}

if (stringMenu != "") {
	var linguagem = eval(stringMenu+".language");
	var decimalSeparator = eval(stringMenu+".decimalSeparator");
	var dateMask = eval(stringMenu+".dateMask");;
	
	var msgDeleteUnique = eval(stringMenu+".msgDeleteUnique");;
	var msgMultipleDeleteBegin = eval(stringMenu+".msgMultipleDeleteBegin");
	var msgMultipleDeleteEnd = eval(stringMenu+".msgMultipleDeleteEnd");
	var msgDeleteFailed = eval(stringMenu+".msgDeleteFailed");
	
	var msgDisableUnique = eval(stringMenu+".msgDisableUnique");
	var msgMultipleDisableBegin = eval(stringMenu+".msgMultipleDisableBegin");
	var msgMultipleDisableEnd = eval(stringMenu+".msgMultipleDisableEnd");
	var msgDisableFailed = eval(stringMenu+".msgDisableFailed");
    var msgSelectFailed = eval(stringMenu+".msgSelectFailed");
	var msgSelectMark = eval(stringMenu+".msgSelectMark");
    var msgLocalityNotInformed = eval(stringMenu+".msgLocalityNotInformed");
	
	var invalidField = eval(stringMenu+".invalidField");
	var invalidDate = eval(stringMenu+".invalidDate");
	
	var msgFieldRequired = eval(stringMenu+".msgFieldRequired");
	var msgConfirm = eval(stringMenu+".msgConfirm");
	var msgInvalidNumber = eval(stringMenu+".msgInvalidNumber");
	var msgDateInitialMinorFinal = eval(stringMenu+".msgDateInitialMinorFinal");
	var msgDateGreaterThanActual = eval(stringMenu+".msgDateGreaterThanActual");
	var noFlowsFound = eval(stringMenu+".noFlowsFound");
	var recalcFreightPrice = eval(stringMenu+".recalcFreightPrice");
    var invalidPasswords = eval(stringMenu+".invalidPasswords");
	var serviceRequestDate = eval(stringMenu+".serviceRequestDate");
	var newRequestDate = eval(stringMenu+".newRequestDate");
	var eventRegRequestDate = eval(stringMenu+".eventRegRequestDate");
	var msgNoRecordsExport = eval(stringMenu+".msgNoRecordsExport");
	var msgSelectOnlyReverse = eval(stringMenu+".msgSelectOnlyReverse");
	var msgSelectOneRecord = eval(stringMenu+".msgSelectOneRecord");
	var msgSelectOnlyInbound = eval(stringMenu+".msgSelectOnlyInbound");
	var msgStShipment = eval(stringMenu+".msgStShipment");

    var msgMultipleValidateBegin = eval(stringMenu+".msgMultipleValidateBegin");
    var msgMultipleValidateEnd = eval(stringMenu+".msgMultipleValidateEnd");
    var msgValidateFailed = eval(stringMenu+".msgValidateFailed");
    var msgValidateUnique = eval(stringMenu+".msgValidateUnique");
	
	var msgWeightFreightRangeCannot = eval(stringMenu+".msgWeightFreightRangeCannot");
	var contractNotExistForThisLocality = eval(stringMenu+".contractNotExistForThisLocality");
	var confirmSendShipment	= eval(stringMenu+".confirmSendShipment");
	
	var msgYouMustSaveIt = eval(stringMenu+".msgYouMustSaveIt");
	var collectRequestDateActualDate = eval(stringMenu+".collectRequestDateActualDate");
	var scheduledRequestDateActualDate = eval(stringMenu+".scheduledRequestDateActualDate");
	var scheduledRequestDateCollectRequestDate = eval(stringMenu+".scheduledRequestDateCollectRequestDate");
	var scheduledDeliveryDateActualDate = eval(stringMenu+".scheduledDeliveryDateActualDate");
	var scheduledDeliveryDateScheduledRequestDate = eval(stringMenu+".scheduledDeliveryDateScheduledRequestDate");
	var scheduledDeliveryDateCollectRequestDate = eval(stringMenu+".scheduledDeliveryDateCollectRequestDate");
	var effectiveCollectDateRegisterDate = eval(stringMenu+".effectiveCollectDateRegisterDate");
	var selectDestiny = eval(stringMenu+".selectDestiny");
	var effectiveDeliveryDateEffectiveCollectDate = eval(stringMenu+".effectiveDeliveryDateEffectiveCollectDate");
    
}*/
///////////////////////////////////////////////////////////////
function objFocus(campo){
	//alert("objFocus "+campo.className);
	if (campo.className.indexOf("Focus") == -1) {
		classAnterior	= campo.className;
		campo.className = eval("'"+campo.className+'Focus'+"'");
	} else {
		campo.className = eval("'"+campo.className+"'");
	}
}

//troca o class do obj quando este não está mais em 'edição'
function objBlur(campo){
	campo.className = classAnterior;
}


function mask(obj,evento,tipo){
//NETSCAPE: APARTIR DA VERSÃO 5.0
	var tecla;
	var ret = true;
	if(!evento) {
		evento = window.event;
	}
	if(IsIE()){
		tecla = evento.keyCode;
	}else{
		tecla = evento.which;
	}
	if(tecla == 0) {
		tecla = evento.charCode;
	}
	
	ret = isNumberDate(obj,evento);
	
	if(!ret) {
		//return ret; // false
	}	

	if(IsIE()){	//VALIDAÇÕES PARA INTERNET EXPLORER
		switch (tipo){
			case 'DATA':{
				obj.maxLength = 10;
	
				if(obj.value.length!=2 && obj.value.length!=5 && !validaNumerico(String.fromCharCode(tecla))){
					return;
				}
				if(tecla != 8){
					if(obj.value.length==2){
						if(tecla!=47){
							obj.value += "/";
						}
					}else if(obj.value.length==5){
						obj.value += "/";
					}
				}
				break;
			}
			
			case 'DATAHORA':{
				obj.maxLength = 18;
	
				if(obj.value.length!=2 && obj.value.length!=5 && !validaNumerico(String.fromCharCode(tecla))){
					return;
				}
				if(tecla != 8){
					if(obj.value.length==2){
						if(tecla!=47){
							obj.value += "/";
						}
					}else if(obj.value.length==5){
						obj.value += "/";
					}
					
					if (obj.value.length == 10){
						obj.value += " - ";
					}
					if (obj.value.length == 15){
						obj.value += ":";
					}
				}
				break;
			}

			case 'CPF':{
				obj.maxLength=11;
				if(tecla != 8){
					isNumber(obj, evento);
				}
				/*obj.maxLength=14;
				if(tecla != 8){
					isNumber(obj,event);
					if(obj.value.length==3){
						obj.value += ".";
					}else if(obj.value.length==7){
						obj.value += ".";
					}else if(obj.value.length==11){
						obj.value += "-";
					}
				}*/
				break;
			}
			case 'CNPJ':{
				obj.maxLength=14;
				if(tecla != 8){
					isNumber(obj, evento);
				}
				/*obj.maxLength=18;
				if(tecla != 8){
					isNumber(obj,event);
					if(obj.value.length==2){
						obj.value += ".";
					}else if(obj.value.length==6){
						obj.value += ".";
					}else if(obj.value.length==10){
						obj.value += "/";
					}else if(obj.value.length==15){
						obj.value += "-";
					}
				}*/
				break;
			}
			case 'CEP':{
				obj.maxLength=9;
				if(tecla != 8){
					isNumber(obj,event);
					/*if(obj.value.length==2){
						obj.value += ".";
					}else */ if(obj.value.length==5){
						obj.value += "-";
					}
				}	
				break;
			}
			case 'HORA':{
				obj.maxLength=5;
				if(tecla != 8){
					isNumber(obj,evento);
					if(obj.value.length==2){
						obj.value += ":";
					}
				}	
				break;
			}
			case 'COMPETENCIA':{
				obj.maxLength=7;
				if(tecla != 8){
					isNumber(obj,evento);
					if(obj.value.length==2){
						obj.value += "/";
					}
				}	
				break;
			}
		}
	}else if((IsNetscape() && GetVersion()>=5)){
		switch (tipo){
			case 'DATA':{
				obj.maxLength = 10;
	
				if(obj.value.length!=2 && obj.value.length!=5 && !validaNumerico(String.fromCharCode(tecla))){
					return;
				}
				
				if(tecla != 8 && tecla != 0){
					if(obj.value.length==2){
						if(tecla!=47){
							obj.value += "/";
						}
					}else if(obj.value.length==5){
						obj.value += "/";
					}
				}
				break;
			}
			case 'CPF':{
				obj.maxLength=14;
				if(tecla != 8 && tecla!=0){
					isNumber(obj,evento);
					formatCpf(obj);
				}
				break;
			}
			case 'CNPJ':{
				obj.maxLength=18;
				if(tecla != 8 && tecla!=0 ){
					isNumber(obj,evento);
					formatCnpj(obj);
				}	
				break;
			}
			case 'CEP':{
				obj.maxLength=9;
				if(tecla != 8 && tecla != 0){
					ret = ret && isNumber(obj,evento);
					ret = ret && formatCep(obj);			
				}				
				return ret;	
				break;
			}
			case 'HORA':{
				obj.maxLength=5;
				if(tecla != 8){
					isNumber(obj,evento);
					formatHora(obj);
				}	
				break;
			}
			case 'COMPETENCIA':{
				obj.maxLength=7;
				if(tecla != 8){
					isNumber(obj,evento);
					formatCompetencia(obj);
				}	
				break;
			}
		}
	}
}

function isNumberDate(campo,evento) {
//NETSCAPE: APARTIR DA VERSÃO 5.0
	var tecla;
	var caracter;
	
	if(!evento) {
		evento = window.event;
	}
	
	if(IsIE()){
		tecla = evento.keyCode;
	}else{
		tecla = evento.which;
	}
	
	if(tecla == 0) {
		tecla = evento.charCode
	}
	
	caracter = (String.fromCharCode(tecla));
	
	if (((tecla < 48) || (tecla > 57)) && (tecla != 0)){
		evento.returnValue = false;
		return false;
	}
	return true;
} 

function validaNumerico( value ){
//NETSCAPE: YES
	var strValidos = "0123456789";
	var valor= new String(value);
	for( var i=0; i< valor.length; i++){
		if( strValidos.indexOf(valor.charAt(i)) == -1)
			return false;
	}
	return true;
}

function isNumber(campo,evento) {
	var tecla;
	var caracter;
	if(!evento) {
		evento = window.event;
	}
	if(IsIE()){
		tecla = evento.keyCode;
	}else{
		tecla = evento.which;
	}
	

	if(tecla == 0) {
		tecla = evento.charCode;
	}
	
	caracter = (String.fromCharCode(tecla));
	
	if (((tecla < 48) || (tecla > 57)) && (tecla != 0) && (tecla != 8)){		
		evento.returnValue = false;
		if(!IsIE()){			
			caracter = (String.fromCharCode(tecla));
			campo.value = limpaParaMascara(campo.value,'numeros');
		}	
		return false;
	}
	return true;
} 

function isIP(campo,event){
	var tecla = event.keyCode;
	var tcampo = campo.value;
	if(((tecla >= 48) && (tecla <=57)) || (tecla==46)){
		if(tcampo!=""){
			octetos = tcampo.split(".");
			ultimo = (octetos.length) - 1;
			if(tecla==46){
				tamanho = (octetos[ultimo].length);
			}else{
				tamanho = (octetos[ultimo].length)+1;
			}
	
			if(ultimo>=3){
				if(tecla==46){
					event.keyCode = 0;
				}
				if(tamanho==3){
					//campo.maxLength=(tcampo.length)+1;
				}
			}else{
				campo.maxLength=15;
			}
			if(tamanho>3){
				if(ultimo<3){
					campo.value+= ".";
				}
			}
		}
	}else{
		event.keyCode = 0;
	}
}

function limpaParaMascara(sujeira,filtro,tipo){
//NETSCAPE: YES
// Descrição: Recebe um string e retorna somente os caracteres que pertencem ao filtro. Usar tipo = 1 para valores positivo/negativo.
// limpaParaMascara('12.3ABC -def456','valores') -> 123456
// limpaParaMascara('12,3ABC -def456','valores') -> 12,3456
// limpaParaMascara('-12,3ABC -def456','valores') -> -12,3456
// limpaParaMascara('12,3ABC -def456','letras') -> 12,3ABC -def456
// limpaParaMascara('12,3ABC -def456','numeros') -> 123456
// limpaParaMascara('0','numeros') -> 0
//  ******
//  Filtros:
	numeros = "0123456789";
	valores = "0123456789.";
	//valores = "0123456789.";
	datahora = "0123456789/: ";
	letras  = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyzÁÉÍÓÚÀÈÌÒÙÄËÏÖÜÂÊÎÔÛÃÕáéíóúàèìòùäëïöüâêîôûãõçÇ&ªº'\"\|@_<>!#$%&*()={[}]?:+-.,;/\\0123456789 ";
//  ******
	retorno2 = '';
	if (tipo == 1) {
		if (sujeira.substring(0,1) == "-") ind = 1;
		else ind = 0;
	}
	else ind = 0;
	switch (filtro){
		case 'numeros': {
			for ( i=ind; i < sujeira.length; i++ ) {
				if( numeros.indexOf(sujeira.charAt(i))>-1 ) { 
					retorno2 += sujeira.charAt(i);					
				}
			}
		break;	}
		case 'valores': {
			for ( i=ind; i < sujeira.length; i++ ) {
				if( valores.indexOf(sujeira.charAt(i))>-1 ) { 
					retorno2 += sujeira.charAt(i);
				}
			}
			if (sujeira.charAt && sujeira.charAt(0)=='-') {
				retorno2 = "-"+retorno2;
			}
		break;	}
		case 'letras': {
			for ( i=0; i < sujeira.length; i++ ) {
				if( letras.indexOf(sujeira.charAt(i))>-1 ) { 
					retorno2 += sujeira.charAt(i);
				}
			}
		break;	}
		case 'datahora': {
			for ( i=0; i < sujeira.length; i++ ) {
				if( datahora.indexOf(sujeira.charAt(i))>-1 ) { 
					retorno2 += sujeira.charAt(i);
				}
			}
		break;	}
	}
	if (tipo == 1) {
		if (sujeira.substring(0,1) == "-") retorno2 = "-" + retorno2;
	}
	return retorno2;
}


function formatCpf(obj){
//NETSCAPE: YES
	retorno = limpaParaMascara(obj.value,'numeros');
	if (retorno.length >= 3) { retorno = retorno.substr(0,3)+"."+retorno.substr(3); }
	if (retorno.length >= 7) { retorno = retorno.substr(0,7)+"."+retorno.substr(7); }
	if (retorno.length >= 11) { retorno = retorno.substr(0,11)+"-"+retorno.substr(11); }
	retorno = retorno.substr(0,14);
	obj.value = retorno;
}

function formatCnpj(obj){
//NETSCAPE: YES
	retorno = limpaParaMascara(obj.value,'numeros');
	if (retorno.length >= 2) { retorno = retorno.substr(0,2)+"."+retorno.substr(2); }
	if (retorno.length >= 6) { retorno = retorno.substr(0,6)+"."+retorno.substr(6); }
	if (retorno.length >= 10) { retorno = retorno.substr(0,10)+"/"+retorno.substr(10); }
	if (retorno.length >= 15) { retorno = retorno.substr(0,15)+"-"+retorno.substr(15); }
	retorno = retorno.substr(0,18);
	obj.value = retorno;
}

function formatCep(obj){
//NETSCAPE: APARTIR DA VERSÃO 5.0
	var retorno = "";
	if(obj.value == ""){
		return;
	}
	retorno = limpaParaMascara(obj.value,'numeros');
	//if (retorno.length >= 2) { retorno = retorno.substr(0,2)+"."+retorno.substr(2); }
	if (retorno.length >= 5) { retorno = retorno.substr(0,5)+"-"+retorno.substr(5); }
	retorno = retorno.substr(0,9);
	obj.value = retorno;	
}

function formatHora(obj){
	var retorno = "";
	if(obj.value == ""){
		return;
	}
	retorno = limpaParaMascara(obj.value,'numeros');
	if (retorno.length >= 2) { retorno = retorno.substr(0,2)+":"+retorno.substr(2); }
	retorno = retorno.substr(0,5);
	obj.value = retorno;
}

function formatCompetencia(obj){
	var retorno = "";
	if(obj.value == ""){
		return;
	}
	retorno = limpaParaMascara(obj.value,'numeros');
	if (retorno.length >= 2) { retorno = retorno.substr(0,2)+"/"+retorno.substr(2); }
	retorno = retorno.substr(0,7);
	obj.value = retorno;
}


function validaNumber(obj){
	if(VALIDA_VALORES_ONBLUR){
		obj.value = limpaParaMascara(obj.value,'numeros');
	}
}



///////////////////////////////////////////////////////////////////////
//Método: formataDate( obj )
//Funcionalidade: Formata e valida campos do tipo data
//Descrição:	-Recebe um objeto com a data digitada
//		-Se possível insere / e acrescenta caracteres
//		-Validade data gerada, impedindo que o campo seja deixado
//		se não for preenchido corretamente
///////////////////////////////////////////////////////////////////////
var nome = "";
function validaDate( el ){
	if(VALIDA_VALORES_ONBLUR){
		//NETSCAPE: YES
		if(!CONST_VALIDAR_DATA){
			return true;
		}
	
		var valor= new String(limpaParaMascara(el.value,'numeros'));
		LAST_FIELD= el;
		if (nome == "" || el.name == nome){
			vr = el.value;
			//minimo 6, maximo 10
			if (vr.length >= 6 && vr.length <= 10){
				token = new Array();
				i = 0;
				j = 0;
				nBar = 0;
				nDig = 0;
	
				while (i < vr.length)
				{
					if (vr.substring(i, i+1) >= '0' && vr.substring(i, i+1) <= '9'){
						str = "" + vr.substring(i, i+1);
						i++;
						while (vr.substring(i, i+1) >= '0' && vr.substring(i, i+1) <= '9' && i < vr.length)
						{
	
							str = str + vr.substring(i, i+1);
							i++;
						}
						token[j] = str;
						j++;
						nDig++;
					}else
					if (vr.substring(i, i+1) == "/"){
						str = "" + vr.substring(i, i+1);
						token[j] = str;
						j++;
						i++;
						nBar++;
	
					}
					else{
						i++;
					}
				}
	
				//verifica quantas barras e digitos foram reconhecidos
				//nBar == 0 e nDig == 1  - formato 01012000
				//nBar == 2 e nDig == 3  - formato 01/10/2000
				//para quaisquer outros formatos não faz formatação, ocasionando em erro
				if ((nBar == 0 && nDig == 1) || (nBar == 2 && nDig == 3)){
					//alert("numero de tokens: " + token.length);
	
					if (token.length == 1){ //um token de tamanho minimo 6, maximo 8
						dia = token[0].substring(0, 2);
						mes = token[0].substring(2, 4);
	
						if (token[0].length == 6){
							if (eval(token[0].substring(4, 6)) < 30)
								ano = "20" + token[0].substring(4, 6);
							else
								ano = "19" + token[0].substring(4, 6);
						}
						else
						if (token[0].length == 8)
							ano = token[0].substring(4, 8);
						else
							ano = token[0].substring(4, token[0].length);
	
						//alert(dia + "/" + mes + "/" + ano);
						el.value = dia + "/" + mes + "/" + ano;
					}else
					if (token.length == 5){ //5 tokens indicam data no formato dd/mm/aa
						if (token[0].length == 1 && eval(token[0]) < 10)
							dia = "0" + token[0];
						else
							//pega os dois primeiros digitos e ignora o restante se houver
							dia = token[0].substring(0, 2);
						barra1 = token[1]; //pega barra
						if (token[2].length == 1 && eval(token[2]) < 10)
							mes = "0" + token[2];
						else
							//pega os dois primeiros digitos e ignora o restante se houver
							mes = token[2].substring(0, 2);
	
						barra2 = token[3]; //pega barra
	
						if (token[4].length == 2){
							if (eval(token[4]) < 30)
								ano = "20" + token[4];
							else
								ano = "19" + token[4];
						}
						else
							ano = token[4];
	
						//alert(dia + barra1 + mes + barra2 + ano);
	
						el.value = dia + barra1 + mes + barra2 + ano;
					}
				}
			}
			
			var err=0;
			var psj=0; 
			a = el.value;
	
			if (a.length != 10)
				err=4;
			else{
	
				dia = a.substring(0, 2); // day 
				barra1 = a.substring(2, 3); // '/' 
				mes = a.substring(3, 5); // month 
				barra2 = a.substring(5, 6); // '/' 
				ano = a.substring(6, 10); // year 
		
				//basic error checking 
				if (mes < 1 || mes >12) err = 1;
				if (barra1 != '/') err = 4;
				if (dia < 1 || dia > 31) err = 2;
				if (barra2 != '/') err = 4 
				if (ano < 1900 || ano > 2100) err = 3 
				if (mes == 4 || mes == 6 || mes == 9 || mes == 11){ 
					//advanced error checking 
					// months with 30 days 
					if (dia == 31) err=4 
				} 
				if (mes == 2){ 
					// february, leap year 
					// feb 
					var g = parseInt(ano/4) 
					if (isNaN(g)) { 
						err=4 
					} 
					if (dia > 29) err=4 
		
					if (dia == 29 && ((ano/4)!=parseInt(ano/4))) err=4 
				} 
			}
	
			if (err > 0 && a.length > 0){
				alert('Data Inválida !'); 
				nome = el.name;
				el.focus();
				el.select();
				return;
			}
			else
				nome = "";
		}
		ERRO= false;
	}
} 



/*****************************************************
**		VALIDAÇÕES DE CAMPOS MONETÁRIO				**
*****************************************************/

function moeda(objEmFoco, tamanho1, tamanho2, event){
	var campo		= objEmFoco;
	var tammax		= tamanho1;
	var tamdeci		= tamanho2;
	var teclapres	= event;
	
	var tecla = teclapres.keyCode;
	vr = campo.value;
	vr = vr.replace( "/", "" );
	vr = vr.replace( "/", "" );
	vr = vr.replace( ",", "" );
	vr = vr.replace( ".", "" );
	vr = vr.replace( ".", "" );
	vr = vr.replace( ".", "" );
	vr = vr.replace( ".", "" );
	tam = vr.length;
	
	var iTamDec = parseInt(tamdeci);
	
	if ((tam >= iTamDec - 1) && (tecla != 8)){
		tam = vr.length + 1 ;
	}
	if (tecla == 8){
		tam = tam - 1;
		//alert(tam+'--'+iTamDec);
	}
	//alert(tecla+'');
	if ((tecla == 8) || (tecla >= 48 && tecla <= 57) || (tecla >= 96 && tecla <= 105 )){
		if (tam < iTamDec){
			campo.value = vr;
		}else if(tam == iTamDec){
			campo.value = "."+vr;
		}else{
			if(iTamDec>0){
				campo.value = vr.substr(0, tam - iTamDec)+'.'+vr.substr(tam - iTamDec, tam);
			}else{
				campo.value = vr;
			}
		}
	}

//NETSCAPE: SÓ APARTIR DA VERSÃO 5.0
/*    var tecla;
	if(IsIE()){
		tecla = event.keyCode;
	}else{
		tecla = event.which;
	}
	
	
	if ((tecla == 8) || (tecla == 13) || (tecla == 37) || (tecla == 39) || (tecla == 46) || (tecla == 16) || (tecla == 17))return ;
	retorno = '';
	retorno = objEmFoco.value;
	if (tamanho1+tamanho2 >0) {
		objEmFoco.maxLength = tamanho1 + 1 + tamanho2 + Math.floor(tamanho1/3);
	}
	var isNeg = false;
	if (retorno.charAt(0) == '-') {
		isNeg = true;
		retorno = retorno.substring(1);
		objEmFoco.maxLength++;
	}
	retorno = limpaParaMascara(retorno,'valores');
	
	var posPrimVirgula = retorno.indexOf(",");
	retorno = limpaParaMascara(retorno,'numeros');
	if (posPrimVirgula > 0) {
		valorInteiro = retorno.substr(0,posPrimVirgula);
		valorCentavo = retorno.substring(posPrimVirgula);
		if (retorno.charAt(0) == '0') {
			retorno = "0,"+valorCentavo.substr(0,tamanho2);
		} else {
			valorInteiro = retornaFormatoMonetarioInteiro(valorInteiro);
			valorCentavo = valorCentavo.substr(0,tamanho2);
			retorno = valorInteiro+","+valorCentavo;
		}
	} else { 
		retorno = retorno.substr(0,tamanho1);
		retorno = retornaFormatoMonetarioInteiro(retorno);
	}
	
	if (retorno == "" && (event.keyCode == 48 || event.keyCode == 96)) { 
		retorno = '0'; 
	}
	if (isNeg) { 
		retorno = "-"+retorno; 
	}
	
	if(IsIE()){
		objEmFoco.value = retorno;
	}else if(IsNetscape() && GetVersion() >=5){
		objEmFoco.value = retorno;
	}*/
}


function validaMoney(oque,tipo){
	if(VALIDA_VALORES_ONBLUR){
		//NETSCAPE: YES
		if (oque.value == "-" || oque.value == "") {
			oque.value = ""
			return;
		}
	    retorno = '';
	
		for (contador=0;contador < oque.value.length;contador++) {
	    	if( (oque.value.charAt(contador) != ".")) {
				retorno += oque.value.charAt(contador);
			}
	    }
	    procurado = /,/;
		retorno = retorno.replace(procurado, ".");
	
		retorno = retornaFormatoMonetario(retorno-0,tipo);
	    oque.value = retorno;
	}
}

function retornaFormatoMonetario(valor,tipo) {
	if(VALIDA_VALORES_ONBLUR){
		//NETSCAPE: YES
		valorNegativo = false;
		retorno = '';
		valor = toFloat(valor);
	
		if (valor < 0) {
			valorNegativo = true;
			valor = valor*(-1);
		}
	    if(valor != 0 || (tipo == 1 && valor == 0) ) { 
			retorno = parteInteira(Math.floor(valor) + '') + parteFracao(valor); 
	
			if (valorNegativo) {
				retorno = '-'+retorno;
			}
		}
		return retorno;
	}
}

function retornaQtdInteira(valor){
  var d = 0;
  var vlAux = '';
      
  vlAux = new String(valor / 1);
  for(var i = 0; i <= vlAux.length + 1; i++){
  	if (vlAux.charAt(i) != '.'){
    	d++;
    } else if (vlAux.charAt(i) == '.') {
        break
    }
  }
  return d;	         
}

function retornaQtdDecimal(valor){
  var z = 0;
  var vlAux = '';
  
  vlAux = new String(valor / 1);    
  for(var i = vlAux.length - 1; i >= 0; i--){
     if (vlAux.charAt(i) != '.'){
        z++;
     } else if (vlAux.charAt(i) == '.') {
        break
     }    
  }
  return z;	       
}	  
	  
function parteInteira(valor) {
//NETSCAPE: YES
    if (valor.length <= 3)
        return (valor == '' ? '0' : valor);
    else {
		vezes = valor.length % 3;
        retorno = (vezes == 0 ? '' : (valor.substring(0,vezes)));
        for (i=0 ; i < Math.floor(valor.length/3) ; i++) {
            if ( (vezes ==0) && (i ==0) )
                retorno += valor.substring(vezes + 3 * i,vezes + 3 * i + 3);
            else
                retorno += '.' + valor.substring(vezes + 3 * i,vezes + 3 * i + 3);
        }
		retorno = retorno.replace(/-\./,"-");
        return (retorno);
    }
}
function parteFracao(resto) {
//NETSCAPE: YES
    resto = Math.round( ( (resto) - Math.floor(resto) ) *100);
	return (resto < 10 ? ',0' + resto : ',' + resto); 
}

function retornaFormatoMonetarioInteiro(valor) {
//NETSCAPE: YES
    if((valor-0) != 0) { 
		return parteInteira(Math.floor(valor-0) + ''); 
	}
	else return '';
}


function toFloat( strValor ) {
//NETSCAPE: YES

// Descrição: Garante retorno numérico para entradas de strings
// toFloat('-12,345') -> -12.345
// toFloat('') -> 0
// toFloat('12.3') -> 12.3
// toFloat('-12.3') -> -12.3
// toFloat() -> 0
// toFloat('12,3') -> 12.3
// toFloat('-12,3') -> -12.3
// toFloat('abc') -> 0
	if ( (strValor == null) || (strValor.length == 0) ) {
		return 0;
	}
	if (!isNaN(strValor)) {
		return parseFloat(strValor);
	}
	retorno = limpaParaMascara(strValor,'valores');
    procurado = /,/;
    retorno = retorno.replace(procurado, ".");
	if ( (retorno == "") || (isNaN(retorno)) ) {
		return 0;
	}
	return parseFloat(retorno);
}

/*****************************************
********** 	VALIDAÇÃO DE CPF	**********
*****************************************/

function validaCpf(objEmFoco){
	if(VALIDA_VALORES_ONBLUR){
		//NETSCAPE: YES
		formatCpf(objEmFoco);
		if(objEmFoco.value == ""){
			return true;
		}
		if (!isCPF(objEmFoco.value) || objEmFoco.value == '00000000000000') {
			if(IsIE()){
				objEmFoco.select();
			}else{
				objEmFoco.value="";
				objEmFoco.focus();
			}
			alert("Cpf inválido!");//mensagem definida no arquivo source.jsp
			return;
		}
	}
}

function isCPF( cpf){
//NETSCAPE: YES
	var result = "";
	var OK = false;
	var temp = limpaParaMascara(cpf,'numeros');

	if (temp.length>10)	{
		var work=temp.substring(0,(temp.length)-2)
		var resto = getVerificationDigit(work);
		OK = (resto==parseInt(temp.charAt((temp.length)-2)));
		if (OK)	{
			work=work+resto;
			resto= getVerificationDigit(work);
			OK = (resto==parseInt(temp.charAt((temp.length)-1)));
		}
	}
	return (OK)
}


function getVerificationDigit(S){
//NETSCAPE: YES
	// Retorna o digito verificador (entrar com S "limpo")
	var invertido = invertStr(limpaParaMascara(S,'numeros'));
	var soma = 0;
   for (var i=0; i<invertido.length; i++){
        soma=soma+(i+2)*parseInt(invertido.charAt(i))
   }
   soma*=10;
   return ((soma % 11) % 10)
}


/**********************************************
************* VALIDAÇÃO DE CNPJ	***************
**********************************************/

function validaCnpj(obj){
	if(VALIDA_VALORES_ONBLUR){
		//NETSCAPE: YES
		formatCnpj(obj);
		if(obj.value == ""){
			return true;
		}
		if (!validaCGC(obj.value)) {
			alert("CNPJ Invalido!");
			if(IsIE()){
				obj.select();
			}else{
				obj.value="";
				obj.focus();
			}
			return false;
		}
		return true;
	}
}

function validaCGC(field) {
//NETSCAPE: YES
// Descrição: Função de validação de CGC.
// Data: 04/01/2001
   field = limpaParaMascara(field,'numeros');    
   if ( (field == "") || (field == " ") || (field == '00000000000000')) return false;
   if (field.length != 14) {
        return false;
    }
	first_digit  = field.charAt(12);
	second_digit = field.charAt(13);
	field = field.substring(0,12);
	first_verified  = calcMod11(field,5,2);  // Através do modulo 11 descobre qual é o primeiro digito do final
	second_verified = calcMod11(field + first_verified,6,2);  // Através do modulo 11 descobre qual é o segundo digito do final
    /*
        Se os dois digitos gerados pelo modulo11 forem iguais aos dois últimos
        digitos digitados pelo usuário, validação de CGC OK.
    */	
	if( (first_verified == first_digit) && (second_verified==second_digit) ) { return true; } 
	else {
        return false;
	}
}


function calcMod11(field,start, finish) {
//NETSCAPE: YES
// Descrição : Cálculo do Módulo 11. Requerida pela validação de CGC.
// Data: 04/01/2001
	t_i      = 0;
	t_sum    = 0;
	t_aux    = 0;
	t_digito = 0;
	t_peso   = 0;
	t_tam    = 0;
	t_char   = 'z';
	t_peso = start;
	t_tam = field.length >= 13 ? t_tam = 13 : t_tam = 12;
	for(t_i=0 ; t_i< t_tam ; t_i++) {
		t_char = field.charAt(t_i);
		t_sum = t_sum + ( (parseInt(t_char)) * t_peso);
		t_peso = t_peso > finish ? --t_peso : (start + (9 - start));
	}
	t_aux = t_sum % 11;
	t_aux = 11 - t_aux;
	t_digito = (t_aux >= 10 ? 0 : t_aux);
	return t_digito;
}


/*******************************
***** VALIDAÇÃO DE CEP	********
*******************************/
function validaCep(obj){
	if(VALIDA_VALORES_ONBLUR){
		formatCep(obj);
		var retorno = "";
		if(obj.value == ""){
			return;
		}
	
		retorno = limpaParaMascara(obj.value,'numeros');
		if(retorno.length == 8){
			if (retorno.length >= 2) { retorno = retorno.substr(0,2)+"."+retorno.substr(2); }
			if (retorno.length >= 6) { retorno = retorno.substr(0,6)+"-"+retorno.substr(6); }
			retorno = retorno.substr(0,10);
			obj.value = retorno;
		}else{
			if(IsIE()){
				alert("CEP Inválido !");
				obj.select();
			}else{
				alert("CEP Inválido !");
				obj.value="";
				obj.focus();
			}
		}
	}
}


/**********************************
***  VALIDAÇÃO DE COMPETÊNCIA   ***
**********************************/
function validaCompetencia(obj){
	formatCompetencia(obj);
	if (obj.value.length > 0){
		if (obj.value.length < 7 && obj.value.length > 4) {
			var texto = obj.value;
			if (texto.substring(3) > 29){
				obj.value = obj.value.substring(0,3) + "19" +obj.value.substring(3);
			} else {
				obj.value = obj.value.substring(0,3) + "20" +obj.value.substring(3);
			}
		}
		var stringData = limpaParaMascara(obj.value,'numeros');
		if (!(parseInt(stringData.substring(0,2),10)>0 && parseInt(stringData.substring(0,2),10)<13)){
			alert("Competência Inválida !"); //mensagem definida no arquivo source.jsp
			if(IsIE()){
				obj.select();
			}else{
				obj.value="";
				obj.focus();
			}
		} else {
			if (!(parseInt(stringData.substring(2),10)>1899 && parseInt(stringData.substring(2),10)<2101)){
				alert("Competência Inválida !"); //mensagem definida no arquivo source.jsp
				if(IsIE()){
					obj.select();
				}else{
					obj.value="";
					obj.focus();
				}
			}
		}
	}
}


/*******************************
***** VALIDAÇÃO DE HORA	********
*******************************/
function validaHora(obj){
	if(VALIDA_VALORES_ONBLUR){
		formatHora(obj);
		var retorno = "";
		if(obj.value == ""){
			return;
		}
		retorno = limpaParaMascara(obj.value,'numeros');
		if(retorno.length==4){
			var hora 	=  parseFloat(retorno.substring(0,2));
			var minuto 	=  parseFloat(retorno.substring(2,4));
			if(hora >23){
				alert("Hora inválida !");
				bOkDataHora = false;
				if(IsIE()){
					obj.select();
				}else{
					obj.value="";
					obj.focus();
				}
	
				return;
			}
			if(minuto>59){
				alert("Hora inválida !");
				bOkDataHora = false;
				if(IsIE()){
					obj.select();
				}else{
					obj.value="";
					obj.focus();
				}
	
				return;
			}
		}else{
			alert("Hora Inválida !");
			bOkDataHora = false;
			if(IsIE()){
				obj.select();
			}else{
				obj.value="";
				obj.focus();
			}
		}
	}
}


/*******************************
***** VALIDAÇÃO DE DATAHORA	********
*******************************/
function validaDateHora(obj,padrao){
	if(VALIDA_VALORES_ONBLUR){
	    //obj chega no formato mm/dd/yyyy - hh:mm
		
	    var datahora = "", data = "", hora = "";
		if(obj.value == ""){
			return;
		}	
		//verifica data
	    hora = obj.value.substring(10, obj.value.lenght);
		var aux = obj.value.substring(0,10);
		obj.value = aux.substring(0,10);
		validaDate(obj,padrao);
		datahora = obj.value+hora;
	
		//verifica hora
		data = datahora.substring(0,13);
		hora = datahora.substring(13, datahora.lenght);
		obj.value = hora;
		validaHora(obj);
		hora = obj.value;
		obj.value = data + hora;
		
		if(!bOkDataHora){
			bOkDataHora = true;
			if(IsIE()){
				obj.select();
			}else{
				obj.value="";
				obj.focus();
			}
		
			// obj.select();	
		}
	}
}


/*****************************************
**	FUNCAO QUE FAZ O "SALTO" DO CAMPO	**
*****************************************/

function saltaCampo( el,tamanho,event){
//NETSCAPE: APARTIR DO 5.0
	if((IsNetscape() && GetVersion()>=5) || IsIE()){
		var tecla;
		if(IsIE()){
			tecla = event.keyCode;
		}else{
			tecla = event.which;
		}
		if ( el.value.length >= tamanho && tecla >= 48 )	
			AutoSkip(el.name);
	}
}


function AutoSkip( NomeCampo ){	
//NETSCAPE: YES
	for(i=0; i < document.forms[0].elements.length; i++){
		if ( NomeCampo == document.forms[0].elements[i].name ) 
		break;
	}
	if( ( typeof document.forms[0].elements[i+1]) == "undefined"){
		document.forms[0].elements[i].blur();
		return;
	}
	
	while ( document.forms[0].elements[i+1].type == "hidden" ||document.forms[0].elements[i+1].disabled == true ||document.forms[0].elements[i+1].style.display == "none"){
		i = i +1;
		if ( i == document.forms[0].elements.length - 1)
		i = 0;
	}
	document.forms[0].elements[i+1].focus();
	return;
}


function invertStr(str){
//NETSCAPE: YES
	// Inverte o string S
	var temp="";
	for (var i=0; i<str.length; i++){
		temp=str.charAt(i)+temp
	}
	return temp;
}


function isHora(campo,event) {
	var tecla;
	var caracter;
	if(IsIE()){
		tecla = event.keyCode;
	}else{
		tecla = event.which;
	}
	caracter = (String.fromCharCode(tecla));
	
	if (((tecla < 48) || (tecla > 57)) && (tecla != 0)){
		event.returnValue = false;
		if(!IsIE()){
			caracter = (String.fromCharCode(tecla));
			campo = limpaParaMascara(campo,'numeros');
		}	
	}
} 


function validaNumeros(num){
	num.value = limpaParaMascara(num.value,'numeros');
	if(!validaNumerico(num.value)) {
		return num.value.substring(0,num.value.length-1); 
	}	
	return
}


///////////////////////////////////////////////////////////////////////////////////////////////
//Método: formataBank( obj, casasDecimais )
//Funcionalidade: Formata campos de valor e peso
//Descrição: Recebe um conjunto de valores tipo 1234567 e retorna 
//           outro tipo 1.234,567
//Nota : É usado em conjunto com a funçao reformataValor
//////////////////////////////////////////////////////////////////////////////////////////////

function criaObjeto(valor){
criaObjeto.value = valor;
}


function formataBank(num, qtdCasasDecimais){
	num.value = num.value / 1;
    validaNumeros(num);
	var valor ,decimal, i ,cont;
	var chars = ".,"
	var aux = "";
	var	inteiro="";
	var milharSeparator="";

	if (decimalSeparator == '.') {
	    milharSeparator = ",";
	} else {
        milharSeparator = ".";		
	}	
	
	if(num.value.length >= (qtdCasasDecimais+1)){ 
		if(num.value.length == (qtdCasasDecimais+1)){ 
			valor = num.value.substring(0,1)+decimalSeparator+num.value.substring(1,qtdCasasDecimais+1); 
			num.value = valor;		
		}else{
		    valor = "";
		    decimal = num.value.substring(num.value.length-(qtdCasasDecimais), num.value.length+1);// pega os últimos dígitos
			for(i = 0; i<num.value.length-(qtdCasasDecimais);i++){//  varre até as casas antes do fim
				if(chars.indexOf(num.value.charAt(i)) == -1){//pega somente valores numericos
					inteiro += num.value.charAt(i);
				}						
			}
			if((inteiro.length%3 == 1) && (inteiro.length > 1)){//verifica se terá o caracter ","
				inteiro = reformataValor(inteiro);
			}else if(inteiro.length > 4){ 
				inteiro = reformataValor(inteiro);
			}
			valor = inteiro;
			if(valor.indexOf(milharSeparator) == 0){
				inteiro = "";
				for(i = 1; i<valor.length;i++)
					inteiro += valor.charAt(i);
			}
			num.value = inteiro+decimalSeparator+decimal;
		}
	}
} 

///////////////////////////////////////////////////////////////////////////////////////////////
//Método: formataNumber( obj, casasDecimais, maxIntegerLength )
//Funcionalidade: Formata campos de valor e peso
//Descrição: Recebe um conjunto de valores tipo 1234567 e retorna outro tipo 1.234,567
//           Não deixa o usuário exceder o valor maximo definido pelo maxIntegerlength e qtdCasasDecimais
//Nota : É usado em conjunto com as funções reformataValor, insereDecimais, verificaSeNaoExcedeu
//////////////////////////////////////////////////////////////////////////////////////////////
decimalSeparator = '.'
function formataNumber(num, maxIntegerLength, qtdCasasDecimais){
	var valor ,decimal, i ,cont;
	var chars = ".,"
	var aux = "";
	var	inteiro="";
	var milharSeparator="";
	var valorAnterior;

    // Verifica se foi digitado o separador decimal (para nao exclui-lo)
    if (num.value.indexOf(decimalSeparator) != -1){// se o decimal ja foi digitado
		// executa a rotina para inserir os decimais
		insereDecimais(num, qtdCasasDecimais);
		return;
    }

    // Verifica se foi digitado o separador decimal (para nao exclui-lo)
    if (num.value.substring(num.value.length-1, num.value.length) != decimalSeparator){
    	validaNumeros(num);
    } else {
        return;
    }
	
	if (decimalSeparator == '.') {
	    milharSeparator = "";
	} else {
        milharSeparator = "";
	}
	
	inteiro = num.value;
	valorAnterior = num.value.substring(0,maxIntegerLength);
	if((inteiro.length%3 == 1) && (inteiro.length > 1)){//verifica se terá o caracter ","
		inteiro = reformataValor(inteiro);
		valorAnterior = reformataValor(num.value.substring(0,maxIntegerLength));
	}else if(inteiro.length > 4){
		inteiro = reformataValor(inteiro);
		valorAnterior = reformataValor(num.value.substring(0,maxIntegerLength));
	}
	valor = inteiro;

	if (verificaSeNaoExcedeu(valor, maxIntegerLength) == true){
		// verifica se o primeiro caracter do valor nao é o milharSeparator
		if (valorAnterior.substring(0,1) == milharSeparator){
		    num.value = valorAnterior.substring(1,valorAnterior.length);		
		}else{
		    num.value = valorAnterior;		
		}	
		return;
	}
	
	if(valor.indexOf(milharSeparator) == 0){
		inteiro = "";
		for(i = 1; i<valor.length;i++)
			inteiro += valor.charAt(i);
	}
	num.value = inteiro;
}

///////////////////////////////////////////////////////////////////////////////////////////////
//Método: insereDecimais(obj, qtdCasasDecimais)
//Funcionalidade: Insere valores decimais em um numero inteiro.
//Nota : É usado em conjunto com a funçao formataNumber
//////////////////////////////////////////////////////////////////////////////////////////////
function insereDecimais(num, qtdCasasDecimais){
	var valor;
	var posicaoSeparadorDecimal=0;
	var valoresDecimais;

	valor = num.value;
	// acha o separador decimal ...
	posicaoSeparadorDecimal = valor.indexOf(decimalSeparator);
	valoresDecimais = valor.substring(posicaoSeparadorDecimal+1, valor.length);
    // retira todos os caracteres que não forem 0123456789
	valoresDecimais = limpaParaMascara(valoresDecimais, 'numeros');
	if (valoresDecimais.length > qtdCasasDecimais) {
	    // valor decimal excedeu o limite
		valoresDecimais = valoresDecimais.substring(0,qtdCasasDecimais);
	}
	num.value = valor.substring(0,posicaoSeparadorDecimal+1)+valoresDecimais;
}

///////////////////////////////////////////////////////////////////////////////////////////////
//Método: verificaSeNaoExcedeu( obj, casasDecimais, maxLength )
//Funcionalidade: Verifica se o valor passado como parametro não excedeu o 
//                limite especificado. 
//Nota : É usado em conjunto com a funçao formataNumber
//////////////////////////////////////////////////////////////////////////////////////////////
function verificaSeNaoExcedeu(num, maxIntegerLength){
	var valor ,decimal, i ,cont, milharSeparator;	
	
	valor = num;
	cont = 0;
	if (decimalSeparator == '.') {
	    milharSeparator = "";
	} else {
        milharSeparator = "";
	}

	for(i = 1; i <= valor.length; i++) {
		if (valor.substring(i-1,i) != milharSeparator)
		    cont=cont+1; 
	}

	if (cont > maxIntegerLength) {
	    return true; // excedeu 
	} else {
	    return false; // nao excedeu 
	}   
}

///////////////////////////////////////////////////////////////////////////////////
//Método: reformataValor( obj )
//Funcionalidade: Retorna a parte inteira de valores e pesos é usada em conjunto
//                com a função formataBank
///////////////////////////////////////////////////////////////////////////////////
function reformataValor(inteiro){
   	var cont=0;
	var i =0;
	var aux="";
	var milharSeparator="";
	
	if (decimalSeparator == '.') {
	    milharSeparator = "";
	} else {
        milharSeparator = "";		
	}	

	for(i = inteiro.length-1; i>=0;i--){
		cont++;
		if(cont == 3){ 
			aux += inteiro.charAt(i)+milharSeparator;
			cont = 0;
		}else
			aux += inteiro.charAt(i);
	}
	inteiro = "";
	for(i = aux.length-1; i>=0;i--) inteiro += aux.charAt(i);
	return inteiro;
}
		
function clearFieldNum(obj) {
    if (decimalSeparator == ".") {
        while(obj.indexOf(",") > -1) {
            obj = obj.replace(",", "");
        }
    } else {
        while(obj.indexOf(".") > -1) {
            obj = obj.replace(".", "");
        }
        if (obj.indexOf(",") > -1) {
            obj = obj.replace(",", ".");
        }
    }
    return obj;
}

function isEmailValido(who) {
	var email=/^[A-Za-z0-9]+([_\.-][A-Za-z0-9]+)*@[A-Za-z0-9]+([_\.-][A-Za-z0-9]+)*\.([A-Za-z]){2,4}$/i;
	return(email.test(who));
}

//***********************************************************
// funções que valida e-mail
//***********************************************************
function validaEmail(objMail){
	if(VALIDA_VALORES_ONBLUR){
		if(objMail.value!=""){
			if(!isEmailValido(objMail.value)){
				alert('O e-mail informado é inválido!');
				objMail.focus();
				objMail.select();
			}
		}
	}
}

function maskTelefone(obj, evento){
	var tecla;
	var ret = true;
	
	if(!evento) {
		evento = window.event;
	}
	
	if(IsIE()){
		tecla = evento.keyCode;
	}else{
		tecla = evento.which;
	}
	
	if(tecla == 0) {
		tecla = evento.charCode;
	}
	
	ret = isNumberDate(obj, evento);
	
	if(tecla != 8){
		ret = isNumber(obj,evento);	

		
		var sLimpo;
		var iTam;
		var iMeio;
		var sDir;
		var sEsq;
		
	
		sLimpo	= limpaParaMascara(obj.value, 'numeros');
    	iTam	= sLimpo.length;
		
		
		
		if (iTam < 4){
			obj.value = sLimpo
		}else if(iTam < 9){
			iMeio = Math.round(iTam / 2);
			sEsq = sLimpo.substring(0, iMeio);
			sDir = sLimpo.substring(iMeio, iTam);
			obj.value = sEsq+'-'+sDir;
		}else{
			obj.value = sLimpo
		}
	}

	return ret;
}

//******************************************************//
// Function: checa_nomesala                             //
// Descrip : valida se o nome da sala de chat esta ok   //
// Return  : se OK retorna true                         //
//******************************************************//
function checa_nomesala (nomesala) {
	if(VALIDA_VALORES_ONBLUR){
		var achou_erro=false;
	
	 	if (nomesala.value == '') {
			return true;
		}
		 
		re = /^[a-zA-Z0-9\-\_]{1,30}$/;
		if (re.test(nomesala.value)) { return true; }
		
		alert("O campo Nome da Sala está preenchido incorretamente. Usar até 30 caracteres, dentre os seguintes: 0-9, a-z, A-Z, (-) e (_). ");
		nomesala.focus();
		nomesala.select();
		return false;
	}
}
 
 
//******************************************************//
// Function: checa_nome_BD                              //
// Descrip : valida se o nome do banco de dados esta ok //
// Return  : se OK retorna true                         //
//******************************************************//
function checa_nome_BD (url) {
 	if(VALIDA_VALORES_ONBLUR){
	 	if (url.value == '') {
			return true;
		}
		
		if (url.value.length > 12) {
			url.focus();
			alert("O campo Nome do Banco de Dados deve ter no máximo 12 caracteres.");
			return false;
		}
		
		if (url.value.length < 3) {
			url.focus();
			alert("O campo Nome do Banco de Dados deve ter no mínimo 3 caracteres.");
			return false;
		}
		
		re = /^[0-9].*$/;                                                                                                
		if (re.test(url.value)) {                                                                                     
			url.focus();
			alert("Não pode existir números no começo do nome do Banco de Dados.");
			return false;                                                                                             
		}
		
		re = /^[a-z0-9]+$/;
		if(re.test(url.value) ) {
			return true;
		}
		
		url.focus();
		alert("O Nome do Banco de Dados está preenchido incorretamente.");
		
		return false;
	}
}
 
 
//******************************************************//                                                        
// Function: checa_dominio                              //                                                        
// Descrip : valida se dominio esta correto             //                                                        
// Return  : se OK retorna true                         //                                                        
//******************************************************//                                                        
function checa_dominio (dominio) {
	if(VALIDA_VALORES_ONBLUR){
		var achou_erro=false;
		
		if (dominio.value == '') {
			return true;
		}
		
		if (dominio.value.length < 2) {
			dominio.focus();
			alert("O campo Dominio dever ter no mínimo 2 caracteres.");
			return false;
		}
		
		re = /http:\/\//;                                                                                               
		if (re.test(dominio.value)) {
			dominio.focus();
			alert("Nao pode existir http:// no Dominio.");
			return false;
		}
		
		re = /http:/;
			if (re.test(dominio.value)) {
			dominio.focus();
			alert("Nao pode existir http: no Dominio.");
			return false;
		}
		
		re = /^\..*$/;
			if (re.test(dominio.value)) {
			dominio.focus();
			alert("Nao pode existir . (ponto) no comeco do Dominio.");
			return false;
		}
		
		re = /^.*\.$/;
			if (re.test(dominio.value)) {
			dominio.focus();
			alert("Nao pode existir . (ponto) no final do Dominio.");
			return false;
		}
		
		re = /\s/;
			if (re.test(dominio.value)) {
			dominio.focus();
			alert("Nao pode existir espacos no Dominio.");
			return false;
		}
		
		re = /^www[0-9]*\..*$/;
			if (re.test(dominio.value)) {
			dominio.focus();
			alert("O Dominio nao pode comecar com www.");
			return false;
		}
		
		re = /^[a-zA-Z0-9\-]+\.[a-zA-Z0-9\-\.]+$/;
			if (re.test(dominio.value)) {
			return true;
		}
		
		dominio.focus();
		alert("O Dominio está preenchido incorretamente.");
		
		return false;
	}
}


//******************************************************//
// Function: nnTestaUser                        //
// Descrip : valida username                    //
// Return  : se OK retorna 0                    //
//******************************************************//
function nnTestaUser(user){
	if(VALIDA_VALORES_ONBLUR){
		user.value = user.value.toLowerCase();
		
		if (user.value == '') {
			return true;
		}
		
		var c;
		if(user.value.length < 3) {
			user.focus();
			alert("Username inválido (muito curto).  Mínimo 3 caracteres.");
			user.select();
			return 1;
		}
		if(user.value.length > 20) {
			user.focus();
			alert("Username inválido (muito longo).  Máximo 20 caracteres.");
			user.select();
			return 1;
		}
	 
		// Se nao comecar por numero ou a-z eh invalido...
		var valor = /[a-z0-9]/;
		valor = valor.exec(user.value.substring(0,1));
		if(valor ==null){
			c = user.value.substring(0, 1 );
			user.focus();
			alert("Username inválido.  Não pode iniciar por " + c + ".");
			user.select();
			return 1;
		}
		var usval = /[^a-z0-9_.]/.exec(user.value);     
		if(usval != null) {
			user.focus();
			alert("Username inválido. Possui caracteres inválidos.");
			user.select;
			return 1;
		}
		
		return 0;
	}
}
 
 
//******************************************************//
// Function: checa_url                                  //
// Descrip : valida se URL esta correta                 //
// Return  : se OK retorna true                         //
//******************************************************//
function checa_url (url) {
	if(VALIDA_VALORES_ONBLUR){
		var achou_erro=false;
	 
		if (url.value == '') {
			return true;
		}
	 
		re = /http:\/\//;
		if (re.test(url.value)) {
			url.focus();
			alert("Nao pode existir http:// na URL.");
			return false;
		}
		
		re = /http:/;
		if (re.test(url.value)) {
			url.focus();
			alert("Nao pode existir http: na URL.");
			return false;
		}
		
		re = /^\..*$/;
		if (re.test(url.value)) {
			url.focus();
			alert("Nao pode existir .(ponto) no comeco da URL.");
			return false;
		}
		
		re = /^.*\.$/;
		if (re.test(url.value)) {
			url.focus();
			alert("Nao pode existir .(ponto) no final da URL.");
			return false;
		}
		
		re = /^.*\.{2,}.*$/;
		if (re.test(url.value)) {
			url.focus();
			alert("Nao pode existir mais de um .(ponto) na URL.");
			return false;
		}
		
		re = /\s/;
		if (re.test(url.value)) {
			url.focus();
			alert("Nao pode existir espacos na URL.");
			return false;
		}
		
		re = /^www[0-9]*\..*$/;
		if (!re.test(url.value)) {
			url.focus();
			alert("A URL deve comecar com www.");
			return false;
		}
		
		re = /^[a-zA-Z0-9\-]+\.[a-zA-Z0-9\-\.]+$/;
		if (re.test(url.value)) {
			return true;
		}
		
		url.focus();
		alert("A URL está preenchida incorretamente.");
		
		return false;
	}
}
