
/*
* Fonction générique permettant de gérer les afficher/masquer sur le site.
*/
function toggle() {
	for (var i=0; i < arguments.length; i++) {
		var el = document.getElementById(arguments[i]);
		el.style.display = ((el.style.display != 'none') ? 'none' : '' );
	}
}

/*
* Fonction utilisée pour montrer le tooltip associé à un jeu.
* el est un élément de type image (la vignette du jeu)
* Boolean showIt true/false
*/
function tooltip(el, showIt) {
	if (!el || !el.parentNode || !el.parentNode.childNodes) return false;
	el = el.parentNode;
	for (var i=0; i < el.childNodes.length; i++) {
		var element = el.childNodes[i];
		if (element.className=='tooltip') {
			element.style.display = (showIt? 'block' : 'none' );
			
			if (element.parentNode.parentNode)
				element.parentNode.parentNode.className = (showIt? 'Home liHover' : 'Home' );
			
			break;
		}
	}
}


var isIE = document.all;
var mouseX = 0;
var mouseY = 0;

function getMouseXY(e) {
	if (!e) e = window.event;	
	if (e) {
		mouseX = isIE ? (e.clientX + document.body.scrollLeft) : e.pageX;
		mouseY = isIE ? (e.clientY + document.documentElement.scrollTop) : e.pageY;
	}
}

/*
* Fonction utilisée pour montrer le tooltip associé à un jeu en fonction de la position de l'élément parent.
* el est un élément de type image (la vignette du jeu)
* Boolean showIt true/false
*/
function tooltipMouse(el, showIt, e) {
	if (!el || !el.parentNode || !el.parentNode.childNodes) return false;
	el = el.parentNode;
	for (var i=0; i < el.childNodes.length; i++) {
		var element = el.childNodes[i];
		if (element.className=='tooltip') {
			getMouseXY(e);
			element.style.left = mouseX +"px";
			element.style.top = mouseY +"px";
			element.style.display = (showIt? 'block' : 'none' );
			break;
		}
	}
}

/*
* Fonction utilisée pour le bloc "Instructions" sur la fiche jeu.
* Permet de basculer entre chaque onglet de ce bloc.
* Si idCurrent est renseigné, c'est que l'onglet idCurrent doit rester sélectionné.
*/
function switchTab(tab, idCurrent) {
	for (var i=0; i<=7; i++) {
		var offTab = document.getElementById("tab"+i);
		var offDiv = document.getElementById("infojeux"+i);
		if (tab != i) {
			if (offTab && (!idCurrent || i != idCurrent)) offTab.className=offTab.className.replace("on","off");
			if (offDiv) offDiv.className="blocOff";
		} 
		else if (tab == i) {
			if (offTab && (!idCurrent || i == idCurrent)) offTab.className=offTab.className.replace("off","on");
			if (offDiv) offDiv.className="blocOn";
			
			if (tab==4 && document.getElementById('antispamImg').src.match("_blank")) {
				// On reinitialise l'image antispam en passant le time en parametre pour forcer le clear du cache
				document.getElementById('antispamImg').src='include/antiflood.php?token='+(new Date().getTime());
				
				// On preremplit les champs utilisateur depuis le cookie
				if (document.getElementById("email_user").value=="") {
					document.getElementById("email_user").value = get_cookie("email_user");
					document.getElementById("nom_user").value = get_cookie("nom_user");
				}
			}
		}
	}
}

/**
* Fonction utilisée pour réinitialiser le bloc Partager > Envoyer à un ami.
* Pour l'instant tab vaut tout le temps 3.
*/
function resetTab(tab, resetAmi) {
	if (tab==3) {
		// On masque les messages d'erreur et de confirmation
		document.getElementById('error').innerHTML='';
		document.getElementById('confirmation').innerHTML='';
		document.getElementById('error').style.display='none';
		document.getElementById('confirmation').style.display='none';
		
		// On remet a vide les highlights d'erreur
		document.getElementById("nom_user").className = "";
		document.getElementById("nom_ami").className = "";
		document.getElementById("email_user").className = "";
		document.getElementById("email_ami").className = "";
		document.getElementById("code").className = "";
		
		// On reinitialise l'image antispam en passant le time en parametre pour forcer le clear du cache
		document.getElementById('antispamImg').src='include/antiflood.php?token='+(new Date().getTime());
		
		if (resetAmi) {
			// On vide les champs email_ami et nom_ami
			document.getElementById("nom_ami").value = "";
			document.getElementById("email_ami").value = "";
		}

		// On enable le bouton
		document.getElementById("amiButton").disabled = false; 
		document.getElementById("amiButton").className = "bouton"; 

		// On reaffiche le formulaire
		document.formAmi.style.display='';

		// On reinitialise le lien retour
		document.getElementById('retour').href='javascript:switchTab(3)';
	}
}

/**
* Fonction pour valider les saisies du formulaire "Envoyer à un ami" sur la fiche jeu.
* Si des champs sont manquants ou invalides, on retourne une erreur et le formulaire n'est pas envoyé.
* Sinon, le bouton est grisé pour empêcher les saisies multiples.
*/
function validateContactForm() {
	var email_user = document.getElementById("email_user").value;
	var email_ami = document.getElementById("email_ami").value;
	var code = document.getElementById("code").value;
	var nom_user = document.getElementById("nom_user").value;
	var nom_ami = document.getElementById("nom_ami").value;
	document.getElementById("amiButton").disabled = true; 
	document.getElementById("amiButton").className = "boutonDisabled"; 
	
	// Reset class names before the check
	document.getElementById("nom_user").className = "";
	document.getElementById("nom_ami").className = "";
	document.getElementById("email_user").className = "";
	document.getElementById("email_ami").className = "";
	document.getElementById("code").className = "";
	document.getElementById("error").innerHTML = "";
	
	var isError = false;
	
	if (code == "") {
		isError = true;
		document.getElementById("code").className = "errorField";
	} 
	if (nom_ami == "") {
		isError = true;
		document.getElementById("nom_ami").className = "errorField";
	} 
	if (nom_user == "") {
		isError = true;
		document.getElementById("nom_user").className = "errorField";
	} 
	if (email_user == "") {
		isError = true;
		document.getElementById("email_user").className = "errorField";
	} else if (!checkMail(email_user)) {
		isError = true;
		document.getElementById("email_user").className = "errorField";
	} 
	if (email_ami == "") {
		isError = true;
		document.getElementById("email_ami").className = "errorField";
	} else if (!checkMail(email_ami)) {
		isError = true;
		document.getElementById("email_ami").className = "errorField";
	} 
	
	if (isError) {
		document.getElementById("error").innerHTML += JS_erreurValidation+"<br />";
		document.getElementById("error").style.display = "";
		document.getElementById("amiButton").disabled = false; 
		document.getElementById("amiButton").className = "bouton"; 
		return false;
	} else {
		document.getElementById("amiButton").disabled = true; 
		document.getElementById("amiButton").className = "boutonDisabled"; 
		return true;
	}
}

/* Fonction pour limiter la taille d'un textarea */
function limite(zone,max) { 
	if(zone.value.length>=max) {
		zone.value=zone.value.substring(0,max);
	}
} 

function checkMail(email) {
	var ok = "1234567890abcdefghijklmnopqrstuvwxyz.@-_ABCDEFGHIJKLMNOPQRSTUVWXYZ";
	// check if there is no special characters
	for(i=0; i<email.length; i++){
		if(ok.indexOf(email.charAt(i))<0)
			return false;
	}

	// check if the email is well formed
	var filter = /^([a-zA-Z0-9_\.\-])+\@(([a-zA-Z0-9\-])+\.)+([a-zA-Z0-9]{2,4})+$/;
	if (filter.test(email))
		return true;
	else
		return false; 
}

/**
* Fonction appelée lorsque l'utilisateur clique sur le bouton "Envoyer" depuis la fiche jeu.
* Vérifie la validité du formulaire, appelle l'action en Ajax, et affiche la confirmation.
*/
function envoyerAmi() {
	if (validateContactForm()) {
		var form = document.formAmi;
		// Construction des parametres
		var params = "lang="+JS_lang;
		params += "&nom_ami="+encodeURIComponent(form.nom_ami.value)+"&email_ami="+encodeURIComponent(form.email_ami.value);
		params += "&nom_user="+encodeURIComponent(form.nom_user.value)+"&email_user="+encodeURIComponent(form.email_user.value);
		params += "&code="+encodeURIComponent(form.code.value)+"&lienJeu="+encodeURIComponent(form.lienJeu.value);
		params += "&nomJeu="+encodeURIComponent(form.nomJeu.value);
		
		// Stockage en cookie des infos de l'envoyeur
		setCookie("nom_user",form.nom_user.value);
		setCookie("email_user",form.email_user.value);
		
		// Envoi de la requete
		var server = new distantServer;
		nt = server.send('include/envoyerAmi.php?'+params);
		
		// Execution de la reponse
		eval(nt);
	}
}


function emptyField(inputElement, defaultMessage) {
	document.getElementById("searchtxt").className = "searchInput";
	document.getElementById("errorSearch").style.display = "none";
	if (trim(inputElement.value) == defaultMessage) {
		inputElement.value = "";
	}
}

function resetField(inputElement, defaultMessage) {
	document.getElementById("searchtxt").className = "searchInput";
	document.getElementById("errorSearch").style.display = "none";
	if (trim(inputElement.value) == "") {
		inputElement.value = defaultMessage;
	}
}

// Supprime les espaces inutiles en début et fin de la chaîne passée en paramètre.
function trim(aString) {
    return aString.replace(/^\s+/, "").replace(/\s+$/, "");
}


/**
* Retourne true si la chaîne est un nombre entier positif.
*/
function isUnsignedInteger(s) {
	return (s.toString().search(/^[0-9]+$/) == 0);
}

/**
* Fonction appelée lorsqu'un utilisateur soumet le formulaire d'ajout de commentaire sur les fiches jeux.
*/
function validateMsg(formElt) {
	var msg = formElt.message.value;
	if (trim(msg)=="") {
		alert(JS_erreurValidation);	
		return false;
	}
	return true;
}

function loadGallery(direction, id) {
	var container = document.getElementById(containerId);
	var wait = document.getElementById(waitId);
	container.style.display = "none";	
	wait.style.display = "block";	
	container.innerHTML = "";
	
	if (id<0) id = 486;
	else if (id>486) id = 0;
	
	var urlGallery = JS_url+"include/get_vghd.php?dir="+direction+"&index="+id+"&lang="+JS_lang+"&nbImages="+nbImages;
	
	// Envoi de la requete
	var server = new distantServer;
	nt = server.send(urlGallery);
	
	// Execution de la reponse
	container.innerHTML = nt;
	container.style.display = "block";	
	wait.style.display = "none";
	indexGallery = id;
}

