// skrypt zamienia literki wstecznych linków w przypisach na liczby dziesiętne
// używany przez ]

var cache,
	pattern = /+$/,
	baseA = "a".charCodeAt(0),
	base = "z".charCodeAt(0) - baseA + 1,
	exports = {};
	
function convertToDecimal ( value ) {
	if (!cache.has(value)) {
		var result = 0;
		// Numer kolejny sekwencji wśród sekwencji o tejże długości
		for(var i = 0; i < value.length; i++) {
			var digit = value.charCodeAt(i) - baseA;
			result = result * base + digit;
		}
		
		// Uwzględnij kombinacje z mniejszą ilością znaków
		if (value.length > 1) {
			result += Math.pow(base + 1, value.length - 2) * base;
		}
		
		cache.set(value, (result + 1).toString());
	}
	
	return cache.get(value);
}

exports.testPreconditions = $.noop;

exports.initialize = function () {
	cache = new Map();
	cache.set("a", "1");
	cache.set("b", "2");
	cache.set("c", "3");
	cache.set("d", "4");
	cache.set("e", "5");
};

exports.filter = $.noop;

exports.process = function ( $els ) {
	$els.each(function(){
		$(".mw-cite-backlink sup a", this).each(function(){
			$(this).html($(this).html().replace(pattern, function(value, offset, full){
				return convertToDecimal(value);
			}));
		});
	});
};

module.exports = exports;