(function() {

	var SWF_PATH = tacoBell.swfPath + 'menu/menu.swf';
	var SWF_WIDTH = 920;
	var SWF_HEIGHT = 508;
	var SWF_NODE = 'menu_flash';

	var FLASH_MODAL_OPENED = 'modalOpened';
	var FLASH_MODAL_CLOSED = 'modalClosed';

	var CONTENT_DATA = 'div.menu_content_data';
	var SELECTOR_DATA = 'div.menu_selector_data';

	var _curr_section;

	var _menu_params;
	var _menu_flashvars;

	var _content_data;
	var _selector_data;

	$(function()
	{
		if (!swfobject.hasFlashPlayerVersion(tacoBell.constants.REQUIRED_FLASH_PLAYER_VERSION))
			$('#' + SWF_NODE + ' div').show();
		
		$(window).bind('mdm:opened', modalOpened);
		$(window).bind('mdm:closed', modalClosed);

		parseContentData();
		parseSelectorData();

		setMenuEmbedAttributes();
		embedMenu();
	});

	function setSection(section) {
		_curr_section = section;
	}

	function getContentData() {
		return _content_data;
	}

	function getSelectorData() {
		return _selector_data;
	}

	function openShareModal() {
		tacoBell.utils.ShareManager.openShareDialog();
	}

	function modalOpened() {
		if (swfobject.getObjectById(SWF_NODE)[FLASH_MODAL_OPENED])
			swfobject.getObjectById(SWF_NODE)[FLASH_MODAL_OPENED]();
	}

	function modalClosed() {
		if (swfobject.getObjectById(SWF_NODE)[FLASH_MODAL_CLOSED])
			swfobject.getObjectById(SWF_NODE)[FLASH_MODAL_CLOSED]();
	}

	function parseContentData() {
		_content_data = {
			title: $(CONTENT_DATA).find('p:first').text(),
			container: $(CONTENT_DATA).find('input[name=container]').val(),
			items: []
		};

		$(CONTENT_DATA).find('li').each(function() {
			var item = {
				title: $(this).find('h1').text(),
				desc: $(this).find('p').html(),
				new_product: $(this).hasClass('new_product')
			};

			if (item.desc == '')
				delete item.desc;

			if ($(this).find('a')[0])
				item.cta = {
					label: $(this).find('a').text(),
					link: $(this).find('a').attr('href'),
					target: $(this).find('a').attr('target') || '_self'
				}

			_content_data.items.push(item);
		});
	}

	function parseSelectorData() {
		_selector_data = {
			slider_items: []
		};

		_selector_data.tabs = {
			tab_left: {
				label: $(SELECTOR_DATA).find('a[name=tab_left]').text(),
				loc: $(SELECTOR_DATA).find('a[name=tab_left]').attr('href')
			},
			tab_right: {
				label: $(SELECTOR_DATA).find('a[name=tab_right]').text(),
				loc: $(SELECTOR_DATA).find('a[name=tab_right]').attr('href')
			}
		};

		$(SELECTOR_DATA + ' ul.' + _curr_section + ' li').each(function() {
			_selector_data.slider_items.push({
				label: $(this).find('a').html(),
				loc: $(this).find('a').attr('href'),
				tag: $(this).find('a').text().replace(/[^\w|\s]/g, '').replace(/\s/g, '_').toLowerCase(),
				thumb: $(this).find('img').attr('src'),
				selected: $(this).hasClass('selected')
			});
		});
		
		if (window.location.pathname.match(/^\/menu/i))
		{
			var menu = window.location.pathname.toLowerCase().match(/^\/menu\/([^\/].+)/i);
			if (!menu || !menu[1]) menu = ['', 'fresco'];

			if (menu && menu[1])
			{
				var matchings = ['why-pay-more', 'limeade-sparklers', 'fresco', 'volcano', 'frutista-freeze', 'kids-meals'];

				for (var i = 0, l = matchings.length; i<l; i++)
					if (matchings[i] == menu[1])
						_selector_data.slider_items[i].selected = true;
			}
		}
	}

	function setMenuEmbedAttributes() {
		_menu_params = {
			wmode: 'transparent',
			scale: 'noscale',
			allowscriptaccess: 'always',
			menu: 'false',
			salign: 'tl'
		};

		_menu_flashvars = {
			section: _curr_section,
			swf_path: tacoBell.swfPath,
			getContentData: 'TacoBellMenuController.getContentData',
			getSelectorData: 'TacoBellMenuController.getSelectorData',
			openShareModal: 'TacoBellMenuController.openShareModal'
		};
	}

	function embedMenu() {
		swfobject.embedSWF(
			SWF_PATH,
			SWF_NODE,
			SWF_WIDTH,
			SWF_HEIGHT,
			tacoBell.constants.REQUIRED_FLASH_PLAYER_VERSION,
			tacoBell.swfPath + tacoBell.constants.EXPRESS_INSTALL_PATH,
			_menu_flashvars,
			_menu_params
		);
	}
	
	window.TacoBellMenuController = {
		SECTION_FOOD: 'food',
		SECTION_MENU: 'menu',

		setSection: setSection,
		getContentData: getContentData,
		getSelectorData: getSelectorData,

		openShareModal: openShareModal
	};
})();
