
var request = false;
try 
{
	request = new XMLHttpRequest();
} 
catch (trymicrosoft) 
{
	try 
	{
		request = new ActiveXObject("Msxml2.XMLHTTP");
	} 
	catch (othermicrosoft) 
	{
		try 
		{
			request = new ActiveXObject("Microsoft.XMLHTTP");
		} catch (failed) 
		{
			request = false;
		}  
	}
}

if (!request)
	alert("Error initializing XMLHttpRequest!");
		
// <Element> draw settings

// Declare global variable settings for <h1>

var path = window.location.protocol + "//"+window.location.hostname+"/public/siir/";

var elements = new Array("h1");		// Elements within this array will run SIIR
var settings = new Array();

settings["h1"] = new Array();				// Element setting array
settings["h1"]["padding"] = 6;				
settings["h1"]["bgcolor"] = "ffffff";
settings["h1"]["transparentbg"] = 0;			// Transparent background? (1=Yes, 0=No)
settings["h1"]["font_color"] = "90191c";
settings["h1"]["shadow_color"] = "ffffff";
settings["h1"]["font_file"] = "trajanprobold.otf";
settings["h1"]["font_size"] = 18;
settings["h1"]["antialias"] = 1;				// Turn on text antialiasing? (1=Yes, 0=No)
settings["h1"]["offset_baseline"] = 6;	// Offset font baseline by this much (keeps the tops of rendered characters from being lopped off)
settings["h1"]["resizevalue"] = 2;				// Number of points to resize text by
settings["h1"]["h"] = (parseInt(settings["h1"]["font_size"])+parseInt(settings["h1"]["padding"]));


settings["h2"] = new Array();	
settings["h2"]["padding"] = 1;
settings["h2"]["bgcolor"] = "FFFFFF";
settings["h2"]["transparentbg"] = 0;
settings["h2"]["font_color"] = "1c1a1a";
settings["h2"]["shadow_color"] = "ffffff";
settings["h2"]["font_file"] = "segoeui.ttf";
settings["h2"]["font_size"] = 16;
settings["h2"]["antialias"] = 1;
settings["h2"]["offset_baseline"] = 6;	// Offset font baseline by this much (keeps the tops of rendered characters from being lopped off)
settings["h2"]["resizevalue"] = 2;
settings["h2"]["h"] = (parseInt(settings["h2"]["font_size"])+parseInt(settings["h2"]["padding"])+10);


settings["h3"] = new Array();
settings["h3"]["padding"] = 1;
settings["h3"]["bgcolor"] = "FFFFFF";
settings["h3"]["transparentbg"] = 1;
settings["h3"]["font_color"] = "A8A556";
settings["h3"]["shadow_color"] = "F0F0F0";
settings["h3"]["font_file"] = "tahoma.ttf";
settings["h3"]["font_size"] = 14;
settings["h3"]["antialias"] = 1;
settings["h3"]["offset_baseline"] = 3;	// Offset font baseline by this much (keeps the tops of rendered characters from being lopped off)
settings["h3"]["resizevalue"] = 2;
settings["h3"]["h"] = (parseInt(settings["h3"]["font_size"])+parseInt(settings["h3"]["padding"])+10);

settings["a"] = new Array();
settings["a"]["padding"] = 1;
settings["a"]["bgcolor"] = "FFFFFF";
settings["a"]["transparentbg"] = 1;
settings["a"]["font_color"] = "A8A556";
settings["a"]["shadow_color"] = "F0F0F0";
settings["a"]["font_file"] = "tahoma.ttf";
settings["a"]["font_size"] = 14;
settings["a"]["antialias"] = 1;
settings["a"]["offset_baseline"] = 3;	// Offset font baseline by this much (keeps the tops of rendered characters from being lopped off)
settings["a"]["resizevalue"] = 2;
settings["a"]["h"] = (parseInt(settings["h3"]["font_size"])+parseInt(settings["h3"]["padding"])+10);

settings["strong"] = new Array();	
settings["strong"]["padding"] = 0;
settings["strong"]["bgcolor"] = "FFFFFF";
settings["strong"]["transparentbg"] = 0;
settings["strong"]["font_color"] = "5F7A87";
settings["strong"]["shadow_color"] = "EEEEEE";
settings["strong"]["font_file"] = "tahoma.ttf";
settings["strong"]["font_size"] = 18;
settings["strong"]["antialias"] = 1;
settings["strong"]["offset_baseline"] = 3;	// Offset font baseline by this much (keeps the tops of rendered characters from being lopped off)
settings["strong"]["resizevalue"] = 2;
settings["strong"]["h"] = (parseInt(settings["h2"]["font_size"])+parseInt(settings["h2"]["padding"])+10);

// SIIR - Element innerhtml

function SIIR_normalizeWhiteSpace(txt) {
	var rE = /\s+/gi;
	return txt.replace(rE,' ');
}

function SIIR_get_href(txt) {
	var text = txt;
	var thishref = text.replace(/<a(.*)href=\"/gi,'');
	thishref = thishref.replace(/\">(.*)/gi,'');
	return thishref;
}

function SIIR_get_id(txt) {
	var text=txt;
	var thisid = text.replace(/<a(.*)id=\"/gi,'');
	thisid = thisid.replace(/\">(.*)/gi,'');
	return thisid;
}

function SIIR_get_text(txt) {
	var text = txt;
	var txt = text.replace(/<\/a>/gi,'');
	txt = txt.replace(/<a(.*)>/gi,'');
	return txt;
}

function get_img_src(url) {
	request.open('POST',url, false);
	request.send(null);
	
	if (request.status == 200) 
	{
			var str=request.responseText;
			str = str.replace(/^\s+|\s+$/g,"");
			if(str.length > 0)
				return str;
			else
				return false;			
	}
	
	return false;
}

// SIIR - Replace the element with an iframe

function SIIR_replace() {
	var d = document;

	for (var a = (elements.length-1); a >= 0; a--) {

		var current_element = elements[a];
		var element = d.getElementsByTagName(current_element);

		// Loop through each <element>
		for (var i = (element.length-1); i >= 0; i--) {
			contain = element[i];
			
			// Set the "current_element.Text" variable
			settings[current_element]["text"] = SIIR_normalizeWhiteSpace(contain.innerHTML);
			
			reg = /href/i;
			
			if(!reg.test(settings[current_element]["text"]))
			{
				settings[current_element]["text"] = SIIR_get_text(settings[current_element]["text"]);
				settings[current_element]["text"] = settings[current_element]["text"];
				settings[current_element]["uri_text"] = escape(UrlUTF.encode(settings[current_element]["text"]));
	
				src = get_img_src(path+'generate.php?action=display&w='+settings[current_element]["w"]+'&h='+settings[current_element]["h"]+'&padding='+settings[current_element]["padding"]+'&transparentbg='+settings[current_element]["transparentbg"]+'&bgcolor='+settings[current_element]["bgcolor"]+'&font_color='+settings[current_element]["font_color"]+'&shadow_color='+settings[current_element]["shadow_color"]+'&font_file='+settings[current_element]["font_file"]+'&font_size='+settings[current_element]["font_size"]+'&antialias='+settings[current_element]["antialias"]+'&offset_baseline='+settings[current_element]["offset_baseline"]+'&text='+settings[current_element]["uri_text"]);
	
				contain.innerHTML = '<img src="'+src+'" title="'+unescape(settings[current_element]["text"])+'" alt="'+unescape(settings[current_element]["text"])+'" />';
			}
		}
	}
}

// SIIR - Onload call

function SIIR_init() {	
	SIIR_replace();
}

var UrlUTF = {

 	// public method for URL encoding
 	encode : function (string) {
 		 return escape(this._utf8_encode(string));
 	},

 	// public method for URL decoding
	 decode : function (string) {
 	 	return this._utf8_decode(unescape(string));
 	},

 	// private method for UTF-8 encoding
 	_utf8_encode : function (string) {
  		string = string.replace(/\r\n/g,"\n");
 	 	var utftext = "";

  		for (var n = 0; n < string.length; n++) {
   			var c = string.charCodeAt(n);
   			if (c < 128) {
    				utftext += String.fromCharCode(c);
 			} else if((c > 127) && (c < 2048)) {
  				utftext += String.fromCharCode((c >> 6) | 192);
  				utftext += String.fromCharCode((c & 63) | 128);
 			} else {
  				utftext += String.fromCharCode((c >> 12) | 224);
  				utftext += String.fromCharCode(((c >> 6) & 63) | 128);
 	 			utftext += String.fromCharCode((c & 63) | 128);
 			}
 	}

		return utftext;
	},

 	// private method for UTF-8 decoding
 	_utf8_decode : function (utftext) {
 		 var string = "";
 		 var i = 0;
 		 var c = c1 = c2 = 0;

  		while ( i < utftext.length ) {
  			 c = utftext.charCodeAt(i);
   			if (c < 128) {
    				string += String.fromCharCode(c);
    				i++;
  			 } else if((c > 191) && (c < 224)) {
 				   c2 = utftext.charCodeAt(i+1);
    				string += String.fromCharCode(((c & 31) << 6) | (c2 & 63));
    				i += 2;
  			 } else {
 				   c2 = utftext.charCodeAt(i+1);
    				c3 = utftext.charCodeAt(i+2);
    				string += String.fromCharCode(((c & 15) << 12) | ((c2 & 63) << 6) | (c3 & 63));
   				 i += 3;
 			  }
		  }
		return string;
	 }
}


// Handle multiple window onloads
window.addOnload = function (fn) {
    if (!window.OnloadCache) window.OnloadCache = [];
    var ol = window.OnloadCache;
    ol.push(fn);
}

window.onload = function () {
    var ol = window.OnloadCache;
    if (ol)
        for (var x = 0; x < ol.length; x++)
            ol[x]();
}