

            /* ***  alle Funktionen Copyright (c) 2002 - 2004 Peter Kerl  ***

                ***  private Nutzung unter Erhalt der Copyright-Hinweise 
                               gestattet und erwünscht  ***

                    ***  schaut mal vorbei bei www.PeterKerl.de  *** */






function getBody(){
	var bodytag = '<body bgcolor="#' + farbSet.bgColor + '" text="#' + farbSet.fgColor + '" linkcolor="#' + farbSet.linkColor + '" alinkcolor="#' + farbSet.alinkColor + '" vlinkcolor="#' + farbSet.vlinkColor + '">';
	document.frmFarben.bodyTag.value = bodytag;
	window.location.href="#BT";
}
function setFarbe(farbe){
	eval('farbSet.' + curElement + '=\"' + farbe + '\"');
	eval('document.' + curElement + '=\"#' + farbe + '\"');
}
var curElement = "bgColor";    // gewähltes Farbelement
var farbSet = new FarbSet;
function FarbSet(){
	this.bgColor = "FFFF00";
	this.fgColor= "000000";
	this.linkColor = "0000CC";
	this.alinkColor = "FFFFFF";
	this.vlinkColor = "0000CC";
}
function helligkeit(farbe, wert){
	var faktor = 1 + wert/100;
	var red = eval("0x" + getColor(farbe, "red"));
	if (red < wert) red = wert+10;
	red = makeByte(red*faktor);
	var green = eval("0x" + getColor(farbe, "green"));
	if (green < wert) green = wert+10;
	green = makeByte(green*faktor);
	var blue = eval("0x" + getColor(farbe, "blue"));
	if (blue < wert) blue = wert+10;
	blue = makeByte(blue*faktor);
	
	return getHexString(red, 2) + getHexString(green, 2) + getHexString(blue, 2);
}
function intensity(farbe, wert){
	var faktor = 1 + wert/100;
	var red = eval("0x" + getColor(farbe, "red"));
	var green = eval("0x" + getColor(farbe, "green"));
	var blue = eval("0x" + getColor(farbe, "blue"));
	var level = Math.round((red+green+blue) / 3);
	if (red > level) red = red * faktor;
	else if (red < level) red = red / faktor;
	red = makeByte(red);
	if (green > level) green = green * faktor;
	else if (green < level) green = green / faktor;
	green = makeByte(green);
	if (blue > level) blue = blue * faktor;
	else if (blue < level) blue = blue / faktor;
	blue = makeByte(blue);

	return getHexString(red, 2) + getHexString(green, 2) + getHexString(blue, 2);
}
function negativ(farbe){
	var red = eval("0x" + getColor(farbe, "red"));
	var green = eval("0x" + getColor(farbe, "green"));
	var blue = eval("0x" + getColor(farbe, "blue"));
	red = 255 - red;
	green = 255 - green;
	blue = 255 - blue;
	return getHexString(red, 2) + getHexString(green, 2) + getHexString(blue, 2);
}
function oneColor(farbe, teilfarbe, wert){
	var faktor = 1 + wert/100;
	var faktor2 = 1 + wert/200;
	var red = eval("0x" + getColor(farbe, "red"));
	if (teilfarbe == "red" && red < wert) red = wert+20;
	var green = eval("0x" + getColor(farbe, "green"));
	if (teilfarbe == "green" && green < wert) green = wert+20;
	var blue = eval("0x" + getColor(farbe, "blue"));
	if (teilfarbe == "blue" && blue < wert) blue = wert+20;
	if (teilfarbe == "red"){
		red = makeByte(red*faktor);
		green = makeByte(green/faktor2);
		blue = makeByte(blue/faktor2);
	}
	else if (teilfarbe == "green"){
		green = makeByte(green*faktor);
		red = makeByte(red/faktor2);
		blue = makeByte(blue/faktor2);
	}
	else{
		blue = makeByte(blue*faktor);
		red = makeByte(red/faktor2);
		green = makeByte(green/faktor2);
	}
	return getHexString(red, 2) + getHexString(green, 2) + getHexString(blue, 2);
}
function makeByte(wert){
	if (!wert || wert=="" || isNaN(wert)) wert = 0;
	wert = Math.round(wert);
	wert = Math.min(wert, 255);
	wert = Math.max(wert, 0);
	return wert;
}
function getColor(rgb, farbe){
	switch (farbe){
		case "red": return rgb.substring(0,2); break;
		case "green": return rgb.substring(2,4); break;
		case "blue": return rgb.substring(4,6); break;
	}
}
function getHexString(wert, stellen){
	wert = Math.round(wert);
	if (!stellen) stellen = 1;    // Anzahl Ziffern
	var hex = "", ziffer = "0";
	do{
		ziffer = getHexZiffer(wert % 16);
		wert = Math.floor(wert / 16);
		hex = ziffer + hex
	} while(wert > 0)
	while (hex.length < stellen){
		hex = "0" + hex;
	}
	return hex;
}
function getHexZiffer(wert){
	if (wert < 10) return wert.toString();
	switch (wert){
		case 10: return "A"; break;
		case 11: return "B"; break;
		case 12: return "C"; break;
		case 13: return "D"; break;
		case 14: return "E"; break;
		case 15: return "F"; break;
	}
}
function sendColor() {
	var op = opener.input, doc = document.frmFarben;
	op.red.value = doc.inpRed.value;
	op.green.value = doc.inpGreen.value;
	op.blue.value = doc.inpBlue.value;
	opener.startFraktal();
}

function plusminusRed(z) {
	var red = parseInt(document.frmFarben.inpRed.value);
	if (z == "+") red += 5;
	else red -= 5;
	red= makeByte(red);
	document.frmFarben.inpRed.value = red;
	deziChange();
}
function plusminusGreen(z) {
	var green = parseInt(document.frmFarben.inpGreen.value);
	if (z == "+") green += 5;
	else green -= 5;
	green = makeByte(green);
	document.frmFarben.inpGreen.value = green;
	deziChange();
}
function plusminusBlue(z) {
	var blue = parseInt(document.frmFarben.inpBlue.value);
	if (z == "+") blue += 5;
	else blue -= 5;
	blue = makeByte(blue);
	document.frmFarben.inpBlue.value = blue;
	deziChange();
}
// dezimale Farbeingaben
function deziChange(){
	var red = parseInt(document.frmFarben.inpRed.value);
	red = makeByte(red);
	red = getHexString(red, 2);
	var green = parseInt(document.frmFarben.inpGreen.value);
	green = makeByte(green);
	green = getHexString(green, 2);
	var blue = parseInt(document.frmFarben.inpBlue.value);
	blue = makeByte(blue);
	blue = getHexString(blue, 2);
	document.frmFarben.inpFarbe.value = red + green + blue;
	setFarbe(red + green + blue);
}
// hexdezimale Eingabe
function hexChange(farbe){
	var red = eval("0x" + getColor(farbe, "red"));
	document.frmFarben.inpRed.value = red;
	var green = eval("0x" + getColor(farbe, "green"));
	document.frmFarben.inpGreen.value = green;
	var blue = eval("0x" + getColor(farbe, "blue"));
	document.frmFarben.inpBlue.value = blue;
	setFarbe(farbe);
}
function elementChange(element){
	curElement=element;
	var farbe = eval("farbSet." + curElement);
	document.frmFarben.inpFarbe.value = farbe;
	hexChange(farbe);
}

function farbPlusMinus(z){
	var wert = makeByte(document.frmFarben.farbStep.value);
	if (z == "-") wert = -wert;
	var farbe = oneColor(document.frmFarben.inpFarbe.value, document.frmFarben.optFarbPlus.value, wert);
	document.frmFarben.inpFarbe.value=farbe;
	hexChange(farbe);
	setFarbe(farbe);
}
function hellPlusMinus(z){
	var wert = makeByte(document.frmFarben.hellStep.value);
	if (z == "-") wert = -wert;
	var farbe = helligkeit(document.frmFarben.inpFarbe.value, wert)
	document.frmFarben.inpFarbe.value=farbe;
	hexChange(farbe);
	setFarbe(farbe);
}


