
HOT MENU

Applet Tag Example

<APPLET CODE="hotmenu.class"  CODEBASE="." WIDTH=160  HEIGHT=400 MAYSCRIPT>

<PARAM NAME="AUTHOR"       	VALUE="Virtual_Max ( http://vmax.netfx.com)">
<PARAM NAME="BGCOLOR"          	VALUE="ffffff">
<PARAM NAME="TEXTCOLOR"        	VALUE="000000">
<PARAM NAME="ACTIVECOLOR"      	VALUE="ff0000">
<PARAM NAME="FONT"             	VALUE="Helvetica, 1 ,14">
<PARAM NAME="KEY"              	VALUE="Free Version">
<PARAM NAME="URL"              	VALUE="hotmenu.txt">
<PARAM NAME="STEP"             	VALUE="4">
<PARAM NAME="DELAY"            	VALUE="50">
<PARAM NAME="ONMOUSEOVERDELAY" 	VALUE="300">
<PARAM NAME="LEVELXOFFSET"     	VALUE="25">
<PARAM NAME="AUTOOPEN"         	VALUE="0">
<PARAM NAME="AUTOCLOSE"        	VALUE="false">
</APPLET>

Cut'n'paste above example to your HTML source file with the help of any TEXT 
editor like Notepad. One probably would like to customize size, colors and 
font settings. All you can change is shown in bold in above example, do not 
change anything else. Params shown in GRAY color are optional. 

Parameters

All colors are in hexadecimal format, same as HTML colors are, but without # 
symbol. If you are not sure what hexadecimal colors are, please, use color 
picker from HotButton Applet Wizard page to get the color from table and copy 
color code from text field. 

BGCOLOR 	applet background color 

TEXTCOLOR 	menu items text color in passive state

ACTIVECOLOR 	menu items text color in highlighted state on mouse over item 

FONT 		settings include Font Name: TimesRoman, Helvetica, Courier or
		Dialog 

Font Style 	0-plain, 1-bold ,2-italics, 3-bold italics and font size in 
		pixels

KEY 		registered users should replace the value of this field with
		actual encrypted KEY number for this applet. KEY includes encrypted 
		appletname and URL, so it is unigue for each combination of 
		applet and URL.

AUTOCLOSE 	if true applet will close menu on mouse exit, if omited or
		false applet will open menu on last clicked item on mouse 
		exit, or close menu if no item was clicked.

AUTOOPEN 	contains number of menu item to be shown as opened one on 
		applet start up. This is optional parameter, if omited or if
		it's value="-1" than menu will be remains closed until user 
		moves mouse over it. 

LEXELXOFFSET 	please, read details of text positioning STEP, DELAY and 
		MOUSE OVER DELAY are optional parameters to control applet 
		timing and animation. Step is single frame step in pixels for
		menu sliding control, DELAY is time in milliseconds per 
		animation frame, MOUSE OVER DELAY is the delay time in 
		milliseconds after last mouse move before begining of folder 
		opening or closing. If you don't like that menu live with 
		it's own life you can set ON MOUSE OVERD ELAY parameter to 
		300000 (5 minutes) or more (any other number of milliseconds 
		but not more than 2,000,000,000) In this case folders will be
		opened when user will click on it. 

Menu File

Menu structure defined in separate text file, default name for this file is
hotmenu.txt, but one can redefine the default URL for the menu file with the 
help of optional parameter: 
<PARAM NAME="URL" VALUE="./YourMenuFile.txt"> 

Menu Structure

Menu text file contains simple table style structure. | symbol used as table 
fields separator. Each line of file starts with > symbol, the number of 
spaces before this symbol corresponds to the menu depth level, this symbol 
followed by optional menu item name (text string). Lines which don't starts 
with > character ignored by applet and can be used for comments. Note that 
top level item always should have > character at first position in the string, 
and the second level item should have it on second position and so on. Note 
also that LevelN can't be followed by LevelN+2, in this case there will be no
folder to open at LevelN+1 to show items in LevelN+2. Level depth is 
unlimited, but I hardly can imagine one would use more than 4-5 levels depth. 

level&text  link URL   target  icon_for_closed   icon_for_opened   for_overclosed  for_overopened    textX textY
--------------------------------------------------------------------------------------------------------------------------
>          |         |       |./hmtop.gif       |                |                |                 |     |
 >Folder1  |         | main  |./hm1folder.gif   |./hm1foldero.gif|./hm1folderh.gif|./hm1folderoh.gif| 27  |
  >SubMenu1|         | main  |./hm2folder.gif   |./hm2foldero.gif|./hm2folderh.gif|./hm2folderoh.gif| 50  |
   >Item1  |page1.htm| main  |./hm3file.gif     |                |./hm3fileh.gif  |                 | 73  |
   >Item2  |page2.htm| main  |./hm3file.gif     |                |./hm3fileh.gif  |                 | 73  |
  >SubMenu2|         | main  |./hm2folder.gif   |./hm2foldero.gif|./hm2folderh.gif|./hm2folderoh.gif| 50  |
   >Item1  |page1.htm| main  |./hm3file.gif     |                |./hm3fileh.gif  |                 | 73  |
   >Item2  |page2.htm| main  |./hm3file.gif     |                |./hm3fileh.gif  |                 | 73  |



  >JavaScript|Javascript:javascriptdemo()| |./hm2file.gif |      |./hm2fileh.gif  |                 | 50  |

 >Folder2  |         | main  |./hm1folder.gif   |./hm1foldero.gif|./hm1folderh.gif|./hm1folderoh.gif| 27  |

.... more lines here .....
...and finally last line..

>          |         |       |./hmbot.gif       |                |                |                 |     |


Level&Text filed in table followed by Link URL field. This can be any valid 
URL for file to be opened when user click on the item. Both menu folders and 
menu items can have linked documents. In case you don't need the document to 
be opened this field can be left blank. 

JavaScript support is one more exciting capability of the applet. If URL 
starts with "JavaScript:" than the following statement will be evaluted in 
context of current window(frame) as JavaScript statement. Target field in 
this case wouldn't mean anything, and can be left blank. Note: Not all 
browsers allow applets to use scripts, this option can cause problems with 
visitors who still use archaic ones. This option will work in NN3+ and MIE4+
(with has allowed applet scripting option in preferences) 

Target field can be used with frameset. The meaning of this field is the same
as TARGET attribute in particular <A HREF="some.html" TARGET="windowname">. 
The frameset used in this page 

<FRAMESET COLS="180,*"  >
<FRAME NAME="nav"  SRC="hotmenunav.html" scrolling=no>
<FRAME NAME="main" SRC="hotmenumain.html">
</FRAMESET>

defines two frames with names nav and main, so main used in above menu 
definition .txt file as a target frame name. One can also use predefined 
frame names _top, _parent, _blank and _self 

Icons

There 4 fields with image names for each item. This 4 icons are used for
different states of item. 

Text Positioning

Last two fields in menu definition .txt file is absolute text positioning in
pixels relative to top left corner of icon. Those fields are optional and
can be left blank. in this case text will be vertically centered, x
coordinate will be calculated dX*LevelNumber, i.e. each next level text
will be shifted right dX pixels. Default value of dX = 10, i.e. level 0 text
will be positioned at x=10, level 1 will be positioned at x=20, and so on. 
Default value of level x offset can be redefined with optional parameter 
<PARAM NAME="LEVELXOFFSET" VALUE="25"> 

Controlling from JavaScript

Yes, you can call  one of two public methods from JavaScript, for example if 
user clicks on some link in main page you would like toindicate changing of 
page location also in menu showFolder("foldernumber")  showFolder MatchingURL
("urlstring"); 

But before you would try to use these methods, you need to check that other 
frame exists, that it has an applet in it and  that applet is loaded
successfully. This will help to avoid nasty error JavaScript messages, you 
need to do something like this: 

<script> 
function checkApplet() 
{if(parent) 
 if(parent.nav) 
 if(parent.nav.document) 
 if(parent.nav.document.HOTMENU) 
   {a=parent.nav.document.HOTMENU; 
   if(a!=null) 
      {if(a.ready) 
         {return a;} 
      } 
   } 
 return null; 
} 

function setState(n) 
 {applet=checkApplet() 
  if(applet!=null) applet.showFolder(n) 
 } 
function setURL(url) 
 {applet=checkApplet() 
  if(applet!=null) applet.showFolderMatchingURL(""+url); 
 } 

</script> 

<form onSubmit="setState(this.elements[0].value) ;return false"> 
  <input type=text size=5><input type=Submit value="Change Menu
State"> 
</form> 


showFolder("foldernumber")  expects string containing integer number of 
menuitem

One can try to enter any number in above text field to set menu opened on 
desired item. If you would enter -1 this will close folder, in case you will 
enter too big of a number nothing will happen. 

showFolderMatchingURL("urlstring") one expects string representation of URL. 
Applet will try to find item with URL matching to this url and show this item 
as opened. One can try to click on links above to test this in action 
Features Parameters Highlight Color. If no matching link is found than 
nothing will happen. All above links look like this one: 
<A HREF="some.html" onClick='setURL(this)'>LinkText</a> 

Both methods DON'T open page! It only changes the state of applet.

In above links example link is followed as from 'normal' link click. Your
JavaScript must take care about synchronization of content and menu state. 
