// JavaScript Document

//AJAX functions
//By Gregory Wild-Smith
var headline = document.getElementById('headline');
var content = document.getElementById('content');

var ajax = new sack();
var ajax2 = new sack();

function whenLoading(){
	var content = document.getElementById('content');
	content.innerHTML = '<p>Requesting Photo(s)...</p>';
}

function whenLoaded(){
	var content = document.getElementById('content');
	content.innerHTML = '<p>Photo(s) Requested...</p>';
}

function whenInteractive(){
	var content = document.getElementById('content');	
	content.innerHTML = '<p>Retrieving Photo(s)...</p>';
}

function retrievedAlbum(){
	var content = document.getElementById('content');
	var headline = document.getElementById('headline');	
	if (ajax.responseStatus){
		var data = ajax.response;
		var datasplit = data.split('%%%');
		headline.innerHTML = datasplit[0];			
		content.innerHTML = datasplit[1];
		var allPhotoLinks = document.getElementsByTagName('a');
		for (var j = 0; j < allPhotoLinks.length; j++) {
			var actlink = allPhotoLinks[j];
			if ((' ' + actlink . className + ' ').indexOf(' thumbnail ') != -1) {
				addEvent(actlink, 'mouseup', photoLinkListener, false);	
			}
		}		
	} else {
		content.innerHTML = '<p>Error retrieving Photos!!!</p>';
	}
}

function retrievedPhoto(){
	var content = document.getElementById('content');
	var headline = document.getElementById('headline');	
	if (ajax2.responseStatus){
		var data = ajax2.response;
		var datasplit = data.split('%%%');	
		content.innerHTML = datasplit[2];		
		var allLinks = document.getElementsByTagName('a');
		for (var l = 0; l < allLinks.length; l++) {
			var actlink = allLinks[l];
			if ((' ' + actlink . className + ' ').indexOf(' previous ') != -1) {
				addEvent(actlink, 'mouseup', previousPhotoListener, false);	
			}
			if ((' ' + actlink . className + ' ').indexOf(' next ') != -1) {
				addEvent(actlink, 'mouseup', nextPhotoListener, false);	
			}
		}	
	} else {
		content.innerHTML = '<p class="emptypara">Error retrieving Photos!!!</p>';
	}
}

//cross browser event handling for IE5+, NS6+ and Mozilla/Gecko
//By Scott Andrew
function addEvent(obj, evType, fn, useCapture) {
	if (obj.addEventListener) {
		obj.addEventListener(evType, fn, useCapture);
		return true;
	} else if (obj.attachEvent) {
		var r = obj.attachEvent('on' + evType, fn);
		return r;
	} else {
		obj['on' + evType] = fn;
	}
}

addEvent(window, 'load', Init, false);

function Init() {
	if (!document.getElementsByTagName)
		return;
	var allAnchors = document.getElementsByTagName('a');
	for (var i = 0; i < allAnchors.length; i++) {
		var actanchor = allAnchors[i];
		if ((' ' + actanchor . className + ' ').indexOf(' photolink ') != -1) {
			addEvent(actanchor, 'mouseup', linkListener, false);	
		}
	}		
}

function ascendDOM(e, target) {
	while (e.nodeName.toLowerCase() != target && e.nodeName.toLowerCase() != 'html') {
		e = e.parentNode;
	}
	return (e.nodeName.toLowerCase() == 'html') ? null : e;
}

function linkListener(e) {
	var target = window.event ? window.event.srcElement : e ? e.target : null;
	if (!target) {
		return;
	}
	
	target = ascendDOM(target, 'a');
	if (target == null) {
		return;
	}
	
	// Get Anchor ID to send as subject name/value pair	
	var anchorID = target.id;
	
	ajax.setVar("content", 'GET'); 
	ajax.setVar("subject", anchorID); 
	ajax.requestFile = "getPhoto.php";
    ajax.method = 'GET';
	ajax.element = 'content';
	ajax.onLoading = whenLoading;
	ajax.onLoaded = whenLoaded; 
	ajax.onInteractive = whenInteractive;
	ajax.onCompletion = retrievedAlbum;
	ajax.runAJAX();	
}

function photoLinkListener(e) {
	var target = window.event ? window.event.srcElement : e ? e.target : null;
	if (!target) {
		return;
	}
	
	target = ascendDOM(target, 'a');
	if (target == null) {
		return;
	}

	// Get Anchor ID to send as photo name/value pair	
	var anchorID = target.id;

	// Get Subject ID to send as subject name/value pair	
	var allH1 = document.getElementsByTagName('h1');
	for (var i = 0; i < allH1.length; i++) {
		var actH1 = allH1[i];
		if ((' ' + actH1 . className + ' ').indexOf(' headline ') != -1) {
			subjectID = actH1.id;	
		}
	}		
	
	ajax2.setVar("content", 'GET'); 
	ajax2.setVar("photo", anchorID);
	ajax2.setVar("subject", subjectID); 	
	ajax2.requestFile = "getPhoto.php";
    ajax2.method = 'GET';
	ajax2.element = 'content';
	ajax2.onLoading = whenLoading;
	ajax2.onLoaded = whenLoaded; 
	ajax2.onInteractive = whenInteractive;
	ajax2.onCompletion = retrievedPhoto;
	ajax2.runAJAX();	
}

function previousPhotoListener(e) {
	var target = window.event ? window.event.srcElement : e ? e.target : null;
	if (!target) {
		return;
	}
	
	// Get Anchor ID to send as photo name/value pair	
	var anchorID = target.id;

	// Get Subject ID to send as subject name/value pair	
	var allH1 = document.getElementsByTagName('h1');
	for (var i = 0; i < allH1.length; i++) {
		var actH1 = allH1[i];
		if ((' ' + actH1 . className + ' ').indexOf(' headline ') != -1) {
			subjectID = actH1.id;	
		}
	}	
	
	ajax2.setVar("content", 'GET'); 
	ajax2.setVar("photo", anchorID);
	ajax2.setVar("subject", subjectID); 	
	ajax2.requestFile = "getPhoto.php";
    ajax2.method = 'GET';
	ajax2.element = 'content';
	ajax2.onLoading = whenLoading;
	ajax2.onLoaded = whenLoaded; 
	ajax2.onInteractive = whenInteractive;
	ajax2.onCompletion = retrievedPhoto;
	ajax2.runAJAX();	
}

function nextPhotoListener(e) {
	var target = window.event ? window.event.srcElement : e ? e.target : null;
	if (!target) {
		return;
	}
	
	// Get Anchor ID to send as photo name/value pair	
	var anchorID = target.id;

	// Get Subject ID to send as subject name/value pair	
	var allH1 = document.getElementsByTagName('h1');
	for (var i = 0; i < allH1.length; i++) {
		var actH1 = allH1[i];
		if ((' ' + actH1 . className + ' ').indexOf(' headline ') != -1) {
			subjectID = actH1.id;	
		}
	}	
	
	ajax2.setVar("content", 'GET'); 
	ajax2.setVar("photo", anchorID);
	ajax2.setVar("subject", subjectID); 	
	ajax2.requestFile = "getPhoto.php";
    ajax2.method = 'GET';
	ajax2.element = 'content';
	ajax2.onLoading = whenLoading;
	ajax2.onLoaded = whenLoaded; 
	ajax2.onInteractive = whenInteractive;
	ajax2.onCompletion = retrievedPhoto;
	ajax2.runAJAX();
}