(function($){ 
$.fn.banner = function(options) { 
	// check that the passed element is actually in the DOM
	if ($(this).length == 0) {
		if (window.console && window.console.log) {
			window.console.log('Element does not exist in DOM!');
		}
		else {
			alert('Element does not exist in DOM!');		
		}
		return false;
	}
	var bannerID = '#' + $(this).attr('id');
	
	return this.each(function(){
		var settings = {				
			block: false,
			currentBuf: 0,
			makeDarkUrl: ['url(http://softlab.com.ua/assets/files/banners/CRM/fin.png)'],
			bigBannerId: '#bigbnr',
			subBannerId: '#subbnr',
			category: '#bigbnr ul li',
			subcategory: '#subbnr-list li div.wrap div',
			activeCat: 0,
			activeSub: 0
		};

		$(settings.category).each(function (catIndx) {
			$(this).attr('id', 'cat-' + catIndx);
			$('#info-' + catIndx +' li').each(function (subIndx) {
				$(this).attr('id', 'cat-'+ catIndx + '-sub-' + subIndx);				
			});	
		});	
		$('#info-u li').each(function (subIndx) {
			$(this).attr('id', 'cat-u-sub-' + subIndx);				
		});	
		processContent();
		
		function processContent() {		
			if($(settings.category+'.active').length == 0) {
				setActiveCategory(0, $(settings.category+'.first'));
			} else {
				$(settings.category).each(function(index){
					if ($(this).hasClass('active')) {
						settings.activeCat = index;
						setActiveCategory(settings.activeCat, $('#cat-'+settings.activeCat).first());
						return false;
					}
				});		
			}	
				//getSubs(settings.activeCat);
			
				$(settings.category).click(function(e) {			
					index = $(settings.category).index(this);
					settings.block = true;
					setActiveCategory(index, this);
				});	
				/*$.doTimeout(5000, function() {
					if (!settings.block)
						nextImg();
				});*/
			
		}
		/*
		function nextImg() {
			var catAmount = $(settings.category).size();
			var subAmount = $('#subbnr-list>li').size();

			if (settings.activeSub + 1 >= subAmount ) {
				settings.activeSub = 0;
				if (settings.activeCat + 1 >= catAmount ) {
					setActiveCategory(0, $('#cat-0').first());
				} else {
					settings.activeCat++;
					setActiveCategory(settings.activeCat, $('#cat-'+settings.activeCat).first());
				}
			} else {
				setActiveSubCategory(settings.activeSub + 1, $('#el-'+(settings.activeSub+1) + ' div.wrap div').first());
			}
			$.doTimeout(5000, function() {
				if (!settings.block) {
					nextImg();
				} else {
					$.doTimeout(10000, function() {
						settings.block = false;
						nextImg();
					});
				}
			});
		}*/
		function getSubs(cat) {
			settings.activeCat = cat;
			$('#subbnr-list').html('');

			$('#info-'+ cat + ' ul li').each(function(index){							
					var subText = $('span.subbnr_name', this).first().text();
					var activeImg = $('span.subbnr_logo_hover', this).first().text();
					var inactiveImg = $('span.subbnr_logo', this).first().text();
					var link = $('span.subbnr_link', this).first().text();
					var subBg = '';
									
					if (!$(this).hasClass('active')) {	
						subBg = 'style="background: url('+ inactiveImg +') no-repeat"';
					} else {
						settings.activeSub = index;
						subBg = 'class="active" style="background: url('+ activeImg +') no-repeat"';
					}
					$('#subbnr-list').append('<li id="el-'+ index +'"><a href="/'+ link +'"><div class="wrap"><div '+ subBg +'></div><p>'+ subText +'</p></div></a></li>').hide().show(700);
			});
			$(settings.subcategory).each(function(index){
					if ($(this).hasClass('active')) {
						settings.activeSub = index;
						setActiveSubCategory(settings.activeSub, $('#el-'+settings.activeSub + ' div.wrap div').first());
						return false;
					}
			});	
		/*	
			if ( !$(settings.subcategory).hasClass('active') ) {
			setActiveSubCategory(0, $(settings.subcategory).first());
			}*/
					
			$(settings.subcategory).mouseover(function(e) {
				index = $(settings.subcategory).index(this);
				if ( index != settings.activeSub ) {
					setActiveSubCategory(index, this);	
				}				
			});
		}
		function switchBuf() {
			if (settings.currentBuf == 0) {
				settings.currentBuf = 1;
			} else {
				settings.currentBuf = 0;
			}
		}
		function setActiveCategory(cat, el) {
			settings.activeCat = cat;
			settings.activeSub = -1;			
			getSubs(cat);
			
			var info = $('#cat-u-sub-'+ cat);
			var bigImg = $('span.subbnr_big', info).first().text();
			var current = $('#buf'+settings.currentBuf);
			switchBuf();
			var next = $('#buf'+settings.currentBuf);
			
			if ( settings.activeSub < 0 ) {
				next.css({opacity: 0.0}).css( "backgroundImage", "url("+ bigImg +")")
				.addClass('upper')
				.animate({opacity: 1.0}, 1000);
			}
			$(settings.category+'.active').removeClass('active');
			$(el).addClass('active');

			if ( settings.activeSub < 0 ) {
				if (cat == 4) {
					$('#cat-4').css("color", "#000");
				}
				current.animate({opacity: 0.0}, 1000)
				.removeClass('upper');
			}
			/*
			$('#buf0').animate({opacity:0}, 50, "linear", function(){
				$(settings.category+'.active').removeClass('active');
				$(el).addClass('active');
				if (cat == 4) {
					$('#cat-4').css("color", "#000");
				}
				$('#buf0').css( "backgroundImage", "url("+ bigImg +")");
				$('#buf0').animate({opacity:1}, 1000);
			});	*/
		}
		function setActiveSubCategory(sub, el) {
			var prevSubbanner = $('#cat-'+settings.activeCat+'-sub-' + settings.activeSub + ' span.subbnr_logo').first().text();

			var info = $('#cat-'+settings.activeCat+'-sub-'+ sub);
			var activeImg = $('span.subbnr_logo_hover', info).first().text();
			var bigImg = $('span.subbnr_big', info).first().text();
			var current = $('#buf'+settings.currentBuf);
			switchBuf();
			var next = $('#buf'+settings.currentBuf);
			
			settings.activeSub = sub;
				
			$(settings.subcategory+'.active').first().removeClass('active').css("backgroundImage", "url("+ prevSubbanner +")");
			$(el).addClass('active').css("backgroundImage",  "url("+ activeImg +")");
			next.css({opacity: 0.0}).css( "backgroundImage", "url("+ bigImg +")")
			.addClass('upper')
			.animate({opacity: 1.0}, 1000);
			if (settings.activeCat == 4 && $.inArray(next.css( "backgroundImage"), settings.makeDarkUrl) < 0) {
				$('#cat-4').removeAttr('style');
			}
			if ($.inArray(next.css( "backgroundImage"), settings.makeDarkUrl) >= 0) {
					$('#cat-4').css("color", "#000");
			}
			current.animate({opacity: 0.0}, 1000)
			.removeClass('upper');
			/*
			$(settings.subcategory+'.active').first().removeClass('active').css("backgroundImage", "url("+ prevSubbanner +")");
			$(el).addClass('active').css("backgroundImage",  "url("+ activeImg +")");
			$('#buf0').animate({opacity:0}, 50, "linear", function(){
				if (settings.activeCat == 4) {
					$('#cat-4').removeAttr('style');
				}
				$('#buf0').css("backgroundImage",  "url("+ bigImg +")");
				$('#buf0').animate({opacity:1}, 1000);
			});	
			*/
		}
	});
	
};
})(jQuery);
