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

document.observe('dom:loaded', function()
{	
	if($$('div#galleryContainer').size()>0){
	var TimeDelay = 8;
		if($$('div#galleryContainer')[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#galleryContainer')[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#galleryContainer')[0].hasClassName('play')){
				$$('div#galleryContainer')[0].removeClassName('play');
				galPlay.stop();
			}else{
				$$('div#galleryContainer')[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#galleryContainer')[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 obImgContainer = $$('#galleryImageContainer dl')[0];
			//console.info(obNewLoad.childElements()[0].readAttribute('src').match(/\?img=/))
			
			var newImageSrc = obNewLoad.childElements()[0].readAttribute('src').replace(/^([^?]+)\?img=/,'');
			
			var newImageOb = new Element('img',{'alt':obNewLoad.childElements()[0].readAttribute('alt') });
						
			newImageOb.onload = function(){
				
				$$('#galleryControls a.loading').each(function(loadingLink){ loadingLink.removeClassName('loading'); });
				
				obImgContainer.fade({ 	duration: 0.6,
						afterFinish: function(){
								
								$$('#galleryImageContainer dd')[0].childElements().each(function(element){
									element.remove();
								});
								
								$$('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');
								});
								
								
								var newHref = $$('div#galleryPagination a.selected')[0].readAttribute('title').match(/\(([^)]*)\)$/)[1];
								
								if(newHref!=""){
									var newImageLink = new Element('a',{'href':newHref});
								}else{
									var newImageLink = new Element('span');
								}
								
								//newImageOb.setOpacity(0);
								newImageLink.insert(newImageOb);
								$$('#galleryImageContainer dd')[0].insert(newImageLink);
							
								
								//var newImageOb = new Element('img',{'alt':obNewLoad.readAttribute('title').match(/^[^(]+/)[0]});
	  						$$('#galleryImageContainer dt')[0].removeClassName('light');
								$$('#galleryImageContainer dt')[0].update('<b>'+($$('div#galleryPagination a.selected')[0].readAttribute('title').replace(/\([^)]*\)$/,''))+'</b>&nbsp;<em>St John&rsquo;s</em>');
								if($$('div#galleryPagination a.selected')[0].hasClassName('light')){
									$$('#galleryImageContainer dt')[0].addClassName('light');
								}
								//$$('#galleryImageContainer dd')[0][0].writeAttribute('href',$$('div#galleryPagination a.selected')[0].readAttribute('title').match(/\(([^)]+)\)$/)[1]);
								//console.info( $$('div#galleryPagination a.selected')[0].readAttribute('title').match(/\(([^)]+)\)$/)[1]);
								
								obImgContainer.appear({duration: 0.6,
									afterFinish: function(){
										
									}
								});
								
						}
				});
			}
			
			newImageOb.src=newImageSrc; 
			
		}
}


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();
	}
}

