Ajout d'un JS avec effet glow
authorPatrick PIERRE <patrick.pierre@prismallia.fr>
dim., 17 juin 2012 20:52:13 +0200
changeset 17 aa8a171c5430
parent 16 3b696abda836
child 18 c252103b3835
Ajout d'un JS avec effet glow
Pdf/BaladeNature/Js/balade_nature.js
--- /dev/null	jeu. janv. 01 00:00:00 1970 +0000
+++ b/Pdf/BaladeNature/Js/balade_nature.js	dim. juin 17 20:52:13 2012 +0200
@@ -0,0 +1,108 @@
+// $Id$
+// balade_nature
+
+var text = null;
+var spot = null;
+var box = null;
+var boxProperty = '';
+
+
+window.addEvent('domready', function(){
+    // Tooltips
+    (function initialize() {
+        $$(".pdocImagePulse").each(function(pulse) {
+            var mainImg  = pulse.getParent().getElement("img");
+            var pulseImg = pulse.getElement("img");
+            var tooltip  = $(pulse.get('id')+"t");
+            mainImg.setStyle("max-width", "none");
+            var pulseWidth  = 100 * pulseImg.getSize().x / mainImg.getSize().x;
+            var pulseHeight = 100 * pulseImg.getSize().y / mainImg.getSize().y;
+            var mainImgRealWidth = mainImg.getSize().x;
+
+            pulse.setStyles({
+                "width": pulseWidth + "%", "height": pulseHeight + "%",
+                "left": (pulse.getStyle("left").toFloat() - pulseWidth/2) + "%",
+                "top":  (pulse.getStyle("top").toFloat() - pulseHeight/2) + "%"
+            });
+            pulseImg.setStyle("width", "100%");
+            mainImg.setStyle("max-width", "100%");
+            mainImg.getParent().setStyle("max-width", "100%");
+
+            var fontSize = tooltip.getStyle("font-size").toFloat();
+            tooltip.setStyles({
+                "opacity": 0, "display": "block",
+                "font-size": (fontSize * mainImg.getSize().x / mainImgRealWidth)
+                    + tooltip.getStyle("font-size").replace(fontSize, "")
+            });
+            
+            var tooltipImg = tooltip.getElement("img");
+            if (tooltipImg) {
+                tooltip.setStyle(
+                    "width", (100 * tooltipImg.getSize().x / mainImgRealWidth) + "%");
+                tooltipImg.setStyle("width", "100%");
+            }
+        });
+
+        $$(".pdocImagePulse").addEvent("click", function() {
+            var pulse   = this;
+            var tooltip = $(this.get('id')+"t");
+            pulse.setStyle("display", "none");
+            tooltip.tween("opacity", 1);
+            (function() {
+                tooltip.tween("opacity", 0);
+                pulse.setStyle("display", "block");
+            }).delay(12000);
+        });
+        
+        $$(".pdocImageTooltip").addEvent("click", function() {
+            this.tween("opacity", 0);
+            $(this.get('id').substr(0, this.get('id').length-1))
+                .setStyle("display", "block");
+        });
+    }).delay(50);
+     
+    // Effect: glow
+    var effectGlow = $("effectGlow");
+    if (effectGlow) {
+        text = $("effectGlowText");
+        spot = $("effectGlowSpot");
+        box = $("effectGlowBox")
+        if (typeof box.style.webkitBoxShadow == 'string') {
+            boxProperty = 'webkitBoxShadow';
+        } else if (typeof box.style.MozBoxShadow == 'string') {
+            boxProperty = 'MozBoxShadow';
+        } else if (typeof box.style.boxShadow == 'string') {
+            boxProperty = 'boxShadow';
+        }
+
+        if (text && spot && box) {
+            effectGlow.onmousemove = onMouseMove;
+            effectGlow.ontouchmove = function (e) {
+                e.preventDefault();
+                e.stopPropagation();
+                onMouseMove({clientX: e.touches[0].clientX, clientY: e.touches[0].clientY});
+            }
+        }
+    }
+});
+
+
+function onMouseMove(e) {
+    if (typeof e === 'undefined' || typeof e.clientX === 'undefined') {
+        return;
+    }
+    
+    var xm = (e.clientX - Math.floor(window.innerWidth / 2)) * 0.4;
+    var ym = (e.clientY - Math.floor(window.innerHeight / 3)) * 0.4;
+    var d = Math.round(Math.sqrt(xm*xm + ym*ym) / 5);
+    text.style.textShadow = -xm + 'px ' + -ym + 'px ' + (d + 10) + 'px black';
+    
+    if (boxProperty) {
+        box.style[boxProperty] = '0 ' + -ym + 'px ' + (d + 30) + 'px black';
+    }
+    
+    xm = e.clientX - Math.floor(window.innerWidth / 2);
+    ym = e.clientY - Math.floor(window.innerHeight / 2);
+    spot.style.backgroundPosition = xm + 'px ' + ym + 'px';
+}
+