(function($, undefined){
	$.fn.orsaProjets = function(){
		var $this = this;
		var origCartogramme;
		var cacheCartogrammes = {};
		
		this.find("#sections_projets li").wrapInner('<a href="#"></a>');
		this.find("#p_autres a").click(toggleProjet).trigger('click');
		initRollOverCartogrammes();
		
		function toggleProjet(){			
			$this.find(".autre_projet").toggleClass("ui-tabs-hide");
			$this.find(".groupe-projet").each(function(){
				var $this = $(this);
				if($this.find('a.projet').not('.ui-tabs-hide').length == 0){
					$this.hide();
				} else $this.show();
			});
			$this.find("#p_autres").toggleClass("ui-state-active");
			
			return false;
		}
		
		function initRollOverCartogrammes(){
			origCartogramme = $("#gauche_projets .cartogramme").attr("src");
			$("#carte_interactive_gauche a").hover(
				function(){
					changeSrcCartogramme("design:carte_gauche_projet-hover.png");
				},
				function(){
					changeSrcCartogramme(origCartogramme);
				}
			);
			
			$this.find("a.projet").hover(
				function(){
					var classes = $(this).attr('class');
					var regex = /.+projet-(\d+)/gi;
					regex.compile(".+projet-(\\d+)");
					var res = null;
					
					if(res = regex.exec(classes)){
						if(!cacheCartogrammes['p'+res[1]]){
							$.ez('orsacartoprojet::getCartogramme', {nodeId: res[1]}, getCartogrammeCallback);
						} else changeSrcCartogramme(cacheCartogrammes['p'+res[1]]);
					}
				},
				function(){
					changeSrcCartogramme(origCartogramme);
				}
			);
		}
		
		function getCartogrammeCallback(data){
			if(data && data.content.image){
				cacheCartogrammes['p'+data.content.nodeId] = '/'+data.content.image;
				changeSrcCartogramme('/'+data.content.image);
			}
		}
		
		function changeSrcCartogramme(newSrc){
			if(newSrc.substr(0, 7) == 'design:') {
				var path = origCartogramme.split('/');
				path.pop();
				path = path.join("/");
				newSrc = path +'/' + newSrc.substr(7);
			}
			$("#gauche_projets .cartogramme").attr("src", newSrc); 
		}
	}
})(window.jQuery);
