/ *
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 = "<img src='images/Cartes/Afrique.bmp' usemap='#afrique'/>" ;
var imageEurasie = "<img src='images/Cartes/Eurasie.bmp' usemap='#eurasie'/>" ;
var imageOceanie = "<img src='images/Cartes/Oceanie.bmp' usemap='#oceanie'/>" ;
var imageAmeriqueNord = "<img src='images/Cartes/AmeriqueNord.bmp' usemap='#ameriqueNord'/>" ;
var imageAmeriqueSud = "<img src='images/Cartes/AmeriqueSud.bmp' usemap='#ameriqueSud'/>" ;
var imageEurope = "<img src='images/Cartes/EuropeOuest.bmp' usemap='#europe'/>" ;
var imageEurope2 = "<img src='images/Cartes/Eurasie2.bmp' usemap='#eurasie'/>" ;
var imageAsie2 = "<img src='images/Cartes/EuropeOuestAsie.bmp' usemap='#europe'/>" ;
// 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 = ( "<b>Pays:</b> " + objDomTree . getElements ( "env:Body" ) [ 0 ] . getElements ( "ser:findResponse" ) [ 0 ] . getElements ( "GeoData" ) [ 0 ] . getElements ( "pays" ) [ 0 ] . getText ( )
+ "<br/>"
+ "<b>Nom:</b> " + objDomTree . getElements ( "env:Body" ) [ 0 ] . getElements ( "ser:findResponse" ) [ 0 ] . getElements ( "GeoData" ) [ 0 ] . getElements ( "nomPays" ) [ 0 ] . getText ( )
+ "<br/>"
+ "<b>Capitale:</b> " + objDomTree . getElements ( "env:Body" ) [ 0 ] . getElements ( "ser:findResponse" ) [ 0 ] . getElements ( "GeoData" ) [ 0 ] . getElements ( "capitale" ) [ 0 ] . getText ( )
+ "<br/>"
+ "<b>Forme:</b> " + objDomTree . getElements ( "env:Body" ) [ 0 ] . getElements ( "ser:findResponse" ) [ 0 ] . getElements ( "GeoData" ) [ 0 ] . getElements ( "forme" ) [ 0 ] . getText ( )
+ "<br/>"
+ "<b>Adjectif:</b> " + objDomTree . getElements ( "env:Body" ) [ 0 ] . getElements ( "ser:findResponse" ) [ 0 ] . getElements ( "GeoData" ) [ 0 ] . getElements ( "adjectif" ) [ 0 ] . getText ( )
+ "<br/>"
+ "<b>Monnaie ISO:</b> " + objDomTree . getElements ( "env:Body" ) [ 0 ] . getElements ( "ser:findResponse" ) [ 0 ] . getElements ( "GeoData" ) [ 0 ] . getElements ( "monnaieIso" ) [ 0 ] . getText ( )
+ "<br/>"
+ "<b>Monnaie:</b> " + objDomTree . getElements ( "env:Body" ) [ 0 ] . getElements ( "ser:findResponse" ) [ 0 ] . getElements ( "GeoData" ) [ 0 ] . getElements ( "monnaie" ) [ 0 ] . getText ( )
+ "<br/>"
+ "<b>Monnaie centime:</b> " + objDomTree . getElements ( "env:Body" ) [ 0 ] . getElements ( "ser:findResponse" ) [ 0 ] . getElements ( "GeoData" ) [ 0 ] . getElements ( "monnaieSubDiv" ) [ 0 ] . getText ( )
+ "<br/>"
+ "<b>Plus grande ville:</b> " + objDomTree . getElements ( "env:Body" ) [ 0 ] . getElements ( "ser:findResponse" ) [ 0 ] . getElements ( "GeoData" ) [ 0 ] . getElements ( "plusGrandeVille" ) [ 0 ] . getText ( )
+ "<br/>"
+ "<b>Nbr habitants:</b> " + objDomTree . getElements ( "env:Body" ) [ 0 ] . getElements ( "ser:findResponse" ) [ 0 ] . getElements ( "GeoData" ) [ 0 ] . getElements ( "nbrHabitant" ) [ 0 ] . getText ( )
+ "<br/>"
+ "<b>Langues officielles:</b> " + objDomTree . getElements ( "env:Body" ) [ 0 ] . getElements ( "ser:findResponse" ) [ 0 ] . getElements ( "GeoData" ) [ 0 ] . getElements ( "langueOfficielle" ) [ 0 ] . getText ( )
+ "<br/>"
+ "<b>Système gouvernemental:</b> " + objDomTree . getElements ( "env:Body" ) [ 0 ] . getElements ( "ser:findResponse" ) [ 0 ] . getElements ( "GeoData" ) [ 0 ] . getElements ( "politique" ) [ 0 ] . getText ( )
+ "<br/>"
+ "<b>Remarques:</b> " + objDomTree . getElements ( "env:Body" ) [ 0 ] . getElements ( "ser:findResponse" ) [ 0 ] . getElements ( "GeoData" ) [ 0 ] . getElements ( "remarques" ) [ 0 ] . getText ( )
+ "<br/>"
+ "<b>Devise:</b> " + 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 )
{
//$("area[alt=" + pays + "]").css("z-index","9999");
document . getElementById ( "infoPays" ) . innerHTML = "<div id='customCursor' class='customCursor'></div>" + 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 + 40 ;
}