// JavaScript Document

var buildingServices = ['forensics','sustainable','diagnostics','analysis','disaster','multimedia'];
var engineeringServices = ['mep','evaluation','construction','compliance','safety','aim'];
var environmentalServices = ['hygiene','ieq','moisture','asbestos','sampling'];
var services = [buildingServices,engineeringServices,environmentalServices];
var serviceAreas = ['buildingsciences','engineering','environmental'];
var buildingServices_names = ['Building Forensics','Sustainable Building Design','Building Diagnostics','Materials Analysis','Disaster Recovery Planning','Multimedia Solutions'];
var engineeringServices_names = ['MEP Engineering','Facility Evaluation','Construction Management','Code Compliance','Life Safety','Asset Inventory Management'];
var environmentalServices_names = ['Industrial Hygiene','Indoor Environmental Quality','Moisture Dynamics & Mold','Asbestos','Sampling'];
var serviceNames = [buildingServices_names,engineeringServices_names,environmentalServices_names];
var filteredCases, filteredCases_service, filteredCases_serviceLinks;

var sliding;
var caseURL = [];
var currentPage = [1,1,1];
var caseIndex, currPage, servicesIndex;
var totalPages, activePage;


function findIndex()
{
	caseURL = window.location.search.substring(1).split("&");
	//alert(caseURL);
	
	caseIndex = 0;
	currPage = 1;
	servicesIndex = 0;

	if (caseURL != '') {
		caseIndex = caseURL[1]-1;				// Set Case Study Number
		currPage = parseInt(caseURL[1]);		// Set Current Page
		servicesIndex = parseInt(caseURL[0]);	// Set Service Area
		
		currentPage[servicesIndex] = currPage;
		//alert(currentPage);
	}
}


function filterCases(servicesIndex)
{
	filteredCases = [];

	var cat1 = xmlDoc.getElementsByTagName("CATEGORY1");
	var cat2 = xmlDoc.getElementsByTagName("CATEGORY2");
	var cat3 = xmlDoc.getElementsByTagName("CATEGORY3");
	var cat4 = xmlDoc.getElementsByTagName("CATEGORY4");
	var cats = [cat1,cat2,cat3,cat4];
	var catsLength = cats.length;
	var cat1Length = cat1.length;
	
	var filterTest;
	var i, j, k, m;	// Loop counter

	for (k=0; k<catsLength; k++) {												// Check all 4 Category items in order of priority
		for (i=0; i<cat1Length; i++) {											// Check all of CategoryN items in all the cases
			filterTest = cats[k][i].firstChild.data;							// Set filterTest to value of CategoryN item
			for (j=0; j<services[servicesIndex].length; j++) {					// Core service array called to check filterTest against
				if (filterTest == services[servicesIndex][j]) {
					for (m=0; m<filteredCases.length; m++) {					// Search filterCases for repeats
						if (i == filteredCases[m]) { break; }					// If repeat index is found then break
					}
					if (m == filteredCases.length) { filteredCases.push(i); }	// If index is not in array, then match is added to filtered index array
				}
			}
		}
	}
	//alert(filteredCases);
}

function filterCases_service(whichService)
{
	filteredCases_service = [];
	filteredCases_serviceLinks = [];
	
	var cat1 = xmlDoc.getElementsByTagName("CATEGORY1");
	var cat2 = xmlDoc.getElementsByTagName("CATEGORY2");
	var cat3 = xmlDoc.getElementsByTagName("CATEGORY3");
	var cat4 = xmlDoc.getElementsByTagName("CATEGORY4");
	var cats = [cat1,cat2,cat3,cat4];
	var catsLength = cats.length;
	
	var filterTest;
	var i, k;	// Loop counter

	for (k=0; k<catsLength; k++) {												// Check all 4 Category items in order of priority
		for (i=0; i<filteredCases.length; i++) {								// Check all of CategoryN items in all the cases
			filterTest = cats[k][filteredCases[i]].firstChild.data;				// Set filterTest to value of CategoryN item
			if (filterTest == whichService) { 
				filteredCases_service.push(filteredCases[i]);					// Match is added to filtered index array
				filteredCases_serviceLinks.push(i);
			}
		}
	}
	//alert(filteredCases_service);
}


function setTitles()
{
	var coreServiceTitle;
	switch(servicesIndex) {
		case 0:  coreServiceTitle = "Building Sciences"; break;
		case 1:  coreServiceTitle = "Engineering"; break;
		case 2:  coreServiceTitle = "Environmental Consulting"; break;
		default: coreServiceTitle = "Building Sciences"; break;
	}
	document.title = /*document.title+*/"Morse Zehnter Associates - Case Studies: "+coreServiceTitle;
	document.getElementById("breadcrumb-type").innerHTML = coreServiceTitle;
	document.getElementById("type").innerHTML = ": "+coreServiceTitle;
}

function setLocalNav()
{
	//var coreServiceTitle;
	switch(servicesIndex) {
		case 0:  document.getElementById("casestudies").className = "building"; break;
		case 1:  document.getElementById("casestudies").className = "engineering"; break;
		case 2:  document.getElementById("casestudies").className = "environment"; break;
		default: document.getElementById("casestudies").className = "building"; break;
	}
}


function createIndex(servicesIndex)
{
	var filteredCasesLength = filteredCases.length;
	var coreServiceTitle;
	switch(servicesIndex) {
		case 0: coreServiceTitle = "Building Sciences"; break;
		case 1: coreServiceTitle = "Engineering"; break;
		case 2: coreServiceTitle = "Environmental Consulting"; break;
		default: coreServiceTitle = "Building Sciences"; break;
	}
	var caseStudyList = "<h2 id='csh-"+serviceAreas[servicesIndex]+"'>";
	caseStudyList += "<a href='/services/"+serviceAreas[servicesIndex]+"/'>"+coreServiceTitle+"</a></h2>";
	caseStudyList += "<ul id='csi-"+serviceAreas[servicesIndex]+"' class='square'>";
	for (var i=0; i<filteredCasesLength; i++) {
		caseStudyList += "<li><a href='/casestudies/casestudies.html?"+servicesIndex;
		caseStudyList += "&"+(i+1)+"'>";
		caseStudyList += xmlDoc.getElementsByTagName("TITLE")[filteredCases[i]].firstChild.data;
		caseStudyList += "</a></li>";
	}
	caseStudyList += "</ul>";
	
	document.write(caseStudyList);
}

function createIndex_service(servicesIndex)
{	
	var filteredCasesServiceLength = filteredCases_service.length;
	
	var caseStudyList = "<p id='cs-title'><a href='#' onclick='toggleHidden();return false;' id='cs-hide'>hide</a><a href='/casestudies/'>Case Studies:</a></p>";
	
	caseStudyList += "<ul id='cs-articles' class='square' style='display:block;'>";
	for (var i=0; i<filteredCasesServiceLength; i++) {
		caseStudyList += "<li><a href='/casestudies/casestudies.html?"+servicesIndex;
		caseStudyList += "&"+(filteredCases_serviceLinks[i]+1)+"'>";
		caseStudyList += xmlDoc.getElementsByTagName("TITLE")[filteredCases_service[i]].firstChild.data;
		caseStudyList += "</a></li>";
	}
	caseStudyList += "</ul>";
	
	document.write(caseStudyList);
}

function toggleHidden() {
	if (document.getElementById('cs-articles').style.display == "block") {
		document.getElementById('cs-articles').style.display = "none";
		document.getElementById('cs-title').style.borderBottomWidth = "0";
		document.getElementById('cs-hide').innerHTML = "show";
	} else {
		document.getElementById('cs-articles').style.display = "block";
		document.getElementById('cs-title').style.borderBottomWidth = "1px";
		document.getElementById('cs-hide').innerHTML = "hide";
	}
}


function paginationUpdate(currPage)
{
	currentPage[servicesIndex] = currPage;
	
	var prevButton = document.getElementById("prev");
	var nextButton = document.getElementById("next");
	if (prevButton && nextButton) {
		if (currPage <= 1 || currentPage[servicesIndex] <= 1) {
			//alert('1: '+currPage+' '+activePage+' / '+totalPages);
			activePage = 1;
			currPage = 1;
			currentPage[servicesIndex] = 1;
			//alert('1: '+currPage+' '+activePage+' / '+totalPages);
		} else if (currPage >= totalPages || currentPage[servicesIndex] >= totalPages) {
			//alert('2: '+currPage+' '+activePage+' / '+totalPages);
			activePage = totalPages;
			currPage = totalPages;
			currentPage[servicesIndex] = totalPages;
			//alert('2: '+currPage+' '+activePage+' / '+totalPages);
		} else {
			activePage = currPage;
			activePage = currentPage[servicesIndex];
			//alert('3: '+currPage+' '+activePage+' / '+totalPages);
		}
	
		if (currPage > 1 || currentPage[servicesIndex] > 1) {
			document.getElementById('prev').className="prevnext";
		} else {
			document.getElementById('prev').className="prevnext disablelink";
		}
		if (currPage < totalPages || currentPage[servicesIndex] < totalPages) {
			document.getElementById('next').className="prevnext";
		} else {
			document.getElementById('next').className="prevnext disablelink";
		}
		for (i=1; i<totalPages+1; i++) {
			document.getElementById(i).className="";
		}
		document.getElementById(currPage).className="currentpage";
	}
	//alert(currentPage);
}


function createPanels()
{
	var cat1Data, cat2Data, cat3Data, cat4Data;
	var cat1Data_name, cat2Data_name, cat3Data_name, cat4Data_name;
	var serviceArea1, serviceArea2, serviceArea3, serviceArea4;
	var i, j, k;    // Loop counter
	var filteredCasesLength = filteredCases.length;
	
	var caseStudyPanel = "<div class='pagination'>";
	caseStudyPanel += "<a href='#' onclick='sliding.showPreviousPanel(); paginationUpdate(parseInt(activePage)-1); return false;' id='prev' class='prevnext disablelink'><&middot;&middot; Previous</a>&nbsp;&nbsp;&nbsp;&nbsp;";
	
	// Selecting panel by id methods (Pagination)
	for (i=0 ;i<filteredCasesLength; i++) {
		caseStudyPanel += "<a href='#' onclick='sliding.showPanel(\"case_p"+(i+1)+"\"); paginationUpdate("+(i+1)+"); return false;' ";
		caseStudyPanel += "id='"+(i+1)+"' title='"+(xmlDoc.getElementsByTagName("TITLE")[filteredCases[i]].firstChild.data)+"'>";
		caseStudyPanel += (i+1)+"</a>";
		if ((i+1)<filteredCasesLength) {
			caseStudyPanel += " | ";
		}
	}
	caseStudyPanel += "&nbsp;&nbsp;&nbsp;&nbsp;<a href='#' onclick='sliding.showNextPanel(); paginationUpdate(parseInt(activePage)+1); return false;' id='next' class='prevnext'>Next &middot;&middot;></a>";
	caseStudyPanel += "</div>";

	caseStudyPanel += "<div id='case' class='SlidingPanels' tabindex='0'>";
	caseStudyPanel += "<div class='SlidingPanelsContentGroup'>";
	
	
	// Create Case Studies Panels
	for (i=0; i<filteredCasesLength; i++) {
		caseStudyPanel += "<div id='case_p"+(i+1)+"' class='SlidingPanelsContent p"+(i+1)+"' > <br/>";
		caseStudyPanel += "<p class='title'>";
		caseStudyPanel += xmlDoc.getElementsByTagName("TITLE")[filteredCases[i]].firstChild.data;
		caseStudyPanel += "</p>";
		caseStudyPanel += "<p class='story'>";
		if (xmlDoc.getElementsByTagName("IMAGE")[filteredCases[i]].hasChildNodes()==1) {
			caseStudyPanel += "<img src='local/images/"+(xmlDoc.getElementsByTagName("IMAGE")[filteredCases[i]].firstChild.data)+"' ";
			caseStudyPanel += "alt='"+(xmlDoc.getElementsByTagName("ALT")[filteredCases[i]].firstChild.data)+"' class='right' />";
		}
		caseStudyPanel += xmlDoc.getElementsByTagName("SERVICE")[filteredCases[i]].firstChild.data;
		caseStudyPanel += "</p>";
		
		// Links back to Services
		caseStudyPanel += "<p class='links'>";
		caseStudyPanel += "<b>MZA Services:</b> ";
		
		cat1Data = xmlDoc.getElementsByTagName("CATEGORY1")[filteredCases[i]].firstChild.data;
		cat2Data = xmlDoc.getElementsByTagName("CATEGORY2")[filteredCases[i]].firstChild.data;
		cat3Data = xmlDoc.getElementsByTagName("CATEGORY3")[filteredCases[i]].firstChild.data;
		cat4Data = xmlDoc.getElementsByTagName("CATEGORY4")[filteredCases[i]].firstChild.data;

		for (k=0; k<services.length; k++) {	// 0=Buiding Sciences, 1=Engineering, 2=Environmental Consulting
			for (j=0; j<services[k].length; j++) {	
				if (cat1Data == services[k][j]) { cat1Data_name = serviceNames[k][j]; serviceArea1 = serviceAreas[k]; }
				if (cat2Data == services[k][j]) { cat2Data_name = serviceNames[k][j]; serviceArea2 = serviceAreas[k]; }
				if (cat3Data == services[k][j]) { cat3Data_name = serviceNames[k][j]; serviceArea3 = serviceAreas[k]; }
				if (cat4Data == services[k][j]) { cat4Data_name = serviceNames[k][j]; serviceArea4 = serviceAreas[k]; }
			}
		}
		//alert(xmlDoc.getElementsByTagName("TITLE")[filteredCases[i]].firstChild.data+"\n"+cat1Data+","+cat2Data+","+cat3Data+","+cat4Data)
		if (cat1Data != 'none') { caseStudyPanel += "<a href='/services/"+serviceArea1+"/"+cat1Data+".html'>"+cat1Data_name+"</a>"; }
		if (cat2Data != 'none') { caseStudyPanel += ", <a href='/services/"+serviceArea2+"/"+cat2Data+".html'>"+cat2Data_name+"</a>"; }
		if (cat3Data != 'none') { caseStudyPanel += ", <a href='/services/"+serviceArea3+"/"+cat3Data+".html'>"+cat3Data_name+"</a>"; }
		if (cat4Data != 'none') { caseStudyPanel += ", <a href='/services/"+serviceArea4+"/"+cat4Data+".html'>"+cat4Data_name+"</a>"; }
		caseStudyPanel += "</p>";
		
		caseStudyPanel += "</div>";
	}
	caseStudyPanel += "</div>";
	caseStudyPanel += "</div>";

	// Set Pagination Variables
	totalPages = filteredCasesLength;
	
	// Find the Loading and Content Divs
	var loadingDiv = document.getElementById("loading");
	var contentDiv = document.getElementById("content");
	if (loadingDiv && contentDiv) {
		loadingDiv.style.display = 'none';
		contentDiv.innerHTML = caseStudyPanel;
		contentDiv.style.display = 'block';
		//sliding = new Spry.Widget.SlidingPanels("case",{defaultPanel:caseIndex});
		sliding = new Spry.Widget.SlidingPanels("case",{defaultPanel:currentPage[servicesIndex]-1});
	}
}


var whichXML = "/casestudies/casestudies.xml";
//var servicesIndex = 0;

// Case Studies Index Page
function casestudies_index(servicesIndex) {
	importXML(whichXML);
	filterCases(servicesIndex);
	createIndex(servicesIndex);
}

// Case Studies Breakout Pages
function casestudies() {
	importXML(whichXML);
	findIndex();
	filterCases(servicesIndex);
	setTitles();
	setLocalNav();
	createPanels();
	paginationUpdate(currPage);
}

// Local Navigation on Breakout Pages
function casestudiesSwitch(selectedService,selectedCase) {
	importXML(whichXML);
	servicesIndex = selectedService;
	filterCases(servicesIndex);
	setTitles();
	setLocalNav();
	createPanels();
	paginationUpdate(currentPage[servicesIndex]);
}

	
// Service Pages Case Studies Sidebar Links
function casestudies_service(servicesIndex,whichService) {
	importXML(whichXML);
	filterCases(servicesIndex);
	filterCases_service(whichService);
	createIndex_service(servicesIndex);
}
