﻿(function($) {
    $.fn.tTruncate = function(options) {

        var defaults = {
            length: 22,
            minTrail: 1,
            moreText: "more",
            lessText: "less",
            ellipsisText: "...",
            moreAni: "",
            lessAni: "",
            dispOption: "mouseover",   // {mouseover,div}
            left: 300,
            top: 200
        };

        var options = $.extend(defaults, options);

        return this.each(function() {
            obj = $(this);
            var body = obj.html();

            if (body.length > options.length + options.minTrail) {
                var splitLocation = body.indexOf(' ', options.length);
                var splitLocation, str1, str2;
                if (splitLocation == -1) {
                    splitLocation = options.length;
                    str1 = body.substring(0, splitLocation);                
                    str2 = body.substring(splitLocation, body.length - 1);                   
                }
                else if (splitLocation != -1) {
                    // truncate tip
                    splitLocation = body.indexOf(' ', options.length);
                    str1 = body.substring(0, splitLocation);
                    str2 = body.substring(splitLocation, body.length - 1);
                }
                obj.html(str1 + '<span class="truncate_ellipsis">' + options.ellipsisText +
						'</span>');

                if (options.dispOption != "mouseover") {

                    obj.append('<span class="truncate_more">' + str2 + '</span>');
                    obj.find('.truncate_more').css("display", "none");
                    // insert more link
                    obj.append(
						        '<div class="clearboth">' +
							        '<a href="#" class="truncate_more_link">' + options.moreText + '</a>' +
						'</div>');
                };


                // set onclick event for more/less link
                var moreLink = $('.truncate_more_link', obj);
                var moreContent = $('.truncate_more', obj);
                var ellipsis = $('.truncate_ellipsis', obj);
                moreLink.click(function() {
                    if (moreLink.text() == options.moreText) {
                        moreContent.show(options.moreAni);
                        moreLink.text(options.lessText);
                        ellipsis.css("display", "none");
                    } else {
                        moreContent.hide(options.lessAni);
                        moreLink.text(options.moreText);
                        ellipsis.css("display", "inline");
                    }
                    return false;
                });
            }
            // } // end if

        });
    };
})(jQuery);

