$(document).ready(function() {
					   
$('#calcROI').click(
					
function(){ 

//form input - user provided variables
	var fNOR,fHP,fAVGU,fSD,fPSD,fMPE,fSCL;
		fNOR = parseFloat($("#OperatingRooms").val()); 
		fHP = parseFloat($("#HoursPrimetime").val()); 
		fAVGU = parseFloat($("#AvgUtilization").val())/100;
		fSD = parseFloat($("#UrgentEmergentDemand").val())/100;
		fPSD = parseFloat($("#PrimetimeUrgentEmergentDemand").val())/100;
		fMPE = parseFloat($("#MarginPerPatient").val());;
		fSCL = parseFloat($("#LengthTimeMins").val());

	//assumed figures - these variables are constant
	var aNOR,aMINU,aMAXU,aAVGU;
		aNOR = 250; // assumed number of rooms
		aMINU = .4; // 40% assumed min utilization of unscheduled rooms
		aMAXU = .6; // 60% assumed max utilization of unscheduled rooms
		aAVGU = .9; // 90% target average utilization of scheduled rooms

	//intermediate values - not visible on form or page
	var iNOR,iAVGU,isNOR,isAVGU,isCED,isUC,isNC;

		//value of iNOR	
		
		roundDown1 = Math.floor((fPSD*fAVGU*fNOR*fHP*60/fSCL)*fSCL/(fHP*60)/aMINU);
		roundUp1 = Math.ceil((fPSD*fAVGU*fNOR*fHP*60/fSCL)*fSCL/(fHP*60)/aMAXU);
		if (Math.min(roundDown1,roundUp1)>=fNOR) {
		  iNOR = fNOR-1; }
		else {
		  iNOR = Math.min(roundDown1,roundUp1); }

		//value of iAVGU
		if (iNOR==0) {
		  iAVGU = 0; }
		else {
		  iAVGU = Math.min(aMAXU, fSCL*(fPSD*fAVGU*fNOR*fHP*60/fSCL)/(iNOR*fHP*60)); }
		
		isNOR = fNOR-iNOR;

		//value of isCED
		tempCED = (fAVGU*fNOR*(1-fPSD))/isNOR;
		isCED = Math.round(tempCED *1000) /1000;
		
		//value of isUC 
		// adjusted if (iNOR ==0) {
		// adjusted tempUC = (((fPSD*fAVGU*fNOR*fHP*60/fSCL)-(iAVGU*iNOR*fHP*60/fSCL))*1)*fSCL/(fHP*60*isNOR);
		// adjusted isUC = Math.round(tempUC *1000) /1000; }
		// else {
		  tempUC = (((fPSD*fAVGU*fNOR*fHP*60/fSCL)-(iAVGU*iNOR*fHP*60/fSCL))*2)*fSCL/(fHP*60*isNOR); 
		  isUC = Math.round(tempUC *1000) /1000; 
		//  }
		
		
		//value of isNC
		if (isCED+isUC>aAVGU) {
		  isNC = 0; }
		else {
		  tempNC = aAVGU-(isCED+isUC); 
		  isNC = Math.round(tempNC*1000)/1000;
		  }
		  
		isAVGU = isCED+isUC+isNC;
		
	//results
	var rAPU,rAAC,rGCM,rNOR;
				
		// value of rAPU
		if ((isCED + isUC) > aAVGU) {
		  if (iNOR==0){
			rAPU = fAVGU; }
		  else {
			rAPU = ((isCED+isUC)*isNOR+iAVGU*iNOR)/fNOR; }		}
		else {
		  if(fAVGU>0.8999) {
			rAPU = ((isCED+isUC/1+isNC)*isNOR+iAVGU*iNOR)/fNOR;	}
		  else {
			rAPU = ((isCED+isUC/2+isNC)*isNOR+iAVGU*iNOR)/fNOR;	}	}

		//value of rAAC

		rAAC = (fNOR*fHP*60*aNOR/fSCL*(((((isCED+(((fPSD*fAVGU*fNOR*fHP*60/fSCL)-(iAVGU*iNOR*fHP*60/fSCL))*fSCL/(fHP*60*isNOR)))+isNC)*isNOR+iAVGU*iNOR)/fNOR)-fAVGU));


		if (rAAC<=0) {
			rAAC = 0;
			rGCM = 0;
			rNOR = 0; }

		if (rAAC>0) {
		
		//value of rGCM 
		rGCM = (fMPE*fNOR*fHP*60*aNOR/fSCL*(((((isCED+(((fPSD*fAVGU*fNOR*fHP*60/fSCL)-(iAVGU*iNOR*fHP*60/fSCL))*fSCL/(fHP*60*isNOR)))+isNC)*isNOR+iAVGU*iNOR)/fNOR)-fAVGU)); 
			
			
		// value of rNOR
		// if (rAAC<=0) {
		//	rNOR = 0; }
		// else {
			rNOR = parseInt(isNC*isNOR/fAVGU)+1; 
		// }
			
		}

		
if(!isNaN(rAPU)){
	$('#nAPU').val(Math.round(rAPU*100)); }
	else {
		window.alert("Error. Your ROI worksheet could not be calculated.  Please enter valid numbers into the form fields.") }
	newnAAC = Math.round(rAAC);
	$("#nAAC").val(addCommas(newnAAC));
	newrGCM=rGCM.toFixed(0);
	$("#nGCM").val(addCommas(newrGCM)); 
	$("#nNOR").val(Math.round(rNOR));


function addCommas(nStr) {
		nStr += '';
		x = nStr.split('.');
		xa = x[0];
		xb = x.length > 1 ? '.' + x[1] : '';
		var rgx = /(\d+)(\d{3})/;
		while (rgx.test(xa)) {
		xa = xa.replace(rgx, '$1' + ',' + '$2'); }
		return xa + xb;
	}

	}
)
						   }
						   )