@database "Jabberwocky.guide"
@$VER: Jabberwocky.guide 1.8 (07.02.2009)
$Header: /cvsroot/ajabberwocky/jabberwocky/Docs/Jabberwocky.guide,v 1.28 2010/03/23 00:35:34 paraxenic Exp $

@node "main" "Jabberwocky User Manual"

  Jabberwocky v1.9b1 User Manual
  ============================

  @{"  Introduction          " link "intro"}
  @{"  License               " link "license"}
  @{"  Requirements          " link "reqs"}
  @{"  Installation          " link "install"}

  @{"  Usage                 " link "usage"}
  @{"  Windows               " link "windows"}
  @{"  Menus                 " link "menus"}
  @{"  Configuration         " link "config"}

  @{"  ARexx                 " link "arexx"}
  @{"  Technical Details     " link "tech"}
  @{"  FAQ                   " link "faq"}

  @{"  Compilation           " link "compile"}

  @{"  History               " link "history"}
  @{"  Future                " link "future"}
  @{"  Thanks                " link "thanks"}

 `Twas brillig, and the slithy toves
   Did gyre and gimble in the wabe:
 All mimsy were the borogoves,
   And the mome raths outgrabe.




@endnode


@node "intro" "Introduction"

@{b}@{u}Introduction@{ub}@{uu}

Jabberwocky is a client(user) program designed for use with the Jabber
instant messaging system. Jabber is similar to ICQ and AIM(AOL's instant
messenger) but with notable conceptual differences. It is open source,
absolutely free, simple, fast, extensible, modularized, and cross platform.

Jabber is an instant messaging and presence system that originated in the
open-source community. Jabber continues to be developed and certain
extensions have been added over time. One of the features that
distinguishes the Jabber system from other instant messaging (IM) services
is its open XML protocol. This open XML protocol makes structured,
intelligent messaging possible between human users and between software
applications. Refer to the documentation at http://www.jabber.org for more
information about Jabber.

An instant messaging system like Jabber consists of two major components
commonly referred to as clients(user programs) and hosts(servers). Client
programs like Jabberwocky provide the user interface and Internet
connectivity necessary to send and receive messages via hosts(servers).
The hosts facilitate the exchange of messages and information between
clients.

Most instant messaging systems rely on a single host to maintain
communications between clients. Jabber is a distributed system with
numerous hosts available. Since Jabber hosts are interconnected, all
Jabber users can communicate regardless of the host each is using. Jabber
users are identified by their Jabber IDs which look like
username@servername (similar to email addresses).

Jabber server agents can provide additional services such as user searches,
conferencing and access to news resources. Some server agents (transports)
provide cross messaging with other networks (AIM, ICQ, MSN, IRC, etc), so
you may not need your old chat clients anymore. ;) Because the Jabber
server translates other proprietary protocols through the transport agents,
a client program like Jabberwocky does not even need to be aware of the
protocol differences and can use other networks simply connecting to a
Jabber server. Since many programmers are working on the Jabber server
transports, the transports can be quickly updated in response to changes in
proprietary messaging systems like AIM, ICQ etc. This means that a small
number of Amiga programmers can maintain a highly compatible Jabber IM
client because the hard work of reverse engineering is done by a large
group of mostly Linux programmers.

More information can be found at:

  http://www.jabber.org (user & developer site)

  http://www.xmpp.org (developer site)

@endnode


@node "license" "License"

@{b}@{u}License@{ub}@{uu}

Jabberwocky (Jabber Instant Messenger Client)

Copyright © 2001-2002 Gürer Özen
Copyright © 2002-2007 Jabberwocky Open Source Team

This program is free software; you can redistribute it and/or modify
it under the terms of the @{"GNU General Public License" link "GNU License"} as published by
the Free Software Foundation; either version 2 of the License, or
(at your option) any later version.

This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
GNU General Public License for more details.

You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA

In addition, as a special exception, Tom Parker and Matthias Münch give
permission to link the code of this program with a TCP stack of your
choice, any official MUI libraries or classes and any custom MUI classes
that should be necessary for the operation of this program.  This
exception also gives you permission to distribute linked combinations
including this software with any of the before-mentioned libraries and
classes.  You must obey the GNU General Public License in all respects for
all of the code used other than that provided by the before-mentioned
libraries and classes.  As part of this exception you are obliged to
follow the license terms of the before-mentioned libraries, this license
does not compel you to follow those terms, but if you do not then you may
not link with those libraries.  If you modify this file, you may extend
this exception to your version of the file, but you are not obligated to
do so.  If you do not wish to do so, delete this exception statement from
your version.

@endnode


@node "reqs" "Requirements"

@{b}@{u}Requirements@{ub}@{uu}

* AmigaOS 3.x, AmigaOS 4.x or MorphOS
* TCP/IP stack (Genesis, RoadShow, MOSNet, Miami 2.0+ or MiamiDx)
* MUI 3.8 or higher
* Mailtext.mcc 19.8+ (MUI Class)
* NList.mcc 19.97+ (MUI Class)
* NFloattext.mcc 19.46+ (MUI Class)
* Textinput.mcc (MUI Class)
* BetterString.mcc 11.16+ (MUI Class)
* OpenURL library

Note: Current NList releases contain NFloattext.mcc which should
      be installed with the other NList classes. Mixing NList
      classes from different NList releases could cause unreliable
      operation of Jabberwocky and other programs.

@endnode


@node "install" "Installation"

@{b}@{u}Installation@{ub}@{uu}

@{b}@{i}Installing Jabberwocky:@{ub}@{ui}

Copy the Jabberwocky drawer to any disk drive or drawer you want. The files
listed in the @{"Requirements" link "reqs"} section must be installed for Jabberwocky to
work properly. If you want to use another language for the Jabberwocky
context sensitive "Help" system and there is a Jabberwocky Amigaguide
included for that language, delete the "Jabberwocky.guide" file in the
docs directory and rename your selected Amigaguide as "Jabberwocky.guide."

Jabberwocky will write configuration and log files into its start-up
directory, so deleting it's directory is sufficient for uninstallation.

If you have a Jabberwocky distribution that includes versions for more than
one Amiga platform (OS3, MOS, OS4) you can delete the unnecessary ones and
rename the remaining version as "Jabberwocky." As of version 1.6, combined
distributions will have the AmigaOS3 version named "Jabberwocky", the
MorphOS version named "Jabberwocky.morphos" and the AmigaOS4 version named
"Jabberwocky.os4".

@{b}@{i}Jabberwocky Directory Structure:@{ub}@{ui}

@{b}Jabberwocky ----------@{ub} Contains the Jabberwocky program  with icons
                       (.info). After the program has been used for
                       the first time, the account and prefs files are
                       saved in the main directory.
                         Jabberwocky
                         Jabberwocky.info
                         Jabberwocky.xml (Preferences)
                         Account.xml (JabberID and Password)

@{b}Jabberwocky/ARexx ----@{ub} Contains an example Jabberwocky @{"ARexx" link "arexx"} script and
                       user supplied ARexx scripts.

@{b}Jabberwocky/Catalogs -@{ub} Contains the Jabberwocky localization files
                       for languages other than English.

@{b}Jabberwocky/Docs -----@{ub} Contains the Jabberwocky documentation files.
                         Jabberwocky.guide
                         Jabberwocky.guide.info

@{b}Jabberwocky/Icons ----@{ub} Contains user contributed alternate program
                       icons and the icons that Jabberwocky will use for
                       iconification.
                         Jabberwocky_online.info (Online iconification)
                         Jabberwocky_offline.info (Offline iconification)

@{b}Jabberwocky/Images ---@{ub} Contains user created alternative roster @{"images" link "images"}
                       that will be loaded when Jabberwocky starts.

@{b}Jabberwocky/Sounds ---@{ub} Contains the sounds selected in Jabberwocky
                       Preferences/Events for various program @{"events" link "events"} such
                       "Startup" and "Exit". See the @{"preferences" link "window-prefs"} section
                       for details about setting Jabberwocky event sounds.

@endnode


@node "usage" "Usage"

@{b}@{u}Using Jabberwocky@{uu}

  @{" Preparation           " link "prep"} - Information needed to use Jabberwocky.

  @{" Getting Started       " link "starting"} - Starting Jabberwocky for the first time.

  @{" Adding Contacts       " link "contacts"} - Adding other users to your roster (buddy list).

  @{" Messages              " link "messages"} - Sending and receiving messages.

  @{" Chatting              " link "chat"} - Chatting with other users.

  @{" Jabber User Directory " link "directory"} - Finding other Jabber users.

  @{" Jabber Transports     " link "transports"} - Accessing other Instant Messaging platforms.

  @{" Jabber Conferencing   " link "conference"} - Chatting with multiple users simultaneously.

  @{" Other Jabber Services " link "misc_agents"} - Using other Jabber services.
@{ub}
@endnode


@node "prep" "Preparation"

@{b}@{u}Preparation@{ub}@{uu}

If you've never used the Jabber instant messaging system you will need to
select a Jabber server(host) before starting Jabberwocky. If you haven't
already selected a Jabber server you can use "Jabber.org" or "Jabber.com."
A list of public Jabber servers can be found on the Internet at
http://www.jabber.org/user/publicservers.shtml. The server name will be
part of your @{"JabberID" link "jabberID"}.

You will also need to select a username for your JabberID. If the username
you select is already in use on the server you select, your account
registration will be rejected and you will need to try again with a
different username. Most common names will already be in use so try to
select unique username.

A username can be up to 255 characters in length and cannot contain spaces,
tabs, newlines or carriage returns. The characters : @ / " ' are not
allowed in a username. No ASCII characters under 33 (decimal) or control
characters are permitted either. Although the Jabber instant messaging
system supports the use of Unicode and national characters are allowed in
a JabberID, Jabberwocky support for national characters is untested. If you
want to use characters not in the normal US-ASCII set, you can try it, but
the result may not be what you are expecting.

@endnode


@node "starting" "Getting Started"

@{b}@{u}Getting Started:@{ub}@{uu}

Start Jabberwocky by double clicking the Jabberwocky icon. Once the program
starts, context sensitive help is available and can be activated by
pressing the "Help" key on the keyboard.

If Jabberwocky is being started for the first time, an @{"account window" link "window-login"} will
open. Enter a @{"JabberID" link "jabberID"} (username@servername) and a password into the string
gadgets. If you don't want to reenter your JabberID and Password each time
you use Jabberwocky, be sure to click on the "Remember Password" gadget.
Click on the register gadget and watch the @{"main window" link "window-main"} when it opens.
Below the window dragbar you should see the status message "Connecting..."
until an Internet connection is established. Once the connection is
established you will see the status message "Registering..." until your
Jabber account is registered. When you see the "Online" status message you
will be ready to begin using Jabberwocky. Refer to the @{"Status Messages" link "status"}
section if you do not receive the "Online" message. If you see the status
message "Registration failed!" then the username you selected is probably
in use and you will need to enter a different username and try again. You
may also receive a welcome message when you first register with a server.
If a new entry appears in the main window when you register simply
double-click the entry, read the welcome message and close the window.

If you have already established a Jabber account the @{"main window" link "window-main"} will open
when you start Jabberwocky. Click on the Connect gadget and wait until you
see the "Online" status message below the window dragbar. Refer to the
@{"Status Messages" link "status"} section if Jabberwocky doesn't connect properly and
display the "Online" status message. Once the "Online" status message
appears you can begin adding contacts and sending messages.

@endnode


@node "contacts" "Adding Contacts"

@{b}@{u}Adding Contacts@{ub}@{uu}

The Jabber server maintains a list of contacts, referred to as a @{"roster" link "roster"},
that is loaded into Jabberwocky when you connect. The entries in the Jabber
roster are displayed in Jabberwocky's @{"main window" link "window-main"} and can appear there as
a JabberID or as a name if you entered a name when you added the contact.
Contacts are added by selecting the "Roster/Add Contact" menu item. When
you select that menu the @{"Add Contact window" link "window-contact"} will open allowing you to
enter the information necessary to add a contact to your Jabber roster. The
Add Contact window contains three string gadgets labeled "Jabber ID",
"Name" and "Greeting." Only a @{"JabberID" link "jabberID"} entry is @{u}required@{uu} to add a contact
to your Jabber roster. The remaining entries are optional but helpful.

A typical Jabber contact would have a JabberID like 'brillig@jabber.org'
(username@server_name). Adding a contact through a server @{"agent" link "agents"} requires a
slightly different JabberID of userid@agent_name and can only be added
after the applicable agent has been @{"registered" link "register"} and added to your Jabber
roster. For example, an ICQ contact would have a JabberID like
1234567@icq.jabber.org (icq_number@icq_agent_name).

If you don't enter a "Name" in the Add Contact window then that contact
will appear in your roster as a JabberID instead of as a proper name like
Tom, Jim etc. If you enter a "Greeting" it will appear in the @{"subscription" link "subscription"}
request at the destination. When you select the "Subscribe" gadget a new
entry will appear in the main window and a subscription request will be
sent to the contact you are adding. If the new contact accepts your
subscription request, a @{"presence" link "presence"} icon will appear beside his entry in your
roster. The presence icon lets you know when the contact is online and
available to receive messages. If the contact rejects your subscription
request only his name or JabberID will be visible in your roster. Usually,
a new contact will accept and send a subscription request to you. When the
request is received the @{"Subscription Requests window" link "window-subscriptions"} will open and you can
either "Accept" or "Reject" the subscription using the gadgets at the
bottom of the window. Accepting the subscription will allow your new
contact to know when you are online and available.

@endnode


@node "messages" "Jabber Messages"

@{b}@{u}Messages@{ub}@{uu}

Sending and receiving messages with Jabberwocky is simple. When you receive
a message from someone in your roster the presence icon for that entry will
change to a message icon. If you receive a message from someone who is not
in your roster, a temporary roster entry will appear with a message icon in
front of the entry. <Shift>double-click on the entry with a message icon or
select the "Roster/Read Message" menu item and a @{"Read messages" link "window-readmsg"} window will
open. The window will display the address of the sender, the thread and the
text of the message. If other messages are received while the read messages
window is open, select the "Next" gadget to read the new messages. Select
the "Previous" gadget to return to a previously received message. You can
respond to the message by selecting the "Write" or "Reply" gadgets. The
"Reply" gadget will open a @{"Write message" link "window-writemsg"} window with the received text
quoted at the top of the message edit area. Both gadgets will open the
Write message window with the address and thread already entered in the
appropriate string gadgets at the top of the window. In both cases just
enter your message in the message edit area and select the "Send" gadget.

There are two ways to send a new message. If the intended recipient is in
your roster then <Shift>double-click the appropriate roster entry and a
@{"Write message" link "window-writemsg"} window will open with a JabberID already entered in the "To"
string gadget. Otherwise, select the "Roster/Write Message" menu item to
open the write message and enter a JabberID in the "To" string gadget. An
entry in the "Thread" string gadget is optional but will help keep track
of your messages if you are exchanging messages with more than one person.
Enter your message in the message edit area and select the "Send" gadget.

If the recipient is offline(unavailable) your message will be queued on
the Jabber server and delivered when the intended recipient returns
online. The amount of time that the message will be held varies from
server to server, so there is no guarantee the message will be received
if the recipient is not online(available) when you send the message.

@endnode


@node "chat" "Jabber Chat"

@{b}@{u}Chat@{ub}@{uu}

Jabber messages are a good way to establish initial contact with another
user but 'chat' mode is more convenient for carrying on a conversation.
You can conduct a 'chat' session with another user by double-clicking on
a contact in your @{"roster" link "roster"} or by clicking on a contact and selecting the
"Roster/Chat" menu item to open a @{"chat window" link "window-chat"}.  When you enter text in the
string gadget at the bottom of the chat window and hit the <Return> key,
the line of text is sent to the user listed at the top of of the window. A
chat window will automatically open when a chat message is received so you
can read the message and reply.

The listview in the chat window displays both sides of the conversation and
allows you to scroll back through previous messages. Select the "Flush"
gadget at the top of the window to clear previous messages from the
listview. You can conduct several chat conversations at once by clicking
on other contacts in your roster and opening additional chat windows. Each
window will only display the messages from the user listed at the top of
the window. When you have finished a conversation, simply close the chat
window.

@endnode


@node "directory" "Jabber User Directory"

@{u}@{b}Jabber User Directory@{ub}@{uu}

The Jabber User Directory (JUD) is a directory service that provides storage
and query facilities for user information. You can use the JUD @{"agent" link "agents"} to
search for users you would like to contact. However, a user you search for
must be registered with a JUD to be found. Most Jabber hosts offer JUD
services to search for users of that particular server, while some offer
multiple JUD services for searching across numerous Jabber servers.

You can access the JUD services on your Jabber server by selecting the
"Windows/Agents List" menu item to open the @{"Agents List" link "window-agents"} window. The names
used to identify JUD agents varies from server to server but will usually
contain the words "User Directory." Click on a JUD agent in the listview
and select the "Register" gadget to add your user information to the JUD or
select the "Search" gadget to search for another user. Selecting either
gadget will open a window for entering user information like name, email
and nickname.

If you are registering, then enter the requested information and select the
"Register" gadget at the bottom of the window or select "Cancel" to close
the window and cancel the registration. If you select "Register" your user
information will be sent to the server and other users will be able to find
you by searching the JUD.

If you are searching, then enter the requested information and select the
"Search" gadget at the bottom of the window or select "Cancel" to close the
window and cancel the search. If you select "Search" the data you entered
will be sent to the server and the JUD will search for any registered users
matching the criteria you entered. If any matches are found the results
will be displayed in the @{"Search Results" link "window-searchresult"} window and you can then add the
matching user to your @{"roster" link "roster"}.

@endnode


@node "transports" "Jabber Transports"

@{u}@{b}Jabber Transports:@{uu}@{ub}

Jabber users can communicate with users of other instant messaging (IM)
systems through special Jabber @{"agents" link "agents"} referred to as 'Transports'. Jabber
transports act as gateways to other IM platforms by translating Jabber XML
protocols to the protocols utilized by those systems. Currently, transports
are available for communicating with users of AIM, ICQ, MSN, IRC and Yahoo!
messaging systems. Since other IM networks use proprietary addressing
schemes and unique passwords, it is usually necessary for Jabber users to
have a username and password for another IM system before using a Jabber
transport to access that system. For example, in order to use an ICQ
transport you must already have an ICQ UIN(user ID number) and password.
Fortunately, usernames and passwords for most IM systems can be obtained
from a WEB site associated with that platform. (AOL.com ICQ.com Yahoo!.com)

Before you can use a transport you must register by selecting the "Windows/
Agents List" menu item to open the @{"Agents List window" link "window-agents"}. Click on the
transport you want to @{"register" link "register"} and select the "Register" gadget at the
bottom of the window. If the transport is available, Jabberwocky will open
a request window and display a brief description of the required entries.
Enter the necessary information and select the "Register" gadget at the
bottom of the window.

Transport Specific Requirements:

ICQ - You will need a UIN (User ID number) and password to register with an
      ICQ transport. After you have registered, ICQ contacts can be added
      by entering a @{"Jabber ID" link "jabberID"} in the @{"Add Contacts" link "window-contact"} window using a special
      format: UIN@agent_name where 'agent_name' is a name for the ICQ
      transport with a Jabber servername appended (icq.servername). For
      example, a Jabber ID for adding an ICQ contact at the jabber.org
      server would look like "12345678@icq.jabber.org".

AIM - You will need an AOL ScreenName and password to register with an
      AIM transport. After you have registered, AIM contacts can be added
      by entering a Jabber ID in the "Add Contacts" window using a special
      format: ScreenName@agent_name where 'agent_name' is a name for the
      AIM transport with a Jabber servername appended (aim.servername).
      For example, a Jabber ID for adding an AIM contact at the jabber.org
      server would look like "gimble@aim.jabber.org".

Yahoo-You will need a Yahoo! ID and password to register with a Yahoo
      transport. After you have registered, Yahoo contacts can be added
      by entering a @{"Jabber ID" link "jabberID"} in the @{"Add Contacts" link "window-contact"} window using a special
      format: Yahoo_ID@agent_name where 'agent_name' is a name for the
      Yahoo transport with a Jabber servername appended (yahoo.servername).
      For example, a Jabber ID for adding a Yahoo contact at the jabber.org
      server would look like "borogoves@yahoo.jabber.org".

MSN - You will need an MSN account and password to register with an MSN
      transport. After you have registered, MSN contacts can be added by
      entering a Jabber ID in the "Add Contacts" window using a special
      format: account@agent_name where 'agent_name' is a name for the MSN
      transport with a Jabber servername appended (msn.servername). An MSN
      account name is usually an email address such as "name@passport.com"
      or "name@earthlink.com". Since an MSN account already contains an '@'
      character (name@passport.com), you must "escape" the '@' by
      substituting the '%' character to avoid creating an invalid JabberID.
      For example, a Jabber ID for adding an MSN contact at the jabber.org
      server would look like "momeraths%passport.com@msn.jabber.org" or
      "tom%earthlink.com@msn.jabber.org".

@endnode


@node "conference" "Jabber Conferencing"

@{b}@{u}Jabber Conferencing@{ub}@{uu}

Most Jabber servers provide at least one Jabber conferencing @{"agent" link "agents"}. Jabber
Conference agents facilitate simultaneous 'chat' type messaging among
multiple users in a groupchat environment similar to "Internet Relay Chat"
(IRC). All participants in a conference, or groupchat, receive all the
messages sent to the conference and are identified by a custom nickname
instead of the usual Jabber ID. Most client programs employ a special
conferencing window that displays a nickname beside each received message
to identify the sender and maintains a list of conference participants.

It isn't necessary to register conference agents. Conference agents are
simply invoked by addressing the agent by it's @{"Jabber ID" link "jabberID"} when you join.
Some conference agents are private and can only be joined by invitation,
while others are public and accessible to all Jabber users. Conference
agents support multiple conferences referred to as 'rooms' or 'groups'
which are addressed and joined individually. Each Jabber server usually
maintains some permanent conference rooms (groups) for the discussion of
specific topics. For instance, Jabber.org keeps conference rooms open for
several Jabber client programs so users can join and discuss issues related
to a particular program. Most rooms are transient and are closed after the
last user leaves the conference. Rooms are created when a user joins a
conference room that does not yet exist.

Before you can use a conferencing agent you need to know the @{"Jabber ID" link "jabberID"}
(agent_name) for that agent. Since Jabberwocky does not display a Jabber ID
for the agents in the @{"Agents List" link "window-agents"} window, you may need to ask another user
for the conference agent names for your server. The Jabber ID for a
conference room has the format: conference_room@agent_name where agent_name
is a name for the conference agent with a Jabber servername appended
(room@conference.servername e.g. users@conf.jabber.org).

You can participate in a conference with Jabberwocky by selecting the
"Windows/New Conference" menu item to open a @{"Jabber Conference window" link "window-conference"}.
Jabberwocky automatically uses the 'username' part of your Jabber ID as
your nickname for conferences and displays the nickname to the left of the
string gadget at the bottom of the conference window. Enter the command
"/join", followed by a conference Jabber ID, in the string gadget to the
right of your nickname to start or join a conference. For example, if you
enter "/join jwocky@conference.jabber.org" a new conference room named
'jwocky' will be opened. Other users can then join that room and conduct a
'groupchat' style conference.

Any text that you enter to the right of your nickname will be sent to all
conference participants. Messages sent by the other participating users
will be displayed with the sender's nickname in the left listview. Users
that join the conference will be listed in the right listview. Text entered
in the top string gadget (Topic) will be sent to the other users and change the
conference 'Topic' displayed in their programs. When you are ready to leave
the conference enter the "/part" command in the bottom string gadget.

@endnode


@node "misc_agents" "Miscellaneous Jabber Agents"

@{b}@{u}Miscellaneous Jabber Agents@{ub}@{uu}

SMS - The SMS @{"agent" link "agents"} provides an interface to "Short Messaging Services"
      (SMS) devices such as mobile phones and pagers. Currently the only
      SMS agent we are aware of (the one that is part of the ICQv7-t
      transport) does not need to be registered seperately. Once you have
      registered with the ICQ agent, you can simply add SMS contacts to
      your roster if your Jabber server has an SMS agent. When you send a
      message to an SMS contact, the message will be received from a
      special phone number and any replies will be routed back to you
      through the same phone number.

      The SMS service does not always work, sometimes you message is lost,
      other times replies are lost. This is an issue with the ICQ SMS
      service and the mobile phone companies, not with jabberwocky. The
      ICQv7-t transport provides the SMS services of the official ICQ
      servers. The SMS service of this agent should behave in a similar
      way to the SMS service in the windows ICQ client.

      No signature is added when you send a message to someone's cell phone.
      The recipient will likely have no idea who sent the message, so you
      should mention your name to avoid confusion. Long messages may be
      split into pieces and sent seperately, or truncated (without any
      warning to you or the recipient) or lost completely.

      SMS contacts can be added to your roster by entering a @{"Jabber ID" link "jabberID"}
      in the @{"Add Contacts" link "window-contact"} window using the format: mobile_number@agent_name.
      The 'mobile_number' is in the form (state_code)(area_code)(...);
      e.g. for the number '+7 910 XXX XX XX', the 'mobile_number' would be
      7910XXXXXXX (without the '+' sign). The 'agent_name' is the name of
      the SMS transport with a Jabber servername appended (sms.servername).
      For example, a Jabber ID for adding an SMS contact at the jabber.org
      server would look like "79103456789@sms.jabber.org".

RSS - RDF (Resource Description Framework) Site Summary or Really Simple
      Syndication.

SMTP- The SMPT agent relays email messages to a Jabber user.

@endnode


@node "windows" "Windows"

@{b}@{u}Jabberwocky Windows@{ub}@{uu}

Jabberwocky uses standard Amiga windows to interface with the user.
Most are resizable and contain the standard Close, Zoom and Resize gadgets.
Selecting the Jabberwocky/Hide menu item will iconify all the open windows.

  @{" Main Window                  " link "window-main"}

  @{" Account Window               " link "window-login"}

  @{" Add Contact Window           " link "window-contact"}

  @{" Subscription Requests Window " link "window-subscriptions"}

  @{" Read Messages Window         " link "window-readmsg"}

  @{" Write Message Window         " link "window-writemsg"}

  @{" Chat Window                  " link "window-chat"}

  @{" Jabber Conference Window     " link "window-conference"}

  @{" Information Window           " link "window-info"}

  @{" Preferences Window           " link "window-prefs"}

  @{" Send File Window             " link "window-sendfile"}

  @{" File Transfers Window        " link "window-filetrans"}

  @{" Console Window               " link "window-console"}

  @{" Agents List Window           " link "window-agents"}

  @{" Search Window                " link "window-search"}

  @{" Search Results Window        " link "window-searchresult"}

  @{" Registration Window          " link "window-register"}

@endnode


@node "window-main" "Main Window"
@toc "windows"

@{b}@{u}Main Window@{ub}@{uu}

Once you have registered an account and saved the account information, the
main window will open whenever you double-click the Jabberwocky icon.
The main window is the primary interface for all user transactions.

The main window will open with the "Roster" tab selected and display a list
of all your Jabber contacts, referred to as a @{"roster" link "roster"}. The availability
(@{"presence" link "presence"}) information for contacts in the roster is displayed in the form
of an icon that  appears to the left of each subscribed contact. The
presence icon is replaced by a message icon when a message is received from
that contact. The @{"subscription" link "subscription"} status of each contact is indicated by the
text style (@{b}bold@{ub}, @{i}italic@{ui}, normal) applied to that entry in the roster. A
scrollbar on the right side of the window allows you to scroll through your
roster if the length of the list exceeds the height of the window.

The "Presence" tab displays two gadgets used to control availability (@{"presence" link "presence"})
status messages. The editor gadget labeled "Note" is used to add an optional
status message to your availability status. The "Clear Note" gadget erases the
availability status message. When you change your status with the Cycle gadget
located below the tabs, Jabberwocky sends the new availability status and
message to the Jabber server. That information is then relayed to all of the
contacts in your roster.

There are three gadgets at the bottom of the window used to connect, disconnect
and send availability changes. The Cycle gadget lets you select one of 5
availability settings:
  * - Online
  * - Free For Chat
  * - Away
  * - Extended Away
  * - Do Not Disturb

NOTE: Detailed availability and status messages can be viewed by clicking
      an entry in the roster and selecting the "Roster/Information" menu.

The main window has 7 primary gadgets:

Status ------------ Displays status of the connection and errors.
Roster(Tab) ------- Displays your Jabber roster with availability,
                    subscription and message indications.
                    Double click on an entry to read or write messages.
Presence(Tab) ----- Used to control presence information sent to the
                    contacts listed in you Jabber roster.
  Presence(Note) -- Enter a note concerning your availability (optional).
  Presence(Clear) - Erases messages entered in the Note gadget.
Presence(Cycle) --- Click to change your availability status.
Connect ----------- Select to connect to a server where you have already
                    registered an account.
Disconnect--------- Select to disconnect and go offline.

* Both the "Roster" and "Presence" tabs contain scrollbars and scroll
  arrows used to display text that is outside the current viewing area.

@endnode


@node "window-login" "Account Window"
@toc "windows"

@{b}@{u}Account Window@{ub}@{uu}

The account window is the first thing you will see the first time you run
Jabberwocky. Before you can go online and begin using Jabberwocky you must
provide the information necessary to connect to a Jabber host(server) and
identify you within the Jabber instant messaging system. An account must be
established with the server you select in a process referred to as
"registration." Once you are registered with a server and the account
information is saved, Jabberwocky will open the main window when started.
The account window is available by selecting the "Jabberwocky/Account" menu
item if you want to connect to a different server.

The account window contains two string gadgets for entering the information
necessary to register and connect to a Jabber server. The "Save" (As Default
Account) gadget in the account window allows you to save the account information
so you don't have to reenter the information each time you start Jabberwocky.

The account window contains 7 main gadgets & 5 gadgets in a Popup window:

Your Jabber ID ------- Enter a @{"Jabber ID" link "jabberID"} in the form user@server or
                       user@server/resource.
(Popup button) ------- Select to open a listview for managing multiple Jabber
                       accounts.
  Listview ----------- Displays any additional accounts that have been added.
                       Double-click on an account in the list to copy it to the
                       text input gadgets in the account window.
  Add ---------------- Select to add the contents (account) of the account
                       window text gadgets to the listview.
  Delete ------------- Remove a highlighted (single-clicked) account from the
                       listview.
  Save --------------- Select to save the accounts contained in the listview to
                       the Jabberwocky accounts file (account.xml).
  Close -------------- Select to close the popup.
Your Password -------- Enter a password with at least six characters.
Save (As Default...) - Select to save your account information.
Connect -------------- Select to connect to a server where you have already
                       registered an account.
Register ------------- Select to register a new account at a server.
Cancel --------------- Select to cancel the operation and close the window.

Jabber IDs have three parts:

user@server/resource

user:     Your username at the server.

server:   Domain name of your server. You can find a list of servers
          at http://www.jabber.org/user/publicservers.shtml

resource: Optional string for representing your connection.
          If not entered, the default resource "Jabberwocky" is used. You
          can have different connections to the same account with different
          resources. That's handy for running different Jabber applications
          within one account at the same time.

Examples: madcat@jabber.org  stsmith@jabber.at

@endnode


@node "window-contact" "Add Contact Window"
@toc "windows"

@{b}@{u}Add Contact Window@{ub}@{uu}

This window will open when you select the "Roster/Add Contact" menu item
and allows you to enter the information necessary to add a new contact to
your @{"roster" link "roster"}. The Add Contact window contains three string gadgets for
entering the data used to establish a new contact. An entry in the
@{"Jabber ID" link "jabberID"} gadget is necessary to establish a new contact. Entries in the
"Name" and "Greeting" gadgets are optional. However, if you don't enter
anything in the "Name" gadget the JabberID for the new contact will appear
in your roster instead of a proper name. An entry in the "Greeting" gadget
will appear in the @{"subscription" link "subscription"} request sent to the new contact.

The Add Contact window contains 5 gadgets:

Jabber ID --- Enter a @{"Jabber ID" link "jabberID"} in the form user@server.
Name -------- Enter a name for the new contact (Warren, Roger, Jason etc.)
Greeting ---- Enter a greeting that will be displayed in the subscription
              request window at the destination.
Subscribe --- Select to send the subscription request.
Cancel ------ Select to cancel the operation.

@endnode


@node "window-subscriptions" "Subscription Requests Window"
@toc "windows"

@{b}@{u}Subscription Requests Window@{ub}@{uu}

This window can be opened by selecting the "Windows/Subscriptions" menu
item. The Subscription Requests window will automatically open when you
receive a @{"subscription" link "subscription"} request from another user. It will also open
automatically after Jabberwocky connects if there are any outstanding
subscription requests. You can accept a subscription by clicking on the
request shown in the listview and selecting the "Accept" gadget. A request
can be denied by clicking on it and selecting the "Reject" gadget. Both
options will clear the request from your roster so that it doesn't reappear
each time you connect.

The subscription requests window contains 4 main gadgets:

Requests (Listview) - Displays a list of outstanding subscription requests.
                      Click on a request and select an action gadget to
                      respond and clear it from the list.
Accept -------------- Select to accept a subscription request.
Accept & Subscribe -- Select to accept a subscription request and send a
                      subscription request to the request originator.
Reject -------------- Select to deny a subscription request.

* The Listview gadget contains a scrollbar and scroll arrows used to
  display text that is outside the current viewing area.

@endnode


@node "window-readmsg" "Read Messages Window"
@toc "windows"

@{b}@{u}Read Messages Window@{ub}@{uu}

When a message is received this window can be opened by clicking on the
message icon in the @{"main window" link "window-main"} and selecting the "Roster/Read Message"
menu item or by double-clicking the message icon. The Read Messages window
contains three information gadgets at the top of the window. The gadget
labeled "From" displays the message sender's @{"Jabber ID" link "jabberID"} and the gadget
labeled "Thread" will display the message thread text entered by the sender.
The "Error" gadget will hopefully remain blank;) The listview that fills
most of the window will contain the actual text of the message.

Additional messages received from the same sender while the window is open
can be read by selecting the "Next" gadget. The "Next" gadget will be
enabled (unghosted) if a new message is received while the last message is
displayed in the Listview. The "Next" and "Previous" gadget are disabled
(ghosted) when no next or previous messages exist. Jabberwocky retains the
received messages in memory until you disconnect, so you can reopen the
window by clicking on the sender's entry in your roster and selecting the
"Roster/Read Message" menu item to read the messages again.

Select either the "Write" or "Reply" gadget to send a message back to the
sender. Selecting either gadget will open a @{"Write Message" link "window-writemsg"} window with the
sender's Jabber ID already entered in the "To" gadget. If you select the
"Reply" gadget the message currently displayed in the read window will also
be copied to the Write message window.

NOTE: When the read messages window is open, a new message icon WON'T
      appear in the roster when you receive a message. This is a bug and
      will be fixed in a future version. If someone doesn't seem to be
      talking to you, check for read windows hidden behind other windows.

The read messages window has 9 main gadgets:

Previous ---- Select to reread a previous message.
              Gadget is ghosted if there is no previous message.
Next -------- Select to read the next message.
              Gadget is ghosted if there are no more messages.
From -------- Displays the Jabber ID of the message sender.
Thread ------ Displays thread text entered by the message sender.
Error ------- Displays message transmission errors.
(Listview) -- Displays the message text.
Write ------- Opens a Write Message window to compose and send a message.
              The sender's Jabber ID is copied to the "To" gadget in the
              new Write Message window.
Reply ------- Opens a Write Message window to compose and send a message.
              Both the sender's Jabber ID and the message text are copied
              to the corresponding gadgets in the Write Message window.
Close ------- Closes the current read messages window.

* The Listview gadget contains a scrollbar and scroll arrows used to
  display text that is outside the current viewing area.

@endnode


@node "window-writemsg" "Write Message Window"
@toc "windows"

@{b}@{u}Write Message Window@{ub}@{uu}

This window will open when you select the "Roster/Write Message" menu item,
allowing you to compose and send a message. If you double click on an entry
in your @{"roster" link "roster"} the Write Message window will open with the @{"Jabber ID" link "jabberID"} of
that contact already entered in the "To" gadget. Selecting the "Write"
gadget in the @{"Read Messages" link "window-read"} window will open a write message window with
the "To" and "Thread" gadgets filled in for you. The read messages' "Reply"
gadget does the same and copies the text in the read window to the write
message window.

A valid Jabber ID in the string gadget labeled "To" is the only entry
required to send a message. An entry in the string gadget labeled "Thread"
is optional, but may help keep track of the topic in series of messages.
Since it doesn't usually make sense to send a blank message, you should
enter some text in the text editing gadget before selecting the "Send"
gadget to transmit a message. Selecting the "Cancel" gadget or the window
close gadget will cancel the message.

The Write Message contains 5 main gadgets:

To ---------- Enter the Jabber ID of the intended message recipient.
Thread ------ Enter an optional subject or message description.
(TextEdit) -- Enter the text of the message.
Send -------- Select to transmit the message.
Cancel ------ Select to cancel the message.

* The text editor contains a scrollbar and scroll arrows used to display
  text that is outside the current viewing area.

@endnode


@node "window-chat" "Chat Window"
@toc "windows"

@{b}@{u}Chat Window@{ub}@{uu}

The chat window can be opened by clicking on a contact in the @{"roster" link "roster"} and
selecting the "Roster/Chat" menu item. It will automatically open if you
receive a chat message when the chat window is not already open. A separate
chat window is used for each contact you are 'chatting' with.

The information gadget at the top of the chat window displays the name
and/or the Jabber ID of the contact you are 'chatting' with. There are
three action gadgets located below the information gadget. The "Flush"
gadget will clear the 'history' listview located below it. Selecting the
"Save" gadget will save the contents of the 'history' listview and the
the "Send File..." gadget can be used to send a file to the contact shown
at the top of the window. The listview that fills most of the window
displays a history of the sent and received 'chat' messages. The string
gadget at the bottom of the window is used to enter and edit lines of
'chat' text. Hitting the <Return> key transmits the line of text.

The Chat window contains 6 main gadgets:

(Information) - Displays the name and/or Jabber ID of the 'chat' recipient.
Flush --------- Select to clear the text from the 'history' listview.
Save ---------- Select to open a file requester for saving chat messages.
Send File... -- Select to open a @{"Send File" link "window-sendfile"} window for transferring a file
                to the contact you are chatting with.
(Listview) ---- Displays sent and received chat messages. (message history)
(Textedit) ---- Enter the text to send and hit the <Return> key.

* The 'history' listview contains a scrollbar and scroll arrows used to
  display text that is outside the current viewing area.

@endnode


@node "window-info" "Information Window"
@toc "windows"

@{b}@{u}Information Window@{ub}@{uu}

This window will open when you select the "Roster/Information" menu item
after selecting (clicking) a contact in the @{"Main Window" link "window-main"} @{"roster" link "roster"}. The
information window displays detailed @{"presence" link "Presence"}, availability and client
program information for a selected roster entry.

Note: The term "selected entry" refers to the Main Window roster entry that
      is highlighted (selected) when you select the Roster/Information
      menu item. It is possible to highlight another roster entry after the
      Information window is open, but the information contained in the
      window will still refer to the originally selected entry.

You can change the name that appears in your roster for a particular entry.
Enter or edit a name in the "Name" string gadget and select the "Update"
gadget to save the changes to your Jabber roster on the server.

The client information for the selected entry will not be displayed until
you select the "Query" gadget. If you select "Query" for a transport based
contact (e.g. buddy@icq.myjabber.net) you will receive the client
information for the transport instead of that for the contact. This is a
transport limitation and not a Jabberwocky or JabberIM problem.

The information window contains 14 main gadgets:

Name ----------- Enter or edit the name you want to appear for the selected
                 entry in your Main Window Roster.
Jabber ID ------ Displays the @{"Jabber ID" link "jabberID"} of the selected entry in your
                 Main Window Roster.
Group ---------- Unimplemented at this time.
Update --------- Select to update your Jabber Roster with any changes made
                 to the "Name" gadget described above.
Close----------- Select to close the information window.
Presence(Tab) -- Displays information about the selected entry.
  Subscription - Displays the @{"subcription" link "Subscription"} type for the selected entry.
                 Subscriptions are either "From", "To", "None" or "Both".
@remark removed=    change to -- Unimplemented at this time.
  Status ------- Displays presence status (availability) for the selected
                 entry. See @{"presence" link "Presence"} for possible status indications.
  Note --------- Displays optional availability information sent by the
                 selected entry. (Usually blank)
Client(Tab) ---- Displays requested (Query) program information for the
                 selected entry.
  Client ------- Displays client program name.
  Version ------ Displays client program version.
  OS ----------- Displays client operating system.
  Query -------- Select to obtain the client information from the selected
                 entry.

Note: The update function may not work properly with transports in previous
      versions of Jabberwocky. Avoid updating transport entries in your
      roster if you are using a version earlier than Jabberwocky 1.4.

@endnode


@node "window-prefs" "Preferences Window"
@toc "windows"

@{b}@{u}Preferences Window@{ub}@{uu}

The Jabberwocky preferences window will open when you select the
"Settings/Preferences" menu item. There are three action gadgets at the
bottom of the window that pertain to all the preferences settings. The
"Save" gadget will save any changes made to the preferences settings and
use those settings for the current program session. Selecting the "Use"
gadget will use the settings for the current program session but will not
save them. The "Cancel" gadget will cancel any changes made and Jaberwocky
will continue operating with the previous settings. All three gadgets will
also close the preferences window.

The Listview on the left side of the preferences window contains a list of
configuration categories. When you select a category by clicking on it, the
settings gadgets for that category will be displayed on the right side of
the window. The settings can be changed using the gadgets listed below.

NOTE: *The "Advanced/Character Set" preferences are unimplemented in the
       current version of Jabberwocky and will not be used or saved.
      *GroupChat (conference) message logging is not implemented and the
       preferences setting will have no effect.
      *The "Connect/Send plaintext passwords" preferences item can be used
       but not saved (as a security precaution).

The preferences window contains 4 main gadgets and a settings area:

Category (Listview) - Displays a list of preferences categories.
                      Click on a category to display the available settings
                      in the settings area to the right of this gadget.
Settings ------------ Displays the settings available for the item selected
                      in the category listview.
Save ---------------- Select to save preferences changes.
Use ----------------- Select to use the preferences settings for the
                      current program session without saving them.
Cancel -------------- Select to cancel any changes made to the preferences
                      settings and close the window.

Available settings gadgets for each category:

@{i}@{b}General: @{ub}(Checkbox gadgets)@{ui}
   Display Messages using the ---- When a message is received, open the
   Chat window                     chat window to display it. Replies will
                                   be sent as chats, not messages.

   Display Chats using the ------- When a chat is received, open the
   Message Window                  message window to display it. Replies
                                   will be sent as messages, not chats.

   Use Timestamp in Chat windows - A time will appear beside each message
                                   in the chat windows if this item is
                                   checkmarked.

   Activate windows for popup ---- When a window is opened or brought to
   notification.                   the front for event notification it will
                                   be made the active window.

   Ask before Quitting program --- Jabberwocky will open a confirmation
                                   requester before exiting if this item is
                                   checkmarked.

   Ask before Removing contact --- Jabberwocky will open a confirmation
                                   requester before removing a contact from
                                   the roster.

@{i}@{b}Connect: @{ub}(Checkbox gadgets)@{ui}
 @{u}Connection@{uu}:
   Auto connect on startup ------- Jabberwocky will attempt to connect to
                                   the default Jabber account when started.

   Auto reconnect ---------------- Jabberwocky will automaticly reconnect
   after auto-disconnect.          if an involuntary disconnection occurs.

   Send periodic connection ------ Jabberwocky will send a space to the
   checks to server.               Jabber server every 60 seconds to comfirm
                                   that the server is still connected.

   Display connection checks in -- Record connection checks in the log and
   console & log.                  console. The checks will appear as "rcv"
                                   and "send" with no message listed.

   Ask before disconnecting ------ Jabberwocky will open a confirmation
                                   requester when the "Disconnect" gadget
                                   is selected.
 @{u}Security@{uu}:
   Send plaintext passwords ------ Send unencrypted passwords when
                                   connecting to a Jabber server.
                                   This preferences item cannot be saved.

@{i}@{b}Transfer: @{ui}@{ub}
   HTTP Server Port ---- Enter the TCP: port to be used for outgoing file
                         transfers. You should use the default port 80,
                         which is the HTTP standard, unless you are running
                         a WEB server or firewall which blocks port 80.

@{i}@{b}Events:@{ui}@{ub}
   Events (Listview) --- Select an @{"event" link "events"} to configure. The settings in the
                         gadgets below the events listview apply only to
                         the highlighted (selected) event.

   Window Popup¹ ------- Select to have a Jabberwocky window pop to the
                         front when the highlighted event occurs.

   Screen Popup¹ ------- Select to have the screen Jabberwocky is opened on
                         pop to the front when the highlighted event occurs.

   Deiconify¹ ---------- Select to have Jabberwocky deiconify when the
                         highlighted event occurs.

   Command (Text) ------ Enter a command (with path) to execute when the
                         highlighted event occurs.

   (FileRequest) ------- Select to open a file requester for choosing a
                         path and command for the "Command" gadget.

   Sound (Text) -------- Select a sound file (with path) to play when the
                         highlighted event occurs.

   (FileRequest) ------- Select to open a file requester for choosing a
                         path and sound file for the "Sound" gadget.

   Test ---------------- Select to hear the sound file entered in the
                         "Sound" gadget.
1 = Checkbox gadgets.

@{i}@{b}Advanced:@{ui}@{ub}
 @{u}Program Logging@{uu}:
   Incoming XML (Checkbox) - Record all incoming XML in the log file.

   Outgoing XML (Checkbox) - Record all outgoing XML in the log file.

   Debug (Checkbox) -------- Record debugging information in the log file.

   Log file ---------------- Enter a path and filename for the program log.

   (FileRequest) ----------- Select to open a file requester for choosing
                             a path and filename for the "Log file" gadget.

 @{u}Message Logging@{uu}:
   Chats ------------------- Record all chat messages in the message log.

   Messages ---------------- Record all Jabber messages in the message log.

   GroupChats -------------- Currently unimplemented.

   Msg file ---------------- Enter a path and filename for the message log.

   (FileRequest) ----------- Select to open a file requester for choosing
                             a path and filename for the "Msg file" gadget.

 @{u}Character Set@{uu}: - @{i}Currently unimplemented.@{ui}
   Internal (Checkbox) ----- Use Jabberwocky's built-in character table.

   ISO Table --------------- Enter the path and filename for an alternative
                             character table.

   (FileRequest) ----------- Select to open a file requester for choosing a
                             path and filename for the "ISO Table" gadget.

* The Listviews contain a scrollbar and scroll arrows used to display
  text that is outside the current viewing area.

@endnode


@node "window-sendfile" "Send File Window"
@toc "windows"

@{b}@{u}Send File Window@{ub}@{uu}

The Jabberwocky Send File window will open when you select the
"Roster/Send File" menu item after selecting a contact in the main window
roster. The @{"JabberID" link "jabberID"} of the selected contact will be displayed in at the
top of the window. A filename and an optional description can be entered in
the text input gadgets below the JabberID. The filename must include the
complete path for the file and can be obtained automatically by using the
FileRequest gadget to the right of the "File" text gadget. Once a complete
filename appears in the "File" gadget, the file is sent by selecting the
"Send" button. The operation can be cancelled before the file is sent by
selecting the "Cancel" gadget.

After the file is sent, you can monitor the status of the file transfer by
selecting the "Windows/File Transfers" menu item to open the @{"File Transfers" link "window-filetrans"}
window. Jabberwocky transfers files using "HTTP" protocol.

The Send File window contains 6 gadgets:

To ------------ Displays the JabberID of the contact that you want to send
                the file to.
File ---------- Enter the name of the file (complete path) to be sent.
(FileRequest) - Select to open a file requester for choosing a path and
                filename for the "File" gadget.
Description --- Enter a description of the file you are sending. The file
                description is optional and this gadget may be left blank.
Send ---------- Select to send the file.
Cancel -------- Select to cancel the operation before sending the file.
                If "Send" has already been selected this gadget will only
                close the window.

@endnode


@node "window-console" "Console Window"
@toc "windows"

@{b}@{u}Console Window@{ub}@{uu}

The Jabberwocky Console window opens when you select the "Windows/Console"
menu item. The Console is used to monitor Jabberwocky diagnostic output
and optionally, all Jabber XML traffic. It also contains an editor gadget
for entering Jabber XML commands and sending them to the Jabber server.
Once a connection is established by Jabberwocky all traffic exchanged with
the Jabber server is in the form of human readable XML commands which can
be displayed in the console window.

An experienced Jabber user can examine the displayed XML for diagnostic
purposes. If you are familiar with Jabber XML you can enter XML commands
in the editor gadget at the bottom of the console window and send them to
the Jabber server to perform some functions not included in Jabberwocky.
However, it is recommended that you only use the XML editor if you know
what you are doing since incorrect commands could result in disconnection
or loss of your Jabber account at a particular server.

The console window contains 7 main gadgets:

Watch XML Traffic (CheckBox) - Select to monitor all Jabber XML traffic in
                               the listview below this gadget.
Save... ---------------------- Select to open a file requester for saving
                               the contents of the main listview.
Flush ------------------------ Select to clear the listview of previous
                               messages and XML traffic.
(Listview) ------------------- Displays diagnostic messages and all XML
                               traffic if the "Watch XML" gadget is
                               selected.

(TextEdit) ------------------- Enter and edit XML commands.
Clear ------------------------ Select to clear previous XML commands from
                               the editor. Sending a command does not clear
                               the editor so it is necessary to clear it
                               with this gadget before sending another XML
                               command. If you don't clear the editor
                               between commands, previous commands will be
                               resent.
Send ------------------------- Select to send XML commands entered in the
                               editor (TextEdit Gadget). Once a command
                               is sent you should select the "Clear" gadget
                               before entering another command.

* The Listviews contain a scrollbar and scroll arrows used to display
  text that is outside the current viewing area.

@endnode


@node "window-agents" "Agents List Window"
@toc "windows"

@{b}@{u}Agents List Window@{ub}@{uu}

This window will open when you select the "Windows/Agents List" menu item.
A list of @{"Jabber agents" link "agents"} retrieved during the connection process will be
displayed in the listview at the top of the window. Jabber agents that
require registration prior to use can be registered from this window by
selecting the agent in the listview and clicking the "Register" gadget. A
@{"registration window" link "window-register"} will open and display the inputs required by the
selected agent. If you click the "Search" gadget after selecting a
searchable agent in the listview, a @{"search window" link "window-search"} will open and display
the inputs required for the search. The agent capabilities or requirements
are displayed in the listview columns beside the agent name.


Agents' listview column definitions:

Name ------- Displays the name of the Jabber agent.
Register --- "Yes" beside an agent-name in this column indicates that the
             agent can be registered. Registration is required for the use
             of @{"transport" link "transports"} agents but is optional for other agents such as
             a @{"Jabber User Directory" link "directory"}.
Search ----- "Yes" beside an agent-name in this column indicates that the
             agent contains information that can be searched.
Conference - "Yes" beside an agent-name in this column indicates that the
             agent supports conferencing.


The Agents List window contains 7 main gadgets:

(Listview) -- Displays the Jabber agents available on the server that
              Jabberwocky is currently connected to.
ServerID ---- Enter the JabberID of a Jabber server that you would like to
              obtain an agent list from.
Visit ------- Select to request an agent list from the server entered in
              the "ServerID" gadget described above.
Description - Displays a description of the agent selected in the listview
              if the server sent descriptions with the agents list.
Register ---- Select to @{"register" link "register"} with the agent selected in the listview.
Search ------ Select to perform a search using the agent selected in the
              listview. (Usually a 'Jabber User Directory' agent)
Conference -- Currently unimplemented. Use the "Menus/New Conference" menu
              item to initiate or join a conference.

* The Listview contains scrollbars and scroll arrows used to display
  text that is outside the current viewing area.

@endnode


@node "window-filetrans" "File Transfers Window"
@toc "windows"

@{b}@{u}File Transfers Window@{ub}@{uu}

The file transfers window can be opened at any time by selecting the
"Windows/File Transfers" menu item. Both incoming and outgoing transfers
are listed in the file transfers window. You can monitor the status of
outgoing file transfers in the this window. Outgoing transfers will be
listed as "offering" until they are accepted by the recipient. After the
file has been sent it will be listed as "finished".

The file transfers window will open automatically when you receive a file
transfer offer from one of your Jabber contacts. New transfers will be
listed as "offered" and can be accepted by clicking on the transfer offer
in the listview and selecting the "Accept" gadget. When you select "Accept"
Jabberwocky will pass an Internet address to your WEB Browser through the
"OpenURL" library. The actual "HTTP" file transfer will handled by your
Browser and is not controlled by Jabberwocky. After the address is passed
to your Browser, Jabberwocky will list the file transfer as "connecting" in
the File Transfer window.

The File Transfers window contains 5 main gadgets:

(ListView) - Displays all file transfers under the following headings:
             Operation - Displays "Send" for outgoing transfers.
                         Displays "Receive" for incoming transfers.
             State ----- Displays the following messages:
                         @{i}Offering @{ui}(for pending outgoing file transfers).
                         @{i}Finished @{ui}(for completed outgoing file transfers).
                         @{i}Offered @{ui} (for incoming file transfer offers).
                         @{i}Connecting @{ui}(for accepted incoming file transfers).
             File ------ Displays the filename for outgoing files.
                         Displays Internet address for incoming files.
             Size ------ Currently unimplemented.
Accept ----- Select to transfer the "offered" file selected in the file
             transfers listview.
Reject ----- Currently unimplemented and not displayed.
Cleanup ---- Currently unimplemented and not displayed.
Close ------ Closes the file transfers window.

* The Listview contains scrollbars and scroll arrows used to display
  text that is outside the current viewing area.

@endnode


@node "window-conference" "Jabber Conference Window"
@toc "windows"

@{b}@{u}Jabber Conference Window@{ub}@{uu}

The conference window opens when you select the "Windows/New Conference"
menu item so you can join and participate in a @{"Jabber conference" link "conference"}. The
"Topic" string gadget at the top of the window can used to change topics in
a conference (groupchat) but doesn't require any entry. Sender nicknames
and messages are displayed in the large listview on the left side of the
window and the small listview on the right displays a list of conference
participants. Your nickname for the conference is shown to the left of the
string gadget at the bottom of the window. The bottom string gadget is used
to enter and edit commands or lines of 'groupchat' text. When you enter a
valid command, hitting the <Return> key will execute that command. If you
enter a line of text the <Return> key transmits the text as a message.

The Jabber Conference window contains 4 main gadgets:

Topic -------- Enter a conference topic to send and hit the <Return> key
(Listview 1) - Displays received messages identified with a nickname.
(Listview 2) - Displays a list of conference participants.
(Textedit) --- Enter the text to send and hit the <Return> key.

* The Listviews contain scrollbars and scroll arrows used to display
  text that is outside the current viewing area.

Conference commands: /join - Join the conference following the command.
                             Example: /join users@conference.jabber.org.
                     /part - Leave a conference.

@endnode


@node "window-search" "Search Window"
@toc "windows"

@{b}@{u}Search Window@{ub}@{uu}

The Search Window opens when you select the "Search" gadget in the
@{"Agents List" link "window-agents"} window with a searchable agent selected in the listview.
The information requested in the search window may vary, depending on the
Jabber agent being searched. The inputs listed here are typical of a
@{"Jabber User Directory" link "directory"} agent. At least one of the requested inputs must be
provided to get any search results.

The Search Window usually contains 7 main gadgets:

(ListView) - Displays instructions for performing a search.
email ------ Enter a valid email address.
first ------ Enter a proper first name (Given name).
last ------- Enter a proper last name (Family name).
nick ------- Enter a nickname (Alias).
Search ----- Select to begin a search.
Cancel ----- Select to cancel the search and close the window.

* The Listview contains a scrollbar and scroll arrows used to display
  text that is outside the current viewing area.

@endnode


@node "window-searchresult" "Search Results Window"
@toc "windows"

@{b}@{u}Search Results Window@{ub}@{uu}

The search results window opens when you receive the results of a Jabber
user search from a Jabber server. Any users that match the search criteria
will be listed in the search results window. Each line in the results
listview will display the @{"Jabber ID" link "jabberID"} and other available information for a
matching user. Click on a Jabber ID in the listview and select the
"Add Contact" gadget to open an @{"Add Contact" link "window-contact"} window and add the user to your
@{"Jabber roster" link "roster"}.

A user search is initiated by clicking on a "Jabber User Directory" (JUD)
agent and selecting the "Search" gadget in the @{"Agents List" link "window-agents"} window.

The search results window contains 3 main gadgets:

(Listview) -- Displays the results of a Jabber User Directory search.
              Each line contains a user's Jabber ID and other information
              such as name and email address. Click on a line to select it.
Add Contact - Select to add the Jabber ID in the selected line of the
              listview to your Jabber Roster.
Cancel ------ Cancel the operation and close the search results window.

* The Listview contains a scrollbar and scroll arrows used to display
  text that is outside the current viewing area.

@endnode


@node "window-register" "Registration Window"
@toc "windows"

@{b}@{u}Registration Window@{ub}@{uu}

The Registration Window opens when you select the "Register" gadget in the
@{"Agents List" link "window-agents"} window with a registerable agent selected in the listview.
The information requested in the @{"registration" link "register"} window may vary, depending
on the Jabber agent being registered. The inputs listed here are typical of
an ICQ @{"Transport" link "transports"} agent. The username and password inputs are required to
register a Transport agent. Other requested inputs are optional.

The Registration Window usually contains 7 main gadgets:

(ListView) - Displays instructions for registering the selected agent.
username --- Enter your username (e.g. ICQ UIN, AOL Screenname, etc.).
nick ------- Enter a nickname (Alias).
email ------ Enter a valid email address.
password --- Enter your password.
Register --- Select to register with the Jabber agent after filling in the
             required inputs.
Cancel ----- Select to cancel the registration and close the window.

* The Listview contains a scrollbar and scroll arrows used to display
  text that is outside the current viewing area.

@endnode


@node "menus" "Menus"

@{b}@{u}Jabberwocky Menus@{ub}@{uu}

Jabberwocky uses standard Amiga menus to access various program functions.

@{b}Jabberwocky/Account --------@{ub} Opens an @{"account window" link "window-login"} allowing you to enter
                             a @{"Jabber ID" link "jabberID"} and password for connecting to a
                             Jabber server or registering a new Jabber
                             account.
@{b}Jabberwocky/About ----------@{ub} Opens a window that displays program version
                             and copyright information.
@{b}Jabberwocky/About MUI ------@{ub} Opens a window that displays copyright and
                             version information for MUI.
@{b}Jabberwocky/Help -----------@{ub} Opens the Jabberwocky User Manual.
@{b}Jabberwocky/Hide -----------@{ub} Iconifies the Jabberwocky program.
@{b}Jabberwocky/Quit -----------@{ub} Terminates the Jabberwocky program.


@{b}Roster/Information ---------@{ub} Opens an @{"Information" link "window-info"} window.
@{b}Roster/Add Contact ---------@{ub} Opens an @{"Add Contact window" link "window-contact"} for adding a new
                             contact to your @{"Jabber roster" link "roster"}.
@{b}Roster/Remove Contact ------@{ub} Permanently removes the contact selected in
                             your @{"roster" link "roster"}.
@{b}Roster/Subscribe -----------@{ub} Sends a @{"subscription" link "subscription"} request to the contact
                             selected in the roster.
@{b}Roster/Accept Subscription -@{ub} Do not use this menu at this time.
@{b}Roster/Read Message --------@{ub} Opens a @{"Read Messages" link "window-readmsg"} window when selected
                             with a contact highlighted in your roster so
                             you can read messages from that contact.
@{b}Roster/Write Message -------@{ub} Opens a blank @{"Write Message" link "window-writemsg"} window.
@{b}Roster/Chat ----------------@{ub} Opens a @{"Chat window" link "window-chat"} when selected with a
                             contact highlighted in your roster.
@{b}Roster/Send File -----------@{ub} Opens the @{"Send File" link "window-sendfile"} window to send a file
                             to the contact selected in the roster.


@{b}Windows/Console ------------@{ub} Opens the @{"Console" link "window-console"} window.
@{b}Windows/Subscriptions ------@{ub} Opens the @{"Subscription Requests window" link "window-subscriptions"} so you
                             can accept or reject any outstanding
                             @{"subscription" link "subscription"} requests.
@{b}Windows/Agents List --------@{ub} Opens the @{"Agents List" link "window-agents"} window and displays the
                             available @{"agents" link "agents"} so you can @{"register" link "register"} or use
                             the services provided by those agents.
@{b}Windows/File Transfers -----@{ub} Opens the @{"File Transfers" link "window-filetrans"} window.
@{b}Windows/New Conference -----@{ub} Opens a @{"Jabber Conference" link "window-conference"} window so you can
                             join and participate in a Jabber groupchat,
                             commonly referred to as a conference.


@remark @{b}Settings/Show Online Users -@{ub} Unimplemented at this time.
@{b}Settings/Popup Notify ------@{ub} Toggles all "@{"event" link "events"}" window/screen popup
                             notification on/off.
@{b}Settings/Command Notify ----@{ub} Toggles all "event" command notification
                             on/off.
@{b}Settings/Sound Notify ------@{ub} Toggles all "event" sound notification on/off.
@{b}Settings/Preferences -------@{ub} Opens the Jabberwocky @{"Preferences" link "window-prefs"} window so
                             you can change program settings.
@{b}Settings/MUI ---------------@{ub} Opens the standard MUI user interface settings
                             window.
@{b}Settings/Last Saved --------@{ub} Loads and uses the last "Preferences" settings
                             that were saved.
@remark @{b}Settings/Save Settings -----@{ub} Saves the current "Preferences."


@{b}Arexx/Execute Script -------@{ub} Opens a file requester to select and execute a
                             Jabberwocky ARexx script.

@endnode


@node "config" "Configuration"

@{b}@{u}Configuration@{ub}@{uu}

There are four categories of Jabberwocky settings:

@{i}@{b}Account Settings:@{ui}@{ub}
  Account settings consist of a @{"Jabber ID" link "JabberID"} and Password for one or more
  Jabber accounts and are saved in the Account.xml file located in the main
  Jabberwocky directory. The account settings are entered in the
  @{"Account window" link "window-login"} which opens the first time Jabberwocky is executed. The
  account settings can be changed by selecting the Jabberwocky/Account menu
  item to open the Account window. Account settings are saved in two ways:

  @{b}Save@{ub} as Default Account @{b}---@{ub} Button gadget located in the @{"Account window" link "window-login"}.
                            @{b}-@{ub} Select to save the current JabberID and
                              Password as the default account which will be
                              loaded when Jabberwocky is started.

  @{b}Save@{ub} @{i}(alternate accounts)@{ui} @{b}-@{ub} Button gadget located in the drop-down lister
                              to the right of the JabberID entry gadget in
                              the Account window.
                            @{b}-@{ub} Select to save the JabberID and Password
                              for the accounts displayed in the lister.

@{i}@{b}Program Preferences:@{ui}@{ub}
  The program preferences are the settings that control the overall
  operation of Jabberwocky. Refer to the @{"Preferences window" link "window-prefs"} section for
  specific information about the Jabberwocky preferences settings.

@{i}@{b}Program Settings:@{ui}@{ub}
  There are several settings that are located in program windows for
  controlling options that apply to the window in which they appear. There
  are also three checkmark menu items in the Settings menu that act as
  master "switches" for the three types of @{"event" link "events"} notification.

  @{b}Watch XML Traffic -@{ub} Checkmark gadget located in the @{"Console window" link "window-console"}.
                    @{b}-@{ub} Select to display all incoming and outgoing XML
                      traffic in the main console listview.

  @{b}Popup Notify ------@{ub} Checkmark menu item in the Settings @{"menu" link "menus"}.
                    @{b}-@{ub} Set/clear to turn event driven window and screen
                      popup on/off.

  @{b}Command Notify ----@{ub} Checkmark menu item in the Settings menu.
                    @{b}-@{ub} Set/clear to turn event driven command execution
                    @{b}-@{ub} on/off.

  @{b}Sound Notify ------@{ub} Checkmark menu item in the Settings menu.
                    @{b}-@{ub} Set/clear to turn event driven sounds on/off.

@{i}@{b}MUI User Interface Settings:@{ui}@{ub}

  Settings that control the appearance of Jabberwocky are located in the
  MUI User Interface Settings window which is opened by selecting the
  Settings/MUI menu item. Refer to the MUI documentation for descriptions
  of the available settings. Some of the more useful settings are:

  @{b}MUI/System/Iconification -@{ub} Control of Jabberwocky iconification.

  @{b}MUI/Windows/Control -@{ub} Select which system gadgets will be used with
                        Jabberwocky windows.

  @{b}MUI/Mailtext -@{ub} Mailtext is used for displaying incoming messages in the
                 @{"Read Messages window" link "window-readmsg"}. Use the Mailtext settings to select
                 colors for quoting and URL display. You can specify URL
                 double-click action and disable Mailtext context menus
                 to make all Jabberwocky menu keyboard-shortcuts available
                 in the read window.

@endnode


@node "arexx" "ARexx"

@{b}@{u}ARexx@{ub}@{uu}

Jabberwocky has an ARexx port and supports nine ARexx commands which can
be used to control Jabberwocky or obtain status and roster information.
Since complete Arexx programming instructions are beyond the scope of this
documentation, you should consult the Amiga ARexx manual if you are not
familiar with ARexx programming and usage. Refer to the Amiga DOS manual
for a description of Format and Template notation used in the command
definitions below.

Jabberwocky ARexx scripts can be executed from within the program by
selecting the "ARexx/Execute Script" menu item to open a requester for
choosing a script. Highlight a script in the requester and click the
"Execute" button to execute it. The default path for the requester is the
"Jabberwocky/arexx" directory and the file pattern is set to "#?.rx".
Rename scripts you want to appear in the requester with an "rx" filename
extension (myscript.rx). The "RX" command must be present in the "SYS:C"
or "SYS:Rexxc" directory to execute scripts from Jabberwocky.

@{b}@{i}Arexx Port Name:@{ub}@{ui} JABBERWOCKY.<n> where n is the instance number of
                 the program. (Examples: JABBERWOCKY.1 JABBERWOCKY.2)

@{b}@{i}Arexx Commands:@{ub}@{ui}

@{b}CONNECT@{ub}
  Format ------ CONNECT [@{i}JID @{ui}<JabberID>] [@{i}PASSWORD @{ui}<password>]
  Template ---- JID/K,PASSWORD/K
  Description - Connect to the Jabber Account specified by the optional
                KEYWORDS or to the Jabber Account contained in Jabberwocky
                Preferences if the command is issued with no arguments.
  Example ----- CONNECT JID gimble@jabber.org PASSWORD gyre2l7

@{b}DISCONNECT@{ub}
  Format ------ DISCONNECT
  Description - Disconnect from the Jabber server.

@{b}ISONLINE@{ub}
  Format ------ ISONLINE
  Description - Report Jabberwocky connection status. Online/Offline status
                is returned in the ARexx Result variable "RC".
  Example ----- ISONLINE
                IF RC THEN SAY "Jabberwocky Online"

@{b}GETUSER@{ub}
  Format ------ GETUSER STEM <variable>
  Template ---- STEM/A
  Stem Nodes -- USER,SERVER,RESOURCE
  Description - Return Jabberwocky User information in the specified Stem
                variable. Information is returned as a single dimension
                Stem array with 3 named node elements.
  Example ----- GETUSER STEM info
                SAY info.SERVER

@{b}GETROSTER@{ub}
  Format ------ GETROSTER STEM <variable>
  Template ---- STEM/A
  Stem Nodes -- COUNT,<n> - USER,SERVER,RESOURCE,NAME,NOTE,PRESENCE
  Description - Return Jabberwocky Roster information in the specified Stem
                variable. Information is returned as a two dimension Stem
                array with the first node containing one named node element
                (COUNT) and multiple numeric node elements (<n>). The
                second node contains six named node elements for each
                numeric node element in the first node.
  Example ----- GETROSTER STEM roster
                SAY roster.COUNT
                SAY roster.1.SERVER

@{b}ADDCONTACT@{ub}
  Format ------ ADDCONTACT JID <JabberID> [@{i}NAME @{ui}<name>] [@{i}GREET @{ui}<greeting>]
  Template ---- JID/A,NAME/K,GREET/K
  Description - Add the contact specified by the required KEYWORD (JID)
                and include any data supplied by the optional KEYWORDS.
                Arguments must be enclosed in quotes (e.g. NAME "anyname").
  Example ----- ADDCONTACT JID "user@jabber.org" NAME "Tom" GREET "Hello"

@{b}SENDMESSAGE@{ub}
  Format ------ SENDMESSAGE TO <JabberID> MSG <text>
  Template ---- TO/A,NOTE/K
  Description -
  Example ----- SENDMESSAGE TO "user@jabber.org" MSG "This is a message."

@{b}SETPRESENCE@{ub}
  Format ------ SETPRESENCE PRESENCE <status> [@{i}NOTE @{ui}<text>]
  Template ---- PRESENCE/A,NOTE/K
  Description - Change the Availability status to that specified by the
                required KEYWORD (PRESENCE) and include any supplementary
                information supplied by the optional KEYWORD (NOTE).
                Arguments must be enclosed in quotes (e.g. NOTE "lunch").
                PRESENCE argument can be one of the following:
                  chat  away  xa  dnd  unavailable  available
  Example ----- SETPRESENCE PRESENCE "away" NOTE "Gone to lunch"

@{b}SENDRAW@{ub}
  Format ------ SENDRAW XML <xml-text>
  Template ---- XML/A
  Description - Send XML commands specified by the required KEYWORD (XML).
                The argument must be valid Jabber XML enclosed in quotes.
  Example ----- SENDRAW XML "<presence/>"

@endnode


@node "tech" "Technical Details"

@{b}@{u}Technical Details@{ub}@{uu}

  @{" Jabber ID          " link "jabberID"}

  @{" Status messages    " link "status"}

  @{" Jabber roster      " link "roster"}

  @{" Subscription       " link "subscription"}

  @{" Presence           " link "presence"}

  @{" Registration       " link "register"}

  @{" Jabber Agents      " link "agents"}

  @{" Jabberwocky Images " link "images"}

  @{" Jabberwocky Events " link "events"}

@endnode


@node "jabberID" "Jabber ID"
@toc "tech"

@{b}@{u}Jabber ID@{ub}@{uu}

All entities in the Jabber instant messaging and presence system are
identified by an address referred to as a "Jabber ID." Server agents,
such as IM bridges (transports), are identified by a Jabber ID(JID) with
a slightly different format than that for a user. The Jabber ID for an
agent usually consists of the agent name with a Jabber servername appended
(icq.servername e.g. icq.jabber.org). A user JID contains the information
necessary to associate the user with a host(server) and a connection
(resource). The required format for a user JID is "user@server/resource"
or "user@server" if the optional resource is not included.

The 3 parts of a user Jabber ID are:

user ----- Your username at the server.

server --- Domain name of your server. Currently there are dozens
           of public Jabber servers. You can find a list of them
           at http://www.jabber.org/user/publicservers.shtml

resource - Optional string for representing your connection.
           If left empty, default resource "Jabberwocky" is
           used. You can have different connections to the
           same account with different resources. That's
           handy for running different Jabber applications
           within one account at the same time.

Examples: jaypee@kanga.nu  susan34@jabber.at  madcat@jabber.org

@endnode


@node "status" "Status Messages"
@toc "tech"

@{b}@{u}Status Messages@{ub}@{uu}

@{u}Status Message@{uu}        @{u}Definition		Action@{uu}
Cannot connect!       Incorrect servername	Check servername in JabberID
		      No TCP/IP stack running	Start TCP/IP stack
@{b}---------------------------------------------------------------------------@{ub}
Check your Jabber ID  Incorrect Jabber ID	Reenter Jabber ID
@{b}---------------------------------------------------------------------------@{ub}
Connecting...	      Connecting with server	Wait!
@{b}---------------------------------------------------------------------------@{ub}
Connection reset!     Connection reset by	Reconnect
                      Jabber server
@{b}---------------------------------------------------------------------------@{ub}
Connection closed.    User disconnected		Close or reconnect
@{b}---------------------------------------------------------------------------@{ub}
Registering...	      Registering new account	Wait!
@{b}---------------------------------------------------------------------------@{ub}
Registration failed!  Username already in use	Select different username
@{b}---------------------------------------------------------------------------@{ub}
Logging in...	      Logging in to server	Wait!
@{b}---------------------------------------------------------------------------@{ub}
Stream Error	      Disconnected from server  Reconnect and retry
                      due to an XML error
@{b}---------------------------------------------------------------------------@{ub}
Fetching roster...    Loading Jabber roster	Wait!
@{b}---------------------------------------------------------------------------@{ub}
Authorization failed! Incorrect Jabber ID	Reenter Jabber ID
@{b}---------------------------------------------------------------------------@{ub}
Online		      Good connection & login	Continue
@{b}---------------------------------------------------------------------------@{ub}
Where is the TCP/IP stack? (Self explanatory)	Start TCP/IP stack
@{b}---------------------------------------------------------------------------@{ub}

@endnode


@node "roster" "Jabber Roster"
@toc "tech"

@{b}@{u}Jabber Roster@{ub}@{uu}

Unlike some other instant messaging systems, Jabber stores your list of
contacts at the Jabber server instead of in a local Client file. When you
connect to a Jabber server Jabberwocky retrieves the client roster from
the server and displays your contacts in the main window. Therefore, if you
connect to your jabber account from a different computer, you will always
get the same roster. You can use Jabberwocky at home and another Jabber
client at work with the same account and the same roster. Unfortunately,
this also means that if the server loses your roster because of an
administrative error, it's gone. Currently, there are no internal
Jabberwocky routines to create a local backup copy of your roster. An ARexx
script to perform that function is included with the Jabberwocky package.
You may want to record your roster contact information elsewhere to prevent
a complete loss of your list of contacts.

The local roster displayed in the "Roster" tab of the @{"main window" link "window-main"} is
usually a duplicate of the Jabber roster stored on the server. However,
when you send or receive a message from a contact not listed in your roster
Jabberwocky will create a temporary entry for that contact in the local
roster. Unless you subscribe to that contact before disconnecting, that
contact will not appear in your local roster when you reconnect.

The Jabber subscription and presence mechanism relies on the information
stored in the user roster. In addition to the "Name" and "JabberID", the
roster also contains the subscription status for each contact and a record
of any outstanding subscription requests. If you disconnect without
responding to a subscription request, that request will reappear in your
Subscription Requests window the next time you connect.

Jabberwocky displays the @{"subscription" link "subscription"} status for contacts with the text
style (@{b}bold@{ub}, @{i}italic@{ui}, normal) applied to each entry in the roster. @{"Presence" link "presence"}
information is displayed with an @{"image" link "images"} (icon) placed to the left of each
roster entry.

@endnode


@node "subscription" "Subscription"
@toc "tech"

@{b}@{u}Subscription@{ub}@{uu}

@{b}@{i}Introduction:@{ub}@{ui}

"Presence Subscription" is the Jabber mechanism that controls the
distribution of availability (@{"presence" link "presence"}) information. By default, no
availability information is provided by the Jabber servers unless you
subscribe to (request) the presence for an agent or user. Such a
subscription request can be accepted or rejected by the recipient. In other
words, you are required to ask for permission to receive notification that
an agent or user is online and available. Subscription is usually a mutual
process commonly referred to as a "handshake." When you subscribe to the
presence for another user, that user should in turn subscribe to your
presence. Then both users will know when the other is online.

EXAMPLE: User1 subscribes to user2.
         User2 accepts & subscribes to user1.
         User1 accepts.

There are two ways to send a subscription request. The first way is to
select the "Roster/Add Contact" menu item when a contact does not yet
exist (appear) in your @{"Jabber roster" link "roster"}. The second way is to click on an
existing entry (contact) in your roster and select the "Roster/Subscribe"
menu item. The Jabber server retains the subscription status for each
contact in the Jabber roster and uses that status to control the flow of
availability information. Refer to the appropriate sections below for more
detailed information.


@{b}@{i}Subscription Status:@{ub}@{ui}

The data stored in the Jabber roster also includes a subscription status
for each contact in the roster. When Jabberwocky retrieves the roster from
the Jabber server after connecting, it displays the subscription status by
altering the text style (@{b}bold@{ub}, @{i}italic@{ui}, normal) applied to each entry in
the roster. The text styles displayed for each entry in the local roster
have the following meaning:

@{u}Text Style@{uu}   @{u}Subscription@{uu}   @{u}Definition@{uu}
Normal       Both           Availability information sent both ways.
Italic       From           Availability sent from you to the contact.
Italic       To             Availability sent to you from the contact.
Italic       None           No Availability information exchanged.
Bold         Ask            Outstanding Subscription request.

Subscription status is also available in the @{"Information" link "window-info"} window.


@{b}@{i}Subscribing with the "Roster/Add Contact" menu:@{ub}@{ui}

When you add a contact to your roster by selecting the "Roster/Add Contact"
menu item and clicking the "Subscribe" gadget in the @{"Add Contact window" link "window-contact"},
a subscription request is sent to the new contact. When the request is
received a @{" Subscription Requests" link "window-subscriptions"} window will automatically open so that
the recipient can click on the new subscription request and select either
"Accept" or "Reject". If your new contact clicks on the "Accept" gadget, a
response will be sent to you and Jabberwocky will display an active
@{"presence" link "presence"} icon in front of that contact in your roster. After selecting
"Accept", the new contact will have a new entry for you in his roster. That
person should then click on your entry in his roster and select the
"Roster/Subscribe" menu item. When he does that, a subscription request
will be sent back to you and a "Subscription Requests" window will pop up
on your screen. If you click on the new subscription request and select
"Accept", a response will be sent to him and he will see an active presence
icon for you. At that point both people will be able to tell when the other
is online and available.


@{b}@{i}Subscribing with the "Subscribe" menu:@{ub}@{ui}

When you receive a subscription request from another user and accept, you
should respond by sending a subscription request to that user. Simply
click on the new roster entry for that user and select the
"Roster/Subscribe" menu item. A subscription request will be sent and if
accepted will result in the display of an active @{"presence" link "presence"} icon for that
entry in your roster.

If you receive a message from someone not in your roster, a temporary entry
will appear in your roster with a message icon. If you want to add that
contact permanently, click on the temporary entry and select the
"Roster/Subscribe" menu item. A subscription request will be sent to that
contact and that entry in your roster will become permanent. If that person
accepts and sends you a subscription request, Jabberwocky will display an
active @{"presence" link "presence"} icon in front of that contact in your roster and open a
@{"Subscription Requests" link "window-subscriptions"} window. If you click on the new subscription request
and select "Accept", a response will be sent to him and he will see an
active presence icon for you. At that point both people will be able to
tell when the other is online and available.

@endnode


@node "presence" "Presence"
@toc "tech"

@{b}@{u}Presence@{ub}@{uu}

The Jabber presence system provides availability information about Jabber
entities such as users and agents. Any entity identified by a Jabber ID can
communicate its presence to any other entity, by establishing a
@{"subscription" link "subscription"} to that presence. All entities expressing presence are either
available or unavailable. The 'available' state implies that the sender can
immediately receive information. The 'unavailable' state indicates that the
sender cannot receive any data at the current time.

Jabberwocky displays presence information in the form of an icon @{"image" link "images"}
preceding an entry in the @{"roster" link "roster"}. Only subscribed entries are displayed
with a presence icon. Any unsubscribed entries will be shown without an
icon unless a message has been received, resulting in the display of a
message icon. Status indications can also be received with presence
information. Jabberwocky displays the status information by altering the
appearance of the presence icon. The following chart documents the presence
and status information currently supported by Jabberwocky:

@{u}Icon Image		Presence	Status@{uu}
Lit  lightbulb		Available	Online
Dim  lightbulb		Available	Temporarily Away
Dark lightbulb		Unavailable	Offline
Smiley face		Available	Free for chat
NA  sign		Available	Away for extended period
DND sign		Available	Does not wish to be disturbed

The presence and status information is also available in the
@{"Information window" link "window-info"}.

You can control the status information that other users will see for you by
selecting the "Presence" tab in the @{"Main window" link "window-main"}. Choose a status using the
Cycle gadget and enter a status message in the "Notes" block. The status
message is optional and is only displayed in the Information window.

@endnode


@node "register" "Jabber Registration"

@{b}@{u}Jabber Registration@{ub}@{uu}

You must register with most @{"Jabber agents" link "agents"} before you can use them or access
the services they provide. Registration requirements vary between agents,
so a request window will display a brief explanation of the information
required by a particular agent when you initiate the registration process.

Some Jabber agents, referred to as transports, serve as gateways to other
instant messaging platforms like ICQ and AIM. Since most instant messaging
systems require a username and password to access their services, the
Jabber transports must provide that information on your behalf. When you
register with a transport, Jabberwocky will open a window for you to enter
information like username, password and nickname. Jabberwocky will send
that data to the transport and enter the transport name in your @{"roster" link "roster"}.
You can then add contacts through any transport listed in your roster.

Jabber User Directory (JUD) agents do not require registration to search
for other users, but other users will not be able to find and contact you
unless you register. Most of the information requested when you register
with a JUD is optional so you are free to only provide the data you want
to make publicly available.

The Jabber agents available on your server are displayed in the @{"Agents List" link "window-agents"}
window and can be registered by clicking on an agent name and selecting the
"Register" gadget at the bottom of the window. Refer to the @{"Jabber Agents" link "agents"}
section for information about specific agents.

@endnode


@node "agents" "Jabber Agents"
@toc "tech"

@{b}@{u}Jabber Agents@{ub}@{uu}

The Jabber server has a component based architecture. Various Jabber
components provide the basic IM services, data storage and server-to-server
communication necessary for the Jabber system to function. All Jabber
component configuration and communication is performed with Jabber protocol
compliant XML (Extensible Markup Language). Although all Jabber components
are addressed with a Jabber ID (JID), only those designed to interact
directly with clients (users) are individually addressable by client
programs and are commonly referred to as agents or services.

Jabber agents provide services like user database searches, cross platform
instant messaging and conferencing. When you connect to a Jabber server
Jabberwocky requests and saves a list of available agents. You can display
and access those agents by selecting the "Windows/Agents List" menu item
which opens the @{"Agents List" link "window-agents"} window. The agents are displayed in a listview
with columns indicating the type of service offered. Agents are accessed by
clicking on a name in the list and selecting an action gadget at the bottom
of the window. The action gadgets that don't apply to an agent will be
ghosted out when you click on the agent in the listview.

Since Jabber agents can require different procedures to enable and utilize
the services they provide, some of the most common agents are described
individually in the following sections:

  @{" Jabber User Directory " link "directory"}

  @{" Jabber Transports     " link "transports"}

  @{" Jabber Conferencing   " link "conference"}

  @{" Miscellaneous Agents  " link "misc_agents"}

@endnode


@node "images" "Jabberwocky Images"
@toc "tech"

@{b}@{u}Jabberwocky Images@{ub}@{uu}

When Jabberwocky starts it will look in the "Jabberwocky/Images" directory
for user supplied @{"Roster" link "roster"} images. If there are no images in the "Images"
directory, Jabberwocky will use internal images for the roster display.
User contributed images are included in subdirectories of the "Images"
directory (e.g. Images/Mason) and must be moved into the main "Images"
directory if you want Jabberwocky to load them when it starts. External
images can be created by the user by following the guidelines specified
below. In addition, the Jabberwocky iconification files
"Jabberwocky_online.info" and Jabberwocky_offline.info" located in the
"Jabberwocky/Icons" directory can be replaced with user selected icon
(.info) files.

The Jabberwocky roster images are loaded from standard IFF ILBM image files
containing images that are 16 pixels wide, 18 pixels high and 4 bitplanes
deep (16 colors). The 16 x 18 size includes the image background which
should be transparent when displayed by Jabberwocky. Slightly larger or
smaller images can be used to match the text sizes selected in the MUI
preferences. Up to 16 colors can be used for each image with one of those
colors designated as the transparent background color. Jabberwocky will
load and use valid ILBM image files with the following names:

@{u}Filename@{uu}      @{u}Purpose@{uu}
avail.iff --- @{i}Available @{ui}roster image.
away.iff ---- @{i}Away @{ui}roster image.
chat.iff ---- @{i}Free for Chat @{ui}roster image.
dnd.iff ----- @{i}Do Not Disturb @{ui}roster image.
msg.iff ----- @{i}Message @{ui}roster image.
unavail.iff - @{i}Unavailable @{ui}roster image.
xaway.iff --- @{i}Extended Away @{ui}roster image.

@endnode


@node "events" "Jabberwocky Events"
@toc "tech"

@{b}@{u}Jabberwocky Events@{ub}@{uu}

Jabberwocky can notify you of certain program events by bringing windows
and screens to the front, playing user defined sounds or executing user
specified commands or scripts. The notification for those events can be
set in the Events section of the Jabberwocky @{"preferences" link "window-prefs"}. The "notify"
menu items in the Settings menu can be used to toggle the three types of
notification (popup, sound, command) on and off.

Below is a list of program events that can generate notification and the
types of notification possible with each:

@{b}Progarm Startup:@{ub}
Window Popup - Screen Popup - Command - Sound

@{b}Program Exit:@{ub}
Command - Sound

@{b}Connection Online:@{ub}
Window Popup - Screen Popup - Deiconify - Command - Sound

@{b}Connection Offline:@{ub}
Window Popup - Screen Popup - Deiconify - Command - Sound

@{b}Incoming Message:@{ub}
Window Popup - Screen Popup - Deiconify - Command - Sound

@{b}Incoming Chat Message:@{ub}
Window Popup - Screen Popup - Deiconify - Command - Sound

@{b}Incoming Groupchat Message:@{ub}
Window Popup - Screen Popup - Deiconify - Command - Sound

@endnode


@node "faq" "Frequently Asked Questions"

@{b}@{u}Frequently Asked Questions@{ub}@{uu}


Q: Chatting with my MSN-friends is going very well with Jabber for the
   amiga, but I can't send (or receive) files to them...

A: This would be a transport issue, not a Jabberwocky issue. If MSN doesn't
   support the same file transfer method, then the agent should act as a
   proxy. However this will mean the server transfers the file, and most
   administrators would probably not want that, so I imagine the feature is
   not supported or is turned off on most servers.


Q: Some People have reported that they have Problems with StrICQ and
   Trillian Users. Messages were not shown or only some Message were
   received.

A: The new version (beta) of StriCQ uses a newer ICQ protocol. Most of the
   ICQ Jabber Transports still use an older ICQ protocol. You can only talk
   one-way to StriCQ using the older Transports.  Only the newer ICQv7
   Transport lets you talk both ways to StriCQ. Try the Jabber server at
   jabber.datenbank.org. It has an ICQv7 Transport.

@endnode

@node "compile" "Compiling Jabberwocky"

@{b}@{u}AMIGA OS 3.x:@{uu} @{ub}

To compile Jabberwocky for OS 3.x you need a working Geek Gadgets installation.

You will also need need:

MiamiSDK: http://www.nordicglobal.com/swdl.html - MiamiSDK211.lha
OpenURL: http://sourceforge.net/projects/openurllib  - OpenURL.lha
MUI: http://aminet.net/dev/mui/mui38dev.lha -  mui38dev.lha
MailText: http://sourceforge.net/projects/mailtext/ - MCC_Mailtext3_1.lha
NList: http://sourceforge.net/projects/nlist-classes/ - MCC_NList.lha
TextEditor: http://sourceforge.net/projects/texteditor-mcc/ - MCC_TextEditor.lha
BetterString: http://www.sourceforge.net/projects/bstring-mcc/ - MCC_BetterString.lha

There are differing opinions as to how to handle the includes with GG.
My current approach is to separate all the includes into separate
directories, and then copy them all into gg:local/include. This way,
if something goes wrong, you can recover the situation by deleting
everything and copying the individual sources back again.

Regardless of where you put the includes, you have to sort out them out
a little.

There is something odd about the MUI includes, without a minor modification,
they include stub functions for all the function calls in every object file,
which causes chaos during linking. The proto_muimaster.h.patch fixes this
by preventing the inclusion of inline/muimaster.h.

Jabberwocky also redefines MUI_NewObject, so we comment that out with
inline_muimaster.h.patch. For some reason uint32 is generated from the
Miami FD file, this must be replaced with ULONG with inline_socket.h.patch

I have written a script that will extract the packages, generate the
necessary files and apply the necessary patches.

@{b}THIS SCRIPT WILL DELETE gg:local/include AND gg:local/includesources!!@{ub}

Do not run it unless you are sure that it will not do damage. If you wish to
use the script, copy src/makeinclude/* to gg:local/ along with the packages
mentioned above and run makeincludes. Otherwise, examine the script and work
out your own solution.

Currently, the patched inline/muimaster.h is included in the Jabberwocky
sourcecode include directory and the sources now "#include" that file instead
of an external include to avoid problems compiling other programs with
GeekGadgets. Other sources may not compile with the patched file.

If you know of a better solution to the problems I'm having with the MUI
includes then I would like to hear about it.

@{b}@{u}AMIGA OS 4.x:@{uu} @{ub}

To compile Jabberwocky for OS 4.x you need the OS4 SDK from the OS4 CD.

You will also need need:

OpenURL: http://sourceforge.net/projects/openurllib  - OpenURL.lha
MUI: http://aminet.net/dev/mui/mui38dev.lha - mui38dev.lha
MailText: http://sourceforge.net/projects/mailtext/ - MCC_Mailtext3_1.lha
NList: http://sourceforge.net/projects/nlist-classes/ - MCC_NList.lha
TextEditor: http://sourceforge.net/projects/texteditor-mcc/ - MCC_TextEditor.lha
BetterString: http://www.sourceforge.net/projects/bstring-mcc/ - MCC_BetterString.lha

Currently, the developer kit for MUI listed above does not contain
the OS4 include files necessary for compiling Jabberwocky. The necessary
files are included in the latest OS4.1 SDK. Those includes can be
produced locally using the "fd2pragma" tool included in the OS4 SDK.

The additional required OS4 includes are:

SDK:Local/common/include/proto/muimaster.h
SDK:Local/common/include/inline4/muimaster.h
SDK:Local/common/include/interfaces/muimaster.h

The MUI OS4 includes can also be found on the first OS4 prerelease CD.
The OpenURL OS4 includes can also be found in the YAM (yamos) SourceForge
repository. The MUI patches mentioned in the OS3.x compiling instructions
above do not appear to be necessary for OS4 compilation.


@{b}@{u}MorphOS:@{uu} @{ub}

To compile Jabberwocky for MorphOS you need the SDK from the
http://developer.morphosppc.com.

You will also need need:

MailText: http://sourceforge.net/projects/mailtext/ - MCC_Mailtext3_1.lha
TextEditor: http://main.aminet.net/dev/mui/MCC_TextEditor.lha - MCC_TextEditor.LZX
BetterString: http://www.sourceforge.net/projects/bstring-mcc/ - MCC_BetterString.lha

Thats all  ;-)


@endnode

@node "history" "History"

@{b}@{u}History@{ub}@{uu}

V1.8 (03/22/2010)
=================
* Fixed file transfer thread to track messages sent to main program so
  that all message replies are retrieved before thread termination.
  Jabberwocky was sending message replies to removed threads which
  could cause a crash.
* Changed file transfer wait list to eliminate incorrect status
  indication in the transfer window caused by duplicate named files.
* Updated this readme file with more complete history and latest changes.
* Updated Jabberwocky Iksemel library source with latest changes from
  the Iksemel SVN repository sources. The changes should inprove Unicode
  conversion for XML parsing.
* Added command to disable C library break (Ctrl-C) handling which can
  cause Jabberwocky to exit without freeing signals & other resources.
  Jabberwocky handles Ctrl-C internally and frees resources upon
  termination.
* Added NFloattext.mcc to the requirements listed in the Jabberwocky guide.
* Added alternative check for TextInput.mcc if vapor_toolkit.library is
  missing. Textinput.mcc crashes if checked by MUI without the
  vapor_toolkit.library installed and available.
* Added a check for the presence of NFloattext.mcc so Jabberwocky won't
  crash if it's missing.
* Updated OS4 makefiles and Jabberwocky include files to compile with new
  OS4 SDK (Now defaults to linking with newlib.library instead of clib2).
* Corrected the asynchronous command execution for OS4 to prevent unwanted
  closing of error output filehandle. (Doesn't apply to OS3 or MOS)
* Improved sourcecode by eliminating some unused variables, adding function
  prototypes, correcting some character declarations, making type casting
  corrections & added some missing default function return values.
* Fixed a crash that occurred when a "topic" was entered in the conference
  window before joining a converence.
* Account window "connect" & "register" buttons are now disabled when
  Jabberwocky is connected.
* Changed menus to disable Roster menu and roster contextmenu when
  Jabberwocky is not connected. Some menuitems are disabled if there
  is an empty roster when Jabberwocky connects.
* Fixed a crash in network discovery function that resulted from
  attempting to visit a jabber server in the agents window with
  Jabberwocky not yet connected to a Jabber server.
* Added loading and saving of codeset prefs and activated existing
  "Charset" GUI elements in prefs.
* Merged in code diffs for charset conversion in chat windows.
  Charset conversion is untested at this point.
* Fixed long standing bug in prefs loading of an event command with quotes
  and the quotes appear as they should instead of escaped XML.
* Added some serial debugging that can be activated when a "Debug" version
  of Jabberwocky is compiled.
* Added functions to obtain external IPA address from Jabberwocky homepage
  for file transfers through a Router.
* Added prefs item to activate the external IP address retrieval.
* Updated Iksemel library to latest available version.
* Added "usedclasses" identifier and array so that only the external
  classes actually used by Jabberwocky will be listed in the MUI
  preferences. This only works for v20+ MUI and will be ignored by older
  MUI versions.
* Added Swedish catalog.
* Localized main window status messages.

V1.7 (06/03/2007)
=================
* Changed some MUI includes to be consistant with the rest of the
  Jabberwocky  sourcecode files.
* Updated copyright notice in catalog files.
  Updated several string definitions in Italian catalog translation file.
* Added workaround for OS4 network includes conflict with clib2 network
  includes. The files & file structure of clib2 network includes are now
  different than those defined in the Amiga OS4 includes.
* Disabled vapor_toolkit.library check in the MorphOS build.
  Latest MorphOS ships without this lib.
  MUI4 has its own TextInput.mcc and does not use this lib.
* Unused variables removed from sources.
* Eliminated unused includes.
* Added OS4 socket library open/close since bsdsocket.library is not longer
  automatically opened by standard libauto.
* Added patched muimaster.h include file required for 68k Jabberwocky compile.
* Updated makefile and includes for new OS4 SDK.
* Changed constant definitions for XML ID strings to make them easier to
  identify in the Jabberwocky source.
* Added ID attribute to version (jabber:iq:version) requests and responses
  for the benifit of other Jabber clients (like Exodus) that rely on the ID
  attributes to identify Jabber iq requests.
* Added new functions to retrieve Jabber server agent list using service
  discovery methods.
* Added functions to obtain agent information from Jabber server with service
  discovery methods.
* Added new constant definitions and function prototype in support of
  service discovery methods for obtaining Jabber server agent information.
* Added ID attribute to agent registration XML.
* Made numerous changes to sources in order to implement SASL authentication
  required by  some new Jabber servers.
* Changed size check in console logger to use size sent in the call.
* Changed size for connection checks to 2 since at least one server is
  sending 2 spaces for the checks.
* Added several defines to support SASL authentication.
* Added Jabber namespace definitions not included in Iksemel library.
* Removed unused MSG_CHAT constant and moved MSG_READ constant.
* Added return value of IKS_HOOK to receive function so Jabberwocky can tell
  if stream:features is being received following initial connect header.
* Fixed long standing bug that can cause 68k Jabberwocky enforcer hit or crash.
* Updated header files for use with new Iksemel library.
* Updated Jabberwocky main sources for use with new Iksemel library.
  Numerous changes in return values and function names were made.
* Updated Iksemel library to latest released version and added necessary Amiga
  modifications.

V1.6 (12/11/2005)
=================
* Updated Jabberwocky.guide to reflect changes for version 1.6.
* Fixed connection check timer so it works when Jabberwocky is iconified.
* Added NULL checks to alternate accounts string comparisons.
* Changed roster backup code to clear presence element to prevent
  false presence indications when reconnecting.
* Changed event deiconification to avoid interference with event window
  popups and fixed boolean variables in the event functions.
* Locale files and catalogs updated for new buttons & labels.
* French locale catalog file updated by Alexandre Balaban
* Added Italian catalog file submitted by Samir Hawamdeh.
* Updated português.ct locale catalog file with changes by Raul Silva.
* Updated Spanish locale catalog file with changes by Roger Barranco.
* Russian locale file updated by Vinny.
* Removed redundant MUI library closing.
* Rewrote OS4 makefiles, eliminating command echo & adding progress reporting.
* Eliminated repeated bsdsocket.library opening/closing in OS4 version.
* Fixed double transmission of presence changes which overwrote the presence
  note at the receiving end.
* Added "update" target to OS4 locale makefile for automatic updates of
  translation files with Flexcat.
* Fixed bug introduced with context menu addition that caused "Add Contact"
  menu to fail if no contacts are selected or the roster is empty.
* Changed disconnection cleanup so that windows remain open with no data
  loss when reconnecting to the same Jabber server.
* Added prefs controlled requester option for Disconnect button.
* Removed requester for automatic disconnection when server disconnection
  is detected. No longer needed because roster, chats etc. are preserved
  when Jabberwocky disconnected.
* Added chat window id and window id generating function, so MUI will remember
  chat window positions for 256 chat windows.
* Updated list handling functions to perform NULL checking.
* Removed unused transfer test function from network code.
* Fixed potential crash because of NULL pointer in string comparison.
* Russian locale file updated by Vinny.
* Added NULL check to memory deallocation to prevent potential problems.
* Account.xml file format changed for multiple accounts by Alexandre Balaban.
* Added support for multiple accounts to Account window thanks to sourcecode
  contributed by Alexandre Balaban.
* Previously nonfunctional drop-down lister in Account window updated to add,
  delete and save alternate Jabber accounts.
* Locale files and catalogs updated for new buttons & labels.
* Changed minimum version for mailtext.mcc to 18.12.
* Numerous changes by Nicolas Sallin to eliminate compiler warnings for MorphOS.
* Unused variables removed, return values for some functions fixed and
  missing function prototypes added by Nicolas.
* Missing default cases for several switch() functions added by Nicolas.
* Several programming errors corrected by Nicolas.
* Added environmental variable "jabberIPA" to set IP Address for file transfers
  instead of using internally obtained IP Address. If the environmental
  variable is not present Jabberwocky uses the internal address as before.
* Changed the functions of the 'URL' text gadget and 'Visit' button in the
  Agents window to allow access to Transports on other Jabber servers.
  The 'URL' label is changed to 'ServerID' to indicate it's new function.
* Fixed bug introduced in pre1 that caused blank entries in the Roster
  when a message was received from a contact not already in the Roster.
* Made minor fixes to eliminate some compiler warnings.
* Added optional message logging for chats and messages.
* Rearranged and changed existing code to accomodate message logging.
* Added new prefs items to control message logging and enter a filename
  for the message log.
* Moved several prefs items to different pages in an effort to group
  similar prefs items together.
* Added checks for presence of required MUI libraries to program startup.
* Added requester to inform user which required libraries are missing.
* Added <Shift>double-click of a contact in the roster for opening a chat
  window for the clicked contact.
* Changed 'double-click on contact in roster' to open a chat window.
* Changed '<Shift>double-click on contact in roster' to open a message
  window.
* Added prefs option to open requester before removing contact.
* Added prefs option to send periodic connection checks (every 60 secs)
  to Jabber server to detect if server has disconnected.
* Added timer class to trigger server connection checks.
* Added Server connection detection function to all XML send functions.
* Added prefs controlled "reconnect" option to provide automatic
  reconnection if the Jabber server disconnects.
* Added prefs option to open a requester before disconnecting Jabberwocky
  when a server disconnection is detected. The user can select "Cancel"
  if he wants to save the contents of chat windows before Jabberwocky
  is disconnected and the roster reset.
* Added prefs option to display incoming and outgoing connection checks
  (blank messages) in log & console (previously displayed by default).
* Added prefs option to control whether chat, message & groupchat windows
  open "active" (steal focus) for popup notification.
* Several previously unlocalized text strings added to locale catalogs.
* Several modifications made by Christian Rosentreter to make version
  strings and several other items "styleguide" compliant.
* MorphOS makefiles updated by Nicolas Sallin to build locale catalogs.
* Removed some obsolete unused functions.
* Version strings updated to better reflect the platform (MorphOS,
  OS4, 68k) for which Jabberwocky has been compiled.
* Jabberwocky guide updated to match program changes.
* Fixed memory allocation for roster locale conversions.
* Moved roster locale conversion and textstyle computation out of the
  NList display hook so those functions are not unnecessarily executed
  every time the NList display is updated.
* Added context menus for the roster in the main Jabberwocky window based
  on source contributed by Frédéric Rignault (Polymere).
* Changed ARexx script execution function to look for the "RX" command in
  SYS:Rexxc and execute it from there if it exists.

V1.5 (02/21/2005)
=================
* Added a one second delay in the thread cleanup to allow an exit sound
  to play before the program exits.
* Changed a "Wait" function in the sound routine to respond to a "break"
  signal so Jabberwocky can close properly.
* Fixed roster comparison hook by adding additional comparisons.
* Added several changes to fix compiling for MorphOS.
* Numerous sourcecode changes for compiling OS4 PPC version of Jabberwocky.
* Added callback-hook and dispatcher definitions for OS4.
* Moved locale opening from startup/exit code to main program for OS4
  version of Jabberwocky.
* Added conditional OS4 library methods for compiling OS4/PPC version.
* PPC alignment macros added to Jabberwocky includes for MorphOS and OS4.
* Readme file added to makeinclude directory that specifies include files
  required for OS4.
* Makefiles added for OS4 compiling.
* Removed OS2 IFFParse-based localization functions and definitions from
  the locale template files.
* Updated the default Jabberwocky sounds with ones that should work on
  all platforms (OS3, OS4, MorphOS).
* Iksemel library data collection functions (message text etc.) rewritten
  so that discarded memory is deallocated when storage space for incoming
  text data is expanded. Previous functions consumed large amounts of memory
  for incoming text that was not released until the program exited.
* Changed the iksemel library XML parsing functions to use a fixed size
  buffer instead of allocating more memory for all incoming data.
  Previous functions could use large amounts of memory that was not
  released back to the system until the program exited.
* Corrected the column labels in the search results window. Fixed search
  window corruption caused by incorrect calculation of the number of columns
  required to display search results.
* All memory allocated by the iksemel library for data structures that are
  passed to the main program is now deallocated when no longer needed.
* Made a number of changes to eliminate compiler warnings when compiling
  the Jabberwocky source code.
* Added Russian locale catalog sourcefile contributed by Vinny.
* The "presence" cycle gadget in the main window is now disabled until
  Jabberwocky is connected and online.
* Added checks for successful shared library opening before starting the
  main program.
* Added signal bit definition missing from public MorphOS SDK to enable
  the sound routines for MorphOS version of Jabberwocky.
* Several missing MorphOS include directives were added by Christian
  Rosentreter.
* MorphOS locale sources and PPC makefiles updated by Nicolas Sallin.
* Numerous MorphOS sections of the Jabberwocky source code have been
  updated by Nicolas Sallin to be compliant with latest MorphOS system.
* Spanish locale catalog source file updated by Roger Barranco.
* Improved new sound routines to make them more effecient. Replaced the
  system break signal with an application allocated signal for starting
  sound play.
* Corrected "extended away" roster icon (wrong image).
* Changed ARexx CONNECT and SETPRESENCE commands to update the main window
  "presence" cycle gadget so the GUI will display the correct presence
  state if connection or presence changes are done through the ARexx port.
* Changed datatypes.library opening/closing to occur only once at beginning
  and end of the program. Added some safety checks to the beginning and end
  of the program.
* Added reset of main window "presence" cycle-gadget upon connection so
  that it now displays the correct presence state.
* Fixed "Information" window note to clear previous note if new presence
  does not contain status (note).
* Main window "presence" cycle gadget moved from Presence Tab to main
  window for easier access and visibility. Added clear button to Presence
  Tab for convenience.
* Rewrote the sound routines to avoid chip memory loss caused by datatypes
  signaling failure for multiple sound plays. Sounds now play one at a time
  without interruption or queu'ing. Sound files only loaded if type of
  event changes. Single thread used for sound playing.
* Added sound semaphore initialization to prefs.
* Window activtion for popup notification removed from chat, conference and
  message windows.
* Fixed conference window popup notification. Now works for all conference
  windows instead of only the first one opened.
* Fixed enforcer hit in conference windows.
* Checkmark menu items now work,
* HTTP server port use, save and load now works.
* Prefs listers now activate when opened.
* "Exit" popup notification disabled. (Popup on exit makes no sense)
* Added prefs option for "Chat" window timestamps.
* Added prefs controlled timestamps to "Chat" windows.
* Fixed NList menu shortcut conflict from all windows except "Read".
  User must disable "context" menus in Mailtext MUI prefs for all
  menu shortcuts to work in "Read" window. (MUI & NList problem/bug)
* "Conference" button in "Agents" window now disabled if an agent doesn't
  offer that option.
* Added toggle button to prefs to control quit requester option.
* Added prefs controlled quit requester to main window.
* Account no longer saved in Account window if "Remember Password" is
  not checkmarked. (Defaults to not checkmarked if account file exists).
* Write message window email style quoting added for replies. Proper
  cursor positioning and activation added.
* Fixed bug that prevented connecting after a file transfer.
* File Transfer window localized.
* Previously overlooked labels in other windows localized.
* Menus reorganized by Matthias.
* "Popup Notify" menu item now works.
* "Sound Notify" menu item now works.
* "Command Notify" menu item now works.
* Popup events implemented and can be used, saved and loaded in prefs.
* ARexx "Execute Script" menu item implemented with file requester to select
  the script to execute.
* Menu shortcuts added to default English version.
* Menu shortcuts and translations added German and French locale catalogs.
* All other catalogs are updated but need translations and menu shortcuts.
* Tabs in main window and "User Information" window now accessible from the
  keyboard.
* "Accept & Subscribe" button in "Subscription Requests" window now works.
* Keyboard control added to Chat, Console and Write windows.
* "Save" button in the "Chat" window now opens file requester and saves
  contents of the window.
* "Sendfile" button in "Chat" window now works.
* "Save" button in the "Console" window now opens file requester and saves
  contents of the window.
* ARexx "Connect" command now connects to a specified account if the JID
  and PASSWORD arguments are used.
* Main window "status" gadget now displays currently connected account.
* Save button in "Chat" window implemented and opens file requester.
* Sendfile button in "Chat" window activated.
* Save button in "Console" window implemented and opens file requester.
* Accept&Subscribe button in "Subscription Requests" window now works.
* Menus reorganized by Matthias Münch.
* ARexx "Execute Script" menu item implemented with file requester to
  select script for execution.
* Menu shortcuts added to English, French and German locale catalogs.
* Keyboard control added to Chat, Console and Write windows.
* Tabs in main window and "User Information" window made accessible from
  the keyboard.
* Popup events implemented and can be used, saved and loaded in prefs.
* "Popup Notify", "Command Notify" and "Sound Notify" menu items fixed.
* HTTP server port use, save and load added.
* Prefs listers now activate when opened.
* "Exit" popup notification disabled. (Popup on exit makes no sense)
* Added prefs controlled timestamps to "Chat" windows.
* Fixed NList menu shortcut conflict from all windows except "Read".
  User must disable "context" menus in Mailtext MUI prefs for all
  menu shortcuts to work in "Read" window. (MUI & NList problem/bug)
* "Conference" button in "Agents" window now disabled if an agent doesn't
  offer that option.
* Added prefs controlled quit requester.
* Exit sound event fixed.
* Account no longer saved in Account window if "Remember Password" is
  not checkmarked. (Defaults to not checkmarked if account file exists).
* Write message window email style quoting added for replies. Proper
  cursor positioning and activation added.
* Fixed bug that prevented connecting after a file transfer.
* Numerous locale additions and updates.
* Additional French locale translations by Jerome Chesnot.
* Additional German locale translations by Matthias Münch.

V1.4 (12/30/2003)
=================
* Support for 8 bit Latin-1 characters.
* Fixed transparency of icons in roster window (thanks to Jeff Gilpin).
* Fixed long standing enforcer hit when removing contacts (also thanks to
  Jeff Gilpin as a side effect of the transparency fix).
* Some support for displaying errors in the roster (but I haven't actually
  had any errors that trigger it, so it either doesn't work, or I haven't
  had any errors).
* Fixed enforcer hit on startup when autoconnect is on and there is no
  account information (introduced in 1.3).
* Roster displays the event icon until all unread messages have been read.
* Roster icons may be loaded from disk (thanks to Jeff Gilpin).
* Roster icon set by Martin 'Mason' Merz.
* Iconified icons by Jeff Gilpin.
* Fix for initial iconified icon (thanks to Jeff Gilpin).
* Deutsch Translation by Matthias Münch.
* Nederlands Translation by Djordje Slocuk <s.slocuk1@chello.nl>.
* Polski Translation by Kamil Niescioruk <kniescio@biotop.umcs.lublin.pl>
  and Mariusz Danilewicz <mandi@interia.pl>.
* Portuguese translation by Raul Silva <luarsilva@mail.telepac.pt>.
* Srpski Translation by Djordje Slocuk <s.slocuk1@chello.nl>.
* Spanish Translation by Roger Barranco <cebollino@lycos.es>.
* Online help activated (thanks to Jeff Gilpin).
* Only one subscription request per user will be displayed at any one time
  (thanks to Jeff Gilpin).

V1.3
====
* Fixed two enforcer hits reported by Luca 'Hexaae' Longone.
* Localization support in most dialogs.
* French language catalog.
* Català language catalog.
* Autoconnect on startup preference now saved and used.
* Logging preferences now saved and used.
* Autoiconify on startup preference removed (use MUI preferences).
* Can use the chat window for messages and vice versa (see prefs).
* Fixed another enforcer hit.
* Fixed buffer overflow.
* Minor unicode support improvement.

V1.2
====
* Fixed embarrassing enforcer hit.

V1.1
====
* Sourcecode released under the GNU General Public License.
* Gürer Özen is no longer developing Jabberwocky.
* Jabberwocky SourceForge CVS repository created.
* Include files patched for GCC compiling.
* Initial bugs fixed.
* New Documentation (thanks to Jeff Gilpin).
* Fixes for roster corruption during contact removal, subscription
  and update.
* Message reading uses mailtext.mcc - configure URL detection and
  actions in the MUI prefs.
* Prefs command execution on events fixed.
* Clear(ish) flagging of contacts with pending subscriptions.
* Add Contact now correctly saves a user's name.

V1.0
====
First public release.

@endnode


@node "future" "Future Plans"

@{b}@{u}Future Plans@{ub}@{uu}

* Bugfixes, lots of them :)
* Plugin api for extending Jabber protocol.
* More ARexx commands.
* VCard support.
* Message database and history.
* SSL/HTTP connections to servers.

You can also contribute to the Jabberwocky by sending @{b}original@{ub}
artwork (icons, logos, etc), sound effects for events, and useful Arexx
scripts to the authors.

@endnode


@node "thanks" "Thanks"

@{b}@{u}Thanks@{ub}@{uu}

* Gürer Özen for developing the Jabberwocky program.

* Tom Parker and Matthias Münch for continuing the development,
  constructing the Jabberwocky WEB site and establishing a mailing list.

* Jeff Gilpin for updating the documentation and continuing developement.


Gürer Özen would like to thank:

* Jeremie Miller and other Jabber developers for designing
and coding such a good instant messaging system.

* Jacob Laursen for taking over the development of Amster,
and thus giving me more time for working on Jabberwocky.

* Ralph Schmidt and Emmanuel Lesueur for MorphOS, ppc
versions of ixemul, gcc, ade, and porting help.

@endnode


@node "GNU License"

@{b}@{u}GNU General Public License@{ub}@{uu}


		    GNU GENERAL PUBLIC LICENSE
		       Version 2, June 1991

 Copyright (C) 1989, 1991 Free Software Foundation, Inc.
 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
 Everyone is permitted to copy and distribute verbatim copies
 of this license document, but changing it is not allowed.

			    Preamble

  The licenses for most software are designed to take away your
freedom to share and change it.  By contrast, the GNU General Public
License is intended to guarantee your freedom to share and change free
software--to make sure the software is free for all its users.  This
General Public License applies to most of the Free Software
Foundation's software and to any other program whose authors commit to
using it.  (Some other Free Software Foundation software is covered by
the GNU Library General Public License instead.)  You can apply it to
your programs, too.

  When we speak of free software, we are referring to freedom, not
price.  Our General Public Licenses are designed to make sure that you
have the freedom to distribute copies of free software (and charge for
this service if you wish), that you receive source code or can get it
if you want it, that you can change the software or use pieces of it
in new free programs; and that you know you can do these things.

  To protect your rights, we need to make restrictions that forbid
anyone to deny you these rights or to ask you to surrender the rights.
These restrictions translate to certain responsibilities for you if you
distribute copies of the software, or if you modify it.

  For example, if you distribute copies of such a program, whether
gratis or for a fee, you must give the recipients all the rights that
you have.  You must make sure that they, too, receive or can get the
source code.  And you must show them these terms so they know their
rights.

  We protect your rights with two steps: (1) copyright the software, and
(2) offer you this license which gives you legal permission to copy,
distribute and/or modify the software.

  Also, for each author's protection and ours, we want to make certain
that everyone understands that there is no warranty for this free
software.  If the software is modified by someone else and passed on, we
want its recipients to know that what they have is not the original, so
that any problems introduced by others will not reflect on the original
authors' reputations.

  Finally, any free program is threatened constantly by software
patents.  We wish to avoid the danger that redistributors of a free
program will individually obtain patent licenses, in effect making the
program proprietary.  To prevent this, we have made it clear that any
patent must be licensed for everyone's free use or not licensed at all.

  The precise terms and conditions for copying, distribution and
modification follow.

		    GNU GENERAL PUBLIC LICENSE
   TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION

  0. This License applies to any program or other work which contains
a notice placed by the copyright holder saying it may be distributed
under the terms of this General Public License.  The "Program", below,
refers to any such program or work, and a "work based on the Program"
means either the Program or any derivative work under copyright law:
that is to say, a work containing the Program or a portion of it,
either verbatim or with modifications and/or translated into another
language.  (Hereinafter, translation is included without limitation in
the term "modification".)  Each licensee is addressed as "you".

Activities other than copying, distribution and modification are not
covered by this License; they are outside its scope.  The act of
running the Program is not restricted, and the output from the Program
is covered only if its contents constitute a work based on the
Program (independent of having been made by running the Program).
Whether that is true depends on what the Program does.

  1. You may copy and distribute verbatim copies of the Program's
source code as you receive it, in any medium, provided that you
conspicuously and appropriately publish on each copy an appropriate
copyright notice and disclaimer of warranty; keep intact all the
notices that refer to this License and to the absence of any warranty;
and give any other recipients of the Program a copy of this License
along with the Program.

You may charge a fee for the physical act of transferring a copy, and
you may at your option offer warranty protection in exchange for a fee.

  2. You may modify your copy or copies of the Program or any portion
of it, thus forming a work based on the Program, and copy and
distribute such modifications or work under the terms of Section 1
above, provided that you also meet all of these conditions:

    a) You must cause the modified files to carry prominent notices
    stating that you changed the files and the date of any change.

    b) You must cause any work that you distribute or publish, that in
    whole or in part contains or is derived from the Program or any
    part thereof, to be licensed as a whole at no charge to all third
    parties under the terms of this License.

    c) If the modified program normally reads commands interactively
    when run, you must cause it, when started running for such
    interactive use in the most ordinary way, to print or display an
    announcement including an appropriate copyright notice and a
    notice that there is no warranty (or else, saying that you provide
    a warranty) and that users may redistribute the program under
    these conditions, and telling the user how to view a copy of this
    License.  (Exception: if the Program itself is interactive but
    does not normally print such an announcement, your work based on
    the Program is not required to print an announcement.)

These requirements apply to the modified work as a whole.  If
identifiable sections of that work are not derived from the Program,
and can be reasonably considered independent and separate works in
themselves, then this License, and its terms, do not apply to those
sections when you distribute them as separate works.  But when you
distribute the same sections as part of a whole which is a work based
on the Program, the distribution of the whole must be on the terms of
this License, whose permissions for other licensees extend to the
entire whole, and thus to each and every part regardless of who wrote it.

Thus, it is not the intent of this section to claim rights or contest
your rights to work written entirely by you; rather, the intent is to
exercise the right to control the distribution of derivative or
collective works based on the Program.

In addition, mere aggregation of another work not based on the Program
with the Program (or with a work based on the Program) on a volume of
a storage or distribution medium does not bring the other work under
the scope of this License.

  3. You may copy and distribute the Program (or a work based on it,
under Section 2) in object code or executable form under the terms of
Sections 1 and 2 above provided that you also do one of the following:

    a) Accompany it with the complete corresponding machine-readable
    source code, which must be distributed under the terms of Sections
    1 and 2 above on a medium customarily used for software interchange; or,

    b) Accompany it with a written offer, valid for at least three
    years, to give any third party, for a charge no more than your
    cost of physically performing source distribution, a complete
    machine-readable copy of the corresponding source code, to be
    distributed under the terms of Sections 1 and 2 above on a medium
    customarily used for software interchange; or,

    c) Accompany it with the information you received as to the offer
    to distribute corresponding source code.  (This alternative is
    allowed only for noncommercial distribution and only if you
    received the program in object code or executable form with such
    an offer, in accord with Subsection b above.)

The source code for a work means the preferred form of the work for
making modifications to it.  For an executable work, complete source
code means all the source code for all modules it contains, plus any
associated interface definition files, plus the scripts used to
control compilation and installation of the executable.  However, as a
special exception, the source code distributed need not include
anything that is normally distributed (in either source or binary
form) with the major components (compiler, kernel, and so on) of the
operating system on which the executable runs, unless that component
itself accompanies the executable.

If distribution of executable or object code is made by offering
access to copy from a designated place, then offering equivalent
access to copy the source code from the same place counts as
distribution of the source code, even though third parties are not
compelled to copy the source along with the object code.

  4. You may not copy, modify, sublicense, or distribute the Program
except as expressly provided under this License.  Any attempt
otherwise to copy, modify, sublicense or distribute the Program is
void, and will automatically terminate your rights under this License.
However, parties who have received copies, or rights, from you under
this License will not have their licenses terminated so long as such
parties remain in full compliance.

  5. You are not required to accept this License, since you have not
signed it.  However, nothing else grants you permission to modify or
distribute the Program or its derivative works.  These actions are
prohibited by law if you do not accept this License.  Therefore, by
modifying or distributing the Program (or any work based on the
Program), you indicate your acceptance of this License to do so, and
all its terms and conditions for copying, distributing or modifying
the Program or works based on it.

  6. Each time you redistribute the Program (or any work based on the
Program), the recipient automatically receives a license from the
original licensor to copy, distribute or modify the Program subject to
these terms and conditions.  You may not impose any further
restrictions on the recipients' exercise of the rights granted herein.
You are not responsible for enforcing compliance by third parties to
this License.

  7. If, as a consequence of a court judgment or allegation of patent
infringement or for any other reason (not limited to patent issues),
conditions are imposed on you (whether by court order, agreement or
otherwise) that contradict the conditions of this License, they do not
excuse you from the conditions of this License.  If you cannot
distribute so as to satisfy simultaneously your obligations under this
License and any other pertinent obligations, then as a consequence you
may not distribute the Program at all.  For example, if a patent
license would not permit royalty-free redistribution of the Program by
all those who receive copies directly or indirectly through you, then
the only way you could satisfy both it and this License would be to
refrain entirely from distribution of the Program.

If any portion of this section is held invalid or unenforceable under
any particular circumstance, the balance of the section is intended to
apply and the section as a whole is intended to apply in other
circumstances.

It is not the purpose of this section to induce you to infringe any
patents or other property right claims or to contest validity of any
such claims; this section has the sole purpose of protecting the
integrity of the free software distribution system, which is
implemented by public license practices.  Many people have made
generous contributions to the wide range of software distributed
through that system in reliance on consistent application of that
system; it is up to the author/donor to decide if he or she is willing
to distribute software through any other system and a licensee cannot
impose that choice.

This section is intended to make thoroughly clear what is believed to
be a consequence of the rest of this License.

  8. If the distribution and/or use of the Program is restricted in
certain countries either by patents or by copyrighted interfaces, the
original copyright holder who places the Program under this License
may add an explicit geographical distribution limitation excluding
those countries, so that distribution is permitted only in or among
countries not thus excluded.  In such case, this License incorporates
the limitation as if written in the body of this License.

  9. The Free Software Foundation may publish revised and/or new versions
of the General Public License from time to time.  Such new versions will
be similar in spirit to the present version, but may differ in detail to
address new problems or concerns.

Each version is given a distinguishing version number.  If the Program
specifies a version number of this License which applies to it and "any
later version", you have the option of following the terms and conditions
either of that version or of any later version published by the Free
Software Foundation.  If the Program does not specify a version number of
this License, you may choose any version ever published by the Free Software
Foundation.

  10. If you wish to incorporate parts of the Program into other free
programs whose distribution conditions are different, write to the author
to ask for permission.  For software which is copyrighted by the Free
Software Foundation, write to the Free Software Foundation; we sometimes
make exceptions for this.  Our decision will be guided by the two goals
of preserving the free status of all derivatives of our free software and
of promoting the sharing and reuse of software generally.

			    NO WARRANTY

  11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY
FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW.  EXCEPT WHEN
OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES
PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED
OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.  THE ENTIRE RISK AS
TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU.  SHOULD THE
PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING,
REPAIR OR CORRECTION.

  12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR
REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,
INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING
OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED
TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY
YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER
PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE
POSSIBILITY OF SUCH DAMAGES.

		     END OF TERMS AND CONDITIONS

@endnode

