// -----------------------------------------------------------------------------------
//
//	Lightbox v2.03
//	by Lokesh Dhakar - http://www.huddletogether.com
//	4/9/06
//
//	For more information on this script, visit:
//	http://huddletogether.com/projects/lightbox2/
//
//	Licensed under the Creative Commons Attribution 2.5 License - http://creativecommons.org/licenses/by/2.5/
//	
//	Credit also due to those who have helped, inspired, and made their code available to the public.
//	Including: Scott Upton(uptonic.com), Peter-Paul Koch(quirksmode.org), Thomas Fuchs(mir.aculo.us), and others.
//
//	Lightbox v2.03a
//	by Dynamicdrive.com- http://www.dynamicdrive.com
//	Nov 29th, 2007
//	Added ability for the caption ("title" attr of link) to be optionally hyperlinked, by throwing in a "rev" attr containing the desired link
// -----------------------------------------------------------------------------------
/*

	Table of Contents
	-----------------
	Configuration
	Global Variables

	Extending Built-in Objects	
	- Object.extend(Element)
	- Array.prototype.removeDuplicates()
	- Array.prototype.empty()

	Lightbox Class Declaration
	- initialize()
	- start()
	- changeImage()
	- resizeImageContainer()
	- showImage()
	- updateDetails()
	- updateNav()
	- enableKeyboardNav()
	- disableKeyboardNav()
	- keyboardAction()
	- preloadNeighborImages()
	- end()
	
	Miscellaneous Functions
	- getPageScroll()
	- getPageSize()
	- getKey()
	- listenKey()
	- showSelectBoxes()
	- hideSelectBoxes()
	- showFlash()
	- hideFlash()
	- pause()
	- initLightbox()
	
	Function Calls
	- addLoadEvent(initLightbox)
	
*/
// -----------------------------------------------------------------------------------

//
//	Configuration
//
var fileLoadingImage = "images/loading.gif";		
var fileBottomNavCloseImage = "images/closelabel.gif";

var animate = true;	// toggles resizing animations
var resizeSpeed = 7;	// controls the speed of the image resizing animations (1=slowest and 10=fastest)

var borderSize = 10;	//if you adjust the padding in the CSS, you will need to update this variable

// -----------------------------------------------------------------------------------

//
//	Global Variables
//
var imageArray = new Array;
var activeImage;

if(animate == true){
	overlayDuration = 0.2;	// shadow fade in/out duration
	if(resizeSpeed > 10){ resizeSpeed = 10;}
	if(resizeSpeed < 1){ resizeSpeed = 1;}
	resizeDuration = (11 - resizeSpeed) * 0.15;
} else { 
	overlayDuration = 0;
	resizeDuration = 0;
}

// -----------------------------------------------------------------------------------

//
//	Additional methods for Element added by SU, Couloir
//	- further additions by Lokesh Dhakar (huddletogether.com)
//
Object.extend(Element, {
	getWidth: function(element) {
	   	element = $(element);
	   	return element.offsetWidth; 
	},
	setWidth: function(element,w) {
	   	element = $(element);
    	element.style.width = w +"px";
	},
	setHeight: function(element,h) {
   		element = $(element);
    	element.style.height = h +"px";
	},
	setTop: function(element,t) {
	   	element = $(element);
    	element.style.top = t +"px";
	},
	setSrc: function(element,src) {
    	element = $(element);
    	element.src = src; 
	},
	setHref: function(element,href) {
    	element = $(element);
    	element.href = href; 
	},
	setInnerHTML: function(element,content) {
		element = $(element);
		element.innerHTML = content;
	}
});

// -----------------------------------------------------------------------------------

//
//	Extending built-in Array object
//	- array.removeDuplicates()
//	- array.empty()
//
Array.prototype.removeDuplicates = function () {
    for(i = 0; i < this.length; i++){
        for(j = this.length-1; j>i; j--){        
            if(this[i][0] == this[j][0]){
                this.splice(j,1);
            }
        }
    }
}

// -----------------------------------------------------------------------------------

Array.prototype.empty = function () {
	for(i = 0; i <= this.length; i++){
		this.shift();
	}
}

// -----------------------------------------------------------------------------------

//
//	Lightbox Class Declaration
//	- initialize()
//	- start()
//	- changeImage()
//	- resizeImageContainer()
//	- showImage()
//	- updateDetails()
//	- updateNav()
//	- enableKeyboardNav()
//	- disableKeyboardNav()
//	- keyboardNavAction()
//	- preloadNeighborImages()
//	- end()
//
//	Structuring of code inspired by Scott Upton (http://www.uptonic.com/)
//
var Lightbox = Class.create();

Lightbox.prototype = {
	
	// initialize()
	// Constructor runs on completion of the DOM loading. Loops through anchor tags looking for 
	// 'lightbox' references and applies onclick events to appropriate links. The 2nd section of
	// the function inserts html at the bottom of the page which is used to display the shadow 
	// overlay and the image container.
	//
	initialize: function() {	
		if (!document.getElementsByTagName){ return; }
		var anchors = document.getElementsByTagName('a');
		var areas = document.getElementsByTagName('area');

		// loop through all anchor tags
		for (var i=0; i<anchors.length; i++){
			var anchor = anchors[i];
			
			var relAttribute = String(anchor.getAttribute('rel'));
			
			// use the string.match() method to catch 'lightbox' references in the rel attribute
			if (anchor.getAttribute('href') && (relAttribute.toLowerCase().match('lightbox'))){            
				anchor.onclick = function () {myLightbox.start(this); return false;}
			}
		}

		// loop through all area tags
		// todo: combine anchor & area tag loops
		for (var i=0; i< areas.length; i++){
			var area = areas[i];
			
			var relAttribute = String(area.getAttribute('rel'));
			
			// use the string.match() method to catch 'lightbox' references in the rel attribute
			if (area.getAttribute('href') && (relAttribute.toLowerCase().match('lightbox'))){
				area.onclick = function () {myLightbox.start(this); return false;}
			}
		}

		// The rest of this code inserts html at the bottom of the page that looks similar to this:
		//
		//	<div id="overlay"></div>
		//	<div id="lightbox">
		//		<div id="outerImageContainer">
		//			<div id="imageContainer">
		//				<img id="lightboxImage">
		//				<div style="" id="hoverNav">
		//					<a href="#" id="prevLink"></a>
		//					<a href="#" id="nextLink"></a>
		//				</div>
		//				<div id="loading">
		//					<a href="#" id="loadingLink">
		//						<img src="images/loading.gif">
		//					</a>
		//				</div>
		//			</div>
		//		</div>
		//		<div id="imageDataContainer">
		//			<div id="imageData">
		//				<div id="imageDetails">
		//					<span id="caption"></span>
		//					<span id="numberDisplay"></span>
		//				</div>
		//				<div id="bottomNav">
		//					<a href="#" id="bottomNavClose">
		//						<img src="images/close.gif">
		//					</a>
		//				</div>
		//			</div>
		//		</div>
		//	</div>


		var objBody = document.getElementsByTagName("body").item(0);
		
		var objOverlay = document.createElement("div");
		objOverlay.setAttribute('id','overlay');
		objOverlay.style.display = 'none';
		objOverlay.onclick = function() { myLightbox.end(); }
		objBody.appendChild(objOverlay);
		
		var objLightbox = document.createElement("div");
		objLightbox.setAttribute('id','lightbox');
		objLightbox.style.display = 'none';
		objLightbox.onclick = function(e) {	// close Lightbox is user clicks shadow overlay
			if (!e) var e = window.event;
			var clickObj = Event.element(e).id;
			if ( clickObj == 'lightbox') {
				myLightbox.end();
			}
		};
		objBody.appendChild(objLightbox);
			
		var objOuterImageContainer = document.createElement("div");
		objOuterImageContainer.setAttribute('id','outerImageContainer');
		objLightbox.appendChild(objOuterImageContainer);

		// When Lightbox starts it will resize itself from 250 by 250 to the current image dimension.
		// If animations are turned off, it will be hidden as to prevent a flicker of a
		// white 250 by 250 box.
		if(animate){
			Element.setWidth('outerImageContainer', 250);
			Element.setHeight('outerImageContainer', 250);			
		} else {
			Element.setWidth('outerImageContainer', 1);
			Element.setHeight('outerImageContainer', 1);			
		}

		var objImageContainer = document.createElement("div");
		objImageContainer.setAttribute('id','imageContainer');
		objOuterImageContainer.appendChild(objImageContainer);

        var objLightboxImage = document.createElement("img");
		objLightboxImage.setAttribute('id','lightboxImage');
		objImageContainer.appendChild(objLightboxImage);
	
		var objHoverNav = document.createElement("div");
		objHoverNav.setAttribute('id','hoverNav');
		objImageContainer.appendChild(objHoverNav);
	
		
        var objPrevLink = document.createElement("a");
		objPrevLink.setAttribute('id','prevLink');
		objPrevLink.setAttribute('href','#');
		objHoverNav.appendChild(objPrevLink);
        

		
		var objNextLink = document.createElement("a");
		objNextLink.setAttribute('id','nextLink');
		objNextLink.setAttribute('href','#');
		objHoverNav.appendChild(objNextLink);
	
        var Gateau = Class.create();
        Gateau.prototype = {
            initialize: function() {  
            },
            addPhoto : function(year,id,title,x,y,w,h){
                var objHoverNav = document.getElementById("hoverNav");
            
                //var objPhoto = document.createElement("a");
                var objPhoto = document.createElement("div");
                objPhoto.setAttribute('id',id);       
                //objPhoto.setAttribute('class','photos');
                //objPhoto.style.border = 'solid red';
                //objPhoto.setAttribute('rel','lightbox['+year+']'); 
                //objPhoto.setAttribute('title',title);
                //objPhoto.setAttribute('href','images/'+id+'.jpg');
                //objPhoto.setAttribute('href','#');
                objPhoto.onmouseover = photoOver;
                objPhoto.onmouseout = photoOut;
                
                
                objPhoto.style.width = w+'px';
                objPhoto.style.height = h+'px';
                objPhoto.style.left = x+10+'px';
                objPhoto.style.top = y+10+'px';
                
                objPhoto.style.position = 'absolute';
                objPhoto.style.background = 'transparent url(../images/blank.gif) no-repeat';
                objPhoto.style.display = 'block';

                objHoverNav.appendChild(objPhoto);
                messages[id] = new Array('images/'+id+'.jpg',title,"#FFFFFF");
            }    
        }

        gateau = new Gateau;
        gateau.addPhoto('1975','photo001','M.C.',520,230,175,215);
        gateau.addPhoto('1975','photo002','Annick',275,570,115,140);
        gateau.addPhoto('1976','photo004','Catherine',182,504,121,147);
        gateau.addPhoto('1977','photo006','La mouette',373,104,179,185);
        gateau.addPhoto('1977','photo007','Denise Gagnon',125,396,284,197);
        gateau.addPhoto('1977','photo008','Robine Houle',441,622,254,148);
        gateau.addPhoto('1977','photo009','André',344,827,120,122);
        gateau.addPhoto('1977','photo010','Première longue pièce',301,1027,356,48);
        gateau.addPhoto('1978','photo011','Première création',196,161,141,171);
        gateau.addPhoto('1978','photo012','Première de la pièce',272,445,335,194);
        gateau.addPhoto('1979','photo013','Eva et Évelyne',403,309,281,149);  
        gateau.addPhoto('1980','photo014','Denise et Micheline',249,488,385,218);
        gateau.addPhoto('1980','photo168','Petra',408,948,208,145);
        gateau.addPhoto('1981','photo016','Mon premier livre',165,148,134,165);
        gateau.addPhoto('1981','photo017','Fred-Barry',403,434,346,191);
        gateau.addPhoto('1981','photo018','Fred-Barry',251,761,314,202);
        gateau.addPhoto('1981','photo165','Avec l\'hiver',197,1354,84,106);
        gateau.addPhoto('1981','photo166','Ils étaient venus pour...',599,1365,95,111);
        gateau.addPhoto('1981','photo167','Gérard',369,1561,114,106);
        gateau.addPhoto('1981','photo015','Ma Renault 5',540,1979,154,100);
        gateau.addPhoto('1982','photo019','Deux tangos',125,242,161,195);
        gateau.addPhoto('1982','photo020','L\'Homme gris',539,238,156,187);
        gateau.addPhoto('1983','photo021','Le Banc',148,216,544,261);
        gateau.addPhoto('1983','photo022','Au bord de la nuit',329,752,196,193);
        gateau.addPhoto('1984','photo023','Manuscrit',180,178,243,301);
        gateau.addPhoto('1984','photo024','L\'Homme gris',529,523,209,250);
        gateau.addPhoto('1984','photo025','Denis Bernard',149,763,221,291);
        gateau.addPhoto('1985','photo026','L\'Homme gris',164,151,142,177);
        gateau.addPhoto('1985','photo027','Amore, amore',213,606,393,160);
        gateau.addPhoto('1985','photo028','Jean-Marie Lemieux',379,884,130,135);
        gateau.addPhoto('1985','photo163','Jean-Marie Lemieux',628,892,138,115);
        gateau.addPhoto('1985','photo164','Ticket',451,1186,283,152);
        gateau.addPhoto('1986','photo029','L\'homme gris',544,103,179,252);
        gateau.addPhoto('1986','photo161','Manuscrit',141,437,155,191);
        gateau.addPhoto('1986','photo030','Michel Côté',365,666,200,272);        
        gateau.addPhoto('1986','photo032','René Massicotte',129,1117,104,133);
        gateau.addPhoto('1986','photo033','Micheline Bernard',353,1115,111,141);
        gateau.addPhoto('1986','photo034','À la Licorne',602,1113,103,149);
        gateau.addPhoto('1986','photo035','Micheline Bernard',349,1262,114,161);
        gateau.addPhoto('1986','photo031','Article',314,1690,192,120);
        gateau.addPhoto('1987','photo036','Théâtre expérimental',470,219,108,134);
        gateau.addPhoto('1987','photo037','Night cap bar',175,392,156,186);
        gateau.addPhoto('1987','photo160','Groupe conseil',258,668,264,171);
        gateau.addPhoto('1987','photo038','Oublier',250,861,101,142);
        gateau.addPhoto('1987','photo159','Programme',462,850,107,149);
        gateau.addPhoto('1987','photo039','Juillet',437,1165,188,267);
        gateau.addPhoto('1987','photo040','Oublier',193,1422,179,270);
        gateau.addPhoto('1988','photo041','Coulisses',178,424,105,81);
        gateau.addPhoto('1988','photo042','coulisses',315,426,121,85);
        gateau.addPhoto('1988','photo043','Coulisses',472,424,110,86);
        gateau.addPhoto('1988','photo044','Le spectacle',587,208,202,279);
        gateau.addPhoto('1988','photo045','Les actes du colloque',137,726,151,275);
        gateau.addPhoto('1988','photo046','Claude Piéplu',544,785,213,140);
        gateau.addPhoto('1988','photo047','Orélie, ma soeur',334,1011,364,255);
        gateau.addPhoto('1988','photo048','Denise',209,1279,146,99);
        gateau.addPhoto('1988','photo049','Guilaine Tremblay',387,1408,144,102);
        gateau.addPhoto('1988','photo050','Deux belles actrices',145,1513,144,110);
        gateau.addPhoto('1988','photo051','De Monique Dion',544,1610,200,142);
        gateau.addPhoto('1988','photo052','John Applain',149,1734,130,171);
        gateau.addPhoto('1989','photo053','Aurélie ma soeur',111,132,158,235);
        gateau.addPhoto('1989','photo055','Les heures précieuses',254,496,286,200);
        gateau.addPhoto('1989','photo056','Pierre ou la Consolation',161,997,169,205);
        gateau.addPhoto('1989','photo057','Micheline Bernard',130,1516,176,164);
        gateau.addPhoto('1989','photo058','Juillet',611,1540,167,207);
        gateau.addPhoto('1990','photo059','Le nouvel observateur',596,163,229,322);
        gateau.addPhoto('1990','photo060','Provence',39,897,231,151);
        gateau.addPhoto('1990','photo061','Oublier',107,609,212,140);
        gateau.addPhoto('1990','photo062','Double mélodie',349,875,266,146);
        gateau.addPhoto('1990','photo063','Nobuko',140,1121,205,273);
        gateau.addPhoto('1990','photo064','Deux-ex hommes',129,1603,210,147);
        gateau.addPhoto('1990','photo065','Vue',514,1636,298,183);
        gateau.addPhoto('1991','photo066','Manuscrit',459,105,201,255);
        gateau.addPhoto('1991','photo067','Certificat',34,348,274,203);
        gateau.addPhoto('1991','photo068','Le Faucon',303,1424,167,279);
        gateau.addPhoto('1991','photo070','Studio Libre',347,743,369,281);
        gateau.addPhoto('1991','photo156','Les trompettes de la mort',58,1250,149,174);
        gateau.addPhoto('1991','photo157','Anna',69,1728,151,218);
        gateau.addPhoto('1991','photo158','Pierre ou la Consolation',523,1804,153,241);
        gateau.addPhoto('1992','photo072','Nathalie Mallette',460,187,248,333);
        gateau.addPhoto('1992','photo073','Mes parents',532,1128,218,294);
        gateau.addPhoto('1992','photo074','Rire',391,1895,285,220);
        gateau.addPhoto('1992','photo075','Noël 1951',51,1711,277,209);
        gateau.addPhoto('1992','photo076','Voyage de noces',59,1120,233,301);
        gateau.addPhoto('1992','photo077','Prof de Grec et de Latin',259,789,304,281);
        gateau.addPhoto('1992','photo078','Fil d\'Arianne',462,1486,215,201);
        gateau.addPhoto('1992','photo155','Quelques Adieux',73,520,164,175);
        gateau.addPhoto('1993','photo079','Manuscrit',101,351,256,177);
        gateau.addPhoto('1993','photo080','Deck',436,516,273,189);
        gateau.addPhoto('1993','photo081','Soeur',282,858,297,214);
        gateau.addPhoto('1994','photo082','Le poids des ombres',87,584,263,245);
        gateau.addPhoto('1994','photo154','Gate theatre',589,733,231,339);
        gateau.addPhoto('1995','photo083','Création collective',170,534,494,316);
        gateau.addPhoto('1995','photo084','Manif',510,1105,184,276);
        gateau.addPhoto('1996','photo085','Plage glacée',355,237,371,232);
        gateau.addPhoto('1996','photo086','Installation',61,412,258,359);
        gateau.addPhoto('1996','photo087','Manuscrit',497,630,317,462);
        gateau.addPhoto('1996','photo088','Jean Bernier et moi',66,1185,240,346);                                                 
        gateau.addPhoto('1996','photo089','Signatures',410,1353,365,270);
        gateau.addPhoto('1997','photo153','À ma table',84,307,293,217);
        gateau.addPhoto('1997','photo090','Table',288,610,372,231);
        gateau.addPhoto('1997','photo091','Gabrielle',30,852,345,242);
        gateau.addPhoto('1997','photo092','Manuscrit',240,1225,344,205);
        gateau.addPhoto('1998','photo093','Adélaïde',73,86,391,272);
        gateau.addPhoto('1998','photo094','Florent',435,397,387,275);
        gateau.addPhoto('1998','photo095','Italie',210,772,417,295);
        gateau.addPhoto('1998','photo096','Cimetière à Rome',416,1127,306,389);
        gateau.addPhoto('1998','photo097','La cérémonie des anges',60,1350,299,390);
        gateau.addPhoto('1998','photo098','Couverture',296,1741,446,299);
        gateau.addPhoto('1999','photo099','Dictée',70,105,318,202);
        gateau.addPhoto('1999','photo100','Relu manuscrits',486,328,313,406);
        gateau.addPhoto('1999','photo101','Transcrire',149,770,415,287);
        gateau.addPhoto('2000','photo102','Mer',424,119,381,240);
        gateau.addPhoto('2000','photo103','Mer',58,304,330,215);
        gateau.addPhoto('2000','photo104','Portrait',481,510,309,370);
        gateau.addPhoto('2000','photo105','La saison',68,836,281,342);
        gateau.addPhoto('2000','photo106','Oublier',37,1399,379,258);
        gateau.addPhoto('2000','photo107','Pierre',427,1733,296,213);
        gateau.addPhoto('2000','photo108','Gâteau',59,2193,343,250);
        gateau.addPhoto('2000','photo109','Gabrielle',469,2200,335,208);
        gateau.addPhoto('2000','photo110','Ravie',579,2456,254,282);
        gateau.addPhoto('2001','photo111','Ma mère',20,270,295,193);
        gateau.addPhoto('2001','photo112','Paysage',336,694,402,276);
        gateau.addPhoto('2001','photo113','Clovis',58,1131,243,285);
        gateau.addPhoto('2001','photo114','Trilogie',455,1576,219,236);
        gateau.addPhoto('2001','photo115','Fière',38,1808,303,354);
        gateau.addPhoto('2002','photo116','Flottant',3,139,845,235);
        gateau.addPhoto('2002','photo117','Campagne',61,652,319,217);
        gateau.addPhoto('2002','photo118','Mer',480,641,326,238);
        gateau.addPhoto('2002','photo119','Mariage',270,871,284,218);
        gateau.addPhoto('2002','photo120','Éloïse',256,1154,305,200);
        gateau.addPhoto('2002','photo121','Marie Sirois',67,1552,235,322);
        gateau.addPhoto('2002','photo122','Chevalier',474,1924,368,251);
        gateau.addPhoto('2003','photo123','Gabrielle',94,128,175,262);
        gateau.addPhoto('2003','photo124','Adélaïde',377,133,177,253);
        gateau.addPhoto('2003','photo125','Florent',635,133,190,266);
        gateau.addPhoto('2003','photo126','Aurores',85,656,275,371);
        gateau.addPhoto('2004','photo127','Série',158,158,218,169);
        gateau.addPhoto('2004','photo128','Inventaire',443,162,224,179);
        gateau.addPhoto('2004','photo129','chevalier',88,441,293,219);
        gateau.addPhoto('2004','photo130','Rachel Lajoie',610,864,127,143);
        gateau.addPhoto('2004','photo131','Chloé',63,887,132,180);
        gateau.addPhoto('2005','photo132','Rita',88,271,244,304);
        gateau.addPhoto('2005','photo133','Sportive',515,276,309,284);
        gateau.addPhoto('2005','photo135','Jules',329,573,178,263);
        gateau.addPhoto('2005','photo136','Grand-papa',522,681,284,228);
        gateau.addPhoto('2005','photo137','Dîner',62,856,295,202);
        gateau.addPhoto('2005','photo138','Ma mère et Mariette',244,1142,244,159);
        gateau.addPhoto('2005','photo139','Charlotte, ma soeur',97,1411,251,393);
        gateau.addPhoto('2005','photo140','Charlotte',397,1920,270,180);
        gateau.addPhoto('2006','photo141','Céline Dion',523,140,238,159);
        gateau.addPhoto('2006','photo142','Plaque',146,347,151,156);
        gateau.addPhoto('2006','photo143','Mariage',450,372,181,155);
        gateau.addPhoto('2006','photo144','La mer',269,562,256,349);
        gateau.addPhoto('2006','photo145','Mariage',650,375,147,167);
        gateau.addPhoto('2007','photo146','Le temps qui compte',364,271,185,165);
        gateau.addPhoto('2007','photo147','Fontaine de tourny',31,305,269,160);
        gateau.addPhoto('2007','photo148','Texte',206,478,117,126);
        gateau.addPhoto('2007','photo149','Sans rien ni personne',185,655,300,150);
        gateau.addPhoto('2007','photo150','Alice',267,1067,169,130);                     
        gateau.addPhoto('2007','photo151','Mara',37,1183,180,139);
        gateau.addPhoto('2007','photo152','Clara',334,1325,180,166);

		var objLoading = document.createElement("div");
		objLoading.setAttribute('id','loading');
		objImageContainer.appendChild(objLoading);
	
		var objLoadingLink = document.createElement("a");
		objLoadingLink.setAttribute('id','loadingLink');
		objLoadingLink.setAttribute('href','#');
		objLoadingLink.onclick = function() { myLightbox.end(); return false; }
		objLoading.appendChild(objLoadingLink);
	
		var objLoadingImage = document.createElement("img");
		objLoadingImage.setAttribute('src', fileLoadingImage);
		objLoadingLink.appendChild(objLoadingImage);

		var objImageDataContainer = document.createElement("div");
		objImageDataContainer.setAttribute('id','imageDataContainer');
		objImageDataContainer.className = 'clearfix';
		objLightbox.appendChild(objImageDataContainer);

		var objImageData = document.createElement("div");
		objImageData.setAttribute('id','imageData');
		objImageDataContainer.appendChild(objImageData);
	
		var objImageDetails = document.createElement("div");
		objImageDetails.setAttribute('id','imageDetails');
		objImageData.appendChild(objImageDetails);
	
		var objCaption = document.createElement("span");
		objCaption.setAttribute('id','caption');
		objImageDetails.appendChild(objCaption);
	
		var objNumberDisplay = document.createElement("span");
		objNumberDisplay.setAttribute('id','numberDisplay');
		objImageDetails.appendChild(objNumberDisplay);
		
		var objBottomNav = document.createElement("div");
		objBottomNav.setAttribute('id','bottomNav');
		objImageData.appendChild(objBottomNav);
	
		var objBottomNavCloseLink = document.createElement("a");
		objBottomNavCloseLink.setAttribute('id','bottomNavClose');
		objBottomNavCloseLink.setAttribute('href','#');
		objBottomNavCloseLink.onclick = function() { myLightbox.end(); return false; }
		objBottomNav.appendChild(objBottomNavCloseLink);
	
		var objBottomNavCloseImage = document.createElement("img");
		objBottomNavCloseImage.setAttribute('src', fileBottomNavCloseImage);
		objBottomNavCloseLink.appendChild(objBottomNavCloseImage);
	},
	
	//
	//	start()
	//	Display overlay and lightbox. If image is part of a set, add siblings to imageArray.
	//
	start: function(imageLink) {	
    
		function getImageTitle(anchor){ //DynamicDrive.com added function that allows the caption("title") to be linked ("rev").
			var ddimageTitle=anchor.getAttribute('title')
			var ddimageTitleURL=(ddimageTitle!=null && ddimageTitle!="")? anchor.getAttribute('rev') : null
			return ddimageTitleFinal=(ddimageTitleURL!=null && ddimageTitleURL!="")? '<a href="'+ddimageTitleURL+'" class="ddcaptionurl">'+ddimageTitle+'</a>' : ddimageTitle
		};

		hideSelectBoxes();
		hideFlash();

		// stretch overlay to fill page and fade in
		var arrayPageSize = getPageSize();
        Element.setHeight('overlay', arrayPageSize[1]);

		new Effect.Appear('overlay', { duration: overlayDuration, from: 0.0, to: 0.8 });

		
        imageArray = [];
		imageNum = 0;		

		if (!document.getElementsByTagName){ return; }
		var anchors = document.getElementsByTagName('a');

		// if image is NOT part of a set..
		if((imageLink.getAttribute('rel') == 'lightbox')){
			// add single image to imageArray
			imageArray.push(new Array(imageLink.getAttribute('href'), getImageTitle(imageLink)));			
		} else {
		// if image is part of a set..

			// loop through anchors, find other images in set, and add them to imageArray
			for (var i=0; i<anchors.length; i++){
				var anchor = anchors[i];                
				if (anchor.getAttribute('href') && (anchor.getAttribute('rel') == imageLink.getAttribute('rel'))){
					imageArray.push(new Array(anchor.getAttribute('href'), getImageTitle(anchor)));
				}
			}
			imageArray.removeDuplicates();
			while(imageArray[imageNum][0] != imageLink.getAttribute('href')) { imageNum++;}
		}

		// calculate top offset for the lightbox and display 
		var arrayPageScroll = getPageScroll();
		//var lightboxTop = arrayPageScroll[1] + (arrayPageSize[3] / 10);
        var lightboxTop = 20;

		Element.setTop('lightbox', lightboxTop);
		Element.show('lightbox');
		
		this.changeImage(imageNum);
	},

	//
	//	changeImage()
	//	Hide most elements and preload image in preparation for resizing image container.
	//
	changeImage: function(imageNum) {	
		//alert(Element);
		activeImage = imageNum;	// update global var

		// hide elements during transition
		if(animate){ Element.show('loading');}
		Element.hide('lightboxImage');
		Element.hide('hoverNav');
		Element.hide('prevLink');
		Element.hide('nextLink');
		Element.hide('imageDataContainer');
		Element.hide('numberDisplay');		
		
		imgPreloader = new Image();
		
		// once image is preloaded, resize image container
		imgPreloader.onload=function(){
			Element.setSrc('lightboxImage', imageArray[activeImage][0]);
			myLightbox.resizeImageContainer(imgPreloader.width, imgPreloader.height);
            
		} 
		imgPreloader.src = imageArray[activeImage][0];
	},

	//
	//	resizeImageContainer()
	//
	resizeImageContainer: function( imgWidth, imgHeight) {

		// get curren width and height
		this.widthCurrent = Element.getWidth('outerImageContainer');
		this.heightCurrent = Element.getHeight('outerImageContainer');

		// get new width and height
		var widthNew = (imgWidth  + (borderSize * 2));
		var heightNew = (imgHeight  + (borderSize * 2));

		// scalars based on change from old to new
		this.xScale = ( widthNew / this.widthCurrent) * 100;
		this.yScale = ( heightNew / this.heightCurrent) * 100;

		// calculate size difference between new and old image, and resize if necessary
		wDiff = this.widthCurrent - widthNew;
		hDiff = this.heightCurrent - heightNew;

		if(!( hDiff == 0)){ new Effect.Scale('outerImageContainer', this.yScale, {scaleX: false, duration: resizeDuration, queue: 'front'}); }
		if(!( wDiff == 0)){ new Effect.Scale('outerImageContainer', this.xScale, {scaleY: false, delay: resizeDuration, duration: resizeDuration}); }

		// if new and old image are same size and no scaling transition is necessary, 
		// do a quick pause to prevent image flicker.
		if((hDiff == 0) && (wDiff == 0)){
			if (navigator.appVersion.indexOf("MSIE")!=-1){ pause(250); } else { pause(100);} 
		}

		Element.setHeight('prevLink', imgHeight);
		Element.setHeight('nextLink', imgHeight);
		Element.setWidth( 'imageDataContainer', widthNew);

		this.showImage();
	},
	
	//
	//	showImage()
	//	Display image and begin preloading neighbors.
	//
	showImage: function(){
		Element.hide('loading');
		new Effect.Appear('lightboxImage', { duration: resizeDuration, queue: 'end', afterFinish: function(){	myLightbox.updateDetails(); } });
		this.preloadNeighborImages();
	},

	//
	//	updateDetails()
	//	Display caption, image number, and bottom nav.
	//
	updateDetails: function() {
	
		Element.show('caption');
		Element.setInnerHTML( 'caption', imageArray[activeImage][1]);
		
		// if image is part of set display 'Image x of x' 
		if(imageArray.length > 1){
			Element.show('numberDisplay');
			Element.setInnerHTML( 'numberDisplay', "Année " + eval(activeImage + 1) + " de " + imageArray.length);
		}

		new Effect.Parallel(
			[ new Effect.SlideDown( 'imageDataContainer', { sync: true, duration: resizeDuration, from: 0.0, to: 1.0 }), 
			  new Effect.Appear('imageDataContainer', { sync: true, duration: resizeDuration }) ], 
			{ duration: resizeDuration, afterFinish: function() {
				// update overlay size and update nav
				var arrayPageSize = getPageSize();
				Element.setHeight('overlay', arrayPageSize[1]);
				myLightbox.updateNav();
				}
			} 
		);
	},

	//
	//	updateNav()
	//	Display appropriate previous and next hover navigation.
	//
	updateNav: function() {

		Element.show('hoverNav');				

		// if not first image in set, display prev image button
		if(activeImage != 0){
			Element.show('prevLink');
			document.getElementById('prevLink').onclick = function() {
				myLightbox.changeImage(activeImage - 1); return false;
			}
		}

		// if not last image in set, display next image button
		if(activeImage != (imageArray.length - 1)){
			Element.show('nextLink');            
			document.getElementById('nextLink').onclick = function() {
				myLightbox.changeImage(activeImage + 1); return false;
			}
		}
		
         
        /*******************************************************************************/
        /* Modifs de Fred */
        /*******************************************************************************/
        
        for (i = 1; i <= 168; i++){
            if (i < 10) {
                i_str = '00'+i;
            }else if (i < 100) {
                i_str = '0'+i;
            }else {
                i_str = i;
            }
            
            if (document.getElementById('photo'+i_str)){ Element.hide('photo'+i_str);}
        }

        switch(imageArray[activeImage][1]){
            case '1975':
                var data = new Array('001','002');
                break;
            case '1976':
                var data = new Array('004');
                break;
            case '1977':
                var data = new Array('006','007','008','009','010');
                break;
            case '1978':
                var data = new Array('011','012');
                break;
            case '1979':
                var data = new Array('013');
                break;
            case '1980':
                var data = new Array('014','168');
                break;
            case '1981':
                var data = new Array('016','017','018','165','166','167','015');
                break;
            case '1982':
                var data = new Array('019','020');
                break;
            case '1983':
                var data = new Array('021','022');
                break;
            case '1984':
                var data = new Array('023','024','025');
                break;
            case '1985':
                var data = new Array('163','164','026','027','028');
                break;
            case '1986':
                var data = new Array('029','161','030','031','032','033','034','035');
                break;
            case '1987':
                var data = new Array('036','037','038','039','040','159','160');
                break;
            case '1988':
                var data = new Array('041','042','043','044','045','046','047','048','049','050','051','052');
                break;
            case '1989':
                var data = new Array('053','055','056','057','058');
                break;
            case '1990':
                var data = new Array('059','060','061','062','063','064','065');
                break;
            case '1991':
                var data = new Array('066','067','068','070','156','157','158');
                break;
            case '1992':
                var data = new Array('072','073','074','075','076','077','078','155');
                break;
            case '1993':
                var data = new Array('079','080','081');
                break;
            case '1994':
                var data = new Array('082','154');
                break;
            case '1995':
                var data = new Array('083','084');
                break;
            case '1996':
                var data = new Array('085','086','087','088','089');
                break;
            case '1997':
                var data = new Array('153','090','091','092');
                break;
            case '1998':
                var data = new Array('093','094','095','096','097','098');
                break;
            case '1999':
                var data = new Array('099','100','101');
                break;
            case '2000':
                var data = new Array('102','103','104','105','106','107','108','109','110');
                break;
            case '2001':
                var data = new Array('111','112','113','114','115');
                break;
            case '2002':
                var data = new Array('116','117','118','119','120','121','122');
                break;
            case '2003':
                var data = new Array('123','124','125','126');
                break;
            case '2004':
                var data = new Array('127','128','129','130','131');
                break;
            case '2005':
                var data = new Array('132','133','135','136','137','138','139','140');
                break;
            case '2006':
                var data = new Array('141','142','143','144','145');
                break;
            case '2007':
                var data = new Array('146','147','148','149','150','151','152');
                break;
        }
        
        for (i = 0; i < data.length; i++){
            if (document.getElementById('photo'+data[i])){
                Element.show('photo'+data[i]);
                document.getElementById('photo'+data[i]).onclick = function () {                
                    myLightbox.start(this); return false;
                }
            }                
        }
              
        
		this.enableKeyboardNav();
	},

	//
	//	enableKeyboardNav()
	//
	enableKeyboardNav: function() {
		document.onkeydown = this.keyboardAction; 
	},

	//
	//	disableKeyboardNav()
	//
	disableKeyboardNav: function() {
		document.onkeydown = '';
	},

	//
	//	keyboardAction()
	//
	keyboardAction: function(e) {
		if (e == null) { // ie
			keycode = event.keyCode;
			escapeKey = 27;
		} else { // mozilla
			keycode = e.keyCode;
			escapeKey = e.DOM_VK_ESCAPE;
		}

		key = String.fromCharCode(keycode).toLowerCase();
		
		if((key == 'x') || (key == 'o') || (key == 'c') || (keycode == escapeKey)){	// close lightbox
			myLightbox.end();
		} else if((key == 'p') || (keycode == 37)){	// display previous image
			if(activeImage != 0){
				myLightbox.disableKeyboardNav();
				myLightbox.changeImage(activeImage - 1);
			}
		} else if((key == 'n') || (keycode == 39)){	// display next image
			if(activeImage != (imageArray.length - 1)){
				myLightbox.disableKeyboardNav();
				myLightbox.changeImage(activeImage + 1);
			}
		}

	},

	//
	//	preloadNeighborImages()
	//	Preload previous and next images.
	//
	preloadNeighborImages: function(){

		if((imageArray.length - 1) > activeImage){
			preloadNextImage = new Image();
			preloadNextImage.src = imageArray[activeImage + 1][0];
		}
		if(activeImage > 0){
			preloadPrevImage = new Image();
			preloadPrevImage.src = imageArray[activeImage - 1][0];
		}
	
	},

	//
	//	end()
	//
	end: function() {
        /*******************************************************************************/
        /* Modifs de Fred */
        /*******************************************************************************/        
        var anchors = document.getElementsByTagName('a');
         
        for (var i=0; i<anchors.length; i++){
            var anchor = anchors[i];
            var href = String(anchor.getAttribute('href'));
            var rel = String(anchor.getAttribute('rel'));
            
            if (href == imageArray[activeImage][0]) { 
                activeRel = rel.replace('lightbox[',''); 
                activeRel = activeRel.replace(']',''); 
            }
        }     
    
        if (activeRel > 0){
            anchor = document.getElementById(activeRel);
            myLightbox.start(anchor);
            return false;
        }else{
            this.disableKeyboardNav();
            Element.hide('lightbox');
            new Effect.Fade('overlay', { duration: overlayDuration});
            showSelectBoxes();
            showFlash();  
        }    
        scroll(0,0);    
	}
}

// -----------------------------------------------------------------------------------

//
// getPageScroll()
// Returns array with x,y page scroll values.
// Core code from - quirksmode.org
//
function getPageScroll(){

	var yScroll;

	if (self.pageYOffset) {
		yScroll = self.pageYOffset;
	} else if (document.documentElement && document.documentElement.scrollTop){	 // Explorer 6 Strict
		yScroll = document.documentElement.scrollTop;
	} else if (document.body) {// all other Explorers
		yScroll = document.body.scrollTop;
	}
    
	arrayPageScroll = new Array('',yScroll) 
	return arrayPageScroll;
}

// -----------------------------------------------------------------------------------

//
// getPageSize()
// Returns array with page width, height and window width, height
// Core code from - quirksmode.org
// Edit for Firefox by pHaez
//
function getPageSize(){
	
	var xScroll, yScroll;
	
	if (window.innerHeight && window.scrollMaxY) {	
		xScroll = document.body.scrollWidth;
		yScroll = window.innerHeight + window.scrollMaxY;
	} else if (document.body.scrollHeight > document.body.offsetHeight){ // all but Explorer Mac
		xScroll = document.body.scrollWidth;
		yScroll = document.body.scrollHeight;
	} else { // Explorer Mac...would also work in Explorer 6 Strict, Mozilla and Safari
		xScroll = document.body.offsetWidth;
		yScroll = document.body.offsetHeight;
	}
	
	var windowWidth, windowHeight;
	if (self.innerHeight) {	// all except Explorer
		windowWidth = self.innerWidth;
		windowHeight = self.innerHeight;
	} else if (document.documentElement && document.documentElement.clientHeight) { // Explorer 6 Strict Mode
		windowWidth = document.documentElement.clientWidth;
		windowHeight = document.documentElement.clientHeight;
	} else if (document.body) { // other Explorers
		windowWidth = document.body.clientWidth;
		windowHeight = document.body.clientHeight;
	}	
	
	// for small pages with total height less then height of the viewport
	if(yScroll < windowHeight){
		pageHeight = windowHeight;
	} else { 
		pageHeight = yScroll;
	}

	// for small pages with total width less then width of the viewport
	if(xScroll < windowWidth){	
		pageWidth = windowWidth;
	} else {
		pageWidth = xScroll;
	}
    
	arrayPageSize = new Array(pageWidth,pageHeight,windowWidth,windowHeight)     
	return arrayPageSize;
}

// -----------------------------------------------------------------------------------

//
// getKey(key)
// Gets keycode. If 'x' is pressed then it hides the lightbox.
//
function getKey(e){
	if (e == null) { // ie
		keycode = event.keyCode;
	} else { // mozilla
		keycode = e.which;
	}
	key = String.fromCharCode(keycode).toLowerCase();
	
	if(key == 'x'){
	}
}

// -----------------------------------------------------------------------------------

//
// listenKey()
//
function listenKey () {	document.onkeypress = getKey; }
	
// ---------------------------------------------------

function showSelectBoxes(){
	var selects = document.getElementsByTagName("select");
	for (i = 0; i != selects.length; i++) {
		selects[i].style.visibility = "visible";
	}
}

// ---------------------------------------------------

function hideSelectBoxes(){
	var selects = document.getElementsByTagName("select");
	for (i = 0; i != selects.length; i++) {
		selects[i].style.visibility = "hidden";
	}
}

// ---------------------------------------------------

function showFlash(){
	var flashObjects = document.getElementsByTagName("object");
	for (i = 0; i != flashObjects.length; i++) {
		flashObjects[i].style.visibility = "visible";
	}

	var flashEmbeds = document.getElementsByTagName("embeds");
	for (i = 0; i != flashEmbeds.length; i++) {
		flashEmbeds[i].style.visibility = "visible";
	}
}

// ---------------------------------------------------

function hideFlash(){
	var flashObjects = document.getElementsByTagName("object");
	for (i = 0; i != flashObjects.length; i++) {
		flashObjects[i].style.visibility = "hidden";
	}

	var flashEmbeds = document.getElementsByTagName("embeds");
	for (i = 0; i != flashEmbeds.length; i++) {
		flashEmbeds[i].style.visibility = "hidden";
	}

}


// ---------------------------------------------------

//
// pause(numberMillis)
// Pauses code execution for specified time. Uses busy code, not good.
// Help from Ran Bar-On [ran2103@gmail.com]
//

function pause(ms){
	var date = new Date();
	curDate = null;
	do{var curDate = new Date();}
	while( curDate - date < ms);
}
/*
function pause(numberMillis) {
	var curently = new Date().getTime() + sender;
	while (new Date().getTime();	
}
*/
// ---------------------------------------------------



function initLightbox() { myLightbox = new Lightbox(); }
Event.observe(window, 'load', initLightbox, false);

function photoOver(){
    doTooltip(this.event,this.id);
}

function photoOut(){
    hideTip();
}
