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

document.observe('dom:loaded', function()
{	
	// find all link anchors withing galery Nav
	$$('div.gallery_nav').each(function(element){
		$$('a.image_link').each(function(element){
			// if image link is clicked
			Event.observe(element, 'click', function(event){	
				fnLoadImage(element.identify())
				Event.stop(event); 
			}); 
		});	
		
		Event.observe($('Gal_Next'), 'click', function(event){		
			fnNextImage();	
			Event.stop(event); 
		});
		
		Event.observe($('Gal_Prev'), 'click', function(event){		
			fnPreviousImage(); 
			Event.stop(event); 
		});
		
	
		$('image').setStyle({cursor:'pointer'})
		$('image').title = "Click to view next image";
		
		Event.observe($('image'), 'click', function(event){	
			fnNextImage();	
			Event.stop(event);
		}); 
	});
	
})

function fnLoadImage(imageID){
			
			aryImages = $('image_container').descendants();
			obImage = aryImages[0];
			obImageId = obImage.identify();
			
			element = $(imageID);

			// regular expression matches for image IDs
			re_GetImageId = "[a-zA-Z0-9-_]+$";
			re_CurImageId = "([a-zA-Z0-9-_]+).jpg$";

			// get image id from url
			var currSrc = $(obImageId).src;			
			var currImage = currSrc.match(re_CurImageId);
			var newImage= element.href.match(re_GetImageId);
			currImage = currImage[1];
			
			
			// remove the dotted line from the link
			element.blur();
		
			newImageSrc = currSrc.replace(currImage,newImage);
			
			var newImageOb = new Element('img',{src:newImageSrc});
	
			
			//Event.observe(newImageOb,'load',function(){
				obImage.removeClassName('next-link');																				 
				obImage.fade({ 	duration: 0.6,
												afterFinish: function(){
													
													obImage.remove();
													newImageOb.setOpacity(0);
													$('image_container').insert(newImageOb);
													
													// remove selected class from all elements
													$$('div.gallery_nav a').each(function(element){
														element.removeClassName('selected');
													});
													
													// add selected class to current linked
													$('img_'+newImage).addClassName('selected');
													
													
													newImageOb.appear({duration: 0.6,
																					afterFinish: function(){
																							newImageOb.addClassName('next-link');
																							newImageOb.setStyle({cursor:'pointer'})
																							newImageOb.title = "Click to view next image";
																							
																							Event.observe(newImageOb, 'click', function(event){	
																										
																										fnNextImage();
																							});
																						}
																					});
													}
				});
				
			//});
}

function fnNextImage (){
	$$('a.image_link.selected').each(function(current){
			
			if (current.next('a.image_link') != undefined){
				nextLink = current.next('a.image_link');
			} else {
				count=0;
				$$('div.gallery_nav a.image_link').each(function(findFirst){
					if(count < 1){
						nextLink = findFirst;
					}
					count++;
				});
			}
			fnLoadImage(nextLink.identify());
		});
}

function fnPreviousImage(){
	$$('a.image_link.selected').each(function(current){
		
		if (current.previous('a.image_link') != undefined){
			prevLink = current.previous('a.image_link');
		} else {
			$$('div.gallery_nav a.image_link').each(function(findFirst){
				prevLink = findFirst;
			});
		}
		fnLoadImage(prevLink.identify());
	});
}
