diff --git a/src/net/java/sip/communicator/impl/protocol/irc/IrcStatusEnum.java b/src/net/java/sip/communicator/impl/protocol/irc/IrcStatusEnum.java
new file mode 100644
index 000000000..d1fb474dc
--- /dev/null
+++ b/src/net/java/sip/communicator/impl/protocol/irc/IrcStatusEnum.java
@@ -0,0 +1,116 @@
+/*
+ * SIP Communicator, the OpenSource Java VoIP and Instant Messaging client.
+ *
+ * Distributable under LGPL license.
+ * See terms of license at gnu.org.
+ */
+package net.java.sip.communicator.impl.protocol.irc;
+
+import java.util.*;
+
+import net.java.sip.communicator.service.protocol.*;
+import net.java.sip.communicator.util.*;
+import java.io.*;
+
+/**
+ * An implementation of PresenceStatus that enumerates all states that
+ * an IRC contact can fall into.
+ *
+ * @author Stephane Remy
+ * @author Loic Kempf
+ */
+public class IrcStatusEnum
+ extends PresenceStatus
+{
+ private static final Logger logger
+ = Logger.getLogger(IrcStatusEnum.class);
+
+ /**
+ * Indicates an Offline status or status with 0 connectivity.
+ */
+ public static final IrcStatusEnum OFFLINE
+ = new IrcStatusEnum(
+ 0
+ , "Offline"
+ , loadIcon("resources/images/irc/cr16-action-irc_offline.png"));
+
+ /**
+ * The Away status. Indicates that the user has connectivity but might
+ * not be able to immediately act upon initiation of communication.
+ */
+ public static final IrcStatusEnum AWAY
+ = new IrcStatusEnum(
+ 40
+ , "Away"
+ , loadIcon("resources/images/gibberish/gibberish-away.png"));
+
+ /**
+ * The Online status. Indicate that the user is able and willing to
+ * communicate.
+ */
+ public static final IrcStatusEnum ONLINE
+ = new IrcStatusEnum(
+ 65
+ , "Online"
+ , loadIcon("resources/images/irc/cr16-action-irc_online.png"));
+
+ /**
+ * Initialize the list of supported status states.
+ */
+ private static List supportedStatusSet = new LinkedList();
+ static
+ {
+ supportedStatusSet.add(OFFLINE);
+ supportedStatusSet.add(AWAY);
+ supportedStatusSet.add(ONLINE);
+ }
+
+ /**
+ * Creates an instance of IrcPresenceStatus with the
+ * specified parameters.
+ * @param status the connectivity level of the new presence status instance
+ * @param statusName the name of the presence status.
+ * @param statusIcon the icon associated with this status
+ */
+ private IrcStatusEnum(int status,
+ String statusName,
+ byte[] statusIcon)
+ {
+ super(status, statusName, statusIcon);
+ }
+
+ /**
+ * Returns an iterator over all status instances supported by the irc
+ * provider.
+ * @return an Iterator over all status instances supported by the
+ * irc provider.
+ */
+ static Iterator supportedStatusSet()
+ {
+ return supportedStatusSet.iterator();
+ }
+
+ /**
+ * Loads an image from a given image path.
+ * @param imagePath The path to the image resource.
+ * @return The image extracted from the resource at the specified path.
+ */
+ public static byte[] loadIcon(String imagePath)
+ {
+ InputStream is = IrcStatusEnum.class.getClassLoader()
+ .getResourceAsStream(imagePath);
+
+ byte[] icon = null;
+ try
+ {
+ icon = new byte[is.available()];
+ is.read(icon);
+ }
+ catch (IOException exc)
+ {
+ logger.error("Failed to load icon: " + imagePath, exc);
+ }
+ return icon;
+ }
+
+}
\ No newline at end of file