function imageControls() {
	var $ = document.id;
	// init image navigation controls
	
	if($('zoomOutButton')) {
		$('zoomOutButton').addEvent('click', function(e){
			e = new Event(e);
			s7zoom.zoomOut();
			e.stop();
		});
	}
	
	if($('zoomInButton')) {
		$('zoomInButton').addEvent('click', function(e){
			e = new Event(e);
			s7zoom.zoomIn();
			e.stop();
		});
	}
	
	if($('panLeftButton')) {
		$('panLeftButton').addEvent('click', function(e){
			e = new Event(e);
			s7zoom.pan('left',1);
			e.stop();
		});
	}
	
	if($('panRightButton')) {
		$('panRightButton').addEvent('click', function(e){
			e = new Event(e);
			s7zoom.pan('right',1);
			e.stop();
		});
	}
	
	if($('panUpButton')) {
		$('panUpButton').addEvent('click', function(e){
			e = new Event(e);
			s7zoom.pan('up',1);
			e.stop();
		});
	}
	
	if($('panDownButton')) {
		$('panDownButton').addEvent('click', function(e){
			e = new Event(e);
			s7zoom.pan('down',1);
			e.stop();
		});
	}
	
	if($('resetButton')) {
		$('resetButton').addEvent('click', function(e){
			e = new Event(e);
			s7zoom.reset();
			e.stop();
		});
	}
	
	// init thumbnail controls 
	
	var thumbnails = $$('#imageNavigator a.thumbnail');
	if(thumbnails[0]) {
		for (var i = 0; i < thumbnails.length; i++) {
			thumbnails[i].addEvent('click', function(e){
				e = new Event(e);
				var thumbLink = this.getProperty('href');
				var thumbLinkURL = thumbLink.split('?');
				if (window.fixSetImage) {
					if (thumbLinkURL[0] != imageURL[0]) {
						imageURL[0] = thumbLinkURL[0];
						fixSetImage(thumbLink, true);
					}
					else {
						s7zoom.reset();
					}
				}else{
					if (thumbLinkURL[0] != imageURL[0]) {
						imageURL[0] = thumbLinkURL[0];
						s7zoom.setImage(thumbLink, true);
					}
					else {
						s7zoom.reset();
					}
				}
				e.stop();
			});
		}
	}
	
	// init image slider controls 		
	var state  = 'ready';
	if($('imageSlide') && $('openButton') && $('closeButton')) {
	
		var mySlide2 = new Fx.Slide('imageSlide', {
			mode: 'horizontal',
			duration: 600,
			transition: Fx.Transitions.linear
		});
		
		var state = 'ready';
		
		$('openButton').addEvent('click', function(e){
			e = new Event(e);
			state = 'opening';
			mySlide2.slideIn();
			this.setStyle("position","absolute");
			e.stop();
		});
		$('closeButton').addEvent('click', function(e){
			e = new Event(e);
			state = 'closing';
			mySlide2.slideOut();
			$('openButton').setStyle("position","static");
			e.stop();
		});
	}
	
	if (s7zoom != undefined && s7zoom != null) {
	
		s7zoom.zviewer.addEventListener('endZoom', function(o) {
			var minScale = o.target.defaultScl / Math.pow(o.target.zoom_factor , o.target.max_zoom);

			if (o.target.zoom_factor_limit != 0) {
				minScale = Math.max(minScale, 1 / o.target.zoom_factor_limit);
			}
			
			if (Math.abs(o.target.defaultScl - o.target.currentScl) < 1e-6) {
				//viewer reached reset state
				$('imageController').removeClass('zoomedIn');
			} else {
				$('imageController').addClass('zoomedIn');
			}
			if (Math.abs(minScale - o.target.currentScl) < 1e-6) {
				//viewer reached maximum zoom
				$('zoomInButton').addClass('maxZoom')
			} else {
				$('zoomInButton').removeClass('maxZoom');
			}
			if ($('panLeftButton') && $('panRightButton') && $('panUpButton') && $('panDownButton')) {
			
				if (o.target.currentX == parseInt(o.target.checkPosition(o.target.currentX + 1, o.target.currentY, o.target.currentScl).nx)) {
					//viewer reached left border
					$('panLeftButton').addClass('maxPan');
				} else {
					$('panLeftButton').removeClass('maxPan');
				}
				if (o.target.currentX == parseInt(o.target.checkPosition(o.target.currentX - 1, o.target.currentY, o.target.currentScl).nx)) {
					//viewer reached right border
					$('panRightButton').addClass('maxPan');
				} else {
					$('panRightButton').removeClass('maxPan');
				}
				if (o.target.currentY == parseInt(o.target.checkPosition(o.target.currentX, o.target.currentY + 1, o.target.currentScl).ny)) {
					//viewer reached up border
					$('panUpButton').addClass('maxPan');
				} else {
					$('panUpButton').removeClass('maxPan');
				}
				if (o.target.currentY == parseInt(o.target.checkPosition(o.target.currentX, o.target.currentY - 1, o.target.currentScl).ny)) {
					//viewer reached down border
					$('panDownButton').addClass('maxPan');
				} else {
					$('panDownButton').removeClass('maxPan');
				}
			}
		});
	}
}
		
window.addEvent('domready', function(){
	imageControls();
});
