/*********************************************************
*  Fonctions JavaScript - AJAX - objets XMLHttpRequest   *
*  Chateau du Portail - http://www.chateauduportail.com  *
*********************************************************/

/**
 * Variables globales
 */

var _navigateur = navigator.appName;
var _page = "";
var _langue = "fr";
var _enCours = false; //vaut 'true' si la page est en cours de chargement
var _aEffacer = true; //le champ du formulaire de contact 'message' sera effacé si cette variable vaut 'true'
var _tFX, _tScroll;   //timers
var _texte;

/**
 * Création d'un nouvel objet XMLHttpRequest
 */

function creerXHR() {
	var xhr = null;
	
	try {
		//Netscape ou autre
		xhr = new XMLHttpRequest();
	}
	catch (e) {
		try {
			//MSIE
			xhr = new ActiveXObject("Microsoft.XMLHTTP");
		}
		catch (e) {}
	}
	
	return xhr;
}

/**
 * Changement de page
 */

function page(page, id, changeLangue, fx) {
	var xhr = creerXHR();
	
	if (xhr !=null) {
		if (!_enCours) {
			_enCours = true;
			_page = page;
			
			xhr.open("GET", "contenu.php?page=" + _page + "&langue=" + _langue + "&navigateur=" + _navigateur + "&ajax=1", true);
			
			//Mode asynchrone - utilisation de la fonction onreadystatechange
			xhr.onreadystatechange = function() {
				if (xhr.readyState == 4 && xhr.status == 200) {
					_texte = xhr.responseText;
					if (!changeLangue)
						document.getElementById("image").innerHTML = '<img src="images/' + id + '.jpg" border="0" alt="" />';
					changerTexte(fx, (_navigateur == "Microsoft Internet Explorer" ? 40 : 30));
					_aEffacer = true;
				}
			}
			
			xhr.send(null);
		}
	}
	else
		return true;
	
	return false;
}

/**
 * Envoi de mail
 */

function mail(f) {
	var xhr = creerXHR();
	
	var nom = f.elements["nom"].value;
	var adresse = f.elements["adresse"].value;
	var objet = (f.elements["objet"].selectedIndex != 4 ? f.elements["objet"].value : f.elements["precision"].value);
	var message = f.elements["message"].value;
	var mailValide = (adresse.indexOf("@") != -1 && adresse.indexOf(".") != -1);
	var data;
	
	//Vérification des informations
	if (nom == "") {
		alert("Veuillez spécifier votre nom, SVP.\n\nPlease specify your name.");
		document.contact.nom.focus();
	}
	else if (adresse == "") {
		alert("Veuillez spécifier votre adresse mail, SVP.\n\nPlease specify your e-mail.");
		document.contact.adresse.focus();
	}
	else if (!mailValide) {
		alert("Adresse mail non valide !\n\ne-mail incorrect !");
		document.contact.adresse.focus();
	}
	else if (f.elements["objet"].selectedIndex == 4 && f.elements["precision"].value == "") {
		alert("Vous avez choisi comme objet 'Autre', veuillez préciser.\n\nYou have chosen 'Other', please specify.");
		document.contact.precision.focus();
	}
	else if (message == "" || _aEffacer) {
		alert("Vous n'avez pas écrit de message !\n\nYou didn't write a message!");
		document.contact.message.focus();
	}
	//Envoi des informations
	else if (xhr != null) {
		data = "nom=" + escape(nom) + "&adresse=" + escape(adresse) + "&objet=" + escape(objet) + "&message=" + escape(message);
		
		//Ouverture de la page
		xhr.open("POST", "mail.php", true);
		
		//Mode asynchrone - utilisation de la fonction onreadystatechange
		xhr.onreadystatechange = function() {
			if (xhr.readyState == 4 && xhr.status == 200) {
				//Réinitialisation des champs de formulaire
				document.contact.nom.value = "";
				document.contact.adresse.value = "";
				document.contact.objet.selectedIndex = 0;
				document.contact.precision.value = "";
				masquer("precision");
				document.contact.message.value = "";
				afficher("accReceptMail");
			}
		}
		
		//Envoi par POST
		xhr.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
		xhr.setRequestHeader("Content-Transfer-Encoding", "iso-8859-1");
		xhr.send(data);
	}
	else
		return true;
	
	return false;
}

/**
 * Changer les menus du site
 */

function menu(menu) {
	var xhr = creerXHR();
	
	if (xhr !=null && !_enCours) {
		xhr.open("GET", "menus.php?menu=" + menu + "&langue=" + _langue, true);
		
		//Mode asynchrone - utilisation de la fonction onreadystatechange
		xhr.onreadystatechange = function() {
			if (xhr.readyState == 4 && xhr.status == 200) {
				document.getElementById(menu).innerHTML = xhr.responseText;
			}
		}
		
		xhr.send(null);
	}
}
		

/**
 * Changer la langue du site
 */

function langue(langue) {
	var nonSelect;
	_langue = langue;
	
	if (langue == 'fr')
		nonSelect = 'uk';
	else
		nonSelect = 'fr';
	
	document.getElementById(nonSelect).style.textDecoration = "none";
	document.getElementById(langue).style.textDecoration = "underline";
	
	menu('menuA');
	menu('menuB');
	
	var ret = page(_page, "", true, 0);
	
	return ret;
}

/**
 * Changer le texte de contenu de la page (avec ou sans effet)
 **
 * Paramètres d'effet (valeur de 'fx') :
 *     0 = Pas d'effet
 *     1 = Effet de fondu en disparition
 *     2 = Effet de fondu en apparition
 *     3 = Stopper les effets
 */

function changerTexte(fx, duree) {
	var element = document.getElementById("contenu");
	var opacite;
	
	//Pas d'effet
	if (fx == 0) {
		element.innerHTML = _texte;
		_texte = "";
		_enCours = false;
	}
	//Stop-effet
	else if (fx == 3) {
		clearTimeout(_tFX);
		_enCours = false;
	}
	else {
		//Mode disparition
		if (fx == 1) {
			//Si le navigateur est MSIE
			if (_navigateur == "Microsoft Internet Explorer") {
				opacite = parseInt(element.style.filter.substring(14, element.style.filter.length - 1)) - 10;
				element.style.filter = "alpha(opacity=" + opacite + ")";
			}
			else {
				opacite = parseFloat(element.style.opacity) - 0.1;
				element.style.opacity = "" + opacite;
			}
			
			if (opacite == 0) {
				//Réinitialiser la position du texte de contenu
				document.getElementById("contenu").style.top = "0px";
				//Affichage du contenu de la page
				element.innerHTML = _texte;
				_texte = "";
				//Passage en mode 'apparition'
				fx = 2;
			}
		}
		//Mode apparition
		else {
			//Si le navigateur est MSIE
			if (_navigateur == "Microsoft Internet Explorer") {
				opacite = parseInt(element.style.filter.substring(14, element.style.filter.length - 1)) + 10;
				element.style.filter = "alpha(opacity=" + opacite + ")";
			}
			else {
				opacite = parseFloat(element.style.opacity) + 0.1;
				element.style.opacity = "" + opacite;
			}
			
			if (opacite == 1 || opacite == 100) {
				//Passage en mode 'stop-effet'
				fx = 3;
			}
		}
		
		_tFX = setTimeout("changerTexte(" + fx + ", " + duree + ");", duree);
	}
}

/**
 * Faire défiler le contenu textuel en cas d'overflow
 */

function defilerTexte(sens, pas, duree) {
	var element = document.getElementById("contenu");
	
    if (parseInt(element.style.top) + (pas * sens) > 0 || parseInt(element.style.top) + (pas * sens) < -(element.offsetHeight - document.getElementById("support").offsetHeight))
		clearTimeout(t2);
    else {
        element.style.top = (parseInt(element.style.top) + (pas * sens)) + "px";
		
		_tScroll = setTimeout("defilerTexte(" + sens + ", " + pas + ", " + duree + ");", duree);
	}
}

/**
 * Ouvrir une fenêtre popup
 **
 * Paramètres :
 *     url = adresse de la page à ouvrir dans la fenêtre popup
 *     nom = nom de la fenêtre popup
 *     tbar = afficher ou non la barre d'outil (0 ou 1)
 *     mbar = afficher ou non la barre de menu (0 ou 1)
 *     stat = afficher ou non la barre de status (0 ou 1)
 *     loc = afficher ou non la barre d'adresse (0 ou 1)
 *     sbars = afficher ou non les scrollbars (0 ou 1)
 *     w = longueur de la fenêtre popup
 *     h = hauteur de la fenêtre popup
 *     t = marge par rapport au haut de l'écran (top)
 *     l = marge par rapport à la gauche de l'écran (left)
 */

function popup(url, nom, tbar, mbar, stat, loc, sbars, w, h, t, l) {
	var caract = "toolbar=" + tbar + ",menubar=" + mbar + ",status=" + stat + ",location=" + loc + ",scrollbars=" + sbars + ",width=" + w + ",height=" + h + ",top=" + t + ",left=" + l;
	var popup = window.open(url, nom, caract);
	
	return false;
}

/**
 * Vérifier l'objet du mail sélectionner afin d'afficher ou non le champ 'précisez'
 */

function verifObjet() {
	if (document.contact.objet.selectedIndex == 4)
		afficher("precision");
	else
		masquer("precision");
}

/**
 * Effacer la zone de message lors du focus sur celui-ci s'il y a le message
 * expliquant ce que doit contenir le message
 */

function viderChamp() {
	if (_aEffacer)
		document.contact.message.value = "";
	
	_aEffacer = false;
}

/**
 * Vérifier le message à poster dans le livre d'or
 */

function verifMessage() {
	var nom = document.ajoutMessage.nom.value;
	var message = document.ajoutMessage.message.value;
	var valide = true;
	
	if (nom == "") {
		alert("Veuillez indiquer votre nom, SVP.\n\nPlease specify your name.");
		document.ajoutMessage.nom.focus();
		valide = false;
	}
	else if (message == "") {
		alert("Vous n'avez pas écrit de message !\n\nYou didn't write a message!");
		document.ajoutMessage.message.focus();
		valide = false;
	}
	
	if (!valide)
		return false;
	else
		return true;
}

/**
 * Afficher ou masquer un élément connaissant son ID
 */

function afficher(id) {
	if (document.getElementById(id).style.display == "none")
		document.getElementById(id).style.display = "";
}

function masquer(id) {
	if (document.getElementById(id).style.display == "")
		document.getElementById(id).style.display = "none";
}
