

function makeScrollable(wrapper, scrollable){
	var wrapper = jQuery(wrapper), scrollable = jQuery(scrollable);

	var interval = setInterval(function(){
		var images = scrollable.find('img');
		var completed = 0;

		images.each(function(){
			if (this.complete) completed++;
		});

		if (completed == images.length){
			clearInterval(interval);
			setTimeout(function(){

				wrapper.css({overflow: 'hidden'});

				scrollable.slideDown('slow', function(){
					enable();
				});
			}, 1000);
		}
	}, 100);

	function enable(){
		var inactiveMargin = 99;
		var wrapperWidth = wrapper.width();
		var wrapperHeight = wrapper.height();
		var scrollableHeight = scrollable.outerHeight() + 2*inactiveMargin;

		var tooltip = jQuery('<div class="sc_menu_tooltip"></div>')
			.css('opacity', 0)
			.appendTo(wrapper);

		scrollable.find('a').each(function(){
			jQuery(this).data('tooltipText', this.title);
		});

		// Remove default tooltip
		scrollable.find('a').removeAttr('title');
		// Remove default tooltip in IE
		scrollable.find('img').removeAttr('alt');

		var lastTarget;
		//When user move mouse over menu
		wrapper.mousemove(function(e){
			// Save target
			lastTarget = e.target;

			var wrapperOffset = wrapper.offset();

			var tooltipLeft = e.pageX - wrapperOffset.left;
			// Do not let tooltip to move out of menu.
			// Because overflow is set to hidden, we will not be able too see it
			tooltipLeft = Math.min(tooltipLeft, wrapperWidth - 75); //tooltip.outerWidth());

			var tooltipTop = e.pageY - wrapperOffset.top + wrapper.scrollTop() - 40;
			// Move tooltip under the mouse when we are in the higher part of the menu
			if (e.pageY - wrapperOffset.top < wrapperHeight/2){
				tooltipTop += 80;
			}
			tooltip.css({top: tooltipTop, left: tooltipLeft});

			// Scroll menu
			var top = (e.pageY -  wrapperOffset.top) * (scrollableHeight - wrapperHeight) / wrapperHeight - inactiveMargin;
			if (top < 0){
				top = 0;
			}
			wrapper.scrollTop(top);
		});

		// Setting interval helps solving perfomance problems in IE
		var interval = setInterval(function(){
			if (!lastTarget) return;

			var currentText = tooltip.text();

			if (lastTarget.nodeName == 'IMG'){
				// We've attached data to a link, not image
				var newText = jQuery(lastTarget).parent().data('tooltipText');

				// Show tooltip with the new text
				if (currentText != newText) {
					tooltip
						.stop(true)
						.css('opacity', 0)
						.text(newText)
						.animate({opacity: 1}, 1000);
				}
			}
		}, 200);

		// Hide tooltip when leaving menu
		wrapper.mouseleave(function(){
			lastTarget = false;
			tooltip.stop(true).css('opacity', 0).text('');
		});
	}
}

jQuery(function(){
	makeScrollable("div.sc_menu_wrapper", "div.sc_menu");
});

