jQuery.fn.supersleight = function (settings) {
    settings = jQuery.extend({
        imgs: true,
        backgrounds: true,
        shim: '/CSS/PediaCare/images/x.gif',
        apply_positioning: true
    }, settings);

    var fix = function (obj) {
        var self = jQuery(obj);
        //alert('fixing ' + self + ' ' + self[0].tagName + ' #' + self.attr('id') + ' .' + self.attr('class'));
        // background pngs
        if (settings.backgrounds && (self.css('background-image').match(/\.png/gi) !== null ||
                                     self.css('background-image').match(/\.ashx/gi) !== null)) {
            var bg = self.css('background-image');
            var src = bg.substring(5, bg.length - 2);
            var mode = (self.css('background-repeat') == 'no-repeat' ? 'crop' : 'scale');
            var styles = {
                'filter': "progid:DXImageTransform.Microsoft.AlphaImageLoader(src='" + src + "', sizingMethod='" + mode + "')",
                'background-image': 'url(' + settings.shim + ')'
            };
            self.css(styles);
        };
        // image elements
        if (settings.imgs && (self.is('img[src$=png]') || self.is('img[src$=ashx]') ||
                              self.is('input[src$=png]') || self.is('input[src$=ashx]'))) {
            //alert('fixing img src=' + self.attr('src'));
            var styles = {
                'filter': "progid:DXImageTransform.Microsoft.AlphaImageLoader(src='" + self.attr('src') + "', sizingMethod='scale')"
            };
            if (self.width() > 0) {
                styles.width = self.width() + 'px';
            }
            if (self.height() > 0) {
                styles.height = self.height() + 'px';
            }

            self.css(styles).attr('src', settings.shim);
        };
        // apply position to 'active' elements
        if (settings.applyPositioning && self.is('a, input') && self.css('position') === '') {
            self.css('position', 'relative');
        };
    }

    return this.each(function () {
        //if (jQuery.browser.msie && parseInt(jQuery.browser.version) < 7 && parseInt(jQuery.browser.version) > 4) {
        //alert('fixing stuff');
        fix(this);
        jQuery(this).find('*').each(function (i, obj) {
            fix(obj);
        });
        //};
    });
};
