var CA_PKP = 0;
var CA_PKPID = 0;
var bCalcKP = false;
var CA_CalcKPUnChecked = false;

var CA_IG = 0;
var CA_IGID = 0;
var bCalcIG = false;

var CA_loaded = 0;
var CA_fnProductAmount = 0;
var CA_fnInsuranceID = 0;
var CA_fnInvestment = 0;
var CA_flProducts = 0;
var CA_fnFinancierProductID = 0;
var CA_fbRestValueFixed = 0;
var CA_fnRestValue = 0;
var CA_fnRestValueUser = 0;
var CA_fbRestBalanceFixed = 0;
var CA_fnRestBalance = 0;
var CA_fnWarrantyID = 0;
var CA_fnKilometrage = 0;
var CA_fnTaxRate = 0;
var CA_fnMonthlyNetto = 0;
var CA_fnLoanMinusCommission = 0;
var CA_fcSumInterestLoan = ""
var CA_fcKredietsom = ""

var CA_bRestValueFixed = 0;
var CA_bRestBalanceFixed = 0;

var CA_nShowMonthlyChangedState = 0;
var CA_sFinanceTable = "";

function calculate() {
  var I = 0;
	var qryS = '';
	if (CA_loaded) {

		// gather all variables:
		CA_fnProductAmount = document.form.cTotalPrice.value;

		if ( document.form.elements[ 'fnInsuranceID' + CA_ID ] == '[object]' || document.form.elements[ 'fnInsuranceID' + CA_ID ] == '[object HTMLSelectElement]' )
			CA_fnInsuranceID = document.form.elements[ 'fnInsuranceID' + CA_ID ].value;
		
		if ( document.form.elements[ 'fnWarrantyID' + CA_ID ] == '[object]' || document.form.elements[ 'fnWarrantyID' + CA_ID ] == '[object HTMLSelectElement]' )
			CA_fnWarrantyID = document.form.elements[ 'fnWarrantyID' + CA_ID ].value;

		if ( document.form.elements[ 'fnTaxRate' + CA_ID ] == '[object]' || document.form.elements[ 'fnTaxRate' + CA_ID ] == '[object HTMLSelectElement]' )
			CA_fnTaxRate = document.form.elements[ 'fnTaxRate' + CA_ID ].value;
		
		if ( document.form.elements[ 'fnInvestment' + CA_ID ] == '[object]' || document.form.elements[ 'fnInvestment' + CA_ID ] == '[object HTMLInputElement]' )
			CA_fnInvestment = parseFloat( document.form.elements[ 'fnInvestment' + CA_ID ].value );

		if ( document.form.elements[ 'fnPartExchange' + CA_ID ] == '[object]' || document.form.elements[ 'fnPartExchange' + CA_ID ] == '[object HTMLInputElement]' )
			CA_fnInvestment = CA_fnInvestment + parseFloat( document.form.elements[ 'fnPartExchange' + CA_ID ].value );

		CA_fnDuration = document.form.elements[ 'fnDuration' + CA_ID ].value;
		CA_fnTheoreticalDuration = document.form.elements[ 'fnDuration' + CA_ID ].value;

		if ( document.form.elements[ 'fnKilometrage' + CA_ID ] == '[object]' || document.form.elements[ 'fnKilometrage' + CA_ID ] == '[object HTMLInputElement]' )
			CA_fnKilometrage = document.form.elements[ 'fnKilometrage' + CA_ID ].value;
		
		CA_fnFinancierProductID = document.form.elements[ 'fnFinancierProductID' + CA_ID ].value;
		CA_flProducts = '';
		
		// products
		for (I=0; I < items.length; I++)
			if ( document.form.elements[ 'fnPrice_' + items[ I ] + CA_ID ] == '[object]' || document.form.elements[ 'fnPrice_' + items[ I ] + CA_ID ] == '[object HTMLInputElement]' ) {
				CA_flProducts = CA_flProducts + items[ I ] + ',' + document.form.elements[ 'fnPrice_' + items[ I ] + CA_ID ].value;
				if ( !( I + 1 == items.length ) ) 
					CA_flProducts = CA_flProducts + ';';			
			};

		if ( document.form.elements[ 'cbCalcKP' + CA_ID ] == '[object]' || document.form.elements[ 'cbCalcKP' + CA_ID ] == '[object HTMLInputElement]' ){
			bCalcKP = true;
			if ( document.form.elements[ 'cbCalcKP' + CA_ID ].checked )
				CA_bCalcKP = 1
			else
				CA_bCalcKP = 0
		}else{
				bCalcKP = false;
				CA_bCalcKP = 0;
		}

		if ( document.form.elements[ 'cbCalcIG' + CA_ID ] == '[object]' || document.form.elements[ 'cbCalcIG' + CA_ID ] == '[object HTMLInputElement]' ){
			bCalcIG = true;
			if ( document.form.elements[ 'cbCalcIG' + CA_ID ].checked )
				CA_bCalcIG = 1
			else
				CA_bCalcIG = 0
		}else{
				bCalcIG = false;
				CA_bCalcIG = 0;
		}
//alert(bCalcIG);
//alert(CA_bCalcIG);

		// collect
		qryS += "?fnProductAmount=" + CA_fnProductAmount;
		qryS += "&fnInsuranceID=" + CA_fnInsuranceID;
		qryS += "&fnInvestment=" + CA_fnInvestment;
		qryS += "&fnDuration=" + CA_fnDuration;
		qryS += "&flProducts=" + CA_flProducts;
		qryS += "&fnFinancierProductID=" + CA_fnFinancierProductID;
		qryS += "&fnWarrantyID=" + CA_fnWarrantyID;
		qryS += "&fnTaxRate=" + CA_fnTaxRate;
		qryS += "&cHKID=" + CA_ID;
		qryS += "&fnKilometrage=" + CA_fnKilometrage;
		qryS += "&bCalcKP=" + CA_bCalcKP;
		qryS += "&bCalcIG=" + CA_bCalcIG;

		if ( CA_fbRestValueFixed )
			if ( CA_CalcKPUnChecked ){
				qryS += "&fnRestValue=" + CA_fnRestValueUser;
				CA_CalcKPUnChecked = false;
			}
			else
				qryS += "&fnRestValue=" + CA_fnRestValueUser;

		if ( CA_fbRestBalanceFixed || CA_ID == '__1448__10859' || CA_ID == '__2191__11888' || CA_ID == '__2191__11886' || CA_ID == '__2191__11876' || CA_ID == '__2191__11884' || CA_ID == '__2191__11890' || CA_ID == '__2191__11904' || CA_ID == '__2191__11902' || CA_ID == '__2191__11900' || CA_ID == '__2191__11906' || CA_ID == '__2191__11896' || CA_ID == '__2191__11898' || CA_ID == '__2191__11894' || CA_ID == '__2191__11892' || CA_ID == '__2225__11916' || CA_ID == '__2768__12433' )
			qryS += "&fnRestBalance=" + CA_fnRestBalance;

		if ( document.form.elements[ 'fnPriceNew' + CA_ID ] == '[object]' || document.form.elements[ 'fnPriceNew' + CA_ID ] == '[object HTMLInputElement]')
			qryS += "&nPriceNew=" + parseFloat( document.form.elements[ 'fnPriceNew' + CA_ID ].value );

		document.getElementById("dv_action_frame").src = CA_remote + qryS;

	};
};
	
function MonthlyChanged(){
	if ( CA_nShowMonthlyChangedState == 2 ){
		alert( "Let op: Door uw wijziging komt uw huidige berekening niet meer overeen met de door de dealer uitgegeven offerte. Het is mogelijk dat de dealer niet akkoord gaat met uw huidige berekening. U kunt aan deze berekening geen rechten ontlenen." );
		CA_nShowMonthlyChangedState = 0;
	}
}

function SetMonthlyChangedWarning(){
	CA_nShowMonthlyChangedState = 1;
};

function CA_process() {

	if ( document.getElementById( "sFinanceTable" ) != null ){
		document.getElementById( "sFinanceTable" ).innerHTML = CA_sFinanceTable;
	}

	if ( document.form.elements[ "cSumInterestLoan_" ] != null ){
		document.getElementById( "cSumInterestLoan" ).innerHTML = CA_fcSumInterestLoan
		document.getElementById( "cKredietsom" ).innerHTML = CA_fcKredietsom
		if ( CA_fnFinancierProductID == 66 )
			document.getElementById( "cLoanSort" ).innerHTML = "Het betreft hier een huurkoop."
		else
			document.getElementById( "cLoanSort" ).innerHTML = "Het betreft hier een doorlopend krediet."
	}
	
	if ( bCalcKP ){
		if ( CA_bCalcKP == 1 ){
			MIF_Update( document.form.elements[ 'fnPrice_' + CA_PKPID + CA_ID ], CA_PKP );
		}
		updateTotalPriceNoCalculate();
		UpdateflProducts();
	}

	if ( bCalcIG ){
		if ( CA_bCalcIG == 1 ){
			MIF_Update( document.form.elements[ 'fnPrice_' + CA_IGID + CA_ID ], CA_IG );
		}
		updateTotalPriceNoCalculate();
		UpdateflProducts();
	}
	
// 4-12-2007 next line does nothing?????????????????????????
//	if ( document.form.elements[ 'fnInsuranceID' + CA_ID ] == '[object]' || document.form.elements[ 'fnInsuranceID' + CA_ID ] == '[object HTMLSelectElement]' )

	// set LoanMinusCommission:
	if ( document.form.fnTotaalMinusCommission == '[object]' || document.form.fnTotaalMinusCommission == '[object HTMLInputElement]' )
		MIF_Update( document.form.fnTotaalMinusCommission, CA_fnLoanMinusCommission );

	// set Commission:
	if ( document.form.fnCommission == '[object]' || document.form.fnCommission == '[object HTMLInputElement]' )
		MIF_Update( document.form.fnCommission, CA_fnCommission );

	// set total:
	if ( document.form.fnTotaal == '[object]' || document.form.fnTotaal == '[object HTMLInputElement]' )
		MIF_Update( document.form.fnTotaal, CA_fnLoan );

	// fill in montly
	MIF_Update( document.form.elements[ 'fnMonthly' + CA_ID ], CA_fnMonthly );
	MonthlyChanged();
	if ( CA_nShowMonthlyChangedState == 1 )
		CA_nShowMonthlyChangedState = 2;

	// fill in daily
	MIF_Update( document.form.elements[ 'fnDaily' + CA_ID ], CA_fnDaily );
	
	//fill in the theoreticalDuration if present
	if ( document.form.elements[ 'fnDuration' + CA_ID ] == '[object]' || document.form.elements[ 'fnDuration' + CA_ID ] == '[object HTMLSelectElement]' )
		if ( document.form.elements[ 'fnDuration' + CA_ID ].tagName == 'INPUT' )
			document.getElementById( 'fnDuration' + CA_ID ).value = CA_fnDuration;
	
	//fill in the monthlyNetto if present
	if ( document.form.elements[ 'fnMonthlyNetto' + CA_ID ] == '[object]' || document.form.elements[ 'fnMonthlyNetto' + CA_ID ] == '[object HTMLInputElement]' )
		MIF_Update( document.form.elements[ 'fnMonthlyNetto' + CA_ID ], CA_fnMonthlyNetto );
	
	// fill in insurance
	if ( document.form.elements[ 'fnInsuranceAmount' + CA_ID ] == '[object]' || document.form.elements[ 'fnInsuranceAmount' + CA_ID ] == '[object HTMLInputElement]')
		MIF_Update( document.form.elements[ 'fnInsuranceAmount' + CA_ID ], CA_fnInsurances );
	
	// fill in warranty
	if ( document.form.elements[ 'fnWarrantyAmount' + CA_ID ] == '[object]' || document.form.elements[ 'fnWarrantyAmount' + CA_ID ] == '[object HTMLInputElement]')
		MIF_Update( document.form.elements[ 'fnWarrantyAmount' + CA_ID ], CA_fnWarranties );

	if ( document.form.elements[ 'bRestValueFixed' + CA_ID ] == '[object]' || document.form.elements[ 'bRestValueFixed' + CA_ID ] == '[object HTMLInputElement]' )
		document.form.elements[ 'bRestValueFixed' + CA_ID ].value = CA_bRestValueFixed;

	if ( document.form.elements[ 'bRestBalanceFixed' + CA_ID ] == '[object]' || document.form.elements[ 'bRestBalanceFixed' + CA_ID ] == '[object HTMLInputElement]' )
		document.form.elements[ 'bRestBalanceFixed' + CA_ID ].value = CA_bRestBalanceFixed;

	// -------
	if ( CA_fbDoesTheMatrixHaveMe ) {
		//if statement temp solution, cant find where CA_fbDoesTheMatrixHaveMe is defined
		if ( document.form.elements[ 'M_fnAmount' + CA_ID ] == '[object]' || document.form.elements[ 'M_fnAmount' + CA_ID ] == '[object HTMLInputElement]' ) {
			MIF_Update( document.form.elements[ 'M_fnAmount' + CA_ID ], CA_fnAmount );
			MIF_Update( document.form.elements[ 'M_fnInvestment' + CA_ID ], CA_fnInvestment );
			MIF_Update( document.form.elements[ 'M_fnLoan' + CA_ID ], CA_fnLoan );
			MIF_Update( document.form.elements[ 'M_fnWriteOff' + CA_ID ], CA_fnWriteOff );
			MIF_Update( document.form.elements[ 'M_fnCenterPoint' + CA_ID ], CA_fnCenterPoint );
			MIF_Update( document.form.elements[ 'M_fnRepayment' + CA_ID ], CA_fnRepayment );
			MIF_Update( document.form.elements[ 'M_fnRestValue' + CA_ID ], CA_fnRestValue );
			MIF_Update( document.form.elements[ 'M_fnFinalPoint' + CA_ID ], CA_fnFinalPoint );
			MIF_Update( document.form.elements[ 'M_fnRestBalance' + CA_ID ], CA_fnRestBalance );
			if ( CA_fnCenterPoint == 0 ) {
				document.getElementById( 'CenterField' ).style.visibility='hidden';
			} else {
				document.getElementById( 'CenterField' ).style.visibility='visible';
			};

			MIF_Update( document.form.elements[ 'M_fnCommission' + CA_ID ], CA_fnCommission );

			if ( document.form.elements[ 'SAVE_flProducts' + CA_ID ] == '[object]' || document.form.elements[ 'SAVE_flProducts' + CA_ID ] == '[object HTMLInputElement]' )
				document.form.elements['SAVE_flProducts' + CA_ID].value = CA_flProducts;

			if ( document.getElementById( 'ContractMatrixMessage' ) == '[object]' || document.getElementById( 'ContractMatrixMessage' ) == '[object HTMLInputElement]' )
				document.getElementById( 'ContractMatrixMessage' ).style.visibility='hidden';
		};
	};
};

function fixRestValue( v ) {
	CA_fbRestValueFixed = 1;
	CA_fnRestValue = document.form.elements[ 'M_fnRestValue' + CA_ID ].value;
	CA_fnRestValueUser = CA_fnRestValue;
	calculate();
};

function fixRestBalance( v ) {
	CA_fbRestBalanceFixed = 1;
	CA_fnRestBalance = document.form.elements[ 'M_fnRestBalance' + CA_ID ].value;
	calculate();
};

function setInvestment() {
	if ( document.form.elements[ 'fnInvestment' + CA_ID ] == '[object]' || document.form.elements[ 'fnInvestment' + CA_ID ] == '[object HTMLInputElement]' ) {
		MIF_Update( document.form.elements[ 'fnInvestment' + CA_ID ], document.form.elements[ 'M_fnInvestment' + CA_ID ].value );
		calculate();
	}
};

