// jQuery plugin: SafeEnter 1.0
// http://plugins.jquery.com/project/SafeEnter
// by teedyay
//
// Fires an event when the user presses Enter, but not whilst they're in the browser's autocomplete suggestions

//codesnippet:2e23681e-c3a9-46ce-be93-48cc3aba2c73
(function($)
{
	$.fn.listenForEnter = function()
	{
		return this.each(function()
		{
			$(this).focus(function()
			{
				$(this).data('safeEnter_InAutocomplete', false);
			});
			$(this).keypress(function(e)
			{
				var key = (e.keyCode ? e.keyCode : e.which);
				switch (key)
				{
					case 13:
						// Fire the event if:
						//   - we're not currently in the browser's Autocomplete, or
						//   - this isn't a textbox, or
						//   - this is Opera (which provides its own protection)
						if (!$(this).data('safeEnter_InAutocomplete') || !$(this).is('input[type=text]') || $.browser.opera)
						{
							$(this).trigger('pressedEnter', e);
						}
						$(this).data('safeEnter_InAutocomplete', false);
						break;

					case 40:
					case 38:
					case 34:
					case 33:
						// down=40,up=38,pgdn=34,pgup=33
						$(this).data('safeEnter_InAutocomplete', true);
						break;

					default:
						$(this).data('safeEnter_InAutocomplete', false);
						break;
				}
			});
		});
	};

	$.fn.clickOnEnter = function(target)
	{
		return this.each(function()
		{
			$(this)
				.listenForEnter()
				.bind('pressedEnter', function()
				{
					$(target).click();
				});
		});
	};
})(jQuery);
