function IdentBrowser() {
	// Pega a versao do browser
	this.version = new String(navigator.appVersion);
	// Se browser tiver metodo getElementById
	this.hasGetElement    = document.getElementById ? 1 : 0;
	// Se o browser é o IE 6
	this.ie6    = (this.version.indexOf("MSIE 6")>-1 && this.hasGetElement) ? 1 : 0;
	// Se o browser é o IE 5
	this.ie5    = (this.version.indexOf("MSIE 5")>-1 && this.hasGetElement) ? 1 : 0;
	// Se o browser é o IE 4
	this.ie4    = (document.all && !this.hasGetElement) ? 1 : 0;
	// Se o browser é o Nav 5
	this.ns5    = (this.hasGetElement && parseInt(this.ver) >= 5) ? 1 : 0;
	// Se o browser é o Nav 4
	this.ns4    = (document.layers && !this.hasGetElement) ? 1 : 0;
	// Se o browser é o Nav 6
	this.ns6    = navigator.vendor && navigator.vendor == "Netscape6" ? 1 : 0;
	// Se o browser e o Konqueror
	this.kqr    = this.version && this.version.indexOf("Konqueror") > -1
    // Se o browser e o Mozilla
    this.mzl    = "Mozilla" == navigator.appCodeName;
	// É um browser valido
	this.isValid = this.ie6 || this.ie5 || this.ie4 || this.ns4 || this.ns5 || this.ns6 || this.kqr;

	if (this.ie4)
		this.tipo = 'ie4';
	else if (this.ie5)
		this.tipo = 'ie5';
	else if (this.ie6)
		this.tipo = 'ie6';
	else if (this.ns4)
		this.tipo = 'ns4';
	else if (this.ns5)
		this.tipo = 'ns5';
	else if (this.ns6)
		this.tipo = 'ns6';
	else if (this.kqr)
		this.tipo = "kqr";
    else if (this.mzl)
        this.tipo = "mzl";
	else {
		alert("Este navegador nao é valido para execucao desta rotina : \nNavegador = " + this.version);
		this.tipo = "???";
	}
	
	// Identifica qual o navegador
	this.ns = this.tipo.substring(0,2) == "ns";
	this.ie = this.tipo.substring(0,2) == "ie";
	
	// Só para compatibilidade é retornado, versoes mais recentes nao sao necessarias
	return this;
}

/*******************************************************
 * Variaveis
 */
 
/*
 * Informaçoes do browser
 */
var brw = new IdentBrowser();

/*
 * Identifica unidade de scroll vertical
 */
var vsc = 66;

/*
 * Ultimo folder
 */
var oldFolder;

/*
 * Dias dos meses
 */
var dias = [31,28,31,30,31,30,31,31,30,31,30,31];

/*
 * Variavel para controle de check
 */
var check = true;

/**
 * Parametros passados para o popup
 */
var popupParameters = "scrollbars=no, width=700, height=450, resizable=yes";


/*
 * Retorna um objeto do navegador pelo seu nome
 */
function getObjectByName(name) {
	var obj = null;
	if (! brw)
		brw = new IdentBrowser();
	if (brw.hasGetElement) {
		obj = document.getElementById(name);
		if (! obj && document.getElementByName)
			obj = document.getElementByName(name);
	} else {
		obj = document.all[name];
	}
	return obj;
}

/*
 * Verifica se o objeto é visivel
 */
function isVisible(obj) {
	if (!obj)
		return false;
	if (! obj.style)
		return false;
	if (obj.style.display) {
		if (obj.style.display == "none")
		  return false;
	}
	return true;
}

/*
 * Troca imagem
 */
function changeImage(img, name) {
	var itemObj = getObjectByName(img);
	if (itemObj) {
		itemObj.src = name;
	}
}

/*
 * Verifica se parametro e um input ou string numero
 */
function isInt(inp) {
	if (! inp)
		return false;
	var obj = inp.value;
	if (! obj && obj != "")
		obj = inp;
	return /^[+-]?\d+$/.test(obj);
}

/*
 * Verifica se parametro e um input ou string numero
 */
function isNumber(inp) {
	if (! inp)
		return false;
	var obj = inp.value;
	if (! obj && obj != "")
		obj = inp;
	if (/,/.test(obj)) {
		obj = obj.replace(/\./g,"");
	}
	return /^[+-]?\d+([,.]\d+)?$/.test(obj);
}

/*
 * Verifica se parametro e uma data
 */
function isDate(inp) {
	if (! inp)
		return false;
	var obj = inp.value;
	if (! obj && obj != "")
		obj = inp;
	if (! /^\d{1,2}\/\d{1,2}\/\d{2}(\d{2})?$/.test(obj))
		return false;
	var mt=obj.split("/");
	mt[0] = parseInt(mt[0]);
	mt[1] = parseInt(mt[1]);
	mt[2] = parseInt(mt[2]);
	if (mt[1] < 1 || mt[1] > 12)
		return false;
	return mt[0] >= 1 && mt[0] <= daysOfMonth(mt[2],mt[1]);
}

function ajustUrlKey(url, param) {
	var hasArgs = new String(url).indexOf("?") > 0

	if (typeof(param) == "object") {
		var n = param.length;
		if (n && n > 0) {
			for(var i=0; i < n; i++) {
				if (hasArgs) {
					url = url + "&";
				} else {
					url = url + "?";
					hasArgs = true;
				}
				url = url + "key=" + escape(param[i]);
			}
		} else {
			url = url + (hasArgs ? "&" : "?") + "key=" + escape(param);
		}
	} else {
		url = url + (hasArgs ? "&" : "?") + "key=" + escape(param);
	}

	return url;
}


/*
 * Abre um popup
 */
function openPopup(name, params) {
	// Identifica nome da janela
	var wnd = top;
	if (wnd) {
		if (wnd.opener) {
			wnd = wnd.opener;
			if (wnd.top != wnd)
				wnd = wnd.top;
		}
		if (wnd.popupNumber) {
			top.popupNumber = wnd.popupNumber + 1;
		} else {
			top.popupNumber = 1;
		}
	}
	var popupName = "Popup"+top.popupNumber;

	// Ajuda
	var hasArgs = new String(name).indexOf("?") > 0;
	var url = hasArgs ? name : normalizeList(name);
	url = url + (hasArgs ? "&" : "?") + "action=detail";
	for(var i=1; i < openPopup.arguments.length; i++) {
		url = ajustUrlKey(url, openPopup.arguments[i]);
	}
	window.open(url, popupName, popupParameters);
}

/*
 * Envia formulario com dados dinamicos pelo metodo get
 */
function doSend(win, url, params) {
	var form = win.document.forms["formSend"];
	if (! form) {
		form = win.document.createElement("FORM");
		form.setAttribute("name", "formSend");
		win.document.body.appendChild(form);
	}
	form.setAttribute("action", url);
	form.setAttribute("method", "get");
	if (params) {
		for(var i in params) {
			var element = form.elements[i];
			if (! element) {
				element = win.document.createElement("INPUT");
				element.setAttribute("name", i);
				element.setAttribute("type", "hidden");
				form.appendChild(element);
			}
			element.value = params[i];
		}
	}
	form.submit();
}

/*
 * Envia dados de formulario dinamico pelo metodo post
 */
function doSendPost(win, url, params) {
	var form = win.document.forms["formSend"];
	if (! form) {
		form = win.document.createElement("FORM");
		form.setAttribute("name", "formSend");
		win.document.body.appendChild(form);
	}
	form.setAttribute("action", url);
	form.setAttribute("method", "post");
	if (params) {
		for(var i in params) {
			var element = form.elements[i];
			if (! element) {
				element = win.document.createElement("INPUT");
				element.setAttribute("name", i);
				element.setAttribute("type", "hidden");
				form.appendChild(element);
			}
			element.value = params[i];
		}
	}
	form.submit();
}

/*
 * Executa comando em especifica janela
 */
function doAction(win, action, param) {
	var form = win.document.forms["formAction"];
	if (! form) {
		form = win.document.createElement("FORM");
		form.setAttribute("name", "formAction");
		form.setAttribute("method", "GET");
		
		form.setAttribute("action", "teste2.html");
		
		win.document.body.appendChild(form);
	}
	if (! form.actionCommand) {
		var child = win.document.createElement("INPUT");
		child.setAttribute("name", "actionCommand");
		child.setAttribute("type", "hidden");
		form.appendChild(child);
	}
	if (! form.actionParams) {
		var child = win.document.createElement("INPUT");
		child.setAttribute("name", "actionParams");
		child.setAttribute("type", "hidden");
		form.appendChild(child);
	}
	form.actionCommand.value = action;
	form.actionParams.value = param;
	form.submit();
}

/*
 * Executa comando
 */
function doCommand(action, param) {
    doAction(top, action, param);
}

/*
 * Efetua logout
 */
function doLogout() {
	doCommand("logout","");
}

/*
 * Mostra formulário
 */
function doShow(name) {
	doCommand("show",name);
}

/*
 * Abre dialogo
 */
function openDlg(name) {
	window.open(name,"_new","scrollbars=no,width=300,height=200");	
}

/*
 * Funcao nula
 */
function none() {
}

/*
 * Retira espacos em branco
 */
function trim(inp) {
	if (! inp)
		return "";
	var obj = inp.value;
	if (! obj && obj != "")
		obj = inp;

	return obj.replace(/^\s*/,"").replace(/\s*$/,"");
}

/*
 * Converte para string com tamanho determinado
 */
function toStr(valor, tamanho) {
  valor = "" + valor;
  while (valor.length < tamanho) {
    valor = "0" + valor;
  }
  return valor;
}
	
/*
 * Invalida objeto, reposicionando o foco
 */
function invalide(msg, obj) {
	check=false;
	window.focusObject = obj;
	setTimeout("window.focusObject.focus(); window.focusObject.select();",200);
	if (obj && obj.style)
		obj.style.background = "red";
	window.status = msg;
	check=true;
	return false;
}

/*
 * Valida campo
 */
function valide(obj) {
	if (obj && obj.style)
		obj.style.background = "white";
	return true;
}

/*
 * Mostra versao do script
 */
function checkScript() {
  window.alert("Script versão 3.1");
}

/*
 * Mostra informações do navegador
 */
function showNavigatorInfo() {
  alert(
  	"appCodeName : " + navigator.appCodeName + "\r\n" +
  	"appName : " + navigator.appName + "\r\n" +
  	"appVersion : " + navigator.appVersion + "\r\n" +
  	"language : " + navigator.language + "\r\n" +
  	"platform : " + navigator.platform + "\r\n" +
  	"userAgent : " + navigator.userAgent
  	);
}

/*
 * Mostra informações da tela
 */
function showScreenInfo() {
  alert(
  	"availHeight : " + screen.availHeight + "\r\n" +
  	"availWidth : " + screen.availWidth + "\r\n" +
  	"colorDepth : " + screen.colorDepth + "\r\n" +
  	"height : " + screen.height + "\r\n" +
  	"width : " + screen.width + "\r\n" +
  	"pixelDepth : " + screen.pixelDepth
  	);
}

/*
 * Retorna descricao unica
 */
function getColumnSelect(desc, col) {
  if (! desc)
    return "";
  if (col == 0)
    return desc;
  var m=desc.split(" \u00ad ");
  if (! m || (col-1) >= m.length)
    return "";
  return m[col-1];
}

/*
 * Fecha opener
 */  
function doClearOpener() {
	if (window.opener && window.opener.lookupWindow) {
		window.opener.lookupWindow = null;
	}
}

/*
 * Fecha todas as janelas filhas
 */  
function closeAllChidren() {
	var jan = window;
	while (top != jan) {
		var jan_pai = jan.opener;
		jan.close();
		jan = jan_pai;
	}
}

/*
 * Efetua lookup de um campo
 */
function doLookup(entityName, inputName, columnNumber, inputTarget) {
	doReference("lookup.jsp", entityName, inputName, columnNumber, inputTarget);
}

/**
 * Abre quadro de detalhe
 */
function doOpenWindow(tabela) {
	if (! tabela)
		return;
	if (! /\.jsp$/.test(tabela)  && ! /\.html$/.test(tabela))
		tabela = tabela + ".jsp";
	doSend(window, tabela);
}

/**
 * Abre quadro de detalhe
 */
function openDetail(tabela, chaves) {
  var w = 760;
  var h = 321;
  var x = 10;
  var y = 247;

  if (window.detail && ! window.detail.closed) {
  	window.detail.close();
  }

  window.detail = window.open(tabela.toLowerCase() + "list.jsp?action=detail&key=" + chave, "detail", "scrollbars=yes,width="+w+",height="+(h-50)+",left="+x+",top="+y+",resizable=yes,status=yes");
}

/*
 * Identifica se o element esta vazio
 */
function isEmpty(inp) {
	if (! inp)
		return true;
	var obj = inp.value;
	if (! obj && obj != "")
		obj = inp;

  return /^\s*$/.test(obj);
}

/**
 * Verifica se o ano e bissexto
 */
function isLeapYear(year) {
   return (year % 4) == 0 && ((year % 100) != 0 && (year % 400) != 0);
}

/**
 * Dias dentro do mes
 */
function daysOfMonth(year, month) {
  if (month < 1 || month > 12)
     month = 1;
  var days = dias[month-1];
  if (month == 2 && isLeapYear(year))
     return days + 1;
  return days;
}

/**
 * Verifica data
 */
function checkDate(inp) {
	var contadormascara = 0;
	var proximocampo ;
  var tamascara;
  var mostramascara = '';
  var temdia;
  var tamano;

	if (! check)
		return valide(inp);
	if (isEmpty(inp))
		return valide(inp);

	obj = inp.value

	filtro = FiltraCampoMascaras(inp)
	tam = obj.length;
	
	if (isEmpty(filtro)){
		inp.value = '';
		return valide(filtro);
	}

	if (obj.substring(obj.length - 1, obj.length) == "/"){
		obj = obj.substring(0,obj.length - 1);
	}
    var caminho = inp.name+"_"+"mascara";
      for(j = 0;j <document.forms[0].elements.length;j++){
          if (document.forms[0].elements[j].name == caminho){
                mostramascara = document.forms[0].elements[j].value;
                tamascara = mostramascara.length;	    
          }
      }
	//Nova Implementação do CheckData
	//Verifica a validação de acordo com a mascara
	if(tamascara > 1){
		var M = 0;
		var MascaraIE;
		var ArrayMascara = new Array();
		var mostramascara2;
		      while (M <= tamascara) {    
			MascaraIE = mostramascara.substring(M,M+1)
			ArrayMascara[M] = MascaraIE;
			M = M +1;
		      }
		      	mostramascara2 = ArrayMascara;

			   for(i=0; i<tamascara;i++){
				   if (mostramascara2[i] == "/" || mostramascara2[i] == "-" || mostramascara2[i] == "."){
					   contadormascara = contadormascara + 1;
					   proximocampo = mostramascara.substring(i+1,tamascara)
				   }
			   }
		   if (contadormascara > 1){
				   temdia = true;
				   tamano = proximocampo.length;
		   }else{
			   if (proximocampo.length > 2){
				   temdia = false;
				   tamano = proximocampo.length;
			   }else{
				   temdia = true;
				   tamano = 0;
			   }
		   }
	}

	if (! obj && obj != "")
		obj = inp;
	if (temdia){
		if (! /^\d{1,2}\/\d{1,2}\/\d{2}$|^\d{1,2}\/\d{1,2}\/\d{4}$|^\d{1,2}\/\d{1,2}$|^\d{1,2}$/.test(obj)) {
			return invalide("Nao e uma data valida", inp);
		}
	}
	var m = obj.split(/\//);
	var m2 = obj.split(/\//);

	if (m.length < 3) {
		var n = new Date();
 		var TamAno = n.getFullYear();
		x = new String(TamAno)
		if (tamano > 0){
			var xtam = 0;
			xtam = x.length
			var tt = xtam - tamano;
			setano = x.substring(tt,4);
		}else{
			setano = 0;
		}		
		//Seto o tamanho do ano dd/mm/yy ou dd/mm/yyyy
		n.setFullYear(setano)		

		//Verifico se a mascara possui dia
		//se possui pega o mes atual 
		//se não possui coloca um dia fixo 01.

		if (temdia){
			if (m.length == 1) {
				m.push(n.getMonth()+1);
			}
		}else{
			m[0] = 0;
			m[1] = m2[0];
		}

		if (m.length == 2) {
			if(temdia){
				m.push(n.getFullYear());
			}else if (m2[1] > 0){
				m[2] = m2[1];
			}else{
			m.push(n.getFullYear());
			}
		}
	}
	var Ano2 = new String(m[2]);

	m[0] = parseInt(m[0]);
	m[1] = parseInt(m[1]);
	m[2] = parseInt(m[2]);

	if (m[1] < 1 || m[1] > 12) {
		return invalide("Mes incorreto deve ser de 1..12", inp);
	}
     if (m[0] > 0){
	var d = daysOfMonth(m[2],m[1]);
	if (m[0] < 1 || m[0] > d) {
		return invalide("Dia incorreto deve ser de 1.."+d, inp);
	}
	if (m[0] < 10)
		m[0] = "0" + m[0];
     }
	if (m[1] < 10)
		m[1] = "0" + m[1];

	if ((Ano2.substring(0,1) == 0) || (Ano2.length == 1)){
		var novoano = new String(m[2]);
		m[2] = "0"+novoano;
	}

	if(m[0] > 0){
		if (Ano2 == 0){
			m[2] = '';
			inp.value = m.join("/").substring(0,m.join("/").length - 1);
		}else{
			inp.value = m.join("/");
		}
	}else{
		m.shift();
		if (Ano2 == 0){
			m[2] = '';
			inp.value = m.join("/").substring(0,m.join("/").length - 1);
		}else{
			inp.value = m.join("/");
		}
	}
	return valide(inp);
}

/*
 * Valida campo inteiro
 */
function checkInt(inp) {
	if (! check)
		return valide(inp);
	if (isEmpty(inp)) {
		return valide(inp);
	}
	var obj = inp.value;
	if (! obj && obj != "")
		obj = inp;

	if (/^[+-]?\d+$/.test(trim(obj)))
		return valide(inp);
	return invalide("Não é um numero inteiro válido", inp);
}

/*
 * Valida campo numerico
 */
function checkNumber(inp) {
	
	if (! check)
		return valide(inp);
	if (isEmpty(inp)) {
		return valide(inp);
	}
	var obj = inp.value;
	if (! obj && obj != "")
		obj = inp;

	if (/^[+-]?\d+([.,]?\d+)?$/.test(trim(obj)))
		return valide(inp);
	return invalide("Não é um numero válido", inp);
}

/*
 * Valida campo texto
 */
function checkUpper(inp) {
	if (! check)
		return true;
	if (isEmpty(inp))
		return valide(inp);
 	if (inp && inp.value)
		inp.value = new String(inp.value).toUpperCase();
	return valide(inp);
}

/*
 * Verifica campo obrigatório
 */
function checkNotEmpty(inp) {
	if (isEmpty(inp)) {
		return invalide("Campo obrigatório", inp);
	}

	return valide(inp);
}

/*
 * Verifica o tamanho do valor 
 */
function checkFormatNumber(inp,dec) {
	var casasdecimais = "";
	
	if (isEmpty(inp))
		return true;
	
	for(i=0;i<dec;i++){
		casasdecimais = casasdecimais + "0"
	}
	if(inp.value.length == 1){
		inp.value = inp.value + ","+ casasdecimais
	}
}
/*
 * Formata numero
 */
function formatNumber(inp, dec) {
	if (isEmpty(inp))
		return true;
	// Pega o valor do objeto
	var obj = inp.value;
	// Se for vazio
	if (! obj && obj != "")
		obj = inp;
	obj = trim(obj);
	var isSign = /^[-]/.test(obj);
		
	// Retira sinais, virgula, ponto e zeros a esquerda
	obj = obj.replace(/[+-\.,]/g,"").replace(/^0*/,"");

	// Verifica se e numero
	if (! isNumber(obj)) {
		inp.value = obj;
		return;
	}
	
	if (isSign)
		obj = "-" + obj;
		
var ps = obj.length - dec;
	if (ps > 0) {
		if (dec > 0 && ps > 0 && obj.charAt(ps-1) != '-')
			obj = obj.substring(0, ps) + "," + obj.substring(ps);
		
		// Insere pontos
		while (ps > 0) {
			ps -= 3;
			if (ps <= 0 || /[^\d]/.test(obj.charAt(ps-1)))
				break;
			obj = obj.substring(0, ps) + "." + obj.substring(ps);
		}
	}
	
	// Atribui valor a input
	inp.value = obj+"";
	return true;
}

function checkUpperNotEmpty(inp) {
	return checkUpper(inp) && checkNotEmpty(inp);
}

function checkIntNotEmpty(inp) {
	return checkInt(inp) && checkNotEmpty(inp);
}

function checkDateNotEmtpy(inp) {
	return checkDate(inp) && checkNotEmpty(inp);
}

function checkNumberNotEmpty(inp) {
	return checkNumber(inp) && checkNotEmpty(inp);
}

function checkNumberAndFormat(inp, dec) {
	return checkNumber(inp) && formatNumber(inp, dec);
}

function checkNumberKeypress(event) {
   	if (! brw) {
   		IdentBrowser();
   	}
 if(!brw.ie){	
	if (event.isChar &&
		event.charCode != 45 && event.charCode != 43 &&
		event.charCode != 0 &&
		(event.charCode < 48 || event.charCode > 57)) {
			if (brw.ie) {
				window.status = "1.IE Event = " + event.keyCode + "/" + event.charCode;
				event.returnValue = false;
			} else {
				window.status = "1.MZ Event = " + event.keyCode + "/" + event.charCode;
					event.preventDefault();
				}
				return false;
	}
 }else{
	if (!(event.keyCode >= 48 && event.keyCode <= 57) || (event.keyCode >= 96 && event.keyCode <= 105)) {
		event.returnValue = false;
	}
 }	
   	if (brw.ie) {
   		window.status = "2.IE Event = " + event.keyCode + "/" + event.charCode;
   	} else {
   		window.status = "2.MZ Event = " + event.keyCode + "/" + event.charCode;
	}
	return true;
}

/**
 * Funcao para carga de campos pelo referencetext
 *
 * Parametros :
 *   inputObject - Objeto input do campo key
 *   defaultValue - Valor default do objeto
 *   beanName - Nome do bean a ser utilizado
 *   fieldName - Nome do campo a ser utilizado como lookup
 */
function doLoader(inputObject, defaultValue, beanName, fieldName, columnNumber, inputTarget) {
	var value = inputObject.value;
	var label = inputObject.id;
	//if (value == defaultValue)
	//	return;
	if (window.lookupWindow) {
		window.lookupWindow.close();
	}
	var x = (screen.width + 100);
	var y = (screen.height + 100);
	window.lookupCode = getObjectByName(fieldName);
	window.lookupDesc = getObjectByName("lck_"+fieldName);

	// Campo para o Identificador do lookup
	window.lookupFieldName = fieldName;

	window.lookupCode = getObjectByName(fieldName);

	// Coluna que retornara o lookup
	window.lookupColumn = new Array();
	window.lookupColumn.push(columnNumber);


	// Lista de objetos para retorno
	window.lookupDesc = new Array();
	window.lookupDesc.push(getObjectByName("lck_"+fieldName));

	window.lookupMode = 0; // Lookup tipo lookup


	// Posicao do texto
	var ps = 0;

	// Objeto encontrado
	var obj;

	// Faz separacao dos campos
	while (inputTarget != "") {
		ps = inputTarget.indexOf(",");

		columnNumber++;
		if (ps < 0) {
			obj = getObjectByName(inputTarget);
			if (obj) {
				window.lookupDesc.push(obj);
				window.lookupColumn.push(columnNumber);
			}
			break;
		}
		obj = getObjectByName(inputTarget.substring(0, ps));
		if (obj) {
			window.lookupDesc.push(obj);
			window.lookupColumn.push(columnNumber);
		}
		inputTarget = inputTarget.substring(ps+1);
	}
	window.lookupWindow = window.open("loader.jsp?entityName="+beanName+"&inputName="+fieldName+"&inputValue="+value+"&inputLabel="+label,"loader","scrollbars=yes,width=0,height=0,left="+x+",top="+y);
}
function PulaCampo()
{
  if (event.keyCode == 9) return
  var objCampo = event.srcElement
  if (objCampo.value == null) return
  if (objCampo.value.length == objCampo.maxLength) {
    for(var i=0; i < objCampo.form.elements.length; i++)
      if (objCampo.name == objCampo.form.elements[i].name)
        break
    if (i != objCampo.form.elements.length)
	  objCampo.form.elements[i+1].focus()
    else
      objCampo.form.elements[0].focus()
  }
}
function FormataCep() {
  var key = event.keyCode
  if (key == 9)
    return
  var numKeys = ((key >= 48 && key <= 57) || (key >= 96 && key <= 105)) && !event.shiftKey && !event.altKey
  if (numKeys) {
    var objCep = event.srcElement
    var objRegExp = /(\.|\-)/g
    var valor = objCep.value.replace(objRegExp,"")
    var tam = valor.length
    if (tam < 8)
      tam++
    if (tam <= 3)
      objCep.value = valor
    if (tam > 3 && tam <= 6)
	  objCep.value = valor.substr(0, tam-3) + '-' + valor.substr(tam-3, tam)
    if (tam >= 7 && tam <= 8)
      objCep.value = valor.substr(0, tam-6) + '.' + valor.substr(tam-6, 3) + '-' + valor.substr(tam-3, tam)
    return
  }
  var sysKeys = (key == 8 || key == 9 || (key >= 35 && key <= 46))
  if (!sysKeys)
    event.returnValue = false
}

function FormataHora() {
  var key = event.keyCode
  if (key == 9)
    return
  var numKeys = ((key >= 48 && key <= 57) || (key >= 96 && key <= 105)) && !event.shiftKey && !event.altKey
  if (numKeys) {
    var objHora = event.srcElement
    var objRegExp = /\:/g
    var valor = objHora.value.replace(objRegExp,"")
    var tam = valor.length
    if (tam < 4)
      tam++
    if (tam <= 2)
      objHora.value = valor
	if (tam > 2 && tam <= 4)
	  objHora.value = valor.substr(0, tam-2) + ':' + valor.substr(tam-2, tam)
    return
  }
  var sysKeys = (key == 8 || key == 9 || (key >= 35 && key <= 46))
  if (!sysKeys)
    event.returnValue = false
}

function FormataNumero() {
  var key = event.keyCode
  if (key == 9)
    return
  var numKeys = ((key >= 48 && key <= 57) || (key >= 96 && key <= 105)) && !event.shiftKey && !event.altKey
  var sysKeys = (key == 8 || key == 9 || (key >= 35 && key <= 46))
  if (!numKeys && !sysKeys)
    event.returnValue = false
}

function ValidaBairro(pBairro, pObri) {
  var inObri = (pObri == null) ? false : pObri
  if ((inObri || pBairro.value.length != 0) && pBairro.value.length <= 2) {
    alert('ATENÇÃO !\n\nBairro dever conter mais de 3 caracteres.')
	pBairro.focus()
    return false
  }
  return true
}

function ValidaCargo(pCargo, pObri) {
  var inObri = (pObri == null) ? false : pObri
  if ((inObri || pCargo.value.length != 0) && pCargo.value.length <= 2) {
    alert('ATENÇÃO !\n\nCargo dever conter mais de 3 caracteres.')
	pCargo.focus()
    return false
  }
  return true
}

function ValidaCep(pCep, pObri) {
  var inObri = (pObri == null) ? false : pObri
  if (inObri || pCep.value.length != 0) {
    var objRegExp = /^\d{2}\.\d{3}\-\d{3}$/
    if (!objRegExp.test(pCep.value)) {
      alert ("ATENÇÃO !\n\nCEP deve ter 8 dígitos, no formato nn.nnn-nnn")
	  pCep.focus()
      return false
    }
  }
  return true
}

function ValidaCpfCgc(pCpf) {
var num = pCpf.value;
var num0 = "000.000.000-00";
var num1 = "111.111.111-11";
var num2 = "222.222.222-22";
var num3 = "333.333.333-33";
var num4 = "444.444.444-44";
var num5 = "555.555.555-55";
var num6 = "666.666.666-66";
var num7 = "777.777.777-77";
var num8 = "888.888.888-88";
var num9 = "999.999.999-99";

	if      (num==num1) texto = num1
	else if (num==num2) texto = num2
	else if (num==num3) texto = num3
	else if (num==num4) texto = num4
	else if (num==num5) texto = num5
	else if (num==num6) texto = num6
	else if (num==num7) texto = num7
	else if (num==num8) texto = num8
	else if (num==num9) texto = num9
	else if (num==num0) texto = num0	
	else texto = ""
    
	if (texto !="")
	{
		alert("O numero "+texto+" não é valido.");
		pCpf.focus();
		return (false);
	}


   if (pCpf.value == "")
   {
      alert("Por favor preencha o campo \CNPJ/CPF\.");
      pCpf.focus();
	   return (false);
   }
  if (pCpf.value.length != 14 & pCpf.value.length != 18)
  {
    alert("Por favor entre com 11 caracteres para \CPF\ ou 14 para \CNPJ\.");
    pCpf.focus();
    return (false);
  }
  var exp = /\.|\-|\//g
   
  	if (ChecaForm(pCpf.value.replace(exp,"")) != true)
  	{
		return(false);
	}

  return (true);
}

function DvCpf(nuCpf) {
  var tam  = nuCpf.length
  var soma = 0
  for (var i=0; i < tam; i++) {
    soma += parseInt(nuCpf.charAt(i),10) * (tam+1-i)
  }
  soma = 11 - (soma % 11)
  if (soma == 11 || soma == 10)
    soma = 0
  return String(soma)
}

function ValidaCpfSenha(pCpf, pSenha) {
  if (!ValidaCpfCgc(pCpf))
    return false
  if (!ValidaSenha(pSenha)) {
    pSenha.focus()
    return false
  }
  return true
}

function ValidaData(pData, pNome, pObri) {
  var inObri = (pObri == null) ? false  : pObri
  var txNome = (pNome == null) ? "data" : pNome
  if (inObri || pData.value.length != 0) { 
    var objRegExp = /^\d{2}\/\d{2}\/\d{4}$/
    if (!objRegExp.test(pData.value)) {
      alert ("ATENÇÃO !\n\nInforme a " + txNome + " no formato dd/mm/aaaa")
      pData.focus()
      return false
    }
    var aData = pData.value.split("/")
    // verifica faixa de datas válidas 
    var sDataInv = aData[2] + aData[1] + aData[0]
    if (sDataInv < "19960101" || sDataInv > "20201231") {
      alert ("ATENÇÃO !\n\nInforme a " + txNome + " entre 01/01/1996 e 31/12/2020")
	  pData.focus()
      return false
    }
	var iDia  = parseInt(aData[0],10)
	var iMes  = parseInt(aData[1],10)
    var iAno  = parseInt(aData[2],10)
  	if (iMes < 1 || iMes > 12) {
      alert ("ATENÇÃO !\n\nInforme a " + txNome + " no formato dd/mm/aaaa")
	  pData.focus()
	  return false
	}
    // cria tabela de dias por mes (exceto fevereiro)
    var aDiasMes = {'1':31,'3':31,'4':30,'5':31,'6':30,'7':31,'8':31,'9':30,'10':31,'11':30,'12':31}
    // verifica se dia e mes estão corretos
    if (aDiasMes[iMes] != null && iDia <= aDiasMes[iMes] && iDia != 0)
      return true		// encontrado na tabela; data ok
    // verifica mes Fevereiro
    if (iMes == 2) {
      var bAnoBissexto = (iAno % 4 == 0 && (iAno % 100 != 0 || iAno % 400 == 0))
      if (((bAnoBissexto && iDia <= 29) || (!bAnoBissexto && iDia <=28)) && iDia !=0)
        return true		// data com mes Fevereiro e dia correto
    }
    alert ("ATENÇÃO !\n\nInforme a " + txNome + " no formato dd/mm/aaaa")
	pData.focus()
    return false
  }
  return true
}

function ValidaEmail(pEmail, pObri) {
  var inObri = (pObri == null) ? false : pObri
  if (inObri || pEmail.value.length != 0) {
    var objRegExp = /^[a-z0-9]([a-z0-9_\-\.]*)@([a-z0-9_\-\.]*)(\.[a-z]{2,3}(\.[a-z]{2}){0,2})$/i
    if (!objRegExp.test(pEmail.value)) {
      alert ("ATENÇÃO !\n\nFormato de E-mail incorreto.")
	  pEmail.focus()
      return (false)
    }
  }
  return true
}

function ValidaHora(pHora, pNome, pObri) {
  var inObri = (pObri == null) ? false  : pObri
  var txNome = (pNome == null) ? "data" : pNome
  if (inObri || pHora.value.length != 0) {
    var objRegExp = /^\d{2}:\d{2}$/
    if (!objRegExp.test(pHora.value)) {
      alert ("ATENÇÃO !\n\nInforme a " + txNome + " no formato hh:mm")
      pHora.focus()
      return false
    }
    var aHora   = pHora.value.split(":")
	var iHora   = parseInt(aHora[0],10)
	var iMinuto = parseInt(aHora[1],10)
  	if (iHora < 1 || iHora > 24) {
      alert ("ATENÇÃO !\n\nInforme a " + txNome + " no formato hh:mm")
	  pHora.focus()
	  return false
	}
  	if (iMinuto > 59) {
      alert ("ATENÇÃO !\n\nInforme a " + txNome + " no formato hh:mm")
	  pHora.focus()
	  return false
	}
  	if (iHora == 24 && iMinuto !== 0) {
      alert ("ATENÇÃO !\n\nInforme a " + txNome + " no formato hh:mm")
	  pHora.focus()
	  return false
	}
  }
  return true
}

function ValidaLogradouro(pLogradouro, pObri) {
  var inObri = (pObri == null) ? false : pObri
  if ((inObri || pLogradouro.value.length != 0) && pLogradouro.value.length <= 2) {
    alert('ATENÇÃO !\n\nLogradouro dever conter mais de 3 caracteres.')
	pLogradouro.focus()
    return false
  }
  return true
}

function ValidaNome(pCampo, pNome, pObri) {
  var inObri = (pObri == null) ? false  : pObri
  var txNome = (pNome == null) ? "nome" : pNome
  if ((inObri || pCampo.value.length != 0) && pCampo.value.length <= 2) {
     alert('ATENÇÃO !\n\nO ' + txNome + ' dever conter mais de 3 caracteres.')
     pCampo.focus()
     return false}
  else{
      if(inObri && jTrim(pCampo.value) == ''){
        alert('ATENÇÃO !\n\nO ' + txNome + ' dever conter mais de 3 caracteres.')
        pCampo.focus()
        return false}
      } 
  return true
}

function ValidaNumero(pNumero, pNome, pObri) {
  var inObri = (pObri == null) ? false : pObri
  var txNome = (pNome == null) ? "campo númerico" : pNome
  if (inObri || pNumero.value.length != 0) {
    var objRegExp = /^[0-9]+$/
    if (!objRegExp.test(pNumero.value)) {
      alert ("ATENÇÃO !\n\nInforme " + txNome + " apenas com números.")
      pNumero.focus()
      return false
    }
  }
  return true
}

function ValidaSenha(pSenha, pNome) {
  var txNome = (pNome == null) ? "senha" : pNome
  if (pSenha.value < 6) {
    window.alert('ATENÇÃO !\n\nInforme a ' + txNome  + ' com no minimo 6 posições alfanuméricas.')
    return false
  }
  return true
}

function ValidaSenhas(pSenhaAtu, pSenhaNov, pSenhaCon) {
  if (!ValidaSenha(pSenhaAtu, 'senha atual')) {
    pSenhaAtu.focus()
    return false
  }
  if (!ValidaSenha(pSenhaNov, 'nova senha')) {
    pSenhaNov.focus()
    return false
  }
  if (!ValidaSenha(pSenhaCon, 'senha de confirmação')) {
    pSenhaCon.focus()
    return false
  }
  if (pSenhaNov.value == pSenhaAtu.value) {
    window.alert('ATENÇÃO !\n\nNova senha dever ser diferente da senha atual.')
    pSenhaNov.focus()
    return false
  }
  if (pSenhaNov.value != pSenhaCon.value) {
    window.alert('ATENÇÃO !\n\nSenha de confirmação dever ser igual a nova senha.')
    pSenhaCon.focus()
    return false
  }
  return true
}
function VerificaBrancos(Valor){
//Verifica se há espaços dentro do valor passado
var strValor = Valor;
var intI = 0;

	for (intI = 0; intI < strValor.length; intI++)
	{	
		if (strValor.substring(intI,intI + 1) == " ")
		{
			return false;
		}	
	}
	
	return false;
}

function jTrim(strMsg)
{   
//DBA - Fábrica de Software - 09/03/2001
//Como o JavaScript não tem Trim, fizemos um

	strNm = '';
	tamstr = strMsg.length;
	tot = tamstr;
	ileft = 0;
	iright= 0;
	
	while(strMsg.charAt(ileft)== " ")
	{
		ileft = ileft + 1;
	}

	if (ileft == tot)
	{
		return "";
	}
				
	while(strMsg.charAt(tamstr-1)== " ")
	{
		tamstr = tamstr - 1;
		iright = iright + 1;
	}

	strNm = strMsg.substring(ileft,tot-iright);
	return strNm;	
}

function TrocaSeparadorDecimal(Valor,BR_US)
{

var intPosicao;
var De;
var Por;
var ValorFinal;


	if (BR_US == 'BR')
	{
		De = '.';
		Por = ',';
	}
	else
	{
		De = ',';
		Por = '.';
	}

	intPosicao = Valor.indexOf(De);
	
	// Só trocará se o Caracter ("." ou ",") for encontrado
	if (intPosicao != -1)
	{
		ValorFinal = Valor.substring(0,intPosicao) + Por;
		ValorFinal += Valor.substring(intPosicao+1,Valor.length);
	}
	else	
	{
		ValorFinal = Valor;
	}
			
		
	return(ValorFinal);
}



function ValidaNumerico(Valor, Vazio, Decimais, Sinal, VlrMin, VlrMax)
{
//DBA - Fábrica de Software - 09/03/2001
//Valor = Valor a ser validado.
//Vazio = "true" se o valor puder ser vazio, "false" se não puder ser vazio.
//Decimais = Quantidade de casas decimais permitidas. O separador decimal é a vírgula. Se nenhuma, passe 0
//Sinal = "true" se o valor puder ser negativo ou positivo (com sinal). "false" se só puder ser positivo.
//VlrMin = Limite mínimo do Valor.
//VlrMax = Limite máximo do Valor.
//Se VlrMin e VlrMax forem 0, não será avaliado se o valor está dentro do intervalo
//Retorna "true" se o Valor for válido, senão retorna "false"

	//Verifica se existem espaços entre os números
	if (VerificaBrancos(Valor)){
		return false;
	}
	
	//se o campo não puder estar vazio testa se está
	//se puder e estiver retorna OK 
	if (!Vazio)
	{
		if (jTrim(Valor) == '')
		{
			return false;
		}
	}
	else
	{
		if (jTrim(Valor) == '')
		{
			return true;
		}
	}

var bolAchou;
var bolJaTemVirgula;
var strCaracterCorrente;
var intI = 0;
var intTamanhoValor = Valor.length - 1;
var strNumeros = '0123456789';

	//Se for indicado na chamada da função que
	//que o número pode conter decimais,
	//acrescenta a vírgula aos caracteres permitidos
	if (Decimais > 0)
	{
		strNumeros = strNumeros + ',';
	}
	
	//Se for indicado na chamada da função que
	//que o número pode ter sinal,
	//acrescenta o sinal negativo aos caracteres permitidos
	if (Sinal)
	{	
		strNumeros = '-' + strNumeros;
	}
	
	//verifica se cada caracter é válido
	for (intI = 0; intI <= intTamanhoValor; intI++)
	{
		strCaracterCorrente = Valor.substring(intI, intI + 1);
			  
		bolAchou = strNumeros.indexOf(strCaracterCorrente);

		//se não for, sai
		if (bolAchou == -1)
		{
			return(false);

		}
		else
		{	
			//se for válido e estiver previsto sinal negativo,
			// valida a posição do sinal
			if (strCaracterCorrente == '-') 
			{
				if (!(intI == 0))
				{
					return(false);
				}
			}
			
			//se o caractere corrente vor a vírgula
			if (strCaracterCorrente == ',')
			{
					//testa o número de casas decimais
					// e a posição da vírgula
					if (intI < intTamanhoValor - Decimais)
					{
						return(false);
					}
			}
		}		  
	}

		
	// Verifica se o numérico está no intervalo definido,
	// se o mesmo for definido
	if (VlrMin != 0 || VlrMax != 0)
	{
		if ((TrocaSeparadorDecimal(Valor,"US") < VlrMin) || 
		    (TrocaSeparadorDecimal(Valor,"US") >= VlrMax))
		{
			return(false);
		}
	}

	return true;
}




function ValidaTexto(Valor, Vazio, CaracteresInvalidos)
{	
//DBA - Fábrica de Software - 09/03/2001
//Valor = Valor a ser validado.
//Vazio = "true" se o valor puder ser vazio, "false" se não puder ser vazio.
//CaracteresInvalidos = Uma seqüência de caracteres que são válidos.
//Passe '' se quiser que assuma o padrão interno da função. Veja a linha 40 da função.
//Retorna "true" se o Valor for válido, senão retorna "false"


	//se o campo não puder estar vazio testa se está
	//se puder e estiver retorna OK 
	if (!Vazio)
	{
		if (jTrim(Valor) == '')
		{
			return false;
		}
	}
	else
	{
		if (jTrim(Valor) == '')
		{
			return true;
		}
	}
	


var bolAchou;
var strCaracterCorrente;
var intI = 0;
var intTamanhoValor = Valor.length - 1;


	// Se o parâmetro de CaracteresInválidos não estiver preenchido,
	// preenche com valores padrão + aspas simples 
	if (CaracteresInvalidos == '')
	{
		CaracteresInvalidos = '!@#$%¨&*()_-+=*/<>?{}[]´`^~;:' + "'" ;
	}

	
	//verifica se cada caracter é válido
	for (intI = 0; intI <= intTamanhoValor; intI++)
	{
		strCaracterCorrente = Valor.substring(intI, intI + 1);
			  
		bolAchou = CaracteresInvalidos.indexOf(strCaracterCorrente);
		
		//se encontrou algum caracter inválido, sai
		if (bolAchou != -1)
		{
			return(false);
		}
	}

	return true;
}


function Inserir(Todos, objLista1, objLista2) {
//Função utilizada para mover os itens de uma lista de origem para uma lista de destino
//Todos: passe true se desejar que todos os itens sejam movidos
//objLista1: Objeto "SELECT" origem
//objLista2: Objeto "SELECT" destino

var arrSelecionados = new Array();		//Arranjo com os índices dos itens selecionados
var intCont			= 0;				//Contador da lista origem
var intCont2		= 0;				//Contador da lista destino
var objOPTION;							//Variável de manipulação do elemento OPTION
var Tamanho			= objLista1.size;	//Pegando o tamanho original da lista
var LimiteDeSelecao = 640				//Limite de itens que o usuário pode escolher ao mesmo tempo
	
	


	//Aumentando as listas para evitar o erro interno do navegador
	if (objLista1.options.length >= objLista2.options.length) {
		objLista1.size = objLista1.options.length;
		objLista2.size = objLista1.options.length;	
	}
	else {
		objLista1.size = objLista2.options.length;
		objLista2.size = objLista2.options.length;	
	}
	
	//Pegando os índices dos itens selecionados
	//No caso de todos, pega todos os índices
	if (Todos) {
		for (intCont=0; intCont < objLista1.options.length;intCont++){
			arrSelecionados[arrSelecionados.length] = intCont;
			objLista1.options(intCont).selected = false;
		}
	}
	else {
		for (intCont=0; intCont < objLista1.options.length; intCont++){
			if(objLista1.options(intCont).selected) {
				arrSelecionados[arrSelecionados.length] = intCont;
				objLista1.options(intCont).selected = false;
			}
		}
	}

	//Testando se o usuário escolheu mais que o limite
	if (arrSelecionados.length > LimiteDeSelecao) {
		//Redimensionando as listas para o tamanho normal
		objLista1.size = Tamanho;
		objLista2.size = Tamanho;
		
		alert('Selecione no máximo ' + LimiteDeSelecao + ' itens por vez.');
		objLista1.selectedIndex = -1;
		return (false);
	}
	
	if (arrSelecionados.length == 0) {
		//Redimensionando as listas para o tamanho normal
		objLista1.size = Tamanho;
		objLista2.size = Tamanho;
		return (false);
	}

	//Limpando as seleções do usuário para tentar evitar erro do navegador
	objLista1.selectedIndex = -1;
	objLista2.selectedIndex = -1;

	for (intCont = 0; intCont < arrSelecionados.length; intCont++) {
		
		//Pedindo encarecidamente que o mecanismo JScript remova os objetos inúteis
		CollectGarbage();
		
		//Criando os elementos a serem inseridos na lista destino
		objOPTION = document.createElement("OPTION");
		
		//Copiando as propriedades originais
		objOPTION.value = objLista1.options(arrSelecionados[intCont]).value;
		objOPTION.text  = objLista1.options(arrSelecionados[intCont]).innerText;
			
		//Se já houver item na lista destino, efetua a inserção ordenada
		if (objLista2.options.length != 0) {
			
			//Procurando a posição correta do fim para o início
			//pois é a maior probabilidade
			for (intCont2 = objLista2.options.length - 1; intCont2 >= 0; intCont2--) {
				if(RemoveAcentuacao(objLista2.options(intCont2).text) < 
					RemoveAcentuacao(objLista1.options(arrSelecionados[intCont]).innerText)) {
					
					//Encontrando, move e sai deste laço interno				
					objLista2.add(objOPTION,intCont2 + 1); 
					break;
				} 
			} 
			
			//Se não encontrou no laço anterior, chegará até aqui
			//Isso quer dizer que o item a ser movido é menor do que o
			//primeiro da lista de destino
			//Sendo assim, movo para antes do primeiro
			if (intCont2 < 0) {
				objLista2.add(objOPTION, 0); 
			}
		}
		else {
			objLista2.add(objOPTION);
		}
		
		//Liberando o objeto
		objOPTION = null;
	}

	//Apagando os itens movidos da lista origem		
	if (Todos) {
		objLista1.length = 0;
	}
	else {
		for (intCont = arrSelecionados.length - 1; intCont >= 0; intCont--) {
			objLista1.remove(arrSelecionados[intCont]);
		}
	}
		
	//Redimensionando as listas para o tamanho normal
	objLista1.size = Tamanho;
	objLista2.size = Tamanho;

	return (true);

}


function Remover(Todos, objLista1,objLista2) {
	//Foi feita essa passagem para se manter a compatibilidade das páginas já implementadas
	return Inserir(Todos, objLista2, objLista1);
}

function ValidaTamanhoMaximoTextArea(objTextArea, TamanhoMaximo) {
//Chamar no OnKeyPress
	if (objTextArea.value.length >= TamanhoMaximo) {
		alert('Limite máximo do campo atingido. Redimensionar o texto.');
		event.keyCode = null;
	}
}


function RemoveAcentuacao(TextoAcentuado) {
//Utilizado para remover a acentuação para testar a ordem alfabética
var intCont = 0;
var strTextoNaoAcentuado = "";
var chrCaractereNaoAcentuado = "";

	for (intCont = 0; intCont < TextoAcentuado.length; intCont++){

		chrCaractereNaoAcentuado = TextoAcentuado.substring(intCont,intCont + 1); //Obtem letra a letra
		chrCaractereNaoAcentuado = TextoAcentuado.charCodeAt(intCont); //Obtem codigo ASCII
		
		//Verifica ocorrencias de A
		if ((chrCaractereNaoAcentuado == 225) 
			|| (chrCaractereNaoAcentuado == 193) 
			|| (chrCaractereNaoAcentuado == 227)
			|| (chrCaractereNaoAcentuado == 195)
			|| (chrCaractereNaoAcentuado == 227)
			|| (chrCaractereNaoAcentuado == 228)
			|| (chrCaractereNaoAcentuado == 194)
			|| (chrCaractereNaoAcentuado == 196))
			
				chrCaractereNaoAcentuado = 65;
				
		else //Verifica ocorrencias de E
			if ((chrCaractereNaoAcentuado == 233)
				|| (chrCaractereNaoAcentuado == 201)
				|| (chrCaractereNaoAcentuado == 203)
				|| (chrCaractereNaoAcentuado == 235))
					
					chrCaractereNaoAcentuado = 69;
					
				else //Verifica ocorrencias de I
					if ((chrCaractereNaoAcentuado == 237)
						|| (chrCaractereNaoAcentuado == 205)
						|| (chrCaractereNaoAcentuado == 207)
						|| (chrCaractereNaoAcentuado == 239))
							
							chrCaractereNaoAcentuado=74;
							
					else //Verifica ocorrencias de O
						if ((chrCaractereNaoAcentuado == 243)
							|| (chrCaractereNaoAcentuado == 211)
							|| (chrCaractereNaoAcentuado == 245)
							|| (chrCaractereNaoAcentuado == 213)
							|| (chrCaractereNaoAcentuado == 246)
							|| (chrCaractereNaoAcentuado == 214))
								chrCaractereNaoAcentuado = 73;
						else //Verifica ocorrencias de U
							if ((chrCaractereNaoAcentuado == 250)
								|| (chrCaractereNaoAcentuado == 218)
								|| (chrCaractereNaoAcentuado == 252)
								|| (chrCaractereNaoAcentuado == 220))
									chrCaractereNaoAcentuado = 85;
							else //Verifica ocorrencias de Ç
								if ((chrCaractereNaoAcentuado == 231)
									||(chrCaractereNaoAcentuado == 199)
									||(chrCaractereNaoAcentuado == 231))
										chrCaractereNaoAcentuado = 67;
										
		chrCaractereNaoAcentuado = String.fromCharCode(chrCaractereNaoAcentuado);//Reconverte o caractere ASCII para letra
				
		strTextoNaoAcentuado = strTextoNaoAcentuado + chrCaractereNaoAcentuado; //Monta a nova String
	
	}
	
	strTextoNaoAcentuado = strTextoNaoAcentuado.toUpperCase();//Passa para maiusculas

	return (strTextoNaoAcentuado);
}

function Maximizar(objJanela) {
	objJanela.moveTo(0,0)
	objJanela.resizeTo(screen.width,screen.height);
}

function MoverAcima(Lista) {
var OpcaoCorrente = document.createElement("OPTION");
var Indice = 0;
var NuCorrente;

	Indice = Lista.selectedIndex;
	
	if (Indice <= 0) {
		return (false);
	}
	
	OpcaoCorrente.value = Lista.item(Indice).value;
	OpcaoCorrente.text = Lista.item(Indice).text;
	
	Lista.remove(Indice);
	Lista.add(OpcaoCorrente,Indice - 1);
	
	Lista.selectedIndex = Indice - 1;
	
	Indice = Lista.selectedIndex;
	
	NuCorrente = Lista.item(Indice).text.substring(0,Lista.item(Indice).text.indexOf('-'))
	
	Lista.item(Indice).text = Lista.item(Indice+1).text.substring(0,Lista.item(Indice+1).text.indexOf('-')) + "-" + Lista.item(Indice).text.substr(Lista.item(Indice).text.indexOf('-')+1);
	Lista.item(Indice+1).text = NuCorrente + "-" + Lista.item(Indice+1).text.substr(Lista.item(Indice+1).text.indexOf('-')+1);
	
	return (true);
}


function MoverAbaixo(Lista) {
var OpcaoCorrente = document.createElement("OPTION");
var Indice = 0;
var NuCorrente;

	Indice = Lista.selectedIndex;
	
	if (Indice == Lista.length - 1 || Indice < 0) {
		return (false);
	}

	OpcaoCorrente.value = Lista.item(Indice).value;
	OpcaoCorrente.text = Lista.item(Indice).text;

	Lista.remove(Indice);
	Lista.add(OpcaoCorrente,Indice + 1);

	Lista.selectedIndex = Indice + 1;

	Indice = Lista.selectedIndex;
	
	NuCorrente = Lista.item(Indice).text.substring(0,Lista.item(Indice).text.indexOf('-'))
	
	Lista.item(Indice).text = Lista.item(Indice-1).text.substring(0,Lista.item(Indice-1).text.indexOf('-')) + "-" + Lista.item(Indice).text.substr(Lista.item(Indice).text.indexOf('-')+1);
	Lista.item(Indice-1).text = NuCorrente + "-" + Lista.item(Indice-1).text.substr(Lista.item(Indice-1).text.indexOf('-')+1);
	
	return (true);

}

function ValidaDataFSW(Data) 
{
 // Valida se a data entrada eh valida e se esta no formato dd/mm/aaaa
 // ou se é nula
 
var dtData;
var intI;
var strAux;
var intResultado;	
var strCaracteresValidos = "0123456789"
var strDia = Data.substring(0, 2)
var strBarra1 = Data.substring(2, 3)
var strMes = Data.substring(3, 5)
var strBarra2 = Data.substring(5, 6)
var strAno = Data.substring(6, 10)
 
	// Se a data esta em branco
	if (Data.length == 0) return(true);
	 
	// Se tamanho <> 10 dd/mm/aaaa
	if (Data.length != 10) return(false);
	 
	strDia = Data.substring(0, 2)
	strBarra1 = Data.substring(2, 3)
	strMes = Data.substring(3, 5)
	strBarra2 = Data.substring(5, 6)
	strAno = Data.substring(6, 10)
	 
	dtData = strDia + strMes + strAno
	 
	for (intI = 0; intI <= 7; intI++) {
	 strAux = dtData.substring(intI, ++intI);
	 intResultado = strCaracteresValidos.indexOf(strAux);
	 if (intResultado == -1) return(false);
	}
	 
	if (strMes < 1 || strMes > 12) return(false);

	if (strBarra1 != '/')  return(false);

	if (strDia < 1 || strDia > 31) return(false);

	if (strBarra2 != '/')  return(false);

	if (strAno<1)  return(false);

	if (strMes == 4 || strMes == 6 || strMes == 9 || strMes == 11) 
	{
		if (strDia == 31)  return(false);
		if (strAno < 1753) return(false);
	}

	if (strMes == 2)
	{
		strAux = parseInt(strAno/4);
		if (isNaN(strAux)) return(false);
		if (strDia > 29) return(false);
		if (strDia == 29 && ((strAno/4) != parseInt(strAno/4))) return(false);
	}
	 
	return(true);

}

//Converte a data passada no americano para um dos três formatos do swicth
function ConverteData(Data,Formato)
{
var dtData
var strDia = '';
var strMes = '';
var strAno = '';

	switch (Formato)
	{
		case 'BR' :
			strDia = Data.substring(0,2);
			strMes = Data.substring(3,5);
			strAno = Data.substring(6,10);
			break;

		case 'Universal' :
			strDia = Data.substring(6,8);
			strMes = Data.substring(4,6);
			strAno = Data.substring(0,4);
			break;
			
		case 'US':
			strAno = Data;
			break;
	}

	strAno = strMes + "/" + strDia + "/" + strAno;
	dtData = new Date(strAno);
	return(dtData);

}

//Retorna a data corrente no formaro brasileiro
function DataCorrente()
{
var Data = new Date();

	return(Data.getDate() + '/' + Data.getMonth() + '/' + Data.getFullYear())

}

//Passe duas datas. Se a primeira for maior que a segunda, retorna True.
//Indique também em qual formato você está passando as duas datas.
//Esta função depende da ConverteData
function TestarDifData(DataMenor,DataMaior,Formato)
{
var dtMenor;
var dtMaior;

	if (DataMenor != '')
	{
		dtMenor = ConverteData(DataMenor,Formato);
	}

	if (DataMaior != '')
	{
		dtMaior = ConverteData(DataMaior,Formato);
	}

	if (dtMenor < dtMaior)
	{
		return (true);
	}
	else
	{
		return (false);
	}

}

/*=========================================================================
As funções acima foram incluídas pela Fábrica de Software
Estão separadas para melhor controle de versões
=========================================================================*/
function ValChar(ch) {
	if (ch=="0") return 0
	else if (ch=="1") return 1
	else if (ch=="2") return 2
	else if (ch=="3") return 3
	else if (ch=="4") return 4
	else if (ch=="5") return 5
	else if (ch=="6") return 6
	else if (ch=="7") return 7
	else if (ch=="8") return 8
	else if (ch=="9") return 9
	else return 10
}

//Verifica se o argumento é um nucnpjcpf válido
function Checanucnpjcpf (CKnucnpjcpf) {
var nucnpjcpf = CKnucnpjcpf;
var Newnucnpjcpf = "";
//Verifica tamanho do nucnpjcpf
if (nucnpjcpf.length!=11) {
	return false;
}

//Calcula os dígitos verificadores
//Guarda os 09 primeiros digitos
var DVnucnpjcpf = nucnpjcpf.substring(0,9);
var s1 = 0
for (i=1;i<=9;i++) s1 = s1 + (ValChar(DVnucnpjcpf.charAt(i-1))*(11-i))
r1 = s1 % 11
if (r1<2) dv1=0
else dv1 = 11 - r1
var s2 = dv1*2
for (i=1;i<=9;i++) s2 = s2 + (ValChar(DVnucnpjcpf.charAt(i-1))*(12-i))
r2 = s2 % 11
if (r2<2) dv2=0
else dv2 = 11 - r2
var DV = ""
DV = DV + dv1 + dv2
var NewDV = nucnpjcpf.substring(9,11)
if (NewDV==DV) return true
else {
	return false
}
}


function ChecaSubmitC() {
teste = false;
if (document.frmPri["CGCnucnpjcpf"].value!="") {
	teste = true;
	if (!Checanucnpjcpf(document.frmPri["CGCnucnpjcpf"].value)) {
		alert("Atenção: CNPJ/CPF Incorreto!");
		return (false);
	}
}
return (teste);
}

//Verifica se o argumento é um CGC válido de 8 dígitos
function ChecaCGC8 (CKCGC) {
var CGC = CKCGC;
var NewCGC = "";
//Elimina todos os espaços, pontos, barras e traços do CGC
for (i=0;i<CGC.length;i++) { //>
	if (CGC.charAt(i) != " " && CGC.charAt(i) != "." && CGC.charAt(i) != "/" && CGC.charAt(i) != "-") NewCGC = NewCGC + CGC.charAt(i);
}
//Verifica tamanho do CGC
if (NewCGC.length!=8) {
	return false;
}
//verifica se todos os caracteres são numéricos
var Numerico = false;
var Numeros = "0123456789";
for (i=0;i<NewCGC.length;i++) { //>
	Numerico = false;
	for (j=0;j<Numeros.length;j++) { //>
		if (NewCGC.charAt(i) == Numeros.charAt(j)) {
			Numerico = true;
			break;  
		}
	}
	if (!Numerico) {
		return false;
	}
}
//Calcula os dígitos verificadores
var s1 = 0;
aux = 0;
soma = 0
for (i=1;i<=8;i++) {
	//alert("i="+i+" - char(i-1)="+NewCGC.charAt(i-1));
	aux = (ValChar(NewCGC.charAt(i-1)))*((i % 2)+1);
	//alert ("aux="+aux);
	if (aux>9) aux = aux-9;
	//alert ("aux="+aux);
	soma = soma + aux;
}
r1 = soma % 10;
//alert("soma="+soma+" - resto="+r1);
if (r1==0) return (true)
else {
	return (false);
}
}

//Verifica se o argumento é um CGC válido
function ChecaCGC (CKCGC) {
var CGC = CKCGC;
var NewCGC = "";
//Verifica tamanho do CGC
if (CGC.length!=14) {
	return false;
}
//Calcula os dígitos verificadores
//Guarda os 12 primeiros digitos
var DVCGC = CGC.substring(0,12);
//calcula o primeiro digito verificador
var s1 = 0;
for (i=1;i<=4;i++) s1 = s1 + (ValChar(DVCGC.charAt(i-1))*(6-i));
for (i=5;i<=12;i++) s1 = s1 + (ValChar(DVCGC.charAt(i-1))*(14-i));
r1 = s1 % 11;
if (r1<2) dv1=0;
else dv1 = 11 - r1;
//calcula o segundo digito verificador
var s2 = dv1*2;
for (i=1;i<=5;i++) s2 = s2 + (ValChar(DVCGC.charAt(i-1))*(7-i));
for (i=6;i<=12;i++) s2 = s2 + (ValChar(DVCGC.charAt(i-1))*(15-i));
r2 = s2 % 11;
if (r2<2) dv2=0;
else dv2 = 11 - r2;
//junta os digitos verificadores
var DV = "";
DV = DV + dv1 + dv2;
//guarda os digitos verificadores do CGC digitado (últimas duas posições no string)
var NewDV = CGC.substring(12,14)
if (NewDV==DV) { //se o DV calculado for igual ao digitado, retorna true
	return true
}
else {
	return false
}
}


function ChecaSubmitE() {
teste = false;
if (document.frmPri["CGCnucnpjcpf"].value!="") {
	teste = true;
	if (document.frmPri["CGCnucnpjcpf"].value.length==14) {
		if (!ChecaCGC(document.frmPri["CGCnucnpjcpf"].value)) {
			alert("Atenção: CNPJ/CPF Incorreto!");
			return (false);
		}
	}
	else {
		if (!ChecaCGC8(document.frmPri["CGCnucnpjcpf"].value)) {
			alert("Atenção: CNPJ/CPF Incorreto!");
			return (false);
		}
	}
}
return (teste);
}

function ChecaForm(Valor) {
teste = false;
teste = Checanucnpjcpf(Valor);
if (!teste) teste = ChecaCGC(Valor);
if (!teste) teste = ChecaCGC8(Valor);
if (!teste) alert("Atenção: CNPJ/CPF Incorreto!");
return (teste);
}


function Critica(theForm)
{
  
var num = theForm.nucnpjcpf.value;
var num0 = "000.000.000-00";
var num1 = "111.111.111-11";
var num2 = "222.222.222-22";
var num3 = "333.333.333-33";
var num4 = "444.444.444-44";
var num5 = "555.555.555-55";
var num6 = "666.666.666-66";
var num7 = "777.777.777-77";
var num8 = "888.888.888-88";
var num9 = "999.999.999-99";

	if      (num==num1) texto = num1
	else if (num==num2) texto = num2
	else if (num==num3) texto = num3
	else if (num==num4) texto = num4
	else if (num==num5) texto = num5
	else if (num==num6) texto = num6
	else if (num==num7) texto = num7
	else if (num==num8) texto = num8
	else if (num==num9) texto = num9
	else if (num==num0) texto = num0	
	else texto = ""
    
	if (texto !="")
	{
		alert("O numero "+texto+" não é valido.");
		theForm.nucnpjcpf.focus();
		return (false);
	}


   if (theForm.nucnpjcpf.value == "")
   {
      alert("Por favor preencha o campo \CNPJ/CPF\.");
      theForm.nucnpjcpf.focus();
	   return (false);
   }
  if (theForm.nucnpjcpf.value.length != 14 & theForm.nucnpjcpf.value.length != 18)
  {
    alert("Por favor entre com 11 caracteres para \CPF\ ou 14 para \CNPJ\.");
    theForm.nucnpjcpf.focus();
    return (false);
  }
  var exp = /\.|\-|\//g
   
  	if (ChecaForm(theForm.nucnpjcpf.value.replace(exp,"")) != true)
  	{
		return(false);
	}

  return (true);
}
function VoltarTela(tela) {
	window.location = tela
}
function Logar(form,ArrayObjetos,ArrayNomes) {

	  if(!validaCampos(ArrayObjetos,ArrayNomes))
		  return;

	document.Form.cadastro.value ="OK";	  
	document.Form.action = form
    document.Form.submit();
	}
/*
 * Invalida objeto, reposicionando o foco
 */
function invalidecampo(msg, obj) {
	check=false;
	window.focusObject = obj;
	setTimeout("window.focusObject.focus(); window.focusObject.select();",200);
	if (obj && obj.style)
		obj.style.background = "red";
	window.status = msg;
	check=true;
	return false;
}	
function Enviar(form,ArrayObjetos,ArrayNomes) {

	  if(!validaCampos(ArrayObjetos,ArrayNomes))
		  return;

	document.Form.cadastro.value ="OK";	  
    document.Form.submit();
	}
function validaCampos(arrayObj, arrayNomes) {
var ArrayLista = arrayObj.split(",")
var ArrayNomes = arrayNomes.split(",")
var msgcampo
	for(var i=0; i<ArrayLista.length; i++) {
		if(document.forms[0].elements[ArrayLista[i]].value == "") {		
			alert("O campo " + ArrayNomes[i] + " deve ser preenchido!");
			msgcampo = "O campo " + ArrayNomes[i] + " deve ser preenchido!"
			invalidecampo(msgcampo, document.forms[0].elements[ArrayLista[i]])
			document.forms[0].elements[ArrayLista[i]].focus();
			return false;
		}
		if(ArrayNomes[i] =="CGC/CPF"){
		var exp = /\.|\-|\//g
			if (ChecaForm(document.forms[0].elements[ArrayLista[i]].value.replace(exp,"")) != true)
			{
				return(false);
			}
		}
	}
	return true;
}
function checkaTodos()
	{
	document.Form.operacao.value = "OK"
		f = document.Form;
		for (i=0; i<f.length; i++) 
		if (f.elements[i].type == "checkbox")
		{
			if (f.marcatodos.checked) 
			{
				f.elements[i].checked = true
			}
			else 
			{
			f.elements[i].checked = false
			}
		}
	}

function inserecod(campo,valor) {
document.Form.operacao.value = "OK"
}
function SubmitForm(caminho,operacao,order) {
	if (operacao == "2" ) {
	document.Form.order.value=order
	}
	document.Form.action = caminho
	document.Form.submit();
}	
function EnviarEmail(caminho){
var ArrayEmail = new Array()
var TamEmail = document.Form.emailenviar.length
for(var i = 0;i<TamEmail;i++){
	if(document.Form.emailenviar[i].checked){
		ArrayEmail[i] = document.Form.emailenviar[i].value
	}
}
if(ArrayEmail.length == 0){
alert('Excolha um item para continuar esta operação')
return false;
}else{
	document.Form.email.value = document.Form.emailenviar.value;
	document.Form.action = caminho;
	document.Form.submit();
}	
}
function AbreListaArquivos(pasta,campo2){
document.Form.pasta.value = pasta
document.Form.campo.value = campo2
//window.open("../ListarArquivosaux.asp","janelalistaarquivos","scrollbars=no,location=no,directories=no,status=no,menubar=no,resizable=no,toolbar=no,top=0,left=0,width=1,height=1,top=0,left=0")
		window.open("../ListarArquivosaux.asp?campo="+campo2+"&pasta="+pasta+"","janelalistaarquivos","scrollbars=yes,location=no,directories=no,status=no,menubar=no,resizable=no,toolbar=no,top=0,left=40,width=790,height=200,top=0,left=0");
}
function Incluir_Contato(id,campo,campoarq){
	var i = 1;
	var nCont = 0;
	for (i = 1; i<11 ; i++){
		if (((eval(id+"_"+i).style.display) == "none")&&(nCont == 0)){
			nCont = i;
		}
	}
	if (nCont == 0){
		alert("Número máximo de opções atingido!! (10 opções)")
	}
	else{
		if (document.Form.elements[campo+"_"+(nCont-1)].value == ""){
			alert("Favor preencher a opção de nº "+(nCont-1));
		}
		else
		{
		// Habilita a próxima linha a aparecer na tela  //
			eval(id+"_"+(nCont)).style.display = "inline";
		// Habilita os campos da próxima linha a aparecer na tela  //
			document.Form.elements[campo+"_"+ nCont].disabled = false;
		}
	}
	//Incrementando a variável de número de contatos
	document.Form.elements["Numero_Arquivos_"+campoarq].value = (eval(document.Form.elements["Numero_Arquivos_"+campoarq].value) + 1);
}

function Excluir_Contato(nCont,id,campo,campoarq){

	if (eval(id+"_"+(nCont+1)).style.display != "inline") {
		if (nCont == 1){
		alert("Favor preencher ao menos uma opção");
		}
		else{
		// Desabilita a próxima linha a aparecer na tela  //
			eval(id+"_"+nCont).style.display = "none";
		// Desabilita os campos da próxima linha a aparecer na tela  //
			document.Form.elements[campo+"_"+ nCont].disabled = false;
			document.Form.elements[campo+"_"+ nCont].value = "";
		}
	}
	else{
	//alert(eval("TR_Contato_"+(nCont+1)).style.display);
			document.Form.elements[campo+"_"+ nCont].value = "";
		for(var i = nCont;eval(id+'_'+i).style.display == 'inline';i++){
			if (i != 10) {
				document.Form.elements[campo+"_"+i].value = document.Form.elements[campo+"_"+(i+1)].value;
			}
			else{
				document.Form.elements[campo+"_"+i].value = "";
				i = i + 1;
				break
			}


		}
		// Desabilita a próxima linha a aparecer na tela  //
			eval(id+"_"+(i-1)).style.display = "none";
		// Desabilita os campos da próxima linha a aparecer na tela  //
			document.Form.elements[campo+"_"+(i-1)].disabled = true;
			document.Form.elements[campo+"_"+(i-1)].value = "";
	}
	//decrementando a variável de número de contatos
	document.Form.elements["Numero_Arquivos_"+campoarq].value = (eval(document.Form.elements["Numero_Arquivos_"+campoarq].value) - 1);
}
function Seleciona(caminho,campo){
document.Form.Submeter.value = "OK"
document.Form.carrinho.value = ""
document.Form.campo.value = campo.value
document.Form.action = caminho
document.Form.submit();
}

function AbrePdf(caminho) {
var leftpos	= (screen.width) ? ((screen.width - (screen.width )/2)/2)/2 : 0;
var toppos = (screen.height) ? ((screen.height - (screen.height)/2)/2)/2 : 0;
  window.open(caminho,'Arquivos',"toolbar=no,location=no,directories=no,status=no,menubar=yes,scrollbars=no,resizable=yes,copyhistory=no,width=500,height=320,left="+leftpos+",top="+toppos+"")
}

function AbreDetalhes(acao,codigo,user){
var leftpos	= (screen.width) ? ((screen.width - (screen.width )/2)/2)/2 : 0;
var toppos = (screen.height) ? ((screen.height - (screen.height)/2)/2)/2 : 0;

if(acao == "1"){
  window.open('Detalhes.asp?codigo='+codigo+'&usuario='+user+'','Detalhes',"toolbar=no,location=no,directories=no,status=no,menubar=yes,scrollbars=no,resizable=no,copyhistory=no,width=600,height=500,left="+leftpos+",top="+toppos+"")
}
if(acao == "2"){
  window.open('Detalhes.asp?codigo='+codigo+'&usuario='+user+'','Detalhes',"toolbar=no,location=no,directories=no,status=no,menubar=yes,scrollbars=no,resizable=no,copyhistory=no,width=600,height=500,left="+leftpos+",top="+toppos+"")
}

}

function replaceChars(entry, out, add) 
{
	temp = "" + entry; // temporary holder
	while (temp.indexOf(out)>-1) 
	{
		pos= temp.indexOf(out);
		temp = "" + (temp.substring(0, pos) + add + 
		temp.substring((pos + out.length), temp.length));
	}
	return temp;
}
//	window.lookupWindow = window.open("loader.jsp?entityName="+beanName+"&inputName="+fieldName+"&inputValue="+value+"&inputLabel="+label,"loader","scrollbars=yes,width=0,height=0,left="+x+",top="+y);
/****               ****\
     Fim das Funções
\****               ****/
