// JavaScript Document

//#### VARIABLES GLOBALES

// position de la souris
var mouseX;
var mouseY;
var sleep;
var xhr = false;
var nbrImagesDiapo;
var curImageDiapo;

//#### DISPLAY

/*
	Fonction whereMouse :
	Met la position de la souris à jours dans les variables mouseX et mouseY
*/
function whereMouse(e){
  var docRef; 

  if(e!=undefined){
    mouseX = e.pageX;
    mouseY = e.pageY;
  }
  else {// IE
    mouseX = event.clientX;
    mouseY = event.clientY;

	// DOCTYPE OR NOT
	if(document.documentElement && document.documentElement.clientWidth) docRef = document.documentElement;
    else docRef = document.body;
	
    mouseX += docRef.scrollLeft;
    mouseY += docRef.scrollTop;
  }
}
/*
	Fonction findPos :
	Trouve la position x ou y de la balise d'identifiant id pour tous les navigateurs
	coor : (x / y)
*/
function findPos(id,coor) {
	
	var obj = document.getElementById(id);
	
    var x = obj.offsetLeft || 0;
	var y = obj.offsetTop || 0;
	// while que l'objet à un parent
    while (obj = obj.offsetParent) {
        x += obj.offsetLeft;
		y += obj.offsetTop;
    }
	
    if(coor == 'y') return y;
	else return x;
}
/*
	Fonction inElement :
	Vérifie si la sourie est sur la balise d'identifiant id
*/
function inElement(id) {
	var width = document.getElementById(id).clientWidth;
	var height = document.getElementById(id).clientHeight;
	var xMin = findPos(id,'x');
	var yMin = findPos(id,'y');
	var xMax = xMin + width;
	var yMax = yMin + height;
	
	//document.getElementById('contenu').innerHTML = xMin+" "+xMax+" "+mouseX+" "+yMin+" "+yMax+" "+mouseY
	if(mouseX >= xMin && mouseX <= xMax && mouseY >= yMin && mouseY <= yMax) {
			// La souris est dans l'élément
			return true;
	}
	else return false;
}
function inArray(tab,chp) {

	for(var i=0;i<tab.length;i++) {
		if(tab[i] == chp) return true;	
	}
	return false;
}
//#### AJAX
function getXhr() {
	
	if(window.XMLHttpRequest) xhr = new XMLHttpRequest(); 
	else if(window.ActiveXObject) {  
		try {
			xhr = new ActiveXObject("Msxml2.XMLHTTP");
		}
		catch (e) {
			xhr = new ActiveXObject("Microsoft.XMLHTTP");
		 }
   }
	else { 
		alert("Votre navigateur ne supporte pas les objets XMLHTTPRequest, veuillez le mettre à jour"); 
		xhr = false; 
	}
}
//#### MENU LISTE VIN
/*
	racine : Pour définir un chemin absolu vers les fichiers chargés
	choix : Indique la fonction php à appeller
	param : paramètre à passer à la fonction php par la methode GET
	top : position du cadre
*/
function menuListeVins(racine,choix,param,top) {

	getXhr();
	if(xhr != false) {// L'objet a bien été généré
		xhr.onreadystatechange = function() {
			if(xhr.readyState == 4 && xhr.status == 200) {		
				if(choix == "domaines") {
					document.getElementById('domaines').style.display = 'none';
					document.getElementById('vins').style.display = 'none';
					if(xhr.responseText != "") {// il y a eu une réponse
						document.getElementById('domaines').style.display = 'block';
						document.getElementById('domaines').style.top = top+"px";
						document.getElementById('domaines').innerHTML = xhr.responseText;
						xhr  = false;
					}
				}
				else if(choix == "vins") {
					document.getElementById('vins').style.display = 'none';
					if(xhr.responseText != "") {// il y a eu une réponse
						document.getElementById('vins').style.display = 'block';
						document.getElementById('vins').style.top = top+"px";
						document.getElementById('vins').innerHTML = xhr.responseText;
						xhr  = false;
					}
				}
			}
		};
		// xhr.open("POST",'ajax/ajaxiris.php',true);
		xhr.open('POST',racine+'administration/ajax.php',true);
		xhr.setRequestHeader('Content-Type','application/x-www-form-urlencoded');
		xhr.send("choix="+choix+"&param="+param+"&top="+top);
	}
}
// Pour éviter trop de requêtes sur le serveur, on met un temps d'attente
function callMenuListeVins(racine,choix,param,top) {
	
	window.clearTimeout(sleep);
	sleep = window.setTimeout("menuListeVins('"+racine+"','"+choix+"','"+param+"',"+top+")",500);
}
function openCloseListeVins() {

	if(document.getElementById('vignobles').style.display == "block") {
			document.getElementById('domaines').style.display = "none";
			document.getElementById('vignobles').style.display = "none";
			document.getElementById('vins').style.display = "none";
	}
	else document.getElementById('vignobles').style.display = "block";
}
function closeListeVins() {
	if(!inElement('vins') && !inElement('domaines') && !inElement('vignobles') && !inElement('listeVins')) {
		document.getElementById('domaines').style.display = "none";
		document.getElementById('vignobles').style.display = "none";
		document.getElementById('vins').style.display = "none";
	}
}
//#### DIAPO
function getImgInfos(racine,idImage,idBlock,taille) {
	
	if(xhr == false) {// L'objet a bien été généré
		getXhr();
		if(xhr != false) {// L'objet a bien été généré
			xhr.onreadystatechange = function() {
	
				if(xhr.readyState == 4 && xhr.status == 200) {							
					if(xhr.responseText != "") {// il y a eu une réponse
						document.getElementById(idBlock).innerHTML = xhr.responseText;
						xhr  = false;
					}
				}
			};
			// xhr.open("POST",'ajax/ajaxiris.php',true);
			xhr.open('POST',racine+'administration/ajax.php',true);
			xhr.setRequestHeader('Content-Type','application/x-www-form-urlencoded');
			xhr.send("choix=diapo&param="+idImage+"&taille="+taille);
		}
	}
	else setTimeout("getImgInfos('"+racine+"','"+idImage+"','"+idBlock+"',"+taille+")",100);
}
function verifIndexImageDiapo(tab,index) {
	
		if(index > 0 && index <= nbrImagesDiapo && inArray(tab,index) == false) return index;
		else {
			if(index <= 0) index = nbrImagesDiapo + index;
			else index = index - nbrImagesDiapo;

			if(index > 0 && index <= nbrImagesDiapo && inArray(tab,index) == false) return index;
			return false;
		}
}
function clearDiapo() {
	
	for(var i=1;i<=5;i++) {// Affichage
		document.getElementById('cadreDiapo'+i).innerHTML = "";
	}	
}
function afficheDiapo(racine,image) {

	var tabImg = new Array("","","","","");
	var contenu;
	var imageDiapo;
	var tailleImg;
	var cadreDiapo;
	
	imageDiapo = verifIndexImageDiapo(tabImg,image);
	if(imageDiapo != false) {// Il y a des images à afficher
	
		clearDiapo();// On enleve toutes les images du diaporama
		curImageDiapo = imageDiapo;// On met à jours l'image courante
		tabImg[2] = imageDiapo;
		
		imageDiapo = verifIndexImageDiapo(tabImg,curImageDiapo-1);
		if(imageDiapo != false) {
			
			tabImg[3] = imageDiapo;
			imageDiapo = verifIndexImageDiapo(tabImg,curImageDiapo-2);
			if(imageDiapo != false) {
				tabImg[4] = imageDiapo;
			}
		}
		
		imageDiapo = verifIndexImageDiapo(tabImg,curImageDiapo+1);
		if(imageDiapo != false) {
			
			tabImg[1] = imageDiapo;
			imageDiapo = verifIndexImageDiapo(tabImg,curImageDiapo+2);						
			if(imageDiapo != false) {
				tabImg[0] = imageDiapo;
			}
		}
		
		for(var i=0;i<tabImg.length;i++) {// Affichage
			if(tabImg[i] != "") {
				if(i < 3) tailleImg = i;
				else tailleImg = 4 - i;
				document.getElementById('cadreDiapo'+(i+1)).innerHTML = "<img src ='"+racine+"icones/load.gif' alt='loader' />";
				// contenu : Contient l'id de l'image courante
				contenu = document.getElementById('imgDiapo'+tabImg[i]).innerHTML;
				getImgInfos(racine,contenu,'cadreDiapo'+(i+1),tailleImg);
			}
		}
	}
}
function initDiapo(racine,nbrImages) {
	
	nbrImagesDiapo = nbrImages;
	afficheDiapo(racine,nbrImages);
}
function goToImgDiapo(racine,val) {
	
	afficheDiapo(racine,curImageDiapo+val);
}