﻿<!--

//
// function getScrollXY() --> [X,Y]
// Cette fonction renvoit le nombre de pixels qui ont étés scrollés horizontalement
// et verticalement.
//
// PAS UTILISÉ DANS MAARCH FR
function getScrollXY() {
  var scrOfX = 0, scrOfY = 0;
  if( typeof( window.pageYOffset ) == 'number' ) {
    //Netscape compliant
    scrOfY = window.pageYOffset;
    scrOfX = window.pageXOffset;
  } else if( document.body && ( document.body.scrollLeft || document.body.scrollTop ) ) {
    //DOM compliant
    scrOfY = document.body.scrollTop;
    scrOfX = document.body.scrollLeft;
  } else if( document.documentElement && ( document.documentElement.scrollLeft || document.documentElement.scrollTop ) ) {
    //IE6 standards compliant mode
    scrOfY = document.documentElement.scrollTop;
    scrOfX = document.documentElement.scrollLeft;
  }
  return new Array(scrOfX,scrOfY);
}

//
// fonction pour afficher et effacer des elements HTML.
// elle prend en argument l'objet DOM de l'élément.
//
function afficheCalque(calque){
	calque.style.display='block';
}
function masqueCalque(calque){
	calque.style.display='none';
}

//
// Fonction qui permet d'afficher une image en grand sur un fond grisé.
// Cette fonction prend en argument l'url de l'image relativement àp la page en cours.
//
// les calques et images doivent être définis dans le fichier où la fonction est appellée
// et sont mis en forme en css.
//
// PAS UTILISÉ DANS MAARCH FR
function afficheImage(nom){
	// Récupération des calques en variable
	var idCalque=document.getElementById('lb1-layer'); //le calque pour griser l'ecran
	var idIMG=document.getElementById('lb1-img'); //
	
	idCalque.style.width=document.getElementsByTagName('html')[0].offsetWidth+"px";
	idCalque.style.height=document.getElementsByTagName('body')[0].offsetHeight+"px";
	idIMG.style.width=idCalque.style.width;
	idIMG.style.marginTop=getScrollXY()[1]+15+'px';
	
	
	afficheCalque(idCalque);
	afficheCalque(idIMG);
	idIMG.innerHTML="<span style='color:white;font-weight:bold'>Cliquez sur l'image pour fermer</span><br /><br /><img src=\"img/lb1/"+nom+"\" id=\"lb1-image\" onclick=\"masqueCalque(document.getElementById('lb1-layer'));masqueCalque(document.getElementById('lb1-img'));\" />";
}

//
// fonction pour rendre visibles ou invisibles des elements HTML.
// elle prend en argument l'objet DOM de l'élément.
//
function DetailsOn(objet){
	objet.style.visibility="visible";
}
function DetailsOff(objet){
	objet.style.visibility="hidden";
}

//
// Page Références
//

//La gestion des pages références est quasi automatisée.
//on procède d'abord à l'initialisation où on récupère la liste des références.

var initialized = 0;
var etat = new Array();

// modifie la ligne de titre (image ouvert/fermer + mention afficher détails)
// d'un groupe de références.
function ChangeH2(objet){
	if(objet.getElementsByTagName('img')[0].src.indexOf("plus")>-1){
		objet.getElementsByTagName('img')[0].src="img/moins.png";
		objet.getElementsByTagName('span')[0].firstChild.nodeValue=" (masquer les références)";
	}else{
		objet.getElementsByTagName('img')[0].src="img/plus.png";
		objet.getElementsByTagName('span')[0].firstChild.nodeValue=" (afficher les références)";
	}
}

// Les balises h2 dont l'id est de la forme h2x où x est un entier seront considérée
// comme des groupes de références. le tableau enregistre les objets DOM du groupe, 
// des éférences associées à ce groupe (en bloc), et leur état (affiché/masqué).
function initialise(){
    for (i=0;i<7;i++){
        etat[i] = new Array();
        etat[i]["h2"] = document.getElementById('h2'+i);
        etat[i]["desc"] = document.getElementById('desc'+i);
        etat[i]["etat"] = 0;
    }
    initialized = 1;
}

//ferme un groupe
function ferme(id){
    Effect.SlideUp(etat[id]["desc"]);
    ChangeH2(etat[id]["h2"]);
    etat[id]["etat"] = 0;
}

//ouvre un groupe
function ouvre(id){
    Effect.SlideDown(etat[id]["desc"]);
    ChangeH2(etat[id]["h2"])
    etat[id]["etat"] = 1;
}

//change le groupe ouvert
function change(id){
    if (!initialized){
        initialise();
    }
    if (etat[id]["etat"]){
        ferme(id);
    }else{
        for (i=0;i<etat.length;i++){
            if (etat[i]["etat"]){
                ferme(i);
            }
        }
        ouvre(id);
    }
}

//récupère les détails d'une référence et les affiche dans le cadre réservé
function affDetails(obj){
    cible = document.getElementById("conteneurDetails");
    //hauteur = cible.getHeight();
    hauteur = parseInt(document.getElementById('conteneurDetails').style.height);
    source = obj.parentNode.parentNode;
    // la description de la référence
    cible.getElementsByTagName("div")[1].getElementsByTagName("div")[0].innerHTML += source.getElementsByTagName("div")[1].innerHTML;
    //son logo
    cible.getElementsByTagName("img")[0].style.width = source.getElementsByTagName("img")[0].style.width;
    cible.getElementsByTagName("img")[0].style.height = source.getElementsByTagName("img")[0].style.height;
    cible.getElementsByTagName("img")[0].src = source.getElementsByTagName("img")[0].src;
    // Calcul de la position pour centrer verticalement les images
    //taille = hauteur-parseInt(source.getElementsByTagName("img")[0].height)-20;
    document.getElementById("wrapper").style.height = (hauteur-25)+'px';
    // centrage des flèches de défilement
    //document.getElementById("fleches").style.top = (hauteur-taille)/2-10+'px';
    //le nom de la référence
    document.getElementById("nomref").innerHTML = source.getElementsByTagName('h3')[0].innerHTML;
    //positionement de la description
    //document.getElementById("details-texte").style.top=0;
    sb = new ScrollBox($('details-texte'), {auto_hide: true});

}

//
// fonction pour déplacer la description avec les flèches de scroll
// (pas écrit par moi)
//
var Timer=null;
var Pas = 3;
function moveLayer(Sens) {
	var Objet=document.getElementById("details-texte");
    if(parseInt(Objet.style.top) + (Pas*Sens)>0)  {
		clearTimeout(Timer);
	}
	else if(parseInt(Objet.style.top) + (Pas*Sens)<-(Objet.offsetHeight-document.getElementById("wrapper").offsetHeight)) {
		clearTimeout(Timer);
	}
    else {
        Objet.style.top = (parseInt(Objet.style.top) + (Pas*Sens)) + "px";
	}
	Timer = setTimeout("moveLayer(" + Sens + ");", 30);
}

//
// Page Partenaires
//

//fonction pour générer le cadre qui affiche les partenaires d'un pays
function displayCountry(p){
	var cadre = document.getElementById('cadre_nom');
	cadre.innerHTML = '<strong>'+p+'</strong>';
	cadre.innerHTML += '<hr style="border:solid black 1px;height:1px;color:black;width:75%"/>';
	for (i=0; i<pays[p].length;  i++){
		cadre.innerHTML += '<a href="#'+pays[p][i].toLowerCase()+'"><img src="img/part/'+pays[p][i].toLowerCase()+'-tn.gif" alt="'+pays[p][i]+'" /></a><br />';
	}
	cadre.style.display = 'block';
}

//pas utilisé
function removeCountry(nom){
	document.getElementById('cadre_nom').innerHTML = '';
	document.getElementById('cadre_nom').style.display = 'none';
}

//
// Page Solutions
//

var ItemOn = null;
var ItemTmp = null;

// Après la diminution du bloc d'image, met en valeur l'élément sur lequel se 
// trouve la souris
function HighLight(id){
	if (id != ItemOn){
		new Effect.Opacity(ItemOn, {duration:0.2, to: 0.3});
		new Effect.Opacity(id, {duration:0.2, to: 1.0});
		ItemTmp = id;
	}
}
// opération inverse : atténue l'élément mis en valeur quand la souris n'est 
// plus dessus
function UnHighLight(){
	if (ItemTmp!= null){
		new Effect.Opacity(ItemOn, {duration:0.2, to: 1.0});
		new Effect.Opacity(ItemTmp, {duration:0.2, to: 0.3});
		ItemTmp = null;
	}
}

// diminue le bloc et le place sur le coté
function diminue(obj){
	// réplacement et réduction
	new Effect.Move("conteneur", { x: 500, y: -40});
	new Effect.Scale("conteneur", 50);
	// efface et initialise l'opacité des calques de description
	for (i=0;i<liste.length;i++){
		new Effect.Scale(liste[i], 50);
		new Effect.Fade(liste[i]+"desc", {duration:0.01, from:0,to: 0});
	}
	// lance l'affichage du calque descriptif du produit cliqué
	changeprod(obj);
	// modifie la fonction appelee en cliquant sur l'image our que le bloc ne se déplace plus
	for (i=0;i<liste.length;i++){
		document.getElementById(liste[i]).onclick= function() { changeprod(this.id); }
		document.getElementById(liste[i]).onmouseover= function() { HighLight(this.id); }
		document.getElementById(liste[i]).onmouseout= function() { UnHighLight(); }
	}
	
}

// modifie le calque de description affiché
function changeprod(obj){
	ItemOn = obj;
	//met le focus sur l'image de l'application sélectionnée
	new Effect.Opacity(obj, { to: 1.0});
	//enleve le focus des autres
	for (i=0;i<liste.length;i++){
		if (liste[i]!=obj){
			new Effect.Opacity(liste[i], { to: 0.3});
		}
	}
	//efface le calque de description affiché sauf si c'est celui qu'on veut afficher
	for (i=0;i<liste.length;i++){
		if (liste[i]!=obj&&document.getElementById(liste[i]+"desc").style.display!="none"){
			new Effect.Fade(liste[i]+"desc", {duration:0.5, to: 0});
			if(document.getElementById(liste[i]+"sm") != null && document.getElementById(liste[i]+"sm").style.display!="none"){
				new Effect.Fade(liste[i]+"sm", {duration:0.5, to: 0});
			}
		}
	}
	//programme l'affichage du calque affiché pour qu'il se lance après l'effacement 
	//du calque précédement affiché (c'est fait par la fonction changeText), 
	//sauf si il est déjà affiché.
	if(document.getElementById(obj+"desc").style.display=="none"){
		setTimeout('changeText("'+obj+'")',500);
	}
}

//change la taille du fond blanc pour qu'elle contienne tout le cadre de description
//et affiche le cadre de description en meme temps.
function changeText(obj){
	$('mainCadre').morph('height:'+(document.getElementById(obj+"desc").getHeight()+60)+'px',{duration:0.5});
	$(obj+"desc").blindDown({duration:0.5});
	if(document.getElementById(obj+"sm") != null){
		new Effect.Appear(obj+"sm", {duration:0.5});
	}
}

//
// Page dl.php
//


//vérification simpl(ist)e des champs obligatoires du formulaire de contact.
function verify(form){
	rMail = new RegExp("^[a-zA-Z][-0-9a-zA-Z\._]*@[-0-9a-zA-Z\._]*\.[a-zA-Z]{2,4}$");
	if(form.nom.value.length==0){
		alert('Vous devez entrer votre nom');
		return false;
	}
	if(form.prenom.value.length==0){
		alert('Vous devez entrer votre prénom');
		return false;
	}
	if (rMail.test(form.email.value)==false){
		alert('Vous devez entrer une adresse e-mail valide');
		return false;
	}
	if (form.organisation.value.length==0){
		alert('Vous devez entrer votre organisation');
		return false;
	}
	return true;
}

// -->
