//
// show/hide tooltip:
// tooltips must be created as DIV elements named as tt<number>:
//
//  <div CLASS="classTooltip" ID="tt1">
//    On considère une nouvelle visite pour <b>chaque arrivée</b>
//    d'un visiteur consultant une page et ne s'étant pas connecté
//    dans les dernières <b>60 mn</b>.
//  </div>
//
// On Netscape, pass event as argument.
//
// on HTML5 IE standard is used, so NS is false 22-JUN-2010:
//var tooltipIsNS = (navigator.appName.indexOf("Netscape") >= 0);
var tooltipIsNS = false;
//
var tooltipVerMajor = parseInt(navigator.appVersion);

//
// ttx: a number in tt<ttx>
//
var gstrTooltipPrefix = "tt";
//
var gstrDivNameTooltipPhotos = gstrTooltipPrefix + "Photos";
var gstrInitialInnerHTML = "";
//
// AJAX:
//
var gobjttxhr = null;
var gstrttPhotosImagePath = "";

//
// get tooltip object according to the div ID:
//
function ttGetTooltipObjectByID(strID)
{
  var tooltipOBJ;
//
// Netscape 4 or less:
//
  if(tooltipIsNS && tooltipVerMajor <= 4)
  {
    tooltipOBJ = eval("document.layers['" + strID + "']");
  }
//
//  IE 4 or above, Netscape 6:
//
  else
  {
//
//  NS 6:
//
    if(tooltipIsNS)
    {
      tooltipOBJ = document.getElementById(strID);
    }
//
//  IE:
//
    else
    {
      tooltipOBJ = eval("document.all['" + strID + "']");
    }  
  }  
//
  return tooltipOBJ;
}

//
// get tooltip object according to the div ID:
//
function ttGetTooltipNameByNumber(ttx)
{
  return gstrTooltipPrefix + ttx;
}

//
// get tooltip object according to the div ID:
//
function ttGetTooltipObject(ttx)
{
  return ttGetTooltipObjectByID(ttGetTooltipNameByNumber(ttx));
}
 
//
// show tooltip object according to the number:
//
function ttShowTooltipByID(strID, evt)
{
  var tooltipOBJ = ttGetTooltipObjectByID(strID);
//
// nothing to do if no object:
//
  if(tooltipOBJ == null)
  {
    return;
  }
//
  var tooltipWidthMin = 200;
  var tooltipHeightMin = 200;
  var testLeft, tooltipAbsLft;
  var testTop, tooltipAbsTop;
  var xmax, IsXCorrected;
//
// Netscape:
//
  if(tooltipIsNS)
  {
    testLeft = evt.pageX + 1;
/*
    xmax = window.innerWidth - tooltipWidthMin;
    if(testLeft > xmax)
    {
      tooltipAbsLft = xmax;
      IsXCorrected = true;
    }
    else
    {
      tooltipAbsLft = testLeft;
      IsXCorrected = false;
    }
 */
    tooltipAbsLft = testLeft;
//
    testTop = evt.pageY + 1;
/*
    xmax = window.innerHeight - tooltipHeightMin;
    if((! IsXCorrected) && (testTop > xmax))
    {
alert("NS: height=" + window.innerHeight + ", " + tooltipHeightMin + "testTop=" + testTop);
      tooltipAbsTop = xmax;
    }
    else
    {
      tooltipAbsTop = testTop;
    }
 */
    tooltipAbsTop = testTop;
//
    tooltipOBJ.style.left = tooltipAbsLft;
    tooltipOBJ.style.top = tooltipAbsTop;
//
//  Netscape 4 or less:
//
    if(tooltipVerMajor <= 4)
    {
      tooltipOBJ.visibility = "show";
    }
//
//  NS 6:
//
    else
    {
      tooltipOBJ.style.visibility = "visible";
    }
  }
//
// IE 4 or above:
//
  else
  {
//
//  get .pageX and .pageY equivalences on IE:
//
/*
    testLeft = event.x + 1;
    xmax = document.body.scrollWidth - tooltipWidthMin;
//  xmax = window.document.body.offsetWidth - tooltipWidthMin;
    if(testLeft > xmax)
    {
      tooltipAbsLft = xmax;
      IsXCorrected = true;
    }
    else
    {
      tooltipAbsLft = testLeft;
      IsXCorrected = false;
    }
    tooltipAbsLft = document.body.scrollLeft + tooltipAbsLft;
 */
//
    tooltipAbsLft = document.body.scrollLeft + event.clientX + 1;
/*
    testTop = event.y + 1;
    xmax = document.body.scrollHeight - tooltipHeightMin;
//  xmax = window.document.body.offsetHeight - tooltipHeightMin;
    if((! IsXCorrected) && (testTop > xmax))
    {
      tooltipAbsTop = xmax;
    }
    else
    {
      tooltipAbsTop = testTop;
    }
    tooltipAbsTop = document.body.scrollTop + tooltipAbsTop;
 */
//
    tooltipAbsTop = document.body.scrollTop + window.event.clientY + 1;
//
    tooltipOBJ.style.posLeft = tooltipAbsLft;
    tooltipOBJ.style.posTop = tooltipAbsTop;
    tooltipOBJ.style.visibility = "visible";
//
  }
}

//
// show tooltip object according to the number:
//
function ttShowTooltip(ttx, evt)
{
  return ttShowTooltipByID(ttGetTooltipNameByNumber(ttx), evt);
}

function ttShowTooltip0(ttx, evt)
{
  var tooltipOBJ = ttGetTooltipObject(ttx);
  var topSmallest = 50;
//
// Netscape 4 or less:
//
  if(tooltipIsNS && tooltipVerMajor <= 4)
  {
    var testTop = evt.pageY - 230;
    var testLeft = evt.pageX - 310;
    var tooltipAbsLft = (testLeft < 0) ? 10 : testLeft;
    var tooltipAbsTop = (testTop < 0) ? topSmallest : testTop;
    tooltipOBJ.left = tooltipAbsLft;
    tooltipOBJ.top = tooltipAbsTop;
    tooltipOBJ.visibility = "show";
  }
//
// IE 4 or above, Netscape 6:
//
  else
  {
//
//  NS 6:
//
    if(tooltipIsNS)
    {    
      var testTop = evt.pageY - 230;
      var testLeft = evt.pageX - 310;
      var tooltipAbsLft = (testLeft < 0) ? 10 : testLeft;
      var tooltipAbsTop = (testTop < 0) ? topSmallest : testTop;
      tooltipOBJ.style.left = tooltipAbsLft;
      tooltipOBJ.style.top = tooltipAbsTop;
    }
//
//  IE:
//
    else
    {
      var tooltipOffsetTop = tooltipOBJ.scrollHeight + 35;
      var testTop = (document.body.scrollTop + event.clientY) - tooltipOffsetTop;
      var testLeft = event.clientX - 310;
      var tooltipAbsLft = (testLeft < 0) ? 10 : testLeft;
      var tooltipAbsTop = (testTop < document.body.scrollTop) ? document.body.scrollTop + topSmallest : testTop;
      tooltipOBJ.style.posLeft = tooltipAbsLft;
      tooltipOBJ.style.posTop = tooltipAbsTop;
    }  
//
    tooltipOBJ.style.visibility = "visible";
//
  }
}

//
// hide tooltip by ID:
//
function ttHideTooltipByID(strID)
{
  var tooltipOBJ = ttGetTooltipObjectByID(strID);
//
// nothing to do if no object:
//
  if(tooltipOBJ == null)
  {
    return;
  }
//
// Netscape 4 or less:
//
  if(tooltipIsNS && tooltipVerMajor <= 4)
  {
    tooltipOBJ.visibility = "hide";
  }
//
// IE 4 or above, Netscape 6:
//
  else
  {
    tooltipOBJ.style.visibility = "hidden";
  }
}

//
// hide tooltip by number:
//
function ttHideTooltip(ttx)
{
  return ttHideTooltipByID(ttGetTooltipNameByNumber(ttx));
}

/*
 * fnc001: replace content of the sub-element txt2Replace:
 */
function ttReplaceContentByID(strID, CountryRef, lang)
{
  var strMsg;
  var xobj;
  xobj = document.getElementById(strID)
  xobj = xobj.document.getElementById("txt2Replace")
//
//alert(xobj.firstChild.data);
//
  strMsg = getCountryInfoLocal(CountryRef, lang);
  xobj.firstChild.data = strMsg;
//
  return 1;
}

/*
 * fnc001: replace content of the sub-element txt2Replace:
 */
function ttReplaceContent(ttx, CountryRef, lang)
{
  return ttReplaceContentByID(ttGetTooltipNameByNumber(ttx), CountryRef, lang);
}

//***********************************************************************
// Tooltip photos                                                       *
//***********************************************************************
//
// get tooltip object photos object:
//
function ttGetTooltipPhotosObject()
{
  return ttGetTooltipObjectByID(gstrDivNameTooltipPhotos);
}

//
// get tooltip object photos:
//
function ttGetTooltipPhotosInnerHTML()
{
  var tooltipOBJ = ttGetTooltipPhotosObject();
//
// nothing to do if no object:
//
  if(tooltipOBJ == null)
  {
    return "";
  }
//
  return tooltipOBJ.innerHTML;
}
//
// set tooltip object photos:
//
function ttSetTooltipPhotosInnerHTML(strHTML)
{
  var tooltipOBJ = ttGetTooltipPhotosObject();
//
// nothing to do if no object:
//
  if(tooltipOBJ == null)
  {
    return;
  }
//
  return tooltipOBJ.innerHTML = strHTML;
}
//
// save tooltip object photos:
//
function ttSaveTooltipPhotosInnerHTML()
{
  gstrInitialInnerHTML = ttGetTooltipPhotosInnerHTML();
  return 1;
}
//
// restore tooltip object photos:
//
function ttRestoreTooltipPhotosInnerHTML()
{
  return ttSetTooltipPhotosInnerHTML(gstrInitialInnerHTML);
}

//
// set tooltip object photos:
//
function ttSetTooltipPhotosImage(strURL)
{
//return ttSetTooltipPhotosInnerHTML("<img src='" + strURL + "' />");
//
// use ajax:
//
  doXhrGetttPhotos(strURL);
//
  return 1;
}

//
// show tooltip object photos:
//
function ttShowTooltipPhotos(strURL, evt)
{
	ttSetTooltipPhotosImage(strURL);
  return ttShowTooltipByID(gstrDivNameTooltipPhotos, evt);
}

//
// hide tooltip photos:
//
function ttHideTooltipPhotos()
{
  return ttHideTooltipByID(gstrDivNameTooltipPhotos);
}

/*
 * fnc001: handle HTTP response:
 */
 function ttHandleHttpResponse()
 {
//
  if(gobjttxhr)
  {
//  if(gobjttxhr.readyState == 4 && gobjttxhr.status == 200)
    if(gobjttxhr.readyState == 4)
    {
      var istatus = gobjttxhr.status;
//
//    alert(strText + " i=" + i);
//
      var strText = "<img src='" + gstrttPhotosImagePath + "' />";
      ttSetTooltipPhotosInnerHTML(strText);
//
    }
  }
}

/*
 * fnc001: doXhrGetttPhotos():
 */
function doXhrGetttPhotos(strURL)
{
//
/*
  if(gobjttxhr == null)
  {
  	ttSaveTooltipPhotosInnerHTML();
    gobjttxhr = getXhrObject();
  }
 */
  if(gstrInitialInnerHTML == "")
  {
  	ttSaveTooltipPhotosInnerHTML();
  }
//
  gobjttxhr = getXhrObject();
/*
 * gobjttxhr OK:
 */
  if(gobjttxhr)
  {
//
    gstrttPhotosImagePath = strURL;
//
//  ttSetTooltipPhotosInnerHTML("Chargement...");
//
    ttRestoreTooltipPhotosInnerHTML();
/*
 * set callback:
 */
    gobjttxhr.onreadystatechange = ttHandleHttpResponse;
/*
 * reading:
 */
    gobjttxhr.open("GET", strURL, true);
/*
 * go request:
 */
//
//  gobjttxhr.setRequestHeader("Content-Type","application/x-www-form-urlencoded");
//  gobjttxhr.setRequestHeader("Content-Encoding", "latin1");
//
    //gobjttxhr.setRequestHeader("Content-Encoding", "utf-8");
    //gobjttxhr.setTimeouts(1);
    gobjttxhr.send(null);
    //
  }
}