/*
file name : script.js
Script  Générale et commun du site gantis.fr
Tous droits réservés Julien Sanchez et Alexandre Hocquard - Merci de ne pas copier sans autorisation
Si vous souhaitez vous inspirer de notre code merci de nous envoyer un mail à mail@gantis.fr

Tout le code suivant est une création originale. Le but de gantis.fr est pédagogique. Notre volonté n'est donc pas de proposer un site disposant du plus de fonction possible, mais d'apprendre et maitriser leurs créations.
*/


//VARIABLES GLOBALES :

var navigateur = null;
var pseudo = "";
var tableauDesImages = new Array();


function detectionNavigateur() //retourne le nom du navigateur
{
	//on stock les infos du navigateur utilisé
	navigateur = navigator.userAgent.toLowerCase();
	//indexOf correspond à la valeur du navigateur. -1 correspond à faux et >0 correspond à vrai
	
	//la ligne qui va suivre a étéhonteusement pompé sur le site http://www.javascriptfr.com/codes/DETECTER-NAVIGATEUR_40950.aspx 
	//c'est la seul de nos script et j'espère que vous comprendrez pourquoi (ie nous fera chi** jusqu'au bout !:
	if(navigator.userAgent.substring(navigator.userAgent.indexOf("(",0), navigator.userAgent.indexOf(")",0)).indexOf("MSIE 6") != -1 || navigator.userAgent.substring(navigator.userAgent.indexOf("(",0), navigator.userAgent.indexOf(")",0)).indexOf("MSIE 5") != -1 || navigator.userAgent.substring(navigator.userAgent.indexOf("(",0), navigator.userAgent.indexOf(")",0)).indexOf("MSIE 4") != -1)
	{
		alert('Bonjour,\nVous utilisez Internet Explorer. Ce navigateur est obsolète et demande trop de travail pour que le site fonctionne convenablement.\nMerci de télécharger firefox ou safari.\n(vous allez être redirigé sur la version HTML de notre site)\n\nL\'équipe de gantis.fr');
		window.location.href="Accueil.php"
	}
	else if(navigateur.indexOf("msie") > -1)
	{
		return "msie";
	}
	else if (navigateur.indexOf("firefox") > -1)
	{
		return "firefox";
	}
	else if(navigateur.indexOf("safari") > -1)
	{
		return "safari";
	}
	else if(navigateur.indexOf("opera") > -1)
	{
		return "opera";
	}
	else
	{
		return "inconnu";
	}

}	
//on lance la fonction pour que la variable navigateur sois initialisée
navigateur = detectionNavigateur();

// applique différentes actions pour que le site est la meilleure apparence possible en fonction du navigateur utilisé
function cssNavigateur() 
{
	if(navigateur == "safari")
	{
		variableDockDezoomageSetTimeOut = 70; // variable définissant la vitesse du déézoomage (trop rapide pr safari, c'est pas avec IE que ca arriverai ! )
		//les info du doc doivent etre plus grosse pour un meilleur affichage sur safari
		document.getElementById('infoDockTable').style.fontSize = "16px";
		//le texte de la note post-it
		document.getElementById('corpsNote').innerHTML = "<h4>Bienvenue sur gantis.fr !</h4>Vous utilisez safari : bravo ! Vous utilisez le navigateur qui obtient le meilleur score au test acid3. <br/>Toutes les fonctions du site sont donc activées.<br/>Les fenêtres sont déplaçables et le chat en ajax se met à jour automatiquement.";
		//nous devons ajuster manuellement à cause du "overflow:default" sur le corps du post-it
		document.getElementById('corpsNote').style.height ="60%";
	}
	else if(navigateur == "firefox")
	{
		//le texte de la note post-it
		document.getElementById('corpsNote').innerHTML = '<h4>Bienvenue sur gantis.fr !</h4>Vous utilisez firefox : c\'est un bon point. Firefox obtient en effet un score honorable au test acid3. <br/>Toutes les fonctions du site sont donc activées.<br/>Les fenêtres sont déplaçables et le chat en ajax se met à jour automatiquement<br/>Mais certains éléments du site peuvent ne pas s\'afficher correctement.<br/>Nous vous conseillons donc d\'utiliser <span onclick="window.open(\'http://www.apple.com/fr/safari/\',\'safari\');" style="cursor:pointer;">safari</span> !';
		document.getElementById('corpsNote').style.fontSize ="13px";
		//nous devons ajuster manuellement à cause du "overflow:default" sur le corps du post-it
		document.getElementById('corpsNote').style.height ="105%";
	}
	else if(navigateur == "msie")
	{
		//le texte de la note post-it
		document.getElementById('corpsNote').innerHTML = '<h4>Bienvenue sur gantis.fr !</h4><br/>Comme tu es sur internet explorer tu ne pourra pas faire gand chose.<br/>Le chat est désactivé et les fenetres ne sont pas déplaçables.<br/>Nous te conseillons d\'installer <span onclick="window.open(\'http://www.mozilla.com/firefox/\',\'safari\');" style="cursor:pointer;">firefox</span> où mieux : <span onclick="window.open(\'http://www.apple.com/fr/safari/\',\'safari\');" style="cursor:pointer;">safari</span> !';
		//nous devons ajuster manuellement à cause du "overflow:default" sur le corps du post-it
		document.getElementById('corpsNote').style.height ="180px";
		document.getElementById('envoyerChat').zIndex = "90";
	}
	else if(navigateur == "opera")
	{
		//le texte de la note post-it
		document.getElementById('corpsNote').innerHTML = '<h4>Bienvenue sur gantis.fr !</h4>Vous utilisez Opera : c\'est un bon point. Opera obtient en effet un score honorable au test acid3. <br/>Toutes les fonctions du site sont donc activées.<br/>Les fenêtres sont déplaçables et le chat en ajax se met à jour automatiquement<br/>Mais certains éléments du site peuvent ne pas s\'afficher correctement.<br/>Nous vous conseillons donc d\'utiliser <span onclick="window.open(\'http://www.apple.com/fr/safari/\',\'safari\');" style="cursor:pointer;">safari</span> !';
		//nous devons ajuster manuellement à cause du "overflow:default" sur le corps du post-it
		document.getElementById('corpsNote').style.height ="200px";
		
	}
	else
	{
		document.getElementById('corpsNote').innerHTML = "";
		document.getElementById('note').style.visibility ="hidden";
	}
	return 0;
}
function longueurChat()  //defini la longueur du chat sous safari
{
	if(navigateur == "safari")
{
	return "9";
}
else
{
	return "9";
}
}
//Fonction de préchargement Des images pour une meilleur visibilité
function prechargementDesImages()
{
	//on test la gestion des images par le navigateur
	if(document.images)
	{
		tableauDesImages = new Array();
		for(var i=0;i<prechargementDesImages.arguments.length;i++)
		{
			tableauDesImages[i] = new Image();
			//on évite les attaques pirates qui pourraient lancer des requetes de préchargement de n'importe quel site avec un chemin delatif forcé /images/
			tableauDesImages[i].src = "images/"+prechargementDesImages.arguments[i]+"";
		}
	}
	return;
}
prechargementDesImages("ajaxLoad.gif","barreSurbrillance.jpg","indicateurDock.png","angleBasDroit.png","angleHautDroit.png","angleBasGauche.png","angleHautGauche.png","bordBasHtmlInfo.png","bordDroiteHtmlInfo.png","bordGaucheHtmlInfo.png","bordHautHtmlInfo.png");

///////////////////// HEURE //////////////////////

var heures;
var minutes;
var jour;
var secondes;

function heure() //affiche l'heure de façon actualisé dans les balise horloge
{
	var timer = new Date();
	heures = timer.getHours();
	minutes = timer.getMinutes();
	minutes = formatHeure(minutes);
	heures = formatHeure(heures);
	jour = timer.getDay();
	jour = joursDeLaSemaine(jour);
	secondes = timer.getSeconds();
	secondes = formatHeure(secondes);
	document.getElementById('horloge').innerHTML = "&nbsp; "+jour+" "+heures+":"+minutes+":"+secondes;
	//on boucle la fonction toutes les secondes
	setTimeout("heure()", 1000 );
}
function formatHeure(valeur) //format l'heure en ajoutant un zero au entiers < 10
{
	valeur=Number(valeur);
	if(valeur < 10)
	{
		valeur = "0"+valeur
	}
	return valeur;
}
function joursDeLaSemaine(jour) //revoie le jour des la semaine correspondant à son numéro (à tester pour le dimanche)
{
	//on assigne un jour en fonction de son nombre
	jour=Number(jour);
	switch(jour)
	{
		case 1: return "lun.";
		case 2: return "mar.";
		case 3: return "mer.";
		case 4: return "jeu.";
		case 5: return "ven.";
		case 6: return "sam.";
		case 7: return "dim.";
		case 0: return "dim.";
	}
	
}
heure();
///////////////////// FIN HEURE //////////////////


var survol = 0;
//fonction definissant l'attitude de la barre des taches
function survolOn(div)
{
	
		document.getElementById(div).style.background = "url(\"images/barreSurbrillance.jpg\") repeat-x";
	document.getElementById(div).style.color = "white";
	if(div == "pomme")
	{
		document.getElementById('menuPomme').style.visibility = "visible";
	}
	survolOff();
	survol = div;
}

function survolOff()
{
	
	if(!(survol == 0))
	{	
	document.getElementById(survol).style.background = "";
	document.getElementById(survol).style.color = "#222222";
	if(survol == "pomme")
	{
		document.getElementById('menuPomme').style.visibility = "hidden";
	}
	survol=0;
	}
	
}
/*function infoDockOn(div,position)
{
	document.getElementById('infoDock').style.visibility = "visible";
	document.getElementById('centreInfoDock').innerHTML = div;
	document.getElementById('infoDockTable').style.marginLeft = position+"px";
	return 0;
}
function infoDockOff()
{
	document.getElementById('infoDock').style.visibility = "hidden";
	return 0;
}
*/

//enregistrement de cookies et lecture
function enregistrerCookie(nom,valeur)
{
	var timer = new Date();
	timer.setTime(timer.getTime()+30*7*24*60*60*1000);
	document.cookie= ""+nom+"="+escape(valeur)+"; expires="+timer.toGMTString()+"";
	return;
}

function lireCookie(nom)
{
	if(document.cookie.length==0)
	{
		return "";
	}
	var regexCookies = new RegExp("(; )","g");
	var cookies  = document.cookie.split(regexCookies);
	for(var i=0;i<cookies.length;i++)
	{
		var regexInfo = new RegExp("=","g");
		var infos =cookies[i].split(regexInfo);
		if(infos[0] == nom)
		{
			return unescape(infos[1]);
		}
	}
	return "";
}
function pseudoGantis()
{
	pseudo = lireCookie("pseudoGantis");
	if(pseudo != "")
	{
		document.getElementById('pseudo').value = pseudo;
		document.getElementById('pseudoChargement').innerHTML = "Bienvenue "+pseudo;
	}
}
pseudoGantis();



/////////fonction ajax pour le chat/////////

function envoiChat(pseudo,message,nb)
{
	document.getElementById('infoAjax').style.backgroundImage = 'url("images/ajaxLoad.gif")';
	var url= "chat.php?pseudo="+pseudo+"&message="+message+"&nbText="+nb+"&heure="+jour+" "+heures+":"+minutes+"";
	var xhr_object = null; //on initialise l'objet de communication à null;
	if(window.XMLHttpRequest)
	{
		//pour firefox, safari et chrome
		xhr_object = new XMLHttpRequest();
	}
	else if(window.ActiveXObject)
	{
		//pour activeX (internet explorer)
		xhr_object = new ActiveXObject("Microsoft.XMLHTTP");
	}
	else
	{
		//pour tous les autres (les vieux). on affiche un message d'erreur en alert et on cache la fenetre de chat
		alert("Votre navigateur ne supporte pas l'ajax. Le chat ne sera donc pas disponible...");
		afficherCacher();
	return;
	}
	
	///mettre un systeme d'attente (roue qui tourne).
	
	//on fait un appelle au serveur et on attend qu'il reponde
	document.getElementById('titreChat').innerHTML = "envoi en cours";
	xhr_object.open("GET",url,true);
	//envoi des données au serveur
	xhr_object.onreadystatechange = function()
	{
		//ajout d'une fonction dans l'objet onreadystatechange
		if(xhr_object.readyState == 4)
		{
			
			//lorsque la requete est finie :
			var reponse =xhr_object.responseText;
			
			//on retourne la réponse dans la div de timeline
			
			document.getElementById("timeLineChat").innerHTML = reponse;
			document.getElementById("timeLineChat").ScrollTop = document.getElementById("timeLineChat").scrollHeight;
			if(pseudo != "")
			{
			 enregistrerCookie("pseudoGantis",pseudo);
			document.getElementById('message').value = "";
			document.getElementById('message').focus();
			}		
			//on remet le focus sur le champ de message			
			
			document.getElementById('titreChat').innerHTML = "Chat";
			document.getElementById('infoAjax').style.backgroundImage = '';
		}
	}
	xhr_object.send(null);
	
}
function scanNewMessageChat()
{
	document.getElementById('infoAjax').style.backgroundImage = 'url("images/ajaxLoad.gif")';
	if(navigateur == "safari")
	{
		var url= "chat.php?nbText="+longueurChat();
	}
	else
	{
		var url= "chat.php?nbText="+longueurChat();
	}
	
	var xhr_object = null; //on initialise l'objet de communication à null;
	if(window.XMLHttpRequest)
	{
		//pour firefox, safari et chrome
		xhr_object = new XMLHttpRequest();
	}
	else if(window.ActiveXObject)
	{
		//pour activeX (internet explorer)
		xhr_object = new ActiveXObject("Microsoft.XMLHTTP");
	}
	else
	{
		//pour tous les autres (les vieux). on affiche un message d'erreur en alert et on cache la fenetre de chat
		alert("Votre navigateur ne supporte pas l'ajax. Le chat ne sera donc pas disponnible...");
	return;
	}
	
	///mettre un systeme d'attente (roue qui tourne).
	
	//on fait un appelle au serveur et on attend qu'il reponde
	document.getElementById('titreChat').innerHTML = ".Chat.";
	xhr_object.open("GET",url,true);
	//envoi des données au serveur
	xhr_object.onreadystatechange = function()
	{
		//ajout d'une fonction dans l'objet onreadystatechange
		if(xhr_object.readyState == 4)
		{
			
			//lorsque la requete est finie :
			var reponse =xhr_object.responseText;
			
			//on retourne la réponse dans la div de timeline
				document.getElementById("timeLineChat").innerHTML = reponse;		
				document.getElementById("timeLineChat").ScrollTop = document.getElementById("timeLineChat").scrollHeight;
			document.getElementById('titreChat').innerHTML = "Chat";
			document.getElementById('infoAjax').style.backgroundImage = '';
		}
	}
	xhr_object.send(null);
	
	setTimeout("scanNewMessageChat()", 8000 );
}
scanNewMessageChat();

function deplacerDe(distance)
{
	var effectue = 0;
	var i=0.001;
	var pas = 0;
	while(distance-effectue >= 0)
	{
		pas = (1/(i*10)) *Math.exp(-4*i);
		
		i = i+0.1;
		scrollBy(0,pas/10);
		effectue = effectue + pas/10 ;
		document.getElementById('pageInfo').innerHTML = effectue +"<br/>";
		
	}
	return 0;
	
}





////////// fonctions agrandissement div, rétrécissement, déplacement //////////////////////////////
var hauteurActualise=-1;
var largeurActualise=-1; /* si on met 0, la fonction boucle puisqu'elle atteint 0 à la fin */

	
function slideHorizontal(div,largeurInitial,hauteurInitial)
{
	var cpt=1;
	if(largeurActualise == -1)
	{
		largeurInitial=Number(largeurInitial);
		largeurActualise = largeurInitial;
	}
	
	largeurActualise = largeurActualise-1;
	
	if(largeurActualise >= 0 )
	{
		document.getElementById(div).style.top = largeurActualise +"px";
		setTimeout(function() {slideHorizontal(div,largeurInitial,hauteurInitial);},10);
	}
	/*if((largeurActualise == 86) && (cpt==1))
	{
	slideVertical(div,largeurInitial,hauteurInitial);
	cpt = cpt-1;
	}*/
return 0;
}
/////////ouvrir une page//////////
var pagePrecedente = "accueil.php";
var pageActuel= "accueil.php";
var pageSuivante = "accueil.php";
function afficher(url)
{
	if((url[0] == "h" && url[1] == "t" && url[2] == "t" && url[3] == "p") || (url[0] == "w" && url[1] == "w" && url[2] == "w"))
	{
		window.open(url,"");
	}
	else
	{	
	pagePrecedente = pageActuel;
	pageActuel = url;
	url = url+"?methode=ajax";
	
	xhr_object = null;
	var xhr_object = null; //on initialise l'objet de communication à null;
	if(window.XMLHttpRequest)
	{
		//pour firefox, safari et chrome
		xhr_object = new XMLHttpRequest();
	}
	else if(window.ActiveXObject)
	{
		//pour activeX (internet explorer)
		xhr_object = new ActiveXObject("Microsoft.XMLHTTP");
	}
	else
	{
		//pour tous les autres (les vieux). on affiche un message d'erreur en alert et on cache la fenetre de chat
		alert("Votre navigateur ne supporte pas l'ajax. La navigation par ce site sera donc impossible...");
	return;
	}
	
	
	///mettre un systeme d'attente (roue qui tourne).
	
	//on fait un appelle au serveur et on attend qu'il reponde
	
	xhr_object.open("GET",url,true);
	//envoi des données au serveur
	xhr_object.onreadystatechange = function()
	{
		//ajout d'une fonction dans l'objet onreadystatechange
		if(xhr_object.readyState == 4)
		{
			
			//lorsque la requete est finie :
			var reponse =xhr_object.responseText;
			document.getElementById("information").innerHTML = reponse;
			
		}
	}
	xhr_object.send(null);
	}
}
function precedent()
{
	pageSuivante = pageActuel;
	afficher(pagePrecedente);
	
	return 0;
}
function suivant()
{
	pagePrecedente = pageActuel;
	afficher(pageSuivante);
	
	return 0;
}
function tempsDeChargement()
{
	var timerDeFin = new Date();
	var timerFinal =timerDeFin - timerDeDepart;
	document.getElementById('tempsChargement').innerHTML = "Chargé en "+Math.floor(timerFinal/10)/100+" sec";
	return;
}

////////////////////////////////////////////////////////////////////////////////////////////////////////
////////////FONCTION DOCK///////////////////////////////////////DEMANDER A ALEX PR REGLAGES/////////////
/// MISE dans un js à à part

// on récupère un tableau en javascript avec les images du dock, grace leur class (rappel : pas d'existence de getElementByClass)
/* var compteurImgDock=0;
var imgDock=new Array();
var tableauOrdreAlphabetique = new Array(); 

var imgTotals = document.getElementsByTagName('img');
for ( var compteurImg=0; compteurImg < imgTotals.length; compteurImg++)
{
	if(imgTotals[compteurImg].className == 'dockImg')
	{
		imgDock[compteurImgDock] = imgTotals[compteurImg];
		compteurImgDock++;
	}
}

///////////////////////////////fonction zoom /////////
var tailleTotale=0;
var premiereFoisActivee = true;
var grosseurImg = 65;
var milieuImg;
var tailleIconeNormale = 55;
var tailleIconeMax = 75;
var posXdock; 
document.getElementById('dockOn').onmousemove = dockGrossissement;

function dockGrossissement(e)
{
	if (document.all) // si IE le tout puissant navigateur le veux, on obtient la position de la souris par rapport à la div dock(attention au blue screen !)
	{
		posXdock = e.offsetX - document.getElementById('dockOn').offsetLeft;
	}
	else // mm chose avec un autre navigateur (un vrai)
	{
		posXdock = e.pageX - document.getElementById('dockOn').offsetLeft ;
	}
	
	for(var k=0; k < imgDock.length; k++)
	{
		if(premiereFoisActivee == true)
		{
			milieuImg = imgDock[k].offsetLeft + tailleIconeNormale/2;
		}
		else
		{
			// le milieu s'actualise puisque la taille de l'image évolue
		milieuImg = imgDock[k].offsetLeft + parseInt(imgDock[k].style.width)/2;
		}
		
		deltaMilieu = milieuImg - posXdock;
		if (deltaMilieu > 0 )
		{
			//delta tjrs négatif
			deltaMilieu = -deltaMilieu;
		}
		
		// plus delta petit (grand en valeur absolue), plus
		grosseurImg = tailleIconeMax + Math.round(deltaMilieu/6)
		
		if(grosseurImg < tailleIconeNormale)
		{
			grosseurImg = tailleIconeNormale;
		}
		else if(grosseurImg > tailleIconeMax)
		{
			grosseurImg = tailleIconeMax;
		}
		tailleTotale += (grosseurImg+7)
		imgDock[k].style.width = grosseurImg + 'px';
		imgDock[k].style.height = grosseurImg +'px';
		imgDock[k].style.marginTop = tailleIconeMax - grosseurImg +'px';
	}
	premiereFoisActivee = false;
	document.getElementById('dockOn').style.width = tailleTotale +'px';
	tailleTotale=0;
	estDehors = false;
}
var moyenneTaille= (tailleIconeMax - tailleIconeNormale) /2;

/////////Dézoomage progressif grace au settimeout, a la facon du slide ////////////////////
function dockDegrossissement()
{
	for( k=0; k<compteurImgDock; k++)
	{
		if (imgDock[k].offsetHeight > tailleIconeNormale )
		{
			if( (imgDock[k].offsetHeight - 3) > tailleIconeNormale)
			{
				imgDock[k].style.width = (imgDock[k].offsetHeight - 3)+ 'px';
				imgDock[k].style.height =(imgDock[k].offsetHeight - 3) +'px';
			}
			else
			{
				imgDock[k].style.width = tailleIconeNormale +'px';
				imgDock[k].style.height = tailleIconeNormale + 'px';
			}
		}
	}
	for( k=0; k<compteurImgDock; k++)
	{
		if(imgDock[k].offsetHeight !=  tailleIconeNormale)
		{
			setTimeout(function() {dockDegrossissement();},100);
		}
	}
	for( k=0; k<compteurImgDock; k++)
	{
		if(imgDock[k].offsetHeight ==  tailleIconeNormale)
		{
			document.getElementById('dockOn').style.width ='320px';
		}
	}
}

// contours désactivant la fonction
/*document.getElementById('contourHautDock').onmousemove = dockDegrossissement;
document.getElementById('contourGaucheDock').onmousemove = dockDegrossissement;
document.getElementById('contourDroiteDock').onmousemove = dockDegrossissement;*/

/////////////////////////////////FIN FONCTION DOCK////////////////////////////////////////
///////////////////////////////////////////////////////////////////////////////////////////////



/*function slideVertical(div,largeurInitial,hauteurInitial)
{
	if(hauteurActualise == -1)
	{
		hauteurInitial=Number(hauteurInitial);
		hauteurActualise = hauteurInitial;
	}
	hauteurActualise = hauteurActualise-1;
	
	if(hauteurActualise >= 0 )
	{
		document.getElementById(div).style.height = hauteurActualise +"px";
		setTimeout(function() {slideVertical(div,largeurInitial,hauteurInitial);},10);
	}
return 0;
} */
