﻿(function($)
{
	var _url = 'http://www.restaurangguiden.com/_handlers/imageReplacer.ashx?font=[font]&text=[text]&height=[height]&color=[color]&bcolor=[bcolor]&size=[size]&bold=[bold]&italic=[italic]&underline=[underline]&textTransform=[textTransform]';
	var _enableTransparency = true;
	var _forceHeight = true;
	var _forceWidth = false;

	$.fn.textToImage = function(font)
	{
		var elements = $(this);
		replaceElements(elements, font);
	};


	function replaceElements(elements, font)
	{
		//return;

		$.each(elements, function(index, el)
		{
			// only handle text nodes
			if (el.firstChild.nodeType == 3)
			{

				var l = $(el);
				// move old text out of the way
				//l.css('textIndent', '-20000px');
				// get attributes of elements                    
				var text = l.html();
				var regexp = /<("[^"]*"|'[^']*'|[^'">])*>/gi; 
				text = text.replace(regexp,"")
				var color = l.css('color');
				var bcolor = l.css('backgroundColor');
				var height = l.css('height');
				var width = l.css('width');
				var size = l.css('fontSize');
				var bold = l.css('fontWeight');
				var italic = l.css('fontStyle');
				var underline = l.css('textDecoration');
				var textTransform = l.css('textTransform');

				if (color.indexOf('rgb') != -1) { color = cssRgb2Hex(color) };

				if (bcolor == 'transparent' && !_enableTransparency) { bcolor = '' };

				if (bcolor.indexOf('rgb') != -1) { bcolor = cssRgb2Hex(bcolor) };

				color = color.replace('#', '');
				bcolor = bcolor.replace('#', '');

				// create image for replacement
				var url = _url.replace('[text]', text).replace('[font]', font).replace('[bcolor]', bcolor).replace('[color]', color).replace('[size]', size).replace('[bold]', bold).replace('[italic]', italic).replace('[underline]', underline).replace('[textTransform]', textTransform);
				if (_forceWidth) { url = url.replace('[width]', width) };
				if (_forceHeight) { url = url.replace('[height]', height) };

				//l.css("backgroundImage", "url('" + url + "')");
				//l.css('backgroundRepeat', 'no-repeat');

				l.html('<img src="' + url + '" alt="' + text + '" class="replacedText" />');

				//if (l.css('backgroundPosition') == '' || l.css('backgroundPosition') == undefined) { l.css('backgroundPosition', 'center top') };

				//				var img = new Image();
				//				img.target = el;
				//				img.loadHandler = function()
				//				{
				//					this.target.replaceChild(this, this.target.firstChild);
				//				};
				//				img.onload = img.loadHandler;
				//				img.src = url;
				//				img.alt = text;
				// test code by passing the event handler
				//el.replaceChild(img, el.firstChild);				   
			}
		});
	};

	function cssRgb2Hex(color)
	{
		var c = color.replace('rgb(', '').replace(')', '').split(',');
		return rbg2hex(parseInt(c[0]), parseInt(c[1]), parseInt(c[2]));
	};

	function rbg2hex(red, green, blue)
	{
		var r = red.toString(16);
		var g = green.toString(16);
		var b = blue.toString(16);

		var c =
		((r.toString().length == 1) ? '0' : '') + r +
		((g.toString().length == 1) ? '0' : '') + g +
		((b.toString().length == 1) ? '0' : '') + b;

		return c;
	};
})(jQuery);