addEvent(window, "load", makeNiceTitles);

var XHTMLNS = "http://www.w3.org/1999/xhtml";
var CURRENT_NICE_TITLE;
var browser = new Browser();

function makeNiceTitles() {
		/* 11/04/06 si on ne dipose ni de createElement ni de getElementsByTagName */
    if (!document.createElement || !document.getElementsByTagName) return;
    
    /* 11/04/06 si on ne dispose pas de la fonction createElementNS on la prototype */
    if(!document.createElementNS)
    {
        document.createElementNS = function(ns,elt) {
            return document.createElement(elt);
        }
    }

    /* 11/04/06 boucle pour créer au chargement toutes les boucles nicetitle <img> */
    if( !document.imgs )
    {
        document.imgs = document.getElementsByTagName("img");
    }
    /*alert(document.imgs.length);*/
    for (var ti=0;ti<document.imgs.length;ti++) {
        var img = document.imgs[ti];
        if (img.title) {
            img.setAttribute("nicetitle",img.title);
            img.removeAttribute("title");
            addEvent(img,"mouseover",showNiceTitle);
            addEvent(img,"mouseout",hideNiceTitle);
            addEvent(img,"focus",showNiceTitle);
            addEvent(img,"blur",hideNiceTitle);
        }
    }
}

function findPosition( oLink ) {
  if( oLink.offsetParent ) {
    for( var posX = 0, posY = 0; oLink.offsetParent; oLink = oLink.offsetParent ) {
      posX += oLink.offsetLeft;
      posY += oLink.offsetTop;
    }
    return [ posX, posY ];
  } else {
    return [ oLink.x, oLink.y ];
  }
}

function showNiceTitle(e) {
    if (CURRENT_NICE_TITLE) hideNiceTitle(CURRENT_NICE_TITLE);
    if (!document.getElementsByTagName) return;
    if (window.event && window.event.srcElement) {
        lnk = window.event.srcElement
    } else if (e && e.target) {
        lnk = e.target
    }
    if (!lnk) return;
    
    /* test pour reconnaitre à partir de name que l'on est sur une image */
    var rec_img = lnk.name.search(/img_.+/);
    
    if (lnk.nodeType == 3) {
        // lnk is a textnode -- ascend parents until we hit a link
        if (rec_img == -1) lnk = getParent(lnk,"A");
        else lnk = getParent(lnk,"IMG");
    }
   	
    if (!lnk) return;
    
    //if (rec_img == -1) nicetitle = lnk.firstChild.nodeValue;
    if (rec_img == -1) return false;
    else nicetitle = lnk.getAttribute("alt");
    
		nicedetails = lnk.getAttribute("nicetitle");
		niceid = lnk.getAttribute("id");
		

    var d = document.createElementNS(XHTMLNS,"div");
    d.className = "nicetitle";
    
    /* NICOWEB 10/04/2006 ::  ajout de l'icone de la petite main */
    var imgMainPetite = document.createElementNS(XHTMLNS,"img");
    imgMainPetite.src = "img/mainPetite48_logo.png";
    
    var imgPhotoMini = document.createElementNS(XHTMLNS,"img");
    imgPhotoMini.src = "http://www.photocomptoir.com/banque/include/photo.miniature.buffer.php?ti="+niceid+"";
    imgPhotoMini.style.width='24px';
    imgPhotoMini.style.height='24px';
    imgPhotoMini.style.marginLeft='20px';
    imgPhotoMini.style.marginBottom='2px';
    imgPhotoMiniRetour = document.createElementNS(XHTMLNS,"br");
    
		tnt = document.createTextNode(nicetitle);
    
    pat0 = document.createElementNS(XHTMLNS,"p");
    pat0.className = "titletext";
    pat0.appendChild(imgPhotoMini);
    pat0.appendChild(imgPhotoMiniRetour);
    pat0.appendChild(imgMainPetite);
    pat0.appendChild(tnt);
    
    
    pat = document.createElementNS(XHTMLNS,"p");
    pat.className = "niceMotCles";
    
    /* NICOWEB 30/03/2006 : adaptation au script Photocomptoir => title composé de plusieurs lignes identifiées par des retours chariots \n */
    var t_nice = nicedetails.split("\n");
    for (i=0;i<t_nice.length;i++)
    {
    		pat.appendChild(document.createElementNS(XHTMLNS,"br"));
    		if (i < 2) pat.appendChild(document.createTextNode(t_nice[i]));
    		else
    		{
    				var t_mcles = t_nice[i].split(';'); var cpt = 0; var nb_tour = 0;
    				
    				for (var a=0;a<(t_mcles.length-1);a++)
    				{
    						//alert(t_mcles[a]);
    						if (a == (t_mcles.length-2)) { pat.appendChild(document.createTextNode(t_mcles[a])); cpt++; }
    						else if (cpt == 0 && nb_tour == 0) { pat.appendChild(document.createTextNode(t_mcles[a])); cpt++; }
    						else if (cpt == 0 && nb_tour > 0) { pat.appendChild(document.createTextNode(t_mcles[a])); pat.appendChild(document.createTextNode(", ")); cpt++; }
    						else if (cpt < 7 && cpt > 0) { pat.appendChild(document.createTextNode(t_mcles[a])); pat.appendChild(document.createTextNode(", ")); cpt++; }
    						else 
    						{ 
    							pat.appendChild(document.createElementNS(XHTMLNS,"br")); 
    							pat.appendChild(document.createTextNode(t_mcles[a])); 
    							if (nb_tour == 0) { pat.appendChild(document.createTextNode(", ")); nb_tour++; }
    							else nb_tour++;
    							cpt=0; 
    						}
    				}
    		}
    }
    
    d.appendChild(pat0);
    d.appendChild(pat);
    if (lnk.href) {
        tnd = document.createTextNode(lnk.href);
        pad = document.createElementNS(XHTMLNS,"p");
        pad.appendChild(tnd);
        d.appendChild(pad);
    }
    
    STD_WIDTH = 300;
    if (lnk.href) {
        h = lnk.href.length;
    } else { h = nicetitle.length; }
    if (nicetitle.length) {
      t = nicetitle.length;
    }
    
    
    h_pixels = h*6; t_pixels = t*10;
    
    if (h_pixels > STD_WIDTH) {
        w = h_pixels;
    } else if ((STD_WIDTH>t_pixels) && (t_pixels>h_pixels)) {
        w = t_pixels;
    } else if ((STD_WIDTH>t_pixels) && (h_pixels>t_pixels)) {
        w = h_pixels;
    } else {
        w = STD_WIDTH;
    }
    
    /* NICOWEB 10/04/2006 correction pour permettre l'affichage en entier des urls vers les fiches infos des photos */    
    //d.style.width = w + 'px';    
    //d.style.width = w+25 + 'px';    
    d.style.width = 300+25 + 'px';
    d.style.border = '#333333 1px solid';
    /*
    mx = lnk.offsetLeft;
    my = lnk.offsetTop;
    */
    mpos = findPosition(lnk);
    mx = mpos[0];
    my = mpos[1];
    //xy = getMousePosition(e);
    //mx = xy[0]; my = xy[1];
    
    d.style.left = (mx+5) + 'px';
    d.style.top = (my+82) + 'px';
    if (window.innerWidth && ((mx+w) > window.innerWidth)) {
        d.style.left = (window.innerWidth - w - 25) + "px";
    }
    if (document.body.scrollWidth && ((mx+w) > document.body.scrollWidth)) {
        d.style.left = (document.body.scrollWidth - w - 25) + "px";
    }
    
    document.getElementsByTagName("body")[0].appendChild(d);
    
    CURRENT_NICE_TITLE = d;
}

function hideNiceTitle(e) {
    if (!document.getElementsByTagName) return;
    if (CURRENT_NICE_TITLE) {
        document.getElementsByTagName("body")[0].removeChild(CURRENT_NICE_TITLE);
        CURRENT_NICE_TITLE = null;
    }
}

// Add an eventListener to browsers that can do it somehow.
// Originally by the amazing Scott Andrew.
function addEvent(obj, evType, fn){
  if (obj.addEventListener){
    obj.addEventListener(evType, fn, true);
    return true;
  } else if (obj.attachEvent){
	var r = obj.attachEvent("on"+evType, fn);
    return r;
  } else {
	return false;
  }
}

function getParent(el, pTagName) {
	if (el == null) return null;
	else if (el.nodeType == 1 && el.tagName.toLowerCase() == pTagName.toLowerCase())	// Gecko bug, supposed to be uppercase
		return el;
	else
		return getParent(el.parentNode, pTagName);
}

function getMousePosition(event) {
  if (browser.isIE) {
    x = window.event.clientX + document.documentElement.scrollLeft
      + document.body.scrollLeft;
    y = window.event.clientY + document.documentElement.scrollTop
      + document.body.scrollTop;
  }
  if (browser.isNS) {
    x = event.clientX + window.scrollX;
    y = event.clientY + window.scrollY;
  }
  return [x,y];
}

// Determine browser and version.

function Browser() {
// blah, browser detect, but mouse-position stuff doesn't work any other way
  var ua, s, i;

  this.isIE    = false;
  this.isNS    = false;
  this.version = null;

  ua = navigator.userAgent;

  s = "MSIE";
  if ((i = ua.indexOf(s)) >= 0) {
    this.isIE = true;
    this.version = parseFloat(ua.substr(i + s.length));
    return;
  }

  s = "Netscape6/";
  if ((i = ua.indexOf(s)) >= 0) {
    this.isNS = true;
    this.version = parseFloat(ua.substr(i + s.length));
    return;
  }

  // Treat any other "Gecko" browser as NS 6.1.

  s = "Gecko";
  if ((i = ua.indexOf(s)) >= 0) {
    this.isNS = true;
    this.version = 6.1;
    return;
  }
}


