function getDHTMLObj(docName, objName) {return eval(docName + theBrowser.DHTMLRange + '.' + objName + theBrowser.DHTMLStyleObj);}
function getDHTMLObjTop(theObj) {return (theBrowser.code == "MSIE") ? theObj.pixelTop : theObj.top;}
function getDHTMLImg(docName, objName, imgName) {
	return (theBrowser.code == 'MSIE') ? eval(docName + '.all.' + imgName) : getDHTMLObj(docName, objName).document.images[imgName];
}
function simpleArray() {this.item = 0;}
function imgStoreItem(n, s, w, h) {
	this.name = n;
	this.src = s;
	this.obj = null;
	this.w = w;
	this.h = h;
	if ((theBrowser.canCache) && (s)) {
		this.obj = new Image(w, h);
		this.obj.src = s;
	}
}
function imgStoreObject() {
	this.count = -1;
	this.img = new imgStoreItem;
	this.find = imgStoreFind;
	this.add = imgStoreAdd;
	this.getSrc = imgStoreGetSrc;
	this.getTag = imgStoreGetTag;
}
function imgStoreFind(theName) {
	var foundItem = -1;
	for (var i = 0; i <= this.count; i++) {if (this.img[i].name == theName) {foundItem = i;break;}}
	return foundItem;
}
function imgStoreAdd(n, s, w, h) {
	var i = this.find(n);
	if (i == -1) {i = ++this.count;}
	this.img[i] = new imgStoreItem(n, s, w, h);
}
function imgStoreGetSrc(theName) {
	var i = this.find(theName);
	return (i == -1) ? '' : this.img[i].src;
}
function imgStoreGetTag(theName, iconID, altText) {
	var i = this.find(theName);
	if (i < 0) {return ''}
	with (this.img[i]) {
		if (src == '') {return ''}
		var tag = '<img src="' + src +  '" width=' + w + ' height=' + h + ' border=0 align="left" hspace="0" vspace="0"';
		tag += (iconID != '') ? ' name="' + iconID + '"' : '';
		tag += ' alt="' + altText +  '">';
	}
	return tag;
}
// The MenuItem object.  This contains the data and functions for drawing each item.
function MenuItem (owner, id, type, text, url, status, nItem, pItem, parent) {
	this.owner = owner;
	this.id = id;
	this.type = type;
	this.text = text;
	this.url = url;
	this.status = status;
	this.target = owner.defaultTarget;
	this.nextItem = nItem;
	this.prevItem = pItem;
	this.FirstChild = -1;
	this.parent = parent;
	this.isopen = false;
	this.isSelected = false;
	this.draw = MIDraw;
	this.PMIconName = MIGetPMIconName;
	this.docIconName = MIGetDocIconName;
	this.setImg = MISetImage;
	this.setIsOpen = MISetIsOpen;
	this.setSelected = MISetSelected;
	this.mouseOver = MIMouseOver;
	this.mouseOut = MIMouseOut;
	var i = (this.owner.imgStore) ? this.owner.imgStore.find(type) : -2;
	if (i == -1) {i = this.owner.imgStore.find('iconPlus');}
	this.height = (i > -1) ? this.owner.imgStore.img[i].h : 0;
}
function MIDraw (indentStr) {
	var o = this.owner;
	var mRef = o.reverseRef + "." + o.name;
	var tmp = '="return ' + mRef + '.entry[' + this.id + '].';
	var iconTag = o.imgStore.getTag(this.PMIconName(), 'plusMinusIcon' + this.id, '');
	var aLine = '<nobr>' + indentStr;
	if (this.FirstChild != -1) {
		aLine += '<A HREF="#" NAME="plusMinus' + this.id + '" ';
		aLine += 'onClick="return ' + mRef + '.toggle(' + this.id + ');" ';
		aLine += 'onMouseOver' + tmp + 'mouseOver(\'plusMinusIcon\');" ';
		aLine += 'onMouseOut' + tmp + 'mouseOut(\'plusMinusIcon\');">' + iconTag + '</A>';
	} else {
		aLine += iconTag;
	}
	var tip = (o.tipText == 'text') ? this.text : ((o.tipText == 'status') ? this.status : '');
	var theEntry = o.imgStore.getTag(this.docIconName(), 'docIcon' + this.id, tip) + this.text;
	aLine += '<SPAN CLASS="' + ((this.FirstChild != -1) ? 'node' : 'leaf') + '">';
	var theUrl = (((this.url == '') && theBrowser.canJSVoid && o.showAllAsLinks) || (o.wizardInstalled)) ? 'javascript:void(0);' : this.url;
	if (theUrl != '') {
		var theTarget = this.target;
		if (this.target == "_top") {theUrl = "javascript:" + o.reverseRef + ".loadURLInTop('" + theUrl + "');";}
		aLine += '<A HREF="' + theUrl + '" TITLE="' + tip + '"';
		if (theUrl.substring(0,11) != 'javascript:') {aLine += '" TARGET="' + this.target + '"';}
		aLine += ' onClick="return ' + mRef + '.itemClicked(' + this.id + ');"';
		aLine += ' onMouseOver' + tmp + 'mouseOver(\'docIcon\');"';
		aLine += ' onMouseOut' + tmp + 'mouseOut(\'docIcon\');">' + theEntry + '</A>';
	} else {
		aLine += theEntry;
	}
	aLine += '</SPAN></nobr>';
	return aLine
}
function MIGetPMIconName() {
	var n = 'icon' + ((this.FirstChild != -1) ? ((this.isopen == true) ? 'Minus' : 'Plus') : 'Join');
	n += (this.id == this.owner.firstEntry) ? ((this.nextItem == -1) ? 'Only' : 'Top') : ((this.nextItem == -1) ? 'Bottom' : '');
	return n;
}
function MIGetDocIconName() {
	var is = this.owner.imgStore; var n = this.type;
	n += ((this.isopen) && (is.getSrc(n + 'Expanded') != '')) ? 'Expanded' : '';
	n += ((this.isSelected) && (is.getSrc(n + 'Selected') != '')) ? 'Selected' : '';
	return n;
}
function MISetImage(imgID, imgName) {
	var o = this.owner; var imgSrc = o.imgStore.getSrc(imgName);
	if ((imgSrc != '') && (theBrowser.canCache) && (!o.amBusy)) {
		var img = (theBrowser.hasDHTML) ? getDHTMLImg(o.container + '.document', 'entryDIV' + this.id, imgID) : eval(o.container).document.images[imgID];
		if (img) {img.src = imgSrc;}
	}
}
function MISetIsOpen (isOpen) {
	if ((this.isopen != isOpen) && (this.FirstChild != -1)) {
		this.isopen = isOpen;
		this.setImg('plusMinusIcon' + this.id, this.PMIconName());
		this.setImg('docIcon' + this.id, this.docIconName(false));
		return true;
	} else {
		return false;
	}
}
function MISetSelected (isSelected) {
	this.isSelected = isSelected;
	this.setImg('docIcon' + this.id, this.docIconName(false));
	if (this.parent >= 0) {this.owner.entry[this.parent].setSelected(isSelected);}
}
function MIMouseOver(imgName) {
	eval(this.owner.container).status = '';  //Needed for setStatus to work on MSIE 3 - Go figure!?
	var newImg = '';
	if (imgName == 'plusMinusIcon') {
		newImg = this.PMIconName();
		setStatus('Click to ' + ((this.isopen == true) ? 'collapse.' : 'expand.'));
	} else {
		if (imgName == 'docIcon') {
			newImg = this.docIconName();
			setStatus(this.status);
		}
	}
	if (theBrowser.canOnMouseOut) {this.setImg(imgName + this.id, newImg + 'MouseOver');}
	if(this.onMouseOver) {var me=this;eval(me.onMouseOver);}
	return true;
}
function MIMouseOut(imgName) {
	clearStatus();
	var newImg = '';
	if (imgName == 'plusMinusIcon') {
		newImg = this.PMIconName();
	} else {
		if (imgName == 'docIcon') {newImg = this.docIconName();}
	}
	this.setImg(imgName + this.id, newImg);
	if(this.onMouseOut) {var me=this;eval(me.onMouseOut);}
	return true;
}
// The Menu object.  This is basically an array object although the data in it is a tree.
function Menu () {
	this.count = -1;
	this.version = '2.3.7';
	this.firstEntry = -1;
	this.autoScrolling = false;
	this.modalFolders = false;
	this.linkOnExpand = false;
	this.toggleOnLink = false;
	this.showAllAsLinks = false;
	this.focusOnLink = true;
	this.savePage = true;
	this.name = 'theMenu';
	this.container = 'menu';
	this.reverseRef = 'parent';
//	this.contentFrame = 'text';
	this.contentFrame = 'main';
//	this.defaultTarget = 'text';
	this.defaultTarget = 'main';
	this.tipText = 'none';
	this.lastPMClicked = -1;
	this.selectedEntry = -1;
	this.wizardInstalled = false;
	this.amBusy = true;
	this.maxHeight = 0;
	this.imgStore = new imgStoreObject;
	this.entry = new MenuItem(this, 0, '', '', '', '', -1, -1, -1);
	this.contentWin = MenuGetContentWin;
	this.getEmptyEntry = MenuGetEmptyEntry;
	this.addEntry = MenuAddEntry;
	this.addMenu = MenuAddEntry;
	this.addChild = MenuAddChild;
	this.rmvEntry = MenuRmvEntry;
	this.rmvChildren = MenuRmvChildren;
	this.draw = MenuDraw;
	this.drawALevel = MenuDrawALevel;
	this.refresh = MenuRefresh;
	this.reload = MenuReload;
	this.refreshDHTML = MenuRefreshDHTML;
	this.itemClicked = MenuItemClicked;
	this.selectEntry = MenuSelectEntry;
	this.setEntry = MenuSetEntry;
	this.setEntryByURL = MenuSetEntryByURL;
	this.setAllChildren = MenuSetAllChildren;
	this.setAll = MenuSetAll;
	this.openAll = MenuOpenAll;
	this.closeAll = MenuCloseAll;
	this.findEntry = MenuFindEntry;
	this.toggle = MenuToggle;
}
function MenuGetContentWin() {
	return eval(((myOpener != null) ? 'myOpener.' : 'self.') + this.contentFrame);
}
function MenuGetEmptyEntry() {
	for (var i = 0; i <= this.count; i++) {if (this.entry[i] == null) {break;}}
	if (i > this.count) {this.count = i};
	return i
}
function MenuAddEntry (addTo, type, text, url, status) {
	var theNI = -1;var theP = -1;
	if (addTo < 0) {
		var i = this.firstEntry;
		while (i > -1) {addTo = i;i = this.entry[i].nextItem;}
	}
	var eNum = this.getEmptyEntry();
	if (addTo != -1) {
		var e = this.entry[addTo];
		theNI = e.nextItem;
		theP = e.parent;
		e.nextItem = eNum;
	}
	this.entry[eNum] = new MenuItem(this, eNum, type, text, url, status, theNI, addTo, theP);
	if (theNI > -1) {this.entry[theNI].prevItem = eNum;}
	if (this.firstEntry == -1) {this.firstEntry = eNum;}
	return eNum;
}
function MenuAddChild (addTo, type, text, url, status) {
	var eNum = -1;
	if (this.count == -1) {
		eNum = this.addMenu (addTo, type, text, url, status);
	} else {
		if (addTo < 0) {
			var i = this.firstEntry;
			while (i > -1) {addTo = i;i = this.entry[i].nextItem;}
		}
		var childID = this.entry[addTo].FirstChild;
		if (childID < 0) {
			eNum = this.getEmptyEntry();
			this.entry[eNum] = new MenuItem(this, eNum, type, text, url, status, -1, -1, addTo);	
			this.entry[addTo].FirstChild = eNum;
		} else {
			while (this.entry[childID].nextItem != -1) {
				childID = this.entry[childID].nextItem;
			}
			eNum = this.addMenu (childID, type, text, url, status);
		}
	}
	return eNum;
}
function MenuRmvEntry (theEntry) {
	var e = this.entry[theEntry];
	var p = e.prevItem;
	var n = e.nextItem;
	if (e.FirstChild > -1) {this.rmvChildren(theEntry);}
	if (this.firstEntry == theEntry) {this.firstEntry = n}
	if (this.selectedEntry == theEntry) {this.selectedEntry = n}
	if (p > -1) {
		this.entry[p].nextItem = n;
	} else { 
		if (e.parent > -1) {
			this.entry[e.parent].FirstChild = n;
		} else {
			if (this.firstEntry == theEntry) {this.firstEntry = n}
		}
	} 
	if (n > -1) {this.entry[n].prevItem = p;}
	this.entry[theEntry] = null;
}
function MenuRmvChildren (theP) {
	var eNum;var e;var tmp;
	if (theP == -1) {
		eNum = this.firstEntry;
		this.firstEntry = -1;
	} else {
		eNum = this.entry[theP].FirstChild;
		this.entry[theP].FirstChild = -1;
	}
	while (eNum > -1) {
		e = this.entry[eNum];
		if (e.FirstChild > -1) {this.rmvChildren(eNum);}
		tmp = eNum;
		eNum = e.nextItem;
		this.entry[tmp] = null;
	}
}
function MenuDraw() {
	this.maxHeight = 0;
	theDoc = eval(this.container + ".document");
	eval(this.container).document.writeln(this.drawALevel(this.firstEntry, '', true, theDoc));
	if (theBrowser.hasDHTML == false) {
		if ((this.lastPMClicked > 0) && theBrowser.mustMoveAfterLoad && this.autoScrolling) {
			var l = eval(this.container).location.pathname + '#plusMinus' + this.lastPMClicked;
			setTimeout(this.container + '.location.href = "' + l + '";', 100);
		}
	}
}
function MenuDrawALevel(firstItem, indentStr, isVisible, theDoc) {
	var currEntry = firstItem;
	var padImg = "";
	var aLine = "";
	var theLevel = "";
	var e = null;
	while (currEntry > -1) {
		e = this.entry[currEntry];
		aLine = e.draw(indentStr);
		if (theBrowser.hasDHTML) {
			aLine = '<DIV ID="entryDIV' + currEntry + '" CLASS="menuItem">' + aLine + '</DIV>';
		} else {
			aLine += '<BR CLEAR="ALL">';
		}
		if (theBrowser.lineByLine) {theDoc.writeln(aLine);} else {theLevel += aLine;}
		this.maxHeight += e.height;
		if ((e.FirstChild > -1) && ((theBrowser.hasDHTML || (e.isopen && isVisible)))) {
			padImg = this.imgStore.getTag((e.nextItem == -1) ? 'iconBlank' : 'iconLine', '', '');
			theLevel += this.drawALevel(e.FirstChild, indentStr + padImg, (e.isopen && isVisible), theDoc);
		}
		currEntry = e.nextItem;
	}
	return theLevel;
}
function MenuRefresh() {
	if (theBrowser.hasDHTML) {
		if (this.amBusy == false) this.refreshDHTML();
	} else {
		this.reload();
	}
}
function MenuReload() {
	if (this.amBusy == false) {
		this.amBusy = true;
		var l = eval(this.container).location;
		var rm = (theBrowser.hasDHTML) ? 'reload' : theBrowser.reloadMethod;
		var newLoc = fixPath(l.pathname);
		if (theBrowser.code == 'OP') {var d = new Date(); newLoc += '?' + d.getTime();}
		if (this.autoScrolling && (this.lastPMClicked > 0) && (theBrowser.mustMoveAfterLoad == false)) {
			newLoc += "#plusMinus" + this.lastPMClicked;
		}
		if (rm == 'replace') {
			l.replace(newLoc);
		} else {
			if (rm == 'reload') {
				l.reload(true);
			} else {
				if (rm == 'timeout') {
					setTimeout(this.container + ".location.href ='" + newLoc + "';", 100);
				} else {
					l.href = newLoc;
				}
			}
		}
	}
}
function MenuRefreshDHTML() {
	var nextItemArray = new simpleArray;
	var currEntry = this.firstEntry;
	var level = (currEntry == -1) ? 0 : 1;
	var isVisible = true;
	var lastVisibleLevel = 1;
	var co = eval(this.container);
	var yPos = co.menuStart;
	var d = this.container + '.document';
	var e = null;var s = null;
	while (level > 0) {
		e = this.entry[currEntry];
		s = getDHTMLObj(d, 'entryDIV' + currEntry);
		if (isVisible) {
			s.top = yPos;
			s.visibility = 'visible';
			yPos += e.height;
			lastVisibleLevel = level;
		} else {
			s.visibility = 'hidden';
		}
		if (e.FirstChild > -1) {
			isVisible = (e.isopen == true) && isVisible;
			nextItemArray[level++] = e.nextItem;
			currEntry = e.FirstChild;
		} else {
			if (e.nextItem != -1) {
				currEntry = e.nextItem;
			} else {
				while (level > 0) {
					if (nextItemArray[--level] != -1) {
						currEntry = nextItemArray[level];
						isVisible = (lastVisibleLevel >= level);
						break;
					}
				}
			}
		}
	}
	var pmc = (this.autoScrolling && (this.lastPMClicked > 0)) ? this.lastPMClicked : -1;
	co.setMenuHeight(yPos);
	if (pmc >= 0) {
		e = this.entry[pmc];
		var srTop = getDHTMLObjTop(getDHTMLObj(d, 'entryDIV' + pmc));
		var srBot = (e.nextItem > 0) ? getDHTMLObjTop(getDHTMLObj(d, 'entryDIV' + e.nextItem)) : yPos;
		if (theBrowser.code == 'MSIE') {
			var curTop = co.document.body.scrollTop;
			var curBot = curTop + co.document.body.clientHeight;
		} else {
			var curTop = co.pageYOffset;
			var curBot = curTop + co.innerHeight;
		}
		if ((srBot > curBot) || (srTop < curTop)) {
			var scrBy = srBot - curBot;
			if (srTop < (curTop + scrBy)) {scrBy = srTop - curTop;}
			co.setTimeout('self.scrollBy(0, ' + scrBy + ');', 100);
		}
	}
}
function MenuItemClicked(entryNo) {
	var e = this.entry[entryNo];
	var w = this.contentWin();
	var b = theBrowser;
	this.selectEntry(entryNo);
	if (this.wizardInstalled) {w.menuItemClicked(entryNo);}
	if ((b.canFocus) && (this.focusOnLink) && (!floatingMode) && (e.target == this.defaultTarget)) {
		setTimeout('setFocus(self.' + this.contentFrame + ');', 100);
	}
	if(e.onClickFunc) {e.onClick = e.onClickFunc;}
	if(e.onClick) {var me=e;var r = eval(e.onClick);}
	if (r) {
		if ((this.toggleOnLink) && (e.FirstChild != -1)) {
			if (b.hasDHTML) {
				this.toggle(entryNo);
			} else {
				setTimeout(this.name + '.toggle(' + entryNo + ');', 100);
			}
		}
	}
	return (r) ? r : (e.url != '');
}
function MenuSelectEntry(entryNo) {
	var e = this.entry[entryNo];
	if ((e.url != '') || (this.showAllAsLinks)) {
		if (this.selectedEntry >= 0) {this.entry[this.selectedEntry].setSelected(false);}
		this.selectedEntry = entryNo;
		if (entryNo >= 0) {e.setSelected(true);}
	}
}
function MenuSetEntry(entryNo, state) {
	var cl = ',' + entryNo + ',';
	var e = this.entry[entryNo];
	this.lastPMClicked = entryNo;
	var mc = e.setIsOpen(state);
	var p = e.parent;
	while (p >= 0) {
		cl += p + ',';
		e = this.entry[p];
		mc |= (e.setIsOpen(true));
		p = e.parent;
	}
	if (this.modalFolders) {
		for (var i = 0; i <= this.count; i++) {
			if (cl.indexOf(',' + i + ',') < 0) {mc |= this.entry[i].setIsOpen(false);}
		}
	}
	return mc;
}
function MenuSetEntryByURL(theURL, state) {
	var i = this.findEntry(theURL, 'URL');
	return (i != -1) ? this.setEntry(i, state) : false;
}
function MenuSetAllChildren(state, parentID) {
	var hasChanged = false;
	var currEntry = (parentID > -1) ? this.entry[parentID].FirstChild : 0;
	while (currEntry > -1) {
		var e = this.entry[currEntry];
		hasChanged |= e.setIsOpen(state);
		if (e.FirstChild > -1) {hasChanged |= this.setAllChildren(state, currEntry);}
		currEntry = e.nextItem;
	}
	return hasChanged;
}
function MenuSetAll(state, parentID) {
    if (theBrowser.version >= 4) {
		if (parentID == 'undefined') {parentID = -1;}
	} else {
		if (parentID == null) {parentID = -1;}
	}
	var hasChanged = false;
	if (parentID > -1) {hasChanged |= this.entry[parentID].setIsOpen(state);}
	hasChanged |= this.setAllChildren(state, parentID);
	if (hasChanged) {
		this.lastPMClicked = this.firstEntry;
		this.refresh();
	}
}
function MenuOpenAll() {this.setAll(true, -1);}
function MenuCloseAll() {this.setAll(false, -1)}
function MenuFindEntry(theStr, srchType) {
	if (theBrowser.version >= 4) {
		if (srchType == 'undefined') {srchType = 'URL';}
	} else {
		if (srchType == null) {srchType = 'URL';}
	}
	var res = -1;
	var currVal;
	for (var i = 0; i <= this.count; i++) {
		currVal = (srchType.toUpperCase() == 'URL') ? this.entry[i].url : this.entry[i].text
		if (currVal == theStr) {res = i;break;}
	}
	return res;
}
function MenuToggle(entryNo) {
	var e = this.entry[entryNo];
	var chg = this.setEntry(entryNo, e.isopen ^ 1);
	if (this.linkOnExpand && e.isopen && (e.url != '')) {
		this.contentWin().location = e.url;
		this.itemClicked(entryNo);
	}
	if (chg) {this.refresh();}
	if (e.onToggle) {var me=e;eval(e.onToggle);}
	return false;
}
// Other functions
function DrawMenu(m) {
	m.draw();
}
function browserInfo() {
	this.code = 'unknown';
	this.version = 0;
	this.platform = 'Win';
	var ua = navigator.userAgent;
	var i = ua.indexOf('WebTV');
	if (i >= 0) {
		this.code = 'WebTV';
		i += 6;
	} else {
		i = ua.indexOf('MSIE');
		if (i >= 0) {
			this.code = 'MSIE';
			i += 5;
		} else {
			i = ua.indexOf('Opera');
			if (i >= 0) {
				this.code = 'OP';
				i = ua.indexOf(') ') + 2;
			} else {
				i = ua.indexOf('Mozilla/');
				if (i >= 0) {
					this.code = 'NS';
					i += 8;
				}
			}
		}
	}
	this.version = parseFloat(ua.substring(i, i+4));
	if (ua.indexOf('Mac') >= 0) {this.platform = 'Mac';}
	if (ua.indexOf('OS/2') >= 0) {this.platform = 'OS/2';}
	if (ua.indexOf('X11') >= 0) {this.platform = 'UNIX';}
	var v = this.version;
	var p = this.platform;
	var NS = (this.code == 'NS');
	var IE = (this.code == 'MSIE');
	var WTV = (this.code == 'WebTV');
	var OP32up = ((this.code == 'OP') && (v >= 3.2));
	var IE4up = (IE && (v >= 4));
	var NS3up = (NS && (v >= 3));
	this.canCache = NS3up || IE4up || OP32up || WTV;
	this.canOnMouseOut = this.canCache;
	this.canFocus = NS3up || IE4up || OP32up;
	this.canOnError = NS3up || IE4up || OP32up;
	this.canJSVoid = NS3up || IE4up;
	this.lineByLine = (v < 4);
	this.mustMoveAfterLoad = NS3up || (IE4up && (p != 'Mac')) || WTV;
	if (NS3up || IE4up || WTV) {
		this.reloadMethod = 'replace';
	} else {
		this.reloadMethod =  (NS && (v == 2.01) && (p != 'Win')) ? 'timeout' : 'href';
	}
	this.canFloat = NS || (IE && !((p == 'Mac') && (v >= 4)));
	this.hasDHTML = ((NS || IE) && (v >= 4)) && !(IE && (p == 'Mac') && (v < 4.5));
	this.DHTMLRange = IE ? '.all' : '';
    this.DHTMLStyleObj = IE ? '.style' : '';
	this.DHTMLDivHeight = IE ? '.offsetHeight' : '.clip.height';
}
function getWindow() {return (floatingMode) ? myOpener.top : top.window;}
function setStatus(theText) {
	var theWindow = getWindow();
	if (theWindow) {
		theWindow.status = theText;
		if (theBrowser.canOnMouseOut == false) {
			clearTimeout(statusTimeout);
			statusTimeout = setTimeout('clearStatus()', 5000);
		}
	}
	return true;
}
function clearStatus() {
	var theWindow = getWindow();
	if (theWindow != null) {theWindow.status = '';}
}
function sfOnError(msg, url, lno) {return true;}
function setFocus(f) {
	if (theBrowser.canOnError) {
		var e = window.onerror;
		window.onerror = sfOnError;
	}
	f.focus();
	if (theBrowser.canOnError) {window.onerror = e;}
}
function unloadFloating() {
	if (myOpener != null) {
		if (myOpener.JoustFrameset) {myOpener.setTimeout('menuClosed();', 100);}
	}
}
function getMode() {
	var theMode = getParm(document.cookie, 'mode', ';');
	return ((theMode == "Floating") || (theMode == "NoFrames")) ? theMode : "Frames";
}
function smOnError (msg, url, lno) {
	smCallerWin.onerror = oldErrorHandler;
	if (confirm(smSecurityMsg)) {setTimeout('setMode("' + smNewMode + '");', 100);}
	return true;
}
function smSetCookie(theMode) {
	document.cookie = 'mode=' + theMode + '; path=/';
	if (getMode() != theMode) {
		alert(smCookieMsg);
		return false;
	} else {
		return true;
	}
}
function setMode(theMode, callerWin) {
	smNewMode = theMode
	smCallerWin = (theBrowser.code == 'NS') ? callerWin : window;
	var okToGo = true;
	var currentMode = getMode();
	if (theMode != currentMode) {
		if (currentMode == 'Floating') {
			if (smSetCookie(theMode)) {self.close();}
		} else {
			var dest = '';
			if (theBrowser.canFloat) {
				if ((theMenu.savePage) && (callerWin)) {
					if (theBrowser.canOnError) {
						oldErrorHandler = smCallerWin.onerror;
						smCallerWin.onerror = smOnError;
					}
					var p = theMenu.contentWin().location.pathname;
					if (theBrowser.canOnError) {smCallerWin.onerror = oldErrorHandler;}
					if (p) {
						dest = '?page=' + escape(fixPath(p));
					} else {
						if (!confirm(smSecurityMsg)) {okToGo = false;}
					}
				}
			} else {
				alert(smNoFloat);
				okToGo = false;
			}
			if (okToGo && smSetCookie(theMode)) {
				if (theMode == 'NoFrames') {
					location.href = (index3 == '') ? ((dest == '') ? '/' : dest) : index3;
				} else {
					location.href = index2 + dest;
				}
			}
		}
	}
}
function fixPath(p) {
	return (p.substring(0,2) == '/:') ? p.substring(p.indexOf('/', 2), p.length) : p;
}
function getParm(theStr, parm, delim) {
     // returns value of parm from string
     if (theStr.length == 0) {return '';}
	 var sPos = theStr.indexOf(parm + "=");
     if (sPos == -1) {return '';}
     sPos = sPos + parm.length + 1;
     var ePos = theStr.indexOf(delim, sPos);
     if (ePos == -1) {ePos = theStr.length;}
     return unescape(theStr.substring(sPos, ePos));
}
function pageFromSearch(def, m, selIt) {
	var s = self.location.search;
	if ((s == null) || (s.length < 1)) {return def;}
	var p = getParm(s, 'page', '&');
	p = (p != '') ? fixPath(p) : fixPath(s.substring(1, s.length));
	if (m != null) {
		var e = m.findEntry(p, 'URL');
		if ((e != -1) && selIt) {
			m.setEntry(e, true);
			m.selectEntry(e);
		}
	}
	return p;
}
function loadURLInTop(theURL) {
	var theWindow = getWindow();
	if (theWindow != null) {theWindow.location.href = theURL;}
}
function defOnError(msg, url, lno) {
	if (jsErrorMsg == '') {
		return false;
	} else {
		alert(jsErrorMsg + '.\n\nError: ' + msg + '\nPage: ' + url + '\nLine: ' + lno + '\nBrowser: ' + navigator.userAgent);
		return true;
	}
}
// Declare global variables
var theBrowser = new browserInfo;

var jsErrorMsg = 'A JavaScript error has occurred on this page!  Please note down the ';
jsErrorMsg += 'following information and pass it on to the WebMaster.';
if (theBrowser.canOnError) {window.onerror = defOnError;}

var theMenu = new Menu;
var JoustFrameset = true;
var statusTimeout = 0;
var index1 = 'index.html';
var index2 = 'index2.html';
var index3 = 'index3.html';
var smCallerWin;
var smNewMode;
var oldErrorHandler;
var smNoFloat = 'Sorry, your browser does not support this feature!';
var smCookieMsg = 'You must have Cookies enabled to change the display mode!';
var smSecurityMsg = 'Due to security restrictions imposed by your browser, I cannot ';
smSecurityMsg += 'change modes while a page from another server is being displayed. ';
smSecurityMsg += 'The default home page for this site will be displayed instead.';


var floatingMode = (getMode() == 'Floating');
var myOpener = null;
if (floatingMode == true) {
	if (window.opener) {
		myOpener = window.opener;
		if (myOpener.JoustFrameset) {myOpener.setTimeout('setGlobals();', 100);}
	} else {
		document.cookie = 'mode=Frames; path=/';
		floatingMode = false;
	}
} else {
	if (getMode() != 'Frames') {document.cookie = 'mode=Frames; path=/';}
}

//	############################   End of Joust   ############################

function initOutlineIcons(imgStore) {
//	var ip = 'images/menu/';
//	ip += (theBrowser.platform == 'Mac') ? 'mac/' : ((theBrowser.platform == 'OS/2') ? 'os2/' : 'win/');
	
	var ip = 'img/noimg/';

	imgStore.add('iconPlusTop', ip + 'plustop.gif', 1, 16);
	imgStore.add('iconPlus', ip + 'plus.gif', 1, 16);
	imgStore.add('iconPlusBottom', ip + 'plusbottom.gif', 1, 16);
	imgStore.add('iconPlusOnly', ip + 'plusonly.gif', 1, 16);
	imgStore.add('iconMinusTop', ip + 'minustop.gif', 1, 16);
	imgStore.add('iconMinus', ip + 'minus.gif', 1, 16);
	imgStore.add('iconMinusBottom', ip + 'minusbottom.gif', 1, 16);
	imgStore.add('iconMinusOnly', ip + 'minusonly.gif', 1, 16);
	imgStore.add('iconLine', ip + 'line.gif', 1, 16);
	imgStore.add('iconBlank', ip + 'blank.gif', 1, 16);
	imgStore.add('iconJoinTop', ip + 'jointop.gif', 1, 16);
	imgStore.add('iconJoin', ip + 'join.gif', 1, 16);
	imgStore.add('iconJoinBottom', ip + 'joinbottom.gif', 1, 16);

	//Add folder and document images to the imgStore.
	imgStore.add('Folder', ip + 'folderclosed.gif', 18, 16);
	var di = ip + ((theBrowser.code == 'NS') ? 'document2.gif' : 'document.gif');
	imgStore.add('Document', di, 18, 16);
	imgStore.add('form', 'images/menu/fancy/form.gif', 18, 16);


        imgStore.add('TopFolder', 'img/nem/triangle2.gif', 20, 19);
        imgStore.add('TopFolderSelected', 'img/nem/triangle1.gif', 20, 19);
        imgStore.add('SubFolder', 'img/nem/plus.gif', 20, 19);
        imgStore.add('SubFolderSelected', 'img/nem/minus.gif', 20, 19);
}

function initialise() {
	// Tell joust where to find the various index files it needs
	index1 = 'index.html';
	index2 = 'index2.html';
	index3 = 'index3.html';
	
	// Set up parameters to control menu behaviour
	theMenu.autoScrolling = true;	
	theMenu.modalFolders = true;
	theMenu.linkOnExpand = false;
	theMenu.toggleOnLink = false;
	theMenu.showAllAsLinks = true;
	theMenu.focusOnLink = true;
	theMenu.savePage = true;
	theMenu.tipText = "status";
	theMenu.name = "theMenu";
	theMenu.container = "self.menu";
	theMenu.reverseRef = "parent";
	theMenu.contentFrame = "main";
	theMenu.defaultTarget = "main";
		
	// Initialise all the icons
	initOutlineIcons(theMenu.imgStore);
	
	// Now set up the menu with a whole lot of addMenu and addChild function calls

	createJoustMenu();
}

window.defaultStatus = "";

if (self.name == 'menu') {
  self.location.href = "outliner/menu.html";
} else {
  initialise();
  var thePage = pageFromSearch('start.html', theMenu, true);
}
