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

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

CSpecialFont.prototype.ReplaceHtml = function(Html) 
{
	Html = Html.replace(/&/,"&amp;");
	Html = Html.replace(/</,"&lt;");
	Html = Html.replace(/>/,"&gt;");
	Html = Html.replace(/\r\n/,"<br>");
	Html = Html.replace(/\n/,"<br>");
	Html = Html.replace(/\r/,"<br>");
	return(Html);
}

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 Html = 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;
					Html = aHyperlinks[0].innerHTML;
				}
				
				var StyleText = encodeURIComponent(this.ReplaceHtml(Html));
				aObjects[j].innerHTML = "<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=\"/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=\"/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].appendChild(OriginalTextElement);
			} 
		}
	}
}

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