//abgeaendert fuer Zeichnungen!
/**********************************************************
* Suzy's Javascript Photo Album, version 8.0, March 17, 2004
*
* Changed this version: javascript is now in two seperate external
* files, and put "spaces" in category names.
*
* This javascript may not be used on other sites without prior permission.
*
* You may contact me at photokity@hotmail.com for assistance.
*
**********************************************************/
self.name = "main"; // If you are using frames, change "main" to the name of the frame that the photoalbum is in.
current = 0; // Sets the current picture being shown to the first one.
ActiveVar = 0; // Sets up the variable that counts the pictures.
var ActiveArray = new Array() // Sets up the active array.
for (loop = 0; loop < MainVar; loop++) {
ActiveArray[ActiveVar++] = new Fix(
MainArray[loop].DatVal,
MainArray[loop].PicVal,
MainArray[loop].TitVal,
MainArray[loop].CatVal,
MainArray[loop].TxtVal,
MainArray[loop].wImg, // !!! hinzu gefuegt
MainArray[loop].hImg // !!! hinzu gefuegt
);
}
function DisplayCategories() { // Lists out the categories.
TotalCategories = SuzyCategory.length;
for (loop = 0; loop < TotalCategories; loop++) {
document.write("<option value=" + SuzyCategory[loop] + ">" + ReplaceChars(SuzyCategory[loop]) + "</option>");
}
}
function FindPic() { // The search for a photo feature.
TotalFound = 0;
SearchString = document.SuzyForm.SearchWord.value;
SearchString = SearchString.toLowerCase();
WriteResults = window.open("", "resultwindow", "height=410, width=490, toolbar=0, status=0, menubar=0, resizable=1, scrollbars=1");
WriteResults.document.open();
WriteResults.document.write('<style type=text/css>body{background:url(parchment.jpg); font:8pt verdana}'
+ 'a{text-decoration:none}'
+ 'img{border:2px ridge #ffaaaa; height:50px; vertical-align:middle}'
+ '</style>'
+ 'You searched for: <i>' + SearchString + '</i>'
+ '<br>Category: <i>' + parent.document.SuzyForm.CategoryDropdown.options.value + '</i>'
+ '<p><b>Results:</b><br>');
for (loop = 0; loop < ActiveVar; loop++) {
Keyword = ActiveArray[loop].TxtVal;
Keyword = Keyword.toLowerCase();
URL = ActiveArray[loop].PicVal;
title = ActiveArray[loop].TitVal;
title = title.toLowerCase();
SearchResult = Keyword.indexOf(SearchString);
SearchResult2 = title.indexOf(SearchString);
if (SearchResult != "-1" || SearchResult2 != "-1") {
WriteResults.document.write('<p><a href=javascript:ShowSuzyPic(' + loop + '); target="main"><img src=' + ActiveArray[loop].PicVal + '></a> ' + title);
TotalFound++;
}
}
WriteResults.document.write('<p><b>Returned ' + TotalFound + ' results.</b><p><a href="javascript:window.close();">close window</a>');
WriteResults.document.close();
}
function LoadPiclist() { // Loads initial list of pictures on web page.
for (loop = 0; loop < MainVar; loop++) {
document.write("<option value=" + ActiveArray[loop].PicVal + ">" + ActiveArray[loop].TitVal + "</option>");
}
}
function LoadNextPic() { // Loads next picture for faster operation.
NextImage = new Image();
NextPic = current + 1;
if (NextPic >= ActiveVar) NextPic = 0;
NextImage.src = ActiveArray[NextPic].PicVal;
}
function NextSuzyPic() { // Flips to the next photo.
TotalImages = document.SuzyForm.SuzyDropdown.options.length;
current++;
if (current >= ActiveVar) current = 0;
ShowSuzyPic(current);
}
LoadThis = 0;
function PreLoader() { // If checked, preloads all images into cache. Five second interval between pics.
if (SuzyForm.PreloadPics.checked && ++LoadThis < MainVar) {
ShowingImage = new Image();
ShowingImage.src = MainArray[LoadThis].PicVal;
window.status = "Pre-Loading image... '" + MainArray[LoadThis].PicVal + "'";
RunLoader();
} else {
window.status = " ";
}
}
function PreviousSuzyPic() { // Flips to the previous photo.
current--;
if (current < 0) current = ActiveVar - 1;
ShowSuzyPic(current);
}
function RandomSuzyPic() { // Shows a random photo.
randompic = Math.floor(Math.random() * ActiveVar);
ShowSuzyPic(randompic);
}
function ReplaceChars(entry) { // Replaces the _'s in cat names to make it pretty.
out = "_"; // replace this
add = " "; // with this
temp = "" + entry; // temporary holder
while (temp.indexOf(out) > -1) {
pos = temp.indexOf(out);
temp = "" + (temp.substring(0, pos) + add +
temp.substring((pos + out.length), temp.length));
}
return temp;
// document.subform.text.value = temp;
}
function RunLoader() { // Pre-loads all images every 5 seconds, if checkbox is selected.
timerLoad = setTimeout("PreLoader()", 5000)
}
function RunSlideShow() { // Shuffles the photos in a slide show.
timerSlideShow = setTimeout("NextSuzyPic();", document.SuzyForm.Timer.value * 1000)
}
function ShowSuzyCategory(picked) { // Shows the pictures in that category.
ActiveArray.length = 0;
PicList = "<SELECT size=13 style='width:200px; font:8pt verdana' name='SuzyDropdown' onChange='ShowSuzyPic(SuzyForm.SuzyDropdown.options.selectedIndex);'>";
ActiveVar = 0;
current = 0;
for (loop = 0; loop < MainVar; loop++) {
if (MainArray[loop].CatVal.toLowerCase() == picked.toLowerCase() || picked == "all") {
ActiveArray[ActiveVar++] = new Fix(MainArray[loop].DatVal, MainArray[loop].PicVal, MainArray[loop].TitVal, MainArray[loop].CatVal, MainArray[loop].TxtVal)
PicList = PicList + "<option value=" + MainArray[loop].PicVal + ">" + MainArray[loop].TitVal + "</option>";
}
}
PicList = PicList + "</select>";
document.getElementById("PicSpot").innerHTML = PicList;
}
function ShowSuzyPic(newpic) { // Shows the photo and text on the page.
current = newpic;
SelectionBox = document.SuzyForm.SuzyDropdown;
SelectionBox.options[current].selected = true;
document.getElementById("SuzySpot").innerHTML = '<a href=javascript:SuzyPicRemote("' + ActiveArray[current].PicVal + '");><img name="PicShowing" src=' + ActiveArray[current].PicVal + ' height=200 border=0></a>';
document.getElementById("journal").outerHTML = '<div id=journal><br><b>' + ActiveArray[current].TitVal + '</b><p>' + ActiveArray[current].DatVal + '<p style="text-align:justify; text-indent:25px">' + ActiveArray[current].TxtVal + '</div>';
if (document.SuzyForm.WhereView[1].checked) {
timerID = setTimeout("SuzyPicRemote(ActiveArray[current].PicVal)", 1000)
}
if (document.SuzyForm.SelectedMode[0].checked) {
timerSlideShow = setTimeout("NextSuzyPic();", document.SuzyForm.Timer.value * 1000)
LoadNextPic();
} else {
LoadNextPic();
}
}
// Fuer Lightbox
document.addEventListener('DOMContentLoaded', function () {
document.querySelector('#lightbox-ovl').addEventListener('click', function () {
this.style.transform = 'scale(0)';
document.getElementById('lightbox').style.transform = 'scale(0)';
});
});
// Auf Lightbox umgestellt
function SuzyPicRemote(picName) { // Pops up the photo in a lightbox
wImg = ActiveArray[current].wImg
hImg = ActiveArray[current].hImg;
wViewport = window.innerWidth;
hViewport = window.innerHeight;
var sqrt2 = Math.sqrt(2);
var isPortrait = true;
// Fenstergroesse festlegen abhaengig ob Hoch- oder Querfomat
if (wImg < hImg) { // Ist das Bild im Hochformat?
var hLightbox = 900;
var wLightbox = 900 / sqrt2;
} else {
isPortrait = false;
var wLightbox = 900;
var hLightbox = 900 / sqrt2;
}
// Passt das Fenster nicht in den Bildschirm, passen wir die Groesse an
var fH = fW = 1;
if (wLightbox > wViewport) {
var fW = wViewport / wLightbox;
}
if (hLightbox > hViewport) {
var fH = hViewport / hLightbox;
}
if (fH < fW) {
factor = fH;
} else {
factor = fW;
}
wLightbox *= factor * 0.9;
hLightbox *= factor * 0.9;
var lightbox = document.getElementById('lightbox');
var img = document.querySelector('#lightbox img');
lightbox.style.width = wLightbox + 'px';
lightbox.style.height = hLightbox + 'px';
lightbox.style.top = (hViewport - hLightbox - 12) / 2 + 'px';
lightbox.style.left = (wViewport - wLightbox - 12) / 2 + 'px';
img.src = picName;
if (isPortrait) {
var factorImgW = wImg / 21;
var factorImgH = hImg / 29.7;
} else {
var factorImgW = wImg / 29.7;
var factorImgH = hImg / 21;
}
var wImg2 = wLightbox * factorImgW;
var hImg2 = hLightbox * factorImgH;
img.style.width = wImg2 + 'px';
img.style.height = hImg2 + 'px';
lightbox.style.transform = 'scale(1)';
document.getElementById('lightbox-ovl').style.transform = 'scale(1)';
}