//
// Copyright © 2004 by das Monkey
// All use, disclosure, and/or reproduction not specifically authorized by das Monkey
// is prohibited.  All rights reserved.
//
// I have no problem with people learning from the source code of others, and if
// in some way you find this code useful in a learning capacity, then I'm very happy
// I was able to help.  However, please show some class, and don't steal my code.
// If you cannot write your own code and must resort to stealing mine, please at least
// give me credit for it.
//

ns4 = (document.layers)? true:false;
ie4 = (document.all)? true:false;

opera = (navigator.userAgent.indexOf("Opera") != -1 && document.getElementById)? true:false;
ie4 = (document.all)? true:false;
ns4 = (document.layers)? true:false;
moz = (!document.all && document.getElementById)? true:false;

var g_Taunt = 0;
var g_Debug = 0;

function debug(i) {
	g_Debug++;
	if(g_Debug >= 10) {
		alert(currImage + '\n' + i.src); return false;
	}
	return false;
}

function element(e) {
	if(ie4) return document.all[e];
	if(ns4) return document.layers[e];
	if(moz) return document.getElementById(e);
}

function queryString(key) {
	var query = unescape(window.location.search.substring(1));
	var pairs = query.split("&");
	
	for (var i = 0; i < pairs.length; i++) {
		if(pairs[i].split("=")[0] == key) return pairs[i].split("=")[1];
	}
	return '';
}

function returnPage() {
	switch(queryString('page')) {
		case '1': return 'index.html'; break;
		case '2': return 'index2.html'; break;
		case '3': return 'index3.html'; break;
		case '4': return 'index4.html'; break;
		default: return 'index.html';
	}
}

var currImage = 0;
var currPanel = -1;
var imagePanel = -1;
var currPanelView = 0;
var bImageJump = false;

function panelStart() {
	if(currPanel < 0)
		return 0;
	else {
		if((currPanel + 3) > arrPanels.length)
			return arrPanels.length - 5;
		else {
			if(currPanel >= 3)
				return currPanel - 2;
			else
				return 0;
		}
	}
}

function panelEnd() {
	if((panelStart() + 5) > arrPanels.length)
		return arrPanels.length;
	else
		return panelStart() + 5;
}

function prevPanel() {
	if(currPanel > 0) {
		showPanel(currPanel - 1);
	}
}

function nextPanel() {
	if(currPanel < arrPanels.length - 1) {
		showPanel(currPanel + 1);
	}
}

function prevPanel5() {
	if(currPanel > 5) {
		showPanel(currPanel - 5);
	} else {
		firstPanel();
	}
}

function nextPanel5() {
	if(currPanel + 5 < arrPanels.length - 1) {
		showPanel(currPanel + 5);
	} else {
		lastPanel();
	}
}

function lastPanel() {
	showPanel(arrPanels.length - 1);
}

function firstPanel() {
	showPanel(0);
}

function Image(panel, src, label, detail) {
	this.panel = panel;
	this.src = 'images/photos/' + src;
	this.thumb = 'images/thumbs/tn_' + src;
	this.label = label;
	this.detail = detail;
}

function addImage(panel, src, label, detail) {
	var img = new Image(panel, src, label, detail);
	arrImages[arrImages.length] = img;
}

function addImageSmart(src, label, detail) {
	var panel = parseInt(src.substr(0,2), 10) - 1;
	if(label == '') {
		label = arrPanelDescs[panel];
	}
	addImage(panel, src, label, detail);
}

function taunt() {
	switch(g_Taunt) {
		case 0: alert('No more pictures!  Now go away, or I shall taunt you a second time.'); break;
		case 1: alert('You thought I was kidding, did\'t you?  Well, I taunt you once more.'); break;
		case 2: alert('Dude, give it up!'); break;
		case 3: alert('OK, OK, I\'ll stop taunting you.  Just move long, please.'); break;
		case 4: alert('I lied.  I taunt you!'); break;
		case 5: alert('Here, I\'ll help you ...'); showPanel(0); break;
		default: showPanel(0); break;
	}
	g_Taunt++;
}

function goNext() {	if(currImage < arrImages.length - 1) showImageIndex(currImage+1); else { taunt(); } }
function goPrev() { if(currImage > 1) showImageIndex(currImage-1); }

var arrImages = new Array(0);
var arrPanelIndexes = new Array(0);

addData();

function findIndexes() {
	var prev = '';
	for(var i = 1; i < arrImages.length; i++) {
		if(prev != arrPanels[arrImages[i].panel]) {
			prev = arrPanels[arrImages[i].panel];
			arrPanelIndexes[arrPanelIndexes.length] = i;
		}
	}
}

findIndexes();

var startImage = 0;
if(queryString('panel') != '') {
	startImage = arrPanelIndexes[parseInt(queryString('panel'), 10)];
}
if(queryString('img') != '') {
	startImage = parseInt(queryString('img'), 10);
	bImageJump = true;
}
if(startImage >= arrImages.length) startImage = 0;

function shiftPanel(idx) {
	currPanel = idx;
	populatePanels();
	element('cat_' + arrPanels[imagePanel]).bgColor = '#F0F0F0';
}

function showPanel(idx) {
	if(currPanel != idx) {
		if(currImage != arrPanelIndexes[idx])
			showImageIndex(arrPanelIndexes[idx]);
	}
	//populateList(idx);
	//highlightThumb(arrPanelIndexes[idx]);
}

function populatePanels() {
	var list = '<table><tr>';
	list += '<td><a href="" onClick="firstPanel(); return false;" title="First Category"><img border="0" src="images/first.gif"/></a></td>';
	list += '<td><a href="" onClick="prevPanel5(); return false;" title="Back 5 Categories"><img border="0" src="images/left2.gif"/></a></td>';
	list += '<td><a href="" onClick="prevPanel(); return false;" title="Previous Category"><img border="0" src="images/left.gif"/></a></td>';
//	for(var i = 0; i < arrPanels.length; i++) {
	for(var i = panelStart(); i < panelEnd(); i++) {
		list += '<td id="cat_' + arrPanels[i] + '" class="category" onClick="showPanel(' + i + '); return false;">' + arrPanels[i] + '</a></td>';
		if(i < panelEnd() - 1) {
			list += '<td>-</td>';
		} else {
			list += '<td><a href="" onClick="nextPanel(); return false;" title="Next Category"><img border="0" src="images/right.gif"/></a></td>';
			list += '<td><a href="" onClick="nextPanel5(); return false;" title="Foward 5 Categories"><img border="0" src="images/right2.gif"/></a></td>';
			list += '<td><a href="" onClick="lastPanel(); return false;" title="Last Category"><img border="0" src="images/last.gif"/></a></td>';
		}
	}
	list += '</tr></table>';

	element('Panels').innerHTML = list;
}

function populateList(idx) {
	element('List').innerHTML = '<br/>Loading Thumbnails ...';
	setTimeout('populateList2(' + idx + ')', 1);
	if(bImageJump) {
		setTimeout('highlightThumb(' + startImage + ')', 10);
		bImageJump = false;
	} else {
		setTimeout('highlightThumb(arrPanelIndexes[' + idx + '])', 10);
	}
}

function populateList2(idx) {
	currPanel = idx;
	imagePanel = currPanel;
	populatePanels();
	var list = '';
	if(idx >= 0) {
		element('cat_' + arrPanels[idx]).bgColor = '#F0F0F0';
		list += '<div id="thumbnails" class="thumbnails">';
	    list += '<table align="center" cellspacing="0" cellpadding="0"><tr>';
		for(var i = 0; i < arrImages.length; i++) {
			if(idx == arrImages[i].panel || idx < 0) {
				list += '<td>';
				list += shadowImage('<img onContextMenu="return false;" id="thumb_' + i + '" title="' + arrImages[i].label + '" class="thumbnail" onClick="showImageIndex(' + i + '); return false;" src="' + arrImages[i].thumb + '">');
				list += '</td>';
			}
		}
		list += '</tr></table>';
		list += '</div>';
	}
	element('List').innerHTML = list;
}

function showImageIndex(idx) {
	currImage = idx;
	showImage(arrImages[idx]);
	setTimeout('highlightThumb(' + idx + ')', 10);
}

function highlightThumb(idx) {
	if(ie4 && !opera) {
		var t = element('thumb_' + idx);
		if(t) {
			var i = arrPanelIndexes[currPanel];
			var ti = element('thumb_' + i);
			while(ti) {
				ti.parentElement.parentElement.style.borderStyle = 'solid';
				ti.parentElement.parentElement.style.borderColor = 'white';
				ti.parentElement.parentElement.style.borderWidth = '1px';
				ti = element('thumb_' + i++);
			}
			t.parentElement.parentElement.style.borderStyle = 'solid';
			t.parentElement.parentElement.style.borderColor = 'firebrick';
			t.parentElement.parentElement.style.borderWidth = '1px;';
		}
	}
	if(element('thumbnails')) {
		if(element('thumb_' + idx)) {
			element('thumbnails').scrollLeft = element('thumb_' + idx).offsetLeft - ((document.body.scrollWidth - element('thumb_' + idx).offsetWidth) / 2) + 10;
		}
	}
}


function showImage(img) {
	element('image').src = img.src;
	if(img.label != '')
		element('label').innerHTML = '<div class="p-shadow"><div><p><span class="label">' + img.label + '</span><span class="detail">' + img.detail + '</span></p></div></div>';
	else
		element('label').innerHTML = '';
	if(currPanel != img.panel) setTimeout('populateList(' + img.panel + ')', 10);
}

function shadowImage(img) {
	return '<table align="center" cellpadding="0" cellspacing="0"><tr><td><div class="img-shadow">' + img + '</div></td></tr></table>';
}
