jQuery.fn.onImagesLoaded = function(_cb) {
    var nImg = 0, i = 0;
    var $imgs = (this.get(0).tagName.toLowerCase() === 'img') ? jQuery(this) : jQuery('img', this), _cont = this;
    if ($imgs.length) {
        nImg += $imgs.length;
        return $imgs.each(function() {
            var _done = function() { if (typeof _cb === 'function') _cb(_cont); };
            var _img = this, _checki = function(e) {
                if ((_img.complete) || (_img.readyState == 'complete' && e.type == 'readystatechange')) {
                    if (++i === nImg) _done();
                }
                else if (_img.readyState === undefined) // dont for IE
                {
                    jQuery(_img).attr('src', jQuery(_img).attr('src')); // re-fire load event
                }
            }; // _checki \\
            jQuery(_img).bind('load readystatechange', function(e) { _checki(e); });
            _checki({ type: 'readystatechange' }); // bind to 'load' event...
        });
    }
    else _done();
};
