////////////////////////////////////////////////////////////////////
function getLoanRepayment(rate,term,amount){
	rate=(rate/100);
    var monthlyrate = Math.pow(rate + 1, 1/12) - 1;
	//alert(monthlyrate+'#'+term+'#'+amount);
    var monthlypayment = ( amount * monthlyrate ) / ( 1 - Math.pow(1 + monthlyrate,-term));
    return (monthlypayment);
}
function getLoanAmount(rate,term,repayment){
	rate=(rate/100);
	//rate=(rate/12);
	var monthlyrate = Math.pow(rate + 1, 1/12) - 1;
	//alert(monthlyrate);
    var pow = 1;
    for (var j = 0; j < term; j++) 
        pow = pow * (1 + monthlyrate);
        amount= (repayment *(pow-1))/(pow*monthlyrate)
       return (amount);
}
////////////////////////////////////////////////////////////////////
function isNumber(inputVal) {
	var numbers = ".1234567890";
	for (i=0; i < inputVal.length; i++) {
			var c = inputVal.charAt(i);
			if(numbers.indexOf(c) == -1) {return false;}
		}
	return true
}
function isMoney(inputVal) {
	var numbers = ".1234567890";
	for (i=0; i < inputVal.length; i++) {
			var c = inputVal.charAt(i);
			if(numbers.indexOf(c) == -1) {return false;}
		}
	return true
}
function isDate (day,month,year) {
    var today = new Date();
    year = ((!year) ? y2k(today.getYear()):year);
    month = ((!month) ? today.getMonth():month-1);
    if (!day) return false
    var test = new Date(year,month,day);
    if ( (y2k(test.getYear()) == year) &&
         (month == test.getMonth()) &&
         (day == test.getDate()) )
        return true;
    else
        return false
}
function isDOB(day,month,year){
	var today = new Date()
	year = parseInt(year)+18;
	var targetDate = new Date(month+"/"+day+"/"+year);
	var timeAfterTarget = Math.floor(( today.getTime()- targetDate.getTime() ) / 86400000)
	//units are in days
	if (timeAfterTarget<0){return false;}
	return true;
}

function isEmail(emailStr) {
       if (emailStr.length == 0) {
           return true;
       }
       var emailPat=/^(.+)@(.+)$/;
       var specialChars="\\(\\)<>@,;:\\\\\\\"\\.\\[\\]";
       var validChars="\[^\\s" + specialChars + "\]";
       var quotedUser="(\"[^\"]*\")";
       var ipDomainPat=/^(\d{1,3})[.](\d{1,3})[.](\d{1,3})[.](\d{1,3})$/;
       var atom=validChars + '+';
       var word="(" + atom + "|" + quotedUser + ")";
       var userPat=new RegExp("^" + word + "(\\." + word + ")*$");
       var domainPat=new RegExp("^" + atom + "(\\." + atom + ")*$");
       var matchArray=emailStr.match(emailPat);
       if (matchArray == null) {
           return false;
       }
       var user=matchArray[1];
       var domain=matchArray[2];
       if (user.match(userPat) == null) {
           return false;
       }
       var IPArray = domain.match(ipDomainPat);
       if (IPArray != null) {
           for (var i = 1; i <= 4; i++) {
              if (IPArray[i] > 255) {
                 return false;
              }
           }
           return true;
       }
       var domainArray=domain.match(domainPat);
       if (domainArray == null) {
           return false;
       }
       var atomPat=new RegExp(atom,"g");
       var domArr=domain.match(atomPat);
       var len=domArr.length;
       if ((domArr[domArr.length-1].length < 2) ||
           (domArr[domArr.length-1].length > 3)) {
           return false;
       }
       if (len < 2) {
           return false;
       }
       return true;
    }
function y2k(number) { 
	return (number < 1000) ? number + 1900 : number; 
}

//////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////

function checkMoney(thiselement){
	var thisval=document.getElementById(thiselement).value;
	if(!isMoney(thisval)){
		document.getElementById(thiselement).value= thisval.substring(0,thisval.length-1);
		return false;
	}else{
		return true;
	}
}
function checkNumber(thiselement){
	var thisval=document.getElementById(thiselement).value;
	if(!isNumber(thisval)){
		document.getElementById(thiselement).value= thisval.substring(0,thisval.length-1);
		return false;
	}else{
		return true;
	}
}
function checkEmail(thiselement){
	var thisval=document.getElementById(thiselement).value;
	if(!isEmail(thisval)){
		return false;
	}else{
		return true;
	}
}
function format(expr,decplaces) {
	var str = "" + Math.round(eval(expr)*Math.pow(10,decplaces));
	while(str.length<= decplaces) {
		str = "0"+str;
	}
	var decpoint = str.length - decplaces
	var decimal = ".";
	if (decplaces==0){decimal = "";}
	return str.substring(0,decpoint) + decimal + str.substring(decpoint,str.length);
}
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 delCommas(nStr){
	var rgx = ",";
	var result = nStr.replace(/,/g, '');
	result = result.replace(/€/, '');
	return result;
}
function isLeap(y){
	var year = eval(y);
	var yearq = year/4;
	var yearqi = Math.round(yearq);
	if(yearq==yearqi){
		return true
	}else{
		return false
	}
}

//////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////
function checkNumber_amount(thiselement){
	var thisval=document.getElementById(thiselement).value;
	if(thisval.length>0){
		document.calcform.in_repayment.value="";
	}
	if(!isNumber(thisval)){
		document.getElementById(thiselement).value= thisval.substring(0,thisval.length-1);
		return false;
	}else{
		return true;
	}
}
