function hideGallery(){
	var gallery = this;
	var shadow = gallery.getElement('.shadow');
	// get heights of elements for calculating new heights
	var open_button = gallery.getElement('.open');
	var open_button_size = open_button.getSize();
	var close_button = gallery.getElement('.close');
	var close_button_size = close_button.getSize();
	var gallery_height = gallery.get('initial_height') * 1;
	var top_position = -gallery_height;
	var gallery_opener = gallery.getElement('.gallery_opener');

	// animations
	gallery_opener.setStyles(
		{
			'height': close_button_size.y+open_button_size.y,
			'bottom': -open_button_size.y
		}
	);
	shadow.setStyle('visibility', 'hidden');
	gallery.get('morph').start( { 'top': top_position, 'height': gallery_height } ).chain(
		function(){

		}
	);
//	gallery_opener.get('morph').start( { 'height': close_button_size.y+open_button_size.y, 'bottom': -open_button_size.y } );
	return false;
}

function showGallery(){
	var gallery = this;
	var shadow = gallery.getElement('.shadow');
	var shadow_size = shadow.getSize();
	// get heights of elements for calculating new heights
	var open_button = gallery.getElement('.open');
	var open_button_size = open_button.getSize();
	var close_button = gallery.getElement('.close');
	var close_button_size = close_button.getSize();
	var gallery_size = gallery.getSize();
	var screen_height = window.getSize();
	var top_position = 0;
	var gallery_opener = gallery.getElement('.gallery_opener');

	// animations	
	gallery.set('initial_height', gallery_size.y);
	shadow.setStyle('visibility', 'visible');
//	gallery_opener.get('morph').start( { 'height': close_button_size.y, 'bottom': 0 } );
	if(screen_height.y > gallery_size.y){
		var new_top = ((screen_height.y - gallery_size.y) > shadow_size.y ? -shadow_size.y : (gallery_size.y - screen_height.y));
		gallery.get('morph').start( { 'top': new_top, 'height': screen_height.y } ).chain(
			function(){
				gallery_opener.setStyles(
					{
						'height': close_button_size.y+shadow_size.y,
						'bottom': -shadow_size.y
					}
				);
			}
		);
	}else{
		gallery.get('morph').start( { 'top': 0 } ).chain(
			function(){
				gallery_opener.setStyles(
					{
						'height': close_button_size.y+shadow_size.y,
						'bottom': -shadow_size.y
					}
				);
			}
		);
	}
	return false;
}

function initGallery(){
	var gallery = $('website_gallery_wrapper');
	gallery.set(
		'morph',
		{
			'transition': Fx.Transitions.Quad.easeInOut,
			'duration': 1500
		}
	);
	var open_button = gallery.getElement('.open');
	var close_button = gallery.getElement('.close');
	open_button.addEvent('click', showGallery.bind(gallery));
	close_button.addEvent('click', hideGallery.bind(gallery));
	var second_opener = $('website').getElement('.open_gallery');
	var second_closer = $('website_gallery_wrapper').getElement('.second_close');
	if(second_opener){
		second_opener.addEvent('click', showGallery.bind(gallery));
	}
	if(second_closer){
		second_closer.addEvent('click', hideGallery.bind(gallery));
	}
	var domain = document.domain;
	if(domain == 'gallery.habundgut.ch'){
		showGallery.attempt(gallery, gallery); // initially shown gallery
	}
}

function initMooFlow(){
	$$('.MooFlowieze').each(
		function(mooflow){
			new MooFlow(
				mooflow,
				{
					reflection: 0.2,
					heightRatio: 0.49,
					useSlider: true,
					useCaption: true,
					bgColor: '#FFF',
					startIndex: 14
				}
			);
		}
	);
}

function resizeGallery(){
	var gallery = $('website_gallery_wrapper');
	var shadow = gallery.getElement('.shadow');
	var shadow_size = shadow.getSize();
	var gallery_size = gallery.getSize();
	var screen_size = window.getSize();
	var initial_height = gallery.get('inital_height');
	
//	var new_top = ((screen_size.y - gallery_size.y) > shadow_size.y ? -shadow_size.y : (screen_size.y - gallery_size.y));
	
	if(screen_size.y > initial_height){
		gallery.setStyle('height', screen_size.y);
	}
//	gallery.setStyle('top', new_top);
}

function setIframeAttributes(){
	$('sb-player').set('scrolling', 'no');
	if($('sb-wrapper-inner').getSize().y > 230){
		$('sb-info').setStyle('top', -308);
	}else{
		$('sb-info').setStyle('top', -208);
	}
	$('sb-info').setStyle('visibility', 'visible');
}

function initHTMLShadowbox(){
	Shadowbox.init(
		{
			onFinish: setIframeAttributes,
			onClose: function(){
				$('sb-info').setStyle('visibility', 'hidden');
			}
		}
	);
}

function initAll(){
	initGallery();
	initMooFlow();
	initHTMLShadowbox();
}

window.addEvent('domready', initAll);
window.addEvent('resize', resizeGallery);
