// JavaScript Library
// User info
// Check the users OS

function checkOS() {
  if(navigator.userAgent.indexOf('IRIX') != -1)
    { var OpSys = "Irix"; }
  else if((navigator.userAgent.indexOf('Win') != -1) &&
  (navigator.userAgent.indexOf('95') != -1))
    { var OpSys = "Windows95"; }
  else if((navigator.userAgent.indexOf('Win') != -1) &&
  (navigator.userAgent.indexOf('NT') != -1))
    { var OpSys = "WindowsNT"; }
  else if(navigator.userAgent.indexOf('Win') != -1)
    { var OpSys = "Windows"; }
  else if((navigator.userAgent.indexOf('Mac') != -1) &&
  (navigator.userAgent.indexOf('OS X') != -1))
    { var OpSys = "Macintosh OS X"; }
  else if(navigator.userAgent.indexOf('Mac') != -1)
    { var OpSys = "Macintosh"; }    
  else { var OpSys = "other"; }
  return OpSys;
}
function checksys() {
if (osSys.indexOf('Win') != -1)
{ var os = "Windows"; }
else if (osSys.indexOf('Mac') != -1)
{var os = "Macintosh"; }
else {var os = "Other"; }
return os;
}

var agent = "Other";
function checkagent() {
if (userAgent.indexOf('MSIE') != -1)
{ var agent = "Mozilla 4"; }
else if (userAgent.indexOf('Firefox') != -1)
{var agent = "Firefox"; }
else if (userAgent.indexOf('Safari') != -1)
{var agent = "Safari"; }
else if (userAgent.indexOf('Mozilla') != -1)
{var agent = "Mozilla"; }
else if (userAgent.indexOf('Netscape') != -1)
{var agent = "Netscape"; }
return agent;
}

// Save user details as variables for later use 
var osSys = checkOS();
var os = checksys();
var nav = navigator.appName;
if (nav == 'Microsoft Internet Explorer')
{ nav = 'IE' }

var osNav = os + " " + nav;		// Used to select the appropriate style sheet for weird browsers 
var display = screen.width + ' x ' + screen.height;


if (document.all) {
	var version=/MSIE d+.d+/
}
if (!document.all) {
userAgent = navigator.userAgent;}
else
//{userAgent = navigator.appVersion.match(version); // reports null - error in IE on Mac
{ 
	if (navigator.userAgent.indexOf('MSIE') != -1)
	{userAgent = "MSIE"; }
	else
	userAgent ="unknown"
}
var agent = checkagent();

// Get today's current date in english & Scotch Gaelic.
var now = new Date();

// Array list of days.
var days = new Array('Sunday','Monday','Tuesday','Wednesday','Thursday','Friday','Saturday');
var dayssg = new Array('Di-Domhnaich','Di-Luain','Di-Mairt','Di-Ciadain','Di-Ardaoin','Di h-Aoine','Di-Sathurna');
var daysw = new Array('Dydd Sul','Dydd Llun','Dydd Mawrth','Dydd Mercher','Dydd Iau','Dydd Gwener','Dydd Sadwrn');

// Array list of months.
var months = new Array('January','February','March','April','May','June','July','August','September','October','November','December');
var monthssg = new Array('anÂ Faoilteach','anÂ Gearran','anÂ MĂĄrt','anÂ Giblean','anÂ Ceitean','anÂ t-Ăg-mhios','anÂ t-luchar','anÂ LĂșnasdal','anÂ t-Sultain','anÂ DĂ mhair','anÂ t-Samhain','anÂ DĂșbhlachd');
var monthsw = new Array('Ionawr','Chwefror','Mawrth','Ebrill','Mai','Mehefin','Gorffenaf','Awst','Medi','Hydref','Tachwedd','Rhagfyr');

// Calculate the number of the current day in the week.
var date = ((now.getDate()<10) ? "0" : "")+ now.getDate();

// Calculate four digit year.
function fourdigits(number)	{
	return (number < 1000) ? number + 1900 : number;
								}

// Join it all together english
today =  days[now.getDay()] + ", " +
         months[now.getMonth()] + " " +
         date;

// Join it all together Scotch Gaelic
todaysg =  dayssg[now.getDay()] + ", " +
         monthssg[now.getMonth()] + " " +
         date;

// Join it all together welsh
todayw =  daysw[now.getDay()] + ", " +
         monthsw[now.getMonth()] + " " +
         date;

//  End

var thisYear = now.getFullYear();

// visibility & opacity control variables (not all in use)
var opac = 1						// Starting value for opacity fade of contents
var opacNB = 1;						// Starting value for opacity fade of navigation bars
var runopacContents;				// process ID for content opacity interval timer
var runopacNavBar;					// process ID for navigation bar opacity interval timer
var fadeRateNB = 50;				// Default speed of 50ms for opacity change intervals of navigator bars
var delayNB = 3000;					// Time interval between cycling of navigator bars
var c = 0;							// gets set to the value of the next content to toggle to.
var n = 0;							// gets set to the value of the next navigation bar to toggle to.
var fadeMethodContents = 1;			// set to 0 to use visibility switch effect insteady of opacity crossfade
var status = "no";
var currentNavBar = "";				// what 'navigation column' to be displayed
var previousNavBar = "";			// and hidden
var h2 = 1;							// counter for h2 tag Id
var h2r = "";						// h2 tag identifier

// function to cross-fade the contents sections using opacity and/or visibility settings
// it sets up the visibility and opacity values ready for processing by setOpacitycontents()
function crossFade(viewing,hiding,fade,speed,h2row) { 
	if (viewing != hiding) { 
		previousContents = hiding;
		currentContents = viewing;	// update the global variables to make sure we work the right way round
			h2r = h2row;
			if (document.getElementById("transitioning")) document.getElementById("transitioning").style.visibility = "visible"; // show transistioning message and hide image link on slide pages
			if (document.getElementById("transitioningIndex")) document.getElementById("transitioningIndex").style.visibility = "visible";	// mask navigation controls on index pages
			if (document.getElementById("transitioningIndex2")) document.getElementById("transitioningIndex2").style.visibility = "visible"; // and pause/play controls
			if (document.getElementById("transitioningIndex3")) document.getElementById("transitioningIndex3").style.visibility = "visible";	// mask navigation controls on index pages

		// swap images
		if (fade == 0)	{
			document.getElementById(hiding).style.visibility = "hidden";
			document.getElementById(viewing).style.visibility = "visible";		
			if (cycleContents == 1) {
				runContents = setTimeout("cycleContent()", delayContents);	// if cycling is set then call cycleContent after delayContents milliseconds
				}
			else {
			if (document.getElementById("transitioning")) document.getElementById("transitioning").style.visibility = "hidden"; // show transistioning message and hide image link on slide pages
			if (document.getElementById("transitioningIndex")) document.getElementById("transitioningIndex").style.visibility = "hidden";	// mask navigation controls on index pages
			if (document.getElementById("transitioningIndex2")) document.getElementById("transitioningIndex2").style.visibility = "hidden"; // and pause/play controls
			if (document.getElementById("transitioningIndex3")) document.getElementById("transitioningIndex3").style.visibility = "hidden";	// mask navigation controls on index pages
			}
		
		}
		else { // crossfade images

			if (nav == "IE") { // try IE browser methods
				if (document.getElementById(h2r)) document.getElementById(h2r).style.filter="alpha(opacity=25)";			// resuce opacity to indicate inactive controls
				if (document.getElementById("pause")) document.getElementById("pause").style.filter="alpha(opacity=25)";
				if (document.getElementById("play")) document.getElementById("play").style.filter="alpha(opacity=25)";
				document.getElementById(hiding).style.filter="alpha(opacity=100)";
				document.getElementById(viewing).style.filter="alpha(opacity=0)";
				document.getElementById(viewing).style.visibility = "visible";
				runopacContents = setInterval("setOpacitycontents()",speed);
			}
			else { // try the W3C standard opacity method
				if (document.getElementById(h2r)) document.getElementById(h2r).style.opacity = 0.25;
				if (document.getElementById("pause")) document.getElementById("pause").style.opacity = 0.25;
				if (document.getElementById("play")) document.getElementById("play").style.opacity = 0.25;
				document.getElementById(hiding).style.opacity = "1";			// ensure displayed page has opacity of 1
				document.getElementById(viewing).style.opacity = "0";			// and next image is at 0
				document.getElementById(viewing).style.visibility = "visible";	// and visibility is set to true
				runopacContents = setInterval("setOpacitycontents()", speed);	// keep calling opacity change function after a short delay
			}
		}	// end opacity blocks
	}	// end viewing != hiding 
}	// end function

// Function to incrementaly change the opacity of previous & current content
function setOpacitycontents() {
	if (nav == "IE"){			// IE non-standard opacity method
		document.getElementById(previousContents).style.filter="alpha(opacity=" + (100-2*opac) + ")";	// adjust as required
		document.getElementById(currentContents).style.filter="alpha(opacity=" + (2*opac) + ")";		// for a smoother effect
		opac = opac + 1;
		if (opac >49) {
			document.getElementById(previousContents).style.visibility = "hidden";
			document.getElementById(previousContents).style.filter="alpha(opacity=100)";
			window.clearInterval(runopacContents);
			opac = 1;
			h2 = h2 + 1;						// update h2 tag number
			if (h2 > contentsLength) h2 = 1;	// reset to 1 if we've got to the last one

			if (document.getElementById("transitioning")) document.getElementById("transitioning").style.visibility = "hidden"; // hide transitioning message and show image link
			if (document.getElementById("transitioningIndex2")) document.getElementById("transitioningIndex2").style.visibility = "hidden";	// unmask out the pause/play controls
			if (cycleContents == 0) {
				if (document.getElementById("transitioningIndex")) document.getElementById("transitioningIndex").style.visibility = "hidden";	// unmask out the h2 tags navigation controls
				if (document.getElementById("transitioningIndex3")) document.getElementById("transitioningIndex3").style.visibility = "hidden";	// unmask out the h2 tags navigation controls
				if (document.getElementById(h2r)) document.getElementById(h2r).style.filter="alpha(opacity=100)";	// buttons are currently active
			}

			if (document.getElementById("pause")) document.getElementById("pause").style.filter="alpha(opacity=100)";	// reset pause/play buttons opacity
			if (document.getElementById("play")) document.getElementById("play").style.filter="alpha(opacity=100)";
			if (cycleContents == 1) runContents = setTimeout("cycleContent()", delayContents);	// if cycling is set then call cycleContent after delayContents milliseconds
		}
	}
	else
	{																				// W3C standard method

		document.getElementById(previousContents).style.opacity = 1-(opac/50);		// reduce old content and
		document.getElementById(currentContents).style.opacity = (opac/50);			// increase new content opacity
		opac = opac + 1;															// by 4% each time the function is called
		if (opac >49) {																// Stop when opacities have toggled
			document.getElementById(previousContents).style.visibility = "hidden";	// and hide the previous content
			document.getElementById(previousContents).style.opacity = "1";			// whilst resetting the opacity.
			window.clearInterval(runopacContents);									// stop further calls to this function
			opac = 1;																// and reset the starting value for the next time
			h2 = h2 + 1;
			if (h2 > contentsLength) h2 = 1;
			if (document.getElementById("transitioning")) document.getElementById("transitioning").style.visibility = "hidden"; // hide transitioning message and show image link
			if (document.getElementById("transitioningIndex2")) document.getElementById("transitioningIndex2").style.visibility = "hidden";
			if (cycleContents == 0) {
				if (document.getElementById("transitioningIndex")) document.getElementById("transitioningIndex").style.visibility = "hidden";
				if (document.getElementById("transitioningIndex3")) document.getElementById("transitioningIndex3").style.visibility = "hidden";
				if (document.getElementById(h2r)) document.getElementById(h2r).style.opacity = 1;
			}

			if (document.getElementById("pause")) document.getElementById("pause").style.opacity = 1;
			if (document.getElementById("play")) document.getElementById("play").style.opacity = 1;
			if (cycleContents == 1) runContents = setTimeout("cycleContent()", delayContents);	// if cycling is set then call cycleContent after delayContents milliseconds
		}
	}
}

var runContents;								// process ID for content cycling interval timer
var cycleContents = 0;							// holds status of cycling function, 0 is not cycling

// this is the function that setups and starts the cycling process by calling cycleContent()
function cyclingContents() {					// start of the actual function
	if (cycleContents == 1)	{					// if cycling stop cycling, otherwise start cycling
		cycleContents = 0;
		window.clearInterval(runContents);		// clear the interval timer to stop the cycling

		}		
	else {
		cycleContents = 1;
		window.clearInterval(runopacContents);		// ensure setOpacityContents() is not running
		document.getElementById(previousContents).style.opacity = 1;			// reset the opacity levels to normal
		document.getElementById(currentContents).style.opacity = 1;				// for any content being cycled
		document.getElementById(previousContents).style.visibility = "hidden";	// and set the visibilty to show
		document.getElementById(currentContents).style.visibility = "visible";	// only the current content
		for (var cl = 0; cl <= contentsLength; cl++) 
			{ 
			if (contents[cl] == currentContents) { 
				h2 = cl + 1;	// set starting point for h2 tag Id (JAlbum rows)
				c = cl + 1;
				if (c == contentsLength)  
					{
						c = 0;
				}
			}
		}

	cycleContent();
	// runContents = setInterval("cycleContent()", delayContents);	// call cycleContent every delayContents milliseconds (but can cause problems on short delays)
	}
}

// this function changes the contents to be viewed/hidden and calls the crossFade() function
function cycleContent() { 										// move to the next content
	h2r = "row" + h2;											// update actual tag id string
	crossFade(contents[c],currentContents,fadeMethod,fadeRateContents,h2r);	// using a crossfade of fadeRate milliseconds
	c = c + 1;													// set c to point to the next content
	if ( c == contentsLength)									// or the first in the list if required
		{ 
			c = 0; 
		}
}



// Function to stop the contents from being cycled, if required, before manually moving to another content

function stopCyclingContents() { 
	window.clearInterval(runopacContents);		// ensure setOpacityContents() is not running
	if (cycleContents == 1)						// if cycling, call it to toggle it off.
		{cyclingContents();
		document.getElementById(previousContents).style.opacity = 1;			// reset the opacity levels to normal
		document.getElementById(currentContents).style.opacity = 1;				// for any content being cycled
		document.getElementById(previousContents).style.visibility = "hidden";	// and set the visibilty to show
		document.getElementById(currentContents).style.visibility = "visible";	// only the current content
		}
}

function playPause(toggle) {
	if (toggle == 1) {
		// start cycling
		document.getElementById('play').style.visibility = "hidden";	// and set the visibilty to show
		document.getElementById('pause').style.visibility = "visible";	// only the current pause
		if (cycleContents == 0)	cyclingContents();
		if (document.getElementById("transitioningIndex")) document.getElementById("transitioningIndex").style.visibility = "visible"; // mask h2 tag controls
		if (document.getElementById("transitioningIndex3")) document.getElementById("transitioningIndex3").style.visibility = "visible"; // mask h1 tag controls

		for (var thisrow = 1; thisrow <= contentsLength; thisrow++) {
			rtemp = "row" + thisrow;
			if (nav == "IE"){
				if (document.getElementById(rtemp)) document.getElementById(rtemp).style.filter="alpha(opacity=25)";	// buttons are currently active
			}
			else {
				if (document.getElementById(rtemp)) document.getElementById(rtemp).style.opacity = 0.25;	// reduce opacity of all h2 tags
			}
		}
	}
	else if (toggle == 0) {
		// stop cycling
		document.getElementById('pause').style.visibility = "hidden";	// set the visibilty to show
		document.getElementById('play').style.visibility = "visible";	// only the play button
		stopCyclingContents();

		if (document.getElementById("transitioning")) document.getElementById("transitioning").style.visibility = "hidden"; // show transistioning message and hide image link on slide pages
		if (document.getElementById("transitioningIndex")) document.getElementById("transitioningIndex").style.visibility = "hidden";	// mask navigation controls on index pages
		if (document.getElementById("transitioningIndex2")) document.getElementById("transitioningIndex2").style.visibility = "hidden"; // and pause/play controls
		if (document.getElementById("transitioningIndex3")) document.getElementById("transitioningIndex3").style.visibility = "hidden";	// mask navigation controls on index pages

		for (var thisrow = 1; thisrow <= contentsLength; thisrow++) {
			rtemp = "row" + thisrow;
			if (nav == "IE"){
				if (document.getElementById(rtemp)) document.getElementById(rtemp).style.filter="alpha(opacity=100)";	// buttons are currently active
			}
			else {
				if (document.getElementById(rtemp)) document.getElementById(rtemp).style.opacity = 1;	// reset opacity of all h2 tags
			}
		}
	}
	else {
		// page has auto-start enabled
		document.getElementById('play').style.visibility = "hidden";	//  set the visibilty to show
		document.getElementById('pause').style.visibility = "visible";	// only the pause button
		if (document.getElementById("transitioningIndex3")) document.getElementById("transitioningIndex3").style.visibility = "visible";	// mask navigation controls on index pages

		for (var thisrow = 1; thisrow <= contentsLength; thisrow++) {
			rtemp = "row" + thisrow;
			if (nav == "IE"){
				if (document.getElementById(rtemp)) document.getElementById(rtemp).style.filter="alpha(opacity=25)";	// buttons are currently active
			}
			else {
				if (document.getElementById(rtemp)) document.getElementById(rtemp).style.opacity = 0.25;	// reduce opacity of all h2 tags
			}
		}
	}
}



// function to cross-fade the navBar sections using opacity and/or visibility settings
function crossFadeNavBar(viewingNB,hidingNB,fadeNB,speedNB) { 
	if (viewingNB != hidingNB) { 
		currentNavBar = viewingNB;	// update the global variables to make sure we work the right way round
		previousNavBar = hidingNB;
		// swap images
		if (fadeNB == 0)	{
			document.getElementById(hidingNB).style.visibility = "hidden";
			document.getElementById(viewingNB).style.visibility = "visible";		
		}
		else { // crossfadeNB images
			if (document.getElementById("transitioning")) document.getElementById("transitioning").style.visibility = "visible"; // show transistioning message and hide image link on slide pages
			if (document.getElementById("transitioningIndex")) document.getElementById("transitioningIndex").style.visibility = "visible";
			if (document.getElementById("transitioningIndex3")) document.getElementById("transitioningIndex3").style.visibility = "visible";
			if (nav == "IE"){ // try IE browser methods
				document.getElementById(hidingNB).style.filter="alpha(opacity=100)";
				document.getElementById(viewingNB).style.filter="alpha(opacity=0)";
				document.getElementById(viewingNB).style.visibility = "visible";
				runopacContents = setInterval("setOpacityNavBar()",speedNB);
			}
			else { // try the W3C standard opacity method
				document.getElementById(hidingNB).style.opacity = "1";			// ensure displayed page has opacity of 1
				document.getElementById(viewingNB).style.opacity = "0";			// and next image is at 0
				document.getElementById(viewingNB).style.visibility = "visible";	// and visibility is set to true
				runopacContents = setInterval("setOpacityNavBar()", speedNB);	// keep calling opacity change function after a short delay
			}
		}	// end opacity blocks
	}	// end viewingNB != hidingNB 
}	// end function

// Function to change the opacity of previous & current content
function setOpacityNavBar() {
	if (nav == "IE"){			// IE non-standard opacity method
		document.getElementById(previousNavBar).style.filter="alpha(opacity=" + (100-2*opacNB) + ")";	// adjust as required
		document.getElementById(currentNavBar).style.filter="alpha(opacity=" + (2*opacNB) + ")";		// for a smoother effect
		opacNB = opacNB + 1;
		if (opacNB >49) {
			document.getElementById(previousNavBar).style.visibility = "hidden";
			document.getElementById(previousNavBar).style.filter="alpha(opacity=100)";
			window.clearInterval(runopacNBNavBar);
			opacNB = 1;
			if (document.getElementById("transitioning")) document.getElementById("transitioning").style.visibility = "hidden"; // hide transitioning message and show image link
			if (document.getElementById("transitioningIndex")) document.getElementById("transitioningIndex").style.visibility = "hidden";
			if (document.getElementById("transitioningIndex3")) document.getElementById("transitioningIndex3").style.visibility = "hidden";
		}
	}
	else
	{																				// W3C standard method
		document.getElementById(previousNavBar).style.opacity = 1-(opacNB/50);		// reduce old content and
		document.getElementById(currentNavBar).style.opacity = (opacNB/50);			// increase new content opacNBity
		opacNB = opacNB + 1;														// by 2% each time the function is called
		if (opacNB >49) {															// Stop when opacNBities have toggled
			document.getElementById(previousNavBar).style.visibility = "hidden";	// and hide the previous content
			document.getElementById(previousNavBar).style.opacity = "1";			// whilst resetting the opacity.
			window.clearInterval(runopacNBNavBar);									// stop further calls to this function
			opacNB = 1;																// and reset the starting value for the next time
			if (document.getElementById("transitioning")) document.getElementById("transitioning").style.visibility = "hidden"; // hide transitioning message and show image link
			if (document.getElementById("transitioningIndex")) document.getElementById("transitioningIndex").style.visibility = "hidden";
			if (document.getElementById("transitioningIndex3")) document.getElementById("transitioningIndex3").style.visibility = "hidden";
		}
	}
}

var navBarSelector ="";
if ((nav == "IE") && (window.location.href.indexOf('gallery') == -1)) {
//navBarSelector += '<div id="navBarSelector"><span class="ieBrowsers">This site is fully compliant with W3C XHTML1.1 &amp; CSS standards and using a browser other than Internet Explorer will probably give a better user experience.</span></div>';
}

function hideContent(theContent) {
document.getElementById(theContent).style.visibility = "hidden";
}

function showContent(theContent) {
document.getElementById(theContent).style.visibility = "visible";
}


