/*

LIGHTBOX 
Affichage des images et chargement en Iframe des pages externes
Mise en marche par l'ajout de "lightbox" à rel

*/

lightbox = {	
	
//initialisation de la lightbox
	init : function(){
		//déclaration des variables de la lightbox
		lightbox.duree = 600; //durée de l'animation de la lightbox
		lightbox.largeur = 640; //largeur de la lightbox
		lightbox.hauteur = 800; //hauteur de la lightbox
		lightbox.opacite = 0.7; //opacité du wrapper
		lightbox.imgregedit = /(\.jpg)|(\.jpeg)|(\.bmp)|(\.gif)|(\.png)/i; //utilise les expressions régulières
		lightbox.regexp = /\[(?:.*)\]/;
		lightbox.formatcible = "interactif";
		lightbox.CSSpropriete = null;
		lightbox.position = 0;
		lightbox.width = 0;
		lightbox.height = 0;
		lightbox.gallery = "";
		lightbox.imgloaded = false;
		lightbox.imgtimer = null;
		lightbox.lightboxanim = true; //animation à l'ouverture de la lightbox
		lightbox.title = null; //titre du href
		
		
		//appel de la lightbox par l'appel en rel, la taille voulue,spécifiée est récupérée ici
		$("a[rel^='lightbox']").each(function(){$(this).unbind('click');});
		//galerie
		lightbox.images = new Array();	 
		$("a[rel^='lightbox']").each(function(){var gallery = lightbox.regexp.exec($(this).attr("rel"));if(!lightbox.images[gallery]){lightbox.images[gallery]=new Array();}lightbox.images[gallery].push($(this));
		//redimentionnement
		$(this).bind('click',function(){lightbox.click($(this));return false;});});$(window).resize(lightbox.resize);$(window).scroll(lightbox.resize);$(document).keyup(function(event){ lightbox.keyboard(event); });},
		click : function(div){lightbox.gallery=lightbox.regexp.exec(div.attr("rel"));//définition du click
		// Position de l'image dans la gallerie
		for (var i = 0; i < lightbox.images[lightbox.gallery].length; i++){if($(lightbox.images[lightbox.gallery][i]).html()  == div.html() && $(lightbox.images[lightbox.gallery][i]).attr("href") == div.attr("href") ){lightbox.position=i;break;}}lightbox.lightboxanim=false; lightbox.lightboxanim=true;
		lightbox.CSSpropriete = {"top" : div.offset().top, "left" :	div.offset().left,"width":div.width(),"height":   div.height()}//propriétés CSS de la lightbox
		
		if(div.children("img").length && (lightbox.animation=="all" || lightbox.animation=="img")){lightbox.CSSpropriete = {"top" :	 div.children("img").offset().top,"left" :	div.children("img").offset().left,"width":	div.children("img").width(),"height":   div.children("img").height()}, lightbox.lightboxanim=true;}
		//Récupération des informations				
		lightbox.url=div.attr("href"); lightbox.title=div.attr("title"); dimensions =div.attr("rel").split(' '); //on récupère les dimensions si spécifié pour la lightbox
		if((dimensions[1])&&(dimensions[2]) && parseInt(dimensions[1])>0  && parseInt(dimensions[2])>0 ){ lightbox.width = parseInt(dimensions[1]); lightbox.height =  parseInt(dimensions[2]);}
		else{lightbox.width=lightbox.largeur; lightbox.height=lightbox.hauteur;}
		lightbox.open();return false;},
		//ouverture de la lightbox
		open : function(url,width,height){if(url!=undefined){lightbox.url=url; if(width==undefined){lightbox.width=lightbox.largeur;}else{lightbox.width=width;} if(height==undefined){lightbox.height=lightbox.hauteur;}				else{lightbox.height=height;} lightbox.lightboxanim=false; lightbox.title = null;}
		if(lightbox.imgregedit.test(lightbox.url) && lightbox.imgloaded==false){ img=new Image(); img.src=lightbox.url;	lightbox.formatcible="img";	$("body").append('<div id="lightbox_loader"></div>');$("#lightbox_loader").css("marginTop",lightbox.scrollY()); lightbox.imgtimer = window.setInterval("lightbox.loadImg(img)",100);return false;} lightbox.imgloaded=false;
		  if(!$("#lightbox").length){
			  $("body").append("<div id='lightbox'><div id='lightbox_wrapper' class='lightbox_close'></div><div id='lightbox_contener'><div id='lightbox_conteneur_interieur'><div id='lightbox_close' class='lightbox_close'></div><div id='lightbox_content'></div><div id='lightbox_background'><div class='lightbox_border_haut'></div><div class='lightbox_border_bas'></div><div class='lightbox_border_droit'></div><div class='lightbox_border_gauche'></div><div class='lightbox_border_basgauche'></div><div class='lightbox_border_basdroit'></div><div class='lightbox_border_hautgauche'></div><div class='lightbox_border_hautdroit'></div></div><div id='lightbox_nav'><div id='lightbox_prev'></div><div id='lightbox_title'><span></span></div><div id='lightbox_next'></div></div></div></div></div>");	// Structure de la lightbox
		//mise en place du Wrapper opaque, récupération des marges
		$("#lightbox_wrapper").css({"height":lightbox.windowH(),"width":lightbox.windowW()});
		lightbox.marginhorz = parseInt($("#lightbox_contener").css("paddingLeft")) + parseInt($("#lightbox_contener").css("paddingRight")) + parseInt($("#lightbox_contener").css("marginLeft")) + parseInt($("#lightbox_contener").css("marginRight"));
		lightbox.marginvert = parseInt($("#lightbox_contener").css("paddingTop")) + parseInt($("#lightbox_contener").css("paddingBottom")) + parseInt($("#lightbox_contener").css("marginTop")) + parseInt($("#lightbox_contener").css("marginBottom")); 
		//on cache et on affiche les éléments dont on a besoin (prev, newt..)	
		$("#lightbox_prev").hide(); $("#lightbox_next").hide();$("#lightbox_title").hide();	$(".lightbox_close").click(lightbox.close);	$("#lightbox_next").click(lightbox.next); $("#lightbox_prev").click(lightbox.prev);			$("embed").css("visibility","hidden"); $("object").css("visibility","hidden");
			if(lightbox.gallery){if(lightbox.position<lightbox.images[lightbox.gallery].length-1){$("#lightbox_next").show();}if(lightbox.position>0){$("#lightbox_prev").show();}}
			//on anime le wrapper
			$('#lightbox_wrapper').css({'opacity': 0});	$('#lightbox_wrapper').fadeTo(lightbox.duree,lightbox.opacite);
			//on place le conteneur 
			if(lightbox.CSSpropriete!=null){lightbox.CSSpropriete.left-=parseInt($("#lightbox_contener").css("paddingLeft"))+parseInt($("#lightbox_contener").css("marginLeft"));lightbox.CSSpropriete.top-=parseInt($("#lightbox_contener").css("paddingTop"))+parseInt($("#lightbox_contener").css("marginTop"));}var CSSdemarrage = lightbox.CSSpropriete;}
			else{$("#lightbox_title span").empty();	$("#lightbox_content").empty();	var CSSdemarrage = {"width":$("#lightbox_contener").css("width"),"height":$("#lightbox_contener").css("height"),"top":$("#lightbox_contener").css("top"), "left":$("#lightbox_contener").css("left")}; var transition = true;}
		var content = lightbox.getContent(lightbox.url);	
		if(lightbox.formatcible=="img"){ $("#lightbox_content").append(content); }//on insert l'image ici
		if(transition){ $("#lightbox_content img").hide(); }//transition entre les images 
		if(lightbox.title && lightbox.title!="" && lightbox.title!=null){ $("#lightbox_title span").append(lightbox.title); $("#lightbox_title").show(); $("#lightbox_nav").animate({"opacity":0.5}); }//action en cas de titre
		else{ $("#lightbox_title").hide();	$("#lightbox_titlel").hide();	$("#lightbox_title").hide(); }//action si pas de titre
		if((lightbox.height+120)>lightbox.windowH()){lightbox.width=lightbox.width*((lightbox.windowH()-120)/lightbox.height); lightbox.height=(lightbox.windowH()-120); var content = lightbox.getContent(lightbox.url);}
		//position finale de la lightbox
		var topPos = (lightbox.windowH() - lightbox.height - lightbox.marginvert)/2 + lightbox.scrollY();
		var leftPos = (lightbox.windowW() - lightbox.width - lightbox.marginhorz)/2;
		var cssProp = {"width":lightbox.width,"height":lightbox.height,"top":topPos,"left":leftPos}
		//animation
		$("#lightbox_contener").css(CSSdemarrage); $("#lightbox_contener").animate(cssProp,lightbox.duree,function(){if(lightbox.formatcible=="img"){$("#lightbox_content img").fadeIn(lightbox.duree/2);}else{$("#lightbox_content").empty().append(content);}});},
		//on ferme la lightbox
	  close : function(){window.clearInterval(lightbox.imgtimer); if(lightbox.formatcible!="img"){$("#lightbox_content").empty();} lightbox.CSSpropriete.opacity = 0; $("#lightbox_contener").animate(lightbox.CSSpropriete,lightbox.duree); $("#lightbox_wrapper").animate({"opacity":0},lightbox.duree,lightbox.remove);},
		//On supprime les élément de la lightbox fermée
		remove : function(){$("#lightbox").remove(); $("#lightbox_loader").remove(); $("embed").css("visibility","visible"); $("object").css("visibility","visible");},
		//Positionnement de la box par rapport à l'écran
		resize : function(){
		// on positionne la lightbox par rapport à lécran
		var topPos = (lightbox.windowH() - lightbox.height - lightbox.marginvert)/2 + lightbox.scrollY();
		var leftPos = (lightbox.windowW() - lightbox.width - lightbox.marginhorz)/2;
		$("#lightbox_contener").css("left",leftPos);
		// on place le wrapper pour recouvrir le window
		$("#lightbox_wrapper").css({"height":lightbox.windowH(),"width":lightbox.windowW()});},
	
		//utilisation du clavier pendant que la lightbox est ouverte
		keyboard : function(event){if(event.keyCode==39){lightbox.next();}
      		else if(event.keyCode==37){lightbox.prev()}
      		else if(event.keyCode==27){lightbox.close();}},
		//aller au prochain élément de la galerie
		next : function(){if(lightbox.gallery!=null){lightbox.position++;if(lightbox.position==lightbox.images[lightbox.gallery].length-1){	$("#lightbox_next").fadeOut();}
			if($("#lightbox_prev").is(":hidden")){$("#lightbox_prev").fadeIn();	} lightbox.click(lightbox.images[lightbox.gallery][lightbox.position]);}},
		//aller au premier élément de la gallerie
		prev : function(){if(lightbox.gallery!=null){lightbox.position--;if(lightbox.position==0){$("#lightbox_prev").fadeOut();}
			if($("#lightbox_next").is(":hidden")){$("#lightbox_next").fadeIn();}lightbox.click(lightbox.images[lightbox.gallery][lightbox.position]);}},
		//anime le chargement de la page
		loadImg : function(img){if(img.complete){window.clearInterval(lightbox.imgtimer);lightbox.imgloaded=true; lightbox.height=img.height; lightbox.width=img.width; $('#lightbox_loader').remove();
				if($('#lightbox_content img').length){$('#lightbox_content img').fadeOut(lightbox.duree/2,function(){$('#lightbox_content').empty(); lightbox.open();})}
				else{$('#lightbox_content').empty();lightbox.open();}}	
		// On anime le loader
		if(typeof(j)=='undefined'){j=0;} $('#lightbox_loader').css({'background-position': "0px "+j+"px"});	j=j-40; if(j<(-440)){j=0;}},
		//on retourne le contenu du lien
		getContent : function(url){	var content
			// On utilise les expressions régulière pour déterminer le type de la cible
			lightbox.formatcible="interactif";
			if(lightbox.imgregedit.test(url)){content='<img src="'+img.src+'" width="100%" height="100%"/>'; lightbox.formatcible="img";}
			else{if(lightbox.width==lightbox.largeur && lightbox.height==lightbox.hauteur){lightbox.width=lightbox.windowW()-100; lightbox.height=lightbox.windowH()-100;} content='<iframe src="'+url+'" width="'+lightbox.width+'" height="'+lightbox.height+'" frameborder="0" ></iframe>';}	return content;},
		/* Placement de la lightbox par rapport à l'écran*/
		//on détermine et on retourne la hauteur
			windowH : function(){
				if (window.innerHeight) return window.innerHeight  ;
				else{return $(window).height();}
			},
		//on détermine et on retourne la largeur
			windowW : function(){
				if (window.innerWidth) return window.innerWidth  ;
				else{return $(window).width();}
			},
		//on détermine et on retourne la position du top avec scrOfy
			scrollY : function() {
				scrOfY = 0;
				if( typeof( window.pageYOffset ) == 'number' ) {
					//Netscape compliant
					scrOfY = window.pageYOffset;
				} else if( document.body && ( document.body.scrollTop ) ) {
					//DOM compliant
					scrOfY = document.body.scrollTop;
				} else if( document.documentElement && ( document.documentElement.scrollTop ) ) {
					//IE6 standards compliant mode
					scrOfY = document.documentElement.scrollTop;
				}
				return scrOfY;
			},
		//on détermine et on retourne la position du scroll left
			scrollX : function() {
				scrOfX = 0;
				if( typeof( window.pageXOffset ) == 'number' ) {
					//Netscape compliant
					scrOfX = window.pageXOffset;
				} else if( document.body && ( document.body.scrollLeft ) ) {
					//DOM compliant
					scrOfX = document.body.scrollLeft;
				} else if( document.documentElement && ( document.documentElement.scrollLeft ) ) {
					//IE6 standards compliant mode
					scrOfX = document.documentElement.scrollLeft;
				}
				 return scrOfX;
			}
		};

$(document).ready(function(){
	lightbox.init();
});
