function calculatorResetResult()
{
	var resultContainer = document.getElementById('result_container');
	resultContainer.innerHTML = '';
	resultContainer.className = 'hidden';
}

function glacialRefractivePartnersCalculator()
{
	var resultContainer = document.getElementById('result_container');
	resultContainer.className = 'hidden';
	resultContainer.innerHTML = '';
	var cpm = getValueById('calls_per_month');
	var ictc = getValueById('inbound_call_to_consult');
	var ctp = getValueById('consult_to_procedure');
	var acf = getValueById('average_callected_fee');
	var vm = getValueById('voice_mail');
	var caoh = getValueById('calls_after_office_hours');
	var cm = getValueById('calls_missed');
	var chia = getValueById('calls_hold_in_excess');
	var oc = getValueById('optical_complate');
	var oe = getValueById('optical_elite');

	var error = new String('');
	
	error += checkIFOnlyDigits(cpm,'calls_per_month');
	error += checkIFOnlyDigits(ictc,'inbound_call_to_consult');
	error += checkIFOnlyDigits(ctp,'consult_to_procedure');
	error += checkIFOnlyDigits(acf,'average_callected_fee');
	error += checkIFOnlyDigits(vm,'voice_mail');
	error += checkIFOnlyDigits(caoh,'calls_after_office_hours');
	error += checkIFOnlyDigits(cm,'calls_missed');
	error += checkIFOnlyDigits(chia,'calls_hold_in_excess');
	error += checkIFOnlyDigits(oc,'optical_complate');
	error += checkIFOnlyDigits(oe,'optical_elite');

	if (error !='')
	{
		resultContainer.className = 'visible';
		resultContainer.innerHTML = error;
		return false;
	}
	else
	{
		error += checkIfLtOrEqHund(ictc,'inbound_call_to_consult');
		error += checkIfLtOrEqHund(ctp,'consult_to_procedure');

		if (error != '')
		{
			resultContainer.className = 'visible';
			resultContainer.innerHTML = error;
			return false;
		}
	}

	var nbc = cpm*(ictc/100);
	var np = nbc*(ctp/100);
	var rubc = np*acf;
	var mco = Number(vm)+Number(caoh)+Number(cm)+Number(chia);

	var cl = mco*(ictc/100);
	var pl = cl*(ctp/100);
	var ld = pl*acf;

	var coc = oc/acf;
	var coe = oe/acf;

	document.getElementById('net_booked_consults').value = Math.round(nbc);
	document.getElementById('net_procedures').value = Math.round(np);
	document.getElementById('revenues_upon_book_consults').value = formatNumber(rubc,null,0,true);
	document.getElementById('missed_call_oportunities').value = Math.round(mco);
	document.getElementById('consults_lost').value = Math.round(cl);
	document.getElementById('procedures_lost').value = Math.round(pl);
	document.getElementById('lost_dollars').value = formatNumber(ld,null,0,true);
	document.getElementById('con_op_com').value = formatNumber(coc,null,2,false);
	document.getElementById('con_op_elite').value = formatNumber(coe,null,2,false);
}

function glacialAceCalculator()
{
	
	var resultContainer = document.getElementById('result_container');

	resultContainer.className = 'hidden';
	resultContainer.innerHTML = '';


	/*Before*/
	var ace_b = getValueById('ace');
	var ctc_b = getValueById('ctc');
	var sr_b = getValueById('sr');
	var cts_b = getValueById('cts');
	var bf_b = getValueById('bf');
	/*After*/
	var ace_a = getValueById('ace_a');
	var ctc_a = getValueById('ctc_a');
	var sr_a = getValueById('sr_a');
	var cts_a = getValueById('cts_a');
	var bf_a = getValueById('bf_a');

	var error = '';
	

	/*check error for 'before' values*/
	error += checkIFOnlyDigits(ace_b,'ace before');
	error += checkIFOnlyDigits(ctc_b,'ctc before');
	error += checkIFOnlyDigits(sr_b,'sr before');
	error += checkIFOnlyDigits(cts_b,'cts before');
	error += checkIFOnlyDigits(bf_b,'bf before');

	/*check error for 'after' values*/
	error += checkIFOnlyDigits(ace_a,'ace after');
	error += checkIFOnlyDigits(ctc_a,'ctc after');
	error += checkIFOnlyDigits(sr_a,'sr after');
	error += checkIFOnlyDigits(cts_a,'cts after');
	error += checkIFOnlyDigits(bf_a,'bf after');

	if (error !='')
	{
		resultContainer.className = 'visible';
		resultContainer.innerHTML = error;
		return false;
	}
	else
	{
		/*check error for 'before' values*/
		error += checkIfLtOrEqHund(ctc_b,'ctc before');
		error += checkIfLtOrEqHund(sr_b,'sr before');
		error += checkIfLtOrEqHund(cts_b,'cts before');

		/*check error for 'after' values*/
		error += checkIfLtOrEqHund(ctc_a,'ctc after');
		error += checkIfLtOrEqHund(sr_a,'sr after');
		error += checkIfLtOrEqHund(cts_a,'cts after');

		if (error != '')
		{
			resultContainer.className = 'visible';
			resultContainer.innerHTML = error;
			return false;
		}
	}

	var hNab = 'New Appointments Booked';
	var hNas = 'New Appointments Show';
	var hNpbfs = 'New Patients Booked For Surgery';
	var hGmr = 'Gross Monthly Revenues';
	var hGar = 'Gross Annual Revenues';

	var hImr = 'Increase in Montly Revenue';
	var hIar = 'Increase in Annual Revenue';

	var nab = ace_b*(ctc_b/100);
	var nas = (sr_b/100)*nab;
	var npbfs = nas*(cts_b/100);
	var gmr = npbfs*bf_b;
	var gar = gmr*12;

	var nab_a = ace_a*(ctc_a/100);
	var nas_a = (sr_a/100)*nab_a;
	var npbfs_a = nas_a*(cts_a/100);
	var gmr_a = npbfs_a*bf_a;
	var gar_a = gmr_a*12;

	var imr = gmr_a-gmr;
	var iar = gar_a-gar;

	resultContainer.className = 'visible';
	resultContainer.innerHTML = 'BEFORE: <br />'
	+hNab+': '+formatNumber(nab,null,0,false)
	+'<br />'+hNas+': '+formatNumber(nas,null,0,false)
	+'<br />'+hNpbfs+': '+formatNumber(npbfs,null,0,false)
	+'<br />'+hGmr+': $'+formatNumber(gmr,null,2,true)
	+'<br />'+hGar+': $'+formatNumber(gar,null,2,true)
	+'<br />'
	+'<br />AFTER: <br />'
	+hNab+': '+formatNumber(nab_a,null,0,false)
	+'<br />'+hNas+': '+formatNumber(nas_a,null,0,false)
	+'<br />'+hNpbfs+': '+formatNumber(npbfs_a,null,0,false)
	+'<br />'+hGmr+': $'+formatNumber(gmr_a,null,2,true)
	+'<br />'+hGar+': $'+formatNumber(gar_a,null,2,true)
	+'<br />'
	+'<br />'+hImr+': $'+formatNumber(imr,null,2,true)
	+'<br />'+hIar+': $'+formatNumber(iar,null,2,true)
	;
}

function formatNumber(numStr,digitCount,decimalCount,useComma)
{
	if (digitCount==null) { digitCount = 0; }
	if (decimalCount==null) { decimalCount = 0; }

	numStr = numStr.toString();
	numStr = numStr.replace(/,/g,'');

	while (numStr.length>0 && numStr.substring(0,1)=="0")
	{
		numStr = numStr.substring(1,numStr.length);
	}
	if (numStr.length==0 || numStr.substring(0,1)==".") { numStr = "0" + numStr; }
	var quotStr = numStr;
	var remStr = "0";
	if (numStr.indexOf(".")!=-1)
	{
		quotStr = numStr.substring(0,numStr.indexOf("."));
		remStr = numStr.substring(numStr.indexOf(".")+1);
		if (remStr.length>decimalCount) { remStr = remStr.substring(0,decimalCount); }
	}
	while (remStr.length<decimalCount) { remStr += "0"; }
	if (digitCount!=0 && quotStr.length>digitCount) { quotStr = quotStr.substring(0,digitCount); }
	var hasComma=true;
	if(typeof(useComma)!="undefined") { hasComma = useComma; }
	if(hasComma)
	{
		var sepCount = Math.floor((quotStr.length-1)/3);
		for (var i=0; i<sepCount; i++)
		{
			quotStr = quotStr.substring(0,quotStr.length-(4*i+3)) + "," + quotStr.substring(quotStr.length-(4*i+3));
		}
	}
	var newNum = quotStr;
	if (decimalCount!=0) { newNum += "." + remStr; }
	return newNum;
}

function getValueById(obj)
{
	var val = document.getElementById(obj).value;
	return val;
}

function checkIfLtOrEqHund(val,name)
{
	var err = '';
	if (val > 100) { err = 'Please check '+name+' value (Must be less than 100 or Equal to 100).<br />'; }
	return err;
}

function checkIFOnlyDigits(val,name)
{
	var err = '';

	if (val == '') { err = 'Please check '+name+' value<br />'; }
	else
	{
		if (val.search("[^0-9]") >= 0) { err = 'Please check '+name+' (only numbers)<br />'; }
	}
	return err;
}