(function($) {

	/**
	 * resize manager
	 */
	Namespace('MFMedia.ResizeManager', {
		'_handlers': { 'default': [] },
		'_staticHandlers': [],
		
		'init': function()
		{
			if (arguments[0]) {
				MFMedia.ResizeManager.addStaticHandler(arguments[0]);
			}
			$(window).resize(MFMedia.ResizeManager.resize);
			MFMedia.ResizeManager.resize();
		},
		
		'addStaticHandler': function(callback)
		{
			MFMedia.ResizeManager._staticHandlers.push(callback);
			return MFMedia.ResizeManager;
		},
		
		'addHandler': function(callback)
		{
			var key = arguments[1] || 'default';
			if (!MFMedia.ResizeManager._handlers[key]) {
				MFMedia.ResizeManager._handlers[key] = [];
			}
			MFMedia.ResizeManager._handlers[key].push(callback);
			return MFMedia.ResizeManager;
		},
		
		'reset': function()
		{
			var key = arguments[0] || 'default';
			MFMedia.ResizeManager._handlers[key] = [];
			return MFMedia.ResizeManager;
		},
		
		'resetAll': function()
		{
			MFMedia.ResizeManager._handlers = [];
			return MFMedia.ResizeManager;
		},
		
		'resize': function()
		{
			var _resize = function(handlers) {
				for (var i = 0; i < handlers.length; i++) {
						handlers[i]();
				}
			};
			
			_resize(MFMedia.ResizeManager._staticHandlers);
			for (var key in MFMedia.ResizeManager._handlers) {
				_resize(MFMedia.ResizeManager._handlers[key]);
			}
			return MFMedia.ResizeManager;
		}
	});
	
})(jQuery);
