/*
Script utilisé par GeoInfo.
Copyright (C) 2010 Baptiste Sottas — Tous droits réservés.
Ce programme est un logiciel libre ; vous pouvez le redistribuer ou le
modifier suivant les termes de la “GNU General Public License” telle que
publiée par la Free Software Foundation : soit la version 3 de cette
licence, soit (à votre gré) toute version ultérieure.
Ce programme est distribué dans l’espoir qu’il vous sera utile, mais SANS
AUCUNE GARANTIE : sans même la garantie implicite de COMMERCIALISABILITÉ
ni d’ADÉQUATION À UN OBJECTIF PARTICULIER. Consultez la Licence Générale
Publique GNU pour plus de détails.
Vous devriez avoir reçu une copie de la Licence Générale Publique GNU avec
ce programme ; si ce n’est pas le cas, consultez :
http://www.gnu.org/licenses
baptiste.sottas@bluewin.ch
*/
// variables diverses
var coords = ""
var opacity = 0
var divInfo = true;
var imageAfrique = "";
var imageEurasie = "";
var imageOceanie = "";
var imageAmeriqueNord = "";
var imageAmeriqueSud = "";
var imageEurope = "";
var imageEurope2 = "";
var imageAsie2 = "";
// adresse du serveur
var url = "http://bapsot.dyndns.org/GeoInfo-GeoInfoServer/GeoInfoService";
// variables pour la gestion de la comparaison des pays
var currentInfo = 0;
var compareActive = false;
// permet d'effacer le contenu des divs 2 à 5 si on ne désire pas comparer
function vide()
{
// regarder si la case est cochée
compareActive = document.getElementById('compare').checked;
// si elle ne l'est pas vider les divs 2 à 5
if (!compareActive)
{
for (i = 2; i < 6; i++)
{
var element = document.getElementById("info" + i);
element.innerHTML = "";
element.style.display = "none";
}
// remettre la grandeur initiale à la première div
document.getElementById("info1").style.width = 654 + 'px';
// initialiser le compteur
currentInfo = 1;
}
}
// permet de créer et remplir les divs d'informations
function popupInfo(text)
{
// regarder si on désire comparer les pays entre eux
compareActive = document.getElementById('compare').checked;
// si oui mettre l'info dans une nouvelle div, autrement mettre dans la div 1
if (compareActive)
currentInfo += 1;
else
currentInfo = 1;
// max 5 comparaisons possibles, si plus on réécrit dans la dernière
if (currentInfo > 5)
currentInfo = 5;
// obtenir la div à modifier
var info = document.getElementById("info" + currentInfo);
// la rendre visible et mettre le texte
info.style.display = "block";
info.innerHTML = text;
// met la bonne grandeur à chaque div
for (i = 1; i <= currentInfo; i++)
document.getElementById("info" + i).style.width = (654/currentInfo) + 'px';
}
// affiche le text de l'erreur en cas de problème
function erreur(texteErreur)
{
alert(texteErreur);
}
// permet d'appeller la fonction pour recevoir les statistiques du serveur
function recevoirStats()
{
var pl = new SOAPClientParameters();
// appel de la fonction getInfos du serveur
SOAPClient.invoke(url, "getInfos", pl, true, recevoirStatsReponse);
}
// permet de recevoir les statistiques du serveur et les afficher
function recevoirStatsReponse(resultat, soapResponse)
{
var objDom = new XMLDoc(((new XMLSerializer()).serializeToString(soapResponse)), erreur);
var objDomTree = objDom.docNode;
// prepare le texte à afficher à partir de la réponse
var stats = ("Nombre d'accès total: " + objDomTree.getElements("env:Body")[0].getElements("ser:getInfosResponse")[0].getElements("GeoStats")[0].getElements("accesTotal")[0].getText()
+ "\n"
+ "Dernier accès le: " + objDomTree.getElements("env:Body")[0].getElements("ser:getInfosResponse")[0].getElements("GeoStats")[0].getElements("dernierAcces")[0].getText()
+ "\n"
+ "Adresse pour des questions/remarques: " + objDomTree.getElements("env:Body")[0].getElements("ser:getInfosResponse")[0].getElements("GeoStats")[0].getElements("email")[0].getText()
+ "\n"
+ "Microinformations sous: " + objDomTree.getElements("env:Body")[0].getElements("ser:getInfosResponse")[0].getElements("GeoStats")[0].getElements("twitter")[0].getText()
+ "\n"
+ "Version de l'application: " + objDomTree.getElements("env:Body")[0].getElements("ser:getInfosResponse")[0].getElements("GeoStats")[0].getElements("version")[0].getText());
alert(stats);
}
// permet d'appeller la fonction pour recevoir les informations du pays
function recevoirPays(id)
{
// prépare le paramètre avec l'id du pays
var pl = new SOAPClientParameters();
pl.add("id",id);
// appel de la fonction find du serveur
SOAPClient.invoke(url, "find", pl, true, recevoirPaysReponse);
}
// permet de recevoir les informations du pays du serveur et les afficher
function recevoirPaysReponse(resultat, soapResponse)
{
var objDom = new XMLDoc(((new XMLSerializer()).serializeToString(soapResponse)), erreur);
var objDomTree = objDom.docNode;
// prepare le texte à afficher à partir de la réponse
var informations = ("Pays: " + objDomTree.getElements("env:Body")[0].getElements("ser:findResponse")[0].getElements("GeoData")[0].getElements("pays")[0].getText()
+ "
"
+ "Nom: " + objDomTree.getElements("env:Body")[0].getElements("ser:findResponse")[0].getElements("GeoData")[0].getElements("nomPays")[0].getText()
+ "
"
+ "Capitale: " + objDomTree.getElements("env:Body")[0].getElements("ser:findResponse")[0].getElements("GeoData")[0].getElements("capitale")[0].getText()
+ "
"
+ "Forme: " + objDomTree.getElements("env:Body")[0].getElements("ser:findResponse")[0].getElements("GeoData")[0].getElements("forme")[0].getText()
+ "
"
+ "Adjectif: " + objDomTree.getElements("env:Body")[0].getElements("ser:findResponse")[0].getElements("GeoData")[0].getElements("adjectif")[0].getText()
+ "
"
+ "Monnaie ISO: " + objDomTree.getElements("env:Body")[0].getElements("ser:findResponse")[0].getElements("GeoData")[0].getElements("monnaieIso")[0].getText()
+ "
"
+ "Monnaie: " + objDomTree.getElements("env:Body")[0].getElements("ser:findResponse")[0].getElements("GeoData")[0].getElements("monnaie")[0].getText()
+ "
"
+ "Monnaie centime: " + objDomTree.getElements("env:Body")[0].getElements("ser:findResponse")[0].getElements("GeoData")[0].getElements("monnaieSubDiv")[0].getText()
+ "
"
+ "Plus grande ville: " + objDomTree.getElements("env:Body")[0].getElements("ser:findResponse")[0].getElements("GeoData")[0].getElements("plusGrandeVille")[0].getText()
+ "
"
+ "Nbr habitants: " + objDomTree.getElements("env:Body")[0].getElements("ser:findResponse")[0].getElements("GeoData")[0].getElements("nbrHabitant")[0].getText()
+ "
"
+ "Langues officielles: " + objDomTree.getElements("env:Body")[0].getElements("ser:findResponse")[0].getElements("GeoData")[0].getElements("langueOfficielle")[0].getText()
+ "
"
+ "Système gouvernemental: " + objDomTree.getElements("env:Body")[0].getElements("ser:findResponse")[0].getElements("GeoData")[0].getElements("politique")[0].getText()
+ "
"
+ "Remarques: " + objDomTree.getElements("env:Body")[0].getElements("ser:findResponse")[0].getElements("GeoData")[0].getElements("remarques")[0].getText()
+ "
"
+ "Devise: " + objDomTree.getElements("env:Body")[0].getElements("ser:findResponse")[0].getElements("GeoData")[0].getElements("devise")[0].getText());
// appelle la fonction popupInfo qui affiche les informations dans les divs
popupInfo(informations);
}
// permet l'affichage de la description lors du passage de la souris
function writeText(txt)
{
document.getElementById("description").innerHTML = txt;
}
// permet l'effaçage de la description lors du passage de la souris
function effaceTexte()
{
document.getElementById("description").innerHTML = "";
}
// apparition de la div contenant une carte d'un continent + carte de retour
function apparition(carte)
{
document.getElementById(carte).style.display = 'block'
i = setInterval('fondu("'+carte+'")', 25)
document.getElementById("retour").style.display = 'block'
document.getElementById("retour").style.opacity = 1
}
// permet de recharger la page
function disparition()
{
window.location.reload()
}
// permet de faire apparaître la carte d'un continent en fondu
function fondu(carte)
{
opacity = opacity + 0.05
document.getElementById(carte).style.opacity = opacity;
if (opacity > 1)
{
clearInterval(i)
}
}
// permet de faire apparaître les infos du pays dans la petite fenêtre
function afficheInfoPays(pays)
{
document.getElementById("infoPays").innerHTML = document.getElementById(pays).innerHTML;
}
// permet de cacher la petite fenêtre
function cacherInfoPays()
{
document.getElementById("infoPays").style.display = 'none';
}
// permet à la petite fenêtre de suivre la souris
function deplacerInfo(event)
{
document.getElementById("infoPays").style.display = 'block';
document.getElementById("infoPays").style.top = event.clientY;
document.getElementById ("infoPays").style.left = event.clientX+20;
}