%PDF- %PDF-
Direktori : /var/www/projetos/rrsos.com.br/js/ |
Current File : /var/www/projetos/rrsos.com.br/js/jquery.mCustomScrollbar.js |
/* malihu custom scrollbar plugin - http://manos.malihu.gr */ (function ($) { $.fn.mCustomScrollbar = function (scrollType,animSpeed,easeType,bottomSpace,draggerDimType,mouseWheelSupport,scrollBtnsSupport,scrollBtnsSpeed){ var id = $(this).attr("id"); var $customScrollBox=$("#"+id+" .customScrollBox"); var $customScrollBox_container=$("#"+id+" .customScrollBox .container"); var $customScrollBox_content=$("#"+id+" .customScrollBox .content"); var $dragger_container=$("#"+id+" .dragger_container"); var $dragger=$("#"+id+" .dragger"); var $scrollUpBtn=$("#"+id+" .scrollUpBtn"); var $scrollDownBtn=$("#"+id+" .scrollDownBtn"); var $customScrollBox_horWrapper=$("#"+id+" .customScrollBox .horWrapper"); //get & store minimum dragger height & width (defined in css) if(!$customScrollBox.data("minDraggerHeight")){ $customScrollBox.data("minDraggerHeight",$dragger.height()); } if(!$customScrollBox.data("minDraggerWidth")){ $customScrollBox.data("minDraggerWidth",$dragger.width()); } //get & store original content height & width if(!$customScrollBox.data("contentHeight")){ $customScrollBox.data("contentHeight",$customScrollBox_container.height()); } if(!$customScrollBox.data("contentWidth")){ $customScrollBox.data("contentWidth",$customScrollBox_container.width()); } CustomScroller(); function CustomScroller(reloadType){ //horizontal scrolling ------------------------------ if(scrollType=="horizontal"){ var visibleWidth=$customScrollBox.width(); //set content width automatically $customScrollBox_horWrapper.css("width",999999); //set a rediculously high width value ;) $customScrollBox.data("totalContent",$customScrollBox_container.width()); //get inline div width $customScrollBox_horWrapper.css("width",$customScrollBox.data("totalContent")); //set back the proper content width value if($customScrollBox_container.width()>visibleWidth){ //enable scrollbar if content is long $dragger.css("display","block"); if(reloadType!="resize" && $customScrollBox_container.width()!=$customScrollBox.data("contentWidth")){ $dragger.css("left",0); $customScrollBox_container.css("left",0); $customScrollBox.data("contentWidth",$customScrollBox_container.width()); } $dragger_container.css("display","block"); $scrollDownBtn.css("display","inline-block"); $scrollUpBtn.css("display","inline-block"); var totalContent=$customScrollBox_content.width(); var minDraggerWidth=$customScrollBox.data("minDraggerWidth"); var draggerContainerWidth=$dragger_container.width(); function AdjustDraggerWidth(){ if(draggerDimType=="auto"){ var adjDraggerWidth=Math.round(totalContent-((totalContent-visibleWidth)*1.3)); //adjust dragger width analogous to content if(adjDraggerWidth<=minDraggerWidth){ //minimum dragger width $dragger.css("width",minDraggerWidth+"px"); } else if(adjDraggerWidth>=draggerContainerWidth){ $dragger.css("width",draggerContainerWidth-10+"px"); } else { $dragger.css("width",adjDraggerWidth+"px"); } } } AdjustDraggerWidth(); var targX=0; var draggerWidth=$dragger.width(); $dragger.draggable({ axis: "x", containment: "parent", drag: function(event, ui) { ScrollX(); }, stop: function(event, ui) { DraggerRelease(); } }); $dragger_container.click(function(e) { var $this=$(this); var mouseCoord=(e.pageX - $this.offset().left); if(mouseCoord<$dragger.position().left || mouseCoord>($dragger.position().left+$dragger.width())){ var targetPos=mouseCoord+$dragger.width(); if(targetPos<$dragger_container.width()){ $dragger.css("left",mouseCoord); ScrollX(); } else { $dragger.css("left",$dragger_container.width()-$dragger.width()); ScrollX(); } } }); //mousewheel $(function($) { if(mouseWheelSupport=="yes"){ $customScrollBox.unbind("mousewheel"); $customScrollBox.bind("mousewheel", function(event, delta) { var vel = Math.abs(delta*10); $dragger.css("left", $dragger.position().left-(delta*vel)); ScrollX(); if($dragger.position().left<0){ $dragger.css("left", 0); $customScrollBox_container.stop(); ScrollX(); } if($dragger.position().left>$dragger_container.width()-$dragger.width()){ $dragger.css("left", $dragger_container.width()-$dragger.width()); $customScrollBox_container.stop(); ScrollX(); } return false; }); } }); //scroll buttons if(scrollBtnsSupport=="yes"){ $scrollDownBtn.mouseup(function(){ BtnsScrollXStop(); }).mousedown(function(){ BtnsScrollX("down"); }).mouseout(function(){ BtnsScrollXStop(); }); $scrollUpBtn.mouseup(function(){ BtnsScrollXStop(); }).mousedown(function(){ BtnsScrollX("up"); }).mouseout(function(){ BtnsScrollXStop(); }); $scrollDownBtn.click(function(e) { e.preventDefault(); }); $scrollUpBtn.click(function(e) { e.preventDefault(); }); btnsScrollTimerX=0; function BtnsScrollX(dir){ if(dir=="down"){ var btnsScrollTo=$dragger_container.width()-$dragger.width(); var scrollSpeed=Math.abs($dragger.position().left-btnsScrollTo)*(100/scrollBtnsSpeed); $dragger.stop().animate({left: btnsScrollTo}, scrollSpeed,"linear"); } else { var btnsScrollTo=0; var scrollSpeed=Math.abs($dragger.position().left-btnsScrollTo)*(100/scrollBtnsSpeed); $dragger.stop().animate({left: -btnsScrollTo}, scrollSpeed,"linear"); } clearInterval(btnsScrollTimerX); btnsScrollTimerX = setInterval( ScrollX, 20); } function BtnsScrollXStop(){ clearInterval(btnsScrollTimerX); $dragger.stop(); } } //scroll var scrollAmount=(totalContent-visibleWidth)/(draggerContainerWidth-draggerWidth); function ScrollX(){ var draggerX=$dragger.position().left; var targX=-draggerX*scrollAmount; var thePos=$customScrollBox_container.position().left-targX; $customScrollBox_container.stop().animate({left: "-="+thePos}, animSpeed, easeType); } } else { //disable scrollbar if content is short $dragger.css("left",0).css("display","none"); //reset content scroll $customScrollBox_container.css("left",0); $dragger_container.css("display","none"); $scrollDownBtn.css("display","none"); $scrollUpBtn.css("display","none"); } //vertical scrolling ------------------------------ } else { var visibleHeight=$customScrollBox.height(); if($customScrollBox_container.height()>visibleHeight){ //enable scrollbar if content is long $dragger.css("display","block"); if(reloadType!="resize" && $customScrollBox_container.height()!=$customScrollBox.data("contentHeight")){ $dragger.css("top",0); $customScrollBox_container.css("top",0); $customScrollBox.data("contentHeight",$customScrollBox_container.height()); } $dragger_container.css("display","block"); $scrollDownBtn.css("display","inline-block"); $scrollUpBtn.css("display","inline-block"); var totalContent=$customScrollBox_content.height(); var minDraggerHeight=$customScrollBox.data("minDraggerHeight"); var draggerContainerHeight=$dragger_container.height(); function AdjustDraggerHeight(){ if(draggerDimType=="auto"){ var adjDraggerHeight=Math.round(totalContent-((totalContent-visibleHeight)*1.3)); //adjust dragger height analogous to content if(adjDraggerHeight<=minDraggerHeight){ //minimum dragger height $dragger.css("height",minDraggerHeight+"px").css("line-height",minDraggerHeight+"px"); } else if(adjDraggerHeight>=draggerContainerHeight){ $dragger.css("height",draggerContainerHeight-10+"px").css("line-height",draggerContainerHeight-10+"px"); } else { $dragger.css("height",adjDraggerHeight+"px").css("line-height",adjDraggerHeight+"px"); } } } AdjustDraggerHeight(); var targY=0; var draggerHeight=$dragger.height(); $dragger.draggable({ axis: "y", containment: "parent", drag: function(event, ui) { Scroll(); }, stop: function(event, ui) { DraggerRelease(); } }); $dragger_container.click(function(e) { var $this=$(this); var mouseCoord=(e.pageY - $this.offset().top); if(mouseCoord<$dragger.position().top || mouseCoord>($dragger.position().top+$dragger.height())){ var targetPos=mouseCoord+$dragger.height(); if(targetPos<$dragger_container.height()){ $dragger.css("top",mouseCoord); Scroll(); } else { $dragger.css("top",$dragger_container.height()-$dragger.height()); Scroll(); } } }); //mousewheel $(function($) { if(mouseWheelSupport=="yes"){ $customScrollBox.unbind("mousewheel"); $customScrollBox.bind("mousewheel", function(event, delta) { var vel = Math.abs(delta*10); $dragger.css("top", $dragger.position().top-(delta*vel)); Scroll(); if($dragger.position().top<0){ $dragger.css("top", 0); $customScrollBox_container.stop(); Scroll(); } if($dragger.position().top>$dragger_container.height()-$dragger.height()){ $dragger.css("top", $dragger_container.height()-$dragger.height()); $customScrollBox_container.stop(); Scroll(); } return false; }); } }); //scroll buttons if(scrollBtnsSupport=="yes"){ $scrollDownBtn.mouseup(function(){ BtnsScrollStop(); }).mousedown(function(){ BtnsScroll("down"); }).mouseout(function(){ BtnsScrollStop(); }); $scrollUpBtn.mouseup(function(){ BtnsScrollStop(); }).mousedown(function(){ BtnsScroll("up"); }).mouseout(function(){ BtnsScrollStop(); }); $scrollDownBtn.click(function(e) { e.preventDefault(); }); $scrollUpBtn.click(function(e) { e.preventDefault(); }); btnsScrollTimer=0; function BtnsScroll(dir){ if(dir=="down"){ var btnsScrollTo=$dragger_container.height()-$dragger.height(); var scrollSpeed=Math.abs($dragger.position().top-btnsScrollTo)*(100/scrollBtnsSpeed); $dragger.stop().animate({top: btnsScrollTo}, scrollSpeed,"linear"); } else { var btnsScrollTo=0; var scrollSpeed=Math.abs($dragger.position().top-btnsScrollTo)*(100/scrollBtnsSpeed); $dragger.stop().animate({top: -btnsScrollTo}, scrollSpeed,"linear"); } clearInterval(btnsScrollTimer); btnsScrollTimer = setInterval( Scroll, 20); } function BtnsScrollStop(){ clearInterval(btnsScrollTimer); $dragger.stop(); } } //scroll if(bottomSpace<1){ bottomSpace=1; //minimum bottomSpace value is 1 } var scrollAmount=(totalContent-(visibleHeight/bottomSpace))/(draggerContainerHeight-draggerHeight); function Scroll(){ var draggerY=$dragger.position().top; var targY=-draggerY*scrollAmount; var thePos=$customScrollBox_container.position().top-targY; $customScrollBox_container.stop().animate({top: "-="+thePos}, animSpeed, easeType); } } else { //disable scrollbar if content is short $dragger.css("top",0).css("display","none"); //reset content scroll $customScrollBox_container.css("top",0); $dragger_container.css("display","none"); $scrollDownBtn.css("display","none"); $scrollUpBtn.css("display","none"); } } $dragger.mouseup(function(){ DraggerRelease(); }).mousedown(function(){ DraggerPress(); }); function DraggerPress(){ $dragger.addClass("dragger_pressed"); } function DraggerRelease(){ $dragger.removeClass("dragger_pressed"); } } $(window).resize(function() { if(scrollType=="horizontal"){ if($dragger.position().left>$dragger_container.width()-$dragger.width()){ $dragger.css("left", $dragger_container.width()-$dragger.width()); } } else { var top = $dragger.position() ? $dragger.position().top : 0; //if($dragger.position().top>$dragger_container.height()-$dragger.height()){ if(top>$dragger_container.height()-$dragger.height()){ $dragger.css("top", $dragger_container.height()-$dragger.height()); } } CustomScroller("resize"); }); }; })(jQuery);