(function($) {

	Namespace('MFMedia', {
	
		'main': function() {
			MFMedia.ResizeManager.init(function() {
				if ($('#main').css('height') <= 430)
					$('#main').css('height', $('#page').height() - 100);
			});
			
			MFAjax.init();
			MFMedia.Search.init();
			
			MFAjax.addEventListener('loadUrl', function() {
				$('#loading').css('display', 'block');
				$('#loadmask').css('display', 'block');
				MFMedia.ResizeManager.reset();
				StackContent.prepare();
			});
			
			MFAjax.addEventListener('dataReceived', function() {
				$('#loading').css('display', 'none');
				$('#loadmask').css('display', 'none');

				StackContent.animate();
			});
			
			$('.categorie').hover(function() {
				var subMenu = '#'+$(this).attr("id")+"-sub";
				//$(subMenu).show('blind', {}, 80);
				$(subMenu).css('opacity', '0');
				$(subMenu).css('visibility', 'visible');
				$(subMenu).animate({opacity : '1'}, 800);
				
				return false;
			},
			
			function() {
				var subMenu = '#'+$(this).attr("id")+"-sub";
				//$(subMenu).hide('blind', {}, 80);
				$(subMenu).css('visibility', 'hidden');
				
				return false;
			});
			
			$('.lang-flag').click(function() {
				var url = MFAjax.lastRequest.url != '' ? MFAjax.lastRequest.url : document.location.href;
				url += url.indexOf('?') == -1 ? '?lang=' : '&lang=';
				document.location = url + this.rel;
				return false;
			});
			
			//Select design (selected) a categorie menu
			$('.categorie a').click(function() {
				$('.categorie a').removeClass('selected');
				$(this).addClass('selected');
				$('#searchform').removeClass('selected');

				return false;
			});
			
			//If we click on a sub categorie we selected the master.
			$('.sub-menu a').click(function() {
				var idmenu = $(this).parent().parent().parent().parent().attr('id');
				$('.categorie a').removeClass('selected');
				$('#'+idmenu+' .menu-link').addClass('selected');
				$('#searchform').removeClass('selected');
				
				return false;
			});
		},
		
		'shortenTitles': function(element)
		{
			var maxLength = arguments[1] || 20;
			var text = element.text();
			element.addClass('shortened');
			
			if (text.length > maxLength) {
				var shortText = text.substr(0, maxLength - 3) + '...';
				element.hover(
					function() { element.text(text); },
					function() { element.text(shortText); }
				);
				element.text(shortText);
			}
		},
		
		'makeScrollable': function(entryWrapper, autofitWrapper) 
		{
			var entry = entryWrapper.find('.entry');
			var scrollHandle = entryWrapper.find('.entry-scroll-handle');
			var scrollHandleHeight = scrollHandle.height();
			var entryHeight = entry.height();
			var scrollStart = parseInt(entryWrapper.css('padding-top'));
			var ratio, maxTop, entryWrapperHeight;
			
			// dimensions
			MFMedia.ResizeManager.addHandler(function() {
			entryWrapperHeight = entryWrapper.height();
			ratio = (entryHeight - entryWrapperHeight) / (entryWrapperHeight - scrollHandleHeight);
			maxTop = entryWrapperHeight - scrollHandleHeight + scrollStart;
			
			if (entryWrapperHeight < entryHeight) {
				scrollHandle.css('display', 'block');
			} else {
				scrollHandle.css({'display': 'none', 'top': scrollStart});
				entry.css('top', 0);
			}
			}).resize();

			var scrollTo = function() {
				var y = parseInt(scrollHandle.css('top'));
				entry.css('top', -(y - scrollStart) * ratio);
			};
			
			scrollHandle.css('top', scrollStart);
			scrollHandle.draggable({
				axis: 'y',
				containment: 'parent',
				drag: function(event, ui) {
					scrollTo();
				}
			});
			
			entryWrapper.mousewheel(function(e, d) {
				if (entryWrapperHeight > entryHeight) {
					return;
				}
				
				var y = parseInt(scrollHandle.css('top')) - 20 * d;
				if (y < scrollStart) {
					y = scrollStart;
				} else if (y > maxTop) {
					y = maxTop;
				}
				scrollHandle.css('top', y);
				scrollTo();
			});
		},
		
		'getWindowWidth': function() {
		    var w = 0;
		    if (typeof(window.innerWidth) == 'number') { // Netscape
		        w = window.innerWidth;
		    } else if (document.documentElement && document.documentElement.clientWidth) {
		        w = document.documentElement.clientWidth;
		    } else if (document.body && document.body.offsetWidth) { //client
		        w = document.body.offsetWidth;
		    }
		    return w;
		},
		
		'scaleImg': function(img) 
		{
			var container = arguments[1] || img.parent();
			
			var h = img.height(), w = img.width(), ch = 390, cw = container.width();
			if (h > ch || w > cw) {
				var ratio = Math.min(cw / w, ch / h);
				h = h * ratio;
				w = w * ratio;
			}
			
			img.css({
				'height': h,
				'width': w
			});
		},
		
		'lunchSearch' : function()
		{
			var searchPattern = $('#searchform input[name=s]').val()
			href = $('#searchform').attr('action');
			
			MFAjax.load(href, {s:searchPattern}, 'post');
		}
	});

})(jQuery);

jQuery(document).ready(MFMedia.main);

