
/**************************************************************************************************************
    Version 1.1 Javascript Menu created on April 2004
**************************************************************************************************************/

<!--

var debug1 = false, debug2 = false, debug3 = false, debug4 = false;
var debug5 = false, debug6 = false, debug7 = false, debug8 = false;

// if (debug) document.write("<form name=tpFrm><textarea cols=120 rows=20 wrap=off>");
// if (debug) document.write("</textarea></form>");



// *** variables for browser type and platform

var dom = (document.getElementById) ? true : false;
var ie4 = (!dom && document.all) ? true : false;
var ns4 = (!dom && document.layers) ? true : false;
var ie = (document.all) ? true : false;

if (debug1) 
{
	if (dom) document.write("DOM<br>\n");
	if (ie4) document.write("IE4<br>\n");
	if (ns4) document.write("NS4<br>\n");
}



// *** ns4 functions

function pfnHookEvt(doc, link)
{
	doc.document.tlink = link;
	doc.captureEvents(Event.CLICK);
	doc.onclick = pfnNSClick;
}

function pfnNSClick(evt)
{
	pfnLinkClick(evt.target.tlink);
	return true;
}


function pfnCheckObject(id, doc)
{
	var obj, i, j; 

	if (!doc) doc = document;

	if (ns4) 
	{
		document.write("<br>Step 1:<br>");
		document.write("Form #: " + doc.forms.length + "<br>");
				
		for (i=0; !obj && i<doc.forms.length; i++)
		{
			document.write(doc.forms[i].name + "<br>");
			obj = doc.forms[i][id];
		}
				
		document.write("<br>Step 2:<br>");
		document.write("Layer #: " + doc.layers.length + "<br>");
				
		for (i=0; !obj && doc.layers && i<doc.layers.length; i++)
		{
			document.write(doc.layers[i].name + "<br>");
			if (doc.layers[i].name == id) obj = doc.layers[i]; 
		}
				
		document.write("<br>Step 3:<br>");
				
		for (i=0; !obj && doc.layers && i<doc.layers.length; i++)
			obj = pfnFindObject(id, doc.layers[i].document); 
	}

	return obj;
}



// *** document.write functions for solving ns4 problem

var mn_html = "";

function pfnDocS(text)
{
	mn_html += text;

	if (mn_html.length > 1024) 
	{
		document.write(mn_html);
		mn_html = "";
	}
}

function pfnDocW()
{
	document.write(mn_html);
	mn_html = "";
}



// *** standard functions

function pfnMousePos(evt)
{
	if (!evt) evt = event;
	
	if (dom || ie4)
		window.status = "x: " + evt.clientX + ", y: " + evt.clientY;
	else
		window.status = "x: " + evt.pageX + ", y: " + evt.pageY;
}

if (debug2) 
{
	if (ns4) document.captureEvents(Event.MOUSEMOVE);
	document.onmousemove = pfnMousePos;
}


function pfnLinkGet(link)
{
	if (link.substring(0, 4) == "http")
		return link;
	else
		return mn_site + link;
}

function pfnLinkClick(link)
{
	if (link != "") document.location.href = pfnLinkGet(link);
}


function pfnFindObject(id, doc)
{
	var obj, i, j; 

	if (!doc) doc = document;

	if (dom)
		obj = doc.getElementById(id);
	else if (ie4) 
		obj = doc.all[id];
	else if (ns4) 
	{
		for (i=0; !obj && i<doc.forms.length; i++)
			obj = doc.forms[i][id];

		for (i=0; !obj && doc.layers && i<doc.layers.length; i++)
			if (doc.layers[i].name == id) obj = doc.layers[i]; 

		for (i=0; !obj && doc.layers && i<doc.layers.length; i++)
			obj = pfnFindObject(id, doc.layers[i].document); 
	}

	return obj;
}

function pfnChangeProp(obj, field, value)
{
	var style = obj, show = "show", hide = "hide";

	if (!obj) return;

	if (dom || ie4) 
	{
		style = obj.style;
		show = "visible";
		hide = "hidden";
	}

	switch(field)
	{
		case "openmenu":
			style.visibility = show;
			break;
		case "closemenu":
			style.visibility = hide;
			break;
		case "top":
			style.top = value;
			break;
		case "left":
			style.left = value;
			break;
		case "image":
			obj.src = value;
			break;
		case "fgcolor":
			if (dom || ie4) obj.style.color = value;
			else if (ns4)   obj.fgColor = value;
			break;
		case "bgcolor":
			if (dom || ie4) obj.style.backgroundColor = value;
			else if (ns4)   obj.bgColor = value;
			break;
	}
}



// *** menu popup functions

var mn_curr = new Array(), mn_close = new Array();

for (var i=0; i<mn_mlevel; i++)
{
	mn_curr[i] = -1;
	mn_close[i] = false;
}


function pfnMenuItemOver(level, index)
{
	var obj, id = level + "_" + index;
	var tp_top, tp_left, tp_index = index, tp_parent;

	if (dom && ie)
	{
		tp_top = mn_mtop_ie6;
		tp_left = mn_mleft_ie6;
	}
	else if (dom)
	{
		tp_top = mn_mtop_ns7;
		tp_left = mn_mleft_ns7;
	}
	else if (ns4)
	{
		tp_top = mn_mtop_ns4;
		tp_left = mn_mleft_ns4;
	}

	for (var i=level; i>=0; i--)
	{
		tp_parent = mn_item[i][tp_index][0];
		
		for (var j=0; j<tp_index; j++)
	  	if (tp_parent == mn_item[i][j][0]) tp_top += mn_item[i][j][2];
	  	
	  tp_index = tp_parent;
	}

	for (var i=0; i<=level; i++)
	  tp_left += mn_menu[i][1] + mn_menu[i][2] + mn_menu[i][3];

	mn_close[level] = false;
	
	var tp_font = mn_item[level][index][7];
	  
	if (mn_curr[level] != index) 
	{
		pfnMenuItemOut(level, mn_curr[level]);
		
		obj = pfnFindObject("mb" + id); 
		pfnChangeProp(obj, "bgcolor", mn_style[tp_font][7]);
		pfnChangeProp(obj, "fgcolor", mn_style[tp_font][2]);

		obj = pfnFindObject("mt" + id); 
		pfnChangeProp(obj, "bgcolor", mn_style[tp_font][7]);
		pfnChangeProp(obj, "fgcolor", mn_style[tp_font][2]);
		
		obj = pfnFindObject("ml" + id); 
		pfnChangeProp(obj, "bgcolor", mn_style[tp_font][7]);
		pfnChangeProp(obj, "fgcolor", mn_style[tp_font][2]);

		obj = pfnFindObject("pt" + (level+1) + "_" + index); 
		pfnChangeProp(obj, "top", tp_top);
		pfnChangeProp(obj, "left", tp_left);
		pfnChangeProp(obj, "openmenu", "");
	}
	
	mn_curr[level] = index;
}

function pfnMenuItemOut(level, index)
{
	var obj, id = level + "_" + index;
	
	if (index == -1) return;
	
	var tp_font = mn_item[level][index][6];

	obj = pfnFindObject("mb" + id); 
	pfnChangeProp(obj, "bgcolor", mn_style[tp_font][7]);
	pfnChangeProp(obj, "fgcolor", mn_style[tp_font][2]);

	obj = pfnFindObject("mt" + id); 
	pfnChangeProp(obj, "bgcolor", mn_style[tp_font][7]);
	pfnChangeProp(obj, "fgcolor", mn_style[tp_font][2]);

	obj = pfnFindObject("ml" + id); 
	pfnChangeProp(obj, "bgcolor", mn_style[tp_font][7]);
	pfnChangeProp(obj, "fgcolor", mn_style[tp_font][2]);

	obj = pfnFindObject("pt" + (level+1) + "_" + index); 
	pfnChangeProp(obj, "closemenu", "");
}


function pfnMenuItemOutCheck(level)
{
	if (mn_close[level] && mn_curr[level] != -1) 
	{
		pfnMenuItemOut(level, mn_curr[level]);
		mn_curr[level] = -1;
	}
}

function pfnMenuItemOutDelay(level)
{
  mn_close[level] = true;
  setTimeout("pfnMenuItemOutCheck(" + level + ");", 500);
}


function pfnMenuOver(level, index)
{
	var tp_index = index;
	var tp_link = mn_item[level][index][4];
	
	if (tp_link != "") window.status = pfnLinkGet(tp_link);
	
	for (var i=level; i>=0; i--)
	{
		pfnMenuItemOver(i, tp_index);
		tp_index = mn_item[i][tp_index][0];
	}
}

function pfnMenuOut(level, index)
{
	var tp_index = index;
	
	window.status = "";

	for (var i=level; i>=0; i--)
		pfnMenuItemOutDelay(i);
}



// *** menu layout functions

function pfnWriteMenuLevel(marray, iarray, level)
{
	var tp_index = -1, tp_width, tp_newparent;
	
	if (!iarray[level]) return;
	  
	for (var i=0; i<iarray[level].length; i++)
	{
		tp_newparent = (tp_index != iarray[level][i][0]);

		if (tp_newparent)
		{
			if (tp_index != -1) 
			{
				pfnDocS("</table>");
				if (level > 0) pfnDocS(" </div>\n");
			}
				  
			tp_index = iarray[level][i][0];
			tp_width = marray[level][1] + marray[level][2] + marray[level][3]; 
			
			if (level > 0) 
				pfnDocS("<div id=pt" + level + "_" + tp_index + " class=menu>\n");
			else if (ns4)
			{
				pfnDocS("<table width=" + tp_width + " border=0 cellspacing=0 cellpadding=0>\n");
				pfnDocS("  <tr><td class=tdM></td></tr>\n");
				pfnDocS("</table>\n\n");
			}
			
			pfnDocS("<table border=" + marray[level][0] + " cellspacing=0 cellpadding=0>\n");
		}
		    
		pfnWriteMenuItem(marray[level], iarray[level][i], level, i);
	}
	  
	if (tp_index != -1) 
	{
		pfnDocS("</table>");
		if (level > 0) pfnDocS(" </div>\n");
	}
	
	pfnDocW();
}

function pfnWriteMenuItem(menu, item, level, index)
{
	var tp_colspan = 0, tp_width, tp_leaf;
	
	if (menu[1] > 0) tp_colspan += 1;
	if (menu[2] > 0) tp_colspan += 1;
	if (menu[3] > 0) tp_colspan += 1;
	
	tp_width = menu[1] + menu[2] + menu[3] + (menu[0] * 4);
	if (item[8]) tp_leaf = menu[5]; else tp_leaf = "";
	
	switch (item[1])
	{
		case 1:	
			// vertical menu item: 
			// 3 columns -> bullet prefix, text, leaf indicator
			pfnDocS("  <tr>\n");
			pfnWriteMenuCell(menu[0], 1, menu[1], item[2], item[3], "mb", level, index, item[4], menu[4], item[6], item[7]);
			pfnWriteMenuCell(menu[0], 1, menu[2], item[2], item[3], "mt", level, index, item[4], item[5], item[6], item[7]);
			pfnWriteMenuCell(menu[0], 1, menu[3], item[2], item[3], "ml", level, index, item[4], tp_leaf, item[6], item[7]);
			pfnDocS("  </tr>\n");
			break;
		
		case 2: 
			// vertical menu headline: 
			// 1 column colspan 3 columns -> text or image
			pfnDocS("  <tr>\n");
			pfnWriteMenuCell(menu[0], tp_colspan, tp_width, item[2], item[3], "mt", level, index, item[4], item[5], item[6], item[7]);
			pfnDocS("  </tr>\n");
			break;
			
		case 3: 
			// vertical menu blank line: 
			// 1 column colspan 3 columns -> nothing
			pfnDocS("  <tr>\n");
			pfnWriteMenuBlank(tp_colspan, item[2], item[6]);
			pfnDocS("  </tr>\n");
			break;
	}
}

function pfnWriteMenuCell(border, colspan, width, height, padding, name, level, index, link, text, nstyle, hstyle)
{
	if (text == "") text = "<img src='/NewCatalogMenu/blank.gif' border=0>";
	
	var tp_size = " width=" + width + " height=";
	var tp_evt = " onmouseover='pfnMenuOver("+ level + ", " + index + ");' onmouseout='pfnMenuOut(" + level + ", " + index + ");'";
	var tp_id = name + level + "_" + index;
	var tp_col = (colspan > 1) ? " colspan=" + colspan : "";
	var tp_class = (link != "") ? "linkM" : "divM";
	
	if (width > 0)
	{
		pfnDocS("    <td class=tdM valign=top" + tp_size + height + tp_col + ">\n");
		
		pfnDocS("      <div id=" + tp_id + " class=" + tp_class + nstyle);
		if (dom || ie4) pfnDocS(tp_evt + " onclick='pfnLinkClick(\"" + link + "\");'");
		pfnDocS(">  <div style='padding-top: " + padding + "px;'>\n");
		
		if (ns4) 
		{
			var tp_gap = border*2;
			if (border == 1) tp_gap += 2;
			
			pfnDocS("      <layer name=" + tp_id + " class=layerM" + nstyle + tp_size + (height-tp_gap) + tp_evt + " onload='pfnHookEvt(this, \"" + link + "\");'>\n");
			if (link != "") pfnDocS("        <a href='" + link + "' class=layerM" + nstyle + ">\n");
		}
		pfnDocS("      " + text);
		if (ns4) 
		{
			if (link != "") pfnDocS("</a>");
			pfnDocS("</layer>");
		}
		pfnDocS("</div></div>");
		
		pfnDocS("</td>\n");
	}
}

function pfnWriteMenuBlank(colspan, height, nstyle)
{
	var tp_col = (colspan > 1) ? " colspan=" + colspan : "";
	
	pfnDocS("    <td class=tdM" + nstyle + " height=" + height + tp_col + ">\n");
	pfnDocS("      <img src='/NewCatalogMenu/blank.gif' border=0></td>\n");
}


function pfnDebugMenu()
{
	if (debug6) document.write("<form name=tpFrm><textarea cols=120 rows=20 wrap=off>");
	pfnDocS("pfnWriteMenuCell: <br>\n");
	pfnDocS("<table border=0 cellspacing=0 cellpadding=0>\n");
	
	pfnDocS("  <tr>\n");
	pfnWriteMenuCell(0, 1, 15, 20, 0.2, "mb", 0, 1, "", ">", 1, 0);
	pfnWriteMenuCell(0, 1, 117, 20, 0.2, "mt", 0, 1, "", "Stationary", 1, 0);
	pfnWriteMenuCell(0, 1, 15, 20, 0.2, "ml", 0, 1, "", "<img src='arrow.gif' border=0>", 1, 0);
	pfnDocS("  </tr>\n");
	
	pfnDocS("  <tr>\n");
	pfnWriteMenuCell(0, 1, 15, 35, 0.2, "mb", 0, 1, "http://my.yahoo.com", ">", 3, 2);
	pfnWriteMenuCell(0, 1, 117, 35, 0.2, "mt", 0, 1, "http://my.yahoo.com", "Binding Machines & Accessories", 3, 2);
	pfnWriteMenuCell(0, 1, 15, 35, 0.2, "ml", 0, 1, "http://my.yahoo.com", "<img src='arrow.gif' border=0>", 3, 2);
	pfnDocS("  </tr>\n");

	pfnDocS("  <tr>\n");
	pfnWriteMenuCell(0, 3, 147, 20, 0, "mb", 0, 1, "http://my.yahoo.com", "<img src='header.gif' border=0>", 0, 0);
	pfnDocS("  </tr>\n");

  pfnDocS("</table> <br>\n");
	pfnDocW();

	pfnDocS("pfnWriteMenuItem: <br>\n");
	pfnDocS("<table border=0 cellspacing=0 cellpadding=0>\n");
	
	pfnWriteMenuItem(mn_menu[0], mn_item[0][0], 0, 0);
	pfnWriteMenuItem(mn_menu[0], mn_item[0][1], 0, 1);
	pfnWriteMenuItem(mn_menu[0], mn_item[0][2], 0, 2);
	pfnWriteMenuItem(mn_menu[0], mn_item[0][5], 0, 5);
	pfnWriteMenuItem(mn_menu[0], mn_item[0][6], 0, 6);
	pfnWriteMenuItem(mn_menu[0], mn_item[0][7], 0, 7);
	pfnWriteMenuItem(mn_menu[0], mn_item[0][8], 0, 8);
	pfnWriteMenuItem(mn_menu[0], mn_item[0][10], 0, 10);
	pfnWriteMenuItem(mn_menu[0], mn_item[0][11], 0, 11);
	
	pfnDocS("</table>\n");
	pfnDocW();

	pfnDocS("pfnWriteMenuLevel: <br>\n");
	pfnWriteMenuLevel(mn_menu, mn_item, 0);
	pfnDocW();
	
	if (debug6) document.write("</textarea></form>");
}



// *** write font style definition ( mn_style )
//     -> divMx for div style with no link, linkMx for div style with link
//     -> tcellMx for td style in blank row, layerMx for layer style, menu for popup menu style

function gfnWriteMenuStyle()
{
	var bstyle = (dom || ie4) ? "" : "layer-";
	var hstyle = (dom || ie4) ? "height: 100%; " : "";
	var vstyle = (dom || ie4) ? "hidden" : "hide";

	if (debug3) document.write("<form name=tpFrm><textarea cols=120 rows=20 wrap=off>");
	
	pfnDocS("<style>\n\n");
	
	for (var i=0; i<mn_style.length; i++)
	{
		var tp_style1 = "font-family: " + mn_style[i][0] + "; font-size: " + mn_style[i][1] + "; color: " + 
			mn_style[i][2] + "; font-weight: " + mn_style[i][3] + "; font-style: " + mn_style[i][4] + "; text-decoration: " +
			mn_style[i][5] + "; text-align: " + mn_style[i][6] + "; }\n";
		
		var tp_style2 = hstyle + bstyle + "background-color: " + mn_style[i][7] + "; ";
		
		pfnDocS(".divM" + i + " { position: relative; " + tp_style2 + tp_style1);
		pfnDocS(".linkM" + i + " { position: relative; cursor: pointer; cursor: hand; " + tp_style2 + tp_style1);
		
		pfnDocS(".tcellM" + i + " { background-color: " + mn_style[i][7] + "; " + tp_style1);
		pfnDocS(".layerM" + i + " { text-decoration: none; " + tp_style1);
		pfnDocS("\n");
	}
	
	pfnDocS(".menu { position: absolute; top: 0; visibility: " + vstyle + "; }\n");
	pfnDocS("td.tdM { line-height: normal; }\n");
	pfnDocS("</style>\n\n\n");
	pfnDocW();
	
	if (debug4)
	{
		pfnDocS("<table border=1 cellspacing=0 cellpadding=0 align=center>\n");
		for (var i=0; i<mn_style.length; i++)
		{
			pfnDocS("  <tr><td class=tdM valign=top width=200 height=30><div class=divM" + i + ">");
			if (ns4) pfnDocS("  <layer class=layerM" + i + " width=200 height=28>");
			pfnDocS("Text " + i);
			if (ns4) pfnDocS("</layer>  ");
			pfnDocS("</div></td></tr>\n");
		}
		pfnDocS("</table>\n");
		pfnDocW();
	}

	if (debug3) document.write("</textarea></form>");
	if (debug5) pfnDebugMenu();
}



// *** write menu layout ( mn_menu, mn_item )

function gfnWriteMainMenu()
{
	if (debug7) document.write("<form name=tpFrm><textarea cols=120 rows=20 wrap=off>");
	pfnWriteMenuLevel(mn_menu, mn_item, 0);
	if (debug7) document.write("</textarea></form>");
}

function gfnWriteSubMenu()
{
	if (debug7) document.write("<form name=tpFrm><textarea cols=120 rows=20 wrap=off>");
	for (var i=1; i<mn_menu.length; i++)
		pfnWriteMenuLevel(mn_menu, mn_item, i);
	if (debug7) document.write("</textarea></form>");
}

//-->

