First Commit
This commit is contained in:
471
html/sternwarte/javascript/anmeldung.js
Normal file
471
html/sternwarte/javascript/anmeldung.js
Normal file
@@ -0,0 +1,471 @@
|
||||
// anmeldung.js rxf 2020-10.12
|
||||
// Dynamik für die Anmelde-Seite
|
||||
//
|
||||
|
||||
$(document).ready(() => {
|
||||
|
||||
const ajaxURL="../DB4js.php";
|
||||
const maxPersonen = 10;
|
||||
|
||||
const dummyTln = {
|
||||
name:"Zuname{z}",
|
||||
vorname:"",
|
||||
email:"rxf{z}@gmx.de",
|
||||
telefon:"0711123456789",
|
||||
plz:"12345",
|
||||
stadt:"Ort{z}",
|
||||
strasse:"Straße {z}",
|
||||
fid: "",
|
||||
anzahl:1,
|
||||
teilgenommen: 0,
|
||||
remarks:"Bemerkung Nr {z}",
|
||||
abgesagt: 0,
|
||||
angemeldet: moment().format("YYYY-MM-DD")
|
||||
};
|
||||
|
||||
let aktualTln = {
|
||||
name:"",
|
||||
vorname:"",
|
||||
email:"",
|
||||
telefon:"",
|
||||
plz:"",
|
||||
stadt:"",
|
||||
strasse:"",
|
||||
fid: "",
|
||||
anzahl:1,
|
||||
teilgenommen: 0,
|
||||
remarks:"",
|
||||
abgesagt: 0,
|
||||
angemeldet: ""
|
||||
};
|
||||
|
||||
const mandatory = {
|
||||
name:true,
|
||||
vorname:false,
|
||||
email:true,
|
||||
telefon:false,
|
||||
plz:true,
|
||||
stadt:true,
|
||||
strasse:true,
|
||||
fid: false,
|
||||
anzahl:false,
|
||||
teilgenommen: false,
|
||||
remarks:false,
|
||||
abgesagt: false,
|
||||
angemeldet: true
|
||||
};
|
||||
|
||||
let allParticipants = [];
|
||||
let errtext = "";
|
||||
|
||||
|
||||
// Von der Datenbank Werte abholen
|
||||
// Param:
|
||||
// body: Object mit cmd und param
|
||||
// Return:
|
||||
// angeforderte Daten als JSON
|
||||
const fetchFromDbase = async (body) => {
|
||||
const response = await fetch(ajaxURL,{
|
||||
method: 'POST',
|
||||
headers: {'Content-Type': 'application/js'},
|
||||
body: JSON.stringify(body)
|
||||
});
|
||||
return await response.json();
|
||||
}
|
||||
|
||||
|
||||
// In die Datenbank Werte eintragen
|
||||
// Param:
|
||||
// body: Object mit cmd und param
|
||||
// Return:
|
||||
// angeforderte Daten als JSON
|
||||
const putToDbase = async (body) => {
|
||||
const response = await fetch(ajaxURL,{
|
||||
method: 'POST',
|
||||
headers: {'Content-Type': 'application/js'},
|
||||
body: JSON.stringify(body)
|
||||
});
|
||||
return await response.json();
|
||||
}
|
||||
|
||||
|
||||
// Beim Senden der Anmeldeseite die Nummer der Führung mit schicken
|
||||
$('form').submit((event) => {
|
||||
let nr = $('#ftermin').find(':selected');
|
||||
console.log('nr: ', nr[0].value);
|
||||
$('#fid').val(nr[0].value);
|
||||
});
|
||||
|
||||
|
||||
// zum Testen die Anmelde-Seite automatisch ausfüllen
|
||||
$('#autofillbutton').click(() => {
|
||||
let rand = Math.floor(Math.random() * 100);
|
||||
for (let f in dummyTln) {
|
||||
if (f=='fid') {
|
||||
continue;
|
||||
}
|
||||
let x = dummyTln[f].toString();
|
||||
aktualTln[f] = x.replace("{z}",rand);
|
||||
$('#'+f).val(x.replace("{z}",rand));
|
||||
}
|
||||
});
|
||||
|
||||
|
||||
// Aus dem rohen Führungsdatum von der Datenbank ein besser
|
||||
// leserliches Format erzeugen
|
||||
// Params:
|
||||
// w -> Wocjentag
|
||||
// d -> Datum in DBase-Format
|
||||
// t -> Uhrzeit
|
||||
// Return
|
||||
// neu formatierter Datums-String
|
||||
const bauDate = (w,d,t) => {
|
||||
let dd = d.replace(/^(\d{4})(\d{2})(\d{2})$/, '$3.$2.$1',);
|
||||
return w.substr(0,2) + ', ' + dd + ' ' + t;
|
||||
}
|
||||
|
||||
|
||||
// Aus der Datenbank die nächsten 'n' Führungsdaten holen und
|
||||
// in den <option>-Tags anzeigen.
|
||||
// Zusätzlich für jeden Tag zählen, wieviel schon angemeldet sind.
|
||||
// Sind es >= 10, dass diese <option> als "disbaled" markieren.
|
||||
// Die Anzahl der noch freien Plätze mit anzeigen
|
||||
async function buildfuehrungdates(n) {
|
||||
const dates = await fetchFromDbase({cmd:'GET_DATES',anzahl:n, fid:0});
|
||||
|
||||
str = "";
|
||||
for (let d of dates) {
|
||||
const count = await fetchFromDbase({cmd: 'GET_COUNTS', fid: d.fid});
|
||||
str += `<option ${count >= maxPersonen ? "disabled" : ""} ` +
|
||||
`value=${d.fid}> ${bauDate(d.weekday, d.date, d.time)} Frei: ${maxPersonen - count}</>`;
|
||||
}
|
||||
$('#fid').append(str);
|
||||
}
|
||||
|
||||
|
||||
// Mit der fid das Führungsdatum aus der DB holen und in leserliche
|
||||
// Form umsetzen
|
||||
// Params:
|
||||
// fid -> ID des Eintrages in der DB
|
||||
// Return
|
||||
// String mit dem Führungsdatum
|
||||
const getfdateformatted = async (fid) => {
|
||||
const nxd = await fetchFromDbase({cmd: 'GET_DATES', anzahl: 1, fid: fid});
|
||||
let newdate = bauDate(nxd[0].weekday, nxd[0].date, nxd[0].time);
|
||||
return newdate.replace(/(\d+) Uhr/, "um $1 Uhr");
|
||||
}
|
||||
|
||||
// Infomail über die Anmeldung bzw. Stornierung an rexfue@gmail.com senden
|
||||
// Parameters:
|
||||
// storno -> true: Stornierung, fals: Anmeldung
|
||||
const sendInfoMail = async(storno) => {
|
||||
const fdatum = await getfdateformatted(aktualTln.fid);
|
||||
const subj = storno ? "Stornierung einer Stern-Führung" : "Neue Anmeldung zu einer Stern-Führung";
|
||||
const ret = await putToDbase({
|
||||
cmd: 'SEND_INFO_MAIL',
|
||||
to: 'rexfue@gmail.com',
|
||||
subject: subj,
|
||||
body: '<html>' +
|
||||
'<body><table>' +
|
||||
'<tr><td>Name, Vorname</td><td style="text-align: right;">' + aktualTln.name + ', ' + aktualTln.vorname + '</td></tr>' +
|
||||
'<tr><td>Strasse</td><td style="text-align: right;">' + aktualTln.strasse + '</td></tr>' +
|
||||
'<tr><td>Ort</td><td style="text-align: right;">' + aktualTln.plz + ', ' + aktualTln.stadt + '</td></tr>' +
|
||||
'<tr><td>Telefon</td><td style="text-align: right;">' + aktualTln.telefon + '</td></tr>' +
|
||||
'<tr><td>E-mail</td><td style="text-align: right;">' + aktualTln.email + '</td></tr>' +
|
||||
'<tr><td>Termin</td><td style="text-align: right;">' + fdatum + '</td></tr>' +
|
||||
'<tr><td>Personen</td><td style="text-align: right;">' + aktualTln.anzahl + '</td></tr>' +
|
||||
'<tr><td>Bemerkungen</td><td class="fr">' + aktualTln.remarks + '</td></tr>' +
|
||||
'</table></body></html>'
|
||||
});
|
||||
}
|
||||
|
||||
|
||||
// Bestätigungsmail an den Anmeldeneden senden
|
||||
// Params:
|
||||
// storno -> true: Stornierung, fals: Anmeldung
|
||||
const sendConfirmation = async (storno) => {
|
||||
const fdatum = await getfdateformatted(aktualTln.fid);
|
||||
let body = "Sehr geehrte Dame, sehr geehrter Herr, \r\n\r\nhiermit bestätigen wir Ihre "
|
||||
body += storno ? "Stornierung der " : "";
|
||||
body += "Anmeldung zu der Führung auf der Sternwarte Welzheim am\r\n\r\n" +
|
||||
`${fdatum} für ${aktualTln.name} ${aktualTln.vorname} mit ${aktualTln.anzahl} ${aktualTln.anzahl==1?"Person.":"Personen."}` +
|
||||
"\r\n\r\n";
|
||||
if (!storno) {
|
||||
body +=
|
||||
"Bitte bringen Sie diese Bestätigung als Ausdruck oder digital zur Führung mit. \r\n" +
|
||||
"Ohne diese Bestätigung erfolgt ausnahmslos k e i n Einlass.\r\n\r\n" +
|
||||
"Falls Sie den Führungstermin absagen wollen, verwenden Sie bitte folgenden Link \r\n";
|
||||
body += develop == "true" ?
|
||||
"http://localhost:8082/anmeldung.php?storno=" :
|
||||
"https://sternwarte-welzheim.de/anmeldung.php?storno=";
|
||||
body += md5(aktualTln.email + aktualTln.fid) + "\n\r";
|
||||
body += "Die Führung findet NUR bei sternklarem Himmel statt. Falls der Himmel bedeckt ist \r\n" +
|
||||
"und die Führung ausfällt, bitten wir Sie um eine neue Anmeldung.\r\n\r\n" +
|
||||
"Die Hygienevorschriften sind zu beachten: Die Teilnehmer/-innen müssen Gesichtsmasken \r\n" +
|
||||
"tragen und den vorgeschriebenen Abstand halten. " +
|
||||
"Nicht teilnehmen dürfen Personen, \r\ndie in den letzten vierzehn Tagen Kontakt " +
|
||||
"mit einem Coronavirus-Infizierten \r\nhatten oder Infektionssymptome zeigen.\r\n\r\n";
|
||||
}
|
||||
body += "Mit freundlichen Grüßen\r\n\r\n" +
|
||||
"Beobachterteam der Sternwarte Welzheim\r\n\r\n" +
|
||||
"www.sternwarte-welzheim.de"
|
||||
const ret = await putToDbase({
|
||||
cmd: 'SEND_MAIL',
|
||||
to: aktualTln.email,
|
||||
subject: storno ?
|
||||
"Stornierung Ihrer Anmeldung zu einer Führung auf der Sternwarte Welzheim" :
|
||||
"Anmeldung zu einer Führung auf der Sternwarte Welzheim",
|
||||
body: body,
|
||||
});
|
||||
console.log("hier wird die Email gesendet");
|
||||
sendInfoMail(storno);
|
||||
}
|
||||
|
||||
|
||||
// MD5-Hash ausrechnen
|
||||
const md5 = (value) => {
|
||||
return CryptoJS.MD5(value).toString();
|
||||
}
|
||||
|
||||
|
||||
// Den neuen Teilnehmer in die DB eintragen
|
||||
const insertEntry = async () => {
|
||||
let ret = await putToDbase({cmd: 'INSERT_TLN', data: aktualTln})
|
||||
sendConfirmation(false);
|
||||
}
|
||||
|
||||
|
||||
// Den Teilnehmer mit der ID id aus der DB löschen
|
||||
const deleteEntry = async (id) => {
|
||||
let ret = await putToDbase({cmd: 'DELETE_TLN', id:id});
|
||||
return ret;
|
||||
}
|
||||
|
||||
|
||||
// Den Teilnehmer mit der ID id mit den neuen Daten versorgen
|
||||
const updateEntry = async (id) => {
|
||||
let ret = await putToDbase({cmd: 'UPDATE_TLN', data: aktualTln, id: id })
|
||||
sendConfirmation(false);
|
||||
}
|
||||
|
||||
|
||||
// Dialogbox für 'doppelt eingetragen'
|
||||
$("#dialogdoppelt").dialog({
|
||||
dialogClass: 'no-close',
|
||||
autoOpen: false,
|
||||
closeOnEscape: false,
|
||||
width: 700,
|
||||
modal: true,
|
||||
position: 'center',
|
||||
title: 'Doppelter Eintrag',
|
||||
open: () => {
|
||||
showdoppelText();
|
||||
},
|
||||
buttons: [
|
||||
{
|
||||
text: 'Auswahl übernehmen',
|
||||
click: async function() {
|
||||
let gewaehlt = [];
|
||||
$.each($("input[name='dopp']:checked"), function() {
|
||||
gewaehlt.push($(this).val());
|
||||
});
|
||||
let tln = $("#dialogdoppelt").data('fids').otln;
|
||||
if (gewaehlt.length === 1) {
|
||||
if (gewaehlt[0] == "new") {
|
||||
deleteEntry($("#dialogdoppelt").data('fids').otln.id);
|
||||
insertEntry();
|
||||
tln = $("#dialogdoppelt").data('fids').ntln;
|
||||
}
|
||||
} else {
|
||||
insertEntry();
|
||||
tln = $("#dialogdoppelt").data('fids').ntln;
|
||||
}
|
||||
$(this).dialog('close');
|
||||
let meld = await afterDialogtext(tln);
|
||||
$('#mainContent').html(meld);
|
||||
$('#mainContent').css('height','430px');
|
||||
}
|
||||
}
|
||||
]
|
||||
}).prev(".ui-dialog-titlebar").css("background","red");
|
||||
|
||||
|
||||
// Der Eintrag wird jetzt doppelt: dieses melden in einer
|
||||
// kleinen Dialog-Box
|
||||
function showDoppelt(oldone, newone) {
|
||||
$('#dialogdoppelt').data('fids', {otln: oldone, ntln: newone}).dialog('open');
|
||||
|
||||
}
|
||||
|
||||
|
||||
// Text für doppelten Eintrag anzeigen
|
||||
async function showdoppelText() {
|
||||
const ofdate = await fetchFromDbase({
|
||||
cmd: 'GET_ONE_DATE',
|
||||
fid: $("#dialogdoppelt").data('fids').otln.fid
|
||||
});
|
||||
const nfdate = await fetchFromDbase({
|
||||
cmd: 'GET_ONE_DATE',
|
||||
fid: $("#dialogdoppelt").data('fids').ntln.fid
|
||||
});
|
||||
$('#dialogdoppelttext').html('Sie haben sich doppelt eingetragen.<br />' +
|
||||
'Wenn das so gewollt ist, dann kreuzen Sie bitte unten beide Führungen an,<br />' +
|
||||
'andernfalls nur diejenige, an der Sie wirklich teilnehmen wollen.<br /> <br />' +
|
||||
'<input type="checkbox" name="dopp" value="new" checked style="margin-right:10px;">' +
|
||||
bauDate(nfdate.wtag, nfdate.datum, nfdate.uhrzeit) + '<br />' +
|
||||
'<input type="checkbox" value="old" name="dopp" style="margin-right:10px;">' +
|
||||
bauDate(ofdate.wtag, ofdate.datum, ofdate.uhrzeit) + '<br />');
|
||||
}
|
||||
|
||||
const errnum = {'no':1, 'error':2, 'double':3};
|
||||
|
||||
|
||||
// Alle Einträge auf Plausibilität prüfen
|
||||
// Return:
|
||||
// Object mit:
|
||||
// error: 'true', 'false'
|
||||
// action: 'store', 'exit', 'none'
|
||||
async function checkPlausibilität() {
|
||||
let error = false;
|
||||
// Zuerst prüfen, ob auch alle notwendigen Felder ausgefüllt sind
|
||||
for (let feld in aktualTln) {
|
||||
aktualTln[feld] = $('#' + feld).val(); // Feld des actualTln auf dem Wert setzen
|
||||
if (!mandatory[feld]) {
|
||||
continue;
|
||||
}
|
||||
if (aktualTln[feld] == "") { // Falls das Feld leer ist, den Rahmen
|
||||
$('#' + feld).css('border-color', 'red'); // rot machen und das
|
||||
error = true; // errorfralg setzen
|
||||
}
|
||||
}
|
||||
if (error) { // wenn Error, dieses melden
|
||||
errtext = "Bitte korrigieren Sie die fehlenden Einträge in den rot umrandeten Feldern";
|
||||
return errnum.error; // und raus
|
||||
}
|
||||
// Als Nächstes die PLZ prüfen: Das müssen 5 Ziffern sein
|
||||
const plz = $('#plz').val();
|
||||
let re = RegExp(/^[0-9]{5}$/);
|
||||
if(!re.test(plz)) {
|
||||
$('#plz').css('border-color', 'red');
|
||||
errtext = "Bitte geben Sie bei der Postleitzahl mindestens fünf Ziffern und keine Buchstaben ein";
|
||||
return errnum.error; // und raus
|
||||
}
|
||||
// Die Email prüfen
|
||||
re = RegExp(/^[a-z0-9]+([-_\.]?[a-z0-9])+@[a-z0-9]+([-_\.]?[a-z0-9])+\.[a-z]{2,4}/);
|
||||
let mail = $('#email').val().toLowerCase();
|
||||
if(!re.test(mail)) {
|
||||
$('#email').css('border-color', 'red');
|
||||
errtext = "Bitte geben Sie eine gültige E-Mail-Adresse ein";
|
||||
return errnum.error; // und raus
|
||||
}
|
||||
// Nun noch doppelte Einträge checken
|
||||
// dazu prüfen, ob die email_Adresse in den Teilnehmern schon enthalten ist
|
||||
const aktMail = aktualTln.email;
|
||||
let allParticipants = await fetchAlleTln();
|
||||
const find = allParticipants.findIndex((f) => f.email === aktMail);
|
||||
if (find == -1) {
|
||||
insertEntry();
|
||||
return errnum.no;
|
||||
}
|
||||
let oldTln = allParticipants[find];
|
||||
// Email enthalten. Ist der Führungstag identisch? Wenn ja, dann einfach die neuen
|
||||
// Werte eintragen (also überschreiben)
|
||||
if (aktualTln.fid === oldTln.fid) {
|
||||
updateEntry(oldTln.id);
|
||||
return errnum.no;
|
||||
} else {
|
||||
// Hier nun 'Doppelt' melden
|
||||
showDoppelt(oldTln, aktualTln);
|
||||
return errnum.double;
|
||||
}
|
||||
return errnum.no;
|
||||
}
|
||||
|
||||
|
||||
// Text für den Dialog der Anmeldung
|
||||
const afterDialogtext = async(tln) => {
|
||||
let fdate = await getfdateformatted(tln.fid);
|
||||
return '<p>Vielen Dank für Ihre Anmeldung. <br /><br />' +
|
||||
'Wir freuen uns über Ihren Besuch auf der Sternwarte Welzheim am<br /> ' +
|
||||
'<div id="antwort_fdatum" style="text-align:center;">' +
|
||||
`${fdate} mit ${tln.anzahl} ${tln.anzahl == 1 ? "Person" : "Personen"}` +
|
||||
'</div> <br />' +
|
||||
'Wir haben Ihnen die Anmelde-Bestätigung per Email zugesandt.</p>' +
|
||||
'<p><a class="button" href="/index.php">Zurück</a></p>';
|
||||
}
|
||||
|
||||
|
||||
// Formular ist ausgefüllt - der Anmelde-Knopf wurde gerdückt.
|
||||
// Alle Eingaben in den aktuelTln eintragen und dann
|
||||
// eine Plausibilitäts-Prüfung durchführen und wenn Alles
|
||||
// OK ist, die Einträge in die Datenbank schreiben
|
||||
$('input[name="submit"]').click(async () => {
|
||||
$('#errordiv').css('visibility','hidden'); // erst mal die evtl. vorhandenen Fehlermeldung
|
||||
for ( let f in aktualTln) { // löschen und alle Rahmen
|
||||
$('#'+f).css('border-color','black'); // wieder schwarz machen
|
||||
}
|
||||
let nr = $('#fid').find(':selected');
|
||||
aktualTln.fid = nr[0].value; // selektiertes Führungsdatum merken
|
||||
const ret = await checkPlausibilität();
|
||||
if (ret === errnum.error) {
|
||||
$('#errordiv').html(errtext);
|
||||
$('#errordiv').css('visibility', 'visible');
|
||||
} else if (ret === errnum.no) {
|
||||
let meld = await afterDialogtext(aktualTln);
|
||||
$('#mainContent').html(meld);
|
||||
$('#mainContent').css('height','430px');
|
||||
}
|
||||
});
|
||||
|
||||
|
||||
// Storno
|
||||
// Der Link für die Stornierung wurde aufgerufen:
|
||||
// Zuerst die email-Adresse suchen (mit Hilfe des übergebenen md5-hash),
|
||||
// dann die Stornierung anzeigen und dann noch eine Bestätigung senden
|
||||
const doStorno = async(md5hash) => {
|
||||
let emails = await fetchFromDbase({cmd:'GET_ALL_EMAILS'});
|
||||
for (let em of emails) {
|
||||
if(md5((em.email+em.fid)) == md5hash) {
|
||||
// komplette Info dieses teilnehmers holen
|
||||
let teilnehmer = await fetchFromDbase({cmd: 'GET_TEILN', id: em.id, isid: true});
|
||||
aktualTln = Object.assign({}, teilnehmer[0]);
|
||||
// Löschen des Eintrages
|
||||
let ret = putToDbase({cmd:'DELETE_TLN', id: em.id});
|
||||
// Meldung anzeigen
|
||||
let fdate = await getfdateformatted(em.fid);
|
||||
let meld = '<p><h1 style="text-align:center">Stornierung</h1><br />' +
|
||||
'Ihre Anmeldung für die Führung auf der Sternwarte Welzheim am<br /><br />' +
|
||||
'<div id="antwort_fdatum" style="text-align:center;">' +
|
||||
`${fdate} mit ${aktualTln.anzahl} ${aktualTln.anzahl == 1 ? "Person" : "Personen"}` +
|
||||
'</div> <br />' +
|
||||
'wurde storniert.<br /><br /> Wir haben Ihnen die Stornierungs-Bestätigung per Email zugesandt.</p>' +
|
||||
'<p><a class="button" href="/index.php">Zurück</a></p>';
|
||||
$('#mainContent').html(meld);
|
||||
$('#mainContent').css('height','430px');
|
||||
sendConfirmation(true);
|
||||
return;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Alle eingetragenen Teilnehmer ab 'morgen' in das globale Array einlesen
|
||||
const fetchAlleTln = async () => {
|
||||
const nxtDate = await fetchFromDbase({cmd: 'GET_DATES', anzahl: 1, fid:0});
|
||||
return await fetchFromDbase({cmd: 'GET_ALLTEILN', fid: nxtDate[0].fid});
|
||||
}
|
||||
|
||||
|
||||
async function main() {
|
||||
// Falls Storno angefordert, dann anzeigen
|
||||
if(md5Hash != "") {
|
||||
await doStorno(md5Hash);
|
||||
return;
|
||||
}
|
||||
// Alle eingetragenen Teilnehmer ab 'morgen' in das globale Array einlesen
|
||||
// die nächste 30 Führungsdaten anzeigen
|
||||
buildfuehrungdates(30);
|
||||
}
|
||||
|
||||
main().catch(console.err);
|
||||
|
||||
});
|
||||
7
html/sternwarte/javascript/bootstrap.min.js
vendored
Normal file
7
html/sternwarte/javascript/bootstrap.min.js
vendored
Normal file
File diff suppressed because one or more lines are too long
40
html/sternwarte/javascript/index.js
Normal file
40
html/sternwarte/javascript/index.js
Normal file
@@ -0,0 +1,40 @@
|
||||
// Javascript-Part für index.php (Home-Page)
|
||||
(async function() {
|
||||
const url = 'DB4js.php';
|
||||
|
||||
console.log("komme in das Script");
|
||||
|
||||
// Von der Datenbank Werte abholen
|
||||
// Param:
|
||||
// body: Object mit cmd und param
|
||||
// Return:
|
||||
// angeforderte Daten als JSON
|
||||
const fetchFromDbase = async (body) => {
|
||||
const response = await fetch(url, {
|
||||
method: 'POST',
|
||||
headers: {'Content-Type': 'application/js'},
|
||||
body: JSON.stringify(body)
|
||||
});
|
||||
return await response.json();
|
||||
}
|
||||
|
||||
let maintenance = await fetchFromDbase({cmd: 'GET_MAINT'});
|
||||
|
||||
let dialogMaint = $('#maint').dialog({
|
||||
autoOpen: false,
|
||||
open: function () {
|
||||
$(this).load('maintenance.html', function () {
|
||||
});
|
||||
},
|
||||
width: 700,
|
||||
height: 200,
|
||||
modal: true,
|
||||
resizable: false,
|
||||
position: {my: 'center top+30%', at: 'center top+20%'},
|
||||
});
|
||||
|
||||
if (maintenance == true) {
|
||||
dialogMaint.dialog('open');
|
||||
}
|
||||
|
||||
})();
|
||||
184
html/sternwarte/javascript/index.php
Executable file
184
html/sternwarte/javascript/index.php
Executable file
@@ -0,0 +1,184 @@
|
||||
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
||||
|
||||
<html xmlns="http://www.w3.org/1999/xhtml">
|
||||
|
||||
<head>
|
||||
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
|
||||
|
||||
<title>Sternwarte Welzheim</title>
|
||||
|
||||
<!--[if IE 5]>
|
||||
|
||||
<link href="css/ie5.css" rel="stylesheet" type="text/css" />
|
||||
|
||||
<![endif]--><!--[if IE]>
|
||||
|
||||
<style type="text/css">
|
||||
|
||||
<link href="css/ie.css" rel="stylesheet" type="text/css" />
|
||||
|
||||
</style>
|
||||
|
||||
<![endif]-->
|
||||
|
||||
<link href="css/sternwarte1.css" rel="stylesheet" type="text/css" />
|
||||
|
||||
<script type="text/javascript" src="/javascript/jquery.js"></script>
|
||||
|
||||
<link rel="stylesheet" href="/css/prettyPhoto.css" type="text/css" media="screen" charset="utf-8" />
|
||||
|
||||
<script src="/javascript/jquery.prettyPhoto.js" type="text/javascript" charset="utf-8"></script>
|
||||
|
||||
<script type="text/javascript" charset="utf-8">
|
||||
|
||||
$(document).ready(function(){
|
||||
|
||||
$("a[rel^='prettyPhoto']").prettyPhoto({
|
||||
|
||||
animationSpeed: 'normal', /* fast/slow/normal */
|
||||
|
||||
padding: 20, /* padding for each side of the picture */
|
||||
|
||||
opacity: 1, /* Value betwee 0 and 1 */
|
||||
|
||||
showTitle: false, /* true/false */
|
||||
|
||||
allowresize: true, /* true/false */
|
||||
|
||||
counter_separator_label: '/', /* The separator for the gallery counter 1 "of" 2 */
|
||||
|
||||
theme: 'dark_rounded', /* light_rounded / dark_rounded / light_square / dark_square */
|
||||
|
||||
callback: function(){}
|
||||
|
||||
});
|
||||
|
||||
});
|
||||
|
||||
</script>
|
||||
|
||||
|
||||
|
||||
</head>
|
||||
|
||||
|
||||
|
||||
<body class="thrColFixHdr">
|
||||
|
||||
|
||||
|
||||
<div id="container">
|
||||
|
||||
<?php include 'header.php'; ?>
|
||||
|
||||
<?php include 'navi.php'; ?>
|
||||
|
||||
<div id="sidebar2">
|
||||
|
||||
<?php include 'fdatum.php'; ?>
|
||||
|
||||
<?php include 'himmelerg.php'; ?>
|
||||
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
<div id="mainContent">
|
||||
|
||||
<h1>Willkommen auf der Seite der Sternwarte Welzheim!</h1>
|
||||
|
||||
<p><img src="bilder/sternwarte_winter1.jpg" width="320" height="209" alt="Sternwarte Welzheim " class="fltlft" />Die Beobachtung des Sternenhimmels ist von unseren lichtüberfluteten Städten aus kaum mehr möglich. Die Staub und Dunstglocken und der Lichtstrom künstlicher Beleuchtung haben in den letzten Jahren stark zugenommen. </p>
|
||||
|
||||
<p> Bedingt durch diese Umweltemissionen ist die Aufhellung des Nachthimmels enorm angestiegen und beeinträchtigt astronomische Beobachtungen erheblich.<br />
|
||||
|
||||
<br />
|
||||
|
||||
<a href="sternwarte.php" class="textklein90">weiter
|
||||
|
||||
...</a><br />
|
||||
|
||||
<br />
|
||||
|
||||
</p>
|
||||
|
||||
|
||||
|
||||
<hr />
|
||||
|
||||
<!-- <h1><strong>Venustransit am 5./6. Juni 2012 -</strong> Sonderführung auf der Sternwarte Welzheim</h1>
|
||||
<p><img src="bilder/aktuell/venustransit2012.jpg" width="320" height="320" class="fltlft" />In der Nacht vom 5. auf 6. Juni 2012 findet das seltene Himmelsschauspiel eines Venustransits statt. Unser Nachbarplanet überholt die Erde auf der Innenbahn. </p>
|
||||
<p>Zur Beobachtung dieses seltenen Ereignisses bietet die Sternwarte Welzheim am Mittwoch,
|
||||
6. Juni 2012 eine Sonderführung an. Interessierte Beobachter treffen sich um 5:20 Uhr am Parkplatz der Sternwarte. </p>
|
||||
<p><a href='venustransit.php' class="textklein90">mehr</a><br />
|
||||
<br />
|
||||
<br />
|
||||
<br />
|
||||
<br />
|
||||
<br />
|
||||
<br />
|
||||
<br />
|
||||
<br />
|
||||
|
||||
<hr />-->
|
||||
|
||||
|
||||
|
||||
<h1>Allsky- und Wettercam an der Sternwarte Welzheim</h1>
|
||||
|
||||
<p><a href='http://www.gfpw.org/skycam/allsky.jpg' rel="prettyPhoto[sky]" title="Aktuelles Bild Allskycam an der Sternwarte Welzheim"><img src="http://www.gfpw.org/skycam/skythumb.jpg" alt="Allskycam Sternwarte Welzheim" width="320" height="240" class="fltlft" /></a>Sie sind sich nicht sicher, ob eine Führung in Welzheim stattfinden wird, weil bei Ihnen zu Hause der Himmel noch bedeckt ist. Mit unserer Allsky- Wettercam können Sie feststellen wie die Wolkenlage an der Sternwarte ist. <br />
|
||||
|
||||
<br />
|
||||
|
||||
<a href='http://www.gfpw.org/skycam/allsky.jpg' rel="prettyPhoto[pw]" title="Aktuelles Bild Allskycam an der Sternwarte Welzheim" class="textklein90">zur aktuellen Großansicht der Bildes</a></p>
|
||||
|
||||
<p> </p>
|
||||
|
||||
<p><br />
|
||||
|
||||
<br />
|
||||
|
||||
<br />
|
||||
|
||||
<br />
|
||||
|
||||
<br />
|
||||
|
||||
</p>
|
||||
|
||||
|
||||
|
||||
<!-- <hr />
|
||||
|
||||
|
||||
|
||||
<h1>Partielle Sonnenfinsternis am 4. Januar</h1>
|
||||
|
||||
<img src="bilder/sofi201101/sofi_start.jpg" alt="Sternwarte Welzheim im Winter" width="320" height="200" class="fltlft" />Gleich zu Beginn des neuen Jahres bot uns der Himmel ein spannendes Ereignis. Am Dienstag, 4. Januar 2011 fand eine partielle Sonnenfinsternis statt, die von Deutschland aus fast in ihrer gesamten Länge in den Morgenstunden zu verfolgen war. <br />
|
||||
|
||||
<br />
|
||||
|
||||
<a href="sofi2011.php" class="textklein90"> weitere Bilder der Sonnenfinsternis
|
||||
|
||||
..</a>--><br class="clear" />
|
||||
|
||||
|
||||
|
||||
<p> </p>
|
||||
|
||||
<!-- end #mainContent --></div>
|
||||
|
||||
<!-- Dieses clear-Element sollte direkt auf das #mainContent-div folgen, um das #container-div anzuweisen, alle untergeordneten Floats aufzunehmen. -->
|
||||
|
||||
<br class="clearfloat" />
|
||||
|
||||
<!-- end #container -->
|
||||
|
||||
</div>
|
||||
|
||||
</body>
|
||||
|
||||
</html>
|
||||
|
||||
|
||||
|
||||
9
html/sternwarte/javascript/initprettyphoto.js
Normal file
9
html/sternwarte/javascript/initprettyphoto.js
Normal file
@@ -0,0 +1,9 @@
|
||||
$(document).ready(function () {
|
||||
$("a[rel^='prettyPhoto']").prettyPhoto({
|
||||
animationSpeed: 'normal', /* fast/slow/normal */
|
||||
opacity: 1, /* Value betwee 0 and 1 */// show_title: true, /* true/false */
|
||||
allow_resize: false, /* true/false */
|
||||
theme: 'dark_square', /* light_rounded / dark_rounded / light_square / dark_square */
|
||||
social_tools:''
|
||||
});
|
||||
});
|
||||
4
html/sternwarte/javascript/jquery-1.11.0.min.js
vendored
Normal file
4
html/sternwarte/javascript/jquery-1.11.0.min.js
vendored
Normal file
File diff suppressed because one or more lines are too long
6
html/sternwarte/javascript/jquery-ui-1.10.0.custom.min.js
vendored
Normal file
6
html/sternwarte/javascript/jquery-ui-1.10.0.custom.min.js
vendored
Normal file
File diff suppressed because one or more lines are too long
1
html/sternwarte/javascript/jquery.js
vendored
Symbolic link
1
html/sternwarte/javascript/jquery.js
vendored
Symbolic link
@@ -0,0 +1 @@
|
||||
jquery-1.11.0.min.js
|
||||
7
html/sternwarte/javascript/jquery.prettyPhoto.js
Normal file
7
html/sternwarte/javascript/jquery.prettyPhoto.js
Normal file
File diff suppressed because one or more lines are too long
562
html/sternwarte/javascript/jquery.prettyPhoto_2.4.2.js
Normal file
562
html/sternwarte/javascript/jquery.prettyPhoto_2.4.2.js
Normal file
@@ -0,0 +1,562 @@
|
||||
/* ------------------------------------------------------------------------
|
||||
Class: prettyPhoto
|
||||
Use: Lightbox clone for jQuery
|
||||
Author: Stephane Caron (http://www.no-margin-for-errors.com)
|
||||
Version: 2.4.2
|
||||
------------------------------------------------------------------------- */
|
||||
|
||||
var $pp_pic_holder;
|
||||
var $ppt;
|
||||
|
||||
(function($) {
|
||||
$.fn.prettyPhoto = function(settings) {
|
||||
// global Variables
|
||||
var doresize = true;
|
||||
var percentBased = false;
|
||||
var imagesArray = [];
|
||||
var setPosition = 0; /* Position in the set */
|
||||
var pp_contentHeight;
|
||||
var pp_contentWidth;
|
||||
var pp_containerHeight;
|
||||
var pp_containerWidth;
|
||||
var pp_type = 'image';
|
||||
|
||||
// Global elements
|
||||
var $caller;
|
||||
var $scrollPos = _getScroll();
|
||||
|
||||
// Fallback to a supported theme for IE6
|
||||
if($.browser.msie && $.browser.version == 6 && (settings.theme == 'light_rounded' || settings.theme == 'dark_rounded' || settings.theme == 'dark_square')){
|
||||
settings.theme = "light_square";
|
||||
}
|
||||
|
||||
$(window).scroll(function(){ $scrollPos = _getScroll(); _centerPicture(); });
|
||||
$(window).resize(function(){ _centerPicture(); _resizeOverlay(); });
|
||||
$(document).keypress(function(e){
|
||||
switch(e.keyCode){
|
||||
case 37:
|
||||
if (setPosition == 1) return;
|
||||
changePicture('previous');
|
||||
break;
|
||||
case 39:
|
||||
if (setPosition == setCount) return;
|
||||
changePicture('next');
|
||||
break;
|
||||
case 27:
|
||||
close();
|
||||
break;
|
||||
};
|
||||
});
|
||||
|
||||
|
||||
settings = jQuery.extend({
|
||||
animationSpeed: 'normal', /* fast/slow/normal */
|
||||
padding: 20, /* padding for each side of the picture */
|
||||
opacity: 0, /* Value between 0 and 1 */
|
||||
showTitle: false, /* true/false */
|
||||
allowresize: true, /* true/false */
|
||||
counter_separator_label: '/', /* The separator for the gallery counter 1 "of" 2 */
|
||||
theme: 'dark_square', /* light_rounded / dark_rounded / light_square / dark_square */
|
||||
callback: function(){}
|
||||
}, settings);
|
||||
|
||||
$(this).each(function(){
|
||||
var hasTitle = false;
|
||||
var isSet = false;
|
||||
var setCount = 0; /* Total images in the set */
|
||||
var arrayPosition = 0; /* Total position in the array */
|
||||
|
||||
imagesArray[imagesArray.length] = this;
|
||||
$(this).bind('click',function(){
|
||||
open(this);
|
||||
return false;
|
||||
});
|
||||
});
|
||||
|
||||
function open(el) {
|
||||
$caller = $(el);
|
||||
|
||||
// Find out if the picture is part of a set
|
||||
theRel = $caller.attr('rel');
|
||||
galleryRegExp = /\[(?:.*)\]/;
|
||||
theGallery = galleryRegExp.exec(theRel);
|
||||
|
||||
// Calculate the number of items in the set, and the position of the clicked picture.
|
||||
isSet = false;
|
||||
setCount = 0;
|
||||
|
||||
_getFileType();
|
||||
|
||||
for (i = 0; i < imagesArray.length; i++){
|
||||
if($(imagesArray[i]).attr('rel').indexOf(theGallery) != -1){
|
||||
setCount++;
|
||||
if(setCount > 1) isSet = true;
|
||||
|
||||
if($(imagesArray[i]).attr('href') == $caller.attr('href')){
|
||||
setPosition = setCount;
|
||||
arrayPosition = i;
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
_buildOverlay();
|
||||
|
||||
// Display the current position
|
||||
$pp_pic_holder.find('p.currentTextHolder').text(setPosition + settings.counter_separator_label + setCount);
|
||||
|
||||
// Position the picture in the center of the viewing area
|
||||
_centerPicture();
|
||||
|
||||
$('#pp_full_res').hide();
|
||||
$pp_pic_holder.find('.pp_loaderIcon').show();
|
||||
};
|
||||
|
||||
showimage = function(width,height,containerWidth,containerHeight,contentHeight,contentWidth,resized){
|
||||
$('.pp_loaderIcon').hide();
|
||||
|
||||
if($.browser.opera) {
|
||||
windowHeight = window.innerHeight;
|
||||
windowWidth = window.innerWidth;
|
||||
}else{
|
||||
windowHeight = $(window).height();
|
||||
windowWidth = $(window).width();
|
||||
};
|
||||
|
||||
$pp_pic_holder.find('.pp_content').animate({'height':contentHeight},settings.animationSpeed);
|
||||
|
||||
projectedTop = $scrollPos['scrollTop'] + ((windowHeight/2) - (containerHeight/2));
|
||||
if(projectedTop < 0) projectedTop = 0 + $pp_pic_holder.find('.ppt').height();
|
||||
|
||||
// Resize the holder
|
||||
$pp_pic_holder.animate({
|
||||
'top': projectedTop,
|
||||
'left': ((windowWidth/2) - (containerWidth/2)),
|
||||
'width': containerWidth
|
||||
},settings.animationSpeed,function(){
|
||||
$pp_pic_holder.width(containerWidth);
|
||||
$pp_pic_holder.find('.pp_hoverContainer,#fullResImage').height(height).width(width);
|
||||
|
||||
// Fade the new image
|
||||
$pp_pic_holder.find('#pp_full_res').fadeIn(settings.animationSpeed,function(){
|
||||
$(this).find('object,embed').css('visibility','visible');
|
||||
});
|
||||
|
||||
// Show the nav elements
|
||||
_showContent();
|
||||
|
||||
// Fade the resizing link if the image is resized
|
||||
if(resized) $('a.pp_expand,a.pp_contract').fadeIn(settings.animationSpeed);
|
||||
});
|
||||
};
|
||||
|
||||
function _showContent(){
|
||||
// Show the nav
|
||||
if(isSet && pp_type=="image") { $pp_pic_holder.find('.pp_hoverContainer').fadeIn(settings.animationSpeed); }else{ $pp_pic_holder.find('.pp_hoverContainer').hide(); }
|
||||
$pp_pic_holder.find('.pp_details').fadeIn(settings.animationSpeed);
|
||||
|
||||
// Show the title
|
||||
if(settings.showTitle && hasTitle){
|
||||
$ppt.css({
|
||||
'top' : $pp_pic_holder.offset().top - 22,
|
||||
'left' : $pp_pic_holder.offset().left + (settings.padding/2),
|
||||
'display' : 'none'
|
||||
});
|
||||
|
||||
$ppt.fadeIn(settings.animationSpeed);
|
||||
};
|
||||
}
|
||||
|
||||
function _hideContent(){
|
||||
// Fade out the current picture
|
||||
$pp_pic_holder.find('.pp_hoverContainer,.pp_details').fadeOut(settings.animationSpeed);
|
||||
$pp_pic_holder.find('#pp_full_res object,#pp_full_res embed').css('visibility','hidden');
|
||||
$pp_pic_holder.find('#pp_full_res').fadeOut(settings.animationSpeed,function(){
|
||||
$('.pp_loaderIcon').show();
|
||||
|
||||
// Preload the image
|
||||
_preload();
|
||||
});
|
||||
|
||||
// Hide the title
|
||||
$ppt.fadeOut(settings.animationSpeed);
|
||||
}
|
||||
|
||||
function changePicture(direction){
|
||||
if(direction == 'previous') {
|
||||
arrayPosition--;
|
||||
setPosition--;
|
||||
}else{
|
||||
arrayPosition++;
|
||||
setPosition++;
|
||||
};
|
||||
|
||||
// Allow the resizing of the images
|
||||
if(!doresize) doresize = true;
|
||||
|
||||
_hideContent();
|
||||
$('a.pp_expand,a.pp_contract').fadeOut(settings.animationSpeed,function(){
|
||||
$(this).removeClass('pp_contract').addClass('pp_expand');
|
||||
});
|
||||
};
|
||||
|
||||
function close(){
|
||||
$pp_pic_holder.find('object,embed').css('visibility','hidden');
|
||||
|
||||
$('div.pp_pic_holder,div.ppt').fadeOut(settings.animationSpeed);
|
||||
|
||||
$('div.pp_overlay').fadeOut(settings.animationSpeed, function(){
|
||||
$('div.pp_overlay,div.pp_pic_holder,div.ppt').remove();
|
||||
|
||||
// To fix the bug with IE select boxes
|
||||
if($.browser.msie && $.browser.version == 6){
|
||||
$('select').css('visibility','visible');
|
||||
};
|
||||
|
||||
settings.callback();
|
||||
});
|
||||
|
||||
doresize = true;
|
||||
};
|
||||
|
||||
function _checkPosition(){
|
||||
// If at the end, hide the next link
|
||||
if(setPosition == setCount) {
|
||||
$pp_pic_holder.find('a.pp_next').css('visibility','hidden');
|
||||
$pp_pic_holder.find('a.pp_arrow_next').addClass('disabled').unbind('click');
|
||||
}else{
|
||||
$pp_pic_holder.find('a.pp_next').css('visibility','visible');
|
||||
$pp_pic_holder.find('a.pp_arrow_next.disabled').removeClass('disabled').bind('click',function(){
|
||||
changePicture('next');
|
||||
return false;
|
||||
});
|
||||
};
|
||||
|
||||
// If at the beginning, hide the previous link
|
||||
if(setPosition == 1) {
|
||||
$pp_pic_holder.find('a.pp_previous').css('visibility','hidden');
|
||||
$pp_pic_holder.find('a.pp_arrow_previous').addClass('disabled').unbind('click');
|
||||
}else{
|
||||
$pp_pic_holder.find('a.pp_previous').css('visibility','visible');
|
||||
$pp_pic_holder.find('a.pp_arrow_previous.disabled').removeClass('disabled').bind('click',function(){
|
||||
changePicture('previous');
|
||||
return false;
|
||||
});
|
||||
};
|
||||
|
||||
// Change the current picture text
|
||||
$pp_pic_holder.find('p.currentTextHolder').text(setPosition + settings.counter_separator_label + setCount);
|
||||
|
||||
$caller = (isSet) ? $(imagesArray[arrayPosition]) : $caller;
|
||||
_getFileType();
|
||||
|
||||
if($caller.attr('title')){
|
||||
$pp_pic_holder.find('.pp_description').show().html(unescape($caller.attr('title')));
|
||||
}else{
|
||||
$pp_pic_holder.find('.pp_description').hide().text('');
|
||||
};
|
||||
|
||||
if($caller.find('img').attr('alt') && settings.showTitle){
|
||||
hasTitle = true;
|
||||
$ppt.html(unescape($caller.find('img').attr('alt')));
|
||||
}else{
|
||||
hasTitle = false;
|
||||
};
|
||||
};
|
||||
|
||||
function _fitToViewport(width,height){
|
||||
hasBeenResized = false;
|
||||
|
||||
_getDimensions(width,height);
|
||||
|
||||
// Define them in case there's no resize needed
|
||||
imageWidth = width;
|
||||
imageHeight = height;
|
||||
|
||||
windowHeight = $(window).height();
|
||||
windowWidth = $(window).width();
|
||||
|
||||
if( ((pp_containerWidth > windowWidth) || (pp_containerHeight > windowHeight)) && doresize && settings.allowresize && !percentBased) {
|
||||
hasBeenResized = true;
|
||||
notFitting = true;
|
||||
|
||||
while (notFitting){
|
||||
if((pp_containerWidth > windowWidth)){
|
||||
imageWidth = (windowWidth - 200);
|
||||
imageHeight = (height/width) * imageWidth;
|
||||
}else if((pp_containerHeight > windowHeight)){
|
||||
imageHeight = (windowHeight - 200);
|
||||
imageWidth = (width/height) * imageHeight;
|
||||
}else{
|
||||
notFitting = false;
|
||||
};
|
||||
|
||||
pp_containerHeight = imageHeight;
|
||||
pp_containerWidth = imageWidth;
|
||||
};
|
||||
|
||||
_getDimensions(imageWidth,imageHeight);
|
||||
};
|
||||
|
||||
return {
|
||||
width:imageWidth,
|
||||
height:imageHeight,
|
||||
containerHeight:pp_containerHeight,
|
||||
containerWidth:pp_containerWidth,
|
||||
contentHeight:pp_contentHeight,
|
||||
contentWidth:pp_contentWidth,
|
||||
resized:hasBeenResized
|
||||
};
|
||||
};
|
||||
|
||||
function _getDimensions(width,height){
|
||||
$pp_pic_holder.find('.pp_details').width(width).find('.pp_description').width(width - parseFloat($pp_pic_holder.find('a.pp_close').css('width'))); /* To have the correct height */
|
||||
|
||||
// Get the container size, to resize the holder to the right dimensions
|
||||
pp_contentHeight = height + $pp_pic_holder.find('.pp_details').height() + parseFloat($pp_pic_holder.find('.pp_details').css('marginTop')) + parseFloat($pp_pic_holder.find('.pp_details').css('marginBottom'));
|
||||
pp_contentWidth = width;
|
||||
pp_containerHeight = pp_contentHeight + $pp_pic_holder.find('.ppt').height() + $pp_pic_holder.find('.pp_top').height() + $pp_pic_holder.find('.pp_bottom').height();
|
||||
pp_containerWidth = width + settings.padding;
|
||||
}
|
||||
|
||||
function _getFileType(){
|
||||
if ($caller.attr('href').match(/youtube\.com\/watch/i)) {
|
||||
pp_type = 'youtube';
|
||||
}else if($caller.attr('href').indexOf('.mov') != -1){
|
||||
pp_type = 'quicktime';
|
||||
}else if($caller.attr('href').indexOf('.swf') != -1){
|
||||
pp_type = 'flash';
|
||||
}else if($caller.attr('href').indexOf('iframe') != -1){
|
||||
pp_type = 'iframe'
|
||||
}else{
|
||||
pp_type = 'image';
|
||||
}
|
||||
}
|
||||
|
||||
function _centerPicture(){
|
||||
if ($pp_pic_holder){ if($pp_pic_holder.size() == 0){ return; }}else{ return; }; //Make sure the gallery is open
|
||||
|
||||
if($.browser.opera) {
|
||||
windowHeight = window.innerHeight;
|
||||
windowWidth = window.innerWidth;
|
||||
}else{
|
||||
windowHeight = $(window).height();
|
||||
windowWidth = $(window).width();
|
||||
};
|
||||
|
||||
if(doresize) {
|
||||
$pHeight = $pp_pic_holder.height();
|
||||
$pWidth = $pp_pic_holder.width();
|
||||
$tHeight = $ppt.height();
|
||||
|
||||
projectedTop = (windowHeight/2) + $scrollPos['scrollTop'] - ($pHeight/2);
|
||||
if(projectedTop < 0) projectedTop = 0 + $tHeight;
|
||||
|
||||
$pp_pic_holder.css({
|
||||
'top': projectedTop,
|
||||
'left': (windowWidth/2) + $scrollPos['scrollLeft'] - ($pWidth/2)
|
||||
});
|
||||
|
||||
$ppt.css({
|
||||
'top' : projectedTop - $tHeight,
|
||||
'left' : (windowWidth/2) + $scrollPos['scrollLeft'] - ($pWidth/2) + (settings.padding/2)
|
||||
});
|
||||
};
|
||||
};
|
||||
|
||||
function _preload(){
|
||||
// Hide the next/previous links if on first or last images.
|
||||
_checkPosition();
|
||||
|
||||
if(pp_type == 'image'){
|
||||
// Set the new image
|
||||
imgPreloader = new Image();
|
||||
|
||||
// Preload the neighbour images
|
||||
nextImage = new Image();
|
||||
if(isSet && setPosition > setCount) nextImage.src = $(imagesArray[arrayPosition + 1]).attr('href');
|
||||
prevImage = new Image();
|
||||
if(isSet && imagesArray[arrayPosition - 1]) prevImage.src = $(imagesArray[arrayPosition - 1]).attr('href');
|
||||
|
||||
pp_typeMarkup = '<img id="fullResImage" src="" />';
|
||||
$pp_pic_holder.find('#pp_full_res')[0].innerHTML = pp_typeMarkup;
|
||||
|
||||
$pp_pic_holder.find('.pp_content').css('overflow','hidden');
|
||||
$pp_pic_holder.find('#fullResImage').attr('src',$caller.attr('href'));
|
||||
|
||||
imgPreloader.onload = function(){
|
||||
var correctSizes = _fitToViewport(imgPreloader.width,imgPreloader.height);
|
||||
imgPreloader.width = correctSizes['width'];
|
||||
imgPreloader.height = correctSizes['height'];
|
||||
showimage(imgPreloader.width,imgPreloader.height,correctSizes["containerWidth"],correctSizes["containerHeight"],correctSizes["contentHeight"],correctSizes["contentWidth"],correctSizes["resized"]);
|
||||
};
|
||||
|
||||
imgPreloader.src = $caller.attr('href');
|
||||
}else{
|
||||
// Get the dimensions
|
||||
movie_width = ( parseFloat(grab_param('width',$caller.attr('href'))) ) ? grab_param('width',$caller.attr('href')) : 425;
|
||||
movie_height = ( parseFloat(grab_param('height',$caller.attr('href'))) ) ? grab_param('height',$caller.attr('href')) : 344;
|
||||
|
||||
// If the size is % based
|
||||
if(movie_width.indexOf('%') != -1 || movie_height.indexOf('%') != -1){
|
||||
movie_height = ($(window).height() * parseFloat(movie_height) / 100) - 100;
|
||||
movie_width = ($(window).width() * parseFloat(movie_width) / 100) - 100;
|
||||
parsentBased = true;
|
||||
}else{
|
||||
movie_height = parseFloat(movie_height);
|
||||
movie_width = parseFloat(movie_width);
|
||||
}
|
||||
|
||||
if(pp_type == 'quicktime'){ movie_height+=13; }
|
||||
|
||||
// Fit them to viewport
|
||||
correctSizes = _fitToViewport(movie_width,movie_height);
|
||||
|
||||
if(pp_type == 'youtube'){
|
||||
pp_typeMarkup = '<object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" width="'+correctSizes['width']+'" height="'+correctSizes['height']+'"><param name="allowfullscreen" value="true" /><param name="allowscriptaccess" value="always" /><param name="movie" value="http://www.youtube.com/v/'+grab_param('v',$caller.attr('href'))+'" /><embed src="http://www.youtube.com/v/'+grab_param('v',$caller.attr('href'))+'" type="application/x-shockwave-flash" allowfullscreen="true" allowscriptaccess="always" width="'+correctSizes['width']+'" height="'+correctSizes['height']+'"></embed></object>';
|
||||
}else if(pp_type == 'quicktime'){
|
||||
pp_typeMarkup = '<object classid="clsid:02BF25D5-8C17-4B23-BC80-D3488ABDDC6B" codebase="http://www.apple.com/qtactivex/qtplugin.cab" height="'+correctSizes['height']+'" width="'+correctSizes['width']+'"><param name="src" value="'+$caller.attr('href')+'"><param name="autoplay" value="true"><param name="type" value="video/quicktime"><embed src="'+$caller.attr('href')+'" height="'+correctSizes['height']+'" width="'+correctSizes['width']+'" autoplay="true" type="video/quicktime" pluginspage="http://www.apple.com/quicktime/download/"></embed></object>';
|
||||
}else if(pp_type == 'flash'){
|
||||
flash_vars = $caller.attr('href');
|
||||
flash_vars = flash_vars.substring($caller.attr('href').indexOf('flashvars') + 10,$caller.attr('href').length);
|
||||
|
||||
filename = $caller.attr('href');
|
||||
filename = filename.substring(0,filename.indexOf('?'));
|
||||
|
||||
pp_typeMarkup = '<object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" width="'+correctSizes['width']+'" height="'+correctSizes['height']+'"><param name="allowfullscreen" value="true" /><param name="allowscriptaccess" value="always" /><param name="movie" value="'+filename+'?'+flash_vars+'" /><embed src="'+filename+'?'+flash_vars+'" type="application/x-shockwave-flash" allowfullscreen="true" allowscriptaccess="always" width="'+correctSizes['width']+'" height="'+correctSizes['height']+'"></embed></object>';
|
||||
}else if(pp_type == 'iframe'){
|
||||
movie_url = $caller.attr('href');
|
||||
movie_url = movie_url.substr(0,movie_url.indexOf('?'));
|
||||
|
||||
pp_typeMarkup = '<iframe src ="'+movie_url+'" width="'+(correctSizes['width']-10)+'" height="'+(correctSizes['height']-10)+'" frameborder="no"></iframe>';
|
||||
}
|
||||
// Append HTML
|
||||
$pp_pic_holder.find('#pp_full_res')[0].innerHTML = pp_typeMarkup;
|
||||
|
||||
// Show content
|
||||
showimage(correctSizes['width'],correctSizes['height'],correctSizes["containerWidth"],correctSizes["containerHeight"],correctSizes["contentHeight"],correctSizes["contentWidth"],correctSizes["resized"]);
|
||||
}
|
||||
};
|
||||
|
||||
function _getScroll(){
|
||||
if (self.pageYOffset) {
|
||||
scrollTop = self.pageYOffset;
|
||||
scrollLeft = self.pageXOffset;
|
||||
} else if (document.documentElement && document.documentElement.scrollTop) { // Explorer 6 Strict
|
||||
scrollTop = document.documentElement.scrollTop;
|
||||
scrollLeft = document.documentElement.scrollLeft;
|
||||
} else if (document.body) {// all other Explorers
|
||||
scrollTop = document.body.scrollTop;
|
||||
scrollLeft = document.body.scrollLeft;
|
||||
}
|
||||
|
||||
return {scrollTop:scrollTop,scrollLeft:scrollLeft};
|
||||
};
|
||||
|
||||
function _resizeOverlay() {
|
||||
$('div.pp_overlay').css({
|
||||
'height':$(document).height(),
|
||||
'width':$(window).width()
|
||||
});
|
||||
};
|
||||
|
||||
function _buildOverlay(){
|
||||
toInject = "";
|
||||
|
||||
// Build the background overlay div
|
||||
toInject += "<div class='pp_overlay'></div>";
|
||||
|
||||
// Define the markup to append, depending on the content type.
|
||||
if(pp_type == 'image'){
|
||||
pp_typeMarkup = '<img id="fullResImage" src="" />';
|
||||
}else{
|
||||
pp_typeMarkup = '';
|
||||
}
|
||||
|
||||
// Basic HTML for the picture holder
|
||||
toInject += '<div class="pp_pic_holder"><div class="pp_top"><div class="pp_left"></div><div class="pp_middle"></div><div class="pp_right"></div></div><div class="pp_content"><a href="#" class="pp_expand" title="Expand the image">Expand</a><div class="pp_loaderIcon"></div><div class="pp_hoverContainer"><a class="pp_next" href="#">next</a><a class="pp_previous" href="#">previous</a></div><div id="pp_full_res">'+ pp_typeMarkup +'</div><div class="pp_details clearfix"><a class="pp_close" href="#">Close</a><p class="pp_description"></p><div class="pp_nav"><a href="#" class="pp_arrow_previous">Previous</a><p class="currentTextHolder">0'+settings.counter_separator_label+'0</p><a href="#" class="pp_arrow_next">Next</a></div></div></div><div class="pp_bottom"><div class="pp_left"></div><div class="pp_middle"></div><div class="pp_right"></div></div></div>';
|
||||
|
||||
// Basic html for the title holder
|
||||
toInject += '<div class="ppt"></div>';
|
||||
|
||||
$('body').append(toInject);
|
||||
|
||||
// Set my global selectors
|
||||
$pp_pic_holder = $('.pp_pic_holder');
|
||||
$ppt = $('.ppt');
|
||||
|
||||
$('div.pp_overlay').css('height',$(document).height()).bind('click',function(){
|
||||
close();
|
||||
});
|
||||
|
||||
$pp_pic_holder.css({'opacity': 0}).addClass(settings.theme);
|
||||
|
||||
$('a.pp_close').bind('click',function(){ close(); return false; });
|
||||
|
||||
$('a.pp_expand').bind('click',function(){
|
||||
$this = $(this);
|
||||
|
||||
// Expand the image
|
||||
if($this.hasClass('pp_expand')){
|
||||
$this.removeClass('pp_expand').addClass('pp_contract');
|
||||
doresize = false;
|
||||
}else{
|
||||
$this.removeClass('pp_contract').addClass('pp_expand');
|
||||
doresize = true;
|
||||
};
|
||||
|
||||
_hideContent();
|
||||
|
||||
$pp_pic_holder.find('.pp_hoverContainer, #pp_full_res, .pp_details').fadeOut(settings.animationSpeed,function(){
|
||||
_preload();
|
||||
});
|
||||
|
||||
return false;
|
||||
});
|
||||
|
||||
$pp_pic_holder.find('.pp_previous, .pp_arrow_previous').bind('click',function(){
|
||||
changePicture('previous');
|
||||
return false;
|
||||
});
|
||||
|
||||
$pp_pic_holder.find('.pp_next, .pp_arrow_next').bind('click',function(){
|
||||
changePicture('next');
|
||||
return false;
|
||||
});
|
||||
|
||||
$pp_pic_holder.find('.pp_hoverContainer').css({
|
||||
'margin-left': settings.padding/2
|
||||
});
|
||||
|
||||
// If it's not a set, hide the links
|
||||
if(!isSet) {
|
||||
$pp_pic_holder.find('.pp_hoverContainer,.pp_nav').hide();
|
||||
};
|
||||
|
||||
|
||||
// To fix the bug with IE select boxes
|
||||
if($.browser.msie && $.browser.version == 6){
|
||||
$('body').addClass('ie6');
|
||||
$('select').css('visibility','hidden');
|
||||
};
|
||||
|
||||
// Then fade it in
|
||||
$('div.pp_overlay').css('opacity',0).fadeTo(settings.animationSpeed,settings.opacity, function(){
|
||||
$pp_pic_holder.css('opacity',0).fadeIn(settings.animationSpeed,function(){
|
||||
$pp_pic_holder.attr('style','left:'+$pp_pic_holder.css('left')+';top:'+$pp_pic_holder.css('top')+';');
|
||||
_preload();
|
||||
});
|
||||
});
|
||||
};
|
||||
};
|
||||
|
||||
function grab_param(name,url){
|
||||
name = name.replace(/[\[]/,"\\\[").replace(/[\]]/,"\\\]");
|
||||
var regexS = "[\\?&]"+name+"=([^&#]*)";
|
||||
var regex = new RegExp( regexS );
|
||||
var results = regex.exec( url );
|
||||
if( results == null )
|
||||
return "";
|
||||
else
|
||||
return results[1];
|
||||
}
|
||||
})(jQuery);
|
||||
911
html/sternwarte/javascript/jquery.prettyPhoto_3.1.6.js
Normal file
911
html/sternwarte/javascript/jquery.prettyPhoto_3.1.6.js
Normal file
@@ -0,0 +1,911 @@
|
||||
/* ------------------------------------------------------------------------
|
||||
Class: prettyPhoto
|
||||
Use: Lightbox clone for jQuery
|
||||
Author: Stephane Caron (http://www.no-margin-for-errors.com)
|
||||
Version: 3.1.6
|
||||
------------------------------------------------------------------------- */
|
||||
(function($) {
|
||||
$.prettyPhoto = {version: '3.1.6'};
|
||||
|
||||
$.fn.prettyPhoto = function(pp_settings) {
|
||||
pp_settings = jQuery.extend({
|
||||
hook: 'rel', /* the attribute tag to use for prettyPhoto hooks. default: 'rel'. For HTML5, use "data-rel" or similar. */
|
||||
animation_speed: 'fast', /* fast/slow/normal */
|
||||
ajaxcallback: function() {},
|
||||
slideshow: 5000, /* false OR interval time in ms */
|
||||
autoplay_slideshow: false, /* true/false */
|
||||
opacity: 0.80, /* Value between 0 and 1 */
|
||||
show_title: true, /* true/false */
|
||||
allow_resize: true, /* Resize the photos bigger than viewport. true/false */
|
||||
allow_expand: true, /* Allow the user to expand a resized image. true/false */
|
||||
default_width: 500,
|
||||
default_height: 344,
|
||||
counter_separator_label: '/', /* The separator for the gallery counter 1 "of" 2 */
|
||||
theme: 'pp_default', /* light_rounded / dark_rounded / light_square / dark_square / facebook */
|
||||
horizontal_padding: 20, /* The padding on each side of the picture */
|
||||
hideflash: false, /* Hides all the flash object on a page, set to TRUE if flash appears over prettyPhoto */
|
||||
wmode: 'opaque', /* Set the flash wmode attribute */
|
||||
autoplay: true, /* Automatically start videos: True/False */
|
||||
modal: false, /* If set to true, only the close button will close the window */
|
||||
deeplinking: true, /* Allow prettyPhoto to update the url to enable deeplinking. */
|
||||
overlay_gallery: true, /* If set to true, a gallery will overlay the fullscreen image on mouse over */
|
||||
overlay_gallery_max: 30, /* Maximum number of pictures in the overlay gallery */
|
||||
keyboard_shortcuts: true, /* Set to false if you open forms inside prettyPhoto */
|
||||
changepicturecallback: function(){}, /* Called everytime an item is shown/changed */
|
||||
callback: function(){}, /* Called when prettyPhoto is closed */
|
||||
ie6_fallback: true,
|
||||
markup: '<div class="pp_pic_holder"> \
|
||||
<div class="ppt"> </div> \
|
||||
<div class="pp_top"> \
|
||||
<div class="pp_left"></div> \
|
||||
<div class="pp_middle"></div> \
|
||||
<div class="pp_right"></div> \
|
||||
</div> \
|
||||
<div class="pp_content_container"> \
|
||||
<div class="pp_left"> \
|
||||
<div class="pp_right"> \
|
||||
<div class="pp_content"> \
|
||||
<div class="pp_loaderIcon"></div> \
|
||||
<div class="pp_fade"> \
|
||||
<a href="#" class="pp_expand" title="Expand the image">Expand</a> \
|
||||
<div class="pp_hoverContainer"> \
|
||||
<a class="pp_next" href="#">next</a> \
|
||||
<a class="pp_previous" href="#">previous</a> \
|
||||
</div> \
|
||||
<div id="pp_full_res"></div> \
|
||||
<div class="pp_details"> \
|
||||
<div class="pp_nav"> \
|
||||
<a href="#" class="pp_arrow_previous">Previous</a> \
|
||||
<p class="currentTextHolder">0/0</p> \
|
||||
<a href="#" class="pp_arrow_next">Next</a> \
|
||||
</div> \
|
||||
<p class="pp_description"></p> \
|
||||
<div class="pp_social">{pp_social}</div> \
|
||||
<a class="pp_close" href="#">Close</a> \
|
||||
</div> \
|
||||
</div> \
|
||||
</div> \
|
||||
</div> \
|
||||
</div> \
|
||||
</div> \
|
||||
<div class="pp_bottom"> \
|
||||
<div class="pp_left"></div> \
|
||||
<div class="pp_middle"></div> \
|
||||
<div class="pp_right"></div> \
|
||||
</div> \
|
||||
</div> \
|
||||
<div class="pp_overlay"></div>',
|
||||
gallery_markup: '<div class="pp_gallery"> \
|
||||
<a href="#" class="pp_arrow_previous">Previous</a> \
|
||||
<div> \
|
||||
<ul> \
|
||||
{gallery} \
|
||||
</ul> \
|
||||
</div> \
|
||||
<a href="#" class="pp_arrow_next">Next</a> \
|
||||
</div>',
|
||||
image_markup: '<img id="fullResImage" src="{path}" />',
|
||||
flash_markup: '<object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" width="{width}" height="{height}"><param name="wmode" value="{wmode}" /><param name="allowfullscreen" value="true" /><param name="allowscriptaccess" value="always" /><param name="movie" value="{path}" /><embed src="{path}" type="application/x-shockwave-flash" allowfullscreen="true" allowscriptaccess="always" width="{width}" height="{height}" wmode="{wmode}"></embed></object>',
|
||||
quicktime_markup: '<object classid="clsid:02BF25D5-8C17-4B23-BC80-D3488ABDDC6B" codebase="http://www.apple.com/qtactivex/qtplugin.cab" height="{height}" width="{width}"><param name="src" value="{path}"><param name="autoplay" value="{autoplay}"><param name="type" value="video/quicktime"><embed src="{path}" height="{height}" width="{width}" autoplay="{autoplay}" type="video/quicktime" pluginspage="http://www.apple.com/quicktime/download/"></embed></object>',
|
||||
iframe_markup: '<iframe src ="{path}" width="{width}" height="{height}" frameborder="no"></iframe>',
|
||||
inline_markup: '<div class="pp_inline">{content}</div>',
|
||||
custom_markup: '',
|
||||
social_tools: '<div class="twitter"><a href="http://twitter.com/share" class="twitter-share-button" data-count="none">Tweet</a><script type="text/javascript" src="http://platform.twitter.com/widgets.js"></script></div><div class="facebook"><iframe src="//www.facebook.com/plugins/like.php?locale=en_US&href={location_href}&layout=button_count&show_faces=true&width=500&action=like&font&colorscheme=light&height=23" scrolling="no" frameborder="0" style="border:none; overflow:hidden; width:500px; height:23px;" allowTransparency="true"></iframe></div>' /* html or false to disable */
|
||||
}, pp_settings);
|
||||
|
||||
// Global variables accessible only by prettyPhoto
|
||||
var matchedObjects = this, percentBased = false, pp_dimensions, pp_open,
|
||||
|
||||
// prettyPhoto container specific
|
||||
pp_contentHeight, pp_contentWidth, pp_containerHeight, pp_containerWidth,
|
||||
|
||||
// Window size
|
||||
windowHeight = $(window).height(), windowWidth = $(window).width(),
|
||||
|
||||
// Global elements
|
||||
pp_slideshow;
|
||||
|
||||
doresize = true, scroll_pos = _get_scroll();
|
||||
|
||||
// Window/Keyboard events
|
||||
$(window).unbind('resize.prettyphoto').bind('resize.prettyphoto',function(){ _center_overlay(); _resize_overlay(); });
|
||||
|
||||
if(pp_settings.keyboard_shortcuts) {
|
||||
$(document).unbind('keydown.prettyphoto').bind('keydown.prettyphoto',function(e){
|
||||
if(typeof $pp_pic_holder != 'undefined'){
|
||||
if($pp_pic_holder.is(':visible')){
|
||||
switch(e.keyCode){
|
||||
case 37:
|
||||
$.prettyPhoto.changePage('previous');
|
||||
e.preventDefault();
|
||||
break;
|
||||
case 39:
|
||||
$.prettyPhoto.changePage('next');
|
||||
e.preventDefault();
|
||||
break;
|
||||
case 27:
|
||||
if(!settings.modal)
|
||||
$.prettyPhoto.close();
|
||||
e.preventDefault();
|
||||
break;
|
||||
};
|
||||
// return false;
|
||||
};
|
||||
};
|
||||
});
|
||||
};
|
||||
|
||||
/**
|
||||
* Initialize prettyPhoto.
|
||||
*/
|
||||
$.prettyPhoto.initialize = function() {
|
||||
|
||||
settings = pp_settings;
|
||||
|
||||
if(settings.theme == 'pp_default') settings.horizontal_padding = 16;
|
||||
|
||||
// Find out if the picture is part of a set
|
||||
theRel = $(this).attr(settings.hook);
|
||||
galleryRegExp = /\[(?:.*)\]/;
|
||||
isSet = (galleryRegExp.exec(theRel)) ? true : false;
|
||||
|
||||
// Put the SRCs, TITLEs, ALTs into an array.
|
||||
pp_images = (isSet) ? jQuery.map(matchedObjects, function(n, i){ if($(n).attr(settings.hook).indexOf(theRel) != -1) return $(n).attr('href'); }) : $.makeArray($(this).attr('href'));
|
||||
pp_titles = (isSet) ? jQuery.map(matchedObjects, function(n, i){ if($(n).attr(settings.hook).indexOf(theRel) != -1) return ($(n).find('img').attr('alt')) ? $(n).find('img').attr('alt') : ""; }) : $.makeArray($(this).find('img').attr('alt'));
|
||||
pp_descriptions = (isSet) ? jQuery.map(matchedObjects, function(n, i){ if($(n).attr(settings.hook).indexOf(theRel) != -1) return ($(n).attr('title')) ? $(n).attr('title') : ""; }) : $.makeArray($(this).attr('title'));
|
||||
|
||||
if(pp_images.length > settings.overlay_gallery_max) settings.overlay_gallery = false;
|
||||
|
||||
set_position = jQuery.inArray($(this).attr('href'), pp_images); // Define where in the array the clicked item is positionned
|
||||
rel_index = (isSet) ? set_position : $("a["+settings.hook+"^='"+theRel+"']").index($(this));
|
||||
|
||||
_build_overlay(this); // Build the overlay {this} being the caller
|
||||
|
||||
if(settings.allow_resize)
|
||||
$(window).bind('scroll.prettyphoto',function(){ _center_overlay(); });
|
||||
|
||||
|
||||
$.prettyPhoto.open();
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Opens the prettyPhoto modal box.
|
||||
* @param image {String,Array} Full path to the image to be open, can also be an array containing full images paths.
|
||||
* @param title {String,Array} The title to be displayed with the picture, can also be an array containing all the titles.
|
||||
* @param description {String,Array} The description to be displayed with the picture, can also be an array containing all the descriptions.
|
||||
*/
|
||||
$.prettyPhoto.open = function(event) {
|
||||
if(typeof settings == "undefined"){ // Means it's an API call, need to manually get the settings and set the variables
|
||||
settings = pp_settings;
|
||||
pp_images = $.makeArray(arguments[0]);
|
||||
pp_titles = (arguments[1]) ? $.makeArray(arguments[1]) : $.makeArray("");
|
||||
pp_descriptions = (arguments[2]) ? $.makeArray(arguments[2]) : $.makeArray("");
|
||||
isSet = (pp_images.length > 1) ? true : false;
|
||||
set_position = (arguments[3])? arguments[3]: 0;
|
||||
_build_overlay(event.target); // Build the overlay {this} being the caller
|
||||
}
|
||||
|
||||
if(settings.hideflash) $('object,embed,iframe[src*=youtube],iframe[src*=vimeo]').css('visibility','hidden'); // Hide the flash
|
||||
|
||||
_checkPosition($(pp_images).size()); // Hide the next/previous links if on first or last images.
|
||||
|
||||
$('.pp_loaderIcon').show();
|
||||
|
||||
if(settings.deeplinking)
|
||||
setHashtag();
|
||||
|
||||
// Rebuild Facebook Like Button with updated href
|
||||
if(settings.social_tools){
|
||||
facebook_like_link = settings.social_tools.replace('{location_href}', encodeURIComponent(location.href));
|
||||
$pp_pic_holder.find('.pp_social').html(facebook_like_link);
|
||||
}
|
||||
|
||||
// Fade the content in
|
||||
if($ppt.is(':hidden')) $ppt.css('opacity',0).show();
|
||||
$pp_overlay.show().fadeTo(settings.animation_speed,settings.opacity);
|
||||
|
||||
// Display the current position
|
||||
$pp_pic_holder.find('.currentTextHolder').text((set_position+1) + settings.counter_separator_label + $(pp_images).size());
|
||||
|
||||
// Set the description
|
||||
if(typeof pp_descriptions[set_position] != 'undefined' && pp_descriptions[set_position] != ""){
|
||||
$pp_pic_holder.find('.pp_description').show().html(unescape(pp_descriptions[set_position]));
|
||||
}else{
|
||||
$pp_pic_holder.find('.pp_description').hide();
|
||||
}
|
||||
|
||||
// Get the dimensions
|
||||
movie_width = ( parseFloat(getParam('width',pp_images[set_position])) ) ? getParam('width',pp_images[set_position]) : settings.default_width.toString();
|
||||
movie_height = ( parseFloat(getParam('height',pp_images[set_position])) ) ? getParam('height',pp_images[set_position]) : settings.default_height.toString();
|
||||
|
||||
// If the size is % based, calculate according to window dimensions
|
||||
percentBased=false;
|
||||
if(movie_height.indexOf('%') != -1) { movie_height = parseFloat(($(window).height() * parseFloat(movie_height) / 100) - 150); percentBased = true; }
|
||||
if(movie_width.indexOf('%') != -1) { movie_width = parseFloat(($(window).width() * parseFloat(movie_width) / 100) - 150); percentBased = true; }
|
||||
|
||||
// Fade the holder
|
||||
$pp_pic_holder.fadeIn(function(){
|
||||
// Set the title
|
||||
(settings.show_title && pp_titles[set_position] != "" && typeof pp_titles[set_position] != "undefined") ? $ppt.html(unescape(pp_titles[set_position])) : $ppt.html(' ');
|
||||
|
||||
imgPreloader = "";
|
||||
skipInjection = false;
|
||||
|
||||
// Inject the proper content
|
||||
switch(_getFileType(pp_images[set_position])){
|
||||
case 'image':
|
||||
imgPreloader = new Image();
|
||||
|
||||
// Preload the neighbour images
|
||||
nextImage = new Image();
|
||||
if(isSet && set_position < $(pp_images).size() -1) nextImage.src = pp_images[set_position + 1];
|
||||
prevImage = new Image();
|
||||
if(isSet && pp_images[set_position - 1]) prevImage.src = pp_images[set_position - 1];
|
||||
|
||||
$pp_pic_holder.find('#pp_full_res')[0].innerHTML = settings.image_markup.replace(/{path}/g,pp_images[set_position]);
|
||||
|
||||
imgPreloader.onload = function(){
|
||||
// Fit item to viewport
|
||||
pp_dimensions = _fitToViewport(imgPreloader.width,imgPreloader.height);
|
||||
|
||||
_showContent();
|
||||
};
|
||||
|
||||
imgPreloader.onerror = function(){
|
||||
alert('Image cannot be loaded. Make sure the path is correct and image exist.');
|
||||
$.prettyPhoto.close();
|
||||
};
|
||||
|
||||
imgPreloader.src = pp_images[set_position];
|
||||
break;
|
||||
|
||||
case 'youtube':
|
||||
pp_dimensions = _fitToViewport(movie_width,movie_height); // Fit item to viewport
|
||||
|
||||
// Regular youtube link
|
||||
movie_id = getParam('v',pp_images[set_position]);
|
||||
|
||||
// youtu.be link
|
||||
if(movie_id == ""){
|
||||
movie_id = pp_images[set_position].split('youtu.be/');
|
||||
movie_id = movie_id[1];
|
||||
if(movie_id.indexOf('?') > 0)
|
||||
movie_id = movie_id.substr(0,movie_id.indexOf('?')); // Strip anything after the ?
|
||||
|
||||
if(movie_id.indexOf('&') > 0)
|
||||
movie_id = movie_id.substr(0,movie_id.indexOf('&')); // Strip anything after the &
|
||||
}
|
||||
|
||||
movie = 'http://www.youtube.com/embed/'+movie_id;
|
||||
(getParam('rel',pp_images[set_position])) ? movie+="?rel="+getParam('rel',pp_images[set_position]) : movie+="?rel=1";
|
||||
|
||||
if(settings.autoplay) movie += "&autoplay=1";
|
||||
|
||||
toInject = settings.iframe_markup.replace(/{width}/g,pp_dimensions['width']).replace(/{height}/g,pp_dimensions['height']).replace(/{wmode}/g,settings.wmode).replace(/{path}/g,movie);
|
||||
break;
|
||||
|
||||
case 'vimeo':
|
||||
pp_dimensions = _fitToViewport(movie_width,movie_height); // Fit item to viewport
|
||||
|
||||
movie_id = pp_images[set_position];
|
||||
var regExp = /http(s?):\/\/(www\.)?vimeo.com\/(\d+)/;
|
||||
var match = movie_id.match(regExp);
|
||||
|
||||
movie = 'http://player.vimeo.com/video/'+ match[3] +'?title=0&byline=0&portrait=0';
|
||||
if(settings.autoplay) movie += "&autoplay=1;";
|
||||
|
||||
vimeo_width = pp_dimensions['width'] + '/embed/?moog_width='+ pp_dimensions['width'];
|
||||
|
||||
toInject = settings.iframe_markup.replace(/{width}/g,vimeo_width).replace(/{height}/g,pp_dimensions['height']).replace(/{path}/g,movie);
|
||||
break;
|
||||
|
||||
case 'quicktime':
|
||||
pp_dimensions = _fitToViewport(movie_width,movie_height); // Fit item to viewport
|
||||
pp_dimensions['height']+=15; pp_dimensions['contentHeight']+=15; pp_dimensions['containerHeight']+=15; // Add space for the control bar
|
||||
|
||||
toInject = settings.quicktime_markup.replace(/{width}/g,pp_dimensions['width']).replace(/{height}/g,pp_dimensions['height']).replace(/{wmode}/g,settings.wmode).replace(/{path}/g,pp_images[set_position]).replace(/{autoplay}/g,settings.autoplay);
|
||||
break;
|
||||
|
||||
case 'flash':
|
||||
pp_dimensions = _fitToViewport(movie_width,movie_height); // Fit item to viewport
|
||||
|
||||
flash_vars = pp_images[set_position];
|
||||
flash_vars = flash_vars.substring(pp_images[set_position].indexOf('flashvars') + 10,pp_images[set_position].length);
|
||||
|
||||
filename = pp_images[set_position];
|
||||
filename = filename.substring(0,filename.indexOf('?'));
|
||||
|
||||
toInject = settings.flash_markup.replace(/{width}/g,pp_dimensions['width']).replace(/{height}/g,pp_dimensions['height']).replace(/{wmode}/g,settings.wmode).replace(/{path}/g,filename+'?'+flash_vars);
|
||||
break;
|
||||
|
||||
case 'iframe':
|
||||
pp_dimensions = _fitToViewport(movie_width,movie_height); // Fit item to viewport
|
||||
|
||||
frame_url = pp_images[set_position];
|
||||
frame_url = frame_url.substr(0,frame_url.indexOf('iframe')-1);
|
||||
|
||||
toInject = settings.iframe_markup.replace(/{width}/g,pp_dimensions['width']).replace(/{height}/g,pp_dimensions['height']).replace(/{path}/g,frame_url);
|
||||
break;
|
||||
|
||||
case 'ajax':
|
||||
doresize = false; // Make sure the dimensions are not resized.
|
||||
pp_dimensions = _fitToViewport(movie_width,movie_height);
|
||||
doresize = true; // Reset the dimensions
|
||||
|
||||
skipInjection = true;
|
||||
$.get(pp_images[set_position],function(responseHTML){
|
||||
toInject = settings.inline_markup.replace(/{content}/g,responseHTML);
|
||||
$pp_pic_holder.find('#pp_full_res')[0].innerHTML = toInject;
|
||||
_showContent();
|
||||
});
|
||||
|
||||
break;
|
||||
|
||||
case 'custom':
|
||||
pp_dimensions = _fitToViewport(movie_width,movie_height); // Fit item to viewport
|
||||
|
||||
toInject = settings.custom_markup;
|
||||
break;
|
||||
|
||||
case 'inline':
|
||||
// to get the item height clone it, apply default width, wrap it in the prettyPhoto containers , then delete
|
||||
myClone = $(pp_images[set_position]).clone().append('<br clear="all" />').css({'width':settings.default_width}).wrapInner('<div id="pp_full_res"><div class="pp_inline"></div></div>').appendTo($('body')).show();
|
||||
doresize = false; // Make sure the dimensions are not resized.
|
||||
pp_dimensions = _fitToViewport($(myClone).width(),$(myClone).height());
|
||||
doresize = true; // Reset the dimensions
|
||||
$(myClone).remove();
|
||||
toInject = settings.inline_markup.replace(/{content}/g,$(pp_images[set_position]).html());
|
||||
break;
|
||||
};
|
||||
|
||||
if(!imgPreloader && !skipInjection){
|
||||
$pp_pic_holder.find('#pp_full_res')[0].innerHTML = toInject;
|
||||
|
||||
// Show content
|
||||
_showContent();
|
||||
};
|
||||
});
|
||||
|
||||
return false;
|
||||
};
|
||||
|
||||
|
||||
/**
|
||||
* Change page in the prettyPhoto modal box
|
||||
* @param direction {String} Direction of the paging, previous or next.
|
||||
*/
|
||||
$.prettyPhoto.changePage = function(direction){
|
||||
currentGalleryPage = 0;
|
||||
|
||||
if(direction == 'previous') {
|
||||
set_position--;
|
||||
if (set_position < 0) set_position = $(pp_images).size()-1;
|
||||
}else if(direction == 'next'){
|
||||
set_position++;
|
||||
if(set_position > $(pp_images).size()-1) set_position = 0;
|
||||
}else{
|
||||
set_position=direction;
|
||||
};
|
||||
|
||||
rel_index = set_position;
|
||||
|
||||
if(!doresize) doresize = true; // Allow the resizing of the images
|
||||
if(settings.allow_expand) {
|
||||
$('.pp_contract').removeClass('pp_contract').addClass('pp_expand');
|
||||
}
|
||||
|
||||
_hideContent(function(){ $.prettyPhoto.open(); });
|
||||
};
|
||||
|
||||
|
||||
/**
|
||||
* Change gallery page in the prettyPhoto modal box
|
||||
* @param direction {String} Direction of the paging, previous or next.
|
||||
*/
|
||||
$.prettyPhoto.changeGalleryPage = function(direction){
|
||||
if(direction=='next'){
|
||||
currentGalleryPage ++;
|
||||
|
||||
if(currentGalleryPage > totalPage) currentGalleryPage = 0;
|
||||
}else if(direction=='previous'){
|
||||
currentGalleryPage --;
|
||||
|
||||
if(currentGalleryPage < 0) currentGalleryPage = totalPage;
|
||||
}else{
|
||||
currentGalleryPage = direction;
|
||||
};
|
||||
|
||||
slide_speed = (direction == 'next' || direction == 'previous') ? settings.animation_speed : 0;
|
||||
|
||||
slide_to = currentGalleryPage * (itemsPerPage * itemWidth);
|
||||
|
||||
$pp_gallery.find('ul').animate({left:-slide_to},slide_speed);
|
||||
};
|
||||
|
||||
|
||||
/**
|
||||
* Start the slideshow...
|
||||
*/
|
||||
$.prettyPhoto.startSlideshow = function(){
|
||||
if(typeof pp_slideshow == 'undefined'){
|
||||
$pp_pic_holder.find('.pp_play').unbind('click').removeClass('pp_play').addClass('pp_pause').click(function(){
|
||||
$.prettyPhoto.stopSlideshow();
|
||||
return false;
|
||||
});
|
||||
pp_slideshow = setInterval($.prettyPhoto.startSlideshow,settings.slideshow);
|
||||
}else{
|
||||
$.prettyPhoto.changePage('next');
|
||||
};
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Stop the slideshow...
|
||||
*/
|
||||
$.prettyPhoto.stopSlideshow = function(){
|
||||
$pp_pic_holder.find('.pp_pause').unbind('click').removeClass('pp_pause').addClass('pp_play').click(function(){
|
||||
$.prettyPhoto.startSlideshow();
|
||||
return false;
|
||||
});
|
||||
clearInterval(pp_slideshow);
|
||||
pp_slideshow=undefined;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Closes prettyPhoto.
|
||||
*/
|
||||
$.prettyPhoto.close = function(){
|
||||
if($pp_overlay.is(":animated")) return;
|
||||
|
||||
$.prettyPhoto.stopSlideshow();
|
||||
|
||||
$pp_pic_holder.stop().find('object,embed').css('visibility','hidden');
|
||||
|
||||
$('div.pp_pic_holder,div.ppt,.pp_fade').fadeOut(settings.animation_speed,function(){ $(this).remove(); });
|
||||
|
||||
$pp_overlay.fadeOut(settings.animation_speed, function(){
|
||||
|
||||
if(settings.hideflash) $('object,embed,iframe[src*=youtube],iframe[src*=vimeo]').css('visibility','visible'); // Show the flash
|
||||
|
||||
$(this).remove(); // No more need for the prettyPhoto markup
|
||||
|
||||
$(window).unbind('scroll.prettyphoto');
|
||||
|
||||
clearHashtag();
|
||||
|
||||
settings.callback();
|
||||
|
||||
doresize = true;
|
||||
|
||||
pp_open = false;
|
||||
|
||||
delete settings;
|
||||
});
|
||||
};
|
||||
|
||||
/**
|
||||
* Set the proper sizes on the containers and animate the content in.
|
||||
*/
|
||||
function _showContent(){
|
||||
$('.pp_loaderIcon').hide();
|
||||
|
||||
// Calculate the opened top position of the pic holder
|
||||
projectedTop = scroll_pos['scrollTop'] + ((windowHeight/2) - (pp_dimensions['containerHeight']/2));
|
||||
if(projectedTop < 0) projectedTop = 0;
|
||||
|
||||
$ppt.fadeTo(settings.animation_speed,1);
|
||||
|
||||
// Resize the content holder
|
||||
$pp_pic_holder.find('.pp_content')
|
||||
.animate({
|
||||
height:pp_dimensions['contentHeight'],
|
||||
width:pp_dimensions['contentWidth']
|
||||
},settings.animation_speed);
|
||||
|
||||
// Resize picture the holder
|
||||
$pp_pic_holder.animate({
|
||||
'top': projectedTop,
|
||||
'left': ((windowWidth/2) - (pp_dimensions['containerWidth']/2) < 0) ? 0 : (windowWidth/2) - (pp_dimensions['containerWidth']/2),
|
||||
width:pp_dimensions['containerWidth']
|
||||
},settings.animation_speed,function(){
|
||||
$pp_pic_holder.find('.pp_hoverContainer,#fullResImage').height(pp_dimensions['height']).width(pp_dimensions['width']);
|
||||
|
||||
$pp_pic_holder.find('.pp_fade').fadeIn(settings.animation_speed); // Fade the new content
|
||||
|
||||
// Show the nav
|
||||
if(isSet && _getFileType(pp_images[set_position])=="image") { $pp_pic_holder.find('.pp_hoverContainer').show(); }else{ $pp_pic_holder.find('.pp_hoverContainer').hide(); }
|
||||
|
||||
if(settings.allow_expand) {
|
||||
if(pp_dimensions['resized']){ // Fade the resizing link if the image is resized
|
||||
$('a.pp_expand,a.pp_contract').show();
|
||||
}else{
|
||||
$('a.pp_expand').hide();
|
||||
}
|
||||
}
|
||||
|
||||
if(settings.autoplay_slideshow && !pp_slideshow && !pp_open) $.prettyPhoto.startSlideshow();
|
||||
|
||||
settings.changepicturecallback(); // Callback!
|
||||
|
||||
pp_open = true;
|
||||
});
|
||||
|
||||
_insert_gallery();
|
||||
pp_settings.ajaxcallback();
|
||||
};
|
||||
|
||||
/**
|
||||
* Hide the content...DUH!
|
||||
*/
|
||||
function _hideContent(callback){
|
||||
// Fade out the current picture
|
||||
$pp_pic_holder.find('#pp_full_res object,#pp_full_res embed').css('visibility','hidden');
|
||||
$pp_pic_holder.find('.pp_fade').fadeOut(settings.animation_speed,function(){
|
||||
$('.pp_loaderIcon').show();
|
||||
|
||||
callback();
|
||||
});
|
||||
};
|
||||
|
||||
/**
|
||||
* Check the item position in the gallery array, hide or show the navigation links
|
||||
* @param setCount {integer} The total number of items in the set
|
||||
*/
|
||||
function _checkPosition(setCount){
|
||||
(setCount > 1) ? $('.pp_nav').show() : $('.pp_nav').hide(); // Hide the bottom nav if it's not a set.
|
||||
};
|
||||
|
||||
/**
|
||||
* Resize the item dimensions if it's bigger than the viewport
|
||||
* @param width {integer} Width of the item to be opened
|
||||
* @param height {integer} Height of the item to be opened
|
||||
* @return An array containin the "fitted" dimensions
|
||||
*/
|
||||
function _fitToViewport(width,height){
|
||||
resized = false;
|
||||
|
||||
_getDimensions(width,height);
|
||||
|
||||
// Define them in case there's no resize needed
|
||||
imageWidth = width, imageHeight = height;
|
||||
|
||||
if( ((pp_containerWidth > windowWidth) || (pp_containerHeight > windowHeight)) && doresize && settings.allow_resize && !percentBased) {
|
||||
resized = true, fitting = false;
|
||||
|
||||
while (!fitting){
|
||||
if((pp_containerWidth > windowWidth)){
|
||||
imageWidth = (windowWidth - 200);
|
||||
imageHeight = (height/width) * imageWidth;
|
||||
}else if((pp_containerHeight > windowHeight)){
|
||||
imageHeight = (windowHeight - 200);
|
||||
imageWidth = (width/height) * imageHeight;
|
||||
}else{
|
||||
fitting = true;
|
||||
};
|
||||
|
||||
pp_containerHeight = imageHeight, pp_containerWidth = imageWidth;
|
||||
};
|
||||
|
||||
|
||||
|
||||
if((pp_containerWidth > windowWidth) || (pp_containerHeight > windowHeight)){
|
||||
_fitToViewport(pp_containerWidth,pp_containerHeight)
|
||||
};
|
||||
|
||||
_getDimensions(imageWidth,imageHeight);
|
||||
};
|
||||
|
||||
return {
|
||||
width:Math.floor(imageWidth),
|
||||
height:Math.floor(imageHeight),
|
||||
containerHeight:Math.floor(pp_containerHeight),
|
||||
containerWidth:Math.floor(pp_containerWidth) + (settings.horizontal_padding * 2),
|
||||
contentHeight:Math.floor(pp_contentHeight),
|
||||
contentWidth:Math.floor(pp_contentWidth),
|
||||
resized:resized
|
||||
};
|
||||
};
|
||||
|
||||
/**
|
||||
* Get the containers dimensions according to the item size
|
||||
* @param width {integer} Width of the item to be opened
|
||||
* @param height {integer} Height of the item to be opened
|
||||
*/
|
||||
function _getDimensions(width,height){
|
||||
width = parseFloat(width);
|
||||
height = parseFloat(height);
|
||||
|
||||
// Get the details height, to do so, I need to clone it since it's invisible
|
||||
$pp_details = $pp_pic_holder.find('.pp_details');
|
||||
$pp_details.width(width);
|
||||
detailsHeight = parseFloat($pp_details.css('marginTop')) + parseFloat($pp_details.css('marginBottom'));
|
||||
|
||||
$pp_details = $pp_details.clone().addClass(settings.theme).width(width).appendTo($('body')).css({
|
||||
'position':'absolute',
|
||||
'top':-10000
|
||||
});
|
||||
detailsHeight += $pp_details.height();
|
||||
detailsHeight = (detailsHeight <= 34) ? 36 : detailsHeight; // Min-height for the details
|
||||
$pp_details.remove();
|
||||
|
||||
// Get the titles height, to do so, I need to clone it since it's invisible
|
||||
$pp_title = $pp_pic_holder.find('.ppt');
|
||||
$pp_title.width(width);
|
||||
titleHeight = parseFloat($pp_title.css('marginTop')) + parseFloat($pp_title.css('marginBottom'));
|
||||
$pp_title = $pp_title.clone().appendTo($('body')).css({
|
||||
'position':'absolute',
|
||||
'top':-10000
|
||||
});
|
||||
titleHeight += $pp_title.height();
|
||||
$pp_title.remove();
|
||||
|
||||
// Get the container size, to resize the holder to the right dimensions
|
||||
pp_contentHeight = height + detailsHeight;
|
||||
pp_contentWidth = width;
|
||||
pp_containerHeight = pp_contentHeight + titleHeight + $pp_pic_holder.find('.pp_top').height() + $pp_pic_holder.find('.pp_bottom').height();
|
||||
pp_containerWidth = width;
|
||||
}
|
||||
|
||||
function _getFileType(itemSrc){
|
||||
if (itemSrc.match(/youtube\.com\/watch/i) || itemSrc.match(/youtu\.be/i)) {
|
||||
return 'youtube';
|
||||
}else if (itemSrc.match(/vimeo\.com/i)) {
|
||||
return 'vimeo';
|
||||
}else if(itemSrc.match(/\b.mov\b/i)){
|
||||
return 'quicktime';
|
||||
}else if(itemSrc.match(/\b.swf\b/i)){
|
||||
return 'flash';
|
||||
}else if(itemSrc.match(/\biframe=true\b/i)){
|
||||
return 'iframe';
|
||||
}else if(itemSrc.match(/\bajax=true\b/i)){
|
||||
return 'ajax';
|
||||
}else if(itemSrc.match(/\bcustom=true\b/i)){
|
||||
return 'custom';
|
||||
}else if(itemSrc.substr(0,1) == '#'){
|
||||
return 'inline';
|
||||
}else{
|
||||
return 'image';
|
||||
};
|
||||
};
|
||||
|
||||
function _center_overlay(){
|
||||
if(doresize && typeof $pp_pic_holder != 'undefined') {
|
||||
scroll_pos = _get_scroll();
|
||||
contentHeight = $pp_pic_holder.height(), contentwidth = $pp_pic_holder.width();
|
||||
|
||||
projectedTop = (windowHeight/2) + scroll_pos['scrollTop'] - (contentHeight/2);
|
||||
if(projectedTop < 0) projectedTop = 0;
|
||||
|
||||
if(contentHeight > windowHeight)
|
||||
return;
|
||||
|
||||
$pp_pic_holder.css({
|
||||
'top': projectedTop,
|
||||
'left': (windowWidth/2) + scroll_pos['scrollLeft'] - (contentwidth/2)
|
||||
});
|
||||
};
|
||||
};
|
||||
|
||||
function _get_scroll(){
|
||||
if (self.pageYOffset) {
|
||||
return {scrollTop:self.pageYOffset,scrollLeft:self.pageXOffset};
|
||||
} else if (document.documentElement && document.documentElement.scrollTop) { // Explorer 6 Strict
|
||||
return {scrollTop:document.documentElement.scrollTop,scrollLeft:document.documentElement.scrollLeft};
|
||||
} else if (document.body) {// all other Explorers
|
||||
return {scrollTop:document.body.scrollTop,scrollLeft:document.body.scrollLeft};
|
||||
};
|
||||
};
|
||||
|
||||
function _resize_overlay() {
|
||||
windowHeight = $(window).height(), windowWidth = $(window).width();
|
||||
|
||||
if(typeof $pp_overlay != "undefined") $pp_overlay.height($(document).height()).width(windowWidth);
|
||||
};
|
||||
|
||||
function _insert_gallery(){
|
||||
if(isSet && settings.overlay_gallery && _getFileType(pp_images[set_position])=="image") {
|
||||
itemWidth = 52+5; // 52 beign the thumb width, 5 being the right margin.
|
||||
navWidth = (settings.theme == "facebook" || settings.theme == "pp_default") ? 50 : 30; // Define the arrow width depending on the theme
|
||||
|
||||
itemsPerPage = Math.floor((pp_dimensions['containerWidth'] - 100 - navWidth) / itemWidth);
|
||||
itemsPerPage = (itemsPerPage < pp_images.length) ? itemsPerPage : pp_images.length;
|
||||
totalPage = Math.ceil(pp_images.length / itemsPerPage) - 1;
|
||||
|
||||
// Hide the nav in the case there's no need for links
|
||||
if(totalPage == 0){
|
||||
navWidth = 0; // No nav means no width!
|
||||
$pp_gallery.find('.pp_arrow_next,.pp_arrow_previous').hide();
|
||||
}else{
|
||||
$pp_gallery.find('.pp_arrow_next,.pp_arrow_previous').show();
|
||||
};
|
||||
|
||||
galleryWidth = itemsPerPage * itemWidth;
|
||||
fullGalleryWidth = pp_images.length * itemWidth;
|
||||
|
||||
// Set the proper width to the gallery items
|
||||
$pp_gallery
|
||||
.css('margin-left',-((galleryWidth/2) + (navWidth/2)))
|
||||
.find('div:first').width(galleryWidth+5)
|
||||
.find('ul').width(fullGalleryWidth)
|
||||
.find('li.selected').removeClass('selected');
|
||||
|
||||
goToPage = (Math.floor(set_position/itemsPerPage) < totalPage) ? Math.floor(set_position/itemsPerPage) : totalPage;
|
||||
|
||||
$.prettyPhoto.changeGalleryPage(goToPage);
|
||||
|
||||
$pp_gallery_li.filter(':eq('+set_position+')').addClass('selected');
|
||||
}else{
|
||||
$pp_pic_holder.find('.pp_content').unbind('mouseenter mouseleave');
|
||||
// $pp_gallery.hide();
|
||||
}
|
||||
}
|
||||
|
||||
function _build_overlay(caller){
|
||||
// Inject Social Tool markup into General markup
|
||||
if(settings.social_tools)
|
||||
facebook_like_link = settings.social_tools.replace('{location_href}', encodeURIComponent(location.href));
|
||||
|
||||
settings.markup = settings.markup.replace('{pp_social}','');
|
||||
|
||||
$('body').append(settings.markup); // Inject the markup
|
||||
|
||||
$pp_pic_holder = $('.pp_pic_holder') , $ppt = $('.ppt'), $pp_overlay = $('div.pp_overlay'); // Set my global selectors
|
||||
|
||||
// Inject the inline gallery!
|
||||
if(isSet && settings.overlay_gallery) {
|
||||
currentGalleryPage = 0;
|
||||
toInject = "";
|
||||
for (var i=0; i < pp_images.length; i++) {
|
||||
if(!pp_images[i].match(/\b(jpg|jpeg|png|gif)\b/gi)){
|
||||
classname = 'default';
|
||||
img_src = '';
|
||||
}else{
|
||||
classname = '';
|
||||
img_src = pp_images[i];
|
||||
}
|
||||
toInject += "<li class='"+classname+"'><a href='#'><img src='" + img_src + "' width='50' alt='' /></a></li>";
|
||||
};
|
||||
|
||||
toInject = settings.gallery_markup.replace(/{gallery}/g,toInject);
|
||||
|
||||
$pp_pic_holder.find('#pp_full_res').after(toInject);
|
||||
|
||||
$pp_gallery = $('.pp_pic_holder .pp_gallery'), $pp_gallery_li = $pp_gallery.find('li'); // Set the gallery selectors
|
||||
|
||||
$pp_gallery.find('.pp_arrow_next').click(function(){
|
||||
$.prettyPhoto.changeGalleryPage('next');
|
||||
$.prettyPhoto.stopSlideshow();
|
||||
return false;
|
||||
});
|
||||
|
||||
$pp_gallery.find('.pp_arrow_previous').click(function(){
|
||||
$.prettyPhoto.changeGalleryPage('previous');
|
||||
$.prettyPhoto.stopSlideshow();
|
||||
return false;
|
||||
});
|
||||
|
||||
$pp_pic_holder.find('.pp_content').hover(
|
||||
function(){
|
||||
$pp_pic_holder.find('.pp_gallery:not(.disabled)').fadeIn();
|
||||
},
|
||||
function(){
|
||||
$pp_pic_holder.find('.pp_gallery:not(.disabled)').fadeOut();
|
||||
});
|
||||
|
||||
itemWidth = 52+5; // 52 beign the thumb width, 5 being the right margin.
|
||||
$pp_gallery_li.each(function(i){
|
||||
$(this)
|
||||
.find('a')
|
||||
.click(function(){
|
||||
$.prettyPhoto.changePage(i);
|
||||
$.prettyPhoto.stopSlideshow();
|
||||
return false;
|
||||
});
|
||||
});
|
||||
};
|
||||
|
||||
|
||||
// Inject the play/pause if it's a slideshow
|
||||
if(settings.slideshow){
|
||||
$pp_pic_holder.find('.pp_nav').prepend('<a href="#" class="pp_play">Play</a>')
|
||||
$pp_pic_holder.find('.pp_nav .pp_play').click(function(){
|
||||
$.prettyPhoto.startSlideshow();
|
||||
return false;
|
||||
});
|
||||
}
|
||||
|
||||
$pp_pic_holder.attr('class','pp_pic_holder ' + settings.theme); // Set the proper theme
|
||||
|
||||
$pp_overlay
|
||||
.css({
|
||||
'opacity':0,
|
||||
'height':$(document).height(),
|
||||
'width':$(window).width()
|
||||
})
|
||||
.bind('click',function(){
|
||||
if(!settings.modal) $.prettyPhoto.close();
|
||||
});
|
||||
|
||||
$('a.pp_close').bind('click',function(){ $.prettyPhoto.close(); return false; });
|
||||
|
||||
|
||||
if(settings.allow_expand) {
|
||||
$('a.pp_expand').bind('click',function(e){
|
||||
// Expand the image
|
||||
if($(this).hasClass('pp_expand')){
|
||||
$(this).removeClass('pp_expand').addClass('pp_contract');
|
||||
doresize = false;
|
||||
}else{
|
||||
$(this).removeClass('pp_contract').addClass('pp_expand');
|
||||
doresize = true;
|
||||
};
|
||||
|
||||
_hideContent(function(){ $.prettyPhoto.open(); });
|
||||
|
||||
return false;
|
||||
});
|
||||
}
|
||||
|
||||
$pp_pic_holder.find('.pp_previous, .pp_nav .pp_arrow_previous').bind('click',function(){
|
||||
$.prettyPhoto.changePage('previous');
|
||||
$.prettyPhoto.stopSlideshow();
|
||||
return false;
|
||||
});
|
||||
|
||||
$pp_pic_holder.find('.pp_next, .pp_nav .pp_arrow_next').bind('click',function(){
|
||||
$.prettyPhoto.changePage('next');
|
||||
$.prettyPhoto.stopSlideshow();
|
||||
return false;
|
||||
});
|
||||
|
||||
_center_overlay(); // Center it
|
||||
};
|
||||
|
||||
if(!pp_alreadyInitialized && getHashtag()){
|
||||
pp_alreadyInitialized = true;
|
||||
|
||||
// Grab the rel index to trigger the click on the correct element
|
||||
hashIndex = getHashtag();
|
||||
hashRel = hashIndex;
|
||||
hashIndex = hashIndex.substring(hashIndex.indexOf('/')+1,hashIndex.length-1);
|
||||
hashRel = hashRel.substring(0,hashRel.indexOf('/'));
|
||||
|
||||
// Little timeout to make sure all the prettyPhoto initialize scripts has been run.
|
||||
// Useful in the event the page contain several init scripts.
|
||||
setTimeout(function(){ $("a["+pp_settings.hook+"^='"+hashRel+"']:eq("+hashIndex+")").trigger('click'); },50);
|
||||
}
|
||||
|
||||
return this.unbind('click.prettyphoto').bind('click.prettyphoto',$.prettyPhoto.initialize); // Return the jQuery object for chaining. The unbind method is used to avoid click conflict when the plugin is called more than once
|
||||
};
|
||||
|
||||
function getHashtag(){
|
||||
var url = location.href;
|
||||
hashtag = (url.indexOf('#prettyPhoto') !== -1) ? decodeURI(url.substring(url.indexOf('#prettyPhoto')+1,url.length)) : false;
|
||||
if(hashtag){ hashtag = hashtag.replace(/<|>/g,''); }
|
||||
return hashtag;
|
||||
};
|
||||
|
||||
function setHashtag(){
|
||||
if(typeof theRel == 'undefined') return; // theRel is set on normal calls, it's impossible to deeplink using the API
|
||||
location.hash = theRel + '/'+rel_index+'/';
|
||||
};
|
||||
|
||||
function clearHashtag(){
|
||||
if ( location.href.indexOf('#prettyPhoto') !== -1 ) location.hash = "prettyPhoto";
|
||||
}
|
||||
|
||||
function getParam(name,url){
|
||||
name = name.replace(/[\[]/,"\\\[").replace(/[\]]/,"\\\]");
|
||||
var regexS = "[\\?&]"+name+"=([^&#]*)";
|
||||
var regex = new RegExp( regexS );
|
||||
var results = regex.exec( url );
|
||||
return ( results == null ) ? "" : results[1];
|
||||
}
|
||||
|
||||
})(jQuery);
|
||||
|
||||
var pp_alreadyInitialized = false; // Used for the deep linking to make sure not to call the same function several times.
|
||||
2
html/sternwarte/javascript/moment.min.js
vendored
Normal file
2
html/sternwarte/javascript/moment.min.js
vendored
Normal file
File diff suppressed because one or more lines are too long
33
html/sternwarte/javascript/sofueds.js
Normal file
33
html/sternwarte/javascript/sofueds.js
Normal file
@@ -0,0 +1,33 @@
|
||||
// Dialog zur Anzeige der Datenschutz-Erklärung
|
||||
|
||||
$(document).ready(function() {
|
||||
|
||||
// Klick auf den Anleitungs-Button
|
||||
$('#dschu').click(function() {
|
||||
$("#datenschutz").dialog('open');
|
||||
return false;
|
||||
});
|
||||
|
||||
|
||||
$("#datenschutz").dialog({
|
||||
autoOpen: false,
|
||||
width: 800,
|
||||
modal: true,
|
||||
position: 'center',
|
||||
title: 'Datenschutz',
|
||||
open:
|
||||
function() {
|
||||
$(this).load('datenschutztext.php');
|
||||
},
|
||||
buttons: [
|
||||
{
|
||||
text: "Schließen",
|
||||
click : function() {
|
||||
$(this).dialog("close");
|
||||
},
|
||||
width: 150,
|
||||
}
|
||||
],
|
||||
});
|
||||
|
||||
});
|
||||
100
html/sternwarte/javascript/sternwarte.js
Normal file
100
html/sternwarte/javascript/sternwarte.js
Normal file
@@ -0,0 +1,100 @@
|
||||
// sternwarte.js rxf 2020-09-25
|
||||
// Diverse Hilfsroutinen für die einzelnen Seiten
|
||||
//
|
||||
|
||||
$(document).ready(() => {
|
||||
|
||||
let maintenance = false;
|
||||
|
||||
// Optionen für die Anzeige der Fotos
|
||||
// $("a[rel^='prettyPhoto']").prettyPhoto({
|
||||
// animationSpeed: 'normal', /* fast/slow/normal */
|
||||
// padding: 20, /* padding for each side of the picture */
|
||||
// opacity: 1, /* Value betwee 0 and 1 */
|
||||
// showTitle: false, /* true/false */
|
||||
// allowresize: true, /* true/false */
|
||||
// counter_separator_label: '/', /* The separator for the gallery counter 1 "of" 2 */
|
||||
// theme: 'dark_rounded', /* light_rounded / dark_rounded / light_square / dark_square */
|
||||
// callback: function () {
|
||||
// }
|
||||
// });
|
||||
|
||||
// Klick auf den Datenschutz-Button
|
||||
$('#dschu').click(function() {
|
||||
$("#datenschutz").dialog('open');
|
||||
return false;
|
||||
});
|
||||
|
||||
// Anzeige der Datenschutzerklärung
|
||||
$("#datenschutz").dialog({
|
||||
autoOpen: false,
|
||||
width: 800,
|
||||
modal: true,
|
||||
position: 'center',
|
||||
title: 'Datenschutz',
|
||||
open:
|
||||
function() {
|
||||
$(this).load('datenschutztext.html');
|
||||
},
|
||||
buttons: [
|
||||
{
|
||||
text: "Schließen",
|
||||
click : function() {
|
||||
$(this).dialog("close");
|
||||
},
|
||||
width: 150,
|
||||
}
|
||||
],
|
||||
});
|
||||
|
||||
|
||||
// Click auf 'Zeiten' auf der HOME-Page: Dialogbox öffnen
|
||||
$('a[href="#zeiten"]').click(() => {
|
||||
$("#fzeiten").dialog('open');
|
||||
return false;
|
||||
});
|
||||
|
||||
// Anzeige der Führungszeiten
|
||||
$("#fzeiten").dialog({
|
||||
autoOpen: false,
|
||||
width: 800,
|
||||
modal: true,
|
||||
position: 'center',
|
||||
title: 'Führungszeiten',
|
||||
open:
|
||||
function() {
|
||||
$(this).load('fuehrungen_txt.html');
|
||||
},
|
||||
buttons: [
|
||||
{
|
||||
text: "Schließen",
|
||||
click : function() {
|
||||
$(this).dialog("close");
|
||||
},
|
||||
width: 150,
|
||||
}
|
||||
],
|
||||
});
|
||||
|
||||
// ggf. den Maintenance-Dialog einblenden
|
||||
var dialogMaint = $('#maintdialog').dialog({
|
||||
autoOpen:false,
|
||||
closeOnEscape: false,
|
||||
open: function(event, ui) {
|
||||
$(".ui-dialog-titlebar-close").hide();
|
||||
$(this).load('maint.html', function() {
|
||||
});
|
||||
},
|
||||
width:800,
|
||||
modal: true,
|
||||
resizable:false,
|
||||
position: {my:'center top+30%', at: 'center top+30%'},
|
||||
});
|
||||
|
||||
if (maintenance == true) {
|
||||
dialogMaint.dialog('open');
|
||||
}
|
||||
|
||||
|
||||
});
|
||||
|
||||
Reference in New Issue
Block a user