var fadeTextColor = "#000000";
var fadeBackColor = "#FFFFFF";

// DO NOT MODIFY THE CODE BELOW THIS LINE
var increment = 5;
var currentOpacity = 0;

var images = new Array();
var texts = new Array();

var currentImageId = 0;
var lastImageId = 0;

function nextImage()
{

	var lastImageId = currentImageId;
	currentImageId = currentImageId + 1;
	if ( currentImageId > images.length - 1 )
		currentImageId = 0;

	var imageCell = document.getElementById("imageCell");
	var topImage = document.getElementById("topImage");
	var topText = document.getElementById("topText");

	imageCell.style.backgroundImage = 'url("' + images[lastImageId].src + '")';
	imageCell.style.backgroundRepeat = 'no-repeat';
	topImage.src = images[currentImageId].src;
	topText.innerHTML = texts[currentImageId];

	setOpacity(topImage, 0);
	setTextFade(topText, 0);
	setTimeout("fade()", interval);
}

function fade()
{
	var topImage = document.getElementById("topImage");
	var topText = document.getElementById("topText");

	setOpacity(topImage, currentOpacity+increment);
	if (currentOpacity < 99)
		setTimeout("fade()", interval);
	else
		setTimeout("nextImage()", pause * 1000);
}

function setOpacity(ele, percent)
{
	if (percent > 99)
		percent = 99;

	ele.style.opacity = percent / 100;
	ele.style.MozOpacity = percent / 100;
	ele.style.KhtmlOpacity = percent  / 100;
	ele.style.filter = "alpha(opacity=" + percent + ")";

	currentOpacity = percent;
}

function setTextFade(ele, percent, startcolor, endcolor)
{
	ele.style.fontcolor = startcolor;
	fade_in(ele.id, endcolor);
}

function addImageAndText(src, text)
{
	var cnt = images.length;
	images[cnt] = new Image();
	images[cnt].src = src;
	texts[cnt] = text;

	currentImageId = 0;
}

function startup()
{
	var topImage = document.getElementById("topImage");
	var topText = document.getElementById("topText");
	topImage.src = images[0].src;
	topText.innerHTML = texts[0];
	setTimeout("nextImage()", pause*1000);
}

function getStyle(obj, style){
   if(!document.getElementById)
	return;
   if(!obj.style)
   	return;
	var value = obj.style[style];
	if(!value)
	 if(document.defaultView)
		 value = document.defaultView.getComputedStyle(obj, "").getPropertyValue(style);
	 else if(obj.currentStyle)
		 value = obj.currentStyle[style];
	 return value;
}

function getcolor(input_color) {

  var color = input_color.toString();
  var thecolor;

  var rgb_regex = /(\d{1,3}),\s*(\d{1,3}),\s*(\d{1,3})/;
  var hex_regex = /#([0-9a-f]{2})([0-9a-f]{2})([0-9a-f]{2})\b/;
  if (color.match(hex_regex))
  {
	thecolor = new Array(parseInt(color.match(hex_regex)[1],16),parseInt(color.match(hex_regex)[2],16),parseInt(color.match(hex_regex)[3],16));
  }
  else if (color.match(rgb_regex))
  {
	thecolor = new Array(parseInt(color.match(rgb_regex)[1]),parseInt(color.match(rgb_regex)[2]),parseInt(color.match(rgb_regex)[3]));
  }
  else
  {
	thecolor = new Array("0","0","0");
  }

  return thecolor;
}

function get_background_color(element)
{
  //recursively go through parents until one of them has a background color!

  var bgcolor = getStyle(element, "backgroundColor");

  if (bgcolor == "" || bgcolor == "undefined" || bgcolor == "transparent")
  {
	// if there is no parent (we're at the outer element of the DOM and there's no background color?!)
	if (!element.parentNode)
	{
	  return "rgb(255,255,255)";   // return white
	}
	var parent = element.parentNode;
	bgcolor=get_background_color(parent)
  }
  return bgcolor
}

function fade_in(target_name, startcolor, steps) {

  var l1;
  if (!steps) steps=100/increment;
  var target = document.getElementById(target_name);
  target.style.visibility = "visible";

  if (!startcolor || startcolor == "")
	startcolor = get_background_color(target);

  var endcolor = new Array();

  var temp = getStyle(target, "color");

  endcolor = getcolor(fadeTextColor);
  var end_r = endcolor[0];
  var end_g = endcolor[1];
  var end_b = endcolor[2];


  startcolor = getcolor(fadeBackColor);
  var start_r = startcolor[0];
  var start_g = startcolor[1];
  var start_b = startcolor[2];

  var new_color = "rgb("+start_r+", "+start_g+", "+start_b+")";
  target.style.color = new_color;

  var rstep = Math.ceil((end_r - start_r)/steps);
  var gstep = Math.ceil((end_g - start_g)/steps);
  var bstep = Math.ceil((end_b - start_b)/steps);

  // fade any text in the target
  setTimeout("move_step(\""+target_name+"\","+rstep+","+gstep+","+bstep+","+steps+")");

  // recursively fade childNodes of the target
  if(target.childNodes)
	for (l1=0;l1<target.childNodes.length;l1++)
	{
	  // ignore anything without an explicitly declared id.
	  if (target.childNodes[l1].id)
		fade_in(target.childNodes[l1].id,'',steps)
	}
}

function move_step (target_name, rstep, gstep, bstep, steps) {

  var target = document.getElementById(target_name);
  var color = getcolor(getStyle(target, "color"));

  var new_r = color[0] + rstep;
  var new_g = color[1] + gstep;
  var new_b = color[2] + bstep;

  var new_color = "rgb("+new_r+", "+new_g+", "+new_b+")";
  target.style.color = new_color;
  steps=steps-1;

  if (steps > 0)
	setTimeout("move_step(\""+target_name+"\","+rstep+","+gstep+","+bstep+","+steps+")",interval);
}

function addOnLoadEvent(func)
{
	var oldOnLoad = window.onload;
	if (typeof window.onload != 'function')
	{
		window.onload = func;
	}
	else
	{
		window.onload = function() {
			oldOnLoad();
			func();
		}
	}
}

addOnLoadEvent(startup);