Increased the IRC Connection timeout to 60seconds since some of the
servers take more than 30 seconds to complete the connection
initialization.
diff --git a/providers/bundles/org.eclipse.ecf.provider.irc.ui/src/org/eclipse/ecf/internal/irc/ui/wizards/IRCConnectWizardPage.java b/providers/bundles/org.eclipse.ecf.provider.irc.ui/src/org/eclipse/ecf/internal/irc/ui/wizards/IRCConnectWizardPage.java
index 58da382..3dc15fe 100644
--- a/providers/bundles/org.eclipse.ecf.provider.irc.ui/src/org/eclipse/ecf/internal/irc/ui/wizards/IRCConnectWizardPage.java
+++ b/providers/bundles/org.eclipse.ecf.provider.irc.ui/src/org/eclipse/ecf/internal/irc/ui/wizards/IRCConnectWizardPage.java
@@ -36,7 +36,8 @@
 
 	private Combo connectTimeOut;
 
-	private String[] connectTimeOutValues = { "10", "15", "20", "25", "30" };
+	private String[] connectTimeOutValues = { "10", "20", "30", "40", "50",
+			"60" };
 
 	IRCConnectWizardPage() {
 		super("IRCConnectWizardPage"); //$NON-NLS-1$
diff --git a/providers/bundles/org.eclipse.ecf.provider.irc/src/org/eclipse/ecf/internal/provider/irc/container/IRCChannelContainer.java b/providers/bundles/org.eclipse.ecf.provider.irc/src/org/eclipse/ecf/internal/provider/irc/container/IRCChannelContainer.java
index 4716a3e..f98c3c5 100644
--- a/providers/bundles/org.eclipse.ecf.provider.irc/src/org/eclipse/ecf/internal/provider/irc/container/IRCChannelContainer.java
+++ b/providers/bundles/org.eclipse.ecf.provider.irc/src/org/eclipse/ecf/internal/provider/irc/container/IRCChannelContainer.java
@@ -33,7 +33,7 @@
 		IChatMessageSender, IChatRoomContainer {
 
 	private static final long CONNECT_TIMEOUT = new Long(System.getProperty(
-			"org.eclipse.ecf.provider.irc.connectTimeout", "30000"))
+			"org.eclipse.ecf.provider.irc.connectTimeout", "60000"))
 			.longValue();
 
 	protected List participantListeners = new ArrayList();
diff --git a/providers/bundles/org.eclipse.ecf.provider.irc/src/org/eclipse/ecf/internal/provider/irc/container/IRCRootContainer.java b/providers/bundles/org.eclipse.ecf.provider.irc/src/org/eclipse/ecf/internal/provider/irc/container/IRCRootContainer.java
index 3c9729b..2201c9a 100644
--- a/providers/bundles/org.eclipse.ecf.provider.irc/src/org/eclipse/ecf/internal/provider/irc/container/IRCRootContainer.java
+++ b/providers/bundles/org.eclipse.ecf.provider.irc/src/org/eclipse/ecf/internal/provider/irc/container/IRCRootContainer.java
@@ -11,8 +11,6 @@
  ******************************************************************************/
 package org.eclipse.ecf.internal.provider.irc.container;
 
-import java.util.StringTokenizer;
-
 import java.net.InetSocketAddress;
 import java.util.*;
 import org.eclipse.ecf.core.*;
@@ -29,8 +27,8 @@
 import org.eclipse.ecf.presence.chatroom.*;
 import org.eclipse.ecf.presence.history.IHistory;
 import org.eclipse.ecf.presence.history.IHistoryManager;
-import org.eclipse.ecf.presence.im.IChatMessageSender;
 import org.eclipse.ecf.presence.im.IChatMessage.Type;
+import org.eclipse.ecf.presence.im.IChatMessageSender;
 import org.eclipse.equinox.concurrent.future.TimeoutException;
 import org.eclipse.osgi.util.NLS;
 import org.osgi.framework.Bundle;
@@ -49,7 +47,9 @@
 		IChatRoomManager, IChatRoomContainer, IRCMessageChannel,
 		IChatRoomContainerOptionsAdapter {
 
-	private static final long CONNECT_TIMEOUT = 20000;
+	private static final long CONNECT_TIMEOUT = new Long(System.getProperty(
+			"org.eclipse.ecf.provider.irc.connectTimeout", "60000"))
+			.longValue();
 
 	protected IRCConnection connection = null;
 
@@ -73,7 +73,8 @@
 	private IIRCDatashareContainer datashareContainer;
 
 	/**
-	 * Used for determining whether the USERHOST reply should be hijacked or not.
+	 * Used for determining whether the USERHOST reply should be hijacked or
+	 * not.
 	 */
 	private boolean retrieveUserhost;
 
@@ -89,7 +90,8 @@
 	/**
 	 * Creates and returns a datashare container implementation.
 	 * 
-	 * @return a datashare container implementation for this container, or <code>null</code> if it could not be created
+	 * @return a datashare container implementation for this container, or
+	 *         <code>null</code> if it could not be created
 	 */
 	private IIRCDatashareContainer createDatashareContainer() {
 		if (hasDatashare() && hasNIO()) {
@@ -99,18 +101,25 @@
 	}
 
 	/**
-	 * Checks and returns whether the datashare NIO APIs are available in the current OSGi environment.
-	 * @return <code>true</code> if the datashare NIO APIs are available, <code>false</code> otherwise
+	 * Checks and returns whether the datashare NIO APIs are available in the
+	 * current OSGi environment.
+	 * 
+	 * @return <code>true</code> if the datashare NIO APIs are available,
+	 *         <code>false</code> otherwise
 	 */
 	private boolean hasDatashare() {
 		PackageAdmin admin = Activator.getDefault().getPackageAdmin();
-		Bundle[] bundles = admin.getBundles("org.eclipse.ecf.provider.datashare.nio", null); //$NON-NLS-1$
+		Bundle[] bundles = admin.getBundles(
+				"org.eclipse.ecf.provider.datashare.nio", null); //$NON-NLS-1$
 		return bundles != null && bundles.length != 0;
 	}
 
 	/**
-	 * Checks and returns there is Java 1.4 NIO support in the current Java runtime environment.
-	 * @return <code>true</code> if the Java 1.4 NIO APIs are available, <code>false</code> otherwise
+	 * Checks and returns there is Java 1.4 NIO support in the current Java
+	 * runtime environment.
+	 * 
+	 * @return <code>true</code> if the Java 1.4 NIO APIs are available,
+	 *         <code>false</code> otherwise
 	 */
 	private boolean hasNIO() {
 		try {
@@ -183,8 +192,8 @@
 				}
 				if (connectWaiting)
 					throw new TimeoutException(NLS.bind(
-							Messages.IRCRootContainer_Connect_Timeout, tID
-									.getName()), CONNECT_TIMEOUT);
+							Messages.IRCRootContainer_Connect_Timeout,
+							tID.getName()), CONNECT_TIMEOUT);
 				if (connectException != null)
 					throw connectException;
 				this.targetID = tID;
@@ -196,7 +205,7 @@
 					// message to the server so that we can attempt to retrieve
 					// our current IP
 					retrieveUserhost = true;
-					connection.doUserhost(nick);	
+					connection.doUserhost(nick);
 				}
 			} catch (Exception e) {
 				this.targetID = null;
@@ -249,30 +258,30 @@
 				}
 				if (targetID != null) {
 					showMessage(null, NLS.bind(
-							Messages.IRCRootContainer_Disconnected, targetID
-									.getName()));
+							Messages.IRCRootContainer_Disconnected,
+							targetID.getName()));
 					handleDisconnected();
 				}
 			}
 
 			public void onError(String arg0) {
 				trace("handleOnError(" + arg0 + ")"); //$NON-NLS-1$ //$NON-NLS-2$
-				showMessage(null, NLS.bind(Messages.IRCRootContainer_Error,
-						arg0));
+				showMessage(null,
+						NLS.bind(Messages.IRCRootContainer_Error, arg0));
 				handleErrorIfConnecting(arg0);
 			}
 
 			public void onError(int arg0, String arg1) {
 				String msg = arg0 + "," + arg1; //$NON-NLS-1$
 				trace("handleOnError(" + msg + ")"); //$NON-NLS-1$ //$NON-NLS-2$
-				showMessage(null, NLS
-						.bind(Messages.IRCRootContainer_Error, msg));
+				showMessage(null,
+						NLS.bind(Messages.IRCRootContainer_Error, msg));
 				handleErrorIfConnecting(arg0 + msg);
 			}
 
 			public void onInvite(String arg0, IRCUser arg1, String arg2) {
-				handleInvite(createIDFromString(arg0), createIDFromString(arg1
-						.getNick()));
+				handleInvite(createIDFromString(arg0),
+						createIDFromString(arg1.getNick()));
 			}
 
 			public void onJoin(String arg0, IRCUser arg1) {
@@ -299,14 +308,12 @@
 					// check if we are the ones that have been kicked
 					if (kicked.equals(((IRCID) targetID).getUsername())) {
 						// fire disconnection events for this channel container
-						channel
-								.fireContainerEvent(new ContainerDisconnectingEvent(
-										channel.getID(), channel.targetID));
+						channel.fireContainerEvent(new ContainerDisconnectingEvent(
+								channel.getID(), channel.targetID));
 						channel.firePresenceListeners(false,
 								new String[] { kicked });
-						channel
-								.fireContainerEvent(new ContainerDisconnectedEvent(
-										channel.getID(), channel.targetID));
+						channel.fireContainerEvent(new ContainerDisconnectedEvent(
+								channel.getID(), channel.targetID));
 					} else {
 						channel.firePresenceListeners(false,
 								new String[] { kicked });
@@ -362,9 +369,11 @@
 						// remote peer and initiate a socket connection
 						String identifier = arg2
 								.substring(5, arg2.length() - 1);
-						StringTokenizer tokenizer = new StringTokenizer(identifier, ":"); //$NON-NLS-1$
-						datashareContainer.enqueue(new InetSocketAddress(tokenizer.nextToken(),
-								Integer.parseInt(tokenizer.nextToken())));
+						StringTokenizer tokenizer = new StringTokenizer(
+								identifier, ":"); //$NON-NLS-1$
+						datashareContainer.enqueue(new InetSocketAddress(
+								tokenizer.nextToken(), Integer
+										.parseInt(tokenizer.nextToken())));
 					}
 				} else {
 					showMessage(arg0, arg1.toString(), arg2);
@@ -430,7 +439,8 @@
 			return null;
 		} else if (serviceType.isInstance(this)) {
 			return this;
-		} else if (datashareContainer != null && serviceType.isInstance(datashareContainer)) {
+		} else if (datashareContainer != null
+				&& serviceType.isInstance(datashareContainer)) {
 			return datashareContainer;
 		}
 		return null;
@@ -640,19 +650,17 @@
 						commandMessage = commandMessage.substring(5);
 						int index = commandMessage.indexOf(COMMAND_DELIM);
 						if (index != -1) {
-							connection
-									.doPrivmsg(commandMessage.substring(0,
-											index), commandMessage
-											.substring(index + 1));
+							connection.doPrivmsg(
+									commandMessage.substring(0, index),
+									commandMessage.substring(index + 1));
 						}
 					} else if (lowerCase.startsWith("/privmsg ")) { //$NON-NLS-1$
 						commandMessage = commandMessage.substring(9);
 						int index = commandMessage.indexOf(COMMAND_DELIM);
 						if (index != -1) {
-							connection
-									.doPrivmsg(commandMessage.substring(0,
-											index), commandMessage
-											.substring(index + 1));
+							connection.doPrivmsg(
+									commandMessage.substring(0, index),
+									commandMessage.substring(index + 1));
 						}
 					} else if (lowerCase.startsWith("/op ")) { //$NON-NLS-1$
 						nextToken(command); // skip command
@@ -881,8 +889,8 @@
 	protected void handle353Reply(String channel, String[] strings) {
 		IRCChannelContainer container = getChannel(channel);
 		if (container == null) {
-			showMessage(null, NLS.bind(Messages.IRCRootContainer_353_Error,
-					channel));
+			showMessage(null,
+					NLS.bind(Messages.IRCRootContainer_353_Error, channel));
 		} else
 			container.firePresenceListeners(true, strings);
 	}
@@ -895,8 +903,8 @@
 				handle353Reply(users[2], parseUserNames(arg2));
 				break;
 			case 311:
-				showMessage(null, NLS.bind(Messages.IRCRootContainer_Whois,
-						users[1]));
+				showMessage(null,
+						NLS.bind(Messages.IRCRootContainer_Whois, users[1]));
 				showMessage(null, trimUsername(users[2]) + "@" + users[3]); //$NON-NLS-1$
 				break;
 			case 312:
@@ -904,15 +912,15 @@
 						new Object[] { users[2], arg2 }));
 				break;
 			case 317:
-				showMessage(null, NLS.bind(Messages.IRCRootContainer_Idle,
-						users[2]));
+				showMessage(null,
+						NLS.bind(Messages.IRCRootContainer_Idle, users[2]));
 				break;
 			case 318:
 				showMessage(null, Messages.IRCRootContainer_Whois_End);
 				break;
 			case 319:
-				showMessage(null, NLS.bind(Messages.IRCRootContainer_Channels,
-						arg2));
+				showMessage(null,
+						NLS.bind(Messages.IRCRootContainer_Channels, arg2));
 				break;
 			case 320:
 				break;
@@ -927,7 +935,7 @@
 			case 302:
 				if (retrieveUserhost) {
 					if (datashareContainer != null) {
-						// set the retrieved ip address from the 
+						// set the retrieved ip address from the
 						arg2 = arg2.trim();
 						String ip = arg2.substring(arg2.lastIndexOf('@') + 1);
 						datashareContainer.setIP(ip);