/*
 * jQuery dropdown: A simple dropdown plugin
 *
 * Inspired by Bootstrap: http://twitter.github.com/bootstrap/javascript.html#dropdowns
 *
 * Copyright 2011 Cory LaViska for A Beautiful Site, LLC. (http://abeautifulsite.net/)
 *
 * Dual licensed under the MIT or GPL Version 2 licenses
 *
*/
if(jQuery) (function($) {

	$.extend($.fn, {
		dropdown: function(method, data) {

			switch( method ) {
				case 'hide':
					hideDropdowns();
					return $(this);
				case 'attach':
					return $(this).attr('data-dropdown', data);
				case 'detach':
					hideDropdowns();
					return $(this).removeAttr('data-dropdown');
				case 'disable':
					return $(this).addClass('dropdown-disabled');
				case 'enable':
					hideDropdowns();
					return $(this).removeClass('dropdown-disabled');
			}

		}
	});

	function showMenu(event) {

		var trigger = $(this),
			dropdown = $( $(this).attr('data-dropdown') ),
			isOpen = trigger.hasClass('dropdown-open'),
            rtl = $('html').hasClass('rtl'),
            relative = trigger.offsetParent(),
            offset = relative.offset();
        if (relative.get(0) !== document.body)
            offset.top -= relative.scrollTop();

		event.preventDefault();
		event.stopPropagation();

		hideDropdowns();

		if( isOpen || trigger.hasClass('dropdown-disabled') ) return;

        if (rtl && dropdown.hasClass('anchor-right'))
            dropdown.removeClass('anchor-right');

		dropdown.css({
				left: -offset.left + (dropdown.hasClass('anchor-right') ?
				trigger.offset().left - (dropdown.outerWidth() - trigger.outerWidth() - 4) : trigger.offset().left),
				top: -offset.top + trigger.offset().top + trigger.outerHeight()
			}).show();
		trigger.addClass('dropdown-open');
	}

	function hideDropdowns(event) {

		var targetGroup = event ? $(event.target).parents().addBack() : null;
		if( targetGroup && targetGroup.is('.action-dropdown') && !targetGroup.is('a') ) return;

		$('body')
			.find('.action-dropdown').hide().end()
			.find('[data-dropdown]').removeClass('dropdown-open');
	}

	$(function () {
		$('body').on('click.dropdown', '[data-dropdown]', showMenu);
		$('html').on('click.dropdown', hideDropdowns);
		if(document.addEventListener) {
			$(window).on('resize.dropdown', hideDropdowns);
		}
	});

})(jQuery);
