
Eteria IRC Client, an RFC 1459 compliant client program written in Java.
Copyright (C) 2000  Javier Kohen <jkohen at tough.com>


Install
-------

This procedure is pretty straightforward, there is a sample index.html
file that loads EIRC embedded in the current window. You only need
that and the provided EIRC.jar and EIRC-gfx.jar if you want an
out-of-the-box installation.

You can't make the client connect to a server other than from where it
was loaded due to JVM's restrictions. You can workaround this either
by using an IRC or TCP proxy, or by relaxing the JVM's restrictions.

Here's a list of what's the function of each html parameter to the
applet, please read this information carefully:

 * server (required)
   The host for the IRC server.

 * port (required)
   The port where the IRC server listens.

 * mainbg (optional)
   Most things' background color.

 * mainfg (optional)
   Most things' foreground color.

 * textbg (optional)
   Text areas and fields' background color.

 * textfg (optional)
   Text areas and fields' foreground color.

 * channel (optional)
   What channel should be automatically opened when a connection is established.

 * titleExtra (optional)
   This is concatenated to the channel or user's name to form the window's title.

 * username (optional)
   What "user name" -sometimes called userid or ident- will be passed
to the server. Default is "eirc".

 * realname (optional)
   What "real name" will be passed to the server.

 * nickname (optional)
   What "nick name" will be put in the nick field at start up. If the
character '?' is used somewhere in the VALUE field, it will be changed
to a random number by the client on load.

 * password (optional)
   Will specify a password to send to the server for
authentication. It could be empty, so the user has to enter a password
himself. If this param is not present, the Password button isn't
shown.
   I think this is only useful if you authenticate your users from the
WWW before giving them access to the password, which appears as plain
text in the HTML.

 * servPassword (optional)
   Will specify a password to send to NickServ for nickname
registration and indentification.

 * servEmail (optional)
   Will specify an email to send to NickServ for nickname registration.

 * login (optional, requires nickname)
   If it's set to anything but "0", it will try to establish a
connection to the server on start up.

 * language (optional, requires "country")
   What language to use for the client. If not provided, the JVM will
choose the system default (See "Internationalization" below.)

 * country (optional, requires "language")
   What country's derivation of language to use for the client. If not
provided, the JVM will choose the system default (See
"Internationalization" below.)

Note: optional parameters may be left out, they will be set to
reasonable defaults; the rest, must be included.

There's also an optional config file (configuration.properties) that
permits the tuning of some options. Check it out, even when the
default values are -hopefully- sane, it might be worth customizing the
client.

You can use your own artwork without modifying the source codes, just
build your customized EIRC-gfx.jar and edit Image.properties
accordingly. You can base your work on the supplied EIRC-gfx.jar.


Login
-----

The login process follows these steps:

A) Standard RFC login.
1. Sends the server password, if provided.
2. Sends the nick name.
3. Sends the user info. The user name is "eirc" and the real name is an empty string, unless provided.

B) Extra steps.
1. Requests MOTD, if specified.
2. Joins the default channel, if one's provided.
3. Identifies to NickServ, if service's password is provided, regarding of special services setting.


Internationalization
--------------------

The default locale will be selected by the JVM from your environment
LC_* variables. To see how to choose a specific locale, read the
"Installing" section.

The next diagram ilustrates how the translation is selected, it's been
extracted (and slightly simplified) from the Sun's JDK documentation:

The resource bundle lookup searches for classes with various suffixes
on the basis of (1) the desired locale and (2) the current default
locale as returned by Locale.getDefault(), and (3) the root resource
bundle (baseclass), in the following order from lower-level (more
specific) to parent-level (less specific):

baseclass + "_" + language1 + "_" + country1 
baseclass + "_" + language1 
baseclass + "_" + language2 + "_" + country2 
baseclass + "_" + language2 
baseclass 

To see what languages are already available in the package, list
src/properties/Resources_*. If you know you won't need a language, you
can delete the associated file to make slimer jars; don't forget to
repackage the jar after doing so. Also, if one particular language you
need is not provided, please take some time to write the translation
yourself (read below) and then send it to me.

Writting new translations is straightforward, just copy
Resources.properties to Resources.properties_<two-letter-lang> or
Resources.properties_<two-letterlang_<two_letter_country>. For
instance:

Resources_en.properties is the fallback resource file for all English speakers.
Resources_en_NZ.properties is the specific resource file for the English speakers at New Zealand.

If you write a translation and specify the country in the file name,
make sure that there's a fallback file provided for that language (it
could be just a link to or a copy of the one you wrote), ie: if you
write Resources_fr_CH.properties, make sure there's a
Resources_fr.properties, too.


Windows Layout
--------------

If you want to modify the default windows layout, you don't need to
edit the code (at this moment all you can do is some simple
arrangements, more flexible options will be available later). Check
docs/htmllayout/ and src/htmll/ to see how to do it, it's even easier
if you already know the HTML basics.
