﻿function setEllipsis(index, sender, stopper) {
    sender = $(sender);
    stopper = stopper == null ? "ellipsisdone" : stopper;
    if (sender.hasClass(stopper)) return;
    sender.addClass(stopper);

    var content = sender.text().replace(/^\s*/, "").replace(/\s*$/, "");
    var currentW = sender.attr("scrollWidth") - 8;
    var currentH = sender.attr("scrollHeight") - 8;
    sender.text("A");
    // sender.attr("title", content); //move below (set title only if ellipse)
    var maxW, maxH;
    maxW = sender.width();
    maxH = sender.height();
    if ((maxW >= currentW && maxH >= currentH) || (maxW == 0 || maxH == 0)) {
        sender.text(content);
        return;
    }
    var start, end, midPoint;
    start = 0; end = content.length;
    sender.attr("title", content);
    while (end - start > 1) {
        midPoint = start + Math.ceil((end - start) / 2);
        sender.text(content.substring(0, midPoint) + '...');
        if (sender.attr("scrollWidth") - 8 > maxW || sender.attr("scrollHeight") - 8 > maxH)
            end = midPoint;
        else
            start = midPoint;

        if ((end - start <= 1) && (sender.attr("scrollWidth") - 8 > maxW || sender.attr("scrollHeight") - 8 > maxH))
            start -= 1;
    }

}


function setEllipsisByParent(index, sender, stopper) {
    sender = $(sender);
    stopper = stopper == null ? "ellipsisdone" : stopper;
    if (sender.hasClass(stopper)) return;

    sender.addClass(stopper);
    var parent = sender.parent();
    //var content = sender.text();

    var content = sender.text().replace(/^\s*/, "").replace(/\s*$/, "");
    var currentW = sender.innerWidth();  //parent.attr("scrollWidth")-8;
    if (currentW == 0)
        currentW = sender.width();
    var currentH = sender.height(); //parent.attr("scrollHeight") - 8; 

    sender.text("A");
    //    sender.attr("title", content); // move below (if ellipses only)
    var maxW, maxH;
    if (sender.attr("parent") == undefined || sender.attr("parent") == "") {
        maxW = parent.width();
        maxH = parent.height();
    }
    else {

        maxW = sender.parents("#" + sender.attr("parent")).width();
        maxH = sender.parents("#" + sender.attr("parent")).height();
    }
    if ((maxW >= currentW && maxH >= currentH) || (maxW == 0 || maxH == 0)) {
        sender.text(content);
        return;
    }
    var start, end, midPoint;
    start = 0; end = content.length;
    sender.attr("title", content);

    while (end - start > 1) {
        midPoint = start + Math.ceil((end - start) / 2);
        sender.text(content.substring(0, midPoint) + '...');
        senderWidth = sender.innerWidth();
        if (senderWidth == 0) senderWidth = sender.width();

        if (senderWidth > maxW || sender.height() > maxH)
            end = midPoint;
        else
            start = midPoint;

        if ((end - start <= 1) && (senderWidth > maxW || sender.height() > maxH))
            start -= 1;

    }


}
