// Last modification: 4/26/2008
//
// Line 175 - added color:white; to get around FirFox CSS issue
//
// Javascript copyright 2004,2005 by Jeff Krause.  All rights reserved.
//
// rgi[] is an array of pointers into rgP
//
// rgP[] must have at least the following entries for menus
//		.link .............. page to goto when clicked
//		.iPage ............. menu identifier (handle) associated with each link page
//		.wMenu ............. width of the <TD> for a menu item
//		.display ........... text to be displayed if (fImages == false)
//		.img ............... image to be displayed if (fImages == true)
//		.img_hl ............ mouseOver version of image
//
// plus the following for sub menus
//		.iMenu ............. identifier to distinguish menu class names
//		.xOffsetSubMenu .... how far [y] from the top left of the <TD> or <IMG> of menu item to show sub menu
//		.yOffsetSubMenu .... how far below the bottom of the <TD> or <IMG> of menu item to show sub menu
//		.wSubMenu .......... width of sub menu in pixels
//		.subMenuDiv ........ ID of <DIV> enclosing subMenu for this menu item
//		.rgSubMenu[] .. 
//		.nrgSubMenu ... 
//
// rgSubMenu[] must have following entries
//		.link .............. page to goto when clicked
//		.display ........... text to be displayed if (fImages == false)
//		.img ............... image to be displayed if (fImages == true)
//		.img_hl ............ mouseOver version of image
//
//
// Uses following clib librabry routines:
//	clib_newElementId()
//	clib_swapImage()
//	clib_getElementId()
//	clib_objDimensions()
//	clib_placeDiv()
//	clib_changeClass()
//	clib_insertText()
//	

clibdb_register('sm_rgSubMenuDiv');
var sm_rgSubMenuDiv = new Array();
var sm_nrgSubMenuDiv = 0;
var sm_fInitializing = true;
var sm_fDebug = false;
var sm_rgMenu = null;
var sm_nrgMenu = 0;
var sm_menuTimer = null;
var sm_blankImg = 'smblank.gif';
var sm_rgMenuImgId = new Array();
var sm_nrgMenuImgId = 0;

function sm_menuImgIdType(idImg,idImgPre,idImgPost) {
	this.members = 'idImg,idImgPre,idImgPost';
	this.idImg = idImg;
	this.idImgPre = idImgPre;
	this.idImgPost = idImgPost;
	}
 
function sm_enableMenus() {
	sm_fInitializing = false;
	}

function sm_initSubMenuDivStyle(w,h) {
	var id = clib_newElementId();
	var html = '<style>\n';
	html += '#' + id + '{ ';
	html += 'position:absolute; z-index:99; top:0px; left:0px; ';
	if (w != null) html += 'width:' + w + 'px; ';
	if (h != null) html += 'height:' + h + 'px; ';
	html += 'visibility:hidden; display:block }\n';
	html += '</style>\n';
	document.writeln(html);
	sm_rgSubMenuDiv[sm_nrgSubMenuDiv++] = id;
	return id;
	}

function sm_mouseOverMenu(iMenu,objName,file) {
	if (sm_fInitializing) return;
	sm_clearDivs();
	if (file != null) clib_swapImage(objName,file);
	if ((sm_nrgMenu > 0) && (sm_rgMenu[iMenu].nrgSubMenu > 0)) sm_showSubMenu(iMenu,objName);
	}

function sm_mouseOutMenu(objName,file) {
	if (sm_fInitializing) return;
	if (file != null) clib_swapImage(objName,file);
	sm_setClearDivs();
	}
	
function sm_mouseOverSubMenu(objName,file) {
	if (sm_fInitializing) return;
	sm_cancelClearDivs();
	if (file != null) clib_swapImage(objName,file);
	}

function sm_mouseOutSubMenu(objName,file) {
	if (sm_fInitializing) return;
	if (file != null) clib_swapImage(objName,file);
	sm_setClearDivs();
	}

function sm_showSubMenu(iMenu,objName) {
	var irgMenuImgId = null;
	for (var i = 0; i < sm_nrgMenuImgId; i++) if (sm_rgMenuImgId[i].idImg == objName) {
		irgMenuImgId = i;
		break;
		}
	if (irgMenuImgId ==  null) {
		alert('sm_showSubMenu(' + iMenu + ',' + objName + ') bad id');
		return;
		}
	var iImgId = sm_rgMenuImgId[irgMenuImgId];
	var p = sm_rgMenu[iMenu];
	if (iImgId.idImgPre == null) {
		var dimPre  = clib_objDimensions(clib_getElementId(iImgId.idImg));
		var x = dimPre.left + p.xOffsetSubMenu;
		var y = dimPre.top + p.yOffsetSubMenu
		}
	else {
		var dimPre  = clib_objDimensions(clib_getElementId(iImgId.idImgPre));
		var dimPost = clib_objDimensions(clib_getElementId(iImgId.idImgPost));
		var xMid = Math.floor((dimPre.left + dimPost.left)/2);
		var x = xMid - Math.floor(p.wSubMenu/2) + p.xOffsetSubMenu;
		var y = dimPre.top + 10 + p.yOffsetSubMenu
		}
	var id = clib_getElementId(objName);
	sm_cancelClearDivs();
	var divId = sm_rgMenu[iMenu].subMenuDiv;
	if (divId == null) alert('error: sm_showSubMenu(' + iMenu + ',' + objName + ')')
	clib_placeDiv(divId,x,y,5,true);
	sm_setClearDivs(); 
	}

function sm_setClearDivs() {
	clearTimeout(sm_menuTimer);
	sm_menuTimer = setTimeout('sm_timerClearDivs()',1000);
	}

function sm_cancelClearDivs() {
	clearTimeout(sm_menuTimer);
	sm_menuTimer = null;
	}

function sm_timerClearDivs() {
	sm_clearDivs();
	}

function sm_clearDivs() {
	clearTimeout(sm_menuTimer);
	for (var i = 0; i < sm_nrgSubMenuDiv; i++) clib_placeDiv(sm_rgSubMenuDiv[i],0,0,0,false);
	sm_menuTimer = null;
	}

function sm_writeMenus(rgi,nrgi,rgP, iNoHL, fImages, tClass,tdClass,lClass,lClassHL,lClassNoHL) {
	var html = '<table class=' + tClass + ' border=0 cellpadding=0 cellspacing=0><tr>\n';
	var idImgPost,idImgPre;
	if (!fImages) {
		idImgPost = clib_newElementId();
		html += '<td width=1% align=center valign=bottom><img width=1 id="' + idImgPost + '" src="' + sm_blankImg + '"" border=0></td>\n\n';
		}
	for (var i = 0; i < nrgi; i++) {
		if (!fImages) {
			idImgPre = idImgPost;
			idImgPost = clib_newElementId();
			var tdId = clib_newElementId();
			var p = ( rgi == null ? rgP[i] : rgP[rgi[i]] );
			var fHL = (p.iPage != iNoHL)  && (p.link != null);
			sm_rgMenuImgId[sm_nrgMenuImgId++] = new sm_menuImgIdType(tdId,idImgPre,idImgPost);
			html += '\n\n<td id=' + tdId + ' width=' + p.wMenu + ' class=' + tdClass + ' align=center valign=middle>';
			if (fHL) {
				var aId = clib_newElementId();
				html += '<a id=' + aId + ' class=' + lClass + ' ';
				html += 'href="' + p.link + '" target="_parent" ';
				html += 'onmouseover="';
				if (lClassHL != null) html += "clib_changeClass('" + aId + "','" + lClassHL + "');";
				html += "sm_mouseOverMenu(" + p.iPage + ",'" + tdId + "')" + '" ';
				html += 'onmouseout="';
				if (lClassHL != null) html += "clib_changeClass('" + aId + "','" + lClass + "');";
				html += 'sm_mouseOutMenu()">';
				html += p.display + '</a>';
				}
			else if (p.nrgSubMenu > 0) {
				var aId = clib_newElementId();
				html += '<a id=' + aId + ' class=' + lClassNoHL + ' ';
				html += 'onmouseover="' + "sm_mouseOverMenu(" + p.iPage + ",'" + tdId + "')" + '" ';
				html += 'onmouseout="' + "sm_mouseOutMenu()" + '">';
				html += p.display + '</a>';
				}
			else html += '<span class=' + lClassNoHL + '>' + p.display + '</span>';
			html += '</td>';
			}
		else {
			var imgId = clib_newElementId();
			sm_rgMenuImgId[sm_nrgMenuImgId++] = new sm_menuImgIdType(imgId,null,null)
			var p = ( rgi == null ? rgP[i] : rgP[rgi[i]] );
			var fHL = (p.iPage != iNoHL);
			html += '\n\n<td align=center valign=top>';
			if (fHL) html += '<a  href="' + p.link + '" target="_parent">';
			html += '<img id="' + imgId + '" border=0 src="' + p.img + '" ';
			if (fHL) {
				html += 'onmouseover="sm_mouseOverMenu(' + p.iPage + ",'" + imgId + "','" + p.img_hl + "')" + '" ';
				html += 'onmouseout="sm_mouseOutMenu(' + "'" + imgId + "','" + p.img + "')" + '" ';
				}
			else if (p.nrgSubMenu > 0) {
				html += 'onmouseover="sm_mouseOverMenu(' + p.iPage + ",'" + imgId + "')" + '" ';
				html += 'onmouseout="sm_mouseOutMenu(' + "'" + imgId + "')" + '" ';
				}
			html += '></a>';
			html += '</td>\n';
			}
		if (!fImages) html += '<td width=1% align=center valign=bottom><img width=1 id="' + idImgPost + '" src="' + sm_blankImg + '"" border=0></td>\n\n';
		}
	html += '\n\n</tr></table>';
	return html
	}

function sm_initSubMenuDivs(rgP,nrgP,fImages, clTable,clTd,clLinks,clLinksHL, spacerImg) {
	sm_rgMenu = rgP;
	sm_nrgMenu = nrgP;

	var html = '';
	for (var iP = 0; iP < nrgP; iP++) {
		var p = rgP[iP];
		if (p.nrgSubMenu > 0) {
			html += '<div id=' + p.subMenuDiv + '><table class=' + clTable + ' border=0 cellspacing=0 cellpadding=0>';
			if (spacerImg != null) html += '<tr><td align=center><img src="' + spacerImg + '" border=0></td></tr>\n';
			for (var iDr = 0; iDr < p.nrgSubMenu; iDr++) {
				var d = p.rgSubMenu[iDr];
				if (fImages) {
					html += '<tr><td align=center width=' + d.wSubMenu + '>';
					html += '<a  href="' + d.link + '" target="_parent">';
					var imgId = clib_newElementId();
					html += '<img id="' + imgId + '" border=0 src="' + d.img + '" alt="' + d.display + '"';
					html += ' onmouseover="sm_mouseOverSubMenu(' + "'" + imgId + "','" + d.img_hl + "')" + '"';
					html += ' onmouseout="sm_mouseOutSubMenu( ' + "'" + imgId + "','" + d.img    + "')" + '"></a>';
					}
				else {
					var pId = clib_newElementId();
					html += '<tr><td align=center width=' + d.wSubMenu + ' class=' + clTd + '>';
					html += '<a id=' + pId + ' href="' + d.link + '" target="_parent" class=' + clLinks + ' ';
					html += 'onmouseover="' + "clib_changeClass('" + pId + "','" + clLinksHL + "')" + ';'
					html += 'sm_mouseOverSubMenu()" ';
					html += 'onmouseout="' + "clib_changeClass('" + pId + "','" + clLinks + "')" + ';'
					html += 'sm_mouseOutSubMenu()">';
					html += d.display + '</a>';
					}
				html += '</td></tr>';
				}
			html += '</table></div>';
			}
		}
	return html;
	}


