<script language="javascript">
function omzetten(waarde)
{
//http://www.homepage-total.de/javascript/archiv/scripte2/hex-dez.html was een goeie bron
var hex = "0123456789ABCDEF";
var inp;
var out;
inp = parseInt(waarde);
//alert(inp);
out = "";
while(inp != 0)
{
out=hex.charAt(inp%16)+out;
inp=inp >> 4;
}
if(out == "")
{
out = "00";
}
if(out.length == 1)
{
out = "0"+out;
}
return out;
}
function gradient_toevoegen(form, field)
{
var start_kleur = window.prompt("Geef het hex. getal in van je eerste kleur (FF0000):");
var eind_kleur = window.prompt("Geef het hex. getal in van je laatste kleur (0000FF):");
if(start_kleur.length != 6)
{
alert("Je eerste kleur is ongeldig! Een voorbeeld is FF0000");
location.href = "gradient.php";
}
if(eind_kleur.length != 6)
{
alert("Je laatste kleur is ongeldig! Een voorbeeld is 0000FF");
location.href = "gradient.php";
}
//selectie krijgen en het aantal chars van de selectie tellen
if(window.getSelection) //FireFox
{
var start = document.forms[form].elements[field].selectionStart; //0
var end = document.forms[form].elements[field].selectionEnd; //5
var aantal = end-start;
}
//als aantal kleiner is dan 0 kunnen er errors ontstaan
if(aantal <= 2){
alert("Je moet tenminste 2 karakters selecteren om een gradient toe te voegen aan je tekst!");
}else{
/*
We starten bij rood (FF0000) en laatste kleur is blauw (0000FF)
we halen de RGB waarden uit
als aantal 5 is dan moet het scrips 5 stappen uitvoeren
hello is het woord
[font=color1]h[/font]
[font=color2]e[/font]
[font=color3]l[/font]
[font=color4]l[/font]
[font=color5]o[/font]
rood -> blauw
rgb = new Array(255,0,0,0,0,15);
standaard definities van de kleur is:
color1 = start_kleur
-----TUSSENKLEUREN<->GRADIANT-------
color5 = eind_kleur
we hebben nog 3 kleur (5-2 kleuren = 3 kleuren te defineren) te defineren
voor de RODE kleuren
Hoogste R-waarde van de 2 opgegeven kleuren van de laagste R-waarde aftrekken en die delen door het aantal
te defineren stappen plus 1 => 4
voorbeeld: R van rood is 255 en R van blauw is 0
255-0 = 255
255/4 = 63.75
afronden => 64
dus de R waarden van de grandient worden:
255
191
127
63
0
hetzelfde voor de G en B waarden
*/
var rgb = new Array(
parseInt("0x"+start_kleur.substr(0,2)),
parseInt("0x"+start_kleur.substr(2,2)),
parseInt("0x"+start_kleur.substr(4,2)),
parseInt("0x"+eind_kleur.substr(0,2)),
parseInt("0x"+eind_kleur.substr(2,2)),
parseInt("0x"+eind_kleur.substr(4,2))
);
//array's maken
var red = new Array();
var green = new Array();
var blue = new Array();
//definerende steps bereken
var defineren = aantal-1;
//de R-waarden van de gradient instellen
if(rgb[0] > rgb[3]){
var r_steps = Math.round(rgb[0] / defineren);
}else{
var r_steps = Math.round(rgb[3] / defineren);
var r_steps = -r_steps;
}
//de G-waarden van de gradient instellen
if(rgb[1] > rgb[4]){
var g_steps = Math.round(rgb[1] / defineren);
}else{
var g_steps = Math.round(rgb[4] / defineren);
var g_steps = -g_steps;
}
//de B-waarden van de gradient instellen
if(rgb[2] > rgb[5]){
var b_steps = Math.round(rgb[2] / defineren);
}else{
var b_steps = Math.round(rgb[5] / defineren);
var b_steps = -b_steps;
}
//standaarwaarden
red[0] = rgb[0];
green[0] = rgb[1];
blue[0] = rgb[2];
//het instellen van de R-waarden
for(var i = 1 ; i < defineren ; i++)
{
red[i] = red[i-1] - r_steps;
}
//het instellen van de G-waarden
for(var i = 1 ; i < defineren ; i++)
{
green[i] = green[i-1] - g_steps;
}
//het instellen van de B-waarden
for(var i = 1 ; i < defineren ; i++)
{
blue[i] = blue[i-1] - b_steps;
}
//eindwaarden
red[defineren] = rgb[3];
green[defineren] = rgb[4];
blue[defineren] = rgb[5];
/*
Omzetten: 255 0 0 => FF0000
FF0000
BF0040
7F0080
3F00C0
0000FF
*/
var einde = new Array();
for(var i = 0 ; i < aantal ; i++)
{
einde[i] = omzetten(red[i]);
einde[i] += omzetten(green[i]);
einde[i] += omzetten(blue[i]);
}
/*
DE RETURN VOORBEREIDEN
*/
var ForStart = document.forms[form].elements[field].value;
var Return = ForStart.substr(0, start);
Return += "<font color=\"#"+einde[0]+"\">"+ForStart.substr(start, 1)+"</font>";
for(var i = 1 ; i < aantal ; i++)
{
Return += "<font color=\"#"+einde[i]+"\">"+ForStart.substr(start + i, 1)+"</font>";
}
//Return += "[color="+einde[aantal]+"]"+ForStart.substr(start + aantal, 1)+"[/color]";
Return += ForStart.substr(end, ForStart.length);
//terugsturen
document.forms[form].elements[field].value = Return;
}
}
</script>