function runImageFlipper(id) {
  var i, runstr, runner;
  imageFlipTasks[id] = new Array;
  for(i = 0; i < imgsrcs[id].length; i++) {
    var imgsrc = imgsrcs[id][i];
    var w = loadedImages[id][i].width;
    var h = loadedImages[id][i].height;
    runstr = 'fadeImage("' + id + '","' + imgsrc + '",' + w + ',' + h + ')';
    runner = new makeImageCommand(runstr,delay[id]);
    imageFlipTasks[id].push(runner);
    runstr = 'flipImage("' + id + '","' + imgsrc + '",' + w + ',' + h + ')';
    runner = new makeImageCommand(runstr,fastdelay[id]);
    imageFlipTasks[id].push(runner);
    runstr = 'fadeImage("' + id + '","' + imgsrc + '",' + w + ',' + h + ')';
    runner = new makeImageCommand(runstr,delay[id]);
    imageFlipTasks[id].push(runner);
    //makeImageWander(id,i);
  }
  runstr = 'runImageFlipper("' + id + '")';
  runner = new makeImageCommand(runstr,delay[id]);
  imageFlipTasks[id].push(runner);
  runImageTask(id);
}
function makeImageCommand(command, fuse) {
  this.command = command;
  this.fuse = fuse;
}
function getObjectWidth(id) {
  var obj = document.getElementById(id);  
  if(obj) {
    if(obj.offsetWidth != null) return obj.offsetWidth;
    if(obj.style.width != null) return obj.style.width;
    if(obj.style.clip.width != null) return obj.style.clip.width;
  }
  return null;
}
function getObjectHeight(id) {
  var obj = document.getElementById(id);  
  if(obj) {
    if(obj.offsetHeight != null) return obj.offsetHeight;
    if(obj.style.height != null) return obj.style.height;
    if(obj.style.clip.height != null) return obj.style.clip.height;
  }
  return null;
}
function makeImageMover(id,imgindex) {
  var w = loadedImages[id][imgindex].width;
  var h = loadedImages[id][imgindex].height;
  var myWindowID = 'space' + id;
  //myWindowID = 'theContentBlock';
  var myWindow = document.getElementById(myWindowID);
  //alert('makeImageMover(' + id + ',' + imgindex);
  if(myWindow) {
    var myWindowStyle = myWindow;
    if(myWindow.style) myWindowStyle = myWindow.style;
    var maxW = getObjectWidth(myWindowID);
    if(maxW == 0) maxW = 260;
    var maxH = getObjectHeight(myWindowID);
    if(maxH == 0) maxH = 220;
    //alert('window is ' + maxW + 'x' + maxH);
    var steps = 60;
    var coords = new Array;
    if(maxW < w || maxH < h) {
      for(var i = 0; i < steps; i++) {
         coords[i] = new Array;
         coords[i][0] = 0;
         coords[i][1] = 0;
      }
      if(maxW < w) {
         var xStep = (maxW - w) / steps;
         for(var i = 0; i < steps; i++) {
           coords[i][0] = (xStep * i);
         }
      }
      if(maxH < h) {
         var yStep = (maxH - h) / steps;
         for(var i = 0; i < steps; i++) {
           coords[i][1] = (yStep * i);
         }
      }
      for(var i = 0; i < steps; i++) {
        var runstr = 'moveImage("' + id + '",' + coords[i][0] + ',' + coords[i][1] + ')';
        var runner = new makeImageCommand(runstr,fastdelay[id]);
        imageFlipTasks[id].push(runner);
      }
    }
  }  
}
function fadeImage(id,src,w,h) {
  var obj = document.getElementById(id);
  var objstyle = obj;
  var iddiv = 'space' + id;
  if (obj) {
    if(obj.style) objstyle = obj.style;
    if(obj.filters && obj.filters.blendTrans) obj.filters.blendTrans.Apply();
    objstyle.visibility = 'hidden';
    if(obj.filters && obj.filters.blendTrans) obj.filters.blendTrans.Play();
  }
  runImageTask(id);
};
function flipImage(id,src,w,h) {
  var obj = document.getElementById(id);
  var objstyle = obj;
  var iddiv = 'space' + id;
  var objdiv = document.getElementById(iddiv);
  if (obj) {
    if(obj.style) objstyle = obj.style;
    if(obj.filters && obj.filters.blendTrans) obj.filters.blendTrans.Apply();
    obj.src = src;
    obj.width = w;
    obj.height = h;
    objstyle.left = 0;
    objstyle.visibility = 'visible';
    if(obj.filters && obj.filters.blendTrans) obj.filters.blendTrans.Play();
  }
  if(src != 'userimgs/spacer.gif') {
    setBackgroundImage(iddiv,src);
    //fadeImage(id,src,w,h);
    fadeImage(id,'userimgs/spacer.gif',w,h);
  }
  runImageTask(id);
};
function setBackgroundImage (id, imageURL) {
  if (document.getElementById) {
    var objdiv = document.getElementById(id);
    if(objdiv) {
      objdiv.style.backgroundImage = 'url(' + imageURL + ')';
      //alert ('div '+id+' set to ' + imageURL);
    } else {
      //alert ('div '+id+' not found');
    }
  }
};
function moveImage(id,x,y) {
  var obj = document.getElementById(id);
  if (obj) {
    if(obj.style) obj = obj.style;
    obj.left = x;
    obj.top = y;
  }
  runImageTask(id);
};
function runImageTask(id) {
  var nextTask = imageFlipTasks[id].shift();
  if(nextTask) {
    clearTimeout(tasksID[id]);
    tasksID[id] = setTimeout(nextTask.command,nextTask.fuse);
  }
}
