function webAlbum_loader(url, dataDivID, callback)
{
	var req;

	if (callback == null) callback = webAlbum_processReqChange;

	try {
		req = new XMLHttpRequest();
	}
	catch (e) {
		try {
			req = new ActiveXObject("Msxml2.XMLHTTP");
		}
		catch (e) {
			try {
				req = new ActiveXObject("Microsoft.XMLHTTP");
			}
			catch (e) {
				callback(null, dataDiv);
				return;
			}
		}
	}

	req.onreadystatechange = function() {
		callback(req, dataDivID);
	};

	req.open("GET", url, true);
	req.send(null);
}

function webAlbum_processReqChange(req, dataDivID)
{
	var dataDiv = document.getElementById(dataDivID);

	if (req == null) {
		dataDiv.innerHTML = '<p>No AJAX support</p>';
		return;
	}

	if (req.readyState == 4) {
		if (req.status == 200) { // If "OK"
			dataDiv.innerHTML = req.responseText;	// Set current data text
		}
		else {
			dataDiv.innerHTML = '<p>There was a problem retrieving data:' + req.statusText + '</p>';
		}
	}
}

function webAlbum_queryExtract()
{
	var search = document.location.search;
	if (search.length == 0) return null;
	if (search.charAt(0) == '?') search = search.substr(1);

	var queryList = new Object();
	var queries = search.split('&');

	for (var i=0 ; i<queries.length ; i++)
	{
		var parts = queries[i].split('=');
		queryList[parts[0]] = parts[1];
	}

	return queryList
}

function webAlbum_loadPhoto(path, dataDivID)
{
	var queryList = webAlbum_queryExtract();
	if (queryList == null) return false;

	if (!('ph' in queryList)) return false;
	if (!('id' in queryList)) return false;
	if (isNaN(queryList['id'])) return false;

	var photo = path + 'photos/' + queryList['ph'];
	var id = parseInt(queryList['id']);

	// Check valid photo number
	if (id < 0 || id >= webAlbum_numPhotos) return false;

	// Create Back Link
	if (id > 0) {
		var ph = webAlbum_photoArray[id-1];
		var back = '<a href="' + document.location.pathname + '?ph=' + ph +'&id=' + (id-1) + '">' +
					  '<img src="' + path + 'images/back.png" alt="Back" /></a>';
	}
	else {
		var back = '<img src="' + path + 'images/back_dis.png" alt="No Back" />';
	}

	// Create Forward Link
	if (id < (webAlbum_numPhotos-1)) {
		var ph = webAlbum_photoArray[id+1];
		var forward = '<a href="' + document.location.pathname + '?ph=' + ph +'&id=' + (id+1) + '">' +
						  '<img src="' + path + 'images/forward.png" alt="Forward" /></a>';
	}
	else {
		var forward = '<img src="' + path + 'images/forward_dis.png" alt="No Forward" />';
	}

	var gallery = '<a href="' + document.location.pathname + '"><img src="' + path + 'images/gallery.png" alt="Gallery" /></a>';

	var dataDiv = document.getElementById(dataDivID);
	if (dataDiv == null) return false;

	dataDiv.innerHTML =	'<div class="controls">' + back + gallery + forward + '</div>' +
								'<img class="photo" src="' + photo + '" alt="Photo" />';
}

function webAlbum_init(path, dataDivID)
{
	var result = webAlbum_loadPhoto(path, dataDivID);

	if (result == false) {
		var gallery = path + 'gallery.html';
		webAlbum_loader(gallery, dataDivID, null);
	}
}
