// Image rotation handler

var img_array;
var sequence;
var interval;
var old = 0;
var current = 0;

function InitRotateImages(sequence, interval)
{
   // must be initialised with sequence of 'Random' or 'Sequential' and interval in milliseconds   
   if( img_array.length > 1)
   {
      SetSequence(sequence);
      
      if( sequence == 'Random')
      {
         RotateImages();
      } else {
         UpdateImage();
      }
      
      interval = setInterval('RotateImages()', interval);
      
      for(var i = 0; i < img_array.length; i++)
      {
         preload = new Image();
         preload.src = img_array[i].src;
      }
   }
}

function RotateImages()
{
   // used to unhide the nav from non-javascript browsers
   //document.getElementById('img_nav').style.display = 'inline';

   // this is a little confusing - we have the opposite of what you might expect
   // below because the innerHTML of toggle_text shows the other option to what
   // is being currently used for the sequencing
      
   switch(document.getElementById('toggle_text').innerHTML)
   {
      case 'Sequential':
         while (current == old)
         {
            current = Math.floor(Math.random()*img_array.length);
         }
         old = current;
         UpdateImage();
         break;

      case 'Random':
         current = FixPosition(current+1);
         UpdateImage(current);
         break;
   }
}

function FixPosition(position)
{

   if( position < 0)
      position = img_array.length - 1;

   if( position >= img_array.length)
      position = 0;

   return position;
}

function ImageMove(movement)
{
   MakePaused();

   // move image to new position
   ImageSelect(FixPosition(current + movement));
}

function ImageSelect(position)
{
   MakePaused();

   current = position;
   UpdateImage(current);
}

function Stylise(linkH)
{
   for( var i = 0; i < img_array.length; i++)
   {
     var link = document.getElementById('img_link_'+i);
     if( i == linkH)
       link.className = 'linkH';
     else
       link.className = 'linkL';
   }
}

function SetSequence(type)
{
   toggle = document.getElementById('toggle_text');
   switch(type)
   {
      case 'Random':
         toggle.innerHTML = 'Sequential';
         toggle.className = 'random';
         toggle.title = 'Random Playback';
         break;
         
      case 'Sequential':
         toggle.innerHTML = 'Random';
         toggle.className = 'sequential';
         toggle.title = 'Sequential Playback';
         break;

      case 'Resume':
         toggle.innerHTML = auto_unpause;
         toggle.className = auto_unpause == 'Random' ? 'sequential' : 'random';
         toggle.title = auto_unpause == 'Random' ? 'Sequential Playback' : 'Random Playback';
         break;
   }
}

function MakePaused()
{
   toggle = document.getElementById('toggle_text');

   // only set this (and save current) if the current is not already Resume
   if( toggle.innerHTML != 'Resume' )
   {
      auto_unpause = toggle.innerHTML;
      toggle.innerHTML = 'Resume';
      toggle.className = 'resume';
      toggle.title = 'Resume Playback';
   }
}


function UpdateImage()
{
   page = document.images['myImage'];
   data = img_array[current];

   page.src = data.src;
   page.title = data.alt;

   document.getElementById('img_anchor').href = data.href;
   
   document.getElementById('img_text').innerHTML = data.alt;
   Stylise(current);
}

function OutputImageLinks()
{
  var first = true;
  for( var i = 0; i < img_array.length; i++)
  {
    if(!first)
      document.write(' | ');

    document.write('<a href="#" onclick="ImageSelect('+ i +'); return false;"><span class="linkL" id="img_link_'+ i +'">'+ (i+1) + '</span></a>');
    first = false;
  }
}