X-Git-Url: https://git.nubati.net/cgi-bin/gitweb.cgi?p=phpfspot.git;a=blobdiff_plain;f=phpfspot.js;h=a2c848e5715bf5faf254eb39ceeab348d869c39c;hp=6bc0d2c96be4857ad1c8859a6286c832f640a1fb;hb=217bca545926a2fc8989b874661fc2ecad4bbf9b;hpb=168f6243a42314347bf385c9f79ccf0fdd7729c2 diff --git a/phpfspot.js b/phpfspot.js index 6bc0d2c..a2c848e 100644 --- a/phpfspot.js +++ b/phpfspot.js @@ -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() @@ -12,24 +52,35 @@ function showCredits() function Tags(mode, id) { + var objTemp = new Object(); + if(mode == "add") { - // add the tag to users session - HTML_AJAX.grab(encodeURI('rpc.php?action=addtag&id=' + id)); + // add tag to users session + objTemp['action'] = 'addtag'; + objTemp['id'] = id; } else if(mode == "del") { - // del the tag from users session - HTML_AJAX.grab(encodeURI('rpc.php?action=deltag&id=' + id)); + // del tag from users session + objTemp['action'] = 'deltag'; + objTemp['id'] = id; } else if(mode == "condition") { setCheckedValue(id, id.value); - HTML_AJAX.grab(encodeURI('rpc.php?action=tagcondition&mode=' + id.value)); + objTemp['action'] = 'tagcondition'; + objTemp['mode'] = id.value; } - refreshAvailableTags(); - refreshSelectedTags(); - refreshPhotoIndex(); + var retr = HTML_AJAX.post('rpc.php', objTemp); + if(retr == "ok") { + refreshAvailableTags(); + refreshSelectedTags(); + refreshPhotoIndex(); + } + else { + window.alert("Server message: "+ retr); + } -} +} // Tags() function refreshAvailableTags() { @@ -47,18 +98,22 @@ 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() { - if(document.getElementById("matrix") != undefined || startup == 1) { + if(document.getElementById("index") != undefined || startup == 1) { showPhotoIndex(); startup = 0; } @@ -92,8 +147,6 @@ function setCheckedValue(condition, value) { function startSearch() { - var searchfor = document.getElementsByName('searchfor')[0].value - from_year = document.getElementById('fromyear').value; from_month = document.getElementById('frommonth').value; from_day = document.getElementById('fromday').value; @@ -103,26 +156,31 @@ function startSearch() to_day = document.getElementById('today').value; to = to_year +"-"+ to_month +"-"+ to_day; - var request = 'rpc.php?action=search'; + var objTemp = new Object(); + objTemp['action'] = 'search'; - if(searchfor != "") { - request = request + '&for=' + searchfor; + if(document.getElementsByName('searchfor_tag')[0].value != "") { + objTemp['for_tag'] = document.getElementsByName('searchfor_tag')[0].value; + } + if(document.getElementsByName('searchfor_name')[0].value != "") { + objTemp['for_name'] = document.getElementsByName('searchfor_name')[0].value; } - if(document.getElementsByName('consider_date')[0].checked == true) { - request = request + '&from='+ from +'&to='+ to; + objTemp['from'] = from; + objTemp['to'] = to; } - var sort_order = document.getElementsByName('sort_order')[0]; - request = request + '&sort_order='+ sort_order.options[sort_order.selectedIndex].value; - - HTML_AJAX.grab(encodeURI(request)); + var retr = HTML_AJAX.post('rpc.php', objTemp); + if(retr == "ok") { + refreshAvailableTags(); + refreshSelectedTags(); + showPhotoIndex(); + } + else { + window.alert("Server message: "+ retr); + } - refreshAvailableTags(); - refreshSelectedTags(); - showPhotoIndex(); - -} +} // startSearch() function datesearch() { @@ -150,7 +208,13 @@ function setViewMode(mode) function clearSearch() { - document.getElementsByName('searchfor')[0].value = ''; + document.getElementsByName('searchfor_tag')[0].value = ''; + document.getElementsByName('searchfor_name')[0].value = ''; + + if(document.getElementsByName('consider_date')[0].checked == true) { + document.getElementsByName('consider_date')[0].checked = false; + datesearch(); + } } function AskServerWhatToDo() @@ -158,10 +222,12 @@ function AskServerWhatToDo() return HTML_AJAX.grab(encodeURI('rpc.php?action=what_to_do')); } -function init_phpfspot() +function init_phpfspot(mode) { + /* always load list of available tags */ refreshAvailableTags(); + /* ask the server what we are currently displaying */ whattodo = AskServerWhatToDo(); if(whattodo == 'showpi' || whattodo == 'showpi_date') { @@ -173,11 +239,11 @@ function init_phpfspot() } if(whattodo == 'show_photo') { if(photo = getPhotoToShow()) { - showImage(photo) + showImage(photo); refreshSelectedTags(); } } -} +} // init_phpfspot() function setBackGrdColor(item, color) { @@ -201,9 +267,63 @@ 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'); + var year = document.getElementById(date_box+'year').value; + var month = document.getElementById(date_box+'month').value; if(date_box == 'from') { var xpos = document.getElementById('frompic').offsetLeft; var ypos = document.getElementById('frompic').offsetTop; @@ -214,16 +334,24 @@ function showCalendar(date_box, click_obj) var ypos = document.getElementById('topic').offsetTop; calendar_mode = 'to'; } - calendar.style.left = xpos + 60 + 'px'; + calendar.style.left = xpos + 100 + 'px'; calendar.style.top = ypos + 80 + 'px'; if(calendar.style.visibility == "" || calendar.style.visibility == 'hidden') { calendar.style.visibility = 'visible'; calendar.innerHTML = "Loading..."; - calendar.innerHTML = HTML_AJAX.grab(encodeURI('rpc.php?action=get_calendar_matrix')); + calendar.innerHTML = HTML_AJAX.grab(encodeURI('rpc.php?action=get_calendar_matrix&year=' + year + '&month=' + month)); calendar_shown = 1; } else { + hideCalendar(); + } +} + +function hideCalendar() +{ + var calendar = document.getElementById('calendar'); + if(calendar.style.visibility != 'hidden') { calendar.style.visibility = 'hidden'; calendar_shown = 0; } @@ -241,6 +369,7 @@ function setCalendarDate(year, month, day) document.getElementById(calendar_mode+'year').value = year; document.getElementById(calendar_mode+'month').value = month; document.getElementById(calendar_mode+'day').value = day; + hideCalendar(); } function resetAll() @@ -302,17 +431,45 @@ function preloadPhotos(lbImg) { function startSlideShow() { - HTML_AJAX.grab(encodeURI('rpc.php?action=reset_slideshow')); - nextSlide(); - setInterval("nextSlide()", 3000); + if(!sliding) { + HTML_AJAX.grab(encodeURI('rpc.php?action=reset_slideshow')); + nextSlide(); + sliding = setInterval("nextSlide()", sliding_time*1000); + document.getElementById('stop_ico').src = "resources/32_stop.png"; + } + else { + clearInterval(sliding); + sliding = 0; + document.getElementById('stop_ico').src = "resources/32_play.png"; + } } 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() +{ + var prev_img = HTML_AJAX.grab(encodeURI('rpc.php?action=get_prev_slideshow_img')); + document.getElementById('slide_img').src = prev_img; +} + +function pauseSlideShow() +{ + if(!sliding_paused) { + sliding_paused = 1; + clearInterval(sliding); + document.getElementById('pause_ico').src = "resources/32_play.png"; + } + else { + sliding_paused = 0; + sliding = setInterval("nextSlide()", sliding_time*1000); + document.getElementById('pause_ico').src = "resources/32_pause.png"; + } +} + function startAutoBrowse() { if(!autobrowse) { @@ -325,7 +482,8 @@ function startAutoBrowse() document.getElementById('autobrowse_ico').src = "resources/32_play.png"; } -} +} // startAutoBrowser() + function autoBrowse() { if(document.getElementById('next_link')) { @@ -333,9 +491,102 @@ 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() +{ + var sliderEl = document.getElementById ? document.getElementById("slider-1") : null; + var inputEl = document.forms[0]["slider-input-1"]; + var s = new Slider(sliderEl, inputEl); + s.setMinimum(1); + s.setMaximum(10); + s.setValue(sliding_time); + document.getElementById("current_slide_time").innerHTML = sliding_time + "s Interval"; + s.onchange = function () { + sliding_time = s.getValue(); + document.getElementById("current_slide_time").innerHTML = sliding_time + "s Interval"; + if(!sliding_paused && sliding) { + clearInterval(sliding); + sliding = setInterval("nextSlide()", sliding_time*1000); + } + }; + window.onresize = function () { + s.recalculate(); + }; + +} + +function update_sort_order(obj) +{ + var objTemp = new Object(); + objTemp['value'] = obj.options[obj.selectedIndex].value; + + var retr = HTML_AJAX.post('rpc.php?action=update_sort_order', objTemp); + + if(retr == "ok") { + showPhotoIndex(); + } + else { + window.alert("Server message: "+ retr); + } + +} // update_sort_order() + + +function keyDown(e) { + var evt = (e) ? e:(window.event) ? window.event:null; + + if(evt) { + var key = (evt.charCode) ? evt.charCode : + ((evt.keyCode) ? evt.keyCode : ((evt.which) ? evt.which : 0)); + + + if(key == 37) /* left curosr */ { + if(document.getElementById('prev_link')) { + var prev_link = document.getElementById('prev_link').href; + window.location.href = prev_link; + } + return; + } + if(key == 38) /* up cursor */ { + } + if(key == 39) /* right curosr */ { + if(document.getElementById('next_link')) { + var next_link = document.getElementById('next_link').href; + window.location.href = next_link; + } + return; + } + if(key == 73 && evt.altKey && evt.ctrlKey) /* ctrl+alt+i */ { + showPhotoIndex(); + return; + } + if(key == 82 && evt.altKey && evt.ctrlKey) /* ctrl+alt+r */ { + resetAll(); + return; + } + } +} + +document.onkeydown=keyDown; +if(document.layers) { + document.captureEvents(Event.KEYDOWN); +} var startup = 1; var calendar_shown = 0; var calendar_mode = ''; var autobrowse = 0; +var sliding = 0; +var sliding_paused = 0; +var sliding_time = 3; +var origHeight; +var origWidth; +var photo_details_pos;