function ImageGallery(_iso1, _smallGallery, _textmap, _galleryFlag){
	var
		gallery = _smallGallery;
	var
		iso1 = _iso1;
	var
		textmap = _textmap;
	var 
		galleryIndex=0;
	var
		bigActive = false;
	var
		expandNavigation;
	var
		showNavigation = false;
	var
		galleryFlag = _galleryFlag;
	var
	    slideShowInterval= null;
	// public functions
	this.setImage = setImage;
	this.previousImage = previousImage;
	this.nextImage = nextImage;
	this.toggleImageSize = toggleImageSize;
	this.imageIconMouseEvent = imageIconMouseEvent;
	this.startSlideShow = startSlideShow;
	this.stopSlideShow = stopSlideShow;
	this.preloadImage = preloadImage;
	this.setShowNavigation = setShowNavigation;
	function setShowNavigation(_state){
		if (showNavigation != _state){
			showNavigation = _state;
			setVisibilityById('image_gallery_navi_control', showNavigation);
			
			// reset index
			setImage(galleryIndex);
		}		
	}
	
	function slideNextImage(){
		nextImage();
	}
	function stopSlideShow(){
	    if(slideShowInterval!=null){
		window.clearInterval(slideShowInterval);
		slideShowInterval=null;
	    }
	}
	function startSlideShow(_interval){
		if (!_interval){
			return;
		}
		document.slideNextImage = slideNextImage;
		slideShowInterval=window.setInterval("document.slideNextImage()", _interval);
	}
	function getIndexByGroup(gallery, groupid){
		var
			index = -1;
		
		for (i=0; i < gallery.length; i++){
			if (gallery[i].groupid == groupid){
				index = i;
				break;
			}
		}
			
		return index;
	}
	function calcImageGalleryOffset(_index){
		if (bigActive){
			if (_index < 0)
				_index += gallery_big.length;
			return _index%gallery_big.length;
		}else{
			if (_index < 0)
				_index += gallery.length;
			return _index%gallery.length;
		}
	}	
	function setImage(_index){
		galleryIndex = calcImageGalleryOffset(_index);
		
		if (galleryFlag){
			document.getElementById('gallery_image').src = gallery[galleryIndex].target.uri;
			// preload previous and next image
			preloadImage(gallery[calcImageGalleryOffset(galleryIndex+1)].target);
			preloadImage(gallery[calcImageGalleryOffset(galleryIndex-1)].target);
		} else {	
			if(getInnerHeight()<600){
			    document.getElementById('back_image').src = "/lowres_"+gallery[galleryIndex].target.objId+".jpg";
			} else {
			    document.getElementById('back_image').src = gallery[galleryIndex].target.uri;
			}
			// preload previous and next image
			preloadImage(gallery[calcImageGalleryOffset(galleryIndex+1)].target);
			preloadImage(gallery[calcImageGalleryOffset(galleryIndex-1)].target);
			if(document.getElementById('story_head')!=null && textmap!=null){
			    setContent('story_head',textmap[galleryIndex].headline2);
			}
			if(document.getElementById('claim')!=null){
			    setClaim(iso1,gallery[galleryIndex].groupid,gallery[galleryIndex].key);
			}
			if(document.getElementById('logo')!=null){
			    setLogo(gallery[galleryIndex].groupid);
			}
			
		}
		
		updateText();
	}
	
	function previousImage(){
		setImage(galleryIndex-1);		
	}
	
	function nextImage(){
		setImage(galleryIndex+1);
	}
			
	function toggleImageSize(){
		if (!bigActive){
			bigActive = true;
			hideElementById('content_unten');
			hideElementById('menu2und3');
			// find the index of the given group
			setImage(getIndexByGroup(gallery_big, gallery[galleryIndex].groupid));
			showElementById('gallery_div_big');
			hideElementById('gallery_div_small');
			setExpandNavigation(2);
		}else{
			bigActive = false;
			showElementById('content_unten');
			showElementById('menu2und3');
			// find the index of the given group
			setImage(getIndexByGroup(gallery, gallery_big[galleryIndex].groupid));
			showElementById('gallery_div_small');	
			hideElementById('gallery_div_big');		
		}
		
		if (this.toggleCallback)
			this.toggleCallback(bigActive);
	}	
	
	function imageIconMouseEvent(num, over){
		if (num == 0){
			// previous
			var img = document.getElementById('previous_image');
			if (!over)
				img.src = '/icons/bg_mitte_bildnavi_prev.gif';
			else
				img.src = '/icons/bg_mitte_bildnavi_prev_over.gif';
		}else
		if (num == 1){
			// next
			var img = document.getElementById('next_image');
			if (!over)
				img.src = '/icons/bg_mitte_bildnavi_next.gif';
			else
				img.src = '/icons/bg_mitte_bildnavi_next_over.gif';
		}else{
			var img = document.getElementById('minimize_image');
			// minimize maximize
			if (expandNavigation == 1){
				// expand
				if (!over)
					img.src = '/icons/bg_mitte_bildnavi_expand.gif';
				else
					img.src = '/icons/bg_mitte_bildnavi_expand_over.gif';				
			}else
			if (expandNavigation == 2){
				// minimize
				if (!over)
					img.src = '/icons/bg_mitte_bildnavi_minimize.gif';
				else
					img.src = '/icons/bg_mitte_bildnavi_minimize_over.gif';				
			}
		}		
	}
	
	function setExpandNavigation(nav){
		expandNavigation = nav;
		var img = document.getElementById('minimize_image');
		if (img){
			if (nav == 0){
				// hidden
				//img.style.visibility = 'hidden';
			}else
			if (nav == 1){
				// expand
				img.src = '/icons/bg_mitte_bildnavi_expand.gif';
				//img.style.visibility = 'visible';
			}else{
				// minimize
				img.src = '/icons/bg_mitte_bildnavi_minimize.gif';
				//img.style.visibility = 'visible';
			}
			
			setDisplayBlockOrNoneById('minimize_image', nav != 0);
		}
		
		var
			lrNav = showNavigation && gallery.length >1;
		
		setDisplayBlockOrNoneById('previous_image', lrNav);
		setDisplayBlockOrNoneById('next_image', lrNav);
		
	}
	
	function updateText(){
	    setContent('gallery_text', gallery[galleryIndex].text);
	    setContent('gallery_head', gallery[galleryIndex].headline);	    
	}
}