First off, I heavily advise against emoticons. People are usually perfectly happy with plain-text ones, and some people are avidly against graphical ones. Plus, if you have many triggers for emoticons that aren't immediately obvious, people can become confused when an icon pops up where they weren't expecting one.
That said, implementing said emoticons is a simple task. Assign a list of emoticon codes and image files (eg. ":)" => "smile.gif" and ":D" => "grin.gif") either hardcoded or in a database table depending on your needs, and use a simple search-and-replace function to replace the emoticon code with an image tag of the file. Make sure this is done when the message's body is parsed, and NOT before it gets inserted into the database.