var ie = (!window.opera && document.all);
var dom = (!document.all && document.getElementById);
var vPictureIndex = 0;

var vGalleryArray = new Array();
var descriptionArray = new Array();

var vCurrShowDivName = 'A';
var	vCenteringImage = new Image();
	vCenteringImage.src = "images/ghiora-title.jpg";
var	vCenteringImageWidth = vCenteringImage.getAttribute("width");
var	vCenteringImageHeight = 530;

function loadCenteringImage() {
	if (!vCenteringImageWidth) {
		vCenteringImage = new Image();
		vCenteringImage.src = "images/ghiora-title.jpg";
		vCenteringImageWidth = vCenteringImage.width;	
		
		if (!vCenteringImageWidth) vCenteringImageWidth = vCenteringImage.getAttribute("width");
		printToStatusBar("loadCenteringImage() called.  (width,height) is : (" + vCenteringImageWidth + "," + vCenteringImageHeight + ")");
	}
}

function ajaxManager()
	{
	var args = ajaxManager.arguments;
	switch (args[0])
		{
		case "add_picture":
			vGalleryArray[vGalleryArray.length] = args[1];
			descriptionArray[descriptionArray.length] = args[2];
			break;
		case "load_page":
			var x = (window.ActiveXObject) ? new ActiveXObject("Microsoft.XMLHTTP") : new XMLHttpRequest();
			var preload = document.getElementById("preloadLYR");
			if (x)
				{
				x.onreadystatechange = function()
					{
					if (x.readyState == 0)
						{
						preload.innerHTML = "initializing";
						}
					else if (x.readyState == 1)
						{
						preload.innerHTML = "loading.";
						}
					else if (x.readyState == 2)
						{
						preload.innerHTML = "loading..";
						}
					else if (x.readyState == 3)
						{
						preload.innerHTML = "loading...";
						makeTransparent('captionLYR');
						
						}
					else if (x.readyState == 4 && (x.status == 200 || x.status==0))
						{
						//preload.innerHTML = "";
						handleLoadComplete(x.responseText);
						}
					}
				x.open("GET", args[1], true);
				
			    printToStatusBar("Loaded page " + args[1]);
				
				x.send(null);
				}
			break;

		case "show_picture":
			var index = args[1];
			if (index >=0 )
			{
				vPictureIndex = index;
				ajaxManager('load_page', vGalleryArray[index]);
				loadDescription(index);
			}
			break;
		case "cycle_gallery":
			if (args[1] == 'forw' && vPictureIndex != vGalleryArray.length - 1)
				{
				vPictureIndex++;
				ajaxManager('load_page', vGalleryArray[vPictureIndex]);
				loadDescription(vPictureIndex);
				}
			else if (args[1] == 'rev' && vPictureIndex != 0)
				{
				vPictureIndex--;
				ajaxManager('load_page', vGalleryArray[vPictureIndex]);
				loadDescription(vPictureIndex);
				}
			break;
		case "start_up":
			ajaxManager('load_page', vGalleryArray[vPictureIndex]);
			loadDescription(vPictureIndex);
			break;
		}
	}

	function cycleForward() {
		if (vPictureIndex == vGalleryArray.length) {
			vPictureIndex = 0;
		}
		ajaxManager('load_page', vGalleryArray[vPictureIndex]);
		vPictureIndex++;
		setTimeout("cycleForward()", 3700);
	}

	// what happens when an image finishes loading
    function handleLoadComplete(responseText) 
    {
    	var preloadDiv = document.getElementById("preloadLYR");
		var aDiv = document.getElementById("galleryA");
		var bDiv = document.getElementById("galleryB");

		var currShowDiv = crossFadeImage(aDiv,bDiv, responseText);
				
		centerImages(aDiv,bDiv,preloadDiv,currShowDiv);

		//turn off captions
		//fadeInImage(captionDiv);
    }

	function centerImages(aDiv,bDiv,preloadDiv,currShowDiv)
	{
		// Use the current image as the center.		
		var imageSize = vCenteringImageWidth;
		
		var pageWidth = (dom) ? innerWidth : document.body.clientWidth;
		var pageHeight = (dom) ? innerHeight : document.body.clientHeight;
		printToStatusBar("imageSize: " + imageSize);
		printToStatusBar("pageWidth: " + pageWidth);
				
		var leftPosition = (pageWidth - imageSize)/2 -.5;
		if (leftPosition < 0) leftPosition = 0;
		var leftPositionPx = leftPosition + "px";
		aDiv.style.left = leftPositionPx;
		bDiv.style.left = leftPositionPx;
		preloadDiv.style.left = leftPositionPx;
		
		titleDiv = document.getElementById('titleLYR');
		titleDiv.style.left = leftPositionPx;	
		
		navDiv = document.getElementById('navLYR');
		navDiv.style.left = leftPositionPx;

		var squares = document.getElementById('squares');
		squares.style.left = (leftPosition+265)+"px";
		
		var topPosition = (pageHeight - vCenteringImageHeight) /2 -1;
		printToStatusBar("pageHeight: " + pageHeight);
		printToStatusBar("topPosition: " + topPosition);
		if (topPosition < 0) topPosition = 0;
		aDiv.style.top = topPosition;
		bDiv.style.top = topPosition;
		titleDiv.style.top = topPosition + 475;
		navDiv.style.top = topPosition + 507;
		squares.style.top = topPosition + 515;
		preloadDiv.style.top = topPosition+460;
	}

	// use a "ping-pong" buffer to render the images
    function crossFadeImage(aDiv, bDiv, responseText)
    {
    	// determine who's on top
    	var currShowDiv;
    	var currHideDiv;
		if (vCurrShowDivName=='A') {
			printToStatusBar("show div b" );
			currShowDiv = bDiv;
			currHideDiv = aDiv;
			vCurrShowDivName = 'B';
		}
		else if (vCurrShowDivName=='B') {
			printToStatusBar("show div a" );
			currShowDiv = aDiv;
			currHideDiv = bDiv;
			vCurrShowDivName = 'A';
		}
		setOpacity(currShowDiv,0);	
		currShowDiv.innerHTML = responseText;
		return currShowDiv;
    }

	// each loaded image needs to call this.  
	// i couldn't figure how to set the currShowDiv's image's onLoad event handler.
    function showAllItems(vCurrShowDivName)
    {
    
    	var currShowDiv;
    	var currHideDiv;
    	
    	
    	if (vCurrShowDivName=='A') {
			currShowDiv = document.getElementById('galleryA');
			currHideDiv = document.getElementById('galleryB');
		}
		else if (vCurrShowDivName=='B') {
			currShowDiv = document.getElementById('galleryB');
			currHideDiv = document.getElementById('galleryA');
		}
    
		// load new picture into the ShowDiv

		var innerShowDiv = currShowDiv.getElementsByTagName("div")[0];
		if( innerShowDiv && innerShowDiv.id=="movieDiv") {
			currShowDiv.style.borderWidth="0";
			currHideDiv.style.borderWidth="0";
			setOpacity(currShowDiv, 100);
			currHideDiv.innerHTML = "";
		}
		else {
			setOpacity(currShowDiv, 20);
			fadeInImage(currShowDiv);
		}
		
		var innerHideDiv = currHideDiv.getElementsByTagName("div")[0];
		if( innerHideDiv && innerHideDiv.id=="movieDiv") {
			currShowDiv.style.borderWidth="1";
			currHideDiv.style.borderWidth="1";
			setOpacity(currHideDiv, 0);
			currHideDiv.innerHTML = "";
		}
		else {
			setOpacity(currHideDiv, 80);
			fadeOutImage(currHideDiv);	
		}
		
		document.getElementById('preloadLYR').innerHTML = "";
		
    }

    
    function loadDescription(i) {
		makeTransparent('captionLYR');
		document.getElementById('captionLYR').innerHTML = descriptionArray[i];
    }
