﻿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);
