//entries.js for atmhb.com
//03/08

var numEntries = 0; //entry count - to be redefined externally
var numMusic = 0; //music track count - to be redefined externally
var musicIndex = 0; //start on latest track
var entryIndex = -1; //current "open" entry
var mouseOverMusic = null; //flag for mouse over music area (start neither boolean true or false)
var musicAreaWidth = null;

function showEntry(iconObj, colSeq)
{
	if(!iconObj) return;

	hideAllEntries();

	//get index from id (number after "entryicon")
	var ind = parseInt(iconObj.id.substr(9));

	//check if this entry's already open
	if(entryIndex == ind)
	{
		//StartColourEffect and defCol defined in colourblender.js
		StartColourEffect(document.body, new Array(defCol));

		entryIndex = -1; //unflag and leave hidden
		return;
	}

	//get object
	var contentObj = document.getElementById("entry" + ind);
	if(!contentObj) return;

	//show content
	contentObj.style.visibility = "visible";
	iconObj.className = "entryicon entryiconselected";

	//flag this index
	entryIndex = ind;

	//StartColourEffect and defCol defined in colourblender.js
	StartColourEffect(document.body, (colSeq ? colSeq : new Array(defCol)));
}

function hideAllEntries()
{
	//change all entries' and entryicons' styles to hidden
	for(var i=0; i<numEntries; i++)
	{
		var iconObj = document.getElementById("entryicon" + i);
		var contentObj = document.getElementById("entry" + i);
		if(iconObj) iconObj.className = "entryicon";
		if(contentObj) contentObj.style.visibility = "hidden";
	}
}

function extMouseMoves(evt) // called onmousemove by mouse.js
{
	//attempt to grab musicbgmover's wrapper
	if(!musicObj)
	{
		musicObj = document.getElementById("musicbg");
		return;
	}

	//get width variable (once!)
	if(!musicAreaWidth)	musicAreaWidth = musicObj.offsetWidth;

	//determine whether the mouse is over the music area now
	var mouseOverMusicNow = (mouseX <= musicAreaWidth);
	if(mouseOverMusicNow == mouseOverMusic) return; //no change

	//hide/show music
	changeMusic(mouseOverMusicNow ? musicIndex : -1);

	if(!musicbgmover) return; //not yet acquired/broken

	if(mouseOverMusicNow) //mouse inside music area
	{
		if(!musicbgfadeininterval) //not already fading in
		{
			//start fading in
			musicbgfadeininterval = setInterval("fadeInMusicBG()", 50);

			//no longer fading out
			clearInterval(musicbgfadeoutinterval);
			musicbgfadeoutinterval = 0;
		}
	}
	else //mouse outside music area
	{
		if(!musicbgfadeoutinterval) //not already fading out
		{
			//start fading out
			musicbgfadeoutinterval = setInterval("fadeOutMusicBG()", 50);

			//no longer fading in
			clearInterval(musicbgfadeininterval);
			musicbgfadeininterval = 0;
		}

	}

	mouseOverMusic = mouseOverMusicNow; //update memory flag

}

function changeMusic(ind)
{
	if(!musicAreaWidth) return;

	//calculate x-offset to show selected music track
	ind = Number(ind);
	var xoffset = (-musicAreaWidth * ind) + "px";

	//set music list position
	var musicListObj = document.getElementById("musiclistbar");
	if(musicListObj) musicListObj.style.left = xoffset;

	//if a genuine track is selected set the player position and remember the track index
	if(ind >= 0)
	{
		var musicPlayerObj = document.getElementById("musicplayerbar");
		if(musicPlayerObj) musicPlayerObj.style.left = xoffset;
		musicIndex = ind;
	}

}


//music BG effects

var musicbgfadeoutinterval = 0;
var musicbgfadeininterval = 0;
var musicbginterval = setInterval("panMusicBG()", 50);
var musicObj = undefined; //wrapper of musicbgmover
var musicbgmover = undefined; //moving layer
var musicbgpos = 0;
var musicbgalpha = 0;

function panMusicBG()
{
	//attempt to grab object
	if(!musicbgmover)
	{
		musicbgmover = document.getElementById("musicbgmover");
		return;
	}

	//if object is acquired, move it a little
	musicbgpos = (parseInt(musicbgmover.offsetWidth) + musicbgpos > 0) ? musicbgpos - 3 : 0;
	musicbgmover.style.left = musicbgpos + "px";
}

function fadeOutMusicBG()
{
	if(!musicbgmover) //cancel interval if there's a fault
	{
		clearInterval(musicbgfadeoutinterval);
		return;
	}

	if(musicbgalpha >= 0) //fade out if there's any more fading to do
	{
		musicbgalpha -= 4;
		setOpacity(musicbgmover, musicbgalpha);
	}
}

function fadeInMusicBG()
{
	if(!musicbgmover) //cancel interval if there's a fault
	{
		clearInterval(musicbgfadeoutinterval);
		return;
	}

	if(musicbgalpha <= 100) //fade in if there's any more fading to do
	{
		musicbgalpha += 4;
		setOpacity(musicbgmover, musicbgalpha);
	}
}

function setOpacity(obj, alpha)
{
	obj.style.opacity = (alpha / 100);
	obj.style.MozOpacity = (alpha / 100);
	obj.style.KhtmlOpacity = (alpha / 100);
    obj.style.filter = "alpha(opacity=" + alpha + ")";
}