(function($) {
	$.ifixpng = function(customPixel) { $.ifixpng.pixel = customPixel; };
	$.ifixpng.getPixel = function() { return $.ifixpng.pixel || _pathEmptyImage; };
	var hack = {
		ltie7  : $.browser.msie && $.browser.version < 7,
		filter : function(src) { return "progid:DXImageTransform.Microsoft.AlphaImageLoader(enabled=true,sizingMethod=scale,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()});
					}
				}
			} 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();
				}
			}
		});
	} : 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; };
})(jQuery);