
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] <= 409600) {
		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] == 409600) {
			// Volltreffer!
				ermittleOptimalesErgebnis();
				return;
			}

			if (ergebnistabelle[schritt-1][2] > 409600) {
				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] < 409600) {
				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] <= 409600 && 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&auml;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&auml;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&auml;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 = "<strong>Du willst mich wohl &auml;rgern?!</strong>";
		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 = 400;
			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 = 400;
			document.getElementById("em_maxgroesse").value = wert;
		}
		// Warnmeldung, wenn man ausserhalb der fc-Bedingungen liegt
		if (wert > 400) {
			document.getElementById("em_maxgroesse").style.borderColor = "red";
			document.getElementById("em_maxgroesse").style.backgroundColor = "#FFFFAD";
			document.getElementById("tip1").innerHTML = "<br>Bedenke, da&szlig; dieser Speicherplatzbedarf nicht den Bedingungen entspricht und es zur nachtr&auml;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 = "<br>Bedenke, da&szlig; diese Qualit&auml;t sehr gro&szlig;e Dateien erzeugen kann. Ab der Voreinstellung von 100 sind keine sichtbaren Quallit&auml;tsgewinne mehr zu erzielen. Jedoch nimmt ab dieser Grenze der Speicherplatzbedarf - und damit auch die Zeit die der Betrachter w&auml;hrend des Bildaufbaus wartet - in gro&szlig;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";
}