(function($) { $.ifixpng = function(customPixel) { $.ifixpng.pixel = customPixel; }; $.ifixpng.getPixel = function() { return $.ifixpng.pixel || '/images/x.gif'; }; var hack = { ltie7  : $.browser.msie && $.browser.version < 7, filter : function(src) { return "progid:DXImageTransform.Microsoft.AlphaImageLoader(enabled=true,sizingMethod=crop,src='"+src+"')"; } }; $.fn.ifixpng = hack.ltie7 ? function() { return this.each(function() { var $$ = $(this); var base = $('base').attr('href'); if (base) { base = base.replace(/\/[^\/]+$/,'/'); } if ($$.is('img') || $$.is('input')) { if ($$.attr('src')) { if ($$.attr('src').match(/.*\.png([?].*)?$/i)) { var source = (base && $$.attr('src').search(/^(\/|http:)/i)) ? base + $$.attr('src') : $$.attr('src'); $$.css({filter:hack.filter(source), width:$$.width(), height:$$.height()}) .attr({src:$.ifixpng.getPixel()}) .positionFix(); }}} else { var image = $$.css('backgroundImage'); if (image.match(/^url\(["']?(.*\.png([?].*)?)["']?\)$/i)) { image = RegExp.$1; image = (base && image.substring(0,1)!='/') ? base + image : image; $$.css({backgroundImage:'none', filter:hack.filter(image)}) .children().children().positionFix(); }} }); } : function() { return this; }; $.fn.iunfixpng = hack.ltie7 ? function() { return this.each(function() { var $$ = $(this); var src = $$.css('filter'); if (src.match(/src=["']?(.*\.png([?].*)?)["']?/i)) { src = RegExp.$1; if ($$.is('img') || $$.is('input')) { $$.attr({src:src}).css({filter:''}); } else { $$.css({filter:'', background:'url('+src+')'}); } } }); } : function() { return this; }; $.fn.positionFix = function() { return this.each(function() { var $$ = $(this); var position = $$.css('position'); if (position != 'absolute' && position != 'relative') { $$.css({position:'relative'}); } }); }; })(jQuery);
