var fkl = { 
	_base16: '0A12B34C56D78E9F', 
	encode: function (str) { 
		var re=''; 
		for (var i=0; i<str.length; i++){ 
			var cc=str.charCodeAt(i); 
			var ch=cc>>4; 
			var cl=cc-(ch*16); 
			re+=this._base16[ch]+this._base16[cl]; 
		} 
		return 'fkl'+re; 
	}, 
	decode: function (str){ 
		var re=""; 
		for (var i=0; i<str.length; i+=2){ 
			var ch=this._base16.indexOf(str.charAt(i)); 
			var cl=this._base16.indexOf(str.charAt(i+1)); 
			re+=String.fromCharCode((ch*16)+cl); 
		} 
		return re; 
	}, 
	init: function (){ 
		var sPs = document.getElementsByTagName('span');		
		var tsPs = sPs.length;
		for(var i=0;i<tsPs;i++) {
			var sP = sPs[i];
			if(typeof sP == 'object') {
				if (sP.className.substring(0,3) == 'fkl') {  
					var tu = ''; 
					if(sP.className.indexOf(' ', 0) != -1) { 
						tu = sP.className.substring(3, sP.className.indexOf(' ', 3)); 
					} 
					else tu = sP.className.substring(3); 
					var u = this.decode(tu); 
					
					var nl = document.createElement('a'); 
					nl.href = u; 
									
					if(sP.className.indexOf('targetblank', 0) != -1) nl.target = '_blank'; 
					if(sP.getAttribute('title')) nl.setAttribute('title', sP.getAttribute('title')); 
					if(sP.getAttribute('style')) nl.setAttribute('style', sP.getAttribute('style')); 
					
					for(var j=0;j<sP.childNodes.length;j++) {
						nl.appendChild(sP.childNodes[j].cloneNode(true));
					}
					
					var classes = sP.className.split('fkl'+tu).join(''); 
					if (classes != '') nl.className = classes.substr(1); 
					sP.parentNode.insertBefore(nl, sP);
					sP.parentNode.removeChild(sP);
				
					tsPs--;i--;
				}
			}
		}  
	} 
}
