// 
// prng... is there a better javascript way of doing this?
//
rnd.today = new Date ();
rnd.seed = rnd.today.getTime ();
function rnd ()
{
	rnd.seed = (rnd.seed * 9301 + 49297) % 233280;
	return rnd.seed / (233280.0);
}
function rand (number)
{
	return Math.ceil (rnd() * number);
}


function onBodyLoad()
{
	makeImages();
	userInformation();
}



var leftCircle;
var rightCircle;
var closedEye;
var closedEye;
var closedEye;
var straightEye;
var downleftEye;
var leftEye;
var imageObjectsConstructed = false;

function constructImageObjects ()
{
	if (imageObjectsConstructed) return;
	imageObjectsConstructed = true;

	leftCircle = new Image();
	rightCircle = new Image();
	closedEye = new Image();
	closedEye = new Image();
	closedEye = new Image();
	straightEye = new Image();
	downleftEye = new Image();
	leftEye = new Image();
}

function makeImages () 
{
	constructImageObjects();

	// leftCircle.src = '/images/june-lefteye-7.gif';
	rightCircle.src = '/images/june-righteye-7.png';
	closedEye.src = '/images/eyeball-closed-3.png';
	straightEye.src = '/images/eyeball-straight-3.png';
	downleftEye.src = '/images/eyeball-downleft-3.png';
	leftEye.src = '/images/eyeball-left-3.png';
}


function getDownleftEye ()
{
	return downleftEye.src;
}


var blinkingStarted = false;
function startBlinking ()
{
	if (! blinkingStarted)
	{
		setTimeout ("checkBlink()", 200);
		blinkingStarted = true;
	}
}
function checkBlink ()
{
	// once every 4 seconds or so...
	if (rand (20) == 3) blink();
	setTimeout ("checkBlink()", 200);
}

var oldImage;
function blink ()
{
	constructImageObjects();

	// save the old image
	oldImage = new Image;
	oldImage.src = document.getElementById('leftEyeball').src;	
	
	// make it blink
	document.getElementById('leftEyeball').src = closedEye.src;

	// and check back in a few milliseconds here
	setTimeout ("unblink()", 40 + rand(40));
}
function unblink ()
{
	constructImageObjects();
	document.getElementById('leftEyeball').src = oldImage.src;
}



function mouseOverLeftEye ()
{
	constructImageObjects();
	startBlinking();
	document.getElementById('leftEyeball').src = straightEye.src;
}
function mouseOutLeftEye()
{
	constructImageObjects();
	document.getElementById('leftEyeball').src = downleftEye.src;
}

function mouseOverRightEye ()
{
	constructImageObjects();
	startBlinking();
	document.getElementById('leftEyeball').src = straightEye.src;
	document.getElementById('leftEyeball').src = leftEye.src;
}
function mouseOutRightEye() 
{
	constructImageObjects();
	document.getElementById('leftEyeball').src = straightEye.src;
}


// var linkOffset = 'pictures/';	// changed on 11-22-2007
var linkOffset = '';
var linkArray = new Array();
var linkByYear = new Array();
function link (type, date, link, desc) 
{
	var link = new TextLink(date, desc, link, type);
	linkArray[linkArray.length] = link;

	linkByYear[link.year] = link;	// is this really necessary?

	// do this now
	constructImageObjects();
	startBlinking();
}


function writeThumbs ()
{
}


function writeColumn (theYear)
{
	var temp, url, highlight;


	for (i = 0; i < linkArray.length; i++) 
	{
		temp = linkArray[i];
		highlight = '';

		// randomly highlight one of the items in white
		if (rand (40) == 1) 
		{
			highlight = 'style="background-color:white;"';
		}


		if (temp.year == theYear)
		{
			var thisId = 'date' + i;

			// if there is no 'http:' here, then just
			// use the regular picture directory url
			if (temp.link.indexOf('http') == -1)
			{
				url = linkOffset + temp.link;
			}
			// otherwise use that link
			else
			{
				url = temp.link.substr(5);
				// alert('found something here at ' + url);
				// temp.link = url;
			}


   			document.writeln 
			(
				// the main div
				'<div class="' + temp.type + '"> ' +


				// the link
				'<a class="' + temp.type + '" + ' + highlight + ' href="' + 
				url +
				'" ' +

				// the mouse events
				' onMouseOver="mouseOverLink(' + i + ')" ' +
				' onMouseOut="mouseOutLink(' + i + ')" ' +
				'>' + 

				// the text of the link
				temp.description + 
				'</a> ' +

				// and close out the main div
				'</div>'
			)

			// every 7, break
			if ((i % 7) == 6) document.writeln ('<br/>');
		}
	}
}


function mouseOverLink (theIndex)
{
	//constructImageObjects();

	// get the right item
	var temp = linkArray[theIndex];
	// alert ('the stringdate is ' + temp.stringdate + '...');	

	// alert('headerdate is headerdate' + temp.year);
	var element = document.getElementById('headerdate' + temp.year);
	// if (element == null) alert('isnull');
	// else alert('not null');
	// alert('visibility: ' + element.style.visibility + '...');	
	element.style.visibility = "visible";
	element.innerText =  temp.stringdate;
	element.innerHTML = temp.stringdate;

	// startBlinking();
	document.getElementById('leftEyeball').src = downleftEye.src;
}
function mouseOutLink (theIndex)
{
	// constructImageObjects();

	// get the right item
	var temp = linkArray[theIndex];

	document.getElementById('headerdate' + temp.year).style.visibility = "hidden";
}



//
// javascript pseudo-object for holding information about a link
//
function TextLink (date, desc, link, type)
{
	this.date			= date;
	this.description	= desc;
	this.link			= link
	this.type			= type;

	this.year			= parseYear(date);
	this.stringdate		= stringify(date);

	if (date != '00')
	{
		this.link = this.year + '/' + this.link;
	}
}




function stringify (x)
{
	var month = x.substring(0, 2);
	var day = x.substring(3, 5);
	var year = x.substring(6, 8);

	if (year == '')
	{
		day = '';
	}

	if (day.charAt(0) == '0') day = day.substring(1, 2);
	// month = getMonthShort(month - 1);
	month = getMonthShortDesc(month - 1);
	if (month == 'none') month = ''

	var ret = '';
	if (day == '') ret = month;

	if (day == '')
	{	
		// ret = getMonthShortDesc(month - 1);
	}
	else
	{
		day = '.' + day;
		ret = month + day;
	}

	return ret;
}

function parseYear (x)
{
	var ret = '';
	if (x.length == 8) ret = x.substring(6, 8);
	else ret = x.substring (3, 5);

	if (ret == '99') return '19' + ret;
	else return '20' + ret;
}




function userInformation ()
{
	var screenHeight = window.screen.height;
	var screenWidth = window.screen.width;
	var screenColorDepth = window.screen.colorDepth;
	var screenUpdateInterval = window.screen.updateInterval;
	var browserXOffset = window.screenLeft;
	var browserYOffset = window.screenTop;
	var browserHeight = document.body.clientHeight;
	var browserWidth = document.body.clientWidth;

	var smoothing = window.clientInformation.fontSmoothingEnabled;
	var cpu = window.clientInformation.cpuClass;
	var appVersion = window.clientInformation.appVersion;
	var appMinorVersion = window.clientInformation.appMinorVersion;
	var appCodename = window.clientInformation.appCodeName;
	var appName = window.clientInformation.appName;
	var cookies = window.clientInformation.cookieEnabled;
	var lang = window.clientInformation.systemLanguage;
	var platform = window.clientInformation.platform;
	var java = window.clientInformation.javaEnabled();
	var history = window.history.length;

	
	var infoString = 'screen=' + screenWidth + 'x' + screenHeight + 'x' + screenColorDepth + 
			',offset=' + browserXOffset + 'x' + browserYOffset +
			',browser=' + browserWidth + 'x' + browserHeight +
			',history=' + history +
			',lang=' + lang +
			',platform=' + platform +
			',java=' + java +
			',cookies=' + cookies +
			',cpu=' + cpu +
			',smoothing=' + smoothing + 
			',appName=' + appName +
			',appVersion=' + appVersion +
			',appMinorVersion=' + appMinorVersion +
			',appCodename=' + appCodename;
	
	var info = new Image();
	var place = document.location.protocol + '//' + document.location.hostname + '/' + infoString + '.jpg';
	info.src = place;

}




//
// document information methods
// 
function getLastModified ()
{ 
	document.writeln ('last modified: ' + formatDate (new Date (document.lastModified)));
}
function getFileSize () { return document.fileSize; }
function getBrowserWidth () { return document.body.clientWidth; }
function getBrowserHeight () { 	return document.body.clientHeight; }


//
// date formatting functions
//
function formatDate (date)
{
	return getDay(date.getDay()) + ' ' + getMonth(date.getMonth()) + ' ' + date.getDate();
}
function getDay (x)
{
	switch (x)
	{
		case 0: return "sunday";
		case 1: return "monday";
		case 2: return "tuesday";
		case 3: return "wednesday";
		case 4: return "thursday";
		case 5: return "friday";
		case 6: return "saturday";
		default: return "None";
	}
}
function getMonth(x)
{
	switch (x)
	{
		case 0: return "january";
		case 1: return "february";
		case 2: return "march";
		case 3: return "april";
		case 4: return "may";
		case 5: return "june";
		case 6: return "july";
		case 7: return "august";
		case 8: return "september";
		case 9: return "october";
		case 10: return "november";
		case 11: return "december";
		default: return "none";
	}
}
function getMonthShortDesc(x)
{
	switch (x)
	{
		case 0: return "jan";
		case 1: return "feb";
		case 2: return "mar";
		case 3: return "apr";
		case 4: return "may";
		case 5: return "jun";
		case 6: return "jul";
		case 7: return "aug";
		case 8: return "sep";
		case 9: return "oct"
		case 10: return "nov"
		case 11: return "dec";
		default: return "non";
	}
}
function getMonthShort(x)
{
	switch (x)
	{
		case 0: return "01";
		case 1: return "02";
		case 2: return "03";
		case 3: return "04";
		case 4: return "05";
		case 5: return "06";
		case 6: return "07";
		case 7: return "08";
		case 8: return "09";
		case 9: return "10"
		case 10: return "11"
		case 11: return "12";
		default: return "none";
	}
}

