jQuery(document).ready(function () {
    var html = "";
    html += "<div id=\"overlay\">Aguarde...</div>";
    html += "<div id=\"alert\" onclick=\"hidealert()\"></div>";
    jQuery("body").append(html);

    css();
});

/**
 * CSS do alert.
 * M&eacute;todo deve ser startado autom&aacute;ticamente.
 */
function css() {
    var css = '';
    css += '<style type="text/css">';
    css += '#alert{';
    css += 'position: fixed;top: 0;width: 100%;height: auto;min-height: 50px;';
    css += 'padding: 0;margin: 0;margin: auto;text-align: center;z-index: 998;';
    css += 'background-color: #006600;color: #FFFFFF;display: none;font-weight: bold;';
    css += 'font-size: 14px;cursor: pointer;}';
    css += '#overlay {';
    css += 'position: fixed;top: 0;left: 0;background-color: #000000;filter:alpha(opacity=85);';
    css += '-moz-opacity: .85;opacity: .85;width: 100%;height:100%;margin: 0;padding: 0;';
    css += 'background-image: url(../images/loadingAnimation.gif);background-position: center;';
    css += 'background-repeat: no-repeat;display: none;z-index: 10;}';
    css += '</style>';
    jQuery("body").append(css);
}

/** Fun&ccedil;&atilde;o necessita de callback diretamente na p&aacute;gina.
 *  Caso contr&aacute;rio n&atilde;o funciona
 */
function closeWindow(){}

function requestConfirmacao(msg){
    jQuery("#txtConfirmacao").html(msg);
    jQuery("#confirm").fadeIn(400);
}

function post(URL, PARAMS) {
    var temp=document.createElement("form");
    temp.action=URL;
    temp.method="POST";
    temp.style.display="none";
    for(var x in PARAMS) {
        var opt=document.createElement("textarea");
        opt.name=x;
        opt.value=PARAMS[x];
        temp.appendChild(opt);
    }
    document.body.appendChild(temp);
    temp.submit();
    return temp;
}


/**
 *  Fun&ccedil;&atilde;o para limpar comandos HTML 
 *  @return String Conteudo sem tags HTML
 */
function stripHTML(HTML){
    var re = /(<([^>]+)>)/gi;    
    return HTML.replace(re, "");
}


/**
 *  Fun&ccedil;&atilde;o para pegar o tamanho da janela utilizada do navegador.
 **/
function getWidth()
{
    return window.innerWidth ? window.innerWidth :
    document.documentElement ? document.documentElement.clientWidth :
    document.body ? document.body.clientWidth :
    window.screen.width;
}

/**
 *  Fun&ccedil;&atilde;o para pegar a altura da �rea utilizada pelo browser
 **/
function getHeight()
{
    return window.innerHeight ? window.innerHeight :
    document.documentElement ? document.documentElement.clientHeight :
    document.body ? document.body.clientHeight :
    window.screen.height;
}


/**
 * M�todo respons�vel por pesquisar endere�o a partir do CEP informado
 * @paramn objCep id do Campo cep que deseja pesquisar
 * @paramn objLoading campo que carregar com o ajax
 * @return String Cep encontrado
 * @exception alerta em caso de cep n�o encontrado.
 **/
function pesquisarCep(objCep, load)
{    
    jQuery("#"+load).hide();
    var cep = jQuery("#"+objCep).val();
    var parametros = "action=service&cep="+cep;

    jQuery.ajax({
        type : "POST",
        url: "../br.com.quicksite.nucleo/service.php",
        data: parametros,
        dataType: "xml",
        beforeSend: function(){
            jQuery("#"+load).show();
        },
        success: function(xml){
            cepService(xml);
        },
        error: function(){
            alert("Erro ao tentar processar a informa��o.");
        },
        complete: function(){
            jQuery('#'+load).hide();
        }
    });
}

/**
 *   Fun&ccedil;&atilde;o para transformar o XML em String e em seguida preencher os campos.
 **/
function cepService(xml) {

    var erros = 1;
    jQuery(xml).find("service").each(function () {
        var tipo_logradouro = jQuery(this).find("tipo_logradouro").text();
        var logradouro = jQuery(this).find("logradouro").text();
        var bairro = jQuery(this).find("bairro").text();
        var cidade = jQuery(this).find("cidade").text();
        var uf = jQuery(this).find("uf").text();

        jQuery("#endereco").val(tipo_logradouro + " " + logradouro);
        jQuery("#bairro").val(bairro);
        jQuery("#cidade").val(cidade);
        jQuery("#estado").val(uf);
        jQuery("#uf").val(uf);

        jQuery("#display_estado").val(uf);
        jQuery("#display_uf").val(uf);

        erros = 0;
    });

    // em caso de erro apaga os campos
    if (erros==1) {
        montarAlerta('Ocorreu uma erro no processamento dos dados.\nO cep informado n&atilde;o pode ser encontrado ou &eacute; de utiliza&ccedil;&atilde;o compartilhada.', false);
        jQuery("#endereco").val("");
        jQuery("#bairro").val("");
        jQuery("#cidade").val("");
        jQuery("#estado").val("");
        jQuery("#uf").val("");

        jQuery("#display_estado").val("");
        jQuery("#display_uf").val("");
    }
}

/**
 *  Esconder o alert
 **/
function hidealert(){
    jQuery("#alert").fadeOut(300);    
}

function popupWindow(url, janela, largura, altura)
{
    var top = (screen.height-(altura + 110))/2;
    var left = (screen.width-largura)/2;

    var parametros = 'width='+ largura +',height='+ altura +',scrollbars=1,resizable=1,left=' + left  + ',screenX=' + left + ',top=' + top  + ',screenY=' + top;
    window.open(url, janela, parametros).focus();
}

function windowLocation(url)
{
    window.location = url;
}

function fechaLoading(obj)
{
    jQuery("#"+obj).hide();
}

function abreLoading(obj)
{
    jQuery("#"+obj).show();
}


function verificaSenha(senha1, senha2){
    if (senha1 != senha2)
        return false;
    else
        return true;
}

/**
 *  Fun&ccedil;&atilde;o gera comando TRIM
 *  @return String sem espa�o antes e depois do arquivo.
 */
String.prototype.trim = function()
{
    return this.replace(/^\s*/, "").replace(/\s*$/, "");
}

/**
 *  Fun&ccedil;&atilde;o verifica se o campo est� vazio ou igual a zero.
 *  @return
 *  boolean true em caso de String vazio.
 *  false em caso de existir String
 **/
function empty(valor)
{
    return ( ( valor.trim=="") || (valor==0) ) ? true : false;
}

/**
 *  Verifica se o valor � maior que zero.
 *  @paramn Objeto
 *  @return boolean
 *  true caso valor inclu�do for maior que zero.
 *  false caso valor inclu�do for menor ou igual a zero.
 */
function maiorQueZero(obj)
{
    var valor = obj.value.replace(",", ".");
    valor = parseFloat(valor);
    var retorno = true;
    if (this.empty(valor)){
        retorno = false;
    }
    return retorno;
}

/**
 *  Fun&ccedil;&atilde;o remove carcteres que n�o s�o n�mericos.
 *  @return texto com apenas n&uacute;meros
 *  @example onkeyup="onlyNumber(this)"
 **/
function onlyNumber(obj)
{    
    obj.value = obj.value.replace(/\D/g,"");
}

/**
 *  Fun&ccedil;&atilde;o remove caracteres diferente de letras.
 *  @return texto com apenas letras
 *  @example onkeyUp="onlyAlpha(this)";
 */
function onlyAlpha(obj) {    
    obj.value = obj.value.replace(/[^a-zA-Z ]/g,"");
}

/**
 *  Fun&ccedil;&atilde;o remove caracteres diferente de letras.
 *  @return texto com apenas letras
 *  @example onkeyUp="onlyAlpha(this)";
 */
function onlyAlphaNumeric(obj) {
    obj.value = obj.value.replace(/[^a-zA-Z0-9 ]/g,"");
}

/**
 *  Fun&ccedil;&atilde;o inclui zero ser valor for igual a nulo
 **/
function setZeroIfNull(obj)
{    
    if (this.empty(obj.value)) obj.value = 0;
}

/**
 *  Fun&ccedil;&atilde;o para setar null set o valor do objeto for igual a zero
 **/
function setNullIfZero(valor)
{
    return (valor==0) ? "" :valor;
}

function setOneIfNull(obj)
{
    if (this.empty(obj.value)) obj.value = 1;
}

/**
 *  Fun&ccedil;&atilde;o arredonda float e mantem as casas decimais.
 *  @paramn Float valor
 *  @paramn Integer casas
 **/
function arredondar(valor, casas)
{
    var total = parseFloat(valor);
    total = Math.round(total*Math.pow(10,casas))/Math.pow(10,casas);
    return total.toFixed(casas);
}

/**
 *  Fun&ccedil;&atilde;o verifica se data é válida.
 *  @paramn dtd data no formato pt-BR
 *  @return void
 */
function validaData(dtd, objPrint)
{
    var msg = "";
    if ( (dtd!='') && (dtd!='__/__/____') ){
        var dts = new Date();
        var sdia = dts.getDate();
        var smes = dts.getMonth()+1;
        var sano = dts.getFullYear();
        var dia = dtd.substring(0,2);
        var mes = dtd.substring(3,5);
        var ano = dtd.substring(6,10);       

        if (dia<=31 && dia>0){
            if (mes<=12 && mes>0) {
                if (ano<=sano){
                    if((mes==4 && dia > 30) || (mes==6 && dia > 30) || (mes==9 && dia > 30) || (mes==11 && dia > 30)) {
                        msg = "O m&ecirc;s digitado cont&eacute;m no m&aacute;ximo 30 dias.";
                    }
                    if(ano%4!=0 && mes==2 && dia>28) {
                        msg = "O m&ecirc;s digitado cont&eacute;m no m&aacute;ximo 28 dias.";
                    }
                    if(ano%4==0 && mes==2 && dia>29) {
                        msg = "O m&ecirc;s digitado cont&eacute;m no m&aacute;ximo 29 dias.";
                    }
                }
            }else {
                msg = "Data inv&aacute;lida";
            }
        }else {
            msg = "Data inv&aacute;lida";
        }
    }
    
    if (objPrint==null){
        return msg;
    }else{
        jQuery("#"+objPrint).html(msg);
        return msg;
    }
}

function testarMesAno(dtd, objPrint)
{
    var data = dtd.split("/");

    if ( (parseInt(data[0]) > 12) || (parseInt(data[0] < 1)) ){
        jQuery("#"+objPrint).html("Favor preencher o campo com um m&ecirc;s v&aacute;lido");
        return false;
    }
    return true;
}

/**
 *  Fun&ccedil;&atilde;o para verificar datas, saber se a dtInicial &eacute; menor que a dtFinal.<br />
 *  Retorna false caso a data1 seja maior que a data2 ou true caso contr&aacute;rio.
 *  @param dtInicial String no formato data (dd/mm/YYYY)
 *  @param dtFinal String no formato data (dd/mm/YYYY)
 *  @param objPrint String nome compo para exibir o erro.
 *  @return boolean
 **/
function verificaDatas(dtInicial, dtFinal, objPrint){

    var dtini = dtInicial;
    var dtfim = dtFinal;

    if ((dtini == '') && (dtfim == '')) {
        jQuery("#"+objPrint).html('Preencha os per&iacute;odos.');
        campos.inicial.focus();
        return false;
    }

    datInicio = new Date(dtini.substring(6,10),
        dtini.substring(3,5),
        dtini.substring(0,2));
    datInicio.setMonth(datInicio.getMonth() - 1);


    datFim = new Date(dtfim.substring(6,10),
        dtfim.substring(3,5),
        dtfim.substring(0,2));
    datFim.setMonth(datFim.getMonth() - 1);

    if(datInicio <= datFim){
        return true;
    } else {
        jQuery("#"+objPrint).html('ATEN&Ccedil;&Atilde;O: A data inicial deve ser menor que a data final.');
        return false;
    }
}

//VALIDA O CAMPO DATA PASSANDO O FOCO
function verificaFoco(objeto,foco) {
    if (objeto.value.length == 10) {
        foco.focus();
        return false;
    }
    return null;
}

// colocar no evento onKeyUp passando o objeto como parametro
function FormatMesAno(val)
{
    var strPass = val.value;
    var mikExp = /[0123456789]/;

    for(i=0; i<strPass.length; i++){
        // charAt -> retorna o caractere posicionado no �ndice especificado
        var lchar = val.value.charAt(i);
        var nchar = val.value.charAt(i+1);

        if(i==0){
            // search -> retorna um valor inteiro, indicando a posi��o do inicio da primeira
            // ocorr�ncia de expReg dentro de instStr. Se nenhuma ocorrencia for encontrada o m�todo retornara -1
            // instStr.search(expReg);
            if ((lchar.search(mikExp) != 0) || (lchar>3)){
                val.value = "";
            }

        }else if(i==1){

            if(lchar.search(mikExp) != 0){
                // substring(indice1,indice2)
                // indice1, indice2 -> ser� usado para delimitar a string
                var tst1 = val.value.substring(0,(i));
                val.value = tst1;
                continue;
            }

            if ((nchar != '/') && (nchar != '')){
                var tst1 = val.value.substring(0, (i)+1);

                if(nchar.search(mikExp) != 0)
                    var tst2 = val.value.substring(i+2, strPass.length);
                else
                    var tst2 = val.value.substring(i+1, strPass.length);

                val.value = tst1 + '/' + tst2;
            }

        }
        else if(i==4){

            if(lchar.search(mikExp) != 0){
                var tst1 = val.value.substring(0, (i));
                val.value = tst1;
                continue;
            }

            if    ((nchar != '/') && (nchar != '')){
                var tst1 = val.value.substring(0, (i)+1);

                if(nchar.search(mikExp) != 0)
                    var tst2 = val.value.substring(i+2, strPass.length);
                else
                    var tst2 = val.value.substring(i+1, strPass.length);

                val.value = tst1 + '/' + tst2;
            }
        }

        if(i>=6){
            if(lchar.search(mikExp) != 0) {
                var tst1 = val.value.substring(0, (i));
                val.value = tst1;
            }
        }
    }

    if(strPass.length>10)
        val.value = val.value.substring(0, 10);
    return true;
}


/**
 * Fun&ccedil;&atilde;o para limitar o n&uacute;mero de palavras de um textarea.
 * @paramn obj textaraa que necessita limitar os caracteres
 * @paramn maxChar limite m&aacute;ximo de caracteres
 * @paramn erro onde aparecer&aacute; a mensagem de erro.
 * @paramn show onde vai mostrar a intera&ccedil;&atilde;o do valor
 * @example blocTexto('texteArea01',100,'idContador');
 */
function blocTexto(obj, maxChar, show)
{
    var total = obj.value.length;
    if(total <= maxChar){
        var resto = maxChar - total;
        document.getElementById(show).innerHTML = resto;        
    }else{
        montarAlerta("- Limite m&aacute;ximo de caracteres excedido.", false)
        obj.value = obj.value.substr(0,maxChar);
    }
}


/**
 *  Fun&ccedil;&atilde;o para montar o alerta que deu erro ou sucesso.
 *  @param msg String
 *  @param sucess true para mensagem verde false para mensagem vermelho
 *  @example montarAlerta("Erro ao cadastrar arquivo", false); 
 *  Ser� mostrada uma mensagem de cor vermelho de erro.
 *  @example montarAlerta("Cliente cadastrado com sucesso.", true);
 *  Ser� mostrada uma mensagem de cor verde para sucesso.
 *  @author QuickSite
 *  @version 1.0
 */
var setTime;
function montarAlerta(msg, sucess){    
    if (setTime!=null){        
        jQuery("#alert").hide();
        clearTimeout(setTime);
    }

    if (sucess==null) sucess = false;
    
    jQuery("#alert").css("display", "block");
    jQuery("#alert").css("background-color", (sucess) ? "#00AA00" : "#AA0000");
    jQuery("#alert").html(msg);
    jQuery("#alert").fadeIn(400, function () {
        setTime = setTimeout("hideErro()", 2500);
    });   
}


/**
 *  Esse javascript serve para teste dos campos, vale salientar que o nome do
 *  campo mais o nome do span teste deve vim junto.
 *
 *  Ex.:
 *      <input type="text" name="teste" id="teste" />
 *      <span id="erroTeste"></span>
 *
 *  O span &eacute; onde ser&aacute; mostrado o erro do input teste
 **/

/**
 *  Fun&ccedil;&atilde;o para teste do campo igual a vazio. Em caso de campo vazio ser� emitido
 *  uma mensagem para o span definido por id no parametro erro.
 *  @paramn obj Objeto XHTML que deseja testar
 *  @paramn erro Span onde ser&aacute; mostrado o erro
 **/
var gerro = "#alert";
function testarCampoVazio(obj, msg)
{    
    if(!msg)msg = "Esse campo n&atilde;o pode estar vazio.";
    
    obj = "#"+obj;
    if ( empty(jQuery(obj).val()) ){        
        jQuery(obj).focus();
        montarAlerta(msg);
        return false;
    }
    return true;
}

function focusOut(erro, obj){
    if (!empty (jQuery(obj).val()) )
        jQuery(erro).fadeOut(400);
}

function hideErro(){
    if (jQuery(gerro).css("display")!="none")
        jQuery(gerro).fadeOut(400);
}


/**
 *  Fun&ccedil;&atilde;oo para testar valor minimo do campo
 *  uma mensagem para o span definido por id no parametro erro.
 *  @paramn obj Objeto XHTML que deseja testar
 *  @paramn erro Span onde será mostrado o erro
 **/
function testarValorMinimoPermitido(obj, min, msg)
{
    if(!msg)msg = "Esse campo n&atilde;o est&aacute; nos padr&otiled;es m&iacute;nimos permitido.";
    
    obj = "#"+obj;
    if ( jQuery(obj).val().length < min ){
        montarAlerta(msg);
        jQuery(obj).focus();
        return false;
    }
    return true;
}

/**
 *  Fun&ccedil;&atilde;o para teste do campo � do tipo n�mero. Em caso de campo vazio ser� emitido
 *  uma mensagem para o span definido por id no parametro erro.
 *  @paramn obj Objeto XHTML que deseja testar
 *  @paramn erro Span onde ser� mostrado o erro
 **/
function testarCampoNumerico(obj, erro, msg)
{
    if (!msg) msg = "Favor informe um valor num�rico.";
    erro = "#alert";
    obj = "#"+obj;

    jQuery(erro).fadeOut(400);
    if (isNaN(parseFloat(jQuery(obj).val()))){
        montarAlerta(msg);
        jQuery(obj).focus();
        return false;
    }
    return true;
}

/**
 *  Passa o dinheiro para o formato de Float
 *  @paramn money String
 *  @return Float
 **/
function moneyToFloat(money)
{
    var tofloat = money.replace(".", "").replace(",",".");
    return parseFloat(tofloat);
}


// Fun&ccedil;&atilde;o apra formtar dinheiro apenas de entrada direta via javascript
Number.prototype.formatMoney = function(c, d, t){ //Serve para formatar um number em formato dinheiro
    var n = this, c = isNaN(c = Math.abs(c)) ? 2 : c, d = d == undefined ? "," : d, t = t == undefined ? "." : t,
    i = parseInt(n = (+n || 0).toFixed(c)) + "", j = (j = i.length) > 3 ? j % 3 : 0;
    return (j ? i.substr(0, j) + t : "") + i.substr(j).replace(/(\d{3})(?=\d)/g, "$1" + t)
    + (c ? d + (n - i).toFixed(c).slice(2) : "");
};

/**
 *  M�todo de valida��o de CPF
 *  @paramn s String no formato do CPF
 *  @return boolean true em caso de CPF v�lido, false caso CPF inv�lido.
 **/
function validaCPF(s){

    var i;

    // DESFORMATANDO CPF;
    s = s.replace('.','');
    s = s.replace('.','');
    s = s.replace('.','');
    s = s.replace('-','');

    var c = s.substr(0,9);
    var dv = s.substr(9,2);

    var d1 = 0;

    for (i = 0; i < 9; i++){
        d1 += c.charAt(i)*(10-i);
    }

    if (d1 == 0){
        return false;
    }

    d1 = 11 - (d1 % 11);

    if (d1 > 9)
        d1 = 0;

    if (dv.charAt(0) != d1){
        return false;
    }


    d1 *= 2;

    for (i = 0; i < 9; i++){
        d1 += c.charAt(i)*(11-i);
    }

    d1 = 11 - (d1 % 11);

    if (d1 > 9)
        d1 = 0;

    if (dv.charAt(1) != d1){
        return false;
    }

    return true;

}


// << begin FUNCTION CNPJ

function isNUMB(c)
{
    if((cx=c.indexOf(","))!=-1)
    {
        c = c.substring(0,cx)+"."+c.substring(cx+1);
    }
    if((parseFloat(c) / c != 1))
    {
        if(parseFloat(c) * c == 0)
        {
            return(1);
        }
        else
        {
            return(0);
        }
    }
    else
    {
        return(1);
    }
}

function LIMP(c)
{
    while((cx=c.indexOf("-"))!=-1)
    {
        c = c.substring(0,cx)+c.substring(cx+1);
    }
    while((cx=c.indexOf("/"))!=-1)
    {
        c = c.substring(0,cx)+c.substring(cx+1);
    }
    while((cx=c.indexOf(","))!=-1)
    {
        c = c.substring(0,cx)+c.substring(cx+1);
    }
    while((cx=c.indexOf("."))!=-1)
    {
        c = c.substring(0,cx)+c.substring(cx+1);
    }
    while((cx=c.indexOf("("))!=-1)
    {
        c = c.substring(0,cx)+c.substring(cx+1);
    }
    while((cx=c.indexOf(")"))!=-1)
    {
        c = c.substring(0,cx)+c.substring(cx+1);
    }
    while((cx=c.indexOf(" "))!=-1)
    {
        c = c.substring(0,cx)+c.substring(cx+1);
    }
    return(c);
}

function verifyCNPJ(CNPJ)
{
    CNPJ = LIMP(CNPJ);
    if(isNUMB(CNPJ) != 1)
    {
        return(0);
    }
    else
    {
        if(CNPJ == 0)
        {
            return(0);
        }
        else
        {
            g=CNPJ.length-2;
            if(RealTestaCNPJ(CNPJ,g) == 1)
            {
                g=CNPJ.length-1;
                if(RealTestaCNPJ(CNPJ,g) == 1)
                {
                    return(1);
                }
                else
                {
                    return(0);
                }
            }
            else
            {
                return(0);
            }
        }
    }
}
function RealTestaCNPJ(CNPJ,g)
{
    var VerCNPJ=0;
    var ind=2;
    var tam;
    for(f=g;f>0;f--)
    {
        VerCNPJ+=parseInt(CNPJ.charAt(f-1))*ind;
        if(ind>8)
        {
            ind=2;
        }
        else
        {
            ind++;
        }
    }
    VerCNPJ%=11;
    if(VerCNPJ==0 || VerCNPJ==1)
    {
        VerCNPJ=0;
    }
    else
    {
        VerCNPJ=11-VerCNPJ;
    }
    if(VerCNPJ!=parseInt(CNPJ.charAt(g)))
    {
        return(0);
    }
    else
    {
        return(1);
    }
}// se retornar 1 ok caso contrario false

// << end FUNCTION CNPJ


/**
 *  Fun&ccedil;&atilde;o de teste de email via express�o regular.
 *  @paramn email String formato email que deseja testar
 *  @return boolean true em caso de email v&aacute;lido, false caso contr&aacute;rio.
 */
function validarEmail(email)
{    
    var filter = /^([\w-]+(?:\.[\w-]+)*)@((?:[\w-]+\.)*\w[\w-]{0,66})\.([a-z]{2,6}(?:\.[a-z]{2})?)$/i;
    return (filter.test(email)) ? true : false;        
}

/**
 *  Fun&ccedil;&atilde;o de teste de URL via express�o regular.
 *  @paramn url String no formato URL que deseja testar
 *  @return booelan true caso URL v�lida, false caso contr�rio.
 **/
function validaURL(url)
{
    var RegExp = /^(([\w]+:)?\/\/)?(([\d\w]|%[a-fA-f\d]{2,2})+(:([\d\w]|%[a-fA-f\d]{2,2})+)?@)?([\d\w][-\d\w]{0,253}[\d\w]\.)+[\w]{2,4}(:[\d]+)?(\/([-+_~.\d\w]|%[a-fA-f\d]{2,2})*)*(\?(&?([-+_~.\d\w]|%[a-fA-f\d]{2,2})=?)*)?(#([-+_~.\d\w]|%[a-fA-f\d]{2,2})*)?$/;
    if(RegExp.test(url))
        return true;
    else
        return false;
    
}


/*
Descri&ccedil;&atilde;o.: formata um campo do formul&aacute;rio de
acordo com a m&aacute;scara informada...
Par&acirc;metros: - objForm (o Objeto Form)
- strField (string contendo o nome do textbox)

 * - sMask (mascara que define o
 * formato que o dado ser&aacute; apresentado,
 * usando o algarismo "9" para
 * definir n&uacute;meros e o s&iacute;mbolo "!" para
 * qualquer caracter...
 * - evtKeyPress (evento)
 * Uso.......: <input type="textbox"
 * name="xxx".....
 * onkeypress="return txtBoxFormat(this, '99999-999', event);">
 * Observa&ccedil;&atilde;o: As m&aacute;scaras podem ser representadas como os exemplos abaixo:
 * CEP -> 99.999-999
 * CPF -> 999.999.999-99
 * CNPJ -> 99.999.999/9999-99
 * Data -> 99/99/9999
 * Tel Resid -> (99) 999-9999
 * Tel Cel -> (99) 9999-9999
 * Processo -> 99.999999999/999-99
 * C/C -> 999999-!
 * E por a&iacute; vai...
 ***/

function txtBoxFormat(obj, sMask, evtKeyPress) {
    var i, nCount, sValue, fldLen, mskLen,bolMask, sCod, nTecla;

    if(document.all) { // Internet Explorer
        nTecla = evtKeyPress.keyCode;
    } else if(document.layers) { // Nestcape
        nTecla = evtKeyPress.which;
    } else {
        nTecla = evtKeyPress.which;
        if (nTecla == 8) {
            return true;
        }
    }

    sValue = obj.value;
    sValue = sValue.toString().replace( ":", "" );
    sValue = sValue.toString().replace( ":", "" );
    sValue = sValue.toString().replace( "-", "" );
    sValue = sValue.toString().replace( "-", "" );
    sValue = sValue.toString().replace( ".", "" );
    sValue = sValue.toString().replace( ".", "" );
    sValue = sValue.toString().replace( "/", "" );
    sValue = sValue.toString().replace( "/", "" );
    sValue = sValue.toString().replace( "/", "" );
    sValue = sValue.toString().replace( "(", "" );
    sValue = sValue.toString().replace( "(", "" );
    sValue = sValue.toString().replace( ")", "" );
    sValue = sValue.toString().replace( ")", "" );
    sValue = sValue.toString().replace( " ", "" );
    sValue = sValue.toString().replace( " ", "" );
    fldLen = sValue.length;
    mskLen = sMask.length;

    i = 0;
    nCount = 0;
    sCod = "";
    mskLen = fldLen;

    while (i <= mskLen) {
        bolMask = ((sMask.charAt(i) == "-") || (sMask.charAt(i) == ":") || (sMask.charAt(i) == ".") || (sMask.charAt(i) == "/"))
        bolMask = bolMask || ((sMask.charAt(i) == "(") || (sMask.charAt(i) == ")") || (sMask.charAt(i) == " ") || (sMask.charAt(i) == "."))

        //Se for true utiliza elementos especiais aumenta a m�scara
        if (bolMask) {
            sCod += sMask.charAt(i);
            mskLen++;
        //Caso false mostra o sValue(o q foi digitado)
        } else {
            sCod += sValue.charAt(nCount);
            nCount++;
        }
        i++;
    }

    obj.value = (sCod);
    if (nTecla != 8) { // backspace
        if (sMask.charAt(i-1) == "9") { // apenas n�meros...
            return ((nTecla > 47) && (nTecla < 58));
        } // n�meros de 0 a 9
        else { // qualquer caracter...
            return true;
        }
    } else {
        return true;
    }
}


//Fim da Fun&ccedil;&atilde;o M�scaras Gerais

/**
 *  Fun&ccedil;&atilde;o para verificar extens&atilde;o de um arquivo para upload.<br />
 *  Retorna TRUE em caso de sucesso ou FALSE em caso de incompatibilidade de extens&atilde;o
 *  @param arquivo String com o nome do arquivo.
 *  @example verificarExtensao("arquivo.jpg");
 *  O retorno ser&aacute; FALSE e uma mensagem se&aacute; alertada informado o erro.
 *  @return boolean
 */
function verificarExtensao(arquivo) {
    var extensoes_permitidas = new Array(".gif", ".jpg", ".png");
    var msg = "";
   
    var extensao = (arquivo.substring(arquivo.lastIndexOf("."))).toLowerCase();    
    var permitida = false;
    for (var i = 0; i < extensoes_permitidas.length; i++) {
        if (extensoes_permitidas[i] == extensao) {
            permitida = true;
            break;
        }
    }
    
    if (!permitida) {
        msg = "S&oacute; &eacute; poss&iacute;vel enviar arquivos com extens&otilde;es: " + extensoes_permitidas.join();
        montarAlerta(msg, false);
        return false;
    }else{
        return true;
    }
}

/**
 *  Fun&ccedil;&atilde;o para verificar extens&atilde;o de um arquivo para upload.<br />
 *  Retorna TRUE em caso de sucesso ou FALSE em caso de incompatibilidade de extens&atilde;o
 *  @param arquivo String com o nome do arquivo.
 *  @example verificarExtensaoDownload("arquivo.exe");
 *  O retorno ser&aacute; FALSE e uma mensagem se&aacute; alertada informado o erro.
 *  @return boolean
 */

function verificarExtensaoDownload(arquivo) {
    var extensoes_naopermitidas = new Array(".bat", ".com", ".exe", ".ini", ".src", ".sys", ".dll");
    var msg = "";

    var extensao = (arquivo.substring(arquivo.lastIndexOf("."))).toLowerCase();    
    
    var permitida = false;
    for (var i = 0; i < extensoes_naopermitidas.length; i++) {
        if (extensoes_naopermitidas[i] == extensao) {
            permitida = false;
            break;
        }else{
            permitida = true;
        }
    }    

    if (!permitida) {
        msg = "N&atilde;o &eacute; poss&iacute;vel enviar arquivos com extens&otilde;es: " + extensoes_naopermitidas.join();
        montarAlerta(msg, false);
        return false;
    }else{
        return true;
    }
}


/**
 *  Fun&ccedil;&atilde;o para gerar relat&oacute;rio
 **/
function relatorio(query)
{
    var nome = 'relatorio';    
    popupWindow('relatorio.php?'+query, nome, 800, 600);
}

/**
 *  Fun&ccedil;&atilde;o para gerar relat�rio
 **/
function relatorio2(query)
{
    var nome = 'relatorio2';
    popupWindow('relatorio2.php?'+query, nome, 800, 600);
}

/**
 *  Fun&ccedil;&atilde;o para montar p�gina de impress�o
 **/
function openPrint(query)
{
    var nome = 'openPrint';
    popupWindow('print.php?'+query, nome, 860, 640);
}


/******************************************
 *  estilos para selects
 **/
var ativo = null;
function showSelectOptions(div, erro)
{
    div = "#"+div;
    var display = jQuery(div).css("display");
    if (display=="none")
        jQuery(div).show(200);
    else
        jQuery(div).hide(200);

    if ((ativo!=null) && (ativo!=div)){
        jQuery(ativo).hide(200);
        ativo = null;
    }
    ativo = div;

    if (erro==null) return;
    hideErro("#"+erro);

}

function changeOption(input, inputValue, showValue, div)
{
    var dinput = "#display_"+input;
    div = "#"+div;
    input = "#"+input;

    jQuery(div).hide(200);
    jQuery(input).val(inputValue);
    jQuery(dinput).val(showValue);
}

function fecharSelect(obj)
{
    setTimeout("jHide()", 200);
}

function jHide()
{
    jQuery(ativo).hide();
}
