var SECOND = 1000; // the number of milliseconds in a second
var MINUTE = SECOND * 60; // the number of milliseconds in a minute
var HOUR = MINUTE * 60; // the number of milliseconds in an hour
var DAY = HOUR * 24; // the number of milliseconds in a day
var WEEK = DAY * 7; // the number of milliseconds in a week
var MONTH=(WEEK*52)/12;

function calcamt(entered, changed,tochange,sal,pro,prom)
{
  fieldchanged=eval(changed);
  fieldtochange=eval(tochange);
  salfield=eval(sal);
  profield=eval(pro);
  promfield=eval(prom);
  maxMerit = roundOff(parseFloat(form1.maxMerit.value),0);
  if (entered=="%")
  {
    if (parseFloat(fieldchanged.value)>0)
    {
	meritamt=roundOff((salfield.value*fieldchanged.value)/100,0);      
    }
    else
    {
    	meritamt=0;
    }
	fieldtochange.value=formatCurrency(roundOff(parseFloat(meritamt),0));
	fieldchanged.value=roundOff(fieldchanged.value,2);
    
  }
  else if (entered=="amt")
  {
    if (parseFloat(unFormatCurrency(fieldchanged.value))>0)
    {
	meritpct=roundOff((unFormatCurrency(fieldchanged.value)/salfield.value)*100,2);
    }
    else
    {
    	meritpct=0;
    }
    fieldchanged.value=formatCurrency(fieldchanged.value);
    fieldtochange.value=meritpct;
  }
  calcProAmounts(form1.proIncreasePct,promfield,profield,form1.merAwardPct,form1.outStndAward,sal);
  calcnewsalary(sal,form1.newSal,"form1.proIncrease");
  proamtfield=eval(profield)
  proamtfield.value=formatCurrency(proamtfield.value);
  calcoverflow();
}
function calcoverflow()
{
  newsal=parseFloat(unFormatCurrency(form1.newSal.value));
  maxmerit=parseFloat(form1.contpoint.value);
  grademax=parseFloat(form1.grade_max.value);
  if (parseFloat(form1.oldSal.value)>parseFloat(maxmerit))
    maxmerit=parseFloat(form1.oldSal.value);
  overflow=0;
  //alert("in calcoverflow:"+maxmerit+";"+newsal+";"+form1.totalls.value);
  if (parseFloat(newsal)>parseFloat(maxmerit))
  {
//    if (parseFloat(newsal)>parseFloat(grademax))
//      newsal=parseFloat(grademax);
    overflow=parseFloat(newsal)-parseFloat(maxmerit);
    newsal=parseFloat(maxmerit);
    form1.newSal.value=formatCurrency(maxmerit);
    form1.totalls.value=formatCurrency(parseFloat(overflow));
    //alert("totalls is " + form1.totalls.value);
  }
  else form1.totalls.value=formatCurrency(0);
}
function calcProAmounts(proPct,proMultiplier,proAmt,merPct,outPct,sal)
{
  proPctfield=eval(proPct);
  proAmtfield=eval(proAmt);
  proMulfield=eval(proMultiplier);
  multiplier=proMulfield.value;
  salfield=eval(sal);
  totalPct=parseFloat(0);
  merPctfield=eval(merPct);
  outPctfield=eval(outPct);
  if (parseFloat(merPctfield.value)>0)
    totalPct=roundOff(parseFloat(totalPct)+parseFloat(merPctfield.value),2);
  if (outPctfield.value!="")
    totalPct=roundOff(parseFloat(totalPct)+parseFloat(outPctfield.value),2);
  if (proMulfield.value=="")
  { proMulfield.value=parseFloat(1);}
    proPctfield.value=roundOff(parseFloat(proMulfield.value)*parseFloat(totalPct),2);
    proAmtfield.value=roundOff((parseFloat(proPctfield.value)*parseFloat(salfield.value))/100,0);
}
function calcnewsalary(oldsal,newsalfield,fieldstoadd)
{
  var myArray = fieldstoadd.split(',');
  var amttoadd=0;
  newsal=eval(newsalfield);
  for (var i=0;i<myArray.length;i++)
  {
    val1=eval(myArray[i]).value;
    if (val1!=0)
    {
	    amttoadd+=parseFloat(eval(myArray[i]).value);
   }
  }
  newsal.value=formatCurrency(roundOff(parseFloat(eval(oldsal).value)+parseFloat(amttoadd),0));

}
function calcProrationMultiplier(begdate,lastdate,pmfield)
{
  if ((begdate!=" ") && (lastdate!=" "))
  {
    revbegdate=new Date(begdate);
    lastrevdate=new Date(lastdate);
    lastbegmonth=lastrevdate.getMonth();
    lastbegyear=lastrevdate.getYear();
    lastdateStr=lastbegmonth+1+"/1/"+lastbegyear;
    lastdate=new Date(lastdateStr);
    lastrevdate=new Date('07/1/2004');
    revbegtime=lastdate.getTime();
    lastrevtime=lastrevdate.getTime();
    var bTime=Math.abs(revbegtime-lastrevtime);
    if (bTime>0)
    pmfield.value=1.000; //roundOff(parseFloat((Math.round(bTime/MONTH))/12),3);
  }
  
}
function getProrationMultiplier(begdate,lastdate)
{pmfield=0;
  if ((begdate!=" ") && (lastdate!=" "))
  {
    revbegdate=new Date(begdate);
    lastrevdate=new Date(lastdate);
    lastbegmonth=lastrevdate.getMonth();
    lastbegyear=lastrevdate.getYear();
    lastdateStr=lastbegmonth+1+"/1/"+lastbegyear;
    lastdate=new Date(lastdateStr);
    lastrevdate=new Date('07/1/2004');
    revbegtime=lastdate.getTime();
    lastrevtime=lastrevdate.getTime();
    var bTime=Math.abs(revbegtime-lastrevtime);
    if (bTime>0)
    pmfield=roundOff(parseFloat((Math.round(bTime/MONTH))/12),3);
  }
  return 1.0; //pmfield;
}

function daysBetween(yr, mo, dy) {
  var nDate = new Date(); // current date (local)
  var nTime = nDate.getTime(); // current time (UTC)
  var dTime = Date.UTC(yr, mo , dy); // specified time (UTC)
  var bTime = Math.abs(nTime - dTime)  // time difference
  return Math.round(bTime / DAY);
}
function roundOff(value, precision) 
{
  return OKStrOfMN(value,1,precision);
}
function OKStrOfMN(X, M, N) 
{
  var T, S=new String(Math.round(X*Number("1e"+N)))
  while (S.length<M+N) S='0'+S
  var y = S.substr(0, T=(S.length-N));
  if(N>0) 
  {
  y += '.' + S.substr(T, N);
  }
  return y;
}
function popupPage(page,name,props) 
{
  windowprops = "height=500,width=500,location=no,scrollbars=yes,menubars=no,toolbars=no,resizable=yes";
  window.open(page, name, props);
}
function redirectPage(page)
{
  window.location.href=page;
}
function formatCurrency(total) 
{
	 var num = eval(total) + "";
    if(num.indexOf(".") == -1)
    {
      num = num + ".00";
      return num;
    }
    else
    {
    
      if(num.length >= (num.indexOf(".") + 3))
      {
        return num.substring(0, (num.indexOf(".") + 3));
      }
      else
      {
        num = num + "00";
        return num.substring(0, (num.indexOf(".") + 3));
      }
    }
}
function unFormatCurrency(num)
{
  num = num.replace(/\$|\,/g,'');
  if (isNaN(num))  num="0";
  return roundOff(parseFloat(num),0);
}
function openHelpDoc(helpFor)
{
   popupPage("helpDoc.jsp?helpFor="+helpFor,"HelpDocument","height=300,width=500,top=100,left=200,location=no,scrollbars=yes,menubars=no,toolbars=no,resizable=yes");
}
function fnDoCopy(windowname,filename,bufname)
{
/*
  textRange = document.body.createTextRange();
  textRange.moveToElementText(listTable);
  textRange.execCommand("Copy");
  window.open("svpsummary.xls","printing");
*/  
  windowprops = "height=500,width=500,location=no,scrollbars=yes,menubar=yes,toolbar=yes,resizable=yes";
  window.open("sendToExcel.jsp?filename="+filename+"&bufname="+bufname,windowname,windowprops);

}

function IsNumeric(sText)
{
   var ValidChars = "0123456789.";
   var IsNumber=true;
   var Char;


   for (i = 0; i < sText.length && IsNumber == true; i++)
      {
      Char = sText.charAt(i);
      if (ValidChars.indexOf(Char) == -1)
         {
         IsNumber = false;
         }
      }
   return IsNumber;

}

function toDecimal(number,decimals){
   var zeros = '';
    for(var i=0; i<decimals; i++){
        zeros += '0';
    }   var places = (1+zeros)*1;
        n = Math.round(number*places).toString();
        n = n.substring(0,n.length-decimals)+'.'+
        n.substring(n.length-decimals,n.length);
	
        return n;
  }   
