
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.
