function MM_preloadImages()
{
	var d = document;
	if (d.images)
	{
		if (!d.MM_p)
			d.MM_p = new Array();
		var i, j = d.MM_p.length, a = MM_preloadImages.arguments;
		for(i = 0; i < a.length; i++)
			if (a[i].indexOf("#") != 0)
			{
				d.MM_p[j] = new Image;
				d.MM_p[j++].src = a[i];
			}
		}
}

function MM_swapImgRestore()
{
	var i, x, a = document.MM_sr;
	for(i = 0; a && i < a.length && (x = a[i]) && x.oSrc; i++)
		x.src = x.oSrc;
}

function MM_findObj(n, d)
{
	var p, i, x;
	if (!d)
		d = document;
	if ((p = n.indexOf("?")) > 0 && parent.frames.length)
	{
		d = parent.frames[n.substring(p + 1)].document;
		n = n.substring(0,p);
	}
	if (!(x = d[n]) && d.all)
		x = d.all[n];
	for (i = 0; !x && i < d.forms.length; i++)
		x = d.forms[i][n];
	for (i = 0;!x && d.layers && i < d.layers.length; i++)
		x = MM_findObj(n, d.layers[i].document);
	if (!x && d.getElementById)
		x = d.getElementById(n);
	return x;
}

function MM_swapImage()
{
	var i, j=0, x, a = MM_swapImage.arguments;
	document.MM_sr = new Array;
	for (i = 0; i < (a.length-2); i += 3)
		if ((x = MM_findObj(a[i])) != null)
		{
			document.MM_sr[j++] = x;
			if(!x.oSrc)
				x.oSrc=x.src;
			x.src=a[i+2];
		}
}


function CheckHeight()
{
	var t = document.getElementById('backtotop');
	if (document.body.scrollHeight > document.body.clientHeight)		
		t.style.visibility = "visible"; // ns and ie
	else
		t.style.visibility = "hidden";
}

function NavUpdate(f)
{
	var navto = f.options[f.selectedIndex].value;

	if (navto.substring(0,10) == "javascript")
		OpenCalc();
	else	
		location.href = f.options[f.selectedIndex].value;
}


function GetSelected(f)
{
	return f.options[f.selectedIndex].value;
}


var suckybrowser = false;

function Snap()
{
	// Function to snap layers into the right place after a resize etc
	var x, y, ox, bx, oy, p, tx, a, b, k, d, da, e, el, args = Snap.arguments;
	a = parseInt(a);
	for (k = 0; k < (args.length-3); k += 4)
	if ((g = MM_findObj(args[k])) != null)
	{
		el = eval(MM_findObj(args[k + 1]));
		a = parseInt(args[k + 2]);
		b = parseInt(args[k + 3]);
		x = 0;
		y = 0;
		ox = 0;
		oy = 0;
		p = "";
		tx = 1;
		da = "document.all['" + args[k] + "']";
		if(document.getElementById)
		{
			d = "document.getElementsByName('" + args[k] + "')[0]";
			if (!eval(d))
			{
				d = "document.getElementById('" + args[k] + "')";
				if(!eval(d))
				{
					d = da;
				}
			}
		}
		else if (document.all)
		{
			d = da;
		} 
		if (document.all || document.getElementById)
		{
			while (tx == 1)
			{
				p += ".offsetParent";
				if (eval(d + p))
				{
					x += parseInt(eval(d + p + ".offsetLeft"));
					y += parseInt(eval(d + p + ".offsetTop"));
				}
				else
				{
					tx = 0;
				}
			}
     		ox = parseInt(g.offsetLeft);
     		oy = parseInt(g.offsetTop);
     		var tw = x + ox + y + oy;
     		if (tw == 0 || (navigator.appVersion.indexOf("MSIE 4") > -1 && navigator.appVersion.indexOf("Mac") > -1))
     		{
				if (!suckybrowser && (navigator.appVersion.indexOf("MSIE 4") > -1 && navigator.appVersion.indexOf("Mac") > -1))
				{
					/* Fix: We shouldnt be supporting this crap */
					suckybrowser = true;
					alert("Your browser is incompatible with this website and many others and no longer supported by either Apple or Microsoft. Please consider Firefox 4 or Safari for Mac instead.");
					return;
				}
				else
				{
					ox = 0;
					oy = 0;
					if (g.style.left)
					{
						x = parseInt(g.style.left);
						y = parseInt(g.style.top);
		      		}
		      		else
		      		{
		      			var w1 = parseInt(el.style.width);
		      			bx = (a < 0) ? -5-w1 : -10;
						a = (Math.abs(a) < 1000) ? 0 : a;
						b = (Math.abs(b) < 1000) ? 0 : b;
						x = document.body.scrollLeft + event.clientX + bx;
						y = document.body.scrollTop + event.clientY;
		      		}
				}
	     	}
		}
		else if (document.layers)
		{
			x = g.x;
			y = g.y;
			var q0 = document.layers, dd = "";
			for (var s = 0; s < q0.length; s++)
			{
				dd = 'document.' + q0[s].name;
				if (eval(dd + '.document.' + args[k]))
				{
					x += eval(dd + '.left');
					y += eval(dd + '.top');
					break;
				}
			}
		}
		if (el)
		{
			e = (document.layers) ? el : el.style;
			var xx = parseInt(x + ox + a), yy = parseInt(y + oy + b);
			
			/* XXX: FIX FOR IE9 BY CraigE. First, detect if we are using IE >= 9. If we are, 'px' needs appending
			 * to the offsets in the same way as all other browsers as IE9 is more standards compliant.
			 */
			if (navigator.appVersion.indexOf("MSIE ") > -1)
			{
				var ieversion = navigator.appVersion.substring(navigator.appVersion.indexOf("MSIE ") + 5, navigator.appVersion.length);
				ieversion = ieversion.substring(0, ieversion.indexOf(";"));
				ieversion = parseInt(ieversion);
			}
		
			if ((navigator.appName == "Netscape" && parseInt(navigator.appVersion) > 4) || ieversion >= 9)
			{
				xx += "px";
				yy += "px";
			}
			if (navigator.appVersion.indexOf("MSIE 5") > -1 && navigator.appVersion.indexOf("Mac") >- 1)
			{
				if (!suckybrowser)
				{
					/* Fix: We shouldnt be supporting this crap */
					suckybrowser = true;
					alert("Your browser is incompatible with this website and many others and no longer supported by either Apple or Microsoft. Please consider Firefox 4 or Safari for Mac instead.");
					return;
				}
			}
			e.left=xx;
			e.top=yy;
		}
	}
}


function LargerImage(img)
{

	win = window.open(img,"LargerImage","width=618,height=435,scrollbars=false");

}

function showmenu(div)
{

var m = document.getElementById(div);


	ypos=25;

if (m != null)
	{
		var link = div.replace("menu", "link");
		Snap(link,div,0,ypos);	<!--- snap menu into place --->
		m.style.visibility = "visible";	<!--- show the menu --->
	}
}

function hidemenu(div)
{
var m = document.getElementById(div);
if (m != null)
	m.style.visibility = "hidden";
}
//
// XML import function
// template: path of xml template including url params
// processFunction: handler function

function ImportXML(templatepath, processFunction)
{

	if (document.implementation && document.implementation.createDocument)
		{	
			xmlDoc = document.implementation.createDocument("", "", null);
			xmlDoc.onload = processFunction;
		}
	else if (window.ActiveXObject)
		{
			xmlDoc = new ActiveXObject("Microsoft.XMLDOM");
			xmlDoc.onreadystatechange = function () 
				{				
				if (xmlDoc.readyState == 4) 
				  processFunction();
				}
		}
	else
		{
			alert('Your browser can\'t handle this script');
			return;
		}
	// passes category to template
//	alert(templatepath);
	xmlDoc.load(templatepath);

}

