// -----------------------------------------------------------------------------------
// 
// 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 = 2;



// Photo directory for this gallery

var photoDir = "photos/";


// Define each photo's name, height, width, and caption
var photoArray = new Array(
	
// Source, Width, Height, Caption
new Array("neu1_279_349.jpg", "279", "349", ""),
new Array("neu2_486_348.jpg", "486", "348", ""),
new Array("neu3_485_348.jpg", "485", "348", ""),
new Array("neu4_259_348.jpg", "259", "348", ""),
new Array("neu5_498_348.jpg", "498", "348", ""),
new Array("neu6_505_348.jpg", "505", "348", ""),
new Array("neu7_293_348.jpg", "293", "348", ""),
new Array("neu8_259_348.jpg", "259", "348", ""),
new Array("neu9_507_349.jpg", "507", "349", ""),
new Array("neu10_504_349.jpg", "504", "349", ""),
new Array("neu11_295_348.jpg", "295", "348", ""),
new Array("neu12_253_349.jpg", "253", "349", ""),
new Array("neu13_258_348.jpg", "258", "348", ""),
new Array("neu14_231_349.jpg", "231", "349", ""),
new Array("neu15_256_349.jpg", "256", "349", ""),
new Array("neu16_515_348.jpg", "515", "348", ""),
new Array("neu17_501_348.jpg", "501", "348", ""),
new Array("neu18_272_348.jpg", "272", "348", ""),
new Array("3_296_355.jpg", "296", "355", ""),
new Array("4_227_355.jpg", "227", "355", ""),
new Array("1_305_366.jpg", "305", "366", " "),
new Array("2_255_352.jpg", "255", "352", " "),
new Array("5_260_355.jpg", "260", "355", ""),
new Array("6_263_355.jpg", "263", "355", ""),
new Array("7_428_223.jpg", "428", "223", ""),
new Array("8_511_355.jpg", "511", "355", ""),
new Array("9_358_355.jpg", "358", "355", ""),
new Array("10_479_355.jpg", "479", "355", ""),
new Array("11_272_355.jpg", "272", "355", ""),
new Array("12_252_355.jpg", "252", "355", ""),
new Array("13_242_355.jpg", "242", "355", ""),
new Array("14_260_350.jpg", "260", "350", ""),
new Array("15_292_345.jpg", "292", "345", ""),
new Array("16_485_345.jpg", "486", "345", ""),
new Array("17_236_345.jpg", "236", "345", ""),
new Array("18_272_345.jpg", "272", "345", ""),
new Array("19_248_345.jpg", "248", "345", ""),
new Array("20_279_345.jpg", "279", "345", ""),
new Array("21_235_345.jpg", "235", "345", ""),
new Array("22_337_345.jpg", "337", "345", ""),
new Array("23_266_345.jpg", "266", "345", ""),
new Array("24_227_345.jpg", "227", "345", ""),
new Array("25_231_345.jpg", "231", "345", ""),
new Array("26_419_345.jpg", "419", "345", ""),
new Array("27_338_345.jpg", "338", "345", ""),
new Array("28_281_345.jpg", "281", "345", ""),
new Array("29_373_345.jpg", "373", "345", ""),
new Array("30_480_345.jpg", "480", "345", ""),
new Array("31_237_345.jpg", "237", "345", ""),
new Array("32_241_345.jpg", "241", "345", ""),
new Array("33_283_345.jpg", "483", "345", ""),
new Array("34_268_345.jpg", "268", "345", ""),
new Array("35_535_345.jpg", "535", "345", ""),
new Array("36_341_345.jpg", "341", "345", ""),
new Array("37_216_345.jpg", "216", "345", ""),
new Array("38_244_345.jpg", "244", "345", ""),
new Array("39_494_345.jpg", "494", "345", ""),
new Array("40_660_345.jpg", "660", "345", ""),
new Array("41_316_345.jpg", "316", "345", ""),
new Array("42_249_345.jpg", "249", "345", ""),
new Array("43_229_345.jpg", "229", "345", ""),
new Array("44_377_190.jpg", "377", "190", ""),
new Array("45_502_345.jpg", "502", "345", ""),
new Array("46_243_345.jpg", "243", "345", ""),
new Array("47_309_345.jpg", "309", "345", ""),
new Array("48_489_345.jpg", "489", "345", ""),
new Array("49_239_345.jpg", "239", "345", ""),
new Array("50_294_345.jpg", "294", "345", ""),
new Array("51_252_345.jpg", "252", "345", ""),
new Array("52_247_345.jpg", "247", "345", ""),
new Array("53_249_345.jpg", "249", "345", ""),
new Array("54_244_345.jpg", "244", "345", "")

	);


// 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.onmouseover = function(){
			//soundManager.play('beep');
		}
		element.onclick = function(){
			var myPhoto = new Slideshow(photoId);
			myPhoto.prevPhoto();
			//soundManager.play('select');
		}
	},
	'#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();
	//soundManagerInit();
}
