var onloadfunctions = new Array();
var topImageRotationPaused = false;

window.onload = function() {
	for(var i=0;i<onloadfunctions.length;i++) {
		onloadfunctions[i]();
	}
}
function readyFrontPageTop() {
	placeTopImageRotationsDivs();
	startTopImageTimer();
	
	for(var i=0;i<topImages.length;i++) {
		pageimage.onmouseover = function() {
			topImageRotationPaused = true;
		}
		pageimage.onmouseout = function() {
			topImageRotationPaused = false;
		}
		var teaser = document.getElementById('frontteaser_' + i);
		
		teaser.onmouseover = function() {
			topImageRotationPaused = true;
		}
		teaser.onmouseout = function() {
			topImageRotationPaused = false;
		}
		
		if (i != currentNumber) {
			teaser.style.display = 'none';
		}
	}
}
function windowIsResized() {
	
}
window.onresize = function() {
	windowIsResized();
}
/***********************************************************************************************
* Utility functions
***********************************************************************************************/
function getOffsets(e) {
	var o = {
		height: e.offsetHeight,
		width: e.offsetWidth
	};
	
	var x = e.offsetLeft;
	var y = e.offsetTop;
	var p = e.offsetParent;
	
	while(p && (p.nodeType != 9)) {
		x += p.offsetLeft;
		y += p.offsetTop;
		p = p.offsetParent;
	}
	o.left = x;
	o.top = y;
	return o;
}
/**
*
*/
function createActionAnimation(step,maxsteps,animationElement,oldWidth,oldHeight,newWidth,newHeight,completeFunction) {
	var currentWidth = oldWidth - (((oldWidth - newWidth) / maxsteps) * step);
	var currentHeight = oldHeight - (((oldHeight - newHeight) / maxsteps) * step);
	
	// var currentPositionX = oldX - (((oldX - newX) / maxsteps) * step);
	// var currentPositionY = oldY - (((oldY - newY) / maxsteps) * step);
	
	animationElement.style.width =  currentWidth + 'px';
	animationElement.style.height =  currentHeight + 'px';
	
	// animationElement.style.left = currentPositionX + 'px';
	// animationElement.style.top = currentPositionY + 'px';
	
	if (step < maxsteps) {
		window.setTimeout(function() { createActionAnimation(step + 1,maxsteps,animationElement,oldWidth,oldHeight,newWidth,newHeight,completeFunction); },15);
	}
	else {
		if (completeFunction) {
			completeFunction();
		}
	}
}
/***********************************************************************************************
* Mailform
***********************************************************************************************/
function showBubble(element,text) {
	var offsets = getOffsets(element);
	var bubble = document.getElementById('mailformbubble');
	bubble.innerHTML = text;
	bubble.style.top  = (offsets.top - 6) + 'px';
	bubble.style.left  = (offsets.left + offsets.width) + 'px';
	bubble.style.display = 'block';
}
function hideBubble() {
	var bubble = document.getElementById('mailformbubble');
	bubble.style.display = 'none';
}
/***********************************************************************************************
* References
***********************************************************************************************/
function changeReference(over,src,imageElement) {
	if (over) {
		imageElement.src = '/files/referencer/' + src + '.gif';
		imageElement.style.borderColor = '#aeaeae';
		imageElement.style.borderTopColor = '#aeaeae';
		imageElement.style.borderLeftColor = '#aeaeae';
	}
	else {
		imageElement.src = '/files/referencer/' + src + '_desaturated.gif';
		imageElement.style.borderColor = '#dedede';
	}
}
function changeLargeReference(over,src,imageElement) {
	if (over) {
		imageElement.src = '/files/referencer/large/' + src + '.jpg';
		imageElement.style.borderColor = '#aeaeae';
		imageElement.style.borderTopColor = '#aeaeae';
		imageElement.style.borderLeftColor = '#aeaeae';
	}
	else {
		imageElement.src = '/files/referencer/large/' + src + '_desaturated.jpg';
		imageElement.style.borderColor = '#dedede';
	}
}
/***********************************************************************************************
* Front page top image rotation
***********************************************************************************************/
var pageimage = false;
var pageimagemirror = false;
var toprightbox = false;
var toprightboxmirror = false;

var topImages = new Array();
var topMirrorImages = new Array();
var topLinks = new Array();

var currentTopImageTimerID = false;

var oldNumber = false;
var currentNumber = false;

var fadein = false;

function startTopImageTimer() {
	currentTopImageTimerID = setTimeout(function() {
		changeTopToNext();
	},8000);
}
function resetTopImageTimer() {
	clearTimeout(currentTopImageTimerID);
	startTopImageTimer();
}
function gotocurrentbanner() {
	var clickedLink = topLinks[currentNumber];
	document.location.href = clickedLink;
}
function changeTopToNext() {
	if (!topImageRotationPaused) {
		nextNumber = currentNumber - 1;
		if (nextNumber < 0) {
			nextNumber = topImages.length - 1;
		}
		changeTop(nextNumber);
	}
	else {
		startTopImageTimer();
	}
}
function changeTop(number) {
	var image = topImages[number];
	var mirrorImage = topMirrorImages[number];
	var link = topLinks[number];

	var selectedTopImageSelector = document.getElementById('topChanger_' + currentNumber);
	selectedTopImageSelector.className = 'topimageselect';
	
	oldNumber = currentNumber;
	currentNumber = number;

	fadeTopImageOut(100,image,mirrorImage);
	
	selectedTopImageSelector = document.getElementById('topChanger_' + currentNumber);
	selectedTopImageSelector.className = 'topimageselectSelected';
	
	resetTopImageTimer();
}
function fadeTopImageIn(step,image,mirrorImage) {
	var newStep = step + 5;
	
	if (document.all) {
		/*
		pageimage.filters.item('DXImageTransform.Microsoft.Alpha').opacity = newStep;
		pageimagemirror.filters.item('DXImageTransform.Microsoft.Alpha').opacity = newStep;
		toprightbox.filters.item('DXImageTransform.Microsoft.Alpha').opacity = newStep;
		toprightboxmirror.filters.item('DXImageTransform.Microsoft.Alpha').opacity = newStep;
		*/
		
		pageimage.style.filter = 'progid:DXImageTransform.Microsoft.Fade(duration=1)';
		pageimagemirror.style.filter = 'progid:DXImageTransform.Microsoft.Fade(duration=1)';
		toprightbox.style.filter = 'progid:DXImageTransform.Microsoft.Fade(duration=1)';
		// toprightboxmirror.style.filter = 'progid:DXImageTransform.Microsoft.Fade(duration=1)';
		
		pageimage.filters[0].apply();
		pageimagemirror.filters[0].apply();
		toprightbox.filters[0].apply();
		// toprightboxmirror.filters[0].apply();
		
		pageimage.src = image;
		
		pageimage.filters[0].play();
		pageimagemirror.filters[0].play();
		toprightbox.filters[0].play();
		// toprightboxmirror.filters[0].play();
		
		/*
		pageimage.style.filter = "alpha(opacity=" + newStep + ")"; 
		pageimagemirror.style.filter = "alpha(opacity=" + newStep + ")"; 
		toprightbox.style.filter = "alpha(opacity=" + newStep + ")"; 
		toprightboxmirror.style.filter = "alpha(opacity=" + newStep + ")"; 
		*/
	}
	else if (pageimage.style.MozOpacity) {
		pageimage.style.MozOpacity = newStep / 100;
		pageimagemirror.style.MozOpacity = newStep / 100;
		toprightbox.style.MozOpacity = newStep / 100;
		toprightboxmirror.style.MozOpacity = newStep / 100;
	}
	else {
		pageimage.style.opacity = newStep / 100;
		pageimagemirror.style.opacity = newStep / 100;
		toprightbox.style.opacity = newStep / 100;
		toprightboxmirror.style.opacity = newStep / 100;
	}

	if (newStep < 100 && !document.all) {
		setTimeout(function() {
			fadeTopImageIn(newStep,image,mirrorImage);
		},30);
	}
	else {
		// pageimage.style.filter = '';
		fadein = false;
	}
}
function fadeTopImageOut(step,image,mirrorImage) {
	var newStep = step - 5;

	if (step == 100) {
		// filter: progid:DXImageTransform.Microsoft.Alpha(opacity=100);-moz-opacity: 1.0;opacity:1;
	}
	
	if (document.all) {
		/*
		pageimage.filters.item('DXImageTransform.Microsoft.Alpha').opacity = newStep;
		pageimagemirror.filters.item('DXImageTransform.Microsoft.Alpha').opacity = newStep;
		toprightbox.filters.item('DXImageTransform.Microsoft.Alpha').opacity = newStep;
		toprightboxmirror.filters.item('DXImageTransform.Microsoft.Alpha').opacity = newStep;
		*/
		/*
		pageimage.style.filter = "alpha(opacity=" + newStep + ")"; 
		pageimagemirror.style.filter = "alpha(opacity=" + newStep + ")"; 
		toprightbox.style.filter = "alpha(opacity=" + newStep + ")"; 
		toprightboxmirror.style.filter = "alpha(opacity=" + newStep + ")"; 
		*/
		// pageimage.style.filter = 'progid:DXImageTransform.Microsoft.Iris(irisstyle="DIAMOND",duration=1)';
		// pageimage.style.filter = 'progid:DXImageTransform.Microsoft.Spiral(duration=2,GridSizeX=25, GridSizeY=25)';
		pageimage.style.filter = 'progid:DXImageTransform.Microsoft.gradientWipe(duration=1)';
		pageimagemirror.style.filter = 'progid:DXImageTransform.Microsoft.gradientWipe(duration=1)';
		toprightbox.style.filter = 'progid:DXImageTransform.Microsoft.gradientWipe(duration=1)';
		toprightboxmirror.style.filter = 'progid:DXImageTransform.Microsoft.gradientWipe(duration=1)';
		
		pageimage.filters[0].apply();
		pageimagemirror.filters[0].apply();
		toprightbox.filters[0].apply();
		toprightboxmirror.filters[0].apply();
		
		pageimage.src = image;
		pageimagemirror.src = mirrorImage;
		
		var oldTeaser = document.getElementById('frontteaser_' + oldNumber);
		var currentTeaser = document.getElementById('frontteaser_' + currentNumber);
		
		if (oldTeaser) {
			oldTeaser.style.display = 'none';
		}
		if (currentTeaser) {
			currentTeaser.style.display = 'block';
			currentTeaser.style.position = 'static';
		}
		
		pageimage.filters[0].play();
		pageimagemirror.filters[0].play();
		toprightbox.filters[0].play();
		toprightboxmirror.filters[0].play();
	}
	else if (pageimage.style.MozOpacity) {
		pageimage.style.MozOpacity = newStep / 100;
		pageimagemirror.style.MozOpacity = newStep / 100;
		toprightbox.style.MozOpacity = newStep / 100;
		toprightboxmirror.style.MozOpacity = newStep / 100;
	}
	else {
		pageimage.style.opacity = newStep / 100;	
		pageimagemirror.style.opacity = newStep / 100;
		toprightbox.style.opacity = newStep / 100;
		toprightboxmirror.style.opacity = newStep / 100;
	}

	if (newStep > 0 && !document.all) {
		setTimeout(function() {
			fadeTopImageOut(newStep,image,mirrorImage);
		},30);
	}
	else {
		if (!document.all) {
			pageimage.src = image;
			pageimagemirror.src = mirrorImage;
			
			
			var oldTeaser = document.getElementById('frontteaser_' + oldNumber);
			var currentTeaser = document.getElementById('frontteaser_' + currentNumber);
			
			if (oldTeaser) {
				oldTeaser.style.display = 'none';
			}
			if (currentTeaser) {
				currentTeaser.style.display = 'block';
				currentTeaser.style.position = 'static';
			}
			
			fadeTopImageIn(0,image,mirrorImage);
		}
	}
}

var selectedTopImageSelector = false;

function placeTopImageRotationsDivs() {
	if (!pageimage) {
		pageimage = document.getElementById('pageimage');
		pageimagemirror = document.getElementById('pageimagemirror');
		toprightbox = document.getElementById('toprightbox');
		toprightboxmirror = document.getElementById('toprightboxmirror');
	}
	var divWidth = 17;
	
	var topImageOffsets = getOffsets(pageimage);
	
	for(var i=0;i<topImages.length;i++) {
		var div = document.createElement('A');
		if (i == currentNumber) {
			div.className = 'topimageselectSelected';
			selectedTopImageSelector = div;
		}
		else {
			div.className = 'topimageselect';
		}
		div.appendChild(document.createTextNode(' '));
		div.id = 'topChanger_' + i;
		
		div.style.top = (topImageOffsets.top + 10) + 'px';
		div.style.left = (topImageOffsets.left + topImageOffsets.width - divWidth - (i * (divWidth + 5)) - 10) + 'px';
		
		div.setAttribute('number',i);
		
		div.onclick = function() {
			changeTop(this.getAttribute('number'));
		};
		
		document.body.appendChild(div);
	}
}
/***********************************************************************************************
* Search
***********************************************************************************************/

var searchFieldFocused = false;
var searchSubmitIsMouseOvered = false;

function setSearchFieldState() {
	var searchBackground = document.getElementById('searchFieldSurrounder');
	var searchSubmit = document.getElementById('searchsubmit');
	
	var searchBackgroundString = '/files/design/images/searchfield_background' + (searchFieldFocused ? '_focused' : '') + '.gif';
	var searchSubmitBackgroundString = '/files/design/images/searchfield_button' + (searchSubmitIsMouseOvered ? '_over' : '') + (searchFieldFocused ? '_focused' : '') + '.gif';

	searchBackground.style.backgroundImage = 'url("' + searchBackgroundString + '")';
	searchSubmit.style.backgroundImage = 'url("' + searchSubmitBackgroundString + '")';
}