(function($) {
	$.fn.hAccordion = function(params){
		var params = jQuery.extend({
			selectedIndex: 0,
			speed: 500,
			easeFunc: "easeInExpo",
			menu: this
		},params);

		params.menu.wrap("<div class='menuContainer'></div>");
		var items = params.menu.find("ul li.menuitem:gt("+params.selectedIndex+")");
		items.each(function(i) {
				var handle = jQuery(this).find("div.handle");
				jQuery(this).animate({
				left: params.menu.width() - (handle.width() * (items.size() - (i)))+ "px"
				}, params.speed, params.easeFunc);
		});
		params.menu.curIndex = params.selectedIndex;
		
		return this.each(function() {
			params.menu.find("ul li.menuitem").each(function(i) { 
				jQuery(this).css("left", i * jQuery(this).find("div.handle").width()); 
				jQuery(this).css("zIndex", i); 
				jQuery(this).home = true;
			});
			
			params.menu.find("ul li.menuitem div.handle").click(function(){
				
				var handle = jQuery(this);
				var selItem = params.menu.find("ul li.menuitem");
				var selIndex = selItem.index(jQuery(this).parent());
				
				if (selIndex < params.menu.curIndex) {
					var items = params.menu.find("ul li.menuitem:gt("+selIndex+")");
					items.each(function(i) {
							jQuery(this).animate({
							left: params.menu.width() - (handle.width() * (items.size() - (i)))+ "px"
							}, params.speed, params.easeFunc);
					});
				} else {
					var items = params.menu.find("ul li.menuitem:lt("+(selIndex+1)+")");
					items.each(function(i) {
							jQuery(this).animate({
							left: i * handle.width() + "px"
							}, params.speed, params.easeFunc);
					});
				}
				params.menu.curIndex = selIndex;
				$.event.trigger('onselect', [selIndex]);
			});
		});
	};

	$.fn.selectItem = function(params) {
	};

    $.fn.onselect = function(fn) { $(this).bind('onselect', fn); };

})(jQuery);