/*
* Copyright (C) 2009 Joel Sutherland
* Licenced under the MIT license
* http://www.newmediacampaigns.com/page/autosprites-jquery-menu-plugin
*/

(function($) {
	$.fn.autosprites = function(settings) {
		settings = $.extend({
			offset: '100%',
			orientation: 'horizontal',
			over: { opacity: 'show' },
			overSpeed: 400,
			out: { opacity: 'hide' },
			outSpeed: 400,
			activeState: false,
			activeClass: 'left_menu_active',
			activeSprites: false
		}, settings);

		function rempx(string){ return Number(string.substr(0, string.length - 2));	}
		function addpx(number){	return number + 'px'; }
		
		$(this).each(function(){
		// перебираем все <ul> на странице
			var backgroundImage = $(this).css('background-image');
			
			// Solves IE6 stacking context bug
			$(this).css('zIndex', 100).find('a').css('zIndex', 99);

			var totalPositionOffset = 0;
			
			// добавлено (By Destroyer) (для произвольного числа элементов в списке)
			//var i=0; // сетчик элементов li
			$(this).children().each(function(){
			// перебираем все <li> в текущем <ul>
				// сдвинем каждый элемент (li) на его высоту
				//var new_top = i * rempx($(this).css('height'));
				//$(this).css('top', new_top);
				//i++;
			// конец добавленного (By Destroyer)
			
				var positionOffset = '-' + addpx(totalPositionOffset);
				
				// Assign the background image to each menu item and give it the correct background-position
				var baseOffset = '0px';
				//If this child is active we need to adjust the base offset to the active level
				if(settings.activeState && $(this).hasClass(settings.activeClass)){
					baseOffset = '-' + addpx(rempx(settings.offset));
					if(settings.activeSprites)
						baseOffset = '-' + addpx(rempx(settings.offset) * 2);
				}
				var position = settings.orientation == 'horizontal' ? positionOffset + ' ' + baseOffset : baseOffset + ' ' + positionOffset;
				var offsetPosition = settings.orientation == 'horizontal' ? positionOffset + ' -' + settings.offset : '-' + settings.offset + ' ' + positionOffset;
				$(this).css({
					backgroundImage: backgroundImage,
					backgroundPosition: position
				});
				
				// Build the Hover Divs so that the background can be animated
				var width = $(this).css('width');
				var height = $(this).css('height');
				var hover = $('<div>&nbsp;</div>').css({
						cursor: 'hand',
						zIndex: 1,
						position: 'absolute',
						top: 0,
						left: 0,
						width: width,
						height: height,
						backgroundImage: backgroundImage,
						backgroundPosition: offsetPosition
					}).hide();
				$(this).prepend(hover);
				
				
				$(this).hover(function(){
					$(this).find('div').stop(false, true).animate(settings.over, settings.overSpeed);
				}, function(){
					$(this).find('div').stop(false, true).animate(settings.out, settings.outSpeed);

				});
				
				// (By Destroyer)
				// подсветить текущую активную кнопку
				var page_url = window.location;
				
				var curr_url = $(this).find('a').attr('href');
				curr_url = 'http://'+document.domain+curr_url;
				
				if (page_url == curr_url)
				{
				$(this).find('div').stop(false, true).animate(settings.over, settings.overSpeed);
				$(this).removeClass('left_menu_item');
				$(this).addClass('left_menu_item_active');
				}
				
				// end of (By Destroyer)
	
				totalPositionOffset += settings.orientation == 'horizontal' ? rempx(width) : rempx(height);
				
				// добавлено (By Destroyer)
				// устанавливаем класс для выделенного элемента
				$(this).click(function () {
				//reset the selected item
				$('.left_menu li').removeClass('left_menu_item_active');
				$('.left_menu li').find('div').stop(false, true).animate(settings.out, settings.outSpeed);
				
				//select the current item
				$(this).addClass('left_menu_item_active');
				});
				
				});
			
			
		//If the mouse leaves the menu, reset the floating bar to the selected item
		$('.left_menu').mouseleave(function () {
		$('.left_menu li.left_menu_item_active').find('div').stop(false, true).animate(settings.over, settings.overSpeed);
		/*
		$(this).find('div').stop(false, true).animate(settings.over, settings.overSpeed);
		//Retrieve the selected item position and width
		default_left = Math.round($('#lava li.selected').offset().left - $('#lava').offset().left);
		default_width = $('#lava li.selected').width();
		
		//Set the floating bar position, width and transition
		$('#box').stop(false, true).animate({left: default_left},{duration:1500, easing: style});	
		$('#box .head').stop(false, true).animate({width:default_width},{duration:1500, easing: style});		
		*/
		});	
		// конец добавленного (By Destroyer)
		$('.left_menu li.left_menu_item_active').find('div').stop(false, true).animate(settings.over, settings.overSpeed);
		
		
		});
	}
})(jQuery);

