
var ProjetScreen = Class.create();
 
ProjetScreen.prototype = {
    fdnParams: null,
    fdnProjetParams: null,
    tooltipParams:null,
    sliderPrixAxquisition: null,
    sliderPretLibre: null,
    sliderPretLogement: null,
    sliderPretAide: null,
    numFormat: null,
    camenbertTooltip: null,
    initialize:function()
    {
        this.numFormat=new NumberFormat("#,###");
    },
    initComponents:function(fdnParams,fdnProjetParams,tooltipParams)
    {
        this.fdnParams = fdnParams;
        this.fdnProjetParams=fdnProjetParams;
        this.tooltipParams=tooltipParams;
    
        Element.hide("bloc-projet-result");
        Element.hide("bouton-resultat");
        
        if (fdnParams.affichage_edition == "false")
        {
            Element.hide("bouton-imprimer");
        }
        else {
            $Click("bouton-imprimer", this.imprime.bindAsEventListener(this));
        }
        
        $Click("bouton-resultat", this.next.bindAsEventListener(this));
    
        // bouton retour au projet        
        $Click("bouton-prevToProjet", this.prev.bindAsEventListener(this));
    
        $Click("bouton-calculer", this.calculerFraisNotaire.bindAsEventListener(this,"bouton"));
        $Click("typeBien-neuf", this.calculerFraisNotaire.bindAsEventListener(this,"radio"));
        $Click("typeBien-ancien", this.calculerFraisNotaire.bindAsEventListener(this,"radio"));
        $Click("typeBien-terrain", this.calculerFraisNotaire.bindAsEventListener(this,"radio"));
        $Click("localite-francecorse", this.calculerFraisNotaire.bindAsEventListener(this,"radio"));
        $Click("localite-outremer", this.calculerFraisNotaire.bindAsEventListener(this,"radio"));
        $Click("chkGarantieHypothecaire", this.calculerFraisNotaire.bindAsEventListener(this,"radio"));
    
    
        //tooltips
        var fdntooltip = createHvsTooltip('informationsTooltip','Information',445);

        $MouseOver('ico-renvoie-typeBien', (function(evt){
            showTooltip(evt, fdntooltip, this.tooltipParams.msgTooltipTypeBien,530,'Information')
        }).bindAsEventListener(this));
        $MouseOut('ico-renvoie-typeBien', function(evt){
            hideTooltip(evt, fdntooltip)
        });

        $MouseOver('ico-renvoie-localite', (function(evt){
            showTooltip(evt, fdntooltip, this.tooltipParams.msgTooltipLocalite,330,'Information')
        }).bindAsEventListener(this));
        $MouseOut('ico-renvoie-localite', function(evt){
            hideTooltip(evt, fdntooltip)
        });


        $MouseOver('ico-info-prix-acquisition-slider', (function(evt){
            showTooltip(evt, fdntooltip, this.tooltipParams.msgTooltipPrixAcqSlider,330,'Information')
        }).bindAsEventListener(this));
        $MouseOut('ico-info-prix-acquisition-slider', function(evt){
            hideTooltip(evt, fdntooltip)
        });

        $MouseOver('ico-renvoie-prix-acquisition', (function(evt){
            showTooltip(evt, fdntooltip, this.tooltipParams.msgTooltipPrixAcquisition,330,'Information')
        }).bindAsEventListener(this));
        $MouseOut('ico-renvoie-prix-acquisition', function(evt){
            hideTooltip(evt, fdntooltip)
        });
    
        this.camembertTooltip = createHvsTooltip('camembertTooltip','',445);
    
        $KeyUp("prix-acquisition", this.testInvalideResultats.bindAsEventListener(this));
    
    
        //valeur
        this.sliderPrixAxquisition = new Control.Slider('handle1','track1',{
            range:$R(parseInt(this.fdnProjetParams.prixAquisitonMin),parseInt(this.fdnProjetParams.prixAquisitonMax)),
            step:this.fdnProjetParams.prixAquisitonPas,
            keystep:this.fdnProjetParams.prixAquisitonKeyPas,
            axis: 'horizontal',
            direction:'down',
            onSlide:(function(){
                $("slider-prix-acquisition-value").value = this.numFormat.format(eval(this.sliderPrixAxquisition.value),"#,###")+" \u20ac";
            }).bindAsEventListener(this),
            onChange:(function(){
                $("slider-prix-acquisition-value").value = this.numFormat.format(eval(this.sliderPrixAxquisition.value),"#,###")+" \u20ac";
                if (fdnParams.typeGraphique=="png")
                {
                    Element.setOpacity("fdn-pie-buffer", 0.4);
                    Element.setOpacity("fdn-pie", 0.4);
                    Element.hide("fdn-pie");
                    Element.show("fdn-pie-buffer");                 
                }
                if (this.fdnParams.affichage_garantie=='true')
                {
                    var prix = this.sliderPrixAxquisition.value;
                    if (prix!=0)
                    {
                        this.sliderPretLibre.setEnabled();
                        this.sliderPretLibre.changeRange($R(parseInt(this.fdnProjetParams.pretLibreMin), prix));
                    }
                    else
                    {
                        this.sliderPretLibre.setValue(prix);
                        this.sliderPretLibre.setDisabled();
                    }
                    $("pretlibremax").innerHTML = this.numFormat.format(eval(prix),"#,###");
                }
                if(this.sliderPrixAxquisition.sliderActif)
                {
                    $("prix-acquisition").value = this.sliderPrixAxquisition.value;
                    this.calculerProjet();
                }                
            }).bindAsEventListener(this)
        });
        
        if (this.fdnParams.affichage_garantie=='true')
        {
            Element.hide("mention-hypotheque");
            Element.hide("infos-pret-seul");
          
            $MouseOver('ico-renvoie-garantie', (function(evt){
                showTooltip(evt, fdntooltip, this.tooltipParams.msgTooltipGarantie,330,'Information')
            }).bindAsEventListener(this));
            $MouseOut('ico-renvoie-garantie', function(evt){
                hideTooltip(evt, fdntooltip)
            });
            this.createSlidersPret();
        }
        else
        {
            Element.hide("infos-pret-garantie");
            Element.hide("question-garantie");
            Element.hide("sliders-garantie");
            Element.hide("col-recap-garantie");
            Element.addClassName("slider-prix-resultat","fdn-slider-acquisition-seul");
            Element.addClassName("slider-libelle-prix","slider-fdn-libelle-prix");
        }
        if (this.fdnParams.typeGraphique == "png")
        {       
            Element.hide("fdn-pie-buffer");
            Element.hide("fdn-pie");       
           
        }
        else
        {        
            Element.hide("fdn-pie-buffer");          
        }
        
        //pour revenir au camemebert des fraos d'acquisition lorsque le camembert
        //des frais d'hypothèque est affiché
        $Click("lien-retour-camembert-acquisition", function() {
            submitForm({
                _action:"calculProjet"
            });
            Element.hide("lien-retour-camembert-acquisition");
            Element.show("lien-ouverture-camembert-hypotheque");
        });
        
        Element.hide("lien-ouverture-camembert-hypotheque");
        Element.hide("lien-retour-camembert-acquisition");
        
        $Click("bouton-fermer", fctExit);
        Element.hide("fdn-resultat-double-block");
    },
    createSlidersPret:function()
    {
        this.sliderPretLibre = new Control.Slider('handle2','track2',{
            range:$R(parseInt(this.fdnProjetParams.pretLibreMin),parseInt(this.fdnProjetParams.prixAquisitonMax)),
            step:this.fdnProjetParams.prixAquisitonPas,
            keystep:this.fdnProjetParams.prixAquisitonKeyPas,
            axis: 'horizontal',
            direction:'down',
            onSlide:(function(){
                $("slider-pret-libre-value").value = this.numFormat.format(eval(this.sliderPretLibre.value),"#,###")+" \u20ac";
            }).bindAsEventListener(this),
            onChange:(function(){
                var valeur = this.numFormat.format(eval(this.sliderPretLibre.value),"#,###")+" \u20ac";
                $("slider-pret-libre-value").value = valeur;
                if (fdnParams.typeGraphique=="png")
                {
                    Element.setOpacity("fdn-pie-buffer", 0.4);
                    Element.setOpacity("fdn-pie", 0.4);
                    Element.hide("fdn-pie");
                    Element.show("fdn-pie-buffer");                 
                }
                $("montantPretLibre").value = this.sliderPretLibre.value;
                $("res-pretlibre").innerHTML=valeur;
                if(this.sliderPretLibre.sliderActif)
                {
                    this.calculerProjet();
                }                
            }).bindAsEventListener(this)
        });
        this.sliderPretLibre.setValue(0);
        
        this.sliderPretLogement = new Control.Slider('handle3','track3',{
            range:$R(parseInt(this.fdnProjetParams.pretLogementMin),parseInt(this.fdnProjetParams.pretLogementMax)),
            step:this.fdnProjetParams.pretLogementPas,
            keystep:this.fdnProjetParams.pretLogementKeyPas,
            axis: 'horizontal',
            direction:'down',
            onSlide:(function(){
                $("slider-pret-logement-value").value = this.numFormat.format(eval(this.sliderPretLogement.value),"#,###")+" \u20ac";
            }).bindAsEventListener(this),
            onChange:(function(){
                var valeur = this.numFormat.format(eval(this.sliderPretLogement.value),"#,###")+" \u20ac";
                $("slider-pret-logement-value").value = valeur;
                if (fdnParams.typeGraphique=="png")
                {
                    Element.setOpacity("fdn-pie-buffer", 0.4);
                    Element.setOpacity("fdn-pie", 0.4);
                    Element.hide("fdn-pie");
                    Element.show("fdn-pie-buffer");                  
                }
                $("montantPel").value = this.sliderPretLogement.value;
                $("res-pretepargnelogement").innerHTML=valeur;
                if(this.sliderPretLogement.sliderActif)
                {
                    this.calculerProjet();
                }                
            }).bindAsEventListener(this)
        });
        this.sliderPretLogement.setValue(0);
        
        this.sliderPretAide = new Control.Slider('handle4','track4',{
            range:$R(parseInt(this.fdnProjetParams.pretAideMin),parseInt(this.fdnProjetParams.pretAideMax)),
            step:this.fdnProjetParams.pretAidePas,
            keystep:this.fdnProjetParams.pretAideKeyPas,
            axis: 'horizontal',
            direction:'down',
            onSlide:(function(){
                $("slider-pret-aide-value").value = this.numFormat.format(eval(this.sliderPretAide.value),"#,###")+" \u20ac";
            }).bindAsEventListener(this),
            onChange:(function(){
                var valeur=this.numFormat.format(eval(this.sliderPretAide.value),"#,###")+" \u20ac";
                $("slider-pret-aide-value").value = valeur;
                if (fdnParams.typeGraphique=="png")
                {
                    Element.setOpacity("fdn-pie-buffer", 0.4);
                    Element.setOpacity("fdn-pie", 0.4);
                    Element.hide("fdn-pie");
                    Element.show("fdn-pie-buffer");                
                }
                $("montantPretSecteurAide").value = this.sliderPretAide.value;
                $("res-pretsecteuraide").innerHTML=valeur;
                if(this.sliderPretAide.sliderActif)
                {
                    this.calculerProjet();
                }                
            }).bindAsEventListener(this)
        });
        this.sliderPretAide.setValue(0);
    },
    onLoad:function(fdnParams, projetParams)
    { 
        this.fndParams = fdnParams;
        this.projetParams = projetParams;

    },
    oavAction:function(actionName, params)
    {
        getOavRequest().sendFormRequest(
            null,
            document.forms[0],
            {
                _action:actionName,
                _actionparams:params
            });
    },
    next:function()
    {
        this.afficheEcranResultat();
    },
    prev:function()
    {
        prevScreenSlide(2);
        setTimeout('Element.hide("fdn-resultat-double-block");',400);
    },
    testInvalideResultats:function(evt)
    {
        if(!isNavKey(evt))
        {
            this.invalideResultats();
        }
    },
    invalideResultats:function()
    {
        Element.hide("bouton-resultat");
        if (Element.visible("bloc-projet-result"))
            this.cacheprojetresultats("projet-result");
    },
    calculerFraisNotaire:function(evt,actionparams)
    {
        if (parseInt($("prix-acquisition").value)>=parseInt(this.fdnProjetParams.prixAquisitonMin))
        {
            this.sliderPrixAxquisition.changeRange($R(parseInt(this.fdnProjetParams.prixAquisitonMin), parseInt(this.fdnProjetParams.prixAquisitonMax)));
            this.sliderPrixAxquisition.setValue(parseInt($("prix-acquisition").value));
        }
        $("garantieHypothecaire").value=false;
        if (this.fdnParams.affichage_garantie=='true' && $("chkGarantieHypothecaire").checked)
        {
            $("garantieHypothecaire").value=true;
            //par défaut si on a la garantie hypothécaire de cochée, on arrive
            //avec un pret libre dont le montant est égale au prix d'acqusition
            this.sliderPretLibre.setValue(this.sliderPrixAxquisition.value);
        }
        this.calculerProjet(actionparams);
    },
    calculerProjet:function(actionparams)
    {
        this.oavAction("calculProjet",actionparams);
    },
    updateResultats:function(resultatsParams)
    {
        if ($("garantieHypothecaire").value=='true')
        {
            Element.hide("resultats-sans-garantie");
            Element.show("resultats-avec-garantie");
            Element.show("ligne-frais-hypotheque");
            Element.hide("infos-pret-seul");
            Element.show("infos-pret-garantie");
            $("sliders-garantie").style.visibility='';
            Element.removeClassName("slider-prix-resultat","fdn-acquisition-seul");
            Element.removeClassName("fdn-graphique","fdn-acquisition-seul");
            Element.removeClassName("slider-libelle-prix","slider-fdn-libelle-prix");
            Element.show("col-honoraires-proportionnels-acquistion");
            Element.show("col-droits-taxes-acquistion");
            if (resultatsParams.fraisHypothecaire>0)
                Element.show("lien-ouverture-camembert-hypotheque");
            else
                Element.hide("lien-ouverture-camembert-hypotheque");
            Element.hide("lien-retour-camembert-acquisition");
        }
        else
        {
            if (this.fdnParams.affichage_garantie=='true')
            {
                this.sliderPretLibre.setValue(0);
                this.sliderPretLogement.setValue(0);
                this.sliderPretAide.setValue(0);
            }
            Element.hide("resultats-avec-garantie");
            Element.show("resultats-sans-garantie");
            Element.hide("ligne-frais-hypotheque");
            Element.hide("infos-pret-garantie");
            Element.show("infos-pret-seul");
            $("sliders-garantie").style.visibility='hidden';
            Element.addClassName("slider-prix-resultat","fdn-acquisition-seul");
            Element.addClassName("fdn-graphique","fdn-acquisition-seul");
            Element.addClassName("slider-libelle-prix","slider-fdn-libelle-prix");
            Element.hide("col-honoraires-proportionnels-acquistion");
            Element.hide("col-droits-taxes-acquistion");
        }
        $("res-prix-acquisition").innerHTML=resultatsParams.prixAcquisition;
        $("res-type-bien").innerHTML=resultatsParams.typeBien;
        $("res-localite").innerHTML=resultatsParams.localisation;
        $("projet-result-montant").innerHTML=this.numFormat.format(eval(resultatsParams.totalFraisNotaire));
        $("projet-result-pourc").innerHTML=this.numFormat.format(eval(resultatsParams.fractionPrixAcquisition),"#,###.#");
        $("resultat-result-montant").innerHTML=this.numFormat.format(eval(resultatsParams.totalFraisNotaire));
        $("resultat-result-pourc").innerHTML=this.numFormat.format(eval(resultatsParams.fractionPrixAcquisition),"#,###.#");
        $("montantFraisAcquisition").innerHTML=this.numFormat.format(eval(resultatsParams.fraisAcquisition))+" &euro;";
        $("montantFraisHypotheque").innerHTML=this.numFormat.format(eval(resultatsParams.fraisHypothecaire))+" &euro;";
        $("resultat-honoraires-proportionnels").innerHTML=this.numFormat.format(eval(resultatsParams.honorairesProportionnels))+" &euro;";
        $("resultat-proportionnel-acquisition").innerHTML=this.numFormat.format(eval(resultatsParams.honorairesProportionnelsAcq));
        $("resultat-droits-taxes").innerHTML=this.numFormat.format(eval(resultatsParams.droitsEtTaxes))+" &euro;";
        $("resultat-droits-taxes-acquisition").innerHTML=this.numFormat.format(eval(resultatsParams.droitsEtTaxesAcq));
        $("resultat-honoraires-formalites").innerHTML=this.numFormat.format(eval(resultatsParams.honorairesFormalites))+" &euro;";
        $("resultat-frais-debours").innerHTML=this.numFormat.format(eval(resultatsParams.fraisEtDebours))+" &euro;";
        this.afficheblocresultats();
        if ($("prix-acquisition").value>0)
        {
            Element.show("projet-resultat2");
            Element.show("resultat-resultat2");
        }
        else
        {
            Element.hide("projet-resultat2");
            Element.hide("resultat-resultat2");
        }
      
        //mise à jour de l'infobulle du camembert
        var msgTooltip = null;
        var garantieHypothecaire = resultatsParams.garantieHypothecaire;
        //en fonction de la garantie hypothécaire, on va chercher le bon message
        if (garantieHypothecaire == "false") {
            msgTooltip = resultatsParams.msg_camembert_frais_acquisition_seul;
        }
        else {
            msgTooltip = resultatsParams.msg_camembert_frais_acquisition_avec_hypotheque;
        }
        
        $MouseOver('pieChartAcquisition', (function(evt){
            showTooltip(evt, this.camembertTooltip, msgTooltip,235,'')
        }).bindAsEventListener(this));
        $MouseOut('pieChartAcquisition', (function(evt){
            hideTooltip(evt, this.camembertTooltip)
        }).bindAsEventListener(this));
        
        //mise en forme de la tooltip
        //on cache la zone correspondant au titre de la tooltip 
        $("camembertTooltip_top").style.display = "none";
        //on met le fond en blanc
        $("camembertTooltip_main").removeClassName("harvest_content");
    },
    afficheblocresultats:function()
    {
        Element.show("bouton-resultat");
        this.afficheprojetresultats("projet-result");
      
    },
    afficheprojetresultats:function(id)
    {
        Element.show("bloc-"+id);
        Element.addClassName("bottom-left-"+id,"corner-result");
        Element.addClassName("bottom-right-"+id,"corner-result");
        Element.removeClassName("bottom-left-"+id,"corner");
        Element.removeClassName("bottom-right-"+id,"corner");
    },                
    cacheprojetresultats:function(id)
    {
        Element.hide("bloc-"+id);
        Element.removeClassName("bottom-left-"+id,"corner-result");
        Element.removeClassName("bottom-right-"+id,"corner-result");
        Element.addClassName("bottom-left-"+id,"corner");
        Element.addClassName("bottom-right-"+id,"corner");
    },
    afficheEcranResultat:function()
    {
        var prixAcquisition = $("prix-acquisition").value;
        var minPrix = this.determinePrixMin(prixAcquisition);
        if(minPrix == parseInt(this.fdnProjetParams.prixAquisitonMin))
        {
            this.sliderPrixAxquisition.changeRange($R(minPrix, 1000000));
            $("sliderPrixAcqMin").innerHTML = this.numFormat.format(eval(minPrix),"##,###")+"&nbsp;&euro;";
            $("sliderPrixAcqMax").innerHTML = this.numFormat.format(eval(1000000),"##,###")+"&nbsp;&euro;";
        }
        else{
            if((parseInt(prixAcquisition) + 500000) > (parseInt(this.fdnProjetParams.prixAquisitonMax)))
            {
                this.sliderPrixAxquisition.changeRange($R(parseInt(this.fdnProjetParams.prixAquisitonMax)-1000000, parseInt(this.fdnProjetParams.prixAquisitonMax)));
                $("sliderPrixAcqMin").innerHTML = this.numFormat.format(eval(parseInt(this.fdnProjetParams.prixAquisitonMax)-1000000),"##,###")+"&nbsp;&euro;";
                $("sliderPrixAcqMax").innerHTML = this.numFormat.format(eval(parseInt(this.fdnProjetParams.prixAquisitonMax)),"##,###")+"&nbsp;&euro;";
            }
            else{
                this.sliderPrixAxquisition.changeRange($R(minPrix, minPrix+1000000));
                $("sliderPrixAcqMin").innerHTML = this.numFormat.format(eval(minPrix),"##,###")+"&nbsp;&euro;";
                $("sliderPrixAcqMax").innerHTML = this.numFormat.format(eval(minPrix+1000000),"##,###")+"&nbsp;&euro;";

            }
        }
        Element.show("fdn-resultat-double-block");
        nextScreenSlide(2);
        if ($("garantieHypothecaire").value=='true')
        {
            if (Element.visible("lien-retour-camembert-acquisition")!=true)
                Element.show("lien-ouverture-camembert-hypotheque");
        }
        else
        {
            Element.hide("lien-ouverture-camembert-hypotheque");
            Element.hide("lien-retour-camembert-acquisition");
        }
    },
    determinePrixMin:function(prix)
    {
        var prixMin = prix - 500000;
        if(prixMin < 0)
        {
            return parseInt(this.fdnProjetParams.prixAquisitonMin);
        }
        else
        {
            return prixMin;
        }
    },
    afficheHypotheque:function(camembertParams)
    {
        Element.hide("lien-ouverture-camembert-hypotheque");
        Element.show("lien-retour-camembert-acquisition");
        
        //on cache l'ancienne tootltip
        hideTooltip(Event, this.camembertTooltip)
        
        //envoie de la requête
        submitForm({
            _action:"afficheCamembertHypotheque"
        });
        
        //ajout des observateurs sur le camembert pour l'affichage de la tooltip
        $MouseOver('pieChartHypotheque', (function(evt){
            showTooltip(evt, this.camembertTooltip, camembertParams.msg_camembert_frais_hypotheque,220,'')
        }).bindAsEventListener(this));
        $MouseOut('pieChartHypotheque', (function(evt){
            hideTooltip(evt, this.camembertTooltip)
        }).bindAsEventListener(this));
        
        //mise en forme de la tooltip
        //on cache la zone correspondant au titre de la tooltip 
        $("camembertTooltip_top").style.display = "none";
        //on met le fond en blanc
        $("camembertTooltip_main").removeClassName("harvest_content");
    },    	
    imprime: function() 
    {             
        if(this.fdnParams.affichage_popup_edition == "true") 
        {             
            openPopupEdition();   
        }
        if (this.fdnParams.affichage_popup_edition == "false")
        {            
            openPdfEdition();
        }
    }
};