/*
 Usar aqui os seguintes padrôes:

- Nome das Funções: 	 [Ação] + [Diferenciador]

	[Ação]
		- Usar um verbo no infinitivo com a inicial maiúscula;
		- Nome de ações recomendados: Formatar, Inserir, Remover, Abrir, Fechar, Ativar, Desativar, Calcular, Validar, Imprimir, Ocultar,  Mostrar, Mascarar, Montar;
		- Seguir o padrão das funções aqui já existentes;
	[Diferenciador]
		-Nome do objeto ou caracteristica que sofrerá a ação, com a inicial Maiúcula.

- Nome de Objetos:
	Usar inicial Maiúscula e nas palavras alternadas a inicial maiúsculo
	ex: CampoValor

- Nome de variáveis:
	Usar nomes com inicial minúscula e nas palavras alternadas a inicial maiúsculo
	ex: qtdeCaracteres, nrParcelas

*/

/** MascararCampoMoeda
  - Descrição: Mascara o campo moeda   ONKEYUP
  - Evento: onKeyUp e OnBlur
  - Dependência: MascararCampoMoeda
  - Exibe alerta :Não
  -Exemplo: onKeyPress="MascararCampoMoeda(this, 8);"
  => 1.111,11

 @param Object CampoM
 Campo que deverá ser mascarado
 @param tamMax
 maxlength
 @return void
  **/
function MascararCampoMoeda(CampoM, tamanho) {

    //var vr = String(CampoM.value).replace(/\./g, '').replace(',', '');
    var vr = String(CampoM.value).replace(/\D+/g, '');
	vr = vr.substring(0, tamanho);

    var tam = vr.length;

    if ( (tam > 2) && (tam <= 5) )
        vr = vr.substr( 0, tam - 2 ) + ',' + vr.substr( tam - 2, tam );
    if ( (tam >= 6) && (tam <= 8) )
        vr = vr.substr( 0, tam - 5 ) + '.' + vr.substr( tam - 5, 3 ) + ',' + vr.substr( tam - 2, tam ) ;
    if ( (tam >= 9) && (tam <= 11) )
        vr = vr.substr( 0, tam - 8 ) + '.' + vr.substr( tam - 8, 3 ) + '.' + vr.substr( tam - 5, 3 ) + ',' + vr.substr( tam - 2, tam ) ;
    if ( (tam >= 12) && (tam <= 14) )
        vr = vr.substr( 0, tam - 11 ) + '.' + vr.substr( tam - 11, 3 ) + '.' + vr.substr( tam - 8, 3 ) + '.' + vr.substr( tam - 5, 3 ) + ',' + vr.substr( tam - 2, tam ) ;
    if ( (tam >= 15) && (tam <= 17) )
        vr = vr.substr( 0, tam - 14 ) + '.' + vr.substr( tam - 14, 3 ) + '.' + vr.substr( tam - 11, 3 ) + '.' + vr.substr( tam - 8, 3 ) + '.' + vr.substr( tam - 5, 3 ) + ',' + vr.substr( tam - 2, tam ) ;

	CampoM.value = vr;

    return;
}

/** MascararCampoMoeda
  - Descrição: Mascara o campo moeda   ONKEYUP
  - Evento: onKeyUp e OnBlur
  - Dependência: MascararCampoMoeda
  - Exibe alerta :Não
  -Exemplo: onKeyPress="MascararCampoMoeda(this, 8);"
  => 1.111,11

 @param Object CampoM
 Campo que deverá ser mascarado
 @param tamMax
 maxlength
 @return void
  **/
function MascararCampoMoedaBlur(CampoM, tamanho) {

    //var vr = String(CampoM.value).replace(/\./g, '').replace(',', '');
    var vr = String(CampoM.value).replace(/\D+/g, '');
	vr = vr.substring(0, tamanho);

    var tam = vr.length;

    if ( (tam <= 2) && (vr != ''))
		vr = vr + ',' + '00'
    if ( (tam > 2) && (tam <= 5))
        vr = vr.substr( 0, tam - 2 ) + ',' + vr.substr( tam - 2, tam );
    if ( (tam >= 6) && (tam <= 8) )
        vr = vr.substr( 0, tam - 5 ) + '.' + vr.substr( tam - 5, 3 ) + ',' + vr.substr( tam - 2, tam ) ;
    if ( (tam >= 9) && (tam <= 11) )
        vr = vr.substr( 0, tam - 8 ) + '.' + vr.substr( tam - 8, 3 ) + '.' + vr.substr( tam - 5, 3 ) + ',' + vr.substr( tam - 2, tam ) ;
    if ( (tam >= 12) && (tam <= 14) )
        vr = vr.substr( 0, tam - 11 ) + '.' + vr.substr( tam - 11, 3 ) + '.' + vr.substr( tam - 8, 3 ) + '.' + vr.substr( tam - 5, 3 ) + ',' + vr.substr( tam - 2, tam ) ;
    if ( (tam >= 15) && (tam <= 17) )
        vr = vr.substr( 0, tam - 14 ) + '.' + vr.substr( tam - 14, 3 ) + '.' + vr.substr( tam - 11, 3 ) + '.' + vr.substr( tam - 8, 3 ) + '.' + vr.substr( tam - 5, 3 ) + ',' + vr.substr( tam - 2, tam ) ;

	CampoM.value = vr;

    return;
}

/** MascararCampoPress
  - Descrição: Mascara o campo conforme a máscara passada. Funcional para as máscaras (CNPJ-CPF-DATA(DD/MM/AAA)-DATA(MM/AAA)-CEP-HORA)   ONKEYPRESS
  - Evento: onKeyPress
  - Dependência: Não
  - Exibe alerta :Não
  -Exemplo: onKeyPress="return MascararCampoPress(this,'####/####',event);"

 @param Object CampoM
 Campo que deverá ser mascarado
 @param string  mascara
  Mascara que deverá ser aplicada no campo
  @param Object  Evento
 Objeto event
  @return bool
  **/
function MascararCampoPress(CampoM, mascara, Evento) {

    var tecla;

    if (Evento.which != null) { // Mozilla compatível
        if (!((Evento.which >= 48 && Evento.which <= 57) || Evento.which == 0 || Evento.which == 8 || Evento.which == 13)) {
            return false;
        } else {
            tecla=Evento.which;
        }
    } else { // MSIE compatível
        if (!((Evento.keyCode >= 48 && Evento.keyCode <= 57) || Evento.keyCode == 13)) {
            return false;
        } else {
            tecla=Evento.keyCode;
        }
    }

    var car;
    var saida='#';

    while (CampoM.value.length) {
        car = CampoM.value.charAt(CampoM.value.length-1);
        if (!(((car>='0') && (car<='9')) || (car==".") || (car=="-") || (car=="/"))) {
            CampoM.value=CampoM.value.substr(0,CampoM.value.length-1);
        } else break;
    }
    var texto = mascara.substring(CampoM.value.length)
    if ((texto.substring(0, 1) != saida) && (tecla != 8)) {
        CampoM.value += texto.substring(0, 1);
    }

    return true;
}

/** MascararCampoBlur
  - Descrição: Mascara o campo conforme a máscara passada. Funcional para as máscaras (CNPJ-CPF-DATA(DD/MM/AAA)-DATA(MM/AAA)-CEP-HORA)  - ONBLUR
  - Evento: onBlur e usada também em funções
  - Dependência: Não
  - Exibe alerta :Não
  -Exemplo: MascararCampoBlur(NOTeste,'###-##-##')   ou onblur="return MascararCampoBlur(this,'####/####');"

 @param Object CampoM
 Campo que deverá ser mascarado
 @param string  mascara
  Mascara que deverá ser aplicada no campo
   @return void , mas aplica a mascara ao campo do formulario
  **/
function MascararCampoBlur(CampoM, mascara) {

    //diferente de vazio
    if (CampoM.value != "") {
        var tam		  = 0;
        var cont   	  = 1;
        var tralha 	  = 0;
        var padrao 	  = "";
        var expressao = "";
        var valor;

        //Monta o padrão e a expressão regular sem mascara para usar no replace
        for (ii = 0; ii < String(mascara).length; ii++) {
            if (String(mascara).substr(ii,1) == "#") {
                tralha++;
                tam++;
            } else {
                if (tralha == 0) {
                    padrao = padrao + String(mascara).substr(ii,1);
                } else {
                    padrao = padrao + "$"+cont;
                    padrao = padrao + String(mascara).substr(ii,1);
                    expressao = expressao + "(\\d{"+tralha+"})";

                    tralha = 0;
                    cont++;
                }
            }
        }

        if (tralha > 0) {
            padrao = padrao + "$"+cont;
            expressao = expressao + "(\\d{"+tralha+"})";
        }

        expressao 	= "^"+expressao+"$";
        //Fim da Montagem Dinâmica
        //Desmascarando e Corte no tamanho
        valor 		= RemoverMascara(CampoM.value);	//Remove a máscara
        valor 		= valor.substr(0,tam);

        //Mascarando
        var expreg = new RegExp(expressao);
        valor = valor.replace(expreg, padrao);

        //Atribui ao campo
        CampoM.value = valor;
    }

    return;
}

/** RemoverMascara
  - Descrição: Remove todos os caracteres que não sejam digitos ex:  /|. )(-+=*&¨%$#@!"':?]}{[``~ A-Z
  - Evento: onblur,  usado tambem em funções
  - Dependência: Não
  - Exibe alerta :Não
  -Exemplo: RemoverMascara('709.594.551-91')

 @param string texto
 texto para ser removida a mascara
 @return string
  **/
function RemoverMascara(texto) {
    return String(texto).replace(/[^0-9]/gi, "");
}

/** RemoverNaoNumerico
  - Descrição: Remove todos os caracteres que não sejam digitos  ex:  /|. )(-+=*&¨%$#@!"':?]}{[``~A-Z a-z
  - Evento: onkeyup
  - Dependência: Não
  - Exibe alerta :Não
  -Exemplo: RemoverNaoNumerico(this)

   @param Object CampoV
 Campo a ser validado e tratado
  @return void
  **/
function RemoverNaoNumerico(CampoV) {
    var texto = CampoV.value;
    CampoV.value = String(texto).replace(/\D+/, "");
    return;
}

/** RemoverQtdeCaracter
  - Descrição: Remove os caracteres em excesso na string
  - Evento: onkeyUp, onBlur ou em funções
  - Dependência: Não
  - Exibe alerta :Não

 @param Object CampoC
 Campo que deverá ser contado
 @param int qtdCaracter
 Quantidade de caracteres permitido pelo campo
  @return void
  **/
function RemoverQtdeCaracter(CampoC, qtdCaracter) {
    qtdCaracter = (qtdCaracter < String(CampoC.value).length) ? qtdCaracter : String(CampoC.value).length;
    CampoC.value = String(CampoC.value).substr(0,qtdCaracter);
    return;
}

/** MontarExpressaoRegular
  - Descrição: Monta expressão regular  para uma mascara informada - usada para máscaras de digitos (CNPJ/CPF/DATA/CEP)
  - Evento: N/A Usado em funções
  - Dependência: Não
  - Exibe alerta :Não
  -Exemplo: MontarExpressaoRegular('##.##.###-##')

  @param string  mascara
  máscara do campo
  @return string da expressao regular
  **/
function MontarExpressaoRegular(mascara) {

    var tralha = 0;
    var expressao = "";

    //Monta a expressao regular dinamicamente
    for (ii = 0; ii < String(mascara).length; ii++) {
        if (String(mascara).substr(ii,1) == "#") {
            tralha++;
        } else {
            if (tralha == 0) {
                expressao = expressao + String(mascara).substr(ii,1);
            } else {
                expressao = expressao + "\\d{"+tralha+"}";
                expressao = expressao + String(mascara).substr(ii,1);
                tralha = 0;
            }
        }
    }

    if (tralha > 0) {
        expressao = expressao + "\\d{"+tralha+"}";
    }

    expressao = "^"+expressao+"$"

    //Fim da Montagem
    return expressao;
}

/** MontarAreaPagina
  - Descrição: Monta o tamanho da area principal do sistema (Parte Branca da Tela)
  - Evento: N/A Usado em todas as páginas
  - Dependência: Não
  - Exibe alerta :Não
  -Exemplo: MontarExpressaoRegular('##.##.###-##')
  @return void
  **/
function MontarAreaPagina() {
    var valor = document.body.clientHeight - 144;
    $('principal').style.height = valor+'px';
    return;
}

function MontarPaginacaoXMLGeral(intPagina, intRegistrosPagina, intRegistros, nodePai, xsl, field, NOCabecalho, NOCorpo, NORodape) {
	if ($('paginaAtual')) {
		$('paginaAtual').value = intPagina;
	}

	var intQuantidadePaginas;
	var xmlPagina = Ajax.criarDOM();  //DOM Document
	xmlPagina.loadXML($('xmlPaginaGeral').value);

	intRegistros = (intRegistros == '') ? 0 : intRegistros;
	$(field).style.display = "";

	//Nehum registro encontrado
	if (parseInt(intRegistros) <= 0) {
		$(NOCorpo).style.display = "";
		$(NOCorpo).innerHTML = "<label class='textovermelho'><b>Nenhum registro encontrado.</b></label>";
		$(NOCabecalho).innerHTML = "";
		$(NORodape).innerHTML = "";
		return;
	}

	//Definindo quantidade de páginas
	if ((intRegistros % intRegistrosPagina) != 0) {
		intQuantidadePaginas =  parseInt((intRegistros / intRegistrosPagina) + 1);
	} else {
		intQuantidadePaginas =  parseInt(intRegistros / intRegistrosPagina);
	}

	if ($('quantidadePaginas')) {
		$('quantidadePaginas').value = intQuantidadePaginas;
	}
	//Legenda da Consulta
	var texto = " Relatório: " + intRegistros + " Registro(s) Encontrado(s) - Página " + (parseFloat(intPagina)+1) + " de " + intQuantidadePaginas;
	$(NOCabecalho).innerHTML = "<div style='padding-left:2px;'>" + texto + "</div>";

	//return;
	//Cria o Element com os dados para a paginação
	var PAGINACAO = xmlPagina.createElement("PAGINACAO");
	PAGINACAO.setAttribute("recordCount", intRegistros);
	PAGINACAO.setAttribute("recordsPerPage", intRegistrosPagina);
	PAGINACAO.setAttribute("pageNumber", intPagina);
	PAGINACAO.setAttribute("totalPaginas",intQuantidadePaginas);
	xmlPagina.selectSingleNode(nodePai).appendChild(PAGINACAO);

	//return;
	//Cria o Element com os dados da permissão para paginação
	var PAGINACAO = xmlPagina.createElement("PERMISSAO");
	if($('STConsultar')) PAGINACAO.setAttribute("STConsultar", $('STConsultar').value);
	if($('STInserir')) PAGINACAO.setAttribute("STInserir", $('STInserir').value);
	if($('STAlterar')) PAGINACAO.setAttribute("STAlterar", $('STAlterar').value);
	if($('STApagar')) PAGINACAO.setAttribute("STApagar", $('STApagar').value);
	xmlPagina.selectSingleNode(nodePai).appendChild(PAGINACAO);

	//imprime o número das páginas para seleção das mesmas
	var i = 0;
	var paginas = "";
	var i2 = 0;
	var pAnterior = 0, pProxima = 0;

	if (intPagina == 0) {
		pAnterior = 0;
		pProxima = 1;
	} else if (intQuantidadePaginas > 3) {
		pAnterior = parseInt(intPagina) - 1;
		pProxima = parseInt(intPagina) + 1;
		paginas = paginas + "<a	class='cl_001' style='text-align:center; vertical-align:middle;' href=\"javascript:MontarPaginacaoXMLGeral(0,"+ intRegistrosPagina +", "+ intRegistros +", '"+ nodePai +"', '"+ xsl + "', '" + field + "', '" + NOCabecalho + "', '" + NOCorpo + "', '" + NORodape + "');\">Primeira ||</a>&nbsp;";
		paginas = paginas + "<a	class='cl_001' style='text-align:center; vertical-align:middle;' href=\"javascript:MontarPaginacaoXMLGeral("+ pAnterior +" ,"+ intRegistrosPagina +", "+ intRegistros +", '"+ nodePai +"', '"+ xsl + "', '" + field + "', '" + NOCabecalho + "', '" + NOCorpo + "', '" + NORodape + "');\"> << Anterior</a>&nbsp;";
	}

	for (i = 0; i < intQuantidadePaginas; i++) {
		i2 = i + 1;
		if ( (i + 3) > intPagina && intPagina > (i - 3)) {
			if (intPagina != i) {
				paginas = paginas + "<a	class='cl_001' style='text-align:center; vertical-align:middle;' href=\"javascript:MontarPaginacaoXMLGeral("+i+","+ intRegistrosPagina +", "+ intRegistros +", '"+ nodePai +"', '"+ xsl + "', '" + field + "', '" + NOCabecalho + "', '" + NOCorpo + "', '" + NORodape + "');\">" + i2 + "</a>&nbsp;&nbsp;";
			} else {
				paginas = paginas + "<a class='cl_001' style='font-weight:bold;text-align:center;vertical-align:middle;'>" + i2 + "</a>&nbsp;&nbsp;";
			}
		}
	}

	if (intPagina != (i - 1) && intQuantidadePaginas > 3) {
		paginas = paginas + "<a	class='cl_001' style='text-align:center; vertical-align:middle;' href=\"javascript:MontarPaginacaoXMLGeral("+ pProxima +","+ intRegistrosPagina +", "+ intRegistros +", '"+nodePai+"' , '" + xsl + "', '" + field + "', '" + NOCabecalho + "', '" + NOCorpo + "', '" + NORodape + "');\">Próximo >> </a>&nbsp;";
		paginas = paginas + "<a	class='cl_001' style='text-align:center; vertical-align:middle;' href=\"javascript:MontarPaginacaoXMLGeral("+(i-1)+", "+ intRegistrosPagina +", "+ intRegistros +", '"+ nodePai +"', '"+ xsl + "', '" + field + "', '" + NOCabecalho + "', '" + NOCorpo + "', '" + NORodape + "');\">|| Última</a>&nbsp;";
	}

	$(NORodape).innerHTML = paginas;
	//Seleção do xsl
	var xslDoc;
	xslDoc = Ajax.criarDOM();  //DOM retorno
	xslDoc.load($(xsl).id + ".xsl");
	//Adicionando dados no xsl
	var xmlTrans;
	xmlTrans = Ajax.criarDOM();  //DOM retorno
	xmlPagina.transformNodeToObject(xslDoc, xmlTrans);

	//imprimindo resultados
	$(NOCorpo).innerHTML		= xmlTrans.xml;
	$(NOCorpo).style.display	= "";

	xmlPagina = Ajax.criarDOM();
	xmlTrans = Ajax.criarDOM();
	xslDoc = Ajax.criarDOM();
    return;
}

function MontarPaginacaoXML(intPagina, intRegistrosPagina, intRegistros, nodePai, xsl) {

    if ($('paginaAtual')) {
        $('paginaAtual').value = intPagina;
    }

    var intQuantidadePaginas;
    var xmlPagina = Ajax.criarDOM();  //DOM Document
    xmlPagina.loadXML($('xmlPagina').value);

    intRegistros = (intRegistros == '') ? 0 : intRegistros;
    $("fildConsulta").style.display = "";

    //Nehum registro encontrado
    if (parseInt(intRegistros) <= 0) {
        $("divConsulta").style.display = "";
        $("legConsulta").innerHTML = "";
        $("divConsulta").innerHTML = "<label class='textovermelho'><b>Nenhum registro encontrado.</b></label>";
        $("tdPaginacaoConsulta").innerHTML = "";
        return;
    }

    //Definindo quantidade de páginas
    if ((intRegistros % intRegistrosPagina) != 0) {
        intQuantidadePaginas =  parseInt((intRegistros / intRegistrosPagina) + 1);
    } else {
        intQuantidadePaginas =  parseInt(intRegistros / intRegistrosPagina);
    }

    if ($('quantidadePaginas')) {
        $('quantidadePaginas').value = intQuantidadePaginas;
    }
    //Legenda da Consulta
    var texto = " Relatório: " + intRegistros + " Registro(s) Encontrado(s) - Página " + (parseFloat(intPagina)+1) + " de " + intQuantidadePaginas;
    $("legConsulta").innerHTML = "<div style='padding-left:2px;'>" + texto + "</div>";

    //return;
    //Cria o Element com os dados para a paginação
    var PAGINACAO = xmlPagina.createElement("PAGINACAO");
    PAGINACAO.setAttribute("recordCount", intRegistros);
    PAGINACAO.setAttribute("recordsPerPage", intRegistrosPagina);
    PAGINACAO.setAttribute("pageNumber", intPagina);
    PAGINACAO.setAttribute("totalPaginas",intQuantidadePaginas);
    xmlPagina.selectSingleNode(nodePai).appendChild(PAGINACAO);

	//return;
	//Cria o Element com os dados da permissão para paginação
	var PAGINACAO = xmlPagina.createElement("PERMISSAO");
	if($('STConsultar')) PAGINACAO.setAttribute("STConsultar", $('STConsultar').value);
	if($('STInserir')) PAGINACAO.setAttribute("STInserir", $('STInserir').value);
	if($('STAlterar')) PAGINACAO.setAttribute("STAlterar", $('STAlterar').value);
	if($('STApagar')) PAGINACAO.setAttribute("STApagar", $('STApagar').value);
	xmlPagina.selectSingleNode(nodePai).appendChild(PAGINACAO);

    //imprime o número das páginas para seleção das mesmas
    var i = 0;
    var paginas = "";
    var i2 = 0;
    var pAnterior = 0, pProxima = 0;

    if (intPagina == 0) {
        pAnterior = 0;
        pProxima = 1;
    } else if (intQuantidadePaginas > 3) {
        pAnterior = parseInt(intPagina) - 1;
        pProxima = parseInt(intPagina) + 1;
        paginas = paginas + "<a	class='cl_001' style='text-align:center; vertical-align:middle;' href=\"javascript:MontarPaginacaoXML(0,"+ intRegistrosPagina +", "+ intRegistros +", '"+ nodePai +"', '"+ xsl + "');\">Primeira ||</a>&nbsp;";
        paginas = paginas + "<a	class='cl_001' style='text-align:center; vertical-align:middle;' href=\"javascript:MontarPaginacaoXML("+ pAnterior +" ,"+ intRegistrosPagina +", "+ intRegistros +", '"+ nodePai +"', '"+ xsl + "');\"> << Anterior</a>&nbsp;";
    }

    for (i = 0; i < intQuantidadePaginas; i++) {
        i2 = i + 1;
        if ( (i + 3) > intPagina && intPagina > (i - 3)) {
            if (intPagina != i) {
                paginas = paginas + "<a	class='cl_001' style='text-align:center; vertical-align:middle;' href=\"javascript:MontarPaginacaoXML("+i+","+ intRegistrosPagina +", "+ intRegistros +", '"+ nodePai +"', '"+ xsl + "');\">" + i2 + "</a>&nbsp;&nbsp;";
            } else {
                paginas = paginas + "<a class='cl_001' style='font-weight:bold;text-align:center;vertical-align:middle;'>" + i2 + "</a>&nbsp;&nbsp;";
            }
        }
    }

    if (intPagina != (i - 1) && intQuantidadePaginas > 3) {
        paginas = paginas + "<a	class='cl_001' style='text-align:center; vertical-align:middle;' href=\"javascript:MontarPaginacaoXML("+ pProxima +","+ intRegistrosPagina +", "+ intRegistros +", '"+nodePai+"' , '" + xsl + "');\">Próximo >> </a>&nbsp;";
        paginas = paginas + "<a	class='cl_001' style='text-align:center; vertical-align:middle;' href=\"javascript:MontarPaginacaoXML("+(i-1)+", "+ intRegistrosPagina +", "+ intRegistros +", '"+ nodePai +"', '"+ xsl + "');\">|| Última</a>&nbsp;";
    }

    $("tdPaginacaoConsulta").innerHTML = paginas;
    //Seleção do xsl
    var xslDoc;
    xslDoc = Ajax.criarDOM();  //DOM retorno
    xslDoc.load($(xsl).id + ".xsl");
    //Adicionando dados no xsl
    var xmlTrans;
    xmlTrans = Ajax.criarDOM();  //DOM retorno
    xmlPagina.transformNodeToObject(xslDoc, xmlTrans);

    //imprimindo resultados
    $("divConsulta").innerHTML 		= xmlTrans.xml;
    $("divConsulta").style.display 	= "";

	xmlPagina = Ajax.criarDOM();
	xmlTrans = Ajax.criarDOM();
	xslDoc = Ajax.criarDOM();
    return;
}


/*Função para rejeitar as teclas de acordo com o codigo 13 --- Enter */
/*Programador: Luciano Ulhoa*/
function RejeitarTecla(){
    var oEvent=arguments[0];
    //filtrando o evento
    var oEvent = oEvent ? oEvent : window.event;
    var tecla = (oEvent.keyCode) ? oEvent.keyCode : oEvent.which;

    if (oEvent.type=="keydown" && navigator.appName.indexOf('Internet Explorer') < 0 ) {
        return false;
    }

    for (var i = 1; cod_tecla = arguments[i]; i++) {
        if (tecla == cod_tecla) {
            if (typeof(oEvent.preventDefault) == 'function') {
                oEvent.preventDefault();
            } else {
                oEvent.returnValue = false;
                oEvent.keyCode = 0;
            }
        }
        return false;
    }
}

/*Função para rejeitar as teclas de acordo com o codigo 13 --- Enter */
/*Programador: Luciano Ulhoa*/
function RejeitarTeclas() {
    var tecla = 0;
    var args_eval = "e, ";
    for (var i = 0; tecla = arguments[i]; i++) {
        args_eval += tecla + ", ";
    }
    args_eval += "0";
    eval("document.onkeypress=function(e){RejeitarTecla(" + args_eval + ");}\n" + "document.onkeydown=function(e){RejeitarTecla(" + args_eval + ");}");
}

/** MontarCaixaMensagem
  - Descrição: Monta a caixa de mensagem (Alert ou Confirm)
  - Evento: N/A
  - Dependência: N/A
  - Exibe alerta :N/A
  -Exemplo Alert:
  MontarCaixaMensagem('Cadastro de Perfil','exclamacao','Perfil cadastrado com sucesso','alerta','','')"
  -Exemplo Confirm:
  MontarCaixaMensagem('Cadastro de Perfil','interrogacao','Você tem certeza disso? Quer pedir ajuda aos universitários?','confirmacao','pedirAjuda()','')

 @param String tituloMensagem
 Título que deve aparecer na caixa de mensagem, geralmente o nome do módulo em questão
 @param String imagemMensagem
 Tipo da imagem que deve ser exibida dentro da caixa de mensagem - erro / exclamacao / interrogacao / informacao / sucesso
 @param String conteudoMensagem
 Texto que deve ser apresentado dentro da caixa de mensagem - Aceita HTML
 @param String tipoBotao
 Tipo de botao da caixa - OK para Alerta / Sim e Não para Confirmacao
 @param String funcaoBotao1
 Nome da função a ser chamada no caso de clicar no primeiro botão
 @param String funcaoBotao2
 Nome da função a ser chamada no caso de clicar no segundo botão
  @return void
  **/
function MontarCaixaMensagem(tituloMensagem, imagemMensagem, conteudoMensagem, tipoBotao, funcaoBotao1, funcaoBotao2) {

	if (navigator.appVersion.indexOf("MSIE 6.0") != -1) {
		$('divBloqueioPaginaMensagemFrame').style.zIndex = 499;
		$('divBloqueioPaginaMensagemFrame').style.display = '';
	} else {
		$('divBloqueioPaginaMensagem').style.zIndex = 499;
		$('divBloqueioPaginaMensagem').style.display = '';
	}
	if (navigator.appVersion.indexOf("MSIE 6.0") != -1) {
		$('divBloqueioPaginaMensagemFrame').style.width = document.body.clientWidth + document.body.scrollLeft;
		$('divBloqueioPaginaMensagemFrame').style.height = document.body.clientHeight + document.body.scrollTop;
	} else {
		$('divBloqueioPaginaMensagem').style.width = document.body.clientWidth + document.body.scrollLeft;
		$('divBloqueioPaginaMensagem').style.height = document.body.clientHeight + document.body.scrollTop;
	}
	$('divCaixaMensagem').style.display = "";

	RejeitarTeclas(9);

	window.onresize = function() {
        CentralizarDivPagina($('divCaixaMensagem'));
		if (navigator.appVersion.indexOf("MSIE 6.0") != -1) {
			$('divBloqueioPaginaMensagemFrame').style.width = document.body.clientWidth + document.body.scrollLeft;
			$('divBloqueioPaginaMensagemFrame').style.height = document.body.clientHeight + document.body.scrollTop;
		} else {
			$('divBloqueioPaginaMensagem').style.width = document.body.clientWidth + document.body.scrollLeft;
			$('divBloqueioPaginaMensagem').style.height = document.body.clientHeight + document.body.scrollTop;
		}
    };

    window.onscroll = function() {
        if (navigator.appVersion.indexOf("MSIE 6.0") != -1) {
			$('divBloqueioPaginaMensagemFrame').style.width = document.body.clientWidth + document.body.scrollLeft;
			$('divBloqueioPaginaMensagemFrame').style.height = document.body.clientHeight + document.body.scrollTop;
		} else {
			$('divBloqueioPaginaMensagem').style.width = document.body.clientWidth + document.body.scrollLeft;
			$('divBloqueioPaginaMensagem').style.height = document.body.clientHeight + document.body.scrollTop;
		}
    };

	if (String(conteudoMensagem).length < 20 ) {
		$('divCaixaMensagem').style.width = "175px";
		$('tdtituloCaixaMensagem').style.width = "175px";
	} else {
		$('divCaixaMensagem').style.width = "";
		$('tdtituloCaixaMensagem').style.width = "";
	}
	$('tituloMensagem').innerHTML = "<b>" + tituloMensagem + "</b>";
	$('conteudoMensagem').innerHTML = conteudoMensagem;

	switch (imagemMensagem) {
	case 'erro':
		$('imagemMensagem').src = "/img/ico_Erro.gif";
		break;
	case 'exclamacao':
		$('imagemMensagem').src = "/img/ico_Exclamacao.gif";
		break;
	case 'interrogacao':
		$('imagemMensagem').src = "/img/ico_Interrogacao.gif";
		break;
	case 'informacao':
		$('imagemMensagem').src = "/img/ico_Informacao.gif";
		break;
	case 'sucesso':
		$('imagemMensagem').src = "/img/ico_Sucesso.gif";
		break;
	default:
		$('imagemMensagem').src = "/img/ico_Exclamacao.gif";
		break;
	}

	if (tipoBotao == "alerta") {
		$('btAlerta').style.display = "";
		$('btConfirmacao').style.display = "none";
		$('btAlertaOK').focus();
		$('btAlertaOK').setAttribute("type","onclick");
		$('btAlertaOK').onclick = function () {
			if (navigator.appVersion.indexOf("MSIE 6.0") != -1) {
				$('divBloqueioPaginaMensagemFrame').style.display = 'none';
			} else {
				$('divBloqueioPaginaMensagem').style.display = 'none';
			}
			$('divCaixaMensagem').style.display = 'none';

			if (funcaoBotao1 != '') {
				eval(funcaoBotao1);
			}
			if (funcaoBotao1.indexOf('MontarCaixaMensagem') == -1) {
				RejeitarTeclas();
			}
		};
	} else {

		$('btAlerta').style.display = "none";
		$('btConfirmacao').style.display = "";
		$('btConfirmacaoSim').setAttribute("type","onclick");
		$('btConfirmacaoNao').setAttribute("type","onclick");
		$('btConfirmacaoSim').focus();

		if (funcaoBotao1 != '') {
			$('btConfirmacaoSim').onclick = function () {
				if (navigator.appVersion.indexOf("MSIE 6.0") != -1) {
					$('divBloqueioPaginaMensagemFrame').style.display = 'none';
				} else {
					$('divBloqueioPaginaMensagem').style.display = 'none';
				}
				$('divCaixaMensagem').style.display = 'none';

				eval(funcaoBotao1);

				if (funcaoBotao1.indexOf('MontarCaixaMensagem') == -1) {
					RejeitarTeclas();
				}
			};
		} else {
			$('btConfirmacaoSim').onclick = function () {
				$('divCaixaMensagem').style.display = 'none';
				if (navigator.appVersion.indexOf("MSIE 6.0") != -1) {
					$('divBloqueioPaginaMensagemFrame').style.display = 'none';
				} else {
					$('divBloqueioPaginaMensagem').style.display = 'none';
				}
				RejeitarTeclas();
			};
		}

		if (funcaoBotao2 != '') {
			$('btConfirmacaoNao').onclick = function () {
				if (navigator.appVersion.indexOf("MSIE 6.0") != -1) {
					$('divBloqueioPaginaMensagemFrame').style.display = 'none';
				} else {
					$('divBloqueioPaginaMensagem').style.display = 'none';
				}
				$('divCaixaMensagem').style.display = 'none';
				eval(funcaoBotao2);
				if (funcaoBotao2.indexOf('MontarCaixaMensagem') == -1) {
					RejeitarTeclas();
				}
			};
		} else {
			$('btConfirmacaoNao').onclick = function () {
				$('divCaixaMensagem').style.display = 'none';
				if (navigator.appVersion.indexOf("MSIE 6.0") != -1) {
					$('divBloqueioPaginaMensagemFrame').style.display = 'none';
				} else {
					$('divBloqueioPaginaMensagem').style.display = 'none';
				}
				RejeitarTeclas();
			};
		}
	}


	Drag.init($("trtituloCaixaMensagem"), $("divCaixaMensagem"));
	//Drag.init(trtituloMensagem, rootMensagem, "100%", "100%", "100%", "100%");

	CentralizarDivPagina($('divCaixaMensagem'));
	return;
}

/** CalcularDVCPFCNPJ
  - Descrição: Calcula o digito verificador para o CPF e o CNPJ
  - Evento: Usado em funções
  - Dependência: Não
  - Exibe alerta :Não
  -Exemplo: CalcularDVCPFCNPJ(valor,tipo)

  @param string  valor
  valor do campo CPF ou CNPJ (deve ser informado sem a máscara e com tamanho completo)
   @param string  tipo
  tipo do campo a ser calculado o DV --> valores "CPF" ou "CNPJ"
  @return string
  retorna o digito verificador
  **/
function CalcularDVCPFCNPJ(base, tipo) {

    var result = "";
    var i, j, k, soma, dv;
    var cicloPeso = (tipo=="CNPJ") ? 8: 11;
    var maxDigitos = (tipo=="CNPJ")? 14: 11;
    var calculado = (tipo=="CNPJ")? String('00000000000000'+base) : String('00000000000'+base);
    var tam = calculado.length;

    calculado = calculado.substr(tam-maxDigitos,tam);

    for (j = 1; j <= 2; j++) {
        k = 2;
        soma = 0;
        for (i = calculado.length-1; i >= 0; i--) {
            soma += (calculado.charAt(i) - '0') * k;
            k = (k-1) % cicloPeso + 2;
        }
        dv = 11 - soma % 11;
        if (dv > 9) dv = 0;
        calculado += dv;
        result += dv
    }

    return result;
}

/** ValidarMascara
  - Descrição: Valida se o valor informado para um campo obedece a máscara informada. Funcional para todos os valores que contem apenas numeros (0-9)  e literais (. - \ / )
  - Evento: pode usar no onBlur ou contido em outra função (geralmente)
  - Dependência: MontarExpressaoRegular
  - Exibe alerta :Não
  -Exemplo: onBlur="ValidarMascara(this,'####/####');"

 @param Object CampoV
 Campo que deverá ser validado
 @param string  mascara
  Mascara que deverá ser validada com o valor do campo
  @return bool
  **/
function ValidarMascara(CampoV, mascara) {

    if (CampoV.value != "") {
        var expressao = new RegExp(MontarExpressaoRegular(mascara));
        return expressao.test(CampoV.value);
    } else {
        return false;
    }
}

/** ValidarCEP
  - Descrição: Valida o CEP e exibe o alerta
  - Evento: onBlur
  - Dependência: MascararCampoBlur e ValidarMascara
  - Exibe alerta :Sim
  -Exemplo: onBlur="ValidarCEP(this);"

 @param Object CampoV
 Campo que deverá ser validado
  @return void
  **/
function ValidarCEP(CampoV) {
    if (CampoV.value != "") {
        //ReMascara o campo do formulário
        //Para garantir quando o valor for colado sem a máscara
        MascararCampoBlur(CampoV,'#####-###');

        //Valida se a máscara está obedecendo a expressão formal
        if (!ValidarMascara(CampoV,'#####-###')) {
            MontarCaixaMensagem("Validação CEP","","CEP inválido.","alerta","LimparCampo($('"+CampoV.id+"'))","");
            return false;
        }
        return true;
    }
    return false;
}

/** ValidarCPF
	Antigamente existia dentro do próprio geralfuncoes.js
	Hoje usa a mesma função de validação, só que no Corporativo
**/
function ValidarCPF(CampoV) {

	//Ignora campo em branco - Favor Não Apagar
	if(CampoV.value==""){
		return(false);
	}

	//Usando o Corporativo
	if (!validarCPF(CampoV, false)){
		MontarCaixaMensagem("Validação CPF","","CPF inválido.","alerta","LimparCampo($('"+CampoV.id+"'))","");
		return(false);
	}else{
		return(true);
	}
}

/** ValidarNumeroCPF
  - Descrição: Valida o número do CPF e retorna verdadeiro ou falso
  - Evento: não
  - Dependência: MascararCampoBlur e ValidarMascara
  - Exibe alerta : não
  -Exemplo: if ValidarNumeroCPF(this)

Não serão considerados válidos os seguintes CPF:
000.000.000-00, 111.111.111-11, 222.222.222-22, 333.333.333-33, 444.444.444-44,
555.555.555-55, 666.666.666-66, 777.777.777-77, 888.888.888-88, 999.999.999-99.

 @param Object CampoV
 Campo que deverá ser validado
  @return bool
  **/
function ValidarNumeroCPF(NumeroCPF) {
    if (NumeroCPF != "") {
        var valor;
        var tam;
        var base;
        var digitos = "";
        var i;
        var algUnico;

        //---------------------------------------------------------------------------------------------------------------------------------------------------------
        //Ajustes - Desmascarar e completar os zeros a esquerda

        valor = RemoverMascara(NumeroCPF);
        tam = String('00000000000'+valor).length;
        valor = String('00000000000'+valor).substr(tam-11,tam);

        //Fim dos Ajustes
        //---------------------------------------------------------------------------------------------------------------------------------------------------------
        //---------------------------------------------------------------------------------------------------------------------------------------------------------
        //Primeira Validação - Expressão Regular

        NumeroCPF = valor;

        //Fim da Primeira Validação
        //---------------------------------------------------------------------------------------------------------------------------------------------------------
        //---------------------------------------------------------------------------------------------------------------------------------------------------------
        //Segunda Validação - Validação da Base + Digito verificador

        base	= valor.substring(0, valor.length - 2); //Monta a base
        digitos = CalcularDVCPFCNPJ(base,'CPF'); //Calcula o DV

        if (valor != base + digitos) {
			//MontarCaixaMensagem("Validação CPF","","CPF inválido.","alerta","LimparCampo($('"+CampoV.id+"'))","");
			return false;
        }

        //Fim da Segunda Validação
        //---------------------------------------------------------------------------------------------------------------------------------------------------------
        //---------------------------------------------------------------------------------------------------------------------------------------------------------
        //Terceira validação - Algoritmo Único

        algUnico = true;
        for (i = 1; i < 11; i++) {
            algUnico = algUnico && (valor.charAt(i-1) == valor.charAt(i));
        }

        if (algUnico) {
			//MontarCaixaMensagem("Validação CPF","","CPF inválido.","alerta","LimparCampo($('"+CampoV.id+"'))","");
            return false;
        }

        //Fim da Terceira Validação
        //---------------------------------------------------------------------------------------------------------------------------------------------------------
        return true;
    }
    return false;
}

function LimparCampo(Campo) {
	if (Campo.disabled == false) {
		Campo.value = "";
		window.setTimeout(function () { Campo.focus(); }, 0);
	}
}

function ValidarNumeroTelefone(CampoV) {
	var valor = false;
    if (CampoV.value != "" && CampoV.value != "(") {
        //ReMascara o campo do formulário
        //Para garantir quando o valor for colado sem a máscara
        MascararCampoBlur(CampoV,'(##)####-####');
        //Valida se a máscara está obedecendo a expressão formal
	    var expressao = new RegExp(/\(?\d{2}\)?\d{4}-\d{4}/);
	    valor = expressao.test(CampoV.value);

        if (!valor) {
            MontarCaixaMensagem("Validação Telefone","","Telefone inválido.","alerta","LimparCampo($('"+CampoV.id+"'))","");
            return false;
        }
        return true;
    }
	CampoV.value = "";
    return true;
}

/** ValidarCNPJ
  - Descrição: Valida o CNPJ e exibe o alerta
  - Evento: onBlur
  - Dependência: MascararCampoBlur e ValidarMascara
  - Exibe alerta :Sim
  -Exemplo: onBlur="ValidarCNPJ(this);" Pode-se usar dentro de outra função que depende da validação

 @param Object CampoV
 Campo que deverá ser validado
  @return bool
  **/
function ValidarCNPJ(CampoV) {

	//Ignora campo em branco - Favor Não Apagar
	if(CampoV.value==""){
		return(false);
	}

	//Usando o Corporativo
	if (!validarCNPJ(CampoV, false)){
		MontarCaixaMensagem("Validação CNPJ","","CNPJ inválido.","alerta","LimparCampo($('"+CampoV.id+"'))","");
		return(false);
	}else{
		return(true);
	}
	
}

/** ValidarData
  - Descrição: Valida a Data no formato DD/MM/AAAA e exibe o alerta
  - Evento: onBlur
  - Dependência: ValidarMascara
  - Exibe alerta :Sim
  -Exemplo: onBlur="ValidarData(this);" Pode-se usar dentro de outra função que depende da validação

 @param Object CampoV
 Campo que deverá ser validado
  @return bool
  **/
function ValidarData(CampoV) {
    var valor = CampoV.value;
    var dataValida = true;

    if (valor != "") {
        //Valida se a máscara está obedecendo a expressão formal
        if (!ValidarMascara(CampoV,'##/##/####')) {
            dataValida = false;
        } else {
            dia = (valor.substr(0, 2));
            mes = (valor.substr(3, 2));
            ano = (valor.substr(6, 4));

            if (ano%4 == 0) {
                var dias = new Array(31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31)
            } else {
                var dias = new Array(31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31);
            }

            if ((ano < 1900) || (ano > 9999)) {
                dataValida = false;
            } else if ((mes < 1) || (mes > 12)) {
                dataValida = false;
            } else if ((dia < 1) || (dia > dias[mes-1])) {
                dataValida = false;
            }
        }
    } else {
        return false;
    }

    if (!dataValida) {
        MontarCaixaMensagem("Validação Data","","Data inválida.","alerta","LimparCampo($('"+CampoV.id+"'))","");
        return false;
    } else {
        return true;
    }
}

/** ValidarDataMesAno
  - Descrição: Valida a Data no formato MM/AAAA e exibe o alerta
  - Evento: onBlur
  - Dependência: ValidarMascara
  - Exibe alerta :Sim
  -Exemplo: onBlur="ValidarDataMesAno(this);" Pode-se usar dentro de outra função que depende da validação

 @param Object CampoV
 Campo que deverá ser validado
  @return bool
  **/
function ValidarDataMesAno(CampoV) {

    var valor = CampoV.value;
    var dataValida = true;

    if (valor != "") {

        //Valida se a máscara está obedecendo a expressão formal
        if (!ValidarMascara(CampoV,'##/####')) {
            dataValida = false;
        } else {
            mes = (valor.substr(0, 2));
            ano = (valor.substr(3, 4));

            if ((ano < 1900) || (ano > 9999)) {
                dataValida = false;
            }else if ((mes < 1) || (mes > 12)) {
                dataValida = false;
            }
        }
    } else {
        return false;
    }

    if (!dataValida) {
		MontarCaixaMensagem("Validação Data","","Data inválida.","alerta","LimparCampo($('"+CampoV.id+"'))","");
        return false;
    } else {
        return true;
    }
}

/** ValidarEmail
  - Descrição: Valida o email com expressão regular
  - Evento: onBlur
  - Dependência: Nenhuma
  - Exibe alerta :Sim
  -Exemplo: onBlur="ValidarEmail(this);"

 @param Object CampoV
 Campo que deverá ser validado
  @return bool
  **/
function ValidarEmail(CampoV) {
    var valor = CampoV.value;

    if (valor != "") {
        var expressao = /^([a-zA-Z0-9_\-])+(\.([a-zA-Z0-9_\-])+)*@((\[(((([0-1])?([0-9])?[0-9])|(2[0-4][0-9])|(2[0-5][0-5])))\.(((([0-1])?([0-9])?[0-9])|(2[0-4][0-9])|(2[0-5][0-5])))\.(((([0-1])?([0-9])?[0-9])|(2[0-4][0-9])|(2[0-5][0-5])))\.(((([0-1])?([0-9])?[0-9])|(2[0-4][0-9])|(2[0-5][0-5]))\]))|((([a-zA-Z0-9])+(([\-])+([a-zA-Z0-9])+)*\.)+([a-zA-Z])+(([\-])+([a-zA-Z0-9])+)*))$/;
        if (!expressao.test(valor)) {
			MontarCaixaMensagem("Validação E-mail","","Endereço Eletrônico inválido.","alerta","LimparCampo($('"+CampoV.id+"'))","");
            return false;
        } else {
            return true;
        }
    } else {
        return false;
    }
}

/** ValidarHora
  - Descrição: Valida se o campo hora foi informado corretamente - Formato HH:MM
  - Evento: onBlur
  - Dependência: ValidarMascara
  - Exibe alerta :Sim
  -Exemplo: onBlur="ValidarHora(this);"

 @param Object CampoV
 Campo que deverá ser validado
  @return bool
  **/
function ValidarHora(CampoV) {

    var valor = CampoV.value;
    var horaValida = true;

    if (valor != "") {
        //Valida se a máscara está obedecendo a expressão formal
        if (!ValidarMascara(CampoV,'##:##')) {
            horaValida = false;
        } else {
            hora = (valor.substr(0, 2));
            min = (valor.substr(3, 2));

            if (parseInt(hora) > 23) {
                horaValida = false;
            }

            if (parseInt(min) > 59) {
                horaValida = false;
            }
        }
    } else {
        return false;
    }

    if (!horaValida) {
		MontarCaixaMensagem("Validação Hora","","Hora inválida.","alerta","LimparCampo($('"+CampoV.id+"'))","");
        return false;
    } else {
        return true;
    }
}

/** ValidarNumerico
  - Descrição: Valida se o campo informado só contém números
  - Evento: onBlur
  - Dependência: Nenhuma
  - Exibe alerta :Sim
  -Exemplo: onBlur="ValidarNumerico(this);"

 @param Object CampoV
 Campo que deverá ser validado
  @return bool
  **/
function ValidarNumerico(CampoV) {
    if (CampoV.value != "") {
        var expressao = /^\d+$/;
        if (!expressao.test(CampoV.value)) {
			MontarCaixaMensagem("Validação Número","","Este campo só aceita números.","alerta","LimparCampo($('"+CampoV.id+"'))","");
            return false;
        } else {
            return true;
        }
    } else {
        return false;
    }
}

/** ValidarQtdeCaracter
  - Descrição: Calcular a quantide máxima de caracteres permitido para um campo texto impedindo a digitação de excesso. Pode ou não mostrar a qtde de caracteres restantes.Pode ou não emitir o alerta.
  - Evento: onkeyup,onBlur
  - Dependência: RemoverQtdeCaracter
  - Exibe alerta :Não (mensagem false) ou Sim (mensagem true)
  - Exemplo:  onkeyup="ValidarQtdeCaracter(this, 5, document.getElementById('spanteste'),true);"
		onkeyup="ValidarQtdeCaracter(this, 5, '',true);"
		onBlur="ValidarQtdeCaracter(this, 5, 'document.getElementById('spanteste')',true);"
		onBlur="ValidarQtdeCaracter(this, 5, '',true);"

 @param Object CampoC
 Campo que deverá ser contado
 @param int qtdCaracter
 Quantidade de caracteres permitido pelo campo
 @param Object CampoL
 Campo que exibirá a legenda, geralmente div ou span. Caso não queira exibir a legenda, deve ser informado vazio ''
 @param bool  alerta
 true - exibe o alerta, false - não alerta
 @return void
  **/
function ValidarQtdeCaracter(CampoC, qtdCaracter, CampoL, alerta) {

    var txtSaida = "";
    var txtEntrada = String(CampoC.value);

    if ((qtdCaracter-txtEntrada.length) < 0) {
        if (CampoL)	CampoL.innerHTML = 0;
        if (alerta) MontarCaixaMensagem("Validação Qtde Caracter","","Atenção, você atingiu o limite máximo de caracteres.","alerta","RemoverQtdeCaracter($('"+CampoC.id+"'),"+qtdCaracter+")","");
		//alert('Atenção, você atingiu o limite máximo de caracteres.');
        //RemoverQtdeCaracter(CampoC,qtdCaracter);
    } else if (CampoL) {
        CampoL.innerHTML = qtdCaracter-txtEntrada.length;
    }
    return;
}

/** $
- Descrição: Retorna o obj que foi passado o ID
- Evento: Não
- Dependência: Não
- Exibe alerta : Não

@param Object id
@return id
**/
function $(Id) {
    try {
        if (document.layers) { // netscape
            return document.layers[Id];
        }
        if (document.getElementById) { // DOM; IE5, NS6, Mozilla, Opera
            return document.getElementById(Id);
        }
        if (document.all) { //Proprietary DOM; IE4
            return document.all[Id];
        }
        if (document[Id]) { //Netscape alternative
            return document[Id];
        }
    } catch(e) {
        return document.getElementById(Id);
    }

}

/** $a
- Descrição: Retorna o alert
- Evento: Não
- Dependência: Não
- Exibe alerta : sim

@param string mensagem
@return void
**/

function $a(mensagem) {
    alert(mensagem);
}

/** preencherCombo
- Descrição: Preenche combo
- Evento: Não
- Dependência: Não
- Exibe alerta : não

@param string campo
-Campo destinado a receber o objeto combo

@param objeto xml xml
-Campo destinado a receber o objeto xml

@param  string idCampo
-Campo destinado a receber o campo chave da combo , pode receber mais de uma chave. Para isso deve ser passado os valores separados por pipe '|'

@param string NoCampo
-Campo destinado a receber o campo que será exibido na combo

@param string idSelecionado
-Campo destinado a selecionar um valor de inicio para combo

@return void
**/

function PreencherCombo(Combo, xml, idCampo, noCampo, idSelecionado) {

	Combo.options.length = 1;
    var root  = xml.documentElement.childNodes;
	var vet = idCampo.split("|");
	var DSCampo = "";

    if (root.length > 0) {
        Combo.options[0].text = "Selecione";
        Combo.options[0].value = "";
        for (var i = 0; i < root.length; i++) {

			//Caso seja passada uma lista de valores separados por pipe '|'
			if (vet.length > 1){
				idCampo = '';
				for (var j = 0;j < vet.length; j++) {
					idCampo = idCampo+'|'+root[i].getAttribute(vet[j]);
				}
				idCampo = String(idCampo).substr(1,String(idCampo).length);
				if (noCampo.indexOf('|') != -1) {
					var vNoCampo =  noCampo.split("|");
					DSCampo = root[i].getAttribute(vNoCampo[0]);
					for (var j = 1;j < vNoCampo.length; j++) {
						DSCampo = DSCampo + " - " + root[i].getAttribute(vNoCampo[j]);
					}
					Combo.options[i+1] = new Option(DSCampo, root[i].getAttribute(idCampo));
					Combo.options[i+1].title = DSCampo;
					DSCampo = "";
				} else {
					Combo.options[i+1] = new Option(root[i].getAttribute(noCampo), idCampo);
					Combo.options[i+1].title= root[i].getAttribute(noCampo);
				}

	            if (idSelecionado != "") {
	                if (idSelecionado == idCampo) {
	                    Combo.options[i + 1].selected = true;
	                }
	            }
			//Valor único
			} else {
				if (noCampo.indexOf('|') != -1) {
					var vNoCampo =  noCampo.split("|");
					DSCampo = root[i].getAttribute(vNoCampo[0]);
					for (var j = 1;j < vNoCampo.length; j++) {
						DSCampo = DSCampo + " - " + root[i].getAttribute(vNoCampo[j]);
					}
					Combo.options[i+1] = new Option(DSCampo, root[i].getAttribute(idCampo));
					Combo.options[i+1].title = DSCampo;
					DSCampo = "";
				} else {
					Combo.options[i+1] = new Option(root[i].getAttribute(noCampo), root[i].getAttribute(idCampo));
					Combo.options[i+1].title = root[i].getAttribute(noCampo);
				}

	            //Combo.options[i + 1] = new Option(root[i].getAttribute(noCampo), root[i].getAttribute(idCampo));
	            if (idSelecionado != "") {
	                if (idSelecionado == root[i].getAttribute(idCampo)) {
	                    Combo.options[i+1].selected = true;
	                }
	            }
			}
        }
        Combo.style.backgroundColor = "#ffffff";
        Combo.disabled = false;
    } else {
        Combo.options[0].text = "-";
        Combo.options[0].value = "";		
        Combo.style.backgroundColor = "#eeeeee";
        Combo.disabled = true;
    }
}

function ImprimirResultado(objResultado, intRegistros, nodePai, xsl) {
    var xmlPagina = Ajax.criarDOM();  //DOM Document
    xmlPagina.loadXML($('xmlPagina').value);

    intRegistros = (intRegistros == '') ? 0 : intRegistros;
    //Nehum registro encontrado
    if (parseInt(intRegistros) <= 0) {
        objResultado.style.display = "";
        objResultado.innerHTML = "<label class='textovermelho' align='center'><b>Nenhum registro encontrado.</b></label>";
        return;
    }
    //Seleção do xsl
    var xslDoc;
    xslDoc = Ajax.criarDOM();  //DOM retorno
    xslDoc.load($(xsl).id + ".xsl");
    //Adicionando dados no xsl
    var xmlTrans;
    xmlTrans = Ajax.criarDOM();  //DOM retorno
    xmlPagina.transformNodeToObject(xslDoc, xmlTrans);

    //imprimindo resultados
    objResultado.innerHTML 		= xmlTrans.xml;
    objResultado.style.display 	= "";

    return;
}

function ImprimirMenuXSLXML() {

    var xmlPagina = Ajax.criarDOM();  //DOM Document
    xmlPagina.loadXML($('xmlImprimirMenu').value);

    //Seleção do xsl
    var xslDoc;
    xslDoc = Ajax.criarDOM();  //DOM retorno
    xslDoc.load($('xslPermissaoConsultarMenu').id + ".xsl");
    //Adicionando dados no xsl
    var xmlTrans = Ajax.criarDOM();  //DOM retorno
    xmlPagina.transformNodeToObject(xslDoc, xmlTrans);

    //imprimindo resultados
    $('divMenuDinamico').innerHTML 		= xmlTrans.xml;
    $('divMenuDinamico').style.display 	= "";

    return;
}

/*Função para retornar a posição de um determinado elemento*/
/*Programador: Luciano Ulhoa*/
function ObterPosicaoElemento(elemID) {
    if ($(elemID)) {
        var offsetTrail = $(elemID);
    } else {
        var offsetTrail = elemID;
    }
    var offsetLeft = 0;
    var offsetTop = 0;
    while (offsetTrail) {
        offsetLeft += offsetTrail.offsetLeft;
        offsetTop += offsetTrail.offsetTop;
        offsetTrail = offsetTrail.offsetParent;
    }
    if (navigator.userAgent.indexOf("Mac") != -1 &&
        typeof document.body.leftMargin != "undefined") {
        offsetLeft += document.body.leftMargin;
        offsetTop += document.body.topMargin;
    }
    return {
        left:offsetLeft,
        top:offsetTop
    };
}

/*
 * Codigo para mover uma div
 * É preciso colocar a class="arraste"
 * Exemplo: <div class="arraste" id="divObservacaoParcela" style="cursor: move;padding:10px;filter: DropShadow(Color=gray, OffX=3, OffY=3, Positive=1);position:absolute;width:100px;height:100px;display:none;z-index:1;">
 * Programador: Luciano Ulhoa
 */
function movemouse(e) {
	if (isdrag) {
        dobj.style.left = ($&&!document.all) ? tx + e.clientX - x : tx + event.clientX - x;
        dobj.style.top  = ($&&!document.all) ? ty + e.clientY - y : ty + event.clientY - y;
		isdrag = true;
		return true;
    }
}

/*
 * Codigo para mover uma div
 * É preciso colocar a class="arraste"
 * Exemplo: <div class="arraste" id="divObservacaoParcela" style="cursor: move;padding:10px;filter: DropShadow(Color=gray, OffX=3, OffY=3, Positive=1);position:absolute;width:100px;height:100px;display:none;z-index:1;">
 * É necessário colocar o seguinte codigo na função que abre a div ------->>>>>>>>
 *		document.onmousedown=selectmouse;
 *		document.onmouseup=new Function("isdrag=false");
 *	Programador: Luciano Ulhoa
 */
function selectmouse(e) {
    var fobj = ($&&!document.all) ? e.target : event.srcElement;
    var topelement = ($&&!document.all) ? "HTML" : "BODY";

    while (fobj.tagName != topelement && fobj.className != "arraste") {
        fobj = ($&&!document.all) ? fobj.parentNode : fobj.parentElement;
    }

    if (fobj.className == "arraste") {
        isdrag = true;
        dobj = fobj;
        tx = parseInt(dobj.style.left+0);
        ty = parseInt(dobj.style.top+0);
        x = ($&&!document.all) ? e.clientX : event.clientX;
        y = ($&&!document.all) ? e.clientY : event.clientY;
        document.onmousemove=movemouse;
        return true;
    }
}

function CentralizarDivPagina(objDiv) {
    if (parseInt(objDiv.offsetHeight) > parseInt(document.body.clientHeight)) {
        objDiv.style.top = 0;
    } else {
        objDiv.style.top = parseInt((document.body.clientHeight / 2)) - parseInt(objDiv.offsetHeight / 2) + document.body.scrollTop;
    }
    objDiv.style.left = parseInt(document.body.clientWidth / 2) - parseInt(objDiv.offsetWidth / 2);
}

/*
Barra de rolagem:
<script language="javascript">
window.open("pagina2.html", "Pagina2" ,"scrollbars = yes");
//Permite as opções: yes (1) ou no (0)
</script>
Barra de status:
<script language="javascript">
window.open("pagina2.html", "Pagina2" ,"status = yes");
//Permite as opções: yes (1) ou no (0)
</script>
Barra de menu:
<script language="javascript">
window.open("pagina2.html", "Pagina2" ,"menubar = yes");
//Permite as opções: yes (1) ou no (0)
</script>
Barra de ferramentas:
<script language="javascript">
window.open("pagina2.html", "Pagina2" ,"toolbar = yes");
//Permite as opções: yes (1) ou no (0)
</script>
Barra de título:
<script language="javascript">
window.open("pagina2.html", "Pagina2" ,"titlebar = yes");
//Permite as opções: yes (1) ou no (0)
</script>
Barra de endereços:
<script language="javascript">
window.open("pagina2.html", "Pagina2" ,"location = yes");
//Permite as opções: yes (1) ou no (0)
</script>
Tela cheia:
<script language="javascript">
window.open("pagina2.html", "Pagina2" ,"fullscreen = yes");
//Permite as opções: yes (1) ou no (0)
</script>
Barra de diretórios:
<script language="javascript">
window.open("pagina2.html", "Pagina2" ,"directories = yes");
//Permite as opções: yes (1) ou no (0)
</script>
 */
/*Programador: Luciano Ulhoa*/
function AbrirJanela(pagina, nome, w, h, scroll, status, menubar, toolbar, titlebar, location, fullscreen, directories, maximizar) {
    LeftPosition = (screen.width) ? (screen.width-w)/2 : 0;
    TopPosition = (screen.height) ? (screen.height-h)/2 : 0;

    (h == 0 || h == 'no') ? h = "" : h = 'height=' + h;
    (w == 0 || w == 'no') ? w = "" : w = 'width=' + w;
    (scroll == 0 || scroll == 'no') ? scroll = "" : scroll = 'scrollbars=' + scroll;
    (status == 0 || status == 'no') ? status = "" : status = "status =" + status;
    (menubar == 0 || menubar == 'no') ? menubar = "" : menubar = "menubar=" + menubar;
    (toolbar == 0 || toolbar == 'no') ? toolbar = "" : toolbar = "toolbar=" + toolbar;
    (titlebar == 0 || titlebar == 'no') ? titlebar = "" : titlebar = "titlebar=" + titlebar;
    (location == 0 || location == 'no') ? location = "" : location = "location=" + location;
    (fullscreen == 0 || fullscreen == 'no') ? fullscreen = "" : fullscreen = "fullscreen=" + fullscreen;
    (directories == 0 || directories == 'no') ? directories = "" : directories = "directories=" + directories;
    (maximizar == 0 || maximizar == 'no') ? maximizar = "" : maximizar = "resizable=" + maximizar;

    settings = h + ", " + w + ', top=' + TopPosition + ', left=' + LeftPosition + ', ' + scroll + ", " +
    status + "," + menubar + "," + toolbar + ", " + titlebar + ", " + location + "," + directories +  ", " +
    fullscreen + ", " + maximizar;

    win = window.open(decodeURIComponent(pagina), nome, settings);
}

function AbrirPaginaMenu(noPagina) {
    $('FormAbrirPaginaMenu').action = noPagina;
    $('FormAbrirPaginaMenu').method = "POST"
    $('FormAbrirPaginaMenu').submit();
    return;
}

function AbrirFecharMenu(idMenu, imgSrc) {

    if ($(idMenu).style.display == "") {
        $(imgSrc).src = "/img/ico_setabaixo.gif";
        $(idMenu).style.display = "none";
    } else {
        $(imgSrc).src = "/img/ico_setacima.gif";
        $(idMenu).style.display = "";
    }
    return;
}

function MontarAba(idAba, qtdAba) {

	for (var i = 1; i <= qtdAba; i++) {
		var pos;
		var id = 'Aba'+i;
		if (id == idAba) {
			AtivarAba(idAba);
			pos = i;
		} else {
			InativarAba(id);
		}
	}

	if ($('btProximo') && $('btAnterior') && $('btGravar')) {
		if (pos == 1) {
			$('btGravar').style.display = 'none';
			$('btAnterior').style.display = 'none';
			$('btProximo').style.display = '';

			$('btProximo').setAttribute("type","onclick");
			$('btProximo').onclick = function () {
				MontarAba('Aba2',qtdAba);
			};
			//msg Para os dados serem gravados, clique no botão GRAVAR na última aba
			if ($("TDMsgGravar")) {
				$("TDMsgGravar").style.display = '';
			}
		} else if (pos == qtdAba) {
			$('btGravar').style.display = '';
			$('btAnterior').style.display = '';
			$('btProximo').style.display = 'none';

			//msg Para os dados serem gravados, clique no botão GRAVAR na última aba
			if ($("TDMsgGravar")) {
				$("TDMsgGravar").style.display = 'none';
			}
			$('btAnterior').setAttribute("type","onclick");
			$('btAnterior').onclick = function () {
				var idant = 'Aba'+(pos-1);
				MontarAba(idant,qtdAba);
			};
			ValidarPerfil();
		} else {
			$('btGravar').style.display = 'none';
			$('btAnterior').style.display = '';
			$('btProximo').style.display = '';

			$('btAnterior').setAttribute("type","onclick");
			$('btAnterior').onclick = function () {
				var idant = 'Aba'+(pos-1);
				MontarAba(idant,qtdAba);

			};

			$('btProximo').setAttribute("type","onclick");
			$('btProximo').onclick = function () {
				var idprox = 'Aba'+(pos+1);
				MontarAba(idprox,qtdAba);
			};
			//msg Para os dados serem gravados, clique no botão GRAVAR na última aba
			if($("TDMsgGravar")){
				$("TDMsgGravar").style.display = '';
			}
		}
	}
	return;
}

function AtivarAba(idAba) {
	var id = 'Conteudo'+idAba;
	$(idAba).className  = "abaativa";
	$(id).style.display = "";
	return;
}

function InativarAba(idAba) {
	var id = 'Conteudo'+idAba;
	$(idAba).className  = "abainativa";
	$(id).style.display = "none";
	return;
}

/**
MostrarOcultar(opcao,campo)
onclick,onchange
opcao = 1 => mostrar
opcao = 0 => ocultar
campo => Nome do campo que sofrerá a ação.
campoFocus => Nome do campo que receberá o foco.
*/
function MostrarOcultar(opcao, campo, campoFocus) {
	if (opcao == 1) {
		campo.style.display="";
		//if(campoFocus)campoFocus.focus();
	} else if (opcao == 0) {
		campo.style.display="none";
	}
}

//CalculaIdade(’13/09/1987',’19/11/2008');
function CalculaIdade(dataNascimento, dataHoje) {

	x = dataNascimento.split("/");
	h = dataHoje.split("/");

	anosProvisorio = h[2] - x[2];

	if (parseFloat(h[1]) < parseFloat(x[1])) {
		anosProvisorio -= 1;
	} else if (parseFloat(h[1]) == parseFloat(x[1])) {
		if (parseFloat(h[0]) < parseFloat(x[0])) {
			anosProvisorio -= 1;
		}
	}

	return anosProvisorio;
}

/**
- Descrição: Soma dois valores
- Evento: Não
- Dependência: sim
- Exibe alerta : não

@param string valor1
-Campo destinado a receber o primeiro valor a ser somado

@param string valor2
-Campo destinado a receber o segundo valor a ser somado

@return numero com duas casas decimais
**/
function SomarValor(valor1, valor2) {
	if (valor1 == "")
		valor1 = 0;
	if (valor2 == "")
		valor2 = 0;

	var valorSoma = new Number();
	valor1 = String(valor1).replace(/\./g, '').replace(',', '.');
	valor2 = String(valor2).replace(/\./g, '').replace(',', '.');
	valorSoma = parseFloat(valor1) + parseFloat(valor2);

	return FormataMoedaBlur(valorSoma.toFixed(2));
}

//Tem que receber o parametro no formato float, com ponto separando as casas decimais
//exemplo: formataMoedaBlur(148456.98)
function FormataMoedaBlur(valorCampo) {

    var vr = String(valorCampo);
    var pos = vr.indexOf('.');
    var tam = vr.length;

    //Tratamento para duas casas decimais
    if (pos != -1) {
        //Completa  as duas casas decimais
        if (vr.substr(pos+1,tam).length < 2) {
            vr = vr.substr(0,tam)+'0';
            //Mata Dizimas
        } else {
            vr = vr.substr(0,pos)+vr.substr(pos,3);
        }
    } else {
        vr = vr.substr(0,tam)+'.00';
    }
	vr = String(vr).replace(/\D+/g, '');

    var tam = vr.length;

    if ( (tam > 2) && (tam <= 5) )
        vr = vr.substr( 0, tam - 2 ) + ',' + vr.substr( tam - 2, tam );
    if ( (tam >= 6) && (tam <= 8) )
        vr = vr.substr( 0, tam - 5 ) + '.' + vr.substr( tam - 5, 3 ) + ',' + vr.substr( tam - 2, tam ) ;
    if ( (tam >= 9) && (tam <= 11) )
        vr = vr.substr( 0, tam - 8 ) + '.' + vr.substr( tam - 8, 3 ) + '.' + vr.substr( tam - 5, 3 ) + ',' + vr.substr( tam - 2, tam ) ;
    if ( (tam >= 12) && (tam <= 14) )
        vr = vr.substr( 0, tam - 11 ) + '.' + vr.substr( tam - 11, 3 ) + '.' + vr.substr( tam - 8, 3 ) + '.' + vr.substr( tam - 5, 3 ) + ',' + vr.substr( tam - 2, tam ) ;
    if ( (tam >= 15) && (tam <= 17) )
        vr = vr.substr( 0, tam - 14 ) + '.' + vr.substr( tam - 14, 3 ) + '.' + vr.substr( tam - 11, 3 ) + '.' + vr.substr( tam - 8, 3 ) + '.' + vr.substr( tam - 5, 3 ) + ',' + vr.substr( tam - 2, tam ) ;

    return vr;
}

function Trim(s) { //Remove os espaços em branco
	var trimmed  = "";
	var leading  = true;
	var trailing = true;

	 // strip leading spaces
	for (var i = 0; i < s.length; i++) {
		var c = s.charAt(i);
		if (c == ' ') {
			if (leading == false) {
				trimmed = trimmed+c;
			}
		} else {
		leading=false;
		trimmed=trimmed+c;
		}
	}

	// strip trailing spaces
	for (var i = trimmed.length-1; i>0; i--) {
		var c = trimmed.charAt(i);
		if (c != " ") {
			return trimmed;
		} else {
			trimmed = trimmed.substr(0, trimmed.length-1);
		}
	}

	 return trimmed;
}

/**
 * função que verifica se a primeira data é maior que a segunda
Exemplo: onblur="VerificaData($('DTInicioVigencia'),'Data de Assinatura',$('DTTerminoVigencia'),'Data Final de Vigência');"
 */
function VerificaData(campo1, nomeCampo1, campo2, nomeCampo2) {

    var dataValida = true;
    var valorini = campo1.value;
    var valorfim = campo2.value;
    var dia, mes, ano;

    var DT1 = new Date(parseFloat(valorini.substr(6,4)),parseFloat(valorini.substr(3,2))-1,valorini.substr(0,2),00,00,000);
    var DT2 = new Date(parseFloat(valorfim.substr(6,4)),parseFloat(valorfim.substr(3,2))-1,valorfim.substr(0,2),00,00,000);

    if (DT1 !="" && DT2 != "") {
        if (DT1.getTime() > DT2.getTime()) {
			MontarCaixaMensagem("Validação Data","exclamacao","A data do campo \""+nomeCampo1+"\" não pode ser maior que a data do campo \""+nomeCampo2+"\".","alerta","LimparCampo($('"+campo2.id+"'))","");
            //campo1.value = '';
            //campo1.focus();
            dataValida = false;
        }
    }

    return dataValida;
}

/**************************************************
* FUNÇÕES PARA ARRASTER OBJETOS NA PAGINA PASSSANDO O ID
 * 09.25.2001
 * www.youngpup.net
 * Script featured on Dynamic Drive (http://www.dynamicdrive.com) 12.08.2005
 **************************************************
 * 10.28.2001 - fixed minor bug where events
 * sometimes fired off the handle, not the root.
 **************************************************/
var Drag = {

	obj : null,

	init : function(o, oRoot, minX, maxX, minY, maxY, bSwapHorzRef, bSwapVertRef, fXMapper, fYMapper)
	{
		o.onmousedown	= Drag.start;

		o.hmode			= bSwapHorzRef ? false : true ;
		o.vmode			= bSwapVertRef ? false : true ;

		o.root = oRoot && oRoot != null ? oRoot : o ;

		if (o.hmode  && isNaN(parseInt(o.root.style.left  ))) o.root.style.left   = "0px";
		if (o.vmode  && isNaN(parseInt(o.root.style.top   ))) o.root.style.top    = "0px";
		if (!o.hmode && isNaN(parseInt(o.root.style.right ))) o.root.style.right  = "0px";
		if (!o.vmode && isNaN(parseInt(o.root.style.bottom))) o.root.style.bottom = "0px";

		o.minX	= typeof minX != 'undefined' ? minX : null;
		o.minY	= typeof minY != 'undefined' ? minY : null;
		o.maxX	= typeof maxX != 'undefined' ? maxX : null;
		o.maxY	= typeof maxY != 'undefined' ? maxY : null;

		o.xMapper = fXMapper ? fXMapper : null;
		o.yMapper = fYMapper ? fYMapper : null;

		o.root.onDragStart	= new Function();
		o.root.onDragEnd	= new Function();
		o.root.onDrag		= new Function();
	},

	start : function(e)
	{
		var o = Drag.obj = this;
		e = Drag.fixE(e);
		var y = parseInt(o.vmode ? o.root.style.top  : o.root.style.bottom);
		var x = parseInt(o.hmode ? o.root.style.left : o.root.style.right );
		o.root.onDragStart(x, y);

		o.lastMouseX	= e.clientX;
		o.lastMouseY	= e.clientY;

		if (o.hmode) {
			if (o.minX != null)	o.minMouseX	= e.clientX - x + o.minX;
			if (o.maxX != null)	o.maxMouseX	= o.minMouseX + o.maxX - o.minX;
		} else {
			if (o.minX != null) o.maxMouseX = -o.minX + e.clientX + x;
			if (o.maxX != null) o.minMouseX = -o.maxX + e.clientX + x;
		}

		if (o.vmode) {
			if (o.minY != null)	o.minMouseY	= e.clientY - y + o.minY;
			if (o.maxY != null)	o.maxMouseY	= o.minMouseY + o.maxY - o.minY;
		} else {
			if (o.minY != null) o.maxMouseY = -o.minY + e.clientY + y;
			if (o.maxY != null) o.minMouseY = -o.maxY + e.clientY + y;
		}

		document.onmousemove	= Drag.drag;
		document.onmouseup		= Drag.end;

		return false;
	},

	drag : function(e)
	{
		e = Drag.fixE(e);
		var o = Drag.obj;

		var ey	= e.clientY;
		var ex	= e.clientX;
		var y = parseInt(o.vmode ? o.root.style.top  : o.root.style.bottom);
		var x = parseInt(o.hmode ? o.root.style.left : o.root.style.right );
		var nx, ny;

		if (o.minX != null) ex = o.hmode ? Math.max(ex, o.minMouseX) : Math.min(ex, o.maxMouseX);
		if (o.maxX != null) ex = o.hmode ? Math.min(ex, o.maxMouseX) : Math.max(ex, o.minMouseX);
		if (o.minY != null) ey = o.vmode ? Math.max(ey, o.minMouseY) : Math.min(ey, o.maxMouseY);
		if (o.maxY != null) ey = o.vmode ? Math.min(ey, o.maxMouseY) : Math.max(ey, o.minMouseY);

		nx = x + ((ex - o.lastMouseX) * (o.hmode ? 1 : -1));
		ny = y + ((ey - o.lastMouseY) * (o.vmode ? 1 : -1));

		if (o.xMapper)		nx = o.xMapper(y)
		else if (o.yMapper)	ny = o.yMapper(x)

		Drag.obj.root.style[o.hmode ? "left" : "right"] = nx + "px";
		Drag.obj.root.style[o.vmode ? "top" : "bottom"] = ny + "px";
		Drag.obj.lastMouseX	= ex;
		Drag.obj.lastMouseY	= ey;

		Drag.obj.root.onDrag(nx, ny);
		return false;
	},

	end : function()
	{
		document.onmousemove = null;
		document.onmouseup   = null;
		Drag.obj.root.onDragEnd(parseInt(Drag.obj.root.style[Drag.obj.hmode ? "left" : "right"]),
								parseInt(Drag.obj.root.style[Drag.obj.vmode ? "top" : "bottom"]));
		Drag.obj = null;
	},

	fixE : function(e)
	{
		if (typeof e == 'undefined') e = window.event;
		if (typeof e.layerX == 'undefined') e.layerX = e.offsetX;
		if (typeof e.layerY == 'undefined') e.layerY = e.offsetY;
		return e;
	}
};
/**
- Descrição: valida o perfil pra mostrar ou não o botão gravar
- Evento: Não
- Dependência: Não
- Exibe alerta : não

@return void
**/
function ValidarPerfil() {
	//PERMISSAO PARA ALTERAÇÃO
	if ($("STAlterar").value == "0") {
		if ($("btGravar"))
			$("btGravar").style.display = "none";
	} else {
		if ($("btGravar"))
			$("btGravar").style.display = "";
	}
	if ($("STInserir").value == "0") {
		if ($("TRCadastrar"))
			$("TRCadastrar").style.display = "none";
	} else {
		if($("TRCadastrar"))
			$("TRCadastrar").style.display = "";
	}
}

function MostrarBloqueioPagina(zindex, Div) {

	if (navigator.appVersion.indexOf("MSIE 6.0") != -1) {
		$('divBloqueioPaginaFrame').style.zIndex = zindex;
		$('divBloqueioPaginaFrame').style.display = '';
	} else {
		$('divBloqueioPagina').style.zIndex = zindex;
		$('divBloqueioPagina').style.display = '';
	}

	if (navigator.appVersion.indexOf("MSIE 6.0") != -1) {
		$('divBloqueioPaginaFrame').style.width = document.body.clientWidth + document.body.scrollLeft;
		$('divBloqueioPaginaFrame').style.height = document.body.clientHeight + document.body.scrollTop;
	} else {
		$('divBloqueioPagina').style.width = document.body.clientWidth + document.body.scrollLeft;
		$('divBloqueioPagina').style.height = document.body.clientHeight + document.body.scrollTop;
	}
	window.onresize = function() {
        CentralizarDivPagina(Div);
		if (navigator.appVersion.indexOf("MSIE 6.0") != -1) {
			$('divBloqueioPaginaFrame').style.width = document.body.clientWidth + document.body.scrollLeft;
			$('divBloqueioPaginaFrame').style.height = document.body.clientHeight + document.body.scrollTop;
		} else {
			$('divBloqueioPagina').style.width = document.body.clientWidth + document.body.scrollLeft;
			$('divBloqueioPagina').style.height = document.body.clientHeight + document.body.scrollTop;
		}
    };

    window.onscroll = function() {
        if (navigator.appVersion.indexOf("MSIE 6.0") != -1) {
			$('divBloqueioPaginaFrame').style.width = document.body.clientWidth + document.body.scrollLeft;
			$('divBloqueioPaginaFrame').style.height = document.body.clientHeight + document.body.scrollTop;
		} else {
			$('divBloqueioPagina').style.width = document.body.clientWidth + document.body.scrollLeft;
			$('divBloqueioPagina').style.height = document.body.clientHeight + document.body.scrollTop;
		}
    };
	return;
}

function OcultarBloqueioPagina(){

	if (navigator.appVersion.indexOf("MSIE 6.0") != -1) {
		$('divBloqueioPaginaFrame').style.zIndex = 1;
		$('divBloqueioPaginaFrame').style.display = 'none';
	} else {
		$('divBloqueioPagina').style.zIndex = 1;
		$('divBloqueioPagina').style.display = 'none';
	}

	return;
}

function CalcularDiaMes(mes, ano) {
    if ((mes < 8 && mes % 2 == 1) || (mes > 7 && mes % 2 == 0)) return 31;
    if (mes != 2) return 30;
    if (ano % 4 == 0) return 29;
    return 28;
}

function Left(str, n) {
	if (n <= 0)
	    return "";
	else if (n > String(str).length)
	    return str;
	else
	    return String(str).substring(0,n);
}

function Right(str, n) {
    if (n <= 0)
       return "";
    else if (n > String(str).length)
       return str;
    else {
       var iLen = String(str).length;
       return String(str).substring(iLen, iLen - n);
    }
}

//Função para validar os campos na pesquisa.
function ValidarCampos(frm, qtdfrm, nomeModulo, acao) {
	var elementosFormulario = frm.elements;
	var qtdElementos = elementosFormulario.length;
	var count = 0;
	for (var i = 0; i < qtdElementos; i++) {
		//Pega o elemento
		elemento = elementosFormulario[i];
		if (elemento.getAttribute('validar') == "true") {
			if (elemento.value == "") {
				count++;
			}
		}
	}

	if (count == qtdfrm) {
		MontarCaixaMensagem(nomeModulo,"exclamacao","Favor preencher pelo menos um dos campos apresentados para pesquisa.","alerta",acao,"");
		return false;
	}

	return true;
}

/*Função para adicionar dias, meses ou anos a uma determinada data*/
/*Programador: Luciano Ulhoa*/
function SomarData(tipoSoma, soma, dataInf) {
    var data = dataInf.split('/');
    dia = parseFloat(data[0]);
    mes = parseFloat(data[1]);
    ano = parseFloat(data[2]);

    if (tipoSoma == "anos") {
        ano = ano + soma;
        if (dia > CalcularDiaMes(mes, ano)) {
            dia = CalcularDiaMes(mes, ano);
        }
    } else if (tipoSoma == "meses") {
        if (soma > 12 || soma == 12) {
            ano = ano + 1
            mes = (String(mes).length == 1)? "0"+mes: mes;
            dia = (String(dia).length == 1)? "0"+dia:dia;

            data = dia + "/" + mes + "/" + ano;
            SomarData("meses", soma-12, data);
            return data;
        } else {
            mes = mes + soma;
            if (mes > 12) {
                mes -= 12;
                ano++;
            }
        }

        if (dia > CalcularDiaMes(mes, ano)) {
            dia = CalcularDiaMes(mes, ano);
        }
    } else if (tipoSoma == "dias") {
        diafuturo = dia + soma;
        while (diafuturo > CalcularDiaMes(mes, ano)) {
            diafuturo -= CalcularDiaMes(mes, ano);
            mes++;
            if (mes > 12) {
                mes = 1;
                ano++;
            }
        }
        dia = diafuturo;
    } else {
        alert("Favor informar o tipo : \nSomarData(\"anos\", soma, data);\nSomarData(\"meses\", soma, data);\nou SomarData(\"dias\", soma, data);");
        return false;
    }

    mes = (String(mes).length == 1)? "0"+mes: mes;
    dia = (String(dia).length == 1)? "0"+dia:dia;

    data = dia + "/" + mes + "/" + ano;

    return data;
}

function FormatarDataPadrao(dataAnt){

    var data = dataAnt.split('/');
    dia = data[0];
    mes = data[1];
    ano = data[2];

	mes = (String(mes).length == 1)? "0"+mes: mes;
    dia = (String(dia).length == 1)? "0"+dia:dia;
    datasaida = dia + "/" + mes + "/" + ano;

	return datasaida;
}

function EnviarForm(form,destino){

	var formulario = document.getElementById(form);
	formulario.action = destino;
	formulario.method = 'post';
	formulario.submit();
	return;
}

function AnoBissexto(ano){
    return (ano%4 == 0);
}

/*
função para remover um option da combo
Ex: RemoverOpcaoCombo("IDSubmodalidadeConvenente", 2);
*/
function RemoverOpcaoCombo(IDCombo, value){

	$(IDCombo).remove(value);

}

/*declara função pegando parametro com nome do campo a ser deletado.*/
function deletar(form, campo) {
    var Node1 = document.getElementById(form);
    var len = Node1.childNodes.length
    for (var i = 0; i < len; i++) {
        Node1.removeChild(Node1.childNodes[0]);
    }
    //Se o browser usado for o IE precisa criar novamente o textarea principal
    //que tem o xml total
    if (navigator.appName.indexOf('Microsoft') != -1) {
        var objCampo = document.createElement("textarea");
        objCampo.setAttribute('id', campo);
        objCampo.setAttribute('name', campo);
        objCampo.setAttribute('value', "");
        document.getElementById(form).appendChild(objCampo);
        objCampo.style.display = "none";
    }
}

/*Função que divide as variáveis de formulários HTML em várias variáveis formulário antes de
submeter o formulário. (Divide a variável "xml" qdo ela excede o tamanho máximo permitido) */
function quebraDadosTextArea(form, campo, xml, limite) {
    var f = document.getElementById(campo);
    //Seta o tamanho limite do campo
	if (limite <= 50000) {
		var FormLimit = limite;
	} else {
		var FormLimit = 20000;
	}
    //Pega o conteúdo do campo
    var TempVar = new String;
    TempVar = xml.xml;
    //Se o tamanho do objeto for maior que o limite quebra
    //dentro de varios campos com o mesmo nome
    if (TempVar.length > FormLimit) {
        f.value = TempVar.substr(0, FormLimit);
        TempVar = TempVar.substr(FormLimit);
        while (TempVar.length > 0) {
            var objCampo = document.createElement("textarea");
            objCampo.setAttribute('id', f.name);
            objCampo.setAttribute('name', f.name);
            objCampo.value = TempVar.substr(0, FormLimit);
            objCampo.style.display = "none";
            document.getElementById(form).appendChild(objCampo);
            TempVar = TempVar.substr(FormLimit);
            //i++;
        }
    }
}