  jQuery.fn.mailto = function() {
  	return this.each(function(){
  		var email = jQuery(this).html().replace(/\s*\(.+\)\s*/, "@");
  		jQuery(this).before('<a href="/contact" rel="nofollow" title="Email ' + email + '">' + email + '</a>').remove();
  	});
  };

jQuery(document).ready(function() {
  jQuery('.pscultoreposta').mailto();
 /* Shadowbox.init({
      handleOversize: "drag",
      counterType: "skip",
      overlayOpacity: 0.7
  });*/
});
;
(function($) {

  $.fn.panningGallery = function(options) {
  
    /**
     * @todo
     * 
     * Maintaining Chainability
     * 
     *  return this.each(function() {
     *    var $this = $(this);
     *    if ( !type || type == 'width' ) {
     *      $this.width( $this.width() );
     *    }
     *    if ( !type || type == 'height' ) {
     *      $this.height( $this.height() );
     *    }
     *  }); 
     */                 
  
    var container = this;
    var settings = {
      panStartSleep:      1750, //ms - not used
      panEndSleep:        1500, //ms - not used
      panningSpeed:       3000, //ms - image padding duration
      fadingSpeed:        2000, //ms - fading duration
      thumbnailSelector: 'ul#portfolio-thumbs li',
      sliderContainer: '#portfolio-slider' 
    }; 
     
    //merge overrided options w/ defaults
    if (options) { 
      $.extend(settings, options);
    } 

    var thumbnails = container.find(settings.thumbnailSelector);        //thumbnails object
    var sliderContainer = $(settings.sliderContainer);  //spanning images (appended) container
    var sliderContainerHeight = sliderContainer.height();
    var images = sliderContainer.find('img');
    
    // add fullsize images to slider container for each thumbnail link
    /*$.each(thumbnails, function(key,value) {
      image = $('<img src="' + $(this).find('a').attr('href') + '" />');
      log(image.height());
      $(this).data('fullsize', image);
      
      sliderContainer.append(image);
    });*/
    $.each(thumbnails, function(key,value) {
      $(this).data('fullsize', images.eq(key));
    });   
    
    // setting first image to pan and last image in the row
    var activeImage = $('img:first', sliderContainer).addClass('active').fadeIn(settings.fadingSpeed);
    var firstImage  = activeImage;
    var lastImage   = $('img:last-child', sliderContainer);  
        
    // clicking on a thumbnail
    thumbnails.click(function() {
      // stopping current animated image (i hope!)
      prevImage = sliderContainer.find('img.active').first().stop(true,false);
      
      // retrieve fullsize element from clicked thumb and animate it
      var activeImage = $(this).data('fullsize');
      imagePanning(activeImage, prevImage);
      return false;
    });    
    
    // starting animation
    imagePanning(activeImage, null);
    
    /**
     * Panning Animation
     * =================
     * 
     * @activeImage
     * @prevImage
     * 
     * @todo check!!!!
     */  
      
    function imagePanning(activeImage, prevImage) {
      // Se l'immagine da animare � l'ultima, la prossima sar� la prima      
      if(activeImage[0] === lastImage[0]) {
        nextImage = firstImage; 
      }  else {
        nextImage = activeImage.next();
      }
          
      activeImage.css({top:0}); //reset top position
      
      if (prevImage){ //second image
        if (prevImage[0] !== lastImage[0]){
          activeImage.addClass('active').fadeIn(settings.fadingSpeed);
          prevImage.removeClass('active').fadeOut(settings.fadingSpeed);       
        } else {
          prevImage.removeClass('active').fadeOut(settings.fadingSpeed);
          activeImage.addClass('active').fadeIn(settings.fadingSpeed);
        }        
      }
      
      // setting pause time before panning
      activeImage.delay(settings.panStartSleep);
      
      // animating activeImage
      activeImage.animate({
          'top': -activeImage.height() + sliderContainerHeight 
        }, { 
          duration: settings.panningSpeed, 
          complete: function(){
            // setting pause time before animating nextImage
            // adding delay to activeImage and nextImage because i'll animate both
            nextImage.delay(settings.panEndSleep);
            activeImage.delay(settings.panEndSleep);
            // calling same func at the end of animation
            imagePanning(nextImage, activeImage);
          },
          step: function(){
            //log(num++);  
          }            
        }
      );
    }
  
  	function log(msg) {
  		console.log(msg);
  	}  
      	// chainability?
    return container;
  };
})(jQuery);;
/**
 * 
 * @author Psicomante
 * 
 */
 
var $ = jQuery;

$(document).ready(function() {
  $('#portfolio-thumb').panningGallery({ panningSpeed: 5000 });  
});
;

