Advertisement
Guest User

aaaaaaa

a guest
Jan 24th, 2015
187
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. /*
  2.  * jQuery liquid carousel v1.0
  3.  * http://www.nikolakis.net
  4.  *
  5.  * Copyright 2010, John Nikolakis
  6.  * Free to use under the GPL license.
  7.  * http://www.gnu.org/licenses/gpl.html
  8.  *
  9.  */
  10.  
  11. (function($){
  12.     $.fn.liquidcarousel = function(options) {
  13.  
  14.     var defaults = {
  15.         height:310,
  16.         duration: 600,
  17.         hidearrows: true
  18.     };
  19.     var options = $.extend(defaults, options);
  20.  
  21.     return this.each(function() {
  22.             var divobj = $(this);
  23.  
  24.             $(divobj).height(options.height);
  25.             $(divobj).css('overflow', 'hidden');
  26.  
  27.             $('> .wrapper', divobj).height(options.height);
  28.             $('> .wrapper', divobj).css('overflow', 'hidden');
  29.             $('> .wrapper', divobj).css('float', 'left');
  30.  
  31.             $('> .wrapper > ul', divobj).height(options.height);
  32.             $('> .wrapper > ul', divobj).css('float', 'left');
  33.             $('> .wrapper > ul', divobj).css('margin', '0');
  34.             $('> .wrapper > ul', divobj).css('padding', '0');
  35.             $('> .wrapper > ul', divobj).css('display', 'block');
  36.  
  37.             $('> .wrapper > ul > li', divobj).height(options.height);
  38.             $('> .wrapper > ul > li', divobj).css('display', 'block');
  39.             $('> .wrapper > ul > li', divobj).css('float', 'left');
  40.  
  41.  
  42.             var originalmarginright = parseInt($('> .wrapper > ul > li', divobj).css('marginRight'));
  43.             var originalmarginleft = parseInt($('> .wrapper > ul > li', divobj).css('marginLeft'));
  44.             var visiblelis = 0;
  45.             var totallis = $('> .wrapper > ul > li', this).length;
  46.             var currentposition = 0;
  47.             var liwidth = $('> .wrapper > ul > li:first', divobj).outerWidth(true);
  48.             var additionalmargin = 0;
  49.             var totalwidth = liwidth + additionalmargin;
  50.  
  51.             $(window).resize(function(e){
  52.                 var divwidth = $(divobj).width();
  53.                 var availablewidth = (divwidth - $('> .previous', divobj).outerWidth(true) - $('> .next', divobj).outerWidth(true));
  54.  
  55.                 previousvisiblelis = visiblelis;
  56.                 visiblelis = Math.floor((availablewidth / liwidth));
  57.  
  58.                 if (visiblelis < totallis) {
  59.                     additionalmargin = Math.floor((availablewidth - (visiblelis * liwidth))/visiblelis);
  60.                 } else {
  61.                     additionalmargin = Math.floor((availablewidth - (totallis * liwidth))/totallis);
  62.                 }
  63.                 halfadditionalmargin = Math.floor(additionalmargin/2);
  64.                 totalwidth = liwidth + additionalmargin;
  65.  
  66.                 $('> .wrapper > ul > li', divobj).css('marginRight', originalmarginright + halfadditionalmargin);
  67.                 $('> .wrapper > ul > li', divobj).css('marginLeft',originalmarginleft + halfadditionalmargin);
  68.  
  69.                 if (visiblelis > previousvisiblelis  || totallis <= visiblelis) {
  70.                     currentposition -= (visiblelis-previousvisiblelis);
  71.                     if (currentposition < 0 || totallis <= visiblelis ) {
  72.                         currentposition = 0;
  73.                     }
  74.                 }
  75.                 $('> .wrapper > ul', divobj).css('marginLeft', -(currentposition * totalwidth));
  76.  
  77.                 if (visiblelis >= totallis || ((divwidth >= (totallis * liwidth)) && options.hidearrows) ) {
  78.                     if (options.hidearrows) {
  79.                         $('> .previous', divobj).hide();
  80.                         $('> .next', divobj).hide();
  81.  
  82.                         additionalmargin = Math.floor((divwidth - (totallis * liwidth))/totallis);
  83.                         halfadditionalmargin = Math.floor(additionalmargin/2);
  84.                         totalwidth = liwidth + additionalmargin;
  85.                         $('> .wrapper > ul > li', divobj).css('marginRight', originalmarginright + halfadditionalmargin);
  86.                         $('> .wrapper > ul > li', divobj).css('marginLeft', originalmarginleft + halfadditionalmargin);
  87.                     }
  88.                     $('> .wrapper', divobj).width(totallis * totalwidth);
  89.                     $('> ul', divobj).width(totallis * totalwidth);
  90.                     $('> .wrapper', divobj).css('marginLeft', 0);
  91.                     currentposition = 0;
  92.                 } else {
  93.                     $('> .previous', divobj).show();
  94.                     $('> .next', divobj).show();
  95.                     $('> .wrapper', divobj).width(visiblelis * totalwidth);
  96.                     $('> ul', divobj).width(visiblelis * totalwidth);
  97.                 }
  98.             });
  99.  
  100.             $('> .next', divobj).click(function(){
  101.  
  102.                 if (totallis <= visiblelis) {
  103.                     currentposition = 0;
  104.                 } else if ((currentposition + (visiblelis*2)) < totallis) {
  105.                     currentposition += visiblelis;
  106.                 } else if ((currentposition + (visiblelis*2)) >= totallis -1) {
  107.                     currentposition = totallis - visiblelis;
  108.                 }
  109.                 $('> .wrapper > ul', divobj).stop();
  110.                 $('> .wrapper > ul', divobj).animate({'marginLeft': -(currentposition * totalwidth)}, options.duration);
  111.             });
  112.  
  113.             $('> .previous', divobj).click(function(){
  114.                 if ((currentposition - visiblelis) > 0) {
  115.                     currentposition -= visiblelis;
  116.                 } else if ((currentposition - (visiblelis*2)) <= 0) {
  117.                     currentposition = 0;
  118.                 }
  119.                 $('> .wrapper > ul', divobj).stop();
  120.                 $('> .wrapper > ul', divobj).animate({'marginLeft': -(currentposition * totalwidth)}, options.duration);
  121.             });
  122.  
  123.             $('> .next', divobj).dblclick(function(e){
  124.                 e.preventDefault();
  125.                 clearSelection();
  126.             });
  127.  
  128.             $('> .previous', divobj).dblclick(function(e){
  129.                 e.preventDefault();
  130.                 clearSelection();
  131.             });
  132.  
  133.             function clearSelection() {
  134.                 if (document.selection && document.selection.empty) {
  135.                     document.selection.empty();
  136.                 } else if (window.getSelection) {
  137.                     var sel = window.getSelection();
  138.                     sel.removeAllRanges();
  139.                 }
  140.             }
  141.  
  142.             $(window).resize();
  143.     });
  144.  
  145.  
  146.  };
  147. })(jQuery);
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement