explain why alert-boxes appear
[phpfspot.git] / phpfspot.js
index ca3f9c01508fa8c94e25eae0794823d7986b8f12..a2c848e5715bf5faf254eb39ceeab348d869c39c 100644 (file)
@@ -1,7 +1,47 @@
-function showImage(id)
+function showImage(id, scrollup)
 {
-   var image_div = document.getElementById("content");
-   image_div.innerHTML = HTML_AJAX.grab(encodeURI('rpc.php?action=showphoto&id=' + id));
+   if(!document.getElementById('content'))
+      return;
+
+   var content = document.getElementById('content');
+
+   /* blank the screen */
+   if(scrollup != undefined) {
+      content.innerHTML = "";
+   }
+
+   HTML_AJAX.replace(content, encodeURI('rpc.php?action=showphoto&id=' + id));
+
+   /* scroll the window up to the top */
+   if(scrollup != undefined) {
+      window.scrollTo(0,0);
+   }
+
+   /* delete some global vars */
+   delete(origHeight);
+   delete(origWidth);
+   delete(photo_details_pos);
+}
+
+function moveToThumb(thumb_id)
+{
+   if(thumb_id == undefined)
+      return;
+
+   if(thumbimg = document.getElementById('thumbimg' + thumb_id)) {
+      window.scrollTo(0, findPos(thumbimg)-100);
+   }
+
+} // moveToThumb()
+
+function findPos(obj) {
+   var curtop = 0;
+   if (obj.offsetParent) {
+      do {
+         curtop += obj.offsetTop;
+      } while (obj = obj.offsetParent);
+   }
+   return [curtop];
 }
 
 function showCredits()
@@ -37,7 +77,7 @@ function Tags(mode, id)
       refreshPhotoIndex();
    }
    else {
-      window.alert(retr);
+      window.alert("Server message: "+ retr);
    }
 
 } // Tags()
@@ -58,13 +98,17 @@ function refreshSelectedTags()
    selected_tags.innerHTML = HTML_AJAX.grab(encodeURI('rpc.php?action=show_selected_tags'));
 }
 
-function showPhotoIndex(begin_with)
+function showPhotoIndex(begin_with, last_photo)
 {
-   if(begin_with == undefined)
-      HTML_AJAX.replace(document.getElementById("content"), encodeURI('rpc.php?action=show_photo_index'));
-   else
-      HTML_AJAX.replace(document.getElementById("content"), encodeURI('rpc.php?action=show_photo_index&begin_with=' + begin_with));
-}
+   var url = "rpc.php?action=show_photo_index";
+   if(begin_with != undefined)
+      url = url + '&begin_with=' + begin_with;
+   if(last_photo != undefined)
+      url = url + '&last_photo=' + last_photo;
+
+   HTML_AJAX.replace(document.getElementById("content"), encodeURI(url));
+
+} // showPhotoIndex()
 
 // if photo index is currently shown, refresh it
 function refreshPhotoIndex()
@@ -133,7 +177,7 @@ function startSearch()
       showPhotoIndex();
    }
    else {
-      window.alert(retr);
+      window.alert("Server message: "+ retr);
    }
 
 } // startSearch()
@@ -195,7 +239,7 @@ function init_phpfspot(mode)
    }
    if(whattodo == 'show_photo') {
       if(photo = getPhotoToShow()) {
-         showImage(photo)
+         showImage(photo);
          refreshSelectedTags();
       }
    }
@@ -223,6 +267,58 @@ function getPhotoToShow()
    return photo_to_show;
 }
 
+function zoom(mod)
+{
+   if(mod == undefined)
+      return;
+
+   if(photo = document.getElementById('photo')) {
+
+      if(origWidth == undefined)
+         origWidth = photo.width;
+      if(origHeight == undefined)
+         origHeight = photo.height;
+
+      if(mod != 0) {
+         new_w = photo.width * (1 + mod/100);
+         new_h = photo.height * (1 + mod/100);
+         photo.width = new_w;
+         photo.height = new_h;
+
+         if(photo_details_pos == undefined) {
+            photo_details_pos = document.getElementById('photo_details').offsetLeft;
+         }
+
+         if((photo.offsetLeft + new_w) >= photo_details_pos-20) {
+            hidePhotoDetails('true');
+         }
+         else {
+            hidePhotoDetails('false');
+         }
+      }
+      else {
+         photo.width = origWidth;
+         photo.height = origHeight;
+         hidePhotoDetails('false');
+      }
+   }
+
+} // zoom()
+
+function hidePhotoDetails(mode)
+{
+   if(photo_details = document.getElementById('photo_details')) {
+      if(mode == 'true') {
+         photo_details.style.visibility = 'hidden';
+         photo_details.style.display = 'none';
+      }
+      else {
+         photo_details.style.visibility = 'visible';
+         photo_details.style.display = 'inline';
+      }
+   }
+} // hidePhotoDetails()
+
 function showCalendar(date_box, click_obj)
 {
    var calendar = document.getElementById('calendar');
@@ -350,13 +446,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;
 }
 
@@ -386,7 +482,8 @@ function startAutoBrowse()
       document.getElementById('autobrowse_ico').src = "resources/32_play.png";
    }
 
-}
+} // startAutoBrowser()
+
 function autoBrowse()
 {
    if(document.getElementById('next_link')) {
@@ -394,7 +491,14 @@ function autoBrowse()
       window.location.href = next_link;
       document.getElementById('autobrowse_ico').src = "resources/32_pause.png";
    }
-}  
+   /* we have reached the last photo */
+   else {
+      if(ab_ico = document.getElementById('autobrowse_ico'))
+         ab_ico.src = "resources/32_play.png";
+      clearInterval(autobrowse);
+   }
+
+} // autoBrowse()
 
 function initSlider()
 {
@@ -430,7 +534,7 @@ function update_sort_order(obj)
       showPhotoIndex();
    }
    else {
-      window.alert(retr);
+      window.alert("Server message: "+ retr);
    }
 
 } // update_sort_order()
@@ -483,3 +587,6 @@ var autobrowse = 0;
 var sliding = 0;
 var sliding_paused = 0;
 var sliding_time = 3;
+var origHeight;
+var origWidth;
+var photo_details_pos;