//Copyright Eric Hoeve 2008

// duration is how fast we fade in and fade out
var duration=0.4;
var u_dlta=100;
var delta=duration*1000*2+u_dlta;
var delay=1.5;
var speed=1000*delay + delta;
var i=-1,j=i,prog=0,inst=0;
//inst_timeout in secs
var inst_timeout=5;
var fade,appear;

var src = new Array;
var slds=0;
var cap = new Array;



var pic = new Array;
var sld = new Array;


function rotate() {

   i = ( i >= slds - 1 ) ? 0 : i + 1;

   if ( pic[i] == null ) {
      pic[i] = new Image();
      pic[i].onload = function() { 
            if (i > 0)  show_next_slide(i-1); 
            else prog = setTimeout("rotate()", speed); 
	    };
      pic[i].src=src[i];
   } else { show_next(); }
}

function show_next() {

   fade=Effect.Fade('slideall', { duration: duration, delay: delay, queue:{position: 'end', scope: 'slideall', limit: 2}})
   appear=Effect.Appear('slideall',{ duration: duration, queue: { position:'front', scope: 'slideall', limit: 2}}); 
   $('slide').src = pic[i].src;
   $('caption').innerHTML = cap[i];
   $('slide').setAttribute('alt',cap[i]);
   $('slide').setAttribute('title',cap[i]);
   prog = setTimeout("rotate()", speed);
}

function show_next_slide(n) {

   fade=Effect.Fade('slideall', { duration: duration, delay: delay, queue:{position: 'end', scope: 'slideall', limit: 2}})
   appear=Effect.Appear('slideall',{ duration: duration, queue: { position:'front', scope: 'slideall', limit: 2}}); 
   $('slide').src = pic[n].src;
   $('caption').innerHTML = cap[n];
   $('slide').setAttribute('alt',cap[n]);
   $('slide').setAttribute('title',cap[n]);
   prog = setTimeout("rotate()", speed);
}

function next_pic() {
   i = ( i >= slds - 1 ) ? 0 : i + 1;
   if ( pic[i] == null ) {
      $('caption').innerHTML = "Loading next picture...";
      pic[i] = new Image();
      pic[i].src=src[i];
   }
   $('slide').src = pic[i].src;
   $('caption').innerHTML = cap[i];
   $('slide').setAttribute('alt',cap[i]);
   $('slide').setAttribute('title',cap[i]);
}

function prev_pic() {
   i = ( i < 1 ) ? src.length - 1 : i - 1;
   if ( pic[i] == null ) {
      $('caption').innerHTML = "Loading previous picture...";
      pic[i] = new Image();
      pic[i].src=src[i];
   }
   $('slide').src = pic[i].src;
   $('caption').innerHTML = cap[i];
   $('slide').setAttribute('alt',cap[i]);
   $('slide').setAttribute('title',cap[i]);
}

function hide_inst() {
   $('instructions').hide();
}

function show_inst() {
   $('instructions').show();
}

function show_slide() {
   $('slideall').style.opacity = 1.0;
   $('slideall').style.MozOpacity = 1.0;
   $('slideall').style.display = '';
}
function _Esc(u) {
   if (typeof(encodeURIComponent) == 'function') {
     return encodeURIComponent(u);
   } else {
     return escape(u);
   }
}

function rotate_start() {
     var url=_Esc(l.protocol + '//' + l.host +l.pathname);
     new Ajax.Request('/cgi-bin/pictures?url='+url,{
       method: 'get',
       onSuccess: function(transport) {
          var obj=evalJSON(transport.responseText);
	  src=obj.s;
	  cap=obj.c;
	  slds=src.length;
       }});
     $('rotate_container').oncontextmenu = new Function("return false");

     $('rotate_container').observe(
         'mouseover',
         function(e) {
     	     Effect.Queues.get('slideall').each(function(e){ e.cancel(); });
             prog = clearTimeout(prog);
             inst = clearTimeout(inst);
             show_slide();
	     show_inst();
         }
     )
     
     $('rotate_container').observe(
         'mouseout',
         function(e) { 
             fade=Effect.Fade('slideall', { duration: duration, delay: delay, queue:{position: 'end', scope: 'slideall', limit: 2}})
             prog = setTimeout("rotate()", speed);
             inst = setTimeout("hide_inst()",500);
         }
     )

     $('rotate_container').observe(
         'mouseup',
         function(event) { 
	     if ( Event.isLeftClick(event) == true ) {
	        prev_pic(); 
	     } 
	     else {
	        next_pic(); 
             }
         }
     )

     inst = setTimeout("hide_inst()",speed);
     prog = setTimeout("rotate()", speed);
}
 
addOnloadEvent(rotate_start);














