// Fichier contenant les scripts nécessaires au fonctionnement du Quoterbox La Personnelle.

var libelles = new Array;
libelles["Titre_FR"]="Demandez <span id=\"partieTitreQuoter\">une soumission</span>";
libelles["Titre_EN"]="Get a <span id=\"partieTitreQuoter\">Quote</span>";
libelles["Auto_FR"]="Assurance auto";
libelles["Auto_EN"]="Auto Insurance";
libelles["Habit_FR"]="Assurance habitation";
libelles["Habit_EN"]="Property Insurance";
libelles["CP_FR"]="Code postal";
libelles["CP_EN"]="Postal Code";
libelles["TEL_FR"]="1 877 699-9923";
libelles["TEL_EN"]="1-877-699-9923";
libelles["XDATE_FR"]="<a href=\"http://www.desjardinsassurancesgenerales.com/d-on/fr/pages/redirection-rappel-renouvellement.aspx\">... ou laissez-nous vos dates de renouvellement</a>";
libelles["XDATE_EN"]="<a href=\"http://www.desjardinsgeneralinsurance.com/d-on/en/pages/redirect-renewal-reminder.aspx\">Not Ready to Get a Quote Yet?</a>";

var langue=$("#Soumission_LNG").val();
var contenuHTML='<div id="zoneQuoterBox">';                     
contenuHTML +='<h2>' + libelles["Titre_" + langue] + '</h2>';
contenuHTML += '<input name="Soumission_MCA" type="hidden" id="Soumission_MCA" value="d" /><input name="Soumission_VAR" type="hidden" id="Soumission_VAR" value="d-on" /><input name="Soumission_PRV" type="hidden" id="Soumission_PRV" value="ON" /><input name="Soumission_GRP" type="hidden" id="Soumission_GRP" value="" /><input name="Soumission_GRPPRV" type="hidden" id="Soumission_GRPPRV" value="QC,ON,AB" />\n';
contenuHTML +='<div class="visible" id="quoterBoxCritere">'
contenuHTML +='<div class="visible" id="quoterBoxLigneAffaire">'
contenuHTML +='<select onchange="javascript:selecteurSoumission.ConstruireUrl(event);" id="Soumission_LA" name="Soumission_LA"><option value="A" selected="selected">' + libelles["Auto_" + langue] + '</option><option value="H">' + libelles["Habit_" + langue] + '</option></select>'
contenuHTML +='</div>'
contenuHTML +='<div class="visible" id="quoterBoxCodePostal">'
contenuHTML +='<label for="Soumission_CP">' + libelles["CP_" + langue] + '</label><input type="text" class="text codePostal" maxlength="7" onkeyup="javascript:selecteurSoumission.ConstruireUrl(event);" id="Soumission_CP" name="Soumission_CP">'
contenuHTML +='</div>'
contenuHTML +='</div>'
contenuHTML +='<div id="quoterBoxBoutton"><input name="Soumission_GO" type="button" id="Soumission_GO" onclick="javascript:location.href=$(\'#Soumission_GO\').attr(\'href\');" href="#" class="btnSoumissionOk" /></div></div>'
contenuHTML +='<p id="zoneNoTelephone">' + libelles["TEL_" + langue] + '</p>';
contenuHTML +='<p id="zoneXdate">' + libelles["XDATE_" + langue] + '</p>';
document.getElementById("contenuCalltoAction").innerHTML = contenuHTML;
	
	
function cliquerAnchor(id, e)
{
	
    var Touche;

    if(window.event)
    {
        Touche = window.event.keyCode;
    }
    else if(e.which)
    {
        Touche = e.which;
    }

    if (Touche == 13)
    {
        var anchor = document.getElementById(id);
        if (anchor)
        {
            var href = $("#"+id).attr("href");
            window.location = href;
        }
        
        return false;
    }
    else
        return true;
}function GestionnaireSelectionSoumission() {
            this.mStrategieLigneAffaire = null;
            this.mStrategieCodePostal = null
            this.CallbackConstruireUrl=null;
            this.Url="";
}

        GestionnaireSelectionSoumission.prototype.Initialiser=function(strategieCodePostal, strategieLigneAffaire) {
            this.mStrategieCodePostal = strategieCodePostal;
            this.mStrategieLigneAffaire = strategieLigneAffaire;
            this.mStrategieCodePostal.Gestionnaire = this;
            this.mStrategieLigneAffaire.Gestionnaire = this;
        }
        
        GestionnaireSelectionSoumission.prototype.StrategieCodePostal=function() {
            return this.mStrategieCodePostal
        }

        GestionnaireSelectionSoumission.prototype.StrategieLigneAffaire=function() {
            return this.mStrategieLigneAffaire
        }

        GestionnaireSelectionSoumission.prototype.ObtenirGroupe=function() {
            return $("*[name='Soumission_GRP']").val();
        }

        GestionnaireSelectionSoumission.prototype.ObtenirLangue=function() {
            return $("*[name='Soumission_LNG']").val();
        }

        GestionnaireSelectionSoumission.prototype.ObtenirMarqueCommerceAffaire=function() {
            return $("*[name='Soumission_MCA']").val();
        }

        GestionnaireSelectionSoumission.prototype.AfficherMessage=function(message) {
            alert(message);
        }

        GestionnaireSelectionSoumission.prototype.ConstruireUrl=function(event) {
            var url=this.StrategieLigneAffaire().ObtenirModeleUrlPourLigneAffaire()
            if (!this.StrategieCodePostal().EstValide()) {
                url=this.StrategieCodePostal().ObtenirUrlNonValide();
                $("#Soumission_GO").removeClass("Valide").addClass("NonValide");
            } else {
                $("#Soumission_GO").removeClass("NonValide").addClass("Valide");
            }
            url = url.replace(/\%MCA\%/gi,this.ObtenirMarqueCommerceAffaire());
            url = url.replace(/\%LNG\%/gi,this.ObtenirLangue());
            url = url.replace(/\%PRV\%/gi,this.StrategieCodePostal().ObtenirProvinceCourante());
            url = url.replace(/\%VAR\%/gi,this.StrategieCodePostal().ObtenirVariation());
            url = url.replace(/\%GRP\%/gi,this.ObtenirGroupe());
            url = url.replace(/\%LA\%/gi,this.StrategieLigneAffaire().ObtenirLigneAffaireSelectionnee());
            url = url.replace(/\%CP\%/gi,this.StrategieCodePostal().ObtenirCodePostal());
            this.Url=url;
            $("#Soumission_GO").attr("href",url);
            if (this.CallbackConstruireUrl != null) {
                this.CallbackConstruireUrl(this);
            }
            if ((typeof(event) != "undefined") && (event != null) && ((event.keyCode || event.which))) cliquerAnchor("Soumission_GO", event)
            return url;
        } 
 var selecteurSoumission=null;

function PreparerSelectionSoumission(repertoireIncludes, initialisation) {
    if (repertoireIncludes.length > 1 && !repertoireIncludes.match("\/$")) {
      repertoireIncludes += "/";
    }

    $(document).ready(function() {
                selecteurSoumission=initialisation();
                selecteurSoumission.ConstruireUrl();
    });
} 
 // Classe StrategieCodePostalSelonProvince
    function StrategieCodePostalSelonProvince(erreurs) {
        this.mErreurs=erreurs;
        this.CallbackValiditeCodePostal = null;
    }
    
    StrategieCodePostalSelonProvince.prototype.EstGroupe=function() {
            return this.Gestionnaire.ObtenirGroupe.length > 0;
    }

    StrategieCodePostalSelonProvince.prototype.ObtenirUrlNonValide=function() {
            if (!this.EstValideFormatCodePostal())
                return this.ObtenirUrlErreur("MsgErrCPInvalide");
            return this.ObtenirUrlErreur("MsgErrCPAbsent");
    }

    StrategieCodePostalSelonProvince.prototype.ObtenirUrlErreur = function(noMessage) {
            var lng = this.Gestionnaire.ObtenirLangue();
            var resultat="#";
            $.each(this.mErreurs, function (index,modele) {
                if (modele[0] == noMessage) {
                    if (lng=='FR')
                        resultat = modele[1];
                    else if (lng=='EN')
                        resultat = modele[2];
                }
            })
            return resultat;
    }

    StrategieCodePostalSelonProvince.prototype.ObtenirCodePostal=function() {
            return $("*[name='Soumission_CP']").val().toUpperCase().replace(/ /gi,"");
    }

    StrategieCodePostalSelonProvince.prototype.ObtenirProvinceCourante=function() {
            return $("*[name='Soumission_PRV']").val();
    }
    
    StrategieCodePostalSelonProvince.prototype.ObtenirProvinceInconnue=function() {
            return "ND";
    }

    StrategieCodePostalSelonProvince.prototype.ObtenirProvincePourCodePostal=function() {
            var cp=this.ObtenirCodePostal();
            if (cp.length == 0) return this.ObtenirProvinceInconnue();
            switch (cp.substring(0,1)) {
                case "A" :  return "NF";
                case "B" :  return "NS";
                case "C" :  return "PE";
                case "E" :  return "NB";

                case "G" :
                case "H" :
                case "J" :  return "QC";

                case "K" :
                case "L" :
                case "M" :
                case "N" :
                case "P" :  return "ON";

                case "R" :  return "MB";
                case "S" :  return "SK";
                case "T" :  return "AB";
                case "V" :  return "BC";
                case "Y" :  return "YT";
                case "X" :
                    if (cp.length > 2) {
                        switch(cp.substring(1,3)) {
                            case "0A" :
                            case "0C" :
                            case "0B" : return "NU";
                        }
                    }
                    return "NT";
            }
            return this.ObtenirProvinceInconnue();
    }

    StrategieCodePostalSelonProvince.prototype.ObtenirVariationGroupe=function() {
        var mca=this.Gestionnaire.ObtenirMarqueCommerceAffaire().toLowerCase();
        var grp=this.Gestionnaire.ObtenirGroupe().toLowerCase();
        switch(grp) {
          case "csq" :
             return mca + "-" + grp;
          case "fiq" :
             return mca + "-" + grp;
          default:
             return mca + "-QC"; 
        }
    }


    StrategieCodePostalSelonProvince.prototype.ObtenirVariationDeProvince = function() {
            var prv=this.ObtenirProvincePourCodePostal();
            var mca=this.Gestionnaire.ObtenirMarqueCommerceAffaire().toLowerCase();
            alert(prv);
            switch (prv) {
                case "NF" :
                case "NS" :
                case "PE" :
                case "NB" : return mca + "-MR";
                case "QC" : return this.ObtenirVariationGroupe();
                case "ON" : return mca + "-ON"; 
                case "BC" :
                case "MB" :
                case "SK" : return mca + "-WS";
                case "AB" :
                case "YT" :
                case "NT" :
                case "NU" : return mca + "-AB";
            }
    }

    StrategieCodePostalSelonProvince.prototype.ObtenirProvincesPermises=function() {
            return $("*[name='Soumission_GRPPRV']").val();
    }

    StrategieCodePostalSelonProvince.prototype.ObtenirVariation=function() {
            return $("*[name='Soumission_VAR']").val();
    }

    StrategieCodePostalSelonProvince.prototype.EstValideVariation=function() {
            return (this.ObtenirVariation() == this.ObtenirVariationDeProvince())
    }

    StrategieCodePostalSelonProvince.prototype.EstValideFormatCodePostal=function() {
            var expression=/^(([ ]*[A-CEGHJ-NPR-TV-Z][ ]*[0-9]){3}[ ]*)$/
            return expression.test(this.ObtenirCodePostal());
    }

    StrategieCodePostalSelonProvince.prototype.EstValide=function() {
            var resultat = this.EstValideFormatCodePostal();
            if (!this.EstValideVariation()) resultat=false;
            if (this.CallbackValiditeCodePostal != null) {
                this.CallbackValiditeCodePostal(this.Gestionnaire,resultat);
            } 
            return resultat;
    } 
 // Classe StrategieCodePostalVide
    function StrategieCodePostalVide(erreurs, rediriger) {
        this.mErreurs=erreurs;
        this.mRediriger=rediriger;
        this.CallbackValiditeCodePostal = null;
    }
    
    StrategieCodePostalVide.prototype.ObtenirUrlNonValide=function() {
            if (this.ObtenirCodePostal().length==0) return this.ObtenirUrlErreur("MsgErrCPAbsent");      
            if (!this.EstValideFormatCodePostalComplet())
                return this.ObtenirUrlErreur("MsgErrCPInvalide");
            return "#";
    }

    StrategieCodePostalVide.prototype.ObtenirUrlErreur = function(noMessage) {
            var lng = this.Gestionnaire.ObtenirLangue();
            var resultat="#";
            $.each(this.mErreurs, function (index,modele) {
                if (modele[0] == noMessage) {
                    if (lng=='FR')
                        resultat = modele[1];
                    else if (lng=='EN')
                        resultat = modele[2];
                }
            })
            return resultat;
    }

    StrategieCodePostalVide.prototype.ObtenirCodePostal=function() {
            return $("*[name='Soumission_CP']").val().toUpperCase().replace(/ /gi,"");
    }

    StrategieCodePostalVide.prototype.ObtenirProvinceCourante=function() {
            return $("*[name='Soumission_PRV']").val();
    }

    StrategieCodePostalVide.prototype.ObtenirProvincesPermises=function() {
            return $("*[name='Soumission_GRPPRV']").val();
    }


    StrategieCodePostalVide.prototype.ObtenirProvinceInconnue=function() {
            return this.ObtenirProvinceCourante();
    }

     
    
    StrategieCodePostalVide.prototype.ObtenirProvincePourCodePostal=function() {
            var cp=this.ObtenirCodePostal();
            if (cp.length == 0) return this.ObtenirProvinceInconnue();
            switch (cp.substring(0,1)) {
                case "A" :  return "NF";
                case "B" :  return "NS";
                case "C" :  return "PE";
                case "E" :  return "NB";

                case "G" :
                case "H" :
                case "J" :  return "QC";

                case "K" :
                case "L" :
                case "M" :
                case "N" :
                case "P" :  return "ON";

                case "R" :  return "MB";
                case "S" :  return "SK";
                case "T" :  return "AB";
                case "V" :  return "BC";
                case "Y" :  return "YT";
                case "X" :
                    if (cp.length > 2) {
                        switch(cp.substring(1,3)) {
                            case "0A" :
                            case "0C" :
                            case "0B" : return "NU";
                        }
                    }
                    return "NT";
            }
            return this.ObtenirProvinceCourante();
    }

     StrategieCodePostalVide.prototype.ObtenirVariationGroupe=function() {
        var mca=this.Gestionnaire.ObtenirMarqueCommerceAffaire().toLowerCase();
        var grp=this.Gestionnaire.ObtenirGroupe().toLowerCase();
        switch(grp) {
          case "csq" :
             return mca + "-" + grp;
          case "fiq" :
             return mca + "-" + grp;
          default:
             return mca + "-QC"; 
        } 
    }

    StrategieCodePostalVide.prototype.ObtenirVariationDeProvince = function() {
            var prv=this.ObtenirProvincePourCodePostal();
            var mca=this.Gestionnaire.ObtenirMarqueCommerceAffaire().toLowerCase();
            var grpPrv=this.ObtenirProvincesPermises();
            if ((grpPrv=="") || (grpPrv.indexOf(prv) > -1)) {
              switch (prv) {
                case "NF" :
                case "NS" :
                case "PE" :
                case "NB" : return mca + "-MR";
                case "QC" : return this.ObtenirVariationGroupe();
                case "ON" : return mca + "-ON";
                case "BC" :
                case "MB" :
                case "SK" : return mca + "-WS";
                case "AB" :
                case "YT" :
                case "NT" :
                case "NU" : return mca + "-AB";
              }
            }
            return this.ObtenirVariationCourante()
    }

    StrategieCodePostalVide.prototype.ObtenirVariationCourante=function() {
            return $("*[name='Soumission_VAR']").val();
    }

    StrategieCodePostalVide.prototype.ObtenirVariation=function() {
        if (this.mRediriger) return this.ObtenirVariationDeProvince();
        return this.ObtenirVariationCourante();
    }

    StrategieCodePostalVide.prototype.EstValideFormatCodePostal=function() {
            var cp = this.ObtenirCodePostal()
            var estValide=true;
            for (index=0;index<cp.length;index++) {
                var car = cp.substr(index,1);
                if (index % 2 == 0) {
                    if (!car.toUpperCase().match("[ABCEGHJKLMNPRSTVYZ]")) estValide=false;
                } else {
                    if (!car.match("[0-9]")) estValide=false;
                }
            }
            return estValide && (cp.length <= 6);
    }

    StrategieCodePostalVide.prototype.EstValideFormatCodePostalComplet=function() {
            var expression=/^(([ ]*[A-CEGHJ-NPR-TV-Z][ ]*[0-9]){3}[ ]*)$/
            return expression.test(this.ObtenirCodePostal());
    }


    StrategieCodePostalVide.prototype.EstValide=function() {
            if (this.CallbackValiditeCodePostal != null) {
                this.CallbackValiditeCodePostal(this.Gestionnaire,this.EstValideFormatCodePostal());
            } 
            return true;
    } 
 // Classe StrategieLigneAffaireInformationnel
    function StrategieLigneAffaireInformationnel(modeles) {
        this.mModeles = modeles
    }

    StrategieLigneAffaireInformationnel.prototype.ObtenirLigneAffaireSelectionnee=function() {
            return $("*[name='Soumission_LA']").val();
    }

    StrategieLigneAffaireInformationnel.prototype.ObtenirLangue=function() {
            return $("*[name='Soumission_LNG']").val();
    }

    StrategieLigneAffaireInformationnel.prototype.ObtenirModeleUrlPourLigneAffaire=function() {
            var la = this.ObtenirLigneAffaireSelectionnee();
            var lng = this.Gestionnaire.ObtenirLangue();
            var resultat=this.Gestionnaire.StrategieCodePostal().ObtenirUrlNonValide();
            $.each(this.mModeles, function (index,modele) {
                if (modele[0] == la) {
                    if (lng=='FR')
                        resultat = modele[1];
                    else if (lng=='EN')
                        resultat = modele[2];
                }
            })
            return resultat;
    } 

PreparerSelectionSoumission('/includes',function() {
var modeles=new Array();
modeles[0]="A|http://services.desjardinsassurancesgenerales.com/Init/?prv=%PRV%&mca=%MCA%&lng=%LNG%&grp=%GRP%&cp=%CP%&cs=AU|http://services.desjardinsgeneralinsurance.com/Init/?prv=%PRV%&mca=%MCA%&lng=%LNG%&grp=%GRP%&cp=%CP%&cs=AU".split("|");
modeles[1]="H|http://services.desjardinsassurancesgenerales.com/Init/?prv=%PRV%&mca=%MCA%&lng=%LNG%&grp=%GRP%&cp=%CP%&cs=H|http://services.desjardinsgeneralinsurance.com/Init/?prv=%PRV%&mca=%MCA%&lng=%LNG%&grp=%GRP%&cp=%CP%&cs=H".split("|");
modeles[2]="M|http://services.desjardinsassurancesgenerales.com/Init/?prv=%PRV%&mca=%MCA%&lng=%LNG%&grp=%GRP%&cp=%CP%&cs=M|http://services.desjardinsgeneralinsurance.com/Init/?prv=%PRV%&mca=%MCA%&lng=%LNG%&grp=%GRP%&cp=%CP%&cs=M".split("|");
modeles[3]="PO|http://services.desjardinsassurancesgenerales.com/Init/?prv=%PRV%&mca=%MCA%&lng=%LNG%&grp=%GRP%&cp=%CP%&cs=PO|http://services.desjardinsgeneralinsurance.com/Init/?prv=%PRV%&mca=%MCA%&lng=%LNG%&grp=%GRP%&cp=%CP%&cs=PO".split("|");
modeles[4]="CO|http://services.desjardinsassurancesgenerales.com/Init/?prv=%PRV%&mca=%MCA%&lng=%LNG%&grp=%GRP%&cp=%CP%&cs=CO|http://services.desjardinsgeneralinsurance.com/Init/?prv=%PRV%&mca=%MCA%&lng=%LNG%&grp=%GRP%&cp=%CP%&cs=CO".split("|");
modeles[5]="LO|http://services.desjardinsassurancesgenerales.com/Init/?prv=%PRV%&mca=%MCA%&lng=%LNG%&grp=%GRP%&cp=%CP%&cs=LO|http://services.desjardinsgeneralinsurance.com/Init/?prv=%PRV%&mca=%MCA%&lng=%LNG%&grp=%GRP%&cp=%CP%&cs=LO".split("|");
var sla=new StrategieLigneAffaireInformationnel(modeles);

var erreurs=new Array();
erreurs[0]="MsgErrCPAbsent|http://www.desjardinsassurancesgenerales.com/%VAR%/%LNG%/pages-systemes/Pages/message-erreur-cp.aspx?ColMsg=MsgErrCPAbsent&CodPost=%CP%|http://www.desjardinsassurancesgenerales.com/%VAR%/%LNG%/system-pages/Pages/error-message-cp.aspx?ColMsg=MsgErrCPAbsent&CodPost=%CP%".split("|");
erreurs[1]="MsgErrCPInvalide|http://www.desjardinsassurancesgenerales.com/%VAR%/%LNG%/pages-systemes/Pages/message-erreur-cp.aspx?codepostal=%CP%&la=%LA%&ColMsg=MsgErrCPInvalide&CodPost=%CP%|http://www.desjardinsassurancesgenerales.com/%VAR%/%LNG%/system-pages/Pages/error-message-cp.aspx?codepostal=%CP%&la=%LA%&ColMsg=MsgErrCPInvalide&CodPost=%CP%".split("|");
var scp=new StrategieCodePostalVide(erreurs,true);

    var gestionnaire = new GestionnaireSelectionSoumission;
    gestionnaire.Initialiser(scp,sla);
    return gestionnaire;
})


