// -----------------------------------------------------------------------------------// // 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 = "photos/01/";// Define each photo's name, height, width, and captionvar photoArray = new Array(	// Source, Width, Height, Captionnew Array("001b-leon-uw3.jpg", "245", "360", "Adrian Beard - METSUKI"),new Array("001c-leon-uw4.jpg", "235", "360", "Adrian Beard - STILL DEAD ALREADY"),new Array("002b-akio01.jpg", "390", "260", "Akio Yamaguchi - HOTARU"),new Array("002c-akio02.jpg", "390", "260", "Akio Yamaguchi - MOONLIGHT"),new Array("003b-alexis01.jpg", "240", "360", "Alexis Alvarez - MINERVA I"),new Array("003c-alexis02.jpg", "390", "260", "Alexis Alvarez - MINERVA II"),new Array("003d-alexis03.jpg", "390", "260", "Alexis Alvarez - MINERVA III"),new Array("004b-barbara01.jpg", "240", "360", "Barbara Flatten - FALL 1"),new Array("004c-barbara02.jpg", "390", "260", "Barbara Flatten - WALKOVER I"),new Array("004d-barbara03.jpg", "390", "260", "Barbara Flatten - KEEN ON AZABU III"),new Array("005b-bonnie.jpg", "255", "360", "Bonnie Bajaj -TENDER"),new Array("005c-bonnie03-(1).jpg", "239", "360", "Bonnie Bajaj - ISOLATED"),new Array("005d-bonnie03.jpg", "275", "360", "Bonnie Bajaj - BARE"),new Array("006b-camilla01.jpg", "328", "360", "Camilla Douraghy - ENCHANTED"),new Array("006c-camilla02.jpg", "360", "360", "Camilla Douraghy - ENTWINED"),new Array("006d-camilla03.jpg", "360", "360", "Camilla Douraghy - CAPTURED"),new Array("007b-carla01.jpg", "385", "260", "Carla Hernandez - BATH TUB 1"),new Array("007c-carla02.jpg", "243", "360", "Carla Hernandez - BATH TUB 2"),new Array("007d-carla03.jpg", "243", "360", "Carla Hernandez - BATH TUB 3"),new Array("008b-frank03.jpg", "520", "260", "Frank La Rivierre - IMAGINATIVE PORTRAYAL TRIPTYCH"),new Array("008c-frank02.jpg", "520", "260", "Frank La Rivierre - IMAGINATIVE PORTRAYAL TRIPTYCH"),new Array("008d-frank01.jpg", "520", "260", "Frank La Rivierre - IMAGINATIVE PORTRAYAL TRIPTYCH"),new Array("010b-leroy01.jpg", "338", "260", "LeRoy Howard - LAST SUPPER 1-1"),new Array("010d-leroy02.jpg", "337", "260", "LeRoy Howard - LAST SUPPER 1-4"),new Array("011b-leslie.jpg", "360", "360", "Leslie Kennah - AFTERTHOUGHTS"),new Array("012b-lori-futonland_08.jpg", "264", "360", "Lori Ono - FUTONLAND 8"),new Array("012c-lori-futonland_01.jpg", "240", "360", "Lori Ono - FUTONLAND 1"),new Array("012d-lori-futonland_07.jpg", "390", "260", "Lori Ono - FUTONLAND 7"),new Array("013b-mia-tagaki.jpg", "544", "260", "Mia Takagi - YUKARI"),new Array("013d-mia01.jpg", "240", "360", "Mia Takagi - YUKARI"),new Array("014b-mumi01.jpg", "298", "360", "Mumi Trabucco - BARAE-SAN I"),new Array("014c-mumi02.jpg", "360", "360", "Mumi Trabucco - BARAE-SAN II"),new Array("014d-mumi-t.jpg", "360", "360", "Mumi Trabucco - BARAE-SAN III"),new Array("015b-jill_after.jpg", "405", "260", "Paul Kohl - JILL AFTER"),new Array("015c-teryl_after.jpg", "381", "260", "Paul Kohl - TERRYL AFTER"),new Array("015d-self_portrait.jpg", "269", "360", "Paul Kohl - THREE PICTURES (SELF PORTRAIT)"),new Array("016b-peter.jpg", "321", "360", "Pete Courtney - ROSE"),new Array("017b-mono_no_aware_w_vosbur.jpg", "264", "360", "Whitney Vosburgh - MONO NO AWARE"),new Array("017c-wabi_sabi_w_vosburgh.jpg", "270", "360", "Whitney Vosburgh - WABI SABI"),new Array("017d-susan-toy-face-1.jpg", "347", "260", "Whitney Vosburgh - SUSAN DOLL FACE")	);// 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.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();			soundManager.play('select');		}	},	'#NextLink' : function(element){		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();}