issue101, fix some IE bugs around zooming
authorAndreas Unterkircher <unki@netshadow.at>
Sun, 20 Jan 2008 10:06:06 +0000 (11:06 +0100)
committerAndreas Unterkircher <unki@netshadow.at>
Sun, 20 Jan 2008 10:17:27 +0000 (11:17 +0100)
Signed-off-by: Andreas Unterkircher <unki@netshadow.at>
phpfspot.js
themes/default/templates/single_photo.tpl

index a2c848e5715bf5faf254eb39ceeab348d869c39c..0cec6715e8ebf7b383407fbd1092136a17d46bbc 100644 (file)
@@ -18,9 +18,9 @@ function showImage(id, scrollup)
    }
 
    /* delete some global vars */
-   delete(origHeight);
-   delete(origWidth);
-   delete(photo_details_pos);
+   delete(origHeight); origHeight = undefined;
+   delete(origWidth); origWidth = undefined;
+   delete(photo_details_pos); photo_details_pos = undefined;
 }
 
 function moveToThumb(thumb_id)
@@ -29,19 +29,22 @@ function moveToThumb(thumb_id)
       return;
 
    if(thumbimg = document.getElementById('thumbimg' + thumb_id)) {
-      window.scrollTo(0, findPos(thumbimg)-100);
+      window.scrollTo(0, findPos(thumbimg,'top')-100);
    }
 
 } // moveToThumb()
 
-function findPos(obj) {
-   var curtop = 0;
+function findPos(obj, direction) {
+   var cur = 0;
    if (obj.offsetParent) {
       do {
-         curtop += obj.offsetTop;
+         if(direction == 'left')
+            cur += obj.offsetLeft;
+         if(direction == 'top')
+            cur += obj.offsetTop;
       } while (obj = obj.offsetParent);
    }
-   return [curtop];
+   return [cur];
 }
 
 function showCredits()
@@ -269,10 +272,20 @@ function getPhotoToShow()
 
 function zoom(mod)
 {
+   var photo;
+
    if(mod == undefined)
       return;
 
-   if(photo = document.getElementById('photo')) {
+   /* internet explorer */
+   if(document.images['photo'].width)
+      photo = document.images['photo'];
+
+   /* all others */
+   if(photo == undefined && document.getElementById('photo').width)
+      photo = document.getElementById('photo');
+
+   if(photo != undefined) {
 
       if(origWidth == undefined)
          origWidth = photo.width;
@@ -286,7 +299,7 @@ function zoom(mod)
          photo.height = new_h;
 
          if(photo_details_pos == undefined) {
-            photo_details_pos = document.getElementById('photo_details').offsetLeft;
+            photo_details_pos = findPos(document.getElementById('photo_details'),'left');
          }
 
          if((photo.offsetLeft + new_w) >= photo_details_pos-20) {
@@ -307,6 +320,8 @@ function zoom(mod)
 
 function hidePhotoDetails(mode)
 {
+   var photo_details;
+
    if(photo_details = document.getElementById('photo_details')) {
       if(mode == 'true') {
          photo_details.style.visibility = 'hidden';
index fb194a84bfcb675c3da10027569ee588afd9943a..ea513d9c851d44490078837f56f2ac7b99e63451 100644 (file)
@@ -73,7 +73,7 @@
  { else }
   <a href="{$next_url}" onclick="click(this);" title="click for the next photo" name="photo">
  { /if }
-   <img src="{$image_url}" width="{$width}" height="{$height}" alt="{$image_filename}" id="photo" />
+   <img src="{$image_url}" width="{$width}" height="{$height}" alt="{$image_filename}" name="photo" id="photo" />
   </a>
  </div>