(function($) {
	
	$.fn.momoItem = function(options){

		var opts = $.extend({}, options);

		return this.each(function() {

			var item = $(this);

			var childItems = item.find(opts.item).hide();

			item.unbind('display').bind('display',function(e){
				var $this = $(this);
				var childItems = $this.find('> ul >'+opts.item);
				
				var levelItems = $this.siblings();
				levelItems.push($this);
				$(opts.legend).html('');
				$.each(levelItems, function(){
					var legend = $('<li></li>');
					legend.html('<span></span>'+$(this).attr('title'));
					legend.find('span').css({'background-color':$(this).attr('color')});
					$(opts.legend).append(legend);
				});

				var scale = $this.parent().attr('scale');
				if(scale && opts.meter.data('scale') != scale){
					var scaleArr = scale.split(',');
					$(opts.scale).html('');
					$.each(scaleArr, function(i,v){
						var key = $('<li>');
						key.text(v);
						$(opts.scale).append(key);
					});
					
				//	var eachWidth = parseInt(opts.meter.width())/parseInt(scaleArr.length-1);
				//	$(opts.scale+' li').css({'width':eachWidth});
					var eachWidth = opts.meter.width()/scaleArr.length;
					$(opts.scale+' li').css({'width':eachWidth});
					
					$(opts.scale+' li:first').addClass('first');
					$(opts.scale+' li:last').addClass('last');
					opts.meter.data('scale', scale);
				}
				
				$this.css({'background-color':$this.attr('color')}).animate({width:$this.attr('value')+'%'});
				if(childItems.length){
					$this.removeClass('open');
					childItems.trigger('hide');
				}
				e.stopPropagation();
			});
			
			item.unbind('hide').bind('hide',function(e){
				var $this = $(this);
				$this.animate({width:'0'});
				e.stopPropagation();
			});
			
			item.unbind('expand').bind('expand',function(e){
				var $this = $(this);
				opts.meter.data('currentExpanded',$this);
				var childItems = $this.find('> ul >'+opts.item);

				$this.animate({width:opts.meter.width()});
				if(childItems.length){
					childItems.css({width:0}).show().trigger('display');
				}
				e.stopPropagation();
			});

			if(childItems.length){
				item.addClass('clickable');
				item.unbind('hover').hover(function(){
					item.addClass('hover');
				},function(){
					item.removeClass('hover');
				});
				item.unbind('showChilds').bind('showChilds',function(e){
					var $this = $(this);
					if($this.hasClass('open')){return false;}
					$this.siblings(opts.item).trigger('hide');
					$this.addClass('open').trigger('expand');
					e.stopPropagation();
				});
			
				item.unbind('click').bind('click',function(e){
					var item = $(this).trigger('showChilds');
				});
			}

		})
	};

	$.fn.momoMeter = function(options) {
		
		var opts = $.extend({
			item 	: 'li',
			legend	: '#meter-data-legend',
			uplink	: '#meter-up',
			scale	: '#meter-scale'
		}, options);
		
		return this.each(function() {

			var meter = $(this);
			
			var showHome = function(){
				meter.find('> '+opts.item).trigger('display');
			}
			
			$(opts.uplink).click(function(){
				var currentExpaned = meter.data('currentExpanded');
				
				if(currentExpaned){
					currentExpaned.trigger('display').siblings().trigger('display');

					if(currentExpaned.parent().get(0) == meter.get(0)){
						$.removeData(meter,'currentExpanded');
					}else{
						meter.data('currentExpanded',currentExpaned.parent().parent());
					}
					
				}

			});
			
			meter.find(opts.item).momoItem({
				meter	: meter,
				item	: opts.item,
				legend	: opts.legend,
				scale	: opts.scale
			});
			showHome();
		})
		
	};
	
})(jQuery);

$(function(){
	$('#meter-data').momoMeter();	try{	var p = /\/our\-work\/([^\/]*)/i	var m = location.pathname.match(p);	if(m && m[1]){		$('#fund-'+m[1]).click();	}	}catch(e){}
});
