var currentImage = "";
var currentSpeed = 0;
var currentPhase = 0;
var timerFrequancy = 25;	// Pretty tight, IE can't keep up most of the time.

var offset = new Array();
offset.tekijat = 80;
offset.yhteistyokumppanit = 80;
offset.tyonaytteita = 30;

var preloadImages = new Array();
preloadImages['leena_hulsi'] = {path: "tekijat"};
preloadImages['mirka_sillanpaa'] = {path: "tekijat"};
preloadImages['tuuli_holopainen'] = {path: "tekijat"};
preloadImages['anna_kotaviita'] = {path: "tekijat"};

preloadImages['esko_keski-oja'] = {path: "yhteistyokumppanit"};
preloadImages['roni_lehti'] = {path: "yhteistyokumppanit"};
preloadImages['sofis'] = {path: "yhteistyokumppanit"};

preloadImages['mercurius'] = {path: "tyonaytteita"};
preloadImages['valopilkku'] = {path: "tyonaytteita"};
preloadImages['koivunlehti'] = {path: "tyonaytteita"};
preloadImages['top-yritys'] = {path: "tyonaytteita"};
preloadImages['metsa_fi'] = {path: "tyonaytteita"};
preloadImages['asiakkaan_omat_rahat'] = {path: "tyonaytteita"};
preloadImages['ilmestys'] = {path: "tyonaytteita"};
preloadImages['viestivayla'] = {path: "tyonaytteita"};
preloadImages['ttl'] = {path: "tyonaytteita"};

for(i in preloadImages) {
	preloadImages[i].image = new Image();
	preloadImages[i].image.src = "images/" + preloadImages[i].path + "/"+i+".jpg";
}

/*
var slidePhase = 0;
var slideSpeed = 0;
function startSlide() {
	slidePhase = 0;
	slideSpeed = 5;
	window.setTimeout(slider,40);
}
function slider() {
	var running = true;
	slidePhase += slideSpeed;
	if(slidePhase >= 90) {
		slidePhase = 90;
		running = false;
	}
	var el = document.getElementById("slider");
	overlaySetOpacity(el, slidePhase);
	var pi = 3.1415926535897932384626433832795;
	var xp = Math.sin( (slidePhase * pi / 180)) * 280;
	el.style.backgroundPosition = (xp - 280) + "px 0px";
	if(running) window.setTimeout(slider,40);
}
*/

function changeImage(path, el) {
	if(currentImage == el.id) return false;
	if(currentImage) {
		var oldEl = document.getElementById(currentImage);
		oldEl.className = oldEl.className.replace(/LinkActive/,"Link");
	}
	currentImage = el.id;
	el.className = el.className.replace(/Link/,"LinkActive");

//	var o1 = document.getElementById("overlay_1");
//	var o2 = document.getElementById("overlay_2");
	// ensure overlays are visible
//	if(o1.style.visibility != "visible") o1.style.visibility = "visible";
//	if(o2.style.visibility != "visible") o2.style.visibility = "visible";

	currentSpeed = 25;
//	if(o1.filters) currentSpeed = 25;	// ie is sluggish
	currentPhase = 0;


	var baseEl = document.getElementById("overlayBase");
	var xpos = getOffsetLeft(baseEl) + offset[path];
//	if(preloadImages[el.id].offset) xpos = xpos + preloadImages[el.id].offset;
	var ypos = getOffsetTop(baseEl) + 10;

	// destination image goes to the one that's in back
	var backOverlay = overlayGetBack();
	overlaySetSrc(backOverlay,preloadImages[el.id].image.src);
	textSrc = document.getElementById("caption_"+el.id);
	overlaySetText(backOverlay, textSrc.innerHTML);
	overlaySetOpacity(backOverlay,0);

	var frontOverlay = overlayGetFront();
	frontOverlay.style.top = ypos;

	widthAdjust = 0;
	if(preloadImages[el.id].width) {
		widthAdjust = 430 - preloadImages[el.id].width;
	}
	backOverlay.style.left = xpos + widthAdjust;
	backOverlay.style.top = ypos;

	// ensure visibility
	if(backOverlay.style.visibility != "visible") backOverlay.style.visibility = "visible";

	// and then its swapped to front
	overlayToFront(backOverlay);

	window.setTimeout(overlayTimer, timerFrequancy);
	return false;
}

function overlaySetSrc(overlay, newSrc) {
	var overlayNum = overlay.id.substr( overlay.id.indexOf("_")+1 );
	var childs = overlay.childNodes;
	for(i=0; i<childs.length; i++) {
		if(childs.item(i).id == "overlayImage_"+overlayNum) {
			childs.item(i).src = newSrc;
		}
	}
}

function overlaySetText(overlay, newText) {
	var overlayNum = overlay.id.substr( overlay.id.indexOf("_")+1 );
	var childs = overlay.childNodes;
	for(i=0; i<childs.length; i++) {
		if(childs.item(i).id == "overlayText_"+overlayNum) {
			childs.item(i).innerHTML = newText;
		}
	}
}


function overlaySetOpacity(overlay, newOpacity) {
	if(overlay.filters) {
		overlay.filters.item('DXImageTransform.Microsoft.Alpha').opacity=newOpacity;
	} else {
		overlay.style.opacity = newOpacity / 100;
	}
}

function overlayGetOpacity(overlay) {
	if(overlay.filters) {
		return overlay.filters.item('DXImageTransform.Microsoft.Alpha').opacity;
	} else {
		return overlay.style.opacity * 100;
	}
}

function overlayGetBack() {
	var o1 = document.getElementById("overlay_1");
	var o2 = document.getElementById("overlay_2");
	var z1 = o1.style.zIndex;
	var z2 = o2.style.zIndex;
	if(z1<z2) {
		return o1;
	} else {
		return o2;
	}
}

function overlayGetFront() {
	var o1 = document.getElementById("overlay_1");
	var o2 = document.getElementById("overlay_2");
	var z1 = o1.style.zIndex;
	var z2 = o2.style.zIndex;
	if(z1<z2) {
		return o2;
	} else {
		return o1;
	}
}

function overlayToFront(overlay) {
	var o1 = document.getElementById("overlay_1");
	var o2 = document.getElementById("overlay_2");

	overlay.style.zIndex = 11;

	if(o1 == overlay) o2.style.zIndex = 10;
	if(o2 == overlay) o1.style.zIndex = 10;
}

function overlayClose() {
	if(currentImage) {
		var oldEl = document.getElementById(currentImage);
		oldEl.className = oldEl.className.replace(/LinkActive/,"Link");
		currentImage = "";
	}

	var leftCol = document.getElementById("leftColumn");
	overlaySetOpacity(leftCol,0);
	leftCol.style.visibility = "";

	currentPhase = 0;
	overlayFadeOut();
}

function overlayFadeOut() {
	running = true;
	currentPhase += currentSpeed;
	if(currentPhase >= 100) {
		currentPhase = 100;
		running = false;	// stop fading
		// hide both, so they wont get mouse events
		overlayHide(overlayGetFront());
		overlayHide(overlayGetBack());
	}

	// find out which overlay is in front and set its opacity
	overlaySetOpacity(overlayGetFront(), 100-currentPhase);

	var leftCol = document.getElementById("leftColumn");
	overlaySetOpacity(leftCol,currentPhase);

	if(running) {
		window.setTimeout(overlayFadeOut, timerFrequancy);
	}
}

function overlayHide(overlay) {
	overlay.style.visibility = "hidden";
}

function overlayTimer() {
	if(currentSpeed <= 0) return;

	var running = true;

	currentPhase += currentSpeed;
	if(currentPhase >= 100) {
		currentPhase = 100;
		running = false;	// same here
	}

	// find out which overlay is in front and set its opacity
	overlaySetOpacity(overlayGetFront(), currentPhase);
	if(overlayGetOpacity(overlayGetBack())) overlaySetOpacity(overlayGetBack(), 100 - currentPhase);

	var leftCol = document.getElementById("leftColumn");
	if(leftCol.style.visibility != "hidden") {
		overlaySetOpacity(leftCol, 100 - currentPhase);
		if(currentPhase >= 100) leftCol.style.visibility = "hidden";
	}

	if(running) {
		window.setTimeout(overlayTimer, timerFrequancy);
	} else {
		overlaySetOpacity(overlayGetBack(), 0);	// lets hide the back overlay
	}
}




// palauttaa elementin y-koordinaatin koko dokumentin ylälaitaan nähden.
function getOffsetTop(elm) {
	var mOffsetTop = elm.offsetTop;
	var mOffsetParent = elm.offsetParent;
	while(mOffsetParent){
		mOffsetTop += mOffsetParent.offsetTop;
		if(mOffsetParent.scrollTop > 0) {
			mOffsetTop -= mOffsetParent.scrollTop;
		}
		mOffsetParent = mOffsetParent.offsetParent;
	}
	mOffsetTop += document.body.scrollTop;
	return mOffsetTop;
}

// palauttaa elementin x-koordinaatin koko dokumentin vasempaan laitaan nähden.
function getOffsetLeft(elm) {
	var mOffsetLeft = elm.offsetLeft;
	var mOffsetParent = elm.offsetParent;
	while(mOffsetParent) {
		mOffsetLeft += mOffsetParent.offsetLeft;
		if(mOffsetParent.scrollLeft > 0) {
			mOffsetLeft -= mOffsetParent.scrollLeft;
		}
		mOffsetParent = mOffsetParent.offsetParent;
	}
	mOffsetLeft += document.body.scrollLeft;
	return mOffsetLeft;
}



