YAHOO.namespace('squarecompare');

YAHOO.squarecompare.DropDown = function(options) {

	var _private = {};
	var _public = {};

	_private.startHideDropDownTimer = function(millis) {
		_private.stopHideDropDownTimer();
		_private.dropDownTimer = YAHOO.lang.later(millis, null, _public.hideDropDown);
	};

	_private.stopHideDropDownTimer = function() {
		if (_private.dropDownTimer) {
			_private.dropDownTimer.cancel();
			_private.dropDownTimer = null;
		}
	};

	_private.init = function() {
		_private.dropDownTimer = null;
		_private.dropDownMenu = null;

		YAHOO.util.Event.addListener(options.linkId, 'mouseover', function(e) {
			YAHOO.util.Event.stopEvent(e);
			if (_private.dropDownMenu===null) {
				var region = YAHOO.util.Dom.getRegion(options.linkId);
				YAHOO.util.Dom.setStyle(options.menuId, 'top', region.bottom + 'px');
				YAHOO.util.Dom.setStyle(options.menuId, 'left', region.left + 'px');
				_private.dropDownMenu = new YAHOO.widget.Overlay(options.menuId, {
					context:[options.linkId,'tl','bl', ['beforeShow', 'windowResize']],
					visible:false,
					monitorresize:false,
					width:'180px'
				});
				_private.dropDownMenu.render(document.body);
			}
			_private.dropDownMenu.show();
			_private.startHideDropDownTimer(3000);
			return false;
		});
		YAHOO.util.Event.addListener(options.menuId, 'mouseout', function(e) {
			_private.startHideDropDownTimer(500);
		});
		YAHOO.util.Event.addListener(options.menuId, 'mouseover', function(e) {
			_private.stopHideDropDownTimer();
		});
	};

	_private.init();

	_public.hideDropDown = function() {
		_private.dropDownMenu.hide();
	};

	return _public;
};
