		
		var Cymaphore = new function()
		{
			
			var mThis = this;
			
			mThis.parm = {};
			
			mThis.init = function()
			{
				window.onload = mThis.handleOnLoad;
				
				if(document.addEventListener)
				{
					document.addEventListener("DOMContentLoaded",
						function()
						{
							document.removeEventListener("DOMContentLoaded", arguments.callee, false)
							mThis.handleOnPreload();
						}, false);
				}
				else if(document.attachEvent)
				{
					document.attachEvent("onreadystatechange",
						function()
						{
							if(document.readyState === "complete")
							{
								document.detachEvent("onreadystatechange", arguments.callee);
								mThis.handleOnPreload();
							}
						});
				}
			}
			
			mThis.handleOnPreload = function()
			{
				document.getElementById("cy_s_loading").innerHTML = "Loading...";
				mThis.activateLoader();
				mThis.assignLoader();
			};
			
			mThis.handleOnLoad = function()
			{
				mThis.deactivateLoader();
				mThis.statisticsHit();
			};
			
			mThis.activateLoader = function()
			{
				if(this.blur)
				{
					this.blur();
				}
				document.getElementsByTagName("body")[0].className = "on__loading";
			};
			
			mThis.deactivateLoader = function()
			{
				document.getElementsByTagName("body")[0].className = "";
			};
			
			mThis.assignLoader = function()
			{
				
				var as = document.getElementsByTagName("a");
				var fullbase = document.location.protocol + "//" + document.location.host + mThis.parm.xbase;
				var selfname = document.location.protocol + "//" + document.location.host + document.location.pathname;
				
				for(var xval in as)
				{
					var xa = as[xval];
					
					if(xa.href)
					{
						if(xa.href.substr(0, fullbase.length) == fullbase && !(xa.href.substr(0, selfname.length) == selfname &&xa.href.substr(selfname.length, 1) == "#"))
						{
							if(xa.addEventListener)
							{
								xa.addEventListener("click", mThis.activateLoader, false);
							}
							else if(xa.attachEvent)
							{
								xa.attachEvent("onclick", mThis.activateLoader);
							}
						}
					}
				}
				
			};
			
			mThis.statisticsHit = function()
			{
				if(mThis.parm.no_ga)
				{
					return;
				}
				try
				{
					var pageTracker = _gat._getTracker("UA-8826294-1");
					pageTracker._trackPageview();
				}
				catch(err)
				{}
			};
			
			mThis.comments_updateEnabled = function()
			{
				var submitBtn = document.getElementById("journal_comments_submit");
				if(!mThis.comments_valid())
				{
					submitBtn.disabled = true;
				}
				else
				{
					document.getElementById("comments_hint").style.display = "none";
					submitBtn.disabled = false;
				}
			};
			
			mThis.comments_submit = function()
			{
				var submitBtn = document.getElementById("journal_comments_submit");
				submitBtn.disabled = true;
				
				if(!mThis.comments_valid())
				{
					document.getElementById("comments_hint").style.display = "block";
					return(false);
				}
				
				mThis.activateLoader();
				document.getElementById("journal_comments_website").value = "cymaphore.net";
				document.getElementById("journal_comments_write_form").submit();
				return(false);
			};
			
			mThis.comments_valid = function()
			{
				if(document.getElementById("journal_comments_txt").value.length < 4)
				{return(false);}
				if(document.getElementById("journal_comments_nam").value.length < 3)
				{return(false);}
			
				return(true);
			};
			
			mThis.urlMake = function(u)
			{
				if(!u || u.length < 1)
				{
					u = mThis.parm.xbase;
				}
				else
				{
					if(u.substr(0, 1) != "/")
					{
						u = "/" + u;
					}
					u = this.parm.xbase + u;
				}
				return(u);
			};
			
		};

		Cymaphore.parm = {"no_ga":false,"xbase":"","blankImg":"\/images\/blank.gif"};
		Cymaphore.init();
