/*
 ******************************************************************
 *
 * Book Transcription Script for KirkbrideBuildings.com
 * Author: Ethan McElroy (admin@kirkbridebuildings.com)
 * Date Created: 03/2006
 *
 * Retrieves chapter text from Dr. Kirkbride's book which is stored
 * in separate XML files using AJAX. There is a PHP fallback built 
 * in to the book page in case JavaScript is disabled.
 *
 * Book page: http://www.kirkbridebuildings.com/about/cogahi/
 *
 ******************************************************************
*/

// preload 'opened' and 'closed' icons for chapter sections
var preImage1 = new Image(9,9);
preImage1.src = 'http://www.kirkbridebuildings.com/i/plus.gif';
var preImage2 = new Image(9,9);
preImage2.src = 'http://www.kirkbridebuildings.com/i/minus.gif';

// IDs of chapter sections on page
var chapterLinkArray = new Array('itox','xitoxx','xxitoxxx','xxxitoxl','xlitol','litolx');

function showHide(divID) {
	// only show active chapter's parent section
	for (i = 0; i < chapterLinkArray.length; i++) {
		if (divID == chapterLinkArray[i]) {
			if (document.getElementById(divID).style.display != 'block') {
				open(divID);
			} else {
				close(divID);
			}
		} else {
			if (document.getElementById(chapterLinkArray[i]).style.display == 'block') {
				close(chapterLinkArray[i]);
			}
		}
	}
}

function close(divID) {
	var indicator = 'ind' + divID;
	document.getElementById(divID).style.display = 'none';
	document.getElementById(indicator).src = '../../../i/plus.gif';
	document.getElementById('main').style.height = 'auto';
	return true;
}

function open(divID) {
	var indicator = 'ind' + divID;
	document.getElementById(divID).style.display = 'block';
	document.getElementById(indicator).src = '../../../i/minus.gif';
	document.getElementById('main').style.height = 'auto';
	return true;
}

function getChapter(url) {
	// get chapter number and determine parent section
	var chapter = parseFloat(url);
	var section;
	if (chapter < 11) {
		section = 0;
	} else if (chapter > 10 && chapter < 21) {
		section = 1;
	} else if (chapter > 20 && chapter < 31) {
		section = 2;
	} else if (chapter > 30 && chapter < 41) {
		section = 3;
	} else if (chapter > 40 && chapter < 51) {
		section = 4;
	} else if (chapter > 50 && chapter < 61) {
		section = 5;
	}
	var section_id = chapterLinkArray[section];
	closeAll();
	showHide(section_id);
	var prev_chapter = chapter - 1;
	var next_chapter = chapter + 1;
	url = 'chapters/' + url + '.xml';
	var chapter_xml;
	var http_request = false;

	// initialize request
	try {
		http_request = new XMLHttpRequest();
		if (http_request.overrideMimeType) {
			http_request.overrideMimeType('text/xml');
		}
	}
	catch (e) {
		try {
			http_request = new ActiveXObject("Msxml2.XMLHTTP");
		}
		catch(e) {
			try {
				http_request = new ActiveXObject("Microsoft.XMLHTTP");
			}
			catch(e) {
				alert("This page will not function properly in your browser. Please use a different browser to view this page, or disable JavaScript.");
				return false;
			}
		}
	}

	if (!http_request) {
		alert("This page will not function properly in your browser. Please use a different browser to view this page, or disable JavaScript");
		return false;
	}

	// prepare to update 'prev' and 'next' links
	var controls_content = '';
	if (prev_chapter > 0) {
		controls_content += '<a href="index.html?c=' + prev_chapter + '" onclick="fadeOut(0, ' + prev_chapter + '); return false;">Prev Chapter</a>';
	}
	if ((prev_chapter > 0) && (next_chapter < 61)) {
		controls_content += ' | ';
	}
	if (next_chapter < 61) {
		controls_content += '<a href="index.html?c=' + next_chapter + '" onclick="fadeOut(0, ' + next_chapter + '); return false;">Next Chapter</a>';
	}

	http_request.onreadystatechange = function() { getChapterContent(http_request, controls_content); };
	http_request.open('GET', url, true);
	http_request.send();
}

function getChapterContent(http_request, controls_content) {
	if (http_request.readyState == 4) {
		if (http_request.status == 200) {
			// get chapter XML
			chapter_xml = http_request.responseXML;
			// chapter title
			var title_node = chapter_xml.getElementsByTagName('title').item(0);
			var chapter_title = title_node.firstChild.data;
			// chapter number
			var number_node = chapter_xml.getElementsByTagName('number').item(0);
			var chapter_number = number_node.firstChild.data;
			// put it all together
			var chapter_text = "<h3>CHAPTER " + chapter_number + "<br />\n" + chapter_title + "</h3>\n";

			// get paragraphs content
			var paragraph_nodes = chapter_xml.getElementsByTagName('p');
			for (i = 0; i < paragraph_nodes.length; i++) {
				if (i == 0) {
					// special styling for first paragraph
					var first_paragraph = paragraph_nodes.item(i).firstChild.data;
					var word_array = first_paragraph.split(' ');
					var first_word = word_array[0];
					var first_word = first_word.toUpperCase();
					var first_word_array = first_word.split('');
					var first_letter = first_word_array[0];
					var first_letter = '<span style="font-size: 1.2em;">' + first_letter + '</span>';
					first_word_array[0] = first_letter;
					first_word = first_word_array.join('');
					word_array[0] = first_word;
					first_paragraph = word_array.join(' ');
					chapter_text += '<p class="first">' + first_paragraph + '</p>\n';
				} else {
					chapter_text += '<p>' + paragraph_nodes.item(i).firstChild.data + '</p>\n';
				}
			}
			chapter_text += '<p id="controls">' + controls_content + '</p>';
			chapter_text += '<p class="end"></p>';

			// insert content, adjust page, fade in
			document.getElementById('rightCol').innerHTML = chapter_text;
			document.getElementById('main').style.height = 'auto';
			window.scroll(0, 0);
			fadeIn(0);
			pageTracker._trackPageview("/about/cogahi/index.html?c=" + chapter_number);
			initLightbox();
		} else {
			alert("There was a problem with the request.");
		}
	}
	
}

// fades out chapter content
function fadeOut(i, chapter) {
	var colors = new Array('503010','666633','666666','999966','999999','cccccc','ffffff');
	var chapter_count = 60;
	document.getElementById('rightCol').style.color = '#' + colors[i];
	i++;
	var timer = setTimeout("fadeOut(" + i + ", '" + chapter + "')", 100);
	if (i == colors.length) {
		clearTimeout(timer);
		getChapter(chapter);
	}
	// underline current chapter
	for (j = 1; j <= chapter_count; j++) {
		var chapter_id = 'chapter_' + j;
		var parentID = chapter_id + '.parent';
		if (chapter == j) {
			document.getElementById(chapter_id).parentNode.style.borderBottom = 'dashed 1px #999977';
		} else {
			document.getElementById(chapter_id).parentNode.style.borderBottom = 'none';
		}
	}
}

// fades in chapter content
function fadeIn(i) {
	var colors = new Array('ffffff','cccccc','999999','999966','666666','666633','503010');
	document.getElementById('rightCol').style.color = '#' + colors[i];
	i++;
	var timer = setTimeout("fadeIn(" + i + ")", 100);
	if (i == colors.length) {
		clearTimeout(timer);
	}
}

// closes all sections
function closeAll() {
	for (i = 0; i < chapterLinkArray.length; i++) {
		close(chapterLinkArray[i]);
	}
}

window.onload = closeAll;
