/**
 * DISNEY UI - Menu
 * @version 1.0
 * @author: Dwight Brown <dwightb at construct7.com>
 */
	 
;(function($)
{
	var classes =
		{
			"container": "disney-ui-menu",
			"loading":   "disney-ui-loading",
			"error":     "disney-ui-error"
		};

	$.fn.Menu = function( options )
	{
		function generateHTML( xml, el, options )
		{
			// OPTIONS
			var options = options || {};
			
			// Set default options
			classes        = options.classes || classes;
			
			// DATA
			var items = $(xml).find("items item");
			
			$(el).html( '<div class="' + classes.container + '"><ul></ul></div>' );

			if ( items && items.length )
			{
				$(items).each( function()
				{
					var image = $(this).find("media").attr("url");
					var title = $(this).find("title").text();
					var feed  = $(this).find("feed").text();
					var ul = $(el).find('div.'+classes.container+' ul').append( '<li style="background-image: url(' + image + ');">' + title + '</li>' );
					$(ul).find("li:last").click( function()
					{
						$(el).trigger( "menuItemClick", [title, image, feed] ).fadeOut("fast");
					});
				});
			}
			
			$(el).find("div."+classes.container + " ul").mouseleave( function(){$(el).fadeOut()} );
		};
	
		return this.each( function()
		{
			// Display loading indicator
			$(this).html( '<p class="' + classes.loading + '">' + options.loadingText + '</p>' );
			
			if ( options && options.feed )
			{
				$.ajax(
				{
					target: this,
					options: options,
					type: "GET",
					url: options.feed,
					dataType: "xml",
					success: function( xml )
					{
						generateHTML( xml, this.target, this.options );
					},
					error: function()
					{
						$(this).html( '<p class="' + classes.error + '">Error: Feed failed to load.</p>' );
					}
				});
			}
			else
			{
				$(this).html( '<p class="' + classes.error + '">Error: Feed not specified.</p>' );
			}
		});
	};
})(jQuery);

/* Avoid errors in browser that do not support console.log() */
if ( !window.console )
{
	window.console = {};
	console.log = function(){};
}