var supersleight	= function() {

	var root = false;
    var rootNode;
    var applyPositioning = true;

	// Path to a transparent GIF image
	var shim			= 'x.gif';

	// RegExp to match above GIF image name
	var shim_pattern	= /x\.gif$/i;

	var fnLoadPngs = function() {
		if (root) {
			rootNode = document.getElementById(rootNode);
		}else{
			rootNode = document;
		}
        if (rootNode.all) {
            for (var i = rootNode.all.length - 1, obj = null; (obj = rootNode.all[i]); i--) {

                // background pngs
                if (obj.currentStyle.backgroundImage.match(/\.png/i) !== null) {
                    bg_fnFixPng(obj);
                }
                // image elements
                if (obj.tagName=='IMG' && obj.src.match(/\.png$/i) !== null){
                    el_fnFixPng(obj);
                }
                // apply position to 'active' elements
                if (applyPositioning && (obj.tagName=='A' || obj.tagName=='INPUT') && obj.style.position === ''){
                    obj.style.position = 'relative';
                }
            }
        }
    };

	var bg_fnFixPng = function(obj) {
		var mode = 'scale';
		var bg	= obj.currentStyle.backgroundImage;
		var src = bg.substring(5,bg.length-2);
		if (obj.currentStyle.backgroundRepeat == 'no-repeat') {
			mode = 'crop';
		}
		obj.style.filter = "progid:DXImageTransform.Microsoft.AlphaImageLoader(src='" + src + "', sizingMethod='" + mode + "')";
		obj.style.backgroundImage = 'url('+shim+')';
	};

	var el_fnFixPng = function(img) {
		var src = img.src;
		img.style.width = img.width + "px";
		img.style.height = img.height + "px";
		img.style.filter = "progid:DXImageTransform.Microsoft.AlphaImageLoader(src='" + src + "', sizingMethod='scale')";
		img.src = shim;
	};

    var addLoadEvent = function(func) {
		var oldonload = window.onload;
		if (typeof window.onload != 'function') {
			window.onload = func;
		} else {
			window.onload = function() {
				if (oldonload) {
					oldonload();
				}
				func();
			};
		}
	};

	return {
		init: function() {
			addLoadEvent(fnLoadPngs);
		},

		limitTo: function(el) {
			rootNode = el;
            root = true;
        },

		run: function() {
            fnLoadPngs();
		}
	};
}();

// limit to part of the page ... pass an ID to limitTo:
// supersleight.limitTo('header');

document.supersleight = supersleight;

document.supersleight.init();