 
var scanTrap = '';
var oldRowColor = '';

function checkDate(strDate) {
  var valid = true;
  if (strDate.length == 0) return true;
  var parsedDate = strDate.split ("/");
  if (parsedDate.length != 3) valid = false;
  var day, month, year;
  month = parsedDate[0]-1;
  day = parsedDate[1];
  year = parsedDate[2];
  var objDate2 = new Date (strDate);
  if (month != objDate2.getMonth()) valid = false;
  if (day != objDate2.getDate()) valid = false;
  if (year != objDate2.getYear()) valid = false;
  if (!valid) {
    return true;
  }
  return false;
}

function digitsOnly(objString) {
   var str = objString.value;
   var str = str.replace(/[^0-9]/gi,"");
   objString.value = str;
}

function formatPhone(objString) {
   var phoneNumber = objString.value;
   var phoneNumber = phoneNumber.replace(/[^0-9]/gi,"");
   if (phoneNumber.length == 0) return true;   
   if(phoneNumber.length > 10) {
      objString.value = phoneNumber.substring(0,3)+'-'+phoneNumber.substring(3,5)+'-'+phoneNumber.substring(5,20);
      return true;
   }
   if(phoneNumber.length == 10) {
      objString.value = phoneNumber.substring(0,3)+'-'+phoneNumber.substring(3,6)+'-'+phoneNumber.substring(6,10);
      return true;
   }
   if(phoneNumber.length == 7) {
      objString.value = phoneNumber.substring(0,3)+'-'+phoneNumber.substring(3,7);
      return true;
   }
}

function fieldOn(objString) {
   objString.style.background='FFFF00';
}

function fieldOff(objString) {
   objString.style.background='FFFFFF';
}

function numberFilter(objString) {
   var str = objString.value;
   var str = str.replace(/[^0-9.]/gi,"");
   var str = str.replace(/^0*/gi,"");
   if (str.length == 0) {
      objString.value = '0';
   } else {   	
      objString.value = str;
   }
   return false;
}

function rowOn(objString) {
	oldRowColor=objString.className;
   objString.className='tableRowOn';
}

function rowOff(objString) {
   objString.className=oldRowColor;
}

function isDate(objDate) {
  var valid = true;
  var strDate = objDate.value;
  if (strDate.length == 0) return true;
  var parsedDate = strDate.split ("/");
  if (parsedDate.length != 3) valid = false;
  var day, month, year;
  month = parsedDate[0]-1;
  day = parsedDate[1];
  year = parsedDate[2];
  var objDate2 = new Date (strDate);
  if (month != objDate2.getMonth()) valid = false;
  if (day != objDate2.getDate()) valid = false;
  if (year != objDate2.getYear()) valid = false;
  if (!valid) {
    objDate.select();
    alert('Please enter date in mm/dd/yy format.');
    return false;
  }
  return true;
}

function isPhone(objString) {
   var phoneNumber = objString.value;
   var phoneNumber = phoneNumber.replace(/[^0-9]/gi,"");
   if (phoneNumber.length == 0) return true;
   objString.value = phoneNumber;
   if ((phoneNumber.length != 10) && (phoneNumber.charAt(0) != "0")) {
      alert('Please enter a 10 digit telephone number, starting with the area code.');
      objString.select();
   }
   return true;   
}

// @param  IR  Interest rate per year (8.5% = 0.085) 
// @param  PV  Present Value 
// @param  FV  Future Value (Generally zero for calculating payments. Non zero for pay down to amount.) 
// @param  NP  Number of periods. 
// @return Returns a numeric value. 
function payment(ir,pv,fv,np) {
	ir = ir/12;
   q = Math.pow(1 + ir,np);
	pmt = ((ir * (fv + q * pv))/(-1 + q));
	return pmt;
}

function yield(pmt,pv,fv,np) {
    //start aproximation
    mindelta = null;
    y = null;
    for(var i=1;i<301;i++){
        ir = i / 100;
        
        localPMT = payment(ir, pv, fv, np);
        
        delta = Math.abs(localPMT - pmt);
        if(mindelta == null){
            mindelta = delta;
        }
        else{
            if(delta < mindelta){
                mindelta = delta;
                y = ir;
            } else {
                return y;
            }
        }
    }
    
    //return result
    return y;
}

function requiredField(objString) {
   var str = objString.value;
   var str = str.replace(/\ /gi,"");
   if (str.length == 0) {
      alert('This is a required field.');
      objString.value = '';
      objString.focus();      
      return false;
   }
}

function roundOff(value, precision) {
        value = "" + value //convert value to string
        precision = parseInt(precision);
        var whole = "" + Math.round(value * Math.pow(10, precision));
        var decPoint = whole.length - precision;
        if(decPoint != 0) {
           result = whole.substring(0, decPoint);
           result += ".";
           result += whole.substring(decPoint, whole.length);
        } else {
           result = whole;
        }
        return result;
}

// @param  IR   Interest rate per year (ie. 8% = 0.08)
// @param  PV   Present Value 
// @param  FV   Future Value 
// @param  PMT  Payment Amount 
// @return Returns a numeric value. 
function term(IR,PV,FV,PMT) {
  var tir = IR / 12;  
  var np = 0;
  var tpv = -Math.abs(PV);
  var tfv = -Math.abs(FV);
  var tpmt = Math.abs(PMT);
  np = Math.log((-tfv * tir + tpmt) / (tpmt + tir * tpv)) / Math.log(1 + tir);
  return(np);
}

function textOnly(objString) {
   var str = objString.value;
   var str = str.replace(/[^A-Za-z]/gi,"");
   objString.value = str;
}

function moveToEnd(objFieldname) {
   var elementRange = objFieldname.createTextRange();
   elementRange.moveStart('character', objFieldname.value.length);
   elementRange.select();
}
