vstup/js/skript.js
author František Kučera <franta-hg@frantovo.cz>
Thu, 09 Feb 2012 14:52:20 +0100
changeset 93 5b55827de220
parent 84 f866267d7b3c
permissions -rw-r--r--
#16 „obfuskované“ odkazy na e-maily, které znesnadní sběr spamovacím robotům odkazy jsou pro uživatele klikatelné (vyžaduje JavaScript).

/**
 * XML Web generátor – program na generování webových stránek
 * Copyright © 2012 František Kučera (frantovo.cz)
 * 
 * This program is free software: you can redistribute it and/or modify
 * it under the terms of the GNU General Public License as published by
 * the Free Software Foundation, either version 3 of the License, or
 * (at your option) any later version.
 * 
 * This program is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 * GNU General Public License for more details.
 * 
 * You should have received a copy of the GNU General Public License
 * along with this program.  If not, see <http://www.gnu.org/licenses/>.
 */

/**
 * XML Web generátor – jmenný prostor 
 */
var xwg = { 
	/**
	 * Zašifruje/dešifruje obsah elementu pomocí Rot13.
	 * @param id ID elementu, jehož text chceme změnit.
	 */
	rot13: function(id) {
		var e = document.getElementById(id);
		e.textContent = e.textContent.rot13();
	},

	/**
	 * Vloží klikatelný odkaz.
	 * @param id ID span elementu obsahujícího data
	 */
	odkazNaElektronickouPoštu: function(id) {
		var spanČesky = document.getElementById(id);
		var spanObsah = document.getElementById(id + "b");
		var česky = spanČesky.innerHTML;
		var adresa = česky.replace(" zavináč ", "@").replace(" tečka ",".");

		var odkaz = document.createElement("a");
		odkaz.href = "mailto:" + adresa;
		if (spanObsah.innerHTML.length > 0) {
			odkaz.innerHTML = spanObsah.innerHTML;
		} else {
			odkaz.innerHTML = adresa;
		}

		spanČesky.parentNode.insertBefore(odkaz, spanČesky);
		spanČesky.parentNode.removeChild(spanČesky);
		spanObsah.parentNode.removeChild(spanObsah);
	},

};

/**
 * Vrací hodnotu textového řetězce zašifrovanou/dešifrovanou algoritmem Rot13 
 */
String.prototype.rot13 = function() {
	return this.replace(/[a-zA-Z]/g, function(z) {
		return String.fromCharCode((z <= "Z" ? 90 : 122) >= (z = z.charCodeAt(0) + 13) ? z : z - 26);
	});
};