// script by : redbird77@earthlink.net (http://home.earthlink.net/~redbird77)
var gFade = new Array()

function makePreview(f)
{
	var s = ''

	s += '<html>\n<head>\n<title>Preview<\/title>\n<\/head>\n'
	s += '<body bgcolor=' + f.col_custom.value + '>\n<font face="Verdana,Arial,Helvetica">\n'
	s += '<H2>Here is what your text will look like.<\/h2>\n<hr noshade>\n<b>\n'
	s += f.results.value + '\n'
	s += '<\/b>\n<hr noshade>\n<p align=center>WebTV users, click back to return to Nifty Text.<\/p>\n'
	s += '<\/font>\n<\/body>\n<\/html>'

	var w = window.open('', 'winPreview', 'width=500,height=500,resizable=yes,scrollbars=yes,screenX=0,screenY=0,top=0,left=0')
	w.document.write(s)
	w.document.close()
}

function put_ran_col()
{
	document.frmProp.tcfStart.value = get_random_color()
	document.frmProp.tcfEnd.value   = get_random_color()
}

function make_html(f)
{
	var FC      = '<font color="'
	var COL     = f.schemes.options[f.schemes.selectedIndex].text
	var DES     = f.designs.options[f.designs.selectedIndex].text

	var tag, ltr, wave;
	var txt    = f.userText.value;
	var uH     = parseFloat(f.userHue.value) / 100
	var uS     = parseFloat(f.userSat.value) / 100
	var uB     = parseFloat(f.userBri.value) / 100
	var uL     = parseFloat(f.userLit.value) / 100
	var inc    = parseFloat(f.cycles.value)  / txt.length
	var inc_wv = 1
	var num_wv = 1

	f.results.value = '<'+ '!' + '-- Nifty Text : created by redbird77@earthlink.net -->\n'

	if (COL == '2 Color Fade')
	{
		f.results.value += two_color_fade(txt, f.tcfStart.value, f.tcfEnd.value)
		return
	}

	for (var i = 0; i < txt.length; i++)
	{	
		wave = DES == 'Wavy' ? (' SIZE=' + num_wv) : ''
		
		if (COL == 'Rainbow (HSB)')
		{
			tag = hsb_to_hex(uH, uS, uB) + wave
			uH += inc
		}
		else if (COL == 'Rainbow (HLS)')
		{
			tag = hls_to_hex(uH, uL, uS) + wave
			uH += inc
		}
		//else if (COL == '2 Color Fade')
			//tag = gFade[i] + wave
		else if (COL == 'Brightness Fade (HSB)')
		{
			tag = hsb_to_hex(uH, uS, uB) + wave
			uB += inc
		}
		else if (COL == 'Saturation Fade (HSB)')
		{
			tag = hsb_to_hex(uH, uS, uB) + wave
			uS += inc
		}
		else if (COL == 'Saturation Fade (HLS)')
		{
			tag = hls_to_hex(uH, uL, uS) + wave
			uS += inc
		}
		else if (COL == 'Lightness Fade (HLS)')
		{
			tag = hls_to_hex(uH, uL, uS) + wave
			uL += inc
		}
		else if (COL == 'Peppy Random')
			tag = '#' + get_random_color() + wave

		//else if (COL == 'Peppy Random')tag = FC + hls_to_hex(uH, uS, Math.random()) + wave + '>';

		ltr = txt.charAt(i)
	
		if (ltr != ' ')
		{
			if (DES == 'Alternating Case' && (i & 1)) ltr = ltr.toUpperCase()
			else if (DES == 'Alt-itized') ltr = CHRtoALT(ltr)

			f.results.value += '<font color="' + tag + '">' + ltr + '<\/font>'
	
			num_wv += inc_wv

			if (num_wv > 6 || num_wv < 2) inc_wv *= -1
		}
		else f.results.value += ltr
	}
}

// from ../multi.js file
function two_color_fade(txt, color1, color2)
{
	var htm = ''

	if (!txt.length) return htm
	
	var c1 = hex_to_rgb(color1)
	var c2 = hex_to_rgb(color2)
	
	var inc = new Array()

	for (var i = 0; i < 3; i++)
		if (txt.length - 1) inc[i] = (c2[i] - c1[i]) / (txt.length - 1)
			
	for (var i = 0; i < txt.length; i++)
	{
		htm += '<font color="' + rgb_to_hex(c1[0], c1[1], c1[2]) + '">' + txt.charAt(i) + '<\/font>'
		
		for (var j = 0; j < 3; j++) c1[j] += inc[j]
	}

	return htm
}

//OLD OLD STUFF//////////////////////////////////////////////////////////
var uLim = new Array()
var lLim = new Array()
function makeFadeArray(textLen, startingHexCol, endingHexCol){
	// fades between 2 colors
	// can have any number of cycles
	var col, col2
	var inc = new Array()
	col  = hex_to_rgb(startingHexCol)
	col2 = hex_to_rgb(endingHexCol)
	for (var i = 0; i < 3; i++){
		//alert('col[' + i + '] : ' + col[i] + 'col2[' + i + '] : ' + col2[i])
		inc[i] = ((col2[i] - col[i]) / (textLen - 1)) * parseFloat(document.frmProp.cycles.value)
	}
	//alert('RedInc:' + inc[0] + '\nGreenInc:' + inc[1] + '\nBlueInc:' + inc[2]);
	// fin max and min of col[] and col2[], to change inc when col[j] reaches there
	for (var i = 0; i < 3; i++){
		lLim[i] = col[i] < col2[i] ? col[i] : col2[i]
		uLim[i] = col[i] < col2[i] ? col2[i] : col[i]
	}
	for (var i = 0; i < textLen; i++){
		gFade[i] = RGBtoHEX(keepInBounds(col[0], 0), keepInBounds(col[1], 1), keepInBounds(col[2], 2))
		gCol[i] = keepInBounds(col[0], 0) + ',' + keepInBounds(col[1], 1) + ',' + keepInBounds(col[2], 2)
		for (var j = 0; j < 3; j++){
			col[j] += inc[j]
			if (col[j] <= lLim[j] || col[j] >= uLim[j]) inc[j] *= -1
		}
	}
}
//sHTM += '<font color=' + RGBtoHEX(c1[0], c1[1], c1[2]) + '>' + c1[0] + ',' + c1[1] + ',' + c1[2] + '<\/font>\n'
//alert('inc[' + i + ']: ' + inc[i])
//alert(txt.length)
//alert('quotient: ' + quotient + '\nremainder: ' + remainder)
//alert('chunks[' + i + '] : ' + chunks[i] + '\ntot : ' + tot)
//tot += chunks[i]
//alert('two_color_fade between ' + colors[color_count] + ' and ' + colors[color_count + 1] + '\ni: ' + i)
function keepInBounds(num, x){
	if (num > uLim[x]) return uLim[x]
	if (num < lLim[x]) return lLim[x]
	return num
}