
fade_done = false;
ajax_done = false;
counter = 1;
gallery = 0;
img_num = 0;
pause   = false;

var reloader;
var scrub;
var clock;

var http  = getHTTPObject(); // We create the HTTP Object
var http1 = getHTTPObject1(); // We create the HTTP Object
var http2 = getHTTPObject2(); // We create the HTTP Object

function getElementLeft(Elem) {
		var elem;
		if(document.getElementById) {
			var elem = document.getElementById(Elem);
		} else if (document.all){
			var elem = document.all[Elem];
		}
		xPos = elem.offsetLeft;
		tempEl = elem.offsetParent;
  		while (tempEl != null) {
  			xPos += tempEl.offsetLeft;
	  		tempEl = tempEl.offsetParent;
  		}
		return xPos + overlay_offset;
}

function getElementTop(Elem) {
		if(document.getElementById) {	
			var elem = document.getElementById(Elem);
		} else if (document.all) {
			var elem = document.all[Elem];
		}
		yPos = elem.offsetTop;
		tempEl = elem.offsetParent;
		while (tempEl != null) {
  			yPos += tempEl.offsetTop;
	  		tempEl = tempEl.offsetParent;
  		}
		return yPos + overlay_offset;
}

function getElementHeight(Elem) {
		if(document.getElementById) {
			var elem = document.getElementById(Elem);
		} else if (document.all){
			var elem = document.all[Elem];
		}
		xPos = elem.offsetHeight;
		return xPos;
}

function getElementWidth(Elem) {
		if(document.getElementById) {
			var elem = document.getElementById(Elem);
		} else if (document.all){
			var elem = document.all[Elem];
		}
		xPos = elem.offsetWidth;
		return xPos;
}

function resetControls()
{
	document.getElementById('play').style.display = '';;
	document.getElementById('pause').style.display = 'none';
}

function playPauseMovie()
{
	btnPlay = document.getElementById('play');
	btnPause = document.getElementById('pause');

	window.document['flashplayer'].TCallFrame("/", 1);
	
	if(btnPlay.style.display == 'none')
	{
		btnPlay.style.display = '';
		btnPause.style.display = 'none';
	}
	else
	{
		btnPlay.style.display = 'none';
		btnPause.style.display = '';
	}
}

// Fast forward
function beginForward()
{
	fastForward();
	scrub = setInterval("fastForward()", 250);
}

function fastForward()
{
	window.document['flashplayer'].TCallFrame("/", 2);
}

function stopForward()
{
	clearInterval(scrub);
}

// Rewind
function beginRewind()
{
	fastForward();
	scrub = setInterval("rewind()", 250);
}

function rewind()
{
	window.document['flashplayer'].TCallFrame("/", 3);
}

function stopRewind()
{
	clearInterval(scrub);
}

function pausePhoto()
{
	clearTimeout(reloader);
	
	pause = true;
	document.getElementById('play').style.display = '';
	document.getElementById('pause').style.display = 'none';
}

function playPhoto()
{
	pause = false;
	document.getElementById('play').style.display  = 'none';
	document.getElementById('pause').style.display = '';
	
	nextPhoto('next');
}

function GenerateFlash(oSrc, oWidth, oHeight, oName, oVars, element)
{
	// Object tag
	oHTML = '<object';
	oHTML += ' codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=8,0,0,0"';
	oHTML += ' classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000"';
	oHTML += ' id="' + oName + '" align="middle" width="' + oWidth + '" height="' + oHeight + '"';
	oHTML += '>';
	
	// Parameters
	oHTML += '<param name="allowScriptAccess" value="always" /> ';
	oHTML += '<param name="wmode" value="transparent" /> ';
	oHTML += '<param name="movie" value="' + oSrc + '" /> ';
	oHTML += '<param name="quality" value="high" /> ';
	oHTML += '<param name="bgcolor" value="high" /> ';
	oHTML += '<param name="FlashVars" value="' + oVars + '" />';
	
	// Embed tag
	oHTML += '<embed name="' + oName + '" align="middle"';
	oHTML += ' width="' + oWidth + '" height="' + oHeight + '"';
	oHTML += ' allowScriptAccess="always" wmode="transparent"';
	oHTML += ' src="' + oSrc + '" quality="high" bgcolor="high" FlashVars="' + oVars + '"';
	oHTML += ' pluginspage="http://www.macromedia.com/go/getflashplayer" type="application/x-shockwave-flash" swLiveConnect="true"></embed>';
	
	oHTML += '</object>';
	
	document.getElementById(element).innerHTML = oHTML;
}
	
// Filter category list (Ajax Function 1)
function filterList(category)
{
	element0 = 'media_list';
	//document.getElementById(element0).innerHTML += '<div id="container" style="top:'+getElementTop(element0)+';left:'+getElementLeft(element0)+'"><div id="opaquetext" style="width:'+getElementWidth(element0)+';height:'+getElementHeight(element0)+';padding-top:'+((getElementHeight(element0) / 2) - 3)+';text-align:center"><img src="/multimedia/images/loader_list.gif" width="32" height="32" border="0"></div><div id="translucentbkg" style="width:'+getElementWidth(element0)+';height:'+getElementHeight(element0)+'"></div></div>';
	
	dt = new Date();
	http.open("GET", '/multimedia/media_server.php?stamp='+dt+'&category='+category, true);
	http.onreadystatechange = function() {
		if(http.readyState == 4)
		{
			result = http.responseText;
			document.getElementById(element0).innerHTML = result;
		}
	}
	http.send(null);
}

// Load selected media in the media viewer (Ajax function 2)
function loadMedia(media_id)
{
	clearTimeout(reloader);
	pause = false;
	
	element1 = 'media_info';
	element2 = 'media_pane';
	
	/* Is media viewer hidden? If so, slide it into view
	media_viewer = document.getElementById('media_bar_container');
	
	if(media_viewer.style.display == "none")
	{
		media_viewer.style.display = '';
		Effect.SlideDown('media_bar');
	}
	else
	{
		// Display loading layer
		document.getElementById(element1).innerHTML += '<div id="container" style="top:'+getElementTop(element1)+';left:'+getElementLeft(element1)+'"><div id="opaquetext" style="width:'+getElementWidth(element1)+';height:'+getElementHeight(element1)+';padding-top:'+((getElementHeight(element1) / 2) - 3)+';text-align:center"><img src="/multimedia/images/loader_info.gif" width="32" height="32" border="0"></div><div id="translucentbkg" style="width:'+getElementWidth(element1)+';height:'+getElementHeight(element1)+'"></div></div>';
	}

	document.getElementById(element2).innerHTML = '<img src="/multimedia/images/loader_player.gif" width="32" height="32" border="0">';*/
			
	// Request media information
	dt = new Date();
	http1.open("GET", '/multimedia/media_server.php?stamp='+dt+'&id='+media_id, true);
	http1.onreadystatechange = function() {
		if(http1.readyState == 4)
		{
			gallery = media_id;
			img_num = 0;
			counter = 1;
			
			result1 = http1.responseText.split("<!-- SEPERATOR -->");
			document.getElementById(element1).innerHTML = result1[0];
			
			if(result1[1] == 'V')
			{
				GenerateFlash('/multimedia/player.swf', 480, 360, 'flashplayer', 'file=library/'+media_id+'.flv', element2);
			}
			else if(result1[1] == 'A')
			{
				GenerateFlash('/multimedia/audio.swf', 480, 360, 'flashplayer', 'file=library/'+media_id+'.mp3', element2);
			}
			else
			{
				document.getElementById(element2).innerHTML = result1[1];
				reloader = setTimeout("nextPhoto('next')", perslide);
			}
		}
	}
	http1.send(null);
}

// Load the next photo in the slideshow (Ajax function 3)
function nextPhoto(direction, link)
{
	if(document.getElementById('active_photo') && (pause == false || link))
	{
		fade_done = false;
		ajax_done = false;
		clearTimeout(reloader);
		
		// Display loading layer
		element3 = 'media_info';
		
		// Save original HTML before adding loading layer
		save_html = document.getElementById(element3).innerHTML;
		
		// Display loading layer
		//document.getElementById(element3).innerHTML += '<div id="container" style="top:'+getElementTop(element3)+';left:'+getElementLeft(element3)+'"><div id="opaquetext" style="width:'+getElementWidth(element3)+';height:'+getElementHeight(element3)+';padding-top:'+((getElementHeight(element3) / 2) - 3)+';text-align:center"><img src="/multimedia/images/loader_info.gif" width="32" height="32" border="0"></div><div id="translucentbkg" style="width:'+getElementWidth(element3)+';height:'+getElementHeight(element3)+'"></div></div>';
				
		// Fade out old picture
		Effect.Fade('active_photo',{afterFinish:finishFade});
		
		dt = new Date();
		http2.open("GET", '/multimedia/media_server.php?stamp='+dt+'&gallery='+gallery+'&rank='+counter+'&dir='+direction, true);
		http2.onreadystatechange = function() {
			if(http2.readyState == 4)
			{
				document.getElementById(element3).innerHTML = save_html;
								
				result2 = http2.responseText.split("<!-- SEPERATOR -->");
				img_num = result2[0];
				counter = result2[2];
				
				document.getElementById('descr').innerHTML = result2[1];
				document.getElementById('photo_counter').innerHTML = counter;
				document.getElementById('photo_total').innerHTML = result2[3];
				
				ajax_done = true;
				showNew();
			}
		}
		http2.send(null);
	}
}

function finishFade()
{
	fade_done = true;
	showNew();
}

function fadeInStartTimer()
{
	Effect.Appear('active_photo');
	
	if(document.getElementById('play').style.display == 'none')
	{
		clearTimeout(reloader);
		reloader = setTimeout("nextPhoto('next')", perslide);
	}
}

function showNew()
{
	if(fade_done && ajax_done)
	{
		photoElm = document.getElementById('active_photo');
		photoElm.src = '/multimedia/library/'+gallery+'/'+img_num+'.jpg';
		
		// Bug fix: If image is already loaded, the "onload" event will never trigger and the image will not load. 
		// This checks to see if the image is already loaded, and if so, we call the function instantly.
		if(photoElm.complete)
			fadeInStartTimer();
		else
			photoElm.onload = fadeInStartTimer;
		
		fade_done = false;
		ajax_done = false;
	}
}
