/*
 * 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.headline',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.7});
				} else {
					if(_this.menuSettings.fadeInTitle)
						title.animate({'opacity':0});
					else
						title.animate({'opacity':0});
	
				}
			}
			
			var subtitle=$('span.subheadline',this);
			subtitle.stop(true,false);
			
			if(_this.menuSettings.fadeInTitle!=null&&subtitle.length>0){
				if(itemDim==_this.menuSettings.openDim){
					if(_this.menuSettings.fadeInTitle)
						subtitle.animate({'opacity':0.7});
					else
						subtitle.animate({'opacity':0.7});
				} else {
					if(_this.menuSettings.fadeInTitle)
						subtitle.animate({'opacity':0});
					else
						subtitle.animate({'opacity':0});
	
				}
			}
		
			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(){
				_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);
