<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2//EN">
<html>
<head>
<title>Farbregler mit JavaScript</title>
<style type="text/css">
.content_main { width: 600px; margin: 0px 0px 0px 0px; padding: 0; overflow: hidden; background-color: #fff;}
.content_farbreglerbox { width: 294px; height: 80px; margin: 0px 0px 0px 0px; padding: 10px 0px 0px 15px; overflow: hidden; background-image:url(farbregler_background.png);}
.content_farbbeispielbox { width: 80px; height: 80px; margin: 0px 0px 0px 0px; padding: 20px 0px 0px 15px; overflow: hidden; }
.content_colorbasicbox { width: 1px; height: 10px; margin: 0px 0px 0px 0px; padding: 0px 0px 0px 0px; overflow: hidden;}
.content_beispielbox { width: 50px; height: 50px; margin: 0px 0px 0px 0px; padding: 0px 0px 0px 0px; overflow: hidden; background-color: #000000;}
.content_balken {display: block; clear: left; padding: 10px 10px 10px 10px; margin: 0px 0px 0px 0px;}
.neben {float: left;}
.content_uebernehemen { width: 22px; height: 22px; margin: 0px 0px 0px 0px; padding: 0px 0px 0px 0px; overflow: hidden; background-color: #FD5700;}
.input_farbwert {font-family:Verdana, Arial, Helvetica, sans-serif; font-size:12pt; font-weight:normal; color:#222; border: 1px solid #FD5700; width: 80px; padding: 0px 0px 0px 0px; margin: 0px 0px 0px 24px;}
.content_headline {font-family: Verdana, Arial, Helvetica, sans-serif; font-size:10pt; font-style:normal; color:#000; font-weight:bold;text-decoration:none; line-height: 12pt;}
.content_text {font-family: Verdana, Arial, Helvetica, sans-serif; font-size:10pt; font-style:normal; color:#000; font-weight:normal; text-decoration:none; line-height: 12pt;}
</style>
<script language="JavaScript">
function HEXinDEZ(dezimalzahl){
var faktor = 1;
var wert = 0;
var val;
for(var i = dezimalzahl.length-1; i >= 0; i--){
var char=dezimalzahl.substring(i, i+1);
switch(char) {
case "0":
var val = 0;
break;
case "1":
var val = 1;
break;
case "2":
var val = 2;
break;
case "3":
var val = 3;
break;
case "4":
var val = 4;
break;
case "5":
var val = 5;
break;
case "6":
var val = 6;
break;
case "7":
var val = 7;
break;
case "8":
var val = 8;
break;
case "9":
var val = 9;
break;
case "a":
var val = 10;
break;
case "A":
var val = 10;
break;
case "b":
var val = 11;
break;
case "B":
var val = 11;
break;
case "c":
var val = 12;
break;
case "C":
var val = 12;
break;
case "d":
var val = 13;
break;
case "D":
var val = 13;
break;
case "e":
var val = 14;
break;
case "E":
var val = 14;
break;
case "f":
var val = 15;
break;
case "F":
var val = 15;
break;
default:
alert("Hexadezimalzahlen bestehen nur aus den Ziffern 0 bis F!")
}
wert += faktor * val;
faktor *= 16;
}
return wert;
}
function DEZinHEX (dezimalzahl) {
max = 255;
if (dezimalzahl > max)
return "null";
if (dezimalzahl <= -1)
return "null";
var z = new Array("0", "1", "2", "3", "4", "5", "6", "7", "8", "9","A", "B", "C", "D", "E", "F");
var ergebnis = "";
if (dezimalzahl == 0)
return "00";
var i = 1, v = dezimalzahl, r = 0;
while (v > 15) {
v = Math.floor(v / 16);
i++;
}
v = dezimalzahl;
for (j=i; j >= 1; j--) {
ergebnis = ergebnis + z[Math.floor(v / Math.pow(16,j-1))];
v = v - (Math.floor(v / Math.pow(16,j-1)) * Math.pow(16,j-1));
}
if (dezimalzahl <= 15)
ergebnis = "0" + ergebnis;
return ergebnis;
}
Array.prototype.findArrayIndex = function( value, strict ){
if( typeof value == "undefined" ) {
return "fehler";
}
var retVal = "fehler";
if( strict ) {
for( key in this ) {
if( this[key] === value ) {
retVal = key;
break;
}
}
} else {
for( key in this ) {
if( this[key] == value ) {
retVal = key;
break;
}
}
}
return retVal;
}
function setRGBvorgabe() {
var eingabe = farbeingabefeld.value;
//alert(eingabe);
var eingabelaenge = eingabe+"A";
var eingabelaenge = eingabelaenge.length -1;
var eingabearray = eingabe+"A";
var eingabearray = eingabearray.split('');
var abfall_A = eingabearray.pop('');
var eingabepruefung = '';
var Hexsystem = new Array("0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "A", "B", "C", "D", "E", "F", "a", "b", "c", "d", "e", "f");
if(eingabelaenge != 6){
alert("Der Farbwert muß auch 6 Zeichen bestehen. Dein Farbwert besteht aus "+eingabelaenge+" Zeichen!");
} else {
for(var x=0 ; x<eingabelaenge; x++){
eingabepruefung = Hexsystem.findArrayIndex(eingabearray[x]);
if(eingabepruefung == "fehler"){
alert("Bei der Eingabe ist ein Fehler unterlaufen. Bitte benutze für eine Hexadezimale Zahl nur die Zeichen \"0\", \"1\", \"2\", \"3\", \"4\", \"5\", \"6\", \"7\", \"8\", \"9\", \"A\", \"B\", \"C\", \"D\", \"E\" und \"F\" !");
break;
}
}
if(eingabepruefung != false){
eingabearray = eingabe+"A";
eingabearray = eingabearray.split('');
abfall_A = eingabearray.pop('');
rot=HEXinDEZ(eingabe[0]+eingabe[1]);
gruen=HEXinDEZ(eingabe[2]+eingabe[3]);
blau=HEXinDEZ(eingabe[4]+eingabe[5]);
var order="rgb("+rot+", "+gruen+", "+blau+")";
//document.write("order: "+order+" <br>");
setRGBComponent(order, 'rgb');
}
}
}
function setRGBComponent(farbangabedezimal, komponente) {
var farbangabehex = farbangabedezimal;
rgb_farbarray = farbangabedezimal.substring(4, farbangabedezimal.indexOf(")")).split(",");
var balken = new Array();
farbangabehex = DEZinHEX(rgb_farbarray[0])+DEZinHEX(rgb_farbarray[1])+DEZinHEX(rgb_farbarray[2]);
document.getElementById("farbbeispiel").style.backgroundColor="#"+farbangabehex;
document.getElementById("farbeingabefeld").value=farbangabehex;
if(komponente == "rgb"){
balken.push(document.getElementById("rotbalken").getElementsByTagName("div"));
balken.push(document.getElementById("gruenbalken").getElementsByTagName("div"));
balken.push(document.getElementById("blaubalken").getElementsByTagName("div"));
var rgb_i = 0;
for( var j = 0; j < 3; j++ ) {
elements = balken[j];
for( var i = 0; i < elements.length; i++ ) {
current = elements[i].style.backgroundColor.substring(4, elements[i].style.backgroundColor.indexOf(")")).split(",");
current[rgb_i] = rgb_farbarray[rgb_i];
elements[i].style.backgroundColor = "rgb(" + current.join(",") + ")";
}
}
} else {
switch(komponente) {
case "r":
balken.push(document.getElementById("gruenbalken").getElementsByTagName("div"));
balken.push(document.getElementById("blaubalken").getElementsByTagName("div"));
var rgb_i = 0;
break;
case "g":
balken.push(document.getElementById("rotbalken").getElementsByTagName("div"));
balken.push(document.getElementById("blaubalken").getElementsByTagName("div"));
var rgb_i = 1;
break;
case "b":
balken.push(document.getElementById("rotbalken").getElementsByTagName("div"));
balken.push(document.getElementById("gruenbalken").getElementsByTagName("div"));
var rgb_i = 2;
break;
}
for( var j = 0; j < 2; j++ ) {
elements = balken[j];
for( var i = 0; i < elements.length; i++ ) {
current = elements[i].style.backgroundColor.substring(4, elements[i].style.backgroundColor.indexOf(")")).split(",");
current[rgb_i] = rgb_farbarray[rgb_i];
elements[i].style.backgroundColor = "rgb(" + current.join(",") + ")";
}
}
}
}
function farbregler(){
var rotfarborder = 0;
var gruenfarborder = 0;
var blaufarborder = 0;
var stufen=256;
document.write( "<div class='content_balken' id='rotbalken'>" );
for( rot=0; rot<stufen; rot++ ){
document.write( "<div class='content_colorbasicbox neben' style='background-color: rgb(" + rot + "," + gruenfarborder + "," + blaufarborder + ");' onClick='setRGBComponent(this.style.backgroundColor, \"r\");'/></div><!-- content_11054_colorbasicbox -->" );
}
document.write( "</div><!-- content_balken -->" );
document.write( "<div class='content_balken' id='gruenbalken'>" );
for( gruen=0; gruen<stufen; gruen++ ){
document.write( "<div class='content_colorbasicbox neben' style='background-color: rgb(" + rotfarborder + "," + gruen + "," + blaufarborder + ");' onClick='setRGBComponent(this.style.backgroundColor, \"g\");'/></div><!-- content_11054_colorbasicbox -->" );
}
document.write( "</div><!-- content_balken -->" );
document.write( "<div class='content_balken' id='blaubalken'>" );
for( blau=0; blau<stufen; blau++ ){
document.write( "<div class='content_colorbasicbox neben' style='background-color: rgb(" + rotfarborder + "," + gruenfarborder + "," + blau + ");' onClick='setRGBComponent(this.style.backgroundColor, \"b\");'/></div><!-- content_11054_colorbasicbox -->" );
}
document.write( "</div><!-- content_balken -->" );
}
</script>
</head>
<body>
<div class='content_main'>
<span class='content_headline'>Farbeinstellung:</span><br>
<span class='content_text'>Um Deine Wunschfarbe zu finden, klicke auf die drei Farbbalken um die Farbwerte für Rot, Grün und Blau zu erhöhen oder zu verringern, oder klick einfach die Farbe an, die Dir am besten gefällt. Du kannst natürlich auch den Farbcode als Hexadezimalwert direkt angeben.</span>
<div class='content_main'>
<div class='content_farbreglerbox neben' >
<script language="JavaScript">
farbregler();
</script>
</div><!-- content_farbreglerbox -->
<div class='content_farbbeispielbox' >
<div class='content_beispielbox' id='farbbeispiel'/></div><!-- content_11054_beispielbox -->
</div><!-- content_farbbeispielbox -->
<input id='farbeingabefeld' class="input_farbwert" type="text" name="accound_bildzahl" value="ABCDEF">
<input type="button" value="x" class='content_uebernehemen' onClick=setRGBvorgabe()>
</div><!-- content_main -->
</div><!-- content_main -->
</body>
</html>