/*
 * provpu-home.js 
 * Copyright (C) 2010 Provincia di Pesaro e Urbino  
 * Autore: Davide Principi <d.principi@provincia.ps.it>
 * 
 * $Id: provpu-home.js 4854 2010-07-01 10:33:59Z davide $   
 */     

jQuery(document).ready(function($) {
  /**
   * Attiva visualizzazione video di YouTube con jquery.lightpop
   * http://plugins.jquery.com/project/lightpop
   */
  if(!$.browser.msie || parseInt($.browser.version.substr(0,1)) > 6) { 
  	var lpSettings = {iconAdd: false, YouTube: {param: {hl:'it'}}};
  	$('a[href*=.youtube.com/watch]').lightpop(lpSettings, {}, false, '/fileadmin/sici_templates/union/lib/cli/jquery/images/');
  }
  
  /* Disabilitazione effetti grafici per ie <= 6 */
  if($.browser.msie && parseInt($.browser.version.substr(0,1)) <= 6) {
    jQuery.fx.off = true;
  }
	
  
  /**
   * BEGIN PrimoPiano -- Gestore della rotazione e dell'evidenziazione 
   * degli elementi in Primo Piano. 
   */  
  var primoPiano = function () {    
    var rootElement = $('ul.primoPiano').data('rotationInterval', 5000).data('currentIndex', -1).data('resetInterval', 100);
    var images = rootElement.find('li > img');
    var app = this;
    var opacityHigh = 0.9;
    var opacityLow = 0.5;
    var rotate = rootElement.hasClass('rotante');
    
    /* Associa ad ogni testo il proprio indice */
    rootElement.find('li').each(function(index, element) {
      $(element).find('div.text').data('index', index);        
    });
              
    /* Visualizza l'immagine all'indice dato */
    this.changeImage = function(nextIndex, fadeSpeed) { 
      var currentIndex = rootElement.data('currentIndex');   
      var currentImage = images.eq(currentIndex);
      var nextImage = images.eq(nextIndex);      
      var delta = nextIndex - currentIndex;
      
      if(fadeSpeed === undefined) fadeSpeed = 400;
      
      rootElement.data('currentIndex', nextIndex);
      
      // elimina eventuali dissolvenze pendenti:
      currentImage.stop(true, true);  
  
      if(delta > 0) {
          if(fadeSpeed > 0) {
            nextImage.fadeIn(fadeSpeed, function(){currentImage.hide()});                 
          } else {
            nextImage.show();
            currentImage.hide();
          }
      } else if (delta < 0) {
          nextImage.show();
          if(fadeSpeed > 0) {          
            currentImage.fadeOut(fadeSpeed);
          } else {
            currentImage.hide();
          }
      }                     
      
      if(delta != 0) {
          rootElement.find('div.text').each(function(index, element) {
            if(index === nextIndex) {            
                $(element).css('opacity', opacityHigh);         
            }
            else {          
                $(element).css('opacity', opacityLow);
            }           
          });        
      }
                  
      return this;      
    };
    
    this.startRotation = function () {                             
        rootElement.data('rotationTimer', setTimeout(function(){
            var i = (rootElement.data('currentIndex') + 1) % rootElement.children().size();
            app.changeImage(i, 1200);
            app.startRotation();            
        }, rootElement.data('rotationInterval')));                            
        return this; 
    };
    
    this.stopRotation = function () { 
        if(rootElement.data('rotationTimer') !== undefined)  {
            clearTimeout(rootElement.data('rotationTimer'));
        }
        return this; 
    };
    
    this.startReset = function () {
        if(rootElement.data('resetInterval') > 0) {
            rootElement.data('resetTimer', setTimeout(function(){
                app.changeImage(0, 1200);         
            }, rootElement.data('resetInterval')));    
        } else {
            app.changeImage(0, 1200);        
        }
        return this;
    };
    
    this.stopReset = function () {
        if(rootElement.data('resetTimer') !== undefined)  {
            clearTimeout(rootElement.data('resetTimer'));
        }
        return this;    
    };
    
    
    
    // Collega i gestori di evento del mouse in/out alle div.text
    $('ul.primoPiano div.text').hover(
      function (event) {
        $(this).addClass('hover');
        if(rotate === true) {
            app.stopRotation();       
        } else {
            app.stopReset();
        }
        app.changeImage($(this).data('index'), false); 
      },
      function (event) {                          
        $(this).removeClass('hover');
        if(rotate === true) {
            app.startRotation();
        } else {
            app.startReset();
        }
      }
    );
       
    /* Inizializza l'opacita' degli elementi */ 
    rootElement.find('div.text').each(function(index, element) {
      if(rotate && index > 0) {
        $(element).css('opacity', opacityLow);
      } else {
        $(element).css('opacity', opacityHigh);
      }       
    });    
        
    app.changeImage(0, false);    
        
    if(rotate === true) {
        app.startRotation();       
    }
  } ();
  /* END PrimoPiano */
  
  
  /**
   * Scorrimento lista Video videoListSmall
   */
  var videoSlides = new function() { 
        
    var videoScrollButtonHandler = function (screen, action) {
  
      var screenWidth = screen.innerWidth();
      var maxOffset = screen.find('ul').width();
      var minOffset = 0;
      var currentOffset = screen.scrollLeft();
      var newOffset = currentOffset;
      
      switch(action) {
        case 'scrollBackward':
          newOffset = currentOffset - screenWidth;
          break;
        case 'scrollForward':
          newOffset = currentOffset + screenWidth;          
          break;
        
        default:
          return;
      }  
          
      if(newOffset < minOffset) {
        newOffset = 0;
      }
      else if(newOffset >= maxOffset) {
        newOffset = maxOffset - 1;
      }
          
      var element = screen.find('li').filter(function(index) {
        var position = $(this).position().left + currentOffset;
        var width = 0;
        
        if(action == 'scrollForward')
        {
          width = $(this).outerWidth();
        }
             
        if(position + width >= newOffset) {
          return true;
        }                
        
      }).first();
      
      
      if(element.is('li'))
      {     
        screen.stop(true, false);          
        screen.scrollTo(element, 1000, {axis: 'x', margin: true});
      }
             
    };
    
    $('.videoListSmall').append('<div class="btnPrev Nav"><a href="#" title="Scorri indietro">Indietro</a></div><div class="btnNext Nav"><a href="#" title="Scorri avanti">Avanti</a></div>');
     
    $('.videoListSmall .items').css('overflow', 'hidden');
    
    $('.videoListSmall .items a').each(function(index, element) {
      $(element).css('marginTop', ($(element).parent().innerHeight() - $(element).outerHeight()) / 2.0); 
    });
     
    $('.videoListSmall .btnPrev.Nav a').click(function(event) {
       var screen = $(this).parents('.videoListSmall').find('.items'); 
       videoScrollButtonHandler(screen, 'scrollBackward');
       event.preventDefault();
    });
    $('.videoListSmall .btnNext.Nav a').click(function(event) {
       var screen = $(this).parents('.videoListSmall').find('.items');
       videoScrollButtonHandler(screen, 'scrollForward');
       event.preventDefault();
    });
  
  }; 
  /* end VideoSlides */
	
});

