(function($) {
    $.fn.extend
	(
		{
		    Fadelicious: function(options) {
		        var defaults =
				{
				    itemsSelector: "li",
				    pauseMilliseconds: 3000,
				    fadeSpeedMilliseconds: 1000,
				    makeMePositionRelative: true
				};

		        var o = $.extend(defaults, options);

		        return this.each
				(
					function() {
					    var elThis = jQuery(this);

					    if (o.makeMePositionRelative) {
					        elThis.css
					        (
					            {
					                'position': 'absolute'
					            }
					        );
					    }
					    var aryItems = elThis.find(o.itemsSelector);

					    if (jQuery.browser.msie) {
					        var aryImgPng = aryItems.find('img[src*=".png"]');
                             
					        aryImgPng.each
					        (
					            function() {
					                var img = jQuery(this);
					                var span = jQuery(document.createElement('span'));
					                var strStyle = "display: block;";
                                    
                                    // need to do this to get img dimensions
					                var imgCopy = jQuery(document.createElement('img'));
                                    
					                imgCopy.css({ position: "absolute", visibility: "hidden", display: "block" });
					                imgCopy.attr('src', img.attr('src'));
					                jQuery('body').append(imgCopy);

					                strStyle += "width: " + imgCopy.width() + "px;";
					                strStyle += "height: " + imgCopy.height() + "px;";
					                
					                imgCopy.remove();
					                
					                if (jQuery.browser.version < 9)
					                    strStyle += "filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src='" + img.attr('src') + "', sizingMethod='crop'));";

					                strStyle += img.attr('style') ? img.attr('style') : "";
					                span.attr('style', strStyle);
					                img.parent().append(span);
					                img.hide();
					            }
					        );
					    }

					    if (aryItems.length > 0) {
					        aryItems.css
					        (
					            {
					                'position': 'absolute',
					                'display': 'none'
					            }
					        );

					        jQuery(aryItems.get(0)).show();
					        var iNext = 0;

					        setInterval
					        (
					            function() {
					                var current = jQuery(aryItems.get(iNext));

					                if (iNext + 1 > aryItems.length - 1)
					                    iNext = 0;
					                else
					                    iNext++;

					                var next = jQuery(aryItems.get(iNext));

					                next.fadeIn(o.fadeSpeedMilliseconds);
					                current.fadeOut(o.fadeSpeedMilliseconds);

					            },
					            o.pauseMilliseconds
					        );
					    }
					}
				);
		    }
		}
	);
}
)(jQuery);  
