
// global variables

var imageIDArray = new Array(); // holds the results of the image_id request
var debugLevel = 0; // set the debug message level (0 = off)
var pathToAlbum = '/album/';
var maxWidth = -1;
var maxHeight = -1;

function setUpFeaturedImages(path, maxX, maxY) {
	// set up the image max height/width
	maxWidth = maxX;
	maxHeight = maxY;

	// if the last character isn't a backslash,
	// then add it to the end of the path
	if (path == '' || path == null || path.length < 1) {
		pathToAlbum = './';
	} else if (path.charAt(path.length - 1) != '/') {
		pathToAlbum = path + '/';
	} else {
		pathToAlbum = path;
	}
	getImageIDArray();
}

function getImageIDArray() {
	var httpReq = makeHttpRequestObject();
	httpReq.onreadystatechange = function() { getImageIDs(httpReq); };
	httpReq.open('GET', pathToAlbum + 'featured_images_xml.php', true);
	httpReq.setRequestHeader( "If-Modified-Since", "Sat, 1 Jan 2000 00:00:00 GMT" );
	httpReq.send(null);
}

function getImageIDs(http_req) {
	if (http_req.readyState == 4) {
		if (http_req.status == 200) {
			var text = http_req.responseText;
			
			if (text != '-1') {
				var returnedArray = text.split('\n');
				for (var x = 0; x < returnedArray.length; x++) {
					imageIDArray[x] = returnedArray[x].split(':');
				}
				
				if (debugLevel > 0) {alert('text: ' + text + '\nimageIDArray: ' + imageIDArray);}
				
				var totalImages = imageIDArray.length;
				var randomSelection = Math.floor(Math.random() * totalImages)
				displayImageBox(randomSelection);
			} else {
				setElementHTML('caption', 'No featured images selected');
			}
		} else {
			alert('There was a problem with the request.\nreceived values: ' + text);
		}
	}
}

function displayImageBox(imageIndex) {
	if (debugLevel > 0) {alert('displaying imageIndex: ' + imageIndex + '\nimage_id: ' + imageIDArray[imageIndex][0] + '\nimage_caption: ' + imageIDArray[imageIndex][1] + '\nimageIDArray: ' + imageIDArray);}
	var currID = imageIndex;
	
	if (imageIndex < 1) {
		var prevID = -1;
	} else {
		var prevID = imageIndex - 1;
	}
	if (debugLevel > 0) {alert('prevID: ' + prevID);}
	
	if (imageIndex == imageIDArray.length - 1) {
		var nextID = -1;
	} else {
		var nextID = imageIndex + 1;
	}
	if (debugLevel > 0) {alert('nextID: ' + nextID);}
	
	setImageCounter(imageIndex + 1, imageIDArray.length);
	setPrevLink(prevID);
	setNextLink(nextID);
	setImageTag(currID);
	setCaption(currID);
}

function setImageCounter(currentIndex, totalImages) {
	var out = currentIndex + '/' + totalImages;
	setElementHTML('imageCounter', out);
}
		
function setNextLink(imageIndex) {
	if (imageIndex != -1) {
		var outText = "";
		if (debugLevel > 0) {
			outText += '(' + imageIDArray[imageIndex][0] + ')&nbsp;';
		}
		outText += 'Next&nbsp;&raquo;';
		var out = '<span style="cursor: pointer;" onClick="displayImageBox(' + imageIndex + ')">' + outText + '</span>';
		setElementHTML('nextLink', out);
	} else {
		setElementHTML('nextLink', '');
	}
}

function setPrevLink(imageIndex) {
	if (imageIndex != -1) {
		var outText = "";
		if (debugLevel > 0) {
			outText += '(' + imageIDArray[imageIndex][0] + ')&nbsp;';
		}
		outText += '&laquo;&nbsp;Prev';
		var out = '<span style="cursor: pointer;" onClick="displayImageBox(' + imageIndex + ')">' + outText + '</spana>';
		setElementHTML('prevLink', out);
	} else {
		setElementHTML('prevLink', '');
	}
}

function setCaption(imageIndex) {
	var out = imageIDArray[imageIndex][1];
	if (debugLevel > 0) { alert('caption: ' + out); }
	setElementHTML('caption', out);
}

function setImageTag(currImageIndex) {
	var out = '<a href="' + pathToAlbum + 'image.php?image_id=' + imageIDArray[currImageIndex][0] + '" target="_self">';
	out += '<img src="' + pathToAlbum + 'img_binary.php?image_id=' + imageIDArray[currImageIndex][0] + '&x=' + maxWidth + '&y=' + maxHeight +'" style="border: 1px solid black;">';
	out += '</a>';
	if (debugLevel > 0) {alert('chosen image_id: ' + imageIDArray[currImageIndex][0] + '\nsetting image tag: ' + out);}
	setElementHTML('image', out);
}

function makeHttpRequestObject() {
	var http_req = false;
	
	if (window.XMLHttpRequest) {
		http_req = new XMLHttpRequest();
		if (http_req.overrideMimeType) {
			http_req.overrideMimeType('text/xml');
		}
	} else if (window.ActiveXObject) {
		try {
			http_req = new ActiveXObject("MSXML2.XMLHTTP");
		} catch (e) {
			try {
				http_req = new ActiveXObject("Microsoft.XMLHTTP");
			} catch (e) {
				// don't do anything
			}
		}
	}
	
	if (!http_req) {
		alert('Giving up! Can\'t Connect');
		return false;
	}
	
	return http_req;
}

function setElementHTML(elementID, newHTML) {
	if (document.all) {
		document.all(elementID).innerHTML = newHTML;
	} else if (document.getElementById) {
		document.getElementById(elementID).innerHTML = newHTML;
	}				
}
		
