var SlideshowController = Class.create({
  
  
 
    initialize: function(portfolio, el){
 
       this.portfolio = portfolio; // portfolio variable is json object containing images
       this.element = $(el);
       var slideQueue = this.slideQueue;
       this.slideQueue = [];
       var cue = this.cue;


 

      this.loadSet(0);
   

           },
 
 
   
   startSet: function(){
 
      this.cue = 0 ;

      this.slideQueue[0].preload();

      this.slideQueue[0].show();

      this.slideQueue[1].preload();
 
      $('slideCount').update(this.slideQueue.length);

 
 
       
    }, 
    

    
  
  
  _next: function(){
  
    (this.cue === this.slideQueue.length-1) ? this.cue = 0 : this.cue++; //reset cue to 0 if at last image or increment cue
    
     
  
    this.slideQueue[this.cue].show();
 
    
  	if(this.slideQueue[this.cue+1]){this.slideQueue[this.cue+1].preload()};
  	
  	if(this.cue==0){this.slideQueue.last().fadeOut() }
    
    if(this.slideQueue[this.cue-1]){ this.slideQueue[this.cue-1].fadeOut();     };
  
   
  },
   
   
 _back: function(){
   
    (this.cue === 0) ? this.cue = this.slideQueue.length-1 : this.cue--; //reset cue to 0 if at last image or increment cue
     
    this.slideQueue[this.cue].show();

  	if(this.slideQueue[this.cue-1]){this.slideQueue[this.cue-1].preload()};
  	
  	if(this.cue==this.slideQueue.length-1){this.slideQueue.first().fadeOut();  };
    
    if(this.slideQueue[this.cue+1]){ this.slideQueue[this.cue+1].fadeOut();    };
 
 
 
 },

    
  loadSet: function(set){
 
  
 

     if(this.cue!=undefined){this.slideQueue[this.cue].fadeOut()}
    
     this.slideQueue=[];
          
     this.set = portfolio[set];
     
 
    
     
     for (i=0; i<this.set.length; i += 1 ){
   
     c = this.slideQueue.length;
       
     flg ='';
     
     var url1 = this.set[i];
               var url2 = '';
           
            
            if (url1.indexOf('w.jpg') > 0) {
                     
                this.slideQueue.push(new Slide(url1, '', c, 'w'));
            } // wide images have a 'w' in the file name
                        
            
           else if (this.set[i + 1]) {
            
                if (this.set[i + 1].indexOf('w.jpg') < 1){ 
                    url2 = this.set[i+1];
                    i++;
                }
                this.slideQueue.push(new Slide(url1, url2, c));
                
            }       
            else {

                this.slideQueue.push(new Slide(url1, 'images/blank.gif', c));

            } 

     
   }
    this.startSet();
   }  // 'i' loop


 


 });  //slideShow Control Class
 
var Slide = Class.create({ 
   
   
            initialize: function(url1, url2, cue, flag){
            this.photoContainer = $('slideShow');
            this.img1 = url1;
            this.img2 = url2;
            this.cue  = cue;
            this.flag = flag;
            var imgEl1 = this.imgEl1;
            var imgEl2 = this.imgEl2;
         //   var thmEl = this.thmEl;
                   
                   
                       
            
        },  
        
        preload: function(){
    
        
        if(this.flag==='w'){
           
           
           this.imgEl1 = new Element("img",{ src: this.img1, 'class':'w', 'height': '100%' });
           
         }
         
         else{
 

         this.imgEl1 = new Element("img", {
         src: this.img1, 'class':'l'
          
          });
        
       if(this.img2 != ''){ this.imgEl2 = new Element("img", {
          src: this.img2 , 'class':'r'
          
         
      
           });   }
           
           }
  		
  		
  		 

        },
        
        show: function(){
        if (!this.imgEl1){this.preload()};
        if(this.flag==='w'){this._showWide();}

        else{this._showNormal();
       
        
        }
         $('queueCount').update(this.cue+1);

        },
      
        _showNormal: function(){

 
         this.photoContainer.insert(this.imgEl1.hide());    
         
            
         if(this.img2 != ''){   this.photoContainer.insert(this.imgEl2.hide());
      
         new Effect.Appear($(this.imgEl2), {duration: 1 });}
         new Effect.Appear($(this.imgEl1), {duration: 1 });
        
         },
           
        _showFirst: function(){

         this.photoContainer.insert(this.imgEl1.hide());
         this.photoContainer.insert(this.imgEl2.hide());
         
         var el1 = $(this.imgEl1);
         var el2 = $(this.imgEl2);
         
         $(el1).setStyle({ left:'400px' });
 
         
         new Effect.Appear(el1, {duration: 1 });
         new Effect.Move(el1,{x:-400, delay:1});
         
         new Effect.Appear(el2, {delay:2});
             
        },
        
        
          _showWide: function(){

         this.photoContainer.insert(this.imgEl1.hide());
         
         new Effect.Appear($(this.imgEl1), {duration: 1 });
                          
 

        },
      
      
       
        fadeOut: function() {
        
        new Effect.Fade (this.imgEl1);

        if(this.img2 != ''){  new Effect.Fade(this.imgEl2);}

        },
    
       _moveLeft: function(){
 
       var el =  this.imgEl;
    
       new Effect.Move(el,{x:-400});
    
    
    
    
       }

    }); // slide class