issue101, fix another misbehaviour when seting display attribute
[phpfspot.git] / phpfspot.js
index c4b39b55a5cac2ff95228b927856dd6f3cd589b1..89eacbadfcda5c3672704a4262628fbe1e00c0c0 100644 (file)
@@ -1,6 +1,9 @@
 function showImage(id, scrollup)
 {
-   content = document.getElementById("content");
+   if(!document.getElementById('content'))
+      return;
+
+   var content = document.getElementById('content');
 
    /* blank the screen */
    if(scrollup != undefined) {
@@ -15,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)
@@ -26,11 +29,24 @@ function moveToThumb(thumb_id)
       return;
 
    if(thumbimg = document.getElementById('thumbimg' + thumb_id)) {
-      window.scrollTo(0, thumbimg.offsetTop-100);
+      window.scrollTo(0, findPos(thumbimg,'top')-100);
    }
 
 } // moveToThumb()
 
+function findPos(obj, direction) {
+   var cur = 0;
+   if (obj.offsetParent) {
+      do {
+         if(direction == 'left')
+            cur += obj.offsetLeft;
+         if(direction == 'top')
+            cur += obj.offsetTop;
+      } while (obj = obj.offsetParent);
+   }
+   return [cur];
+}
+
 function showCredits()
 {
    var credits = document.getElementById("content");
@@ -64,7 +80,7 @@ function Tags(mode, id)
       refreshPhotoIndex();
    }
    else {
-      window.alert(retr);
+      window.alert("Server message: "+ retr);
    }
 
 } // Tags()
@@ -164,7 +180,7 @@ function startSearch()
       showPhotoIndex();
    }
    else {
-      window.alert(retr);
+      window.alert("Server message: "+ retr);
    }
 
 } // startSearch()
@@ -256,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;
@@ -273,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) {
@@ -294,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';
@@ -301,7 +329,7 @@ function hidePhotoDetails(mode)
       }
       else {
          photo_details.style.visibility = 'visible';
-         photo_details.style.display = 'inline';
+         photo_details.style.display = '';
       }
    }
 } // hidePhotoDetails()
@@ -433,13 +461,13 @@ function startSlideShow()
 
 function nextSlide()
 {
-   next_img = HTML_AJAX.grab(encodeURI('rpc.php?action=get_next_slideshow_img'));
+   var next_img = HTML_AJAX.grab(encodeURI('rpc.php?action=get_next_slideshow_img'));
    document.getElementById('slide_img').src = next_img;
 }
 
 function prevSlide()
 {
-   prev_img = HTML_AJAX.grab(encodeURI('rpc.php?action=get_prev_slideshow_img'));
+   var prev_img = HTML_AJAX.grab(encodeURI('rpc.php?action=get_prev_slideshow_img'));
    document.getElementById('slide_img').src = prev_img;
 }
 
@@ -480,8 +508,8 @@ function autoBrowse()
    }
    /* we have reached the last photo */
    else {
-      if(document.getElementById('autobrowse_ico'))
-         document.getElementById('autobrowse_ico').src = "resources/32_play.png";
+      if(ab_ico = document.getElementById('autobrowse_ico'))
+         ab_ico.src = "resources/32_play.png";
       clearInterval(autobrowse);
    }
 
@@ -521,7 +549,7 @@ function update_sort_order(obj)
       showPhotoIndex();
    }
    else {
-      window.alert(retr);
+      window.alert("Server message: "+ retr);
    }
 
 } // update_sort_order()