
	var req;
	var req2;
	var filter = "";
	var PID = "Wz_ZRhg1uFAKCqXZJreaVg4ca1DGmzu0";
	var baseRequestString = "http://feeds.theplatform.com/ps/JSON/PortalService/1.8/getReleaseList?PID=" + PID;
	var requestString = baseRequestString;
	var thumbnails = document.getElementById("thumbnails");
	var releases = new Array();
	var nowPlaying = 0;
	var releasesPerPage = 4;
	var firstThumb = 0;
	var categoryDropdownActive = false;latentCategory = "all";
	var portalName = "Bob%20the%20Builder%20UK";
	var playerName = "Bob%20UK%20Video%20Page";
	
	goGetReleases(requestString);
	goGetCategories();
	
	// ------------------------------------------------------------------------------------
	function goGetReleases(releaseRequestString)
	// ------------------------------------------------------------------------------------
	{
		//document.getElementById("debugger").innerHTML = "<div style=\"position:absolute; top:800px; background-color:white; color:red;\">Here is the request string: " + releaseRequestString + "</div>";
		req = new JSONRequest (releaseRequestString,"parseReleases" );
		req.send();
	}
	
	// ------------------------------------------------------------------------------------
	function goGetCategories()
	// ------------------------------------------------------------------------------------
	{
		req2 = new JSONRequest (baseRequestString.replace("ReleaseList","CategoryList"),"parseCategories" );
		req2.send();
	}

	// ------------------------------------------------------------------------------------
	function parseCategories(response)
	// ------------------------------------------------------------------------------------
	{
		if (typeof response != 'string')
		{
			var categoryDiv = document.getElementById("videoCategories");
			
			for(var j in response.items)
			{
				var trimmedTitle = response.items[j].title;
				if(trimmedTitle.indexOf("[") != -1)
				{
					if(trimmedTitle.indexOf("]") == 3)
					{
						trimmedTitle = trimmedTitle.substring(4);
					}
					else
					{
						trimmedTitle = trimmedTitle.substring(7);
					}
				}
				var catWrapper = categoryDiv.appendChild(document.createElement("DIV"));
				catWrapper.className = "cwi";
				var catWrapperInner = catWrapper.appendChild(document.createElement("P"));
				var cat = catWrapperInner.appendChild(document.createElement("A"));
				var catSpan = cat.appendChild(document.createElement("SPAN"));
				cat.id = "category_" + trimmedTitle.toLowerCase();
				cat.id = cat.id.replace(new RegExp(/\s/g),"");
				cat.className = "videos_sidemenu_a";
				cat.href = "javascript:filterByCategory(\"" + response.items[j].title.toLowerCase() + "\",\"" + cat.id + "\",\"" + trimmedTitle + "\");";
				cat.onmouseover = function(){this.parentNode.parentNode.style.backgroundPosition = "0 -31px"};
				cat.onmouseout = function(){if(this.parentNode.parentNode.className.indexOf("active") == -1){this.parentNode.parentNode.style.backgroundPosition = "0 0"}};
				catSpan.innerHTML = trimmedTitle;
			}
			var catWrapper = categoryDiv.appendChild(document.createElement("DIV"));
			catWrapper.className = "cwi";
			var catWrapperInner = catWrapper.appendChild(document.createElement("P"));
			var cat = catWrapperInner.appendChild(document.createElement("A"));
			var catSpan = cat.appendChild(document.createElement("SPAN"));
			cat.id = "category_all";
			cat.className = "videos_sidemenu_as";
			cat.href = "javascript:filterByCategory('all','category_all','All Videos');";
			cat.onmouseover = function(){this.parentNode.parentNode.style.backgroundPosition = "0 -31px"};
			cat.onmouseout = function(){if(this.parentNode.parentNode.className.indexOf("active") == -1){this.parentNode.parentNode.style.backgroundPosition = "0 0"}};
			catSpan.innerHTML = "All Videos";
		}
	}

	// ------------------------------------------------------------------------------------
	function parseReleases(response)
	// ------------------------------------------------------------------------------------
	{

		releases = new Array();
		
		for(i = 0; i < response.items.length; i++)
		{
			var release = response.items[i];
			
			// Build the thumbnails
			var thumbWrapper = document.createElement("DIV");
			var thumbTip = thumbWrapper.appendChild(document.createElement("SPAN"));
			var thumb = thumbWrapper.appendChild(document.createElement("A"));
			var thumbInner = thumb.appendChild(document.createElement("IMG"));
			thumbInner.src = "images/spacer.gif";
			thumbWrapper.className = "releaseThumbnailWrapper";
			thumb.className = "releaseThumbnail";
			thumb.id = release.PID;
			
			if(release.thumbnailURL != "")
			{
				thumb.style.backgroundImage = "url(" + release.thumbnailURL + ")";
			}
			else
			{
				thumb.className = "releaseThumbnailEmpty";
			}
			thumb.href = "javascript:playRelease('" + release.URL.substr(0,release.URL.indexOf("&")) + "','thumb');";
			thumb.onmouseover = function(){document.getElementById(this.id + "_tt").style.display = "block"};
			thumb.onmouseout = function(){document.getElementById(this.id + "_tt").style.display = "none"};
			thumbTip.className = "thumbTip";
			thumbTip.id = release.PID + "_tt";
			thumbTip.innerHTML = release.title;
			thumbWrapper.style.zIndex = (1000-i);
			thumbnails.appendChild(thumbWrapper);
			
			releases.push(release);
		}
		
		if(releases.length > releasesPerPage)
		{
			document.getElementById("videoNextPage").className = "vc";
			document.getElementById("videoNextPage").href = "javascript:goToNextPage();";
		}
		
		if(releases.length > 0)
		{
			// THIS IS WHAT HAPPENS WHEN THE PAGE FIRST LOADS
			
			// Play the first release
			tpController.setReleaseURL(releases[0].URL + "&Portal=" + portalName + "&Player=" + playerName);
			
			// Enable the Pause button
			document.getElementById("videoPause").className = "vc";
			document.getElementById("videoPause").href = "javascript:tpController.pause(true);togglePause();";
			
			// Hide the Play button
			document.getElementById("videoPlay").style.display = "none";
			
			
			// Show the first group of thumbnails
			var thumbnailLinks = thumbnails.getElementsByTagName("DIV");
			for(var i = 0; i < releasesPerPage; i++)
			{
				if(thumbnailLinks[i])
				{
					thumbnailLinks[i].style.display = "block";
				}
				else
				{
					break;
				}
			}
			
			// Highlight the first release
			document.getElementById(releases[0].PID).className += " releaseThumbnailPlaying";
			
			// Say what's playing
			document.getElementById("whatsPlaying").innerHTML = "<span>Now playing: </span><span class=\"gold\">" + releases[0].title + "</span>";
			document.getElementById("whatsPlaying").style.display = "block";
		}
		
		if(releases.length > 1)
		{
			document.getElementById("videoNext").className = "vc";
			document.getElementById("videoNext").href = "javascript:playRelease('" + releases[1].URL.substr(0,releases[1].URL.indexOf("&")) + "','next');";
		}
		
		// Show the Category list
		document.getElementById("videoCategories").style.display = "block";
		
		// Highlight the selected category
		highlightSelectedCategory();
		
		// Grey out the Next Page button if there are not enough releases to warrant it
		if(releases.length < firstThumb + releasesPerPage)
		{
			document.getElementById("videoNextPage").className = "vcDisabled";
			document.getElementById("videoNextPage").href = "javascript:void(0);";
		}

	}

	// ------------------------------------------------------------------------------------
	function goToNextPage()
	// ------------------------------------------------------------------------------------
	{
		var stoppedAt = 0;
		
		for(var i = firstThumb; i < releasesPerPage + firstThumb; i++)
		{
			if(thumbnails.childNodes[i])
			{
				thumbnails.childNodes[i].style.display = "none";
				stoppedAt = i;
			}
			else
			{
				break;
			}
		}
		
		firstThumb = stoppedAt + 1;
		
		for(var i = firstThumb; i < releasesPerPage + firstThumb; i++)
		{
			if(thumbnails.childNodes[i])
			{
				thumbnails.childNodes[i].style.display = "block";
			}
			else
			{
				break;
			}
		}
		
		if(releases.length < firstThumb + releasesPerPage)
		{
			document.getElementById("videoNextPage").className = "vcDisabled";
			document.getElementById("videoNextPage").href = "javascript:void(0);";
		}
		
		document.getElementById("videoPreviousPage").className = "vc";
		document.getElementById("videoPreviousPage").href = "javascript:goToPreviousPage();";
	}
	
	// ------------------------------------------------------------------------------------
	function goToPreviousPage()
	// ------------------------------------------------------------------------------------
	{
		var stoppedAt = 0;
		//alert(firstThumb);
		firstThumb--;
		
		for(var i = firstThumb; i > firstThumb - releasesPerPage; i--)
		{
			if(thumbnails.childNodes[i])
			{
				thumbnails.childNodes[i].style.display = "block";
				stoppedAt = i;
			}
		}
		
		firstThumb = stoppedAt;
		
		//alert("The first thumb is now:" + firstThumb);
		
		for(var i = firstThumb + releasesPerPage; i < firstThumb + (releasesPerPage*2); i++)
		{
			if(thumbnails.childNodes[i])
			{
				thumbnails.childNodes[i].style.display = "none";
				stoppedAt = i;
			}
		}
		
		if(firstThumb == 0)
		{
			document.getElementById("videoPreviousPage").className = "vcDisabled";
			document.getElementById("videoPreviousPage").href = "javascript:void(0);";
		}
		
		document.getElementById("videoNextPage").className = "vc";
		document.getElementById("videoNextPage").href = "javascript:goToNextPage();";
	}

	// ------------------------------------------------------------------------------------
	function playRelease(releaseURL,sender)
	// ------------------------------------------------------------------------------------
	{
		var PID = releaseURL.substr(releaseURL.indexOf("=")+1,32);
		var releaseIndexPosition = getReleaseIndexPosition(PID);
		
		if(document.getElementById(PID).parentNode.style.display != "block")
		{
			if(sender == "next")
			{
				goToNextPage();
			}
			else
			{
				goToPreviousPage();
			}
		}
		
		nowPlaying = releaseIndexPosition;
		
		// Hide the What's Playing text
		document.getElementById("whatsPlaying").style.display = "none";
		
		// Change the status of the PreviousClip button
		changePreviousClipButtonStatus();

		// Change the status of the NextClip button
		changeNextClipButtonStatus();
		
		// Start the release playing
		tpController.setReleaseURL(releaseURL + "&Portal=" + portalName + "&Player=" + playerName);
		
		// Reset all the thumbnails
		resetThumbnails();
		
		// Highlight the release's thumbnail as currently playing
		document.getElementById(PID).className += " releaseThumbnailPlaying";
		
		// Show the What's Playing text
		document.getElementById("whatsPlaying").style.display = "block";
		document.getElementById("whatsPlaying").innerHTML = "<span class=\"black\">Now playing: </span><span class=\"blue\">" + releases[releaseIndexPosition].title + "</span>";
	}
	
	// ------------------------------------------------------------------------------------
	function changePreviousClipButtonStatus()
	// ------------------------------------------------------------------------------------
	{
		if(nowPlaying > 0)
		{
			document.getElementById("videoPrevious").href = "javascript:playRelease('" + releases[nowPlaying - 1].URL.substr(0,releases[nowPlaying - 1].URL.indexOf("&")) + "','previous');";
			document.getElementById("videoPrevious").className = "vc";
		}
		else
		{
			document.getElementById("videoPrevious").href = "javascript:void(0);";
			document.getElementById("videoPrevious").className = "vcDisabled";
		}
	}
	
	// ------------------------------------------------------------------------------------
	function changeNextClipButtonStatus()
	// ------------------------------------------------------------------------------------
	{
		if(nowPlaying < releases.length - 1)
		{
			document.getElementById("videoNext").href = "javascript:playRelease('" + releases[nowPlaying + 1].URL.substr(0,releases[nowPlaying + 1].URL.indexOf("&")) + "','next');";
			document.getElementById("videoNext").className = "vc";
		}
		else
		{
			document.getElementById("videoNext").href = "javascript:void(0);";
			document.getElementById("videoNext").className = "vcDisabled";
		}
	}
	
	// ------------------------------------------------------------------------------------
	function getReleaseIndexPosition(PID)
	// ------------------------------------------------------------------------------------
	{
		for(var i = 0; i < releases.length; i++)
		{
			if(releases[i].PID == PID)
			{
				break;
			}
		}
		return i;
	}
	
	// ------------------------------------------------------------------------------------
	function resetThumbnails()
	// ------------------------------------------------------------------------------------
	{
		var thumbLinks = thumbnails.getElementsByTagName("A");
		for(var i = 0; i < thumbLinks.length; i++)
		{
			thumbLinks[i].className = thumbLinks[i].className.replace("releaseThumbnailPlaying","");
		}
	}
	
	// ------------------------------------------------------------------------------------
	function togglePause()
	// ------------------------------------------------------------------------------------
	{
		if(document.getElementById("videoPause").className == "vc")
		{
			document.getElementById("videoPause").className = "vcDisabled";
			document.getElementById("videoPause").href = "javascript:void(0);"
			document.getElementById("videoPause").style.display = "none";
			document.getElementById("videoPlay").style.display = "block";
			document.getElementById("videoPlay").className = "vc";
			document.getElementById("videoPlay").href = "javascript:tpController.pause(false);togglePause();"
		}
		else
		{
			document.getElementById("videoPause").className = "vc";
			document.getElementById("videoPause").href = "javascript:tpController.pause(true);togglePause();";
			document.getElementById("videoPause").style.display = "block";
			document.getElementById("videoPlay").style.display = "none";
			document.getElementById("videoPlay").className = "vcDisabled";
			document.getElementById("videoPlay").href = "javascript:void(0);"
		}
	}
	
	// ------------------------------------------------------------------------------------
	function clearReleaseList()
	// ------------------------------------------------------------------------------------
	{
		var thumbnailsToRemove = thumbnails.childNodes.length;
		
		for(var i = 0; i < thumbnailsToRemove; i++)
		{
			thumbnails.removeChild(thumbnails.childNodes[0]);
		}
	}
	
	// ------------------------------------------------------------------------------------
	function filterByCategory(categoryName,senderId, title)
	// ------------------------------------------------------------------------------------
	{
		
		clearReleaseList();
		if(categoryName != "all")
		{
			filter = "&query=Categories|" + escape(categoryName);
			//filter = filter.replace(new RegExp(/\s/g),"%20");
		}
		else
		{
			filter = "";
		}

		document.getElementById("videoPlay").style.display = "none";
		document.getElementById("videoPause").style.display = "block";
		latentCategory = categoryName.replace(new RegExp(/\s/g),"");
		goGetReleases(baseRequestString + filter);
		
	}
	
	// ------------------------------------------------------------------------------------
	function showCategories()
	// ------------------------------------------------------------------------------------
	{
		/*
		if(!categoryDropdownActive)
		{
			document.getElementById("videoCategories").style.backgroundImage = "url(images/dropdown_top.gif)";
			var categoryTags = document.getElementById("videoCategories").getElementsByTagName("DIV");
			for(var i = 0; i < categoryTags.length; i++)
			{
				if(categoryTags[i].getElementsByTagName("A")[0].innerHTML != document.getElementById("categoryDefault").getElementsByTagName("SPAN")[0].innerHTML)
				{
					categoryTags[i].style.display = "block";
					categoryTags[i].style.backgroundImage = "url(images/dropdown_middle.gif)";
				}
			}
			categoryTags[categoryTags.length-1].style.backgroundImage = "url(images/dropdown_bottom.gif)";
			categoryTags[categoryTags.length-1].style.height = "35px";
			document.getElementById("categoryDefault").style.color = "#ccc";
			categoryDropdownActive = true;
		}
		else
		{
			document.getElementById("videoCategories").style.backgroundImage = "url(images/dropdown.gif)";
			var categoryTags = document.getElementById("videoCategories").getElementsByTagName("DIV");
			for(var i = 0; i < categoryTags.length; i++)
			{
				categoryTags[i].style.display = "none";
			}
			document.getElementById("categoryDefault").style.color = "#000";
			categoryDropdownActive = false;
		}
		*/
	}
	
	// ------------------------------------------------------------------------------------
	function highlightSelectedCategory()
	// ------------------------------------------------------------------------------------
	{
		var categoriesOnPage = document.getElementById("videoCategories").getElementsByTagName("DIV");
		for(var i = 0; i < categoriesOnPage.length; i++)
		{
			categoriesOnPage[i].style.backgroundPosition = "0 0";
			categoriesOnPage[i].className = "cwi";
			categoriesOnPage[i].getElementsByTagName("A")[0].className = "videos_sidemenu_a";
		}
		
		if(latentCategory.indexOf("[") != -1)
		{
			try
			{
				var loc = 7;
				if(latentCategory.indexOf("]") == 3)
				{
					loc = 4;
				}
				document.getElementById("category_" + latentCategory.substring(loc)).parentNode.parentNode.style.backgroundPosition = "0 -31px";
				document.getElementById("category_" + latentCategory.substring(loc)).parentNode.parentNode.className += " active";
				document.getElementById("category_" + latentCategory.substring(loc)).className = "videos_sidemenu_as";
			}
			catch(e)
			{
			}
		}
		else
		{
			try
			{
				document.getElementById("category_" + latentCategory).parentNode.parentNode.style.backgroundPosition = "0 -31px";
				document.getElementById("category_" + latentCategory).parentNode.parentNode.className += " active";
				document.getElementById("category_" + latentCategory).className = "videos_sidemenu_as";
			}
			catch(e)
			{
			}
		}
	}
	
	document.getElementById("videoCategories").onmouseout = function(){
		document.onmousedown = function(){if(categoryDropdownActive){showCategories();}}
	}
	
	document.getElementById("videoCategories").onmouseover = function(){
		document.onmousedown = null;
	}
	
	//tpController.mute(true);
	