function CSpecialFont(aReplaceTags) 
{
	this.aReplaceTags = aReplaceTags;
	
}

CSpecialFont.prototype.replaceAfterLoad = function()
{
	this.addLoadHandler(this.start.bind(this));
}

CSpecialFont.prototype.start = function()
{
	for(var i = 0;i < this.aReplaceTags.length;i++) {
		var ObjectTag = this.aReplaceTags[i][0]; 	
		var ClassName = this.aReplaceTags[i][1]; 	
		var FSTid 		= this.aReplaceTags[i][2];
		var aObjects = document.getElementsByTagName(ObjectTag);
		for(var j = 0; j < aObjects.length;j++) {
			if(aObjects[j].className == ClassName) {
				var text = aObjects[j].innerHTML;
				var Height = aObjects[j].clientHeight;
				var Width = aObjects[j].clientWidth;
				if(Height < 1) {
					var pos = aObjects[j].style.position;
					var display = aObjects[j].style.display;
					aObjects[j].style.display = 'block';
					aObjects[j].style.position = 'absolute';
					var Height = aObjects[j].clientHeight;
					var Width = aObjects[j].clientWidth;
					aObjects[j].style.position = pos;
					aObjects[j].style.display = display;
				}
				
				var OriginalTextElement = document.createElement('span');
  			var OriginalText = aObjects[j].innerHTML
  			OriginalTextElement.className = "originaltext";
				OriginalTextElement.innerHTML = OriginalText;
				aHyperlinks = aObjects[j].getElementsByTagName('a');
				var UrlTarget = "";
				var PageTarget = "";
				if(aHyperlinks.length > 0) {
					UrlTarget = aHyperlinks[0].href;
					PageTarget = aHyperlinks[0].target;
					var text = aHyperlinks[0].innerHTML;
				}
				var StyleText = encodeURIComponent(text.unescapeHTML());
				
				
					/* using flash.js  (fails)
				var FlashItem = new CFlashObj("http://www.kreuze.nl/font.swf", Width, Height, "");
				FlashItem.AddParam("flashvars", "text="+StyleText+"&fontid="+FSTid+"&url="+UrlTarget);
				FlashItem.AddParam("scale", "noscale");
				
				var FlashElement = document.createElement('span');
				FlashElement.className = "flashtext";
				FlashElement.innerHTML = FlashItem.getHtml();
				aObjects[j].innerHTML = "";
				aObjects[j].appendChild(FlashElement);*/
          
				// hard coded - works
				var FlashContent = "<object classid=\"clsid:d27cdb6e-ae6d-11cf-96b8-444553540000\" codebase=\"http://fpdownload.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=7,0,0,0\" height=\""+Height+"\" width=\""+Width+"\"><param name=\"movie\" value=\"http://www.kreuze.nl/font.swf\"><param name=\"quality\" value=\"high\"><param name=\"menu\" value=\"false\"><param name=\"flashvars\" value=\"" + "text="+StyleText+"&fontid="+FSTid+"&wid="+Width+"&hei="+Height+"&url="+UrlTarget + "&tar=" + PageTarget + "\"><param name=\"scale\" value=\"noscale\"><param name=\"wmode\" value=\"transparent\"><param name=\"allowScriptAccess\" value=\"always\"><embed src=\"http://www.kreuze.nl/font.swf\" quality=\"high\" menu=\"false\" scale=\"noscale\" wmode=\"transparent\" flashvars=\"" + "text="+StyleText+"&fontid="+FSTid+"&wid="+Width+"&hei="+Height+"&url="+UrlTarget + "&tar=" + PageTarget + "\" allowscriptaccess=\"always\" name=\"SwfMovie\" type=\"application/x-shockwave-flash\" pluginspage=\"http://www.macromedia.com/go/getflashplayer\" height=\""+Height+"\" width=\""+Width+"\"></object>";
				aObjects[j].innerHTML = FlashContent;
				
				aObjects[j].appendChild(OriginalTextElement);
				aObjects[j].style.display = 'block';
			} 
		}
	}
}

CSpecialFont.prototype.addLoadHandler = function(handler)
{
	if(window.addEventListener)
	{
		window.addEventListener("load",handler,false);
	}
	else if(window.attachEvent)
	{
		window.attachEvent("onload",handler);
	}
	else if(window.onload)
	{
		var oldHandler = window.onload;
		window.onload = function piggyback()
		{
			oldHandler();
			handler();
		};
	}
	else
	{
		window.onload = handler;
	}
}

Function.prototype.bind = function (object) {
   var method = this;
   return function () {
     method.apply(object, arguments);
   };
 }