===================================================================
Internet Adventurer - The Internet Suite for OS/2 Warp
13. April 1996
===================================================================

Beta release v0.19.

Copyright (c) 1996, Kim Rasmussen
All rights reserved.

SEE MY WEB PAGE at http://www.belle.dk/kr/ for newest info

===================================================================
                          N O T I C E
===================================================================
This IS a shareware package, and does require a registration fee if
you choose to continue using it after 30 days.  The registration
fee for this product is currently $?? US. As the feature list grows
this price may grow slightly.

NOTE: The price will be set when the initial beta is over, until it
is, Internet Adventurer is free to use. - and yes, I decide when
the inital beta is over :)


===================================================================
                      L E G A L   S T U F F
===================================================================
As usual with shareware, I'm not responsible for any damages you
may suffer by using Internet Adventurer in any form or way. If you
are going to jail because of unpaid huge phone-bills, then it's not
and never will be my problem. Any damages/faults/whatever arising
from the use of Internet Adventurer is entirely you'r own problem.
If you'r harddisk vanish after installing, or your wife leaves you
it's your own problem - got it ?


===================================================================
                     R E Q U I R E M E N T S
===================================================================
Internet Adventurer requires OS/2 Warp, with min 8Mb Memory - it
probably will run on 4Mb, but I wouldn't to it :)
Also, WebExplorer from IBM is required. At least BETA web0814 is
required, you can get the newest from ftp.ibm.net /pub/WebExplorer
You also need to have internet software, at least TCP/IP v3.0 (or what
you're WebExplorer needs) is required.


===================================================================
                  A C K N O W L E D G E M E N T S
===================================================================
I would like to thank all the people in #os/2 and #os2prog who have
helped me with this, especially the ones who have given me sample
code, and tolerated my bugs :)


--------
Contents
--------

1. Contacting the Author (that's me)
2. Current Features List
3. Known Bugs/Workarounds
4. Missing Features / ToDo List
5. Supported IRC Commands
6. REXX Scripts
7. Toolbars
8. Version history


------------------------------------
1. Contacting the Author (that's me)
------------------------------------

You  can contact me in a number  of ways.  Unfortunately, I can't
provide neither a fax or phone number at this time.

Mail:          Kim Rasmussen
               Gartnervang 2C, 3tv
               DK-4000  Roskilde
               Denmark
 
Web:           http://www.belle.dk/kr/

Internet:      kr@belle.dk
           
IRC:           I can usually be found hanging around in #os/2 or #os2prog
               you might even catch me in #inetadv :-)
               My nickname is usually Starlord_, but look for Kim Rasmussen
               in my real-name.

Support:       I can't promise anything, but go to #inetadv on IRC, or mail
               kr@belle.dk, then I'll probably get back to you.

------------------------
2. Current Features List
------------------------

 - IRC (rfc #1459 compliant)

 - CTCP (Client to Client Protocol) commands supported

 - DCC CHAT fully supported (private chat - remember to set your IP address)

 - DCC Multiple concurrent filetransfers are fully supported, both ways

 - Multiple Threads, one per IRC channel

 - Fully multithreaded 32-bit code - no 16-bit code at all

 - No class libraries, uses PM functions directly, for maximum speed

 - Multiple Windows - one window for each channel or for private messages

 - Multiple colors, get a complete overview in seconds, configure strings
   that will be shown with different colors.

 - Configureable fonts and colors

 - WWW support, using WebExplorer's API, to ensure that the newest available
   browser technology is supported. You should even be able to use Internet
   Adventurer with a newer version of WebExplorer (no guaranties though...)

 - Proxy and Socks support for WWW, gopher and FTP

 - You never need to cancel loading of an URL, to begin loading another, you
   just click on the link you want, even if the page you're currently loading
   isn't complete yet.

 - REXX Scripts support, compatible with the GammaTech IRC-Client.

 - Nickname list in channel-windows

 - User Configureable toolbars

 - DLL PlugIn's - support for extending Internet Adventurer with customized
   tools. The entire IRC is written as a PlugIn DLL.


-------------------------
3. Known Bugs/Workarounds
-------------------------
 - To change to font in the nickname list, you have to select setting->fonts
   and press OK. That will update the font in the listbox too.

 - The scroll-bar in the channel-windows doesn't move, this has something to
   do with the way word-wrap works now. I'll change it later.

 - Autodetect hostname does nothing, so you need to enter a hostname.

 - 'Time' is not updated in filetransfers, but always set to 00:00:00


-------------------------------
4. Missing Features / ToDo List
-------------------------------

 - /server command for IRC

 - Connections to multiple IRC servers simultaneously

 - DCC firewall support is almost ready

 - Flood protection to come...

 - A lot of IRC menus currently doesn't do anything, and some need to be
   added. - I'll be reworking the entire menu-system, expect lot's of
   toolbars and stuff. This is already partly complete, but I still need
   to add/remove some stuff.

 - I'll add a quicklist very soon, it will contain entires for both irc
   channels, mailto addresses, www sites, ftp sites and telnet sites.
   You will also be able to group your entries, eg. 'Computer stuff',
   'Fun stuff', 'Gopher holes' etc.

 - Gopher and FTP is currently only supported via the WebExplorer API
   I probably won't touch gopher, but you'l get a beefed up FTP, with support
   for upload/download etc.

 - Telnet isn't supported yet

 - News and Mail isn't supported yet, but I'm beginning to look at news.


-------------------------
5. Supported IRC Commands
-------------------------

In a channel window, if you just write a string, it's sent to that channel
if you put a '/' in front, it's treated as a command.
eg. to get statistics (uptime) from you server, type '/STATS U'

All RFC 1459 commands are supported, just type '/' in front, and whatever
you type will be sent to the IRC server directly (with exceptions)

The exceptions are:

/CTCP <nickname> <command>
   This commands send's a CTCP request <command> to <nickname>
   eg. /CTCP Starlord_ VERSION to get the version of Starlord_'s client.

/DCC CHAT <nickname>
   Ask <nickname> to open a private chat conversation with you. This causes
   Internet Adventurer to open a socket, waiting for a call from the other
   client. Data on this session are NOT sent through the IRC server, and you
   are therefore sure that no IRC-Operators can listen in.

/DCC SEND <nickname> <filename>
   This command is used if you want to send a file to <nickname>.
   This causes Internet Adventurer to open a socket, and wait for a call from
   <nickname>'s client. If <nickname> accepts, he will then connect's to you
   for receiving the file from you.

/ME <text>
/ACT <text>
/ACTION <text>
   Use this command to tell that you're performing an action, if your nickname
   is Starlord_, and you type "/me thinka Internet Adventurer is great", it
   will be displayed to the other people on the channel as:
   "* Starlord_ agrees that Internet Adventurer is great"

/MSG <nickname> <text>
   Uses this command to send a private message to <nickname>, this message
   will not be sent to the channel you're in, but only to the <nickname> you
   specify. If you wan't to be sure that no one can intercept your message,
   you might consider using /DCC <nickname> CHAT instead, to get a true
   private connection.

/LEAVE
   This command causes the window for the current channel to be closed, and
   it leaves the channel - it's the same thing as closing the window by
   double-clicking on it's icon.
   If this command is issued in a DCC Chat window, the chat connection is
   disconnected, and the window is closed.

/SIGNOFF
   If issued in a channel-window, this command causes the connection to the
   server to be closed. The windows will still remain on the screen.
   If issued in a DCC chat window, the DCC connection is closed.

/BEGONE
   This command removes all the windows, and disconnects.

/VERSION <nickname>
/VER <nickname>
   These commands do the same as /CTCP <nickname> VERSION - it ask's
   <nickname> for his version.

/USERINFO <nickname>
   This command does the same as /CTCP <nickname> USERINFO - it ask's
   <nickname> for his userinfo.

/FINGER <nickname>
   This command does the same as /CTCP <nickname> FINGER - it ask's
   <nickname> for his finger info.

/PING <nickname>
   This command does the same as /CTCP <nickname> PING - it ask's <nickname>
   to return the ping response, so the delay between the two clients can be
   measured.

/EXECUTE <command>
   This executes the given command, eg. to put a directory listing into a
   file, you can use "/exec dir >\file.txt".


---------------
6. REXX Scripts
---------------

Yes, I now support REXX scripts. I've tried to make them compatible with
GT-IRC, as far as possible, this means that you are able to run eg. the
IceBerg scripts for enhancing the IRC client.

 --- First, a warning ! ---
REXX scripts can really eat away at your CPU, it can take some performance,
especially for large scripts. I'm currently working on it, to see if I can
speed the performance of the REXX scripts up, but for serious scripting, you
should use the DLL plug-in interface that I'll soon be adding.

They work the following way:

You specify the name of 2 rexx script files, one which is called for every
command typed by the user (outgoing), and one which is called every time
the host sends a line (incoming).

The scripts are called with 3 parameters as follows:

script.cmd <hwnd> <current_nickname> <string>

The <hwnd> must be used when displaying messages, the <current_nickname> is
for the script to use if it want to, and the <string> is either the command
that the user has typed, or the line received from the IRC server.

The script must return an empty string if Internet Adventurer should not
process the command, and a non-empty string if the string should be processed.

There are 4 functions available to the script writer:

IrcRexxDisplay(<text>, <hwnd>)
   This function displayes <text> in the window <hwnd> if <hwnd> is a
   null-string, the text will be displayed in the main irc window.

IrcRexxCommand(<text>, <hwnd>)
   This function let's the rexx script enter a command. This command will be
   processed by Internet Adventurer in the excact same way, as if the user
   typed the command himself. The command will be passed to the script again.
   Note however that playing recursive commands should be avoided, eg. a script
   handling the command "/PLAY" should never send the same command in response
   to a "/PLAY" command.

IrcRexxSend(<text>)
   This function can be used by the cript to send a command directly to the
   server. Internet Adventurer will not do any processing of the command, but
   it will forward it directly to the server.

IrcRexxWildCard(<wildcard>, <string>)
   This function check if a given wildcard matched the string. If a match if
   found, "MATCH" is returned, otherwise "NOMATCH" is returned.


-----------
8. Toolbars
-----------

Internet Adventurer supports user-configureable toolbars. That means that you
can create your own buttons on the toolbars, and assign actions to them.

To change the buttons on a tool-bar, click on it with the right mouse button,
and a menu will appear.

You can then select 'Create item' to create a new button, and a notebook will
appear where you can assign actions to it. Select an action, and enter
eventual parameters for it. After assigning an action, you need to give the
new button a name and/or a bitmap. You can select from a list of built-in
bitmaps, or you can load one from a file.

It is also possible to drag/drop buttons from one toolbar to another.


By default, the following actions exist:

1. About InetAdv
   Parameters: None
   Action:     Pop's up an about-dialog for Internet Adventurer.
         
2. Execute program
   Parameters: Programname, and eventual parameters for the program
   Action:     Starts the selected program with the command
               "start /N <program"
   Example:    To start intercom.cmd, you must set the parameters to:
               "cmd.exe /c intercom.cmd" to call the cmd-shell, and let it
               start the .cmd file.
               To start a .exe file, just type the name of the .exe file in
               the parameter list.
      
3. Open URL
   Parameters: The URL to open
   Action:     This command opens an URL.
   Example:    Set parameters to "settings:irc" to open the settings dialog,
               and to "http://www.belle.dk/kr/" to open my homepage.
               You can also type "mailto:kr@belle.dk" to send a mail to me,
               or even "irc:default" to open an IRC connection with the
               default setup.
               Internet Adventurer will look at the protocol, and decide what
               way to initate the communication.

4. Settings
   Parameters: Notebook Tab Name
   Action:     Opens the settings dialog
   Example:    Set the parameter to "IRC.HOST". Pressing the button, will
               open the settings-notebook, and display the Host page under
               IRC settings.

5. IRC: Connect
   Parameters: None
   Action:     Opens an IRC session to a server, this is actually the same as
               opening an URL called "irc:default"

6. IRC: Join Channel
   Parameters: None
   Action:     Opens the 'Join channel' dialog, and let's up select the channel
               you want to join.

7. IRC: Command
   Parameters: IRC Command
   Action:     Executes the IRC command, just as if it was entered on the
               command-line, eg. "/msg Starlord_ Internet Adventurer is great"
               will send the message "Internet Adventurer is great" to
               Starlord_.

8. IRC: Userlist
   Parameters: None
   Action:     This will display the list of active users in the channel. Note
               that this action only has effect if the window it's issued from
               is an IRC channel-window.

List of URL protocol types currently recognized:

Protocol    Parameter
settings:   <settings-page> (eg. IRC.FONTS)
irc:        <irc-action>    (see explanation)
mailto:     <emailaddr>     (eg. kr@belle.dk)
http:       <http_host>     (eg. www.belle.dk/kr/)
ftp:        <ftp_host>      (eg. hobbes.nmsu.edu)
gopher:     <gopher_host>   (eg. gopher.almaden.ibm.com)
file:       <filename>      (eg. InetAdv.htm)


Explanation of <irc-action> :
The action can be:

1 - default
   This causes a normal connection to be established

2 - #channel
   This causes Internet Adventurer to join the specified channel

3 - /command
   This executes the specified IRC command. The command will be treated as if
   it was entered in the main IRC window.



------------------
8. Version history
------------------

Version 0.11

 - Fixed nickname size bug, now you can only enter 9 char nickname.
 - Fixed bug with "World Wide Web" menu-item only selectable once.
 - When opening a window, it's now in the foreground instead of in the back.
 - Bug resurfaced, private messages were shown with your nickname, and CTCP
   ACTION command was not recognized.
 - CTCP PING command implemented
 - Bug in DCC Filetransfer, the number of received bytes was not set to 0
   before starting receiving a file.
 - Private messages no longer popup in a window automatically, they are now
   displayed in the main IRC window
 - Profile information is now stored in a .ini file, that makes it easier
   to upgrade without hurting the old configuration
 - Autojoin flag for channels added, if set, the channel will automatically
   be joined when connecting.
 - If nickname already exists, I now cut one character from the nick, and try
   again, until it's not rejected.
 - Yes, I now got rid of the MLE's for the channel-window, and I've made my
   own MLE lookalike, with color support.
 - Fixed WWW, so forms work

Version 0.12
 - Scroll-back in channel-windows now possible
 - Additional colors added for nicknames
 - A list of strings can now be configured, when Internet Adventurer sees
   one of these strings, it will change the color, so you'll be alerted.
   This is extremely usefull for eg. inserting nicknames of friends etc.
 - Firewall-settings for DCC is on the way (it doesn't work yet, but the dlg
   is there)
 - Now you can cancel loading a WWW document, and news, proxy and socks
   settings are now possible for the WWW.
 - Reload and back menu's added to WWW window.
 - It's now possible to interrupt loading of a WWW document, by just selecting
   a new link. The current document will then be cancelled, and the new one
   will be loaded.

Version 0.13
 - Fixed trap when messages arrived in a minimized window :(

Version 0.14
 - Now, word-wrap is really word-wrap, lines are no longer cut in the middle
   of a word, but words displayed whole.
 - Font's are now selectable from a standard font dialog box.
 - Colors are now selectable
 - Fixed trap when a command was sent by the server, without a from name
 - Fixed a trap which occured if no inetadv.ini file was present (oops)

Version 0.15
 - Fixed a few spelling mistakes :)
 - Messages to your nickname now goes to the active window, as well as the
   main IRC window
 - Moved the 'Leave Channel' menu into the action menu
 - Fixed an eventual trap, if a DCC CHAT request was refused.
 - Incoming DCC messages were not shown (oops)
 - If the userlist was minimized, and then restored, it would resize wrong.
 - Fixed a bug in the channel-windows, sometimes if the lines were very long
   the window could get obfuscated while scrolling.
 - Previously, the buttom of the chars on the last line couldn't be seen,
   this is now fixed.
 - Command /leave implemented
 - Command /signoff implemented
 - Command /begone implemented

Version 0.16
 - DCC command-line is no longer disabled when not connected.
 - Command /version implemented
 - Command /ver implemented
 - Command /userinfo implemented
 - Fixed bug: Userinfo wasn't sent to the nick asking for it :(
 - Changed "/DCC <nick> <filename" to "/DCC SEND <nick> <filename>", and
   "/DCC <nick> CHAT" to "/DCC CHAT <nick>"
 - /WHO /WHOIS /ISON etc. replies have been beautified a bit, and are now
   also shown in the active window.
 - Command-line scrollback now implemented. Internet Adventurer now remembers
   the last 20 commands you've typed (much like the cmd shell), use arrows
   up/down to scroll in the commands. You can also use ESC to clear the input
   field.
 - Command /finger implemented
 - Command /ping implemented
 - Command /execute implemented (beware of IceBerg's /exec) use this one
   instead
 - Command /clientinfo implemented
 - CTCP responses are now also shown in the active window.
 - Autodetect IP address now works
 - When a partially overlapped channel-window was scrolled, sometimes the
   contents could get corrupted.
 - It's now possible to specify channel-name and password in the join list,
   just type "#channel pass", that should work.
 - Notify list implemented.

Version 0.17
 - Added '***' to a lot of messages, to make it clear where they come from.
 - When other people are joining a channel, their username/hostname is now
   also shown
 - Fixed a _huge_ memory leak - for every line you've typed, I would loose
   513 byte memory :((( This should fix the problem some people have had
   after running it for a long time. Sorry about that one folks :))
 - Fixed problem with using then newer WebEx API's (1.1a and the Java demo)
   they required that I read the display settings, and set them again - I
   didn't have to change them - in order to view text.
 - User-Configureable toolbars have been added to the main InetAdv window.
 - Nickname list has been added to the channel-windows.
 - Context-menu has been added to the nicklist, try selecting a nickname, and
   right-clicking.
 - User-Configureable toolbars have been added to the channel-windows.
 - Mode command is now parsed and displayed.
 - Fixed a trap, if you scrolled up/down when there was 0 lines in the windows
   it would trap.
 - It now beeps when a /msg arrives, I'll put it on an option soon.

Version 0.18
 - When a user got de-opped, it wasn't shown in the nicklist.
 - Fixed bug that caused that /who, /whois and a few other replies was not
   shown in the active window, if the active window was the first one
   created.
 - CTCP Userinfo, and CTCP Finger added to context-menu for nicklist.
 - Channel-names were case sensitive when saving toolbar settings, they are
   now case insensitive.
 - Fixed a big memory leak related to DCC, all bytes received/sent were never
   deallocated, sorry about that one :(
 - UCMENUS.DLL eliminated, I've compiled it into the .exe instead, because
   come people reported problems with ultimail using the same name for a dll.

Version 0.19
 - Fixed a trap, if a /topic response arrived before the channel-wnd was
   created, a sprintf would go haywire :)
 - Fixed toolbars, so if 'Load Default' is selected on the context-menu,
   the correct default menu is restored.
 - The 'Reset Styles' item on the toolbar context-menu didn't work.
 - Major internal changes ! DLL PlugIn's are now supported, IRC is moved to
   it's own DLL, and used the PlugIn API.
 - All settings have been moved to a single notebook
 - Toolbars are now selectable from the keyboard.
 - Oops, intercom wasn't started from the main menu, the parameters
   /C inetadv.cmd were missing from the command-line.
 - Nuke protection implemented.
 - Very long nicknames could get InetAdv to trap.
 - /whois response (msg 311) was not parsed correctly
 - A DCC SEND from someone with a very long filename (>100 bytes) caused a
   trap.
 - If we received multiple JOIN messages from the same channel, more than one
   window for the same channel would be created.
 - WWW moved to it's own DLL, and now supports interface to IRC and settings.
   You can now start IRC from a WWW Link
 - WWW now saves it's window position
 - When a user got kicked from a channel, the nicklist wasn't updated
 - Oops, you could create empty entries in the notify list, but you (almost)
   couldn't delete them again.
 - I finally managed to get the WebEx API to receive files it hasn't any
   viewer for, there were some undocumented messages that I had to use,
   it took a while to debug them and find out what way to use them, but it
   works now, thanks to some help from one of the WebEx developers.
 - You can now double-click on an entry in the join dialog to join the
   channel.
 - I've reworked the settings save a bit, so no matter how InetAdv is closed
   it will save it's window and toolbar settings. NOTE: Positions for
   minimized windows will not be saved !
 - It's now possible to use the cursorkeys, and page up/down in the WWW
   window.
 - I've added some IRC options (like beep on incoming msgs) see them on the
   IRC Options page in the settings notebook.
 - Fixed a but, page up/down in channel-windows didn't always scroll the
   correct number of lines.
 - Added option to start a private window when an incoming /msg arrives.
 - I hopefully fixed the nickname list, on some channels it didn't occur,
   it should work now, but please tell me if it doesn't.
 - Now the REXX functions are not so strict with checking the number of
   parameters, the IceBerg scripts sometimes specify more parameters than
   needed.
