/* -------------------- Homegrown UCDH scripts ------------------------------------------------------------------------------------------------------------------------ */

var loc = new String(document.location);
var loch = new String(document.location.hash);

if (loch.length > 2 && loc.indexOf('%') != -1) {
	loch = unescape(loch).replace(/#/, '');
	document.location = 'index.html?rt=' + new Date().getTime() + '#' + loch;
}

var debugmode = false;

var printable = false;

function dalert(msg) {
	if (debugmode) alert(msg);
}

setDefault('active_secondarynav', null);
setDefault('active_secondarynav_title', null);
setDefault('active_metanarrative', null);
setDefault('active_metanarrative_title', null);
setDefault('active_contentpage', null);
setDefault('active_contentpage_title', null);
setDefault('displaypath', null);
setDefault('contentactive', false);
setDefault('caltimer', null);

document.applybehaviours = check_behaviours();


/* ------------------------------------------------------------------------------------------------------------------------------------------------------------------- */

function check_behaviours() {
	if (!document.createElement || !document.getElementById) {
		return false;
	}
	var allcookies = document.cookie;
	var pos = allcookies.indexOf('contribute=');
	if (pos != -1) {
		var start = pos + 11;
		var end = allcookies.indexOf(";",start);
		if (end == -1) {
			end = allcookies.length;
		}
		var value = allcookies.substring(start,end);
		if (value == 1) {
			return false;
		}
	}
	
	if (new String(document.location).indexOf('#printable') != -1) {
		return false;
	}
	
	return true;
}

function resize_contentarea() {
	if ($ES('div#contentcontainer').length > 0 && !printable) {
		var testheight = 0;
		var newheight = 0;

		if ($ES('div#metanarrativecontent').length > 0) {
			newheight = parseInt($('metanarrativecontent').getSize().size.y + 112);
		}
		if ($ES('div#textpagecontent').length > 0) {
			$('textpagecontent').style.height = 'auto';
			testheight = parseInt($('textpagecontent').getSize().size.y) + 160;
			newheight = testheight > newheight ? testheight : newheight;
		}
		if ($ES('div#tertiarynavcontainer').length > 0) {
			testheight = parseInt($('tertiarynavcontainer').getSize().size.y) + 140;
			newheight = testheight > newheight ? testheight : newheight;
		}
		if ($ES('div#mainphotocontainer').length > 0) {
			testheight = parseInt($('mainphotocontainer').getSize().size.y) + 40;
			newheight = testheight > newheight ? testheight : newheight;
		}
		if ($ES('div#calendarcontainer').length > 0) {
			testheight = parseInt($('interiorcontentcontainer').getSize().size.y) + 40;
			newheight = testheight > newheight ? testheight : newheight;
		}

		$('contentcontainer').style.height = newheight + 'px';
	}
}

function hide_photo() {
	if ($ES('div#mainphotocontainer').length > 0) {
		$('mainphotocontainer').style.zIndex = 10;
	}
	if ($ES('div#mainphotocaption').length > 0) {
		$('mainphotocaption').style.display = 'none';
	}
}

function add_content(target, content) {
	if ($ES('div#' + target).length > 0) {
		$(target).appendChild(content);
		$(target).style.display = 'block';
	}
}

function remove_content(target) {
	if ($ES('div#' + target).length > 0) {
		$(target).style.display = 'none';
		while ($(target).hasChildNodes()) {
			$(target).removeChild($(target).childNodes[0]);
		}
	}
}

function replace_content(target, content) {
	if ($ES('div#' + target).length > 0) {
		remove_content(target);
		add_content(target, content);
	}
}

function create_holdingcontainer(id) {
	var cont = document.createElement('div');
	cont.id = id;
	cont.className = 'holdingcontainer';
	document.getElementsByTagName('body')[0].appendChild(cont);
}

function update_secondarynav(caller) {
	if (active_secondarynav != null) {
		setClass(active_secondarynav, '', 'active');
	}
	if (caller != null) {
		setClass(caller.parentNode, 'active', '');
		active_secondarynav = caller.parentNode;
	} else {
		active_secondarynav = null;
	}
}

/* ------------------------------------------------------------------------------------------------------------------------------------------------------------------- */

function close_textpage() {
	dalert('Close textpage');
	if (contentactive) {
		prepare_textpage();
		clear_history('regulartext');
		reset_title('regulartext');
		
		if ($ES('div#metanarrative_text').length > 0) {
			$('metanarrative_text').setStyle('opacity', 1);
		} else {
			var dd = $ES('div', $('metanarrativecontent'));
			for (var d = 0; d < dd.length; d++) {
				if (dd[d].id == 'metanarrative_text' || dd[d].id == 'landing_text') {
					dd[d].setStyle('opacity', 1);
				}
			}
		}

		if ($ES('div#metanarrative_tertiarynav').length > 0) {
			var ht = $('metanarrative_tertiarynav').cloneNode(true);
			if ($ES('div#holder_tertiarynav').length > 0) {
				$('holder_tertiarynav').parentNode.removeChild($('holder_tertiarynav'));
			}
			replace_content('tertiarynavcontent', ht);
		} else {
			var dd = $ES('div', $('holder_tertiarynav'));
			for (var e = 0; e < dd.length; e++) {
				if (dd[e].id == 'metanarrative_tertiarynav') {
					var ht = dd[e].cloneNode(true);
					replace_content('tertiarynavcontent', ht);
				}
			}
		
		}
	}
	
	dalert('Action complete');

	initwindow('closesolotext');
}

function prepare_textpage() {
	$('textpagecontainer').style.display = 'none';
	remove_content('textpagecontent');
	
	contentactive = false;

	resize_contentarea();
}

function close_solotext() {
	dalert('Close solotext');
	update_secondarynav();
	clear_history('solotext');
	if ($ES('div#landing_text').length > 1) {
		$('landing_text').setStyle('opacity', 1);
	}
	close_textpage();
	reset_title('solotext');
}


/* -------------------- Level 2: metanarrative ------------------------------------------------------------------------------------------------------------------------ */

function load_metanarrative(caller, cont) {
	dalert('Load metanarrative');
	if (caller.getAttribute('href').indexOf('#') != -1) {
		return false;
	}
	
	if ($ES('#holder_landingtext').length == 0) {
		create_holdingcontainer('holder_landingtext');
		if ($ES('#landing_text').length > 0) {
			var ht = $('landing_text').cloneNode(true);
			add_content('holder_landingtext', ht);
		}
		$('holder_landingtext').style.display = 'none';
	}
	
	create_holdingcontainer('holder_contentloader');

	if ($ES('div#metanarrative_text').length > 0) {
		$('metanarrative_text').setAttribute('id', 'mntext');
	}
	
	if ($ES('div#metanarrative_tertiarynav').length > 0) {
		$('metanarrative_tertiarynav').setAttribute('id', '');
	}

	var runtime = "rt=" + new Date().getTime();
	var ajx = new Ajax(caller.getAttribute('href') + '?' + runtime, {method: 'get', onComplete: function() { complete_metanarrative(caller, cont) }, update: $('holder_contentloader'), evalScripts: true}).request();
}

function complete_metanarrative(caller, cont) {
	dalert('Complete metanarrative');
	set_title('holder_contentloader', 'metanarrative');
	set_history(caller, 'metanarrative');
	disable_stylesheet('textpage');	
	deactivate_photo();
	active_metanarrative = caller.getAttribute('href').substring(caller.getAttribute('href').lastIndexOf('/') + 1);

	close_textpage();
	update_secondarynav(caller);
	
	if ($ES('div#landing_text').length > 0) {
		$('landing_text').setStyle('opacity', 1);
	}
	
	if ($ES('div#metanarrative_tertiarynav').length > 0) {
		var tertfrag = $('metanarrative_tertiarynav').cloneNode(true);
	
		replace_content('tertiarynavcontent', tertfrag);
		$('tertiarynavcontainer').style.display = 'block';
	}
	
	var textfrag = $('metanarrative_text').cloneNode(true);
	replace_content('metanarrativecontent', textfrag);

	$('holder_contentloader').parentNode.removeChild($('holder_contentloader'));

	if ($ES('div#leftcontainer_listing').length > 0) {
		$('leftcontainer_listing').setAttribute('id', 'leftcontainer_metanarrative');
	}
	
	resize_contentarea();
	
	initwindow('metanarrative');

	dalert('Action complete');
	if (cont != null && cont != '') {
		continue_load(cont);
	}
}


/* -------------------- Level 2: solotext ----------------------------------------------------------------------------------------------------------------------------- */

function load_solotext(caller) {
	dalert('Load solotext');
	if (caller.getAttribute('href').indexOf('#') != -1) {
		return false;
	}
	
	create_holdingcontainer('holder_contentloader');
	
	if ($ES('div#solotext_text').length > 0) {
		$('solotext_text').setAttribute('id', '');
	}

	var runtime = "rt=" + new Date().getTime();
	var ajx = new Ajax(caller.getAttribute('href') + '?' + runtime, {method: 'get', onComplete: function() { complete_solotext(caller) }, update: $('holder_contentloader'), evalScripts: true}).request();
}

function complete_solotext(caller) {
	dalert('Complete solotext');
	set_title('holder_contentloader', 'solotext');
	set_history(caller, 'solotext');
	disable_stylesheet('textpage');	
	active_metanarrative = '';
	active_contentpage = caller.getAttribute('href').substring(caller.getAttribute('href').lastIndexOf('/') + 1);
	deactivate_photo();

	update_secondarynav(caller);

	remove_content('tertiarynavcontent');
	$('tertiarynavcontainer').style.display = 'none';

	var textfrag = $('solotext_text').cloneNode(true);
	
	replace_content('textpagecontent', textfrag);
	$('textpagecontainer').style.display = 'block';
	
	if ($ES('div#landing_text').length > 0) {
		var ht = $('landing_text').cloneNode(true);
		if ($ES('#holder_landingtext').length > 0) {
			$('holder_landingtext').parentNode.removeChild($('holder_landingtext'));
		}
		replace_content('metanarrativecontent', ht);
	} else if ($ES('div#holder_landingtext').length > 0) {
		var dd = $ES('div', $('holder_landingtext'));
		for (var e = 0; e < dd.length; e++) {
			if (dd[e].id == 'landing_text') {
				var ht = dd[e].cloneNode(true);
				replace_content('metanarrativecontent', ht);
			}
		}
	}
	
	if ($ES('div#landing_text').length > 0) {
		$('landing_text').setStyle('opacity', 0.2);
	} else {
		var dd = $ES('div', $('metanarrativecontent'));
		for (var e = 0; e < dd.length; e++) {
			if (dd[e].id == 'landing_text') {
				dd[e].setStyle('opacity', 0.2);
				break;
			}
		}
	}
	
	if ($ES('#mainphotocontainer').length > 0) {
		$('mainphotocontainer').style.zIndex = 10;
	}
	
	contentactive = true;
	$('holder_contentloader').parentNode.removeChild($('holder_contentloader'));

	if ($ES('#leftcontainer_listing').length > 0) {
		$('leftcontainer_listing').setAttribute('id', 'leftcontainer_metanarrative');
	}
	
	resize_contentarea();

	initwindow('solotext');
	dalert('Action complete');
	
}


/* -------------------- Level 2: staff list --------------------------------------------------------------------------------------------------------------------------- */

function load_stafflist(caller, cont) {
	dalert('Load stafflist');
	if (caller.getAttribute('href').indexOf('#') != -1) {
		return false;
	}
	
	if ($ES('div#holder_landingtext').length == 0) {
		create_holdingcontainer('holder_landingtext');
		if ($ES('div#landing_text').length > 0) {
			var ht = $('landing_text').cloneNode(true);
			add_content('holder_landingtext', ht);
		}
		$('holder_landingtext').style.display = 'none';
	}
	
	create_holdingcontainer('holder_contentloader');

	if ($ES('div#stafflist_text').length > 0) {
		$('stafflist_text').setAttribute('id', 'sltext');
	}
	
	var runtime = "rt=" + new Date().getTime();
	var ajx = new Ajax(caller.getAttribute('href') + '?' + runtime, {method: 'get', onComplete: function() { complete_stafflist(caller, cont) }, update: $('holder_contentloader'), evalScripts: true}).request();
}

function complete_stafflist(caller, cont) {
	dalert('Complete stafflist');
	set_title('holder_contentloader', 'stafflist');
	set_history(caller, 'stafflist');
	disable_stylesheet('textpage');	
	active_metanarrative = caller.getAttribute('href').substring(caller.getAttribute('href').lastIndexOf('/') + 1);
	deactivate_photo();

	close_textpage();

	remove_content('tertiarynavcontent');
	$('tertiarynavcontainer').style.display = 'none';

	update_secondarynav(caller);
	
	if ($ES('div#landing_text').length > 0) {
		$('landing_text').setStyle('opacity', 1);
	}
	
	var textfrag = $('stafflist_text').cloneNode(true);
	replace_content('metanarrativecontent', textfrag);

	$('holder_contentloader').parentNode.removeChild($('holder_contentloader'));
	
	if ($ES('div#leftcontainer_metanarrative').length > 0) {
		$('leftcontainer_metanarrative').setAttribute('id', 'leftcontainer_listing');
	}
	
	resize_contentarea();
	
	initwindow('stafflist');

	dalert('Action complete');
	if (cont != null && cont != '') {
		continue_load(cont);
	}
}


/* -------------------- Level 3: regular text ------------------------------------------------------------------------------------------------------------------------- */

function load_regulartext(caller) {
	dalert('Load regulartext');
	if (caller.getAttribute('href').indexOf('#') != -1) {
		return false;
	}
	
	prepare_textpage();
	
	if ($ES('div#holder_tertiarynav').length == 0) {
		create_holdingcontainer('holder_tertiarynav');
		
		if ($ES('div#metanarrative_tertiarynav').length > 0) {
			var ht = $('metanarrative_tertiarynav').cloneNode(true);
			add_content('holder_tertiarynav', ht);
			$('holder_tertiarynav').style.display = 'none';
		} else {
			var dd = $ES('div');
			for (var d = 0; d < dd.length; d++) {
				if (dd[d].id == 'metanarrative_tertiarynav') {
					var ht = dd[d].cloneNode(true);
					add_content('holder_tertiarynav', ht);
					break;
				}
			}
		}
		
/*		try {
			var ht = $('metanarrative_tertiarynav').cloneNode(true);
			add_content('holder_tertiarynav', ht);
			$('holder_tertiarynav').style.display = 'none';
		} catch(err) {
			var dd = document.getElementsByTagName('div');
			for (var d = 0; d < dd.length; d++) {
				if (dd[d].id == 'metanarrative_tertiarynav') {
					var ht = dd[d].cloneNode(true);
					add_content('holder_tertiarynav', ht);
					$('holder_tertiarynav').style.display = 'none';
					break;
				}
			}
		}*/
	}
	

	create_holdingcontainer('holder_contentloader');
	var runtime = "rt=" + new Date().getTime();
	
	var ajx = new Ajax(caller.getAttribute('href') + '?' + runtime, {method: 'get', onComplete: function() { complete_regulartext(caller) }, update: $('holder_contentloader'), evalScripts: true}).request();
}

function complete_regulartext(caller) {
	dalert('Complete regulartext');
	set_title('holder_contentloader', 'regulartext');
	set_history(caller, 'regulartext');
	active_contentpage = caller.getAttribute('href').substring(caller.getAttribute('href').lastIndexOf('/') + 1);
	
	deactivate_photo();
	remove_content('tertiarynavcontent');
	
	
	var contentfrag = $('regulartext_text').cloneNode(true);
	replace_content('textpagecontent', contentfrag);
	
 	if ($ES('div#regulartext_tertiarynav').length > 0) {
		var navfrag = $('regulartext_tertiarynav').cloneNode(true);
		replace_content('tertiarynavcontent', navfrag);
		$('tertiarynavcontainer').style.display = 'block';
	} else {
		$('tertiarynavcontainer').style.display = 'none';
	}
	
	$('textpagecontainer').style.display = 'block';
	
	if ($ES('div#metanarrative_text').length > 0) {
		$('metanarrative_text').setStyle('opacity', 0.2);
	} else {
		var dd = $ES('div', $('metanarrativecontent'));
		for (var e = 0; e < dd.length; e++) {
			if (dd[e].id == 'metanarrative_text') {
				dd[e].setStyle('opacity', 0.2);
				break;
			}
		}
	}
	
	if ($ES('div#mainphotocontainer').length > 0) {
		$('mainphotocontainer').style.zIndex = 10;
	}
	
	contentactive = true;
	
	$('holder_contentloader').parentNode.removeChild($('holder_contentloader'));

	resize_contentarea();
	
	initwindow('regulartext');
	dalert('Action complete');
}


/* -------------------- Level 3: listing text ------------------------------------------------------------------------------------------------------------------------- */

function load_listingtext(caller) {
	dalert('Load listingtext');
	if (caller.getAttribute('href').indexOf('#') != -1) {
		return false;
	}
	
	prepare_textpage();
	
	create_holdingcontainer('holder_contentloader');
	var runtime = "rt=" + new Date().getTime();
	var ajx = new Ajax(caller.getAttribute('href') + '?' + runtime, {method: 'get', onComplete: function() { complete_listingtext(caller) }, update: $('holder_contentloader'), evalScripts: true}).request();
}

function complete_listingtext(caller) {
	dalert('Complete listingtext');
	set_title('holder_contentloader', 'listingtext');
	set_history(caller, 'regulartext');
	disable_stylesheet('textpage');	
	active_contentpage = caller.getAttribute('href').substring(caller.getAttribute('href').lastIndexOf('/') + 1);
	deactivate_photo();
 
	var contentfrag = $('listingtext_text').cloneNode(true);
	replace_content('textpagecontent', contentfrag);
	resize_contentarea();
	
	$('textpagecontainer').style.display = 'block';

	if ($ES('div#mainphotocontainer').length > 0) {
		$('mainphotocontainer').style.zIndex = 10;
	}
	
	contentactive = true;
	
	$('holder_contentloader').parentNode.removeChild($('holder_contentloader'));
	resize_contentarea();
	
	var scrolly = typeof window.pageYOffset != 'undefined' ? window.pageYOffset : document.documentElement.scrollTop;
	
	if (scrolly > 320) {
		scrollTo(0, 320);
	}
	
	initwindow('listingtext');
	
	dalert('Action complete');
}


/* ------------------------------------------------------------------------------------------------------------------------------------------------------------------- */

function set_title(loader, type) {
	if ($(loader).getElementsByTagName('title').length > 0) {
		var newtitle = $(loader).getElementsByTagName('title')[0].firstChild.nodeValue;
	} else {
		if ($('holder_title')) {
			var newtitle = ($('holder_title').firstChild.nodeValue);
		}
	}
	switch (type) {
		case 'metanarrative':
		case 'solotext':
		case 'stafflist':
			if (active_secondarynav_title == null) {
				active_secondarynav_title = document.title;
			}
			active_metanarrative_title = newtitle;
			document.title = newtitle;
			break;
		case 'regulartext':
		case 'listingtext':
			active_contentpage_title = document.title;
			document.title = newtitle;
			break;
	}
}

function reset_title(type) {
	switch (type) {
		case 'solotext':
			if (active_secondarynav_title != null) {
				document.title = active_secondarynav_title;
			}
			break;
		case 'regulartext':
			if (active_metanarrative_title != null) {
				document.title = active_metanarrative_title;
			}
			break;
		default:
			break;
	}
}


/* ------------------------------------------------------------------------------------------------------------------------------------------------------------------- */

function activate_photo() {
	if ($ES('div#mainphotocontainer').length > 0) {
		if ($('mainphotocontainer').style.zIndex == 80) {
			deactivate_photo();
			dalert("Deactivate photo");
			return;
		}
		$('mainphotocontainer').style.zIndex = 80;
		dalert("Activate photo");
	}
	if ($ES('div#mainphotocaption').length > 0) {
		$('mainphotocaption').style.display = 'block';
	}
}

function deactivate_photo() {
	if ($('mainphotocontainer')) {
		$('mainphotocontainer').style.zIndex = 10;
	}
	if ($('mainphotocaption')) {
		$('mainphotocaption').style.display = 'none';
	}
}


/* ------------------------------------------------------------------------------------------------------------------------------------------------------------------- */

function init_textpage() {
	if (document.location.hash.indexOf('printable') != -1) {
		printable = true;
		set_printstyle();
//		window.addEvent('load', function() { set_printstyle(); });
	} else if (document.applybehaviours) {
		display_redirect(displaypath);
	}
}

function print_textpage() {
	if (active_contentpage == null) {
		active_contentpage = document.location;
	}
	var newwin = window.open(active_contentpage + '#printable','printwindow','scrollbars=yes,resizable=yes,toolbar=no,menubar=no,location=yes');
	if (newwin.focus) {
		newwin.focus();
	}
}

function set_printstyle() {
	dalert('Setting print style');
	choose_stylesheet('printwindow');
}

function choose_stylesheet(title, randomize) {
	var i, cacheobj, altsheets=[''];
	for (i = 0; (cacheobj = document.getElementsByTagName('link')[i]); i++) {
		if (cacheobj.getAttribute('rel').toLowerCase() == 'alternate stylesheet' && cacheobj.getAttribute('title')) {
			cacheobj.disabled = true;
			altsheets.push(cacheobj);
			if (cacheobj.getAttribute('title') == title) {
				cacheobj.disabled = false;
			}
		}
	}
	if (typeof randomize != 'undefined') {
		var randomnumber = Math.floor(Math.random() * altsheets.length);
		altsheets[randomnumber].disabled = false;
	}
	return (typeof randomize != 'undefined' && altsheets[randomnumber] != '') ? altsheets[randomnumber].getAttribute('title') : '';
}

function disable_stylesheet(title) {
	var ii = document.getElementsByTagName('link');
	for (var i = 0; i < ii.length; i++) {
		if (ii[i].title = 'textpage') {
			ii[i].disabled = true;
		}
		break;
	}
}


/* ------------------------------------------------------------------------------------------------------------------------------------------------------------------- */

function display_redirect(displaypath) {
	if (displaypath != '') {
		self.location = './#' + displaypath;
	}
}


/* ------------------------------------------------------------------------------------------------------------------------------------------------------------------- */

function copy_footer() {
	if ($ES('div#footercontainer').length > 0) {
		var footfrag = $('footercontainer').cloneNode(true);
		footfrag.id = 'printfoot';
		if ($('contentcontainer')) {
			$('contentcontainer').appendChild(footfrag);
		}
	}
}


/* ------------------------------------------------------------------------------------------------------------------------------------------------------------------- */

function calendar_initsize() {
	alert("!");
}

function calendar_resize() {
	clearInterval(caltimer);
	caltimer = setInterval('resize_contentarea()', 500);
}
