// -----------------------------------------------------------------------------------
// 
// This page coded by Scott Upton
// http://www.uptonic.com | http://www.couloir.org
//
// This work is licensed under a Creative Commons License
// Attribution-ShareAlike 2.0
// http://creativecommons.org/licenses/by-sa/2.0/
//
// Associated APIs copyright their respective owners
//
// -----------------------------------------------------------------------------------
// --- version date: 11/28/05 --------------------------------------------------------


// get current photo id from URL
var thisURL = document.location.href;
var splitURL = thisURL.split("#");
var photoId = splitURL[1] - 1;

// if no photoId supplied then set default
var photoId = (!photoId)? 0 : photoId;

// CSS border size x 2
var borderSize = 10;

// Photo directory for this gallery
var photoDir = "slideshow/photos/01/";

// Define each photo's name, height, width, and caption
var photoArray = new Array(
	// Source, Width, Height, Caption
	
	new Array("cuisine1.jpg", "592", "422", "Les extrêmes s'attirent : façades à cadre en bois massif, magnolia tendre sont mises en valeur par le contraste avec le wengé africain.</br></br>Planifiée intelligement, une cuisine où il fait bon vivre."),
	
	new Array("cuisine2.jpg", "592", "422", "Encore un mariage de goût pour cet ensemble fonctionnel et harmonieux.</br></br>Acajou vernis brillant, plan inox, verre dépoli et meubles laqués."),
	
	new Array("cuisine3.jpg", "592", "422", "Des matériaux nobles pour le meilleur effet...</br></br>Plan wengué sur meubles laqués blancs, credence verre dépoli : heureux mariage."),
	
	new Array("cuisine4.jpg", "592", "422", "Tout est possible en gardant un ensemble fonctionnel et de bon goût.</br></br>Aquarium intégré entouré par deux meubles à rideaux, evier central posé sur un ensemble d'un bel orange qui vient réchauffer l'ambiance générale."),
	

	
	new Array("cuisine6.jpg", "592", "422", "Contraste du blanc et de l'ébène brillant sur cet ensemble astucieux.</br></br>Hotte sur plan de travail, meubles à rideaux en verre transparent et bien d'autres astuces pour faire de cette cuisine un espace de communication."),
	
		new Array("cuisine7.jpg", "592", "422", "Osez avec bon goût le mariage du frêne huilé soutenu par des chants en aluminium avec une crédence en verre laqué framboise...</br></br>Totalement actuel."),	

	
	new Array("cuisine8.jpg", "592", "422", "Cela sent bon le bois...</br>Et le style.</br></br>Plan en granit sur meubles en merisier massif huilé accueille un authentique fourneau Delaubrac. </br></br>Les rangements sont aussi généreux que sur un ensemble plus moderne... Avec le style en plus."),
	
	new Array("cuisine9.jpg", "592", "422", "Combinaison étonnante de créativité.</br></br>Cet ambiance laquée pourpre et noyer italien, équipée de rangements astucieux souligne la tendance résolument contemporaine."),
	
	new Array("cuisine10.jpg", "592", "422", "Ambiance généreuse pour cet ensemble en noyer italien et blanc.</br></br>Moderne et lumineuse vous serez séduit par le plan repas intégré."),
	
	new Array("cuisine11.jpg", "592", "422", "Parfaitement intégrée au paysage cette composition de meubles laqués blanc recouverts d'un plan stratifié granit intègre un plan snack verre du meilleur effet."),
	

	
	new Array("cuisine13.jpg", "592", "422", "Chêne brillant et laque vanille.</br></br>Association douce et chaleureuse pour déjeuner en paix."),
	
	new Array("cuisine14.jpg", "592", "422", "Tons rouge rubis en contraste avec des façades laquées noir brillant.</br></br>Du chic, du charme et du style."),
	
	new Array("cuisine15.jpg", "592", "422", "Formes claires et rectilignes pour cet agencement en frène massif huilé réhaussé de façades laquées rouge rubis brillant."),
	
	new Array("cuisine16.jpg", "592", "422", "Autour d'un plan bar pivotant s'articule un agencement astucieux avec meubles superposables à jalousies et portes en verre dépoli pour une intégration réussie avec le coin repas."),
	
	new Array("cuisine17.jpg", "592", "422", "Ambiance claire et lumineuse pour cette composition wengé avec ilôt central.</br></br>Façades laquées blanc rehaussées d'un profilé chromes brillant.")
	


	);

// Number of photos in this gallery
var photoNum = photoArray.length;

/*--------------------------------------------------------------------------*/

// Additional methods for Element added by SU, Couloir
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";
	},
	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;
	}
});

/*--------------------------------------------------------------------------*/

var Slideshow = Class.create();

Slideshow.prototype = {
	initialize: function(photoId) {
		this.photoId = photoId;
		this.photo = 'Photo';
		this.photoBox = 'Container';
		this.prevLink = 'PrevLink';
		this.nextLink = 'NextLink';
		this.captionBox = 'CaptionContainer';
		this.caption = 'Caption';

		this.counter = 'Counter';
		this.loader = 'Loading';
	},
	getCurrentSize: function() {
		// Get current height and width, subtracting CSS border size
		this.wCur = Element.getWidth(this.photoBox) - borderSize;
		this.hCur = Element.getHeight(this.photoBox) - borderSize;
	},
	getNewSize: function() {
		// Get current height and width
		this.wNew = photoArray[photoId][1];
		this.hNew = photoArray[photoId][2];
	},
	getScaleFactor: function() {
		this.getCurrentSize();
		this.getNewSize();
		// Scalars based on change from old to new
		this.xScale = (this.wNew / this.wCur) * 100;
		this.yScale = (this.hNew / this.hCur) * 100;
	},
	setNewPhotoParams: function() {
		// Set source of new image
		Element.setSrc(this.photo,photoDir + photoArray[photoId][0]);
		// Set anchor for bookmarking
		Element.setHref(this.prevLink, "#" + (photoId+1));
		Element.setHref(this.nextLink, "#" + (photoId+1));
	},
	setPhotoCaption: function() {
		// Add caption from gallery array
		Element.setInnerHTML(this.caption,photoArray[photoId][3]);
		Element.setInnerHTML(this.caption2,photoArray[photoId][4]);
		Element.setInnerHTML(this.counter,((photoId+1)+'/'+photoNum));
	},
	resizePhotoBox: function() {
		this.getScaleFactor();
		new Effect.Scale(this.photoBox, this.yScale, {scaleX: false, duration: 0.3, queue: 'front'});
		new Effect.Scale(this.photoBox, this.xScale, {scaleY: false, delay: 0.5, duration: 0.3});
		// Dynamically resize caption box as well
		//Element.setWidth(this.captionBox,this.wNew-(-borderSize));
	},
	showPhoto: function(){
		new Effect.Fade(this.loader, {delay: 0.5, duration: 0.3});
		// Workaround for problems calling object method "afterFinish"
		new Effect.Appear(this.photo, {duration: 0.5, queue: 'end', afterFinish: function(){Element.show('CaptionContainer');Element.show('PrevLink');Element.show('NextLink');}});
	},
	nextPhoto: function(){
		// Figure out which photo is next
		(photoId == (photoArray.length - 1)) ? photoId = 0 : photoId++;
		this.initSwap();
	},
	prevPhoto: function(){
		// Figure out which photo is previous
		(photoId == 0) ? photoId = photoArray.length - 1 : photoId--;
		this.initSwap();
	},
	initSwap: function() {
		// Begin by hiding main elements
		Element.show(this.loader);
		Element.hide(this.photo);
		Element.hide(this.captionBox);
		Element.hide(this.prevLink);
		Element.hide(this.nextLink);
		// Set new dimensions and source, then resize
		this.setNewPhotoParams();
		this.resizePhotoBox();
		this.setPhotoCaption();
	}
}

/*--------------------------------------------------------------------------*/

// Establish CSS-driven events via Behaviour script
var myrules = {
	'#Photo' : function(element){
		element.onload = function(){
			var myPhoto = new Slideshow(photoId);
			myPhoto.showPhoto();
		}
	},
	'#PrevLink' : function(element){
		
		element.onclick = function(){
			var myPhoto = new Slideshow(photoId);
			myPhoto.prevPhoto();
			
		}
	},
	'#NextLink' : function(element){
		element.onmouseover = function(){
			
		}
		element.onclick = function(){
			var myPhoto = new Slideshow(photoId);
			myPhoto.nextPhoto();
			
		}
	},
	a : function(element){
		element.onfocus = function(){
			this.blur();
		}
	}
};

// Add window.onload event to initialize
Behaviour.addLoadEvent(init);
Behaviour.apply();
function init() {
	var myPhoto = new Slideshow(photoId);
	myPhoto.initSwap();
	
}