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 modulePreview() {

	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 = 'cc';

	//
	// 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) CalculatorCat.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+'/moon_phases/moon_phases.phtml" target="cc_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+'/moon_phases/moon_phases.phtml" target="cc_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() {
	//alert("*"+rok+"*");
	if(rok) {
		return true;
	}
	alert("Please register below (see bottom of page). If you have already registered, you can sign in below.");
	return false;
}
function get_terms_of_use(l) {
	var str = 'This module, design, and code is protected under United States and International copyright laws. You are not allowed to remove any of the links pointing back to CalculatorCat.com. The text link (i.e., "'+l+'") at the bottom of the module MUST remain unaltered. All  copyright notices embedded in the HTML and Javascript code must remain unchanged. Also, this module may not be used on websites that have any of the following content: pornography/adult content, excessive profanity, racial intolerance, illicit drugs, hacking/cracking, or any other content that promotes illegal activity. By using this module, you are stating your acceptance of these Terms';
	return str;
}

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;
}