// SMCrunch2 Version 2.0.1, Copyright (C) Smart Media Ltd 2001-2005. All Rights Reserved.
//
// !!! Note: JScript by default
//
function clearAll()
{
if(document.getElementById('pvalue').readOnly==true)
{
document.getElementById('mortcalctable').deleteRow(0);
document.getElementById('pvalue').readOnly = '';
document.getElementById('ssize').readOnly = '';
}
document.getElementById('pvalue').value = '';
document.getElementById('ssize').value = '';
document.getElementById('deposit').value = '';
document.getElementById('mortpay').value = '';
document.getElementById('rentpay').value = '';
document.getElementById('totalpay').value = '';
}
function calculateMort(interest, paymentperiod, rentperc)
{
var pVal = document.getElementById('pvalue').value; 
var dVal = document.getElementById('deposit').value; 
pVal = remove_commas(pVal);
var pvalue = pVal;
dVal = remove_commas(dVal);
if(dVal=='')
{
dVal = '0';
}
var deposit = dVal;
var sVal = document.getElementById('ssize').value; 
var valid = validate(pVal, dVal, sVal);
if(valid==0)
{
dVal = parseFloat(dVal);
sVal = parseFloat(sVal);
pVal = parseFloat(pVal); 
var ipm = interest / 1200;
var months = paymentperiod*12;
if(pVal < dVal)
{
dVal = pVal;
}
var mortpayVal = (pVal - dVal) * ipm/(1 - (1/Math.pow((1 + ipm),months)));
var shareperc = sVal/100;
var propertyprice = pVal/shareperc;
var rentpayVal = (rentperc/1200) * (1-shareperc) * propertyprice;
document.getElementById('mortpay').value = price_format(''+roundVals(mortpayVal));
document.getElementById('rentpay').value = price_format(''+roundVals(rentpayVal));
document.getElementById('totalpay').value = price_format(''+roundVals(mortpayVal + rentpayVal + parseInt(document.getElementById('scharge').value)));
document.getElementById('pvalue').value = price_format(pvalue);
document.getElementById('deposit').value = price_format(deposit);
}
}
function validate(npVal, ndVal, nsVal)
{
var pwrong=false, swrong=false, spwrong=false, dwrong=false;
if(validateSymb(npVal))
{
pwrong=true;
}
if(validateSymb(nsVal))
{
spwrong=true;
}
if(validateSymb(ndVal))
{
dwrong=true;
}
ndVal = parseFloat(ndVal);
nsVal = parseFloat(nsVal);
npVal = parseFloat(npVal);
if(!npVal || isNaN(npVal) || npVal<=0)
{
pwrong=true;
}
if(!nsVal || isNaN(nsVal))
{
spwrong=true;
}
if(nsVal<=0 || nsVal>100)
{
swrong=true;
}
if( ndVal<0 || isNaN(ndVal) )
{
dwrong=true;
}
if(pwrong && (spwrong||swrong) && dwrong)
{
alert("Please enter a valid amount for the share price, share size and deposit saved.");
return 1;
}
else if(pwrong)
{
alert("Please enter a valid price for the share price.  Please use numbers only,"+
" do not enter £ or other symbols.");
return 1;
}
else if(spwrong)
{
alert("Please enter a valid percentage for the share size. Please use numbers  "+
"between 0 and 100 only, do not enter % or other symbols.");
return 1;
}
else if(swrong)
{
alert("Share size must be between 0 and 100.");
return 1;
}
else if(dwrong)
{
alert("Please enter a valid amount for the deposit.  Please use numbers only,"+
" do not enter £ or other symbols.");
return 1;
}
return 0;
}
function validateSymb(value)
{
var nums = '0123456789.';
var flag = false;
var period = false;
var i=1;
while(i<=value.length && flag==false)
{
if(nums.indexOf(value.substring(i-1,i))==-1)
{
flag=true;
}
else if(value.substring(i-1,i)=='.')
{
if(!period)
{
period=true;
}
else
{
flag=true;
}
}
i++;
}
return flag;
}
function roundVals(value)
{
value = value*100;
value = Math.round(value);
value = value/100;
return formatDec(value);
}
function formatDec(value)
{
var str = value.toString();
if(str.indexOf(".")==-1)
{
return str + ".00";
}
else
{
var strArr = str.split(".");
if(strArr[1].length==2)
{
return str;
}
else
{
return str + "0";
}
}
}
function remove_commas(str)
{
var strArr = str.split(',');
var nStr='';
for(var i=0;i<strArr.length;i++)
{
nStr += strArr[i];
}
return nStr;
}
function price_format(price)
{
var pre  = price.split('.')[0];
var post = price.split('.')[1];
while(pre.substring(0,1)=='0' && pre.length>1)
{
pre = pre.substr(1);
}
var commas = Math.floor(pre.length/3);
var pcomma = Math.round(pre.length%3);
if(pcomma==0)
{
var str = pre.substring(0,3)+(pre.length<4?'':',')
pre = pre.substr(3);
commas=commas-1;
}
else
{
var str = pre.substring(0,pcomma)+(pre.length<4?'':',')
pre = pre.substr(pcomma);
}
for(var i=0;i<commas;i++)
{
str += (i==0?'':',')+pre.substring(0, 3);
pre= pre.substr(3);
}
if(post!=null)
str += (post.length>0?'.'+post:'');
return str;
}
function price_formatobj(e)
{
var newPrice = remove_commas(e.value)
if(!validateSymb(newPrice))
{
e.value = price_format(newPrice);
}
}

