		if (isIE == undefined) var isIE = document.all ? true : false;
		var tID = setTimeout("CreateDebugBTN();", 1000);
		var dbgElements, dbgElement, dbgNdx, debug, immediate, data, debugBTN;

		if(typeof String.prototype.ltrim == "undefined") String.prototype.ltrim = function(){return this.replace(/^\s+/,"");}
		if(typeof String.prototype.rtrim == "undefined") String.prototype.rtrim = function(){return this.replace(/\s+$/,"");}
		if(typeof String.prototype.trim == "undefined") String.prototype.trim = function(){var str = this.ltrim();return str.rtrim();}
		if(typeof String.prototype.right == "undefined") String.prototype.right = function(n){return this.substring(this.length - n, this.length)}
		if(typeof String.prototype.left == "undefined") String.prototype.left = function(n) { return this.substring(0, n); }
		if(typeof pageHeight == "undefined") function pageHeight(){return  window.innerHeight != null? window.innerHeight : document.documentElement && document.documentElement.clientHeight ?  document.documentElement.clientHeight : document.body != null? document.body.clientHeight : null;}
		if(typeof pageWidth == "undefined") function pageWidth() {return window.innerWidth != null? window.innerWidth : document.documentElement && document.documentElement.clientWidth ?       document.documentElement.clientWidth : document.body != null ? document.body.clientWidth : null;} 
		if(typeof d2h == "undefined") function d2h(d) {return d.toString(16);}
		if(typeof h2d == "undefined") function h2d(h) {return parseInt(h,16);} 
		if(typeof Convert2HexString == "undefined") function Convert2HexString(str) { var ndx = 0, asciiValue, outstr = "", hx; for (ndx = 0; ndx < str.length; ndx++) { asciiValue = str.charCodeAt(ndx); hx = d2h(asciiValue); hx = digits(hx, 2); outstr = outstr + "%" + hx; } return outstr; } 
		if(typeof Convert2String == "undefined") function Convert2String(hexstring) { if (hexstring == null) return null; var ndx = 0, asciiValue, outstr = "", dc; var regexpChars = /\%[0-9a-f][0-9a-f]/ig; var matches = hexstring.match(regexpChars); for (ndx = 0; ndx < matches.length; ndx++) { dc = h2d(matches[ndx].right(2)); outstr += String.fromCharCode(dc); } return outstr; } 
		if(typeof digits == "undefined") function digits(v, n) { while (v.length < n) { v = "0" + v; } return v; }
		if (navigator.userAgent.match(/MSIE 9/i))
		{
			if (typeof db == undefined) function db(str) { if (document.getElementById("debugWindow") != undefined) { if (str == undefined) { document.getElementById("debugWindow").innerHTML = ""; } else { document.getElementById("debugWindow").innerHTML += str + "<br>" } } }
		}
		else
		{
			if(typeof d == undefined) function d(str) { if (document.getElementById("debugWindow") != undefined) { if (str == undefined) { document.getElementById("debugWindow").innerHTML = ""; } else { document.getElementById("debugWindow").innerHTML += str + "<br>" } } }
		}

		function CreateDebugBTN() // Displays DEBUG button on calling webpage.
		{
			debugBTN = createObject("<input type='button' value='Debug' onclick='javascript:OpenDebug();'>", "debugBTN", document.body, "position:absolute;top:5px;right:5px;z-index:99999;width:50px;height:25px;background:#C7C7C7;color:red;border:outset 1pt;font-size:10pt;font-weight:normal;");
			var totalSavedScripts = readCookie("totalSavedScripts");
			if (totalSavedScripts == null)
			{
				totalSavedScripts = 0
				createCookie("totalSavedScripts", totalSavedScripts, 30)
			}
		}
		function getPos(obj, direction, additional)
		{
			var curleft = curtop = rtn = 0;
			if (obj.offsetParent)
			{
				do
				{
					curleft += obj.offsetLeft;
					curtop += obj.offsetTop;
				} while (obj = obj.offsetParent);
				
				switch (direction.toLowerCase())
				{
					case "left":
					case "right":
						rtn = curleft + additional;
						break;
					case "top":
					case "bottom":
						rtn = curtop + additional;
						break;
				}

				return rtn;
			}
			else
				return 0;
		}

		function HideDebug()
		{
			document.getElementById("debugWindow").style.display = "none"
			document.getElementById("immediateWindow").style.display = "none"
			document.getElementById("scriptSaver").style.display = "none"
			document.getElementById("hideDebugBTN").style.display = "none"
			document.getElementById("closeDebugBTN").style.display = "none"
			document.getElementById("clearDebugBTN").style.display = "none"
			if (document.getElementById("debug_splash") != undefined)
				CloseSplash()
			if (document.getElementById("helpWindow") != undefined)
				document.getElementById("helpWindow").style.display = "none"
		}
		function ShowDebug()
		{
			document.getElementById("debugWindow").style.display = "inline"
			document.getElementById("immediateWindow").style.display = "inline"
			document.getElementById("scriptSaver").style.display = "inline"
			document.getElementById("closeDebugBTN").style.display = "inline"
			document.getElementById("hideDebugBTN").style.display = "inline"
			document.getElementById("clearDebugBTN").style.display = "inline"
		}

		function displaySplash()
		{
			var style = "position:absolute;left:" + ((screen.width - 400) / 2) + "px;top:" + (((screen.height - 400)/2)-100) + "px;width:400px;height:400px;border:solid 2pt red;color:black;background:white url(http://www.antidotecomputer.com/images/antidote-logo.gif) no-repeat 50% 50%;z-index:100500;text-align:center;"
			var splash;
			if (document.getElementById("debug_splash") == undefined)
				splash = createObject("div", "debug_splash", document.body, style);
			else
				splash = document.getElementById("debug_splash")

			splash.innerHTML = "<font style='font-size:18pt;font-weight:bold;'>"
			splash.innerHTML += "JAVASCRIPT IMMEDIATE DEBUG WINDOW<br><br>"
			splash.innerHTML += "</font>"
			splash.innerHTML += "<font style='font-size:8pt;font-weight:normal;'>Brought to you by<br><br></font>"
			splash.innerHTML += "<font style='font-size:18pt;font-weight:bold;'>Antidote Computer Services<br></font>"
			splash.innerHTML += "<a href='http://www.antidotecomputer.com'>http://www.antidotecomputer.com</a><br><br>"
			splash.innerHTML += "<a href='javascript:void(0);' onclick='javascript:CloseSplash();' style='position:absolute;right:0px;bottom:0px;color:red;font-size:16pt;background:yellow;border:outset 1pt black;'>close</a>"

		}

		function CloseSplash()
		{
			removeObject(document.getElementById("debug_splash"));
		}

		function chr(n)
		{
			return String.fromCharCode(n)
		}

		function StripTabs(element)
		{
			var ev = window.clipboardData.getData("Text")
			var evSplit = ev.split(chr(9));
			ev = evSplit.join("  ")
			window.clipboardData.setData("Text", ev)
		}

		function KeyPressed(element, e)
		{
			var keycode = e.KeyCode
			return true;


		}

		function OpenDebug()
		{
			var scrptSrc;

			if (document.getElementById("debugWindow") != undefined)
			{
				ShowDebug()
				return;
			}

			if (self.location.protocol.toLowerCase() != "https:")
				scrptSrc = "http://www.antidotecomputer.com/js/scriptReloader.js"
			else
				scrptSrc = "https://www3511.ssldomain.com/antidotecomputer/js/scriptReloader.js"

			var theBody = document.getElementsByTagName("body")[0];
			var scrpt = document.createElement("<" + "SCRIPT TYPE='text/javascript' SRC='" + scrptSrc + "'>")
			theBody.appendChild(scrpt)


			displaySplash()

			// createObject(element type, element id, parent node [, element style] )
			var debugWnd = createObject("div", "debugWindow", document.body, "display:inline;position:absolute;top:0px;right:0px;width:600px;height:250px;font-size:8pt;font-weight:normal;text-align:left;background:#F0F0F0;color:black;border:solid 1pt black;z-index:99999;overflow:auto;padding:4px;");
			debugWnd.innerHTML = "<center>DEBUG WINDOW</center>"

			var immediateWnd = createObject("div", "immediateWindow", document.body, "display:inline;position:absolute;top:" + getPos(debugWnd, "top", 250) + "px;right:0px;width:600px;height:250px;font-size:8pt;font-weight:normal;text-align:left;background:#F0F0F0;color:black;border:solid 1pt black;z-index:99999;");
			immediateWnd.innerHTML =  "<font id='legend' style='width:100%;font-size:8pt;'>Predefined variables: debug, immediate, d&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href='javascript:void(0);' onclick='javascript:OpenHelp();' style='color:red;background:white;width:50px;border:solid 1pt red;text-align:center;'>help</a></font><br>"
			immediateWnd.innerHTML += "<textarea onPaste='javascript:StripTabs(this);' onKeyDown='javascript:return KeyPressed(this, event);' id='immediate' name='immediate' style='width:100%;height:200px;font-size:8pt;text-align:left;'></textarea><br>"
			immediateWnd.innerHTML += "<input type='button' value='!' style='width:60px;font-size:12pt;color:green;background:#A0A0A0;border:outset 1pt black;text-align:center;' onclick='javascript:dbgExecute();'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;"
			immediateWnd.innerHTML += "<input type='button' value='X' style='width:60px;font-size:12pt;color:red;background:#A0A0A0;border:outset 1pt black;text-align:center;' onclick='javascript:clearWindow();'>"

			var scriptSaverWnd = createObject("div", "scriptSaver", document.body, "display:inline;position:absolute;top:" + getPos(immediateWnd, "top", 250) + "px;right:0px;width:600px;height:50px;font-size:8pt;font-weight:normal;text-align:left;background:#E0E0E0;color:black;border:solid 1pt black;z-index:99999;overflow:hidden;");
			var cookieList = enumerateScripts("scriptSaver");
			var scriptName = createObject("<input type=text value='' name='ScriptName' Maxlength='40'>", "ScriptName", scriptSaverWnd, "position:absolute;left:220px;top:0px;width:200px;font-size:8pt;text-align:left;");
			var saveBTN = createObject("<input type=button value='Save' onclick='javascript:SaveScript();'>", "saveScriptBTN", scriptSaverWnd, "position:absolute;left:440px;top:0px;width:60px;");
			var eraseBTN = createObject("<input type=button value='Erase' onclick='javascript:EraseScript();'>", "eraseBTN", scriptSaverWnd, "position:absolute;left:510px;top:0px;width:60px;");

			var spanned = createObject("span", "spanned", scriptSaverWnd, "position:absolute;left:0px;bottom:0px;font-size:8pt;width:100%;height:20px;");
			spanned.innerHTML =  "<input type=checkbox CHECKED value='' onClick='javascript:ToggleLock(this);'>Locked&nbsp;&nbsp;"
			spanned.innerHTML += "<input type=button id='killBTN' disabled value='Kill All Scripts' onclick='javascript:KillScripts();' style='font-size:8pt;font-weight:normal;color:red;'>"
			spanned.innerHTML += "&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;"
			spanned.innerHTML += "<input type=button value='Wider' onclick='javascript:WidenDebug(this);' style='position:absolute;right:0px;bottom:0px;font-size:8pt;color:red;'>"
			spanned.innerHTML += "<input type=button value='Reload Scripts' onclick='javascript:reloadScripts();' style='position:absolute;right:40px;bottom:0px;font-size:8pt;color:blue;'>"

			createObject("<input type='button' value='_' onclick='javascript:HideDebug();'>", "hideDebugBTN", document.body, "font-size:12pt;padding:0 3px 0 3px;color:red;background:transparent;border:solid 1pt red;position:absolute;top:0px;right:25px;z-index:99999;");
			createObject("<input type='button' value='X' onclick='javascript:CloseDebug();'>", "closeDebugBTN", document.body, "font-size:12pt;padding:0 3px 0 3px;color:red;background:transparent;border:solid 1pt red;position:absolute;top:0px;right:0px;z-index:99999;");
			createObject("<input type='button' value='CLR' onclick='javascript:debug.innerHTML = \"\";'>", "clearDebugBTN", document.body, "font-size:8pt;padding:0;color:red;background:transparent;border:solid 1pt red;position:absolute;top:" + getPos(debugWnd, "top", 225) + "px;right:0px;z-index:99999;");

			debug = document.getElementById("debugWindow")
			immediate = document.getElementById("immediate")
		}

		function ToggleLock(btn)
		{
			if (btn.checked)
				document.getElementById("killBTN").disabled = true;
			else
				document.getElementById("killBTN").disabled = false;
		}

		function EraseScript()
		{
			var scripts = document.getElementById("cookies")
			var scriptName = document.getElementById("ScriptName")
			if (scripts.selectedIndex <= 0 && scriptName.value.trim().length == 0)
				return;

			if (scripts.selectedIndex <= 0)
			{
				var i;
				for (i = 0; i < scripts.length; i++)
				{
					if (scriptName.value.trim().toLowerCase() == scripts[i].text.toLowerCase())
					{
						scripts.selectedIndex = i;
					}
				}
			}
			if (confirm("Script: " + scripts[scripts.selectedIndex].text + " will be deleted.\n\nContinue?"))
			{
				var item = scripts[scripts.selectedIndex].value
				while (item.length < 2) item = "0" + item;
				var sNameCookie = "script_name_" + item;
				var sCookie = "script_" + item;
				eraseCookie(sNameCookie)
				eraseCookie(sCookie)

				enumerateScripts("scriptSaver")
				document.getElementById("ScriptName").value = ""

				decrementScriptCount();
			}
		}

		function clearWindow()
		{
			document.getElementById("immediate").value = "";
			document.getElementById("ScriptName").value = "";
			var cookies = document.getElementById("cookies");
			if (cookies != undefined)
			{
				cookies.selectedIndex = 0;
			}
		}

		function WidenDebug(element)
		{
			if (element.value == "Wider")
			{
				element.value = "Narrower"
				document.getElementById("debugWindow").style.width = "1000px"

				document.getElementById("immediateWindow").style.width = "1000px"
			}
			else
			{
				element.value = "Wider"
				document.getElementById("debugWindow").style.width = "600px"

				document.getElementById("immediateWindow").style.width = "600px"
			}
		}
		function dbgExecute()
		{
			var scriptWnd = document.getElementById("immediate")
			var script = scriptWnd.value
			eval(script)
		}
		function createObject(typ, id, parent, style)
		{
			if (parent == undefined)
			{
				return;
			}

			var obj = document.createElement(typ)
			parent.appendChild(obj)
			obj.setAttribute('id', id)
			if (style != undefined)
				obj.style.cssText = style
			return obj;
		}
		function CloseDebug()
		{
			var bClose = true
			if (document.getElementById("immediate").value.length > 0)
			{
				if (confirm("Immediate Script window contains a script.  Closing will cause the script to be lost.\n\nClick Okay to confirm you want to close the debug windows."))
					bClose = true
				else
					bClose = false
			}
			
			if (bClose)
			{
				var parent = document.getElementById("debugWindow").parentNode
				closeObject(parent, "debugWindow")
				closeObject(parent, "immediateWindow")
				closeObject(parent, "scriptSaver")
				closeObject(parent, "closeDebugBTN")
				closeObject(parent, "clearDebugBTN")
				closeObject(parent, "helpWindow")
				closeObject(parent, "hideDebugBTN")
				closeObject(parent, "debug_splash")
			}
			var x = function () 
							{ 
								var s = document.getElementsByTagName("script")
								var n = 0;
								var debugScript;

								for (n = 0; n < s.length; n++)
								{
									if (s[n].src.toLowerCase() == 'http://www.antidotecomputer.com/js/debug.js')
										debugScript = s[n]
								}
								debugBTN.parentNode.removeChild(debugBTN);
								if (debugScript != undefined)
									if (debugScript.parentNode != undefined)
										debugScript.parentNode.removeChild(debugScript);
							}
			setTimeout(x, 1000);
		}
		function closeObject(parent, objID)
		{
			var obj = document.getElementById(objID)
			if (parent != undefined && obj != undefined)
				parent.removeChild(obj);
		}
		function removeObject(obj)
		{
			if (obj != undefined)
			{
				var parent = obj.parentNode
				if (parent == null)
					return;
				parent.removeChild(obj);
			}
		}
		function incrementScriptCount()
		{
			var totalSavedScripts = readCookie("totalSavedScripts")
			if (totalSavedScripts != null)
				totalSavedScripts++
			else
				totalSavedScripts = 1
			createCookie("totalSavedScripts", totalSavedScripts, 30);
			return totalSavedScripts;
		}

		function decrementScriptCount()
		{
			var totalSavedScripts = readCookie("totalSavedScripts")
			if (totalSavedScripts != null)
				totalSavedScripts--
			else
				totalSavedScripts = 0
			createCookie("totalSavedScripts", totalSavedScripts, 30);
			return totalSavedScripts;
		}

		function KillScripts()
		{
			if (! confirm("Are you sure you want to remove all of your saved scripts on this website?"))
				return;
			var cookie, str, i, totalSavedScripts;

			totalSavedScripts = readCookie("totalSavedScripts")
			if (totalSavedScripts == null)
				return;
			
			totalSavedScripts = parseInt(totalSavedScripts, 10);

			for (i=1; i <= totalSavedScripts; i++)
			{
				str = i.toString()
				while (str.length < 2) str = "0" + str;
				cookie = "script_name_" + str
				eraseCookie(cookie)

				cookie = "script_" + str
				eraseCookie(cookie)
			}
			eraseCookie("totalSavedScripts")
			createCookie("totalSavedScripts", "0", 30)
			var cookies = document.getElementById("cookies")
			if (cookies != undefined)
			{
				var parent = cookies.parentNode
				parent.removeChild(cookies)
			}
		}

		function SaveScript()
		{
			var script = document.getElementById("immediate").value.trim()
			var scriptName = document.getElementById("ScriptName").value.trim()
			var scripts = document.getElementById("cookies")

			var i, bOverWrite = false;
			var scriptIndex = -1;

			if (! script.length) return;

			if (scripts != null)
			{
				for (i = 0; i < scripts.length && ! bOverWrite; i++)
				{
					if (scripts[i].text.toLowerCase() == scriptName.toLowerCase())
					{
						bOverWrite = true
						scriptIndex = i
					}
				}
			}

			if (bOverWrite)
			{
				var str = scriptIndex.toString();
				while (str.length < 2) str = "0" + str;

				var sNameCookie = "script_name_" + str;
				var sCookie = "script_" + str;

				eraseCookie(sNameCookie)
				eraseCookie(sCookie)

				createCookie(sNameCookie, scriptName, 30)
				createCookie(sCookie, Convert2HexString(script), 30)
			}
			else
			{
				totalSavedScripts = incrementScriptCount();
				var str = totalSavedScripts.toString();
				while (str.length < 2) str = "0" + str;

				var sNameCookie = "script_name_" + str;
				var sCookie = "script_" + str;

				if (scriptName.length == 0)
					scriptName = str;

				createCookie(sNameCookie, scriptName, 30);
				createCookie(sCookie, Convert2HexString(script), 30);
			}
			enumerateScripts("scriptSaver")
			document.getElementById("ScriptName").value = ""
			document.getElementById("immediate").value = ""
		}

		function createCookie(name,value,days) 
		{
			if (days) 
			{
				var date = new Date();
				date.setTime(date.getTime()+(days*24*60*60*1000));
				var expires = "; expires="+date.toGMTString();
			}
			else 
			{
				var expires = "";
			}
			document.cookie = name+"="+value+expires+"; path=/";
		}

		function readCookie(name) {
			var nameEQ = name + "=";
			var ca = document.cookie.split(';');
			for(var i=0;i < ca.length;i++) {
				var c = ca[i];
				while (c.charAt(0)==' ') c = c.substring(1,c.length);
				if (c.indexOf(nameEQ) == 0) return c.substring(nameEQ.length,c.length);
			}
			return null;
		}

		function enumerateScripts(parentID)
		{
			if (parentID == undefined)
				var parentID = ""
			var i = 0;
			var str, cookie, cookie_name;
			var cookieNames = new Array();
			var done = false;

			var totalScripts = readCookie("totalSavedScripts")
			if (totalScripts == null)
			{
				alert("No scripts found")
				return null;
			}
			else
				totalScripts = parseInt(totalScripts, 10);
			
			if (totalScripts == 0)
			{
				i = 0;

				do
				{
					i++
					str = i.toString()
					while (str.length < 2) str = "0" + str;
					cookie = "script_name_" + str
				}
				while (readCookie(cookie) != null);

				if (--i != totalScripts)
				{
					totalScripts = i;
					createCookie("totalSavedScripts", totalScripts.toString(), 30);
				}
				else
					return;
			}

			for (i = 1; i <= totalScripts; i++)
			{
				str = i.toString()
				while (str.length < 2)
					str = "0" + str;

				cookie_name = "script_name_" + str
				cookie = readCookie(cookie_name)
				if (cookie != null)
					cookieNames[i - 1] = cookie
			}

			// createObject(element type, element id, parent node [, element style])

			var cookies = document.getElementById("cookies")
			if (cookies != undefined)
				removeObject(cookies)

			removeObject("saveBTN")

			if (parentID.length > 0)
				var sel = createObject("<select onchange='javascript:GetScript(this);'>", "cookies", document.getElementById(parentID))
			else
				var sel = createObject("select", "cookies", document.body)

			var opt;
			opt = document.createElement("option")
			opt.text = "Select Saved Script"
			opt.value = ""
			sel.options.add(opt)
			for (i = 1; i <= totalScripts; i++)
			{
				opt = document.createElement("option")
				opt.text = cookieNames[i - 1]
				opt.value = i
				sel.options.add(opt)
			}
			sel.style.cssText = "position:absolute;top:0px;left:0px;width:200px;display:inline;"
			return sel;
		}

		function GetScript(element)
		{
			var cookieIndex;
			var cookie;
			var bContinue = true;

			if (document.getElementById("immediate").value.trim().length > 0)
			{
				bContinue = confirm("Overwrite current script?")
			}
			else
				bContinue = true;

			if (bContinue)
			{
					if (element.selectedIndex > 0)
					{
						cookieIndex = element[element.selectedIndex].value
						cookie = cookieIndex.toString()
						while (cookie.length < 2) cookie = "0" + cookie;
						cookie = "script_" + cookie;
						document.getElementById("immediate").value = Convert2String(readCookie(cookie))
						document.getElementById("ScriptName").value = element[element.selectedIndex].text
					}
			}
		}

		function eraseCookie(name)
		{
			createCookie(name,"",-1);
		}

		function OpenHelp()
		{
			if (document.getElementById("helpWindow") != undefined)
				document.getElementById("helpWindow").style.display = "inline"
			else
			{
				createHelp()
				document.getElementById("helpWindow").style.display = "inline"
			}

		}

		function createHelp()
		{
			var helpWindow;
			var style = "position:absolute;left:" + ((screen.width - 800) / 2) + "px;top:" + (((screen.height - 400)/2)-100) + "px;width:800px;height:400px;border:solid 2pt red;color:black;background:white;z-index:100500;text-align:left;overflow:auto;"
			if (document.getElementById("helpWindow") == undefined)
				helpWindow = createObject("div", "helpWindow", document.body, style)
			else
				helpWindow = document.getElementById("helpWindow");

			if (helpWindow != undefined)
			{
				msg();
				msg("<a href='javascript:void(0);' onclick='this.parentNode.style.display = \"none\";' style='position:absolute;right:10px;top:0px;color:red;font-size:16pt;background:yellow;border:outset 1pt black;'>X</a>")

				msg("<span style='text-align:center;font-size:14pt;'>HELP</span><hr>")
				msg("Simple Stuff:<br>")
				msg("<span style='text-align:justify;'>")
				msg("<ul>")
				msg("<li>Debug Output window at the top</li>")
				msg("<li>Debug Immediate window below the debug output window</li>")
				msg("<li>Script Saver pane</li>")
				msg("</ul>")
				msg("The script saver pane saves named scripts as a cookie on your computer.  You can kill the scripts by clicking the <i>Kill All Scripts</i> button or by clearing your browser cookies.<br>")
				msg("The <i>Reload Scripts</i> button will refresh all of the scripts stored on this page.  In other words, you can make changes to your &lt;SCRIPT&gt;s and reload the scripts without reloading the whole web page.<br>")
				msg("The <font color=green>!</font> button executes the script in the immediate window.<br>")
				msg("The <font color=red>X</font> button to the right of the <font color=green>!</font> button clears the current script.<br>")

				msg("<hr>")
				
				msg("For your immediate scripts, the following variables are predefined:<br>")
				msg("<ul>")
				msg("<li>debug - is the debug Window element.  Adding a line like debug.innerHTML = \"xyz\" will write xyz to the debug output window at the top.</li>")
				msg("<li>d(str) - d is a function which writes a single appended line to the debug output window.<br><br>")
				msg("Using the script:<br>d(\"1\");<br>d(\"2\")<br>....is equivalent to<br>")
				msg("debug.innerHTML = \"1&lt;br&gt;2\" <br>")
				msg("....is equivalent to....<br>")
				msg("debug.innerHTML += \"1\"<br>")
				msg("debug.innerHTML += \"2\"<br>")
				msg("....is equivalent to....<br>")
				msg("document.getElementById(\"debugWindow\").innerHTML += \"1\"<br>")
				msg("document.getElementById(\"debugWindow\").innerHTML += \"2\"<br>")
				msg("</li>")
				msg("</ul>")
				msg("What good is a private debugger without shortcuts?")
				helpWindow.innerHTML = msg("</span>")
				msg()
			}
			else
				alert("no help window")
		}

		var helpMessage = "";

		function msg(str)
		{
			if (str == undefined)
				helpMessage = ""
			else
				helpMessage += str
			return helpMessage;
		}
		

