/* ------------------------------------------------------------ */
var gallery;
var thumbnails;
var gallery_content;
var gallery_next;
var currentGallery = -1;
var currentPhoto = -1;
var fx;
/* ------------------------------------------------------------ */
function movePrev(){
	var count      = photos[ currentGallery ].length;
	changePhoto((currentPhoto+count-1)%count);
}
/* ------------------------------------------------------------ */
function moveNext(){
	changePhoto(currentPhoto+1);
}
/* ------------------------------------------------------------ */
function changePhoto( i ){

	try{

	var count      = photos[ currentGallery ].length;
	
	i = i % count;

	var src     = photos[ currentGallery ][ i].src;
	
	if( !gallery_content ){ //First Time Image

		//Add First Image
		gallery_content = new Element("img" , {src: src , style: 'z-index:1000' } );
		gallery.insert( { bottom: gallery_content } );

	}else{ //Second Time Image

		gallery_next = new Element("img" , {src: src , style: 'z-index:2000'} );
		gallery_next.hide();
		gallery.insert( { bottom: gallery_next } );

		gallery_next.setOpacity(0.01);
		gallery_next.show();

		fx = new Effect.Parallel(
			[
				new Effect.Fade(   gallery_content , { sync: true } ),
				new Effect.Appear( gallery_next    , { sync: true } )
			],
			{
				duration: 0.8,
				fps: 40,
				afterFinish : changePhotoAfterFinish
			}
		);
	}

	currentPhoto = i;

	//Preload next image
	var nextsrc = photos[ currentGallery ][ (i+1) % count].src;
	var next = new Image();
	next.src = nextsrc;

	//Preload prev image
	var prevsrc = photos[ currentGallery ][ (i+count-1) % count].src;
	var prev = new Image();
	prev.src = prevsrc;

	}catch( ex ){

	}
}
/* ------------------------------------------------------------ */
function changePhotoAfterFinish(){
	if( gallery_content ) 
		gallery.removeChild( gallery_content );
	gallery_content = gallery_next;
	gallery_content.style.zIndex = 1000;
	gallery_content.setOpacity(1);
}
/* ------------------------------------------------------------ */
function changeGallery( i ){
	var count      = photos.length;
	i = i % count;

	//Create Thumbnails
	var x;
	var photocount = photos[i].length;
	thumbnails.update("");
	for( x = 0 ; x < photocount; x++ ){
		var thumb = new Element( "img" , {src: photos[i][x].thumb } );
		thumb.observe("click" , changePhoto.bind(this,x));
		thumbnails.insert({ bottom: thumb });
	}

	//Update Tabs
	var tabs     = $('tabs');
	var children = tabs.select(".tab");
	var x;
	var c = children.length - 1;
	for( x = 0 ; x < c ; x++ ){
		if( x == i ){
			children[x].removeClassName("taboff");
			children[x].addClassName("tabon");
		}else{
			children[x].removeClassName("tabon");
			children[x].addClassName("taboff");
		}
	}
	
	currentGallery = i;


	//Change Photo
	changePhoto(0);
}
/* ------------------------------------------------------------ */
function initGallery(){
	gallery    = $("gallery");
	thumbnails = $("gallery-thumbnails");
	$("gallery-next").observe( "click" , moveNext );
	$("gallery-prev").observe( "click" , movePrev );
	changeGallery(0);
	changePhoto(0);
}
/* ------------------------------------------------------------ */

