function fixPng(png, blankgif) 
{
	// get src
	var src = png.src;
	
	// set width and height
	if (!png.style.width) 
		png.style.width = $(png).width();
	if (!png.style.height) 
		png.style.height = $(png).height();
	
	// replace by blank image
	png.onload = function() {};
	png.src = blankgif;
	
	// set filter (display original image)
	png.runtimeStyle.filter = "progid:DXImageTransform.Microsoft.AlphaImageLoader(src='" + src + "',sizingMethod='scale')";
}

function fixImgTagsDeep( element )
{
	element.find('img[src$=.png]').each( function() 
	{
		if (!this.complete) 
		{
			this.onload = function() 
			{ 
				fixPng(this, settings.blankgif); 
				return true;
			};
		} 
		else 
		{
			fixPng(this, settings.blankgif);
		}
		return true;
	});
	
	return true;
}

function fixImgTagsShallow( element )
{
	if ( element.attr( "src" ).indexof(".png") != -1 )
	{
		if (!this.complete) 
		{
			this.onload = function() 
			{ 
				fixPng(this, settings.blankgif); 
				return true;
			};
		} 
		else 
		{
			fixPng(this, settings.blankgif);
		}
		return true;
	}

	return true;
}


function fixCSSDeep( element )
{
	element.find("*").each( function()
	{
		var bgIMG = jQuery(this).css('background-image');
		if( bgIMG.indexOf( ".png" )!=-1 )
		{
			var url = bgIMG.split('url("')[1].split('")')[0];
			$(this).css('background-image', 'none');
			$(this).get(0).runtimeStyle.filter = "progid:DXImageTransform.Microsoft.AlphaImageLoader(src='" + url + "',sizingMethod='scale')";
		}
		return true;
	});

	return true;
}

function fixCSSShallow( element )
{
	var bgIMG = element.css('background-image'); 
	if( bgIMG.indexOf( ".png" )!=-1 )
	{
		var url = bgIMG.split('url("')[1].split('")')[0];
		element.css('background-image', 'none').css('background', 'transparent');
		element.get(0).runtimeStyle.filter = "progid:DXImageTransform.Microsoft.AlphaImageLoader(src='" + url + "',sizingMethod='scale')";
	}

	return true;
}

var img = new Image;

jQuery.fn.loadImg = function(settings) 
{
	settings = jQuery.extend(
	{
		src: ""
	}, settings);
	
	$(img).attr("src", settings.src);
	
	return this;
}

jQuery.fn.pngFix = function(settings) 
{
	settings = jQuery.extend(
	{
		blankgif: 'assets/images/blank.gif',
		deep: true,
		check_img: false,
		check_css: true
	}, settings);

	return this.each( function() 
	{
		var badBrowser = (/MSIE ((5\.5)|6)/.test(navigator.userAgent) && navigator.platform == "Win32");
		if ( badBrowser )
		{
			// get all pngs in element
			if ( settings.deep == true )
			{
				if ( settings.check_img == true )
				{
					fixImgTagsDeep( $(this) );
				}
	
				if ( settings.check_css )
				{
					fixCSSDeep( $(this) );
				}
			}
			else
			{
				if ( settings.check_img == true )
				{
					fixImgTagsShallow( $(this) );
				}
	
				if ( settings.check_css )
				{
					fixCSSShallow( $(this) );
				}
			}
		}
		return this;
	});
}

