var galleryList = new Array();
var galleryIndex = 0;
var currentGallery = new Array();
var currentImage = 0;
var imageArray = new Array();
var imageArray2 = new Array();
var im = new Image();
im.src = "gallery/menagerie/1b.jpg";
var animating = false;

var objs = new Object();
function o(x) {
   if ( !objs[x] )
      objs[x] = document.getElementById(x);
   return objs[x];
}       

function debug(msg) {
	if (!debug.box) {
		debug.box = document.createElement("div");
		debug.box.setAttribute("style", "background-color: white; " +
										"font-family: monospace; " +
										"font-size: 10; " + 
										"border: solid black 3px; " +
										"position: absolute;top:90px;" +
										"z-index: 100;" +
										"padding: 10px;");

		document.body.appendChild(debug.box);
	}
	
	var p = document.createElement("p");
	p.appendChild(document.createTextNode(msg));
	debug.box.appendChild(p);
}

function loaded(){
	getGalleryList();
	var i = 0;
	while (i < galleryList.length) {
		imageArray2[i] = new Image();
		imageArray2[i].src = "gallery/"+galleryList[i]+"/1.jpg";
		i++;
	}
	imageArray2[i] = new Image();
	imageArray2[i].src = "gallery/mechamorphic/1b.jpg";
	i++;
	imageArray2[i] = new Image();
	imageArray2[i].src = "gallery/mechamorphic/2b.jpg";
	i++;
	imageArray2[i] = new Image();
	imageArray2[i].src = "gallery/mechamorphic/3b.jpg";
	i++;
	imageArray2[i] = new Image();
	imageArray2[i].src = "gallery/menagerie/1b.jpg";
	i++;
	imageArray2[i] = new Image();
	imageArray2[i].src = "gallery/baby/1b.jpg";
	i++;
	imageArray2[i] = new Image();
	imageArray2[i].src = "gallery/baby/2b.jpg";
	i++;
	imageArray2[i] = new Image();
	imageArray2[i].src = "gallery/baby/3b.jpg";
	i++;
	imageArray2[i] = new Image();
	imageArray2[i].src = "gallery/monkeys/2b.jpg";
	i++;
	imageArray2[i] = new Image();
	imageArray2[i].src = "gallery/monkeys/3b.jpg";
	i++;
	imageArray2[i] = new Image();
	imageArray2[i].src = "gallery/fish/1b.jpg";
	i++;
	imageArray2[i] = new Image();
	imageArray2[i].src = "gallery/fish/2b.jpg";
	i++;
	imageArray2[i] = new Image();
	imageArray2[i].src = "gallery/fish/3b.jpg";
	i++;
	imageArray2[i] = new Image();
	imageArray2[i].src = "gallery/fish/4b.jpg";
	i++;
	
}

var dx;
var dy;
var dx2;
var dy2;
var newx;
var newy;
var ml;
var dh;
var ctop;

function getScaledHeight(){
	finalH = currentGallery[currentImage].h;
	finalW = currentGallery[currentImage].w;
	if (finalH/finalW > 300/350) {
		//then height should be 300
		return(300);
	} else {
		return(finalH*350/finalW);
	}	
}

function getScaledWidth(){
	finalH = currentGallery[currentImage].h;
	finalW = currentGallery[currentImage].w;
	if (finalH/finalW > 300/350) {
		return(finalW*300/finalH);
	} else {
		return(350);
	}	
}

function drawBig(ox,oy,nx,ny){
if (animating == false){
	if (currentGallery[currentImage].linkTo != "n"){
		animating = true;
		ox = getScaledWidth();
		oy = getScaledHeight();
		o("big").width = ox;
		o("big").height = oy;
		nx = currentGallery[currentImage].w;
		ny = currentGallery[currentImage].h;
		o("big").src = currentGallery[currentImage].linkTo;
		o("big").style.display = "block";
		o("big").style.opacity = 0;
		o("big").style.filter = "alpha(opacity=0)";
		dx = (nx - ox)/10;
		dy = (ny - oy)/10;
		dx2 = (nx - ox)/20;
		dy2 = (ny - oy)/20;
		newx = ox;
		newy = oy;
		ml = -(ox/2);

		ctop = ny/2 - oy/2-2;

		animateBig(0);
		window.setTimeout('animateBig(.1)', 50);
		window.setTimeout('animateBig(.2)', 100);
		window.setTimeout('animateBig(.3)', 150);
		window.setTimeout('animateBig(.4)', 200);
		window.setTimeout('animateBig(.5)', 250);
		window.setTimeout('animateBig(.6)', 300);
		window.setTimeout('animateBig(.7)', 350);
		window.setTimeout('animateBig(.8)', 400);
		window.setTimeout('animateBig(.9)', 450);
		window.setTimeout('finishDrawBig('+nx+', '+ny+')', 500);
	}
}
}

function animateBig(op){
	newx = newx + dx;
	newy = newy + dy;
	ml = ml - dx2;
	o("big").style.marginLeft = ml; 
	ctop = ctop - dy2;
	o("big").style.top = ctop;
	o("big").style.width = newx;
	o("big").style.height = newy;
	o("big").style.opacity = op;
	o("big").style.filter = "alpha(opacity="+op*100+")";
}

function finishDrawBig(nx, ny){
	animating = false;
	o("big").style.marginLeft = -(nx/2);
	o("big").style.width = nx;
	o("big").style.height = ny;
	o("big").style.opacity = 1;
	o("big").style.filter = "alpha(opacity=100)";
	
}

function changeBigImage(){
	if (animating == false) {
		o("big").style.marginLeft = -(currentGallery[currentImage].w/2)
		o("big").style.width = currentGallery[currentImage].w;
		o("big").style.height = currentGallery[currentImage].h;
		//o("big").style.opacity = 1;
		o("big").src = currentGallery[currentImage].linkTo;
	}
}

function hideBig(){
	if (animating == false) {
		o("big").style.marginLeft = -175;
		o("big").style.width = 350;
		o("big").style.height = 300;
		o("big").style.display = "none";
	}
}

function setCurrentGallery(num){
	hideBig();
	galleryIndex = num;
}

function pink(area){
	area.style.color = "FF3366";
}

function pinkNumber(area){
	white("number");
	area.style.color = "FF3366";
}


function white(area){



	var links = new Array();
	links = document.getElementsByTagName("*");
	for (var i = 0; i < links.length; i++) {
			if (links[i].className == area) {
					links[i].style.color = "white";		
			}
	}

}

function init(){
	

	pink(o("g0"));
	o("rightArrow").style.display = "block";
	o("rightArrowFake").style.display = "none";
	getGallery("mechamorphic");
	
}

function restart(){
	hideBig();
	hideNumbers();
	o("rightArrow").style.display = "none";
	o("rightArrowFake").style.display = "block";
	o("leftArrow").style.display = "none";
	currentImage = 0;
	galleryIndex = 0;
	o("mci").src = "images/splash.jpg";
	center();
}

function addNumber(num) {
	var numNode = document.createElement("span");
	numNode.className = "number";
	numNode.innerHTML = num+1;
	numNode.id = "num" + num;
	numNode.setAttribute("onclick", 'pinkNumber(this);goToImage('+num+')');
	//numNode.setAttribute("onClick", 'alert(4)');
	
	if (num == currentImage) pink(numNode);
	o("imageNumbers").appendChild(numNode);
}

function getGalleryList(){
	var file;
	if(navigator.appName == "Microsoft Internet Explorer") {
		file = new ActiveXObject("Microsoft.XMLHTTP");
	} else {
		file = new XMLHttpRequest();
	}
	
	
	file.open("GET", "gallery/g.txt", false);
	file.send(null);
	if (file.responseText == null) return 0;
		
	galleryList = new Array();
	galleryList = file.responseText.split('\n');
	return 1;
	
}

function getGallery(folder){
	hideNumbers();
	//var file = new XMLHttpRequest();
	
	var file;
		if(navigator.appName == "Microsoft Internet Explorer") {
			file = new ActiveXObject("Microsoft.XMLHTTP");
		} else {
			file = new XMLHttpRequest();
	}
	
	file.open("GET", "gallery/" + folder + "/desc.txt", false);
	file.send(null);
	if (file.responseText == null) return 0;
	
	var galleryTemp = new Array();
	galleryTemp = file.responseText.split('\n');
	var galleryTemp2;
	
	currentImage = 0;
	
	delete(currentGallery);
	delete(imageArray);
	imageArray = new Array();
	currentGallery = new Array();
	var i = 0;
	while (i < galleryTemp.length){
		
		galleryTemp2 = galleryTemp[i].split('|');
		var alt = "gallery/" + folder + "/" + galleryTemp2[2];
		if (galleryTemp2[2].slice(0,1) == 'n'){
			alt = "n";
		}
		
		
		//	currentGallery[i] = new galleryImage("gallery/" + folder + "/" + galleryTemp2[0], galleryTemp2[1],alt);
		
		currentGallery[i] = new galleryImage("gallery/" + folder + "/" + galleryTemp2[0], galleryTemp2[1],alt, galleryTemp2[3], galleryTemp2[4]);
	
		imageArray[i] = new Image();
		imageArray[i].src = "gallery/" + folder + "/" + galleryTemp2[0];
	
		i++;
	}
	
	
	
	goToImage(0);
	
	o("rightArrowFake").style.display = "none";
	
	
}

function hideNumbers(){
	while (o("imageNumbers").firstChild) {
		o("imageNumbers").removeChild(o("imageNumbers").firstChild);
 	}
 	return 1;
}

function redrawNumbers(){
	var wait = 0;
	wait = hideNumbers();
	if (currentGallery.length > 1) {
		while (wait == 0) {}
		var i = 0;
		while (i < currentGallery.length) {
			addNumber(i);
			i++;
		}
	}
}

function goToImage(which){
	currentImage = which;
	
	if ((currentGallery[currentImage].linkTo).slice(0,1) != 'n') {
		o("mci").className = "bigC";
		changeBigImage();
	} else {
		o("mci").className = "bigCNoHover";
		hideBig();
	}
		
	center();
	o("mci").src = currentGallery[which].getURI();
	o("description").innerHTML = currentGallery[currentImage].description;
	
	checkArrows();
	redrawNumbers();
	
	center();
	
}

function center(){
	//debug(o("mci").width);
	var offset = 0;
	var arrowOffset = 0;
	if (galleryIndex == 4){
		if (currentImage < 2) {
			offset = 56/2;
		} else {
			offset = -238/2;
			arrowOffset = -239/2;
		}
	}
	
	o("mainContent").style.marginLeft = -175 + offset;
	o("leftArrow").style.marginLeft = -210 + arrowOffset;
	o("rightArrow").style.marginLeft = 175 - arrowOffset;
//	returnTo350();
	o("mainContent").style.display = "block";
	

}

function returnTo350(){
	if (o("mci").width == 350) {
		o("mainContent").style.left = 0;
		o("leftArrow").style.left = -390;
		o("rightArrow").style.left = 390;
	}
}

function checkArrows(){
	o("rightArrow").style.display = "block";
	if ((currentImage + 1) == currentGallery.length) {
		if ((galleryIndex+1) == galleryList.length) {
			o("rightArrow").style.display = "none";
		}	
	}
	
	o("leftArrow").style.display = "block";
	if (currentImage == 0) {
		if (galleryIndex == 0) {
			o("leftArrow").style.display = "none";
		}
	}
	
}


function nextImage(){
	if ((currentImage+1) < currentGallery.length) {
		currentImage++;
		goToImage(currentImage);
	} else {
		if ((galleryIndex+1) < galleryList.length) {
			galleryIndex++;
			getGallery(galleryList[galleryIndex]);
			white("link");
			pink(o("g"+galleryIndex));
			
		}
	}
	checkArrows();
	
}

function previousImage() {
	if (currentImage > 0) {
		currentImage--;
		goToImage(currentImage);
	} else {
		if (galleryIndex > 0) {
			galleryIndex--;
			getGallery(galleryList[galleryIndex]);
			white("link");
			pink(o("g"+galleryIndex));
			currentImage = currentGallery.length - 1;
			goToImage(currentImage);
		}
	}
	checkArrows();
}