var mod_h_width = 215;
var fl_h_width = 175;
var fl_h_height = 75;
var fl_h_min_width = 146;
var fl_h_name = 'ccm_h1.swf';
var h_max_width = 600;

var mod_v_width = 142;
var fl_v_width = 95;
var fl_v_height = 140;
var fl_v_min_width = 79;
var fl_v_name = 'ccm_v1.swf';
var v_max_width = 350;

//var h_to_v_m = 135/mod_h_width;
//var v_to_h_m = mod_h_width/135;
//alert(h_to_v_m + " | " + v_to_h_m);
var h_to_v_m = (mod_v_width*.96429)/mod_h_width;
var v_to_h_m = mod_h_width/(mod_v_width*.96429);
//alert(h_to_v_m + " | " + v_to_h_m);

var ccm_bld_clicked = false;

function modPreview() {

	var f = document.forms.moduleForm;

	if(!checkReg()) { return false; }
	if(!checkTOU(f)) { return false; }

	// validate
	if(!check_is_number(f.elements['ccm_width'])) { return false; }
	if(!check_is_number(f.elements['ccm_pad'],'',1)) { return false; }
	if(!check_is_hexcolor(f.elements['ccm_bgc'],'',1)) { return false; }
	if(!check_is_hexcolor(f.elements['ccm_b1c'],'',1)) { return false; }
	if(!check_is_hexcolor(f.elements['ccm_b2c'],'',1)) { return false; }
	if(!check_is_hexcolor(f.elements['ccm_tc'],'',1)) { return false; }
	if(!check_is_hexcolor(f.elements['ccm_hc'],'',1)) { return false; }

	// general form values
	var layout;
	if(f.elements['layout'][0].checked) { layout='v'; } else { layout='h'; }
	var ccm_hs = f.elements['ccm_hs'].options[f.elements['ccm_hs'].selectedIndex].value;
	var ccm_js = f.elements['ccm_js'].checked?1:0;
	var ccm_myspace = f.elements['ccm_myspace'].checked?1:0;

	// date/time
	var ccm_df = f.elements['ccm_df'].options[f.elements['ccm_df'].selectedIndex].value;
	var ccm_dfd = f.elements['ccm_dfd'].checked?1:0;
	var ccm_tf = f.elements['ccm_tf'].options[f.elements['ccm_tf'].selectedIndex].value;
	var ccm_secs = f.elements['ccm_secs'].checked?1:0;

	// width
	var ccm_width = f.elements['ccm_width'].value;
	var ccm_pad = f.elements['ccm_pad'].value;
	var max_width = layout=='h'?h_max_width:v_max_width;
	if(ccm_width>max_width) {
		alert("Oops! Maximum width is "+max_width+" pixels.");
		ccm_width=max_width;
	}
	if(ccm_width) {
		var size_m = layout=='v' ? ccm_width/mod_v_width : ccm_width/mod_h_width;
		if(!ccm_pad) { ccm_pad = 15*size_m; }
		var fl_width = ccm_width - (ccm_pad*2) - 8;
		if(layout=='h') {
			if(fl_width<fl_h_min_width) {
				var adj_width = round(fl_h_min_width + (ccm_pad*2) + 8);
				alert("Oops! Width is too narrow. The text will be too small to read. Try "+adj_width);
				fl_width=fl_h_min_width;
				ccm_width=adj_width;
				f.elements['ccm_width'].value=adj_width;
				//f.elements['ccm_pad'].value=round(ccm_pad);
			}
			fl_height=(fl_h_height/fl_h_width)*fl_width;
		} else if(layout=='v') {
			if(fl_width<fl_v_min_width) {
				var adj_width = round(fl_v_min_width + (ccm_pad*2) + 8);
				alert("Oops! Width is too narrow. The text will be too small to read. Try "+adj_width);
				fl_width=fl_v_min_width;
				ccm_width=adj_width;
				f.elements['ccm_width'].value=adj_width;
				//f.elements['ccm_pad'].value=round(ccm_pad);
			}
			fl_height=(fl_v_height/fl_v_width)*fl_width;
		}
	} else {
		if(layout=='h') {
			ccm_width=mod_h_width;
			fl_width=fl_h_width;
			fl_height=fl_h_height;
		} else if(layout=='v')  {
			ccm_width=mod_v_width;
			fl_width=fl_v_width;
			fl_height=fl_v_height;
		}
		if(!ccm_pad) { ccm_pad = 15; }
	}
	f.elements['ccm_width'].value=ccm_width;

	// colors
	var ccm_bgc = f.elements['ccm_bgc'].value;
	//var ccm_bgc = "000000";
	var ccm_b1c = f.elements['ccm_b1c'].value;
	if(ccm_b1c) {
		ccm_b1c = 'border: 1px solid #'+ccm_b1c;
	}
	var ccm_b2c = f.elements['ccm_b2c'].value;
	if(ccm_b2c) {
		ccm_b2c = 'border: 1px solid #'+ccm_b2c;
	}
	var ccm_tc = f.elements['ccm_tc'].value;
	var ccm_hc = f.elements['ccm_hc'].value;
	var ccm_mc = f.elements['ccm_mc'].value;
	//var ccm_mc = "";

	//
	// link
	//
	//var ccm_lc = f.elements['ccm_lc'].value;
	ccm_lc = make_link_color(ccm_tc,ccm_bgc);
	//ccm_lc = '888888';
	//f.elements['ccm_lc'].value = ccm_lc;
	var ccm_ls_str = "";
	ccm_ls_str = ' style="font-size:10px;font-family:arial,verdana,sans-serif;';
	ccm_ls_str += 'color:#'+ccm_lc+';text-decoration:underline;';
	ccm_ls_str += 'background:#'+ccm_bgc+';';
	ccm_ls_str += 'border:none;"';
	var pad_b, pad_t;
	if(ccm_pad<=15) {
		var tmp = ccm_pad>5?(ccm_pad-5)/2:0;
		pad_b=tmp;
		pad_t=tmp;
	} else { pad_b=ccm_pad-10; pad_t=5; }

	//
	// header
	//
	var header_str = "";
	var hdr_pad_b, hdr_pad_t;
	if(ccm_pad<=15) {
		//var tmp = ccm_pad>7?(ccm_pad-7)*(3/4):0;
		var tmp = ccm_pad*3/4;
		hdr_pad_t=tmp;
		hdr_pad_b=(ccm_pad/2)*3/4;
		hdr_pad_b<2?hdr_pad_b=2:hdr_pad_b;
		hdr_pad_t<2?hdr_pad_t=2:hdr_pad_t;
	} else { hdr_pad_b=7; hdr_pad_t=ccm_pad-10; }

	if(f.elements['ccm_hdr'].checked) {
		var bld = "";
		var bld_str = 'font-weight:bold';
		var use_bld = f.elements['ccm_bld'].checked;
		if(use_bld) { bld =  bld_str; }
		if(!ccm_hc) { ccm_hc = ccm_tc; }
		var hdr_font_size = round((layout=='v' ? fl_width*.11 : fl_width*.06),1);
		if(hdr_font_size<8) { hdr_font_size=8; }
		if(layout=='h') {
			if((fl_width>285 || use_bld) && !ccm_bld_clicked) {
				bld = bld_str;
				f.elements['ccm_bld'].checked=true;
			}
			header_str = '<div style="padding-bottom:'+round(hdr_pad_b)+'px;color:#'+ccm_hc+';font-family:arial,helvetica,sans-serif;font-size:'+hdr_font_size+'px;letter-spacing:.3em;'+bld+'">CURRENT MOON</div>';
		} else if(layout=='v') {
			if((fl_width>=156 || use_bld) && !ccm_bld_clicked) {
				bld = bld_str;
				f.elements['ccm_bld'].checked=true;
			}
			header_str = '<div style="padding-bottom:'+round(hdr_pad_b)+'px;color:#'+ccm_hc+';font-family:arial,helvetica,sans-serif;font-size:'+hdr_font_size+'px;'+bld+'">CURRENT MOON</div>';
		} else {
			alert("Error in making heading.");
		}
	} else {
		header_str = "";
		if(layout=='h') {
			hdr_pad_t = ccm_pad;
		} else {
			if(hdr_pad_t<5) { hdr_pad_t=5; }
		}
	}
	ccm_bld_clicked = false;

	var ccm_lg = 'en';
	var use = 'mc';

	//
	// make code
	//
	var ccm_fn = layout=='h'?fl_h_name:fl_v_name;
	var ccm_fw = round(fl_width);
	var ccm_fh = round(fl_height);

	var c_start = '';
	var c_end = '';
	if(!ccm_myspace) {
		c_start = '<!-- // Begin Current Moon Phase HTML (c) MoonConnection.com // -->';
		c_end = '<!-- // end moon phase HTML // -->';
	} else if(ccm_myspace) {
		c_start = '<table cellpadding="0" cellspacing="0" border="0" width="'+round(ccm_width)+'"><tr><td>';
		c_end = '</td></tr></table>';
	}

	var div_start = '<div style="width:'+round(ccm_width)+'px">';
	var div_end = '</div>';

	var flash_embed = '<embed allowScriptAccess="never" src="'+mm_path+ccm_fn+'" FlashVars="lg='+ccm_lg+'&hs='+ccm_hs+'&tf='+ccm_tf+'&scs='+ccm_secs+'&tc='+ccm_tc+'&df='+ccm_df+'&dfd='+ccm_dfd+'&bgc='+ccm_bgc+'&mc='+ccm_mc+'&js='+ccm_js+'&msp='+ccm_myspace+'&u='+use+'" quality="high" width="'+ccm_fw+'" height="'+ccm_fh+'" bgcolor="#'+ccm_bgc+'" name="ccm_mph_mod" align="middle" wmode="opaque" type="application/x-shockwave-flash" pluginspage="http://www.macromedia.com/go/getflashplayer" />';

	var flash_js = '<script language="JavaScript" type="text/javascript">var ccm_cfg = { pth:"'+mm_path+'", fn:"'+ccm_fn+'", lg:"'+ccm_lg+'", hs:'+ccm_hs+', tf:"'+ccm_tf+'", scs:'+ccm_secs+', df:"'+ccm_df+'", dfd:'+ccm_dfd+', tc:"'+ccm_tc+'", bgc:"'+ccm_bgc+'", mc:"'+ccm_mc+'", fw:'+ccm_fw+', fh:'+ccm_fh+', js:'+ccm_js+', msp:'+ccm_myspace+', u:"'+use+'" }</scr'+'ipt><script language="JavaScript" type="text/javascript" src="'+mm_path+'ccm_fl.js"></sc'+'ript>';

	var mod_h = '<div style="padding:2px;background-color:#'+ccm_bgc+';'+ccm_b1c+'"><div style="padding:'+round(ccm_pad)+'px;padding-bottom:'+round(pad_b)+'px;padding-top:'+round(hdr_pad_t)+'px;'+ccm_b2c+'" align="center">'+header_str+'{{FLASH}}<div style="padding-top:'+round(pad_t)+'px" align="center"><a href="'+cc_base_url+link_page+'" target="mc_moon_ph"'+ccm_ls_str+'><span style="color:#'+ccm_lc+'">'+link_text+'</span></a></div></div></div>';

	var mod_v = '<div style="padding:2px;background-color:#'+ccm_bgc+';'+ccm_b1c+'"><div style="padding:'+round(ccm_pad)+'px;padding-bottom:'+round(pad_b)+'px;padding-top:'+round(hdr_pad_t)+'px;'+ccm_b2c+'" align="center">'+header_str+'{{FLASH}}<div style="padding-top:'+round(pad_t)+'px" align="center"><a href="'+cc_base_url+link_page+'" target="mc_moon_ph"'+ccm_ls_str+'><span style="color:#'+ccm_lc+'">'+link_text+'</span></a></div></div></div>';

	var layout_str = "";
	if(layout=='v') { layout_str = mod_v; } else if(layout=='h') { layout_str = mod_h; }

	var tmp = layout_str.replace('{{FLASH}}',flash_embed);
	var flash_embed_html = c_start + div_start + tmp + div_end + c_end;

	var tmp = layout_str.replace('{{FLASH}}',flash_js);
	var flash_js_html = c_start + div_start + tmp + div_end + c_end;

	var ienote = "";
	if(document.all && flash_embed_html) {
		//ienote = '<br><br>Using Internet Explorer? <a href="#" onclick="popup_preview('+((ccm_width*1)+40)+',200);return false;">Click here</a> for a true preview.';
	}

	document.getElementById('module_preview').innerHTML = flash_embed_html + ienote;
	f.elements['module_html'].value = (ccm_js||ccm_myspace?flash_embed_html:flash_js_html);

	return;
}

function popup_preview(w,h) {
	var s = "";
	var mod_html = document.forms.moduleForm.module_html.value;
	s += '<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">';
	s += '<html>';
	s += '<head>';
	s += '<title>Moon Module Preview</title>';
	s += '<meta http-equiv="imagetoolbar" content="no">';
	s += '<link rel="stylesheet" href="/src/css.css" type="text/css">';
	s += '</head>';
	s += '<body style="margin:10px" bgcolor="#FFFFFF" link="#080878" vlink="#080878">';
	s += mod_html;
	s += '</body>';
	s += '</html>';
	var w = openWindow2('moon_module_preview.phtml','econsole',w,h)
	w.document.write(s);
}

function textarea_ready(s) {
	s = s.replace('&','&amp;');
	s = s.replace('<','&lt;');
	s = s.replace('>','&gt;');
	return s;
}

function round(num, dp) {
	dp = (!dp ? 0: dp);
	return Math.round (num * Math.pow(10, dp)) / Math.pow(10, dp);
}
function is_integer(n)
{
	if(!is_number(n)) { return false; }
	n = Math.abs(n); n=n+"";
	if( n.search(/^[0-9]+$/)==-1 ) { return false; }
	return true;
}
function is_number(n) {
	if( isNaN(n) || n==null || n.length==0 ) { return false; }
	n=n+"";
	if( n.search(/\s+/)!=-1 ) { return false; } // whitespace
	return true;
}
function is_hexcolor(n) {
	//if(isNaN('0x'+n)) { return false; }
	n=n+"";
	if(n.length!=6) { return false; }
	if( isNaN('0x'+n.substr(0,2)) || isNaN('0x'+n.substr(2,2)) || isNaN('0x'+n.substr(4,2)) ) {
		return false;
	}
	return true;
}
function check_is_integer(f,v)
{
	if(!v) { v = f.value; }
	if(!is_integer(v)) {
		alert( "Invalid input. Must be an integer." );
		f.focus();
		f.select();
		return false;
	}
	return true;
}
function check_is_number(f,v,e)
{
	if(!v) { v = f.value; }
	if(!v) { if(e) { return true; } }
	if(!is_number(v)) {
		var es = e?" (or empty).":".";
		alert( "Invalid input. Must be a number"+es );
		f.focus();
		f.select();
		return false;
	}
	return true;
}
function check_is_hexcolor(f,v,e)
{
	if(!v) { v = f.value; }
	if(!v) { if(e) { return true; } }
	if(!is_hexcolor(v)) {
		var es = e?" (or empty).":".";
		alert( "Invalid input. Must be a 6-digit hexidecimal color value"+es );
		f.focus();
		f.select();
		return false;
	}
	return true;
}

var curr_layout;
function prefillWidth(o) {
	var fld = document.forms['moduleForm']['ccm_width'];
	if(o.value==curr_layout) {
		curr_layout=o.value;
		return;
	}
	if(o.value=='h') {
		fld.value = round(fld.value*v_to_h_m);
		curr_layout='h';
	} else {
		fld.value = round(fld.value*h_to_v_m);
		curr_layout='v';
	}
	//alert(fld.value);
}
function preFill(l) {
	var f = document.forms.moduleForm;
	if(l=='h') {
		f.elements['layout'][1].checked = true;
		f.elements['ccm_width'].value = mod_h_width;
		curr_layout = 'h';
	} else if(l=='v'){
		f.elements['layout'][0].checked = true;
		f.elements['ccm_width'].value = mod_v_width;
		curr_layout = 'v';
	}
}
function checkTOU(f) {
	if(!f.tou.checked) {
		alert( "Before using this module, you must read and agree to the Copyright/Terms of Use.\nPlease check the \"I have read and agree...\" checkbox.\n" );
		return false;
	}
	return true;
}
function checkReg() {
	if(rok) { return true; }
	var rC = new Cookie(document,"MoonConnection");
	rC.load();
	if(rC.registered_module_user) { return true; }
	alert("Please register below (see bottom of page). If you have already registered, you can sign in below.");
	return false;
}

function make_link_color(t,b) {
	var r, g, b;
	var o = hex_to_rgb(b);
	t = get_rgb_gray(t);
	b = get_rgb_gray(b);
	var d = Math.abs(t-b)*0.5;
	if(t>b) { gr = b+d; }
	else { gr = t+d; }
	//if(o.r==o.g && o.g==o.b) { r=gr; g=gr; b=gr; }
	//else {
	//	r=gr+(o.r*.5);
	//	g=gr+(o.g*.5);
	//	b=gr+(o.b*.5);
	//}
	r=gr; g=gr; b=gr;
	return rgb_to_hex(r,g,b);
}
function get_rgb_gray(h) {
	var o = hex_to_rgb(h);
	var dv, r=o.r, g=o.g, b=o.b;
	if(r==g && g==b) { dv=r; }
	else if(g>=b && g>=r) { dv=g; }
	else if(r>=g && r>=b) { dv=r; }
	else if(b>=r && b>=g) { dv=b; }
	return dv;
}
function rgb_to_hex(r,g,b) {
	r = Math.floor(r); g = Math.floor(g); b = Math.floor(b);
	//if(r>255) { r=255; } if(g>255) { g=255; } if(b>255) { b=255; }
	return x_to_hex(r)+x_to_hex(g)+x_to_hex(b);
}
function x_to_hex(x) {
	if(x<16) { return "0"+base_convert(x); }
	var y = Math.floor(x/16);
	var z = x%16;
	return base_convert(y)+""+base_convert(z);
}
function hex_to_rgb(h) {
	h = h.toUpperCase();
	var o = { r:x_to_rgb(h.substr(0,2)), g:x_to_rgb(h.substr(2,2)), b:x_to_rgb(h.substr(4,2)) }
	return o;
}
function x_to_rgb(x) {
	var a = x.charAt(0);
	var b = x.charAt(1);
	return base_convert(a)*16 + 1*base_convert(b);
}
function base_convert(x) {
	if(x=='A') { return 10; }
	if(x=='B') { return 11; }
	if(x=='C') { return 12; }
	if(x=='D') { return 13; }
	if(x=='E') { return 14; }
	if(x=='F') { return 15; }
	x = round(x);
	if(x<10) { return x; }
	if(x==10) { return 'A'; }
	if(x==11) { return 'B'; }
	if(x==12) { return 'C'; }
	if(x==13) { return 'D'; }
	if(x==14) { return 'E'; }
	if(x==15) { return 'F'; }
	alert('conversion error: '+x);
	return 0;
}