var pngFixer = {

    run     : function() {
        if (this.isIE())
           for(var i = 0; i < document.images.length; i++)
              this.fix( document.images[i], true );
    },

    isIE    : function() {
        if (typeof this.checked != 'undefined') {
            var arVersion = navigator.appVersion.split("MSIE")
            var version   = parseFloat(arVersion[1])

            this.checked = ((version >= 5.5) && (version < 7.0) && (document.body.filters));
        }

        return this.checked;
    },

    fix     : function(img, force) {
        if (force || this.isIE()) {
            if (typeof img == 'undefined' || !img || !img.src)
                return;

            var imgName = img.src.toUpperCase();
            if (imgName.substring(imgName.length-3, imgName.length) == "PNG") {
                var imgID = (img.id) ? "id='" + img.id + "' " : "";
                var imgClass = (img.className) ? "class='" + img.className + "' " : "";
                var imgTitle = (img.title) ? "title='" + img.title + "' " : "title='" + img.alt + "' ";
                var imgStyle = "display:inline-block;" + img.style.cssText;
                if (img.align == "left") imgStyle = "float:left;" + imgStyle;
                if (img.align == "right") imgStyle = "float:right;" + imgStyle;
                if (img.parentElement.href) imgStyle = "cursor:hand;" + imgStyle;

                var strNewHTML = "<span " + imgID + imgClass + imgTitle
                    + " style=\"" + "width:" + img.width + "px; height:" + img.height + "px;" + imgStyle + ";"
                    + "filter:progid:DXImageTransform.Microsoft.AlphaImageLoader"
                    + "(src=\'" + img.src + "\', sizingMethod='scale');\"></span>";

                img.outerHTML = strNewHTML;
                i = i-1;
            }
        }
    }
}

var pngfixAEOL = [];
if (typeof addEvent == 'undefined') {
    function addEvent(o, n, f, l)
    {
        if (n == 'DOMContentLoaded')
            n = 'load';

        var a = 'addEventListener', h = 'on'+n, b = '', s = '';
        if (o[a] && !l)
            return o[a](n, f, false);

        o._c |= 0;
        if (o[h]) {
            b = '_f' + o._c++; o[b] = o[h];
        }

        s = '_f' + o._c++;
        o[s] = f;
        o[h] = function(e) {
            e = e || window.event;
            var r = true;
            if (b) r = o[b](e) != false && r;
            r = o[s](e) != false && r;
            return r;
        };

        pngfixAEOL[pngfixAEOL.length] = { o: o, h: h };
    };
    addEvent(window, 'unload', function() { for (var i = 0; i < pngfixAEOL.length; i++) with (pngfixAEOL[i]) { o[h] = null; for(var c = 0; o['_f' + c]; c++) o['_f' + c] = null; } } );
}

// add an onload event to automatically fix any pngs
addEvent( window, 'DOMContentLoaded', function(){if (document.body && document.images) pngFixer.run();} );
