(function(){
	var win=$(window);
	
	/**
	preloadimage(url,callback)
	function de préchargement d'image
	@params :
		1(string) : l'url de l'image à charger
		2(function) : fonction de retour apellé apres chargement de l'image avec un parametre contenent l'element <img>
	@return(dom) : l'élement <img>
	*/
	function preloadimage(url,callback){
		var img=new Image();
		$(img).load(function(){
			callback.apply(img);
		})
		setTimeout(function(){
			img.src=url;
		},0);
		return img;
	};
	/**
	recupere le nom de la page :
	 @param(string) : "http://site.com/-Notre maison"
	 @return(string) : "Notre maison"
	*/
	function url2name(url){
		var match=url.split('/').pop().match(/^-(.*)$/);
		if(match)
			return match[1];
	};
	//redirection vers lien ancre
	var  u=url2name(location.pathname)
	if(u!==undefined)
		location.replace("./#"+u);
	/**
	equivalent de la function php
	*/
	function urlencode(str){
		return encodeURIComponent(str).replace(/!/g, '%21').replace(/'/g, '%27').replace(/\(/g, '%28').replace(/\)/g, '%29').replace(/\*/g, '%2A');//.replace(/%20/g, '+');
	};
	

	//au chargement du DOM
	$(document).ready(function(){
		var div=$("<div>");
		var html=$('html');
		var page=$("#page");
		var page_wrap=$("#page_wrap");//.jScrollPane();
		//var jsp=page_wrap.data("jsp");
		liens_menu=$("#menu a");
		liens_menu.each(function(k,v){
			$(this).data("k",k);
		});
		/**function de changement de fond avec gestion des taille et des fondus
		@params :
			1 : url de limage
			2 : fonction apeller apres chargement de l'image
		*/
		changebg=(function(){
			var time=2000;
			var _trans=Modernizr.prefixed('transition');
			var url;
			var callback=$.noop;
			var fonds=$("#fond>.images");
			size={};
			var q="";
			var img=new Image();
			var timeout;
			win.resize(function(){
				size.x=fonds.width();
				size.y=fonds.height();
				q=[size.x,size.y,"r","jpg"].join("/");
				if(url)
				{
					clearTimeout(timeout);
					timeout=setTimeout(function(){
						img.src=url+"?"+q;
					},1000);
				}
			}).resize();
			$(img).load(function(){
				
				/*
				if(!Modernizr.backgroundsize)
				{
				}
				*/
				var div=$("<div>").css({'background-image':"url("+img.src+")"});
				div.appendTo(fonds);
				
				/*if(Modernizr.csstransitions)
				{
					setTimeout(function(){
					div.addClass("active");
					},1);
					setTimeout(function(){
						//div.css(_trans,"none");
						div.prevAll().remove();
					},time*1.05);
				}
				else*/
					div.hide().fadeIn(time,"easeInOutCubic",function(){
						div.prevAll().remove();
					});
				callback();
				callback=$.noop;
			});
			return function(_url,_callback){
				url=_url;
				callback=_callback||$.noop;
				img.src=url+"?"+q;
				return img;
			};
		})();
		var vit=null;
		//chargement de la page au changement du location.hash
		$(window).hashchange(function(){
			var hash = urlencode(location.hash.replace( /^#/, '' ));
			html.addClass('loading');
			div.load("-"+hash+" #page",function(a,b){
				page_wrap.fadeOut(500,function(){
					page.empty().prepend($("#page",div).contents());
					//page_wrap.show();
					//jsp.reinitialise();
					//jsp.scrollToY(0);
					//page_wrap.hide();
					var urlfond=$(".urlfond",page).val();
					changebg("images/fonds/"+urlfond,function(){
						html.removeClass('loading');
						page_wrap.hide().delay(500).fadeIn(1000);
					
					});
					//var lienactif=$("#page a.active",div).attr("href");
					var lienactif=liens_menu.filter(function(){
						return url2name($(this).attr('href'))==hash;
					}).addClass("active");
					
					liens_menu.not(lienactif).removeClass('active');
					
					var k=lienactif.data('k');
					var max= liens_menu.length-1;
					vit=vit===null?0:1500;
					$(window).off("resize.bar").on("resize.bar",function(){
						var barHeight=$("#bars").height();
						var top=Math.round((k)*barHeight/max);
						//Animation de la barre
						
						$("#bar_v")
							//.css("rotate",0.001)
							//.animate({bottom:btm+"%"},1500,"easeInOutBack");
							.stop().animate(
								Modernizr.csstransforms
									?{translateY:top}
									:{top:top},
								vit,
								"easeSmouthBack",
								function(){
								}
							);
							//.animate({bottom:btm+"%"},1000);
						vit=0;
					}).resize();
					
				});
			});
			return false;
		});
		//gestion des lien interne avec hashchange
		$("a.lightbox").fancybox({
			type:"iframe",
			autoDimensions:false,
			width:900,
			height:600
		});
		$("body").on("click", "a", function(){
			if($(this).attr("href").charAt(0)!='-')
				return;
			var u=url2name(this.href);
			if(u!==undefined)
			{
				location.hash=u;
				return false;
			}
		});
		
		//affichage du tunnel
		var tunnel=$("#tunnel,#tunnel_cadre").addClass("active");
		$("#entree").one('click',function(){
			if(Modernizr.csstransitions)
				tunnel.addClass("closed");
			else
				tunnel.fadeOut(1000);
			
			
		})
		//.click()
		;
		//au lancement, charge la page de l'ancre ou clique sur le 1er lien du menu
		if(location.hash!=="")
			$(window).hashchange();
		else
			window.location.replace("#"+url2name($("#menu a")[0].href));
	});
})();
