// © Erik F. Kastner <kastner@gmail.com>, GNU GPL 2006-03-05

//
// Function to check browser compatibilty with XMLHttpRequest
//
function has_xhr() {
  return true;
}

//
// speed of transitions
//
t_speed = 600;

//
// replace target with a random image from letters[letter]
//
function new_image(target, letter, effect) {
  // just incase an id is passed
  target      = $(target);
  img         = document.createElement("IMG");
  new_letter  = letters[letter][Math.floor(Math.random()*letters[letter].length)];
  img.src     = new_letter.url;
  
  //
  // default effect
  //
  if (!effect) effect = "Width";

  // make sure we show a different image if we have one
  if (letters[letter].length > 1 && target.src == img.src) {
    new_image(target, letter, effect);
  }
  else {
    //
    // toggle effect
    //
    effects[effect + target.id].toggle();
    
    //
    // change image
    //
    setTimeout("$('" + target.id + "').src = \"" + new_letter.url + "\"", t_speed);
    
    //
    // toggle effect again (after a timeout)
    //
    setTimeout("effects['" + effect + target.id + "'].toggle()", t_speed + 100);
  }
}

//
// preloader use with caution
//
function load_images() {
  img = document.createElement("img");
  for(var i=0; i<letters.length; i++) {
    for (var j=0; j<letters[i].length; j++) {
      img.src = letters[i][j].url;
    }
  }
}

//
// function to change all images
//
function change_all() {
  timeout = 0;
  delay   = t_speed/2;
  delay   = 90;
  
  for(var i=0; d=$('spot_'+i); i++) {
    setTimeout("new_image('" + d.id + "','" + d.title + "', 'Opacity')", timeout);
    timeout += delay;
  }  
}
var effects = {};

window.onload = function() {
  //
  // focus on the input field
  //
  if (s = $('string')) { s.focus(); }
  
  //load_images();
  
  //
  // loop through all spot_'s and make an effect array for them
  //
  for(var i=0; d=$('spot_'+i); i++) {
    ['Opacity', 'Width'].each(function(effect) {
      //effects[effect + 'spot_' + i] = new fx[effect](d, { duration:t_speed });
      effects[effect + 'spot_' + i] = new fx[effect](d, { duration:t_speed });
    });
  }
}