/* ------------------------------------------------------------------------
	Class: zoombox
	Auteur: Jonathan Boyer (http://www.jojoratonlaveur.fr)
	Version: 1.0.0
------------------------------------------------------------------------- */

$(document).ready(function(){
	zoombox.init();
});
zoombox = {
		// Configure la boite
		/////////////////
		init : function(){
			zoombox.largeurD=450; // Largeur par défaut 
			zoombox.hauteurD=360; // Hauteur par défaut
			zoombox.duree=750;	// Durée des animation en ms
			zoombox.fond="#000000";
			zoombox.lecteurFLV="/zoombox/FLVplayer.swf" // Ou se trouve le lecteur FLV par rapport à la racine
			zoombox.lecteurMP3="/zoombox/mp3player.swf" // Ou se trouve le lecteur MP3 par rapport à la racine
			// Trouve toutes les images
			zoombox.images = new Array();
			galleryRegExp = /\[(?:.*)\]/
			$("a[rel^='zoombox']").each(function(){
					if(!zoombox.images[galleryRegExp.exec($(this).attr("rel"))]){
						zoombox.images[galleryRegExp.exec($(this).attr("rel"))]=new Array();
					}
					zoombox.images[galleryRegExp.exec($(this).attr("rel"))].push($(this));
					$(this).bind('click',function(){
					zoombox.gallerie=galleryRegExp.exec($(this).attr("rel"));
					zoombox.div=$(this);
					zoombox.top=$(this).offset().top-18;
					zoombox.left=$(this).offset().left-18;
					zoombox.largeur=$(this).width();
					zoombox.hauteur=$(this).height();
					if($(this).children("img").length){
						zoombox.hauteur=$(this).children("img").height();
						zoombox.top=$(this).children("img").offset().top-18;
					}
					zoombox.open(); return false;
				});
			});
			$(window).resize(function(){ zoombox.recadrer(); });
		},
		// Création des divs
		///////////////
		open : function(){
			for (i = 0; i < zoombox.images[zoombox.gallerie].length; i++){
				if($(zoombox.images[zoombox.gallerie][i]).attr("href") == zoombox.div.attr("href")){
					zoombox.position=i;
				}
			}
			$("embed").css("visibility","hidden"); // On cache tous les éléments qui pourrait passé par dessus zoombox
			$("object").css("visibility","hidden");
			
			$('body').append("<div id='zoombox'></div>");
			
			zoombox.aplat();
			
			$('#zoombox').append("<div id='zoombox_conteneur'></div>");

			$('#zoombox_conteneur').append("<div id='zoombox_conteneur2'></div>");		
			
			$('#zoombox_conteneur2').append("<div id='zoombox_close'></div>");
			
			$('#zoombox_conteneur2').append("<div id='zoombox_titre'></div>");			
			$('#zoombox_titre').append('<table cellspacing="0" cellpadding="0" border="0" style="margin:0 auto;"><tr><td id="zoombox_titreg"></td><td id="zoombox_titrec"></td><td id="zoombox_titred"></td></tr></table>')
			
			if(zoombox.gallerie){
				$('#zoombox_titre table tr').append('<td width="39"><a id="zoombox_boutond"></a></td>');
				$('#zoombox_titre table tr').prepend('<td width="39"><a id="zoombox_boutong"></a></td>');
				$("#zoombox_boutond").click(function(){zoombox.next()});
				$("#zoombox_boutong").click(function(){zoombox.prev()});
				if(zoombox.position==zoombox.images[zoombox.gallerie].length-1){
					$("#zoombox_boutond").hide();
				}
				if(zoombox.position==0){
					$("#zoombox_boutong").hide();
				}
			}
			
			$('#zoombox_conteneur2').append("<div id='zoombox_bg'></div>");
			$('#zoombox_bg').append("<div class='zoombox_bg_h'></div>");
			$('#zoombox_bg').append("<div class='zoombox_bg_b'></div>");
			$('#zoombox_bg').append("<div class='zoombox_bg_d'></div>");
			$('#zoombox_bg').append("<div class='zoombox_bg_g'></div>");
			$('#zoombox_bg').append("<div class='zoombox_bg_bg'></div>");
			$('#zoombox_bg').append("<div class='zoombox_bg_bd'></div>");
			$('#zoombox_bg').append("<div class='zoombox_bg_hg'></div>");
			$('#zoombox_bg').append("<div class='zoombox_bg_hd'></div>");
			
			$('#zoombox_conteneur2').append("<div id='zoombox_contenu'></div>");
			$('#zoombox_contenu').css({'background-color': zoombox.fond});
			
			$('#zoombox_contenu').hide();
			$('#zoombox_conteneur2').hide();
			
			$('#zoombox_conteneur').css({'top':zoombox.top+"px"});
			$('#zoombox_conteneur').css({'left':zoombox.left+"px"});
			$('#zoombox_conteneur').css({'width':zoombox.largeur+"px"});
			$('#zoombox_conteneur').css({'height':zoombox.hauteur+"px"});
			zoombox.setContent();
			
			$("#zoombox_close").click(function(){
				zoombox.close();
			})
			$("#zoombox_aplat").click(function(){
				zoombox.close();
			})
		
		},
		// Fermeture de zoombox
		///////////////
		close : function(){
			div=zoombox.div;
			zoombox.top=div.offset().top-18;
			zoombox.left=div.offset().left-18;
			zoombox.largeur=div.width();
			zoombox.hauteur=div.height();
			$('#zoombox_bg').hide();
			//$('#zoombox_close').fadeOut(zoombox.duree); // plante sur IE7 et Google Chrome
			if(div.children("img").length){
				zoombox.hauteur=div.children("img").height();
				zoombox.top=div.children("img").offset().top-18;
			}
			$('#zoombox_aplat').fadeOut(250);
			$('#zoombox_titre').animate({opacity: 0},zoombox.duree);
			if(zoombox.type!="img"){
				$('#zoombox_contenu').empty();
			}
			$('#zoombox_contenu').animate({opacity: 0},zoombox.duree);
			$('#zoombox_conteneur').animate({
				width: zoombox.largeur+"px",
				height: zoombox.hauteur+"px",
				left: zoombox.left+"px",
				top: zoombox.top+"px"
			},zoombox.duree,function(){
				$("embed").css("visibility","visible"); // On cache tous les éléments qui pourrait passé par dessus zoombox
				$("object").css("visibility","visible");
				$("#zoombox").remove();
			});
		
		},
		// Redimensionnement
		///////////////
		redim : function(){
			if($("#zoombox_conteneur2").is(":hidden") && zoombox.type=="img"){
				$('#zoombox_contenu').append(zoombox.contenu);
			}
			if($('#zoombox_contenu').is(":hidden")){
				$('#zoombox_contenu').fadeIn();
				$('#zoombox_conteneur2').show();
			}
			$("#zoombox_titrec").empty();
			$("#zoombox_titrec").append(zoombox.titre);
			zoombox.left=($(window).width()-zoombox.largeur-36)/2;
			zoombox.top=((zoombox.windowH()-zoombox.hauteur-36)/2)+zoombox.scrollY();	
			$('#zoombox_conteneur').animate({
				width: zoombox.largeur+"px",
				height: zoombox.hauteur+"px",
				left: zoombox.left+"px",
				top: zoombox.top+"px"
			},zoombox.duree,function(){
				// LE redim est terminé
				if($('#zoombox_contenu').is(":empty") || zoombox.type!="img"){
					$('#zoombox_contenu').append(zoombox.contenu);
					if(zoombox.type=="img"){$("#zoombox_contenu img").hide(); $("#zoombox_contenu img").fadeIn();}
					else{$("zoombox_contenu").show();}
				}
				if(($("#zoombox_titre").is(":hidden") && zoombox.gallerie) || (!zoombox.gallerie && $("#zoombox_titre").is(":hidden") && zoombox.titre)){
					$("#zoombox_titre").fadeIn(zoombox.duree);
				}

			});
		
		},
		recadrer : function(){
			if((zoombox.hauteur+120)>zoombox.windowH() && zoombox.type=="img"){
				zoombox.largeur=zoombox.largeur*((zoombox.windowH()-120)/zoombox.hauteur);
				zoombox.hauteur=(zoombox.windowH()-120);
			}
			zoombox.left=($(window).width()-zoombox.largeur-36)/2;
			zoombox.top=((zoombox.windowH()-zoombox.hauteur-36)/2)+zoombox.scrollY();	
			$('#zoombox_conteneur').css("width",zoombox.largeur+"px");
			$('#zoombox_conteneur').css("height",zoombox.hauteur+"px");
			$('#zoombox_conteneur').css("left",zoombox.left+"px");
			$('#zoombox_conteneur').css("top",zoombox.top+"px");
		},
		setContent : function(){
			zoombox.titre=zoombox.div.attr("title");
			zoombox.lien=zoombox.div.attr("href");
			taille=zoombox.div.attr("rel").split(' ');
			if((taille[1])&&(taille[2])){ zoombox.largeur = parseInt(taille[1]); zoombox.hauteur =  parseInt(taille[2]);}
			else{zoombox.largeur=zoombox.largeurD; zoombox.hauteur=zoombox.hauteurD;}
			// mmh des expression régulière 
			// On vérifie le zoombox.lien pour générer le code en fonction
			filtreImg=/(\.jpg)|(\.jpeg)|(\.bmp)|(\.gif)|(\.png)/i
			filtreMP3=/(\.mp3)/i
			filtreFLV=/(\.flv)/i
			filtreSWF=/(\.swf)/i
			filtreQuicktime=/(\.mov)|(\.mp4)/i
			filtreWMV=/(\.wmv)/i
			filtreDailymotion=/(http:\/\/www.dailymotion)|(http:\/\/dailymotion)/i
			filtreVimeo=/(http:\/\/www.vimeo)|(http:\/\/vimeo)/i
			filtreYoutube=/(youtube\.)/i
			filtreKoreus=/(http:\/\/www\.koreus)|(http:\/\/koreus)/i
			filtreDeezer=/(http:\/\/www\.deezer)|(http:\/\/deezer)/i
			zoombox.type="multi";
			// On évite les tailles trop grandes
			if((zoombox.hauteur+120)>zoombox.windowH()){
				zoombox.largeur=zoombox.largeur*((zoombox.windowH()-120)/zoombox.hauteur);
				zoombox.hauteur=(zoombox.windowH()-120);
			}
			if(filtreImg.test(zoombox.lien)){
				img=new Image();
				img.src=zoombox.lien;	
				$('#zoombox').append("<div id='zoombox_loading'></div>");
				zoombox.timer = window.setInterval("zoombox.charger(img)",100);
				zoombox.type="img";
				return true;
			}
			else if(filtreMP3.test(zoombox.lien)){
				zoombox.largeur=300;
				zoombox.hauteur=40;
				zoombox.contenu='<object type="application/x-shockwave-flash" data="'+zoombox.lecteurMP3+'?son='+zoombox.lien+'" width="'+zoombox.largeur+'" height="'+zoombox.hauteur+'">';
				zoombox.contenu+='<param name="movie" value="'+zoombox.lecteurMP3+'?son='+zoombox.lien+'" /></object>';
			}		
			
			else if(filtreFLV.test(zoombox.lien)){
				zoombox.contenu='<embed src="'+zoombox.lecteurFLV+'" width="'+zoombox.largeur+'" height="'+zoombox.hauteur+'" allowscriptaccess="always" allowfullscreen="true" flashvars="file='+zoombox.lien+'&width='+zoombox.largeur+'&height='+zoombox.hauteur+'" wmode="transparent" />';			
			}
			
			else if(filtreSWF.test(zoombox.lien)){
				zoombox.contenu='<object width="'+zoombox.largeur+'" height="'+zoombox.hauteur+'"><param name="allowfullscreen" value="true" /><param name="allowscriptaccess" value="always" /><param name="movie" value="'+zoombox.lien+'" /><embed src="'+zoombox.lien+'" type="application/x-shockwave-flash" allowfullscreen="true" allowscriptaccess="always" width="'+zoombox.largeur+'" height="'+zoombox.hauteur+'" wmode="transparent"></embed></object>';		
			}
			
			else if(filtreQuicktime.test(zoombox.lien)){
				zoombox.contenu='<embed src="'+zoombox.lien+'" width="'+zoombox.largeur+'" height="'+zoombox.hauteur+'" controller="true" cache="true" autoplay="true"/>';
			}
			
			else if(filtreWMV.test(zoombox.lien)){
				zoombox.contenu='<embed src="'+zoombox.lien+'" width="'+zoombox.largeur+'" height="'+zoombox.hauteur+'" controller="true" cache="true" autoplay="true" wmode="transparent" />';
			}

			else if(filtreDailymotion.test(zoombox.lien)){
				id=zoombox.lien.split('_');
				id=id[0].split('/');
				id=id[id.length-1];
				zoombox.contenu='<object width="'+zoombox.largeur+'" height="'+zoombox.hauteur+'"><param name="movie" value="http://www.dailymotion.com/swf/'+id+'&colors=background:000000;glow:000000;foreground:FFFFFF;special:000000;&related=0"></param><param name="allowFullScreen" value="true"></param><param name="allowScriptAccess" value="always"></param><embed src="http://www.dailymotion.com/swf/'+id+'&colors=background:000000;glow:000000;foreground:FFFFFF;special:000000;&related=0" type="application/x-shockwave-flash" width="'+zoombox.largeur+'" height="'+zoombox.hauteur+'" allowFullScreen="true" allowScriptAccess="always" wmode="transparent" ></embed></object>';
			}
			
			
			else if(filtreVimeo.test(zoombox.lien)){
				id=zoombox.lien.split('/');
				id=id[3];
				zoombox.contenu='<object width="'+zoombox.largeur+'" height="'+zoombox.hauteur+'"><param name="allowfullscreen" value="true" />	<param name="allowscriptaccess" value="always" />	<param name="movie" value="http://www.vimeo.com/moogaloop.swf?clip_id='+id+'&amp;server=www.vimeo.com&amp;show_title=1&amp;show_byline=1&amp;show_portrait=1&amp;color=00AAEB&amp;fullscreen=1" />	<embed src="http://www.vimeo.com/moogaloop.swf?clip_id='+id+'&amp;server=www.vimeo.com&amp;show_title=1&amp;show_byline=1&amp;show_portrait=1&amp;color=00AAEB&amp;fullscreen=1" type="application/x-shockwave-flash" allowfullscreen="true" allowscriptaccess="always" width="'+zoombox.largeur+'" height="'+zoombox.hauteur+'" wmode="transparent" ></embed></object>';
			}
			
			
			else if(filtreYoutube.test(zoombox.lien)){
				id=zoombox.lien.split('watch?v=');
				id=id[1].split('&');
				id=id[0];
				zoombox.contenu='<object width="'+zoombox.largeur+'" height="'+zoombox.hauteur+'"><param name="movie" value="http://www.youtube.com/v/'+id+'&hl=fr&rel=0&color1=0xFFFFFF&color2=0xFFFFFF"></param><embed src="http://www.youtube.com/v/'+id+'&hl=fr&rel=0&color1=0xFFFFFF&color2=0xFFFFFF" type="application/x-shockwave-flash" width="'+zoombox.largeur+'" height="'+zoombox.hauteur+'" wmode="transparent"></embed></object>';
			}
			
			
			else if(filtreKoreus.test(zoombox.lien)){
				zoombox.lien=zoombox.lien.split('.html');
				zoombox.lien=zoombox.lien[0];
				zoombox.contenu='<object type="application/x-shockwave-flash" data="'+zoombox.lien+'" width="'+zoombox.largeur+'" height="'+zoombox.hauteur+'"><param name="movie" value="'+zoombox.lien+'"><embed src="'+zoombox.lien+'" type="application/x-shockwave-flash" width="'+zoombox.largeur+'" height="'+zoombox.hauteur+'"  wmode="transparent"></embed></object>';
			}
			
			
			else if(filtreDeezer.test(zoombox.lien)){
				zoombox.largeur=220;
				zoombox.hauteur=55;
				id=zoombox.lien.split('/');
				id=id[id.length-1];
				zoombox.contenu='<object width="220" height="55"><param name="movie" value="http://www.deezer.com/embedded/small-widget-v2.swf?idSong='+id+'&colorBackground=0x000000&textColor1=0xFFFFFF&colorVolume=0xFF6600&autoplay=0"></param><embed src="http://www.deezer.com/embedded/small-widget-v2.swf?idSong='+id+'&colorBackground=0x000000&textColor1=0xFFFFFF&colorVolume=0xFF6600&autoplay=0" type="application/x-shockwave-flash" width="220" height="55" wmode="transparent"></embed></object>';
			}
			
			else{
				zoombox.contenu='<iframe src="'+zoombox.lien+'" width="'+zoombox.largeur+'" height="'+zoombox.hauteur+'"></iframe>';
				zoombox.titre=zoombox.titre+' (<a href="'+(zoombox.lien)+'" target="_blank">Ouvrir dans une nouvelle page</a>)';
				$("#zoombox_titrec").append(' (<a href="'+(zoombox.lien)+'" target="_blank">Ouvrir dans une nouvelle page</a>)');
			}	
			$("#zoombox_contenu").empty();
			zoombox.redim();
		},
		next : function(){
			zoombox.position++;
			zoombox.div=zoombox.images[zoombox.gallerie][zoombox.position];
			zoombox.setContent();	
			if(zoombox.position==zoombox.images[zoombox.gallerie].length-1){
				$("#zoombox_boutond").fadeOut();
			}
			if($("#zoombox_boutong").is(":hidden")){
				$("#zoombox_boutong").fadeIn();
			}
		},
		prev : function(){
			zoombox.position--;
			zoombox.div=zoombox.images[zoombox.gallerie][zoombox.position];
			zoombox.setContent();
			if(zoombox.position==0){
				$("#zoombox_boutong").fadeOut();
			}
			if($("#zoombox_boutond").is(":hidden")){
				$("#zoombox_boutond").fadeIn();
			}
		},
		// Aparition de l'aplat
		///////////////
		aplat : function(){
			
 			$('#zoombox').append("<div id='zoombox_aplat'></div>");
			$('#zoombox_aplat').css({'opacity': 0});
			$('#zoombox_aplat').fadeTo(250,0.4);
			
		},
		// Chargement d'une image
		///////////////	
		charger : function(img){
			if(img.complete){
				$("#zoombox_conteneur").show();
				window.clearInterval(zoombox.timer);
				zoombox.largeur=img.width;
				zoombox.hauteur=img.height;
				zoombox.contenu='<img src="'+img.src+'" width="100%" height="100%"/>';
				$('#zoombox_loading').remove();
				// On évite les tailles trop grandes
				if((zoombox.hauteur+120)>zoombox.windowH()){
					zoombox.largeur=zoombox.largeur*((zoombox.windowH()-120)/zoombox.hauteur);
					zoombox.hauteur=(zoombox.windowH()-120);
				}
				if($('#zoombox_contenu img').length){
					$('#zoombox_contenu img').fadeOut(500,function(){$('#zoombox_contenu').empty(); zoombox.redim();})
				}
				else{
					$('#zoombox_contenu').empty();
					zoombox.redim();
				}
			}	
			// On anim le loader
			if(typeof(j)=='undefined'){j=0;}
 			$('#zoombox_loading').css({'background-position': "0px "+j+"px"});
			j=j-40;
			if(j<(-440)){j=0;}
		},
		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;
		  alert(scrOfY);
		},
		windowH : function(){
			if (window.innerHeight) return window.innerHeight  ;
			else{return $(window).height();}
		}
}

