function popup(url, w, h, nom, cat) {
  var params;
  var catID;
  var tagger = true;

  //Conserve l'url original pour le popup
  var urlOriginal = url;

  // Nettoyer l'URL.
  url = url.toLowerCase();

  // Tenter de détecter automatiquement la catégorie selon l'url.
  if (cat == undefined || cat == null || cat == '') {
    if (url.indexOf("www.desjardinsassurancesgenerales.com") != -1) {
      cat = "dag-fr";
    }
    else if (url.indexOf("www.desjardinsassurancevie.com/fr") != -1) {
      cat = "dsf-fr";
    }
    else if (url.indexOf("www.agep-gbip.dsf-dfs.com") != -1) {
      cat = "dsf-fr";
    }
    else if (url.indexOf("www.sflassuranceplacement.ca") != -1) {
      cat = "dsf-fr";
    }
    else if (url.indexOf("www.desjardinsassurancevie.com") != -1) {
      cat = "dsf-fr";
    }
    else if (url.indexOf("www.assurancevoyagedesjardins.ca") != -1) {
      cat = "dsf-fr";
    }
    else if (url.indexOf("www.desjardinsassurancevie.com/en") != -1) {
      cat = "dsf-en";
    }
    else if (url.indexOf("www.desjardinslifeinsurance.com") != -1) {
      cat = "dsf-en";
    }
    else if (url.indexOf("www.dfsinvestmentinsurance.ca") != -1) {
      cat = "dsf-en";
    }
    else if (url.indexOf("www.desjardinstravelinsurance.ca") != -1) {
      cat = "dsf-en";
    }
    else if (url.indexOf("accesd.desjardins.com/fr") != -1) {
      cat = "adp-fr";
    }
    else if (url.indexOf("accesd.desjardins.com/en") != -1) {
      cat = "adp-en";
    }
    else if (url.indexOf("accesd.affaires.desjardins.com/fr") != -1) {
      cat = "ada-fr";
    }
    else if (url.indexOf("accesd.affaires.desjardins.com/en") != -1) {
      cat = "ada-en";
    }
    else if (url.indexOf("desjardins.taleo.net") != -1) {
      cat = "taleo";
    }
    else if (url.indexOf("https://services") != -1) {
      cat = "formulaires";
    }
    else if (url.indexOf("disnat") != -1) {
      cat = "disnat";
    }
    else if (url.indexOf("vmd") != -1) {
      cat = "vmd";
    }
    else if (url.indexOf(".gestionpriveedesjardins.") != -1) {
      cat = "gestion-privé";
    }
    else if (url.indexOf("fondsdesjardins.com/fr") != -1) {
      cat = "fiducie-fr";
    }
    else if (url.indexOf("fondsdesjardins.com/en") != -1) {
      cat = "fiducie-en";
    }
    else if (url.indexOf("fondsdesjardins") != -1) {
      cat = "fiducie-fr";
    }
    else if (url.indexOf("promocartecadeau.ca") != -1) {
      cat = "visa-fr";
    }
    else if (url.indexOf("giftcardpromo.ca") != -1) {
      cat = "visa-en";
    }
    else if (url.indexOf("cataloguevisad.com") != -1) {
      cat = "visa";
    }
    else if (url.indexOf(".visa.ca") != -1) {
      cat = "visa";
    }
    else if (url.indexOf("www.facebook.com") != -1) {
      cat = "facebook";
    }
    else if (url.indexOf("twitter.com") != -1) {
      cat = "twitter";
    }
    else if (url.indexOf("tva.canoe.ca") != -1) {
      cat = "promo";
    }
    else {
      cat = "autre-fr";
    }
  }

  // Choisir la bonne catégorie et déterminer si nous devons vraiment ajouter un tag Coremetrics.
  switch (cat.toLowerCase()) {
  case "dag-fr":
  case "dag":
    catID = "FRLIENEXTERNEDAG";
    break;

  case "dsf-fr":
  case "dsf":
    catID = "FRLIENEXTERNEDSF";
    break;

  case "fiducie-fr":
  case "fiducie":
    catID = "FRLIENEXTERNEFIDUCIE";
    break;

  case "adp-fr":
  case "adp":
    catID = "FRLIENEXTERNEADP";
    break;

  case "ada-fr":
  case "ada":
    catID = "FRLIENEXTERNEADA";
    break;

  case "autre-fr":
  case "autre":
    catID = "FRLIENEXTERNE";
    tagger = false;
    break;

  case "dag-en":
    catID = "ENLIENEXTERNEDAG";
    break;

  case "dsf-en":
    catID = "ENLIENEXTERNEDSF";
    break;

  case "fiducie-en":
    catID = "ENLIENEXTERNEFIDUCIE";
    break;

  case "adp-en":
    catID = "ENLIENEXTERNEADP";
    break;

  case "ada-en":
    catID = "ENLIENEXTERNEADA";
    break;

  case "autre-en":
    catID = "ENLIENEXTERNE";
    tagger = false;
    break;

  case "pdf":
    catID = "PDF";
    break;

  case "taleo":
    catID = "FRLIENEXTERNETALEO";
    break;

  case "formulaires":
    catID = "FRLIENEXTERNEFORMULAIRESNOTES";
    break;

  case "disnat":
    catID = "FRLIENEXTERNEDISNAT";
    break;

  case "vmd":
    catID = "FRLIENEXTERNEVMD";
    break;

  case "gestion-privé":
    catID = "FRLIENEXTERNEGESTIONPRIVE";
    break;

  case "visa-fr":
  case "visa":
    catID = "FRLIENEXTERNEVISA";
    break;

  case "visa-en":
    catID = "ENLIENEXTERNEVISA";
    break;

  case "facebook":
    catID = "FRLIENEXTERNEFACEBOOK";
    break;

  case "twitter":
    catID = "FRLIENEXTERNETWITTER";
    break;

  case "promo":
    catID = "FRLIENEXTERNE";
    break;

  default:
    catID = "FRLIENEXTERNE";
    tagger = false;
    break;
  }

  // Cas spéciales pour les PDF sur nos sites.
  if ((url.charAt(0) == "/" || url.indexOf(".desjardins.com") != -1) && url.indexOf(".pdf") != -1) {
    catID = "PDF";
    tagger = true;
  }

  try {
    if (tagger == true && typeof (cmCreateManualPageviewTag) == "function") {
      cmCreateManualPageviewTag(url, catID, url, window.location.href, null);
      _gaq.push(['_trackPageview', url]);
    }

    if (tagger == true && typeof (cmCreateConversionEventTag) == "function" && catID == "FRLIENEXTERNEFORMULAIRESNOTES") {
      cmCreateConversionEventTag(url, '2', 'Appels aux formulaires', '0', window.location.href);

      var re = new RegExp("services\.desjardins\.com\/(.+)\/(.+).nsf\/.*&(ep|TP|t|id)=([A-Za-z0-9_]+)", "i");
      var ma = url.match(re);
      if (ma == null) {
        re = new RegExp("services\.desjardins\.com\/(.+)\/(.+).nsf", "i");
        ma = url.match(re);
        _gaq.push(['_trackEvent', ma[1], ma[2]]);

        // Some simple code to create a fake order ID
        var timeObj = new Date;
        var unixTimeMs = timeObj.getTime();
        var orderID = parseInt(unixTimeMs / 100);
        var sku = ma[2];
        var orderRevenue = "1";
        if (sku == "formcaisses-5") {
          orderRevenue = "100";
        }
        
        _gaq.push(['_addItem', orderID,  // order ID - necessary to associate item with transaction
        sku,                             // SKU/code - required
        sku,                             // product name - necessary to associate revenue with product
        ma[1],                           // category or variation
        orderRevenue,                    // unit price - required
        '1'                              // quantity - required
        ]);

        _gaq.push(['_addTrans', orderID, // order ID - required
        'FCDQ',                          // affiliation or store name
        orderRevenue,                    // total - required
        '0',                             // tax
        '0',                             // shipping
        '',                              // city
        '',                              // state or province
        ''                               // country
        ]);

        _gaq.push(['_trackTrans']);
      }
      else {
        _gaq.push(['_trackEvent', ma[1], ma[2] + '-' + ma[4]]);

        // Some simple code to create a fake order ID
        var timeObj = new Date;
        var unixTimeMs = timeObj.getTime();
        var orderID = parseInt(unixTimeMs / 100);
        var sku = ma[2] + '-' + ma[4];
        var orderRevenue = "1";
        if (sku == "formcaisses-5") {
          orderRevenue = "100";
        }

        _gaq.push(['_addItem', orderID,  // order ID - necessary to associate item with transaction
        sku,                             // SKU/code - required
        sku,                             // product name - necessary to associate revenue with product
        ma[1],                           // category or variation
        orderRevenue,                    // unit price - required
        '1'                              // quantity - required
        ]);

        _gaq.push(['_addTrans', orderID, // order ID - required
        'FCDQ',                          // affiliation or store name
        orderRevenue,                    // total - required
        '0',                             // tax
        '0',                             // shipping
        '',                              // city
        '',                              // state or province
        ''                               // country
        ]);

        _gaq.push(['_trackTrans']);
      }
    }
  }
  catch (e) {
    // Ne rien faire.
  }

  if (nom) {
    fenetre = nom;
  }
  else if (window.name == "popup") {
    fenetre = "popup2";
  }
  else {
    fenetre = "popup";
  }

  params = "toolbar=yes,menubar=yes,location=yes,status=yes,scrollbars=yes,resizable=yes";

  if (w && h) params += ",width=" + w + ",height=" + h;
  else params += ",width=800,height=600";

  newwindow = window.open(urlOriginal, fenetre, params);
  if (window.focus) {
    newwindow.focus();
  }
}

/* Fonction d'ouverture de PDF - ajoute automatiquement la catégorie PDF pour coremetrics*/

function pdf(url, w, h, nom) {
  popup(url, w, h, nom, 'PDF');
}


/* Ouverture du nouveau localisateur dans une nouvelle fenêtre */

function localisateur(url, submit) {

  //
  //   Rep
  //
  if (submit != undefined && !submit && document.getElementById("agent").checked) { // lien recherche avancée
    // sera utiliser sur la page d accueil (bloc de recherche)
    // url = "recherche/index_rep.jsp";
    // popup(url, 790, 450, 'representant');
    url = "votre_caisse/index.jsp?nRdTypeRech=1";
    popup(url, 790, 450, 'localisateur');
  }
  else if (submit != undefined && submit && document.getElementById("agent").checked) {
    // sera utiliser sur la page d accueil (bloc de recherche)
    var param = document.getElementById("postal").value;
    url = "recherche/index_rep.jsp?userChoix=cp&userCP=" + param;
    popup(url, 790, 450, 'representant');
  }
  //
  //   Caisse
  //
  else {

    //url = "/votre_caisse/index.jsp?nRdTypeRech=0";
    if (getUrlParam('nRdTypeRech', url) === 0) { // si nRdTypeRech pas deja dans les param
      url = url + (url.indexOf('?') > -1 ? '&' : '?') + 'nRdTypeRech=0';
    }
    popup(url, 790, 450, 'localisateur');
    if (submit) {
      document.formLocalisateur.target = 'localisateur';
      document.formLocalisateur.submit();
    }
  }
}

/* Fonction d'ouverture des cartes du localisateur; utilisée dans fichescaisses pour les liens carte géographique  */

function map(url) {
  newwindow = window.open(url, 'map', 'height=605,width=635,scrollbars=no');
  if (window.focus) {
    newwindow.focus()
  }
}

/* Fonction d'ouverture du quiz de coopmoi  */

function quizIndice(url) {
  newwindow = window.open(url, 'quiz', 'height=625,width=820,toolbar=no,menubar=no,location=no,status=no,scrollbars=no,resizable=no');
  if (window.focus) {
    newwindow.focus()
  }
}

/* Fonction pour ouvrir le site mobile  */

function mobile(url) {
  newwindow = window.open(url, 'mobile', 'location=yes,toolbar=yes,menubar=no,height=535,width=380,scrollbars=yes,resizable=yes');
  if (window.focus) {
    newwindow.focus()
  }
}

/* Fonction pour ouvrir les lecteurs video indépendants du blogue */

function video(url, w, h) {
  var params = "toolbar=no,menubar=no,scrollbars=yes,resizable=yes";
  if (w && h) {
    params += ",width=" + w + ",height=" + h;
  }
  else if (w == "hr") {
    params += ",width=1010,height=896";
  }
  else {
    params += ",width=966,height=830";
  }
  newwindow = window.open(url, "video", params);
  if (window.focus) {
    newwindow.focus();
  }
}

/*
La fonction video_hr est désuette, la fonction video a été modifiée pour inclure la haute résolution;
une fois que les appels de video_hr(this.href) seront remplacés par des appels de video(this.href, 'hr') cette fonction peut être effacée
*/

function video_hr(url, w, h) {
  if (w && h) video(url, w, h);
  else video(url, 'hr');
}

function info(url, w, h) {
  params = "toolbar=no,menubar=no,scrollbars=yes,resizable=yes";
  if (w && h) params += ",width=" + w + ",height=" + h;
  else params += ",width=800,height=600";
  window.open(url, "info", params);
}

function aide(url, w, h) {
  params = "toolbar=no,menubar=no,scrollbars=yes,resizable=yes";
  if (w && h) params += ",width=" + w + ",height=" + h;
  else params += ",width=480,height=360";
  newwindow = window.open(url, "aide", params);
  if (window.focus) {
    newwindow.focus();
  }
}

function imprimer() {
  params = "toolbar=yes,menubar=yes,scrollbars=yes,resizable=yes,width=800,height=600,left=10,top=10";
  if (url_page.indexOf("?") > 0) url = url_page + "&format=print";
  else url = url_page + "?format=print";
  window.open(url, "imprimer", params);
}

function envoyer(lang) {
  params = "toolbar=no,menubar=no,scrollbars=yes,resizable=yes,width=740,height=450,left=10,top=10";
  if (lang == "en") url = "https://services.desjardins.com/liens/urls_a_referer.nsf/newCourriel?openform&frame=non&mt=COURRIEL_EN&u=" + "http://www.desjardins.com" + url_page + "&titre=" + escape(htmlToAccent(titre_page));
  else url = "https://services.desjardins.com/liens/urls_a_referer.nsf/newCourriel?openform&frame=non&mt=COURRIEL_FR&u=" + "http://www.desjardins.com" + url_page + "&titre=" + escape(htmlToAccent(titre_page));
  window.open(url, "envoyer", params);
}

function evaluer(cle, lang) {
  params = "toolbar=no,menubar=no,scrollbars=yes,resizable=yes,width=800,height=600,left=10,top=10,location=yes";
  titre_page = titre_page.replace(/&amp;/g, "%26");
  if (lang == "en") url = "http://wwwc1.desjardins.com/en/evaluer/index.jsp" + "?cle=" + cle + "&url=" + url_page + "&titre=" + titre_page;
  else url = "http://wwwc1.desjardins.com/fr/evaluer/index.jsp" + "?cle=" + cle + "&url=" + url_page + "&titre=" + titre_page;
  window.open(url, "evaluer", params);
}

function MM_swapImgRestore() { //v3.0
  var i, x, a = document.MM_sr;
  for (i = 0; a && i < a.length && (x = a[i]) && x.oSrc; i++) x.src = x.oSrc;
}

function MM_preloadImages() { //v3.0
  var d = document;
  if (d.images) {
    if (!d.MM_p) d.MM_p = new Array();
    var i, j = d.MM_p.length,
      a = MM_preloadImages.arguments;
    for (i = 0; i < a.length; i++)
    if (a[i].indexOf("#") != 0) {
      d.MM_p[j] = new Image;
      d.MM_p[j++].src = a[i];
    }
  }
}

function MM_findObj(n, d) { //v4.0
  var p, i, x;
  if (!d) d = document;
  if ((p = n.indexOf("?")) > 0 && parent.frames.length) {
    d = parent.frames[n.substring(p + 1)].document;
    n = n.substring(0, p);
  }
  if (!(x = d[n]) && d.all) x = d.all[n];
  for (i = 0; !x && i < d.forms.length; i++) x = d.forms[i][n];
  for (i = 0; !x && d.layers && i < d.layers.length; i++) x = MM_findObj(n, d.layers[i].document);
  if (!x && document.getElementById) x = document.getElementById(n);
  return x;
}

function MM_swapImage() { //v3.0
  var i, j = 0,
    x, a = MM_swapImage.arguments;
  document.MM_sr = new Array;
  for (i = 0; i < (a.length - 2); i += 3)
  if ((x = MM_findObj(a[i])) != null) {
    document.MM_sr[j++] = x;
    if (!x.oSrc) x.oSrc = x.src;
    x.src = a[i + 2];
  }
}

function compteur(url, pop, w, h) {
  url += document.location.href;
  if (pop) {
    params = "toolbar=yes,menubar=yes,location=yes,status=yes,scrollbars=yes,resizable=yes";
    if (w && h) params += ",width=" + w + ",height=" + h;
    else params += ",width=600,height=450";
    window.open(url, "popup", params);
  }
  else window.location = url;
}

// fonction pour vérifier présence d'un paramètre dans l'URL de la page et retourner la valeur de ce paramètre s'il est présent sinon 0

function getUrlParam(name, url) {
  var results = new RegExp('[\\?&]' + name + '=([^&#]*)').exec(url);
  // retourne 0 (false) si le paramètre n'est pas présent dans l'URL
  if (!results) {
    return 0;
  }
  // sinon, on retourne la valeur du paramètre (ou 0 si celui == null) 
  return results[1] || 0;
}

// Remplace dans une chaine toutes les occurrences de str1 par str2

function remplace(chaine, str1, str2) {
  while (chaine.indexOf(str1) != -1)
  chaine = chaine.replace(str1, str2);
  return chaine;
}

// Remplace dans une chaîne les entités html par le caractère accentué ou spécial équivalent

function htmlToAccent(chaine) {
  var html = new Array("&amp;", "&lt;", "&gt;", "&agrave;", "&Agrave;", "&acirc;", "&Acirc;", "&eacute;", "&Eacute;", "&egrave;", "&Egrave;", "&ecirc;'", "&Ecirc;", "&euml;", "&Euml;", "&icirc;", "&Icirc;", "&iuml;", "&Iuml;", "&ocirc;", "&Ocirc;", 
"&ugrave;", "&Ugrave", "&ucirc;", "&Ucirc;", "&uuml;", "&Uuml;", "&ccedil;", "&Ccedil;", "&quot;", "&laquo;", "&raquo;", "&nbsp;", "&ndash;", "&mdash;", "&hellip;", "’");
  var accent = new Array("&", "<", ">", "à", "À", "â", "Â", "é", "É", "è", "È", "ê", "Ê", "ë", "Ë", "î", "Î", "ï", "Ï", "ô", "Ô", "ù", "Ù", "û", "Û", "ü", "Ü", "ç", "Ç", "\"", "«", "»", " ", "–", "—", "...", "'");
  for (var i = 0; i < html.length; i++) {
    if (chaine.indexOf(html[i]) != -1) chaine = remplace(chaine, html[i], accent[i]);
  }
  return chaine;
}

function LireCookie(cookieName) {
  try {
    var theCookie = "" + document.cookie;
    var ind = theCookie.indexOf(cookieName + "=");
    if (ind == -1 || cookieName == "") return "";
    var ind1 = theCookie.indexOf(";", ind);
    if (ind1 == -1) ind1 = theCookie.length;
    return unescape(theCookie.substring(ind + cookieName.length + 1, ind1));
  }
  catch (e) {
    return "";
  }
}

function isNumber(n) {
  return !isNaN(parseFloat(n)) && isFinite(n);
}

function gaGetVCount() {
  try {
    var c = LireCookie('__utma');
    var p = /(.+)\.(.+)\.(.+)\.(.+)\.(.+)\.(.+)/;
    var ar = p.exec(c);
    if (ar && ar[6] && isNumber(ar[6])) return ar[6];
    else return -1;
  }
  catch (e) {
    return -1;
  }
}

function gaGetPVCount() {
  try {
    var c = LireCookie('__utmb');
    var p = /(.+)\.(.+)\.(.+)\.(.+)/;
    var ar = p.exec(c);
    if (ar && ar[2] && isNumber(ar[2])) return ar[2];
    else return -1;
  }
  catch (e) {
    return -1;
  }
}

function gaGetCV(a_sName) {
  try {
    var c = LireCookie('__utmv');
    var rx = new RegExp('=' + a_sName + '=(.+)=', 'i');
    var ar = rx.exec(c);
    if (ar && ar[1]) return ar[1];
    else return "";
  }
  catch (e) {
    return "";
  }
}

