// JavaScript Document
function calcSpoil(){
	calcSpoilWo();
	calcSpoilW();
}

function calcSpoilW(){
	var inputTotalGlassesSold = document.getElementById('totGlass');
	//var inputAverageWbgPrice = document.getElementById('inputAverageWbgPrice');
	var inputTotalWbgSelections = document.getElementById('numWines');
	//var inputServingsPerBottle = document.getElementById('inputServingsPerBottle');
	//var inputSpoilageDays = document.getElementById('spoilDays');
	//var inputPercentCostGlassPerBottle = document.getElementById('inputPercentCostGlassPerBottle');
	

	var TotalGlassesSold = inputTotalGlassesSold.value;
	//var AverageWbgPrice = inputAverageWbgPrice.value;
	var AverageWbgPrice = 10;
	var TotalWbgSelections = inputTotalWbgSelections.value;
	//var ServingsPerBottle = inputServingsPerBottle.value;
	var ServingsPerBottle = 4;
	//var SpoilageDays = inputSpoilageDays.value;
	var SpoilageDays = 25;
	//var PercentCostGlassPerBottle = inputPercentCostGlassPerBottle.value;
	var PercentCostGlassPerBottle = 25;
	//PercentCostGlassPerBottle = PercentCostGlassPerBottle.replace("%", "");
	PercentCostGlassPerBottle = PercentCostGlassPerBottle/100;
	
	var constPercentWbgSalesR1 = .305;
	var constPercentWbgSalesR2 = .179;
	var constPercentWbgSalesR3 = .121;
	var constPercentWbgSalesR4 = .099;
	var constPercentWbgSalesR5 = .079;
	var constPercentWbgSalesR6 = .065;
	var constPercentWbgSalesR7 = .052;
	var constPercentWbgSalesR8 = .044;
	var constPercentWbgSalesR9 = .034;
	var constPercentWbgSalesR10 = .021;
	
	//Do the easy ones
	//document.getElementById('woSa').innerHTML = "$" + addCommas((TotalGlassesSold * AverageWbgPrice));
	var AverageCostPerBottleSold = AverageWbgPrice*ServingsPerBottle*PercentCostGlassPerBottle;
	//document.getElementById('divAverageCostPerBottleSold').innerHTML = "$" + addCommas(AverageCostPerBottleSold.toFixed(2));
	//document.getElementById('divSumGlassesSold').innerHTML = TotalGlassesSold;
	
	// Calculated Values for every rank
	var BottlesPerRank = TotalWbgSelections / 10; //10 ranks

	//___________________________  Wine Rank Calculations  _________________________________________________________________
	
	// Calculations Rank 1
	var GlassesSoldR1 = TotalGlassesSold * constPercentWbgSalesR1;
	var SalesR1 = GlassesSoldR1 * AverageWbgPrice;
	var CostR1 = SalesR1 * PercentCostGlassPerBottle;
	var GlassesSoldPerDayR1 = GlassesSoldR1 / 30; //30 days in a month
	var GlassesSoldPerDayPerBottleR1 = GlassesSoldPerDayR1 / BottlesPerRank;
	var TotalDaysPerBottleR1 = 1/(GlassesSoldPerDayPerBottleR1 / ServingsPerBottle) ; 
	var MaxAllowedDaysPerBottleR1 = (TotalDaysPerBottleR1 <= SpoilageDays) ? TotalDaysPerBottleR1 : SpoilageDays;
	var GlassesPerCycleR1 = GlassesSoldPerDayR1 * SpoilageDays; // How many glasses are sold during the spoilage cycle
	var GlassesPerCyclePerBottleR1 = GlassesPerCycleR1 / BottlesPerRank;
	var SpoiledGlassesR1 = (MaxAllowedDaysPerBottleR1>=SpoilageDays?(GlassesPerCyclePerBottleR1>1?ServingsPerBottle-GlassesPerCyclePerBottleR1:ServingsPerBottle-1):0)*BottlesPerRank;
	var SpoiledGlassesTotalR1 = 30/SpoilageDays*SpoiledGlassesR1*GlassesPerCyclePerBottleR1;
	var SpoilageCostR1 = AverageWbgPrice * PercentCostGlassPerBottle * SpoiledGlassesTotalR1;
	var GrossProfitR1 = SalesR1 - CostR1 - SpoilageCostR1;
	
	//_______________________________________________________________________________________________________________________

	// Calculations Rank 2
	var GlassesSoldR2 = TotalGlassesSold * constPercentWbgSalesR2;
	var SalesR2 = GlassesSoldR2 * AverageWbgPrice;
	var CostR2 = SalesR2 * PercentCostGlassPerBottle;
	var GlassesSoldPerDayR2 = GlassesSoldR2 / 30; //30 days in a month
	var GlassesSoldPerDayPerBottleR2 = GlassesSoldPerDayR2 / BottlesPerRank;
	var TotalDaysPerBottleR2 = 1/(GlassesSoldPerDayPerBottleR2 / ServingsPerBottle) ; 
	var MaxAllowedDaysPerBottleR2 = (TotalDaysPerBottleR2 <= SpoilageDays) ? TotalDaysPerBottleR2 : SpoilageDays;
	var GlassesPerCycleR2 = GlassesSoldPerDayR2 * SpoilageDays; // How many glasses are sold during the spoilage cycle
	var GlassesPerCyclePerBottleR2 = GlassesPerCycleR2 / BottlesPerRank;
	var SpoiledGlassesR2 = (MaxAllowedDaysPerBottleR2>=SpoilageDays?(GlassesPerCyclePerBottleR2>1?ServingsPerBottle-GlassesPerCyclePerBottleR2:ServingsPerBottle-1):0)*BottlesPerRank;
	var SpoiledGlassesTotalR2 = 30/SpoilageDays*SpoiledGlassesR2*GlassesPerCyclePerBottleR2;
	var SpoilageCostR2 = AverageWbgPrice * PercentCostGlassPerBottle * SpoiledGlassesTotalR2;
	var GrossProfitR2 = SalesR2 - CostR2 - SpoilageCostR2;
	
	//_______________________________________________________________________________________________________________________

	// Calculations Rank 3
	var GlassesSoldR3 = TotalGlassesSold * constPercentWbgSalesR3;
	var SalesR3 = GlassesSoldR3 * AverageWbgPrice;
	var CostR3 = SalesR3 * PercentCostGlassPerBottle;
	var GlassesSoldPerDayR3 = GlassesSoldR3 / 30; //30 days in a month
	var GlassesSoldPerDayPerBottleR3 = GlassesSoldPerDayR3 / BottlesPerRank;
	var TotalDaysPerBottleR3 = 1/(GlassesSoldPerDayPerBottleR3 / ServingsPerBottle) ; 
	var MaxAllowedDaysPerBottleR3 = (TotalDaysPerBottleR3 <= SpoilageDays) ? TotalDaysPerBottleR3 : SpoilageDays;
	var GlassesPerCycleR3 = GlassesSoldPerDayR3 * SpoilageDays; // How many glasses are sold during the spoilage cycle
	var GlassesPerCyclePerBottleR3 = GlassesPerCycleR3 / BottlesPerRank;
	var SpoiledGlassesR3 = (MaxAllowedDaysPerBottleR3>=SpoilageDays?(GlassesPerCyclePerBottleR3>1?ServingsPerBottle-GlassesPerCyclePerBottleR3:ServingsPerBottle-1):0)*BottlesPerRank;
	var SpoiledGlassesTotalR3 = 30/SpoilageDays*SpoiledGlassesR3*GlassesPerCyclePerBottleR3;
	var SpoilageCostR3 = AverageWbgPrice * PercentCostGlassPerBottle * SpoiledGlassesTotalR3;
	var GrossProfitR3 = SalesR3 - CostR3 - SpoilageCostR3;
	
	//_______________________________________________________________________________________________________________________

	// Calculations Rank 4
	var GlassesSoldR4 = TotalGlassesSold * constPercentWbgSalesR4;
	var SalesR4 = GlassesSoldR4 * AverageWbgPrice;
	var CostR4 = SalesR4 * PercentCostGlassPerBottle;
	var GlassesSoldPerDayR4 = GlassesSoldR4 / 30; //*E//30 days in a month
	var GlassesSoldPerDayPerBottleR4 = GlassesSoldPerDayR4 / BottlesPerRank; //*F
	var TotalDaysPerBottleR4 = 1/(GlassesSoldPerDayPerBottleR4 / ServingsPerBottle) ;  //*G
	var MaxAllowedDaysPerBottleR4 = (TotalDaysPerBottleR4 <= SpoilageDays) ? TotalDaysPerBottleR4 : SpoilageDays; //*H
	var GlassesPerCycleR4 = GlassesSoldPerDayR4 * SpoilageDays; //*I// How many glasses are sold during the spoilage cycle
	var GlassesPerCyclePerBottleR4 = GlassesPerCycleR4 / BottlesPerRank; //*J
	var SpoiledGlassesR4 = ((MaxAllowedDaysPerBottleR4>=SpoilageDays)?((GlassesPerCyclePerBottleR4>1)?ServingsPerBottle-GlassesPerCyclePerBottleR4:ServingsPerBottle-1):0)*BottlesPerRank; //*K
	var SpoiledGlassesTotalR4 = 30/SpoilageDays*SpoiledGlassesR4*GlassesPerCyclePerBottleR4;
	var SpoilageCostR4 = AverageWbgPrice * PercentCostGlassPerBottle * SpoiledGlassesTotalR4;
	var GrossProfitR4 = SalesR4 - CostR4 - SpoilageCostR4;
	
	//_______________________________________________________________________________________________________________________

	// Calculations Rank 5
	var GlassesSoldR5 = TotalGlassesSold * constPercentWbgSalesR5;
	var SalesR5 = GlassesSoldR5 * AverageWbgPrice;
	var CostR5 = SalesR5 * PercentCostGlassPerBottle;
	var GlassesSoldPerDayR5 = GlassesSoldR5 / 30; //30 days in a month
	var GlassesSoldPerDayPerBottleR5 = GlassesSoldPerDayR5 / BottlesPerRank;
	var TotalDaysPerBottleR5 = 1/(GlassesSoldPerDayPerBottleR5 / ServingsPerBottle) ; 
	var MaxAllowedDaysPerBottleR5 = (TotalDaysPerBottleR5 <= SpoilageDays) ? TotalDaysPerBottleR5 : SpoilageDays;
	var GlassesPerCycleR5 = GlassesSoldPerDayR5 * SpoilageDays; // How many glasses are sold during the spoilage cycle
	var GlassesPerCyclePerBottleR5 = GlassesPerCycleR5 / BottlesPerRank;
	var SpoiledGlassesR5 = (MaxAllowedDaysPerBottleR5>=SpoilageDays?(GlassesPerCyclePerBottleR5>1?ServingsPerBottle-GlassesPerCyclePerBottleR5:ServingsPerBottle-1):0)*BottlesPerRank;
	var SpoiledGlassesTotalR5 = 30/SpoilageDays*SpoiledGlassesR5*GlassesPerCyclePerBottleR5;
	var SpoilageCostR5 = AverageWbgPrice * PercentCostGlassPerBottle * SpoiledGlassesTotalR5;
	var GrossProfitR5 = SalesR5 - CostR5 - SpoilageCostR5;
	
	//_______________________________________________________________________________________________________________________

	// Calculations Rank 6
	var GlassesSoldR6 = TotalGlassesSold * constPercentWbgSalesR6;
	var SalesR6 = GlassesSoldR6 * AverageWbgPrice;
	var CostR6 = SalesR6 * PercentCostGlassPerBottle;
	var GlassesSoldPerDayR6 = GlassesSoldR6 / 30; //30 days in a month
	var GlassesSoldPerDayPerBottleR6 = GlassesSoldPerDayR6 / BottlesPerRank;
	var TotalDaysPerBottleR6 = 1/(GlassesSoldPerDayPerBottleR6 / ServingsPerBottle) ; 
	var MaxAllowedDaysPerBottleR6 = (TotalDaysPerBottleR6 <= SpoilageDays) ? TotalDaysPerBottleR6 : SpoilageDays;
	var GlassesPerCycleR6 = GlassesSoldPerDayR6 * SpoilageDays; // How many glasses are sold during the spoilage cycle
	var GlassesPerCyclePerBottleR6 = GlassesPerCycleR6 / BottlesPerRank;
	var SpoiledGlassesR6 = (MaxAllowedDaysPerBottleR6>=SpoilageDays?(GlassesPerCyclePerBottleR6>1?ServingsPerBottle-GlassesPerCyclePerBottleR6:ServingsPerBottle-1):0)*BottlesPerRank;
	var SpoiledGlassesTotalR6 = 30/SpoilageDays*SpoiledGlassesR6*GlassesPerCyclePerBottleR6;
	var SpoilageCostR6 = AverageWbgPrice * PercentCostGlassPerBottle * SpoiledGlassesTotalR6;
	var GrossProfitR6 = SalesR6 - CostR6 - SpoilageCostR6;
	
	//_______________________________________________________________________________________________________________________

	// Calculations Rank 7
	var GlassesSoldR7 = TotalGlassesSold * constPercentWbgSalesR7;
	var SalesR7 = GlassesSoldR7 * AverageWbgPrice;
	var CostR7 = SalesR7 * PercentCostGlassPerBottle;
	var GlassesSoldPerDayR7 = GlassesSoldR7 / 30; //30 days in a month
	var GlassesSoldPerDayPerBottleR7 = GlassesSoldPerDayR7 / BottlesPerRank;
	var TotalDaysPerBottleR7 = 1/(GlassesSoldPerDayPerBottleR7 / ServingsPerBottle) ; 
	var MaxAllowedDaysPerBottleR7 = (TotalDaysPerBottleR7 <= SpoilageDays) ? TotalDaysPerBottleR7 : SpoilageDays;
	var GlassesPerCycleR7 = GlassesSoldPerDayR7 * SpoilageDays; // How many glasses are sold during the spoilage cycle
	var GlassesPerCyclePerBottleR7 = GlassesPerCycleR7 / BottlesPerRank;
	var SpoiledGlassesR7 = (MaxAllowedDaysPerBottleR7>=SpoilageDays?(GlassesPerCyclePerBottleR7>1?ServingsPerBottle-GlassesPerCyclePerBottleR7:ServingsPerBottle-1):0)*BottlesPerRank;
	var SpoiledGlassesTotalR7 = 30/SpoilageDays*SpoiledGlassesR7*GlassesPerCyclePerBottleR7;
	var SpoilageCostR7 = AverageWbgPrice * PercentCostGlassPerBottle * SpoiledGlassesTotalR7;
	var GrossProfitR7 = SalesR7 - CostR7 - SpoilageCostR7;
	
	//_______________________________________________________________________________________________________________________

	// Calculations Rank 8
	var GlassesSoldR8 = TotalGlassesSold * constPercentWbgSalesR8;
	var SalesR8 = GlassesSoldR8 * AverageWbgPrice;
	var CostR8 = SalesR8 * PercentCostGlassPerBottle;
	var GlassesSoldPerDayR8 = GlassesSoldR8 / 30; //30 days in a month
	var GlassesSoldPerDayPerBottleR8 = GlassesSoldPerDayR8 / BottlesPerRank;
	var TotalDaysPerBottleR8 = 1/(GlassesSoldPerDayPerBottleR8 / ServingsPerBottle) ; 
	var MaxAllowedDaysPerBottleR8 = (TotalDaysPerBottleR8 <= SpoilageDays) ? TotalDaysPerBottleR8 : SpoilageDays;
	var GlassesPerCycleR8 = GlassesSoldPerDayR8 * SpoilageDays; // How many glasses are sold during the spoilage cycle
	var GlassesPerCyclePerBottleR8 = GlassesPerCycleR8 / BottlesPerRank;
	var SpoiledGlassesR8 = (MaxAllowedDaysPerBottleR8>=SpoilageDays?(GlassesPerCyclePerBottleR8>1?ServingsPerBottle-GlassesPerCyclePerBottleR8:ServingsPerBottle-1):0)*BottlesPerRank;
	var SpoiledGlassesTotalR8 = 30/SpoilageDays*SpoiledGlassesR8*GlassesPerCyclePerBottleR8;
	var SpoilageCostR8 = AverageWbgPrice * PercentCostGlassPerBottle * SpoiledGlassesTotalR8;
	var GrossProfitR8 = SalesR8 - CostR8 - SpoilageCostR8;
	
	//_______________________________________________________________________________________________________________________

	// Calculations Rank 9
	var GlassesSoldR9 = TotalGlassesSold * constPercentWbgSalesR9;
	var SalesR9 = GlassesSoldR9 * AverageWbgPrice;
	var CostR9 = SalesR9 * PercentCostGlassPerBottle;
	var GlassesSoldPerDayR9 = GlassesSoldR9 / 30; //30 days in a month
	var GlassesSoldPerDayPerBottleR9 = GlassesSoldPerDayR9 / BottlesPerRank;
	var TotalDaysPerBottleR9 = 1/(GlassesSoldPerDayPerBottleR9 / ServingsPerBottle) ; 
	var MaxAllowedDaysPerBottleR9 = (TotalDaysPerBottleR9 <= SpoilageDays) ? TotalDaysPerBottleR9 : SpoilageDays;
	var GlassesPerCycleR9 = GlassesSoldPerDayR9 * SpoilageDays; // How many glasses are sold during the spoilage cycle
	var GlassesPerCyclePerBottleR9 = GlassesPerCycleR9 / BottlesPerRank;
	var SpoiledGlassesR9 = (MaxAllowedDaysPerBottleR9>=SpoilageDays?(GlassesPerCyclePerBottleR9>1?ServingsPerBottle-GlassesPerCyclePerBottleR9:ServingsPerBottle-1):0)*BottlesPerRank;
	var SpoiledGlassesTotalR9 = 30/SpoilageDays*SpoiledGlassesR9*GlassesPerCyclePerBottleR9;
	var SpoilageCostR9 = AverageWbgPrice * PercentCostGlassPerBottle * SpoiledGlassesTotalR9;
	var GrossProfitR9 = SalesR9 - CostR9 - SpoilageCostR9;
	
	//_______________________________________________________________________________________________________________________

	// Calculations Rank 10
	var GlassesSoldR10 = TotalGlassesSold * constPercentWbgSalesR10;
	var SalesR10 = GlassesSoldR10 * AverageWbgPrice;
	var CostR10 = SalesR10 * PercentCostGlassPerBottle;
	var GlassesSoldPerDayR10 = GlassesSoldR10 / 30; //30 days in a month
	var GlassesSoldPerDayPerBottleR10 = GlassesSoldPerDayR10 / BottlesPerRank;
	var TotalDaysPerBottleR10 = 1/(GlassesSoldPerDayPerBottleR10 / ServingsPerBottle) ; 
	var MaxAllowedDaysPerBottleR10 = (TotalDaysPerBottleR10 <= SpoilageDays) ? TotalDaysPerBottleR10 : SpoilageDays;
	var GlassesPerCycleR10 = GlassesSoldPerDayR10 * SpoilageDays; // How many glasses are sold during the spoilage cycle
	var GlassesPerCyclePerBottleR10 = GlassesPerCycleR10 / BottlesPerRank;
	var SpoiledGlassesR10 = (MaxAllowedDaysPerBottleR10>=SpoilageDays?(GlassesPerCyclePerBottleR10>1?ServingsPerBottle-GlassesPerCyclePerBottleR10:ServingsPerBottle-1):0)*BottlesPerRank;
	var SpoiledGlassesTotalR10 = 30/SpoilageDays*SpoiledGlassesR10*GlassesPerCyclePerBottleR10;
	var SpoilageCostR10 = AverageWbgPrice * PercentCostGlassPerBottle * SpoiledGlassesTotalR10;
	var GrossProfitR10 = SalesR10 - CostR10 - SpoilageCostR10;
	
	//_______________________________________________________________________________________________________________________

	// Summary Fields
	var SpoilageCostTotal = SpoilageCostR1 + SpoilageCostR2 + SpoilageCostR3 + SpoilageCostR4 + SpoilageCostR5 + SpoilageCostR6 + SpoilageCostR7 + SpoilageCostR8 + SpoilageCostR9 + SpoilageCostR10;
	var GrossProfitTotal = GrossProfitR1 + GrossProfitR2 + GrossProfitR3 + GrossProfitR4 + GrossProfitR5 + GrossProfitR6 + GrossProfitR7 + GrossProfitR8 + GrossProfitR9 + GrossProfitR10;
	var SalesTotal = TotalGlassesSold * AverageWbgPrice;
	var CostTotal = SalesTotal * PercentCostGlassPerBottle;
	
	// Without Preservation Graph Calculations
	var GraphHeight = 81;
	var SpoilagePercentOfSales = (SpoilageCostTotal / SalesTotal);
	var SpoilageHeight = GraphHeight * SpoilagePercentOfSales;
	SpoilageHeight = SpoilageHeight.toFixed(0)
	var ProfitHeight = GraphHeight - SpoilageHeight;
	var graphWPr = document.getElementById('gWPr');
	var graphWSp = document.getElementById('gWSp');
	graphWPr.style.height=ProfitHeight+'px';
	graphWSp.style.height=SpoilageHeight+'px';

	//Without Preservation text fields
	document.getElementById('wSa').innerHTML = "$" + addCommas(SalesTotal.toFixed(0));
	document.getElementById('wPr').innerHTML = "$" + addCommas(GrossProfitTotal.toFixed(0));
	document.getElementById('wSp').innerHTML = "$" + addCommas(SpoilageCostTotal.toFixed(0));
	document.getElementById('wCo').innerHTML = "$" + addCommas(CostTotal.toFixed(0));
	

}


function calcSpoilWo(){
	var inputTotalGlassesSold = document.getElementById('totGlass');
	//var inputAverageWbgPrice = document.getElementById('inputAverageWbgPrice');
	var inputTotalWbgSelections = document.getElementById('numWines');
	//var inputServingsPerBottle = document.getElementById('inputServingsPerBottle');
	var inputSpoilageDays = document.getElementById('spoilDays');
	//var inputPercentCostGlassPerBottle = document.getElementById('inputPercentCostGlassPerBottle');
	

	var TotalGlassesSold = inputTotalGlassesSold.value;
	//var AverageWbgPrice = inputAverageWbgPrice.value;
	var AverageWbgPrice = 10;
	var TotalWbgSelections = inputTotalWbgSelections.value;
	//var ServingsPerBottle = inputServingsPerBottle.value;
	var ServingsPerBottle = 4;
	var SpoilageDays = inputSpoilageDays.value;
	//var PercentCostGlassPerBottle = inputPercentCostGlassPerBottle.value;
	var PercentCostGlassPerBottle = 25;
	//PercentCostGlassPerBottle = PercentCostGlassPerBottle.replace("%", "");
	PercentCostGlassPerBottle = PercentCostGlassPerBottle/100;
	
	var constPercentWbgSalesR1 = .305;
	var constPercentWbgSalesR2 = .179;
	var constPercentWbgSalesR3 = .121;
	var constPercentWbgSalesR4 = .099;
	var constPercentWbgSalesR5 = .079;
	var constPercentWbgSalesR6 = .065;
	var constPercentWbgSalesR7 = .052;
	var constPercentWbgSalesR8 = .044;
	var constPercentWbgSalesR9 = .034;
	var constPercentWbgSalesR10 = .021;
	
	//Do the easy ones
	//document.getElementById('woSa').innerHTML = "$" + addCommas((TotalGlassesSold * AverageWbgPrice));
	var AverageCostPerBottleSold = AverageWbgPrice*ServingsPerBottle*PercentCostGlassPerBottle;
	//document.getElementById('divAverageCostPerBottleSold').innerHTML = "$" + addCommas(AverageCostPerBottleSold.toFixed(2));
	//document.getElementById('divSumGlassesSold').innerHTML = TotalGlassesSold;
	
	// Calculated Values for every rank
	var BottlesPerRank = TotalWbgSelections / 10; //10 ranks

	//___________________________  Wine Rank Calculations  _________________________________________________________________
	
	// Calculations Rank 1
	var GlassesSoldR1 = TotalGlassesSold * constPercentWbgSalesR1;
	var SalesR1 = GlassesSoldR1 * AverageWbgPrice;
	var CostR1 = SalesR1 * PercentCostGlassPerBottle;
	var GlassesSoldPerDayR1 = GlassesSoldR1 / 30; //30 days in a month
	var GlassesSoldPerDayPerBottleR1 = GlassesSoldPerDayR1 / BottlesPerRank;
	var TotalDaysPerBottleR1 = 1/(GlassesSoldPerDayPerBottleR1 / ServingsPerBottle) ; 
	var MaxAllowedDaysPerBottleR1 = (TotalDaysPerBottleR1 <= SpoilageDays) ? TotalDaysPerBottleR1 : SpoilageDays;
	var GlassesPerCycleR1 = GlassesSoldPerDayR1 * SpoilageDays; // How many glasses are sold during the spoilage cycle
	var GlassesPerCyclePerBottleR1 = GlassesPerCycleR1 / BottlesPerRank;
	var SpoiledGlassesR1 = (MaxAllowedDaysPerBottleR1>=SpoilageDays?(GlassesPerCyclePerBottleR1>1?ServingsPerBottle-GlassesPerCyclePerBottleR1:ServingsPerBottle-1):0)*BottlesPerRank;
	var SpoiledGlassesTotalR1 = 30/SpoilageDays*SpoiledGlassesR1*GlassesPerCyclePerBottleR1;
	var SpoilageCostR1 = AverageWbgPrice * PercentCostGlassPerBottle * SpoiledGlassesTotalR1;
	var GrossProfitR1 = SalesR1 - CostR1 - SpoilageCostR1;
	
	//_______________________________________________________________________________________________________________________

	// Calculations Rank 2
	var GlassesSoldR2 = TotalGlassesSold * constPercentWbgSalesR2;
	var SalesR2 = GlassesSoldR2 * AverageWbgPrice;
	var CostR2 = SalesR2 * PercentCostGlassPerBottle;
	var GlassesSoldPerDayR2 = GlassesSoldR2 / 30; //30 days in a month
	var GlassesSoldPerDayPerBottleR2 = GlassesSoldPerDayR2 / BottlesPerRank;
	var TotalDaysPerBottleR2 = 1/(GlassesSoldPerDayPerBottleR2 / ServingsPerBottle) ; 
	var MaxAllowedDaysPerBottleR2 = (TotalDaysPerBottleR2 <= SpoilageDays) ? TotalDaysPerBottleR2 : SpoilageDays;
	var GlassesPerCycleR2 = GlassesSoldPerDayR2 * SpoilageDays; // How many glasses are sold during the spoilage cycle
	var GlassesPerCyclePerBottleR2 = GlassesPerCycleR2 / BottlesPerRank;
	var SpoiledGlassesR2 = (MaxAllowedDaysPerBottleR2>=SpoilageDays?(GlassesPerCyclePerBottleR2>1?ServingsPerBottle-GlassesPerCyclePerBottleR2:ServingsPerBottle-1):0)*BottlesPerRank;
	var SpoiledGlassesTotalR2 = 30/SpoilageDays*SpoiledGlassesR2*GlassesPerCyclePerBottleR2;
	var SpoilageCostR2 = AverageWbgPrice * PercentCostGlassPerBottle * SpoiledGlassesTotalR2;
	var GrossProfitR2 = SalesR2 - CostR2 - SpoilageCostR2;
	
	//_______________________________________________________________________________________________________________________

	// Calculations Rank 3
	var GlassesSoldR3 = TotalGlassesSold * constPercentWbgSalesR3;
	var SalesR3 = GlassesSoldR3 * AverageWbgPrice;
	var CostR3 = SalesR3 * PercentCostGlassPerBottle;
	var GlassesSoldPerDayR3 = GlassesSoldR3 / 30; //30 days in a month
	var GlassesSoldPerDayPerBottleR3 = GlassesSoldPerDayR3 / BottlesPerRank;
	var TotalDaysPerBottleR3 = 1/(GlassesSoldPerDayPerBottleR3 / ServingsPerBottle) ; 
	var MaxAllowedDaysPerBottleR3 = (TotalDaysPerBottleR3 <= SpoilageDays) ? TotalDaysPerBottleR3 : SpoilageDays;
	var GlassesPerCycleR3 = GlassesSoldPerDayR3 * SpoilageDays; // How many glasses are sold during the spoilage cycle
	var GlassesPerCyclePerBottleR3 = GlassesPerCycleR3 / BottlesPerRank;
	var SpoiledGlassesR3 = (MaxAllowedDaysPerBottleR3>=SpoilageDays?(GlassesPerCyclePerBottleR3>1?ServingsPerBottle-GlassesPerCyclePerBottleR3:ServingsPerBottle-1):0)*BottlesPerRank;
	var SpoiledGlassesTotalR3 = 30/SpoilageDays*SpoiledGlassesR3*GlassesPerCyclePerBottleR3;
	var SpoilageCostR3 = AverageWbgPrice * PercentCostGlassPerBottle * SpoiledGlassesTotalR3;
	var GrossProfitR3 = SalesR3 - CostR3 - SpoilageCostR3;
	
	//_______________________________________________________________________________________________________________________

	// Calculations Rank 4
	var GlassesSoldR4 = TotalGlassesSold * constPercentWbgSalesR4;
	var SalesR4 = GlassesSoldR4 * AverageWbgPrice;
	var CostR4 = SalesR4 * PercentCostGlassPerBottle;
	var GlassesSoldPerDayR4 = GlassesSoldR4 / 30; //*E//30 days in a month
	var GlassesSoldPerDayPerBottleR4 = GlassesSoldPerDayR4 / BottlesPerRank; //*F
	var TotalDaysPerBottleR4 = 1/(GlassesSoldPerDayPerBottleR4 / ServingsPerBottle) ;  //*G
	var MaxAllowedDaysPerBottleR4 = (TotalDaysPerBottleR4 <= SpoilageDays) ? TotalDaysPerBottleR4 : SpoilageDays; //*H
	var GlassesPerCycleR4 = GlassesSoldPerDayR4 * SpoilageDays; //*I// How many glasses are sold during the spoilage cycle
	var GlassesPerCyclePerBottleR4 = GlassesPerCycleR4 / BottlesPerRank; //*J
	var SpoiledGlassesR4 = ((MaxAllowedDaysPerBottleR4>=SpoilageDays)?((GlassesPerCyclePerBottleR4>1)?ServingsPerBottle-GlassesPerCyclePerBottleR4:ServingsPerBottle-1):0)*BottlesPerRank; //*K
	var SpoiledGlassesTotalR4 = 30/SpoilageDays*SpoiledGlassesR4*GlassesPerCyclePerBottleR4;
	var SpoilageCostR4 = AverageWbgPrice * PercentCostGlassPerBottle * SpoiledGlassesTotalR4;
	var GrossProfitR4 = SalesR4 - CostR4 - SpoilageCostR4;
	
	//_______________________________________________________________________________________________________________________

	// Calculations Rank 5
	var GlassesSoldR5 = TotalGlassesSold * constPercentWbgSalesR5;
	var SalesR5 = GlassesSoldR5 * AverageWbgPrice;
	var CostR5 = SalesR5 * PercentCostGlassPerBottle;
	var GlassesSoldPerDayR5 = GlassesSoldR5 / 30; //30 days in a month
	var GlassesSoldPerDayPerBottleR5 = GlassesSoldPerDayR5 / BottlesPerRank;
	var TotalDaysPerBottleR5 = 1/(GlassesSoldPerDayPerBottleR5 / ServingsPerBottle) ; 
	var MaxAllowedDaysPerBottleR5 = (TotalDaysPerBottleR5 <= SpoilageDays) ? TotalDaysPerBottleR5 : SpoilageDays;
	var GlassesPerCycleR5 = GlassesSoldPerDayR5 * SpoilageDays; // How many glasses are sold during the spoilage cycle
	var GlassesPerCyclePerBottleR5 = GlassesPerCycleR5 / BottlesPerRank;
	var SpoiledGlassesR5 = (MaxAllowedDaysPerBottleR5>=SpoilageDays?(GlassesPerCyclePerBottleR5>1?ServingsPerBottle-GlassesPerCyclePerBottleR5:ServingsPerBottle-1):0)*BottlesPerRank;
	var SpoiledGlassesTotalR5 = 30/SpoilageDays*SpoiledGlassesR5*GlassesPerCyclePerBottleR5;
	var SpoilageCostR5 = AverageWbgPrice * PercentCostGlassPerBottle * SpoiledGlassesTotalR5;
	var GrossProfitR5 = SalesR5 - CostR5 - SpoilageCostR5;
	
	//_______________________________________________________________________________________________________________________

	// Calculations Rank 6
	var GlassesSoldR6 = TotalGlassesSold * constPercentWbgSalesR6;
	var SalesR6 = GlassesSoldR6 * AverageWbgPrice;
	var CostR6 = SalesR6 * PercentCostGlassPerBottle;
	var GlassesSoldPerDayR6 = GlassesSoldR6 / 30; //30 days in a month
	var GlassesSoldPerDayPerBottleR6 = GlassesSoldPerDayR6 / BottlesPerRank;
	var TotalDaysPerBottleR6 = 1/(GlassesSoldPerDayPerBottleR6 / ServingsPerBottle) ; 
	var MaxAllowedDaysPerBottleR6 = (TotalDaysPerBottleR6 <= SpoilageDays) ? TotalDaysPerBottleR6 : SpoilageDays;
	var GlassesPerCycleR6 = GlassesSoldPerDayR6 * SpoilageDays; // How many glasses are sold during the spoilage cycle
	var GlassesPerCyclePerBottleR6 = GlassesPerCycleR6 / BottlesPerRank;
	var SpoiledGlassesR6 = (MaxAllowedDaysPerBottleR6>=SpoilageDays?(GlassesPerCyclePerBottleR6>1?ServingsPerBottle-GlassesPerCyclePerBottleR6:ServingsPerBottle-1):0)*BottlesPerRank;
	var SpoiledGlassesTotalR6 = 30/SpoilageDays*SpoiledGlassesR6*GlassesPerCyclePerBottleR6;
	var SpoilageCostR6 = AverageWbgPrice * PercentCostGlassPerBottle * SpoiledGlassesTotalR6;
	var GrossProfitR6 = SalesR6 - CostR6 - SpoilageCostR6;
	
	//_______________________________________________________________________________________________________________________

	// Calculations Rank 7
	var GlassesSoldR7 = TotalGlassesSold * constPercentWbgSalesR7;
	var SalesR7 = GlassesSoldR7 * AverageWbgPrice;
	var CostR7 = SalesR7 * PercentCostGlassPerBottle;
	var GlassesSoldPerDayR7 = GlassesSoldR7 / 30; //30 days in a month
	var GlassesSoldPerDayPerBottleR7 = GlassesSoldPerDayR7 / BottlesPerRank;
	var TotalDaysPerBottleR7 = 1/(GlassesSoldPerDayPerBottleR7 / ServingsPerBottle) ; 
	var MaxAllowedDaysPerBottleR7 = (TotalDaysPerBottleR7 <= SpoilageDays) ? TotalDaysPerBottleR7 : SpoilageDays;
	var GlassesPerCycleR7 = GlassesSoldPerDayR7 * SpoilageDays; // How many glasses are sold during the spoilage cycle
	var GlassesPerCyclePerBottleR7 = GlassesPerCycleR7 / BottlesPerRank;
	var SpoiledGlassesR7 = (MaxAllowedDaysPerBottleR7>=SpoilageDays?(GlassesPerCyclePerBottleR7>1?ServingsPerBottle-GlassesPerCyclePerBottleR7:ServingsPerBottle-1):0)*BottlesPerRank;
	var SpoiledGlassesTotalR7 = 30/SpoilageDays*SpoiledGlassesR7*GlassesPerCyclePerBottleR7;
	var SpoilageCostR7 = AverageWbgPrice * PercentCostGlassPerBottle * SpoiledGlassesTotalR7;
	var GrossProfitR7 = SalesR7 - CostR7 - SpoilageCostR7;
	
	//_______________________________________________________________________________________________________________________

	// Calculations Rank 8
	var GlassesSoldR8 = TotalGlassesSold * constPercentWbgSalesR8;
	var SalesR8 = GlassesSoldR8 * AverageWbgPrice;
	var CostR8 = SalesR8 * PercentCostGlassPerBottle;
	var GlassesSoldPerDayR8 = GlassesSoldR8 / 30; //30 days in a month
	var GlassesSoldPerDayPerBottleR8 = GlassesSoldPerDayR8 / BottlesPerRank;
	var TotalDaysPerBottleR8 = 1/(GlassesSoldPerDayPerBottleR8 / ServingsPerBottle) ; 
	var MaxAllowedDaysPerBottleR8 = (TotalDaysPerBottleR8 <= SpoilageDays) ? TotalDaysPerBottleR8 : SpoilageDays;
	var GlassesPerCycleR8 = GlassesSoldPerDayR8 * SpoilageDays; // How many glasses are sold during the spoilage cycle
	var GlassesPerCyclePerBottleR8 = GlassesPerCycleR8 / BottlesPerRank;
	var SpoiledGlassesR8 = (MaxAllowedDaysPerBottleR8>=SpoilageDays?(GlassesPerCyclePerBottleR8>1?ServingsPerBottle-GlassesPerCyclePerBottleR8:ServingsPerBottle-1):0)*BottlesPerRank;
	var SpoiledGlassesTotalR8 = 30/SpoilageDays*SpoiledGlassesR8*GlassesPerCyclePerBottleR8;
	var SpoilageCostR8 = AverageWbgPrice * PercentCostGlassPerBottle * SpoiledGlassesTotalR8;
	var GrossProfitR8 = SalesR8 - CostR8 - SpoilageCostR8;
	
	//_______________________________________________________________________________________________________________________

	// Calculations Rank 9
	var GlassesSoldR9 = TotalGlassesSold * constPercentWbgSalesR9;
	var SalesR9 = GlassesSoldR9 * AverageWbgPrice;
	var CostR9 = SalesR9 * PercentCostGlassPerBottle;
	var GlassesSoldPerDayR9 = GlassesSoldR9 / 30; //30 days in a month
	var GlassesSoldPerDayPerBottleR9 = GlassesSoldPerDayR9 / BottlesPerRank;
	var TotalDaysPerBottleR9 = 1/(GlassesSoldPerDayPerBottleR9 / ServingsPerBottle) ; 
	var MaxAllowedDaysPerBottleR9 = (TotalDaysPerBottleR9 <= SpoilageDays) ? TotalDaysPerBottleR9 : SpoilageDays;
	var GlassesPerCycleR9 = GlassesSoldPerDayR9 * SpoilageDays; // How many glasses are sold during the spoilage cycle
	var GlassesPerCyclePerBottleR9 = GlassesPerCycleR9 / BottlesPerRank;
	var SpoiledGlassesR9 = (MaxAllowedDaysPerBottleR9>=SpoilageDays?(GlassesPerCyclePerBottleR9>1?ServingsPerBottle-GlassesPerCyclePerBottleR9:ServingsPerBottle-1):0)*BottlesPerRank;
	var SpoiledGlassesTotalR9 = 30/SpoilageDays*SpoiledGlassesR9*GlassesPerCyclePerBottleR9;
	var SpoilageCostR9 = AverageWbgPrice * PercentCostGlassPerBottle * SpoiledGlassesTotalR9;
	var GrossProfitR9 = SalesR9 - CostR9 - SpoilageCostR9;
	
	//_______________________________________________________________________________________________________________________

	// Calculations Rank 10
	var GlassesSoldR10 = TotalGlassesSold * constPercentWbgSalesR10;
	var SalesR10 = GlassesSoldR10 * AverageWbgPrice;
	var CostR10 = SalesR10 * PercentCostGlassPerBottle;
	var GlassesSoldPerDayR10 = GlassesSoldR10 / 30; //30 days in a month
	var GlassesSoldPerDayPerBottleR10 = GlassesSoldPerDayR10 / BottlesPerRank;
	var TotalDaysPerBottleR10 = 1/(GlassesSoldPerDayPerBottleR10 / ServingsPerBottle) ; 
	var MaxAllowedDaysPerBottleR10 = (TotalDaysPerBottleR10 <= SpoilageDays) ? TotalDaysPerBottleR10 : SpoilageDays;
	var GlassesPerCycleR10 = GlassesSoldPerDayR10 * SpoilageDays; // How many glasses are sold during the spoilage cycle
	var GlassesPerCyclePerBottleR10 = GlassesPerCycleR10 / BottlesPerRank;
	var SpoiledGlassesR10 = (MaxAllowedDaysPerBottleR10>=SpoilageDays?(GlassesPerCyclePerBottleR10>1?ServingsPerBottle-GlassesPerCyclePerBottleR10:ServingsPerBottle-1):0)*BottlesPerRank;
	var SpoiledGlassesTotalR10 = 30/SpoilageDays*SpoiledGlassesR10*GlassesPerCyclePerBottleR10;
	var SpoilageCostR10 = AverageWbgPrice * PercentCostGlassPerBottle * SpoiledGlassesTotalR10;
	var GrossProfitR10 = SalesR10 - CostR10 - SpoilageCostR10;
	
	//_______________________________________________________________________________________________________________________

	// Summary Fields
	var SpoilageCostTotal = SpoilageCostR1 + SpoilageCostR2 + SpoilageCostR3 + SpoilageCostR4 + SpoilageCostR5 + SpoilageCostR6 + SpoilageCostR7 + SpoilageCostR8 + SpoilageCostR9 + SpoilageCostR10;
	var GrossProfitTotal = GrossProfitR1 + GrossProfitR2 + GrossProfitR3 + GrossProfitR4 + GrossProfitR5 + GrossProfitR6 + GrossProfitR7 + GrossProfitR8 + GrossProfitR9 + GrossProfitR10;
	var SalesTotal = TotalGlassesSold * AverageWbgPrice;
	var CostTotal = SalesTotal * PercentCostGlassPerBottle;
	
	// Without Preservation Graph Calculations
	var GraphHeight = 81;
	var SpoilagePercentOfSales = (SpoilageCostTotal / SalesTotal);
	var SpoilageHeight = GraphHeight * SpoilagePercentOfSales;
	SpoilageHeight = SpoilageHeight.toFixed(0)
	var ProfitHeight = GraphHeight - SpoilageHeight;
	var graphWoPr = document.getElementById('gWoPr');
	var graphWoSp = document.getElementById('gWoSp');
	graphWoPr.style.height=ProfitHeight+'px';
	graphWoSp.style.height=SpoilageHeight+'px';

	//Without Preservation text fields
	document.getElementById('woSa').innerHTML = "$" + addCommas(SalesTotal.toFixed(0));
	document.getElementById('woPr').innerHTML = "$" + addCommas(GrossProfitTotal.toFixed(0));
	document.getElementById('woSp').innerHTML = "$" + addCommas(SpoilageCostTotal.toFixed(0));
	document.getElementById('woCo').innerHTML = "$" + addCommas(CostTotal.toFixed(0));
	

}

function addCommas(nStr)
{
	nStr += '';
	x = nStr.split('.');
	x1 = x[0];
	x2 = x.length > 1 ? '.' + x[1] : '';
	var rgx = /(\d+)(\d{3})/;
	while (rgx.test(x1)) {
		x1 = x1.replace(rgx, '$1' + ',' + '$2');
	}
	return x1 + x2;
}

