// JavaScript Document
var strError;
strError = ''

var lngAssetsCash = 5000
var lngPerAssetsCash = 5
var lngAssetsMaretable = 1000
var lngPerAssetsMaretable = 1
var lngAssetsAccounts = 25000
var lngPerAssetsAccounts = 25.1
var lngAssetsStock = 15000
var lngPerAssetsStock = 15.1
var lngAssetsPrepay = 2500
var lngPerAssetsPrepay = 2.5
var lngTotalCurrentAssets = 48500
var lngPerTotalCurrentAssets = 48.7

var lngAssetsBuildings = 12500
var lngPerAssetsBuildings = 12.6
var lngAssetsLessDep = 1400
var lngPerAssetsLessDep = 1.4
var lngAssetsNetBuildings = 11000
var lngPerAssetsNetBuildings = 11.1
var lngAssetsLand = 40000
var lngPerAssetsLand = 40.2
var lngTotalFixedAssets = 51000
var lngPerTotalFixedAssets = 51.3

var lngTotalAssets = 99600
var lngPerTotalAssets = 100


var lngLiabilitiesWages = 4000
var lngPerLiabilitiesWages = 4
var lngLiabilitiesAccounts = 5000
var lngPerLiabilitiesAccounts = 5
var lngLiabilitiesTaxes = 15000
var lngPerLiabilitiesTaxes = 15.1
var lngTotalCurrentLiabilities = 24000
var lngPerTotalCurrentLiabilities = 24.1

var lngLiabiltiesMortgage = 35000
var lngPerLiabiltiesMortgage = 35.1
var lngLiabilitiesLoans = 5000
var lngPerLiabilitiesLoans = 5
var lngLiabilitesDefTax = 1000
var lngPerLiabilitesDefTax = 1

var lngTotalLongTermLiabilities = 41000
var lngPerTotalLongTermLiabilities = 41.2
var lngTotalLiabilities = 65000
var lngPerTotalLiabilities = 65.3

var lngEquity = 24600
var lngYearProfit = 10000

var lngOwnerEquity = 34600
var lngPerOwnerEquity = 34.7

var lngTotalLiabAndEquity = 99600

function resetForm()
{

 lngAssetsCash = 5000
 lngPerAssetsCash = 5
 lngAssetsMaretable = 1000
 lngPerAssetsMaretable = 1
 lngAssetsAccounts = 25000
 lngPerAssetsAccounts = 25.1
 lngAssetsStock = 15000
 lngPerAssetsStock = 15.1
 lngAssetsPrepay = 2500
 lngPerAssetsPrepay = 2.5
 lngTotalCurrentAssets = 48500
 lngPerTotalCurrentAssets = 48.7

 lngAssetsBuildings = 12500
 lngPerAssetsBuildings = 12.6
 lngAssetsLessDep = 1400
 lngPerAssetsLessDep = 1.4
 lngAssetsNetBuildings = 11000
 lngPerAssetsNetBuildings = 11.1
 lngAssetsLand = 40000
 lngPerAssetsLand = 40.2
 lngTotalFixedAssets = 51000
 lngPerTotalFixedAssets = 51.3

 lngTotalAssets = 99600
 lngPerTotalAssets = 100


 lngLiabilitiesWages = 4000
 lngPerLiabilitiesWages = 4
 lngLiabilitiesAccounts = 5000
 lngPerLiabilitiesAccounts = 5
 lngLiabilitiesTaxes = 15000
 lngPerLiabilitiesTaxes = 15.1
 lngTotalCurrentLiabilities = 24000
 lngPerTotalCurrentLiabilities = 24.1

 lngLiabiltiesMortgage = 35000
 lngPerLiabiltiesMortgage = 35.1
 lngLiabilitiesLoans = 5000
 lngPerLiabilitiesLoans = 5
 lngLiabilitesDefTax = 1000
 lngPerLiabilitesDefTax = 1

 lngTotalLongTermLiabilities = 41000
 lngPerTotalLongTermLiabilities = 41.2
 lngTotalLiabilities = 65000
 lngPerTotalLiabilities = 65.3

 lngEquity = 24600
 lngYearProfit = 10000

 lngOwnerEquity = 34600
 lngPerOwnerEquity = 34.7

 lngTotalLiabAndEquity = 99600
 
 checkForEquality()
 
}

function setFormValues()
{
// Initialises form values

document.form1.txtAssetsCash.value = lngAssetsCash; 
document.form1.txtPerAssetsCash.value = lngPerAssetsCash;
document.form1.txtAssetsMaretable.value = lngAssetsMaretable;
document.form1.txtPerAssetsMaretable.value = lngPerAssetsMaretable;
document.form1.txtAssetsAccounts.value = lngAssetsAccounts;
document.form1.txtPerAssetsAccounts.value = lngPerAssetsAccounts;
document.form1.txtAssetsStock.value = lngAssetsStock;
document.form1.txtPerAssetsStock.value = lngPerAssetsStock;
document.form1.txtAssetsPrepay.value = lngAssetsPrepay;
document.form1.txtPerAssetsPrepay.value = lngPerAssetsPrepay;
document.form1.txtTotalCurrentAssets.value = displayInThousands(lngTotalCurrentAssets);
document.form1.txtPerTotalCurrentAssets.value = lngPerTotalCurrentAssets;

document.form1.txtAssetsBuildings.value = lngAssetsBuildings;
document.form1.txtPerAssetsBuildings.value = lngPerAssetsBuildings;
document.form1.txtAssetsLessDep.value = lngAssetsLessDep;
document.form1.txtPerAssetsLessDep.value = lngPerAssetsLessDep;
document.form1.txtAssetsNetBuildings.value = displayInThousands(lngAssetsNetBuildings);
document.form1.txtPerAssetsNetBuildings.value = lngPerAssetsNetBuildings;
document.form1.txtAssetsLand.value = lngAssetsLand;
document.form1.txtPerAssetsLand.value = lngPerAssetsLand;
document.form1.txtTotalFixedAssets.value = displayInThousands(lngTotalFixedAssets);
document.form1.txtPerTotalFixedAssets.value = lngPerTotalFixedAssets;

document.form1.txtTotalAssets.value = displayInThousands(lngTotalAssets);
document.form1.txtPerTotalAssets.value = lngPerTotalAssets;

document.form1.txtLiabilitiesWages.value = lngLiabilitiesWages;
document.form1.txtPerLiabilitiesWages.value = lngPerLiabilitiesWages;
document.form1.txtLiabilitiesAccounts.value = lngLiabilitiesAccounts;
document.form1.txtPerLiabilitiesAccounts.value = lngPerLiabilitiesAccounts;
document.form1.txtLiabilitiesTaxes.value = lngLiabilitiesTaxes;
document.form1.txtPerLiabilitiesTaxes.value = lngPerLiabilitiesTaxes;

document.form1.txtTotalCurrentLiabilities.value = displayInThousands(lngTotalCurrentLiabilities);
document.form1.txtPerTotalCurrentLiabilities.value = lngPerTotalCurrentLiabilities;

document.form1.txtLiabiltiesMortgage.value = lngLiabiltiesMortgage;
document.form1.txtPerLiabiltiesMortgage.value = lngPerLiabiltiesMortgage;
document.form1.txtLiabilitiesLoans.value = lngLiabilitiesLoans;
document.form1.txtPerLiabilitiesLoans.value = lngPerLiabilitiesLoans;
document.form1.txtLiabilitesDefTax.value = lngLiabilitesDefTax;
document.form1.txtPerLiabilitesDefTax.value = lngPerLiabilitesDefTax;

document.form1.txtTotalLongTermLiabilities.value = displayInThousands(lngTotalLongTermLiabilities);
document.form1.txtPerTotalLongTermLiabilities.value = lngPerTotalLongTermLiabilities;

document.form1.txtTotalLiabilities.value = displayInThousands(lngTotalLiabilities);
document.form1.txtPerTotaLiabilities.value = lngPerTotalLiabilities;

document.form1.txtEquity.value = lngEquity;
document.form1.txtYearProfit.value = lngYearProfit;

document.form1.txtOwnerEquity.value = displayInThousands(lngOwnerEquity);
document.form1.txtPerOwnerEquity.value = lngPerOwnerEquity;
document.form1.txtTotalLiabAndEquity.value = displayInThousands(lngTotalLiabAndEquity);


}

function calcAssets()
{
// first get values for assets items

strError = ''

QuickValidateField(document.form1.txtAssetsCash.value);
QuickValidateField(document.form1.txtAssetsMaretable.value);
QuickValidateField(document.form1.txtAssetsAccounts.value);
QuickValidateField(document.form1.txtAssetsStock.value);
QuickValidateField(document.form1.txtAssetsPrepay.value);
QuickValidateField(document.form1.txtAssetsBuildings.value);
QuickValidateField(document.form1.txtAssetsLessDep.value);
QuickValidateField(document.form1.txtAssetsLand.value);

//Cancel if errors
if(strError != '')
{
alert(strError)
return false;
}
else
{


lngAssetsCash = Number(document.form1.txtAssetsCash.value);
lngAssetsMaretable = Number(document.form1.txtAssetsMaretable.value);
lngAssetsAccounts = Number(document.form1.txtAssetsAccounts.value);
lngAssetsStock = Number(document.form1.txtAssetsStock.value);
lngAssetsPrepay = Number(document.form1.txtAssetsPrepay.value);

lngAssetsBuildings = Number(document.form1.txtAssetsBuildings.value);
lngAssetsLessDep = Number(document.form1.txtAssetsLessDep.value);

lngAssetsNetBuildings = (lngAssetsBuildings - lngAssetsLessDep);

lngAssetsLand = Number(document.form1.txtAssetsLand.value);


// get total value for assets

lngTotalCurrentAssets = (lngAssetsCash + lngAssetsMaretable + lngAssetsAccounts + lngAssetsStock + lngAssetsPrepay);

lngTotalFixedAssets = (lngAssetsNetBuildings + lngAssetsLand);

lngTotalAssets = (lngTotalCurrentAssets + lngTotalFixedAssets);

// get assets items as percentages of total assets

lngPerAssetsCash = getPercentage(lngAssetsCash,  lngTotalAssets);
lngPerAssetsMaretable = getPercentage(lngAssetsMaretable, lngTotalAssets);
lngPerAssetsAccounts = getPercentage(lngAssetsAccounts, lngTotalAssets);
lngPerAssetsStock = getPercentage(lngAssetsStock, lngTotalAssets);
lngPerAssetsPrepay = getPercentage(lngAssetsPrepay, lngTotalAssets);
lngPerTotalCurrentAssets = getPercentage(lngTotalCurrentAssets, lngTotalAssets);
lngPerAssetsBuildings = getPercentage(lngAssetsBuildings, lngTotalAssets);
lngPerAssetsLessDep = getPercentage(lngAssetsLessDep, lngTotalAssets);
lngPerAssetsNetBuildings = getPercentage(lngAssetsNetBuildings, lngTotalAssets);
lngPerAssetsLand = getPercentage(lngAssetsLand, lngTotalAssets);
lngPerTotalFixedAssets = getPercentage(lngTotalFixedAssets, lngTotalAssets);

// update form

document.form1.txtTotalCurrentAssets.value = displayInThousands(lngTotalCurrentAssets);
document.form1.txtAssetsNetBuildings.value = displayInThousands(lngAssetsNetBuildings);
document.form1.txtTotalFixedAssets.value = displayInThousands(lngTotalFixedAssets);
document.form1.txtTotalAssets.value = displayInThousands(lngTotalAssets);

document.form1.txtPerAssetsCash.value = lngPerAssetsCash;
document.form1.txtPerAssetsMaretable.value = lngPerAssetsMaretable;
document.form1.txtPerAssetsAccounts.value = lngPerAssetsAccounts;
document.form1.txtPerAssetsStock.value = lngPerAssetsStock;
document.form1.txtPerAssetsPrepay.value = lngPerAssetsPrepay;
document.form1.txtPerTotalCurrentAssets.value = lngPerTotalCurrentAssets;
document.form1.txtPerAssetsBuildings.value = lngPerAssetsBuildings;
document.form1.txtPerAssetsLessDep.value = lngPerAssetsLessDep;
document.form1.txtPerAssetsNetBuildings.value = lngPerAssetsNetBuildings;
document.form1.txtPerAssetsLand.value = lngPerAssetsLand;
document.form1.txtPerTotalFixedAssets.value = lngPerTotalFixedAssets; 

checkForEquality();
return true;
}
}

function calcLiabilities()
{
// first get values for assets items

strError = ''

QuickValidateField(document.form1.txtLiabilitiesWages.value);
QuickValidateField(document.form1.txtLiabilitiesAccounts.value);
QuickValidateField(document.form1.txtLiabilitiesTaxes.value);
QuickValidateField(document.form1.txtLiabiltiesMortgage.value);
QuickValidateField(document.form1.txtLiabilitiesLoans.value);
QuickValidateField(document.form1.txtLiabilitesDefTax.value);
QuickValidateField(document.form1.txtEquity.value);
QuickValidateField(document.form1.txtYearProfit.value);

//Cancel if errors
if(strError != '')
{
alert(strError)
return false;
}
else
{
// first get values for liabilities items

lngLiabilitiesWages = Number(document.form1.txtLiabilitiesWages.value);
lngLiabilitiesAccounts = Number(document.form1.txtLiabilitiesAccounts.value);
lngLiabilitiesTaxes = Number(document.form1.txtLiabilitiesTaxes.value);

lngLiabiltiesMortgage = Number(document.form1.txtLiabiltiesMortgage.value);
lngLiabilitiesLoans = Number(document.form1.txtLiabilitiesLoans.value);
lngLiabilitesDefTax = Number(document.form1.txtLiabilitesDefTax.value);

lngEquity = Number(document.form1.txtEquity.value);
lngYearProfit = Number(document.form1.txtYearProfit.value);


// get total value for liabilities

lngTotalCurrentLiabilities = (lngLiabilitiesWages + lngLiabilitiesAccounts + lngLiabilitiesTaxes);

lngTotalLongTermLiabilities = (lngLiabiltiesMortgage + lngLiabilitiesLoans + lngLiabilitesDefTax);
lngTotalLiabilities = (lngTotalCurrentLiabilities + lngTotalLongTermLiabilities);

lngOwnerEquity = (lngEquity + lngYearProfit);
lngTotalLiabAndEquity = (lngTotalLiabilities + lngOwnerEquity);

// get liabilities items as percentages of total liabilities

lngPerLiabilitiesWages = getPercentage(lngLiabilitiesWages, lngTotalLiabAndEquity);
lngPerLiabilitiesAccounts = getPercentage(lngLiabilitiesAccounts, lngTotalLiabAndEquity);
lngPerLiabilitiesTaxes = getPercentage(lngLiabilitiesTaxes, lngTotalLiabAndEquity);

lngPerTotalCurrentLiabilities = getPercentage(lngTotalCurrentLiabilities, lngTotalLiabAndEquity);

lngPerLiabiltiesMortgage = getPercentage(lngLiabiltiesMortgage, lngTotalLiabAndEquity);
lngPerLiabilitiesLoans = getPercentage(lngLiabilitiesLoans, lngTotalLiabAndEquity);
lngPerLiabilitesDefTax = getPercentage(lngLiabilitesDefTax, lngTotalLiabAndEquity);

lngPerTotalLongTermLiabilities = getPercentage(lngTotalLongTermLiabilities, lngTotalLiabAndEquity);
lngPerTotalLiabilities = getPercentage(lngTotalLiabilities, lngTotalLiabAndEquity);
lngPerOwnerEquity = getPercentage(lngOwnerEquity, lngTotalLiabAndEquity);

// update form
document.form1.txtLiabilitiesWages.value = lngLiabilitiesWages;
document.form1.txtLiabilitiesAccounts.value = lngLiabilitiesAccounts;
document.form1.txtLiabilitiesTaxes.value =  lngLiabilitiesTaxes;

document.form1.txtLiabiltiesMortgage.value = lngLiabiltiesMortgage;
document.form1.txtLiabilitiesLoans.value = lngLiabilitiesLoans;
document.form1.txtLiabilitesDefTax.value = lngLiabilitesDefTax;

document.form1.txtTotalCurrentLiabilities.value = displayInThousands(lngTotalCurrentLiabilities);

document.form1.txtTotalLongTermLiabilities.value = displayInThousands(lngTotalLongTermLiabilities);

document.form1.txtTotalLiabilities.value = displayInThousands(lngTotalLiabilities);

document.form1.txtEquity.value = lngEquity;
document.form1.txtYearProfit.value = lngYearProfit;

document.form1.txtOwnerEquity.value = displayInThousands(lngOwnerEquity);
document.form1.txtTotalLiabAndEquity.value = displayInThousands(lngTotalLiabAndEquity);

document.form1.txtPerLiabilitiesWages.value = lngPerLiabilitiesWages;
document.form1.txtPerLiabilitiesAccounts.value = lngPerLiabilitiesAccounts;
document.form1.txtPerLiabilitiesTaxes.value = lngPerLiabilitiesTaxes;

document.form1.txtPerTotalCurrentLiabilities.value = lngPerTotalCurrentLiabilities;

document.form1.txtPerLiabiltiesMortgage.value = lngPerLiabiltiesMortgage;
document.form1.txtPerLiabilitiesLoans.value = lngPerLiabilitiesLoans;
document.form1.txtPerLiabilitesDefTax.value = lngPerLiabilitesDefTax;

document.form1.txtPerTotalLongTermLiabilities.value = lngPerTotalLongTermLiabilities;
document.form1.txtPerTotaLiabilities.value = lngPerTotalLiabilities;
document.form1.txtPerOwnerEquity.value = lngPerOwnerEquity;

checkForEquality();
return true;
}
}


function checkForEquality()
{
if(lngTotalAssets != lngTotalLiabAndEquity)
{
document.getElementById("ErrorText").innerText = 'ERROR, ASSETS DO NOT EQUAL CAPITAL AND LIABILITIES'

//newNode = document.createTextNode('ERROR, ASSETS DO NOT EQUAL CAPITAL AND LIABILITIES');
//oldNode = document.getElementById("score").firstChild; 
//removedNode = document.getElementById("score").replaceChild( newNode, oldNode );
}
else
{
document.getElementById("ErrorText").innerText = ''
//newNode = document.createTextNode('');
//oldNode = document.getElementById("score").firstChild; 
//removedNode = document.getElementById("score").replaceChild( newNode, oldNode );
}
}


function ValidateAll()
{
strError = '';

QuickValidateField(document.form1.txtAssetsCash.value);
QuickValidateField(document.form1.txtAssetsMaretable.value);
QuickValidateField(document.form1.txtAssetsAccounts.value);
QuickValidateField(document.form1.txtAssetsStock.value);
QuickValidateField(document.form1.txtAssetsPrepay.value);
QuickValidateField(document.form1.txtAssetsBuildings.value);
QuickValidateField(document.form1.txtAssetsLessDep.value);
QuickValidateField(document.form1.txtAssetsLand.value);

QuickValidateField(document.form1.txtLiabilitiesWages.value);
QuickValidateField(document.form1.txtLiabilitiesAccounts.value);
QuickValidateField(document.form1.txtLiabilitiesTaxes.value);
QuickValidateField(document.form1.txtLiabiltiesMortgage.value);
QuickValidateField(document.form1.txtLiabilitiesLoans.value);
QuickValidateField(document.form1.txtLiabilitesDefTax.value);
QuickValidateField(document.form1.txtEquity.value);
QuickValidateField(document.form1.txtYearProfit.value);

//Cancel if errors
if(strError != '')
{
alert('Please check all your entries.\nAll entries must be numbers (enter 0 for nothing).')
return false;
}
else
{
//check assets are equal to liabilites
if(lngTotalAssets != lngTotalLiabAndEquity)
{
alert('Please ensure that Total Assets are equal to Total Liabilites')
return false;
}
return true;
}
}

