// ©Xara Ltd 2002
var ma = new Array();
var mx = new Array();
var my = new Array();
var mc = new Array();

var mal = 0;
var main = 0;
var menuw = 200;
var psrc = 0;
var pname = "";
var al = "";
var gd = 0;
var gx,gy;

var d = document;
var NS7 = (!d.all && d.getElementById);
var NS4 = (!d.getElementById);
var IE5 = (!NS4 && !NS7 && navigator.userAgent.indexOf('MSIE 5.0') != -1);
var NS6 = (NS7 && navigator.userAgent.indexOf('Netscape6') != -1);
var FF1 = (navigator.userAgent.indexOf('Firefox') != -1);
if (navigator.userAgent.indexOf('Opera')  !=  -1) {
	if (navigator.userAgent.indexOf('Opera 7') != -1 || navigator.userAgent.indexOf('Opera 8') != -1)
		NS7 = 1;
	else
		NS4 = 1;
}
var ifr = (!NS7 && !NS4 && !IE5);


function startMainMenu (file, h, w, dir, space, align) {
	if (w > 0)
		menuw = w;
	main = dir;

	if (main == 1 || main == 2)
		d.write("<table border=\"0\" cellspacing=\""+space+"\" cellpadding=\"0\">");

	if (file != "") {
		al = "";
		if (align == 1)
			al = " align=\"right\"";
		if (align == 2)
			al = " align=\"center\"";
		if (main == 1 || main == 2)
			d.write("<tr><td"+al+">");
		d.write("<img src=\""+loc+file+"\" border=\"0\"");
		if (h > 0)
			d.write(" height=\""+h+"\"");
		if (w > 0)
			d.write(" width=\""+w+"\"");
		d.write(" />");
		if (main == 1 || main == 2)
			d.write("</td>");
		if(main == 1)
			d.write("</tr>");
		if(main == 3)
			d.write("<br />");
	}
}

function endMainMenu (file, h, w) {
	if (file != "") {
		if (main == 1)
			d.write("<tr>");
		if (main == 1 || main == 2)
			d.write("<td"+al+">");
		d.write("<img src=\""+loc+file+"\" border=\"0\"");
		if (h > 0)
			d.write(" height=\""+h+"\"");
		if (w > 0)
			d.write(" width=\""+w+"\"");
		d.write(" />");
		if (main == 1 || main == 2)
			d.write("</td></tr>");
	}
	if (main == 1 || main == 2)
		d.write("</table>");
	main=0;
}

function mainMenuItem (name, ext, h, w, url, tar, alt, dir, state, s) {
	if (NS4 && main == 0)
		return;

	var isgraphic = ext.charAt(0) == ".";
	if (main == 1)
		d.write("<tr>");
	if (main == 1 || main == 2)
		d.write("<td"+al+">");
	d.write("<a ");
	if (url != "" || !isgraphic)
		d.write("href=\""+url+"\" ");
	if (tar != "")
		d.write("target=\""+tar+"\" ");
	d.write("onmouseout=\"");
	if (dir>0)
		d.write("tidyMenu(event);");
	d.write("\" onmouseover=\"");
	if (dir>0)
		d.write("openMenu(event, '"+name+"',"+dir+","+bc+","+fc+");");
	if (state > 1 && isgraphic) {
		d[name+"_over"]=new Image();
		d[name+"_over"].src=loc+name+"_over"+ext;
		d.write("setGraphic(event, '"+loc+name+"_over"+ext+"');");
	}
	d.write("return false;\"");
	if(!isgraphic)
		d.write(" class=\""+s+"\" style=\"width:"+(w>0?w:menuw)+"px\"");
	d.write(">");
	if(isgraphic) {
		d.write("<img src=\""+loc+name+ext+"\" border=\"0\"");
		if(h > 0)
			d.write(" height=\""+h+"\"");
		if (w > 0)
			d.write(" width=\""+w+"\"");
		if (alt != "")
			d.write(" alt=\""+alt+"\"");
		d.write(" />");
	} else {
		d.write("&nbsp;"+ext+"&nbsp;");
	}
	d.write("</a>");

	if (main == 1 || main == 2)
		d.write("</td>");
	if (main == 1)
		d.write("</tr>");
	if (main == 3)
		d.write("<br />");
}

function startSubmenu (name, style, sw) {
	if (NS4)
		return;
	if (sw > 0)
		menuw = sw;
	var shift = (NS6) ? 0 : 2;
	d.write("<div id=\""+name+"\" class=\""+style+"\"  style=\"width:" + (menuw - shift + (FF1 ? 12 : 0) + (NS7 ? bd*2 : 0)) + "px\">");
}

function endSubmenu (name) {
	if (NS4)
		return;
	d.write("</div>");
	if (!NS7)
		d.getElementById(name).onmouseout=tidyMenu;
}

function submenuItem (text, url, tar, s) {
	if (NS4)
		return;
	if (text.charAt(0) == '<')
		d.write(text);
	else 
		if (text == "---")
			d.write("<div class=\""+s+"\" style=\"width:"+menuw+"px\"><center><img src=\""+loc+"---.gif\" height=\"8\" width=\""+(menuw-6-(2*bd))+"\" border=0/></center></div>");
		else {
			d.write("<a ");
			if (url != "")
				d.write("href=\""+url+"\" ");
			if (tar != "")
				d.write("target=\""+tar+"\" ");
				d.write("class=\""+s+"\" style=\"width:"+menuw+"px\">&nbsp;"+text+"&nbsp;</a>");
		}
}

function setGraphic (event, name) {
	if (NS4)
		return;
	psrc = (NS7) ? event.target : event.srcElement;
	pname = psrc.src;
	if (NS7)
		event.target.src = name;
	else
		event.srcElement.src = name;
}

function openMenu (event, id, pos, bc, fc) {

	if (NS4)
		return;
	var el, x, y, dx, dy;

	if (gd == 0) {
		var p = d.getElementById(id);
		gx = 0;
		gy = 0;
		while (p && p.parentNode.nodeName != "BODY") {
			p = p.parentNode;
			if (p.nodeName == "DIV" || p.nodeName == "LAYER" || p.nodeName == "SPAN")
				if (p.style.position == "absolute") {
					gx += p.offsetLeft;
					gy += p.offsetTop;
				}
		}
		if (p)
			gd = 1;
	}
	if (mal > 0) {
		el = d.getElementById(ma[mal-1]);
		if (mx[mal-1] != el.offsetLeft || my[mal-1] != el.offsetTop) {
			el.style.left=mx[mal-1];
			el.style.top=my[mal-1];
		}
		tidyMenu(event);
	}
	if (NS7) {
 		var p=event.target;
		//if (p.nodeName != "A" && p.nodeName != "IMG" && p.parentNode.nodeName == "A")
		//	p = p.parentNode;
		if (p.nodeName == 'A')
			p = p.parentNode;

		dx = p.offsetWidth;
		dy = p.offsetHeight;
		if (mal == 0) {
			x = p.x;
			y = p.y;
			if (typeof(p.x) == "undefined" || !NS6) {
				x = p.offsetLeft;
				y = p.offsetTop;
				while (!NS6 && p.parentNode.nodeName != "BODY") {
					p=p.parentNode;
					if (p.nodeName == "TD" || p.nodeName == "TABLE") {
						x += p.offsetLeft;
						y += p.offsetTop;
					}
				}
			}
		} else {
			el=d.getElementById(ma[mal-1]);
			x = el.offsetLeft;
			y = el.offsetTop+p.offsetTop;
		}
		if (pos != 3)
			x -= bd;
		if (pos == 3 && mal>0)
			x += bd;
	} else {
		x = event.clientX - event.offsetX + d.body.scrollLeft - d.body.clientLeft;
		y = event.clientY - event.offsetY + d.body.scrollTop - d.body.clientTop;
   		if (event.srcElement.nodeName == 'A') {
			dx = event.srcElement.parentNode.offsetWidth;
			dy = event.srcElement.parentNode.offsetHeight;
		} else {
			dx = event.srcElement.offsetWidth;
			dy = event.srcElement.offsetHeight;
		}
		if (mal > 0) {
			y -= bd;
			if (pos != 3)
				x -= 2 * bd;
		}
		x -= gx;
		y -= gy;
	}
	el = d.getElementById(id);
	if (el && el.style.visibility != "visible") {
		if (pos == 1) {
			x += dx;
			// remove this
			if (!NS7) x -= 1;
			el.style.left = x - el.offsetWidth + "px";
			el.style.top = y + "px";
			nspeed = el.offsetWidth / frames;
		} else if (pos == 2) {
			y += dy;
			// remove this
			x -= 2;
			el.style.left = x + "px";
			el.style.top =y - el.offsetHeight + "px";
			nspeed = el.offsetHeight / frames;
		} else if (pos == 3) {
			x -= el.offsetWidth;
			el.style.left = x + el.offsetWidth + "px";
			el.style.top = y + "px";
			nspeed = el.offsetWidth / frames;
		}
		mx[mal] = x;
		my[mal] = y;
		if (NS7 || IE5 || frames == 0) {
			el.style.left = x + "px";
			el.style.top = y + "px";
		}
		if (!IE5)
			clipMenu(mal, el);
		el.style.visibility = "visible";
		ma[mal] = id;
		if (NS7) {
			var p = event.target;
			if (p.nodeName != "A" && p.parentNode.nodeName == "A")
				p = p.parentNode;
			mc[mal] = p.style;
			if(!NS6 && mal>0) {
				mc[mal].backgroundColor = "#" + bc.toString(16);
				mc[mal].color = "#" + fc.toString(16);
			}
			el.onmouseout = tidyMenu;
		} else {
			mc[mal] = event.srcElement.style;
			if (mal > 0) {
				mc[mal].backgroundColor = bc;
				mc[mal].color = fc;
			}
		}
		mal++;
	}
	if (ifr && el && frames == 0 && (typeof(tr) == "undefined" || tr == "")) {
		var p = d.getElementById(id+"i");
		if (p) {
			p.style.top = y + "px";
			p.style.left = x + "px";
			p.style.width = el.style.width;
			p.style.height = el.offsetHeight+"px";
			p.style.display = "block";
		} else {
			ifr = "<iframe id=\""+id+"i\" style=\"position:absolute; left:"+x+"px; width:"+el.style.width+"; height:"+el.offsetHeight+"px; top:"+y+"px; z-index:998; display:block;\" scrolling=\"no\" frameborder=\"0\"></iframe>";
			el.insertAdjacentHTML('beforeBegin',ifr);
		}
	}
}

function overMenu(x,y){
	x -= gx;
	y -= gy;
	for(i = 0; i < mal; i++) {
		var el=d.getElementById(ma[i]);
		if (el.offsetLeft+el.offsetWidth>x && 
		    el.offsetLeft<=x && 
		    el.offsetTop+el.offsetHeight>y && 
		    el.offsetTop<=y) {
			return ma[i];
		}
	}
	return "";
}

function tidyMenu(e) {
	if (NS4)
		return;

	if (NS7) {
		t = overMenu(e.pageX, e.pageY);
		if (t != "" && (e.target.firstChild == e.relatedTarget || e.target == e.relatedTarget.firstChild))
			return;
	} else
		t = overMenu(event.clientX + d.body.scrollLeft-d.body.clientLeft,
			     event.clientY + d.body.scrollTop-d.body.clientTop);

	om = 0;
	for (i = 0; i < mal; i++) {
		var mail=ma[i].length;
		if (mail>t.length || t.substring(0,mail) != ma[i]) {
			var el = d.getElementById(ma[i]);
			el.style.visibility = "hidden";
			mc[i].backgroundColor = "";
			mc[i].color = "";
			if (ifr) {
				var p=d.getElementById(ma[i]+"i");
				if(p)p.style.display="none";
			}
		} else {
			ma[om] = ma[i];
			mx[om] = mx[i];
			my[om] = my[i];
			om++;
		}
	}

	mal = om;
	if (mal == 0 && psrc)
		psrc.src = pname;
}

function animate(){
	for(i=0;
i<mal;
i++){
	var el=d.getElementById(ma[i]);
if(el.style.visibility == "visible"){
	if(el.offsetLeft<mx[i])el.style.left=Math.min(el.offsetLeft+nspeed,mx[i])+"px";
if(el.offsetLeft>mx[i])el.style.left=Math.max(el.offsetLeft-nspeed,mx[i])+"px";
if(el.offsetTop<my[i])el.style.top=Math.min(el.offsetTop+nspeed,my[i])+"px";
clipMenu(i,el);
}}if(mal != 0 || frames != 0)setTimeout("animate()",50);
}

function clipMenu(i,el){
	if (el.offsetLeft > mx[i])
		el.style.clip = "rect("+(my[i]-el.offsetTop)+"px "+(el.offsetWidth+(mx[i]-el.offsetLeft))+"px "+el.offsetHeight+"px "+0+"px)";
	else
		el.style.clip = "rect("+(my[i]-el.offsetTop)+"px "+el.offsetWidth+"px "+el.offsetHeight+"px "+(mx[i]-el.offsetLeft)+"px)";
}

