            //disable context menu to make it harder to steal script
       document.oncontextmenu=new Function("return false;");
	 
	 /*========================================================================================================*/
        /* Format function taken from "http://www.experts-exchange.com/Programming/Languages/Scripting/JavaScript/Q_20937530.html" */
        /*========================================================================================================*/
        function Format(total,decimals)
        {
               var num = parseFloat(total);
                // First section sets non-number value to zero
                    if (!(num = parseFloat(num)))
                        num = "0.00";
                        // Second section sets two decimal place format
                        var Pad = "";
                        num = "" + Math.floor(num * Math.pow(10,decimals + 1) + 5);
                        // Pad if less than 0.10
                        if(num.length < decimals+1) 
                    {
                        for(Count = num.length; Count <= decimals; Count++)
                            Pad += "0";
                }
                num = Pad + num;
                // Parse into final string
                        num = num.substring(0,num.length - decimals - 1) + 
                        "." + num.substring(num.length - decimals -1, num.length -1);
                        // If less than 1 then add 0 to the left of the decimal
                            //if((num == "") || ((parseFloat(num) < 1) && (parseFloat(num) > 0)))      )
                            //    num = "0" + num;
                            //}
                        // Final section returns formatted number
                        
                        if (num.substring(0,1) == ".")
                            num = "0" + num;;
                        
                    return num;
        }
      
      
       function RunCalculations()
       {
       
        //get Flock Size
         var dblFlockSize = document.getElementById("tbFlockSize").value; 
           
          
          
          //====== DO COSTINGS ================ 
          /* electric totals - first per flock */
          
          var dblElectricity = document.getElementById("tbElectricity").value;
          var dblElectricityTotal;
          
          dblElectricityTotal = (dblElectricity/100) * dblFlockSize;
          
          document.getElementById("span_electricPerFlock").innerText = Format(dblElectricityTotal, 2);
          
          /* end electric totals - per flock */
          
          
          
          /*repairs */
          var dblRepairTotal = document.getElementById("tbRepairs").value;
          document.getElementById("span_repairsPerFlock").innerText = Format(dblRepairTotal, 2);
          /*end repairs */
          
          /*vets */
          var dblVetTotal = document.getElementById("tbVets").value;
          document.getElementById("span_vetPerFlock").innerText = Format(dblVetTotal, 2);
          /*end vets */
          
          /*range management */
          var dblRangeTotal = document.getElementById("tbRangeManagement").value;
          document.getElementById("span_RangeManagementPerFlock").innerText = Format(dblRangeTotal, 2);
          /*end range management */
          
          /*shed cleandown */
          var dblShedTotal = document.getElementById("tbShed").value;
          document.getElementById("span_ShedCleandownPerFlock").innerText = Format(dblShedTotal, 2);
          
          /*end shed cleandown */
         /*litter*/
                 
          var dblLitter = document.getElementById("tbLitter").value;
          var dblLitterTotal;
          
          dblLitterTotal = (dblLitter/100) * dblFlockSize;
          
          document.getElementById("span_LitterPerFlock").innerText = Format(dblLitterTotal, 2);
        /*end litter*/ 
       
       /* Pest Control*/ 
          var dblPestTotal = document.getElementById("tbPestControl").value;
          document.getElementById("span_PestControlPerFlock").innerText = Format(dblPestTotal, 2);
       /* End Pest Control */
       
       /* Land Rental */
         var dblRental = document.getElementById("tbLandRental").value;
         var dblRentalTotal;
          
          dblRentalTotal = (dblRental *(dblFlockSize/1000)) * (58/52);
          
          document.getElementById("span_LandRentalPerFlock").innerText = Format(dblRentalTotal, 2);
              
       /* End Land Rental */
       
       
       /* Water */
         var dblWater = document.getElementById("tbWater").value;
         var dblWaterTotal;
          
          dblWaterTotal = (dblWater / 100) * dblFlockSize;
          
          document.getElementById("span_WaterPerFlock").innerText = Format(dblWaterTotal, 2);
       /* End Water */
          
       /* Insurance */
          var dblInsuranceTotal = document.getElementById("tbInsurance").value;
          document.getElementById("span_InsurancePerFlock").innerText = Format(dblInsuranceTotal, 2);
       /* End Insurance */
       
       /* Petrol */
        var dblPetrolTotal = document.getElementById("tbPetrol").value;
          document.getElementById("span_PetrolPerFlock").innerText = Format(dblPetrolTotal, 2);
       /* End Petrol */
       
       /* Telephone */ 
        var dblTelephoneTotal = document.getElementById("tbTelephone").value;
          document.getElementById("span_TelephonePerFlock").innerText = Format(dblTelephoneTotal, 2);
       /* End Telephone */ 
       
       /* Bank Charges*/
        var dbBankTotal = document.getElementById("tbBankCharges").value;
          document.getElementById("span_BankChargePerFlock").innerText = Format(dbBankTotal, 2);
       /* End Bank Charges*/
       
       
       
       //tb16wkPullet
        var db16wkPulletTotal = document.getElementById("tb16wkPullet").value;
        db16wkPulletTotal = parseFloat(db16wkPulletTotal) * parseFloat(dblFlockSize);
        document.getElementById("span_16wkPerFlock").innerText = Format(db16wkPulletTotal, 2);
        
        //
        var dblabour72 = document.getElementById("tb72Grade2").value;
        var dblLabourRate = document.getElementById("tbLabourRate").value;
        
        dblabour72 = (((dblLabourRate * (dblFlockSize / 1000) * 58 ) * 7) * 0.72 )  * dblabour72;
        //alert(Format(dblabour72,2));
        document.getElementById("span_72Grade2").innerText = Format(dblabour72, 2);
        //alert(dblabour72);
        
        var dblabour28 = document.getElementById("tb28Rate").value;
        dblabour28 = (((dblLabourRate * (dblFlockSize / 1000) * 0.28) * 58 ) * 7)  * dblabour28;
        document.getElementById("span_28Grade2").innerText = Format(dblabour28, 2);
        
        var dblLabourCostPerFlock = 0.00;
        dblLabourCostPerFlock = ((dblabour72 + dblabour28) * 1.12) * 1.11;
        document.getElementById("span_LabourTotalPerFlock").innerText = Format(dblLabourCostPerFlock, 2);
        
        
                      
       
       //get costing sub totals
       var dblCostingSubTotalPerFlock = 0.00;
       dblCostingSubTotalPerFlock = ( parseFloat(dblElectricityTotal) + parseFloat(dblRepairTotal) + parseFloat(dblVetTotal) + parseFloat(dblShedTotal) + parseFloat(dblRangeTotal) + parseFloat(dblLitterTotal) + parseFloat(dblPestTotal) + parseFloat(dblRentalTotal) + parseFloat(dblWaterTotal) + parseFloat(dblInsuranceTotal) + parseFloat(dblPetrolTotal) + parseFloat(dblTelephoneTotal) + parseFloat(dbBankTotal));
       dblCostingSubTotalPerFlock = Format(dblCostingSubTotalPerFlock, 2)
       document.getElementById("span_CostingSubTotalPerFlock").innerText = Format(dblCostingSubTotalPerFlock, 2);
       
       
       
       
       
       
       //depreciation stuff
      var dblDepreciation20 = document.getElementById("tbBuildings20").value;
       var dblDepreciation20Total = 0.00;
       
       dblDepreciation20Total = (dblDepreciation20 * dblFlockSize / 20) * 58 / 52;
       
       document.getElementById("span_Depreciation20PerFlock").innerText = Format(dblDepreciation20Total, 2)
       
       
       var dblDepreciation10 = document.getElementById("tbBuildings10").value;
       var dblDepreciation10Total = 0.00;
       
       dblDepreciation10Total = (dblDepreciation10 * dblFlockSize / 10) * 58 / 52;
       
       document.getElementById("span_Depreciation10PerFlock").innerText = Format(dblDepreciation10Total, 2)
         
       //depreciation sub totals
       var dblDepreciationSubTotalPerFlock = 0.00;
       dblDepreciationSubTotalPerFlock = parseFloat(dblDepreciation20Total) + parseFloat(dblDepreciation10Total)
       document.getElementById("span_DepreciationSubTotalPerFlock").innerText = Format(dblDepreciationSubTotalPerFlock, 2)
       
       
       //other services
       var dblOtherTotal = document.getElementById("tbOther").value;
       document.getElementById("span_OtherPerFlock").innerText = Format(dblOtherTotal, 2);
      
       //======= END COSTINGS==============
       
       
       //==INCOME ==========================
       var dblEggBird72 =document.getElementById("tbEggBird72").value;
       //Egg sales
       var dblEggSales = document.getElementById("tbEggSales").value;
       var  dblEggSalesTotal = 0.00;
       dblEggSalesTotal = ((dblEggBird72/12) * dblFlockSize) * dblEggSales / 100;
       
       document.getElementById("span_EggIncomePerFlock").innerText = Format(dblEggSalesTotal, 2);
 
       
       //End Egg Sales
       
       
       //Old hen value less catching
       var dblOldHen = document.getElementById("tbOldHen").value;
       var dblMortality = document.getElementById("tbMortality").value;
       var dblOldHenTotal = 0.00;
       
       dblOldHenTotal =  ((( dblFlockSize * ((100 - dblMortality) / 100 ))  * dblOldHen ) / 100 );
       
       document.getElementById("span_OldHenPerFlock").innerText = Format(dblOldHenTotal, 2);
       
       //End Old hen value less catching
       
       
       //Income Sub Total
       dblIncomeSubTotal = parseFloat(dblEggSalesTotal) +  parseFloat(dblOldHenTotal);
       document.getElementById("span_IncomeSubTotal").innerText = Format(dblIncomeSubTotal, 2);
       
       //==END INCOME ======================
       
       
       
       //now do the same for pence/dozen
       //======PENCE PER DOZEN======
            //egg sales
           
          //old hen cost
          
       var dblOldHenDozenTotal = 0.00;
       
       dblOldHenDozenTotal =  ((dblOldHenTotal/ (dblEggBird72/12)) / dblFlockSize) * 100
       
       document.getElementById("span_OldHenPencePerDozen").innerText = Format(dblOldHenDozenTotal, 2);
       var dblEggSalesPerDozen = 0.00;
       dblEggSalesPerDozen = ((dblEggSalesTotal / (dblEggBird72 / 12)) / dblFlockSize) * 100;
       
       document.getElementById("span_EggIncomePerDozen").innerText = Format(dblEggSalesPerDozen, 2);


        //feed per tonne
        var dblFeedConsumptionPerBird = 0.00;
        var dblFeedPerTonne = 0.00;
        var dblFeedTotalPerFlock = 0.00;
        dblFeedConsumptionPerBird = document.getElementById("tbFeedConsumption").value;
        dblFeedPerTonne = document.getElementById("tbFeedPerTonne").value;
        //55*7
        dblFeedTotalPerFlock = ((dblFeedConsumptionPerBird * (55*7) / 1000000) * dblFeedPerTonne) * (dblFlockSize * (100-(0/2)) / 100);
        document.getElementById("span_FeedPerFlock").innerText = Format(dblFeedTotalPerFlock, 2);
        
        
       
       
        //Income Per Dozen Sub Total
        var dblIncomePerDozenSubTotal = 0.00;
        //alert(dblOldHenDozenTotal);
        //alert(dblEggSalesPerDozen);
       dblIncomePerDozenSubTotal = Format(dblEggSalesPerDozen-dblOldHenDozenTotal,2);
       document.getElementById("span_IncomePerDozenSubTotal").innerText = dblIncomePerDozenSubTotal;
 
 
 
        //costings per dozen
        /* electric per dozen */
          var dblTotalElectricPerDozen = 0.00;
          dblTotalElectricPerDozen = ((dblElectricityTotal / (dblEggBird72/12) ) /dblFlockSize ) * 100
          document.getElementById("span_electricPerDozen").innerText = Format(dblTotalElectricPerDozen, 2);
          /* end electric per dozen */
        
        /* maintenance per dozen */  
          var dblMaintenancePerDozen = 0.00;
          dblMaintenancePerDozen = ((dblRepairTotal / (dblEggBird72/12) ) /dblFlockSize ) * 100
          document.getElementById("span_repairsPerDozen").innerText = Format(dblMaintenancePerDozen, 2);
          
        /* vet per dozen */  
          var dblVetPerDozen = 0.00;
          dblVetPerDozen = ((dblVetTotal / (dblEggBird72/12) ) /dblFlockSize ) * 100;
          document.getElementById("span_vetPerDozen").innerText = Format(dblVetPerDozen, 2);
          
          /* shed clean per dozen */  
          var dblShedPerDozen = 0.00;
          dblShedPerDozen = ((dblShedTotal / (dblEggBird72/12) ) /dblFlockSize ) * 100;
          document.getElementById("span_ShedCleandownPerDozen").innerText = Format(dblShedPerDozen, 2);
          
          /* range management per dozen */  
          var dblRangePerDozen = 0.00;
          dblRangePerDozen = ((dblRangeTotal / (dblEggBird72/12) ) /dblFlockSize ) * 100;
          document.getElementById("span_RangeManagementPerDozen").innerText = Format(dblRangePerDozen, 2);
          
          /* litter per dozen */  
          var dblLitterPerDozen = 0.00;
          dblLitterPerDozen = ((dblLitterTotal / (dblEggBird72/12) ) /dblFlockSize ) * 100;
          document.getElementById("span_LitterPerDozen").innerText = Format(dblLitterPerDozen, 2);
          
          /* pest control per dozen */  
          var dblPestPerDozen = 0.00;
          dblPestPerDozen = ((dblPestTotal / (dblEggBird72/12) ) /dblFlockSize ) * 100;
          document.getElementById("span_PestControlPerDozen").innerText = Format(dblPestPerDozen, 2);
          
          /* Land Rent control per dozen */  
          var dblRentPerDozen = 0.00;
          dblRentPerDozen = ((dblRentalTotal / (dblEggBird72/12) ) /dblFlockSize ) * 100;
          document.getElementById("span_LandRentalPerDozen").innerText = Format(dblRentPerDozen, 2);
          
            /* Water control per dozen */  
          var dblWaterPerDozen = 0.00;
          dblWaterPerDozen = ((dblWaterTotal / (dblEggBird72/12) ) /dblFlockSize ) * 100;
          document.getElementById("span_WaterPerDozen").innerText = Format(dblWaterPerDozen, 2);
          
          /* Insurance per dozen */  
          var dblInsurancePerDozen = 0.00;
          dblInsurancePerDozen = ((dblInsuranceTotal / (dblEggBird72/12) ) /dblFlockSize ) * 100;
          document.getElementById("span_InsurancePerDozen").innerText = Format(dblInsurancePerDozen, 2);
          
          /* Petrol per dozen */  
          var dblPetrolPerDozen = 0.00;
          dblPetrolPerDozen = ((dblPetrolTotal / (dblEggBird72/12) ) /dblFlockSize ) * 100;
          document.getElementById("span_PetrolPerDozen").innerText = Format(dblPetrolPerDozen, 2);
          
          /* Telephone per dozen */  
          var dblTelephonePerDozen = 0.00;
          dblTelephonePerDozen = ((dblTelephoneTotal / (dblEggBird72/12) ) /dblFlockSize ) * 100;
          document.getElementById("span_TelephonePerDozen").innerText = Format(dblTelephonePerDozen, 2);
          
           /* Bank Charges per dozen */  
          var dblBankPerDozen = 0.00;
          dblBankPerDozen = ((dbBankTotal / (dblEggBird72/12) ) /dblFlockSize ) * 100;
          document.getElementById("span_BankChargePerDozen").innerText = Format(dblBankPerDozen, 2);
          
          /* Labour Costs per dozen */  
          var dblLabourCostDozen = 0.00;
          dblLabourCostDozen = ((dblLabourCostPerFlock / (dblEggBird72/12) ) /dblFlockSize ) * 100;
          document.getElementById("span_LabourTotalPerDozen").innerText = Format(dblLabourCostDozen, 2);
          
          //feed per dozen
          var dblFeedPerDozen = 0.00;
          dblFeedPerDozen = ((dblFeedTotalPerFlock / (dblEggBird72/12) ) /dblFlockSize ) * 100;
          document.getElementById("span_FeedPerDozen").innerText = Format(dblFeedPerDozen, 2);
          
          
          //depreciation
          /*var dblDepreciationPerDozen = 0.00;
          dblDepreciationPerDozen = ((dblFeedTotalPerFlock / (dblEggBird72/12) ) /dblFlockSize ) * 100;
          document.getElementById("span_DepreciationPerDozen").innerText = Format(dblDepreciationPerDozen, 2);
       */
            //total per dozen
            //dblCostingSubTotalPerFlock  
            var dblTotalPerDozen = 0.00;
          dblTotalPerDozen = ((dblCostingSubTotalPerFlock / (dblEggBird72/12) ) /dblFlockSize ) * 100;
          document.getElementById("span_CostingSubTotalPerDozen").innerText = Format(dblTotalPerDozen, 2);
          
          //depreciation per dozen total
          var dblDepreciationPerDozen = 0.00;
          dblDepreciationPerDozen = ((dblDepreciationSubTotalPerFlock / (dblEggBird72/12) ) /dblFlockSize ) * 100;
          document.getElementById("span_DepreciationSubTotalPerDozen").innerText = Format(dblDepreciationPerDozen, 2);

          //other per dozen
           var dblTotalOtherPerDozen = 0.00;
          dblTotalOtherPerDozen = ((dblOtherTotal / (dblEggBird72/12) ) /dblFlockSize ) * 100;
          document.getElementById("span_OtherPerDozen").innerText = Format(dblTotalOtherPerDozen, 2);
          
          
          
          //16 week pullet
          var dbl16TotalPerDozen = 0.00;
          dbl16TotalPerDozen = ((db16wkPulletTotal / (dblEggBird72/12) ) /dblFlockSize ) * 100;
          document.getElementById("span_16wkPerDozen").innerText = Format(dbl16TotalPerDozen, 2);
          
          
          var dblOtherSubTotal1 = 0.00;
          dblOtherSubTotal1 = document.getElementById("tbOther").value;
          //alert(dblOtherSubTotal1);
          document.getElementById("span_OtherPerFlockTotal").innerText = Format(dblOtherSubTotal1, 2);
          
          //SUB TOTALS
          
          var dblFinalTotalPerFlock = 0.00;          
          dblFinalTotalPerFlock = Format(parseFloat(db16wkPulletTotal) + parseFloat(dblFeedTotalPerFlock) + parseFloat(dblLabourCostPerFlock) + parseFloat(dblCostingSubTotalPerFlock) + parseFloat(dblDepreciationSubTotalPerFlock) + parseFloat(dblOtherSubTotal1), 2);
          document.getElementById("span_TotalCostsPerFlock").innerText = dblFinalTotalPerFlock;
          
          //per dozen
          
          var dblFinalTotalPerDozen = 0.00;          
          dblFinalTotalPerDozen = Format(parseFloat(dbl16TotalPerDozen) + parseFloat(dblFeedPerDozen) + parseFloat(dblLabourCostDozen) + parseFloat(dblDepreciationPerDozen) + parseFloat(dblTotalPerDozen) + parseFloat(dblTotalOtherPerDozen), 2);
          document.getElementById("span_TotalCostsPerDozen").innerText = dblFinalTotalPerDozen;
          
          
          //margins
            //flock
          var dblMarginTotal = 0.00;
          dblMarginTotal = Format(parseFloat(dblIncomeSubTotal) - parseFloat(dblFinalTotalPerFlock), 2);
          document.getElementById("span_TotalMarginsPerFlock").innerText = dblMarginTotal;
            
            //dozen
            var dblMarginTotalDozen = 0.00;
                        
          dblMarginTotalDozen = Format(parseFloat(dblIncomePerDozenSubTotal) - parseFloat(dblFinalTotalPerDozen), 2);
                    document.getElementById("span_TotalMarginsPerDozen").innerText = dblMarginTotalDozen;
          
          //margin per bird
          var dblMarginBirdTotal = 0.00;
          dblMarginBirdTotal = Format(parseFloat(dblMarginTotal) / parseFloat(dblFlockSize), 2);
          document.getElementById("span_MarginPerBird").innerText = dblMarginBirdTotal;
          
          
        
       //===Summary Stuff
       //capital investment per bird
      var dblCapitalInvestmentPerBird = parseFloat(dblDepreciation10) + parseFloat(dblDepreciation20);
      document.getElementById("span_CapitalInvestmentPerBird").innerText = Format(dblCapitalInvestmentPerBird, 2);
      
       //producers capital investment
       var dblCapitalInvestment = (dblCapitalInvestmentPerBird * dblFlockSize);
       document.getElementById("span_ProducersCapitalInvestment").innerText = Format(dblCapitalInvestment, 2)
       
       //annualised margin per bird
       var dblMarginBirdYear = 0.00;
          dblMarginBirdYear = dblMarginBirdTotal * (52/58);
          document.getElementById("span_MarginPerYear").innerText = Format(dblMarginBirdYear,2);
       //year 1 return on capital
       var dblYearReturn = 0.00;
          dblYearReturn =  (dblMarginBirdYear / dblCapitalInvestmentPerBird) * 100;
          document.getElementById("span_Year1Return").innerText = Format(dblYearReturn,2) + "%";
       
       //===End Summary Stuff=================
       
       
       
        var dblPulletPerc = 0.00;
          dblPulletPerc =  (dblLabourCostDozen / dblFinalTotalPerDozen) * 100;
          document.getElementById("span_PulletPerc").innerText = Format(dblPulletPerc,2) + "%";
          
                    
          var dblFeedPerc = 0.00;
          dblFeedPerc =  (dblFeedPerDozen / dblFinalTotalPerDozen) * 100;
          document.getElementById("span_FeedPerc").innerText = Format(dblFeedPerc,2) + "%";
          
          var dblLabourPerc = 0.00;
          dblLabourPerc =  (dblLabourCostDozen / dblFinalTotalPerDozen) * 100;
          document.getElementById("span_LabourPerc").innerText = Format(dblLabourPerc,2) + "%";
          
          
          var dblCostPerc = 0.00;
          dblCostPerc =  (dblTotalPerDozen / dblFinalTotalPerDozen) * 100;
          document.getElementById("span_CostsPerc").innerText = Format(dblCostPerc,2) + "%";
          
          
          var dblDepPerc = 0.00;
          dblDepPerc =  (dblDepreciationPerDozen / dblFinalTotalPerDozen) * 100;
          document.getElementById("span_DepPerc").innerText = Format(dblDepPerc,2) + "%";
          
          
          var dblOtherPerc = 0.00;
          dblOtherPerc =  (dblOtherTotal / dblFinalTotalPerDozen) * 100;
          document.getElementById("span_OtherPerc").innerText = Format(dblOtherPerc,2) + "%";
          
       }
       