//<![CDATA[
/*
 *	broadView.js
 *
 *	Copyright 2010 Hot Hot Fire.
 *
 *	Scripts for broadView Media Viewer
 *
 *	Tom Legge
 */
 
function bvGetXMLHTTPRequest()
{
	try 
	{
		req = new XMLHttpRequest();
	} 
	catch(err1) 
	{
		try 
		{
			req = new ActiveXObject("Msxml2.XMLHTTP");
		}
		catch (err2) 
		{
			try
			{
				req = new ActiveXObject("Microsoft.XMLHTTP");
			}
			catch (err3)
			{
				req = false;
			} 
		} 
	}
	return req;
}

var bvHttp = bvGetXMLHTTPRequest();
 
function $bv(anObject)	{return document.getElementById(anObject);}

var bvParams = '';
var thisDomain = 'http://www.themisers.co.uk/broadview/';
var thisFile = '';

function bvSendPost()
{
	var myUrl = thisDomain + thisFile;
	bvHttp.open("POST", myUrl, true);
	bvHttp.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
	bvHttp.setRequestHeader("Content-length", bvParams.length);
	bvHttp.setRequestHeader("Connection", "close");
	bvHttp.onreadystatechange = bvUseHttpResponsePost;
	bvHttp.send(bvParams);
}

function bvUseHttpResponsePost()
{
	if (bvHttp.readyState == 4)
	{
		if(bvHttp.status == 200)
		{
			bvResponseSorter(bvHttp.responseText);
		}
	}
}

var bvMode = 'albums';
var busy = false;
var allAlbumsHTML = new Array();
var allThumbsHTML = new Array();
var allExhibitsHTML = new Array();
var noOfAlbums = 0;
var topAlbum = 1;
var bottomAlbum;
var noOfExhibits = 0;
var topExhibit = 1;
var bottomExhibit;
var mediaType;
var bvCurrentAlbum;
var bvCurrentExhibit;
var bvCurrentNumber;
var bvShowInfo = true;
var bvExhibsPerPage = 25;
var bvAlbumsPerPage = 5;

function bvResponseSorter(theResponse)
{
	bvTheData = theResponse.split(',');
	switch (bvTheData[0])
	{
		case 'getAlbums':
		while (allAlbumsHTML.length > 0)
		{
			allAlbumsHTML.pop(); //Clear the array	
		}
		allAlbumsHTML.push('');//dummy
		noOfAlbums = ((bvTheData.length - 2) / 6) - 1;//-1 to remove backstage
		
		for (var i = 1; i <= noOfAlbums + 1; i++)//just here we still want to go over all albums
		{
			if (bvTheData[(i * 6) - 2] != 0) //exclude backstage album 0 from the main gallery
			{
				var imgHTML = '<a href="javascript:bvOpenAlbum(' + bvTheData[(i * 6) - 2] + ',\'' + escape(bvTheData[(i * 6) - 5]) + '\')"><div class="bvMenuAlbum" style="background-image:url(broadview/graphics/' + bvTheData[(i * 6) - 3] + '.png);"><div class="bvCoverHolder"><img src="broadview/media/' + bvTheData[(i * 6) - 3] + '/thumbs/' + bvTheData[(i * 6)] + '.jpg" alt="" class="bvAlbumCover" /></div>';
				var titleHTML = '<div class="bvAlbumInfo"><span class="bvAlbumTitle">' + bvTheData[(i * 6) - 5] + '</span><br />';
				var createdHTML = '<span class="bvAlbumCreated">Last updated: ' + bvTheData[(i * 6) -1] + '</span></div></div></a>';
				allAlbumsHTML.push(imgHTML + titleHTML + createdHTML);
			}
		}
		
		bvPopulateAlbums(topAlbum);
		break;
		
		case 'getGrid':
		noOfExhibits = (bvTheData.length - 2) / 4;
		
		for (var i = 1; i <= noOfExhibits; i++)
		{
			var imgHTML = '<a href="javascript:bvOpenExhibit(' + bvTheData[(i * 4) - 1] + ',' + i + ')" title=""><div class="bvThumbHolder"><img src="broadview/media/' + bvTheData[(i * 4)] + '/thumbs/' + bvTheData[(i * 4) - 1] + '.jpg" alt="' + bvTheData[(i * 4) - 3] + '" title="' + bvTheData[(i * 4) - 3] + '" class="bvMediaThumb" /></div></a>';
			allThumbsHTML[i] = imgHTML;
			allExhibitsHTML[i] = bvTheData[(i * 4) - 1] + ',' + bvTheData[(i * 4) - 3];
		}
		switch (bvTheData[4])
		{
			case 'photo':
			mediaType = "Photos";
			break;
			case 'video':
			mediaType = "Videos";
			break;
			case 'audio':
			mediaType = "Songs";
			break;
		}
		
		busy = true;
		bvMenuOutTimer(10);
		break;
	}
}

function bvInitialise()
{
	$bv('bvItemInfo').style.filter = 'alpha(opacity=60)';
	$bv('bvItemInfo').style.opacity = '0.6';	
}

function bvOpenExhibit(whichExhibit, whichNumber)
{
	if (busy == false)
	{
		bvMode = 'exhibit';
		bvCurrentExhibit = whichExhibit;
		bvCurrentNumber = whichNumber;
		busy = true;
		bvMenuOutTimer(10);
	}
}

function bvShowExhibit()
{
	bvMode = 'exhibit';
	if (mediaType == "Photos")
	{
		var imgHTML = '<div id="bvImgHolder"><a href="javascript:bvNav2Click()"><img src="broadview/media/photo/main/' + bvCurrentExhibit + '.jpg" class="bvMainPhoto" /></a></div>';
		$bv('bvMenu').innerHTML = imgHTML;
		$bv('bvStatus').innerHTML = 'Albums ' + topAlbum + ' to ' + bottomAlbum + ' (of ' + noOfAlbums + ')';
		bvDisplayInfo();
	}
	if (mediaType == "Videos")
	{
		var vidHTML = '<a href="broadview/media/video/main/' + bvCurrentExhibit + '.flv" id="player"></a>';
		$bv('bvMenu').innerHTML = vidHTML;
		flowplayer("player", "http://www.themisers.co.uk/broadview/flowplayer/flowplayer-3.1.5.swf",{ 
			clip: {
				autoPlay: true,
				onBegin: function(){
					psdVol = curVol,
					holdAudio()},
				onResume: function(){
					psdVol = curVol,
					holdAudio()}}});
	}
	$bv('bvStatus').innerHTML = bvCurrentNumber + '/' + noOfExhibits;
	$bv('bvNav1').src = (bvCurrentNumber > 1) ? 'broadview/graphics/back.png' : 'broadview/graphics/back-grey.png';
	$bv('bvNav2').src = (bvCurrentNumber < noOfExhibits) ? 'broadview/graphics/forward.png' : 'broadview/graphics/forward-grey.png';
	$bv('bvOption1').innerHTML = '<a href="javascript:bvBackToExhibits()">Back to Album...</a>';
}

function bvDisplayInfo()
{
	var theInfo = allExhibitsHTML[bvCurrentNumber].split(',');
	if (theInfo[1] != "")
	{
		if (bvShowInfo)
		{
			$bv('bvItemInfo').innerHTML = '<div id="bvInfoText"><a href="javascript:toggleInfo(false)"><img src="broadview/graphics/cancel_round.png" /></a>&nbsp;&nbsp;' + theInfo[1] + '</div>';
			$bv('bvItemInfo').style.width = '670px';
		}
		else
		{
			$bv('bvItemInfo').innerHTML = '<div id="bvInfoText"><a href="javascript:toggleInfo(true)"><img src="broadview/graphics/info.png" /></a></div>';
			$bv('bvItemInfo').style.width = '26px';
		}
	}
	else
	{
		$bv('bvItemInfo').innerHTML = "";
		$bv('bvItemInfo').style.width = '0px';
	}
}

function toggleInfo(state)
{
	bvShowInfo = state;
	bvDisplayInfo();
}

function bvPopulateGrid(startExhibit)
{
	bvMode = 'grid';
	var returnHTML = '';
	
	for (var i = startExhibit; i <= startExhibit + (bvExhibsPerPage - 1); i++)
	{
		if (i <= noOfExhibits)
		{
			returnHTML = returnHTML + allThumbsHTML[i]; 
		}
	}
	$bv('bvMenu').innerHTML = returnHTML;
	bottomExhibit = (noOfExhibits < topExhibit + (bvExhibsPerPage - 1)) ? noOfExhibits : topExhibit + (bvExhibsPerPage - 1);
	bvUpdateField('bvTitle', bvCurrentAlbum + ':', 1);
	$bv('bvStatus').innerHTML = mediaType + ' ' + topExhibit + ' to ' + bottomExhibit + ' (of ' + noOfExhibits + ')';
	$bv('bvNav1').src = (topExhibit > 1) ? 'broadview/graphics/back.png' : 'broadview/graphics/back-grey.png';
	$bv('bvNav2').src = (bottomExhibit < noOfExhibits) ? 'broadview/graphics/forward.png' : 'broadview/graphics/forward-grey.png';
	$bv('bvOption1').innerHTML = '<a href="javascript:bvBackToAlbums()">Back to Main Menu...</a>';
	$bv('bvOption2').innerHTML = '';
}

function bvPopulateAlbums(startAlbum)
{
	bvMode = 'albums';
	var returnHTML = '';
	
	for (var i = startAlbum; i <= startAlbum + (bvAlbumsPerPage - 1); i++)
	{
		if (i <= noOfAlbums)
		{
			returnHTML = returnHTML + allAlbumsHTML[i]; 
		}
	}
	
	$bv('bvMenu').innerHTML = returnHTML;
	bottomAlbum = (noOfAlbums < topAlbum + (bvAlbumsPerPage - 1)) ? noOfAlbums : topAlbum + (bvAlbumsPerPage - 1);
	bvUpdateField('bvTitle', 'Select an album to view:', 1);
	$bv('bvStatus').innerHTML = 'Albums ' + topAlbum + ' to ' + bottomAlbum + ' (of ' + noOfAlbums + ')';
	$bv('bvNav1').src = (topAlbum > 1) ? 'broadview/graphics/back.png' : 'broadview/graphics/back-grey.png';
	$bv('bvNav2').src = (bottomAlbum < noOfAlbums) ? 'broadview/graphics/forward.png' : 'broadview/graphics/forward-grey.png';
	$bv('bvOption1').innerHTML = '';
	$bv('bvOption2').innerHTML = '';
}

function bvUpdateField(bvField, bvFieldText, bvLength)
{
	if ((bvLength <= bvFieldText.length) && ($bv(bvField).innerHTML != bvFieldText))
	{
		var newString = bvFieldText.substring(0, bvLength);
		var typeTimer = setTimeout('bvAddLetter("' + bvField + '","' + newString + '",' + bvLength + ',"' + bvFieldText + '")',40);
	}
}

function bvAddLetter(bvField, bvNewText, bvLength, bvFieldText)
{
	$bv(bvField).innerHTML = bvNewText;
	var newLength = bvLength + 1;
	bvUpdateField(bvField, bvFieldText, newLength);
}

function bvNav1Click()
{
	if (busy == false)
	{
		if (bvMode == 'albums')
		{
			if (topAlbum > 1)
			{
				topAlbum = topAlbum - bvAlbumsPerPage;
				busy = true;
				bvMenuOutTimer(10);
			}
		}
		if (bvMode == 'grid')
		{
			if (topExhibit > 1)
			{
				topExhibit = topExhibit - bvExhibsPerPage;
				busy = true;
				bvMenuOutTimer(10);
			}
		}
		if (bvMode == 'exhibit')
		{
			if (bvCurrentNumber > 1)
			{
				bvSplitData = allExhibitsHTML[bvCurrentNumber - 1].split(',');
				bvOpenExhibit(bvSplitData[0], bvCurrentNumber - 1);
			}
		}
	}
}

function bvNav2Click()
{
	if (busy == false)
	{
		if (bvMode == 'albums')
		{
			if (topAlbum + (bvAlbumsPerPage - 1) < noOfAlbums)
			{
				topAlbum = topAlbum + bvAlbumsPerPage;
				busy = true;
				bvMenuOutTimer(10);
			}
		}
		if (bvMode == 'grid')
		{
			if (topExhibit + (bvExhibsPerPage - 1) < noOfExhibits)
			{
				topExhibit = topExhibit + bvExhibsPerPage;
				busy = true;
				bvMenuOutTimer(10);
			}
		}
		if (bvMode == 'exhibit')
		{
			if (bvCurrentNumber < noOfExhibits)
			{
				bvSplitData = allExhibitsHTML[bvCurrentNumber + 1].split(',');
				bvOpenExhibit(bvSplitData[0], bvCurrentNumber + 1);
			}
		}
	}
}

function bvMenuOutTimer(opacity)
{
	var outTimer = setTimeout('bvMenuFadeOut(' + opacity + ')',20);	
}
function bvMenuInTimer(opacity)
{
	var outTimer = setTimeout('bvMenuFadeIn(' + opacity + ')',20);	
}
function bvMenuFadeOut(opacity)
{
	bvMenuOpacity(opacity);
	if (opacity > 0)
	{
		bvMenuOutTimer(opacity - 1);
	}
	else
	{
		switch (bvMode)
		{
			case 'albums':
			bvPopulateAlbums(topAlbum);
			var waitTimer = setTimeout('bvMenuInTimer(0)',150);
			break;
			
			case 'grid':
			bvPopulateGrid(topExhibit);
			var waitTimer = setTimeout('bvMenuInTimer(0)',150);
			break;
			
			case 'exhibit':
			bvShowExhibit();
			var waitTimer = setTimeout('bvMenuInTimer(0)',150);
			break;
		}
	}
}
function bvMenuFadeIn(opacity)
{
	bvMenuOpacity(opacity);
	if (opacity < 10)
	{
		bvMenuInTimer(opacity + 1);
	}
	else
	{
		busy = false;
	}
}
function bvMenuOpacity(opacity)
{
	$bv('bvMenu').style.filter = 'alpha(opacity=' + opacity * 10 + ')';
	$bv('bvMenu').style.opacity = opacity/10;
}

function bvGetAlbums()
{
	thisFile = 'bvserverside.php';
	bvParams = 'bvTheData=getAlbums';
	bvSendPost();
}

function bvOpenAlbum(whichAlbum, thisAlbum)
{
	topExhibit = 1;
	if (busy == false)
	{
		bvCurrentAlbum = thisAlbum;
		bvMode = 'grid';
		thisFile = 'bvserverside.php';
		bvParams = 'bvTheData=getGrid,' + whichAlbum;
		bvSendPost();
	}
}

function bvBackToAlbums()
{
	$bv('bvItemInfo').style.width = '0px';
	bvMode = 'albums';
	busy = true;
	bvMenuOutTimer(10);
}

function bvBackToExhibits()
{
	$bv('bvItemInfo').style.width = '0px';
	if (mediaType == "Videos")
	{
		$f("player").pause(); 
	}
	bvMode = 'grid';
	busy = true;
	bvMenuOutTimer(10);
}
//]]>
