/*
 * Jquery AccordionImageMenu Plugin 0.4.
 * Examples and documentation at: http://web-argument.com/jquery-accordion-image-menu-plugin
 * By Alain Gonzalez (http://web-argument.com)
 * Copyright (c) 2011 Alain Gonzalez 
 * Licensed under the MIT License: http://www.opensource.org/licenses/mit-license.php
*/
(function($){
	function accordionMenuSetting(obj,settings){
		this.menuSettings=settings;
		this.menuAnimate=animate;
		var _this=this;
		
		function animate(obj,i){
			$.each(obj,function(j){
					
					var otherDim=Math.round(((_this.menuSettings.closeDim*obj.length)-(_this.menuSettings.openDim))/(obj.length-1));
					var itemDim=otherDim;if(j==i){itemDim=_this.menuSettings.openDim;}
					
					if(typeof i=='undefined'){
						if(_this.menuSettings.openItem==null)
							itemDim=_this.menuSettings.closeDim;
						else if(_this.menuSettings.openItem==j)
							itemDim=_this.menuSettings.openDim;
						else itemDim=otherDim;
					}
					
					var title=$('span',this);
					title.stop(true,false);
					
					/*if(_this.menuSettings.fadeInTitle!=null&&title.length>0){
						if(itemDim==_this.menuSettings.openDim){
							if(_this.menuSettings.fadeInTitle)
								title.animate({'opacity':0.7});
							else 
								title.animate({'opacity':0});
						}else{
							if(_this.menuSettings.fadeInTitle)
								title.animate({'opacity':0});
							else 
								title.animate({'opacity':0.7});
						}
					}*/
					if(_this.menuSettings.position=='vertical')
						$(this).animate({'height':itemDim},_this.menuSettings.duration,_this.menuSettings.effect);
					else
						$(this).animate({'width':itemDim},_this.menuSettings.duration,_this.menuSettings.effect);
			});
		}
		
		var $this=$('a',obj);
		_this.menuAnimate($this);
		var maxDim=_this.menuSettings.closeDim*$this.length+_this.menuSettings.border*$this.length+10;
		
		if(_this.menuSettings.position=='vertical')
			$(obj).css({'width':_this.menuSettings.width+'px','height':maxDim+'px'});
		else
			$(obj).css({'height':_this.menuSettings.height+'px','width':maxDim+'px'});
		
		$.each($this,function(i){
			ImgSrc=$('img',this).attr('src');
			$('img',this).hide();
			var borderBottomValue=0;
			var borderRightValue='solid '+_this.menuSettings.border+'px '+_this.menuSettings.color;
			var aWidth='auto';var aHeight=_this.menuSettings.height+'px';
			
			if(_this.menuSettings.position=='vertical'){
				borderBottomValue='solid '+_this.menuSettings.border+'px '+_this.menuSettings.color;borderRightValue=0;
				aWidth=_this.menuSettings.width+'px';
				aHeight='auto';
			}
			
			if(i==($this.length-1)){
				borderBottomValue=0;
				borderRightValue=0;
			}
			
			$(this)
				.css({
					'width':aWidth,
					'height':aHeight,
					'background-image':'url('+ImgSrc+')',
					'background-color':_this.menuSettings.color,
					'background-repeat':'no-repeat',
					'border-bottom':borderBottomValue,
					'border-right':borderRightValue})
					.mouseenter(function(){$this.stop(true,false);_this.menuAnimate($this,i);
				});
		});
		
			$(obj).mouseleave(function(){
				if(_this.menuSettings.mouseOutStay){
					_this.menuAnimate($this,i);
				}else{
					_this.menuAnimate($this);
				}
			});
		
	}
	
	$.fn.AccordionImageMenu=function(options){
		var settings={
			'closeDim':100,
			'openDim':200,
			'width':200,
			'height':200,
			'effect':'swing',
			'duration':400,
			'openItem':null,
			'border':2,
			'color':'#000000',
			'position':'horizontal',
			'fadeInTitle':true};
	
		return this.each(function(){
					$(this).addClass("aim");
					$('br',this).remove();
					if(options)$.extend(settings,options);
						var menu=new accordionMenuSetting(this,settings);
				});
	};
})(jQuery);
