function calc() {
        
//do total source score
        
        //set variables
        soiltestp = document.pindex.soiltestp.value
        fertprate = document.pindex.fertprate.value
        orgp1rate = document.pindex.orgp1rate.value
        orgp2rate = document.pindex.orgp2rate.value
        
        ferttiming = document.pindex.ferttiming.value
        fertmethod = document.pindex.fertmethod.value
        org1timing = document.pindex.org1timing.value
        org1method = document.pindex.org1method.value
        org2timing = document.pindex.org2timing.value
        org2method = document.pindex.org2method.value
        
        
        //1. soil test P contribution        
        soiltestcontrib = soiltestp * 1.25
        document.pindex.soiltestcontrib.value = Math.round(soiltestcontrib)
        

        //2. fertilizer P contribution
        fertcontrib = fertprate * ferttiming * fertmethod
        document.pindex.fertcontrib.value = Math.round(fertcontrib)
        
        //3. organic P contribution
        orgcontrib = (0.75 * orgp1rate * org1timing * org1method) + (0.75 * orgp2rate * org2timing * org2method)
        document.pindex.orgcontrib.value = Math.round(orgcontrib)
        
        //TOTAL SOURCE SCORE = 1 + 2 + 3
        totalsource = soiltestcontrib + fertcontrib + orgcontrib
        document.pindex.totalsource.value = Math.round(totalsource)
        
 
//do total dissolved transport score
        
        //set variables
        flowdistance = document.pindex.flowdistance.value
        streamtype = document.pindex.streamtype.value
        drainclass = document.pindex.drainclass.value
        floodfreq = document.pindex.floodfreq.value
        
        
        //1. flow distance contribution        
        if (streamtype==1) {

             flowcontrib =  1 - (flowdistance - 25)/175
             
        }
        
        else {
                
             flowcontrib =  1 - (flowdistance - 50)/250
             
        }   


                //flow distance contribution has a max value of 1 and min value of 0
                if (flowcontrib > 1)
                        flowcontrib = 1	
                        
                if (flowcontrib < 0)
                        flowcontrib = 0
                        
        flowcontribround = flowcontrib * 10
        flowcontribround = Math.round(flowcontribround)
        document.pindex.flowcontrib.value = flowcontribround/10
        
        
        //TOTAL DISSOLVED TRANSPORT SCORE
        totaldissolved = drainclass*1 + floodfreq*1 + flowcontrib*1
        
                //total dissvoled transport has a max value of 1
                if (totaldissolved > 1)
                        totaldissolved = 1	
 
        totaldissolvedround = totaldissolved * 10
        totaldissolvedround = Math.round(totaldissolvedround)
        document.pindex.totaldissolved.value = totaldissolvedround/10
        
        
        


//do total particulate transport score
        
        //set variables
        erosion = document.pindex.erosion.value
        concflow = document.pindex.concflow.value
        

        
        //1. erosion contribution
        eroscontrib = Math.round(erosion) / 10
        document.pindex.eroscontrib.value = eroscontrib
        
        //2. flow distance contribution we already know from dissolved contribution calc 
        flowcontrib2 = flowcontrib
        document.pindex.flowcontrib2.value = flowcontribround/10
        
        //3. concentrated flow contribution
        document.pindex.concflowcontrib.value = concflow

        
        
        //TOTAL PARTICULATE TRANSPORT SCORE
        totalparticulate = eroscontrib*1 + floodfreq*1 + flowcontrib2*1 + concflow*1
        



                //total particulate transport has a max value of 1
                if (totalparticulate > 1)
                        totalparticulate = 1	
         
         totalparticulateround = totalparticulate * 10
        totalparticulateround = Math.round(totalparticulateround)
         document.pindex.totalparticulate.value = totalparticulateround/10

        
         
//do dissolved p index

        dissolvedp = totalsource * totaldissolved
        document.pindex.dissolvedp.value = Math.round(dissolvedp)
        document.pindex.dissolvedp2.value = Math.round(dissolvedp)
        
        //get text for site vulnerability
        if (dissolvedp < 50)
                disptext = "Low"
                
        else if (dissolvedp >= 50 && dissolvedp < 75)
                disptext = "Medium"
                
        else if (dissolvedp >= 75 && dissolvedp < 100)
                disptext = "High"
                
        else if (dissolvedp >= 100)
                disptext = "Very High"
                
        
        document.pindex.disptext.value = disptext
        document.pindex.disptext2.value = disptext
        
    


//do particulate p index

        particulatep = totalsource * totalparticulate
        document.pindex.particulatep.value = Math.round(particulatep)
        document.pindex.particulatep2.value = Math.round(particulatep)
        
        //get text for site vulnerability
        if (particulatep < 50)
                partptext = "Low"
                
        else if (particulatep >= 50 && particulatep < 75)
                partptext = "Medium"
                
        else if (particulatep >= 75 && particulatep < 100)
                partptext = "High"
                
        else if (particulatep >= 100)
                partptext = "Very High"
                
        
        document.pindex.partptext.value = partptext
        document.pindex.partptext2.value = partptext
        


//do management recommendation

        recvalue = Math.max(dissolvedp,particulatep)        
         
        //get text for mgmt recommendation
        if (recvalue < 50)
                mgmtrec = "N based management"
                
        else if (recvalue >= 50 && recvalue < 75)
                mgmtrec = "N based management with BMP's"
                
        else if (recvalue >= 75 && recvalue < 100)
                mgmtrec = "P applications to crop removal"
                
        else if (recvalue >= 100)
                mgmtrec = "No P2O5 fertilizer or manure application"
                
                
        document.pindex.mgmtrec.value = mgmtrec
        document.pindex.mgmtrec2.value = mgmtrec
        
        

              
}