Prototype.Browser.IE6 = Prototype.Browser.IE && parseInt(navigator.userAgent.substring(navigator.userAgent.indexOf("MSIE") + 5)) == 6;
Prototype.Browser.IE7 = Prototype.Browser.IE && !Prototype.Browser.IE6;

var toggleMenu = false;
var currentUlMenu;
// Fonction de création d'un objet XMLHTTPRequest
function getXhr() {
    var xhr = null;
    if (window.XMLHttpRequest) // Firefox et autres
        xhr = new XMLHttpRequest();
    else if (window.ActiveXObject) { // Internet Explorer
        try {
            xhr = new ActiveXObject("Msxml2.XMLHTTP");
        } catch (e) {
            xhr = new ActiveXObject("Microsoft.XMLHTTP");
        }
    }
    else { // XMLHttpRequest non supporté par le navigateur 
        alert("Votre navigateur ne supporte pas les objets XMLHTTPRequest...");
        xhr = false;
    }
    return xhr;
}

function go(c) { if (!c.data.replace(/\s/g, '')) c.parentNode.removeChild(c); }

function clean(d) {
    var bal = d.getElementsByTagName('*');
    for (i = 0; i < bal.length; i++) {
        a = bal[i].previousSibling;
        if (a && a.nodeType == 3)
            go(a);
        b = bal[i].nextSibling;
        if (b && b.nodeType == 3)
            go(b);
    }
    return d;
}

// Fonction de création du menu de navigation
function bindMenu() {
    Event.observe($('deplierMenu'), 'click', deplierMenu);
    //Création d'un objet XMLHTTPRequest
    var xhr = getXhr();
    // On défini ce qu'on va faire quand on aura la réponse
    xhr.onreadystatechange = function() {
        // On ne fait quelque chose que si on a tout reçu et que le serveur est ok
        if (xhr.readyState == 4 && xhr.status == 200) {

            var docXML = xhr.responseXML;
            var menus = docXML.getElementsByTagName("menu");
            ulMenus = document.createElement('ul');
            for (var i = 0; i < menus.length; i++) {
                liMenus = document.createElement('li');
                Element.addClassName(liMenus, 'lienMenu');
                Event.observe(liMenus, 'click', function() {
                    toggleRubriques(this);
                });
                var sMenus = menus[i].getElementsByTagName('smenu');
                if (sMenus.length > 0) {
                    liMenus.appendChild(document.createTextNode(menus[i].getAttribute('description')));
                    ulSousMenu = document.createElement('ul');
                    Element.addClassName(ulSousMenu, 'closeUl');
                    ulSousMenu.style.display = 'none';
                    for (var j = 0; j < sMenus.length; j++) {
                        liSousMenu = document.createElement('li');
                        sousLien = document.createElement('a');
                        sousLien.href = sMenus[j].getAttribute('url');
                        sousLien.appendChild(document.createTextNode(sMenus[j].getAttribute('description')));
                        Element.addClassName(sousLien, 'lienSousMenu');
                        liSousMenu.appendChild(sousLien);
                        ulSousMenu.appendChild(liSousMenu);
                    }
                    liMenus.appendChild(ulSousMenu);
                }
                else {
                    lien = document.createElement('a');
                    lien.href = menus[i].getAttribute('url');
                    lien.appendChild(document.createTextNode(menus[i].getAttribute('description')));
                    Element.addClassName(lien, 'lienMenu');
                    liMenus.appendChild(lien);
                }
                ulMenus.appendChild(liMenus);
            }
            $('menu').appendChild(ulMenus);

            $$('#menu .lienMenu').each(function(l) {
                Event.observe(l, 'mouseover', function() {
                    Element.addClassName(l, 'lienMenuHover');
                });
                Event.observe(l, 'mouseout', function() {
                    Element.removeClassName(l, 'lienMenuHover');
                });
            });

            $$('#menu .lienSousMenu').each(function(l) {
                Event.observe(l, 'mouseover', function() {
                    Element.addClassName(l, 'lienSousMenuHover');
                });
                Event.observe(l, 'mouseout', function() {
                    Element.removeClassName(l, 'lienSousMenuHover');
                });
            });
        }
    }
    //Définition du fichier XML à récupérer
    xhr.open("GET", "xml/menu.xml?ms=" + new Date().getTime(), true);
    xhr.setRequestHeader("Cache-Control", "no-cache");
    xhr.send(null);
}

function toggleRubriques(elt) {
    if (elt.down('ul')) {
        if (elt.down('ul').style.display == 'none') {
            elt.down('ul').style.display = 'block';
        }
        else {
            elt.down('ul').style.display = 'none';
        }
    }
    if (currentUlMenu) {
        currentUlMenu.style.display = 'block';
    }
    currentUlMenu = null;
}

// Fonction permettant de déplier ou replier tout le menu
function deplierMenu() {
    //Récupération de tous les éléments de classe 'closeUl'
    var closeUl = $('menu').getElementsByClassName('closeUl');
    if (toggleMenu == false) {
        toggleMenu = true;
        $('deplierMenu').innerHTML = "Replier tout le menu";
        $A(closeUl).each(function(c) {
            c.style.display = "block";
        });
    }
    else {
        toggleMenu = false;
        $('deplierMenu').innerHTML = "D&eacute;plier tout le menu";
        $A(closeUl).each(function(c) {
            c.style.display = "none";
        });
    }
}

// Fonction de récupération du contenu du fichier actualites.xml
function getNews() {
    //Création d'un objet XMLHTTPRequest
    var xhr = getXhr();
    // On défini ce qu'on va faire quand on aura la réponse
    xhr.onreadystatechange = function() {
        // On ne fait quelque chose que si on a tout reçu et que le serveur est ok
        if (xhr.readyState == 4 && xhr.status == 200) {
            //Récupération du flux XML
            var docXML = clean(xhr.responseXML.documentElement);
            $('content').innerHTML = "";
            //Mise à jour de l'élément d'id 'content' avec le résultat de la requête
            //Exécution de la fonction displayNews pour gérer l'affichage des news
            displayNews(docXML);
        }
    }
    //Définition du fichier à récupérer
    xhr.open("GET", "xml/actualites.xml?ms=" + new Date().getTime(), true);
    xhr.setRequestHeader("Cache-Control", "no-cache");
    xhr.send("");
}

// Fonction d'affichage des actualités
function displayNews(docXML) {
    var divActualites = document.createElement('div');
    divActualites.id = 'actualites';
    $('content').appendChild(divActualites);
    //Récupération depuis le flux XML de toutes les actualités
    var actu = docXML.getElementsByTagName('actualite');
    $A(actu).each(function(s) {
        var titre = s.getElementsByTagName('titre')[0].firstChild.nodeValue;
        var date = s.getElementsByTagName('date')[0].firstChild.nodeValue;
        var message = s.getElementsByTagName('message')[0].firstChild.nodeValue;
        contentActu = document.createElement('div');
        var headerActu = document.createElement('div');
        var titreTexte = document.createTextNode(titre);
        headerActu.appendChild(titreTexte);
        contentActu.appendChild(headerActu);
        corpsActu = document.createElement('div');
        corpsActu.innerHTML = message;
        contentActu.appendChild(corpsActu);
        dateActu = document.createElement('div');
        dateActu.appendChild(document.createTextNode(date));
        contentActu.appendChild(dateActu);
        $('actualites').appendChild(contentActu);
        contentActu.className = 'actu';
        headerActu.className = 'titreActu';
        dateActu.className = 'dateActu';
    });
}

// Fonctions d'envoi de mail via la rubrique Contacts
function sendMail() {
    //Création d'un objet XMLHTTPRequest
    var xhr = getXhr();
    //Récupération de la valeur du champ 'nom'
    var nom = $('nom').value;
    //Récupération de la valeur du champ 'mail'
    var mail = $('mail').value;
    //Récupération de la valeur du champ 'sujet'
    var sujet = $('sujet').value;
    //Récupération de la valeur du champ 'message'
    var message = $('message').value;
    //Les champs texte des messages d'erreurs sont effacés
    $('inputNomEmpty').innerHTML = "";
    $('inputMailEmpty').innerHTML = "";
    $('inputSujetEmpty').innerHTML = "";
    $('inputMessageEmpty').innerHTML = "";
    //Si la fonction checkSendMail renvoie 'true'
    if (checkSendMail(nom, mail, sujet, message)) {
        // On défini ce qu'on va faire quand on aura la réponse
        xhr.onreadystatechange = function() {
            // On ne fait quelque chose que si on a tout reçu et que le serveur est ok
            if (xhr.readyState == 4 && xhr.status == 200) {
                //Affichage de la réponse à la requête dans l'élément d'id messageReponseMail
                $('messageReponseMail').innerHTML = xhr.responseText;
            }
        }
        //Définition du script à exécuter
        xhr.open("POST", "scripts/EnvoiMail.aspx", true);
        xhr.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded;charset=utf-8');
        //Envoi des paramètres en POST
        xhr.send("nom=" + nom + "&mail=" + mail + "&sujet=" + sujet + "&message=" + message);
        //Affichage du message d'attente durant l'envoi du mail
        $('messageReponseMail').innerHTML = "Envoi du mail en cours ...";
    }
    //Sinon
    else {
        //On exécute la fonction displayMessagesEnvoiMail
        displayMessagesEnvoiMail(nom, mail, sujet, message);
    }
}

// Fonction de vérification d'informations valides avant l'envoi de mail
function checkSendMail(nom, mail, sujet, message) {
    //Si un des champs est vide
    if (nom.empty() || mail.empty() || sujet.empty() || message.empty()) {
        //Alors on retourne false
        return false;
    }
    //Sinon
    else {
        //On retourne true
        return true;
    }
}

// Fonction d'affichage d'infos manquantes avant l'envoi de mails
function displayMessagesEnvoiMail(nom, mail, sujet, message) {
    //Si le champ 'nom' est vide
    if (nom.empty())
    //Alors on affiche un message dans l'élément d'id 'inputNomEmpty'
        $('inputNomEmpty').innerHTML = "Vous devez renseigner votre nom";

    //Définition d'une expression régulière permettant de vérifier la validité d'une adresse mail
    var re = /^[^@]+@(([\w\-]+\.){1,4}[a-zA-Z]{2,4}|(([01]?\d?\d|2[0-4]\d|25[0-5])\.){3}([01]?\d?\d|2[0-4]\d|25[0-5]))$/;
    //Si le champ 'mail' ne respecte pas cette expression régulière
    if (!re.test(mail))
    //Alors on affiche un message dans l'élément d'id 'inputMailEmpty'
        $('inputMailEmpty').innerHTML = "Votre adresse email est invalide";

    //Si le champ 'mail' est vide       
    if (mail.empty())
    //Alors on affiche un message dans l'élément d'id 'inputMailEmpty'
        $('inputMailEmpty').innerHTML = "Vous devez renseigner votre adresse email";

    //Si le champ 'sujet' est vide
    if (sujet.empty())
    //Alors on affiche un message dans l'élément d'id 'inputSujetEmpty'
        $('inputSujetEmpty').innerHTML = "Vous devez renseigner l'objet de votre message";

    //Si le champ 'message' est vide    
    if (message.empty())
    //Alors on affiche un message dans l'élément d'id 'inputMessageEmpty'
        $('inputMessageEmpty').innerHTML = "Votre message ne peut &ecirc;tre vide";
}

// Fonction d'affichage de la page Plan
function bindPlan() {
    //Création d'un objet XMLHTTPRequest
    var xhr = getXhr();
    // On défini ce qu'on va faire quand on aura la réponse
    xhr.onreadystatechange = function() {
        // On ne fait quelque chose que si on a tout reçu et que le serveur est ok
        if (xhr.readyState == 4 && xhr.status == 200) {
            //Mise à jour de l'élément d'id 'content' avec le résultat de la requête
            $('content').innerHTML = xhr.responseText;
        }
    }
    //Définition du fichier à récupérer
    xhr.open("GET", "Plan.htm?ms=" + new Date().getTime(), true);
    xhr.setRequestHeader("Cache-Control", "no-cache");
    xhr.send("");
}

function formatDate(dt) {
    var annee = dt.substr(4, 4);
    var mois = dt.substr(2, 2);
    var jour = dt.substr(0, 2);
    switch (mois) {
        case "01":
            mois = "Janvier";
            break;
        case "02":
            mois = "F&eacute;vrier";
            break;
        case "03":
            mois = "Mars";
            break;
        case "04":
            mois = "Avril";
            break;
        case "05":
            mois = "Mai";
            break;
        case "06":
            mois = "Juin";
            break;
        case "07":
            mois = "Juillet";
            break;
        case "08":
            mois = "Ao&ucirc;t";
            break;
        case "09":
            mois = "Septembre";
            break;
        case "10":
            mois = "Octobre";
            break;
        case "11":
            mois = "Novembre";
            break;
        case "12":
            mois = "D&eacute;cembre";
            break;
    }
    return jour + " " + mois + " " + annee;
}


// Fonction pour récupérer le contenu de revue de presse 
function getRevuePresse() {
    //Création d'un objet XMLHTTPRequest
    var xhr = getXhr();

    // On défini ce qu'on va faire quand on aura la réponse
    xhr.onreadystatechange = function() {
        // On ne fait quelque chose que si on a tout reçu et que le serveur est ok
        if (xhr.readyState == 4 && xhr.status == 200) {
            $('content').innerHTML = xhr.responseText;
            $$('#revueDePresse a').each(function(tit) {
                Event.observe(tit, 'mouseover', function() {
                    Element.addClassName(tit, 'titreHover');
                });

                Event.observe(tit, 'mouseout', function() {
                    Element.removeClassName(tit, 'titreHover');
                });
            });
        }
    }
    //Définition du fichier à récupérer
    xhr.open("GET", "scripts/getArticles.php?ms=" + new Date().getTime(), true);
    xhr.setRequestHeader("Cache-Control", "no-cache");
    xhr.send("");
}

//Fonction d'ouverture et de fermeture d'un élément
function toggle(elt) {
    var display = elt.style.display;
    if (display == "block") {
        elt.style.display = "none";
    }
    else {
        elt.style.display = "block";
    }
}

// Fonction de création du plan du site
function bindPlanSite() {
    //Création d'un objet XMLHTTPRequest
    var xhr = getXhr();

    // On défini ce qu'on va faire quand on aura la réponse
    xhr.onreadystatechange = function() {
        // On ne fait quelque chose que si on a tout reçu et que le serveur est ok
        if (xhr.readyState == 4 && xhr.status == 200) {
            var docXML = clean(xhr.responseXML.documentElement);
            menus = docXML.getElementsByTagName('menu');
            $A(menus).each(function(m) {
                var div = document.createElement('div');
                Element.addClassName(div, 'rubriquePlanSite');
                a = document.createElement('a');
                a.appendChild(document.createTextNode(m.getAttribute('description')));
                if (m.getAttribute('url')) {
                    a.href = m.getAttribute('url');
                    Element.addClassName(a, 'lienRubrique');
                }
                div.appendChild(a);

                smenus = m.getElementsByTagName('smenu');
                if (smenus.length > 0) {
                    ul = document.createElement('ul');
                    $A(smenus).each(function(sm) {
                        li = document.createElement('li');
                        aLi = document.createElement('a');
                        aLi.appendChild(document.createTextNode(">> " + sm.getAttribute('description')));
                        aLi.href = sm.getAttribute('url');
                        Element.addClassName(aLi, 'lienRubrique');
                        li.appendChild(aLi);
                        ul.appendChild(li);
                    });
                    div.appendChild(ul);
                }

                $('content').appendChild(div);
            });

            $$('div.rubriquePlanSite a.lienRubrique').each(function(a) {
                Event.observe(a, 'mouseover', function() {
                    a.style.textDecoration = "underline";
                });
                Event.observe(a, 'mouseout', function() {
                    a.style.textDecoration = "none";
                });
            });
        }
    }
    //Définition du fichier à récupérer
    xhr.open("GET", "xml/menu.xml?ms=" + new Date().getTime(), true);
    xhr.setRequestHeader("Cache-Control", "no-cache");
    xhr.send("");
}

// Fonction pour incrémenter le nombre de visiteurs
function addVisiteur() {
    new Ajax.Request('scripts/addVisitor.php');
}

// Fonction pour récupérer le nombre de visiteurs
function getVisiteurs() {
    new Ajax.Updater('visiteurs', 'scripts/getNbVisitors.php');
}

function addMeteo() {
    new Ajax.Updater('meteoCache','scripts/getMeteo.aspx');
}

function buildMenuBis(){
	var content = '<div id="blocBis">';
	content += '<ul>';
	content += '<li><a href="Contacts.htm">Contactez-nous</a></li>';
	content += '<li><a href="PlanSite.htm">Plan du site</a></li>';
	content += '<li><a href="LiensUtiles.htm">Liens Utiles</a></li>';
	content += '</ul>';
	content += '</div>';
	
	new Insertion.After('menu', content);
}

function bindSiteMap(){
	var url = location.href;
	url = url.split('/');
	url = url[url.length-1].split('?');
	url = url[0];
	var content = '';
	if((url != "PlanSite.php") && (url != "Contacts.php") && (url != "LiensUtiles.php"))
	{
		
		//Création d'un objet XMLHTTPRequest
    var xhr = getXhr();
    // On défini ce qu'on va faire quand on aura la réponse
    xhr.onreadystatechange = function() {
        // On ne fait quelque chose que si on a tout reçu et que le serveur est ok
        if (xhr.readyState == 4 && xhr.status == 200) {
            //Récupération du flux XML
            var docXML = clean(xhr.responseXML.documentElement);
				var menus = docXML.getElementsByTagName('menu');
				$A(menus).each(function(m){
					if(m.getAttribute('url') == 'index.php')
					{
						content += '<a href="' + m.getAttribute('url') + '">' + m.getAttribute('description') + '</a>';
					}
					else if(m.getAttribute('url') == url)
					{
						content += ' >> <a href="' + m.getAttribute('url') + '">' + m.getAttribute('description') + '</a>';
					}
				});
				var smenus = docXML.getElementsByTagName('smenu');
				$A(smenus).each(function(sm){
					if(sm.getAttribute('url') == url)
					{
						content += ' >> ' + sm.parentNode.getAttribute('description') + ' >> <a href="' + sm.getAttribute('url') + '">' + sm.getAttribute('description') + '</a>';	
					}
				});
				$('sitemap').innerHTML += content;
        }
    }
    //Définition du fichier à récupérer
    xhr.open("GET", "xml/menu.xml", true);
    xhr.send("");
	}
}

// Fonctions exécutées au chargement de la page
Event.observe(window, 'load', function() {
    bindMenu();
	bindSiteMap();
    addVisiteur();
    getVisiteurs();
	addMeteo();
    Event.observe('divMeteo', 'mouseover', function() {
		$('meteoCache').style.display = 'block';
	});
	Event.observe('divMeteo', 'mouseout', function() {
		$('meteoCache').style.display = 'none';
	});
    //Si le navigateur est IE
    if (Prototype.Browser.IE) {
        //La couleur de fond est fff47d
        document.body.style.backgroundColor = "#fff47d";
    }
    //Sinon
    else {
        //La couleur de fond est fff588;
        document.body.style.backgroundColor = "#fff588";
    }
    $$('#header #menuHeader span a').each(function(a) {
        Event.observe(a, 'mouseover', function() {
            a.style.textDecoration = "underline";
        });
        Event.observe(a, 'mouseout', function() {
            a.style.textDecoration = "none";
        });
    });

    $$('#sitemap a').each(function(a) {
        Event.observe(a, 'mouseover', function() {
            a.style.textDecoration = "underline";
        });
        Event.observe(a, 'mouseout', function() {
            a.style.textDecoration = "none";
        });
    });
    $('top').innerHTML = '<a href="#"><img src="images/top.png"/></a>';
});