var TextImage = {
	
	prefix: '/assets/blog/text/',
	
	applyBackgroundImage: (window.ActiveXObject && !window.XMLHttpRequest) // check for IE6
	
		? function(el, src) { // AlphaImageLoader for IE6
		
			el.style.height = '1px'; // trigger hasLayout property
			el.style.filter = "progid:DXImageTransform.Microsoft.AlphaImageLoader(src='" + src + "')";
			el.style.textIndent = '-1000em';
			
		} : function(el, src) { // background image for everything else
		
			el.style.backgroundImage = 'url('+src+')';
			el.style.backgroundRepeat = 'no-repeat';
			el.style.backgroundPosition = 'center left';
			el.style.textIndent = '-1000em';
			
		},
	
	
	applyImage: function(el, src, text) {
		
		el.innerHTML = '<img src="' + src + '" alt="' + text + '" />';
		
	},
	
	replace: function(func, elements, style, filter) {
		
		if(!elements.length) return;
		
		var el;
		
		for(var i=0; el = elements[i]; i++) {
		
			text = filter ? filter(el) : el.innerHTML;
			if(!text) continue;
			
			this[func](el, this.prefix + style + '/' + Base64.encode(text) + '.png', text);
			
		}
	},
	
	replaceBackground: function(elements, style, filter) { this.replace('applyBackgroundImage', elements, style, filter) },
	
	replaceImg: function(elements, style, filter) { this.replace('applyImage', elements, style, filter) }

};


var Base64 = {

	alphabet: "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_", // note that this is unorthodox, but more filename-friendly

	encode: function(input) {

		var chr1, chr2, chr3, enc1, enc2, enc3, enc4, i = 0, output = '';

		while (i < input.length) {

			chr1 = input.charCodeAt(i++);
			chr2 = input.charCodeAt(i++);
			chr3 = input.charCodeAt(i++);

			enc1 = chr1 >> 2;
			enc2 = ((chr1 & 3) << 4) | (chr2 >> 4);
			enc3 = ((chr2 & 15) << 2) | (chr3 >> 6);
			enc4 = chr3 & 63;

			output = output +
			this.alphabet.charAt(enc1) + this.alphabet.charAt(enc2) +
			this.alphabet.charAt(enc3) + this.alphabet.charAt(enc4);

		}

		return output;
	}

};

