//Scripting for Primavera website. All code written by Sam Sampson. Many thanks to www.quirksmode.org for inspiration.

//Menu building function
function buildMenu(section){
	switch(section){
	case 'dates':
		venueLinks = document.getElementById('dates').getElementsByTagName('A');
		for(i=0;i<venueLinks.length;i++){
			venueLinks[i].onclick=showMenuItem;
		}
		hideMenuItems('dates');
		break;
	case 'cast':
		hideMenuItems('cast');
		castElems = document.getElementById('cast').getElementsByTagName('*');
		castLinks = new Array();
		j = 0;
		for(i=0;i<castElems.length;i++){
			if(castElems[i].nodeName == 'DIV'){
				castTitle = castElems[i].getElementsByTagName('H5')[0].innerHTML;
				castId = castElems[i].id;
				castLinks[j] = '\n<a href="#' + castId + '" class="' + castId + '">' + castTitle + '</a>';
				j++;
			}
			if(castElems[i].nodeName == 'H4'){
				castHeader = castElems[i].firstChild.innerHTML;
				castLinks[j] = '\n<h4>' + castHeader + '</h4>';
				j++;
			}
		}
		castMenu = document.createElement('DIV');
		castMenu.id = 'castMenu';
		castMenu.className = 'javaMenu';
		firstSubTitle = document.getElementById('cast').getElementsByTagName('H4')[0];
		document.getElementById('cast').insertBefore(castMenu,firstSubTitle);
		for(i=0;i<castLinks.length;i++){
			castMenu.innerHTML += castLinks[i];
		}
		castLinks = castMenu.getElementsByTagName('A');
		for(i=0;i<castLinks.length;i++){
			castLinks[i].onclick=showMenuItem;
		}
		break
	case 'reviews':
		hideMenuItems('reviews');
		reviewChilds = document.getElementById('reviews').childNodes;
		reviewDivs = new Array();
		reviewTitles = new Array();
		reviewIds = new Array();
		j = 0;
		for(i=0;i<reviewChilds.length;i++){
			if(reviewChilds[i].nodeName == 'DIV'){
				reviewDivs[j] = reviewChilds[i];
				reviewIds[j] = reviewChilds[i].id;
				reviewTitle = reviewChilds[i].getElementsByTagName('H4')[0].getElementsByTagName('SPAN')[0];
				reviewTitle = reviewTitle.innerHTML;
				reviewTitles[j] = reviewTitle;
				j++;
			}
		}
		reviewMenu = document.createElement('DIV');
		reviewMenu.id = 'reviewMenu';
		reviewMenu.className = 'javaMenu';
		document.getElementById('reviews').insertBefore(reviewMenu,reviewDivs[0]);
		reviewLinks = '';
		for(i=0;i<reviewTitles.length;i++){
			reviewLinks += '\n<a href="#' + reviewIds[i] + '" class="' + reviewIds[i] + '">' + reviewTitles[i] + '</a>';
		}
		reviewMenu.innerHTML = reviewLinks;
		reviewLinks = reviewMenu.getElementsByTagName('A');
		for(i=0;i<reviewLinks.length;i++){
			reviewLinks[i].onclick=showMenuItem;
		}
		break;
	}
}

//Hide menu items function
function hideMenuItems(section){
	switch(section){
	case 'dates':
		venueDivs = document.getElementById('venueInfo').getElementsByTagName('DIV');
		for(i=0;i<venueDivs.length;i++){
			venueDivs[i].style.display='none';
		}
		venueTitles = document.getElementById('venueInfo').getElementsByTagName('H3');
		venueTitles[0].style.display='none';
		break;
	case 'cast':
		titles = document.getElementById('cast').getElementsByTagName('H4');
		for(i=0;i<titles.length;i++){
			if(titles[i].parentNode.id != 'castMenu'){
				titles[i].style.display='none';
			}
		}
		castDivs = document.getElementById('cast').getElementsByTagName('DIV');
		for(i=0;i<castDivs.length;i++){
			if(castDivs[i].id != 'castMenu'){
				castDivs[i].style.display='none';
			}
		}
		break;
	case 'reviews':
		reviewChilds = document.getElementById('reviews').childNodes;
		for(i=0;i<reviewChilds.length;i++){
			if((reviewChilds[i].nodeName == 'DIV') && (reviewChilds[i].id != 'reviewMenu')){
				reviewChilds[i].style.display='none';
			}
		}
		break;
	}
}

//Reveal menu item function
function showMenuItem(){
	if(document.getElementById('dates')){
		hideMenuItems('dates');
		venueId = this.className;
		venueDiv = document.getElementById(venueId);
		venueDivs = venueDiv.getElementsByTagName('DIV');
		venueTitles = document.getElementById('venueInfo').getElementsByTagName('H3');
		venueTitles[0].style.display='block';
		for(i=0;i<venueDivs.length;i++){
			venueDivs[i].style.display='block';
		}
		venueDiv.style.display='block';
		return true;
	}
	if(document.getElementById('cast')){
		hideMenuItems('cast');
		castId = this.className;
		document.getElementById(castId).style.display='block';
		return true;
	}
	if(document.getElementById('reviews')){
		hideMenuItems('reviews');
		reviewId = this.className;
		document.getElementById(reviewId).style.display='block';
		return true;
	}
}

//Image viewing function (preparation)
function imageViewer(section){
	switch(section){
	case 'publicity':
		images = document.getElementById('publicityImages').getElementsByTagName('A');
		for(i=0;i<images.length;i++){
			images[i].onclick=viewImage;
		}
		break;
	case 'photos':
		images = document.getElementById('photos').getElementsByTagName('A');
		for(i=0;i<images.length;i++){
			images[i].onclick=viewImage;
		}
		break;
	}
}

//Image viewing function (execution)
function viewImage(){
	source = this.href;
	caption = this.title;
	if(document.getElementById('publicityImages')){
		parentDiv = 'publicityImages';
	}
	if(document.getElementById('photos')){
		parentDiv = 'photos';
		if(!document.getElementById('imageCaption')){
			imageCaption = document.createElement('H4');
			imageCaption.id='imageCaption';
			document.getElementById(parentDiv).appendChild(imageCaption);
		}
		imageCaption = document.getElementById('imageCaption');
		imageCaption.innerHTML = '';
		imageCaption.innerHTML = caption;
	}
	if(!document.getElementById('activeImage')){
		activeImage = document.createElement('IMG');
		activeImage.id='activeImage';
		document.getElementById(parentDiv).appendChild(activeImage);
	}
	activeImage = document.getElementById('activeImage');
	activeImage.src=source;
	activeImage.caption=caption;
	return false;
}

//Initiating function
function initiate(){
	if(document.getElementById){
		if(document.getElementById('dates')){
			buildMenu('dates');
		}
		if(document.getElementById('cast')){
			buildMenu('cast');
		}
		if(document.getElementById('reviews')){
			buildMenu('reviews');
		}
		if(document.getElementById('publicityImages')){
			imageViewer('publicity');
		}
		if(document.getElementById('photos')){
			imageViewer('photos');
		}
	}
}

window.onload=initiate;
