Extensions

by Florian Bar

JavaScript

if (typeof String.prototype.startsWith != 'function') {
    String.prototype.startsWith = function (str) {
        return this.indexOf(str) == 0;
    };
}

$(window).on("respondJsCompleted", function () {
    $(window).trigger("siteLoaded");
});
$(window).load(function () {
    $(window).trigger("siteLoaded");
});


$.fn.isRadio = function () {
    return $(this).attr("type") == "radio";
};

$.fn.isCheckbox = function () {
    return $(this).attr("type") == "checkbox";
};

$.fn.isInput = function () {
    return $(this).is("input");
};

$.fn.isSelect = function () {
    return $(this).is("select");
};

$.fn.findLabel = function () {
    return $("label[for='" + $(this).attr("id") + "']");
}

$.fn.hasAttr = function (attrName) {
    var attr = $(this).attr(attrName);
    return (typeof attr !== 'undefined' && attr !== false);
}

$.fn.hasVal = function (val) {
    var input = $(this);
    if (input.isCheckbox() || input.isRadio()) {
        return $("input[name='" + input.attr("name") + "']:checked").length > 0;
    } else {
        if (val) {
            return (input.val() == val);
        } else {
            return (input.val() != "");
        }
    }
}

$.fn.outerHtml = function () {
    //like .html() but also grabs the parent html
    var $this = $(this);
    var wrapper = $(this).wrap('<span />').parent();
    var html = wrapper.html();
    $this.unwrap();
    return html;
};

$.fn.loadAll = function (callback) {
    var self = this;
    var $self = $(self);
    var count = $self.length;
    var loaded = 0;

    $self.load(function (response, status, xhr) {
        loaded++;
        if (loaded == count) { callback(); }
    });

    return self;
};

$.fn.slideToggleFallback = function (duration) {
    var self = this;
    var time = duration || 200;

    if (oldIe != 'ie7') {
        this.slideToggle(time);
    } else {
        this.toggle();
    }

    return self;
};

$.fn.slideFallback = function (direction, duration, callback) {
    var self = this;
   ...