(function($, Y){ // anonymous function


// detect if we really need to attach event
$(function(){
	if($('div.dropBoxArena').length)
		YAHOO.gaia.app.arenapulldown();
});

YAHOO.namespace('gaia.app');
YAHOO.gaia.app.arenapulldown = function(){
	// caching expensive DOM functions
	var $allPullDowns = $('.avatarDropLinkArena'),
		$allIndividualMenu = $('.individual_menuArena'),
		$bdContainer = $('div.dropdownArena'),
		$allDropBox = $('div.dropBoxArena');

	// Events pertaining to $allDropBox
	$allDropBox
		.bind('mouseover', function(e) {
			Y.EVENT.stopEvent(e);
			$(this).addClass('trig');
		})
		.bind('mouseout', function(){
			var $menu = $(document.getElementById(this.id + 'menu'));

			if ($menu.css('display') != 'block')
				$(this).removeClass('trig');
		});

	// Events pertaining to $allPullDowns
	$allPullDowns
		.bind('mouseout', function(e) {
			var $dbArena = $(this).ancestors('.dropBoxArena');
			var $menu = $(document.getElementById($dbArena[0].id + 'menu'));

			if ($menu.css('display') != 'block')
				$dbArena.removeClass("hover");
		})

		.bind('mouseover', function(e) {
			var $dbArena = $(this).ancestors('.dropBoxArena'),
				$menu = $(document.getElementById($dbArena[0].id + 'menu')),
				offset = $dbArena.offset(),
				viewport = $.viewport();

			$dbArena.addClass('hover');

			if ($menu.css('display') == 'none') {
				$allDropBox.removeClass('down');
				$dbArena.addClass('down');
				$allIndividualMenu.css('display', 'none');
				$menu.css({
					display: 'block',
					top: offset.bottom - 1 + 'px',
					left: offset.left + 'px'			
				});

				if ($menu.offset().bottom > viewport.bottom) {
					$menu.css({
						top: offset.top - $menu.height() + 1 + 'px'
					});
				}


			}
			
		});

	// Events pertaining to $allIndividualMenu
	$allIndividualMenu.bind('mouseover', function(e){
		Y.EVENT.stopEvent(e);
	});

	// $() means $(document)
	$().bind('mouseover', function(e){
		Y.EVENT.stopEvent(e);

		$allIndividualMenu.css('display' ,"none");
		$allDropBox
			.removeClass("trig")
			.removeClass("down")
			.removeClass("hover");
	});
};

})(YAHOO.util.Short, YAHOO.util.Shortcuts); // end anonymous
