// Image w/ description tooltip- By Dynamic Web Coding (www.dyn-web.com)
// Copyright 2002 by Sharon Paine
// Visit http://www.dynamicdrive.com for this script

var dom = (document.getElementById) ? true : false;
var ns5 = ((navigator.userAgent.indexOf("Gecko")>-1) && dom) ? true: false;
var ie5 = ((navigator.userAgent.indexOf("MSIE")>-1) && dom) ? true : false;
var ns4 = (document.layers && !dom) ? true : false;
var ie4 = (document.all && !dom) ? true : false;
var nodyn = (!ns5 && !ns4 && !ie4 && !ie5) ? true : false;

// resize fix for ns4
var origWidth, origHeight;
if (ns4) {
	origWidth = window.innerWidth; origHeight = window.innerHeight;
	window.onresize = function() { if (window.innerWidth != origWidth || window.innerHeight != origHeight) history.go(0); }
}

// avoid error of passing event object in older browsers
if (nodyn) { event = "nope" }

///////////////////////  CUSTOMIZE HERE   ////////////////////
// settings for tooltip
// Do you want tip to move when mouse moves over link?
var tipFollowMouse= true;
// Be sure to set tipWidth wide enough for widest image
var tipWidth= 200;
var offX= 20;	// how far from mouse to show tip
var offY= 12;
var tipFontFamily= "Verdana, arial, helvetica, sans-serif";
var tipFontSize= "8pt";
// set default text color and background color for tooltip here
// individual tooltips can have their own (set in messages arrays)
// but don't have to
var tipFontColor= "#0000FF";
var tipBgColor= "#DDECFF";
var tipBorderColor= "#0000FF";
var tipBorderWidth= 3;
var tipBorderStyle= "groove";
var tipPadding= 4;

// tooltip content goes here (image, description, optional bgColor, optional textcolor)
var messages = new Array();
// multi-dimensional arrays containing: 
// image and text for tooltip
// optional: bgColor and color to be sent to tooltip
messages[0] = new Array('../images/tt_sc_confluence.png',' The goal of the project is to visit each of the latitude and longitude integer degree intersections in the world, and to take pictures at each location. The pictures, and stories about the visits, will then be posted here.',"#DDECFF");
messages[1] = new Array('../images/tt_sc_turning.png','Britsh Library Online Gallery. On Turning the Pages you can actually leaf through books and magnify details. This comes closest to actually paging through old material. Terrific !',"#DDECFF");
messages[2] = new Array('../images/tt_sc_beatrijs.png','The legend of the nun Beatrijs is considered one of the greatest masterpieces of Middle Dutch literature. The manuscript in the Koninklijke Bibliotheek, the only one in which this legend has come down to us, is a later copy from about 1374. This website allows you to study it in great detail.','#DDECFF');
messages[3] = new Array('../images/tt_sc_storynest.png','This is a most peculiar Chinese site with a wonderful collection of audiovisual and sometimes interactive Shockwave programs.','#DDECFF');
messages[4] = new Array('../images/tt_sc_bridge.png','A site with a big collection of files for several different Bridge Building games. Your task is to build a bridge which has to support a passing train and stay undamaged.','#DDECFF');
messages[5] = new Array('../images/tt_sc_datamath.png','The Datamath Calculator Museum reflects mainly on products from the US based company Texas Instruments. To round off the exhibition you will find products manufactured by Texas Instruments and sold under different badges, too. Just the same things happens with products developed by other companies and sold by TI. Another part of the museum gives an overview of important products in the calculator history influenced by TI.','#DDECFF');
messages[6] = new Array('../images/tt_sc_nibelungen.png','Das Nibelungenlied is a German medieval (12th century) poem. It can be viewed in digitized form on this website','#DDECFF');
messages[7] = new Array('../images/tt_sc_einstein.png','The Einstein Archives Online Website provides the first online access to Albert Einstein’s scientific and non-scientific manuscripts held by the Albert Einstein Archives at the Hebrew University of Jerusalem','#DDECFF');
messages[8] = new Array('../images/tt_sc_nasa.png','A catalog of NASA images and animations of our home planet','#DDECFF');
messages[9] = new Array('../images/tt_sc_schoyen.png','The Schøyen Collection comprises most types of manuscripts from the whole world spanning over 5000 years. It is the largest private manuscript collection formed in the 20th century.','#FFFFFF');
messages[10] = new Array('../images/tt_sc_thebe.png','the Theban Mapping Project (TMP, now based at the American University in Cairo) has been working to prepare a comprehensive archaeological database of Thebes. With its thousands of tombs and temples, Thebes is one of the worlds most important archaeological zones.','#FFFFFF');
messages[11] = new Array('../images/tt_sc_alcyone.png',' A number of very nice looking tools for amateur astronomers','#FFFFFF');
messages[12] = new Array('../images/tt_sc_howstuff.png',' HowStuffWorks is an online publishing company widely recognized as a leading source for clear, unbiased, reliable explanations of how everything actually works. With thousands of articles, content features and illustrations populating ten different content channels.','#FFFFFF');
messages[13] = new Array('../images/tt_sc_sodarace.png','Sodarace is the online olympics pitting human creativity against machine learning in a competition to design robots that race over 2D terrains.','#FFFFFF');
messages[14] = new Array('../images/tt_sc_opte.png','This project was created to make a visual representation of the internet, a metaphysical universe. The data represented and collected here serves a multitude of purposes: Modeling the Internet, analyzing wasted IP space, IP space distribution, detecting the result of natural disasters, weather, war, and esthetics/art.','#FFFFFF');
messages[15] = new Array('../images/tt_sc_oscilloscope.png','Virtual Shockwave oscilloscope. The oscilloscope simulation shown on this website is based on the HAMEG HM203-6 20 MHz oscilloscope of Hameg GmbH in Frankfurt/Main, GermanyCouldnt Categorize','#FFFFFF');

////////////////////  END OF CUSTOMIZATION AREA  ///////////////////

// preload images that are to appear in tooltip
// from arrays above
if (document.images) {
	var theImgs = new Array();
	for (var i=0; i<messages.length; i++) {
  	theImgs[i] = new Image();
		theImgs[i].src = messages[i][0];
  }
}

// to layout image and text, 2-row table, image centered in top cell
// these go in var tip in doTooltip function
// startStr goes before image, midStr goes between image and text
var startStr = '<table width="' + tipWidth + '"><tr><td align="center" width="100%"><img src="';
var midStr = '" border="1"></td></tr><tr><td valign="top">';
var endStr = '</td></tr></table>';

////////////////////////////////////////////////////////////
//  initTip	- initialization for tooltip.
//		Global variables for tooltip. 
//		Set styles for all but ns4. 
//		Set up mousemove capture if tipFollowMouse set true.
////////////////////////////////////////////////////////////
var tooltip, tipcss;
function initTip() {
	if (nodyn) return;
	tooltip = (ns4)? document.tipDiv.document: (ie4)? document.all['tipDiv']: (ie5||ns5)? document.getElementById('tipDiv'): null;
	tipcss = (ns4)? document.tipDiv: tooltip.style;
	if (ie4||ie5||ns5) {	// ns4 would lose all this on rewrites
		tipcss.width = tipWidth+"px";
		tipcss.fontFamily = tipFontFamily;
		tipcss.fontSize = tipFontSize;
		tipcss.color = tipFontColor;
		tipcss.backgroundColor = tipBgColor;
		tipcss.borderColor = tipBorderColor;
		tipcss.borderWidth = tipBorderWidth+"px";
		tipcss.padding = tipPadding+"px";
		tipcss.borderStyle = tipBorderStyle;
	}
	if (tooltip&&tipFollowMouse) {
		if (ns4) document.captureEvents(Event.MOUSEMOVE);
		document.onmousemove = trackMouse;
	}
}

window.onload = initTip;

/////////////////////////////////////////////////
//  doTooltip function
//			Assembles content for tooltip and writes 
//			it to tipDiv
/////////////////////////////////////////////////
var t1,t2;	// for setTimeouts
var tipOn = false;	// check if over tooltip link
function doTooltip(evt,num) {
	if (!tooltip) return;
	if (t1) clearTimeout(t1);	if (t2) clearTimeout(t2);
	tipOn = true;
	// set colors if included in messages array
	if (messages[num][2])	var curBgColor = messages[num][2];
	else curBgColor = tipBgColor;
	if (messages[num][3])	var curFontColor = messages[num][3];
	else curFontColor = tipFontColor;
	if (ns4) {
		var tip = '<table bgcolor="' + tipBorderColor + '" width="' + tipWidth + '" cellspacing="0" cellpadding="' + tipBorderWidth + '" border="0"><tr><td><table bgcolor="' + curBgColor + '" width="100%" cellspacing="0" cellpadding="' + tipPadding + '" border="0"><tr><td>'+ startStr + messages[num][0] + midStr + '<span style="font-family:' + tipFontFamily + '; font-size:' + tipFontSize + '; color:' + curFontColor + ';">' + messages[num][1] + '</span>' + endStr + '</td></tr></table></td></tr></table>';
		tooltip.write(tip);
		tooltip.close();
	} else if (ie4||ie5||ns5) {
		var tip = startStr + messages[num][0] + midStr + '<span style="font-family:' + tipFontFamily + '; font-size:' + tipFontSize + '; color:' + curFontColor + ';">' + messages[num][1] + '</span>' + endStr;
		tipcss.backgroundColor = curBgColor;
	 	tooltip.innerHTML = tip;
	}
	if (!tipFollowMouse) positionTip(evt);
	else t1=setTimeout("tipcss.visibility='visible'",100);
}

var mouseX, mouseY;
function trackMouse(evt) {
	mouseX = (ns4||ns5)? evt.pageX: window.event.clientX + document.body.scrollLeft;
	mouseY = (ns4||ns5)? evt.pageY: window.event.clientY + document.body.scrollTop;
	if (tipOn) positionTip(evt);
}

/////////////////////////////////////////////////////////////
//  positionTip function
//		If tipFollowMouse set false, so trackMouse function
//		not being used, get position of mouseover event.
//		Calculations use mouseover event position, 
//		offset amounts and tooltip width to position
//		tooltip within window.
/////////////////////////////////////////////////////////////
function positionTip(evt) {
	if (!tipFollowMouse) {
		mouseX = (ns4||ns5)? evt.pageX: window.event.clientX + document.body.scrollLeft;
		mouseY = (ns4||ns5)? evt.pageY: window.event.clientY + document.body.scrollTop;
	}
	// tooltip width and height
	var tpWd = (ns4)? tooltip.width: (ie4||ie5)? tooltip.clientWidth: tooltip.offsetWidth;
	var tpHt = (ns4)? tooltip.height: (ie4||ie5)? tooltip.clientHeight: tooltip.offsetHeight;
	// document area in view (subtract scrollbar width for ns)
//	var winWd = (ns4||ns5)? window.innerWidth-20+window.pageXOffset: document.body.clientWidth+document.body.scrollLeft;
//	var winHt = (ns4||ns5)? window.innerHeight-20+window.pageYOffset: document.body.clientHeight+document.body.scrollTop;
//      ----------------------------------------------
//      Determine windowwidth/height
//      ----------------------------------------------
        if( typeof( window.innerWidth ) == 'number' )
        {
        // Non-IE
        winWd = window.innerWidth;
        winHt = window.innerHeight;
        } else if( document.documentElement && ( document.documentElement.clientWidth || document.documentElement.clientHeight ) ) {
        // IE 6&#43 in 'standards compliant mode'
        winWd = document.documentElement.clientWidth;
        winHt = document.documentElement.clientHeight;
        } else if( document.body && ( document.body.clientWidth || document.body.clientHeight ) ) {
        // IE 4 compatible
        WinWd = document.body.clientWidth;
        winHt = document.body.clientHeight;
        }
//      ----------------------------------------------
	// check mouse position against tip and window dimensions
	// and position the tooltip
	if ((mouseX+offX+tpWd)>winWd)
		tipcss.left = (ns4)? mouseX-(tpWd+offX): mouseX-(tpWd+offX)+"px";
	else tipcss.left = (ns4)? mouseX+offX: mouseX+offX+"px";
	if ((mouseY+offY+tpHt)>winHt)
		tipcss.top = (ns4)? winHt-(tpHt+offY): winHt-(tpHt+offY)+"px";
	else tipcss.top = (ns4)? mouseY+offY: mouseY+offY+"px";
	if (!tipFollowMouse) t1=setTimeout("tipcss.visibility='visible'",100);
}

function hideTip() {
	if (!tooltip) return;
	t2=setTimeout("tipcss.visibility='hidden'",100);
	tipOn = false;
}
