(function($) {
	$.fn.menu = function(options) {
		var defaults = {
			url: 'ajax.php',
			preset: false,
			userId: 0
		}
		options = $.extend(false, defaults, options);
		$(this).menu = new Menu($(this), options);
	}
})(jQuery);

function Menu(elements, options) {
	this.init(elements, options);
}
Menu.prototype = {
	init: function(elements, options) {
		this.elements = elements;
		this.options = options;
		this.elements.bind('click', {object: this}, function(e) {
			var self = e.data.object;
			var el = $(this).toggleClass('active').next();
			if (el.css('display') == 'none') {
				el.slideDown('slow');
			} else {
				el.slideUp('slow');
			}
			self.saveNavStatus();
			return false;
		});
		var preset = this.options.preset;
		this.elements.each(function(k, el) {
			if (!$(el).next()) {
				$(el).hide();
				return;
			}
			var txt = $(el).next().text().replace(/\n|\t|\r|\s/g, '');
			if (!txt) {
				$(el).hide();
				$(el).next().hide();
				return;
			}
			if ($.inArray(k, preset) != -1) {
				$(el).next().hide();
			} else {
				$(el).addClass('active');
			}
		});
	},
	saveNavStatus: function() {
		var data = {
			userId: this.options.userId
		};
		this.elements.each(function(k, el) {
			data['' + k] = $(el).hasClass('active') ? 0 : 1;
		});
		var requestOptions = {
			url: this.options.url,
			type: 'POST',
			data: data
		}
		$.ajax(requestOptions);
	}
}