a fix
[scribo] / www / jquery.slideviewer.1.2.js
1 /*!
2  * slideViewer 1.2
3  * Examples and documentation at: 
4  * http://www.gcmingati.net/wordpress/wp-content/lab/jquery/imagestrip/imageslide-plugin.html
5  * 2007-2010 Gian Carlo Mingati
6  * Version: 1.2.3 (9-JULY-2010)
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  * 
11  * Requires:
12  * jQuery v1.4.1 or later, jquery.easing.1.2
13  * 
14  */
15
16 jQuery(function(){
17    jQuery("div.svw").prepend("<img src='spinner.gif' class='ldrgif' alt='loading...'/ >"); 
18 });
19 var j = 0;
20 var quantofamo = 0;
21 jQuery.fn.slideView = function(settings) {
22         settings = jQuery.extend({
23                 easeFunc: "easeInOutExpo",
24                 easeTime: 750,
25                 uiBefore: false,
26                 toolTip: false,
27                 ttOpacity: 0.9
28         }, settings);
29         return this.each(function(){
30                 var container = jQuery(this);
31                 container.find("img.ldrgif").remove();
32                 container.removeClass("svw").addClass("stripViewer");           
33                 var pictWidth = container.find("img").width();
34                 var pictHeight = container.find("img").height();
35                 var pictEls = container.find("li").size();
36                 var stripViewerWidth = pictWidth*pictEls;
37                 container.find("ul").css("width" , stripViewerWidth);
38                 container.css("width" , pictWidth);
39                 container.css("height" , pictHeight);
40                 container.each(function(i) {
41     (!settings.uiBefore) ? jQuery(this).after("<div class='stripTransmitter' id='stripTransmitter" + (j) + "'><ul><\/ul><\/div>") : jQuery(this).before("<div class='stripTransmitter' id='stripTransmitter" + (j) + "'><ul><\/ul><\/div>");                    
42                 jQuery(this).find("li").each(function(n) {
43                 jQuery("div#stripTransmitter" + j + " ul").append("<li><a title='" + jQuery(this).find("img").attr("alt") + "' href='#'>"+(n+1)+"<\/a><\/li>");                                                                                         
44                 });
45                 jQuery("div#stripTransmitter" + j + " a").each(function(z) {
46                 jQuery(this).bind("click", function(){          
47                 jQuery(this).addClass("current").parent().parent().find("a").not(jQuery(this)).removeClass("current"); // wow!
48                 var cnt = -(pictWidth*z);
49                 container.find("ul").animate({ left: cnt}, settings.easeTime, settings.easeFunc);
50                 return false;
51                 });
52                 });
53                 
54                 
55                 container.bind("click", function(e){
56                         var ui = (!settings.uiBefore) ? jQuery(this).next().find("a.current") : jQuery(this).prev().find("a.current");
57                         var bTotal = parseFloat(jQuery(this).css('borderLeftWidth').replace("px", "")) +  parseFloat(jQuery(this).css('borderRightWidth').replace("px", ""));
58                         var dOs = jQuery(this).offset();
59                         var zeroLeft = (bTotal/2 + pictWidth) - (e.pageX - dOs.left);
60                         if(zeroLeft >= pictWidth/2) { 
61                                 var uiprev = ui.parent().prev().find("a");      
62                                 (jQuery(uiprev).length != 0)? uiprev.trigger("click") : ui.parent().parent().find("a:last").trigger("click");                                                   
63                         } 
64                         else {
65                                 var uinext = ui.parent().next().find("a");
66                           (jQuery(uinext).length != 0)? uinext.trigger("click") : ui.parent().parent().find("a:first").trigger("click");
67                         }
68                 });
69                 
70                 
71                 jQuery("div#stripTransmitter" + j).css("width" , pictWidth);
72                 jQuery("div#stripTransmitter" + j + " a:first").addClass("current");
73                 jQuery('body').append('<div class="tooltip" style="display:none;"><\/div>');
74                 
75
76                 if(settings.toolTip){
77                 var aref = jQuery("div#stripTransmitter" + j + " a");
78
79                 aref.live('mousemove', function(e) {
80                 var att = jQuery(this).attr('title');
81                 posX=e.pageX+10;
82                 posY=e.pageY+10;
83                 jQuery('.tooltip').html(att).css({'position': 'absolute', 'top': posY+'px', 'left': posX+'px', 'display': 'block', 'opacity': settings.ttOpacity});
84                 });
85                 aref.live('mouseout', function() {
86                 jQuery('.tooltip').hide();
87                 });                             
88                 }
89                 });
90                 j++;
91         });     
92 };