1/*! 2 * slideViewerPro 1.5 3 * Examples and documentation at: 4 * http://www.gcmingati.net/wordpress/wp-content/lab/jquery/svwt/ 5 * 2009-2011 Gian Carlo Mingati 6 * Version: 1.5.0 (02-AUG-2011) 7 * Dual licensed under the MIT and GPL licenses: 8 * http://www.opensource.org/licenses/mit-license.php 9 * http://www.gnu.org/licenses/gpl.html 10 * Requires: 11 * jQuery v1.6 or later 12 * Option: 13 * jQuery Timers plugin | plugins.jquery.com/project/timers (for autoslide mode) 14 * 15 */ 16jQuery.extend( jQuery.easing, // from the jquery.easing plugin 17{ 18 easeInOutExpo: function (x, t, b, c, d) { 19 if (t==0) return b; 20 if (t==d) return b+c; 21 if ((t/=d/2) < 1) return c/2 * Math.pow(2, 10 * (t - 1)) + b; 22 return c/2 * (-Math.pow(2, -10 * --t) + 2) + b; 23 } 24}); 25jQuery(function(){ 26 jQuery("div.svwp").prepend("<img src='images/svwloader.gif' class='ldrgif' alt='loading...'/ >"); //change with YOUR loader image path 27}); 28var j = 0; 29jQuery.fn.slideViewerPro = function(settings) { 30 settings = jQuery.extend({ 31 32 thumbs: 3, 33 galBorderWidth: 0, 34 thumbsTopMargin: 10, 35 thumbsRightMargin: 19, 36 thumbsLeftMargin: 0, 37 thumbsBorderWidth: 1, 38 thumbsBorderOpacity: 1, 39 buttonsWidth: 34, 40 buttonsHeight: 34, 41 galBorderColor: "#ff0000", 42 thumbsActiveBorderColor: "#ff0000", 43 buttonsTextColor: "#ff0000", 44 thumbsBorderOpacity: 1.0, // could be 0, 0.1 up to 1.0 45 thumbsActiveBorderOpacity: 1.0, // could be 0, 0.1 up to 1.0 46 easeTime: 750, 47 asTimer: 4000, 48 thumbsPercentReduction: 12, 49 thumbsVis: true, 50 easeFunc: "easeInOutExpo", 51 leftButtonInner: "", //could be an image "<img src='images/larw.gif' />" or an escaped char as "&larr"; 52 rightButtonInner: "", //could be an image or an escaped char as "&rarr"; 53 autoslide: true, 54 typo: false, 55 shuffle: false 56 }, settings); 57 58 return this.each(function(){ 59 function shuffle(a) { 60 var i = a.size(); 61 while (--i) { 62 var j = Math.floor(Math.random() * (i)); 63 var tmp = a.slice(i, i+1); 64 a.slice(j, j+1).insertAfter(tmp); 65 } 66 } 67 var container = jQuery(this); 68 (!settings.shuffle) ? null : shuffle(container.find("li")); 69 container.find("img.ldrgif").remove(); 70 container.removeClass("svwp").addClass("slideViewer"); 71 container.attr("id", "svwp"+j); 72 /** 73 var pictWidth = container.find("img").width(); 74 Reads the width of the first (and only) IMG height. 75 That's why all images in the gal must have the same width/height 76 */ 77 var pictWidth = container.find("img").width(); 78 var pictHeight = container.find("img").height(); 79 var pictEls = container.find("li").size(); 80 (pictEls >= settings.thumbs) ? null : settings.thumbs = pictEls; 81 var slideViewerWidth = 300*pictEls; 82 var thumbsWidth = 85; 83 var thumbsHeight = 85; 84 var pos = 0; 85 var r_enabled = true; 86 var l_enabled = true; 87 container.find("ul").css("width" , slideViewerWidth) 88 .wrap(jQuery("<div style='width:"+ 300 +"px; overflow: hidden; position: relative; top: 0; left: 0'>")); 89 container.css("width" , pictWidth); 90 container.css("height" , pictHeight); 91 container.each(function(i) { 92 if(settings.typo) 93 { 94 jQuery(this).find("img").each(function(z) { 95 jQuery(this).after("<span class='typo' style='position: absolute; width:"+(pictWidth-12)+"px; margin: 0 0 0 -"+pictWidth+"px'>"+jQuery(this).attr("alt")+"<\/span>"); 96 }); 97 } 98 jQuery(this).after("<div class='thumbSlider' id='thumbSlider" + j + "'><ul><\/ul><\/div>"); 99 jQuery(this).next().after("<a href='#' class='itemleft' id='left" + j + "'><span>"+settings.leftButtonInner+"</span><\/a><a href='#' class='itemright' id='right" + j + "'><span>"+settings.rightButtonInner+"<\/span><\/a>"); 100 101 jQuery(this).find("li").each(function(n) { 102 jQuery("div#thumbSlider" + j + " ul").append("<li><a title='" + jQuery(this).find("img").attr("alt") + "' href='#'><img style='max-width: 65px;max-height: 65px;' src='" + jQuery(this).find("img").attr("src") + "' /><p class='tmbrdr'> <\/p><\/a><\/li>"); 103 }); 104 105 jQuery("div#thumbSlider" + j + " a").each(function(z) { 106 jQuery(this).bind("click", function(){ 107 jQuery(this).find("p.tmbrdr").addClass("active").css({opacity: settings.thumbsActiveBorderOpacity}); 108 jQuery(this).parent().parent().find("p.tmbrdr").not(jQuery(this).find("p.tmbrdr")).removeClass("active").css({borderColor: settings.thumbsBorderColor, opacity: settings.thumbsBorderOpacity}); 109 var cnt = -(300*z); 110 (cnt != container.find("ul").css("left").replace(/px/, "")) ? container.find("span.typo").animate({"opacity": 0}, 250) : null ; 111 container.find("ul").animate({ left: cnt}, settings.easeTime, settings.easeFunc, function(){container.find("span.typo").animate({"opacity": settings.typoFullOpacity}, 250)}); 112 return false;
113 }); 114 }); 115 // shortcuts to +/- buttons 116 var jQuerybtl = jQuery("a#left" + j); 117 var jQuerybtr = jQuery("a#right" + j); 118 119 // right/left 120 jQuerybtr.bind("click", function(){ 121 if (r_enabled) (pictEls-pos > settings.thumbs*2 || pictEls%settings.thumbs == 0)? pos += settings.thumbs : pos += pictEls % settings.thumbs; 122 r_enabled = false; 123 jQuery(this).prev().prev().find("ul:not(:animated)").animate({ left: -(thumbsWidth+23)*pos}, 500, settings.easeFunc, function(){authorityMixing();}); 124 return false; 125 }); 126 jQuerybtl.bind("click", function(){ 127 if (l_enabled && pos!=0) (pictEls-pos > settings.thumbs || pictEls%settings.thumbs == 0)? pos -= settings.thumbs : pos -= pictEls % settings.thumbs; 128 l_enabled = false; 129 jQuery(this).prev().find("ul:not(:animated)").animate({ left: -(thumbsWidth+23)*pos}, 500, settings.easeFunc, function(){authorityMixing();}); 130 return false; 131 }); 132 133 function authorityMixing() 134 { 135 136 //right btt 137 (pos == pictEls-settings.thumbs) ? jQuerybtr.addClass("r_dis") : jQuerybtr.removeClass("r_dis"); 138 (pos == pictEls-settings.thumbs) ? r_enabled = false : r_enabled = true; 139 //left btt 140 (pos == 0) ? jQuerybtl.addClass("l_dis") : jQuerybtl.removeClass("l_dis"); 141 (pos == 0) ? l_enabled = false : l_enabled = true; 142 } 143 144 //CSS defs @ runtime 145 var tBorder = settings.thumbsBorderWidth; 146 var contBorder = settings.galBorderWidth 147 148 jQuery(".slideViewer a img").css({border: "0"}); 149 if(settings.typo) 150 { 151 jQuery(this).find("span.typo").each(function(z) { 152 jQuery(this).css({marginTop: (pictHeight-jQuery(this).innerHeight()), opacity: settings.typoFullOpacity}); 153 }); 154 } 155 jQuery("div#svwp"+ j).css({border: settings.galBorderWidth +"px solid "+settings.galBorderColor}); 156 157 jQuery("div#thumbSlider" + j).css({position: "relative", left: contBorder, top: settings.thumbsTopMargin+"px", width: 300+"px", height: 97+"px", textAlign: "center", overflow: "hidden", margin: "0 auto"}); 158 jQuery("div#thumbSlider" + j + " ul").css({width: (thumbsWidth*(pictEls+1))+settings.thumbsRightMargin*pictEls, position: "relative", left: "0", top: "0"}); 159 jQuery("div#thumbSlider" + j + " ul li").css({marginRight: settings.thumbsRightMargin}); 160 161 jQuery("div#thumbSlider" + j).find("p.tmbrdr").css({width: (thumbsWidth-tBorder*2)+"px", height: 95 +"px", top: 0 +"px", border: settings.thumbsBorderWidth +"px solid "+settings.thumbsBorderColor, opacity: settings.thumbsBorderOpacity}); 162 jQuery("div#thumbSlider" + j + " a:first p.tmbrdr").addClass("active").css({borderColor: settings.thumbsActiveBorderColor, opacity: settings.thumbsActiveBorderOpacity}); 163 164 var rbttLeftMargin = (pictWidth/2) + (jQuery("div#thumbSlider" + j).width()/2) + settings.thumbsRightMargin + contBorder; 165 var lbttLeftMargin = (pictWidth/2) - (jQuery("div#thumbSlider" + j).width()/2) - (settings.buttonsWidth + settings.thumbsRightMargin) + contBorder; 166 167 168 var innerLeftImg = jQuerybtl.find("img"); 169 var innerRightImg = jQuerybtr.find("img"); 170 if(innerLeftImg.length != 0 && innerRightImg.length != 0) 171 { 172 jQuery(innerLeftImg).load(function() { 173 jQuery(this).css({margin: Math.round((thumbsHeight/2)-(jQuery(this).height()/2))+"px 0 0 0"}); 174 }); 175 jQuery(innerRightImg).load(function() { 176 jQuery(this).css({margin: Math.round((thumbsHeight/2)-(jQuery(this).height()/2))+"px 0 0 0"}); 177 }); 178 } 179 180 181 jQuery("a#left" + j).css({display: "block", textAlign: "center", width: settings.buttonsWidth + "px" , height: settings.buttonsHeight+"px", margin: "-51px 0px 0px -10px", textDecoration: "none", lineHeight: thumbsHeight+"px", color: settings.buttonsTextColor}); 182 jQuery("a#right" + j).css({display: "block", textAlign: "center", width: settings.buttonsWidth + "px", height: settings.buttonsHeight+"px" , margin: "-54px 0px 0px 295px", textDecoration: "none", lineHeight: thumbsHeight+"px", color: settings.buttonsTextColor}); 183 184 185 authorityMixing(); 186 187 if(settings.autoslide){ 188 var i = 1; 189 190 jQuery("div#thumbSlider" + j).everyTime(settings.asTimer, "asld", function() { 191 jQuery(this).find("a").eq(i).trigger("click"); 192 if(i == 0) 193 { 194 pos = 0; 195 l_enabled = false;
196 jQuery("div#thumbSlider" + j).find("ul:not(:animated)").animate({ left: -(thumbsWidth+settings.thumbsRightMargin)*pos}, 500, settings.easeFunc, function(){authorityMixing();}); 197 } 198 else l_enabled = true; 199 200 (i%settings.thumbs == 0)? jQuery(this).next().next().trigger("click") : null; 201 (i < pictEls-1)? i++ : i=0; 202 }); 203 204 //stops autoslidemode 205 jQuery("a#right" + j).bind("mouseup", function(){ 206 jQuery(this).prev().prev().stopTime("asld"); 207 }); 208 jQuery("a#left" + j).bind("mouseup", function(){ 209 jQuery(this).prev().stopTime("asld"); 210 }); 211 jQuery("div#thumbSlider" + j + " a").bind("mouseup", function(){ 212 jQuery(this).parent().parent().parent().stopTime("asld"); 213 }); 214 } 215 var uiDisplay = (settings.thumbsVis)? "block":"none"; 216 jQuery("div#thumbSlider" + j + ", a#left" + j + ", a#right" + j).wrapAll("<div style='width:320px; display: "+uiDisplay+"' id='ui"+j+"'><\/div>"); 217 jQuery("div#svwp"+ j + ", div#ui" + j).wrapAll("<div style='width:300px'><\/div>"); 218 }); 219 // (jQuery("div#thumbSlider" + j).width()+(settings.buttonsWidth*2) >= pictWidth)? alert("ALERT: THE THUMBNAILS SLIDER IS TOO WIDE! \nthumbsPercentReduction and/or buttonsWidth needs to be scaled down!") : null; 220 j++; 221 $(".slideViewer").css({height:300+"px",width:300+"px","float":"none"}) 222 $(".itemleft").css({margin:"-51px 0 0 0"}) 223 $(".itemright").css({margin:"-54px 0 0 285px"}) 224 225 }); 226};
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.