//GM Calculator
//Copyright 2010 FeeTrader, LLC.  All Rights Reserved.
//www.feetrader.com
//
//Above header information must stay with below code if used on sites other than feetrader.com.
function isNumeric(value){return!isNaN(value)}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}function AllowOnlyNumeric(){var key=window.event.keyCode;if((key>47&&key<58)||key==46)return;else window.event.returnValue=null}function calculateAdvancedGrossMargin(){var errorMsg="";var payRate=document.getElementById('payRateA');var billRate=document.getElementById('billRateA');var fringeFactor=document.getElementById('fringeFactorA');var numberOfConsultants=document.getElementById('numberOfConsultantsA');var GM=document.getElementById('GMA');var GMP=document.getElementById('GMPA');var MU=document.getElementById('MUA');var GPday=document.getElementById('GPday');var GPweek=document.getElementById('GPweek');var GPmonth=document.getElementById('GPmonth');var GPyear=document.getElementById('GPyear');var Ryear=document.getElementById('Ryear');if(!isNumeric(payRate.value)&&payRate.value.length>0)errorMsg="Pay rate needs to be a number.\n";if(!isNumeric(billRate.value)&&billRate.value.length>0)errorMsg+="Bill rate needs to be a number.\n";if(!isNumeric(fringeFactor.value)&&fringeFactor.value.length>0)errorMsg+="Burden/Fringe Factor needs to be a number.\n";if(!isNumeric(GM.value)&&GM.value.length>0)errorMsg+="Gross Margin needs to be a number.\n";if(!isNumeric(GMP.value)&&GMP.value.length>0)errorMsg+="Gross Margin % needs to be a number.\n";if(!isNumeric(MU.value)&&MU.value.length>0)errorMsg+="Mark Up % needs to be a number.\n";if(errorMsg!="")alert(errorMsg);else{if(payRate.value!=""&&billRate.value!="")MU.value=(((billRate.value/payRate.value)-1)*100).toFixed(2);else if(MU.value!=""&&payRate.value==""&&billRate.value!="")payRate.value=(billRate.value/((MU.value/100)+1)).toFixed(2);else if(MU.value!=""&&payRate.value!=""&&billRate.value=="")billRate.value=((parseFloat(MU.value/100)+1)*payRate.value).toFixed(2);if(payRate.value!=""&&billRate.value!=""&&fringeFactor.value!=""){GM.value=(parseFloat(billRate.value)-(payRate.value*(fringeFactor.value/100))-payRate.value).toFixed(2);GMP.value=((GM.value/billRate.value)*100).toFixed(2)}else if((GM.value!=""||GMP.value!="")&&payRate.value==""&&billRate.value!=""&&fringeFactor.value!=""){if(GM.value=="")GM.value=((GMP.value/100)*billRate.value).toFixed(2);else GMP.value=((GM.value/billRate.value)*100).toFixed(2);payRate.value=((billRate.value-GM.value)/(1+(parseFloat(fringeFactor.value)/100))).toFixed(2)}else if((GM.value!=""||GMP.value!="")&&payRate.value!=""&&billRate.value==""&&fringeFactor.value!=""){if(GM.value=="")alert("The Gross Margin Dollar value must be entered to calculate the bill rate.");else{billRate.value=(parseFloat(GM.value)+parseFloat(payRate.value)+(payRate.value*(fringeFactor.value/100))).toFixed(2);GMP.value=((GM.value/billRate.value)*100).toFixed(2)}}else if((GM.value!=""||GMP.value!="")&&payRate.value!=""&&billRate.value!=""&&fringeFactor.value==""){if(GM.value=="")GM.value=((GMP.value/100)*billRate.value).toFixed(2);else GMP.value=((GM.value/billRate.value)*100).toFixed(2);fringeFactor.value=(((billRate.value-GM.value-payRate.value)/payRate.value)*100).toFixed(2)}else alert("At least three of the four input values must be entered to calculate the fourth value.");if(payRate.value!=""&&billRate.value!="")MU.value=(((billRate.value/payRate.value)-1)*100).toFixed(2);else if(MU.value!=""&&payRate.value==""&&billRate.value!="")payRate.value=(billRate.value/((MU.value/100)+1)).toFixed(2);else if(MU.value!=""&&payRate.value!=""&&billRate.value=="")billRate.value=((parseFloat(MU.value/100)+1)*payRate.value).toFixed(2);if(GM.value!=""&&numberOfConsultants!=""){GPday.value=addCommas((GM.value*numberOfConsultants.value*8).toFixed(2));GPweek.value=addCommas((GM.value*numberOfConsultants.value*40).toFixed(2));GPmonth.value=addCommas((GM.value*numberOfConsultants.value*173.33).toFixed(2));GPyear.value=addCommas((GM.value*numberOfConsultants.value*2080).toFixed(2))}if(billRate.value!=""&&numberOfConsultants.value!=""){Ryear.value=addCommas((billRate.value*2080*numberOfConsultants.value).toFixed(2))}}}function calculateGrossMargin(){var errorMsg="";var payRate=document.getElementById('payRate');var billRate=document.getElementById('billRate');var fringeFactor=document.getElementById('fringeFactor');var GM=document.getElementById('GM');var GMP=document.getElementById('GMP');if(!isNumeric(payRate.value)&&payRate.value.length>0)errorMsg="Pay rate needs to be a number.\n";if(!isNumeric(billRate.value)&&billRate.value.length>0)errorMsg+="Bill rate needs to be a number.\n";if(!isNumeric(fringeFactor.value)&&fringeFactor.value.length>0)errorMsg+="Burden/Fringe Factor needs to be a number.";if(!isNumeric(GM.value)&&GM.value.length>0)errorMsg+="Gross Margin needs to be a number.";if(!isNumeric(GMP.value)&&GMP.value.length>0)errorMsg+="Gross Margin % needs to be a number.";if(errorMsg!="")alert(errorMsg);else{if(payRate.value!=""&&billRate.value!=""&&fringeFactor.value!=""){GM.value=(parseFloat(billRate.value)-(payRate.value*(fringeFactor.value/100))-payRate.value).toFixed(2);GMP.value=((GM.value/billRate.value)*100).toFixed(2)}else if((GM.value!=""||GMP.value!="")&&payRate.value==""&&billRate.value!=""&&fringeFactor.value!=""){if(GM.value=="")GM.value=((GMP.value/100)*billRate.value).toFixed(2);else GMP.value=((GM.value/billRate.value)*100).toFixed(2);payRate.value=((billRate.value-GM.value)/(1+(parseFloat(fringeFactor.value)/100))).toFixed(2)}else if((GM.value!=""||GMP.value!="")&&payRate.value!=""&&billRate.value==""&&fringeFactor.value!=""){if(GM.value=="")alert("The Gross Margin Dollar value must be entered to calculate the bill rate");else{billRate.value=(parseFloat(GM.value)+parseFloat(payRate.value)+(payRate.value*(fringeFactor.value/100))).toFixed(2);GMP.value=((GM.value/billRate.value)*100).toFixed(2)}}else if((GM.value!=""||GMP.value!="")&&payRate.value!=""&&billRate.value!=""&&fringeFactor.value==""){if(GM.value=="")GM.value=((GMP.value/100)*billRate.value).toFixed(2);else GMP.value=((GM.value/billRate.value)*100).toFixed(2);fringeFactor.value=(((billRate.value-GM.value-payRate.value)/payRate.value)*100).toFixed(2)}else alert("At least three of the four input values must be entered to calculate the fourth value.")}}function calculateMarkUp(){var errorMsg="";var payRate=document.getElementById('payRateMU');var billRate=document.getElementById('billRateMU');var MU=document.getElementById('MU');if(!isNumeric(payRate.value)&&payRate.value.length>0)errorMsg="Pay rate needs to be a number.\n";if(!isNumeric(billRate.value)&&billRate.value.length>0)errorMsg+="Bill rate needs to be a number.\n";if(!isNumeric(MU.value)&&MU.value.length>0)errorMsg+="Mark Up % needs to be a number.";if(errorMsg!="")alert(errorMsg);else{if(payRate.value!=""&&billRate.value!="")MU.value=(((billRate.value/payRate.value)-1)*100).toFixed(2);else if(MU.value!=""&&payRate.value==""&&billRate.value!="")payRate.value=(billRate.value/((MU.value/100)+1)).toFixed(2);else if(MU.value!=""&&payRate.value!=""&&billRate.value=="")billRate.value=((parseFloat(MU.value/100)+1)*payRate.value).toFixed(2);else alert("At least two of the three input values must be entered to calculate the third value.")}}