// diyEventHelper - helper object for event handling
var diyEventHelper =
{
	'bind' : function (obj, evt, fn)
	{
		if (obj.addEventListener)
			obj.addEventListener(evt, fn, false);
		else if (obj.attachEvent)
			obj.attachEvent('on' + evt, fn);
		else
			obj['on' + evt] = fn;
	}
};


// diyLoadEvent - event loading object
var diyLoadEvent = (function()
{
	var userAgent = navigator.userAgent.toLowerCase();
	var browser = {
		version: (userAgent.match(/.+(?:rv|it|ra|ie)[\/: ]([\d.]+)/) || [])[1],
		safari: /webkit/.test(userAgent),
		opera: /opera/.test(userAgent),
		msie: /msie/.test(userAgent) && !/opera/.test(userAgent),
		mozilla: /mozilla/.test(userAgent) && !/(compatible|webkit)/.test(userAgent)
	};

	var list = [];

	var done = false;
	var ready = function()
	{
		if (done) return;
			done = true;
		for (var i = 0; i < list.length; i++)
			list[i]();
	};

	if (document.addEventListener && !browser.opera)
		document.addEventListener('DOMContentLoaded', ready, false);

	if (browser.msie && window == top)
	{
		(function()
		{
			try
			{
				document.documentElement.doScroll('left');
			}
			catch (e)
			{
				setTimeout(arguments.callee, 10);
				return;
			}
			ready();
		})();
	}

	if (browser.opera)
	{
		document.addEventListener('DOMContentLoaded', function()
		{
			for (var i = 0; i < document.styleSheets.length; i++)
			{
				if (document.styleSheets[i].disabled)
				{
					setTimeout(arguments.callee, 10);
					return;
				}
			}
			ready();
		}, false);
	}

	if (browser.safari)
	{
		var numStyles;
		(function()
		{
			if (document.readyState != 'loaded' && document.readyState != 'complete')
			{
				setTimeout(arguments.callee, 10);
				return;
			}
			if ('undefined' == typeof numStyles)
			{
				numStyles = document.getElementsByTagName('style').length;
				var links = document.getElementsByTagName('link');
				for (var i = 0; i < links.length; i++)
				{
					numStyles += (links[i].getAttribute('rel') == 'stylesheet') ? 1 : 0;
				}
				if (document.styleSheets.length != numStyles)
				{
					setTimeout(arguments.callee, 0);
					return;
				}
			}

			ready();
		})();
	}

	diyEventHelper.bind(window, 'load', ready);

	return (
	{
		add: function(f)
		{
			list.push(f);
		}
	})
})();


// fix ie blinking
(function ()
{
	var m = document.uniqueID && document.compatMode && !window.XMLHttpRequest && document.execCommand;

	try
	{
		if (!!m)
		{
			m("BackgroundImageCache", false, true);
		}
	}
	catch(oh) {};
})();


// diyGetElementsByClassName - return elements with a given class name
function diyGetElementsByClassName(clsName, parentEle, tagName)
{
	var elements = null;
	var found = [];
	var slash = String.fromCharCode(92);
	var re = new RegExp(slash + "b" + clsName + slash + "b");

	if (!parentEle)
		parentEle = document;

	if (!tagName) tagName = '*';
		elements = parentEle.getElementsByTagName(tagName);

	if (elements)
	{
		for (var i = 0; i < elements.length; ++i)
		{
			if (elements[i].className.search(re) != -1)
			{
				found[found.length] = elements[i];
			}
		}
	}

	return (found);
}


// diyButtonSetupJsHover - setup hover state for button
function diyButtonSetupJsHover(btn)
{
	diyEventHelper.bind(btn, 'mouseover', function()
	{
		var spans = btn.getElementsByTagName("span");
		if (spans.length > 0)
			spans[0].className += " hover";
	});

	diyEventHelper.bind(btn, 'mouseout', function()
	{
		var spans = btn.getElementsByTagName("span");
		if (spans.length > 0)
			spans[0].className = spans[0].className.replace(/hover/, "");
	});
}


// diyButtonsSetupJsHover - setup hover state for all buttons
function diyButtonsSetupJsHover()
{
	var elements = diyGetElementsByClassName("btn", document, "span");

	for (var i = 0; i < elements.length; i++)
	{
		if (!elements[i].tagName) continue;
			diyButtonSetupJsHover(elements[i].parentNode);
	}
}

// adjust all buttons with desire hover state
diyLoadEvent.add(diyButtonsSetupJsHover);



// diyInsertSeparators - insert the separators in the menus
function diyInsertSeparators()
{
	var menus = diyGetElementsByClassName("menu", document);

	for (var i = 0; i < menus.length; i++)
	{
		var menu = menus[i];
		var childs = menu.childNodes;
		var listItems = [];

		for (var j = 0; j < childs.length; j++)
		{
			var el = childs[j];
			if (String(el.tagName).toLowerCase() == "li")
				listItems.push(el);
		}

		for (var j = 0; j < listItems.length - 1; j++)
		{
			var span = document.createElement('span');
			span.className = 'separator';
			var li = document.createElement('li');
			li.appendChild(span);
			listItems[j].parentNode.insertBefore(li, listItems[j].nextSibling);
		}
	}
}
diyLoadEvent.add(diyInsertSeparators);


// diyMenuIE6Setup - make IE6 appropriate changes to menus
function diyMenuIE6Setup()
{
	var isIE6 = navigator.userAgent.toLowerCase().indexOf("msie") != -1
		&& navigator.userAgent.toLowerCase().indexOf("msie 7") == -1;

	if (!isIE6)
		return;		// don't do anything if it's not IE6

	var aTmp2, i, j, oLI, aUL, aA;

	var aTmp = diyGetElementsByClassName("menu", document, "ul");

	for (i=0;i<aTmp.length;i++)
	{
		aTmp2 = aTmp[i].getElementsByTagName("li");
		for (j=0;j<aTmp2.length;j++)
		{
			oLI = aTmp2[j];
			aUL = oLI.getElementsByTagName("ul");
			if (aUL && aUL.length)
			{
				oLI.UL = aUL[0];
				aA = oLI.getElementsByTagName("a");
				if (aA && aA.length)
					oLI.A = aA[0];
				// add menuHover classes to list
				oLI.onmouseenter = function()
				{
					this.className += " menuhover";
					this.UL.className += " menuhoverUL";
					if (this.A)
						this.A.className += " menuhoverA";
				};
				// remove menuHover classes from list
				oLI.onmouseleave = function()
				{
					this.className = this.className.replace(/menuhover/,"");
					this.UL.className = this.UL.className.replace(/menuhoverUL/, "");
					if (this.A)
						this.A.className = this.A.className.replace(/menuhoverA/, "");
				};
			}
		}
	}
}
diyLoadEvent.add(diyMenuIE6Setup);



// TODO: read files in the /headers/ directory and build list from that
var g_nInterval = 7000;
var g_timer = setTimeout("diyChangeBackground()", g_nInterval);
var g_BgImg = 1;
function diyChangeBackground()
{
	g_BgImg++;
	if (g_BgImg > 3)	// maximum 3 images
		g_BgImg = 1;

	var el = document.getElementById("diy_header");
	if (el != null)
	{
		sImg = "header_rotate" + g_BgImg + ".jpg";
		el.style.backgroundImage = "url(" + g_sThemeDir + sImg + ")";
	}

	g_timer = setTimeout("diyChangeBackground()", g_nInterval);
}