function fimg_replace_headers(headerList)
{
	// check if the list contains some header tags
	if(headerList == '')
	{
		return false;
	}
	else
	{
		var tagList = headerList;
	}

	// initialize some vars:
	var replaceList = "";
	var replaceListREF = new Array();
	var replaceIndex = 0;
	var replaceSeperator = ":";
	var headerList = "";
	var tagClass = "";
	var returnString = "";
	var returnList = "";
	var hasList = new Array();
	var headerIndex = "";
	var headerIMG = new Image();
	
	// loop the tag list:
	for(i = 0; i < tagList.length; i++)
	{
		// get all elements belonging to current tag:
		headerList = document.getElementsByTagName(tagList[i]);
		
		// loop current tag elements:
		for(j = 0; j < headerList.length; j++)
		{
			if(headerList[j])
			{
				// get the class name for custom classes
				tagClass = (headerList[j].className) ? headerList[j].className : "-";
				
				// encode the text and prepare for transfer
				currentText = base64_encode(tagList[i]+","+(replaceIndex + 1)+","+tagClass+","+headerList[j].innerHTML);

				//alert(currentText);

				replaceList += currentText;
				replaceList += replaceSeperator;
				
				// create reference to element
				replaceListREF[replaceIndex] = headerList[j];

				// set index attribute on element
				replaceListREF[replaceIndex].setAttribute("fimg_index", replaceIndex);

				replaceIndex++;
			}
		}
	}
	
	// if complete element list is empty, return false:
	if(replaceList == '' || replaceListREF.length < 1 || replaceIndex < 1)
	{
		return false;
	}

	// else encode complete list again:
	else
	{
		replaceList = base64_encode(replaceList);
	}
	
	// transfer data:
	xmlhttp.open("GET", "/wsd_fontimage/fimg_replace_headers.php?seperator="+replaceSeperator+"&replace_string="+replaceList , true);
	xmlhttp.onreadystatechange=function() 
	{
		if (xmlhttp.readyState == 4) 
		{
			//alert(xmlhttp.responseText);
			// decode the result:
			returnString = base64_decode(xmlhttp.responseText);

			// split result list for loop:
			returnList = returnString.split(replaceSeperator);
			
			// return false if list is empty:
			if(!returnString || returnString == ',' || returnList < 1)
			{
				return false;
			}
			
			var currentIndex = 0;
			var currentPath = "";
			
			// loop the result list 
			for(i = 0; i < returnList.length; i++)
			{
				if(returnList[i] && returnList[i].length > 2)
				{
					// split the data into [0]=index, [1]=img_path
					currentInfo = returnList[i].split(',');

					currentIndex = currentInfo[0];
					currentPath = base64_decode(currentInfo[1]);
					
					// put path in "succesfull result array"
					hasList[currentIndex - 1] = currentPath;
				}
			}

			// reset element loop:
			replaceIndex = 0;

			// loop referenced elements:
			while(replaceListREF[replaceIndex])
			{
				if(hasList[replaceIndex])
				{
					// define the image and styles
					headerIMG = new Image();
					headerIMG.src = "/"+hasList[replaceIndex];
					headerIMG.style.display = "block";
					
					// replace the tag node:
					replaceListREF[replaceIndex].parentNode.replaceChild(headerIMG, replaceListREF[replaceIndex]);
				}

				replaceIndex++;
			}
		}
	}
	xmlhttp.send(null)
}
