//the queue to line up stuff

function Queue()
        {
        var q = [];
        var paused = false;
   	this.q = q;
        this.paused = paused;

function queue() {
 	for(var i=0;i< arguments.length;i++)
     	q.push(arguments[i]);
	}

	function dequeue() {
    	if(!empty()) q.pop();
	}

function next() {
    	if(empty()) return; //check that we have something in the queue
    	paused=false; //if we call the next function, set to false the paused
    	q.shift()(); // the same as var func = q.shift(); func();
	}

function flush () {
    	paused=false;
    	while(!empty()) next(); //call all stored elements
	}
function empty() {  //helper function
    	if(q.length==0) return true;
    	return false;
	}

function size()
	{
	return q.length;
	}
function clear() {
    	q=[];
	}
	this.queue=queue;
	this.dequeue=dequeue;	
	this.next=next;
	this.flush=flush;
	this.empty=empty; 
        this.clear=clear;
	this.length=size;
	}


//the queue for the imageswap;
q1=new Queue();

//the queue for the slider
q2=new Queue();

var left=0;

//move to previous next
function move(xx)
	{
	new Effect.Move('inner', { x: xx, y: 0, transition:
	Effect.Transitions.sinoidal });
	}

function slide(xx,total)
	{
	function delayed()
		{
		q2.next();
		}
	setTimeout(delayed,400);
	if(q2.length()<1)
		{
	if(left<=total && xx<0 || left>0 && xx>0)
		{
		if(left%600!=0 && left < -610)
			{
			if(xx<0)
				{
				xx= -left%600;
				}
			else
				{
				xx=left%600;
				}
			}
		xx1=-xx;
		q2.queue(function(){move(xx)});
		left=left+xx1;
		}
		}
	if(left>total)
		document.nxt.src="pictures/blank1.gif";
	else
		document.nxt.src="pictures/next.gif";
	if(left>0)
		document.prv.src="pictures/prv.gif";
	else
		document.prv.src="pictures/blank1.gif";
	return left;
	}





//hide and replace hidden
function replacehidden(dir,array1,x,bigArray)
	{
	function delayed()
		{
		q1.next();
		}
	setTimeout(delayed, 100);
	Effect.Fade('big1', { duration: 0.1,from:1.0, to: 0.25  });
	document.getElementById('big1').style.background="url("+dir+array1+") no-repeat";
	}


//slowly fadeout visible
function fadeout()
	{
	function delayed() {
		q1.next();                
		} 
	setTimeout(delayed,250);          
	Effect.Fade('big', { duration: 0.7,from:1.0, to: 0.01  });
	}


//slowly fadein hidden
function fadein()
	{
	function delayed()
		{
		q1.next();
		}
	setTimeout(delayed,800);
	Effect.Fade('big1', { duration: 0.7,from:0.25, to: 1.0  });  
	}




//fast fadein & replace visible
function fadein1(dir,array1,x,bigArray)
{
function delay(dir,array,x)
	{
	Effect.Fade('big', { duration: 0.05,from:0.01, to: 1.0  });
	}
setTimeout(delay,150);
document.big.src=dir+array1;
q1.clear();
}

function rt(dir,array,x)
	{
return thumb;
	}
//run the whole thing!
function imageswap(dir,array1,x,bigArray)
	{
	function delay()
	{
	q1.queue(function(){replacehidden(dir,array1,x)}, function(){fadeout()},function(){
        fadein()},function(){fadein1(dir,array1,x,bigArray)},function() {rt(dir,array1,x,bigArray)});
        q1.next();
	//document.getElementById('large').href="http://www.theunbendingtrees.com/press/large/"+thumb;
	}

setTimeout(delay,300);
//q1.clear();
}


/*function link(thumb)
{
document.write('<a href="http://www.theunbendingtrees.com/press/large/'+thumb+'>download large</a>');
}*/


function print()
	{
	document.print(left);
	}

