﻿function stripDia(str) {
	var charMap = {
		'á' : 'a', 'ä' : 'a', 'č' : 'c', 'ç' : 'c', 'ď' : 'd', 'é' : 'e', 'ě' : 'e',
		'ë' : 'e', 'í' : 'i', 'ľ' : 'l', 'ň' : 'n', 'ó' : 'o', 'ö' : 'o', 'ř' : 'r',
		'š' : 's', 'ť' : 't', 'ů' : 'u', 'ú' : 'u', 'ü' : 'u', 'ý' : 'y', 'ž' : 'z',
		'Á' : 'A', 'Ä' : 'A', 'Č' : 'C', 'Ç' : 'C', 'Ď' : 'D', 'É' : 'E', 'Ě' : 'E',
		'Ë' : 'E', 'Í' : 'I', 'Ľ' : 'L', 'Ň' : 'N', 'Ó' : 'O', 'Ö' : 'O', 'Ř' : 'R',
		'Š' : 'S', 'Ť' : 'T', 'Ů' : 'U', 'Ú' : 'U', 'Ü' : 'U', 'Ý' : 'Y', 'Ž' : 'Z'
	};
	var keys = [], key;
	for (key in charMap) {
		keys.push(key);
	}
	return str.replace(new RegExp(keys.join('|'), 'g'), function ($0) {
		return charMap[$0];
	});
}

function expandList(str) {
	var aSource = str.split('\n');
	var aStripped = stripDia(str).split('\n');
	var sMerged, 
		aMerged = [], 
		j = 0;
	for(var i = 0, len = aSource.length; i < len;  i++) {
		aMerged[j++] = aSource[i];
		if ((aSource[i] !== aStripped[i]) && (aSource[i].charAt(0) === '"' || aSource[i].charAt(0) === '[')) {
			aMerged[j++] = aStripped[i];
		}
	}
	sMerged = aMerged.join('\n');
	return (sMerged !== str) && sMerged;
}

function readInput(id) {
	return jQuery.trim($("textarea#" + id).val());
}

function showResult(s, id) {
	$("#" + id).val(s);
}

function processInput(idIn, idOut) {
	var MSG_NO_OUTPUT = 'Vstupní seznam neobsahuje frázové či přesné shody (klíčová slova v uvozovkách resp. hranatých závorkách), takže je doplnění variant bez diakritiky zbytečné.\n\nTaké je možné, že máte starší prohlížeč, ve kterém to ještě nefunguje. Zkuste FF 3.5, Chrome, Operu 9+ nebo IE 8.';
	var areaSel;
	var merged = expandList(readInput(idIn));
	if (merged) {
		showResult(merged, idOut);
		areaSel = "#" + idOut;
	}
	else {
		showResult(MSG_NO_OUTPUT, idOut);
		areaSel = "#" + idIn;
	}
	$(areaSel).focus();
	$(areaSel).select();
}

$(document).ready(function(){ 

	$("#inputArea").focus();
	
	$("#ProcessButton").click(function() {
		processInput('inputArea', 'outputArea');
	});

});
