	// -----------------------------------------------------------------------------------
// 
// 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 = 4;

// Photo directory for this gallery
var photoDir = "img/slideshow/fotos/teak/";

// Define each photo's name, height, width, and caption
var photoArray = new Array(
	// Source, Width, Height, Caption
	new Array("001.jpg", "300", "265", "Weidegrond voor koeien is gebruikt voor de aanplant van teakbomen op de plantage van 2002."),
	new Array("002.jpg", "300", "265", "De grond is eerst geploegd voor een betere opname van zuurstof."),
	new Array("003.jpg", "300", "265", "Waar nodig zijn afwateringskanalen gegraven om overtollig regenwater te laten afvloeien."),
	new Array("004.jpg", "300", "265", "Van de best presterende teakbomen zijn zaden verzameld voor een nieuw kweekproces."),
	new Array("005.jpg", "300", "265", "De beste zaden zijn eerst in de hete zon van Costa Rica gedroogd."),
	new Array("006.jpg", "300", "265", "In de eigen kwekerij zijn de gedroogde zaden in de grond gedaan waarna de kweek begint."),
	new Array("007.jpg", "300", "265", "De zaden zijn in vier weken tijd opgekweekt tot plantbare stekjes."),
	new Array("008.jpg", "300", "265", "De opgekweekte plantjes worden naar de plantage gebracht om daar te worden geplant."),
	new Array("009.jpg", "300", "265", "De plantbare stekjes worden voorzichtig uitgezet op de plantage."),
	new Array("010.jpg", "300", "265", "De stekjes worden in rechte lijnen aangeplant op de teakplantage."),
	new Array("011.jpg", "300", "265", "De stekjes worden in de vooraf bewerkte en biologisch bemeste grond gezet."),
	new Array("012.jpg", "300", "265", "Het net aangeplante teakplantje begint aan zijn groei naar een teakboom."),
	new Array("013.jpg", "300", "265", "De aangeplante stekjes zijn in drie maanden uitgegroeid tot een klein boompje."),
	new Array("014.jpg", "300", "265", "Na vijf maanden zijn de bomen een kleine meter hoog."),
	new Array("015.jpg", "300", "265", "De teakbomen worden tijdens de groei regelmatig gesnoeid om noesten in het hout te voorkomen. "),
	new Array("016.jpg", "300", "265", "Door te snoeien ontstaat bij de eindkap topkwaliteit teakhout."),
	new Array("017.jpg", "300", "265", "Extra onderhoud en bemesting is belangrijk voor een optimale groei van de teakbomen."),
	new Array("018.jpg", "300", "265", "De lokale bevolking speelt een belangrijke rol bij het onderhoud van de teakplantages."),
	new Array("019.jpg", "300", "265", "De plantagebeheerder, Tjitze de Vries inspecteert het uitgevoerde onderhoud."),
	new Array("020.jpg", "300", "265", "Tijdens de eerste tussenkap na drie en een half jaar zijn de slechtste bomen gekapt."),
	new Array("021.jpg", "300", "265", "De eerste uitdunning leverde nog geen winstuitkering op, zoals verwacht."),
	new Array("022.jpg", "300", "265", "Jaarlijks worden de teakplantages door de onafhankelijke bosbouwingenieur geinspecteerd."),
	new Array("023.jpg", "300", "265", "In januari 2007 waren de beste bomen van 4,5 jaar oud al meer dan 20 cm dik."),
	new Array("024.jpg", "300", "265", "Volgens de onafhankelijk taxateur is dit de beste teakplantage van Costa Rica!"),
	new Array("025.jpg", "300", "265", "Ook de plantage uit 1995 levert volgens de taxateur uitstekende kwaliteit hout."),
	new Array("026.jpg", "300", "265", "Eén van de teakbomen uit 1995 die was geselecteerd voor de tussenkap begin 2006."),
	new Array("027.jpg", "300", "265", "Tijdens de tussenkap worden de geselecteerde - de dunste en kromste - bomen gekapt."),
	new Array("028.jpg", "300", "265", "Hierdoor krijgen de overblijvende bomen meer ruimte om te groeien. "),
	new Array("029.jpg", "300", "265", "Uiteindelijk blijven de best presterende teakbomen staan voor de eindkap."),
	new Array("030.jpg", "300", "265", "De gekapte bomen zijn in samenwerking met de houdhandelaar genummerd."),
	new Array("031.jpg", "300", "265", "De omtrek van de gekapte bomen werd gemeten om de houtprijs te kunnen bepalen."),
	new Array("032.jpg", "300", "265", "Tenslotte werd de lengte van de bomen uit de tussenkap gemeten."),
	new Array("033.jpg", "300", "265", "De houtkwaliteit van de gekapte bomen is vastgesteld en vastgelegd."),
	new Array("034.jpg", "300", "265", "De netto opbrengst van deze tussenkap is aan investeerders uitgekeerd."),
	new Array("035.jpg", "300", "265", "Het hout van de tussenkappen wordt grotendeels gebruikt in de meubelindustrie."),
	new Array("036.jpg", "300", "265", "Een fraai teaken ligstoel gemaakt door lokale ambachtslieden."),
	new Array("037.jpg", "300", "265", "Ook zijn er producten als schommelstoelen, tafels en opbergkasten van gemaakt en verkocht."),
	new Array("038.jpg", "300", "265", "De groei van aanplant 1995 wordt gemeten. Na 11,5 jaar bijna 30 cm diameter."),
	new Array("039.jpg", "300", "265", "Een investeerder meet één van zijn bomen op. U bent ook van harte welkom! ")
	);

// 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.counter,((photoId+1)+'/'+photoNum));
	},
	resizePhotoBox: function() {
		this.getScaleFactor();
		new Effect.Scale(this.photoBox, this.yScale, {scaleX: false, duration: 0.1, queue: 'front'});
		new Effect.Scale(this.photoBox, this.xScale, {scaleY: false, delay: 0.0, duration: 0.1});
		// Dynamically resize caption box as well
		Element.setWidth(this.captionBox,this.wNew);
	},
	showPhoto: function(){
		new Effect.Fade(this.loader, {delay: 0.0, duration: 0.0});
		// Workaround for problems calling object method "afterFinish"
		new Effect.Appear(this.photo, {delay: 0.0, 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.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.onmouseover = function(){
			soundManager.play('beep');
		}
		element.onclick = function(){
			var myPhoto = new Slideshow(photoId);
			myPhoto.prevPhoto();
			soundManager.play('select');
		}
	},
	'#NextLink' : function(element){
		element.onmouseover = function(){
			soundManager.play('beep');
		}
		element.onclick = function(){
			var myPhoto = new Slideshow(photoId);
			myPhoto.nextPhoto();
			soundManager.play('select');
		}
	},
	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();
	soundManagerInit();
}
