var xmlHttp;

function createXMLHttpRequest()
{
	if(window.ActiveXObject)
	{
		xmlHttp = new ActiveXObject("Microsoft.XMLHTTP");
	}
	else
	{
		if(window.XMLHttpRequest)
		{
			xmlHttp = new XMLHttpRequest();
		}
	}
}

function showAssetDetailsXML(asset, detailType)
{
	createXMLHttpRequest();
	xmlHttp.onreadystatechange = displayAssetDetails;
	url = "getAssetDetailsXML.cfm?type=" + detailType + "&assetID=" + asset;
//alert(url)
	xmlHttp.open("GET", url, true);
	xmlHttp.send(null);
}
function showAssetDetails(asset, detailType)
{
	createXMLHttpRequest();
	xmlHttp.onreadystatechange = displayAssetDetails;
	url = "getAssetDetailsXML.cfm?type=" + detailType + "&assetID=" + asset;
//alert(url)
	xmlHttp.open("GET", url, true);
	xmlHttp.send(null);
}
function activityAssetDetails(asset, activity)
{
	createXMLHttpRequest();
	xmlHttp.onreadystatechange = displayActivityDetails;
	url = "showActivityDetailsXML.cfm?assetID=" + asset + "&activityId=" + activity;
//alert(url)
	xmlHttp.open("GET", url, true);
	xmlHttp.send(null);
}
function showActivityList(assetID)
{
	createXMLHttpRequest();
	xmlHttp.onreadystatechange = displayActivityList;
	url = "showActivityListXML.cfm?assetID=" + assetID;
//alert(url)
	xmlHttp.open("GET", url, true);
	xmlHttp.send(null);
}

function displayAssetDetails()
{
	if(xmlHttp.readyState == 4)
	{
		if(xmlHttp.status == 200)
		{
			//alert(xmlHttp.responseText)
			xmlObj = xmlHttp.responseXML;
			
			//detailType = xmlObj.documentElement.attributes
			root = xmlObj.getElementsByTagName("assetDetails");
			//detailType = xmlObj.documentElement.attributes['detailType'].value;
			detailType = root[0].getAttribute("detailType");
			
			switch(detailType)
			{
				case 'context':
				case 'catalogue':
				{
					paraObjs = xmlObj.getElementsByTagName("p");
					actcontent = '<br/>';
					if(paraObjs.length > 0 && paraObjs[0].firstChild != null)
					{
						for(i=0; i<paraObjs.length; i++)
						{
							actcontent += "<p>" + paraObjs[i].firstChild.nodeValue + "</p>";
						}
					}
					document.getElementById("tab_content").innerHTML = actcontent;
					if(detailType == 'catalogue')
					{
						document.getElementById("left_tab").className = 'active';
						document.getElementById("middle_tab").className = '';
						document.getElementById("right_tab").className = '';
					}
					else
					{
						document.getElementById("left_tab").className = '';
						document.getElementById("middle_tab").className = 'active';
						document.getElementById("right_tab").className = '';
					}
					break;
				}
				case 'story':
				{
					storyObjs = xmlObj.getElementsByTagName("story");

					actcontent = '<p class="justify"><br/>Open space is an interactive area for sharing information, personal stories, comments and images or photos that are related to the film. Click \'Add Info\' above to contribute.</p>';
					if(storyObjs.length > 0)
					{
						for(i=0; i<storyObjs.length; i++)
						{
							actcontent += '<h3>' + storyObjs[i].getAttribute("title") + '</h3><br/>';
							
							var imgObjs = storyObjs[i].getElementsByTagName("image");
							
							if(imgObjs.length > 0)
							{
								//actcontent += 'story ' + (i + 1) + ' has ' + imgObjs.length + ' images<br/>';
								for(j=0; j<imgObjs.length; j++)
								{
									actcontent += '<a target="thumbnail" onclick="window.open(\'' + imgObjs[j].getAttribute("uri") + '\', \'thumbnail\', \'width=600,height=400\');" href="' + imgObjs[j].getAttribute("uri") + '"><img src="images/jpeg.png" /></a>';
								}
							}
							
							var content = storyObjs[i].getElementsByTagName("content");
							actcontent += '<p>' + content[0].firstChild.nodeValue + '</p>';
							
							actcontent += '<div class="right">' + storyObjs[i].getAttribute("date").substring(0,10) + ' - <em>' + storyObjs[i].getAttribute("name") + '</em></div>';
						}
					}
					
					document.getElementById("tab_content").innerHTML = actcontent;
					
					document.getElementById("left_tab").className = '';
					document.getElementById("middle_tab").className = '';
					document.getElementById("right_tab").className = 'active';
					
					break;
				}
			}
			
			// make sure search terms are now highlighted in new content
			highlightFromQueryString();
		}
	}
}

function displayActivityDetails()
{
	if(xmlHttp.readyState == 4)
	{
		if(xmlHttp.status == 200)
		{
			//alert(xmlHttp.responseText)
			xmlObj = xmlHttp.responseXML;
			root = xmlObj.getElementsByTagName("activity");
			activityID = root[0].getAttribute("id");
			assetID = root[0].getAttribute("asset");
			
			activityTitle = xmlObj.getElementsByTagName("title")[0].firstChild.nodeValue;
			activitySubject = xmlObj.getElementsByTagName("subject")[0].firstChild.nodeValue;
			activityKeystage = xmlObj.getElementsByTagName("keystage")[0].firstChild.nodeValue;
			activitySchool = xmlObj.getElementsByTagName("school")[0].firstChild.nodeValue;
			activityOwner = xmlObj.getElementsByTagName("uploaded_by")[0].firstChild.nodeValue;
			activityDescription = xmlObj.getElementsByTagName("description")[0].firstChild.nodeValue;

			activity_box = document.getElementById("activities_large");
			activitiesTable = activity_box.getElementsByTagName("table")[0];
			// get rid of the current rows in the table that need to be replace
			for(i=activitiesTable.rows.length - 1; i>-1; i--)
			{
				activitiesTable.deleteRow(i);
			}

			// insert row for link back to activities list
			activitiesTable.insertRow(0);
			activityLinkCell = document.createElement("td");
				activityLinkCell.setAttribute("colspan", "4");
			activityLink = document.createElement("a");
				javascriptLink = "javascript:showActivityList(" + assetID + ")";
				activityLink.setAttribute("href", javascriptLink);
			activityLinkText = document.createTextNode("back to activity list");
			
			activityLink.appendChild(activityLinkText);
			activityLinkCell.appendChild(activityLink);
			activitiesTable.rows[0].appendChild(activityLinkCell);

			// get list of extras from the returned xml if there are any
			extras = xmlObj.getElementsByTagName("extra");
			
			// create the correct headers
			blankCell = document.createElement("td");
			descriptionH = document.createElement("th");
				descriptionHText = document.createTextNode("Description");
				descriptionH.appendChild(descriptionHText);
			extrasH = document.createElement("th");
				extrasHText = document.createTextNode("Download Extras");
				extrasH.appendChild(extrasHText);
			activitiesTable.insertRow(1);
			activitiesTable.rows[1].appendChild(blankCell);
			activitiesTable.rows[1].appendChild(descriptionH);
			activitiesTable.rows[1].appendChild(extrasH);
			
			// display the activities
			activitiesTable.insertRow(2);
			detailsCell = document.createElement("td");
				//detailsCell.setAttribute("rowspan", extras.length);
				// add all the details here
			subjectH = document.createElement("h3");
				subjectHText = document.createTextNode("Subject");
				subjectH.appendChild(subjectHText);
			subjectP = document.createElement("p");
				subjectPText = document.createTextNode(activitySubject);
				subjectP.appendChild(subjectPText);
			keystageH = document.createElement("h3");
				keystageHText = document.createTextNode("Keystage");
				keystageH.appendChild(keystageHText);
			keystageP = document.createElement("p");
				keystagePText = document.createTextNode(activityKeystage);
				keystageP.appendChild(keystagePText);
			schoolH = document.createElement("h3");
				schoolHText = document.createTextNode("School");
				schoolH.appendChild(schoolHText);
			schoolP = document.createElement("p");
				schoolPText = document.createTextNode(activitySchool);
				schoolP.appendChild(schoolPText);
			ownerH = document.createElement("h3");
				ownerHText = document.createTextNode("Uploaded By");
				ownerH.appendChild(ownerHText);
			ownerP = document.createElement("p");
				ownerPText = document.createTextNode(activityOwner);
				ownerP.appendChild(ownerPText);
			
			detailsCell.appendChild(subjectH);
				detailsCell.appendChild(subjectP);
			detailsCell.appendChild(keystageH);
				detailsCell.appendChild(keystageP);
			detailsCell.appendChild(schoolH);
				detailsCell.appendChild(schoolP);
			detailsCell.appendChild(ownerH);
				detailsCell.appendChild(ownerP);
			activitiesTable.rows[2].appendChild(detailsCell);

			// description
			descriptionCell = document.createElement("td");
				//descriptionCell.setAttribute("rowspan", extras.length);
				descriptionCellText = document.createTextNode(activityDescription);
				descriptionCell.appendChild(descriptionCellText);
			activitiesTable.rows[2].appendChild(descriptionCell);
			
			// extras
			extrasCell = document.createElement("td");
			for(i=0; i< extras.length; i++)
			{
				extraDiv = document.createElement("div");
					extraDiv.setAttribute("class", "extra");
					extraDiv.className = "extra";
				
					extraLink = document.createElement("a");
						extraURL = "download.cfm?download=1&id=" + extras[i].getAttribute("id");
						extraLink.setAttribute("href", extraURL);
				
					extraLinkImage = document.createElement("img");
						extraLinkImage.setAttribute("src", "images/download_icon.png");
						extraLinkImage.setAttribute("alt", "Download");
				
					extraLinkText = document.createTextNode("Download");
				
					extraName = extras[i].firstChild.nodeValue;
					extraDivText = document.createTextNode(extraName);
				
				extraLink.appendChild(extraLinkImage);
				extraLink.appendChild(extraLinkText);
				extraDiv.appendChild(extraLink);
				extraDiv.appendChild(extraDivText);
				extrasCell.appendChild(extraDiv);
			}
			activitiesTable.rows[2].appendChild(extrasCell);
/*
			for(i=1; i<= extras.length+1; i++)
			{
				activitiesTable.insertRow(i);
				
				if(i == 1)
				{
					// blank cell
					blankCell = document.createElement("td");
					// description heading
					descriptionH = document.createElement("th");
						descriptionHText = document.createTextNode("Description");
						descriptionH.appendChild(descriptionHText);
					// extras heading
					extrasH = document.createElement("th");
						extrasHText = document.createTextNode("Download Extras");
						extrasH.appendChild(extrasHText);
					
					activitiesTable.rows[i].appendChild(blankCell);
					activitiesTable.rows[i].appendChild(descriptionH);
					activitiesTable.rows[i].appendChild(extrasH);
				}
				
				// create the cells used in the table
				if(i == 2)
				{
					detailsCell = document.createElement("td");
						detailsCell.setAttribute("rowspan", extras.length);
						// add all the details here
					subjectH = document.createElement("h3");
						subjectHText = document.createTextNode("Subject");
						subjectH.appendChild(subjectHText);
					subjectP = document.createElement("p");
						subjectPText = document.createTextNode(activitySubject);
						subjectP.appendChild(subjectPText);
					keystageH = document.createElement("h3");
						keystageHText = document.createTextNode("Keystage");
						keystageH.appendChild(keystageHText);
					keystageP = document.createElement("p");
						keystagePText = document.createTextNode(activityKeystage);
						keystageP.appendChild(keystagePText);
					schoolH = document.createElement("h3");
						schoolHText = document.createTextNode("School");
						schoolH.appendChild(schoolHText);
					schoolP = document.createElement("p");
						schoolPText = document.createTextNode(activitySchool);
						schoolP.appendChild(schoolPText);
					ownerH = document.createElement("h3");
						ownerHText = document.createTextNode("Uploaded By");
						ownerH.appendChild(ownerHText);
					ownerP = document.createElement("p");
						ownerPText = document.createTextNode(activityOwner);
						ownerP.appendChild(ownerPText);
					
					detailsCell.appendChild(subjectH);
						detailsCell.appendChild(subjectP);
					detailsCell.appendChild(keystageH);
						detailsCell.appendChild(keystageP);
					detailsCell.appendChild(schoolH);
						detailsCell.appendChild(schoolP);
					detailsCell.appendChild(ownerH);
						detailsCell.appendChild(ownerP);
					activitiesTable.rows[i].appendChild(detailsCell);
					
					// description
					descriptionCell = document.createElement("td");
						descriptionCell.setAttribute("rowspan", extras.length);
						descriptionCellText = document.createTextNode(activityDescription);
						descriptionCell.appendChild(descriptionCellText);
					activitiesTable.rows[i].appendChild(descriptionCell);
				}
				
				// add the extras cells
				if(i > 1)
				{
					
				}
			}

			for(i=0; i < extras.length; i++)
			{
				extraCell = document.createElement("td");
				extraDiv = document.createElement("div");
					extraDiv.setAttribute("class", "extra");
					
					extraLink = document.createElement("a");
						extraURL = "download.cfm?download=1&id=" + extras[i].getAttribute("id");
						extraLink.setAttribute("href", extraURL);
					
					extraLinkImage = document.createElement("img");
						extraLinkImage.setAttribute("src", "images/download_icon.png");
						extraLinkImage.setAttribute("alt", "Download");
					extraLinkText = document.createTextNode("Download");
					
					extraName = extras[i].firstChild.nodeValue;
					extraDivText = document.createTextNode(extraName);

				extraLink.appendChild(extraLinkImage);
				extraLink.appendChild(extraLinkText);
				extraDiv.appendChild(extraLink);
				extraDiv.appendChild(extraDivText);
				extraCell.appendChild(extraDiv);
				activitiesTable.rows[i+2].appendChild(extraCell);
			}
*/
			// add upload extra link
			activitiesTable.insertRow(activitiesTable.rows.length);
			
			uploadCell = document.createElement("td");
				uploadCell.setAttribute("colspan", "4");
				uploadCell.colSpan = 4;		// IE is shit
				uploadCell.setAttribute("align", "right");
			uploadLink = document.createElement("a");
				linkURL = "uploadExtra.cfm?film=" + assetID + "&activity=" + activityID;
				uploadLink.setAttribute("href", linkURL);
			uploadImage = document.createElement("img");
				uploadImage.setAttribute("src", "images/uploadExtra.png");
				uploadImage.setAttribute("alt", "Upload Extra");
			
			uploadLink.appendChild(uploadImage);
			uploadCell.appendChild(uploadLink);
			activitiesTable.rows[activitiesTable.rows.length - 1].appendChild(uploadCell);
		}
	}
}

function displayActivityList()
{
	if(xmlHttp.readyState == 4)
	{
		if(xmlHttp.status == 200)
		{
			//alert(xmlHttp.responseText)
			xmlObj = xmlHttp.responseXML;
			root = xmlObj.getElementsByTagName("activities");
			assetID = root[0].getAttribute("asset");
			
			activity_box = document.getElementById("activities_large");
			activitiesTable = activity_box.getElementsByTagName("table")[0];
			for(i=activitiesTable.rows.length - 1; i>-1; i--)
			{
				activitiesTable.deleteRow(i);
			}
			activitiesTable.insertRow(0);
			
			titleH = document.createElement("th");
				titleHText = document.createTextNode("Title");
				titleH.appendChild(titleHText);
			descriptionH = document.createElement("th");
				descriptionHText = document.createTextNode("Description");
				descriptionH.appendChild(descriptionHText);
			subjectH = document.createElement("th");
				subjectHText = document.createTextNode("Subject");
				subjectH.appendChild(subjectHText);
			keystageH = document.createElement("th");
				keystageHText = document.createTextNode("Keystage");
				keystageH.appendChild(keystageHText);
			schoolH = document.createElement("th");
				schoolHText = document.createTextNode("School");
				schoolH.appendChild(schoolHText);
			extrasH = document.createElement("th");
				extrasHText = document.createTextNode("Extras Available");
				extrasH.appendChild(extrasHText);
			viewH = document.createElement("th");
				viewHText = document.createTextNode("View");
				viewH.appendChild(viewHText);
			
			activitiesTable.rows[0].appendChild(titleH);
			activitiesTable.rows[0].appendChild(descriptionH);
			activitiesTable.rows[0].appendChild(subjectH);
			activitiesTable.rows[0].appendChild(keystageH);
			activitiesTable.rows[0].appendChild(schoolH);
			activitiesTable.rows[0].appendChild(extrasH);
			activitiesTable.rows[0].appendChild(viewH);
			
			
			activities = xmlObj.getElementsByTagName("activity");
			for(i=1; i<=activities.length; i++)
			{
				activityTitle = activities[i-1].getAttribute("title");
				activityDescription = activities[i-1].firstChild.nodeValue;
				activitySubject = activities[i-1].getAttribute("subject");
				activityKeystage = activities[i-1].getAttribute("keystage");
				activitySchool = activities[i-1].getAttribute("school");
				extrasCount = activities[i-1].getAttribute("extras");
				activityExtras = (extrasCount == 0)?'Extra Not Available':extrasCount + ' Extras Available';
				activityID = activities[i-1].getAttribute("id");
				
				titleCell = document.createElement("td");
					titleCellText = document.createTextNode(activityTitle);
					titleCell.appendChild(titleCellText);
				descriptionCell = document.createElement("td");
					descriptionCellText = document.createTextNode(activityDescription);
					descriptionCell.appendChild(descriptionCellText);
				subjectCell = document.createElement("td");
					subjectCellText = document.createTextNode(activitySubject);
					subjectCell.appendChild(subjectCellText);
				keystageCell = document.createElement("td");
					keystageCellText = document.createTextNode(activityKeystage);
					keystageCell.appendChild(keystageCellText);
				schoolCell = document.createElement("td");
					schoolCellText = document.createTextNode(activitySchool);
					schoolCell.appendChild(schoolCellText);
				extrasCell = document.createElement("td");
					extrasCellText = document.createTextNode(activityExtras);
					extrasCell.appendChild(extrasCellText);
					
				viewCell = document.createElement("td");
				viewLink = document.createElement("a");
					linkURL = "javascript:activityAssetDetails(" + assetID + ", " + activityID + ")";
					viewLink.setAttribute("href", linkURL);
				viewImage = document.createElement("img");
					viewImage.setAttribute("src", "images/viewExtras.png");
					viewImage.setAttribute("alt", "View");
				viewLink.appendChild(viewImage);
				viewCell.appendChild(viewLink);
				
				activitiesTable.insertRow(i);
				activitiesTable.rows[i].appendChild(titleCell);
				activitiesTable.rows[i].appendChild(descriptionCell);
				activitiesTable.rows[i].appendChild(subjectCell);
				activitiesTable.rows[i].appendChild(keystageCell);
				activitiesTable.rows[i].appendChild(schoolCell);
				activitiesTable.rows[i].appendChild(extrasCell);
				activitiesTable.rows[i].appendChild(viewCell);
			}
			
			// finally, add the link to go to the add activity page
			activitiesTable.insertRow(activitiesTable.rows.length);
			buttonCell = document.createElement("td");
				buttonCell.setAttribute("colspan", "7");
				buttonCell.colSpan = 7;		// IE is shit
				buttonCell.setAttribute("align", "right");
			buttonLink = document.createElement("a");
				linkURL = "addActivity.cfm?film=" + assetID;
				buttonLink.setAttribute("href", linkURL);
			buttonImage = document.createElement("img");
				buttonImage.setAttribute("src", "images/addActivity.png");
				buttonImage.setAttribute("alt", "Add Activity");
				
			buttonLink.appendChild(buttonImage);
			buttonCell.appendChild(buttonLink);
			activitiesTable.rows[activitiesTable.rows.length - 1].appendChild(buttonCell);
		}
	}
}

function deleteFavourites()
{
	url = "manageFavouritesXML.cfm?type=delete";
	formObj = document.forms['favourites'];
	for(i=0; i<formObj.elements.length; i++)
	{
		if(formObj.elements[i].type == 'checkbox' && formObj.elements[i].checked)
		{
			url += "&favourite[]=" + formObj.elements[i].value;
		}
	}
	//alert(url)
	createXMLHttpRequest();
	xmlHttp.onreadystatechange = getFavourites;
	xmlHttp.open("GET", url, true);
	xmlHttp.send(null);
}
function deleteFavourite(fave, noReturn)
{
	url = "manageFavouritesXML.cfm?type=delete&favourite[]=" + fave;
//alert(url)
	createXMLHttpRequest();
	if(noReturn)
	{
		xmlHttp.onreadystatechange = dummy;	
	}
	else
	{
		xmlHttp.onreadystatechange = getFavourites;
	}
	xmlHttp.open("GET", url, true);
	xmlHttp.send(null);
}

function starFavourite(imgObj, fave)
{
	// get the type here; favourite or not favourite
	if(imgObj.src.indexOf("yesFav") > -1)
	{
		faveType = 'favourite';
		imgObj.src = 'images/icons/noFav.png';
	}
	else
	{
		faveType = 'not-favourite';
		imgObj.src = 'images/icons/yesFav.png';
	}
	
	if(faveType == 'favourite')
	{
		// already favourite - pass to delete function
		deleteFavourite(fave, true);
		alert("The favourite has been deleted.");
	}
	else
	{
		// not yet a favourite - add it in now
		url = "manageFavouritesXML.cfm?type=add&favourite[]=" + fave;
	//alert(url);
		createXMLHttpRequest();
		xmlHttp.onreadystatechange = dummy;
		xmlHttp.open("GET", url, true);
		xmlHttp.send(null);
		
		alert("The favourite has been added.");
	}
}
function dummy()
{
	if(xmlHttp.readyState == 4)
	{
		if(xmlHttp.status == 200)
		{
			// dummy function for returned XML that will result in no output
		}
	}
}

function getFavourites()
{
	if(xmlHttp.readyState == 4)
	{
		if(xmlHttp.status == 200)
		{
			//alert(xmlHttp.responseText);
			xmlObj = xmlHttp.responseXML;
			root = xmlObj.getElementsByTagName("favourites");
			favouritesList = xmlObj.getElementsByTagName("favourite");
		//alert(favouritesList.length);
			favouritesDiv = document.getElementById("favourites_list")
			favouritesTable = favouritesDiv.getElementsByTagName("table")[0];
			lastRow = favouritesTable.rows.length;
			for(i=lastRow-3; i>=0; i--)
			{
				favouritesTable.deleteRow(i);
			}
		//alert(favouritesList.length);
			for(i=0; i<favouritesList.length; i++)
			{
				favouritesTable.insertRow(i);
				var inputCell = document.createElement("td");
				var inputBox = document.createElement("input");
					inputBox.setAttribute("type", "checkbox");
					inputBox.setAttribute("name", "favourite[]");
					inputBox.setAttribute("value", favouritesList[i].getAttribute("id"));
				inputCell.appendChild(inputBox);
				
				var linkCell = document.createElement("td");
				var linkTag = document.createElement("a");
					linkTag.setAttribute("title", favouritesList[i].firstChild.nodeValue);
					linkURL = "assetDetails.cfm?film=" + favouritesList[i].getAttribute("id");
					linkTag.setAttribute("href", linkURL);
				var linkText = document.createTextNode(favouritesList[i].firstChild.nodeValue.substring(0, 20) + "...");
				linkTag.appendChild(linkText);
				linkCell.appendChild(linkTag);
				
				var dateCell = document.createElement("td");
				var dateText = document.createTextNode(favouritesList[i].getAttribute("date"));
				dateCell.appendChild(dateText);
				
				var trashCell = document.createElement("td");
				var trashLink = document.createElement("a");
					onclickLink = "javascript: deleteFavourite(" + favouritesList[i].getAttribute("id") + ")";
					trashLink.setAttribute("href", onclickLink);
				var trashImage = document.createElement("img");
					trashImage.setAttribute("src", "images/icons/trash.png");
					trashImage.setAttribute("alt", "Delete");
					//onclickLink = "deleteFavourite(" + favouritesList[i].getAttribute("id") + ")";
					//trashImage.setAttribute("onclick", onclickLink);
				trashLink.appendChild(trashImage);
				trashCell.appendChild(trashLink);
				
				favouritesTable.rows[i].appendChild(inputCell);
				favouritesTable.rows[i].appendChild(linkCell);
				favouritesTable.rows[i].appendChild(dateCell);
				favouritesTable.rows[i].appendChild(trashCell);
			}
			
		}
	}
}

