function FP_swapImg() {//v1.0
/*Fonctionne sous IE(7.0) NETSCAPE(8.1)(MOZILLA,FIREFOX) OPERA(9.0)*/
 var doc=document,args=arguments,elm,n; doc.$imgSwaps=new Array(); for(n=2; n<args.length;
 n+=2) { elm=FP_getObjectByID(args[n]); if(elm) { doc.$imgSwaps[doc.$imgSwaps.length]=elm;
 elm.$src=elm.src; elm.src=args[n+1]; } }
}

function FP_preloadImgs() {//v1.0
 var d=document,a=arguments; if(!d.FP_imgs) d.FP_imgs=new Array();
 for(var i=0; i<a.length; i++) { d.FP_imgs[i]=new Image; d.FP_imgs[i].src=a[i]; }
}

function FP_getObjectByID(id,o) {//v1.0
 var c,el,els,f,m,n; if(!o)o=document; if(o.getElementById) el=o.getElementById(id);
 else if(o.layers) c=o.layers; else if(o.all) el=o.all[id]; if(el) return el;
 if(o.id==id || o.name==id) return o; if(o.childNodes) c=o.childNodes; if(c)
 for(n=0; n<c.length; n++) { el=FP_getObjectByID(id,c[n]); if(el) return el; }
 f=o.forms; if(f) for(n=0; n<f.length; n++) { els=f[n].elements;
 for(m=0; m<els.length; m++){ el=FP_getObjectByID(id,els[n]); if(el) return el; } }
 return null;
}
function namosw_init_clock()
{
/*Fonctionne sous IE(7.0) NETSCAPE(8.1)(MOZILLA,FIREFOX) OPERA(9.0)*/
//Ce programme permet de creer une horloge en temps reel et de l afficher en format texte dans une balise span
//On peut definir autant d horloge que l on souhaite chaqu une d entre elle doit etre definie par 2 parametre le premier
//permet de définir l id de la balise span dans laquelle l horloge apparaitra et le second paramètre permet de definir
//le type d horloge a utiliser
//7 types d horloge existe
  var type, i, top, obj, clocks, strobj, tempvar;
  clocks = new Array();
  for (i = 0, top = 0; i < namosw_init_clock.arguments.length; i += 2)
  	{
    strobj = eval('document.getElementById("' + namosw_init_clock.arguments[i] + '")');
    type = namosw_init_clock.arguments[i+1];
    if (type < 1 && 7 < type) continue;
    clocks[top++] = strobj;
    clocks[top++] = type;
  	}
  clocks.months = new Array('Janvier', 'Février', 'Mars', 'Avril', 'Mai', 'Juin', 'Juillet',
                            'Août', 'Septembre', 'Octobre', 'Novembre', 'Décembre');
  clocks.days   = new Array('Dimanche', 'Lundi', 'Mardi', 'Mercredi',
                            'Jeudi', 'Vendredi', 'Samedi');
  
  if (top > 0)
  	{
    document.namosw_clocks = clocks;
    namosw_clock();
  	}
}

function namosw_clock()
{
  var i, type, clocks, next_call, str, hour, ampm, now, year2, year4;
  clocks = document.namosw_clocks;
  if (clocks == null) return;
  next_call = false;
  for (i = 0; i < clocks.length; i += 2) {
    obj   = clocks[i];
    type  = clocks[i+1];
    now   = new Date();
    year2 = now.getYear();
    year4 = year2;
    if (year2 < 1000) year4 = 1900 + year2;
    if (year2 >= 100) year2 = year4;

    if (type == 1 || type == 2)
    	{
      	obj.innerHTML = now.getDate() + ' ' + clocks.months[now.getMonth()] + ' ' + year4;
      	if (type == 2) 
        	obj.innerHTML = clocks.days[now.getDay()] + ' ' + obj.innerHTML;
    	}
    else if (type == 3 || type == 4)
    	{
      	obj.innerHTML = year2 + '/' + (now.getMonth()+1) + '/' + now.getDate();
    	}
    else if (type == 5 || type == 6)
    	{
      	obj.innerHTML = (now.getMonth()+1) + '/' + now.getDate() + '/' + year2;
    	} 
    
    if (type == 4 || type == 6 || type == 7)
    	{
      	hour = now.getHours();
      	ampm = 0;
      	str = hour +':'+ ((now.getMinutes() < 10) ? '0'+now.getMinutes():now.getMinutes()) +':'+ ((now.getSeconds() < 10) ? '0'+now.getSeconds():now.getSeconds());
      	if (type == 7) 
      		{
      		obj.innerHTML  = str;
      		}
      	else
      		{
      		obj.innerHTML += ' ' + str;
      		}
    	}
    if (type == 4 || type == 6 || type == 7)
    	next_call = true;
  }//fin for
  if (next_call)
    window.setTimeout("namosw_clock();", 1000);
}//fin fonction
function favoris()
	{
	/*Fonctionne sous IE(7.0) et NETSCAPE(8.1).
	Ne fonctionne pas sous OPERA car la fonction aujouter aux favoris ou side bar n'existe pas
	semble fonctionner pour toutes les autres versions
	et pour les autres navigateurs(mais ce n'est pas vérifier)*/
	if ( navigator.appName != 'Microsoft Internet Explorer' )
		{ 
		window.sidebar.addPanel(document.title,'http:'+document.URL,""); 
		//window.sidebar.addPanel(document.title,'http:'+location.href,"");url=location
		}
	else
		{ 
		window.external.addfavorite('http:'+document.URL,document.title); 
		} 
	}

//fonction pour la redirection automatique au bout d'un cetain temps t
function inireload(nxtdirection,imgpath,idlien)
//nxtdirection : page vers laquelle on va aller au bout d'un temps t
//imgpath : defini le chemin ou ce trouve les images des différents boutons
	{
	document.nxdirection = nxtdirection;
	document.imagpath = imgpath;
	eval(idlien+'.href="'+nxtdirection+'"');
	}
function inireload_2(imgpath,idlien)
//ici on fait en sorte de prendre la valeur de href du liens de redirection pour donner au programme la nouvelle page 
//au bout d'un temps t(evite les injection javascript quand on utilise le php)

//*prise en compte du cas ou javascript n'est pas activé*

//nxtdirection : page vers laquelle on va aller au bout d'un temps t
//imgpath : defini le chemin ou ce trouve les images des différents boutons
	{
	document.nxdirection = document.getElementById(idlien).href;
	document.imagpath = imgpath;
	}
function run_reload(int_run,re_initialisation,nbsec,imagerun_onstop,imagestop_onstop,ext_image)
//fonctionne pour : IE-, Opéra-, Netscape-test ok
//si la page n'existe pas il y as un bug dans les bouton (bug mineur puisque on n'est sencé mettre un bon lien!!
//int_run; 1 la réactualisation auto est active ,0(ou autre que 1) la réactualisation est stoppée
//re_initialisation; 1 on initialise le compteur à ca valeur initiale nbsec, 0(ou autre) on décrément le compteur et on lance la réactualisation lorsque le compteur est à 0  
//nbsec; définit le nombre de pas du compteur (que l'on décrémente toutes les 1 secondes)
//imagerun_onstop; Nom de base des images liées au bouton start lorsque le programme tourne nom_base_img2 et lorsqu'il est arreté c'est nom_base_img(l'inverse pour le bouton stop)
//imagestop_onstop; Nom de base des images liées au bouton stop
//ext_image; extension des images (elle doit etre identique pour les 4 images
//on pourrait faire en sorte de reprendre le compte à rebourd ou il s'est arreté au lieu de reprendre à zero en utilisant une
//variable locale du type document.nxdirection. Peut etre a réaliser dans de prochaine versions si nécessaire
//petit bug lorsque l'on click plusieurs fois sur start le décompte ce fais de maniere irréguliere!!
//c'est pour cela que l'on avais fais une réactualisation pour pour le bouton start dans une precedente version.
//pour l'utilisation que l'on souhaite ici on ne peu pas faire de réactualisation sinon il faut que le navigateur 
//renvoi les info =>pas propre
//correction du bug en ajoutant un clearTimeout(stop) a la relance du timer si stop est invalide =>pas d'erreur 
	{
	imgpath = document.imagpath;
	if(int_run == 1)
		{
		if(re_initialisation == 1)
			{
			eval(imagerun_onstop+'.src="'+imgpath+imagerun_onstop+'.'+ext_image+'"');//image définissant le bouton start
			eval(imagestop_onstop+'.src="'+imgpath+imagestop_onstop+'.'+ext_image+'"');//image définissant le bouton stop
			ncptr = nbsec;
			}
		else
			{
			ncptr = (ncptr - 1);	
			}
		document.getElementById('compteur').innerHTML = 'Vous allez être redirigé automatiquement dans '+ncptr+' seconde(s)';
		if(ncptr == 0)
			{
			document.getElementById('compteur').innerHTML = 'reload';
			//history.go(0);
			window.location.replace(document.nxdirection);
			}
		stop=setTimeout('run_reload('+int_run+',0,'+nbsec+');', 1000);
		}
	else
		{
		clearTimeout(stop);
		eval(imagerun_onstop+'.src="'+imgpath+imagerun_onstop+'2.'+ext_image+'"');//image définissant le bouton start
		eval(imagestop_onstop+'.src="'+imgpath+imagestop_onstop+'2.'+ext_image+'"');//image définissant le bouton stop
		document.getElementById('compteur').innerHTML = 'La redirection automatique est stoppée, cliquer sur le bouton start pour la relancer.';
		}
	}
	
function hideshowdiv(hide,iddiv)
	{
	//v2.0.0
	//ne fonctionne pas si on utilise la redirection ou le rechargement automatique et que l'on utilise cette
	//fonction pour le test d'activation du javascript
	//fonction inireload run_reload en tout cas lorsque l'on utilise :
	//<script language="JavaScript" type="text/javascript" for="window" event="onload">

	/*Fonctionne sous IE(7.0) NETSCAPE(8.1)(MOZILLA,FIREFOX) OPERA(9.0)*/
	var id=document.getElementById(iddiv);
	if(hide ==1)
		{
		id.style.visibility='hidden';
		if(hideshowdiv.arguments.length==3){id.style.display = hideshowdiv.arguments[2];}
		}
	else
		{
		id.style.visibility='visible';
		//si c est none on il faut changer display soit on defini la nouvelle valeur dans le troisieme argument si il est pas defini
		//la valeur par defaut sera ' ' hypothese il n'y as que none qui empeche l'affichage 
		//sinon on affiche sous le format existant
		if(id.style.display == 'none')
			{
			id.style.display = '';
			if(hideshowdiv.arguments.length==3)
				{
				id.style.display = hideshowdiv.arguments[2];
				}
			}
		}	
	}

//***************fonctions pour google map*************************************
function load() { 
                if (GBrowserIsCompatible()) { 
                        map = new GMap2(document.getElementById("map"));
						// les controls de zoom et deplacement sur la map 
                        map.addControl(new GLargeMapControl()); 
                        map.addControl(new GMapTypeControl()); 
                        map.enableScrollWheelZoom();
                        //nouvel icon
                        //var icon = new GIcon();
                        //icon.image = "http://labs.google.com/ridefinder/images/mm_20_red.png";
                        //icon.shadow = "http://labs.google.com/ridefinder/images/mm_20_shadow.png";
                        //icon.iconSize = new GSize(30, 40);
                        //icon.shadowSize = new GSize(22, 20);
                        //icon.iconAnchor = new GPoint(6, 20);
                        //icon.infoWindowAnchor = new GPoint(5, 1); 
                        //map.setCenter(new GLatLng(29.4419, -68.1419), 13); 
                        geocoder = new GClientGeocoder(); 
                        geocoder.getLatLng(address,function(point){ 
                        if(!point){ 
                                  alert(address + ' not found'); 
                        }else{ 
                                  map.setCenter(point, 15); 
                                  var marker = new GMarker(point);
                                  //var marker = new GMarker(point,icon); 
                                  map.addOverlay(marker); 
                                  tablcoorp1 = extractcoorpoint(point);
                                  
                                  document.getElementById('adresseref').innerText = address;
                                  
                             } 
                        } 
                    ); 
                } 
        } 

function showAddress(address2) {
//ici il serait possible de faire une xss mais en utilisant le if on evite cela car on affiche l'adresse saisie 
//uniquement si on trouve le point donc si la chaine saisie correspond a une adresse valide or du code html ou javascript
//ne correspondra pas a une adresse(il faudrait qu'une rue s'appel <script>getcookies()<script> par exemple) 
	if (GBrowserIsCompatible()) {
      if (geocoder) {
        geocoder.getLatLng(
          address2,
          function(point2) {
            if (!point2) {
              alert(address2 + " not found");
            } else {
              if(marker2){map.removeOverlay(marker2);}
              if(polyline){map.removeOverlay(polyline);}
              map.setCenter(point2, 6);
              //GMarker.setpoint(point2);
              marker2 = new GMarker(point2);
              map.addOverlay(marker2);
              
   	          var tabl = extractcoorpoint(point2);
   	          
   	          var polyOptions = {geodesic:true};
   	          polyline = new GPolyline([new GLatLng(1*tablcoorp1[0], 1*tablcoorp1[1]),  new GLatLng(1*tabl[0], 1*tabl[1])], "#0099ff", 5, 1, polyOptions);
   	          map.addOverlay(polyline);
              
	          var distance2pts = calcdst2pt(6371,tablcoorp1[0],tablcoorp1[1],tabl[0],tabl[1]);
  	          var strtoreturn = 'Distance "à vol d\'oiseau"  : <br> '+distance2pts+' km';
  	          marker2.openInfoWindowHtml(strtoreturn);
            }
          }
        );
      }
      }
    }
//fin googlemap
function extractcoorpoint(glpoint)
	{
	//permet d'extraire la latitude et la longitude du point a partir de la variable retourné par ggogle
	//place la latitude et la longitude dans le tableau [0] pour la latitude [1] pour la longitude
	glpoint=''+glpoint+'';
	glpoint=glpoint.replace("(","");
	glpoint=glpoint.replace(")","");
	var tablcoor = glpoint.split(", ");
	tablcoor[0]=1*tablcoor[0];
	tablcoor[1]=1*tablcoor[1];
	return tablcoor;
	}
function calcdst2pt(r,lata,longa,latb,longb)
	{
	//calcul l'ortodromie entre 2 points A et B (les valeurs des lattitudes et des longitudes doivent etre exprimées en degré et r en km)
	//il faut utiliser des radians avec les cos, sin, acos,...
	//vérification que les données sont bien des nombres
	var dstarcab = 0;
	if(isNaN(r)||isNaN(lata)||isNaN(longa)||isNaN(latb)||isNaN(longb))
		{//erreur: au moins 1 valeur n'est pas un nombre
		alert('Une des valeurs fourni n\'est pas un nombre'); 
		}
	else
		{
		//transformation de degré en radian
		if(((lata<=90 && lata>=-90)&&(longa<=180 && longa>=-180))&&((latb<=90 && latb>=-90)&&(longb<=180 && longb>=-180)))
			{
			lata = lata*Math.PI/180;
			longa = longa*Math.PI/180;
			latb = latb*Math.PI/180;
			longb = longb*Math.PI/180;
			//calcul de l'orthodromie AB
			dstarcab = r*Math.acos((Math.cos(lata)*Math.cos(latb)*Math.cos(longb-longa))+(Math.sin(lata)*Math.sin(latb)));
			//Distance arrondie 
			//dstarcab = Math.round(dstarcab);
			dstarcab = arrondi(dstarcab,1);
			}
		else
			{
			alert('Les valeurs des lattitudes et/ou des longitudes sont erronées');
			}
		}
		return dstarcab;
	}
function arrondi(number,n)//n représente le nombre de chiffre derriere la virgule
	{
	var numberround = 0;
	if(n>=0)
		{
		if(Math.round(n)==n)//si n est entier
			{
			var multipl=Math.pow(10,n);
			numberround = (Math.round(number*multipl))/multipl;
			}
		else
			{
			alert('Erreur dans la fonction arrondi. n doit être un entier.');
			}
		}
	else
		{
		alert('Erreur dans la fonction arrondi. n doit être > ou = à 0.');
		} 
	return numberround;
	}
function verif_first_change_input()
	{
	if(document.first_change_input_adrs == 0)
		{
		document.first_change_input_adrs = 1;
		document.formadrs.address.value = '';
		document.formadrs.address.style.color = '#000000';
		}
	}

//****************************************************************************
