/* ------------------------------------------------
 * captionSlider v 1.3 (bulid 2010.04.14)
 * jQuery Plug-in  
 * Author: Dariusz Prząda (dariusz@przada.eu)  
 * ------------------------------------------------
*/ 

(function($)  { // START CLOSURE
  
  /* ------------------------------------------------
  * Metoda główna wywołujaca slider
  * ------------------------------------------------
  */   
  $.fn.captionSlider = function( options ) {
  // BEGIN
  	
    // pobranie wartości zmiennych domyślnych  
    var options = $.extend({}, $.fn.captionSlider.defaults, options);
  
    // START ITERATION
    return this.each(function() {
  
    // GúËWNE DANE
    // ***********************************************************
    var height = $(this).height();
    var width = $(this).width();
    
    // TYPE : bottom
    // ***********************************************************
    if (options.slidePosition == 'bottom') {
  
     // Rozmiary dla Cover
     if (options.coverWidth == 0) var coverWidth = width; else var coverWidth = options.coverWidth;
     $('.cover',this).css('width',coverWidth+'px');
     if (options.coverHeight == 0) var coverHeight = height; else var coverHeight = options.coverHeight;  
     $('.cover',this).css('height',coverHeight+'px');
     
     // Przesunięcie dla Cover
     var topCoverOn = height - options.coverSizeOver;
     var topCoverOff = height - options.coverSizeOut;
     var leftCoverOn = 0;
     var leftCoverOff = 0;
     
     // Przesunięcie dla Static
     if ( options.slideType == 'push' ) {
      var topStaticOn = -options.coverSizeOver;
      var topStaticOff = -options.coverSizeOut;   
     } else if ( options.slideType == 'cross' ) {
      var topStaticOn = -options.coverSizeOver;
      var topStaticOff = 0;   
     } else {
      var topStaticOn = 0;
      var topStaticOff = 0;      
     }  
     var leftStaticOn = 0;
     var leftStaticOff = 0;    
       
     // ustawienie covera na odpowiedniej pozycji startowej	
     if ( options.startState == 'closed' ) {
      var startCoverPosition = topCoverOff;
      var startStaticPosition = topStaticOff;    
     } else {
      var startCoverPosition = topCoverOn;
      var startStaticPosition = topStaticOn;    
     } 
     $('.cover',this).css('top',startCoverPosition+'px');
     $('.static',this).css('top',startStaticPosition+'px');          
       
    // TYPE : top
    // ***********************************************************
    } else if (options.slidePosition == 'top') {
  
     // Rozmiary dla Cover
     if (options.coverWidth == 0) var coverWidth = width; else var coverWidth = options.coverWidth;
     $('.cover',this).css('width',coverWidth+'px');
     if (options.coverHeight == 0) var coverHeight = height; else var coverHeight = options.coverHeight;  
     $('.cover',this).css('height',coverHeight+'px');
     
     // Przesunięcie dla Cover
     var topCoverOn = -(coverHeight - options.coverSizeOver);
     var topCoverOff = -(coverHeight - options.coverSizeOut);
     var leftCoverOn = 0;
     var leftCoverOff = 0;
     
     // Przesunięcie dla Static
     if ( options.slideType == 'push' ) {
      var topStaticOn = options.coverSizeOver;
      var topStaticOff = options.coverSizeOut;
     } else if ( options.slideType == 'cross' ) {
      var topStaticOn = options.coverSizeOver;
      var topStaticOff = 0;   
     } else {
      var topStaticOn = 0;
      var topStaticOff = 0;      
     }  
     var leftStaticOn = 0;
     var leftStaticOff = 0;    
       
     // ustawienie covera na odpowiedniej pozycji startowej	
     if ( options.startState == 'closed' ) {
      var startCoverPosition = topCoverOff;
      var startStaticPosition = topStaticOff;    
     } else {
      var startCoverPosition = topCoverOn;
      var startStaticPosition = topStaticOn;    
     } 
     $('.cover',this).css('top',startCoverPosition+'px');
     $('.static',this).css('top',startStaticPosition+'px');          
       
       
       
    // TYPE : right
    // ***********************************************************   
    } else if (options.slidePosition == 'right') {
    
     // Rozmiary dla Cover
     if (options.coverWidth == 0) var coverWidth = width; else var coverWidth = options.coverWidth;
     $('.cover',this).css('width',coverWidth+'px');
     if (options.coverHeight == 0) var coverHeight = height; else var coverHeight = options.coverHeight;  
     $('.cover',this).css('height',coverHeight+'px');
     
     // Przesunięcie dla Cover
     var topCoverOn = 0;
     var topCoverOff = 0;
     var leftCoverOn = width -  options.coverSizeOver;
     var leftCoverOff = width - options.coverSizeOut; 
  
     // Przesunięcie dla Static
     if ( options.slideType == 'push' ) {
      var leftStaticOn = -options.coverSizeOver;
      var leftStaticOff = -options.coverSizeOut;   
     } else if ( options.slideType == 'cross' ) {
      var leftStaticOn = -options.coverSizeOver;
      var leftStaticOff = 0;   
     } else {   
      var leftStaticOn = 0;
      var leftStaticOff = 0;      
     }  
     var topStaticOn = 0;
     var topStaticOff = 0;
  
     // ustawienie covera na odpowiedniej pozycji startowej	
     if ( options.startState == 'closed' ) {
      var startCoverPosition = leftCoverOff;
      var startStaticPosition = leftStaticOff;    
     } else {
      var startCoverPosition = leftCoverOn;
      var startStaticPosition = leftStaticOn;    
     } 
     $('.cover',this).css('left',startCoverPosition+'px');
     $('.static',this).css('left',startStaticPosition+'px');          
  
  
       
    // TYPE : left
    // ***********************************************************   
    } else if (options.slidePosition == 'left') {
    
     // Rozmiary dla Cover
     if (options.coverWidth == 0) var coverWidth = width; else var coverWidth = options.coverWidth;
     $('.cover',this).css('width',coverWidth+'px');
     if (options.coverHeight == 0) var coverHeight = height; else var coverHeight = options.coverHeight;  
     $('.cover',this).css('height',coverHeight+'px');
     
     // Przesunięcie dla Cover
     var topCoverOn = 0;
     var topCoverOff = 0;
     var leftCoverOn = - (coverWidth -  options.coverSizeOver);
     var leftCoverOff = - (coverWidth - options.coverSizeOut); 
  
     // Przesunięcie dla Static
     if ( options.slideType == 'push' ) {
      var leftStaticOn = options.coverSizeOver;
      var leftStaticOff = options.coverSizeOut;   
     } else if ( options.slideType == 'cross' ) {
      var leftStaticOn = options.coverSizeOver;
      var leftStaticOff = 0;   
     } else {   
      var leftStaticOn = 0;
      var leftStaticOff = 0;      
     }  
     var topStaticOn = 0;
     var topStaticOff = 0;
  
     // ustawienie covera na odpowiedniej pozycji startowej	
     if ( options.startState == 'closed' ) {
      var startCoverPosition = leftCoverOff;
      var startStaticPosition = leftStaticOff;    
     } else {
      var startCoverPosition = leftCoverOn;
      var startStaticPosition = leftStaticOn;    
     } 
     $('.cover',this).css('left',startCoverPosition+'px');
     $('.static',this).css('left',startStaticPosition+'px');   
     
    }
    // ***********************************************************   
    	
  	// Animacja otwierania i zamykania po najechaniu
  	$(this).hover(function(){
  		$(".cover", this).stop().animate({top: topCoverOn+'px',left: leftCoverOn+'px'},{queue:false,duration: options.slideDurationOver });	
  		$(".static", this).stop().animate({top: topStaticOn+'px',left: leftStaticOn+'px'},{queue:false,duration: options.slideDurationOver });	
  	}, function() {
  		$(".cover", this).stop().animate({top: topCoverOff+'px',left: leftCoverOff+'px'},{queue:false,duration: options.slideDurationOut });
  		$(".static", this).stop().animate({top: topStaticOff+'px',left: leftStaticOff+'px'},{queue:false,duration: options.slideDurationOut });		
  	});	
  
  }); // end of iteration
  
  // END
  };


  /* ------------------------------------------------
  * Plugin Defaults - domyślne wartości dla zmiennych
  * ------------------------------------------------
  */   
  $.fn.captionSlider.defaults = {
			slidePosition: 'bottom',  // pozycja [bottom (default),right]			 
			slideType:		'normal', // sposób przesówania [normal (default),push,cross]         
			slideDurationOver:		300, // długość animowania po najechaniu kursorem myszy
			slideDurationOut:		600, // długość animowania po zdjęciu kursora myszy            
			coverSizeOver: 0, // wielkość po najechaniu kursurem myszy 
			coverSizeOut: 150, // wielkość po zdjęciu kursora myszy
			coverWidth: 0, // szerokość warstwy nakrywającej [0 - autodetekcja (default)] 
			coverHeight: 0, // wysokość warstwy nakrywającej [0 - autodetekcja (default)]            			
			startState: 'closed'		
  };

})(jQuery); // END CLOSURE

