1/* 2 * Blog Roll Slider Item and call 3 * @ver. 3 4 * 5 */ 6 7 function blogRollSlider(e) { 8 this.slider = e; 9 this.stager = this.slider.find(".br-slider-stager"); 10 this.gallery = this.slider.find(".br-slider-gallery"); 11 this.row = this.gallery.children(".row"); 12 this.controls = this.slider.find(".br-slider-control"); 13 this.columns = this.slider.data("columns"); 14 this.paged = this.slider.data("paged") == "si"; 15 this.currentIndex = 0; 16 this.currentPage = 0; 17 this.totalItems = 0; 18 this.moveSize = 0; 19 this.disableAutoScroll = true; 20 this.alreadyTriggered = false; 21 this.timer = undefined; 22 23 var me = this; 24 25 this.autoFit = function () { 26 me.gallery.width("auto"); 27 28 var sliderItems = me.gallery.find(".br-element"); 29 var elementH = 0; 30 var elementW = 0; 31 var parentW = 0; 32 33 if (sliderItems.length > 0) { 34 me.totalItems = sliderItems.length; 35 36 sliderItems.each(function () { 37 var currentItemHeight = 38 jQuery(this).height() + parseInt(jQuery(this).css("marginBottom")); 39 var currentItemWidth = jQuery(this).width(); 40 var currentItemParentW = jQuery(this).parent().outerWidth(); 41 42 if (currentItemHeight > elementH) elementH = currentItemHeight; 43 44 if (currentItemWidth > elementW) elementW = currentItemWidth; 45 46 if (currentItemParentW > parentW) parentW = currentItemParentW; 47 48 jQuery(this).parent().width(elementW); 49 50 me.itemW = elementW; 51 }); 52 53 me.stager.height(elementH); 54 me.gallery.width(parentW * sliderItems.length); 55 me.moveSize = parentW; 56 } 57 58 if (me.controls.parent().hasClass("inline")) { 59 var btnTop = 60 elementH / 2 - 61 me.controls.children(".br-slider-control-left").height() / 2; 62 me.controls.children(".br-slider-control-left").css("top", btnTop + "px"); 63 me.controls 64 .children(".br-slider-control-right") 65 .css("top", btnTop + "px"); 66 } 67 68 if (sliderItems.length <= me.getResponsiveColumns(me.columns)) { 69 me.controls.hide(); 70 } else { 71 me.controls.show(); 72 } 73 }; 74 75 this.getResponsiveColumns = function (columns) { 76 var w = jQuery(window).width(); 77 78 if (me.paged) { 79 return Math.floor(me.slider.width() / me.itemW); 80 } else { 81 if (w > 575 && w <= 767) { 82 return 2; 83 } else if (w <= 575) { 84 return 1; 85 } 86 87 return columns; 88 } 89 }; 90 91 this.getPages = function () { 92 var w = jQuery(window).width(); 93 var pages = Math.floor(me.totalItems / me.getResponsiveColumns(me.columns)); 94 95 if (w <= 575) { 96 return pages - 1; 97 } 98 99 return pages; 100 }; 101 102 this.scrollOnce = function () { 103 me.timer = setTimeout(function () { 104 me.controls.children(".br-slider-control-right").trigger("click"); 105 if (!me.disableAutoScroll) { 106 me.scrollOnce(); 107 } 108 }, 2000); 109 }; 110 111 this.moveTo = function (direction) { 112 if (!me.alreadyTriggered) { 113 me.disableAutoScroll = true; 114 me.alreadyTriggered = true; 115 116 //Left 117 if (direction == "left") { 118 if (me.paged) { 119 if (me.currentPage < me.getPages()) { 120 me.currentPage++; 121 var offset = 122 me.currentPage * 123 (me.moveSize * me.getResponsiveColumns(me.columns)) * 124 -1; 125 126 me.gallery.animate({ marginLeft: offset }, 500, function () { 127 me.alreadyTriggered = false; 128 129 me.controls 130 .children(".br-slider-control-left") 131 .addClass("active"); 132 133 if (me.currentPage >= me.getPages()) 134 me.controls 135 .children(".br-slider-control-right") 136 .removeClass("active"); 137 }); 138 } else { 139 me.alreadyTriggered = false; 140 } 141 } else { 142 if ( 143 me.currentIndex + me.getResponsiveColumns(me.columns) < 144 me.totalItems 145 ) { 146 me.currentIndex++; 147 148 var offset = me.currentIndex * me.moveSize * -1; 149 150 me.gallery.animate({ marginLeft: offset }, 500, function () { 151 me.alreadyTriggered = false; 152 153 me.controls 154 .children(".br-slider-control-left") 155 .addClass("active"); 156 157 if ( 158 me.currentIndex + me.getResponsiveColumns(me.columns) >= 159 me.totalItems 160 ) 161 me.controls 162 .children(".br-slider-control-right") 163 .removeClass("active"); 164 }); 165 } else { 166 me.alreadyTriggered = false; 167 } 168 } 169 } //Right 170 else { 171 if (me.paged) { 172 if (me.currentPage > 0) { 173 me.currentPage--; 174 175 var offset = 176 me.currentPage * 177 (me.moveSize * me.getResponsiveColumns(me.columns)) * 178 -1; 179 180 me.gallery.animate({ marginLeft: offset }, 500, function () { 181 me.alreadyTriggered = false; 182 183 me.controls 184 .children(".br-slider-control-right") 185 .addClass("active"); 186 187 if (me.currentPage == 0) { 188 me.controls 189 .children(".br-slider-control-left") 190 .removeClass("active"); 191 } 192 }); 193 } else { 194 me.alreadyTriggered = false; 195 } 196 } else { 197 if (me.currentIndex > 0) { 198 me.currentIndex--; 199 200 var offset = me.currentIndex * me.moveSize * -1; 201 202 me.gallery.animate({ marginLeft: offset }, 500, function () { 203 me.alreadyTriggered = false; 204 205 me.controls 206 .children(".br-slider-control-right") 207 .addClass("active"); 208 209 if (me.currentIndex == 0) { 210 me.controls 211 .children(".br-slider-control-left") 212 .removeClass("active"); 213 } 214 }); 215 } else { 216 me.alreadyTriggered = false; 217 } 218 } 219 } 220 } 221 }; 222 223 me.autoFit(); 224 225 jQuery(window).resize(function () { 226 me.autoFit(); 227 }); 228 229 if (me.controls.children(".br-slider-control-right").length > 0) { 230 var rightControl = me.controls.children(".br-slider-control-right"); 231 232 if (me.currentIndex < me.totalItems) { 233 rightControl.addClass("active"); 234 } 235 236 rightControl.click(function () { 237 me.moveTo("left"); 238 }); 239 } 240 241 if (me.controls.children(".br-slider-control-left").length > 0) { 242 var leftControl = me.controls.children(".br-slider-control-left"); 243 leftControl.click(function () { 244 me.moveTo("right"); 245 }); 246 } 247 248 if (me.slider.hasClass("carousel")) { 249 me.disableAutoScroll = false; 250 me.scrollOnce(); 251 } 252 } 253 254 jQuery(document).ready(function () { 255 if (jQuery(".br-slider").length > 0) { 256 jQuery(".br-slider").each(function () { 257 new blogRollSlider(jQuery(this)); 258 }); 259 } 260 }); 261
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.