/* ******************************************************************************
  JavaScript Gallery Transition controller
	
 	Copyright (c) 2008 David Turner (davidturner.info)
 	Date: 30/07/2008	 
		 
****************************************************************************** */

document.observe('dom:loaded', function()
{	
	if($$('div#Gallery').size()>0){
	var TimeDelay = 7;
		if($$('div#Gallery')[0].hasClassName('play')){
			var galPlay = new PeriodicalExecuter(fnNextImage, TimeDelay);
		}

	}
	
	$$('#GalleryControls a.Next').each(function(nextBtn){
		Event.observe(nextBtn, 'click', function(event){	
			
			nextBtn.addClassName('loading');
			Event.stop(event);
			
			fnNextImage();
			
			if($$('div#Gallery')[0].hasClassName('play')){
				galPlay.stop();
				galPlay = new PeriodicalExecuter(fnNextImage, TimeDelay);
			}
			
		}); 																			
		
		//create play and pause and inser before this link
		playPauseBtn = new Element('a',{'class':'PlayPause','href':'/'}).update('Play/Pause');
		nextBtn.insert({'before':playPauseBtn});
		
		Event.observe(playPauseBtn, 'click', function(event){	
			
			Event.stop(event);
			
			if($$('div#Gallery')[0].hasClassName('play')){
				$$('div#Gallery')[0].removeClassName('play');
				galPlay.stop();
			}else{
				$$('div#Gallery')[0].addClassName('play');
				fnNextImage();
				galPlay = new PeriodicalExecuter(fnNextImage, TimeDelay);
			}
			
		});
		

	});
	
	
	$$('#GalleryControls a.Prev').each(function(prevBtn){
		Event.observe(prevBtn, 'click', function(event){	
			
			prevBtn.addClassName('loading');
			fnPrevImage();		
			if($$('div#Gallery')[0].hasClassName('play')){
				galPlay.stop();
				galPlay = new PeriodicalExecuter(fnNextImage, TimeDelay);
			}
			Event.stop(event);
		}); 																			
	});
	

});

function fnLoadImage(){
		obImage = $$('#GalleryImageContainer img')[0];
			
		if($$('#GalleryPagination a.selected').size() > 0){
			
			var obNewLoad = $$('#GalleryPagination a.load')[0]; 

			var newImageOb = new Element('img',{'alt':obNewLoad.readAttribute('title').match(/^[^(]+/)[0]});
						
			newImageOb.onload = function(){
				
				$$('#GalleryControls a.loading').each(function(loadingLink){ loadingLink.removeClassName('loading'); });
				
				obImage.fade({ 	duration: 0.6,
												afterFinish: function(){
														
														$$('#GalleryImageContainer dd img').each(function(element){
															element.remove();
														});
															
														newImageOb.setOpacity(0);
														$$('#GalleryImageContainer dd')[0].insert(newImageOb);
													
														$$('div#GalleryPagination a.Image').each(function(element){
															element.removeClassName('selected');
														});
														
														$$('#GalleryPagination a.load').each(function(loadClass){
															$$('#GalleryPagination a.load')[0].addClassName('selected');
															loadClass.removeClassName('load');
														});
														
														$$('#GalleryImageContainer dt')[0].update(newImageOb.readAttribute('alt')+'&nbsp;');
														
														newImageOb.appear({duration: 0.6,
														afterFinish: function(){
																
															}
														});
														
												}
				});
			}
			
			newImageOb.src = obNewLoad.readAttribute('title').match(/\(([^)]+)\)$/)[1]; 
			
		}
}


function fnNextImage(){
	
	if($$('#GalleryPagination a.selected').size()>0){
		var obCurrent = $$('#GalleryPagination a.selected')[0];
		
		if(obCurrent.nextSiblings().size()>0){
			obNew = obCurrent.nextSiblings()[0];
		}else{
			obNew = $$('#GalleryPagination a')[0];
		}
		obNew.addClassName('load');
		fnLoadImage();
	}
}

function fnPrevImage(){
	if($$('#GalleryPagination a.selected').size()>0){
		var obCurrent = $$('#GalleryPagination a.selected')[0];
		
		if(obCurrent.previousSiblings().size()>0){
			obNew = obCurrent.previousSiblings()[0];
			console.log('prev');
		}else{
			obNew = $$('#GalleryPagination a')[$$('#GalleryPagination a').size()-1];
			console.log('last');
		}
		obNew.addClassName('load');
		fnLoadImage();
	}
}
