// ************************************************
// gestion onload et onunload
// ************************************************
function GalleryMouseMoveHandler(e) {
  if(bGblMenuPopupVisible == false) {
    iPosX = positionX(e);
    iPosY = positionY(e);
    var objImg  = document.getElementById("image_img");
    aObjImg = findPos("image_img");
    if(ImageObjInside(iPosX, iPosY) == true) {
      ImagePopupShow(iPosX, iPosY);
    }
    else {
      ImagePopupHide();
    }
  }
}

var sGblChapter   = "";
var sGblSection   = "";
var sGblGallery   = "";
var iGblQuantity  = 0;
var iGblThumbnail = 0;

function GalleryInit(sChapter, sSection, sGallery, iQuantity, iThumbnail) {
  sCookieValue = ReadCookie("menu");
  if(sCookieValue != null) {
    if(sCookieValue.search("menu:false") != -1) { bGblMenuvisible = true; MenuVisible(); }
    if(sCookieValue.search("menu:true") != -1) { bGblMenuvisible = false; MenuVisible(); } // on le fait tout de même apparaître
  }
  sCookieValue = ReadCookie("gallery");
  if(sCookieValue != null) {
    if(sCookieValue.search("thumbnail:false") != -1) { bGblThumbnailVisible = true; ThumbnailVisible(); }
  }

  if (document.layers)
    document.captureEvents(Event.MOUSEMOVE);
  if (document.layers || document.all)
    document.onmousemove = GalleryMouseMoveHandler;
  if (document.addEventListener)
    document.addEventListener('mousemove', GalleryMouseMoveHandler, true);

  sGblChapter   = sChapter;
  sGblSection   = sSection;
  sGblGallery   = sGallery;
  iGblQuantity  = iQuantity;
  iGblThumbnail = iThumbnail;
  
  bGblPageLoaded = true;
}

function GalleryQuit() {
  CreateCookie("menu", "menu:" + bGblMenuvisible, 15);
  CreateCookie("gallery", "thumbnail:" + bGblThumbnailVisible, 15);
}

// ************************************************
// gestion du chargement des imagettes par XMLHttpRequest
// ************************************************
function stateNavigationLoaded() {
  if (xmlHttp.readyState == 4) {
    document.getElementById("thumbnail").innerHTML = xmlHttp.responseText;
    document.getElementById("navigation_number").innerHTML = document.getElementById("navigation_number_hidden").innerHTML;
    NavigationDisplay();
  }
}
function AjaxLoadNavigation(sType, sChapter, sSection, sGallery, iPageId, iMaxPage) {
  document.getElementById("thumbnail").innerHTML = "<div class=\"ajax_loader\" ><img class=\"ajax_loader_img\" src=\"image/ajax-loader.gif\" alt=\"loading\" /></div>";

  NavigationInit(iPageId, iMaxPage);
  switch(sType) {
    case "first":
      iPageId = 1;
      break;    
    case "previous":
      iPageId = iGblCurrentPage - 1;
      break;    
    case "next":
      iPageId = iGblCurrentPage + 1;
      break;    
    case "last":
      iPageId = iGblMaxPage;
      break;    
  }
  
  iGblCurrentPage = iPageId;
  
  xmlHttp=GetXmlHttpObject();
  if (xmlHttp==null) {
    alert("Your browser does not support AJAX!");
    return;
  }
  var url = "common/ajax.php";
  url = url + "?fn=LoadNavigation";
  url = url + "&c=" + sChapter;
  url = url + "&s=" + sSection;
  url = url + "&g=" + sGallery;
  url = url + "&p=" + iPageId;
  url = url + "&id=" + Math.random();
  xmlHttp.onreadystatechange = stateNavigationLoaded;
  xmlHttp.open("GET", url, true);
  xmlHttp.send(null);
}

// ************************************************
// gestion des related pics (keyword)
// ************************************************
var bGblRelatedVisible        = false;
var sGblRelatedShowText       = "show related pics";
var sGblRelatedHideText       = "hide related pics";
var bGblRelatedFilled         = false;
function RelatedVisible() {
  if(bGblRelatedVisible == true) {
    document.getElementById("related_pic_result").style.display = "none";
    document.getElementById("related_pic").innerHTML            = sGblRelatedShowText + " :.";
    document.getElementById("related_pic").title                = sGblRelatedShowText;
    bGblRelatedVisible = false;
  }
  else {
    document.getElementById("related_pic").innerHTML            = sGblRelatedHideText + " :.";
    document.getElementById("related_pic").title                = sGblRelatedHideText;
    document.getElementById("related_pic_result").style.display = "block";
    bGblRelatedVisible = true;
  }
}

function stateRelatedPicLoaded() {
  if (xmlHttp.readyState == 4) {
    document.getElementById("related_pic_result").innerHTML = xmlHttp.responseText;
    bGblRelatedFilled = true;
  }
}
function AjaxLoadRelatedPic(sGalleryId, sKeyword) {
  sKeyword = sKeyword.replace("&", "¤and¤");
  sKeyword = sKeyword.replace("?", "¤quest¤");

  if (bGblRelatedFilled == false) {
    document.getElementById("related_pic_result").innerHTML = "<div class=\"ajax_loader\" ><img class=\"ajax_loader_img\" src=\"image/ajax-loader.gif\" alt=\"loading\" /></div>";

    xmlHttp=GetXmlHttpObject();
    if (xmlHttp==null) {
      alert("Your browser does not support AJAX!");
      return;
    }
    var url = "common/ajax.php";
    url = url + "?fn=LoadRelatedPic";
    url = url + "&o=" + sGalleryId;
    url = url + "&k=" + sKeyword;
    url = url + "&id=" + Math.random();
    xmlHttp.onreadystatechange = stateRelatedPicLoaded;
    xmlHttp.open("GET", url, true);
    xmlHttp.send(null);
  }
  RelatedVisible();
}

// ************************************************
// gestion des stats
// ************************************************
function stateGalleryImageStatsLoaded() {
  if (xmlHttp.readyState == 4) {
  }
}
function GalleryImageStats() {
  xmlHttp=GetXmlHttpObject();
  if (xmlHttp==null) {
    alert("Your browser does not support AJAX!");
    return;
  }
  var url = "common/ajax.php";
  url = url + "?fn=GalleryImageStats";
  url = url + "&c=" + sGblChapter;
  url = url + "&s=" + sGblSection;
  url = url + "&g=" + sGblGallery;
  url = url + "&id=" + Math.random();
  xmlHttp.onreadystatechange = stateGalleryImageStatsLoaded;
  xmlHttp.open("GET", url, true);
  xmlHttp.send(null);
}

// ************************************************
// gestion "hide/show" imagettes
// ************************************************
var iGblCurrentPage = 0;
var iGblMaxPage     = 0;
function NavigationInit(iPageId, iMaxPage) {
  if(iGblCurrentPage == 0) {
    iGblCurrentPage = iPageId;
    iGblMaxPage     = iMaxPage;
  }
}
function NavigationDisplay() {
  if(iGblCurrentPage == 1) {
    document.getElementById("navigation_first").style.display     = "none";
    document.getElementById("navigation_previous").style.display  = "none";
  }
  else {
    document.getElementById("navigation_first").style.display     = "inline";
    document.getElementById("navigation_previous").style.display  = "inline";
  }
  if(iGblCurrentPage == iGblMaxPage) {
    document.getElementById("navigation_next").style.display = "none";
    document.getElementById("navigation_last").style.display = "none";
  }
  else {
    document.getElementById("navigation_next").style.display = "inline";
    document.getElementById("navigation_last").style.display = "inline";
  }
}

// ************************************************
// gestion affichage du détail d'une imagette
// ************************************************
var sGblThumbId       = "";
var sGblThumbAltText  = "";
var sGblThumbUrl      = "";
var bGblThumbType     = false;
function DisplayThumb(sId, sAltText, sUrl, bType) {
  sGblThumbId      = sId;
  sGblThumbAltText = sAltText;
  sGblThumbUrl     = sUrl;
  bGblThumbType    = bType;
  if(bType == false) {
    document.getElementById("thumbdetail").style.display  = "none";
  }
  else {
    document.getElementById("thumbdetailimg").src         = sUrl + "z" + sId + ".jpg";
    document.getElementById("thumbdetailimg").alt         = sAltText;
    document.getElementById("thumbdetailimg").title       = sAltText;
    var arrayPos       = findPos(sId);
    document.getElementById("thumbdetail").style.top      = arrayPos[1] + "px";
    document.getElementById("thumbdetail").style.left     = arrayPos[0] + "px";
    document.getElementById("thumbdetail").style.display  = "block";
  }
}
function RefreshThumb() {
  DisplayThumb(sGblThumbId, sGblThumbAltText, sGblThumbUrl, bGblThumbType);
  ImagePopupRefreshEx();
}


// ************************************************
// gestion affichage des imagettes
// ************************************************
var bGblThumbnailVisible        = true;
var sGblThumbnailShowText       = "show thumbnails";
var sGblThumbnailHideText       = "hide thumbnails";
function ThumbnailVisible() {
  if(bGblThumbnailVisible == true) {
    var obj = document.getElementById("thumbnail_visible_text");
    document.getElementById("thumbnail").style.display            = "none";
    document.getElementById("thumbnail_visible_text").innerHTML   = ".: " + sGblThumbnailShowText;
    document.getElementById("thumbnail_visible_text").title       = sGblThumbnailShowText;
    bGblThumbnailVisible = false;
  }
  else {
    document.getElementById("thumbnail_visible_text").innerHTML   = ".: " + sGblThumbnailHideText;
    document.getElementById("thumbnail_visible_text").title       = sGblThumbnailHideText;
    document.getElementById("thumbnail").style.display            = "block";
    NavigationDisplay();
    bGblThumbnailVisible = true;
  }
  NavigationDisplay();
}


// ************************************************
// gestion affichage de l'image
// ************************************************
function ChangeGalleryImage(iId) {
  GalleryImageStats();
  objImage = document.getElementById("image_img");
  objImage.src   = sGblImgGalleryUrl + sGblImgGalleryId + iId + ".jpg";
  document.getElementById("current_pic").innerHTML = "<a href=\"?c=" + sGblChapter + "&s=" + sGblSection + "&g=" + sGblGallery + "&im=" + iId + "\">#" + iId + "</a>";
  ImageSetImgId(iId);
}
function ChangeGalleryImageByThumb() {
  objThumb = document.getElementById("thumbdetailimg");
  objImage = document.getElementById("image_img");
  sThumbSrc = objThumb.src;
  
  if(iGblImgId == 0) {
    var i = 0;
    var sId      = "";
    var sGallery = "";
    var sUrl     = "";
    var sImage   = "";
    var aThumbSrc = sThumbSrc.split("/");
    for (x in aThumbSrc) {
      i++;
      if(i == aThumbSrc.length) {
        sImage = aThumbSrc[x].substr(1);
      }
      else {
        sUrl = sUrl + aThumbSrc[x] + "/";
      }
      if(i == aThumbSrc.length - 1) { sGallery = aThumbSrc[x]; }
    }
    if((sImage != "") && (sUrl != "")) {
      sId = sImage.replace(sGallery, "").replace(".jpg", "");
      sGblImgGalleryId  = sGallery;
      sGblImgGalleryUrl = sUrl;
      ChangeGalleryImage(parseInt(sId));
    }
  }
  else {
    sId = sThumbSrc.replace(sGblImgGalleryUrl, "").replace("z" + sGblImgGalleryId, "").replace(".jpg", "");
    ChangeGalleryImage(parseInt(sId));
  }
}

// ************************************************
// Gestion div "next/previous" sur l'image
// ************************************************
var sGblImgGalleryId      = "";
var sGblImgGalleryUrl     = "";
var iGblImgId             = 0;
var iGblImgFirst          = 0;
var iGblImgLast           = 0;
var iGblImgInc            = 0;
var sGblImgAlt            = "";
var bGblImagePopupVisible = false;
function ImageInit(sGalleryId, sGalleryUrl, iImgId, iImgFirst, iImgLast, iImgInc, sImgAlt) {
  if(iGblImgInc == 0) { // iImgInc pour être sûr que c'est via onmouseover de image_img
    if(iGblImgId == 0) { iGblImgId = iImgId; } // dans le cas où on clique d'abord sur un thumbnail avant le onmouseover de image_img
    sGblImgGalleryId  = sGalleryId;
    sGblImgGalleryUrl = sGalleryUrl;
    sGblImgAlt        = sImgAlt;
    iGblImgFirst      = iImgFirst;
    iGblImgLast       = iImgLast;
    iGblImgInc        = iImgInc;
    document.getElementById("image_img").alt = "";
  }
}
function ImageSetImgId(iImgId) {
  iGblImgId = iImgId;
}
function ImageNextPrevious(iPosX, iPosY, iPageIdInit) {
  objImg    = document.getElementById("image_img");
  aObjImg = findPos("image_img");
  if(iPosX > (aObjImg[0] + (aObjImg[2] / 2))) {
    if(iGblImgId != iGblImgLast) {
      iId = iGblImgId + iGblImgInc;
    }
  }
  else {
    if(iGblImgId != iGblImgFirst) {
      iId = iGblImgId - iGblImgInc;
    }
  }
  ChangeGalleryImage(iId);
  ImagePopupRefresh(iPosX, iPosY);

  // mise à jour des Thumbnails si besoin
  if(iGblCurrentPage == 0) { iGblCurrentPage = iPageIdInit ; }
  iMaxPage = Math.floor((iGblQuantity / iGblThumbnail));
  if(sGblChapter == "pzic") {
    iPageId = Math.floor(((iId - 1) / iGblThumbnail) + 1);
  }
  else {
    iPageId = Math.floor(((iGblQuantity - iId) / iGblThumbnail) + 1);
  }
  if(iGblCurrentPage != iPageId) {
    AjaxLoadNavigation("", sGblChapter, sGblSection, sGblGallery, iPageId, iMaxPage);
  }
}
function ImagePopupHide() {
  objPopup  = document.getElementById("image_popup");
  objPopup.style.display = "none";
  bGblImagePopupVisible = false;
}
function ImagePopupRefreshEx() {
  objPopup  = document.getElementById("image_popup");
  aObjPopup = findPos("image_popup");
  if((aObjPopup[0] != 0) && (aObjPopup[1] != 0)) {
    if(ImageObjInside(aObjPopup[0], aObjPopup[1]) == true) {
      ImagePopupRefresh(iPosX, iPosY)
    }
    else { ImagePopupHide(); }
  }
  else { ImagePopupHide(); }
}
function ImagePopupRefresh(iPosX, iPosY) {
  objPopup  = document.getElementById("image_popup");
  objImg    = document.getElementById("image_img");
  aObjImg = findPos("image_img");
  document.getElementById("image_popup_text_current").innerHTML = sGblImgAlt + " #" + iGblImgId;
  if(iPosX > (aObjImg[0] + (aObjImg[2] / 2))) {
    if(iGblImgId == iGblImgLast) {
      document.getElementById("image_popup_text").innerHTML = "Last pic";
      document.getElementById("image_popup_img").style.display = "none";
      document.getElementById("image_popup").style.cursor = "default";
    }
    else {
      document.getElementById("image_popup_text").innerHTML = "Next pic: #" + (iGblImgId + iGblImgInc);
      document.getElementById("image_popup_img").src = sGblImgGalleryUrl + "z" + sGblImgGalleryId + (iGblImgId + iGblImgInc) + ".jpg";
      document.getElementById("image_popup_img").style.display = "inline";
      document.getElementById("image_popup").style.cursor = "pointer";
    }
  }
  else {
    if(iGblImgId == iGblImgFirst) {
      document.getElementById("image_popup_text").innerHTML = "First pic";
      document.getElementById("image_popup_img").style.display = "none";
      document.getElementById("image_popup").style.cursor = "default";
    }
    else {
      document.getElementById("image_popup_text").innerHTML = "Previous pic: #"  + (iGblImgId - iGblImgInc);
      document.getElementById("image_popup_img").src = sGblImgGalleryUrl + "z" + sGblImgGalleryId + (iGblImgId - iGblImgInc) + ".jpg";
      document.getElementById("image_popup_img").style.display = "inline";
      document.getElementById("image_popup").style.cursor = "pointer";
    }
  }
}
function ImagePopupShow(iPosX, iPosY) {
  objPopup  = document.getElementById("image_popup");
  ImagePopupRefresh(iPosX, iPosY);
  if(sGblNavigator == "ie") { // pour être bien sûr que le cursor est dans la zone, donc pouvoir afficher le cursor en default ou en pointer
    iPosX = iPosX - 3; // bug de microsoft
    iPosY = iPosY - 3; // bug de microsoft
  }
  else {
    iPosX = iPosX - 2;
    iPosY = iPosY - 2;
  }
  objPopup.style.left    = iPosX + "px";
  objPopup.style.top     = iPosY + "px";
  objPopup.style.display = "block";
  bGblImagePopupVisible = true;
}

function ImageObjInside(iPosX, iPosY) {
  var objImg  = document.getElementById("image_img");
  aObjImg = findPos("image_img");
  if((iPosX >= (aObjImg[0])) && (iPosX <= (aObjImg[0] + aObjImg[2])) && (iPosY >= (aObjImg[1])) && (iPosY <= (aObjImg[1] + aObjImg[3]))) {
    return true; }
  else { return false; }
}


