(function($) {
    $.fn.jTruncate = function(h) {
        var i = {
            length: 300,
            minTrail: 0, //minimo de palabras sobrantes para acortar, en nuestro caso nos interesa que acorte en cuanto se pase del "length"
            moreText: "[show more]",
            lessText: "[show less]",
            ellipsisText: "...",
            moreAni: "",
            lessAni: "",
            newline: true
        };
        var h = $.extend(i, h);
        return this.each(function() {
            obj = $(this);
            var a = obj.html();
            if (a.length > h.length + h.minTrail) {
                var b = a.indexOf(' ', h.length);
                if (b != -1) {
                    var b = a.indexOf(' ', h.length);
                    var c = a.substring(0, b);
                    var d = a.substring(b); //%% modificación para que no se coma el último carácter ->(antes) var d = a.substring(b, a.length - 1);
                    obj.html(c + '<span class="truncate_ellipsis">' + h.ellipsisText + '</span>' + '<span class="truncate_more">' + d + '</span>');
                    obj.find('.truncate_more').css("display", "none");
                    if (h.newline) {
                        obj.append('<div class="clearboth">' + '<a href="#" class="truncate_more_link">' + h.moreText + '</a>' + '</div>');
                    } else {
                        obj.append('<span>' + '&nbsp;<a href="#" class="truncate_more_link">' + h.moreText + '</a>' + '</span>');
                    }
                    var e = $('.truncate_more_link', obj);
                    var f = $('.truncate_more', obj);
                    var g = $('.truncate_ellipsis', obj);
                    e.click(function() {
                        if (e.text() == h.moreText) {
                            f.css("display", "inline");
                            e.text(h.lessText);
                            g.css("display", "none");
                        } else {
                            f.hide(h.lessAni);
                            e.text(h.moreText);
                            g.css("display", "inline");
                        }
                        return false
                    })
                }
            }
        })
    }
})(jQuery);

