// cancel close timer
function mcancelclosetime()
{
	if (closetimer) {
		window.clearTimeout(closetimer);
		closetimer = null;
	}
}


// open hidden layer
function mopen(id)
{
	// cancel close timer
	mcancelclosetime();

	// close old layer
	if (ddmenuitem) {
		ddmenuitem.style.visibility = 'hidden';
	}

	// get new layer and show it
	ddmenuitem = document.getElementById(id);
	ddmenuitem.style.visibility = 'visible';

}


// close showed layer
function mclose()
{
	if (ddmenuitem) {
		ddmenuitem.style.visibility = 'hidden';
	}
}


// go close timer
function mclosetime()
{
	closetimer = window.setTimeout(mclose, timeout);
}


/*
* switch to next image
*/
function nextImage () {

	previousImage = currentImage;
	currentImage++;
	if (currentImage >= slideshow_images.length) {
		currentImage = 0;
	}
}


// switch image
function switchImage() {

	// check if variable is set
	if (typeof(slideshowIsActive) == "undefined") {
		return true;
	}

	// check if slideshow is active
	if (!slideshowIsActive) {
		setTimeout(function(){switchImage();}, duration * 1000);
		return true;
	}

	nextImage();

	if (previousImage != currentImage) {
		document.getElementById("active_image").src = "./image.php?id="
			+ slideshow_images[currentImage] + "&width=450&height=299";
	}

	// schedule next update
	setTimeout(function(){switchImage();}, duration * 1000);
}


/*
* switch to previous image
*/
function switchToPreviousImage () {

	currentImage--;
	if (currentImage < 0) {
		currentImage = slideshow_images.length - 1;
	}
	previousImage = currentImage - 1;
	if (previousImage < 0) {
		previousImage = slideshow_images.length - 1;
	}
}


/*
* fate out image
*/
function fadeOutImage (imageId, nextCommand, opacity) {

	slideshowIsActive = false;

	var image = document.getElementById(imageId);
	opacity = Math.round((opacity - 0.1) * 10) / 10;
	image.style.opacity = opacity;

	// image should be comppletely transparent now
	if (opacity === 0) {
		setTimeout(nextCommand, 10);
		return;
	}

	// otherwise carry on
	setTimeout(function() {fadeOutImage(imageId, nextCommand, opacity);}, 10);
}


/*
* refresh image preview with new image
*/
function updateImagePreview () {

	var activePreviewImage = document.getElementById('activePreviewImage');
	activePreviewImage.src = './image.php?id=' + slideshow_images[currentImage]
		+ "&width=740&height=740";

	document.getElementById("active_image").src = "./image.php?id="
		+ slideshow_images[currentImage] + "&width=450&height=299";
}


/*
* activate image preview
*/
function activateImagePreview (opacity) {

	var container = document.getElementById('imagePreviewContainer');
	var controls  = document.getElementById('imagePreviewControls');
	container.style.visibility = 'visible';
	controls.style.visibility  = 'visible';

	// time to update the image
	switch (opacity) {
		case 0:
			updateImagePreview();
			break;
		case 1:
			return;
	}

	opacity = Math.round((opacity + 0.1) * 10) / 10;
	var activePreviewImage = document.getElementById('activePreviewImage');
	activePreviewImage.style.opacity = opacity;

	setTimeout(function(){activateImagePreview(opacity);}, 10);
}


/*
* expand header
*/
function expandHeader () {

	var expanded_height = 780;
	var step = 30;
	slideshowIsActive = false;

	// hide page content
	var container = document.getElementById('container');
	container.style.display = 'none';

	// check if we haven't overdone it
	if (header_middle_height >= expanded_height) {
		setTimeout(function(){activateImagePreview(0);}, 10);
		return true;
	}

	// get element
	var header_middle = document.getElementById('header_middle');
	var image = document.getElementById('active_image');
	image.style.display = 'none';
	header_middle_height = Math.min(header_middle_height + step, expanded_height);

	// expand it
	header_middle.style.height = header_middle_height + 'px';

	// repeat
	setTimeout(expandHeader, 10);
}


/*
* fade in image
*/
function fadeInImage (imageId, opacity) {

	var image = document.getElementById(imageId);
	opacity = Math.round((opacity + 0.1) * 10) / 10;
	image.style.opacity = opacity;

	// image should be visible now
	if (opacity === 1) {
		slideshowIsActive = true;
		return;
	}

	// otherwise carry on
	setTimeout(function() {fadeInImage(imageId, opacity);}, 10);
}


/*
* collapse header
*/
function collapseHeader () {

	var collapsed_height = 239;
	var step = 30;
	slideshowIsActive = true;

	// check if we haven't overdone it
	if (header_middle_height <= collapsed_height) {
		fadeInImage('active_image', 0);
		return true;
	}

	// get element
	var header_middle = document.getElementById('header_middle');
	var image = document.getElementById('active_image');
	image.style.display = 'inline';
	header_middle_height = Math.max(header_middle_height - step, collapsed_height);

	// collapse it
	header_middle.style.height = header_middle_height + 'px';

	// repeat
	setTimeout(collapseHeader, 10);
}


/*
* preview next image
*/
function viewNextImage () {

	nextImage();
	updateImagePreview();
}


/*
* preview previous image
*/
function viewPreviousImage () {

	switchToPreviousImage();
	updateImagePreview();
}


/*
* hide image preview
*/
function closeImagePreview () {

	// hide controls
	var container = document.getElementById('imagePreviewContainer');
	var controls  = document.getElementById('imagePreviewControls');
	container.style.visibility = 'hidden';
	controls.style.visibility  = 'hidden';
	updateImagePreview();

	// display page content
	container = document.getElementById('container');
	container.style.display = 'block';

	collapseHeader();
}

/*
* update all links on the page
*/
function remove_borders_from_links () {
	var links = document.getElementsByTagName('a');
	for (var i = 0; i < links.length; i++) {
		links[i].onmousedown = function () {
			this.blur();
			return false;
		}
		links[i].onclick = function() {
			this.blur();
		}
	}
	var buttons = document.getElementsByTagName('button');
	for (var i = 0; i < buttons.length; i++) {
		buttons[i].onfocus = function () {
			this.blur();
			return false;
		}
	}
}


/*
* update page language
*/
function update_language (language) {

	if (window.XMLHttpRequest) {
		// code for IE7+, Firefox, Chrome, Opera, Safari
		xmlhttp=new XMLHttpRequest();
	} else {
		// code for IE6, IE5
		xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
	}
	var url = 'set_language.php?language=' + language;
	xmlhttp.open('GET', url, false);
	xmlhttp.send(null);
	window.location.reload();
}


/*
* random order for sorting
*/
function randomOrder () {

	return 0.5 - Math.random();
}


/*
* shrink active image
*/
function shrink_image (id, width, height, border_radius) {

	// get elements we need
	image = document.getElementById(id);
	container = document.getElementById('headerImageContainer');
	header = document.getElementById('zematHeader');

	// remove border radius
	header.style.MozBorderRadius = '0px';
	header.style.webkitBorderRadius = '0px';

	// display all images after first one shrank into its position
	zemat_images = new Array();
	for (row=0; row<9; row++) {
		for (col=0; col<16; col++) {
			zemat_images.push([row, col]);
		}
	}
	zemat_images.sort(randomOrder);
	setTimeout(pop_zemat_image, 30);
	return;
}


/*
* pop zemat image
*/
function pop_zemat_image () {

	if (zemat_images.length == 0) {
		image = document.getElementById('headerImage');
		image.style.visibility = 'hidden';
		reveal_right_image();
		return true;
	}
	var next_image = zemat_images.shift();
	var row = next_image[0];
	var col = next_image[1];
	image = document.getElementById('zematImage' + row + 'x' + col);
	image.style.visibility = 'visible';
	setTimeout(pop_zemat_image, 30);
}


/*
* reveal right image
*/
function reveal_right_image () {

	zemat_images = new Array();
	for (row=2; row<7; row++) {
		for (col=9; col<14; col++) {
			zemat_images.push([row, col]);
		}
	}
	zemat_images.sort(randomOrder);
	image = document.getElementById('rightZematImage');
	image.style.visibility = 'visible';
	hide_zemat_image();
}


/*
* hide one of header images
*/
function hide_zemat_image () {

	if (zemat_images.length == 0) {
		update_right_zemat_image();
		return true;
	}
	var next_image = zemat_images.shift();
	var row = next_image[0];
	var col = next_image[1];
	image = document.getElementById('zematImage' + row + 'x' + col);
	image.style.visibility = 'hidden';
	setTimeout(hide_zemat_image, 30);
}


zemat_image_index = [];

/*
* update zemat image
*/
function update_zemat_image (row, col, images) {

	if (images == '') {
		return true;
	}
	images = images.split(' ');
	if (images.length == 1) {
		return true;
	}
	if (zemat_image_index[row] === undefined) {
		zemat_image_index[row] = [];
	}
	if (zemat_image_index[row][col] === undefined) {
		index = 0;
	} else {
		index = zemat_image_index[row][col];
	}
	index++;
	if (index == images.length) {
		index = 0;
	}
	image = document.getElementById('zematImage' + row + 'x' + col);
	image.src = './image.php?id=' + images[index] + '&width=50&height=33&keep_aspect_ratio=false';
	zemat_image_index[row][col] = index;
}


/*
* update right zemat image
*/
function update_right_zemat_image () {

	// check if variable is set
	if (typeof(zematSlideshowIsActive) == "undefined") {
		return;
	}

	// check if slideshow is active
	if (!zematSlideshowIsActive) {
		setTimeout(function(){update_right_zemat_image();}, duration * 1000);
		return;
	}

	var right_image = document.getElementById('rightZematImage');
	var right_image_link = document.getElementById('rightZematImageLink');
	right_image.src = random_images[right_image_index];
	right_image.title = random_images[right_image_index];
	right_image_link.href = random_images[right_image_index];

	right_image_index++;
	if (right_image_index == random_images.length) {
		right_image_index = 0;
	}

	setTimeout(update_right_zemat_image, 5000);
}


/*
* sets preview images
*/
function previewZematImages (images) {

	slideshow_images = images.split(' ');
	currentImage = 0;
	previousImage = 0;
	updateImagePreview();
	expandZematHeader();
}


/*
* activate Zemat image preview
*/
function expandZematHeader () {

	zematSlideshowIsActive = false;
	var expanded_height = 820;
	var step = 30;

	// hide page content
	var container = document.getElementById('container');
	container.style.display = 'none';
	var image_container = document.getElementById('zematImageContainer');
	image_container.style.display = 'none';

	// check if we haven't overdone it
	if (header_height >= expanded_height) {
		setTimeout(function(){activateImagePreview(0);}, 10);
		return true;
	}

	// get element
	var header = document.getElementById('zematHeader');
	header_height = Math.min(header_height + step, expanded_height);

	// expand it
	header.style.height = header_height + 'px';

	// repeat
	setTimeout(expandZematHeader, 10);
}


/*
* hide ZemAt image preview
*/
function closeZematImagePreview () {

	// hide controls
	var container = document.getElementById('imagePreviewContainer');
	var controls  = document.getElementById('imagePreviewControls');
	container.style.visibility = 'hidden';
	controls.style.visibility  = 'hidden';
	updateImagePreview();

	collapseZematHeader();
}


/*
* collapse ZemAt header
*/
function collapseZematHeader () {

	var collapsed_height = 296;
	var step = 30;
	zematSlideshowIsActive = true;

	// check if we haven't overdone it
	if (header_height <= collapsed_height) {
		// display page content
		var container = document.getElementById('container');
		container.style.display = 'block';
		var image_container = document.getElementById('zematImageContainer');
		image_container.style.display = 'inline';
		return true;
	}

	// get element
	var header = document.getElementById('zematHeader');
	header_height = Math.max(header_height - step, collapsed_height);

	// collapse it
	header.style.height = header_height + 'px';

	// repeat
	setTimeout(collapseZematHeader, 10);
}

