// ******************************************************************************
// *** Code appartenant à evoweb.fr pour le site de la société SBC Automation ***
// ******************************************************************************

var browserName = navigator.appName;
var browserVer = parseInt(navigator.appVersion);

/* ------------------------------
   --- Gestion des évènements ---
   ------------------------------ */

// Ajoute un évènement à un élement
function addListener(element, baseName, handler) {
	if (element.addEventListener)
		element.addEventListener(baseName, handler, false);
	else if (element.attachEvent)
		element.attachEvent('on'+baseName, handler);
}

// Enlève un évènement à un élement
function removeListener(element,baseName, handler) {
	if(element.removeEventListener)
		element.removeEventListener(baseName,handler,false);
	else if (element.detachEvent) {
		element.detachEvent('on'+baseName, handler);
	}
}

//Rercherche dans le DOM pour moteur Mozilla
function containsDOM (container, containee) {
  var isParent = false;
  do {
    if ((isParent = container == containee))
      break;
    containee = containee.parentNode;
  }
  while (containee != null);
  return isParent;
}

// On cherche si l'élément envoyé à l'entrée est enfant d'un élément.
function checkMouseEnter (element, evt) {
  if (element.contains && evt.fromElement) {
    return !element.contains(evt.fromElement);
  }
  else if (evt.relatedTarget) {
    return !containsDOM(element, evt.relatedTarget);
  }
}

//On cherche si l'élément envoyé à la sortie est enfant d'un élément.
function checkMouseLeave (element, evt) {
  if (element.contains && evt.toElement) {
    return !element.contains(evt.toElement);
  }
  else if (evt.relatedTarget) {
    return !containsDOM(element, evt.relatedTarget);
  }
}

// On récupère l'élement qui a fait l'action
function getTarget(e) {
	if (e.currentTarget)
		return e.currentTarget;
	else if (e.srcElement)
	 	return e.srcElement;
	else
		return null;
}

// On annule la propagation de l'évènement
function cancelBubble(e) {
	if (!e) e = window.event;
	if (browserName == "Microsoft Internet Explorer" & browserVer >= 4) {
		window.event.returnValue= false;
	} else {
		e.preventDefault();
	}
}

// Remplacement de la fonction getElementsByName pour IE
document.getElementsByName = function(tag, name) {
    var elem = document.getElementsByTagName(tag);
    var arr = new Array();
    for(i = 0,iarr = 0; i < elem.length; i++) {
         att = elem[i].getAttribute("name");
         if(att == name) {
              arr[iarr] = elem[i];
              iarr++;
         }
    }
    return arr;
}

// Recherche des éléments qui ont une class spécifique
function getElementsByStyleClass (className) {
	var all = document.all ? document.all : document.getElementsByTagName('*');
	var elements = new Array();
	for (var e = 0; e < all.length; e++)
		if (all[e].className == className)
			elements[elements.length] = all[e];
	return elements;
}

/* --------------------------
   --- Diverses fonctions ---
   -------------------------- */

// Ajout d'une page en favoris
function ajoutFavoris(e){
	if (browserName == "Microsoft Internet Explorer" & browserVer >= 4) {
		window.external.AddFavorite('http://www.evoweb.fr', 'EvoWeb - Création site internet');
	} else if (browserName == "Netscape") {
		window.sidebar.addPanel('EvoWeb - Création site internet','http://www.evoweb.fr',"");
	}
	//cancelBubble(e); // On peut supprimer l'affichage du lien si besoin.
}

// Affiche les propriétés d'un élément
function showProp(obj,type) {
	var props=[];
	for (var prop in obj)
		props.push(prop+' : '+obj[prop]);
	if (type == '')
		alert (props.join('\n'));
	else
		return props.join('<br>');
}

// opacité à 100%
function elementOpacity100(e) {
	if (!e) e = window.event;
	var lequel = getTarget(e);
	
	if (lequel) {
		lequel.style.opacity=1;
		lequel.style.filter = 'alpha\(opacity=100\)';
	}
}

// opacité à xx %
function elementOpacity(e,opacite) {
	if (!e.style) {
		if (!e) e = window.event;
		var lequel = getTarget(e);
	} else {
		var lequel = e;
	}
	if (lequel) {
		lequel.style.opacity=opacite/100;
		lequel.style.filter = 'alpha\(opacity='+opacite+'\)';
	}
}

/* ----------------------------------------------
   --- Gestion du positionnement des élèments ---
   ---------------------------------------------- */

// On récupère la position absolue d'un élément dans la page
function whereIs(myNode){
	originalNode = myNode;
	x = 0;
	y = 0;
	while (myNode.tagName != 'BODY'){
		x += myNode.offsetLeft;
		y += myNode.offsetTop;
		myNode = myNode.offsetParent;
	}
	originalNode.magicPositionX = x;
	originalNode.magicPositionY = y;
}

/* ---------------------------
   --- Gestion des valeurs ---
   --------------------------- */

//On vérifie si la valeur est un flottant
function checkFloat(valeur) {
	try {
		val = parseFloat(valeur);
		if (String(val) != valeur)
			throw val;
	} catch(e) {
		return false;
	}
}

/* -------------------------
   --- Gestion sous menu ---
   ------------------------- */
var top_cible_menu;
var table_sous_menu = [];
// On affiche le sous menu
function afficheSousMenu(e) {
	if (!e) e = window.event;
	top_cible_menu = getTarget(e);
	var sousmenu = document.getElementById("sous_menu");
	whereIs(top_cible_menu);
	// On récupère le sous menu
	var numeroSousMenu = parseInt(top_cible_menu.id.substr(top_cible_menu.id.length - 1));
	if (typeof(tableSousMenu) != "undefined") {
		var contenuSousMenu = "<div>";
		for (i = 0; i < tableSousMenu[numeroSousMenu].length; i++)
			contenuSousMenu += "<a href='"+tableSousMenu[numeroSousMenu][i]["url"]+"'>"+tableSousMenu[numeroSousMenu][i]["description"]+"</a>"; 
		sousmenu.innerHTML = contenuSousMenu+"</div>";
		if (browserName == "Microsoft Internet Explorer")
			sousmenu.style.left = (top_cible_menu.magicPositionX+12)+"px";
		else
			sousmenu.style.left = top_cible_menu.magicPositionX+"px";
		sousmenu.style.top = (top_cible_menu.magicPositionY+10)+"px";
		sousmenu.style.display = 'block';
		top_cible_menu.style.color = "#ffffff";
	}
}

// On efface le sous menu
function cacheSousMenu(e) {
	if (!e) e = window.event;
	var cible = getTarget(e);
	var sousmenu = document.getElementById("sous_menu");
	if (checkMouseLeave(sousmenu,e)) {
		if (sousmenu.style.display != 'none') {
			sousmenu.style.display = 'none';
			top_cible_menu.style.color = "#DEC9C0";
		}
	}
}

/* -------------------------
   --- Gestion du popup  ---
   ------------------------- */

// On déplace le popup
function movepopup(e) {
	var pop = document.getElementById('popup');
	if (pop.style.display != 'none') {
		var x, y, right, bottom;
		var xoffset = 20;
		var yoffset = -75;
	    var posx = 0;
		var posy = 0;
		var event;
		if (!e) evt = window.event; else evt=e;
		if (evt.pageX || evt.pageY) 	{
			posx = evt.pageX;
			posy = evt.pageY;
		} else if (evt.clientX || evt.clientY) 	{
			posx = evt.clientX + document.body.scrollLeft + document.documentElement.scrollLeft;
			posy = evt.clientY + document.body.scrollTop + document.documentElement.scrollTop;
		}
	    posx += xoffset;
	    posy += yoffset;
	    pop.style.top = posy+'px';
	    pop.style.left = posx+'px';
	}
}

// On change le contenu du popup
function popup(text) {
	var pop = document.getElementById('popup');
    pop.innerHTML = text;
    pop.style.display = 'block';
}

// On efface le popup
function popout() {
	var pop = document.getElementById('popup');
    pop.style.display = 'none';
}

/* ------------------------------
   --- Gestion de l'etiquette ---
   ------------------------------ */

// On déplace l'étiquette
function moveEtiquette(e) {
	if (!e) evt = window.event; else evt=e;
	var etiquette = document.getElementById('etiquette');
	if (etiquette) {
		if (etiquette.style.display != 'none') {
			var x, y, right, bottom;
			var xoffset = parseInt(etiquette.offsetWidth / 2);
			var yoffset = 35;
		    var posx = 0;
			var posy = 0;
			var event;
			if (evt.pageX || evt.pageY) 	{
				posx = evt.pageX;
				posy = evt.pageY;
			} else if (evt.clientX || evt.clientY) 	{
				posx = evt.clientX + document.body.scrollLeft + document.documentElement.scrollLeft;
				posy = evt.clientY + document.body.scrollTop + document.documentElement.scrollTop;
			}
		    posx -= xoffset;
		    posy -= yoffset;
		    etiquette.style.top = posy+'px';
		    etiquette.style.left = posx+'px';
		}
	}
}

// On change le contenu de l'etiquette et on l'affiche
function etiquetteOn(text) {
	var etiquette = document.getElementById('etiquette');
	if (etiquette) {
	    etiquette.innerHTML = text;
	    etiquette.style.display = 'block';
	}
}

// On efface l'etiquette
function etiquetteOff() {
	var etiquette = document.getElementById('etiquette');
	if (etiquette) {
		if (etiquette.style.display != 'none')
	    	etiquette.style.display = 'none';
	}
}

/* ---------------------------------------------------
   --- Gestion de l'affichage d'une photo en DHTML ---
   --------------------------------------------------- */

// Ajout des popup DHTML détectés dans la page, il faut que l'élément soit un lien <a> ou une image <img> et ai le nom ImageToShow
function addDHTMLPopup(){
	//var ImgsToShow = document.getElementsByName('a','ImageToShow');
	var ImgsToShow = document.getElementsByTagName('A');
	for (var index = 0; index < ImgsToShow.length; ++index) {
		var ImgToShow = ImgsToShow[index];
		if (ImgToShow.id.substr(0,11)=="ImageToShow") {
			if (browserName == "Microsoft Internet Explorer")
				addListener(ImgToShow,'click',function(e){showImage(getTarget(e).parentElement,e);});
			else
				addListener(ImgToShow,'click',function(e){showImage(getTarget(e),e);});
		} else if (ImgToShow.id.substr(0,11)=="videoToShow") {
			if (browserName == "Microsoft Internet Explorer")
				addListener(ImgToShow,'click',function(e){showVideo(getTarget(e).parentElement,e);});
			else
				addListener(ImgToShow,'click',function(e){showVideo(getTarget(e),e);});
		}
	}
}

// FOnction d'affichage d'une vidéo en DHTML
function showVideo(contenu,e) {
	var popimage = document.getElementById("VideoShowFloat");
	var popimagef = document.getElementById("FondImageShow");
	var legende_image;
	if (contenu.title) legende_image = contenu.title;
	popimage.style.display = 'block';
	popimage.style.zIndex = 20;
	var contenupop = legende_image+'<br /><object type="application/x-shockwave-flash" data="'+lienSWFPlayer+'" width="352" height="308"><param name="play" value="true" /><param name="allowScriptAccess" value="sameDomain" /><param name="movie" value="'+lienSWFPlayer+'" /><param name="flashvars" value="file='+tableVideo['dba']+'&amp;author=SBC-Automation&amp;autostart=true&amp;volume=50&amp;bufferlength=3" /><param name="quality" value="high" /><param name="wmode" value="transparent" /><param name="scalemode" value="noborder" /></object><br />Cliquez en dehors de la vidéo pour fermer';
	popimage.innerHTML=contenupop; 
	popimagef.style.display = 'block';
	popimagef.style.zIndex=19;
	popimagef.style.filter = 'alpha\(opacity=70\)';
	popimagef.style.MozOpacity = .7;
	popimagef.style.opacity = .7;
	setTimeout('RepositionFloatDiv("VideoShowFloat")',100);
	addListener(window,'resize',function (){RepositionFloatDiv("VideoShowFloat")});
	addListener(window,'scroll',function (){RepositionFloatDiv("VideoShowFloat")});
	addListener(popimage,'click',function (){var test=null;});
	addListener(popimagef,'click',function (){HideFloatDiv("VideoShowFloat")});
	cancelBubble(e);
}

// Fonction d'affichage de l'image d'un produit en DHTML
function showImage(contenu,e) {
	var popimage = document.getElementById("ImageShow");
	var popimagef = document.getElementById("FondImageShow");
	var legende_image;
	if (contenu.title) legende_image = contenu.title;
	popimage.style.display = 'block';
	popimage.style.zIndex = 20;
	popimage.innerHTML= "<img src='images/attente.gif' id='image_attente' alt='Veuillez patienter SVP'/><img id='TheImageShowed' src='"+contenu+"' alt='Cliquez pour fermer'><br /><div id='CommentOfImage'>"+legende_image+"</div>";
	popimagef.style.display = 'block';
	popimagef.style.zIndex=19;
	popimagef.style.filter = 'alpha\(opacity=70\)';
	popimagef.style.MozOpacity = .7;
	popimagef.style.opacity = .7;
	setTimeout('RepositionFloatDiv("ImageShow")',100);
	addListener(window,'resize',function (){RepositionFloatDiv("ImageShow")});
	addListener(window,'scroll',function (){RepositionFloatDiv("ImageShow")});
	addListener(popimage,'click',function (){HideFloatDiv("ImageShow")});
	addListener(popimagef,'click',function (){HideFloatDiv("ImageShow")});
	var TheImageShowed = document.getElementById("TheImageShowed");
	if (browserName == "Opera")
		setTimeout("ShowTheImageShowed();",2000);
	else
		addListener(TheImageShowed,'load',ShowTheImageShowed);
	cancelBubble(e);
}

// Affiche l'image une fois chargée
function ShowTheImageShowed() {
	var TheImageShowed = document.getElementById("TheImageShowed");
	var ImageAttente = document.getElementById("image_attente");
	var CommentImage = document.getElementById("CommentOfImage")
	ImageAttente.style.display='none';
	TheImageShowed.style.display='block';
	CommentImage.style.display='block';
	RepositionFloatDiv("ImageShow");
	removeListener(TheImageShowed,'load',ShowTheImageShowed);
}

// Repositionnement en fonction de la taille du document
function RepositionFloatDiv(elementToReposition){
	var popimage = document.getElementById(elementToReposition);
	var popimagef = document.getElementById("FondImageShow");
	if (popimage.style.display == "block") {
		var larg = document.documentElement.clientWidth;
		var haut = document.documentElement.clientHeight;
		var total_larg = document.documentElement.scrollWidth;
		var total_haut = document.documentElement.scrollHeight;
		var total_scroll = document.documentElement.scrollTop;
			var theimg_larg = popimage.clientWidth;
			var theimg_haut = popimage.clientHeight;
		popimage.style.left = ((larg - theimg_larg) /2)-14+"px";
		popimage.style.top = (((haut - theimg_haut) /2)-14 + total_scroll)+"px";

		popimagef.style.left=0+"px";
		popimagef.style.top=0+"px";
		popimagef.style.width = total_larg+"px";
		popimagef.style.height = total_haut+"px";
	}
}

// Cache l'image DHTML et le fond
function HideFloatDiv(elementToHide) {
	var popimage = document.getElementById(elementToHide);
	var popimagef = document.getElementById("FondImageShow");
	popimage.innerHTML="";
	popimage.style.display = 'none';
	popimagef.style.display = 'none';
	removeListener(popimage,'click',HideFloatDiv);
	removeListener(popimagef,'click',HideFloatDiv);
	removeListener(window,'resize',RepositionFloatDiv);
	removeListener(document.body,'scroll',RepositionFloatDiv);
}

/* -----------------
   --- Démarrage ---
   ----------------- */

//Fonction spécifiques au démarage du site
function demarrage_site() {
	var pop = document.getElementById('popup');
	var etiquette = document.getElementById('etiquette');
	var favoris = document.getElementById('menub_fav');
	var sousmenu = document.getElementById('sous_menu');
	if (pop) {
		addListener(document,'mousemove',movepopup);
		addListener(pop,'mousemove',function(e){cancelBubble(e)});
	}
	if (etiquette) {
		addListener(document,'mousemove',moveEtiquette);
		//addListener(document,'mousemove',moveEtiquette);
		addListener(etiquette,'mousemove',moveEtiquette);
	}
	if (favoris) addListener(favoris,'click',function(e){ajoutFavoris(e)});
	if (sousmenu) {
		var i = 0;
		var listeElement = document.getElementsByTagName('A');
		for (var index = 0; index < listeElement.length; ++index) {
			var elementMenu = listeElement[index];
			if (elementMenu.id.substr(0,9)=="top_menu_") {
				addListener(elementMenu, 'mouseover', function(e){afficheSousMenu(e)});
				addListener(elementMenu, 'mouseout', function(e){cacheSousMenu(e)});
			}
		}
		addListener(sousmenu,'mouseout',function(e){cacheSousMenu(e)});
	}
}

addListener(window,'load',demarrage_site);
addListener(window,'load',addDHTMLPopup);
