var ns4 = false, ns5 = false, ie4 = false;
var menus = new Array(4);
menus[0] = "tour";
menus[1] = "about";
menus[2] = "filmmakers";
menus[3] = "kitchensink";
tourshift = 24;
aboutshift = 26;
filmmakersshift = 28;
kitchensinkshift = 30;
waiting = 1;

if (navigator.appName == "Netscape") {
	var v = parseInt(navigator.appVersion)
	ns4 = (v==4);
	ns5 = (v>=5);
} else if (document.all) {
	ie4 = true;
}

if (ie4) {
	setTimeout("preloadmenu();", 2000);
	setTimeout("hideallmenus();", 2000);
}

function preloadmenu() {
  preload('http://www.48hourfilm.com/within/menu/tour-on.gif',
	  'http://www.48hourfilm.com/within/menu/about-on.gif',
	  'http://www.48hourfilm.com/within/menu/filmmakers-on.gif',
	  'http://www.48hourfilm.com/within/menu/kitchensink-on.gif');
  preload('http://www.48hourfilm.com/within/menu/tour.gif',
	  'http://www.48hourfilm.com/within/menu/about.gif',
	  'http://www.48hourfilm.com/within/menu/filmmakers.gif',
	  'http://www.48hourfilm.com/within/menu/kitchensink.gif');
  if (document.all['menucatcher']) show('menucatcher');
  if (document.all['menucatchertop']) show('menucatchertop');
  if (document.all['menucatcherright']) show('menucatcherright');
  if (document.all['menucatcherbottom']) show('menucatcherright');
}

function preload() {
  var d = document;
  if (d.images) {
	if (!d.plimages)
		d.plimages = new Array();
    var i, j = d.plimages.length, a = preload.arguments;
    for (i=0; i < a.length; i++)
		if (a[i].indexOf("#") != 0) {
			d.plimages[j] = new Image;
			d.plimages[j++].src = a[i];
		}
  }
}

function showmenu(m) {
	var shift;
	eval('shift = ' + m + 'shift;');
	matchleft(m + 'menu', m, shift);
	hidemenus(m);
	swap(m,'','http://www.48hourfilm.com/within/menu/' + m + '-on.gif', 1);
	show(m + 'menu');
	waiting = 1;
}

function hidemenu(m) {
	swap(m,'','http://www.48hourfilm.com/within/menu/' + m + '.gif', 1);
	hide(m + 'menu');
}

function hidemenus(m) {
	for (i in menus) {
		if (menus[i] != m)
			hidemenu(menus[i]);
	}
}

function hideallmenus() {
	if (ie4) {
		if (!waiting) {
			for (i in menus) {
				hidemenu(menus[i]);
			}
		}
		waiting = 0;
		setTimeout("hideallmenus();", 7000);
	}
}

function highlight(m) {
	if (ie4) {
		m.className = "submenuhover";
	}
	waiting = 1;
}

function unhighlight(m) {
	if (ie4) {
		m.className = "submenu";
	}
}

function matchleft(id1, id2, shift) {
	if (ns5) {
		var obj = document.getElementById(id1);
		obj.style.left = (findObj(id2).x + shift) + "px";
	} else if (ie4) {
		x = findPosX(document.all[id2]) + shift;
		document.all[id1].style.left = x + 'px';
	} else if (ns4) {
		x = findPosX(document.layers[id2]) + shift;
		document.layers[id1].left = x;
	}
}

function 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.getElementById) {
  	x = d.getElementById(n);
	return x;
  }
  if (!(x=d[n]) && d.all) {
  	x = d.all[n];
	return x;
  }
  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 = findObj(n, d.layers[i].document);
  return x;
}

function swap() {
  var i, j = 0, x, a = swap.arguments;
  document.sr = new Array;
  for (i=0; i < (a.length-2); i+=3)
	if ((x=findObj(a[i])) != null) {
		document.sr[j++] = x;
		if(!x.oSrc)
			x.oSrc = x.src;
		x.src=a[i+2];
	}
}

function show(id) {
	if (ns5) {
		var obj = document.getElementById(id);
		obj.style.visibility = "visible";
	} else if (ie4) {
		document.all[id].style.visibility = "visible";
	} else if (ns4) {
		document.layers[id].visibility = "show";
	}
}

function hide(id) {
	if (ns5) {
		var obj = document.getElementById(id);
		obj.style.visibility = "hidden";
	} else if (ie4) {
		document.all[id].style.visibility = "hidden";
	} else if (ns4) {
		document.layers[id].visibility = "hide";
	}
}

function findPosX(obj) {
	var curleft = 0;
	if (obj.offsetParent) {
		while (obj.offsetParent) {
			curleft += obj.offsetLeft
			obj = obj.offsetParent;
		}
	}
	else if (obj.x)
		curleft += obj.x;
	return curleft;
}
