function filter_opacity(){ // thanks for the trouble, ie
	var sheets = document.styleSheets;
	var prop = 'rules'; // this is only for ie, so i don't need to browser sniff for cssRules

	if( sheets && sheets.length ){
		for(var i = 0; i < sheets.length; ++i){
			var s = sheets[i];
			if( s[prop] ){
				for( var j = 0; j < s[prop].length; ++j ){
					var rs = s[prop][j].style;
					if( rs.opacity ){
						rs.filter = 'alpha(opacity=' + (parseFloat(rs.opacity) * 100) + ')';
							}
								/* var img = rs.backgroundImage;
							if( img && img.match(/\.png\b/) ){
						filter_alpha_png(rs, img);
					} */
				}
			}
		} // this is a nice big arrow, isn't it?
	}
}

function filter_alpha_png(obj, img, sizing){
	if( navigator.userAgent.indexOf('MSIE') < 0 || !document.all ) return false; // why else would i be doing this garbage?

	var dx = 'DXImageTransform.Microsoft.';
	var alpha_png = dx + 'AlphaImageLoader';
	var style = ( typeof(obj.style) == 'object' ? obj.style : obj ); // CSSStyleDeclaration.  Allows for you to provide an element or stylesheet
	var readstyle = style;

	try{ readstyle = obj.currentStyle || style; }catch(e){} // again, since this is only to fix ie, i can simply use it's proprietary stupidness

	if( ! img ) // if url wasn't supplied, try to figure it out
		img = readstyle.backgroundImage;
	if( ! sizing ){
		sizing = readstyle.backgroundRepeat;
		sizing = (sizing && sizing.indexOf('no') >= 0 ? 'crop' : 'scale');
	}

	if( img && img.match(/\.png\b/) ){
		//alert(img);
		img = img.replace(/(^url\(['"]*|['"]*\).*$)/g, '');
		//obj.filters.item(alpha_png)
		style.filter = "progid:" + alpha_png + "(src='" + img + "',sizingMethod='" + sizing + "')";
		style.backgroundImage = 'none';
		return true;
	}else
		return false;
}

add_onload(filter_opacity);
filter_opacity; // try and do it early to avoid the horrible delay
