Joust Version History

2.5.4 - 13 March 2001

The change made in 2.5.1 to remember any search parameters in when reloading the menu cause strange behaviour (including crashes) in Opera. Fixed.

2.5.3 - 26 January 2001

Fixed error in FindEntry - it was returning 0 every time!

Fixed error in ModalFolders in which closing a folder would cause all folders to be closed.

2.5.2 - 25 January 2001

Arrrrg! Two errors managed to slip into 2.5.1.....

Netscape browsers (before version 6) developed a blank line between each entry. Fixed.

The upgrade instructions for 2.5.1 didn't include instructions for updating the Style Sheet in menu.htm. Missing this may result in strange results for Netscape 6 on some web sites. Documentation updated.

2.5.1 - 22 January 2001

Modified MenuReload to remember any search parameters that are part of the URL for the menu frame.

Updated BrowserInfo so that it correctly identifies Opera when it is pretending to be MSIE.

Removed alert box that popped up with "1" when switching into Frames mode.

Fixed JavaScript error in MenuFindEntry with NS3.

Changed the name of the setType function to setIcon. As this function has not been documented until now, this change should not affect anyone.

Fixed spacing problems with Netscape 6 that resulted in overlapping entries (if larger than the default).

2.5 - 1 December 2000

Added support for the new Netscape 6 and Opera 4 browsers.

Fixed defaultResizeHandler to cope with user going to another site and then hitting "back" (NS sends an onResize event).

Fixed error in setMode that resulted in "page not found" if current page from another server (or savePage set to false).

updated "fixPath" to cope with problems with "file:" URL's in MSIE.

Added "fileFromPath". Might remove this - not really needed.

added call to fixPath to MenuScrollTo to fix lack of scrolling with files.

updated setMode & menuClosed to remember the search parameter when savePage is on.

added support for a URL on entries that have had their outline image suppressed with noOutlineImage.

Fixed problem where Dynamic menus did not correctly scroll after reload.

Fixed problems with return value from custom onClick function not working in some circumstances.

Removed backward compatibility support for search param without "page=". Causes problems if URL contains parameters but not "page="

Added ability to define custom match types for the FindEntry method. Also added a "contains" match type.

SelectEntry will now deselect currently selected entry if passed -1

Replaced LoadURLInTop with LoadURLInTarget. This now copes with any target (with "main" window considered to be the base point of reference).

LinkOnExpand will now work with entries that have a non-default target.

Fixed problem with menu.htm not scrolling to appropriate place after a reload (if DHTML is on).

Added setType method to a menuItem object.

2.4.1 - 5 July 1999

Oh dear. I get more like Microsoft every day! Despite a four week beta test period, the final release still ends up with a couple of JavaScript errors in IE 3. This release fixes them. It's been over a week with no other problem reports so, hopefully, everything else is fine.

2.4 - 28 June 1999

Fixed ToggleOnLink (wasn't working unless an onClick function was also defined)

Discovered that Opera 3.5 & WebTV now supports the "void" function - so they will support ToggleOnLink. Modified BrowserInfo accordingly.

setAllChildren would not work if the first menu entry was not 0 and the function was called with -1 as the parent. Fixed.

CollapseAll on DHTML browsers did not scroll back to the top. Fixed.

Netscape just stops if new Image created with strings in the w & h parameters. Modified imgStoreAdd to convert to numbers with parseInt.

Removed the focusOnLink feature. Browser compatibility and security issues made it unreliable and prone to errors. The code required to try and cope with all the special cases was getting much larger than the could be justified by the value of the feature. Especially since the same thing could be done much more easily with one line of code in the top of each page.

Fixed the limitation preventing the use of toggleOnLink & linkOnExpand at the same time.

Modified onToggle handling to allow the "toggle" to be cancelled by returning false. Side effect of this is that the isopen state is not changed until AFTER the onToggle event has fired.

Modified setMode/menuClosed to restore any search parameters (i.e. Floating mode now remembers any stuff after a "?" in the URL).

Fixed error in MenuRmvChildren in which selectedEntry was not being updated correctly.

Changed mouseover behaviour. If "status" is null, it will display the URL in the status bar.

SelectEntry method will now select any entry (previously it only selected entries with a URL.

Added noOutlineImg option to a menu entry. An entry with noOutlineImg set is drawn as if toggleOnLink is set. This allows a "root" entry.

Added CSSClass property to a menu entry. This allows users to define a custom CLASS for the SPAN of each menu entry.

Made several enhancements to the findEntry method of the Menu object. Added the ability to search on any property of the MenuItem object, added the MatchType parameter to allow partial matches, and added the startPos parameter to allow searches for multiple matches. Also fixed a bug that would cause a JavaScript error if an entry had been deleted.

Fixed error in setEntry method that didn't cope with missing entries (when doing modalFolders).

Added support for multi-line entries with the "multiLine" entry property. Setting theMenu.entry[entryID].multiLine = true; will cause an entry to automatically wrap at the right margin.

Entry height is now calculated on-the-fly instead of using the image height. This means that text-only outlines can be built without needing an image to define the entry height.

Fixed Netscape problem in which image changes would not work if the request came from code in a page in a different directory.

Added scrollTo method the the Menu object.

Added selectParents property to the Menu object.

Added "insert" option to the addEntry and addChild methods.

Added a self-building robots.htm file to the standard package (see TechNote 1 for details).

2.3.7 - 19 February 1999

And I've done it again! Due to doing a copy-and-paste without looking closely at what I was doing I broke menu.htm on Netscape 4.5. Now fixed.

2.3.6 - 18 February 1999

This is turning into a bad week. 2.3.5 broke the scroll bar on Netscape 4.5. Now fixed. Luckily, this one was also spotted before I was able to send out the announcement so not too many people are affected.

2.3.5 - 17 February 1999

Oh dear, a new version already! Due to an error in my version control system, 2.3.4 did not actually contain all the fixes for the Mac version of MSIE 4. This version contains those missing bits. Nothing else new. Once again, thanks to Shawn Grunberger for spotting this so quickly.

2.3.4 - 12 February 1999

The main feature of this version is that I've finally fixed the problems with MSIE 4.0 and 4.5 on the Macintosh. Thanks to Shawn Grunberger for all his help with this.

Added custom JavaScript error handler.

Discovered that WebTV produce an emulator and, unlike other browser developers, they have very detailed documentation about how their browser differs from others. Joust now works with WebTV - well, the emulator anyway.

Fixed hourglass cursor problem on Netscape 4.

DHTML support did not work if "Enable Style Sheets" was turned off in Communicator 4.5 preferences. Modified menu.htm to detect this and change theBrowser.hasDHTML accordingly.

Custom onMouseOver and onMouseOut events didn't work (obviously no one uses them because they haven't worked since they were introduced in October). Fixed.

Fixed "JoustFrameset not defined" error if using Joust as floating menu on a non-Joust site.

Fixed "Access Denied" errors in MSIE if clicking on Folder text when toggleOnLink and showAllAsLinks are both true and the "current" page is from another server.

AutoScrolling didn't work if DHTML support was turned on and the menu reloaded (as opposed to refreshed). Fixed.

Changed the name of the "addMenu" function to "addEntry" (addMenu will still work but may be removed in the future).

Improved the "Selected" image handling. Now, all parents of the currently selected entry will be displayed as selected.

Thanks to a new graphics package, I have been able to save all the images with exact pallets (whilst still keeping the browser-safe colours) making them much smaller. All the Windows menu images now add up to less than 2K (they previously totalled 13K) - which should improve initial load time.

Changed the "packaging". The documentation is now available on-line so it's not included in the standard package. This should make it easier for me to update the documentation without having to release (or wait for) a new version. It should also eliminate the confusion some people had about what was part of Joust and what was just part of the documentation.

2.3.3 - 22 December 1998

2.3.1 added the ability to detect and cope with JavaScript security errors caused by changing modes while a page from another site is displayed. Netscape 4.5 & the latest MS Scripting engines were released at about the same time & they turned out not to be compatible with what I did. Rewrote the whole system to work properly with the latest browsers. Also added user-definable error messages (see the Floating Mode discussion in the documentation for more details).

Fixed security errors in MSIE 4 & 5 caused by the new focusOnLink feature when a displayed page is from another server.

Fixed JScript error in MSIE 4 when closing floating menu in certain circumstances.

Fixed error in initialise that caused DHTML support to be permanently turned off.

Fixed image alignment problem that caused multi-line entries to not draw properly.

Changed the drawing method to lineByLine for all browsers with versions less than 4.

Changed altText property to tipText and added support for the TITLE parameter to do ToolTips on browsers that support it.

Fixed bug that caused the menu to stop responding in Netscape 4 if something was placed in the "menuBottom" DIV and DHTML support was turned off.

Found a way to trick Opera into working.

Added the selectEntry method to the Menu object.

Modified pageFromSearch to take a "menu" parameter and to "select" the appropriate entry as well.

Removed a few instances of "theMenu" still in the Menu and MenuItem objects to improve reusability.

2.3.2 - 22 October 1998

Added Opera to the list of browsers that must draw the menu one line at a time (to avoid it crashing on large menus.

2.3.1 - 22 October 1998

Added ability to detect and cope with JavaScript security errors caused by changing modes while a page from another site is displayed.

Fixed ShowAllAsLinks option which had stopped working in 2.3.

Fixed JavaScript error in Netscape 3 whenever the user clicked on an entry.

Fixed JavaScript error in MSIE 3 whenever the user clicked on an entry.

Clicking on an entry in Opera now does nothing instead of generating an error.

A change made in 2.3 to address problems drawing large menus on 16 bit browsers had the unfortunate side-effect of causing MSIE 4 to draw VERY slowly (as if it isn't slow enough already!). Fixed so that Joust will now pick a drawing method depending on the browser.

2.3 - 9 October 1998

Removed <META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1"> which caused strange refresh problems in Netscape.

Fixed bug that caused errors if you tried to remove the first menu entry and updated rmvChildren to allow removal of all entries.

Fixed those nagging "setBottom not defined" and other strange Netscape errors in menu.htm (I hope).

Added name, container, reverseRef and contentFrame properties to the menu object and various associated code changed to make the menu object more modular - it is now possible to have multiple menus in one window.

Added "hover" pseudo-class to style sheet in menu.htm - allows mouseOver text effects in MSIE 4.

Added altText property to the menu object to allow ToolTips in the newer browsers.

Modified automatic page selection code to use a named parameter (page=) for better compatibility with server-side applications (Note: old method will still work but support may be removed in the future - you should start updating links now).

Added Opera support. Opera still doesn't work properly (cannot update the menu after menu expanded/collapsed). As a workaround, Joust will fully expand the menu for Opera browsers.

16 bit browsers have a limit on the size of strings that can be passed around. This caused problems with large menus. Changed the way the menu is built to reduce the size of strings passed around.

If MSIE 4 is reading from file with autoScrolling turned off, it would still try to scroll. Fixed.

Moved setMode into index.htm and fixed so that it actually takes notice of the savePage option.

Changed onClickFunc to onClick to be more consistent with the JavaScript way of doing things (onClickFunc will still work for now but will be removed in future versions). Added support for custom onMouseOver, onMouseOut and onToggle functions.

Added fixPath function to correct bug in MSIE 4 pathname property when the server port is not 80.

Fixed error in autoScroll calculation in MSIE 4 (actually worked around a bug in MSIE).

Added pageFromSearch and getParm functions.

Fixed several bugs in rmvEntry function.

Fixed error in calculation of the plus/minus icon to use for the first entry if the entry was not also ID 0.

Changed reloadMethod for MSIE 4 to improve performance when DHTML support turned off.

Added code to detect a target of "_top" and treat it as a special case to cope with Floating mode.

2.2.1 - 9 March 1998

Fixed some timing problems that can sometimes generate a "s has no properties" error on Netscape 4.

Updated Dynamic Menu documentation to clear up some confusion.

2.2 - 20 February 1998

Fixed problem that caused an error and stopped the menu being drawn in MSIE 4 on the Macintosh!

Corrected an error in the sample code under the heading "Controlling what Page is Loaded" in the "Miscellaneous" page of the documentation.

Fixed a bug that prevented the menu being updated properly when using Dynamic Menus in Floating mode on MSIE 3.

Fixed a some bugs in the rmvEntry and rmvChildren functions.

Fixed a bug in addMenu that caused an item to be added in the wrong position under certain circumstances.

Slightly improved performance by drawing whole menu in one go instead of a line at a time.

Improved AutoScrolling for MSIE 4 (with DHTML support turned on).

Added the savePage option.

Changed <NOFRAMES> tags in index.html to <NOSCRIPT>. This is to allow support for MSIE 2.1 on a Mac (which seems to be the latest browser that AOL ships for Mac users). MSIE 2.1 does not support JavaScript, so Joust will not work, but it does support frames. The <NOFRAMES> tags were causing these users to see a blank screen.

Moved the functionality of the reload function from menu.htm back into index.htm. This fixed a bug in Netscape 2 that stopped the menu working after 1 mouse click.

Fixed a bug that caused a JavaScript error if you tried to change an image in the imgStore object.

Updated the documentation (thanks to Rodney Copeland fixing up a whole lot of formatting and spelling mistakes for me).

2.1.2 - 18 December 1997

Fixed two bugs in toggleOnLink in non-DHTML browsers. One would cause the menu to stop working altogether after you clicked on a link. The other caused unnecessary redraws when clicking on leaf entries.

theBrowser.canOnMouseOut was not being set correctly for MSIE 4 (would prevent MouseOver images working).

Fixed an error in the sample code under the heading "Controlling what Page is Loaded" in the "Miscellaenous" page of the documentation.

2.1.1 - 16 December 1997

Fixed a bug with expand/collapse all and the findEntry function on Netscape 3 that managed to slip through testing (thanks to Joel Bedard for spotting that one quickly).

2.1.0 - 15 December 97

Fixed a bug that caused the browser to do a "GET Undefined" when the imgStore object was created. This didn't affect the behaviour of Joust at all but added a lot of unnecessary entries to the server log.

Fixed a bug that prevented an image being pre-cached when the imgStore object source was changed.

Added the showAllAsLinks option.

Added the amBusy flag to solve various timing issues with Dynamic Menus.

Added a test to check that cookies are turned on before allowing the user to change mode (otherwise all sorts of strange things happen).

Modified menu.htm to allow you to put stuff below the menu without it appearing under the menu on DHTML browsers. Also added the ability to automatically calculate the height of the stuff above the menu so that you don't have to set the menuTop property.

Added rmvEntry and rmvChildren methods.

Modified setAll to all you to specify a particular menu item and have all entries below it set.

Improved calculation of scroll bar size in Netscape and fixed some assorted positioning anomalies.

Fixed AutoScrolling problem on MSIE 4.

Modified setMode to cope with index3 set to an empty string. This allows Joust to remember the page when switching to and from 'NoFrames' mode.

Moved the initialise and initOutlineIcons functions so that they are outside the Start of Joust ... End Of Joust markers. This should make upgrading easier.

2.0.2 - 29 July 1997

Arrrgggg! The fix I just made for Floating mode on MSIE broke Netscape 3! Now works with both browsers. Also fixed an error in the itemClicked function and one in the help.htm file.

2.0.1 - 24 July 1997

Arrrgggg! Bugs found already! Fixed some problems with Floating mode on MSIE and with automatic redirection on Netscape 4.

2.0 - 22 July 1997

Rewrote the documentation. I think (and hope) it is now much better.

In addition to the changes below, there have been a lot of modifications to the code to make it smaller. This has involved taking advantage of many features of the JavaScript language that allow smaller code. The down side of this is that it makes the code harder to read. But, I decided smaller is more important.

Added support for Dynamic HTML browsers. Dynamic HTML allows me to build an entire menu but only display the bits I want. When the menu needs redrawing I can just hide, show and move things around - which is much faster than reloading the menu (which is what older browsers have to do).

Added support for 'MouseOver' images and 'selected' images. The selected images feature can be used to implement the 'FolderOpen' image that many people have asked for.

Added support for floating menus. This has involved an extra file (index2.htm) and changes to the way the framesets are drawn.

Added the BrowserInfo object which works out the browser type and sets various flags to indicate what features are available.

Added setStatus and clearStatus functions which cope with different browsers (didn't I take them out in the last version? Ah, well, decided they were a good idea after all).

Added linkOnExpand and toggleOnLink properties. These allow you more control over the behaviour of the menu (with properly designed graphics you can do outlines like those on the Netscape Developer site).

Moved the code in positionMenu in menu.htm into the toggle function. This way, when autoScrolling is set, the menu frame is reloaded only once (previously it was being reloaded twice).

Changed the way redraws are done. It is now slightly different for each browser. More complex code but the performance is much better on those browsers that don't require the use of a timeout. Now uses the replace method on browsers that support it to prevent the history being cluttered up with menu.htm entries.

Removed infrequently used parameters from addMenu and addChild functions (isopen, target and onClickFunc). These properties can still be modified directly, when required. This helps to reduce total code size and is less confusing to users.

Replaced the global variable "lastClicked" with a Menu property "lastPMClicked".

Made RefreshMenu a method of the Menu object (now called with theMenu.refresh).

Added imgStore object. This now stores all images, using a name instead of a number, and provides a number of functions that were previously being duplicated in several places.

Removed PreCache function, putting the functionality into the imgStore object.

1.1.1 - 10 June 1997

Changed the toggle function to use reload() if the browser is MSIE 4.0. This is slow (because MSIE insists on reloading from the server instead of from the cache) and it does not support autoScrolling but at least it works (MSIE 4.0 breaks the existing method of redrawing the menu. This is a quick fix. If Microsoft do not fix the problem then I will come up with something better.

1.1 - 10 January 1997

Started introducing temporary variables to store reusable bits of text in an attempt to reduce the total size of the file.

Removed TitleGif and TitleAlt from menu items. It is now the responsibility of the individual pages to set the title frame. The dynamic title frame is part of our Web site rather than a part of Joust and it causes lots of problems for users who don't want a title frame. I put it in Joust originally because it was a last minute addition and it was easier to add it to Joust than to modify every page on our site. I think it also makes more sense for each page to be responsible for setting it's own title than for Joust to be doing it. This means every addMenu and addChild function call needs to be modified to remove the last parameters :-( Sorry.

Reorganised the structure of the code in various places (reordered things, moved code into separate functions, etc.) to try and make it more readable.

Added onClickFunction to the menu items. This lets you specify your own code to be executed in the when the user clicks on a menu entry (i.e. it sets the onClick for the link). I did this after the above change because there are a few places where I wanted Joust to change the title frame (the links to other sites - I can't ask Microsoft to change their VB page just for me).

Removed SetStatus and ClearStatus functions. I decided that trying to cope with the ways that different browser handle the status bar was too much effort than it was worth. Now I just set the status to what I want & if the browser wants to keep it there forever then so be it!

Moved code to reposition the menu (in menu.htm) to an onLoad event - solves problems with NS 3 on some platforms (Mac and UNIX) not displaying images in the menu (resetting the location while a page is loading causes NS to stop loading any images it is still loading).

Replaced the test for JavaScript 1.1 with a test for Netscape 3 before doing image caching. This is because MSIE with the MS Debugger installed thinks it is running JavaScript 1.1 but does not support the Image object.

Turned autoScrolling into an option.

Added the modalFolders option. When a user opens a folder (and modalFolders is turned on), any folders already open will be closed.

Added Parent property to menuItem object so that Joust can ensure that all parent folders of a clicked folder are also open (necessary for modalFolders in outlines more than two levels deep).

If a specific page is opened through the search property, Joust will now open the appropriate folder in the menu.

Added functions setEntry and setEntryByURL to the Menu object. You can call these functions from your own code, if you like, to control the state of the menu (if you do, remember that you will need to reload menu.htm to see the changes).

MSIE with the Script Debugger installed does not like the line
parent.theMenu.draw(self);
in menu.htm. It produces an "Internal Error". There is absolutely no need to pass this parameter at all, so I changed the line to
parent.theMenu.draw();
and modified the appropriate parts of index.html.

1.0.1 - 30 November 1996

Discovered that the eval function causes some versions of Netscape to crash (v2 on Win16 and sometimes on Win95, and I suspect v3 on some UNIX platforms). Removed eval from drawItem function replacing it with an array look up. Also added a timeout to clear the status as some browsers do not do it properly.

1.0 - 1 November 1996

First public use on the Alchemy Web site.

The Joust Outliner