<public:component>
<public:attach event="onpropertychange" onevent="propertyChanged()" />
<script>
var IE =  !!(window.attachEvent && !window.opera);
var version =parseFloat(navigator.userAgent.split("MSIE")[1]);
var blankSrc = "/images/blank.gif";
var realSrc;
var cropRE = /\bcrop\b/;

if (version < 7) {
	if (element.nodeName == 'IMG') fixImage();
	else fixBG();
}

function propertyChanged() {
   if (version < 7 || element.nodeName != 'IMG' || event.propertyName != "src") return;
   if ( blankSrc != src ) fixImage();
};

function fixBG() {	
	var sizingMethod='scale';
	if (element.className.match(cropRE)) sizingMethod='crop';	
	var bg = element.currentStyle.backgroundImage;
	if (bg.indexOf('.png') != -1) {
		var src = bg.substring(5,bg.length-2); 		
		element.style.backgroundImage='none';
		
		var newcontainer = document.createElement("div");
		newcontainer.style.filter="progid:DXImageTransform.Microsoft.AlphaImageLoader(sizingMethod='"+sizingMethod+"', src='"+ src +"')";
		newcontainer.style.position = 'static';
		newcontainer.style.height = element.currentStyle.height;
		newcontainer.style.width = element.currentStyle.width;		
		var child = element.firstChild;
		while (child) {
			var next = child.nextSibling;
			element.removeChild(child);
			newcontainer.appendChild(child);
			child=next;
		}
		element.appendChild(newcontainer);
	}
}

function fixImage() {
   // get src
   var src = element.src;

   // check for real change
   if (src == realSrc) {
      element.src = blankSrc;
      return;
   }
   
   if ( blankSrc!=src ) {
      realSrc = src;
   }

   // test for png
   if ( /\.png$/.test( realSrc.toLowerCase() ) ) {   
   	  element.src = blankSrc;
      element.runtimeStyle.filter = "progid:DXImageTransform.Microsoft.AlphaImageLoader(src='"+ src + "',sizingMethod='scale')";
   } else {      
      element.runtimeStyle.filter = ""; // remove filter
   }
}
</script>
</public:component>
