// PNG alpha support for Internet Explorer 5.5+
if (navigator.platform == "Win32" && navigator.appName == "Microsoft Internet Explorer" && window.attachEvent) {
	document.writeln('<style type="text/css"> img { filter:expression(addPngImage(this)); } </style>');
//	window.attachEvent("onload", addPngImage());
}

//Array containing all PNG images on the page
var PNGimageArray = new Array();
var isPrinting = false;

//Path to the blank image (1x1 transparent)
var blankSrc = "images/1x1.gif";

//Captures print events
if(window.attachEvent) {
	window.attachEvent("onbeforeprint", function () { beforePrint(); } );
	window.attachEvent("onafterprint", function () { afterPrint(); } );
}

//Tests if element is a PNG image, and if so fixes it
function addPngImage(element){
	if (/\.png$/i.test(element.src)) {
		fixImage(element);
		element.attachEvent("onpropertychange", function () {propertyChanged();});
		PNGimageArray[PNGimageArray.length] = element;
	}
}

//Applies filter and changes source to blank
function fixImage(element) {
	element.runtimeStyle.filter = "progid:DXImageTransform.Microsoft.AlphaImageLoader(src='" + element.src + "')";
	element.src = blankSrc;
}

//If property "src" is changed fixs image (not 
//if it is changed to blank though)
function propertyChanged() {
	if (isPrinting) return;
	var element = event.srcElement;
	var pName = event.propertyName;
	if (pName != "src") return;
	if (!new RegExp(blankSrc).test(element.src))
		fixImage(element);
}

//Turns image back to original before print (Explorer can't print filters)
function beforePrint() {
	isPrinting = true;
	var element;
	for(var i = 0; i < PNGimageArray.length; i++){
		element = PNGimageArray[i];
		element.src = element.filters[0].src;
		element.runtimeStyle.filter = "";
	}
}

//Fixes image after print
function afterPrint() {
	isPrinting = false;
	var element;
	for(var i = 0; i < PNGimageArray.length; i++) {
		element = PNGimageArray[i];
		fixImage(element);
	}
}