Usuária:IJuulia/Ajustes.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.
mw.loader.using('mediawiki.storage').then(function () {
  mw.storage.session.set( 'client-error-opt-out', '1' );
});

novoEditor = mw.user.options.get('visualeditor-newwikitext') == '1';

var mesesLang = ['january', 'february', 'march', 'april', 'may', 'june', 'july', 'august', 'september', 'october', 'november', 'december', /* 'janeiro', 'fevereiro', 'março', 'marco', 'abril', 'maio', 'junho', 'julho', 'agosto', 'setembro', 'outubro', 'novembro', 'dezembro', */ 'enero', 'febrero', 'marzo', 'mayo', 'junio', 'julio', 'septiembre', 'octubre', 'noviembre', 'diciembre', 'summer', 'spring', 'fall', 'autumn', 'winter', 'verano', 'otono', 'otoño', 'invierno'];
var mesesNum = ['01', '02', '03', '04', '05', '06', '07', '08', '09', '10', '11', '12', /* '01', '02', '03', '03', '04', '05', '06', '07', '08', '09', '10', '11', '12', */ '01', '02', '03', '05', '06', '07', '09', '10', '11', '12', 'verão', 'primavera', 'outono', 'outono', 'inverno', 'verão', 'outono', 'outono', 'inverno'];

function tradisoMes(mes) {
	for (var i = 0; i < mesesLang.length; i++) {
		if (mes.toLocaleLowerCase() == mesesLang[i]
			|| mes.toLocaleLowerCase() == mesesLang[i].substring(0, 3))
			return mesesNum[i];
	}
	return 'falhou';
}

var cvGrauO = "([^\\|\\}]*°[^\\|\\}]*[\\|\\}])",
	diaMesAnoP = "(\\d+)\\s+de\\s+([A-Za-zç]+)\\s+de\\s+(\\d+)\\.?",
	diaMesAno = "(\\d+(?:[–\\-\\/]\\d+|)),?\\s+([A-Za-zç]+),?\\s+(\\d\\d\\d\\d?)\\.?",
	linkDiaMesAno = "\\[\\[(\\d+(?:[–\\-\\/]\\d+|))\\s+de\\s+([A-Za-zç]+)\\]\\]\\s+de\\s+\\[?\\[?(\\d+)\\]?\\]?\\.?",
	linkData = "\\[\\[(\\d+)\\]\\]\\.?",
	mesDiaAno = "([A-Za-zç]+),?\\s+(\\d+(?:[–\\-\\/]|)),?\\s+(\\d\\d\\d\\d?)\\.?",
	mesAno = "([A-Za-zç]+),?\\s+(\\d\\d\\d\\d?)\\.?",
	mesMesAno = "([A-Za-zç]+)\\s*[–\\-\\/]\\s*([A-Za-zç]+),?\\s*d?e?\\s+(\\d\\d\\d\\d?)\\.?",
	sAnoMesDia = "(\\d\\d\\d\\d?)[\\-\\/]([A-Za-zç]+)[\\-\\/](\\d\\d?)\\.?",
	sDiaMesAno = "(\\d\\d?)[\\-\\/]([A-Za-zç]+)[\\-\\/]\\,?\\.?(\\d\\d\\d\\d?)\\.?",
	ssDiaMesAno = "(\\d\\d?)\\s*\\/\\s*(\\d\\d?)\\s*\\/\\s*(\\d\\d\\d\\d?)\\.?",
	ddDiaMesAno = "([1-3]\\d\\d?)\\s*d*e*\\.?\\s*([A-Za-zç]+)\\s*d*e*\\.?\\,?\\s*(\\d\\d\\d\\d)\\.?\\,?",
	diaMesVAno = "\\[?\\[?(\\d\\d?(?:[–\\-\\/]\\d\\d?|))\\s+de\\s+([A-Za-zç]+)\\]?\\]?,?\\s+\\[?\\[?(\\d\\d\\d\\d?)\\]?\\]?\\.?",
	prData = "\\{\\{\\s*(?:[Ss]tart date|[Dd]ata|[Dd]ata de início)\\s*\\|\\s*(\\d\\d\\d\\d?)\\s*\\|\\s*(\\d\\d?)\\s*\\|\\s*(\\d\\d?)[^\{\}]*\\}\\}\\.?",
	prDataExt = "\\{\\{[Dd]a?ta?[Ee]xt\\s*\\|\\s*(\\d\\d?)\\s*\\|\\s*(\\d\\d?)\\s*\\|\\s*(\\d\\d\\d\\d?)[^\{\}]*\\}\\}\\.?";

var data = "\\|\\s*(?:dat[ea]|year|a[ñn]o|fecha)\\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*=";
	
var idioma = "(\\|\\s*(?:l[íi]ngua|idioma)\\s*=\\s*)";

function rDatas(alt, padrao) {
	if (alt.match(/falhou/)) return padrao;
	else return alt;
}
function rdata(alt, padrao) {
	return rDatas('|data=' + 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);
}

citacoes = {
	datas: {
		cond: [
			{
				reg: /\|\s*(?:ano|year)\s*=\s*((:?\d\d?[\.º°]?[º°]?\s+de\s+|)[A-Za-zç]+\s+de\s+\d\d\d\d?)/, subs: function(achou) {
					return rdata(achou[1], achou[0]);
				}
			},
			{
				reg: /\|\s*(?:ano|year)\s*=\s*\[\[(\d\d\d\d?)\]\]/, subs: function(achou) {
					return '|ano=' + achou[1];
				}
			},
			{
				reg: new RegExp(data + diaMesAnoP), subs: function(achou) {
					return rdata(achou[1] + '-' + tradisoMes(achou[2]) + '-' + achou[3], achou[0]);
				}
			},
			{
				reg: new RegExp(data + diaMesAno), subs: function(achou) {
					return rdata(achou[1].replace(/[\-\/]/, '–') + '-' + tradisoMes(achou[2]) + '-' + achou[3], achou[0]);
				}
			},
			{
				reg: new RegExp(data + linkDiaMesAno), subs: function(achou) {
					return rdata(achou[1].replace(/[\-\/]/, '–') + '-' + tradisoMes(achou[2]) + '-' + achou[3], achou[0]);
				}
			},
			{
				reg: new RegExp(data + mesDiaAno), subs: function(achou) {
					return rdata(achou[2].replace(/[\-\/]/, '–') + '-' + tradisoMes(achou[1]) + '-' + achou[3], achou[0]);
				}
			},
			{
				reg: new RegExp(data + mesAno), subs: function(achou) {
					return rdata(tradisoMes(achou[1]) + '-' + achou[2], achou[0]);
				}
			},
			{
				reg: new RegExp(data + mesMesAno), subs: function(achou) {
					return rdata(tradisoMes(achou[1]) + '–' + tradisoMes(achou[2]) + '-' + achou[3], achou[0]);
				}
			},
			{
				reg: new RegExp(data + sAnoMesDia), subs: function(achou) {
					return rdata(achou[3] + '-' + tradisoMes(achou[2]) + '-' + achou[1], achou[0]);
				}
			},
			{
				reg: new RegExp(data + sDiaMesAno), subs: function(achou) {
					return rdata(achou[1] + '-' + tradisoMes(achou[2]) + '-' + achou[3], achou[0]);
				}
			},
			{
				reg: new RegExp(data + ssDiaMesAno), subs: function(achou) {
					return rdata(achou[1] + '-' + achou[2] + '-' + achou[3], achou[0]);
				}
			},
			{
				reg: new RegExp(data + ddDiaMesAno), subs: function(achou) {
					return rdata(achou[1] + '-' + tradisoMes(achou[2]) + '-' + achou[3], achou[0]);
				}
			},
			{
				reg: new RegExp(data + diaMesVAno), subs: function(achou) {
					return rdata(achou[1].replace(/[\-\/]/, '–') + '-' + tradisoMes(achou[2]) + '-' + achou[3], achou[0]);
				}
			},
			{
				reg: new RegExp(data + prData), subs: function(achou) {
					return rdata(achou[3] + '-' + mesesNum[achou[2] - 1] + '-' + achou[1], achou[0]);
				}
			},
			{
				reg: new RegExp(data + prDataExt), subs: function(achou) {
					return rdata(achou[1] + '-' + mesesNum[achou[2] - 1] + '-' + achou[3], achou[0]);
				}
			},
			{
				reg: new RegExp(acessodata + diaMesAno), subs: function(achou) {
					return racessodata(achou[1] + '-' + tradisoMes(achou[2]) + '-' + achou[3], achou[0]);
				}
			},
			{
				reg: new RegExp(acessodata + mesDiaAno), subs: function(achou) {
					return racessodata(achou[2] + '-' + tradisoMes(achou[1]) + '-' + achou[3], achou[0]);
				}
			},
			{
				reg: new RegExp(acessodata + linkDiaMesAno), subs: function(achou) {
					return racessodata(achou[1] + '-' + tradisoMes(achou[2]) + '-' + achou[3], achou[0]);
				}
			},
			{
				reg: new RegExp(acessodata + prData), subs: function(achou) {
					return racessodata(achou[3] + '-' + mesesNum[achou[2] - 1] + '-' + achou[1], achou[0]);
				}
			},
			{
				reg: new RegExp(acessodata + prDataExt), subs: function(achou) {
					return racessodata(achou[1] + '-' + mesesNum[achou[2] - 1] + '-' + achou[3], achou[0]);
				}
			},
			{
				reg: new RegExp(acessodata + diaMesVAno), subs: function(achou) {
					return racessodata(achou[1] + '-' + tradisoMes(achou[2]) + '-' + achou[3], achou[0]);
				}
			},
			{
				reg: new RegExp(acessodata + sAnoMesDia), subs: function(achou) {
					return racessodata(achou[3] + '-' + tradisoMes(achou[2]) + '-' + achou[1] + achou[4], achou[0]);
				}
			},
			{
				reg: new RegExp(acessodata + sDiaMesAno), subs: function(achou) {
					return racessodata(achou[1] + '-' + tradisoMes(achou[2]) + '-' + achou[3] + achou[4], achou[0]);
				}
			},
			{
				reg: new RegExp(acessodata + ssDiaMesAno), subs: function(achou) {
					return racessodata(achou[1] + '-' + achou[2] + '-' + achou[3] + achou[4], achou[0]);
				}
			},
			{
				reg: new RegExp(acessodata + ddDiaMesAno), subs: function(achou) {
					return racessodata(achou[1] + '-' + tradisoMes(achou[2]) + '-' + achou[3] + achou[4], achou[0]);
				}
			},
			{
				reg: new RegExp(acessodata + "\\s*([A-Za-zç]+)\\s+,?d?e?\\s*(\\d\\d\\d\\d?)\\.?"), subs: function(achou) {
					return racessodata('01-' + tradisoMes(achou[1]) + '-' + achou[2], achou[0]);
				}
			},
			{
				reg: new RegExp(publicacao + diaMesAno), subs: function(achou) {
					return rpublicacao(achou[1].replace(/[\-\/]/, '–') + '-' + tradisoMes(achou[2]) + '-' + achou[3], achou[0]);
				}
			},
			{
				reg: new RegExp(publicacao + mesDiaAno), subs: function(achou) {
					return rpublicacao(achou[2].replace(/[\-\/]/, '–') + '-' + tradisoMes(achou[1]) + '-' + achou[3], achou[0]);
				}
			},
			{
				reg: new RegExp(publicacao + mesAno), subs: function(achou) {
					return rpublicacao(tradisoMes(achou[1]) + '-' + achou[2], achou[0]);
				}
			},
			{
				reg: new RegExp(publicacao + diaMesVAno), subs: function(achou) {
					return rpublicacao(achou[1].replace(/[\-\/]/, '–') + '-' + tradisoMes(achou[2]) + '-' + achou[3], achou[0]);
				}
			},
			{
				reg: new RegExp(publicacao + mesAno), subs: function(achou) {
					return rpublicacao(tradisoMes(achou[1]) + '-' + achou[2], achou[0]);
				}
			},
			{
				reg: new RegExp(publicacao + mesMesAno), subs: function(achou) {
					return rpublicacao(tradisoMes(achou[1]) + '–' + tradisoMes(achou[2]) + '-' + achou[3], achou[0]);
				}
			},
			{
				reg: new RegExp(publicacao + sAnoMesDia), subs: function(achou) {
					return rpublicacao(achou[3] + '-' + tradisoMes(achou[2]) + '-' + achou[1] + achou[4], achou[0]);
				}
			},
			{
				reg: new RegExp(publicacao + sDiaMesAno), subs: function(achou) {
					return rpublicacao(achou[1] + '-' + tradisoMes(achou[2]) + '-' + achou[3] + achou[4], 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] + '-' + tradisoMes(achou[2]) + '-' + achou[3], achou[0]);
				}
			},
			{
				reg: new RegExp(arquivodata + mesDiaAno), subs: function(achou) {
					return rarquivodata(achou[2] + '-' + tradisoMes(achou[1]) + '-' + achou[3], achou[0]);
				}
			},
			{
				reg: new RegExp(arquivodata + diaMesVAno), subs: function(achou) {
					return rarquivodata(achou[1] + '-' + tradisoMes(achou[2]) + '-' + achou[3], achou[0]);
				}
			},
			{
				reg: new RegExp(arquivodata + sAnoMesDia), subs: function(achou) {
					return rarquivodata(achou[3] + '-' + tradisoMes(achou[2]) + '-' + achou[1] + achou[4], achou[0]);
				}
			},
			{
				reg: new RegExp(arquivodata + sDiaMesAno), subs: function(achou) {
					return rarquivodata(achou[1] + '-' + tradisoMes(achou[2]) + '-' + achou[3] + achou[4], achou[0]);
				}
			},
			{
				reg: new RegExp(arquivodata + ssDiaMesAno), subs: function(achou) {
					return rarquivodata(achou[1] + '-' + achou[2] + '-' + achou[3] + achou[4], achou[0]);
				}
			}
		],
		sumario: 'ajustando datas'
	},

	tradpred: {
		cond: [
			{
				reg: /\{\s*(?:[Cc]it[ae] ?[Ww]eb|[Ll]ien web|[rR]ef-web|[Cc]iteer web|[wW]ebbref)(\s*\|)/, subs: function(achou) {
					return '{citar web' + achou[1];
				}
			},
			{
				reg: /\{\s*[Cc]ite AV media notes *(\s*\|)/, subs: function(achou) {
					return '{citar vídeo notas' + achou[1];
				}
			},
			{
				reg: /\{\s*[Cc]ite (?:video|AV media) *(\s*\|)/, subs: function(achou) {
					return '{citar vídeo' + achou[1];
				}
			},
			{
				reg: /\{\s*[Cc]ite video game *(\s*\|)/, subs: function(achou) {
					return '{citar jogo eletrônico' + achou[1];
				}
			},
			{
				reg: /\{\s*[Cc]ite thesis *(\s*\|)/, subs: function(achou) {
					return '{citar tese' + achou[1];
				}
			},
			{
				reg: /\{\s*[Cc]ite magazine *(\s*\|)/, subs: function(achou) {
					return '{citar revista' + achou[1];
				}
			},
			{
				reg: /\{\s*[Cc]ite report *(\s*\|)/, subs: function(achou) {
					return '{citar relatório' + achou[1];
				}
			},
			{
				reg: /\{\s*[Cc]ite podcast *(\s*\|)/, subs: function(achou) {
					return '{citar podcast' + achou[1];
				}
			},
			{
				reg: /\{\s*[Cc]it[ea] ?news(?:paper|) *(\s*\|)/, subs: function(achou) {
					return '{citar jornal' + achou[1];
				}
			},
			{
				reg: /\{\s*[Cc]itar notícia *(\s*\|)/, subs: function(achou) {
					return '{citar jornal' + achou[1];
				}
			},
			{
				reg: /\{\s*[Cc]ite map *(\s*\|)/, subs: function(achou) {
					return '{citar mapa' + achou[1];
				}
			},
			{
				reg: /\{\s*(?:[Cc]ite book|[Cc]itar libro) *(\s*\|)/, subs: function(achou) {
					return '{citar livro' + achou[1];
				}
			},
		   {
				reg: /\{\s*[Cc]ite mailing list *(\s*\|)/, subs: function(achou) {
					return '{citar lista de discussão' + achou[1];
				}
			},
			{
				reg: /\{\s*[Cc]ite (?:journal|paper|document|periodical)\s*(\s*\|)/, subs: function(achou) {
					return '{citar periódico' + achou[1];
				}
			},
			{
				reg: /\{\s*[Cc]ite newsgroup *(\s*\|)/, subs: function(achou) {
					return '{citar grupo de notícias' + achou[1];
				}
			},
			{
				reg: /\{\s*[Cc]ite episode *(\s*\|)/, subs: function(achou) {
					return '{citar episódio' + achou[1];
				}
			},
			{
				reg: /\{\s*[Cc]ite serial *(\s*\|)/, subs: function(achou) {
					return '{citar série' + achou[1];
				}
			},
			{
				reg: /\{\s*[Cc]ite interview *(\s*\|)/, subs: function(achou) {
					return '{citar entrevista' + achou[1];
				}
			},
			{
				reg: /\{\s*[Cc]ite encyclopedia *(\s*\|)/, subs: function(achou) {
					return '{citar enciclopédia' + achou[1];
				}
			},
			{
				reg: /\{\s*[Cc]ite conference *(\s*\|)/, subs: function(achou) {
					return '{citar conferência' + achou[1];
				}
			},
			{
				reg: /\{\s*[Cc]ite press(?: release|) *(\s*\|)/, subs: function(achou) {
					return '{citar comunicado de imprensa' + achou[1];
				}
			},
			{
				reg: /\{\s*[Cc]ite ar[Xx]iv *(\s*\|)/, subs: function(achou) {
					return '{citar arXiv' + achou[1];
				}
			},
			{
				reg: /\{\s*[Cc]ite tweet *(\s*\|)/, subs: function(achou) {
					return '{citar tweet' + achou[1];
				}
			},
			{
				reg: /\|\s*at\s*=/, subs: function(achou) {
					return '|em=';
				}
			},
			{
				reg: /\|\s*(?:acc?esso?-?dat[ea]|dataacesso|fechaacceso)\s*=/, subs: function(achou) {
					return '|acessodata=';
				}
			},
			{
				reg: /\|\s*(?:date|fecha)\s*=/, subs: function(achou) {
					return '|data=';
				}
			},
			{
				reg: /\|\s*month\s*=/, subs: function(achou) {
					return '|mês=';
				}
			},
			{
				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|data\-?arquivo)\s*=/, subs: function(achou) {
					return '|arquivodata=';
				}
			},
			{
				reg: /\|\s*(:?archive\-?url|urlarchivo)\s*=/, subs: function(achou) {
					return '|arquivourl=';
				}
			},
			{
				reg: /\|\s*agency\s*=/, subs: function(achou) {
					return '|agência=';
				}
			},
			{
				reg: /\|\s*auth?ore?s\s*=/, subs: function(achou) {
					return '|autor=';
				}
			},
			{
				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ítulo=';
				}
			},
			{
				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*subt[ií]tulo\s*=\s*\|/, subs: function(achou) {
					return '|';
				}
			},
			{
				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*(?:dead\-?url|url\-status)\s*=/, subs: function(achou) {
					return '|urlmorta=';
				}
			},
			{
				reg: /(\|urlmorta=)[Ll][Ii][Vv][Ee]/, subs: function(achou) {
					return achou[1] + 'no';
				}
			},
			{
				reg: /(\|urlmorta=)[Dd][Ee][Aa][Dd]/, subs: function(achou) {
					return achou[1] + 'yes';
				}
			},
			{
				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*trabalho\s*=/, subs: function(achou) {
					return '|publicação=';
				}
			},
			{
				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*page(s?)\s*=/, subs: function(achou) {
					return '|página' + achou[1] + '=';
				}
			},
			{
				reg: /\|\s*(?:number|issue)\s*=/, subs: function(achou) {
					return '|número=';
				}
			},
			{
				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|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*(?:url-access|acessourl)\s*=\s*subscription/, subs: function(achou) {
					return '|acessourl=subscrição';
				}
			 },
			 {
				reg: /\|\s*(?:url-access|acessourl)\s*=\s*registration/, subs: function(achou) {
					return '|acessourl=registro';
				}
			 },
			 {
				reg: /\|\s*(?:url-access|acessourl)\s*=\s*limited/, subs: function(achou) {
					return '|acessourl=limitado';
				}
			 },
			 {
				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?)\s*=/, subs: function(achou) {
					return '|folha' + achou[1] + '=';
				}
			},
			{
				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 '|legenda=';
				}
			},
			{
				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|año)\s*=/, subs: function(achou) {
					return '|ano=';
				}
			},
			{
				reg: /\|\s*platform\s*=/, subs: function(achou) {
					return '|plataforma=';
				}
			},
			{
				reg: /\|\s*version\s*=/, subs: function(achou) {
					return '|versão=';
				}
			},
			{
				reg: /\|\s*scene\s*=/, subs: function(achou) {
					return '|cena=';
				}
			},
			{
				reg: /\|\s*level\s*=/, subs: function(achou) {
					return '|fase=';
				}
			},
			{
				reg: /\|\s*author(\d\d?)?\s*=/, subs: function(achou) {
					return '|autor' + (achou[1] ? achou[1] : '') + '=';
				}
			},
			{
				reg: /\|\s*author(\d\d?)?\-?link\s*=/, subs: function(achou) {
					return '|autorlink' + (achou[1] ? achou[1] : '') + '=';
				}
			},
			{
				reg: /\|\s*first(\d\d?)?\s*=/, subs: function(achou) {
					return '|primeiro' + (achou[1] ? achou[1] : '') + '=';
				}
			},
			{
				reg: /\|\s*last(\d\d?)?\s*=/, subs: function(achou) {
					return '|último' + (achou[1] ? achou[1] : '') + '=';
				}
			},
			{
				reg: /\|\s*editor(\d\d?)?\-last\s*=/, subs: function(achou) {
					return '|editor-sobrenome' + (achou[1] ? achou[1] : '') + '=';
				}
			},
			{
				reg: /\|\s*editor(\d\d?)?\-first\s*=/, subs: function(achou) {
					return '|editor-nome' + (achou[1] ? achou[1] : '') + '=';
				}
			},
			{
				reg: /\|\s*developer(\d\d?)?\s*=/, subs: function(achou) {
					return '|desenvolvedor' + (achou[1] ? achou[1] : '') + '=';
				}
			}
		],
		sumario: 'traduzindo nome/parâmetro'
	},
	
	obsoleto: {
		cond: [
			{
				reg: /(\|?)\s*[^|]+\s*=\s*\|/, subs: function(achou) {
					return achou[1];
				}
			},
			{
				reg: /(=\s*)\{\{no(?:italic|bold)\|([^|}]+)\}\}/, subs: function(achou) {
					return achou[1] + achou[2];
				}
			},
			{
				reg: /(\|\s*páginas?\s*=)(?:\s*pp?s?\.?\s*)/, subs: function(achou) {
					return achou[1];
				}
			},
			{
				reg: /\|\s*coauth?ore?s?\s*=/, subs: function(achou) {
					return '|autor2=';
				}
			},
			{
				reg: /\|\s*[Ee]ditore?s\s*=/, subs: function(achou) {
					return '|editor=';
				}
			},
			{
				reg: /((?:\|\s*(?:autor|[uú]ltimo|primeiro|sobrenome|nome)\d*\s*=\s*|;\s+)\w+),?\s+([A-Z]+),/, subs: function(achou) {
					return achou[1] + ',' + achou[2] + ';';
				}
			},
			{
				reg: /(\|\s*(?:autor|[uú]ltimo|primeiro|sobrenome|nome)1?\s*=[^;&|]+)(?:;|[;,]? &|[;,]? and|[;,]? e) ([^,;&}|]+)/, subs: function(achou) {
					return achou[1] + '|autor2=' + achou[2];
				}
			},
			{
				reg: /(\|\s*(?:autor|[uú]ltimo|primeiro|sobrenome|nome)2\s*=[^;&|]+)(?:;|[;,]? &|[;,]? and|[;,]? e) ([^,;&}|]+)/, subs: function(achou) {
					return achou[1] + '|autor3=' + achou[2];
				}
			},
			{
				reg: /(\|\s*(?:autor|[uú]ltimo|primeiro|sobrenome|nome)3\s*=[^;&|]+)(?:;|[;,]? &|[;,]? and|[;,]? e) ([^,;&}|]+)/, subs: function(achou) {
					return achou[1] + '|autor4=' + achou[2];
				}
			},
			{
				reg: /(\|\s*(?:autor|[uú]ltimo|primeiro|sobrenome|nome)4\s*=[^;&|]+)(?:;|[;,]? &|[;,]? and|[;,]? e) ([^,;&}|]+)/, subs: function(achou) {
					return achou[1] + '|autor5=' + achou[2];
				}
			},
			{
				reg: /(\|\s*(?:autor|[uú]ltimo|primeiro|sobrenome|nome)5\s*=[^;&|]+)(?:;|[;,]? &|[;,]? and|[;,]? e) ([^,;&}|]+)/, subs: function(achou) {
					return achou[1] + '|autor6=' + achou[2];
				}
			},
			{
				reg: /(\|\s*(?:autor|[uú]ltimo|primeiro|sobrenome|nome)6\s*=[^;&|]+)(?:;|[;,]? &|[;,]? and|[;,]? e) ([^,;&}|]+)/, subs: function(achou) {
					return achou[1] + '|autor7=' + achou[2];
				}
			},
			{
				reg: /(\|\s*(?:autor|[uú]ltimo|primeiro|sobrenome|nome)7\s*=[^;&|]+)(?:;|[;,]? &|[;,]? and|[;,]? e) ([^,;&}|]+)/, subs: function(achou) {
					return achou[1] + '|autor8=' + achou[2];
				}
			},
			{
				reg: /(\|\s*(?:autor|[uú]ltimo|primeiro|sobrenome|nome)8\s*=[^;&|]+)(?:;|[;,]? &|[;,]? and|[;,]? e) ([^,;&}|]+)/, subs: function(achou) {
					return achou[1] + '|autor9=' + achou[2];
				}
			},
			{
				reg: /(\|\s*(?:autor|[uú]ltimo|primeiro|sobrenome|nome)9\s*=[^;&|]+)(?:;|[;,]? &|[;,]? and|[;,]? e) ([^,;&}|]+)/, subs: function(achou) {
					return achou[1] + '|autor10=' + achou[2];
				}
			},
			{
				reg: /(\|\s*(?:autor|[uú]ltimo|primeiro|sobrenome|nome)10\s*=[^;&|]+)(?:;|[;,]? &|[;,]? and|[;,]? e) [^,;&}|]+/, subs: function(achou) {
					return achou[1] + '|numero-autores=et al.';
				}
			},
			{
				reg: /\|\s*(?:autor|[uú]ltimo|primeiro|sobrenome|nome)(\d*)\s*=(?:e |and )?([^,;&|]+),\s*([^,;&|]+),?(?: \s*\d+-\d*)?/, subs: function(achou) {
					return '|último' + achou[1] + '=' + achou[2] + '|primeiro' + achou[1] + '=' + achou[3];
				}
			},
			{
				reg: /(\|\s*(?:autor|[úu]ltimo|primeiro|nome|sobrenome)[^|]+)[;, ]*(\'\'\s*et\.? ?al\.?\'?\'?\.?)/, subs: function(achou) {
					return achou[1] + '|numero-autores=' + achou[2];
				}
			},
			{
				reg: /(\|\s*(?:autor|[úu]ltimo|primeiro|nome|sobrenome)[^|]+)[;, ]*(et\.? ?al\.?\.?)/, subs: function(achou) {
					return achou[1] + '|numero-autores=' + achou[2];
				}
			},
			{
				reg: /\|\s*doi_brokendate\s*=/, subs: function(achou) {
					return '|doi-broken-date=';
				}
			},
			{
				reg: /\|\s*(?:l[ií]ngua[23]|lang)\s*=/, subs: function(achou) {
					return '|língua=';
				}
			},
			{
				reg: /(\|\s*[Pp]ublicado) por(\s*=)/, subs: function(achou) {
					return achou[1] + achou[2];
				}
			},
			{
				reg: /(\|\s*[^\n	]+)\s+([^\n	]+(?:\||\}\}))/, subs: function(achou) {
					return achou[1] + ' ' + achou[2];
				}
			},
			{
				reg: /(\|\s*.+)\s(.+)/, subs: function(achou) {
					return achou[1] + ' ' + achou[2];
				}
			}
		],
		sumario: 'parâmetros sem suporte'
	},
	
	geral: {
		cond: [
			/* {
				while (true) {
					reg: /((<ref name=['"]?[\w\d]+['"]?)>[^<]+<\/ref>)([\s\S]+)\1/, subs: function(achou) {
						return achou[1] + achou[3] + achou[2] + "/>";
					}
					return achou[0];
				}
			}, */
			{
				reg: /\|\s*(?:acc?ess?ado?em|dataacc?ess?o)\s*=/, subs: function(achou) {
					return '|acessodata=';
				}
			},
			{
				reg: /(\|\s*)t[ií]tulo\s*=\s*([^\|\}]*[\S])(\s*[\|\}])/, subs: function(achou) {
					if (achou[1].match(/\u200B|\n/)) {
						var tmp = achou[2].replace(/ *\n */g, ' ');
						return achou[1] + '|título=' + tmp.replace(/\u200B/g, '') + achou[3];
					}
					return achou[0];
				}
			},
			{
				reg: /\|\s*[Ii][Dd]\s*=\s*ISBN/, subs: function(achou) {
					return '|isbn=';
				}
			},
			{
				reg: /\{\s*[Rr]eferência a livro/, subs: function(achou) {
					return '{citar livro';
				}
			},
			{
				reg: /\|\s*Ano\s*=/, subs: function(achou) {
					return '|ano=';
				}
			},
			{
				reg: /\|\s*Autor\s*=/, subs: function(achou) {
					return '|autor=';
				}
			},
			{
				reg: /\|\s*Autorlink\s*=/, subs: function(achou) {
					return '|autorlink=';
				}
			},
			{
				reg: /\|\s*[Ee]ditori?al?\s*=/, subs: function(achou) {
					return '|editora=';
				}
			},
			{
				reg: /\|\s*T[ií]tulo\s*=/, subs: function(achou) {
					return '|título=';
				}
			},
			{
				reg: /\|\s*Local de publicação\s*=/, subs: function(achou) {
					return '|local=';
				}
			},
			{
				reg: /\|\s*Subt[ií]tulo\s*=/, subs: function(achou) {
					return '|subtítulo=';
				}
			},
			{
				reg: /\|\s*[Cc]olec?[cç][aã]o\s*=/, subs: function(achou) {
					return '|coleção=';
				}
			},
			{
				reg: /\|\s*N[uú]mero\s*=/, subs: function(achou) {
					return '|número=';
				}
			},
			{
				reg: /\|\s*[Ee]di[cç][aã]o\s*=/, subs: function(achou) {
					return '|edição=';
				}
			},
			{
				reg: /\|\s*Cap[ií]tulo\s*=/, subs: function(achou) {
					return '|capítulo=';
				}
			},
			{
				reg: /\|\s*Notas\s*=/, subs: function(achou) {
					return '|notas=';
				}
			},
			{
				reg: /\|\s*[Vv]olume[ns]\s*=/, subs: function(achou) {
					return '|volume=';
				}
			},
			{
				reg: /\n+\s*(\|\s*(?:acessodata|data|título|titulo|url|obra|coautor\d?|autor\d?|capítulo|urlcapítulo|l[íi]ngua|publicado|arquivodata|arquivourl|urlmorta|notas|outros|wayb|local|ano|editora|edição|p[aá]ginas?|volume|n[úu]mero|autorlink|[úu]ltimo\d*|primeiro\d*|editor\d*|tradutor|periódico|bibcode|id|arxiv|doi|pmid|pmc|versão|isbn|issn|local|urlcapítulo|publicação|editor\d?|ano|m[eê]s|tipo|ref|jornal|grau|instituição|editor-sobrenome\d*|editor-nome\d*|editor-link\d*|contribuição|mr)\s*=\s*)/, subs: function(achou) {
					return achou[1];
				}
			},
			{
				reg: /(\|\s*[Pp][Mm][CcIi][Dd]?\s*=\s*)(?:[Pp][Mm][Cc])+(\d+)/, subs: function(achou) {
					return achou[1] + achou[2];
				}
			},
			{
				reg: /(\|\s*p[áa]ginas?\s*=\s*\d+)-(\d+)/, subs: function(achou) {
					return achou[1] + '–' + achou[2];
				}
			},
			{
				reg: /[“”]/, subs: function(achou) {
					return '"';
				}
			},
			{
				reg: /[‘’]/, subs: function(achou) {
					return '\'';
				}
			},
			{
				reg: /(\|\s*edi[çc][aã]o\s*=\s*\d+)[^|}]+eds?\.?/, subs: function(achou) {
					return achou[1];
				}
			},
			{
				reg: /(\|\s*(?:[Aa]rquivo)?[Uu][Rr][Ll](?:[Cc]ap[íi]tulo)?\s*=)(?! *(?:https?:\/\/|ircs?:\/\/|ftp:\/\/|gopher:\/\/|news:|mailto:))([^|}]+)/, subs: function(achou) {
					return achou[1] + 'http://' + achou[2];
				}
			},
			{
				reg: /(?:== ?Refer[eê]nc[ie]a?s? ?==\n+)?<references ?\/>/, subs: function(achou) {
					return '\{\{Referências\}\}';
				}
			},
			{
				reg: /((?:\[\[[Cc]ategoria:.+\]\]\n+)+)(\{\{Referências\}\})/, subs: function(achou) {
					return achou[2] + '\n\n' + achou[1];
				}
			}
		],
		sumario: 'ajustes gerais'
	},
	
	idiomas: {
		cond: [
			{
				reg: new RegExp(idioma + "\\[?\\[?(?:[Aa]bec[áa]sio|[Aa]bkhazian)\\]?\\]?"), subs: function(achou) {
					return achou[1] + 'ab';
				}
			},
			{
				reg: new RegExp(idioma + "\\[?\\[?[Aa]fri(?:c[âaá]ner|kaans)\\]?\\]?"), subs: function(achou) {
					return achou[1] + 'af';
				}
			},
			{
				reg: new RegExp(idioma + "\\[?\\[?[Aa]kan\\]?\\]?"), subs: function(achou) {
					return achou[1] + 'ak';
				}
			},
			{
				reg: new RegExp(idioma + "\\[?\\[?[Aa]lban(?:[êeé]s|ian)\\]?\\]?"), subs: function(achou) {
					return achou[1] + 'sq';
				}
			},
			{
				reg: new RegExp(idioma + "\\[?\\[?[Aa]mh?[áa]rico?\\]?\\]?"), subs: function(achou) {
					return achou[1] + 'am';
				}
			},
			{
				reg: new RegExp(idioma + "\\[?\\[?[AÁaá]rab(?:e|ic)\\]?\\]?"), subs: function(achou) {
					return achou[1] + 'ar';
				}
			},
			{
				reg: new RegExp(idioma + "\\[?\\[?[Aa]ragon[êeé]se?\\]?\\]?"), subs: function(achou) {
					return achou[1] + 'an';
				}
			},
			{
				reg: new RegExp(idioma + "\\[?\\[?[Aa]rm[êeé]ni(?:o|an)\\]?\\]?"), subs: function(achou) {
					return achou[1] + 'hy';
				}
			},
			{
				reg: new RegExp(idioma + "\\[?\\[?[Aa]ssam[êeé]se?\\]?\\]?"), subs: function(achou) {
					return achou[1] + 'as';
				}
			},
			{
				reg: new RegExp(idioma + "\\[?\\[?[AÁaá]vari?c?\\]?\\]?"), subs: function(achou) {
					return achou[1] + 'av';
				}
			},
			{
				reg: new RegExp(idioma + "\\[?\\[?[Aa]v[ée]st(?:ico|an)\\]?\\]?"), subs: function(achou) {
					return achou[1] + 'ae';
				}
			},
			{
				reg: new RegExp(idioma + "\\[?\\[?[Aa]ymar[aá]\\]?\\]?"), subs: function(achou) {
					return achou[1] + 'ay';
				}
			},
			{
				reg: new RegExp(idioma + "\\[?\\[?[Aa]zerbaijan[oi]\\]?\\]?"), subs: function(achou) {
					return achou[1] + 'az';
				}
			},
			{
				reg: new RegExp(idioma + "\\[?\\[?[Bb]ambara\\]?\\]?"), subs: function(achou) {
					return achou[1] + 'bm';
				}
			},
			{
				reg: new RegExp(idioma + "\\[?\\[?[Bb]ashkir\\]?\\]?"), subs: function(achou) {
					return achou[1] + 'ba';
				}
			},
			{
				reg: new RegExp(idioma + "\\[?\\[?[Bb]as(?:co|que)\\]?\\]?"), subs: function(achou) {
					return achou[1] + 'eu';
				}
			},
			{
				reg: new RegExp(idioma + "\\[?\\[?(?:[Bb]ielorrusso|[Bb]elarusian)\\]?\\]?"), subs: function(achou) {
					return achou[1] + 'be';
				}
			},
			{
				reg: new RegExp(idioma + "\\[?\\[?[Bb]engali\\]?\\]?"), subs: function(achou) {
					return achou[1] + 'bn';
				}
			},
			{
				reg: new RegExp(idioma + "\\[?\\[?[Bb]ihari\\]?\\]?"), subs: function(achou) {
					return achou[1] + 'bh';
				}
			},
			{
				reg: new RegExp(idioma + "\\[?\\[?[Bb]islam[aá]\\]?\\]?"), subs: function(achou) {
					return achou[1] + 'bi';
				}
			},
			{
				reg: new RegExp(idioma + "\\[?\\[?[Bb][óo]sni(?:o|an)\\]?\\]?"), subs: function(achou) {
					return achou[1] + 'bs';
				}
			},
			{
				reg: new RegExp(idioma + "\\[?\\[?[Bb]ret[aã]?on?\\]?\\]?"), subs: function(achou) {
					return achou[1] + 'br';
				}
			},
			{
				reg: new RegExp(idioma + "\\[?\\[?[Bb][úu]lgar(?:o|ian)\\]?\\]?"), subs: function(achou) {
					return achou[1] + 'bg';
				}
			},
			{
				reg: new RegExp(idioma + "\\[?\\[?(?:[Bb]irman[êe]s|[Bb]urmese)\\]?\\]?"), subs: function(achou) {
					return achou[1] + 'my';
				}
			},
			{
				reg: new RegExp(idioma + "\\[?\\[?[Cc]atal[aã](?:o|n)\\]?\\]?"), subs: function(achou) {
					return achou[1] + 'ca';
				}
			},
			{
				reg: new RegExp(idioma + "\\[?\\[?[Cc]hamorro\\]?\\]?"), subs: function(achou) {
					return achou[1] + 'ch';
				}
			},
			{
				reg: new RegExp(idioma + "\\[?\\[?(?:[Cc]hichewa|[Cc]hewa|[Nn]yanja)\\]?\\]?"), subs: function(achou) {
					return achou[1] + 'ny';
				}
			},
			{
				reg: new RegExp(idioma + "\\[?\\[?(?:[Ll][íi]ngua chinesa\\|[Cc]hin[êeé]s|[Cc]hin[êeé]se?|([Ll][íi]ngua)?\\s*[Mm]andari[nm]|[Cc]anton[êeé]se?)\\]?\\]?"), subs: function(achou) {
					return achou[1] + 'zh';
				}
			},
			{
				reg: new RegExp(idioma + "\\[?\\[?[Cc]huvash\\]?\\]?"), subs: function(achou) {
					return achou[1] + 'cv';
				}
			},
			{
				reg: new RegExp(idioma + "\\[?\\[?[Cc][óo]rni(?:co|sh)\\]?\\]?"), subs: function(achou) {
					return achou[1] + 'kw';
				}
			},
			{
				reg: new RegExp(idioma + "\\[?\\[?[Cc][óo]rs(?:o|ican)\\]?\\]?"), subs: function(achou) {
					return achou[1] + 'co';
				}
			},
			{
				reg: new RegExp(idioma + "\\[?\\[?[Cc]roat(?:a|ian)\\]?\\]?"), subs: function(achou) {
					return achou[1] + 'hr';
				}
			},
			{
				reg: new RegExp(idioma + "\\[?\\[?(?:[Ll][ií]ngua inglesa\\|[Ii]ngl[êeé]s|[Ii]ngl[êeé]s|[Ee]nglish|\\{\\{en\\}\\})\\]?\\]?"), subs: function(achou) {
					return achou[1] + 'en';
				}
			},
			{
				reg: new RegExp(idioma + "\\[?\\[?(?:[Ll][ií]ngua espanhola\\|[Ee]spanhol|[Ee]spa(?:ñ|nh)ol|[Ss]panish)\\]?\\]?"), subs: function(achou) {
					return achou[1] + 'es';
				}
			},
			{
				reg: new RegExp(idioma + "\\[?\\[?(?:[Ll][ií]ngua castelhana\\|[Cc]astel[lh]ano|[Cc]astel[lh]ano)\\]?\\]?"), subs: function(achou) {
					return achou[1] + 'es';
				}
			},
			{
				reg: new RegExp(idioma + "\\[?\\[?(?:[Ll][íi]ngua francesa\\|[Ff]ranc[êeé]s|[Ff]ranc[êeé]s|[Ff]rench)\\]?\\]?"), subs: function(achou) {
					return achou[1] + 'fr';
				}
			},
			{
				reg: new RegExp(idioma + "\\[?\\[?(?:[Ll][íi]ngua alem[aã]\\|[Aa]lem[ãa]o|[Aa]lem[ãa]o|[Gg]erman)\\]?\\]?"), subs: function(achou) {
					return achou[1] + 'de';
				}
			},
			{
				reg: new RegExp(idioma + "\\[?\\[?(?:[Ll][íi]ngua italiana\\|[Ii]taliano|[Ii]taliano?)\\]?\\]?"), subs: function(achou) {
					return achou[1] + 'it';
				}
			},
			{
				reg: new RegExp(idioma + "\\[?\\[?(?:[Ll][íi]ngua russa\\|[[Rr]usso|[Rr]uss(?:o|ian)|[Rr]us)\\]?\\]?"), subs: function(achou) {
					return achou[1] + 'ru';
				}
			},
			{
				reg: new RegExp(idioma + "\\[?\\[?(?:[Ll][íi]ngua portuguesa\\|[Pp]ortugu[êeé]s|[Pp]ortugu[êeé]se?)\\]?\\]?"), subs: function(achou) {
					return achou[1] + 'pt';
				}
			},
			{
				reg: new RegExp(idioma + "\\[?\\[?[Pp]ortugu[êeé]s (?:do [Bb]rasil|brasileiro)\\]?\\]?"), subs: function(achou) {
					return achou[1] + 'pt-BR';
				}
			},
			{
				reg: new RegExp(idioma + "\\[?\\[?(?:[Ll][íi]ngua polonesa\\|[Pp]olon[êeé]s|[Pp]ol(?:on[êeé]s|ish))\\]?\\]?"), subs: function(achou) {
					return achou[1] + 'pl';
				}
			},
			{
				reg: new RegExp(idioma + "\\[?\\[?(?:[Ll][íi]ngua coreana\\|[Cc]oreano|[Cc]oreano|[Kk]orean|[Kk]on|[Kk]r)\\]?\\]?"), subs: function(achou) {
					return achou[1] + 'ko';
				}
			},
			{
				reg: new RegExp(idioma + "\\[?\\[?(?:[Ll][íi]ngua fr[íi]sia\\|[Ff]r[íi]sio|[Ff]r[íi]si(?:o|an))\\]?\\]?"), subs: function(achou) {
					return achou[1] + 'fy';
				}
			},
			{
				reg: new RegExp(idioma + "\\[?\\[?(?:[Ll][íi]ngua japonesa\\|[Jj]apon[êeé]s|[Jj]ap[oa]n[êeé]se?|[Jj]a?p)\\]?\\]?"), subs: function(achou) {
					return achou[1] + 'ja';
				}
			},
			{
				reg: new RegExp(idioma + "\\[?\\[?(?:[Ll][íi]ngua grega\\|[Gg]rego|[Gg]re(?:go|ek))\\]?\\]?"), subs: function(achou) {
					return achou[1] + 'el';
				}
			},
			{
				reg: new RegExp(idioma + "\\[?\\[?(?:[Ll][íi]ngua hebraica\\|[Hh]ebr(?:aico|eu)|[Hh]ebr(?:aico|eu|ew))\\]?\\]?"), subs: function(achou) {
					return achou[1] + 'he';
				}
			},
			{
				reg: new RegExp(idioma + "\\[?\\[?(?:[Ll][íi]ngua dinamarquesa\\|[Dd]inamarqu[êeé]s|[Dd]inamarqu[êeé]s|[Dd]anish)\\]?\\]?"), subs: function(achou) {
					return achou[1] + 'da';
				}
			},
			{
				reg: new RegExp(idioma + "\\[?\\[?(?:[Ll][íi]ngua holandesa\\|[Hh]oland[êeé]s|[Hh]oland[êeé]s|[Dd]utch)\\]?\\]?"), subs: function(achou) {
					return achou[1] + 'nl';
				}
			},
			{
				reg: new RegExp(idioma + "\\[?\\[?(?:[Ll][íi]ngua neerlandesa\\|[Nn]eerland[êeé]s|[Nn]eerland[êeé]s)\\]?\\]?"), subs: function(achou) {
					return achou[1] + 'nl';
				}
			},
			{
				reg: new RegExp(idioma + "\\[?\\[?(?:[Ll][íi]ngua estoniana\\|[Ee]stoniano|[Ee]stoniano?)\\]?\\]?"), subs: function(achou) {
					return achou[1] + 'et';
				}
			},
			{
				reg: new RegExp(idioma + "\\[?\\[?(?:[Ll][íi]ngua ucraniana\\|[Uu]craniano|[Uu]craniano|[Uu]krainian)\\]?\\]?"), subs: function(achou) {
					return achou[1] + 'uk';
				}
			},
			{
				reg: new RegExp(idioma + "\\[?\\[?(?:[Ll][íi]ngua malaia\\|[Mm]alaio|[Mm]ala[iy]o?)\\]?\\]?"), subs: function(achou) {
					return achou[1] + 'ms';
				}
			},
			{
				reg: new RegExp(idioma + "\\[?\\[?(?:[Ll][íi]ngua tcheca\\|[Tt]?[Cc]heco|[Tt]?[Cc]heco|[Cc]zech)\\]?\\]?"), subs: function(achou) {
					return achou[1] + 'cs';
				}
			},
			{
				reg: new RegExp(idioma + "\\[?\\[?(?:[Ll][íi]ngua ucraniana\\|[Uu]craniano|U[ck]raniano?|[Uu][Aa])\\]?\\]?"), subs: function(achou) {
					return achou[1] + 'uk';
				}
			},
			{
				reg: new RegExp(idioma + "\\[?\\[?(?:[Ll][íi]ngua norueguesa\\|[Nn]oruegu[êeé]s|[Nn]oruegu[êeé]s|[Nn]orwegian)\\]?\\]?"), subs: function(achou) {
					return achou[1] + 'no';
				}
			},
			{
				reg: new RegExp(idioma + "\\[?\\[?[Ii]ndon[ée]si[aoe]n\\]?\\]?"), subs: function(achou) {
					return achou[1] + 'id';
				}
			},
			{
				reg: new RegExp(idioma + "\\[?\\[?(?:[Ll]ati[nm]|[Ll]at)\\]?\\]?"), subs: function(achou) {
					return achou[1] + 'la';
				}	
			}
		],
		sumario: 'formatando idiomas'
	},
	
	duplicado: {
		sumario: 'rm duplicados'
	},

	//predefinições com exclusividade de verificação
	apenas: [/\{\{\s*[Cc]it[ea]r? web\s*\|/,
		/\{\{\s*[Cc]itar vídeo(?: notas|)\s*\|/,
		/\{\{\s*[Ll]londonGazette\s*\|/,
		/\{\{\s*[Cc]itar tese\s*\|/,
		/\{\{\s*[Cc]it[ea]r? tweet\s*\|/,
		/\{\{\s*[Cc]itar revista\s*\|/,
		/\{\{\s*[Cc]itar relatório\s*\|/,
		/\{\{\s*[Cc]itar podcast\s*\|/,
		/\{\{\s*[Cc]itar periódico\s*\|/,
		/\{\{\s*[Cc]itar mapa\s*\|/,
		/\{\{\s*[Cc]itar livro\s*\|/,
		/\{\{\s*[Rr]eferência a livro\s*\|/,
		/\{\{\s*[Cc]itar lista de discussão\s*\|/,
		/\{\{\s*[Cc]itar jornal\s*\|/,
		/\{\{\s*[Cc]itar jogo eletrônico\s*\|/,
		/\{\{\s*[Cc]itar notícia\s*\|/,
		/\{\{\s*[Cc]itar grupo de notícias\s*\|/,
		/\{\{\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*[Ww]ebarchive\s*\|/,
		/\{\{\s*[Cc]itar comunicados? de imprensa\s*\|/,
		/\{\{\s*[Cc]itar ar[Xx]iv\s*\|/,
		/\{\{\s*[Cc]ite ?web\s*\|/,
		/\{\{\s*[Cc]ite video(?: game|)\s*\|/,
		/\{\{\s*[Cc]ite AV media(?: notes|)\s*\|/,
		/\{\{\s*[Cc]ite thesis\s*\|/,
		/\{\{\s*[Cc]ite magazine\s*\|/,
		/\{\{\s*[Cc]ite report\s*\|/,
		/\{\{\s*[Cc]ite podcast\s*\|/,
		/\{\{\s*[Cc]ite ?news(?:paper|)\s*\|/,
		/\{\{\s*[Cc]ite map\s*\|/,
		/\{\{\s*[Cc]ite book\s*\|/,
		/\{\{\s*[Cc]ite mailing list\s*\|/,
		/\{\{\s*[Cc]ite journal\s*\|/,
		/\{\{\s*[Cc]ite document\s*\|/,
		/\{\{\s*[Cc]ite paper\s*\|/,
		/\{\{\s*[Cc]ite newsgroup\s*\|/,
		/\{\{\s*[Cc]ite JTWC\s*\|/,
		/\{\{\s*[Cc]ite PAGASA\s*\|/,
		/\{\{\s*[Cc]ite episode\s*\|/,
		/\{\{\s*[Cc]ite serial\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*\|/,
		/\{\{\s*[Cc]it[ae]r? sports-reference\s*\|/,
		/\{\{\s*[Cc]it[ea]r? iucn\s*\|/,
		/\{\{\s*[aA]bumchart\s*\|/,
		/\{\{\s*[Ss]ingle\s*chart\s*\|/,
		/\{\{\s*[eE]Floras\s*\|/,
		/\{\{\s*[Aa]rticle\s*\|/,
		/\{\{\s*[Oo]bra citada\s*\|/,
		/\{\{\s*[Ww]ebarchive\s\|/
	],
	ordem: ['datas', 'tradpred', 'idiomas', 'obsoleto', 'duplicado', 'geral']
}

function verifDuplicado(achou) {
	function acharAninhados(cap) {
		var colch = 0;
		var chaves = 0;
		var r = '';
		for (var i = 0; i < cap.length; r += cap[i++]) {
			if (cap.charAt(i) == '[' && cap.charAt(i + 1) == '[') {
				if (chaves == 0) colch++;
				r += cap[i++];
			} else if (cap.charAt(i) == ']' && cap.charAt(i + 1) == ']') {
				if (chaves == 0) colch--;
				if (colch < 0) colch = 0;
				r += cap[i++];
			} else if (cap.charAt(i) == '{' && cap.charAt(i + 1) == '{') {
				if (colch > 0) return achou[0];
				chaves++;
				r += cap[i++]
			} else if (cap.charAt(i) == '}' &&
				(cap.charAt(i + 1) == '}' || cap.charAt(i + 1) == '')) {
				chaves--;
				if (chaves < 0) {
					if (colch == 0) return r;
					else return achou[0];
				}
				r += cap[i++];
			} else if (cap.charAt(i) == '|') {
				if (colch == 0 && chaves == 0) return r;
			}
		}
		if (colch == 0 && chaves == 0) return r;
		else return achou[0];
	}
	var ultimo = acharAninhados(achou[4]);
	if (ultimo == achou[0]) return achou[0];
	if (/[^\s]+/.test(ultimo)) {
		var primeiro = acharAninhados(achou[2]);
		if (primeiro == achou[0]) return achou[0];
		return achou[2].substring(primeiro.length) + achou[3] + achou[4];
	} else {
		return achou[1] + achou[2] + achou[4].substring(ultimo.length);
	}
}

listaDupl = ['(?:acessodata|acessadoem|accessdate|dataacesso|acesso|acessdate|fechaacceso|dataacceso)', '(?:data|ano|date|year)', '(?:obra|publica[cç][aã]o|website)', 'local', '(?:publicado|editora)', 't[ií]tulo', '(?:primeiro|primeiro1)', '(?:[úu]ltimo1?|autor1?)', '(?:arquivourl|urlarquivo|arquivo-url|archive-?url)', '(?:arquivodata|archive-?date)', 'n[úu]mero', 'volume', '(?:l[ií]ngua|idioma)', '(?:deadurl|ligação inac?tiva|li|datali|urlmorta|dead\\-?url)', '[Uu][Rr][Ll]', 'p[aá]gina', 'p[aá]ginas', 'wayb'];

duplicado = [];

for (var i = 0; i < listaDupl.length; i++) {
	duplicado.push({
		reg: new RegExp("(\\|\\s*" + listaDupl[i] + "\\s*=)([\\s\\S]*)(\\|"
			+ listaDupl[i] + "\\s*=)([\\s\\S]*)"),
		subs: function(achou) {
			return verifDuplicado(achou);
		}
	});
}

citacoes.duplicado.cond = duplicado;

links = [
	{
		reg: /<a\s*.*href\s*=\s*\"?([^\"&]*)\"?\s*[^&]*<\s*\/\s*a\s*>/, subs: function(achou) {
			var acao;
			var value = novoEditor ? 'submit' : 'edit';
			if (/\?/.test(achou[1])) acao = '&action=' + value;
			else acao = (/%3F/.test(achou[1])) ? '?&action=' + value : '?action=' + value;

			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;
			var value = novoEditor ? 'submit' : 'edit';
			if (/\?/.test(achou[1])) acao = '&action=' + value;
			else acao = (/%3F/.test(achou[1])) ? '?&action=' + value : '?action=' + value;

			return achou[0] + '&nbsp;<a href="javascript:subsTextoBox(window.open(\''
				+ encodeURIComponent(achou[1]) + acao + '\'))">Editar</a>';
		}
	}
]

geral = [
	{
		reg: /\[\[[Aa]nexo:([^\[\]]*\]\])/, subs: function(achou) {
			return '[[' + achou[1];
		}
	}, {
		reg: /\[\[\s*([^\[\]]+)\s*\|\s*([^\[\]]+)\s*\]\]/, subs: function(achou) {
			var quot = '';
			var tmp = (achou[2].charAt(0).toLocaleLowerCase() + achou[2].replace(/_/g, " ").substring(1)).indexOf
				(achou[1].charAt(0).toLocaleLowerCase() + achou[1].replace(/_/g, " ").substring(1));

			if (tmp != 0) {
				quot = achou[2].match(/^(''''')(.+)\1$/) || achou[2].match(/^(''')(.+)\1$/) || achou[2].match(/^('')(.+)\1$/) || achou[2].match(/^(')(.+)\1$/) || achou[2].match(/^(")(.+)\1$/);

				if (!quot) return achou[0];

				achou[2] = quot[2];
				quot = quot[1];
				tmp = (achou[2].charAt(0).toLocaleLowerCase() + achou[2].replace(/_/g, " ").substring(1)).indexOf
					(achou[1].charAt(0).toLocaleLowerCase() + achou[1].replace(/_/g, " ").substring(1));
			}

			if (tmp == 0) {
				var apos = achou[2].substring(achou[1].length);
				if (/^[a-zàáâãçéêíòóôõúü]*[,\.;)]?$/.test(apos))
					return quot + '[[' + achou[2].substring(0, achou[1].length)
						+ ']]' + apos + quot;
			}
			return achou[0];
		}
	}, {
		reg: /\s+\./i, subs: function(achou) {
			return '.';
		}
	}, {
		reg: /(<\s*ref\s+(?:[^<>]*\s+)?name=[^<>]+)\s*>\s*<\s*\/ref\s*>/i, subs: function(achou) {
			return achou[1] + ' />';
		}
	}, {
		reg: /(<\s*ref\s+name=.*)>.*cite class.*cite><\/ref\s*>/, subs: function(achou) {
			return achou[1] + '/>';
		}
	}, {
		reg: / *[\.,;]? *(<\s*ref(?:\s+[^<>]*)?>[^<>]*<\s*\/ref\s*>|<\s*ref\s+[^<>]*\/>) *([\.,;])/i, subs: function(achou) {
			return achou[2] + achou[1];
		}
	}, {
		reg: /([\w\.\],;'"]\.?|(?:<\/ref\s*>)|(?:<ref\s*(?:\s+[^<>]+|)\/>)) +<\s*ref([\s>])/i, subs: function(achou) {
			return achou[1] + '<ref' + achou[2];
		}
	}, {
		reg: /(<\/ref>)(\w)/i, subs: function(achou) {
			return achou[1] + ' ' + achou[2];
		}
	}, {
		reg: /<\s*br\s*clear\s*=\s*\"?(none|left|right|both|initial|inherit|all)\"?\s*\/?>/i, subs: function(achou) {
			if (achou[1].toLowerCase() == "all")
				achou[1] = "both";
			return '<br style="clear: ' + achou[1] + '">';
		}
	}, {
		reg: /<x (\s*ref\s+(?:[^<>]*\s+)?name=[^<>]+\s*>\s*\{\{[Cc]itar)/i, subs: function(achou) {
			return '<' + achou[1];
		}
	}, {
		reg: /<\s*[\/\\]\s*br\s*>/i, subs: function(achou) {
			return '<br>';
		}
	}, {
		reg: /<\s*br\s*[\\\n](\/|)>/i, subs: function(achou) {
			return '<br' + achou[1] + '>';
		}
	}, {
		reg: /Encyclopa?edia Britannica/, subs: function(achou) {
			return 'Encyclopædia Britannica';
		}
	}, {
		reg: /([^\\=]) +\n/, subs: function(achou) {
			return achou[1] + '\n';
		}
	}, {
		reg: /(\{\{\s*[Cc]it(?:a|ar|ação|ation)[^\}]+)(\|wayb\s*=\d*)\s*\|\s*arquivo\\-?data([^\|\}])/, subs: function(achou) {
			return achou[1] + achou[2] + achou[3];
		}
	}, { 
		reg: /(\{\{\s*[Cc]it(?:a|ar|ação|ation)[^\}]+)(\|\s*(?:acessadoem|acessodata|data|arquivodata|ano)\s*=\s*)\[\[(.?)\]\].*([\|\}])/, subs: function(achou) {
			return achou[1] + achou[2] + achou[3] + achou[4];
		}
	}, { 
		reg: /(\{\{\s*[Cc]it(?:a|ar|ação|ation)[^\}]+)(\|\s*(?:acessadoem|acessodata|data|arquivodata|ano)\s*=.*) de de ([\|\}])/, subs: function(achou) {
			return achou[1] + achou[2] + ' de ' + achou[3];
		}
	}, { 
		reg: /(\{\{\s*[Cc]it(?:a|ar|ação|ation)[^\}]+)(\|\s*(?:acessadoem|acessodata|data|arquivodata|ano)\s*=\s*)[\/]*([0-9][0-9]?[\/-][0-9][0-9]?[\/-][1-2][0-9][0-9][0-9]\s*)[\.-]?([\|\}])/, subs: function(achou) {
			return achou[1] + achou[2] + achou[3] + achou[4];
		}
	}, { 
		reg: /(\{\{\s*[Cc]it(?:a|ar|ação|ation)[^\}]+)(\|\s*)(?:data|ano)(\s*=\s*.*)-XX\s*([\|\}])/, subs: function(achou) {
			return achou[1] + achou[2] + 'data' + achou[3] + achou[4];
		}
	}, { 
		reg: /(\{\{\s*[Cc]it(?:a|ar|ação|ation)[^\}]+\|\s*)(?:data|ano)(\s*=\s*)00[\-\/](\d{4}\s*[\|\}])/, subs: function(achou) {
			return achou[1] + 'data' + achou[2] + achou[3];
		}
	}, { 
		reg: /(\{\{\s*[Cc]it(?:a|ar|ação|ation)[^\}]+\|\s*)(?:data|ano)(\s*=\s*)[A-Z]{3} ([A-Z]{3}) (\d{2}) \d\d?:\d\d?:\d\d? [A-Z]{3} (\d{4})(\s*[\|\}])/, subs: function(achou) {
			return achou[1] + 'data' + achou[3] + ' ' + achou[2] + ' ' + achou[4] + ' ' + achou[5];
		}
	}, {
		reg: /(\{\{\s*[Cc]it(?:a|ar|ação|ation)[^\}]+)(\|\s*(?:acessadoem|acessodata)\s*=\s*)(?:[A-Za-z.]+|)\d\d\d\d\s*([\|\}])/, subs: function(achou) {
			return achou[1] + achou[2] + achou[3];
		}
	}, {
		reg: /(\{\{\s*[Cc]it(?:a|ar|ação|ation)[^\}]+)(\|acessodata\s*=\s*\d\d?)\.([A-Za-zç\. ]+\d\d\d\d\s*[\|\}])/, subs: function(achou) {
			return achou[1] + achou[2] + achou[3];
		}
	}, {
		reg: /(\{\{\s*[Cc]it(?:a|ar|ação|ation)[^\}]+)(\|acessodata\s*=\s*.*\sde\s)de\s([\|\}])/, subs: function(achou) {
			return achou[1] + achou[2] + achou[3];
		}
	}, {
		reg: /(\{\{\s*[Cc]it(?:a|ar|ação|ation)[^\}]+)(\|a?[rc]?[qe]?[us]?[is]?[vo]?o?-?data\s*=\s*\d\d? de [A-Za-zç]+ de \d\d\d\d)[\.\a-zA-Z\-\d\:]+/, subs: function(achou) {
			return achou[1] + achou[2];
		}
	}, {
		reg: /(\{\{\s*[Cc]it(?:a|ar|ação|ation)[^\}]+)(\|a?[rc]?[qe]?[us]?[is]?[vo]?o?-?data\s*=\s*\d\d?)\.([A-Za-zç]+)\.(\d\d\d\d\s+)[\.\a-zA-Z\-\d\:]+/, subs: function(achou) {
			return achou[1] + achou[2] + ' de ' + achou[3] + ' de ' + achou[4];
		}
	}, {
		reg: /(\{\{\s*[Cc]it(?:a|ar|ação|ation)[^\}]+)(\|\s*data\s*=\s*[1-2]\d\d\d)T[0-9][0-9]\:[0-9][0-9]+/, subs: function(achou) {
			return achou[1] + achou[2];
		}
	}, {
		reg: /(\{\{\s*[Cc]it(?:a|ar|ação|ation)[^\}]+\|\s*autor\s*=\s*)\{\{[Aa]ut\|(.*)\}\}/, subs: function(achou) {
			return achou[1] + achou[2];
		}
	}, { 
		reg: /(>)\s*\n+(\{\{\s*[Cc]it(?:ar web|e web|ation|ar livro|ar notícia|ar periódico|ar tese|ar relatório)[^\<]+)\n+/, subs: function(achou) {
			return achou[1] + achou[2];
		}
	}, {
		reg: /(\{\{\s*[Cc]it(?:a|ar|ação|ation)[^\}]+\s)\s+=/, subs: function(achou) {
			return achou[1] + '=';
		}
   }, {
		reg: /(\{\{\s*[Cc]it(?:a|ar|ação|ation)[^\}]+\|a?[rc]?[qe]?[us]?[is]?[vo]?o?-?data\s*=\s*)[SsTtQqDd](?:egunda|erça|uarta|uinta|exta|ábado|omingo)-?[Ff]?e?i?r?a?,?/, subs: function(achou) {
			return achou[1];
		}
	}, {
		reg: /(\{\{\s*[Cc]it(?:a|ar|ação|ation)[^\}]+)(\|a?[rc]?[qe]?[us]?[is]?[vo]?o?-?data\s*=\s*)\[?\[([\w\d\sç]+)\]?\]?/, subs: function(achou) {
			return achou[1] + achou[2] + achou[3];
		}
	}, {
		reg: /(\{\{\s*[Cc]it(?:a|ar|ação|ation)[^\}]+)(\|a?[rc]?[qe]?[us]?[is]?[vo]?o?-?data\s*=\s*\d\d?)\.(\d\d?)\.(\d\d\d\d)/, subs: function(achou) {
			return achou[1] + achou[2] + '-' + achou[3] + '-' + achou[4];
		}
	}, {
		reg: /(\{\{\s*[Cc]itar (?:web|livro|conferência|vídeo|jornal)[^\}]+\|\s*(?:editor\d?e?s?|[Ss]obrenome-editor\d?|nome-editor\d?)[^|]+)[;, ]*(\'\'\s*et al\.?\'?\'?\.?\s*(?:\||\}))/, subs: function(achou) {
			return achou[1] + '|numero-editores=' + achou[2];
		}
	}, {
		reg: /(\{\{\s*[Cc]it(?:a|ar|ação|ation)[^\}]+)(\|\s*ano\s*=\s*)(Lisboa),\s*(\d\d\d\d)/, subs: function(achou) {
			return achou[1] + achou[2] + achou[4] + '|local=' + achou[3];
		}
	}, {
		reg: /(\{\{\s*[Cc]it(?:a|ar|ação|ation)[^\}]+)(\|\s*(?:ano|data)\s*=\s*[1-2][0-9][0-9][0-9])-([1-2][0-9][0-9][0-9])/, subs: function(achou) {
			return achou[1] + achou[2] + '–' + achou[3];
		}
	}, { 
		reg: /(\{\{\s*[Cc]it(?:a|ar|ação|ation)[^\}]+)(\|\s*(?:ano|data)\s*=\s*[0-9][0-9][0-9]?)-([0-9][0-9][0-9]? de )/, subs: function(achou) {
			return achou[1] + achou[2] + '–' + achou[3];
		}
	}, {
		reg: /(\{\{\s*[Cc]it(?:a|ar|ação|ation)[^\}]+)(\|\s*(?:ano|data)\s*=\s*)\{\{[Ss][ée]c\|([A-Z\s]*)\}\}/, subs: function(achou) {
			return achou[1] + achou[2] + 'século ' + achou[3];
		}
	}, {
		reg: /(\{\{\s*[Cc]it(?:a|ar|ação|ation)[^\}]+)(\|\s*edi[çc][ãa]o\s*=\s*[[0-9][a-zA-Z]\. ]*)ed ([\|\}])/, subs: function(achou) {
			return achou[1] + achou[2] + achou[3];
		}
	}, {
		reg: /(\{\{\s*[Cc]it(?:a|ar|ação|ation)[^\}]+)(\|\s*p[aá]ginas?\s*=\s*)p\.?p?\.?/, subs: function(achou) {
			return achou[1] + achou[2];
		}
	}, {
		reg: /<((?:small|div|blockquote|center|sup|b|i|span))\s*\/>/, subs: function(achou) {
			return '</' + achou[1] + '>';
		}
	}, {
		reg: /(<div style="clear\:left;")\s*\/>/, subs: function(achou) {
			return achou[1] + '></div>';
		}
	}, {
		reg: /(\{\{\s*[Ll]ink\s*\|[^\}]+\|\s*acdt\s*=\s*)\{\{[dD]tlink\|\s*(\d\d?)\s*\|\s*(\d\d?)\s*\|\s*(\d\d\d\d)\s*\}\}\.?/, subs: function(achou) {
			return achou[1] + achou[2] + '-' + achou[3] + '-' + achou[4];
		}
	}, {
		reg: /(=\s*)(?:[Ll]igações Extern[oa]s|[Pp]áginas externas|[Ll]inks? [Ee]xtern[oa]s?|[Ll]igação extern[oa]s?)/, subs: function(achou) {
			return achou[1] + 'Ligações externas';
		}
	}, {
		reg: /\[\[\s*[Cc]ategoria:!Páginas com traduções não revistas\]\]\s*\n?/, subs: function(achou) {
			return '';
		}
	}, {
		reg: /\{\{(?:[Rr]efer[êée]ncias?\|(?:[0-9]0?e?m?|[Cc]ol=\d+)|[lL]istaref|[Rr]ef-section|[Rr]éférences|[lL]ista de referências|[Rr]eferences)\}\}/, subs: function(achou) {
			return '\{\{Referências\}\}';
		}
	}, {
		reg: /\{\{[Ll]igação inativa\|1=(?:data=)?/, subs: function(achou) {
			return '\{\{Ligação inativa|data=';
		}
	}, {
		reg: /\|<nowiki> *<\/nowiki>/, subs: function(achou) {
			return '|';
		}
	}, {
		reg: /\|<nowiki>(.+)<\/nowiki>/, subs: function(achou) {
			return '|' + achou[1];
		}
	}, {
		reg: /\}\}\s*\{\{\s*\[Ss]subscription required/, subs: function(achou) {
			return '|acesso-url=subscrição';
		}
	}, {
		reg: /(\n *(?:==|\{\{)\s*referências\s*(?:==|(?:\|[^\}]*)?\}\})[\s\S]*)(\n\s*==\s*ver também\s*==[\s\S]*)/i, subs: function(achou) {
			var p1 = achou[2], p2 = "";

			var maisSecao;
			while (maisSecao = p1.match(/(\n\s*==\s*ver também\s*==[\s\S]*)(\n\s*==\s*[^=]*\s*==[\s\S]*)/i)) {
				p1 = maisSecao[1];
				p2 = maisSecao[2] + p2;
			}

			if (!p2) {
				while (maisSecao = p1.match(/(\n\s*==\s*ver também\s*==[\s\S]*)(\n\s*(?:\[\[categor(?:ia|y)\:.*\]\]|\{\{.*\}\})[\s\S]*)/i)) {
					p1 = maisSecao[1];
					p2 = maisSecao[2] + p2;
				}
			}

			return p1.replace(/(.)\n*$/, "$1\n") + achou[1] + p2;
		}
	}]

foraDePredef = [
	{
		reg: /(\n\*[^\n]+)<\s*br\s*\/?>(\s*\n)/i, subs: function(achou) {
			return achou[1] + achou[2];
		}
	}, {
		reg: /(\n\*[^\n]+)\n\:\*/, subs: function(achou) {
			return achou[1] + "\n**";
		}
	}]

excecoes = [];

function substComExcecao(texto, cond, excecoes) {
	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++;
					}
					else if (texto.charAt(exce) == '}' && texto.charAt(exce + 1) == '}') {
						bloco--;
						exce++;
					}
					if (bloco == 0) break;
				}
				if (bloco != 0) {
					var linhas = (tmp + texto.substring(0, exceInicial)).split('\n');
					var erro = "Erro: O bloco da predefinição na linha: "
						+ linhas.length + ", e posição: "
						+ (linhas[linhas.length - 1].length + 1) + " nunca é fechado";

					mw.notify(erro);
					throw erro;
				}
				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, apenas, excecoes) {
	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++;
			}
			else if (texto.charAt(apen) == '}' && texto.charAt(apen + 1) == '}') {
				bloco--;
				apen++;
			}
			if (bloco == 0) break;
		}
		if (bloco != 0) {
			var linhas = (tmp + texto.substring(0, apenInicial)).split('\n');
			var erro = "Erro: O bloco da predefinição na linha: "
				+ linhas.length + ", e posição: "
				+ (linhas[linhas.length - 1].length + 1) + " nunca é fechado";

			mw.notify(erro);
			throw erro;
		}
		if (excecoes) {
			apenInicial++;
			tmp += texto.substring(0, apenInicial)
				+ substComExcecao(texto.substring(apenInicial, apen), cond, excecoes)
		} else 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 validarSintaxePredefinicoes(temp, janela) {
	var bloco = 0;
	var pbloco = 0;
	for (var pos = 0; pos < temp.length; pos++) {
		if (temp.charAt(pos) == '<') {
			var partes = 0;
			var identif = ['math', 'nowiki'];
			var palavra = '';
			pos++
			escopo: while (pos < temp.length) {
				switch (partes) {
					case 0:
						if (/^\s$/.test(temp.charAt(pos))) {
							pos++;
							continue escopo;
						}
						partes++;
						break;
					case 1:
						var c = temp.charAt(pos).toLowerCase();
						if (/^[a-z]$/.test(c)) {
							palavra += c;
							pos++;
							partes++
							continue escopo;
						} else break escopo;
						break;
					case 2:
						var c = temp.charAt(pos).toLowerCase();
						if (/^[a-z]$/.test(c)) {
							palavra += c;
							pos++;
							continue escopo;
						} else partes++;
						break;
					case 3:
						for (var i = 0; i < identif.length; i++) {
							if (palavra == identif[i]) {
								partes++;
								break;
							}
						}
						if (partes == 3) break escopo;
						break;
					case 4:
						if (temp.charAt(pos) == '/' && temp.charAt(pos + 1) == '>')
							break escopo;
						if (temp.charAt(pos) == '>') partes++;
						pos++;
						break;
					case 5:
						if (temp.charAt(pos) == '<') partes++;
						pos++;
						break;
					case 6:
						var b = false;
						if (/^[\s\/]$/.test(temp.charAt(pos))) {
							if (temp.charAt(pos) == '/') {
								if (b) {
									partes = 5;
								} else b = true;
							}
							pos++;
							continue escopo;
						}
						partes++;
						break;
					case 7:
						for (var num = 0; num < palavra.length; num++) {
							if (palavra[num] != temp.charAt(pos).toLowerCase()) {
								partes = 5;
								break;
							}
							pos++
						}
						if (partes == 7) partes++;
						break;
					case 8:
						if (/^[^>]$/.test(temp.charAt(pos))) pos++;
						else { pos++; break escopo }
						break;
				}
			}
		}
		if (temp.charAt(pos) == '{' && temp.charAt(pos + 1) == '{') {
			if (bloco == 0) pbloco = pos;
			bloco++;
			pos++;
		} else if (temp.charAt(pos) == '}' && temp.charAt(pos + 1) == '}') {
			bloco--;
			pos++;
		}
		if (bloco == -1) {
			var linhas = temp.substring(0, pos).split('\n');
			var textAviso = "<div style='color: red'>Aviso:</div> Na linha: " + linhas.length + ", e posição: " + linhas[linhas.length - 1].length + " teve bloco fechado sem nenhum aberto.";

			if (window.ve && window.ve.init) {
				if (!window.avisove) {
					textAviso += " Para ignorar clique novamente em 'Ajustes'";
					mw.notify(textAviso);
				}
			} else {
				janela.document.getElementById("editpage-copywarn").innerHTML += textAviso
					+ " Para ignorar clique em 'Mostrar alterações'";
			}
			aviso = true;
			bloco = 0;
		}
	}
	if (bloco != 0) {
		var linhas = temp.substring(0, pbloco).split('\n');
		var erro = "Erro: O bloco da predefinição na linha: "
			+ linhas.length + ", e posição: "
			+ (linhas[linhas.length - 1].length + 1) + " nunca é fechado";

		mw.notify(erro);
		throw erro;
	}
}

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

	function _() {
		if (!janela.aposWait) {
			janela.box = null
			janela.sumarioEl = null;
		}
		janela.aposWait = undefined;

		if (janela.ve && janela.ve.init) {
			var mode = janela.ve.init.target.surface.getMode()
			if (mode == 'source') {
				box = {
					valor: janela.ve.init.target.surface.model.documentModel.data.getSourceText(),
					get value() {
						return this.valor == null
							? '' : this.valor;
					},
					set value(val) {
						this.valor = val.toString();
					}
				}

				var tmp = $('.ve-ui-mwSaveDialog-summary')
				if (tmp.length > 0)
					sumarioEl = tmp[0]
				else
					sumarioEl = {
						get value() {
							return janela.ve.init.target.editSummaryValue == null
								? '' : janela.ve.init.target.editSummaryValue;
						},
						set value(val) {
							janela.ve.init.target.editSummaryValue = val.toString();
						}
					}
			} else if (mode == 'visual') {
				if (!janela.box) {
					wikitextPromise = ve.init.target.getWikitextFragment(ve.init.target.surface.model.documentModel, true);
					ve.init.target.getSurface().createProgress(wikitextPromise, 'Gerando o WikiTexto').done(function (progressBar, cancelPromise) {
						cancelPromise.fail(function () {
							wikitextPromise.abort();
						});
					});
					wikitextPromise.done(function (source) {
						box = {
							valor: source,
							get value() {
								return this.valor == null
									? '' : this.valor;
							},
							set value(val) {
								this.valor = val.toString();
							}
						}

						var tmp = $('.ve-ui-mwSaveDialog-summary')
						if (tmp.length > 0)
							sumarioEl = tmp[0]
						else
							sumarioEl = {
								get value() {
									return janela.ve.init.target.editSummaryValue == null
										? '' : janela.ve.init.target.editSummaryValue;
								},
								set value(val) {
									janela.ve.init.target.editSummaryValue = val.toString();
								}
							}

						janela.aposWait = true;
						subsTextoBox(janela);
					}).fail(function () {
						mw.notify('Falhou ao tentar obter código fonte');
					});
					return;
				}
			} else {
				return;
			}
		} else if (janela.wikEd && janela.wikEd.textarea) {
			if (janela.wikEd.useWikEd === true)
				janela.wikEd.UpdateTextarea();
			box = janela.wikEd.textarea;
			janela.wikEd.useWikEd = false;
		} else if (janela.$('.CodeMirror').length) {
			try {
				box = janela.$('.CodeMirror')[0].CodeMirror;

				box.__defineGetter__('value', function () {
					return this.getValue();
				});
				box.__defineSetter__('value', function (val) {
					this.setValue(val);
				});
			} catch (e) {
				box = janela.document.getElementById('wpTextbox1');
			}

		} else {
			box = janela.document.getElementById('wpTextbox1');
		}
		if (!window.sumarioEl)
			sumarioEl = janela.document.getElementById('wpSummary');

		var temp = box.value;
		var mudou = {};
		var sumario = '';
		var comp;
		var escape = 0;
		var sumGeral = false;

		aviso = false;

		validarSintaxePredefinicoes(temp, janela);

		comp = temp.replace(/\{\{[Pp]redefinição:/g, "{{");
		if (comp != temp) {
			temp = comp;
			sumGeral = true;
		}

		for (var i = 0; i < citacoes.ordem.length; i++) {
			var obj = citacoes[citacoes.ordem[i]];
			escape = 0;
			do {
				if (escape == 6) {
					mw.notify('Parece haver algo errado na operação: '
						+ obj.sumario + '. Parando a execução');
					return;
				}
				escape++;
				comp = temp;
				temp = substApenas(temp, obj.cond, citacoes.apenas, [/\{\{/]);
				if ((!mudou[citacoes.ordem[i]]) && comp != temp) {
					mudou[citacoes.ordem[i]] = true;
					if (sumario)
						sumario += ', ';
					sumario += obj.sumario;
				}
			} while (comp != temp)
		}
		if (sumario) sumario += ' nas citações';

		escape = 0;
		do {
			if (escape == 20) {
				mw.notify("Parece haver algo errado ao aplicar ajustes gerais. Parando a execução");
				return;
			}
			escape++;
			comp = temp;
			temp = substComExcecao(temp, foraDePredef, [/\{\{/]);
			if ((!mudou.outros) && comp != temp) {
				sumGeral = true;
			}
		} while (comp != temp)

		escape = 0;
		do {
			if (escape == 12) {
				mw.notify("Parece haver algo errado ao aplicar ajustes gerais. Parando a execução");
				return;
			}
			escape++;
			comp = temp;
			temp = substituir(temp, geral);
			if ((!mudou.outros) && (comp != temp || sumGeral)) {
				mudou.outros = true;
				if (sumario != '')
					sumario += ', outros ';
				sumario += 'ajustes';
			}
		} while (comp != temp)

		box.value = temp;

		if (sumario != '')
			sumario += ' usando [[user:IJuulia/Ajustes.js|script]]';
		{
			var tmpSmr = sumarioEl.value;
			if (tmpSmr) sumario += (sumario ? ', ' : '') + tmpSmr;
		}
		sumarioEl.value = sumario;

		if (!(janela.ve && janela.ve.init)) {
			var tmp = janela.document.getElementById('wpMinoredit');
			if (tmp)
				tmp.checked = true;
			if (!aviso) {
				janela.document.getElementById('wpDiff').click();
			}
			box = null
			sumarioEl = null;
		} else {
			if (aviso) {
				if (!window.avisove) {
					avisove = true;
					return;
				}
			}
			avisove = false;

			var form = $('<form style="display:none" method="post" action="/wiki/' + janela.mw.config.get('wgPageName')
				+ '"><input name="action" value="' + 'submit'
				+ '"><textarea name="wpTextbox1">'
				+ '</textarea><input name="wpSummary" value="' + sumarioEl.value
				+ '"><input name="wpMinoredit" value="' + 'on'
				+ '"><input name="wpDiff" value="' + 'Mostrar alterações'
				+ '"><input name="editRevId" value="' + janela.mw.config.get("wgCurRevisionId")
				+ '"><input name="parentRevId" value="' + janela.mw.config.get("wgCurRevisionId")
				+ '"><input name="baseRevId" value="' + janela.mw.config.get("wgCurRevisionId")
				+ '"><input name="wpStarttime" value="' + (new Date()).toISOString().replace(/[^0-9]/g, "").slice(0, -3)
				+ ($("#ca-unwatch").length ? '"><input name="wpWatchthis" checked type="checkbox' : '')
				+ '"><input name="mode" value="diff'
				+ '"><input name="model" value="wikitext'
				+ '"><input name="format" value="text/x-wiki'
				+ '"><input name="wpUltimateParam" value="1'
				+ '"></form>');

			form.find("textarea").val(box.value);
			$(document.body).append(form);
			window.onbeforeunload = null;
			form.submit();
		}
	}
}

var categoria;
var afluentes;
if (categoria = document.getElementById('mw-pages')) {
	if (categoria = categoria.getElementsByClassName('mw-content-ltr')[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')) {
	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" class="' + $("#wpDiff").prop("class") + '" value="Ajustes automáticos" accesskey="a" onclick="subsTextoBox(window)">';
	// subsTextoBox(window)
}

function isVe() {
	var tentativas = 5

	mw.loader.using('ext.visualEditor.ve').then(function() {
		var intervalo = setInterval(function () {
			if (ve.init) {
				if ($('.ve-ui-toolbar-ajustes').length || tentativas-- < 1) {
					clearInterval(intervalo);
				} else if (ve.init.target && ve.init.target.surface) {
					var mode = ve.init.target.surface.getMode()
					if (mode == 'source' || mode == 'visual') {
					
						temp = document.createElement("z");
						var refItem = $('.oo-ui-tool-name-showSave')[0];
						if (refItem) {
							$(refItem).after(temp);
							temp.outerHTML = refItem.outerHTML;
							
							$($('.ve-ui-toolbar-saveButton')[1])
								.removeClass('ve-ui-toolbar-saveButton')
								.addClass('ve-ui-toolbar-ajustes');
							
							$('.ve-ui-toolbar-ajustes').find('.oo-ui-tool-title').html('Ajustes');
							$($('.oo-ui-tool-name-showSave')[1])
								.removeClass('oo-ui-tool-name-showSave')
								.removeClass('oo-ui-widget-disabled')
								.addClass('oo-ui-widget-enabled')
								.parent()
								.removeClass('oo-ui-toolGroup-disabled-tools')
								.addClass('oo-ui-toolGroup-enabled-tools')
							
							$('.ve-ui-toolbar-ajustes').click(function () {
								subsTextoBox(window);
							});
						}
					}
				}
			}
		}, 5000);
	});
}
isVe();

$(document).ready(function () {
	$('#ca-ve-edit').click(isVe);
})