$(document).ready(function(){ links = $('a.mailescape'); for (i = 0; i < links.length; ++i) { link = links[i]; da = link.href.split('/'); email = cleanKeywords(rotx(da[(da.length-1)])); link.href = 'mailto:' + email; if (link.innerHTML == 'E-Mail') { link.innerHTML = email; } } }); function cleanKeywords ( string ) { string = str_replace('TheAtKeyword', '@', string); string = str_replace('ThePointKeyword', '.', string); string = str_replace('TheHyphenKeyword', '-', string); string = str_replace('TheUnderscoreKeyword', '_', string); return string; } function rotx( string ) { var keycode = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789"; var textrot = ''; for(var i = 0; i < string.length; i++) { var codechar = string.substring(i, i + 1); var pos = keycode.indexOf(codechar); if(pos >= 0) { pos = (pos + keycode.length / 2) % keycode.length; codechar = (codechar == codechar) ? keycode.substring(pos, pos + 1) : keycode.substring(pos, pos + 1); } textrot = textrot + codechar; } return textrot; } function range ( low, high, step ) { // http://kevin.vanzonneveld.net // + original by: Waldo Malqui Silva // * example 1: range ( 0, 12 ); // * returns 1: [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12] // * example 2: range( 0, 100, 10 ); // * returns 2: [0, 10, 20, 30, 40, 50, 60, 70, 80, 90, 100] // * example 3: range( 'a', 'i' ); // * returns 3: ['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i'] // * example 4: range( 'c', 'a' ); // * returns 4: ['c', 'b', 'a'] var matrix = []; var inival, endval, plus; var walker = step || 1; var chars = false; if ( !isNaN ( low ) && !isNaN ( high ) ) { inival = low; endval = high; } else if ( isNaN ( low ) && isNaN ( high ) ) { chars = true; inival = low.charCodeAt ( 0 ); endval = high.charCodeAt ( 0 ); } else { inival = ( isNaN ( low ) ? 0 : low ); endval = ( isNaN ( high ) ? 0 : high ); } plus = ( ( inival > endval ) ? false : true ); if ( plus ) { while ( inival <= endval ) { matrix.push ( ( ( chars ) ? String.fromCharCode ( inival ) : inival ) ); inival += walker; } } else { while ( inival >= endval ) { matrix.push ( ( ( chars ) ? String.fromCharCode ( inival ) : inival ) ); inival -= walker; } } return matrix; } function array_merge() { // http://kevin.vanzonneveld.net // + original by: Brett Zamir // + bugfixed by: Nate // - depends on: is_int // % note: Relies on is_int because !isNaN accepts floats // * example 1: arr1 = {"color": "red", 0: 2, 1: 4} // * example 1: arr2 = {0: "a", 1: "b", "color": "green", "shape": "trapezoid", 2: 4} // * example 1: array_merge(arr1, arr2) // * returns 1: {"color": "green", 0: 2, 1: 4, 2: "a", 3: "b", "shape": "trapezoid", 4: 4} // * example 2: arr1 = [] // * example 2: arr2 = {1: "data"} // * example 2: array_merge(arr1, arr2) // * returns 2: {1: "data"} var args = Array.prototype.slice.call(arguments); var retObj = {}, k, j = 0, i = 0; var retArr; for (i=0, retArr=true; i < args.length; i++) { if (!(args[i] instanceof Array)) { retArr=false; break; } } if (retArr) { return args; } var ct = 0; for (i=0, ct=0; i < args.length; i++) { if (args[i] instanceof Array) { for (j=0; j < args[i].length; j++) { retObj[ct++] = args[i][j]; } } else { for (k in args[i]) { if (is_int(k)) { retObj[ct++] = args[i][k]; } else { retObj[k] = args[i][k]; } } } } return retObj; } function array_flip( trans ) { // http://kevin.vanzonneveld.net // + original by: Kevin van Zonneveld (http://kevin.vanzonneveld.net) // * example 1: array_flip( {a: 1, b: 1, c: 2} ); // * returns 1: {1: 'b', 2: 'c'} var key, tmp_ar = {}; for( key in trans ) { tmp_ar[trans[key]] = key; } return tmp_ar; } function str_replace(search, replace, subject) { // http://kevin.vanzonneveld.net // + original by: Kevin van Zonneveld (http://kevin.vanzonneveld.net) // + improved by: Gabriel Paderni // + improved by: Philip Peterson // + improved by: Simon Willison (http://simonwillison.net) // + revised by: Jonas Raoni Soares Silva (http://www.jsfromhell.com) // + bugfixed by: Anton Ongson // + input by: Onno Marsman // + improved by: Kevin van Zonneveld (http://kevin.vanzonneveld.net) // + tweaked by: Onno Marsman // * example 1: str_replace(' ', '.', 'Kevin van Zonneveld'); // * returns 1: 'Kevin.van.Zonneveld' // * example 2: str_replace(['{name}', 'l'], ['hello', 'm'], '{name}, lars'); // * returns 2: 'hemmo, mars' var f = search, r = replace, s = subject; var ra = r instanceof Array, sa = s instanceof Array, f = [].concat(f), r = [].concat(r), i = (s = [].concat(s)).length; while (j = 0, i--) { if (s[i]) { while (s[i] = (s[i]+'').split(f[j]).join(ra ? r[j] || "" : r[0]), ++j in f){}; } }; return sa ? s : s[0]; }