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"; }