// JavaScript Document

// Number of photos in this gallery
var photoNum = photoArray.length;
// initial counter
var counter = 0;
// current height of image
var currentheight = photoArray[counter][2];
// current height of image
var currentwidth = photoArray[counter][1];
// current caption
var currentcaption = photoArray[counter][3];
// current set
var currentset = photoArray[counter][4];
// transition speed
var speed = 250;
//	var to check if busy doing transition
var transition_busy = 0;
var setnames = new Array();
var setindices = new Array();


// prevPhoto
function prevPhoto($number) {
	// only if not busy doing a transition
	if (transition_busy == 0) {
		// decrease counter if there is not a direct $number
		if ($number == null) {counter --} else {counter = ($number-1)};
		// loop to end if we hit below 0
		if (counter < 0) { counter = photoNum-1 };
		//document.getElementById('mooshow_caption').innerHTML = counter;
		// now resize image container
		loadPhoto(counter);
	}
}



// nextPhoto
function nextPhoto($number) {
	// only if not busy doing a transition
	if (transition_busy == 0) {
		// decrease counter if there is not a direct $number
		if ($number == null) {counter ++} else {counter = ($number-1)};
		// loop to end if we hit below 0
		if (counter == photoNum) { counter = 0 };
		// now resize image container
		loadPhoto(counter);
	}
}

// loads new photo
function loadPhoto() {
	// update navigation if navigation on
	if(document.getElementById('mooshow_navigation')){navigation();}
	// hide overlay nav and caption
	hide_elements();
	// show laoding animation
	document.getElementById('mooshow_loading').style.display = 'inline';
	// load in new image
	imgPreloader = new Image();
	// if image is preloaded
	imgPreloader.onload=function(){
		// when loaded
		// hide laoding animation
		document.getElementById('mooshow_loading').style.display = 'none';	
		// hide current photo
		document.getElementById('mooshow_image').style.opacity = 0;
		// resize container to new size
		resize();
	}
	// preloader src
	imgPreloader.src = photoArray[counter][0];
}


// resize image container
function resize() {
	// get current photo width and height
	currentwidth = document.getElementById('mooshow_image').width;
	currentheight = document.getElementById('mooshow_image').height;
	// call moo.fx effect
	resizeContatinerHeight.custom(currentheight,photoArray[counter][2]);
	resizeContatinerWidth.custom(currentwidth,photoArray[counter][1]);
}



// hide various mooShow elements
function hide_elements() {
	// clear cpation. fill with space
	if(document.getElementById('mooshow_caption')){
	document.getElementById('mooshow_caption').innerHTML = '&nbsp;';}
	// overlay navigation
	document.getElementById('mooshow_prev').style.display = 'none';
	document.getElementById('mooshow_next').style.display = 'none';
}



function switch_photo() {
	document.getElementById('mooshow_image').src=photoArray[counter][0];
	document.getElementById('mooshow_image').alt=photoArray[counter][2];
	document.getElementById('mooshow_image').width=photoArray[counter][1];
	document.getElementById('mooshow_image').height=photoArray[counter][2];
	document.getElementById('mooshow_image').name=counter;
	// update caption  if it exists
	if(document.getElementById('mooshow_caption')){caption();}
	
	// show new image
	show_elements();
}



// show various mooShow elements
function show_elements() {
	// fade in photo
	fade_in('mooshow_image',speed*2);
	// fade in caption if captions on
	if(document.getElementById('mooshow_caption')){fade_in('mooshow_caption',speed);}
}


// show nav elements
function show_nav_overlay() {
	// overlay navigation
	document.getElementById('mooshow_prev').style.display = 'inline';
	document.getElementById('mooshow_next').style.display = 'inline';
}


// build navigation
function navigation(){
	// clear current links
	document.getElementById('mooshow_navigation').innerHTML = '';
	var i=0;
	var j=0;
	var match=1;
	var imgstring;
	//build setnames array
	setnames[0] = photoArray[0][4];
	setindices[0] = 1;
	for (i=0;i< photoNum;i++) {
		for(j=0;j<setnames.length;j++) {
			if(setnames[j] == photoArray[i][4]) {
				break;
			}
		}
		// if we reached the end of our list of sets and haven't found the current one in there, add it
		if(j==setnames.length) {
			setnames[setnames.length] = photoArray[i][4];
			setindices[setnames.length-1] = i + 1;
		}
	}
		
	// building the setnames nav
	currentset = photoArray[counter][4];
	for(j=0;j<setnames.length;j++) {
		// get current content	
		content = document.getElementById('mooshow_navigation').innerHTML;
		if(currentset == setnames[j]) {
			imgstring = '<img src="images/' + category + '/thumbs/' + setnames[j] + '_on.jpg" alt="' + photoArray[counter][3] + '" />';
		} else {
			imgstring = '<a href=\'#' +setindices[j]+ '\' onclick=\"nextPhoto('+setindices[j]+');\">';
			imgstring = imgstring + '<img src="images/' + category + '/thumbs/' + setnames[j] + '_off.jpg" onmouseover="javascript:this.src=\'images/' + category + '/thumbs/' + setnames[j] + '_on.jpg\'"';
			imgstring = imgstring + 'onmouseout="javascript:this.src=\'images/' + category + '/thumbs/' + setnames[j] + '_off.jpg\'" alt="" />' + '</a>';
		}
		document.getElementById('mooshow_navigation').innerHTML = content + imgstring;
		if(j < (setnames.length-1)) {
			content = document.getElementById('mooshow_navigation').innerHTML;
			document.getElementById('mooshow_navigation').innerHTML = content + '';
		}
	}
	//update next / prev links
	if (counter == photoNum-1) {document.getElementById('nextphoto').href = '#1'} else {document.getElementById('nextphoto').href = '#' + (counter+2)};
	if (counter == 0) {document.getElementById('prevphoto').href = '#'+photoNum} else {document.getElementById('prevphoto').href = '#' + (counter)};
}


// caption
function caption(){
	// uodate caption
	var caption;
	// add &nbsp; if no caption otherwise dive jumps
	if(photoArray[counter][3]=='') {caption='&nbsp;'} else {caption=photoArray[counter][3]}
	document.getElementById('mooshow_caption').innerHTML = caption;
}



// moo.fx

// resize
window.onload = function() {
	transition_busy = 1;
	resizeContatinerHeight = new fx.Height('mooshow_image_container', {duration: speed, onComplete:function() {
	// display new image etc.
	switch_photo();
	transition_busy = 0;
	}});
	resizeContatinerWidth = new fx.Width('mooshow_container', {duration: speed});	
	
	// load first photo
	transition_busy = 0;
	nextPhoto(1);
} 


// fader effect
function fade_in($element,$speed) { 
	var fader = new fx.Opacity($element, {duration: $speed, onComplete:function() {
	// overlay navigation
	show_nav_overlay();
	}});
	fader.hide();
	fader.toggle();
}



