// Browser Slide-Show script. With image cross fade effect for those browsers
// that support it.
// Script copyright (C) 2004-2010 www.cryer.co.uk.
// Script is free to use provided this copyright header is included.
var FadeDurationMS=1000;
function SetOpacity(object,opacityPct)
{
  // IE.
  object.style.filter = 'alpha(opacity=' + opacityPct + ')';
  // Old mozilla and firefox
  object.style.MozOpacity = opacityPct/100;
  // Everything else.
  object.style.opacity = opacityPct/100;
}
function ChangeOpacity(id,msDuration,msStart,fromO,toO)
{
  var element=document.getElementById(id);
  var msNow = (new Date()).getTime();
  var opacity = fromO + (toO - fromO) * (msNow - msStart) / msDuration;
  if (opacity>=100)
  {
    SetOpacity(element,100);
    element.timer = undefined;
  }
  else if (opacity<=0)
  {
    SetOpacity(element,0);
    element.timer = undefined;
  }
  else
  {
    SetOpacity(element,opacity);
    element.timer = window.setTimeout("ChangeOpacity('" + id + "'," + msDuration + "," + msStart + "," + fromO + "," + toO + ")",10);
  }
}
function FadeInImage(foregroundID,newImage,backgroundID)
{

  var foreground=document.getElementById(foregroundID);
  if (foreground.timer) window.clearTimeout(foreground.timer);
  if (backgroundID)
  {
    var background=document.getElementById(backgroundID);
    if (background)
    {
      if (background.src)
      {
        foreground.src = background.src;
        SetOpacity(foreground,100);
      }
      background.src = newImage;
      background.style.backgroundImage = 'url(' + newImage + ')';
      background.style.backgroundRepeat = 'no-repeat';
      var startMS = (new Date()).getTime();
      foreground.timer = window.setTimeout("ChangeOpacity('" + foregroundID + "'," + FadeDurationMS + "," + startMS + ",100,0)",10);
    }
  } else {
    foreground.src = newImage;
  }

}
var slideCache = new Array();
function RunSlideShow(pictureID,backgroundID,imageFiles,displaySecs)
{

  var imageSeparator = imageFiles.indexOf(";");
  var nextImage = imageFiles.substring(0,imageSeparator);
  if (slideCache[nextImage] && slideCache[nextImage].loaded)
  {
    FadeInImage(pictureID,nextImage,backgroundID);
    var futureImages = imageFiles.substring(imageSeparator+1,imageFiles.length)
      + ';' + nextImage;
    setTimeout("RunSlideShow('"+pictureID+"','"+backgroundID+"','"+futureImages+"',"+displaySecs+")",
      displaySecs*1000);
    // Identify the next image to cache.
    imageSeparator = futureImages.indexOf(";");
    nextImage = futureImages.substring(0,imageSeparator);
  } else {
    setTimeout("RunSlideShow('"+pictureID+"','"+backgroundID+"','"+imageFiles+"',"+displaySecs+")",
      250);
  }
  // Cache the next image to improve performance.
  if (slideCache[nextImage] == null)
  {
    slideCache[nextImage] = new Image;
    slideCache[nextImage].loaded = false;
    slideCache[nextImage].onload = function(){this.loaded=true};
    slideCache[nextImage].src = nextImage;
  }
}






function getObject(objname)
{
	var obj;

	if(typeof(objname)=="object")
		return objname;

	obj = document.getElementById(objname);
	if(obj)
		return obj;
	if(document.getElementsByName(objname) && document.getElementsByName(objname)[0])
		return document.getElementsByName(objname)[0];
}
function hideLayer(objname)
{
	var obj;
	obj = getObject(objname);
	if(!obj)
		return;

	setVisibility(obj,false,false);
}

function showLayer(objname)
{
	var obj = getObject(objname);
	if(!obj)
		return;

	setVisibility(obj,true);
}
function fadein(objname,val)
{
	if(val == null)
   		val = 100;

   	if(val == 100)
   		showLayer(objname);
	transparency(objname,val);


	val=val-5;
	if(val>0)
		window.setTimeout("fadein('" + objname + "'," + (++val) + ")", 100);
	else
	{
		window.setTimeout("fadeout('" + objname + "'," + (++val) + ")", 4000);
	}
}
function fadeout(objname,val)
{
	if(val == null)
   		val = 0;

	transparency(objname,val);

	//alert("fadeout(" + objname + "," + val + ")");
	val=val+5;
	if(val<101)
	{
			window.setTimeout("fadeout('" + objname + "'," + (++val) + ")", 100);
	}
	else
	{
		transparency(objname,100);
		window.setTimeout("fadein('" + objname + "'," + (++val) + ")", 1000);
	}
}
function transparency(element,percentage)
{
 var i, count, objStyle, filterValue, opacityValue,obj;
 if(document.getElementById)
 {
  if(typeof(element)=="object" && element)
  	obj=element;
  else
  	if(document.getElementsByName(element) && document.getElementsByName(element)[0])
  		obj=document.getElementsByName(element);
  else if (document.getElementById(element)) { obj=document.getElementById(element); }
  else if (document.getElementsByTagName && document.getElementsByTagName(element) && document.getElementsByTagName(element)[0]) { obj=document.getElementsByTagName(element); }
  else { obj=false; }
  if(obj) {
   percentage=(typeof(percentage)=="undefined")?50:100-percentage;
   filterValue="Alpha(opacity="+percentage+")";
   opacityValue=""+percentage/100;
   count=(obj.length)?obj.length:1;
   for(i=0;i<count;i++) {
    objStyle=(obj.length)?obj[i].style:obj.style;
    objStyle.filter=filterValue;
    objStyle.MozOpacity=opacityValue;
    objStyle.KhtmlOpacity=opacityValue;
    objStyle.opacity=opacityValue;
   }
  }
 }
}

function setVisibility(objname,vis,place)
{
	if(vis)
	{
		objname.style.display = "inline";
		objname.style.visibility = "visible";
	}
	else
	{
		if(place)
		{
			objname.style.display = "inline";
			objname.style.visibility = "hidden";
		}
		else
		{
			objname.style.display = "none";
		}
	}
}

function writeToDiv(text,id)
{
	x = getObject(id);
	if(!x)
		return;
		
	if (document.getElementById)
	{

		//x = document.getElementById(id);
		x.innerHTML = '';
		x.innerHTML = text;
	}
	else if (document.all)
	{
		//x = document.all[id];
		x.innerHTML = text;
	}
	else if (document.layers)
	{
		//x = document.layers[id];
		x.document.open();
		x.document.write(text);
		x.document.close();
	}
}
