﻿
ko.bindingHandlers.truncatedText = {
    update: function (element, valueAccessor, allBindingsAccessor) {

        var allBindings = allBindingsAccessor();
        var text = allBindings.truncatedText;
        var allowedLength = allBindings.maxTextLength;
        var originalText = ko.toJS(text);

        if (originalText != undefined) {
            var originalText = originalText,
                length = allowedLength || 20,
                truncatedText = originalText.length > length ? originalText.substring(0, length) + "..." : originalText;

            ko.bindingHandlers.text.update(element, function () {
                return truncatedText;
            });
        }
    }
};

ko.bindingHandlers.attrIf = {
    update: function (element, valueAccessor, allBindingsAccessor) {
        var h = ko.utils.unwrapObservable(valueAccessor());
        var show = ko.utils.unwrapObservable(h._if);
        if (show) {
            ko.bindingHandlers.attr.update(element, valueAccessor, allBindingsAccessor);
        } else {
            for (var k in h) {
                if (h.hasOwnProperty(k) && k.indexOf("_") !== 0) {
                    $(element).removeAttr(k);
                }
            }
        }
    }
};