
function update_chars_left(src_elem)
{
	var chars_elem, dif;
	
	chars_elem = document.getElementById(src_elem.name+"_chars_left");
	dif = src_elem.getAttribute("max_chars") - src_elem.value.length;
	if (dif < 0)
	{
		chars_elem.style.color = "#ff0000";
		chars_elem.innerHTML = (dif * -1) + " characters too many ";
	}
	else
	{
		chars_elem.style.color = "#000000";
		chars_elem.innerHTML = dif + " characters left ";
	}
}

function set_select(s, val)
{
	var i;
	
	for (i = 0; i < s.length; ++i)
	{
		if (val == s.options[i].value)
		{
			s.selectedIndex = i;
			break;
		}
	}
}

function quicklist_submit_order()
{
	var f = document.f1;
	
	if (empty(f.package.value))
	{
		alert("Please select a package.");
		window.location = "#package";
		return;
	}
	if (empty(f.name.value) && !f.is_cur_client)
	{
		alert("Please enter a name.");
		f.name.focus();
		return;
	}
	if (empty(f.email.value.match(/^(.+)@(.+)$/)) && !f.is_cur_client)
	{
		alert("Please enter a valid email address.");
		f.email.focus();
		return;
	}
	if (empty(f.url.value.match(/^(http:\/\/|).+\..+/)))
	{
		alert("Please enter a valid url.");
		f.url.focus();
		return;
	}
	if (empty(f.billing_name.value) && !f.is_cur_client)
	{
		alert("Please enter a billing name.");
		f.billing_name.focus();
		return;
	}
	if (empty(f.cc_type.value) && !f.is_cur_client)
	{
		alert("Please select a creadit card type.");
		f.cc_type.focus();
		return;
	}
	if (empty(f.cc_number.value) && !f.is_cur_client)
	{
		alert("Please enter a credit card number.");
		f.cc_number.focus();
		return;
	}
	if (empty(f.cc_cvc.value) && !f.is_cur_client)
	{
		alert("Please enter the card verification code.");
		f.cc_cvc.focus();
		return;
	}
	if (empty(f.cc_exp_month.value) && !f.is_cur_client)
	{
		alert("Please select an expiration month.");
		f.cc_exp_month.focus();
		return;
	}
	if (empty(f.cc_exp_year.value) && !f.is_cur_client)
	{
		alert("Please select an expiration year.");
		f.cc_exp_year.focus();
		return;
	}
	if (empty(f.cc_zip.value) && !f.is_cur_client)
	{
		alert("Please enter a billing zipcode.");
		f.cc_zip.focus();
		return;
	}
	if (empty(f.cc_country.value) && !f.is_cur_client)
	{
		alert("Please select a billing country.");
		f.cc_country.focus();
		return;
	}
	
	if (!f.order_ts_and_cs.checked)
	{
		alert("Please accept the Terms & Conditions if you would like to proceed.");
		return;
	}
	
	f.submit();
}

function ql_alert_goto(container)
{
	window.location = container.getAttribute("href");
}

function ql_confirm_upgrade()
{
	if (!document.f1.confirm_upgrade.checked)
	{
		alert("Please confirm you would like to upgrade plans before continuing.");
		return;
	}
	document.f1.submit();
}

function ql_confirm_cancel()
{
	if (get_radio_value(document.f1.reason) == null)
	{
		alert("Please select your reason for cancelling.");
		return;
	}
	if (!document.f1.confirm_cancel.checked)
	{
		alert("Please confirm you would like to cancel before continuing.");
		return;
	}
	document.f1.submit();
}

function ql_cancel_reason()
{
	if (get_radio_value(document.f1.reason) == "Other")
		document.f1.comments.focus();
}

function toggle_create(src_elem)
{
	var dst_elem_name, dst_elem, i, package_cell;
	
	dst_elem_name = src_elem.name.substr(src_elem.name.indexOf("_") + 1);
	
	if (dst_elem_name == "keywords")
	{
		package_cell = document.getElementById("package_"+document.f1.package.value);
		
		// package cell will be empty if user hasn't selected a package yet
		if (!package_cell) return;
		
		ql_show_keywords(package_cell.getAttribute("num_keywords"), ((src_elem.checked) ? "HIDE_NORMAL" : "HIDE_ALL"))
	}
	else if (dst_elem_name == "title" || dst_elem_name == "description")
	{
		dst_elem = document.f1[dst_elem_name];
		dst_elem.disabled = !src_elem.checked;
		dst_elem.style.backgroundColor = (src_elem.checked) ? "#ffffff" : "#e0e0e0";
		document.getElementById(dst_elem_name+"_row").className = (src_elem.checked) ? null : "nosho";
	}
	// two line description
	else
	{
		for (i = 0; i < 3; ++i)
		{
			dst_elem = document.f1["desc_"+i];
			if (dst_elem)
			{
				dst_elem.disabled = !src_elem.checked;
				dst_elem.style.backgroundColor = (src_elem.checked) ? "#ffffff" : "#e0e0e0";
			}
			document.getElementById("desc_row_"+i).className = (src_elem.checked) ? null : "nosho";
		}
	}
}

function ql_get_creative_default(elem_name)
{
	switch (elem_name)
	{
		case ("url"):    return "www.example.com";
		case ("title"):  return "New York Budget Hotel";
		case ("desc_1"): return "Clean and close to subway.";
		case ("desc_2"): return "Students save 20%!";
	}
}

function ql_update_creative(elem)
{
	var dst, val;
	
	dst = document.getElementById("creative_sample_"+elem.name);
	val = (elem.name == "url") ? elem.value.replace(/^http:\/\//, "") : elem.value;
	dst.innerHTML = (empty(val)) ? ql_get_creative_default(elem.name) : val;
	if (elem.getAttribute("max_chars")) update_chars_left(elem);
}

function ql_set_create()
{
	var val;
	
	val = get_radio_value(document.f1.who_creates);
	
	// no point in showing 
	if (val == "user" && empty(document.f1.package.value))
	{
		alert("Please select a package.");
		set_radio(document.f1.who_creates, 0);
		window.location = "#package";
		return;
	}
	
	if (val == "user")
	{
		ql_update_creative(document.f1.url);
		ql_update_creative(document.f1.title);
		ql_update_creative(document.f1.desc_1);
		ql_update_creative(document.f1.desc_2);
		document.getElementById("input_container").className = null;
	}
	else
	{
		document.getElementById("input_container").className = "nosho";
	}
}

function ql_set_package(cell)
{
	var i, package_container, package_cell, package_name, selected_name;
	
	if (!cell) return;
	
	// set package name
	selected_name = cell.getAttribute("package_name");
	
	document.f1.package.value = selected_name;
	
	// loop over packages and highlight the selected one
	package_container = document.getElementById("package_container");
	for (i = 0; i < package_container.childNodes.length; ++i)
	{
		package_cell = package_container.childNodes[i];
		if (package_cell.getAttribute)
		{
			package_name = package_cell.getAttribute("package_name");
			if (package_name)
			{
				if (package_name == selected_name)
				{
					package_cell.className = "package_"+package_name+"_on";
					document.getElementById("package_"+package_name+"_select_img").src = "include/images/ql_selected.jpg";
				}
				else
				{
					package_cell.className = "package_"+package_name;
					document.getElementById("package_"+package_name+"_select_img").src = "include/images/ql_select.jpg";
				}
			}
		}
	}
	
	// now that we've set package, take action depending on what page we're on
	
	// order form
	if (document.f1.order_code)
	{
		ql_show_keywords(cell.getAttribute("num_keywords"), "HIDE_NORMAL");
		
		// update op display (pass is optional is_init param) and set order dollar totals
		ql_update_op_display();
		ql_set_order_total();
	}
	else if (document.f1.upgrade_prorated_charge)
	{
		ql_set_upgrade_values();
	}
}

function ql_set_upgrade_values()
{
	var package_cell, new_price, old_price, prorated_charge, days_in_month, days_remaining;
	
	package_cell = document.getElementById("package_"+document.f1.package.value);
	
	// should never happen
	if (!package_cell) return;
	
	new_price = Number(package_cell.getAttribute("price"));
	old_price = Number(document.f1.upgrade_cur_package_amount.value);
	
	days_in_month = Number(document.f1.upgrade_days_in_month.value);
	days_remaining = Number(document.getElementById("days_remaining_loc").innerHTML);
	
	prorated_charge = ((new_price - old_price) / days_in_month) * days_remaining;
	
	document.f1.upgrade_prorated_charge.value = prorated_charge;
	document.getElementById("prorated_charge_loc").innerHTML = print_dollars(prorated_charge);
	document.getElementById("new_package_amount_loc").innerHTML = print_dollars(new_price);
	document.getElementById("package_name_loc").innerHTML = package_cell.getAttribute("package_name");
	
	
	// show everything
	document.getElementById("upgrade_details_loc").className = null;
}

function ql_show_keywords(num_keywords, hide_all)
{
	var i, kw_elem, kw_row;
	
	for (i = 0; kw_elem = document.f1["keywords_"+i]; ++i)
	{
		kw_row = kw_elem.parentNode.parentNode;
		if (i < num_keywords)
		{
			kw_row.className = null;
			kw_elem.disabled = false;
		}
		else
		{
			kw_row.className = "nosho";
			kw_elem.disabled = true;
		}
	}
	
	// show/hide preface and number of keywords
	document.getElementById("kw_preface_num_kws").innerHTML = num_keywords;
}

function ql_toggle_op(elem)
{
	document.f1.optimization.value = (elem.checked) ? "1" : null;
	ql_set_order_total();
}

function ql_update_op_display()
{
	var package_cell;
	
	package_cell = document.getElementById("package_"+document.f1.package.value);
	if (!package_cell) return;
	
	// turn on op if core or premier
	if (package_cell.getAttribute("is_op_included"))
	{
		document.f1.optimization.checked = true;
		document.getElementById("op_package_name").innerHTML = package_cell.getAttribute("package_name");
		document.getElementById("package_includes_op_container").className = null;
		document.getElementById("user_select_op_container").className = "nosho";
	}
	else
	{
		if (typeof(is_init) == "undefined" || !is_init) document.f1.optimization.checked = false;
		document.getElementById("package_includes_op_container").className = "nosho";
		document.getElementById("user_select_op_container").className = null;
	}
}

function ql_set_order_total()
{
	var monthly_amount, optimization_amount, package_cell;
	
	package_cell = document.getElementById("package_"+document.f1.package.value);
	
	// should never happen
	if (!package_cell) return;
	
	// if op is included in package, show price as free
	if (package_cell.getAttribute("is_op_included"))
	{
		document.getElementById("optimization_amount_loc").innerHTML = "FREE";
		optimization_amount = 0;
	}
	// op not included, see if it is checked
	else
	{
		optimization_amount = (document.f1.optimization.checked) ? Number(document.f1.optimization_amount.value) : 0;
		document.getElementById("optimization_amount_loc").innerHTML = print_dollars(optimization_amount);
	}
	
	// set monthly and total amounts
	monthly_amount = Number(package_cell.getAttribute("price"));
	document.getElementById("monthly_amount_loc").innerHTML = print_dollars(monthly_amount);
	document.getElementById("total_amount_loc").innerHTML = print_dollars(monthly_amount + optimization_amount);
}

function ql_contact_cur_client_click(radio)
{
	document.getElementById("reasons_loc").className = (radio.value == "Current Client") ? null : "nosho";
}

function ql_select_url(select, do_set_is_url_change)
{
	if (select.value == "") return;
	if (do_set_is_url_change) document.f1.is_url_change.value = "1";
	document.f1.submit();
}

function ql_contact_check()
{
	var is_cur_client, url;
	
	is_cur_client = get_radio_value(document.contact.company);
	url = document.contact.website.value;
	if (!is_cur_client || !url)
	{
		checker('website','wl');
		document.getElementById("cur_client_label").style.color = (is_cur_client == null) ? "#ff0000" : "#000000";
		//document.getElementById("wl").style.color = (url == "") ? "#ff0000" : "#000000";
		
		// check standard form values (if it returns true, it won't issue warning so we have to here, also focus url if empty)
		if (check(false))
		{
			alert("Please fill out the required feilds.");
			if (url == "") document.contact.website.focus();
		}
	}
	else
	{
		check(true);
	}
}

function ql_upgrade_contact_check()
{
	add_hidden_field("Submit", "QuickList Upgrade Contact");
	add_hidden_field("type", "QuickList Upgrade Contact");
	
	document.f1.action = "/contact/";
	document.f1.submit();
}


