diff --git a/resources/statuses.js b/resources/statuses.js
index 724f583..337764d 100644
--- a/resources/statuses.js
+++ b/resources/statuses.js
@@ -55,14 +55,11 @@ attach: function (context) {
     var oldMsgLen = oldMsgText.length;
     if (oldMsgLen > fbss_hidelen) {
       var newMsgText =
-        oldMsgText.substring(0, fbss_hidelen - 1) +
-        '<span class="statuses-hellip">&hellip;&nbsp;</span><a class="statuses-readmore-toggle active">' +
-        Drupal.t('Read more') +
-        '</a><span class="statuses-readmore">' +
-        oldMsgText.substring(fbss_hidelen - 1) +
-        '</span>';
+        htmlSubstring(oldMsgText, fbss_hidelen) +
+          '<span class="statuses-hellip">&hellip;&nbsp;</span><a class="statuses-readmore-toggle active">' +
+          ('Read more') +
+          '</a>';
       th.html(newMsgText);
-      th.find('.statuses-readmore').hide();
       th.find('.statuses-readmore-toggle').click(function(e) {
         e.preventDefault();
         th.html(oldMsgText);
@@ -70,7 +67,7 @@ attach: function (context) {
     }
   }
   if (fbss_hidelen > 0) {
-    ctxt.find('.statuses-content').each(fbss_truncate);
+    ctxt.find('.statuses-content p').each(fbss_truncate);
   }
   // Modal Frame integration.
   if (Drupal.modalFrame) {
@@ -216,4 +213,40 @@ function fbss_refresh() {
     $('.fbss-remove-me').remove();
   }
 }
+
+//Function that returns substring ignoring HTML tags
+//Source: http://jsfiddle.net/danmana/5mNNU/
+function htmlSubstring(s, n) {
+  var m, r = /<([^>\s]*)[^>]*>/g,
+    stack = [],
+    lasti = 0,
+    result = '';
+  //for each tag, while we don't have enough characters
+  while ((m = r.exec(s)) && n) {
+    //get the text substring between the last tag and this one
+    var temp = s.substring(lasti, m.index).substr(0, n);
+    //append to the result and count the number of characters added
+    result += temp;
+    n -= temp.length;
+    lasti = r.lastIndex;
+    if (n) {
+      result += m[0];
+      if (m[1].indexOf('/') === 0) {
+        //if this is a closing tag, than pop the stack (does not account for bad html)
+        stack.pop();
+      }
+      else if (m[1].lastIndexOf('/') !== m[1].length - 1) {
+        //if this is not a self closing tag than push it in the stack
+        stack.push(m[1]);
+      }
+    }
+  }
+  //add the remainder of the string, if needed (there are no more tags in here)
+  result += s.substr(lasti, n);
+  //fix the unclosed tags. Though unnecessary as Jquery does it by default
+  while (stack.length) {
+      result += '</' + stack.pop() + '>';
+  }
+  return result;
+}
 })(jQuery);
