function dynamic_text_replacement() {

replaceClass("font_menu", "tl_files/dinr24", dinr24);
replaceClass("font_menu_bold", "tl_files/dinm24", dinm24);
replaceClass("font_largest", "tl_files/dinr28", dinr28);
replaceClass("font_large", "tl_files/dinr18", dinr18);
replaceClass("font_medium_bold", "tl_files/dinm13", dinm13);
replaceClass("font_small", "tl_files/dinr9", dinr9);
replaceClass("font_small_bold", "tl_files/dinm9", dinm9);
var testURL = "tl_files/blank.png" ;

var doNotPrintImages = false;
var printerCSS = "replacement-print.css";

var hideFlicker = false;
var hideFlickerCSS = "replacement-screen.css";
var hideFlickerTimeout = 1000;

var items;
var imageLoaded = false;
var documentLoaded = false;
var isIE = false;
var isOldIE = false;
var hadLoadingProblems = false; 

if (navigator.appVersion.indexOf("MSIE")!=-1) {
	temp=navigator.appVersion.split("MSIE");
	version=parseFloat(temp[1]);
	isOldIE= version<7.0;
	isIE=true;
}

if(isOldIE)
{
	    var rootPath=window.location.pathname;
	    if(rootPath.indexOf("index.php")>=0) 
	    {
		    rootPath=rootPath.substring(0, rootPath.lastIndexOf("/"));
	    }
	    rootPath=rootPath.substring(0, rootPath.lastIndexOf("/")+1);
}

function replaceClass(className, fontFolder, metricsArray)
{
    if(typeof items == "undefined")
        items = new Array();

    items[items.length] = {className: className, fontFolder: fontFolder, metricsArray: metricsArray};
}

if(hideFlicker)
{       
    document.write('<link id="hide-flicker" rel="stylesheet" media="screen" href="' + hideFlickerCSS + '" />');     
    window.flickerCheck = function()
    {
        if(!imageLoaded)
            setStyleSheetState('hide-flicker',false);
    };
    setTimeout('window.flickerCheck();',hideFlickerTimeout)
}

if(doNotPrintImages)
    document.write('<link id="print-text" rel="stylesheet" media="print" href="' + printerCSS + '" />');

/*
var test = new Image();
test.onload = function() { imageLoaded = true; if(documentLoaded) replacement(); };
test.src = testURL + "?date=" + (new Date()).getTime();

addLoadHandler(function(){ documentLoaded = true; if(imageLoaded) replacement(); });
*/
addLoadHandler(function(){ replacement(); });

function replacement()
{
    for(var i=0;i<items.length;i++)
    {
	    var fontImages=new Array();
        var elements = getElementsByClassName(items[i].className);
        if(elements.length > 0) for(var j=0;j<elements.length;j++)
        {
            if(!elements[j])
                continue ;
        
            replaceText(elements[j], fontImages, items[i].fontFolder, items[i].metricsArray);


            if(doNotPrintImages)
            {
                var span = document.createElement("span");
                span.style.display = 'none';
                span.className = "print-text";
                span.appendChild(document.createTextNode(text));
                elements[j].appendChild(span);
            }

        }
    }

    if(hideFlicker)
        setStyleSheetState('hide-flicker',false);
}

function addLoadHandler(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 setStyleSheetState(id,enabled) 
{
    var sheet = document.getElementById(id);
    if(sheet)
        sheet.disabled = (!enabled);
}

function replaceText(element, fontImages, fontFolder, metricsArray)
{
    var text=null;

    if(typeof element == "string") {
	    alert("replaceText string: "+element);
        return false;//replaceOnElement(element, element);
    }

    var kids = element.childNodes;
    for(var i=0;i<kids.length;i++)
    {
        if(kids[i].nodeType == 1) {
        	replaceText(kids[i], fontImages, fontFolder, metricsArray);
	} else if(kids[i].nodeType == 3) {
	        replaceOnElement(element, kids[i], kids[i].nodeValue, fontImages, fontFolder, metricsArray);
	}
    }
}

function replaceOnElement(parentNode, node, text, fontImages, fontFolder, metricsArray) {

    var div=document.createElement("span");

    for(var k=0; k<text.length; k++)
    {
		if(text.charCodeAt(k)<20)
		{
			if(isIE && text.charCodeAt(k)==10) {
				var lb=document.createElement("br");
				div.appendChild(lb);
			}
			continue;
		}

        var imageUrl = fontFolder + "/" + text.charCodeAt(k)+ ".png";
        var image = document.createElement("img");
        
		image.className = "replacement";
        image.alt = text.charAt(k);
/*
		if(text.charAt(k)=='|') {
				alert(text.charAt(k)+" imageUrl="+imageUrl);
		}
*/
		if(!isOldIE)
		{
	    	image.src = imageUrl;
			if(image.width==0) {
				hadLoadingProblems=true;
//				alert("no image '"+text.charAt(k)+"' imageUrl="+imageUrl);
			}
		}
		else
		{
            image.src = "tl_files/blank.png";
			var tempImage;

			if(typeof fontImages[text.charCodeAt(k)]== "undefined")
			{
				
				tempImage=new Image();
				tempImage.src=imageUrl;

				if(tempImage.width==0) {
					hadLoadingProblems=true;
                    tempImage.width=metricsArray[text.charCodeAt(k)][0];
                    tempImage.height=metricsArray[text.charCodeAt(k)][1];
				}

				fontImages[text.charCodeAt(k)]=tempImage;
			}
			else
			{
				tempImage=fontImages[text.charCodeAt(k)];

			}

			image.style.cssText="width="+tempImage.width+"px; height: "+tempImage.height+"px; filter:progid:DXImageTransform.Microsoft.AlphaImageLoader(src="+rootPath+imageUrl+"', sizingMethod='scale');";
		}
		div.appendChild(image);
	}

	parentNode.replaceChild(div, node);
}

function getElementsByClassName(className, tag, elm){
    var test1 = new RegExp("\\b" + className + "\\b");

    var tag = tag || "*";
    var elm = elm || document;
    var elements = (tag == "*" && elm.all)? elm.all : elm.getElementsByTagName(tag);
    var returnElements = [];
    var current;
    var length = elements.length;
    for(var i=0; i<length; i++) {
        current = elements[i];
		if(test1.test(current.className)) {
            returnElements.push(current);
        }
    }
    return returnElements;
}

}

if(document.createElement && document.getElementsByTagName && !navigator.userAgent.match(/opera\/?6/i))
    dynamic_text_replacement();

