
    var jsMontantDon;
    var jsModePaiement;
    var miniMontantReccurent = 7;
    var miniMontantLibre = 7;

    $(function(){

        /** Paiement unique - Affectation case à cocher sur focus */
        $("#montantUniqueLibre").focus( function () {
            selectionUnique();
            $("#radioUniqueMontantLibre").attr("checked", true);
            $("#blocDeduction").css("display", "none");
            $("#blocDeductionReccurent").css("display", "none");
        });        

        /** Paiement unique - calcul du montant du don sur saisie libre */
        $("#montantUniqueLibre").blur( function () {
            calculDeduction( $(this).val(), "unique" );
        });        

        /** Paiement récurrent - Affectation case à cocher sur focus */
        $("#montantReccurentLibre").focus( function () {
            selectionReccurent()
            $("#montantDonxFoisRadioBis").attr("checked", true);
            $("#blocDeduction").css("display", "none");
            $("#blocDeductionReccurent").css("display", "none");
        });        

        /** Paiement récurrent - calcul du montant du don sur saisie libre */
        $("#montantReccurentLibre").blur( function () {
            calculDeduction( $(this).val(), "recurrent" );
        });        

        /** Reporte le texte de l'affectation dans le récapitulatif */
        $("#affectation").change( function () {
            $("#recapAffectation").html( $("#affectation option:selected").text() );
        }); 

    });

    $(document).ready( function() {

        /* Initialisation de l'affichage du formulaire */
        selectionUnique();

        /* Boutons radio pour montant unique */
        $(".montantUnique").each(function(){
	    	var html_id = $(this).attr("id");
			$("#" + html_id).click(function() {
			     selectionUnique();
                if ( $("#" + html_id).is(":checked") ) {
                    $("#montantUniqueLibre").val("");
                    calculDeduction( $("#" + html_id).val(), "unique" );
                }
            });
        });        

        /* Boutons radio pour montant récurrent */
        $(".montantReccurent").each(function(){
	    	var html_id = $(this).attr("id");
			$("#" + html_id).click(function() {
                selectionReccurent()
                if ( $("#" + html_id).is(":checked") ) {
                    $("#montantReccurentLibre").val("");
                    calculDeduction( $("#" + html_id).val(), "recurrent" );
                }
            });
        });

        $("#blocDeductionReccurent").css("display", "none");
        $("#blocDeduction").css("display", "none");
        $("#paiementReccurentDiv").css("display", "");

        /** Charge la liste déroulante des affectations */
		$.ajax({
			cache: false,
			async: false,
			type: "GET",
			url: "ressources/xml/getFromSecure.php",
			data: "xmlUrl=" + urlWebServices + "/dons/getAffectations.xml.php",
			datatype: "xml",
			success: function(xml) {
				var cbOptions = "";
				$(xml).find("affectation").each(function(){
					var idAffectation = $(this).attr("id");
               var libelleAffectation = $(this).text();
					cbOptions = cbOptions + "<option value=\"" + idAffectation + "\">" + libelleAffectation + "</option>\n";
				});
				$("#affectation").html(cbOptions);
				$("#affectation").val("0");
            $("#recapAffectation").html( $("#affectation option:selected").text() );
			}
		});
        
   	});

    /**
    * Formule de calcul pour afficher le montant de la déduction sur le don
    * Appel en AJAX avec en paramètre, le montant du don
    * Le taux sera repris directement depuis la classe de configuartion du dossier
    *
    */
    function calculDeduction(montantDon, methode) {
        
        if ( montantDon == "" ) {
            $("#blocDeduction").css("display", "none");
            $("#blocDeductionReccurent").css("display", "none");
            return false;
        }
        
			jsMontantDon = montantDon;

            monAdresse = window.location.protocol + "//" + window.location.hostname + "/fnh_portail_complet/ajax/calculDonDeduit";

			$.ajax({
				type: "POST",
				url: monAdresse,
				data: "montantDon=" + montantDon,
				success: function(montantDonDeduit){

                if ( montantDonDeduit != "0" ) {
                    
                    if ( methode == "unique" ) {
                        $("#montantDonUnique").html(montantDon);
                        $("#montantDeduction").html(montantDonDeduit);
                        $("#blocDeduction").css("display", "");
                        $("#recapDon").html("Je donne une fois " + montantDon + " € pour :");
                    }

                    if ( methode == "recurrent") {
                        if ( $("#blocDeductionReccurent").length ) {
                            $("#montantDonReccurent").html(montantDon);
                            $("#montantDeductionReccurent").html(montantDonDeduit);
                            $("#blocDeductionReccurent").css("display", "");
                        }
                        else {                     
                            $("#montantDonUnique").html(montantDon);
                            $("#montantDeduction").html(montantDonDeduit);
                            $("#blocDeduction").css("display", "");
                        }
                        $("#recapDon").html("Je donne " + montantDon + " € tous les mois pour :"); 
                    }                    

                }
                else {
                    $("#blocDeduction").css("display", "none");
                    $("#blocDeductionReccurent").css("display", "none");
                }
			}
		});				

    }


    /** Dans le cas d'un don par paiement réccurent */
    function selectionReccurent() {
        
        $(".montantUnique").each(function(){
            $(this).attr("checked", false);
        });
        
        $("#radioUniqueMontantLibre").attr("checked", false);
        $("#montantUniqueLibre").val("");

        $(".paiementUnique").each(function(){
            $(this).css("display", "none");
        });
        $(".paiementReccurent").each(function(){
            $(this).css("display", "");
        });

        annulerModePaiement();        

    }

    /** Dans le cas d'un don par paiement unique */
    function selectionUnique() {

        $(".montantReccurent").each(function(){
            $(this).attr("checked", false);
        });
        $("#montantDonxFoisRadioBis").attr("checked", false);
        $("#montantReccurentLibre").val("");
        
        $("#rib_banque").val("");
        $("#rib_adresse1").val("");
        $("#rib_adresse2").val("");
        $("#rib_cp").val("");
        $("#rib_ville").val("");
        $("#rib_code_banque").val("");
        $("#rib_guichet").val("");
        $("#rib_compte").val("");
        $("#rib_cle").val("");

        $(".paiementUnique").each(function(){
            $(this).css("display", "");
        });
        $(".paiementReccurent").each(function(){
            $(this).css("display", "none");
        });

        annulerModePaiement();

    }

    /** Supprime la sélection des boutons radios pour les modes de paiement */
    function annulerModePaiement() {

        $(".radioModePaiement").each(function(){
            $(this).attr("checked", false);
        });

    }

    /** Vérifie si un type de don (unique ou récurrent) a été sélectionné */
    function analyserTypeDons() {

        var boolTypeDon = false;
        $("#messageEtape1").empty();
        $(".inputPrixRadio").each(function(){
            if ( $(this).is(":checked") ) {
                boolTypeDon = true;
            }
        });
        if ( $("#radioUniqueMontantLibre").is(":checked") ) {
            if ( parseInt($("#montantUniqueLibre").val()) == $("#montantUniqueLibre").val() ) {
                if ( !($("#montantUniqueLibre").val() >= miniMontantLibre) ) {
                    boolTypeDon = false;
                    boolShowAlerte = true;
                    $("#messageEtape1").html( "Vous devez saisir un montant conforme (minimum " + miniMontantLibre + " euro)" );
                }
            }
            else {
                boolTypeDon = false;
                boolShowAlerte = true;
                $("#messageEtape1").html( "Vous devez saisir un montant conforme (entier)" );
            }
            
        }
        else if ( $("#montantDonxFoisRadioBis").is(":checked") ) {
            if ( !($("#montantReccurentLibre").val() >= miniMontantReccurent) ) {
                boolTypeDon = false;
                boolShowAlerte = true;
                $("#messageEtape1").html( "Vous devez saisir un montant conforme (minimum " + miniMontantReccurent + " euro)" );
            }
            else if ( parseInt($("#montantReccurentLibre").val()) != $("#montantReccurentLibre").val() ) {
                boolTypeDon = false;
                boolShowAlerte = true;
                $("#messageEtape1").html( "Vous devez saisir un montant conforme (entier)" );
            }
        }
        else
        {
            if ( !boolTypeDon ) {
                boolShowAlerte = true;
                $("#messageEtape1").html( "Vous devez choisir un type de don" );
            }
        }
        return boolTypeDon;
    }

    /** Vérifie si un mode de paiement a été sélectionné */
    function analyserModePaiement() {
        var boolModePaiement = false;
        $("#messageEtape3").empty();
        $("input[name=radioModePaiement]").each(function(){
            if ( $(this).is(":checked") ) {
                boolModePaiement = true;
                jsModePaiement = $(this).val();
                
            }
        });
        if ( !boolModePaiement ) {
            boolShowAlerte = true;
            $("#messageEtape3").append( "Vous devez choisir un mode de paiement" );
            return false;
        }
        
        if ( jsModePaiement == "PRLVT" ) {
            return analyserPrelevement();
        }
        
        return true;
    }

/* ************************************ */
/* ************************************ */

/**
 * GESTION DU PRELEVEMENT
 * Contrôles JS pour tous les champs nécessaires
 *
 */
 
    /** Vérifie si les champs nécessaires au prélèvement ont été renseignés */
    function analyserPrelevement() {

        message = "";

		if ( $("#rib_banque").val().length < 2 ) {
            message = message + "<li>Vérifier le nom de votre banque</li>";
		}
		if ( $("#rib_adresse1").val().length < 2 ) {
            message = message + "<li>Vérifier l'adresse</li>";
		}
		if ( $("#rib_cp").val().length < 5 ) {
            message = message + "<li>Vérifier le code postal</li>";
		}
		if ( $("#rib_ville").val().length < 2 ) {
            message = message + "<li>Vérifier la ville</li>";
		}
		if ( !isRibCle() ) {
            message = message + "<li>Vérifier la clé RIB</li>";
		}
		if ( !isRibCode() ) {
            message = message + "<li>Vérifier le code établissement</li>";
		}
		if ( !isRibGuichet() ) {
            message = message + "<li>Vérifier le code guichet</li>";
		}
		if ( !isRibCompte() ) {
            message = message + "<li>Vérifier le numéro du compte</li>";
		}

        if ( message != "" ) {
            boolShowAlerte = true;
            $("#messageEtape3").append( "<ul>Au niveau du RIB :<br />" + message + "</ul>" );
            return false;	
        }
        
        return true;

    }
    
    function isRibCode() {
        var filter = /^[0-9]{5}$/;
        return filter.test( $("#rib_code_banque").val() );    
    }    
    function isRibGuichet() {
        var filter = /^[0-9]{5}$/;
        return filter.test( $("#rib_guichet").val() );    
    }    
    function isRibCompte() {
        var filter = /^[a-zA-Z0-9]{11}$/;
        return filter.test( $("#rib_compte").val() );    
    }    
    function isRibCle() {
        var txtBanque = completerZero( retirerLettres( $("#rib_code_banque").val() ), 5 );
        var txtGuichet = completerZero( retirerLettres( $("#rib_guichet").val() ), 5 );
        var txtCompte = completerZero( retirerLettres( $("#rib_compte").val() ), 11 );
        var cle = 97 - ( ( 89 * parseInt(txtBanque, 10) + 15 * parseInt(txtGuichet, 10) + 3 * parseInt(txtCompte, 10) ) % 97);
        if ( $("#rib_cle").val() == cle ) {
            $("#rib_code_banque").val(txtBanque);
            $("#rib_guichet").val(txtGuichet);
            $("#rib_compte").val(txtCompte);
        }
        return $("#rib_cle").val() == cle;
    }


    function completerZero(monTexte, maLongueur) {
        var nombre = maLongueur - monTexte.length ;
        for ( compteur = 0 ; compteur < nombre ; compteur++ ) {
            monTexte = "0" + monTexte.toString();
        }
        return monTexte;
    }
    function retirerLettres(monTexte) {
        return strtr(monTexte.toString(),"ABCDEFGHIJKLMNOPQRSTUVWXYZ","12345678912345678923456789");
    }    
	function strtr (str, from, to) {
	    var fr = '', i = 0, j = 0, lenStr = 0, lenFrom = 0;
	    var tmpFrom = [];
	    var tmpTo   = [];
	    var ret = '';
	    var match = false;
	    if (typeof from === 'object') {
	        for (fr in from) {
	            tmpFrom.push(fr);
	            tmpTo.push(from[fr]);
	        }
	        from = tmpFrom;
	        to = tmpTo;
	    }
	    lenStr  = str.length;
	    lenFrom = from.length;
	    for (i = 0; i < lenStr; i++) {
	        match = false;
	        for (j = 0; j < lenFrom; j++) {
	            if (str.substr(i, from[j].length) == from[j]) {
	                match = true;
	                i = (i + from[j].length)-1;
	                break;
	            }
	        }
	        if (false !== match) {
	            ret += to[j];
	        } else {
	            ret += str[i];
	        }
	    }
	    return ret;
	}

