/*
	Implico Collapsible Menu (C) 2010 by Bartosz Sak, info@implico.pl
*/

$.fn.menu_implico=function(options)
{
	var defaults=
	{
		timeout : 300,
		speed : 200,
		label : '',
		submenu : ''
	}
	
	var obj=$(this);
	var o=$.extend(defaults, options);
	
	var labels=obj.find(o.label, obj);
	
	var elements=new Array();
	labels.each(function(i, el)
	{
		elements[i]={ 'label' : $(el), 'submenu' : $(el).find(o.submenu) }; 
	});
	
	//var elOpen=null;
	var currentOpen=-1;
	var closeTimeoutHandler=null;
	
	labels.mouseover(function()
	{
		var nr=-1;
		var currentObj=$(this);
		$.each(elements, function(i, el)
		{
			if (el.label.get(0)==currentObj.get(0))
			{
				nr=i;
				return;
			}
		});
		
		if (nr>=0)
			open(nr);
	});

	labels.mouseout(function()
	{
		closeTimeout();
	});
	
	function open(nr)
	{
		if (nr==currentOpen)
		{
			cancelTimeout();
			return;
		}
		var el=elements[nr];
		cancelTimeout();
	
		close();
	
		el.label.addClass('more');
		el.submenu.toggle(true);
		//el.submenu.toggle(o.speed);
		
		currentOpen=nr;
	}
	
	function closeTimeout()
	{
		closeTimeoutHandler=setTimeout(function()
		{
		
			close();
			
		}, o.timeout);
	}
	
	function cancelTimeout()
	{
		if (closeTimeoutHandler)
		{
			clearTimeout(closeTimeoutHandler);
			closeTimeoutHandler=null;
		}
	}
	
	function close()
	{
		if (currentOpen>=0)
		{
			var el=elements[currentOpen];
			el.label.removeClass('more');
			Cufon.refresh();
			//el.submenu.toggle(o.speed);
			el.submenu.toggle(false);
			
			currentOpen=-1;
		}
	}
}
