// Galerie d'images
// Function de modification des éléments dynamique de la galerie
function displayPics() {
	// On récupère les éléments de la grande image
	var big_photo = document.getElementById('big_pict') ;
	var legende = document.getElementById('legende');
	var xbig = document.getElementById('xbig');
	// On récupère le commentaire
	var blabla = document.getElementById('commentaire') ;
	// On récupère les éléments des vignettes
	var small_photo = document.getElementById('small_picture') ;
	var small_photo_lien = small_photo.getElementsByTagName('a') ;
	var small_photo_img = small_photo.getElementsByTagName('img') ;
	// On récupère les éléments de navigation
	var avant = document.getElementById('navigation-precedent') ;
	var avant_lien = avant.getElementsByTagName('a') ;
	var apres = document.getElementById('navigation-suivant') ;
	var apres_lien = apres.getElementsByTagName('a') ;
	// cacher la navigation s'il n'y a qu'une image
	if (images.length == 1) {
		avant_lien[0].name = 0;
		avant_lien[0].style.display = 'none';
		apres_lien[0].name = 0;
		apres_lien[0].style.display = 'none';
	}
	// Navigation via les vignettes
	for (var i = 0 ; i < small_photo_lien.length ; ++i) {
		small_photo_lien[i].onclick = function () {
			var nav = parseInt(this.title);
			if (images.length == 1) {
				avant_lien[0].name = 0;
				avant_lien[0].style.display = 'none';
				apres_lien[0].name = 0;
				apres_lien[0].style.display = 'none';
			}
			else if (nav <= 0) {
				avant_lien[0].name = 0;
				avant_lien[0].style.display = 'none';
				apres_lien[0].name = 1;
				apres_lien[0].style.display = 'block';
			}
			else if (nav >= images.length - 1) {
				avant_lien[0].name = images.length - 2;
				avant_lien[0].style.display = 'block';
				apres_lien[0].name = images.length;
				apres_lien[0].style.display = 'none';
			}
			else {
				avant_lien[0].name = nav - 1;
				avant_lien[0].style.display = 'block';
				apres_lien[0].name = nav + 1;
				apres_lien[0].style.display = 'block';
			}
			for (var j = 0 ; j<images.length ; j++) {
				if (j == nav) {
					small_photo_img[j].style.borderWidth = "2px";
				}
				else {
					small_photo_img[j].style.borderWidth = "0";
				}
			}
			big_photo.src = images[nav][6]; // On change l'image
			big_photo.alt = images[nav][0]; // On change son titre
			legende.innerHTML = images[nav][1]; // On change la légende
			if (images[nav][8] != 0) {
				xbig.innerHTML = '<br/>Cette image est disponible au format : <a class="texte" href="' + images[nav][8] +
				'" title="Haute-résolution">' + images[nav][9] +
				'</a>';
			}
			else {
				xbig.innerHTML = '';
			}
			blabla.innerHTML = '<p><a href="#">en savoir plus :<span> Auteur : ' + images[nav][2] +
				'<br/>Date : ' + images[nav][3] + 
				'<br/>Lieu : ' + images[nav][4] + 
				'<br/>Commentaires : ' + images[nav][5] + '</span></a></p>'; // On change le commentaire
			return false; // On inhibe l'action réelle du lien
		}
	}
	// Navigation via les flèches "précédente" et "suivante"
	avant_lien[0].onclick = apres_lien[0].onclick = function () {
		var nav = parseInt(this.name);
		if (images.length == 1) {
			avant_lien[0].name = 0;
			avant_lien[0].style.display = 'none';
			apres_lien[0].name = 0;
			apres_lien[0].style.display = 'none';
		}
		else if (nav <= 0) {
			avant_lien[0].name = 0;
			avant_lien[0].style.display = 'none';
			apres_lien[0].name = 1;
			apres_lien[0].style.display = 'block';
		}
		else if (nav >= images.length - 1) {
			avant_lien[0].name = images.length - 2;
			avant_lien[0].style.display = 'block';
			apres_lien[0].name = images.length;
			apres_lien[0].style.display = 'none';
		}
		else {
			avant_lien[0].name = nav - 1;
			avant_lien[0].style.display = 'block';
			apres_lien[0].name = nav + 1;
			apres_lien[0].style.display = 'block';
		}
		for (var j = 0 ; j<images.length ; j++) {
			if (j == nav) {
				small_photo_img[j].style.borderWidth = "2px";
			}
			else {
				small_photo_img[j].style.borderWidth = "0px";
			}
		}
		big_photo.src = images[nav][6]; // On change l'image
		big_photo.alt = images[nav][0]; // On change son titre
		legende.innerHTML = images[nav][1]; // On change la légende
		if (images[nav][8] != 0) {
			xbig.innerHTML = '<br/>Cette image est disponible au format : <a class="texte" href="' + images[nav][8] +
			'" title="Haute-résolution">' + images[nav][9] +
			'</a>';
		}
		else {
			xbig.innerHTML = '';
		}
		blabla.innerHTML = '<p><a href="#">en savoir plus :<span> Auteur : ' + images[nav][2] +
			'<br/>Date : ' + images[nav][3] + 
			'<br/>Lieu : ' + images[nav][4] + 
			'<br/>Commentaires : ' + images[nav][5] + '</span></a></p>'; // On change le commentaire
		return false; // On inhibe l'action réelle du lien
	}
}

// Gestion du menu vertical
function montre(id) {
	var d = document.getElementById(id);
	for (var i = 1; i<=10; i++) {
		if (document.getElementById('smenu'+i)) {
			document.getElementById('smenu'+i).style.display='none';
		}
	}
	if (d) {
		d.style.display='block';
	}
}

//Agrégateur de flux - Initialisation
function flux_rss() {
  var view = new XSLView("rssHeader", "message");
  
  view.onload = function() {
    document.getElementById("rssHeader").onclick = function(event) {
      var source = (window.event) ? window.event.srcElement :
        event.target;
      if (source.nodeName == "TD" 
        && source.getElementsByTagName("DIV").length !=0) {
        document.getElementById("rssItem").innerHTML =
          source.getElementsByTagName("DIV")[0].innerHTML;
      }
    }
    view.display();
  }
  
  view.loadXSL("./rss_sommaire.xsl");
  view.loadXML(document.getElementById("rssUrl").value);
  
  document.getElementById("rssUrl").onchange = function() {
    view.loadXML(document.getElementById("rssUrl").value);
  }
}

//Agrégateur de flux - XSLView
if (!window.XMLHttpRequest) {
  XMLHttpRequest = function() {
    return new ActiveXObject("Microsoft.XMLHTTP");
  }
}

/** @class
 * @requires util.js (Log et harmonisation XMLHttp)
 */
function XSLView(idOutput, idMsg, xmlDoc, xslDoc) {
  this.idOutput = idOutput;
  this.output = document.getElementById(idOutput);
  this.xmlDoc = xmlDoc || null;
  this.xslDoc = xslDoc || null;
  this.xmlRequest = null;
  this.xslRequest = null;
  this.msg = (document.getElementById(idMsg)) ?
    document.getElementById(idMsg) : this.output;
}

XSLView.prototype = {
  proxy: "php/open-url.php?url=",

  loadXML: function(url) {
    this._load(url, "xmlDoc", this.xmlRequest);
  },

  loadXSL: function(url) {
    this._load(url, "xslDoc", this.xslRequest);
  },

  _load: function(url, targetName, request) { 
    if (!window.ActiveXObject && !window.XSLTProcessor) {
      this.output.innerHTML = "Cette page nécessite Internet " +
        "Explorer 6 et plus, ou Firefox 1.0 et plus";
      return;
    }
    if (request) {
      try {
        request.abort();
      }
      catch (exc) {}
    }
    if (/^http:/.test(url)) {
      url = this.proxy + encodeURIComponent(url);
    }
    try {
      var current = this;
      request = new XMLHttpRequest();
      request.open("GET", url, true);
      request.onreadystatechange = function() {
        if (request.readyState == 4) {
          if (request.status == 200) {
            current[targetName] = request.responseXML;
            if (current.xmlDoc != null && current.xslDoc != null) {
              current.onload();
            }
          }
          else {
            current.log("Erreur HTTP "+request.status + " sur " + url);
          }
        }
      }
      this.msg.innerHTML = "En chargement ...";
      request.send("");
    }
    catch (exc) {
      this.log(exc);
    }
  },

  log: function(msg) {
    this.output.innerHTML += msg + "<br/>";
  },

  onload: function() {
    this.display();
  },

  display: function() {
    this.msg.innerHTML = "";
    var output = document.getElementById(this.idOutput);
    try { // IE
      output.innerHTML = this.xmlDoc.transformNode(this.xslDoc);
    }
    catch (exc) {// Mozilla
      try {
        var xsltProcessor = new XSLTProcessor();
        xsltProcessor.importStylesheet(this.xslDoc);
        var fragment = 
          xsltProcessor.transformToFragment(this.xmlDoc, document);
        output.innerHTML = "";
        output.appendChild(fragment);

      }
      catch (exc) {
        this.log(exc);
      }
    }
  }
}
