function makeScrollable(wrapper, scrollable) {
	// Get jQuery elements
	var wrapper = jQuery(wrapper), scrollable = jQuery(scrollable);

	// Hide images until they are not loaded
	scrollable.hide();
	/*
	 * var loading = jQuery('<div class="loading">Loading...</div>').appendTo(
	 * wrapper);
	 */

	// Set function that will check if all images are loaded
	var interval = setInterval( function() {
		var images = scrollable.find('img');
		var completed = 0;

		// Counts number of images that are succesfully loaded
			images.each( function() {
				if (this.complete) {
					completed++;
				}
			});

			if (completed == images.length) {
				clearInterval(interval);
				// Timeout added to fix problem with Chrome
				setTimeout( function() {

					// loading.hide();
						// Remove scrollbars
						wrapper.css( {
							overflow : 'hidden'
						});

						scrollable.slideDown('slow', function() {
							enable();
						});
					}, 1000);
			}
		}, 100);

	function enable() {
		// height of area at the top at bottom, that don't respond to mousemove
		var inactiveMargin = 100;
		// Cache for performance
		var wrapperWidth = wrapper.width();
		var wrapperHeight = wrapper.height();
		// Using outer height to include padding too
		var scrollableHeight = scrollable.outerHeight() + 2 * inactiveMargin;
		// Do not cache wrapperOffset, because it can change when user resizes
		// window
		// We could use onresize event, but it's just not worth doing that
		// var wrapperOffset = wrapper.offset();

		// Create a invisible tooltip
		var tooltip = jQuery('<div class="sc_menu_tooltip"></div>').css(
				'opacity', 0).appendTo(wrapper);

		// Save menu titles
		scrollable.find('a').each( function() {
			// The "data" function attaches custom data to an element
				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('');
		});
	}
}
