// An ad-hoc quick queue mod to serve as history of commands

// Queue initialization
var queue=new Array();
var queueSpace=0;
var prevElement=0;
var nextElement=0;
var currElement=0;
var retElement=0;

// Enqueues the specified item
function enqueue(item){
    queue[currElement++]=item;
    retElement = currElement;
}

// Dequeues an item, returning undefined if the queue is empty
function dequeue(){
   var item=undefined;
   if (queue.length){
       item=queue[queueSpace];
       if ((++queueSpace)*2 >= queue.length){
	  	 	for (var i=queueSpace;i<queue.length;i++) 
	      	queue[i-queueSpace]=queue[i];
	      queue.length-=queueSpace;
	      queueSpace=0;
       }
    }
    return item;
}

// Doesn't Dequeue, simply returns element at index retElement - 1
function getPreviousCmd(){
 var prevItem = '';
 if( queue.length == 0){
    return prevItem;
 }
 if( retElement == 0 ){
   return queue[retElement];
 }
 if( retElement > 0){
   prevItem = queue[--retElement];
   return prevItem;
 }
}


// Doesn't Dequeue, simply returns element at index retElement + 1
function getNextCmd(){
  var nextItem = '';
  if( queue.length == 0){
    return prevItem;
  }
  if( retElement == (currElement - 1) ){
     return queue[retElement];
  }
  else if ( retElement == 0 ){
     retElement++;
     return queue[retElement];
  }
  else if( retElement < currElement - 1){
    nextItem = queue[++retElement];
    return nextItem;
  }
}

// Return the entire queue - formatted.
function getQueue(){
	return queue;
}
