﻿//var Prefix = "";

var Region_Bxl = 0;
var Region_Flamande = 1;
var Region_Wallone = 2;

function CalculDroitEnregistrement(Montant, Region, Abattement, Reduit) {
    /// <summary>Calcul les droits d'enregistrement</summary>
    /// <param name="Montant" >Montant sur lequel cela est calculé</param>
    /// <param name="Region" >Region (0=Bxl,1=Vlaams,2=Waals)</param>
    /// <param name="Abattement" >Montant de l'abattement (si <0) déterminé à partir de la région)</param>
    /// <param name="Reduit" >Indique si droit réduit (6% ou 5%)</param>

    if (Abattement < 0) {
        switch (Region) {
            case Region_Bxl: Abattement = 60e3; break;
            case Region_Flamande: Abattement = 15e3; break;
            case Region_Wallone: Abattement = 0; break;
            default: Abattement = 0;
        }
    }
    var CoefFrais = 12.5e-2;
    switch (Region) {
        case Region_Bxl: CoefFrais = 12.5e-2; break;
        case Region_Flamande:
            if (Reduit)
                CoefFrais = 5e-2;
            else
                CoefFrais = 10e-2;
            break;
        case Region_Wallone:
            if (Reduit)
                CoefFrais = 6e-2;
            else
                CoefFrais = 12.5e-2;
            break;
    }
    return (Math.max(0, (Montant - Abattement) * CoefFrais));
}

function Calcul() {
    var MontantAchat = inl_strtodouble(GetDocumentElement(Prefix + "cMontantAchat").value);
    var MontantAchatTerrain = inl_strtodouble(GetDocumentElement(Prefix + "cMontantAchatTerrain").value);
    var cTypeRegion = GetDocumentElement(Prefix + "cTypeRegion");
    var Region = parseInt(cTypeRegion.options[cTypeRegion.selectedIndex].value);
    var bAttement = GetDocumentElement(Prefix + "cbAttement_1").checked;
    var RegimeTVARenovation = GetDocumentElement(Prefix + "cRegimeTVARenovation").selectedIndex;
    var RegimeTVAConstruction = GetDocumentElement(Prefix + "cRegimeTVAConstruction").selectedIndex;
    var bGrand = GetDocumentElement(Prefix + "cbTypeBien_1").checked;
    var TVARenovation = 0.21;
    if (RegimeTVARenovation == 0)
        TVARenovation = 0.06;

    var Abattement = -1;
    if (!bAttement)
        Abattement = 0;
    var DroitEnregistrement = CalculDroitEnregistrement(MontantAchat + MontantAchatTerrain, Region, Abattement, !bGrand);
                         /* maintenant le terrain est "abattable" en flandre et souvent à bruxelles     CalculDroitEnregistrement(MontantAchatTerrain, Region, 0, !bGrand); */
    var FraisActe = 0;
    if (MontantAchat + MontantAchatTerrain > 0)
        FraisActe = GetFraisAchat(MontantAchat + MontantAchatTerrain);

    var MontantConstruction = inl_strtodouble(GetDocumentElement(Prefix + "cMontantConstruction").value);
    var MontantRenovation = inl_strtodouble(GetDocumentElement(Prefix + "cMontantRenovation").value);
    var Epargne = inl_strtodouble(GetDocumentElement(Prefix + "cAcompte").value) +
                inl_strtodouble(GetDocumentElement(Prefix + "cFondsPropres").value) /*+
                inl_strtodouble(GetDocumentElement(Prefix + "cPretFamille").value)*/;

    var TVA = MontantRenovation / (1 + TVARenovation) * TVARenovation;
    if (RegimeTVAConstruction == 0)
        TVA += MontantConstruction / 1.21 * 0.21;
    else if (MontantConstruction < 50e3 * 1.06)
        TVA += MontantConstruction / 1.06 * 0.06;
    else
        TVA += 50e3 * 0.06 + (MontantConstruction - 50e3 * 1.06) / 1.21 * 0.21;
    var PrixAchat = MontantAchat + MontantAchatTerrain ;
    var PrixConstruction = +MontantConstruction + MontantRenovation - TVA;
    var MontantAFinancer = PrixConstruction+PrixAchat + TVA + DroitEnregistrement + FraisActe - Epargne;
    var MontantCredit = GetMontantSansFraisCredit(MontantAFinancer);
    var Total = MontantCredit + Epargne;

    GetDocumentElement("cPrixAchat").value = inl_doubletostr(PrixAchat);
    GetDocumentElement("cPrixConstruction").value = inl_doubletostr(PrixConstruction);
    GetDocumentElement("cTVA").value = inl_doubletostr(TVA);
    GetDocumentElement("cDroitEnregistrement").value = inl_doubletostr(DroitEnregistrement);
    GetDocumentElement("cEpargne").value = inl_doubletostr(Epargne);
    GetDocumentElement("cFraisActe").value = inl_doubletostr(FraisActe);
    GetDocumentElement("cMontantCredit").value = inl_doubletostr(MontantCredit);
    GetDocumentElement("cFraisHyp").value = inl_doubletostr(MontantCredit - MontantAFinancer);
    GetDocumentElement("cTotal0").value = inl_doubletostr(Total);
    GetDocumentElement("cTotal1").value = inl_doubletostr(Total);
    // hidden field pour le serveur
    GetDocumentElement(Prefix + "cMontantCreditFinal").value = inl_doubletostr(MontantCredit);
    GetDocumentElement(Prefix + "cValeurVenale").value = inl_doubletostr(PrixAchat);
}

