﻿Tactica = new Object();
Tactica.basePath = "";
Tactica.head = "";
Tactica.loadFunctions = new Array();

// registers a function to run when the page has finished loading
Tactica.addLoadFunction = function(fp)
{
	Tactica.loadFunctions.push(fp);
}

// initializes common Tactica properties and functions
Tactica.init = function()
{
	if (document.getElementsByTagName)
	{
		var script = document.getElementsByTagName("script");
		var scriptExpr = /scripts\/tactica.js$/gi;

		Tactica.head = document.getElementsByTagName("head")[0];
		
		for (var i = 0; i < script.length; i++)
		{
			var path = script[i].src;
			
			if (scriptExpr.test(path))
			{
				Tactica.basePath = path.replace(scriptExpr, "");
				
				break;
			}
		}
	}
	
	// register startup function
	if (window.addEventListener)
	{
		window.addEventListener("load", Tactica.load, true);
	}
	else if (window.attachEvent)
	{
		window.attachEvent("onload", Tactica.load);
	}
	else
	{
		window.onload = Tactica.load;
	}
}

// loads any startup scripts
Tactica.load = function()
{
	for (var i = 0; i < Tactica.loadFunctions.length; i++)
	{
		var fp = Tactica.loadFunctions[i];
		
		if (fp && typeof(fp) == "function")
		{
			fp();
		}
	}
}

// fixes editable areas for IE
Tactica.loadEditableAreas = function()
{
	if (document.all && document.getElementsByTagName)
	{
		var div = document.getElementsByTagName("div");
		var divEditable = /editable/gi;
		
		for (var i = 0; i < div.length; i++)
		{
			if (divEditable.test(div[i].className))
			{
				div[i].onmouseout = function()
				{
					var ul = this.getElementsByTagName("ul");
					var ulToolbar = /toolbar/gi;
					
					for (var i = 0; i < ul.length; i++)
					{
						if (ulToolbar.test(ul[i].className))
						{
							ul[i].style.visibility = "hidden";
						}
					}
				}
				
				div[i].onmouseover = function()
				{
					var ul = this.getElementsByTagName("ul");
					var ulToolbar = /toolbar/gi;
					
					for (var i = 0; i < ul.length; i++)
					{
						if (ulToolbar.test(ul[i].className))
						{
							ul[i].style.visibility = "visible";
						}
					}
				}
			}
		}
	}
}

// dynamically loads a script into the page
Tactica.loadScript = function(scriptName)
{
	if (Tactica.head)
	{
		var script = document.createElement("script");
		
		script.type = "text/javascript";
		script.src = Tactica.basePath + scriptName;
		
		Tactica.head.appendChild(script);
	}
}


Tactica.init();
//Tactica.addLoadFunction(Tactica.loadEditableAreas);

// converts a page title into an address
function ConvertTitleToPath(source, targetID)
{
	var target = document.getElementById(targetID);
	
	if (target)
	{
		var title = source.value != null ? source.value : "";
		
		if (target.value == null || target.value == "")
		{
			title = title.replace(/[^A-Z0-9]/gi, "_");
			title = title.replace(/^_+|_+$/gi, "");
			title = title.replace(/_+/gi, "_");
			
			target.value = title.toLowerCase();
		}
	}
}
