var supersleight=function(){
	var root=false;
	var applyPositioning=false;
	var shim='x.gif';
	var shim_pattern=/x\.gif$/i;
	
	var fnLoadPngs = function(){
		if(root) {
			root=document.getElementById(root);
		} else {
			root=document;
		}
		for (var i=root.all.length-1, obj=null; (obj=root.all[i]); i--) {
			if (obj.currentStyle.backgroundImage.match(/\.png(\"\))?$/i) !== null) {
				bg_fnFixPng(obj);
			}
			if ((obj.tagName=='IMG' && obj.src.match(/\.png$/i) !== null) || obj.className == 'png') {
				el_fnFixPng(obj);
			}
			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){
			root=el;
		}, run: function(){
			fnLoadPngs();
		}
	};
}();
