backgroundImages = Array();
avatarImages = Array();
appearTimeOffset = 500.0;
backgroundImageNo = 0;
avatarImageNo = 0;
previousAvatarImageNo = 0;

function _assignImages(prefix, images) {
  for (var i=1; i<images.length; i++) {
    var e = document.getElementById(prefix + i);
    e.src = images[i];
  }
}

function _setImage(time, prefix, images, currentImageNo, newImageNo) {
  if (!time) time = 1.0;
  else time = time / 1000.0;
  new Effect.Fade(prefix + currentImageNo, {duration: time})
  var id = prefix + newImageNo
  new Effect.Appear(id, {duration: time})
  return newImageNo
}

function setImagesStyles() {
  for (var i=1; i<backgroundImages.length; i++) {
    Element.setStyle('background_'+i, {'background-image': 'url(' + backgroundImages[i] + ')'})
  }
  for (var i=1; i<avatarImages.length; i++) {
    Element.setStyle('avatar_'+i, {'background-image': 'url(' + avatarImages[i] + ')'})
  }
}

function _nextImage(time, prefix, images, imageNo) {
  var nextImageNo = (imageNo + 1) % images.length
  return _setImage(time, prefix, images, imageNo, nextImageNo)
//  if (!time) time = 1000;
//  var dur = time / 2.0 / 1000.0;
//  new Effect.Fade(prefix + imageNo, {duration: dur})
//  imageNo = (imageNo + 1) % images.length
//  new Effect.Appear(prefix + imageNo, {duration: dur})
//  return imageNo
}

function nextAvatarImage(time) {
  avatarImageNo = nextImage(time, 'avatar_', avatarImages, avatarImageNo)
}

//function resetCycleAvatarImages() {
//  appearShadowed('avatar_text');
//  avatarImageNo = 0;
//  new Effect.Appear('avatar_0');
//  new Effect.Appear('avatar-shadow');
//}

function cycleAvatarImages(timeBetweenImages, transitionTime) {
  fadeShadowed('avatar-trigger');
  appearShadowed('avatar_text');
  avatarImageNo = 0;
  new Effect.Appear('avatar_0');
  new Effect.Appear('avatar-shadow');
  if (!timeBetweenImages) timeBetweenImages = 5000;
  if (!transitionTime) transitionTime = 3000;
  var i=0;
  for (i=1; i<avatarImages.length; i++) {
    window.setTimeout('nextAvatarImage(' + transitionTime + ')', i * timeBetweenImages);
  }
  window.setTimeout('new Effect.Fade(\'avatar_' + (i-1) + '\'); new Effect.Fade(\'avatar-shadow\'); fadeShadowed(\'avatar_text\'); appearShadowed(\'avatar-trigger\')', i * timeBetweenImages);
}

function assignAvatarImages() {
  _assignImages('avatar_', avatarImages);
}

function assignBackgroundImages() {
  _assignImages('background_', backgroundImages);
}

function cycleBackgroundImages(timeBetweenImages, transitionTime, offsetTime) {
  if (!timeBetweenImages) timeBetweenImages = 5000;
  if (!transitionTime) transitionTime = 3000;
  if (!offsetTime) offsetTime = 0;
  var i=0;
  for (i=1; i<backgroundImages.length; i++) {
    window.setTimeout('nextBackgroundImage(' + transitionTime + ')', i * timeBetweenImages);
  }
  window.setTimeout('cycleBackgroundImages(' + timeBetweenImages + ',' + transitionTime + ',' + (offsetTime + (i-1) * timeBetweenImages) +')', i * timeBetweenImages);
}

function nextAvatarImage(time) {
  avatarImageNo = _nextImage(time, 'avatar_', avatarImages, avatarImageNo)
}

function nextBackgroundImage(time) {
  backgroundImageNo = _nextImage(time, 'background_', backgroundImages, backgroundImageNo)
}

function setBackgroundImage(newBackgroundImageNo, time) {
  backgroundImageNo = _setImage(time, 'background_', backgroundImages, backgroundImageNo, newBackgroundImageNo)
}

function gotoPage(url, time) {
  new Effect.Fade('main', {duration: time / 1000.0})
  window.setTimeout('document.location.href = \'' + url + '\'', time)
}
