Usuário:Épico/vector.js

Origem: Wikipédia, a enciclopédia livre.

Nota: Depois de publicar, poderá ter de contornar a cache do seu navegador para ver as alterações.

  • Firefox / Safari: Pressione Shift enquanto clica Recarregar, ou pressione Ctrl-F5 ou Ctrl-R (⌘-R no Mac)
  • Google Chrome: Pressione Ctrl-Shift-R (⌘-Shift-R no Mac)
  • Internet Explorer / Edge: Pressione Ctrl enquanto clica Recarregar, ou pressione Ctrl-F5
  • Opera: Pressione Ctrl-F5.
var mesesEn = [ 'january', 'february', 'march', 'april', 'may', 'june', 'july', 'august', 'september', 'october', 'november', 'december', 'summer', 'spring', 'fall', 'autumn', 'winter'];
var mesesPt = [ 'janeiro', 'fevereiro', 'março', 'abril', 'maio', 'junho', 'julho', 'agosto', 'setembro', 'outubro', 'novembro', 'dezembro', 'verão', 'primavera', 'outono', 'outono', 'inverno'];

function tradMes(mes) {
    for (var i = 0; i < mesesEn.length; i++) {
        if (mes.toLocaleLowerCase() == mesesEn[i]
        || mes.toLocaleLowerCase() == mesesEn[i].substring(0, 3))
            return mesesPt[i];
        else if (mes.toLocaleLowerCase() == mesesPt[i])
            return mes;
    }
    return 'falhou';
}

//datas
var cvGrauO = "([^\\|\\}]*°[^\\|\\}]*[\\|\\}])",
    diaMesAno = "\\s*(\\d+)\\s+([A-Za-zç]+)\\s+(\\d\\d\\d\\d?)",
    linkDiaMesAno = "\\s*\\[\\[0?(\\d+)\\s+de\\s+([A-Za-zç]+)\\]\\]\\s+de\\s+\\[?\\[?(\\d+)\\]?\\]?",
    mesDiaAno = "\\s*([A-Za-zç]+)\\s+(\\d+),\\s+(\\d\\d\\d\\d?)",
    mesAno = "\\s*([A-Za-zç]+),?\\s+(\\d\\d\\d\\d?)",
    nAnoMes = "\\s*(\\d\\d\\d\\d?)\\-(\\d\\d?)\\s*\\|",
    nMesAno = "\\s*(\\d\\d?)\\-(\\d\\d\\d\\d?)\\s*\\|",
    _0diaMesAno = "\\s*0(\\d+)\\s+de\\s+([A-Za-zç]+)\\s+de\\s+(\\d\\d\\d\\d?)",
    diaMesVAno = "\\s*(\\d\\d?)\\s+de\\s+([A-Za-zç]+),\\s+(\\d\\d\\d\\d?)",
    prData = "\\s*\\{\\{\\s*[Dd]ata\\s*\\|\\s*(\\d\\d\\d\\d?)\\s*\\|\\s*(\\d\\d?)\\s*\\|\\s*(\\d\\d?)\\s*\\}\\}",
    prDataExt = "\\s*\\{\\{[Dd]ataExt\\s*\\|\\s*(\\d\\d?)\\s*\\|\\s*(\\d\\d?)\\s*\\|\\s*(\\d\\d\\d\\d?)\\s*\\}\\}";
//parâmetros
var data = "\\|\\s*(?:dat[ea]|year|ano)\\s*=",
    transmissao = "\\|\\s*(?:transmissão|air\\-?date)\\s*=",
    acessodata = "\\|\\s*(?:acc?esso?\\-?dat[ea]|acc?essadoem)\\s*=",
    publicacao = "\\|\\s*(?:publication\\-?date|data\\-publica[cç][aã]o)\\s*=",
    arquivodata = "\\|\\s*ar[cq][hu]iv[eo]\\-?dat[ea]\\s*=";

function rDatas(alt, padrao) {
    if (alt.match(/falhou/)) return padrao;
    else return alt;
}
function rdata(alt, padrao) {
    return rDatas ('|data=' + alt, padrao);
}
function rtransmissao(alt, padrao) {
    return rDatas ('|transmissão=' + alt, padrao);
}
function racessodata(alt, padrao) {
    return rDatas ('|acessodata=' + alt, padrao);
}
function rpublicacao(alt, padrao) {
    return rDatas ('|data-publicação=' + alt, padrao);
}
function rarquivodata(alt, padrao) {
    return rDatas ('|arquivodata=' + alt, padrao);
}

datas = [
/*{ reg: /\|\s*data\s*=\s*(\d+)\s*\|\s*ano\s*=\s*(\d+)\s*\|\s*mes=(\d+)/, subs: function(achou){
    if (mesesPt[achou[3]-1])
        return rdata(achou[1] + ' de ' + mesesPt[achou[3]-1] + ' de ' + achou[2], achou[0]);
    else return achou[0];
} },*/
{ reg: /\|\s*ano\s*=\s*((:?\d\d?\s+de\s+|)[A-Za-zç]+\s+de\s+\d\d\d\d?)/, subs: function(achou){
    return rdata(achou[1]);
} }, { reg: new RegExp(data + cvGrauO), subs: function(achou){
    return rdata(achou[1].replace('°', 'º'), achou[0]);
} }, { reg: new RegExp(data + diaMesAno), subs: function(achou){
    return rdata(achou[1] + ' de ' + tradMes(achou[2]) + ' de ' + achou[3], achou[0]);
} }, { reg: new RegExp(data + linkDiaMesAno), subs: function(achou){
    return rdata(achou[1] + ' de ' + tradMes(achou[2]) + ' de ' + achou[3], achou[0]);
} }, { reg: new RegExp(data + mesDiaAno),  subs: function(achou){
    return rdata(achou[2] + ' de ' + tradMes(achou[1]) + ' de ' + achou[3], achou[0]);
} }, { reg: new RegExp(data + mesAno), subs: function(achou){
    return rdata(tradMes(achou[1]) + ' de ' + achou[2], achou[0]);
} }, { reg: new RegExp(data + nAnoMes), subs: function(achou){
    if (mesesPt[achou[2]-1])
        return rdata(mesesPt[achou[2]-1] + ' de ' + achou[1] + '|', achou[0]);
    else return achou[0];
} }, { reg: new RegExp(data + nMesAno), subs: function(achou){
    if (mesesPt[achou[1]-1])
        return rdata(mesesPt[achou[1]-1] + ' de ' + achou[2] + '|', achou[0]);
    else return achou[0];
} }, { reg: new RegExp(data + _0diaMesAno), subs: function(achou){
    return rdata(achou[1] + ' de ' + tradMes(achou[2]) + ' de ' + achou[3], achou[0]);
} }, { reg: new RegExp(data + diaMesVAno), subs: function(achou){
    return rdata(achou[1] + ' de ' + tradMes(achou[2]) + ' de ' + achou[3], achou[0]);
} }, { reg: new RegExp(data + prData), subs: function(achou){
    return rdata(achou[3] + ' de ' + mesesPt[achou[2]-1] + ' de ' + achou[1], achou[0]);
} }, { reg: new RegExp(data + prDataExt), subs: function(achou){
    return rdata(achou[1] + ' de ' + mesesPt[achou[2]-1] + ' de ' + achou[3], achou[0]);
} },
{ reg: new RegExp(transmissao + cvGrauO), subs: function(achou){
    return rtransmissao(achou[1].replace('°', 'º'), achou[0]);
} }, { reg: new RegExp(transmissao + diaMesAno), subs: function(achou){
    return rtransmissao(achou[1] + ' de ' + tradMes(achou[2]) + ' de ' + achou[3], achou[0]);
} }, { reg: new RegExp(transmissao + linkDiaMesAno), subs: function(achou){
    return rtransmissao(achou[1] + ' de ' + tradMes(achou[2]) + ' de ' + achou[3], achou[0]);
} }, { reg: new RegExp(transmissao + mesDiaAno),  subs: function(achou){
    return rtransmissao(achou[2] + ' de ' + tradMes(achou[1]) + ' de ' + achou[3], achou[0]);
} }, { reg: new RegExp(transmissao + mesAno), subs: function(achou){
    return rtransmissao(tradMes(achou[1]) + ' de ' + achou[2], achou[0]);
} }, { reg: new RegExp(transmissao + _0diaMesAno), subs: function(achou){
    return rtransmissao(achou[1] + ' de ' + tradMes(achou[2]) + ' de ' + achou[3], achou[0]);
} }, { reg: new RegExp(transmissao + prData), subs: function(achou){
    return rtransmissao(achou[3] + ' de ' + mesesPt[achou[2]-1] + ' de ' + achou[1], achou[0]);
} }, { reg: new RegExp(transmissao + prDataExt), subs: function(achou){
    return rtransmissao(achou[1] + ' de ' + mesesPt[achou[2]-1] + ' de ' + achou[3], achou[0]);
} }, { reg: new RegExp(transmissao + diaMesVAno), subs: function(achou){
    return rtransmissao(achou[1] + ' de ' + tradMes(achou[2]) + ' de ' + achou[3], achou[0]);
} },
{ reg: new RegExp(acessodata + cvGrauO), subs: function(achou){
    return racessodata(achou[1].replace('°', 'º'), achou[0]);
} }, { reg: new RegExp(acessodata + diaMesAno), subs: function(achou){
    return racessodata(achou[1] + ' de ' + tradMes(achou[2]) + ' de ' + achou[3], achou[0]);
} }, { reg: new RegExp(acessodata + mesDiaAno),  subs: function(achou){
    return racessodata(achou[2] + ' de ' + tradMes(achou[1]) + ' de ' + achou[3], achou[0]);
} }, { reg: new RegExp(acessodata + linkDiaMesAno), subs: function(achou){
    return racessodata(achou[1] + ' de ' + tradMes(achou[2]) + ' de ' + achou[3], achou[0]);
} }, { reg: new RegExp(acessodata + _0diaMesAno), subs: function(achou){
    return racessodata(achou[1] + ' de ' + tradMes(achou[2]) + ' de ' + achou[3], achou[0]);
} }, { reg: new RegExp(acessodata + prData), subs: function(achou){
    return racessodata(achou[3] + ' de ' + mesesPt[achou[2]-1] + ' de ' + achou[1], achou[0]);
} }, { reg: new RegExp(acessodata + prDataExt), subs: function(achou){
    return racessodata(achou[1] + ' de ' + mesesPt[achou[2]-1] + ' de ' + achou[3], achou[0]);
} }, { reg: new RegExp(acessodata + diaMesVAno), subs: function(achou){
    return racessodata(achou[1] + ' de ' + tradMes(achou[2]) + ' de ' + achou[3], achou[0]);
} }, { reg: new RegExp(acessodata + "\\s*([A-Za-zç]+)\\s+,?d?e?\\s*(\\d\\d\\d\\d?)"), subs: function(achou){
    return racessodata('1 de ' + tradMes(achou[1]) + ' de ' + achou[2], achou[0]);
} },
{ reg: new RegExp(publicacao + cvGrauO), subs: function(achou){
    return rpublicacao(achou[1].replace('°', 'º'), achou[0]);
} }, { reg: new RegExp(publicacao + diaMesAno), subs: function(achou){
    return rpublicacao(achou[1] + ' de ' + tradMes(achou[2]) + ' de ' + achou[3], achou[0]);
} }, { reg: new RegExp(publicacao + mesDiaAno),  subs: function(achou){
    return rpublicacao(achou[2] + ' de ' + tradMes(achou[1]) + ' de ' + achou[3], achou[0]);
} }, { reg: new RegExp(publicacao + mesAno), subs: function(achou){
    return rpublicacao(tradMes(achou[1]) + ' de ' + achou[2], achou[0]);
} }, { reg: new RegExp(publicacao + diaMesVAno), subs: function(achou){
    return rpublicacao(achou[1] + ' de ' + tradMes(achou[2]) + ' de ' + achou[3], achou[0]);
} },
{ reg: new RegExp(arquivodata + cvGrauO), subs: function(achou){
    return rarquivodata(achou[1].replace('°', 'º'), achou[0]);
} }, { reg: new RegExp(arquivodata + diaMesAno), subs: function(achou){
    return rarquivodata(achou[1] + ' de ' + tradMes(achou[2]) + ' de ' + achou[3], achou[0]);
} }, { reg: new RegExp(arquivodata + mesDiaAno),  subs: function(achou){
    return rarquivodata(achou[2] + ' de ' + tradMes(achou[1]) + ' de ' + achou[3], achou[0]);
} }, { reg: new RegExp(arquivodata + mesAno), subs: function(achou){
    return rarquivodata(tradMes(achou[1]) + ' de ' + achou[2], achou[0]);
} }, { reg: new RegExp(arquivodata + _0diaMesAno), subs: function(achou){
    return rarquivodata(achou[1] + ' de ' + tradMes(achou[2]) + ' de ' + achou[3], achou[0]);
} }, { reg: new RegExp(arquivodata + diaMesVAno), subs: function(achou){
    return rarquivodata(achou[1] + ' de ' + tradMes(achou[2]) + ' de ' + achou[3], achou[0]);
} } ]
/*, { reg: /\|\s*dat[ea]\s*=data=\s*([A-Za-zç]+)\s+d?e?\s*(\d\d\d\d?)/, subs: function(achou){
    return '|data=' + tradMes(achou[1]) + ' de ' + achou[2];
} }*/


links = [
{ reg: /<a\s*.*href\s*=\s*\"?([^\"&]*)\"?\s*[^&]*<\s*\/\s*a\s*>/, subs: function(achou){
    var acao = ((achou[1].indexOf('\?') != -1 ) ? '&' : '\?') + 'action=edit';
    return achou[0] + '&nbsp;<a href="javascript:subsTextoBox(window.open(\''
        + encodeURIComponent(achou[1]) + acao +'\'))">Editar</a>';
} },
{ reg: /<a\s*.*href\s*=\s*\"?([^\"&]*)\"?\s*.*<\s*\/\s*a\s*>/, subs: function(achou){
    var acao = ((achou[1].indexOf('\?') != -1 ) ? '&' : '\?') + 'action=edit';
    if (typeof(listaLink) == 'undefined') {
        listaLink = [achou[1] + acao];
    } else {
        listaLink.push([achou[1] + acao]);
    }
    return achou[0] + '&nbsp;<a href="javascript:subsTextoBox(window.open(\''
        + encodeURIComponent(achou[1]) + acao +'\'))">Editar</a>';
} }
]

rgeral = [// Usar as regex abaixo apenas em predefinições delimitadas
{ reg: /\|\s*accessadoem\s*=/, subs: function(achou){
    return "|acessadoem=";
} },
{ reg: /\|\s*(?:acessodata|acessadoem)\s*=[^\|]*([^\}]*\|\s*(?:acessodata|acessadoem)\s*=\s*[^\|\}\s][^\|\}]*)/, subs: function(achou){
    return achou[1];
} },
{ reg: /(\|\s*(?:acessodata|acessadoem)\s*=[^\}]*)\|\s*(?:acessodata|acessadoem)\s*=\s*([\s\S]*)/, subs: function(achou){
    return achou[1] + achou[2];
} },
{ reg: /\|\s*data\s*=[^\|]*([^\}]*\|\s*data\s*=\s*[^\|\}\s][^\|\}]*)/, subs: function(achou){
    return achou[1];
} },
{ reg: /(\|\s*data\s*=[^\}]*)\|\s*data\s*=\s*([\s\S]*)/, subs: function(achou){
    return achou[1] + achou[2];
} },
{ reg: /\|\s*obra\s*=[^\|]*([^\}]*\|\s*obra\s*=\s*[^\|\}\s][^\|\}]*)/, subs: function(achou){
    return achou[1];
} },
{ reg: /(\|\s*obra\s*=[^\}]*)\|\s*obra\s*=\s*([\s\S]*)/, subs: function(achou){
    return achou[1] + achou[2];
} },
{ reg: /\|\s*t[ií]tulo\s*=\s*([^\|]*[\S])(\s*\|)/, subs: function(achou){
    if (achou[1].match(/\u200B|\n/)) {
        var tmp = achou[1].replace(/ *\n */g, ' ');
        return '|título=' + tmp.replace(/\u200B/g, '') + achou[2];
    }
    return achou[0];
} },
{ reg: /\|\s*(?:l[ií]ngua[23]|lang)\s*=/, subs: function(achou){
    return '|língua=';
} },
{ reg: /\|\s*(?:l[ií]ngua|idioma)\s*=\s*[Pp](?:ortugu[êe]s|ortuguese|t|t\-[Bb][Rr]|t\-[Pp][Tt])\s*([\|\}])/, subs: function(achou){
    return achou[1];
} },
{ reg: /\|\s*(?:l[ií]ngua|idioma)\s*=[^\|]*([^\}]*\|\s*(?:l[ií]ngua|idioma)\s*=\s*[^\|\}\s][^\|\}]*)/, subs: function(achou){
    return achou[1];
} },
{ reg: /(\|\s*(?:l[ií]ngua|idioma)\s*=[^\}]*)\|\s*(?:l[ií]ngua|idioma)\s*=\s*([\s\S]*)/, subs: function(achou){
    return achou[1] + achou[2];
} },
{ reg: /\|\s*[Ii][Dd]\s*=\s*ISBN/, subs: function(achou){
    return '|isbn=';
} } ]

geral = [
{ reg: /\[\[(?:[Ff][Ii][Ll][Ee]|[Ii][Mm][Aa][Gg][Ee]):(.*\]\])/, subs: function(achou){
    return '[[Imagem:' + achou[1];
} }, { reg: /\[\[[Aa]nexo:(.*\]\])/, subs: function(achou){
    return '[[' + achou[1];
} }, { reg: /\[\[\s*(.*)\s*\|\s*(.*)\s*\]\]/, subs: function(achou){
    if (achou[1] == achou[2]) return '[[' + achou[1] + ']]';
    else return achou[0];
} }, { reg: /Encyclopedia Britannica/, subs: function(achou){
    return 'Encyclopædia Britannica';
} }, { reg: /\{\{\s*(?:[Ll]igação inativa|[Ll]ink quebrado|[Dd]ead\s?link)\s*\|\s*dat[ea]\s*=\s*([A-Za-zç]+)\s+d?e?\s*(\d\d\d\d?)/, subs: function(achou){
    return '{{ligação inativa|data=' + tradMes(achou[1]) + ' de ' + achou[2];
} }, { reg: /\{\{\s*(?:[Dd]ead\s?link|[Ll]ink quebrado) *(\n?) *(\{\{|\|)/, subs: function(achou){
    return '{{ligação inativa' + (achou[1] ? achou[1] : '') + (achou[2] ? achou[2] : '');
} }, { reg: /(\{\{\s*(?:[Cc]itar (?:web\s*\||vídeo\s*\||vídeo notas\s*\||tese\s*\||revista\s*\||relatório\s*\||podcast\s*\||periódico\s*\||mapa\s*\||livro\s*\||lista de discussão|jornal\s*\||notícia\s*\||grupo de notícias|episódio\s*\||entrevista\s*\||enciclopédia\s*\||discurso\s*\||conferência\s*\||comunicados? de imprensa|ar[Xx]iv\s*\|)|[Cc]itation\s*\|)[^\{]*)\}\}\s*\{\{([Ll]igação inativa)\s*(?:\|dat[ea]\s*(=\s*[A-Za-zç]+\s+de\s*\d\d\d\d?)\s*|)(?:\|\s*bot=[^\}]*|)\}\}/, subs: function(achou){
    return achou[1] + '|' + achou[2] + (achou[3] ? achou[3] : '=' + mesesPt[(new Date).getMonth()]
        + ' de ' + (new Date).getFullYear() + '}}');
} }, { reg: /\{\{\s*(?:[Mm]\-notas|[Mm]\-fontes)\s*\|\s*dat[ea]\s*=\s*([A-Za-zç]+)\s+d?e?\s*(\d\d\d\d?)/, subs: function(achou){
    return '{{Mais notas|data=' + tradMes(achou[1]) + ' de ' + achou[2];
} }, { reg: /\{\{\s*(?:[Cc]itation needed|[Ff]act)\s*\|\s*dat[ea]\s*=\s*([A-Za-zç]+)\s+d?e?\s*(\d\d\d\d?)/, subs: function(achou){
    return '{{carece de fontes|data=' + tradMes(achou[1]) + ' de ' + achou[2];
} }, { reg: /\{\{\s*(?:[Cc]arece[\s\-]de[\s\-]fontes?|[Cc]arece fontes|[Ss]em fontes|[Cc]itação necessária|[Cc]ite as fontes)\s*\|\s*dat[ea]\s*=\s*([A-Za-zç]+)\s+(\d\d\d\d?)/, subs: function(achou){
    return '{{carece de fontes|data=' + tradMes(achou[1]) + ' de ' + achou[2];
} }, { reg: /\{\{\s*[Ss]\-fontes\s*\|\s*dat[ea]\s*=\s*([A-Za-zç]+)\s+d?e?\s*(\d\d\d\d?)/, subs: function(achou){
    return '{{Sem-fontes|data=' + tradMes(achou[1]) + ' de ' + achou[2];
} }, { reg: /\{\{\s*[Ff]\-referências\s*\|\s*dat[ea]\s*=\s*([A-Za-zç]+)\s+d?e?\s*(\d\d\d\d?)/, subs: function(achou){
    return '{{Formatar referências|data=' + tradMes(achou[1]) + ' de ' + achou[2];
} }, { reg: /\{\\s*{wkf\s*\|\s*dat[ea]\s*=\s*([A-Za-zç]+)\s+d?e?\s*(\d\d\d\d?)/, subs: function(achou){
    return '{{Wikificação|data=' + tradMes(achou[1]) + ' de ' + achou[2];
} }, { reg: /\{\{\s*(?:[Mm]\-notas|[Mm]\-fontes)\s*\}\}/, subs: function(achou){
    return '{{Mais notas|data=March de 2017}}';
} }, { reg: /\{\{\s*[Ss]\-fontes\s*\}\}/, subs: function(achou){
    return '{{Sem-fontes|data=March de 2017}}';
} }, { reg: /\{\{\s*[Ff]\-referências\s*\}\}/, subs: function(achou){
    return '{{Formatar referências|data=March de 2017}}';
} }, { reg: /\{\{\s*wkf\s*\}\}/, subs: function(achou){
    return '{{Wikificação|data=March de 2017}}';
} }, { reg: /\{\{\s*(?:[Ll]igações [Ee]xternas|[Pp]áginas externas|[Rr]eferências externas|[Ll]inks|[Ll]ink externo|[Ll]igação externa|[Ll]inks externos)\s*\}\}/, subs: function(achou){
    return 'Ligações externas';
} }, { reg: /\{\{\s*[Vv]e(?:r|ja) [Tt]ambém\s*\}\}/, subs: function(achou){
    return 'Ver também';
} }, { reg: /\{\{\s*[Bb]ibliografia\s*\}\}/, subs: function(achou){
    return 'Bibliografia';
} }, { reg: /\s?\{\{(?:[Ss]em ?interwikis?|[Ss]eminterwiki-categorias|[Ss]emiwcat|[Ss]em[ \-]?iw)\s*(?:\|[^\{]*\}\}|\}\}(\n)\n)/, subs: function(achou){
    if (achou[1]) return achou[1]; else return '';
} } ]
// { reg: /\{\{\s*[Cc]itar not[ií]cia *(\n?) *\|/, subs: function(achou){
   // return '{{citar jornal' + (achou[1] ? achou[1] : '') + '|';
//} }


subpred = [
{ reg: /\{\{\s*[Cc]ite web *(\n?) *\|/, subs: function(achou){
    return '{{citar web' + (achou[1] ? achou[1] : '') + '|';
} },
{ reg: /\{\{\s*[Cc]iteweb *(\n?) *\|/, subs: function(achou){
    return '{{citar web' + (achou[1] ? achou[1] : '') + '|';
} },
{ reg: /\{\{\s*[Cc]ite AV media notes *(\n?) *\|/, subs: function(achou){
    return '{{citar vídeo notas' + (achou[1] ? achou[1] : '') + '|';
} },
{ reg: /\{\{\s*[Cc]ite AV media *(\n?) *\|/, subs: function(achou){
    return '{{citar vídeo' + (achou[1] ? achou[1] : '') + '|';
} },
{ reg: /\{\{\s*[Cc]ite video *(\n?) *\|/, subs: function(achou){
    return '{{citar vídeo' + (achou[1] ? achou[1] : '') + '|';
} },
{ reg: /\{\{\s*[Cc]Cite thesis *(\n?) *\|/, subs: function(achou){
    return '{{citar tese' + (achou[1] ? achou[1] : '') + '|';
} },
{ reg: /\{\{\s*[Cc]ite magazine *(\n?) *\|/, subs: function(achou){
    return '{{citar revista' + (achou[1] ? achou[1] : '') + '|';
} },
{ reg: /\{\{\s*[Cc]ite report *(\n?) *\|/, subs: function(achou){
    return '{{citar relatório' + (achou[1] ? achou[1] : '') + '|';
} },
{ reg: /\{\{\s*[Cc]ite podcast *(\n?) *\|/, subs: function(achou){
    return '{{citar podcast' + (achou[1] ? achou[1] : '') + '|';
} },
{ reg: /\{\{\s*[Cc]ite news *(\n?) *\|/, subs: function(achou){
    return '{{citar jornal' + (achou[1] ? achou[1] : '') + '|';
} },
{ reg: /\{\{\s*[Cc]ite newspaper *(\n?) *\|/, subs: function(achou){
    return '{{citar jornal' + (achou[1] ? achou[1] : '') + '|';
} },
{ reg: /\{\{\s*[Cc]ite map *(\n?) *\|/, subs: function(achou){
    return '{{citar mapa' + (achou[1] ? achou[1] : '') + '|';
} },
{ reg: /\{\{\s*[Cc]ite book *(\n?) *\|/, subs: function(achou){
    return '{{citar livro' + (achou[1] ? achou[1] : '') + '|';
} },
{ reg: /\{\{\s*[Cc]ite mailing list *(\n?) *\|/, subs: function(achou){
    return '{{citar lista de discussão' + (achou[1] ? achou[1] : '') + '|';
} },
{ reg: /\{\{\s*[Cc]ite journal *(\n?) *\|/, subs: function(achou){
    return '{{citar periódico' + (achou[1] ? achou[1] : '') + '|';
} },
{ reg: /\{\{\s*[Cc]ite newsgroup *(\n?) *\|/, subs: function(achou){
    return '{{citar grupo de notícias' + (achou[1] ? achou[1] : '') + '|';
} },
{ reg: /\{\{\s*[Cc]ite episode *(\n?) *\|/, subs: function(achou){
    return '{{citar episódio' + (achou[1] ? achou[1] : '') + '|';
} },
{ reg: /\{\{\s*[Cc]ite interview *(\n?) *\|/, subs: function(achou){
    return '{{citar entrevista' + (achou[1] ? achou[1] : '') + '|';
} },
{ reg: /\{\{\s*[Cc]ite encyclopedia *(\n?) *\|/, subs: function(achou){
    return '{{citar enciclopédia' + (achou[1] ? achou[1] : '') + '|';
} },
{ reg: /\{\{\s*[Cc]ite conference *(\n?) *\|/, subs: function(achou){
    return '{{citar conferência' + (achou[1] ? achou[1] : '') + '|';
} },
{ reg: /\{\{\s*[Cc]ite press(?: release|) *(\n?) *\|/, subs: function(achou){
    return '{{citar comunicado de imprensa' + (achou[1] ? achou[1] : '') + '|';
} },
{ reg: /\|\s*accesso?\-?dat[ea]\s*=/, subs: function(achou){
    return '|acessodata=';
} },
{ reg: /\|\s*date\s*=/, subs: function(achou){
    return '|data=';
} },
{ reg: /\|\s*publication\-?date\s*=/, subs: function(achou){
    return '|data-publicacao=';
} },
{ reg: /\|\s*air\-?date\s*=/, subs: function(achou){
    return '|transmissão=';
} },
{ reg: /\|\s*archive\-?date\s*=/, subs: function(achou){
    return '|arquivodata=';
} },
{ reg: /\|\s*archive\-?url\s*=/, subs: function(achou){
    return '|arquivourl=';
} },
{ reg: /\|\s*agency\s*=/, subs: function(achou){
    return '|agência=';
} },
{ reg: /\|\s*authors\s*=/, subs: function(achou){
    return '|autores=';
} },
{ reg: /\|\s*people\s*=/, subs: function(achou){
    return '|pessoas=';
} },
{ reg: /\|\s*credits\s*=/, subs: function(achou){
    return '|créditos=';
} },
{ reg: /\|\s*book\-?title\s*=/, subs: function(achou){
    return '|títulolivro=';
} },
{ reg: /\|\s*call\-?sign\s*=/, subs: function(achou){
    return '|indicativo=';
} },
{ reg: /\|\s*cartography\s*=/, subs: function(achou){
    return '|cartografia=';
} },
{ reg: /\|\s*chapter\s*=/, subs: function(achou){
    return '|capítulo=';
} },
{ reg: /\|\s*article\s*=/, subs: function(achou){
    return '|artigo=';
} },
{ reg: /\|\s*contribution\s*=/, subs: function(achou){
    return '|contribuição=';
} },
{ reg: /\|\s*chapter\-format\s*=/, subs: function(achou){
    return '|formato-capitulo=';
} },
{ reg: /\|\s*chapter\-?url\s*=/, subs: function(achou){
    return '|capítulourl=';
} },
{ reg: /\|\s*coauthors?\s*=/, subs: function(achou){
    return '|coautor=';
} },
{ reg: /\|\s*collaboration\s*=/, subs: function(achou){
    return '|colaboração=';
} },
{ reg: /\|\s*conference\s*=/, subs: function(achou){
    return '|conferencia=';
} },
{ reg: /\|\s*conference-format\s*=/, subs: function(achou){
    return '|formato-conferencia=';
} },
{ reg: /\|\s*conference\-?url\s*=/, subs: function(achou){
    return '|urlconferencia=';
} },
{ reg: /\|\s*contribution\s*=/, subs: function(achou){
    return '|contribuição=';
} },
{ reg: /\|\s*degree\s*=/, subs: function(achou){
    return '|grau=';
} },
{ reg: /\|\s*edition\s*=/, subs: function(achou){
    return '|edição=';
} },
{ reg: /\|\s*editors\s*=/, subs: function(achou){
    return '|editores=';
} },
{ reg: /\|\s*encyclopa?edia\s*=/, subs: function(achou){
    return '|enciclopédia=';
} },
{ reg: /\|\s*episode\s*=/, subs: function(achou){
    return '|episódio=';
} },
{ reg: /\|\s*format\s*=/, subs: function(achou){
    return '|formato=';
} },
{ reg: /\|\s*language\s*=/, subs: function(achou){
    return '|língua=';
} },
{ reg: /\|\s*interviewers?\s*=/, subs: function(achou){
    return '|entrevistador=';
} },
{ reg: /\|\s*map\s*=/, subs: function(achou){
    return '|mapa=';
} },
{ reg: /\|\s*map\-format\s*=/, subs: function(achou){
    return '|formato-mapa=';
} },
{ reg: /\|\s*map\-url\s*=/, subs: function(achou){
    return '|urlmapa=';
} },
{ reg: /\|\s*minutes\s*=/, subs: function(achou){
    return '|minuto=';
} },
{ reg: /\|\s*network\s*=/, subs: function(achou){
    return '|rede=';
} },
{ reg: /\|\s*orig\-?year\s*=/, subs: function(achou){
    return '|anooriginal=';
} },
{ reg: /\|\s*pages\s*=/, subs: function(achou){
    return '|páginas=';
} },
{ reg: /\|\s*page\s*=/, subs: function(achou){
    return '|página=';
} },
{ reg: /\|\s*journal\s*=/, subs: function(achou){
    return '|periódico=';
} },
{ reg: /\|\s*newspaper\s*=/, subs: function(achou){
    return '|jornal=';
} },
{ reg: /\|\s*magazine\s*=/, subs: function(achou){
    return '|revista=';
} },
{ reg: /\|\s*dictionary\s*=/, subs: function(achou){
    return '|dicionário=';
} },
{ reg: /\|\s*work\s*=/, subs: function(achou){
    return '|obra=';
} },
{ reg: /\|\s*place\s*=/, subs: function(achou){
    return '|local=';
} },
{ reg: /\|\s*location\s*=/, subs: function(achou){
    return '|local=';
} },
{ reg: /\|\s*publication\-?place\s*=/, subs: function(achou){
    return '|local-publicação=';
} },
{ reg: /\|\s*publisher\s*=/, subs: function(achou){
    return '|publicado=';
} },
{ reg: /\|\s*institution\s*=/, subs: function(achou){
    return '|instituição=';
} },
{ reg: /\|\s*quote?a?t?i?o?n?\s*=/, subs: function(achou){
    return '|citação=';
} },
{ reg: /\|\s*registration\s*=/, subs: function(achou){
    return '|registro=';
} },
{ reg: /\|\s*section\s*=/, subs: function(achou){
    return '|seção=';
} },
{ reg: /\|\s*season\s*=/, subs: function(achou){
    return '|temporada=';
} },
{ reg: /\|\s*sections\s*=/, subs: function(achou){
    return '|seções=';
} },
{ reg: /\|\s*sheet\s*=/, subs: function(achou){
    return '|folha=';
} },
{ reg: /\|\s*sheets\s*=/, subs: function(achou){
    return '|folhas=';
} },
{ reg: /\|\s*station\s*=/, subs: function(achou){
    return '|estação=';
} },
{ reg: /\|\s*subscription\s*=/, subs: function(achou){
    return '|subscrição=';
} },
{ reg: /\|\s*time\s*=/, subs: function(achou){
    return '|tempo=';
} },
{ reg: /\|\s*time\-?caption\s*=/, subs: function(achou){
    return '|lengenda=';
} },
{ reg: /\|\s*title\s*=/, subs: function(achou){
    return '|título=';
} },
{ reg: /\|\s*title\-?link\s*=/, subs: function(achou){
    return '|títulolink=';
} },
{ reg: /\|\s*episode\-?link\s*=/, subs: function(achou){
    return '|episódiolink=';
} },
{ reg: /\|\s*department\s*=/, subs: function(achou){
    return '|departamento=';
} },
{ reg: /\|\s*type\s*=/, subs: function(achou){
    return '|tipo=';
} },
{ reg: /\|\s*trans\-?chapter\s*=/, subs: function(achou){
    return '|capítulo-trad=';
} },
{ reg: /\|\s*transcript\-format\s*=/, subs: function(achou){
    return '|transcricao-formato=';
} },
{ reg: /\|\s*transcript\s*=/, subs: function(achou){
    return '|transcrição=';
} },
{ reg: /\|\s*transcript\-?url\s*=/, subs: function(achou){
    return '|transcriçãourl=';
} },
{ reg: /\|\s*trans\-?title\s*=/, subs: function(achou){
    return '|títulotrad=';
} },
{ reg: /\|\s*year\s*=/, subs: function(achou){
    return '|ano=';
} },
{ reg: /\|\s*Ano\s*=/, subs: function(achou){
    return '|ano=';
} },
{ reg: /\|\s*author(\d)?\s*=/, subs: function(achou){
    return '|autor' + (achou[1] ? achou[1] : '') + ' =';
} },
{ reg: /\|\s*author(\d)?\-?link\s*=/, subs: function(achou){
    return '|autorlink' + (achou[1] ? achou[1] : '') + ' =';
} },
{ reg: /\|\s*first(\d)?\s*=/, subs: function(achou){
    return '|primeiro' + (achou[1] ? achou[1] : '') + ' =';
} },
{ reg: /\|\s*last(\d)?\s*=/, subs: function(achou){
    return '|último' + (achou[1] ? achou[1] : '') + ' =';
} },
{ reg: /\|\s* editor(\d)?\-last\s*=/, subs: function(achou){
    return '|editor-sobrenome' + (achou[1] ? achou[1] : '') + ' =';
} },
{ reg: /\|\s* editor(\d)?\-first\s*=/, subs: function(achou){
    return '|editor-nome' + (achou[1] ? achou[1] : '') + ' =';
} } ];

//predefinições com exceção de verificação
excecoes = [/\{\{\s*I?i?nfo/];

//predefinições com exclusividade de verificação
apenas = [ /\{\{\s*[Cc]itar web\s*\|/,
    /\{\{\s*[Cc]itar vídeo notas\s*\|/,
    /\{\{\s*[Cc]itar vídeo\s*\|/,
    /\{\{\s*[Cc]itar tese\s*\|/,
    /\{\{\s*[Cc]itar revista\s*\|/,
    /\{\{\s*[Cc]itar relatório/,
    /\{\{\s*[Cc]itar podcast\s*\|/,
    /\{\{\s*[Cc]itar periódico\s*\|/,
    /\{\{\s*[Cc]itar mapa\s*\|/,
    /\{\{\s*[Cc]itar livro\s*\|/,
    /\{\{\s*[Cc]itar lista de discussão/,
    /\{\{\s*[Cc]itar jornal\s*\|/,
    /\{\{\s*[Cc]itar notícia\s*\|/,
    /\{\{\s*[Cc]itar grupo de notícias/,
    /\{\{\s*[Cc]itar episódio\s*\|/,
    /\{\{\s*[Cc]itar entrevista\s*\|/,
    /\{\{\s*[Cc]itar enciclopédia\s*\|/,
    /\{\{\s*[Cc]itar discurso\s*\|/,
    /\{\{\s*[Cc]itar conferência\s*\|/,
    /\{\{\s*[Cc]itar comunicados? de imprensa/,
    /\{\{\s*[Cc]itar ar[Xx]iv\s*\|/,
    /\{\{\s*[Cc]ite web\s*\|/,
    /\{\{\s*[Cc]iteweb\s*\|/,
    /\{\{\s*[Cc]ite AV media notes/,
    /\{\{\s*[Cc]ite video\s*\|/,
    /\{\{\s*[Cc]ite AV media/,
    /\{\{\s*[Cc]ite thesis/,
    /\{\{\s*[Cc]ite magazine/,
    /\{\{\s*[Cc]ite report\s*\|/,
    /\{\{\s*[Cc]ite podcast\s*\|/,
    /\{\{\s*[Cc]ite news\s*\|/,
    /\{\{\s*[Cc]ite newspaper/,
    /\{\{\s*[Cc]ite map\s*\|/,
    /\{\{\s*[Cc]ite book\s*\|/,
    /\{\{\s*[Cc]ite mailing list/,
    /\{\{\s*[Cc]ite journal\s*\|/,
    /\{\{\s*[Cc]ite newsgroup/,
    /\{\{\s*[Cc]ite episode\s*\|/,
    /\{\{\s*[Cc]ite interview\s*\|/,
    /\{\{\s*[Cc]ite encyclopedia\s*\|/,
    /\{\{\s*[Cc]ite conference\s*\|/,
    /\{\{\s*[Cc]ite press(?: release|)\s*\|/,
    /\{\{\s*[Cc]ite ar[xX]iv\s*\|/,
    /\{\{\s*[Cc]itation\s*\|/
]

function substComExcecao(texto, cond) {
    var tmp = '';

    for (var j = 0; j < cond.length; j++) {
        while (texto) {
            var pos = texto.search(cond[j].reg);
            while (excecoes.length > 0 && pos != -1) {
                var exce = -1;
                for (var i = 0; i < excecoes.length; i++) {
                    var _exce = texto.search(excecoes[i]);
                    if ((exce == -1) || (_exce != -1 && _exce < exce))
                        exce = _exce;
                }
                if (exce == -1) {
                    pos = texto.search(cond[j].reg);
                    break;
                }
                if (pos < exce){
                    pos = texto.search(cond[j].reg);
                    break;
                }
                var bloco = 0;
                var exceInicial = exce;
                for (; exce < texto.length; exce++) {
                    if (texto.charAt(exce) == '{' && texto.charAt(exce + 1) == '{') {
                        bloco++;
                        exce++; //O próximo char já foi verificado
                    }
                    else if (texto.charAt(exce) == '}' && texto.charAt(exce + 1) == '}') {
                        bloco--;
                        exce++; //O próximo char já foi verificado
                    }
                    if (bloco == 0) break;
                }
                if (bloco != 0) {
                    alert("Erro: O bloco da predefinição perto da linha " + (tmp + texto.substring
                        (0, exceInicial)).split('\n').length + " nunca é fechado");
                    undefined.pararExecucao = 0;
                }
                tmp += texto.substring(0, exce);
                texto = texto.substring(exce);
                pos = texto.search(cond[j].reg);
            }

            if (pos > -1) {
                tmp += texto.substring(0, pos);
                texto = texto.substring(pos);
                var achou = texto.match(cond[j].reg);
                texto = texto.replace(achou[0], '');
                tmp += cond[j].subs(achou);
            } else {
                tmp += texto;
                texto = "";
            }
        }
        texto = tmp;
            tmp = '';
    }
    return texto;
}

function substApenas(texto, cond) {
    var tmp = '';

    while (texto) {
        var apen = -1;
        for (var i = 0; i < apenas.length; i++) {
            var _apen = texto.search(apenas[i]);
            if ((apen == -1) || (_apen != -1 && _apen < apen))
                apen = _apen;
        }
        if (apen == -1) {
            tmp += texto;
            texto = '';
            break;
        }

        var bloco = 1;
        var apenInicial = apen;
        for (++apen; apen < texto.length; apen++) {
            if (texto.charAt(apen) == '{' && texto.charAt(apen + 1) == '{') {
                bloco++;
                apen++; //O próximo char já foi verificado
            }
            else if (texto.charAt(apen) == '}' && texto.charAt(apen + 1) == '}') {
                bloco--;
                apen++; //O próximo char já foi verificado
            }
            if (bloco == 0) break;
        }
        if (bloco != 0) {
            alert("Erro: O bloco da predefinição perto da linha " + (tmp + texto.substring
                (0, apenInicial)).split('\n').length + " nunca é fechado");
            undefined.pararExecucao = 0;
        }
        tmp += texto.substring(0, apenInicial)
            + substituir(texto.substring(apenInicial, apen), cond);
        texto = texto.substring(apen);
    }

    return tmp;
}

function substituir(texto, cond) {
    var tmp = '';

    for (var j = 0; j < cond.length; j++) {
        while (texto) {
            var pos = texto.search(cond[j].reg);
            if (pos > -1) {
                tmp += texto.substring(0, pos);
                texto = texto.substring(pos);
                var achou = texto.match(cond[j].reg);
                texto = texto.replace(achou[0], '');
                tmp += cond[j].subs(achou);
            } else {
                tmp += texto;
                texto = "";
            }
        }
        texto = tmp;
            tmp = '';
    }
    return texto;
}

function subsTextoBox(janela) {
    if (janela == window) _();
    else $(janela).load(_);

    function _(){
        var box = janela.document.getElementById('wpTextbox1');
        var temp =  box.value;
        var mudou = {};
        var sumario = '';
        var comp;
        var escape = 0;
        var aviso = false;

        { // Verificar se há blocos não fechados
            var bloco = 0;
            var pbloco = 0;
            for (var pos = 0; pos < temp.length; pos++) {
                if (temp.charAt(pos) == '{' && temp.charAt(pos + 1) == '{') {
                    if (bloco == 0) pbloco = pos;
                    bloco++;
                    pos++; //O próximo char já foi verificado
                } else if (temp.charAt(pos) == '}' && temp.charAt(pos + 1) == '}') {
                    bloco--;
                    pos++; //O próximo char já foi verificado
                }
                if (bloco == -1) {
                    var linhas = temp.substring(0, pos).split('\n');
                    document.getElementById("editpage-copywarn").innerHTML += "<div style='color: red'>Aviso:</div> Na linha: " + linhas.length + ", e posição: " + linhas
                    [linhas.length -1].length + " teve bloco fechado sem nenhum aberto. Para "
                    + "ignorar clique em 'Mostrar alterações'";
                    aviso = true;
                    bloco = 0;
                }
            }
            if (bloco != 0) {
                var linhas = temp.substring(0, pbloco).split('\n');
                alert("Erro: O bloco da predefinição na linha: " + linhas.length
                    + ", e posição: " + linhas[linhas.length -1].length + " nunca é fechado");
                return;
            }
        }

        do {
            if (escape == 3) {
                alert("Parece haver algo errado. Parando a execução");
                return;
            }
            escape++;
            comp = temp;
            temp = substApenas(temp, datas);
            if ((! mudou.data) && comp != temp) {
                mudou.data = true;
                if (sumario != '')
                    sumario += ', ';
                sumario += 'ajustando datas nas citações';
            }
        } while(comp != temp)

        escape = 0;
        do {
            if (escape == 3) {
                alert("Parece haver algo errado. Parando a execução");
                return;
            }
            escape++;
            comp = temp;
            temp = substApenas(temp, subpred);
            if ((! mudou.parametro) && comp != temp) {
            mudou.parametro = true;
                if (sumario != '')
                    sumario += ', ';
                sumario += 'traduzindo nome/parâmetro de predefinições do inglês para português';
            }
        } while(comp != temp)

        escape = 0;
        do {
            if (escape == 3) {
                alert("Parece haver algo errado. Parando a execução");
                return;
            }
            escape++;
            comp = temp;
            temp = substituir(temp, geral);
            if ((! mudou.outros) && comp != temp) {
                mudou.outros = true;
                if (sumario != '')
                    sumario += ', outros ';
                sumario += 'ajustes';
            }
        } while(comp != temp)

        escape = 0;
        do {
            if (escape == 3) {
                alert("Parece haver algo errado. Parando a execução");
                return;
            }
            escape++;
            comp = temp;
            temp = substApenas(temp, rgeral);
            if ((! mudou.outros) && comp != temp) {
                mudou.outros = true;
                if (sumario != '')
                    sumario += ', outros ';
                sumario += 'ajustes';
            }
        } while(comp != temp)

        box.value =  temp;
        if (sumario != '')
            sumario += ' usando [[JavaScript]]';
        janela.document.getElementById('wpSummary').value = sumario;
        janela.document.getElementById('wpMinoredit').checked = true;
        if (! aviso) {
            //janela.document.getElementById('wpPreview').click();
            janela.document.getElementById('wpDiff').click();
            //janela.document.getElementById('wpSave').click();
        }
    }
}

var categoria;
var afluentes;
if (categoria = document.getElementsByClassName("mw-category-group")[0]){
    fCategoria = function() {
        categoria.innerHTML = substituir(categoria.innerHTML, links);
    }
    categoria.innerHTML = '<input type="button" value="Criar links de edição automática" onclick ="fCategoria()" ><br>' + categoria.innerHTML
}else if (afluentes = document.getElementById("mw-whatlinkshere-list")) {
    fAfluentes = function() {
        afluentes.innerHTML = substituir(afluentes.innerHTML, links)
    }
    afluentes.innerHTML = '<input type="button" value="Criar links de edição automática" onclick ="fAfluentes()" ><br>' + afluentes.innerHTML
    //afluentes.innerHTML = substituir(afluentes.innerHTML, links);
}
else if (document.getElementById('wpTextbox1')) {
    document.getElementById('wpDiff').outerHTML =
    document.getElementById('wpDiff').outerHTML.replace('accesskey="v"', 'accesskey="d"')
    .replace('alt-shift-v', 'alt-shift-d')
    + '\n<input id="Ajustes automáticos" '
    + 'name="Ajustes automáticos" tabindex="7" title="Ajustes automáticos [alt-shift-a]" '
    + 'type="button" value="Ajustes automáticos" accesskey="a" onclick="subsTextoBox(window)">';
   // subsTextoBox(window)
}