/**
 * aMenu - Animated jQuery Menu
 * (C) 2011 Sawanna Team (http://sawanna.org)
 */
(function($){
	jQuery.fn.amenu=function(settings)
	{
		aMenu={
			menu: null,
			timer: null,
			z: 0,
			params: new Array(),
			init: function(elem,settings) {
				this.params.speed=200;
				this.params.animation='show';
				
				if (typeof(settings) != 'undefined') {
					try {
						for (s in settings) {
							this.params[s]=settings[s];
						}
					} catch(e) {}
				}
				
				this.menu=elem;
				this.z=jQuery(this.menu).css('z-index');
				jQuery(this.menu).find('li').each(function(){
					var childs=jQuery(this).find('ul');
					if (childs.length > 0) {
						jQuery(this).addClass('parent');
					}
					
					jQuery(this).children('a').hover(
						function(){
							aMenu.show(jQuery(this));
						},
						function(){
							aMenu.timer=window.setTimeout("aMenu.hide('"+elem.selector+"')",1000);
						}
					);
				});
			},
			show: function(elem) {
				window.clearTimeout(aMenu.timer);
				aMenu.hide();
				aMenu.highlight(elem);
				jQuery(elem).parents('ul').stop(true,true).css('display','block');
	
				aMenu.z++;
				aMenu.animate(jQuery(elem).parent('li').children('ul'));
			},
			hide: function(elem) {
				if(elem){
					selector = elem;
				}else{
					selector = aMenu.menu;
				}
				jQuery(selector).find('a').removeClass('active');
				jQuery(selector).find('ul').stop(true,true).css('display','none');
			},
			animate: function(elem) {
				aMenu.fix(jQuery(elem));
	
				jQuery(elem).children('li').css('display','none');
				jQuery(elem).css('display','block');
				var i=1;
				jQuery(elem).children('li').each(function(){
					if (aMenu.params.animation == 'fade') {
						jQuery(this).stop(true,true).fadeIn(i*aMenu.params.speed);
					} else if (aMenu.params.animation == 'slide') {
						jQuery(this).stop(true,true).slideDown(i*aMenu.params.speed);
					} else if (aMenu.params.animation == 'wind') {
						jQuery(this).css({
									'width':0,
									'display':'block'
								});
						jQuery(this).animate({'width':'100%'},i*aMenu.params.speed);
					} else if (aMenu.params.animation == 'none') {
						jQuery(this).css({
									'display':'block'
								});
					} else {
						jQuery(this).stop(true,true).show(i*aMenu.params.speed);
					}
					i++;
				});
				jQuery(elem).css('z-index',aMenu.z);
			},
			fix: function(elem) {
				var p=jQuery(elem).parents('ul');
				if (p.length>1) {
					jQuery(elem).css({
								'left': jQuery(elem).parent('li').width(),
								'top': 0
								});
				} else {
					jQuery(elem).css({
								'left': 0,
								'top': jQuery(elem).parent('li').height()
								});
				}
			},
			highlight: function(elem) {
				var e=jQuery(elem).parent('li');
				while (e.length != 0) {
					jQuery(e).children('a').addClass('active');
					e=jQuery(e).parent('ul').parent('li');
				}
			}
		}
		
		aMenu.init(jQuery(this),settings);
	}
})(jQuery);
