/*
Copyright Drew Broadley 2007
drew@topshelfmedia.co.nz

Use in <HEAD> with DEFER keyword wrapped in conditional comments:
<!--[if lt IE 7]>
<script defer type="text/javascript" src="pngfix.js"></script>
<![endif]-->

*/

png = new Object();

png.blank = "/graphics/blank.gif";
png.image_sizes = new Object();
png.images = new Array();
png.version = parseFloat(navigator.appVersion.split("MSIE")[1]);

png.enable = function()
{
	if ((png.version >= 5.5) && (png.version < 7) && (document.body.filters))
	{
		
		png.all_images(document.getElementsByTagName('IMG'));
		//png.fg_images();
		//png.bg_images();
	}
}

png.fg_images = function()
{
   for(var i=0; i<document.images.length; i++)
   {
      var img = document.images[i];
      var imgName = img.src.toUpperCase();
      if (imgName.substring(imgName.length-3, imgName.length) == "PNG")
      {
      	png.alpha_image(img);
      }
   }
}

png.all_images = function(node)
{
	for(var i=0; i<node.length; i++) 
	{
		var child_node = node[i];
		
		
		if (
			child_node.src.match(/\.png$/i)
		)
		{
			png.alpha_image(child_node);
		}
		else
		{
			try
			{
				var backgroundImage = child_node.currentStyle.backgroundImage;
			
				if (
					backgroundImage.match(/\.png/)
				)
				{
						//png.alpha_bg_image(child_node);
				}
			}
			catch(e) {}
			
		}
		
	}
}

png.alpha_image = function(img)
{
	if ((png.version >= 5.5) &&  (png.version < 7) && (document.body.filters))
	{
		var imgName = img.src.toUpperCase();
		if (imgName.substring(imgName.length-3, imgName.length) == "PNG")
		{
			//alert(img.src + ": " + img.width + " - " + img.height);
			img.style.width = img.width;
			img.style.height = img.height;
			img.style.filter = "progid:DXImageTransform.Microsoft.AlphaImageLoader(src='"+img.src+"', sizingMethod='scale')";
			
			img.src = png.blank;
		}
	}
}

png.alpha_bg_image = function(obj)
{
	if (!obj)
	{
		return;
	}
	
	var bg = obj.currentStyle.backgroundImage;
	
	if (bg && bg.match(/\.png/i) != null) 
	{
		var img = bg.substring(5,bg.length-2);
		var offset = obj.style["background-position"];
		obj.style.filter = 	"progid:DXImageTransform.Microsoft.AlphaImageLoader(src='"+img+"', sizingMethod='crop')";
		obj.style.backgroundImage = "url('"+png.blank+"')";
		obj.style["background-position"] = offset; // reapply
	}
}

window.onload = png.enable;
