/*
 * 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;
					}
					
					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 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});
						}
					}						
				});		
			
			}

			var $this = $('a',obj);
			
			_this.menuAnimate($this);
			
			var maxDim = _this.menuSettings.closeDim*$this.length + _this.menuSettings.border*$this.length + 31;
			
			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 );
