// JavaScript Document


function calculate()
{

//if form passes validation, then run the calculation
if (validate())
{
clear_error_messages();	
//Get variable values from form
var impressions = parseInt(document.calculator.impressions.value);
var response_rate = parseFloat(document.calculator.response_rate.value) / 100;
var qualified_lead_rate = parseFloat(document.calculator.qualified_lead_rate.value) / 100;
var leads_followed_up_on_rate =  parseFloat(document.calculator.leads_followed_up_on_rate.value) / 100;
var close_rate_on_leads_followed = parseFloat(document.calculator.close_rate_on_leads_followed.value) / 100;
var closed_sale_avg = parseFloat(document.calculator.closed_sale_avg.value);

//secondary calculated variables 
var responses;
var qualified_leads;
var leads_followed;
var leads_closed;
var closed_revenue;

//final results
var lost_opportunities;
var lost_revenue;
var nurture_opportunities;
var buyers_identified;
var nurture_opportunity_value;

//Calculate secondary variables
responses = Math.round(impressions * response_rate);
qualified_leads = Math.round(qualified_lead_rate * responses);
leads_followed = Math.round(leads_followed_up_on_rate * qualified_leads);
leads_closed = Math.round(close_rate_on_leads_followed * leads_followed);
closed_revenue = Math.round(leads_closed * closed_sale_avg);

//Calculate results
lost_opportunities = Math.round((qualified_leads * 0.5) - leads_closed);
lost_revenue = Math.round(lost_opportunities * closed_sale_avg);
nurture_opportunities = Math.round(responses - leads_closed);
buyers_identified = Math.round(nurture_opportunities * 0.2);
nurture_opportunity_value = Math.round(buyers_identified * closed_sale_avg);

// Send results to form
document.getElementById("responses").innerHTML = responses;
document.getElementById("qualified_leads").innerHTML = qualified_leads;
document.getElementById("leads_followed").innerHTML = leads_followed;
document.getElementById("leads_closed").innerHTML = leads_closed;
document.getElementById("closed_revenue").innerHTML = ("$" + closed_revenue);

//final results
document.getElementById("lost_opportunities").innerHTML = lost_opportunities;
document.getElementById("lost_revenue").innerHTML = ("$" + lost_revenue);
document.getElementById("nurture_opportunities").innerHTML = nurture_opportunities;
document.getElementById("buyers_identified").innerHTML = buyers_identified;
document.getElementById("nurture_opportunity_value").innerHTML = ("$" + nurture_opportunity_value);
}
else
{
	document.getElementById("form_error").innerHTML = "Please correct the above errors (*) and click the Calculate button again.";
}

} //end calculate();

function validate()
{
//Get variable values from form
var impressions = parseInt(document.calculator.impressions.value);
var response_rate = parseFloat(document.calculator.response_rate.value);
var qualified_lead_rate = parseFloat(document.calculator.qualified_lead_rate.value);
var leads_followed_up_on_rate =  parseFloat(document.calculator.leads_followed_up_on_rate.value);
var close_rate_on_leads_followed = parseFloat(document.calculator.close_rate_on_leads_followed.value);
var closed_sale_avg = parseFloat(document.calculator.closed_sale_avg.value);
var inputOK = true;

//check value of impressions
if (isNaN(impressions) || impressions<0)
	{
	document.getElementById("impressions_error").innerHTML = "* Please enter a whole number greater than 0";
	inputOK = false;
	}

//check value of response_rate
if (isNaN(response_rate) || response_rate>100 || response_rate<0)
	{
	document.getElementById("response_rate_error").innerHTML = "* Please enter a percentage between 0 and 100";
	inputOK = false;
	}

//check value of qualified_lead_rate
if (isNaN(qualified_lead_rate) || qualified_lead_rate>100 || qualified_lead_rate<0)
	{
	document.getElementById("qualified_lead_rate_error").innerHTML = "* Please enter a percentage between 0 and 100";
	inputOK = false;
	}

//check value of leads_followed_up_on_rate
if (isNaN(leads_followed_up_on_rate) || leads_followed_up_on_rate>100 || leads_followed_up_on_rate<0)
	{
	document.getElementById("leads_followed_up_on_rate_error").innerHTML = "* Please enter a percentage between 0 and 100";
	inputOK = false;
	}

//check value of close_rate_on_leads_followed
if (isNaN(close_rate_on_leads_followed) || close_rate_on_leads_followed>100 || close_rate_on_leads_followed<0)
	{
	document.getElementById("close_rate_on_leads_followed_error").innerHTML = "* Please enter a percentage between 0 and 100";
	inputOK = false;
	}

//check value of closed_sale_avg
if (isNaN(closed_sale_avg) || closed_sale_avg<0)
	{
	document.getElementById("closed_sale_avg_error").innerHTML = "* Please enter a whole number greater than 0";
	inputOK = false;
	}

return inputOK;
}

//Clears error messages from form
function clear_error_messages()
{
document.getElementById("impressions_error").innerHTML = "";
document.getElementById("response_rate_error").innerHTML = "";
document.getElementById("qualified_lead_rate_error").innerHTML = "";
document.getElementById("leads_followed_up_on_rate_error").innerHTML = "";
document.getElementById("close_rate_on_leads_followed_error").innerHTML = "";
document.getElementById("closed_sale_avg_error").innerHTML = "";
document.getElementById("form_error").innerHTML = "";
}
