function GSX()
{
	this.AllowOverflow = false;
    this.Transparent = false;
	this.Font = "";
	this.FontSize = "";
	this.UpperCase = false;
	this.Color = "000000";
	this.BgColor = "ffffff";
	this.Elements = new Array();
	this.Wrap = true;
	
	this.Replace = function()
	{
		// get method http/https
		var sGsxUrl = "http://gsx.fuse8.net";
		if(document.location.href.substring(0,5) == "https")
		    sGsxUrl = "https://gsx.fuse8.net";

		// loop through elements
		for (var i=0; i<this.Elements.length; i++) 
		{
			// get variables
			var sUrl = sGsxUrl;
			var pElement = this.Elements[i];
			
			// loop into any child nodes - the heading might contain <a> tags
			// see chart for nodetype values http://www.javascriptkit.com/domref/nodetype.shtml
			
			/*
			alert("Text: " + pElement.innerHTML 
					+ "\r\nNode Name: " + pElement.nodeName 
					+ "\r\nNode Type: " + pElement.nodeType
					+ "\r\n1st Child Node Name: " + pElement.firstChild.nodeName 
					+ "\r\n1st Child Node Type: " + pElement.firstChild.nodeType);
			*/
			
			if(pElement.firstChild)
			{	
				while(pElement.firstChild.nodeType != 3)
					{pElement = pElement.firstChild;}
            		}
			
			var sText = encodeURI(pElement.innerHTML);

			// see if we should convert to uppercase
			if(this.UpperCase)
			    	sText = sText.toUpperCase();
		    	
			// fix problems with the encodeURI
			// adds the "%0D%0A" characters which cause a linebreak
			sText = sText.replace(new RegExp(/%0D%0A/g), "%20");
			sText = sText.replace("&amp;" , "+%26+");
			
			// sniff the element's width and set wrapping on the generated image 
			var nWidth = pElement.offsetWidth;
			if(this.AllowOverflow)
				nWidth = nWidth + 200;		// add 200px to prevent images from being split over 2 lines where the font is wider
			
			
			// build url for gsx 
			if(this.Transparent)
			    sUrl += "/image.png?transparent=true&w=" + nWidth + "&h=500";
			else
			    sUrl += "/image.gif?w=" + nWidth + "&h=500";
			
			sUrl += "&size=" + this.FontSize;
			sUrl += "&color=" + this.Color;
			sUrl += "&bgcolor=" + this.BgColor;
			sUrl += "&font=" + this.Font;
			sUrl += "&text=" + sText;
			sUrl += "&cache=true&autoresize=true";
			sUrl += "&wrap=" + this.Wrap;

			// replace with the &lt;img&gt; tag
			pElement.style.display = 'none';		
			pElement.innerHTML = '<img src="' + sUrl + '">';
			pElement.style.textIndent = '0px';
			pElement.style.display = '';
		}
	}
}

// perform image  replacement 
function GSXReplacement(){
	var gsx = new GSX();
	gsx.FontSize = 28; 
	gsx.Font = "MtBdR___.ttf"; 
	gsx.Color = "005dab"; 
	gsx.BgColor = "ffffff";
	gsx.UpperCase = false;
	gsx.Wrap = true;

	// replace h1 header
	if(document.getElementById("primary-content") != null)
	{
		gsx.Elements = document.getElementById("primary-content").getElementsByTagName("h1");
		gsx.Replace();
	}
	
	if(document.getElementById("primary-content-top") != null)
	{
		gsx.Elements = document.getElementById("primary-content-top").getElementsByTagName("h1");
		gsx.Replace();
	}
	// replace h1 header
	if(document.getElementById("custom-header") != null)
	{
		gsx.Elements = document.getElementById("custom-header").getElementsByTagName("h1");
		gsx.Replace();
	}


	if(document.getElementById("blocks") != null)
	{
		gsx.FontSize = 17; 
		gsx.Color = "ffffff";
		gsx.BgColor = "3e84bf";
		gsx.Transparent = true;
		gsx.AllowOverflow = true;
		gsx.Elements = document.getElementById("blocks").getElementsByTagName("h3");
		gsx.Replace();
	}


	// replace third-content H2 header
	if(document.getElementById("home") != null && document.getElementById("third-content") != null)
	{
		gsx.Color = "757575"; 
		gsx.Transparent = false;
		gsx.BgColor = "ffffff";
		gsx.Elements = document.getElementById("third-content").getElementsByTagName("h2");
		gsx.Replace();
	}else{
		if(document.getElementById("third-content") != null){
			gsx.FontSize = 16;
			gsx.Color = "757575"; 
			gsx.Transparent = false;
			gsx.BgColor = "ffffff";
			gsx.Elements = document.getElementById("third-content").getElementsByTagName("h2");
			gsx.Replace();
		}
	}

	if(document.getElementById("fourth-content") != null)
	{

		gsx.FontSize = 16;
		gsx.Color = "757575";
		gsx.BgColor = "ffffff";
		gsx.Elements = document.getElementById("fourth-content").getElementsByTagName("h2");
		gsx.Replace();
	}

	// replace third-content H2 header
	if(document.getElementById("home") != null)
	{
		gsx.FontSize = 20; 
		gsx.Color = "757575"; 
		gsx.BgColor = "ffffff";
		gsx.Elements = document.getElementById("primary-content").getElementsByTagName("h2");
		gsx.Replace();
	}else{
		if(document.getElementById("primary-content")){
			gsx.FontSize = 16;
			gsx.Color = "757575"; 
			gsx.Transparent = false;
			gsx.BgColor = "ffffff";
			gsx.Elements = document.getElementById("primary-content").getElementsByTagName("h2");
			gsx.Replace();
		}
	}
	if(document.getElementById("primary-content-bottom")){
			gsx.FontSize = 16;
			gsx.Color = "757575"; 
			gsx.Transparent = false;
			gsx.BgColor = "ffffff";
			gsx.Elements = document.getElementById("primary-content-bottom").getElementsByTagName("h2");
			gsx.Replace();
	}
	
	// replace h3 boxes header
	if(document.getElementById("third-content") != null)
	{
		gsx.FontSize = 20;
		gsx.Color = "005dab"; 
		gsx.Elements = document.getElementById("third-content").getElementsByTagName("h3");
		gsx.Replace();
	}

	if(document.getElementById("secondary-content") != null)
	{
		gsx.FontSize = 20;
		gsx.Color = "005dab"; 
		gsx.Elements = document.getElementById("secondary-content").getElementsByTagName("h3");
		gsx.Replace();
	}

	if(document.getElementById("secondary-content") != null)
	{
		gsx.FontSize = 16;
		gsx.Color = "757575"; 
		gsx.Transparent = false;
		gsx.BgColor = "ffffff";
		gsx.AllowOverflow = false;
		gsx.Elements = document.getElementById("secondary-content").getElementsByTagName("h2");
		gsx.Replace();
	}

	if(document.getElementById("primary-content") != null)
	{	gsx.FontSize = 16;
		gsx.Color = "005DAB"; 
		gsx.Transparent = true;
		gsx.BgColor = "ffffff";
		gsx.Elements = document.getElementById("primary-content").getElementsByTagName("h3");
		gsx.Replace();
		}
	if(document.getElementById("secondary-content") != null)
	{
		gsx.Font = "METAPBDC.TTF";
		gsx.Color = "005dab"; 
		gsx.BgColor = "ffffff";
		gsx.FontSize = 19;
		gsx.Elements = document.getElementById("secondary-content").getElementsByTagName("h4");
		gsx.Replace();
	}
	if(document.getElementById("third-content") != null)
	{
		gsx.Font = "METAPBDC.TTF";
		gsx.Color = "005dab"; 
		gsx.BgColor = "ffffff";
		gsx.FontSize = 19;
		gsx.Elements = document.getElementById("third-content").getElementsByTagName("h4");
		gsx.Replace();
	}

	// replace telephone number
	if(document.getElementById("header").getElementsByTagName("span"))
	{
		gsx.Font = "METAPBDC.TTF";
		gsx.FontSize = 23; 
		gsx.Color = "ffffff";
		gsx.BgColor = "005dab";
		gsx.Wrap = false;
		gsx.Elements = document.getElementById("header").getElementsByTagName("span");
		gsx.Replace();
	}
	// replace telephone number
	if(document.getElementById("header").getElementsByTagName("em"))
	{
		gsx.FontSize = 18; 
		gsx.Font = "MtBdR___.ttf"; 
		gsx.Elements = document.getElementById("header").getElementsByTagName("em");
		gsx.Replace();
	}

	if(document.getElementById("wide-box-bot") != null)
	{
		gsx.FontSize = 32;
		gsx.Color = "005dab"; 
		gsx.BgColor = "ffffff";
		gsx.Font = "METAPBDC.TTF";
		gsx.Elements = document.getElementById("wide-box-bot").getElementsByTagName("span");
		gsx.Replace();
	}

}

window.onload = function(){
	GSXReplacement();
}
