pontuacoes = new Array("'",'"','!','@','#','$','%','¨','&','*','(',')','_');
pontuacoes.push('+',',','=','¹','²','³','£','¢','¬','§','´','[','`','{');
pontuacoes.push('ª','~',']','}','^','º','\\','.',';','/','|','<','>',':');
pontuacoes.push('?','°','-','„','“','”','…');

function getElement(elemento){
    return document.getElementById(elemento);
}

function getByTag(tag){
    return document.getElementsByTagName(tag);
}

function definir(elemento, valores){
    if(typeof(elemento)=="undefined"){
        elemento = valores;
    }
    return elemento;
}

function strip(str){
    str = str.replace(/^\s+/, "");
    return str.replace(/\s+$/, "");
}

var estilos = {
    'erro': {'style.border':'1px solid green'},
    'ok':{'style.border':'2px inset white'}
}

function mudaEstilo(elemento, mensagem){

    for (estilo in estilos[mensagem]){
        elemento.x = modelos[mensagem][estilo];
    }
}

function removeElement(element){
    element.parentNode.removeChild(element);
}

function replaceAll(texto, original, novo){
    novo = definir(novo, "");
    while(texto.indexOf(original)!= -1){
        texto = texto.replace(original, novo);
    }
    return texto
}

function validaEmail(email){
    var tam = email.length;
    var aux1 = 0;
    var aux2 = 2;
    while (aux1<tam){
        if ((email.charAt(aux1)=="@")&&(aux1>0)){
            for (aux2+=aux1;aux2<tam;aux2++){
                if ((email.charAt(aux2)==".")&&(aux2<tam-2)){
                    return true;
                }
            }
        }
        aux1++;
    }
    return false;
}

function tirarPontuacao(frase){
    for (i=0;i<pontuacoes.length;i++){
        frase = replaceAll(frase,pontuacoes[i],'');
    }
    return frase;
}

function criarNavegador(navegador,pagAtual, qtdPaginas, url){
    navegador = getElement(navegador);
    navegador.innerHTML = "";
    /* página anetrior */
    if (pagAtual>1){
        anterior = pagAtual-1;
        pagAnterior = "<a id='pagAnterior' href='"+url+"pag="+anterior+"'>";
        pagAnterior += "«Anterior</a>&nbsp;";//caracter  « = Alt + 174
        navegador.innerHTML += pagAnterior;
    }

    /* número de páginas */
    var inicio=1;
    var fim= (qtdPaginas<=10)? qtdPaginas : 10;
    if ((qtdPaginas>10)&(pagAtual>5)){
        fim = (qtdPaginas>pagAtual+5) ? pagAtual+5 : qtdPaginas;
        inicio = (qtdPaginas>pagAtual+5) ? pagAtual - 4 : qtdPaginas-9;
    }
    if (qtdPaginas>1){
        for(pag=inicio;pag<=fim;pag++){
            if (pag!=pagAtual){
              navegador.innerHTML += "<a id='pag"+pag+"' href='"+url+"pag="+pag+"';>"+pag+" </a>&nbsp;";
            }else{
              navegador.innerHTML += "<b id='pag"+pag+"' >"+pag+" </b>&nbsp;";
            }
        }
    }


    /* próxima página */
    if (pagAtual<qtdPaginas){
        prox = pagAtual+1;
        pagProxima = "<a id='pagProxima' href='"+url+"pag="+prox+"' ";
        pagProxima+=">&nbsp;Pr&oacute;xima»</a>";// caracter » = Alt + 175
        navegador.innerHTML += pagProxima;
    }

}

//Função para textarea utilizar maxlength também.
function maxLength(obj, limit) {
    if (obj.value.length >= limit) {
        obj.value = obj.value.substring(0, limit-1);
    }
}

function exibirMenu(quem, link){
    var visib = getElement(quem).className;
    if (visib=="menu_invisivel"){
        getElement(quem).className = "menu_visivel";
        if (link || typeof(link)!='undefined'){
            getElement(link).innerHTML = '(-)'
        }
    }else{
        getElement(quem).className = "menu_invisivel";
        if (link || typeof(link)!='undefined'){
            getElement(link).innerHTML = '(+)'
        }
    }
}

function verificarMenus(div,qtdMenus){
    var nomeMenu = div.slice(0,div.indexOf('_')+1);
    var menu;
    if (getElement(div).className=='menu_invisivel'){
        for(x=1;x<qtdMenus+1;x++){
            menu = getElement(nomeMenu + x);
            if (menu){ menu.className = 'menu_invisivel'; }
        }
    }
    exibirMenu(div);
}

function confirmar(url, texto){
    if(confirm(texto)){
        location.href = url;
    }
}

function formObrigatorios(){
    var labels = getByTag('label');
    for (x=0;x<labels.length;x++){
        txt = labels[x].innerHTML;
        txt = txt.replace('*','<font color="#ff0000">*</font>');
        labels[x].innerHTML = txt;
    }
}

function mensagem(msg,sucesso,onde){
    if (!onde){ onde='msg';}
    getElement(onde).innerHTML = msg;
    var classe = 'mensagem';
    if (sucesso){
        classe += '_sucesso';
    }
    getElement(onde).className = classe;
}

function fck_content(id){
    //trecho de código baseado no Samples de html do FCKeditor
    var fck = FCKeditorAPI.GetInstance(id);
    fck = fck.EditorDocument ;
    var conteudo;
    if ( document.all )     // If Internet Explorer.
    {
        conteudo = fck.body.innerText;
    }
    else                    // If Gecko.
    {
        var r = fck.createRange() ;
        r.selectNodeContents( fck.body ) ;
        conteudo = r.toString();
    }
    conteudo = strip(definir(conteudo,''));
    return conteudo
}

function fckEditor(textarea,tipoToolbar){
    if (!tipoToolbar){
        var tipoToolbar = "Custom";
    }
    var oFCKeditor = new FCKeditor(textarea,'100%','350') ;
    oFCKeditor.BasePath = "/fckeditor/" ;
    oFCKeditor.Config["AutoDetectLanguage"] = false ;
    oFCKeditor.Config["DefaultLanguage"] = "pt-br" ;
    oFCKeditor.ToolbarSet = tipoToolbar;
    oFCKeditor.ReplaceTextarea();
}

function contadorCaracteres(id, qtd, texto){
    var linhas = (document.all) ? 5 : 4;
    if (!qtd){qtd=200}
    if (!texto){texto=''}
    with (getElement(id)){
        rows = linhas;
        onkeyup = function contador(){
            tamanho = getElement(id).value.length;
            maxLength(getElement(id), qtd+1);
            if (tamanho<qtd){
                $('#c_'+id).html(texto+(qtd-tamanho));
            }else{
                $('#c_'+id).html(texto+'Tamanho Máximo');
            }
        }
        onmousemove = function contador(){
            tamanho = getElement(id).value.length;
            maxLength(getElement(id), qtd+1);
            if (tamanho<qtd){
                $('#c_'+id).html(texto+(qtd-tamanho));
            }else{
                $('#c_'+id).html(texto+'Tamanho Máximo');
            }
        }
    }
}

function aleatorio(inferior,superior){
    //gera numero aleatorio no intervalo passado como parametro
    numPossibilidades = superior - inferior;
    aleat = Math.random() * numPossibilidades;
    aleat = Math.floor(aleat);
    return parseInt(inferior) + aleat
}

/*
**************************************
* String.highlight v1.0              *
* Autor: Carlos R. L. Rodrigues      *
**************************************
*/
String.prototype.highlight = function(f, c, i){
    var r = this, t = /([(){}|*+?.,^$\[\]\\])/g, i = !i ? "i" : "", rf = function(t, i){
        return r.lastIndexOf("<", i) > r.lastIndexOf(">", i) ? t : c(t, p);
    };
    for(var p = -1, l = (f = f instanceof Array ? f : [f]).length; ++p < l;)
        r = r.replace(new RegExp(f[p].replace(t, "\\\$1"), "gm" + i), rf);
    return r;
}
/*function c(s, i){
    return '<span class="bg' + i + '">' + s + '</span>';
}
var s = 'blabla <a href="http://jsfromhell.com">JSFromHell</a>';
document.write(s.highlight(["JS", "from", "o", "l"], c));*/
/*
**************************************
* Event Listener Function v1.4       *
**************************************
*/
addEvent = function(o, e, f, s){
    var r = o[r = "_" + (e = "on" + e)] = o[r] || (o[e] ? [[o[e], o]] : []), a, c, d;
    r[r.length] = [f, s || o], o[e] = function(e){
        try{
            (e = e || event).preventDefault || (e.preventDefault = function(){e.returnValue = false;});
            e.stopPropagation || (e.stopPropagation = function(){e.cancelBubble = true;});
            e.target || (e.target = e.srcElement || null);
            e.key = (e.which + 1 || e.keyCode + 1) - 1 || 0;
        }catch(f){}
        for(d = 1, f = r.length; f; r[--f] && (a = r[f][0], o = r[f][1], a.call ? c = a.call(o, e) : (o._ = a, c = o._(e), o._ = null), d &= c !== false));
        return e = null, !!d;
    }
};

removeEvent = function(o, e, f, s){
    for(var i = (e = o["_on" + e] || []).length; i;)
        if(e[--i] && e[i][0] == f && (s || o) == e[i][1])
            return delete e[i];
    return false;
};

//+ Jonas Raoni Soares Silva
//@ http://jsfromhell.com/forms/masked-input [v1.0]
//========================================================
// REQUIRES http://www.jsfromhell.com/geral/event-listener
//========================================================

MaskInput = function(f, m){
    function mask(e){
        var patterns = {"1": /[A-Z]/i, "2": /[0-9]/, "4": /[\xC0-\xFF]/i, "8": /./ },
            rules = { "a": 3, "A": 7, "9": 2, "C":5, "c": 1, "*": 8};
        function accept(c, rule){
            for(var i = 1, r = rules[rule] || 0; i <= r; i<<=1)
                if(r & i && patterns[i].test(c))
                    break;
                return i <= r || c == rule;
        }
        var k, mC, r, c = String.fromCharCode(k = e.key), l = f.value.length;
        (!k || k == 8 ? 1 : (r = /^(.)\^(.*)$/.exec(m)) && (r[0] = r[2].indexOf(c) + 1) + 1 ?
            r[1] == "O" ? r[0] : r[1] == "E" ? !r[0] : accept(c, r[1]) || r[0]
            : (l = (f.value += m.substr(l, (r = /[A|9|C|\*]/i.exec(m.substr(l))) ?
            r.index : l)).length) < m.length && accept(c, m.charAt(l))) || e.preventDefault();
    }
    for(var i in !/^(.)\^(.*)$/.test(m) && (f.maxLength = m.length), {keypress: 0, keyup: 1})
        addEvent(f, i, mask);
};

//+ Jonas Raoni Soares Silva
//@ http://jsfromhell.com/string/capitalize [v1.0]

String.prototype.capitalize = function(){
    return this.replace(/\w+/g, function(a){
        return a.charAt(0).toUpperCase() + a.slice(1).toLowerCase();
    });
};
