(function($) {
    $.extend($.fn,
	{
	    Gallery80PortItunes: function(settings) {
	        settings = $.extend({ delay: 5 }, settings || {});

	        var thisObj = this;
	        var curLoadIndex = 0;
	        var curIndexImg = 0;
	        var AreaBig = this.find('#itunes_big');
	        AreaBig.append('<img src="/i/0.gif" alt=""/>');
	        var ImgBig = AreaBig.find('img').width(AreaBig.width());
	        var AreaSmall = [];
	        var LinksSmall = thisObj.find('.itunes_small a');
	        var IcoDown = $('#ico_down');

	        LinksSmall.each(function() {
	            var s_obj = $(this).append('<img src="/i/0.gif" alt=""/>');
	            s_obj.find('img').height(s_obj.height());
	            AreaSmall[AreaSmall.length++] = s_obj;
	        });
	        LinksSmall.click(function() {

	            var imgObj = _ImgObjArray[$(this).attr('rel')];
	            AreaBig.attr('href', imgObj.Url);
	            ImgBig.animate({ opacity: 0 }, 100, function() { ImgBig.attr('src', imgObj.imgBig.img.src); ImgBig.animate({ opacity: 1 }); });

	            ImgBig.attr('usemap', '#' + imgObj.ImageMapName);

	            return false;

	        });
	        

	        IcoDown.hide().click(function() { ShowBan(0); return false; });

	        thisObj.hover(
	            function(e) { IcoDown.show(); thisObj.stopTime(); },
	            function(e) { IcoDown.hide(); thisObj.everyTime(settings.delay * 1000, ShowBan); }
	           );

	        var ImgObj = function(src) {
	            this.IsLoad = false;
	            this.img = new Image();
	            if (this.img.addEventListener) {
	                this.img.addEventListener('load', function() { setIsLoad(this); }, false);
	            }
	            else if (this.img.attachEvent) {
	                $(this.img).load(function() { setIsLoad(this); });
	            };
	            this.img.src = src;
	        };

	        var ImgObj2 = function(srcSmall, srcBig, url, ImageMapName) {
	            this.imgSmall = new ImgObj(srcSmall);
	            this.imgBig = new ImgObj(srcBig);
	            this.Url = url;
	            this.ImageMapName = ImageMapName;
	        };

	        var _ImgObjArray = [];

	        function setIsLoad(img) {
	            for (var i = 0; i < _ImgObjArray.length; i++) {
	                if (_ImgObjArray[i] == null) break;
	                if (_ImgObjArray[i].imgSmall.img.src == img.src) _ImgObjArray[i].imgSmall.IsLoad = true;
	                if (_ImgObjArray[i].imgBig.img.src == img.src) _ImgObjArray[i].imgBig.IsLoad = true;
	            }
	        }

	        $.fn.AddImg = function(v_srcSmall, v_srcBig, v_url, ImageMapName) {
	            _ImgObjArray[_ImgObjArray.length++] = new ImgObj2(v_srcSmall, v_srcBig,
	                v_url, ImageMapName);
	        }

	        $.fn.Start = function() {
	            _start();
	        }

	        function _start() {
	            $('#test_p').text(curLoadIndex++);
	            var timer = null;
	            if (curLoadIndex < 10) {
	                for (i = 0; i < _ImgObjArray.length; i++) {
	                    if (!_ImgObjArray[i].imgSmall.IsLoad || !_ImgObjArray[i].imgBig.IsLoad) {
	                        timer = setTimeout(function() { _start(); }, 500);
	                        return;
	                    }
	                }
	            }
	            timer = null;
	            var MyEvent = jQuery.Event('isload');
	            thisObj.trigger(MyEvent);
	        }


	        thisObj.bind('isload', function(e) {
	            $(this).css('background-image', 'none');
	            ShowBan(-1);
	        });

	        function ShowBan(isNotClearTime) {

	            if (isNotClearTime <= 0) { thisObj.stopTime(); }

	            var imgObj = _ImgObjArray[curIndexImg++];
	            // случайное появление первого баннера
	            // var imgObj = (isNotClearTime == -1) ? _ImgObjArray[Math.floor(Math.random() * _ImgObjArray.length)] : _ImgObjArray[curIndexImg++];

	            var img_big = imgObj.imgBig.img;

	            // установак для болшой картинки урла текущей картинки (сменяемой справа)
	            AreaBig.attr('href', imgObj.Url);

	            // установак для болшой картинки срц текущей картинки (сменяемой справа)
	            ImgBig.animate({ opacity: 0 }, 100, function() { ImgBig.attr('src', img_big.src); ImgBig.animate({ opacity: 1 }); });
	            ImgBig.attr('src', img_big.src);
	            
	            // Исползование имаджемап на болшой фотке
	            ImgBig.attr('usemap', '#' + imgObj.ImageMapName);

	            var j = curIndexImg;
	            for (i = AreaSmall.length - 1; i >= 0; i--) {
	                if (j >= _ImgObjArray.length) j = 0;
	                imgObj = _ImgObjArray[j++];
	                var img_s = AreaSmall[i];
	                img_s.find('img').attr({ 'src': imgObj.imgSmall.img.src });
	                img_s.attr('href', imgObj.Url);
	                img_s.attr('rel', j-1);
	            }

	            if (curIndexImg >= _ImgObjArray.length) curIndexImg = 0;

	            if (isNotClearTime <= 0) thisObj.everyTime(settings.delay * 1000, ShowBan);
	        }

	        return this;
	    }
	});
})(jQuery);
