function previousInGallery() 
{
	currentImageIndex = parseInt($('currentImage').innerHTML);
	totalImageCount = parseInt($('totalImages').innerHTML);

	if(currentImageIndex > 1) 
	{
	
		slider = $('dbox_gallery_slider');
		images_in_slider = slider.getElementsByTagName('img');
	
		// figure out the details of the next image...
		nextImage = images_in_slider[currentImageIndex - 2];
		thisImage = images_in_slider[currentImageIndex - 1];
	
		nextImage.style.display = 'block';
		slider.style.left = (-1 * nextImage.width) + 'px';



		// update the description at the bottom
		pos = currentImageIndex - 1;
		if($('description_' + pos))
		{			
			$('description_' + pos).style.display = 'none';
			pos = pos - 1;
			$('description_' + pos).style.display = 'block';
			$('dbox_meta').style.width = nextImage.width + 'px';			
		}
	
		// update our status
		$('currentImage').innerHTML = currentImageIndex - 1;
		
		
		$('dbox_nextInGallery').className = 'enabled';
		if(currentImageIndex - 2 == 0) {
			$('dbox_previousInGallery').className = 'disabled';			
		}


		if($('dbox_meta').offsetHeight > d_box_height)
			div_height = $('dbox_meta').offsetHeight;
		else
			div_height = d_box_height;
		
	
	
		// try moving...
		_targetWidth = nextImage.width + 20;
		_targetHeight = nextImage.height + 30 + $('dbox_meta').offsetHeight;
		
		_targetLeft = ( getViewportDimensions().windowWidth - _targetWidth ) / 2;
		_targetTop = getPageScroll() + ( getViewportDimensions().windowHeight - _targetHeight + $('dbox_meta').offsetHeight ) / 3;

		deltaLeft = _targetLeft - parseInt(dbox.pane.style.left);
		deltaTop = _targetTop - parseInt(dbox.pane.style.top);

		deltaWidth = _targetWidth - ( dbox.pane.getDimensions().width );
		deltaHeight = _targetHeight - ( dbox.pane.getDimensions().height );


		deltaWidth_content = nextImage.width - thisImage.width;
		deltaHeight_content = nextImage.height - thisImage.height;
		

		$('dbox_meta').style.width = '';

		// don't waste render time on 4 transitions that dont do shit
		if(deltaWidth == 0 && deltaHeight == 0) {

				// pane
				new Effect.MoveBy(slider, 0, (nextImage.width), { duration : 0.5, transition: Effect.Transitions.sinoidal,	

						afterFinish : function () 
						{
							$A(images_in_slider).each( function (i) {
								i.style.display = 'none';
							});

							nextImage.style.display = 'block';
							slider.style.left = '0px';	
						} 
			});

		} else {

			new Effect.Parallel([
				// pane
				new Effect.MoveBy(dbox.pane, deltaTop, deltaLeft, { sync: true, transition: Effect.Transitions.sinoidal }),
				new Effect.ResizeBy(dbox.pane, deltaWidth, deltaHeight, { sync: true, transition: Effect.Transitions.sinoidal }),
				new Effect.ResizeBy(dbox.contentFrame, deltaWidth, deltaHeight, { sync: true, transition: Effect.Transitions.sinoidal }),		
				new Effect.ResizeBy(($('dbox_firstpane')), deltaWidth_content, deltaHeight_content, { sync: true, transition: Effect.Transitions.sinoidal }),		

				// slider
				new Effect.MoveBy(slider, 0, (nextImage.width), { sync : true, transition: Effect.Transitions.sinoidal })	
			], { duration: 0.5,
				
				afterFinish : function () 
				{
					$A(images_in_slider).each( function (i) {
						i.style.display = 'none';
					});

					nextImage.style.display = 'block';
					slider.style.left = '0px';	
				}		
				
		 	});
		}
		
		

	
	}
}


function nextInGallery() 
{
	currentImageIndex = parseInt($('currentImage').innerHTML);
	totalImageCount = parseInt($('totalImages').innerHTML);

	if(currentImageIndex != totalImageCount) 
	{
	
		slider = $('dbox_gallery_slider');
		images_in_slider = slider.getElementsByTagName('img');
	
		// figure out the details of the next image...
		nextImage = images_in_slider[currentImageIndex];
		thisImage = images_in_slider[currentImageIndex - 1];
	
		nextImage.style.display = 'block';

		// update the description at the bottom
		pos = currentImageIndex - 1;
		if($('description_' + pos))
		{			
			$('description_' + pos).style.display = 'none';
			$('description_' + currentImageIndex).style.display = 'block';
			$('dbox_meta').style.width = nextImage.width + 'px';
		}


		$('currentImage').innerHTML = currentImageIndex + 1;

		$('dbox_previousInGallery').className = 'enabled';		
		if(currentImageIndex + 1 == totalImageCount) {
			$('dbox_nextInGallery').className = 'disabled';
			
		}
		
		
		if($('dbox_meta').offsetHeight > d_box_height)
			div_height = $('dbox_meta').offsetHeight;
		else
			div_height = d_box_height;

	
		// try moving...
		_targetWidth = nextImage.width + 20;
		_targetHeight = nextImage.height + 30 + $('dbox_meta').offsetHeight;
		
		_targetLeft = ( getViewportDimensions().windowWidth - _targetWidth ) / 2;
		_targetTop = getPageScroll() + ( getViewportDimensions().windowHeight - _targetHeight + $('dbox_meta').offsetHeight) / 3;

		deltaLeft = _targetLeft - parseInt(dbox.pane.style.left);
		deltaTop = _targetTop - parseInt(dbox.pane.style.top);

		deltaWidth = _targetWidth - ( dbox.pane.getDimensions().width );
		deltaHeight = _targetHeight - ( dbox.pane.getDimensions().height );


		deltaWidth_content = nextImage.width - thisImage.width;
		deltaHeight_content = nextImage.height - thisImage.height;
		
		$('dbox_meta').style.width = '';
		
		
		// don't waste render time on 4 transitions that dont do shit
		if(deltaWidth == 0 && deltaHeight == 0) {
			
				new Effect.MoveBy(slider, 0, (thisImage.width * -1), { duration : 0.5, transition: Effect.Transitions.sinoidal,
						afterFinish : function () 
						{
							$A(images_in_slider).each( function (i) {
								i.style.display = 'none';
							});
		
							images_in_slider[currentImageIndex].style.display = 'block';
							slider.style.left = '0px';		
						} 
			});
			
		} else {

				new Effect.Parallel([
					// pane
					new Effect.MoveBy(dbox.pane, deltaTop, deltaLeft, { sync: true, transition: Effect.Transitions.sinoidal }),
					new Effect.ResizeBy(dbox.pane, deltaWidth, deltaHeight, { sync: true, transition: Effect.Transitions.sinoidal }),
					new Effect.ResizeBy(dbox.contentFrame, deltaWidth, deltaHeight, { sync: true, transition: Effect.Transitions.sinoidal }),		
					new Effect.ResizeBy(($('dbox_firstpane')), deltaWidth_content, deltaHeight_content, { sync: true, transition: Effect.Transitions.sinoidal }),		

					new Effect.MoveBy(slider, 0, (thisImage.width * -1), { sync : true, transition: Effect.Transitions.sinoidal })	
				], { duration: 0.5, 
			
							afterFinish : function () 
							{
								$A(images_in_slider).each( function (i) {
									i.style.display = 'none';
								});
			
								images_in_slider[currentImageIndex].style.display = 'block';
								slider.style.left = '0px';		
							} 
				});

			
		}
		

	
	}
}
