(function($) {

var defSettings = {
	container: '.selector-container',
	itemsContainer: '.selector-items',
	toggle: '.selector',
	current: '.g-current',
	close: '.close'
};

var lSelector = function(selector, settings) {

	selector = $(selector);
	var self = this;

	this.container = selector.parents(settings.container);
	this.itemsContainer = this.container.find(settings.itemsContainer);

	this.show = function() {
		$(document).click();
		self.container.css('z-index', '999');
		self.itemsContainer.css('display', 'block');
		return false;
	};

	this.hide = function() {
		self.container.css('z-index', 'auto');
		self.itemsContainer.css('display', 'none');
		return false;
	};

	this.hideByOthers = function(e) {
		e = e || event || window.event;
		var target = $(e.target);
		if (!target.is(settings.container) && target.parents(settings.container).size() <= 0) {
			self.hide();
		}
	};

	selector.click(this.show);
	this.itemsContainer.find(settings.current).click(this.hide);
	this.itemsContainer.find(settings.close).click(this.hide);
	$(document).click(this.hideByOthers);
};

$.fn.lSelector = function(settings) {

	settings = $.extend(defSettings, settings);

	this.each(function(i, selector) {
		new lSelector(selector, settings);
	});
	
};

})(jQuery);

$(function() {
	$('.selector-container .selector').lSelector();
});
