(function($){
	$.fn.vselect = function(options)
	{
		// Vars
    var defaults = {};
    var container = this;
    var groups = new Object();
		// Functions 
		function _SpanClicked(obj)
		{
			var _eq = $(obj).parent().index();
			if($(obj).parents("ul").hasClass("selected"))
			{
				_eq -= 1;
				$(obj).parents("ul").children("li.selected").children("span").text($(obj).text());
			}
			else
			{
				$(obj).parents("ul").addClass("selected");
				$(obj).parents("ul").children("li").removeClass("first");
				$(obj).parents("ul").prepend("<li class=\"selected\"><span></span></li>");
				$(obj).parents("ul").children("li.selected").children("span").text($(obj).text());
			}
			$(obj).parents("ul").addClass("close").removeClass("active");
			$(obj).parents("div.vselect").children("select.vselect-select").children("option:eq("+_eq+")").attr("selected","selected");
		}
		function _SpanClick()
		{
			_SpanClicked(this);
		}
		function _SpanOver()
		{
			$(this).parent().siblings().children("span").removeClass("over");
			$(this).addClass("over");
		}
		function _Over()
		{
			$("ul",this).removeClass("close").addClass("active");
			$("ul li span").bind("mouseover",_SpanOver);
			$("ul li span").bind("click",_SpanClick);
		}
		function _Out()
		{
			$("ul",this).addClass("close").removeClass("active");
			$("ul li span").unbind("mouseover",_SpanOver);
			$("ul li span").unbind("click",_SpanClick);
			$("ul li span").removeClass("over");
		}
		function _Init()
		{
			$(container).each(function(){
				$(this).wrap("<div class=\"vselect\"></div>");
				$(this).parent().append($("<ul />").addClass("close"));
				$(this).removeClass("vselect");
				$(this).addClass("vselect-select");
				$(this).hide();
				$("option",this).each(function(){
					$(this).parent().siblings("ul").append($("<li />").append($("<span />").text($(this).text())));
					if($(this).attr("selected"))
					{
						_SpanClicked($(this).parent().siblings("ul").children("li:last").children("span"));
					}
				});
				$("ul li:first",$(this).parent()).addClass("first");
				$(this).parent().hover(_Over,_Out);
			});
		}
		// Init
		_Init();
	}
})(jQuery);
