/*
Script: FixPNG.js
        Extends the Browser hash object to include methods useful in managing the window location and urls.

License:
        http://clientside.cnet.com/wiki/cnet-libraries#license
*/
Browser.merge({
        fixPNG: function(el) {
                try {
                        if (Browser.Engine.trident4){
                                el = $(el);
                                if (!el) return el;
                                if (el.getTag() == "img" && el.get('src').test(".png")) {
                                        var vis = el.isVisible();
                                        try { //safari sometimes crashes here, so catch it
                                                dim = el.getSize();
                                        }catch(e){}
                                        if(!vis){
                                                var before = {};
                                                //use this method instead of getStyles 
                                                ['visibility', 'display', 'position'].each(function(style){
                                                        before[style] = this.style[style]||'';
                                                }, this);
                                                //this.getStyles('visibility', 'display', 'position');
                                                this.setStyles({
                                                        visibility: 'hidden',
                                                        display: 'block',
                                                        position:'absolute'
                                                });
                                                dim = el.getSize(); //works now, because the display isn't none
                                                this.setStyles(before); //put it back where it was
                                                el.hide();
                                        }
                                        var replacement = new Element('span', {
                                                id:(el.id)?el.id:'',
                                                'class':(el.className)?el.className:'',
                                                title:(el.title)?el.title:(el.alt)?el.alt:'',
                                                styles: {
                                                        display: vis?'inline-block':'none',
                                                        width: dim.x,
                                                        height: dim.y,
                                                        filter: "progid:DXImageTransform.Microsoft.AlphaImageLoader (src='" 
                                                                + el.src + "', sizingMethod='scale');"
                                                },
                                                src: el.src
                                        });
                                        if(el.style.cssText) {
                                                try {
                                                        var styles = {};
                                                        var s = el.style.cssText.split(';');
                                                        s.each(function(style){
                                                                var n = style.split(':');
                                                                styles[n[0]] = n[1];
                                                        });
                                                        replacement.setStyle(styles);
                                                } catch(e){ dbug.log('fixPNG1: ', e)}
                                        }
                                        if(replacement.cloneEvents) replacement.cloneEvents(el);
                                        el.replaceWith(replacement);
                                } else if (el.getTag() != "img") {
                                        var imgURL = el.getStyle('background-image');
                                        if (imgURL.test(/\((.+)\)/)){
                                                el.setStyles({
                                                        background: '',
                                                        filter: "progid:DXImageTransform.Microsoft.AlphaImageLoader(enabled='true', sizingMethod='crop', src='" + imgURL.match(/\((.+)\)/)[1] + "')"
                                                });
                                        };
                                }
                        }
                } catch(e) {dbug.log('fixPNG2: ', e)}
        }
});
if(Browser.Engine.trident4) window.addEvent('domready', function(){$$('img.fixPNG').each(Browser.fixPNG)});
