function revealAll() {
	imgs = document.getElementsByTagName('IMG');
	revealIndex(imgs, imgs.length-1, 200, .1);
}

var theDeets = null;
var theAge = 0;

function deets(overlayId) {
	elem = document.getElementById(overlayId);
	if (theDeets != null) 
		if (theDeets == elem) return;
	oldDeets = theDeets;
	theDeets = elem;
	theAge++;

	 startSeq = function() {
				// start slide sequence
				childs = elem.getElementsByTagName("DIV");
				for(i = 0; i < childs.length; i++)
					if ((slide = childs[i]).className == "slide") {
						moveTo(slide, 0);
						var thisAge = theAge;
						setTimeout(function() { slideLeft(slide, 0, thisAge) }, DELAY);
						break;
					}
			}
	// load any unloaded images below
	var seqSet = false;
	childs = elem.getElementsByTagName("IMG");
	for(i = 0; i < childs.length; i++) {
		if (blankImage(childs[i])) {
			if (!seqSet)
				childs[i].onload = startSeq;
			seqSet = true;
			loadImage(childs[i]);
		}
	}
	if (!seqSet) 
		startSeq();
//	pos = findPos(document.getElementById("ref-image"));
	pos = findPos(document.getElementById(overlayId + "-block"));
	elem.style.top = pos[1] - 60 + "px";
	elem.style.display = "block";
	if (oldDeets != null) oldDeets.style.display = "none";
}

function pressDeets(overlayId) {
	elem = document.getElementById(overlayId);
	if (theDeets != null) 
		if (theDeets == elem) return;
	oldDeets = theDeets;
	theDeets = elem;
	theAge++;

	 startSeq = function() {
				// start slide sequence
				childs = elem.getElementsByTagName("DIV");
				for(i = 0; i < childs.length; i++)
					if ((slide = childs[i]).className == "slide") {
						moveTo(slide, 0);
						var thisAge = theAge;
						setTimeout(function() { slideLeft(slide, 0, thisAge) }, DELAY);
						break;
					}
			}
	// load any unloaded images below
	var seqSet = false;
	childs = elem.getElementsByTagName("IMG");
	for(i = 0; i < childs.length; i++) {
		if (blankImage(childs[i])) {
			if (!seqSet)
				childs[i].onload = startSeq;
			seqSet = true;
			loadImage(childs[i]);
		}
	}
	if (!seqSet) 
		startSeq();
  	pos = findPos(document.getElementById("ref-image"));
	elem.style.top = pos[1] + 60 + "px";
	elem.style.display = "block";
	if (oldDeets != null) oldDeets.style.display = "none";
}

function omneDeets(overlayId) {
	elem = document.getElementById(overlayId);
	if (theDeets != null) 
		if (theDeets == elem) return;
	oldDeets = theDeets;
	theDeets = elem;
	theAge++;

	 startSeq = function() {
				// start slide sequence
				childs = elem.getElementsByTagName("DIV");
				for(i = 0; i < childs.length; i++)
					if ((slide = childs[i]).className == "slide") {
						moveTo(slide, 0);
						var thisAge = theAge;
						setTimeout(function() { slideLeft(slide, 0, thisAge) }, DELAY);
						break;
					}
			}
	// load any unloaded images below
	var seqSet = false;
	childs = elem.getElementsByTagName("IMG");
	for(i = 0; i < childs.length; i++) {
		if (blankImage(childs[i])) {
			if (!seqSet)
				childs[i].onload = startSeq;
			seqSet = true;
			loadImage(childs[i]);
		}
	}
	if (!seqSet) 
		startSeq();
  	pos = findPos(document.getElementById("ref-image"));
	elem.style.top = pos[1] + 550 + "px";
	elem.style.display = "block";
	if (oldDeets != null) oldDeets.style.display = "none";
}

function xdeets() {
	if (theDeets != null)
		theDeets.style.display = "none";
	theDeets = null;
	theAge++;
}
function moveTo(elem, pos) {
	elem.style.left = pos + "px";
}

function closeAnnounce() {
	announcement = document.getElementById("announce");
	announcement.style.display = "none";
}

WIDTH = 530;
PAUSE = 5000;
DELAY = 2500;
MAX_DIST = 30;
FRAMERT = 50;

function distCalc(delta) {
	return Math.min(Math.abs(delta), 5 + Math.ceil(MAX_DIST * Math.sin(Math.abs(delta) / WIDTH * Math.PI)));
}

function slideLeft(elem, pos, age) {
	if (age != theAge) return;
	moveTo(elem, (pos -= distCalc(WIDTH + pos)))
	if (pos > -WIDTH)
		setTimeout(function() { slideLeft(elem, pos, age) },  FRAMERT);
	else
		setTimeout(function() { slideRight(elem, pos, age) }, PAUSE);
}

function slideRight(elem, pos, age) { 
	if (age != theAge) return;
	moveTo(elem, (pos += distCalc(pos)));
	if (pos < 0)
		setTimeout(function() { slideRight(elem, pos, age) }, FRAMERT);
	else
		setTimeout(function() { slideLeft(elem, pos, age) }, PAUSE);
}

function loadImage(img) { img.src = img.getAttribute("qrc") }
function blankImage(img) { return img.nodeName == "IMG" && img.src == "" }

function revealIndex(imgs, idx, slp, step) {
	if (idx < 0) 
		return;
	if (imgs[idx].className != 'cascade' && imgs[idx].className != 'hard-cascade')
		return revealIndex(imgs, idx-1, slp, step); 
	
	imgs[idx].onload = function() {
		imgs[idx].style.display = 'inline';	
	
		if (imgs[idx].className == 'cascade') 
			reveal(imgs[idx], .1, step);
	
		setTimeout(function() { revealIndex(imgs, idx-1, Math.floor(slp * .95), step*1.1 ) }, slp);
	}
	if (blankImage(imgs[idx]))
		loadImage(imgs[idx]);
	else
		imgs[idx].onload();
}


function reveal(elem, op, step) {
	elem.style.opacity = Math.min(op, .9999);
	if (op < 1)
		setTimeout(function() { reveal(elem, op + step, step) }, 60);
}
// from http://www.quirksmode.org/js/findpos.html
function findPos(obj) {
	var curleft = curtop = 0;
	if (obj.offsetParent) {
		curleft = obj.offsetLeft
		curtop = obj.offsetTop
		while (obj = obj.offsetParent) {
			curleft += obj.offsetLeft
			curtop += obj.offsetTop
		}
	}
	return [curleft,curtop];
}

function rollon(elem) {
	if (!elem.src.match(/_dark/))
		elem.src = elem.src.replace(/^(.+)\.png$/, "$1_dark.png");
}
function rolloff(elem) {
	elem.src = elem.src.replace(/_dark/, "");
}

function omneSwap(newImage) {
	var largeImage = document.getElementById('omneLargeImage');
	largeImage.src = newImage;
}

function popupWindow(url) {
  window.open(url,'popupWindow','toolbar=no,location=no,directories=no,status=no,menubar=no,scrollbars=no,resizable=yes,copyhistory=no,width=600,height=540,screenX=150,screenY=150,top=150,left=150')
}