

/**
 * A wrapper for the actual HTML container in the page.
 * It's basic functionality is to make the measuring more
 * readable.
 * 
 * @author Florian Herlings <florian.herlings@gmail.com>
 */
var HTMLContainer = {
  
  
  'getCurrentColumns': function() {
    var cols = Math.floor( CurrentScreen.getWidth() / HTMLContainer.getBoxWidth() );
    return (cols > 1) ? cols : 1;
  },
  
  
  'getCurrentRows': function() {
    var rows = Math.floor( CurrentScreen.getAvailableHeight() / HTMLContainer.getBoxHeight());
    return (rows > 1) ? rows : 1;
  },
  
  
  'getBoxesPerPage': function() {
    return HTMLContainer.getCurrentRows() * HTMLContainer.getCurrentColumns();
  },


  'getBoxWidth': function() {
    return Math.floor($$('.schauspieler_boxen ul li')[0].getWidth());
  },
  
  
  'getBoxHeight': function() {
    return Math.floor($$('.schauspieler_boxen ul li')[0].getHeight());
  },


  'getAlleBoxen': function() {
    return $$('.schauspieler_boxen ul li');
  }
  
  
}//HTMLContainer




/**
 *
 * @author Florian Herlings <florian.herlings@gmail.com>
 */
var FotoNameUmschalter = {
  
  
  'init': function() {
    
    $('schauspieler_als_foto').observe('click',FotoNameUmschalter.setFoto);
    $('schauspieler_als_name').observe('click',FotoNameUmschalter.setName);
    
  },//init()
  
  
  'setFoto': function(event) {
    
      $('schauspieler_als_name').removeClassName ('on');
      $('schauspieler_als_foto').addClassName('on');
    
      $$('#main .schauspieler_boxen').each(function(item) {
        
        item.removeClassName('text');
        item.addClassName('foto');
        
      });
    
			this.blur();
		
  },//setFoto
  
  
  'setName': function(event) {
    
      $('schauspieler_als_foto').removeClassName('on');
      $('schauspieler_als_name').addClassName ('on');
    
      $$('#main .schauspieler_boxen').each(function(item) {
        
        item.removeClassName('foto');
        item.addClassName('text');
        
      });
			
			this.blur();
    
  }//setFoto
  
  
}//FotoNameUmschalter






/**
 * The workhorse
 *
 * It handles all the functionality of the ActorContainer:
 *   - pagination
 *   - resizing the HTML box when the window is resized
 *   - hiding the unnecessary boxes
 *   
 * @author Florian Herlings <florian.herlings@gmail.com>
 */
var SchauspielerBoxenContainer = {
  
  
  'getNumberOfPages': function() {
    return Math.ceil(HTMLContainer.getAlleBoxen().length / HTMLContainer.getBoxesPerPage());
  },
  
  
  'init': function() {
    
    $('move_left').observe('click', this.previous_page);
    $('move_right').observe('click', this.next_page);
    
    SchauspielerBoxenContainer.currentPage = 1;
    
    $('schauspieler_box').show();
  },
  
  
  'update': function() {
    
    SchauspielerBoxenContainer.currentPage = 1;
    
    SchauspielerBoxenContainer.correctWidth();
    SchauspielerBoxenContainer.correctHeight();
		SchauspielerBoxenContainer.correctButtons();
  },
    
    
  'previous_page': function(event) {
    
    SchauspielerBoxenContainer.currentPage--;
    
    if (SchauspielerBoxenContainer.currentPage < 1)
      SchauspielerBoxenContainer.currentPage = 1;
    
    SchauspielerBoxenContainer.correctWidth();
    SchauspielerBoxenContainer.correctHeight();
		SchauspielerBoxenContainer.correctButtons();
		
		this.blur();
		
  },
  
  
  'next_page': function(event) {
		
    SchauspielerBoxenContainer.currentPage++;
        
        
    if (SchauspielerBoxenContainer.currentPage > SchauspielerBoxenContainer.getNumberOfPages())
      SchauspielerBoxenContainer.currentPage = SchauspielerBoxenContainer.getNumberOfPages();
    
    SchauspielerBoxenContainer.correctWidth();
    SchauspielerBoxenContainer.correctHeight();
		SchauspielerBoxenContainer.correctButtons();
		
		this.blur();
  },
  
  
	
	'correctButtons': function() {
    
		$('move_left').removeClassName('off');
		$('move_right').removeClassName('off');
    
		if (SchauspielerBoxenContainer.currentPage == 1) {
			$('move_left').addClassName('off');
		}
    
		if (SchauspielerBoxenContainer.currentPage == SchauspielerBoxenContainer.getNumberOfPages()) {
			$('move_right').addClassName('off');
		}
		
	},
	
  'correctWidth': function() {
    
    var newWidth = HTMLContainer.getCurrentColumns() * HTMLContainer.getBoxWidth();
    $$('.schauspieler_boxen')[0].style.width = newWidth+'px';
  },
  
  
  'correctHeight': function() {

    
    var sichtbareBoxen = HTMLContainer.getBoxesPerPage();
    var alleBoxen = HTMLContainer.getAlleBoxen();

    //All boxes BETWEEN the start- and the end-value will be displayed
    var startWert = sichtbareBoxen * (SchauspielerBoxenContainer.currentPage-1);
    var stopWert = startWert + sichtbareBoxen;
    
    for(var i=0; i < alleBoxen.length; i++) {
      
      if ( i >= startWert &&  i < stopWert) {
        
        alleBoxen[i].show();
      
      } else {
        
        alleBoxen[i].hide();
        
      }


    }//for
    
  }//correctHeight()
  

}//SchauspielerBoxenContainer





/**
 *
 */
var ZoomHandler = {
  
  
  'slider': 0,
  
  
  'init': function() {
    
    ZoomHandler.slider = new Control.Slider(
        'zoom_handle',
        'zoom_track',
        { axis:'horizontal',
          range: $R(5,1),
          values: [5,4,3,2,1],
          onChange: ZoomHandler.change,
					sliderValue: 2
        }
    );
    
    $('zoom_plus').observe('click', ZoomHandler.plus);
    $('zoom_minus').observe('click', ZoomHandler.minus);
    
  },
  
  
  'plus': function(event) {
    var newValue = ZoomHandler.slider.value + 1;
    ZoomHandler.slider.setValue(newValue);
		this.blur();
  },
  
  
  'minus': function(event) {
    var newValue = ZoomHandler.slider.value - 1;
    ZoomHandler.slider.setValue(newValue);
		this.blur();
  },
  
  
  'change': function(event) {
  
    //TODO: Refactor!!!  
		$$('.schauspieler_boxen').each(function(item) {
      item.removeClassName('zoom5');
      item.removeClassName('zoom4');
      item.removeClassName('zoom3');
      item.removeClassName('zoom2');
      item.removeClassName('zoom1');
      
      item.addClassName('zoom'+ZoomHandler.slider.value);
    });
    
    SchauspielerBoxenContainer.update();
    
        
  }
  
  
}//ZoomHandler
