// Version 5.5.1 - Last modified 6/4/2005

function paintBBSCallback(value) {
	if (value == "start") {
		PaletteSave();
	}
	if (value == "header") {
		var d = document.form;
		var forms = new String();
		var n = new String();
		var m = new String();
		var u = new String();
		var p = new String();
		var t = new String();
		var c = new String();
		n = d.name.value;
		m = d.mail.value;
		u = d.url.value;
		p = d.password.value;
		t = d.title.value;
		c = d.mesg.value;
		var sp = new String();
		sp = d.speed.options[d.speed.selectedIndex].value;
		var f = d.flower.checked;
		if (f == true) {
			f = 1;
		} else {
			f = "";
		}
		forms += "name\t" + n + "\fmail\t" + m + "\furl\t" + u + "\ftitle\t" + t + "\fmesg\t" + c + "\fpasswrd\t" + p + "\fflower\t" + f + "\fpaint_time\t1011521433\fpaint_add\t\fagent\tMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; Q312461)\fapp\tsii" + "\fanime_speed\t" + sp;
		return forms;
	}
}

var Palettes = new Array();
//Default
Palettes[0] = "#000000\n#FFFFFF\n#B47575\n#888888\n#FA9696\n#C096C0\n#FFB6FF\n#8080FF\n#25C7C9\n#E7E58D\n#E7962D\n#99CB7B\n#FCECE2\n#F9DDCF";
//Hadairo
Palettes[1] = "#FFF0DC\n#52443C\n#FFE7D0\n#5E3920\n#FFD6C0\n#B06A54\n#FFCBB3\n#C07A64\n#FFC0A3\n#DEA197\n#FFB7A2\n#ECA385\n#000000\n#FFFFFF";
//Red
Palettes[2] = "#FFEEF7\n#FFE6E6\n#FFCAE4\n#FFC4C4\n#FF9DCE\n#FF7D7D\n#FF6AB5\n#FF5151\n#FF2894\n#FF0000\n#CF1874\n#BF0000\n#851B53\n#800000";
//Yellow
Palettes[3] = "#FFE3D7\n#FFFFDD\n#FFCBB3\n#FFFFA2\n#FFA275\n#FFFF00\n#FF8040\n#D9D900\n#FF5F11\n#AAAA00\n#DB4700\n#7D7D00\n#BD3000\n#606000";
//Green
Palettes[4] = "#C6FDD9\n#E8FACD\n#8EF09F\n#B9E97E\n#62D99D\n#9ADC65\n#1DB67C\n#65B933\n#1A8C5F\n#4F8729\n#136246\n#2B6824\n#0F3E2B\n#004000";
//Blue
Palettes[5] = "#DFF4FF\n#C1FFFF\n#80C6FF\n#6DEEFC\n#60A8FF\n#44D0EE\n#1D56DC\n#209CCC\n#273D8F\n#2C769A\n#1C2260\n#295270\n#000040\n#003146";
//Purple
Palettes[6] = "#E9D2FF\n#E1E1FF\n#DAB5FF\n#C1C1FF\n#CE9DFF\n#8080FF\n#B366FF\n#6262FF\n#9428FF\n#3D44C9\n#6900D2\n#33309E\n#3F007D\n#252D6B";
//Brown
Palettes[7] = "#ECD3BD\n#F7E2BD\n#E4C098\n#DBC7AC\n#C8A07D\n#D9B571\n#896952\n#C09450\n#825444\n#AE7B3E\n#5E4435\n#8E5C2F\n#493830\n#5F492C";
//Character
Palettes[8] = "#FFEADD\n#DED8F5\n#FFCAAB\n#9C89C4\n#F19D71\n#CF434A\n#52443C\n#F09450\n#5BADFF\n#FDF666\n#0077D9\n#4AA683\n#000000\n#FFFFFF";
//Pastel
Palettes[9] = "#F6CD8A\n#FFF99D\n#89CA9D\n#C7E19E\n#8DCFF4\n#8CCCCA\n#9595C6\n#94AAD6\n#AE88B8\n#9681B7\n#F49F9B\n#F4A0BD\n#8C6636\n#FFFFFF";
//Sougen
Palettes[10] = "#C7E19E\n#D1E1FF\n#A8D59D\n#8DCFE0\n#7DC622\n#00A49E\n#528413\n#CBB99C\n#00B03B\n#766455\n#007524\n#5B3714\n#0F0F0F\n#FFFFFF";
//Moe
Palettes[11] = "#FFFF80\n#F4C1D4\n#EE9C00\n#F4BDB0\n#C45914\n#ED6B9E\n#FEE7DB\n#E76568\n#FFC89D\n#BD3131\n#ECA385\n#AE687E\n#0F0F0F\n#FFFFFF";
//Grayscale
Palettes[12] = "#FFFFFF\n#808080\n#EDEDED\n#6D6D6D\n#DBDBDB\n#5B5B5B\n#C9C9C9\n#494949\n#B6B6B6\n#363636\n#A4A4A4\n#121212\n#929292\n#000000";
//Main
Palettes[13] = "#000000\n#FFFFFF\n#B47575\n#888888\n#FA9696\n#C096C0\n#FFB6FF\n#8080FF\n#25C7C9\n#E7E58D\n#E7962D\n#99CB7B\n#FCECE2\n#F9DDCF";
//Wac!
Palettes[14] = "#A610A1\n#000000\n#A67BB0\n#595959\n#CC8FCA\n#999999\n#F8D2E6\n#E0E0E0\n#FAE6F1\n#00B5D9\n#AE005F\n#00CD43\n#E60087\n#FFCCCC";

function setPalette() {
	var d = document;
	var paintapp = d.getElementById("paintbbs");
	paintapp.setColors(Palettes[d.Palette.select.selectedIndex]);
	if (! d.grad.view.checked) {
		return;
	};
	GetPalette();
}

function PaletteSave() {
	var d = document;
	var paintapp = d.getElementById("paintbbs");
	Palettes[0] = String(paintapp.getColors());
}
var cutomP = 0;

function PaletteNew() {
	var d = document;
	var paintapp = d.getElementById("paintbbs");
	var p = String(paintapp.getColors());
	var s = d.Palette.select;

	Palettes[s.length] = p;
	cutomP++;
	str = prompt("Save Current Palette?", "Custom " + cutomP);
	if (str == null || str == "") {
		cutomP--;
		return;
	}
	s.options[s.length] = new Option(str);
	if (s.length < 30) {
		s.size = s.length;
	}
}

function PaletteRenew() {
	var d = document;
	var paintapp = d.getElementById("paintbbs");
	Palettes[d.Palette.select.selectedIndex] = String(paintapp.getColors());
}

function PaletteDel() {
	var p = Palettes.length;
	var s = document.Palette.select;
	var i = s.selectedIndex;
	if (i == -1) {
		return;
	}

	flag = confirm(s.options[i].text + ": Delete This Palette?");
	if (!flag) {
		return;
	}
	s.options[i] = null;
	while (i < p) {
		Palettes[i] = Palettes[i + 1];
		i++;
	}
	if (s.length < 30) {
		s.size = s.length;
	}
}

function P_Effect(v) {
	var v = parseInt(v);
	var x = 1;
	if (v == 255) {
		x =- 1;
	}
	var d = document.getElementById("paintbbs");
	var p = String(d.getColors()).split("\n");
	var l = p.length;
	var s = "";

	for (n = 0; n < l; n++) {
		R = v + (parseInt("0x" + p[n].substr(1,2)) * x);
		G = v + (parseInt("0x" + p[n].substr(3,2)) * x);
		B = v + (parseInt("0x" + p[n].substr(5,2)) * x);

		if(R > 255) {
			R = 255;
		} else if(R < 0) {
			R = 0;
		}

		if(G > 255) {
			G = 255;
		} else if(G < 0) {
			G = 0;
		}

		if(B > 255) {
			B = 255;
		} else if(B < 0) {
			B = 0;
		}
		s += "#"+Hex(R)+Hex(G)+Hex(B)+"\n";
	}
	d.setColors(s);
}

function PaletteMatrixGet() {
	var paintapp = document.getElementById("paintbbs");
	var d = document.Palette;
	var p = Palettes.length;
	var s = d.select;
	var m = d.m_m.selectedIndex;
	var t = d.setr;

	t.value = "!Palette\n"+String(paintapp.getColors());
	switch(m) {
		case 0:
		case 2:
		default:
			n=0;
			c=0;
			while (n < p) {
				if(s.options[n] != null) {
					t.value = t.value + "\n!" + s.options[n].text + "\n" + Palettes[n];
					c++;
				}
				n++;
			}
			alert (c + " palettes retrieved.\n\nCopy the palette data into a text file to save it.");
			break;
		case 1:
			alert("Current palette retrieved.\n\nCopy the palette data into a text file to save it.");
			break;
	}
	t.value = t.value + "\n!Matrix";
}

function PalleteMatrixSet() {
	var m = document.Palette.m_m.selectedIndex;
	str = "Click OK to import the palette. Make sure you have chosen the desired import option.\n\n";
	switch(m){
		case 0:
		default:
			flag = confirm(str + "Replace all palettes: kills and replaces the existing palettes with the new ones.");
			break;
		case 1:
			flag = confirm(str + "Replace active palette: replaces the curretnly selected palette only.");
			break;
		case 2:
			flag = confirm(str + "Append palette: adds the new palettes without changing the existing ones.");
			break;
	}
	if (!flag) return;

	PaletteSet();
	if(s.length < 30) {
		s.size = s.length;
	} else {
		s.size=30;
	}
}

function PaletteSet() {
	var paintapp = document.getElementById("paintbbs");
	var d = document.Palette;
	var se = d.setr.value;
	var s = d.select;
	var m = d.m_m.selectedIndex;
	var l = se.length;

	if (l < 1) {
		alert("Oops. Palette field is empty.");
		return;
	}

	var n = 0;
	var o = 0;
	var e = 0;

	switch (m) {
		case 0:
		default:
			n = s.length;
			while(n > 0) {
				n--;
				s.options[n] = null;
			}
		case 2:
			i = s.options.length;
			n = se.indexOf("!", 0) + 1;
			if(n == 0)
				return;
			while(n<l) {
				e = se.indexOf("\n#", n);
				if (e == -1) return;

				pn = se.substring(n, e - 1);
				o = se.indexOf("!",e);
				if(o == -1) return;
				pa = se.substring(e + 1, o - 2);
				if (pn != "Palette") {
					if (i >= 0)
						s.options[i] = new Option(pn);
					Palettes[i] = pa;
					i++;
				} else {
					document.paintbbs.setColors(pa);
				}
				n = o + 1;
			}
			break;
		case 1:
			n = se.indexOf("!", 0) + 1;
			if (n == 0)
				return;
			e = se.indexOf("\n#", n);
			o = se.indexOf("!", e);
			if (e >= 0) {
				pa = se.substring(e + 1, o - 2);
			}
			document.paintbbs.setColors(pa);
	}
}

function Chenge_() {
	var st = document.grad.pst.value;
	var ed = document.grad.ped.value;

	if(isNaN(parseInt("0x" + st))) return;
	if(isNaN(parseInt("0x" + ed))) return;
	GradView("#" + st, "#" + ed);
}

function ChengeGrad() {
	var d = document;
	var paintapp = d.getElementById("paintbbs");
	var st = d.grad.pst.value;
	var ed = d.grad.ped.value;
	Chenge_();

	var degi_R = parseInt("0x" + st.substr(0,2));
	var degi_G = parseInt("0x" + st.substr(2,2));
	var degi_B = parseInt("0x" + st.substr(4,2));
	var R = parseInt((degi_R - parseInt("0x" + ed.substr(0,2)))/15);
	var G = parseInt((degi_G - parseInt("0x" + ed.substr(2,2)))/15);
	var B = parseInt((degi_B - parseInt("0x" + ed.substr(4,2)))/15);

	if (isNaN(R)) R = 1;
	if (isNaN(G)) G = 1;
	if (isNaN(B)) B = 1;
	var p = new String();

	for(cnt=0,m1=degi_R,m2=degi_G,m3=degi_B; cnt<14; cnt++,m1-=R,m2-=G,m3-=B) {
		if ((m1 > 255)||(m1 < 0)) {
			R *= -1;
			m1 -= R;
		}
		if ((m2 > 255)||(m2 < 0)) {
			G *= -1;
			m2 -= G;
		}
		if ((m3 > 255)||(m3 < 0)) {
			B *= -1;
			m2 -= B;
		}
		p += "#"+Hex(m1)+Hex(m2)+Hex(m3)+"\n";
	}

	paintapp.setColors(p);
}

function Hex(n) {
	var n = parseInt(n);
	if (n < 0) n *= -1;
	var hex = new String();
	var m;
	var k;
	while(n > 16) {
		m = n;
		if (n > 16) {
			n = parseInt(n / 16);
			m -= (n * 16);
		}
		k = Hex_(m);
		hex = k + hex;
	}
	k = Hex_(n);
	hex = k + hex;

	while(hex.length < 2) {
		hex="0" + hex;
	}
	return hex;
}

function Hex_(n) {
	if(! isNaN(n)) {
		if(n == 10) {
			n = "A";
		} else if(n == 11) {
			n="B";
		} else if(n == 12) {
			n="C";
		} else if(n == 13) {
			n="D";
		} else if(n == 14) {
			n="E";
		} else if(n == 15) {
			n="F";
		}
	} else {
		n = "";
	}
	return n;
}

function GetPalette() {
	var d = document;
	var paintapp = d.getElementById("paintbbs");
	var p = String(paintapp.getColors());

	if (p == "null" || p == "")
		return;

	var ps = p.split("\n");
	var st = d.grad.p_st.selectedIndex;
	var ed = d.grad.p_ed.selectedIndex;
	d.grad.pst.value = ps[st].substr(1.6);
	d.grad.ped.value = ps[ed].substr(1.6);

	GradSelC();
	GradView(ps[st], ps[ed]);
}

function GradSelC() {
	if (! d.grad.view.checked)
		return;

	var d = document.grad;
	var l = ps.length;
	var pe = "";

	for (n = 0; n < l; n++) {
		R = 255 + (parseInt("0x" + ps[n].substr(1, 2)) * -1);
		G = 255 + (parseInt("0x" + ps[n].substr(3, 2)) * -1);
		B = 255 + (parseInt("0x" + ps[n].substr(5, 2)) * -1);
		if (R > 255) {
			R = 255;
		} else if (R < 0) {
			R = 0;
		}

		if (G > 255) {
			G = 255;
		} else if (G < 0) {
			G = 0;
		}

		if (B > 255) {
			B = 255;
		} else if (B < 0) {
			B = 0;
		}
		pe += "#" + Hex(R) + Hex(G) + Hex(B) + "\n";
	}
	pe = pe.split("\n");
	for (n = 0; n < l; n++) {
		d.p_st.options[n].style.background = ps[n];
		d.p_st.options[n].style.color = pe[n];
		d.p_ed.options[n].style.background = ps[n];
		d.p_ed.options[n].style.color = pe[n];
	}
}

function GradView(st, ed){
	var d = document;
	if (! d.grad.view.checked)
		return;

	var html = '<table bgcolor="white" cellspacing="0" cellpadding="0"><tr><td colspan="2"><tt><font color="#6699FF"><b>GRADATION</b></tt></td></tr><tr><td><tt><font color="#6699FF">START </tt></td><td><font color="' + st + '" SIZE="4">(S)</font></td></tr><tr><td><font color="#6699FF"><tt>END </tt></td><td><font color="' + ed + '" size="4">(E)</font></td></tr></table>';

	if (d.layers) {
		with (d.layers["psft"]) {
			left = window.innerWidth - 120;
			top = window.pageYOffset + 5;
			d = document;
			d.open();
			d.write(html);
			d.close();
		}
	} else if (d.all) {
		with (d.all("psft")) {
			style.left = d.body.offsetWidth - 120;
			style.top = d.body.scrollTop + 5;
			innerHTML = html;
		}
	}
}

function showHideLayer() {
	var d = document;
	var l;
	if (d.layers) {
		l = d.layers["psft"];
	} else {
		l = d.all("psft").style;
	}

	if (! d.grad.view.checked) {
		l.visibility = "hidden";
	}
	if (d.grad.view.checked) {
		l.visibility = "visible";
		GetPalette();
	}
}
