/* Javascript code target: _blank */
/* http://www.beniguane.com/javascript/target-blank-valide-w3c-8.html */

/* <a href="http://www.beniguane.com" class="_blank">nouvelle fenêtre</a> */

function addEvent(source, type, callback) {
  
  if (source.addEventListener){        // code standard DOM
    source.addEventListener(type, callback, false);
    return true;
  } else if (source.attachEvent){     // code propriétaire MSIE
    var r = source.attachEvent("on"+type, callback);
    return r;
  } else {            // code navigateur sans support DOM-event
    eval('source.on' + type + '= callback') ;
  }
}
function getStandardEvent(e) {
 if (e == null && window.event) {
   // cas particulier de MSIE pour recuperer l'evenement en cours
   e = window.event ;
 }
 if (e.target == null && e.srcElement) {
   // cas particulier de MSIE pour recuperer la balise DOM cible
   e.target = e.srcElement ;
 }
 if (! e.preventDefault ){
   // cas particulier de MSIE pour empecher l'action par defaut du navigateur
   e.preventDefault = function () { this.returnValue = false ; } ;
 }
 return e ;
}
function openLinkInPopupWhenClick(e) {
    e = getStandardEvent(e)  ;
    var link =  e.target  ;
    var addr = link.getAttribute('href') ;
    // si aucune adressen'est obtenue, on regarde si l'objet parent
    // un lien afin d'obtenir son adresse à la place.
    if(addr == null && link.parentNode.nodeName == 'A')
        link = link.parentNode;
    var addr = link.getAttribute('href') ;

    // avec cette solution on peut soit :
    // - préciser class="_blank_300_200" afin d'ouvrir une popup de 300px sur 200px
    // -préciser class="_blank" pour ouvrir dans un nouvel onglet ou nouvelle fenêtre
    
    var reg = /(_blank|)_(d+)/;
    // dimensions trouvées dans le nom de la classe
    if(reg.test(link.className))
    {
        reg = /(_blank|)_(d+)/;
        var result = link.className.split(reg);
        window.open(addr, '', 'width='+result[2]+',height='+ result[5]);
    }
    // sinon popup standard
    else
    {
        window.open(addr);
    }
   
    e.preventDefault();
    return false ;
}
function prepareTargetBlankLinks() {
  var link, list, i ;
  list = document.getElementsByTagName('a') ;
  for(i=0; i<list.length; i++) {
    link = list.item(i) ;
    if (link.getAttribute('href') && link.className) {
      if (link.className.indexOf('_blank') != -1) {
        addEvent(link, 'click', openLinkInPopupWhenClick) ;
      }
    }
  }
}
addEvent(window, 'load', prepareTargetBlankLinks);
