function neuesErgebnisEintragen(bildgroesse,annaeherung,zeit) {
// die Startwerte für Schrittgröße und Qualität festlegen
if (schritt == 0){
ergebnistabelle[schritt][0] = 50; // Schrittgröße
ergebnistabelle[schritt][1] = 100; // Qualität
}
// alle anderen Werte Übernehmen
ergebnistabelle[schritt][2] = parseInt(bildgroesse);
ergebnistabelle[schritt][3] = annaeherung;
ergebnistabelle[schritt][4] = zeit;
// das neue Ergebnis ausgeben
neuesErgebnisAusgeben();
}
function neuesErgebnisAusgeben() {
document.getElementById("et["+(schritt)+"][0]").innerHTML = schritt;
for (i = 1; i < 5; i++) {
document.getElementById("et["+(schritt)+"]["+(i)+"]").innerHTML = ergebnistabelle[schritt][i];
}
document.getElementById("st_"+schritt).className = "aktiv";
neuesErgebnisAuswerten();
}
function neuesErgebnisAuswerten() {
wiederholung = false;
// Dateeigröße ist kleiner als maximale Größe
if (ergebnistabelle[schritt][2] <= 460800) {
if(schritt == 0) {
//alert("ende wegen nix zu optimieren!");
ermittleOptimalesErgebnis();
return;
}
}
if (schritt < 9) {
for (i = 0; i < schritt; i++) {
if (ergebnistabelle[schritt][1] == ergebnistabelle[i][1]) {
// Abbruch wegen Wiederholung
wiederholung = true;
frames['countdown'].countdownSetzen(0);
//alert("wiederholung! und Ende!");
ermittleOptimalesErgebnis();
return;
}
}
if (wiederholung == false) {
// nächster Schritt wird eingeleitet
schritt++;
ergebnistabelle[schritt] = new Array();
ergebnistabelle[schritt][0] = Math.round(ergebnistabelle[schritt-1][0]/2);
if (ergebnistabelle[schritt-1][2] == 460800) {
// Volltreffer!
ermittleOptimalesErgebnis();
return;
}
if (ergebnistabelle[schritt-1][2] > 460800) {
ergebnistabelle[schritt][1] = Math.round(ergebnistabelle[schritt-1][1] - ergebnistabelle[schritt-1][0]);
//q1 darf nicht unterschritten werden
if (ergebnistabelle[schritt][1] <= 1) {
ergebnistabelle[schritt][1] = 1;
}
}
if (ergebnistabelle[schritt-1][2] < 460800) {
ergebnistabelle[schritt][1] = Math.round(ergebnistabelle[schritt-1][1] + ergebnistabelle[schritt-1][0]);
//q100 darf nicht überschritten werden
if (ergebnistabelle[schritt][1] > 100) {
ergebnistabelle[schritt][1] = 100;
}
}
// neue Berechnung anregen
neuesErgebnisErrechnen(ergebnistabelle[schritt][1]);
return;
}
}
// Ordentliches Ende der Reihe nach dem letzten Schritt
if (schritt == 9) {
frames['countdown'].countdownSetzen(0);
//alert ("Ende wegen Ende.");
ermittleOptimalesErgebnis();
return;
}
}
function neuesErgebnisErrechnen(qualitaet) {
//phpthumbdatei im iframe aufrufen
parent.frames['errechner'].location.href = "errechner.php?qualitaet="+qualitaet;
// Restzeit errechnen und anzeigen
// Durschnittliche Zeit pro Schritt für die Vergangenheit errechnen
summe = 0;
for (i = 0; i < schritt; i++) {
summe = parseInt(summe) + parseInt(ergebnistabelle[i][4]);
}
zps = summe / i;
rest = Math.round((10 - i) * zps);
frames['countdown'].countdownSetzen(rest);
document.getElementById("st_"+(schritt)).className = "inberechnung";
//alert("noch ein Schritt wird gestartet!");
}
// Diese Funktion muss bei onLoad des iframes aufgerufen werden
function uebernimmNeuesErgebnis(bildgroesse,annaeherung,zeit) {
//alert("uebernimm"+bildgroesse);
parent.neuesErgebnisEintragen(bildgroesse,annaeherung,zeit);
}
function ermittleOptimalesErgebnis() {
// Falls das Optimum schon bei Schritt Null eintritt
if (schritt == 0) {
parent.window.location.href = "ende.php?qualitaet=";
return;
}
// Falls das Optimum gesucht werden muss
optimal = 0;
for (i = 0; i < schritt; i++) {
if (ergebnistabelle[i][2] <= 460800 && ergebnistabelle[i][2] > optimal) {
optimal = ergebnistabelle[i][2];
stelle_optimal = i;
}
}
// es konnte unter die Speicherplatzvorgabe komprimiert werden
if (typeof stelle_optimal == "number") {
//alert("Eine Meldung für den Programmierer: "+ergebnistabelle[stelle_optimal][1]+". Bitte ignorieren.");
parent.window.location.href = "ende.php?qualitaet="+ergebnistabelle[stelle_optimal][1]+"&schritte="+schritt;
} else {
parent.window.location.href = "ende.php?qualitaet=1&schritte="+schritt;
}
}
function fensterOeffnen(adresse, breite, hoehe) {
if (scrollbalkenNoetig() == true) {
Fenster1 = window.open(adresse, "Zweitfenster", "width="+breite+",height="+hoehe+",left=100,top=200,scrollbars=yes,resizable=yes");
} else {
Fenster1 = window.open(adresse, "Zweitfenster", "width="+breite+",height="+hoehe+",left=100,top=200,scrollbars=no,resizable=yes");
}
Fenster1.focus();
}
function groesseUebergeben(adresse) {
opener.location.href = adresse;
window.close();
}
function countdownAnzeigen() {
if (rest_sekunden >= 0) {
document.getElementById('countdown').innerHTML = rest_sekunden;
rest_sekunden = rest_sekunden - 0,5;
window.setTimeout("countdownAnzeigen()", 500);
} else {
document.getElementById('countdown').innerHTML = 0;
}
}
function countdownSetzen(sekunden) {
rest_sekunden = sekunden;
if (rest_sekunden > 20) {
document.getElementById('countdowntext').style.display = "block";
}
}
function jsCookieCheck() {
if (navigator.cookieEnabled == true) {
window.location.href = "upload2.php";
}
}
function scrollbalkenNoetig() {
outputbreite = parseInt(0);
outputhoehe = parseInt(0);
//screen.availHeight
//screen.availWidth
if ((outputbreite > screen.availWidth) || (outputhoehe > screen.availHeight)) {
scrollbalkennoetig = true;
} else {
scrollbalkennoetig = false;
}
return scrollbalkennoetig;
}
function zeigeGeschaerfteSegmente(src, raster_breite_original, abstand_links, links, abstand_oben, oben) {
// die Parameter links und oben sind als Koordinaten zu verstehen
for (radius = 1; radius <= 4; radius++) {
for (staerke = 1; staerke <= 4; staerke++) {
if (document.getElementById("r"+radius+"s"+staerke)) {
document.getElementById("r"+radius+"s"+staerke).src = "images/warten.gif";
}
}
}
document.getElementById("l"+links+"o"+oben).className = "segment_aktiv";
zGS(src, raster_breite_original, abstand_links, links, abstand_oben, oben)
}
function zGS(src, raster_breite_original, abstand_links, links, abstand_oben, oben) {
for (radius = 1; radius <= 4; radius++) {
for (staerke = 1; staerke <= 4; staerke++) {
if (document.getElementById("r"+radius+"s"+staerke)) {
document.getElementById("r"+radius+"s"+staerke).src = "_php/phpthumb/phpThumb.php?src="+src+"&q=96&f=jpeg&sw="+raster_breite_original+"&sh="+raster_breite_original+"&sx="+(abstand_links+(raster_breite_original*links))+"&sy="+(abstand_oben+(raster_breite_original*oben))+"&fltr[]=usm|"+(staerke*25)+"|"+radius+"|5";
}
}
}
}
function rahmenStaerkeIndikator(position) {
document.getElementById("rahmenStaerkeIndikator").style.height = (position)+"px";
}
function setzeRahmenStaerke(staerke) {
rahmenstaerke = (0-staerke);
document.getElementById("dasBild").style.borderWidth = (0-staerke)+"px";
//alert("fuer den programmierer: "+rahmenstaerke);
document.getElementById("rahmenStaerkeStatus").style.height = (staerke)+"px";
rahmenStaerkeIndikator(staerke);
}
function setzeRahmenFarbe(farbe) {
rahmenfarbe = farbe;
document.getElementById("dasBild").style.borderColor = farbe;
}
function zeigeDialog(dialogid) {
document.getElementById(dialogid).style.display = "block";
}
function versteckeDialog(dialogid) {
document.getElementById(dialogid).style.display = "none";
}
function schalteDialog(dialogid) {
if (document.getElementById(dialogid).style.display == "block") {
versteckeDialog(dialogid);
}
if (document.getElementById(dialogid).style.display != "block") {
zeigeDialog(dialogid);
}
}
function rahmenUebernehmen() {
opener.location.href = "kompression.php?rahmenfarbe="+rahmenfarbe.substring(1, 7)+"&rahmenstaerke="+rahmenstaerke;
window.close();
}
function zeigeArtefakte(neueqs) {
document.getElementById('qs_'+Math.round(qualitaetsstufe)).className = "qualitaetsstufen";
qualitaetsstufe = neueqs;
document.getElementById('qsindikator').innerHTML = "Qualitätsstufe "+Math.round(neueqs);
document.getElementById('bild').src = "_php/phpthumb/phpThumb.php?src=../../images/artefakte/"+motiv+".jpg&q="+(qualitaetsstufe*10);
document.getElementById('bild2').src =
"_php/phpthumb/phpThumb.php?src=../../images/artefakte/"+motiv+".jpg&sw=100&sh=100&sx=25&sy=100&q="+(qualitaetsstufe*10);
document.getElementById('qs_'+Math.round(neueqs)).className = "qualitaetsstufen_aktiv";
}
function setzeMotiv(neuesmotiv) {
document.getElementById('qs_'+Math.round(qualitaetsstufe)).className = "qualitaetsstufen";
qualitaetsstufe = 0.1;
motiv = neuesmotiv;
zeigeArtefakte(qualitaetsstufe);
}
function hoverArtefakte(befehl) {
if (befehl == "verstecke") {
document.getElementById('qsindikator').innerHTML = "maximale Qualität";
document.getElementById('bild').src = "_php/phpthumb/phpThumb.php?src=../../images/artefakte/"+motiv+".jpg&q="+100;
document.getElementById('bild2').src = "_php/phpthumb/phpThumb.php?src=../../images/artefakte/"+motiv+".jpg&sw=100&sh=100&sx=25&sy=100&q="+100;
} else if (befehl == "zeige") {
document.getElementById('qsindikator').innerHTML = "Qualitätsstufe "+Math.round(qualitaetsstufe);
document.getElementById('bild').src = "_php/phpthumb/phpThumb.php?src=../../images/artefakte/"+motiv+".jpg&q="+(qualitaetsstufe*10);
document.getElementById('bild2').src = "_php/phpthumb/phpThumb.php?src=../../images/artefakte/"+motiv+".jpg&sw=100&sh=100&sx=25&sy=100&q="+(qualitaetsstufe*10);
}
}
function weiterLesen(text, link) {
document.getElementById(text).style.display = "block";
document.getElementById(link).style.display = "none";
}
function pruefeManuelleZielgroesse(parameter, wert, verhaeltnis) {
if (isNaN(wert) == true) {
document.getElementById("tip").innerHTML = "Du willst mich wohl ärgern?!";
wert = 1000;
if (parameter == "breite") {
document.getElementById("manuelle_breite").value = wert;
}
if (parameter == "hoehe") {
document.getElementById("manuelle_hoehe").value = wert;
}
}
max_dimension = 1000;
if (parameter == "breite") {
breite = wert;
if (breite > max_dimension) {
breite = max_dimension;
document.getElementById("manuelle_breite").value = breite;
}
hoehe = Math.round(breite/verhaeltnis);
if (hoehe > max_dimension) {
hoehe = max_dimension;
document.getElementById("manuelle_hoehe").value = hoehe;
breite = Math.round(hoehe * verhaeltnis);
document.getElementById("manuelle_breite").value = breite;
}
document.getElementById("manuelle_hoehe").value = hoehe;
}
if (parameter == "hoehe") {
hoehe = wert;
if (hoehe > max_dimension) {
hoehe = max_dimension;
document.getElementById("manuelle_hoehe").value = hoehe;
}
breite = Math.round(hoehe*verhaeltnis);
if (breite > max_dimension) {
breite = max_dimension;
document.getElementById("manuelle_breite").value = breite;
hoehe = Math.round(breite / verhaeltnis);
document.getElementById("manuelle_hoehe").value = hoehe;
}
document.getElementById("manuelle_breite").value = breite;
}
}
function benutzeManuelleZielgroesse() {
breite = document.getElementById('manuelle_breite').value;
hoehe = document.getElementById('manuelle_hoehe').value;
verhaeltnis = 0;
if (breite < 500 && hoehe < 500) {
if (breite == 0 || hoehe == 0) {
if (breite == 0) {
neue_breite = 1;
document.getElementById("manuelle_breite").value = neue_breite;
}
if (hoehe == 0) {
neue_hoehe = 1;
document.getElementById("manuelle_hoehe").value = neue_hoehe;
}
} else {
if (verhaeltnis > 1) {
neue_breite = 500;
neue_hoehe = Math.max(Math.round(neue_breite / verhaeltnis), 1);
document.getElementById("manuelle_hoehe").value = neue_hoehe;
document.getElementById("manuelle_breite").value = neue_breite;
alert("Das Photo sollte wenigstens 500 Pixel breit sein.\n Ich habe die Breite und Höhe diesbezüglich angepasst");
} else {
neue_hoehe = 500;
neue_breite = Math.max(Math.round(neue_hoehe * verhaeltnis), 1);
document.getElementById("manuelle_hoehe").value = neue_hoehe;
document.getElementById("manuelle_breite").value = neue_breite;
alert("Das Photo sollte wenigstens 500 Pixel hoch sein.\n Ich habe die Breite und Höhe diesbezüglich angepasst.");
}
}
} else {
window.location.href = "kompression.php?outputbreite="+breite+"&outputhoehe="+hoehe+"&manuelle_zielgroesse=true";
}
}
function setzeSchaerfeparameterAktiv(id) {
// alle anderen abschalten
for (i = 1; i <= 5; i++) {
document.getElementById('einfach_'+i).className = "";
}
if (id.indexOf("radius") != "-1" || id == "keinen") {
for (i = 0; i <= 9; i++) {
document.getElementById('radius_'+i).className = "";
}
}
if (id.indexOf("staerke") != "-1" || id == "keinen") {
for (i = 0; i <= 9; i++) {
document.getElementById('staerke_'+i).className = "";
}
}
if (id.indexOf("schwellwert") != "-1" || id == "keinen") {
for (i = 0; i <= 9; i++) {
document.getElementById('schwellwert_'+i).className = "";
}
}
// den richtigen anschalten
if (id != "keinen") {
document.getElementById(id).className = "schaerfe_parameter_aktiv";
}
}
function setzeSchaerfeLink(schaerfe_staerke, schaerfe_radius, schaerfe_schwellwert) {
parent.document.getElementById('uebernimmSchaerfeLink').href = "kompression.php?staerke="+schaerfe_staerke+"&radius="+schaerfe_radius+"&schwellwert="+schaerfe_schwellwert;
}
function schaerfeUmschalter(alte_id, neue_id) {
setzeSchaerfeparameterAktiv('keinen');
document.getElementById(alte_id+'_link').className = "schaerfe_umschalter";
document.getElementById(neue_id+'_link').className = "schaerfe_umschalter_aktiv";
document.getElementById(neue_id+'_text').style.display = "block";
document.getElementById(alte_id+'_text').style.display = "none";
frames['errechner'].location.href = "errechner_schaerfe2.php?staerke=0&radius=0&schwellwert=0";
}
function pruefe_em_maxgroesse(wert) {
// wenn die Eingabe keine Zahl ist, dann den Wert auf einen einfachen Upload setzen
if (isNaN(wert) == true) {
if (wert != "") {
wert = 450;
document.getElementById("em_maxgroesse").value = wert;
}
} else {
// die Eingabe ist eine Zahl
// die Eingabe muss unbedingt größer als 0 sein
if (wert != "" && wert <= 0) {
wert = 450;
document.getElementById("em_maxgroesse").value = wert;
}
// Warnmeldung, wenn man ausserhalb der fc-Bedingungen liegt
if (wert > 450) {
document.getElementById("em_maxgroesse").style.borderColor = "red";
document.getElementById("em_maxgroesse").style.backgroundColor = "#FFFFAD";
document.getElementById("tip1").innerHTML = "
Bedenke, daß dieser Speicherplatzbedarf nicht den Bedingungen entspricht und es zur nachträglichen fc-seitigen Kompression bzw. Verkleinerung kommen kann.";
} else {
document.getElementById("em_maxgroesse").style.borderColor = "black";
document.getElementById("em_maxgroesse").style.backgroundColor = "white";
document.getElementById("tip1").innerHTML = "";
}
}
}
function pruefe_em_optimale_qualitaet(wert) {
// wenn die Eingabe keine Zahl ist, dann den Wert auf optimale Qualität setzen
if (isNaN(wert) == true) {
if (wert != "") {
wert = 100;
document.getElementById("em_optimale_qualitaet").value = wert;
}
} else {
// die Eingabe ist eine Zahl
// die Eingabe muss unbedingt größer als 0 sein
if (wert != "" && wert <= 0) {
wert = 100;
document.getElementById("em_optimale_qualitaet").value = wert;
}
// Warnmeldung, wenn man mehr als OQ eingibt
if (wert > 100 && wert <= 100) {
document.getElementById("em_optimale_qualitaet").style.borderColor = "red";
document.getElementById("em_optimale_qualitaet").style.backgroundColor = "#FFFFAD";
document.getElementById("tip2").innerHTML = "
Bedenke, daß diese Qualität sehr große Dateien erzeugen kann. Ab der Voreinstellung von 100 sind keine sichtbaren Quallitätsgewinne mehr zu erzielen. Jedoch nimmt ab dieser Grenze der Speicherplatzbedarf - und damit auch die Zeit die der Betrachter während des Bildaufbaus wartet - in großen Schritten zu.";
} else if (wert > 100 && wert > 100) {
wert = 100;
document.getElementById("em_optimale_qualitaet").value = wert;
document.getElementById("em_optimale_qualitaet").style.borderColor = "black";
document.getElementById("em_optimale_qualitaet").style.backgroundColor = "white";
document.getElementById("tip2").innerHTML = "";
} else {
document.getElementById("em_optimale_qualitaet").style.borderColor = "black";
document.getElementById("em_optimale_qualitaet").style.backgroundColor = "white";
document.getElementById("tip2").innerHTML = "";
}
}
}
function zeigeBeschreibung(did, i) {
document.getElementById('infobox_'+did).innerHTML = beschreibungen[did][i];
}
function diagrammUmschalter(did) {
for (i = 0; i < 8; i++) {
document.getElementById('did_'+i+'_link').className = "schaerfe_umschalter";
}
document.getElementById('did_'+did+'_link').className = "schaerfe_umschalter_aktiv";
for (i = 0; i < 8; i++) {
document.getElementById('did_'+i).style.display = "none";
}
document.getElementById('did_'+did).style.display = "block";
}