/* -------------------------------------------------------------------------------------------
	File : scripts.js
	Abstract : ensemble de fonctions générales

	Fonctions définies :
	Author : Emmanuel PODVIN 
	Modifications :
		- 30/09/04 - Emmanuel PODVIN - emmanuel.podvin@intersel.org	
		- 07/06/05 - EPO - evol de TrouveStyle qui ne protégeait pas lorsque les input étaient vides

Commentaires à l'usage des RECOPIEURS ET/OU CURIEUX :
----------------------------------
	Ce code peut être réutilisé comme bon vous semble et à vos risques et périls...
    En vous remerciant de me faire éventuellement bénéficier de vos améliorations.
   ------------------------------------------------------------------------------------------- */

   /*-----------------------------------------
  Affichage des images du bandeau aléatoires
  Auteur : E.PODVIN - Intersel - emmanuel.podvin at intersel.org - 2007
    -----------------------------------------*/
nb_random_img=15;// nombre d'images disponibles dans le répertoire images-objets

// calcul d'un nombre aléatoire entre 0 et interval-1
function get_random(interval)
{
    var ranNum= Math.floor(Math.random()*interval);
    return ranNum;
}

// Affichage des images du bandeau
//directory_img= 'images-objets'; //nom du répertoire où sont stockées les images
//img_name ='images-haut-';//nom des images - les images doivent être numérotées depuis 0 à nb_max_img-1
function display_random_img(directory_img,img_name,nb_max_img)
{
	// recherche de 3 index pour les photos
	i1=get_random(nb_max_img);
	do {i2=get_random(nb_max_img);} while(i2 == i1);
	do {i3=get_random(nb_max_img);} while( (i3 == i1) || (i3==i2) );
	// affichage des images dans le bandeau
	document.write('<img src="'+directory_img+'/'+img_name+i1+'.jpg" width="137" height="114"><img src="'+directory_img+'/'+img_name+i2+'.jpg" width="137" height="114"><img src="'+directory_img+'/'+img_name+i3+'.jpg" width="137" height="114">');
}

   
/* //--------------------------------------------------------------------
//	Function name :
//	Description		: 
//	input 			:
//  return value 	: 
//  global variables:
//--------------------------------------------------------------------
*/
// décryptage simple d'une adresse mail (anti-spam)
var a, s, n;
function Decrypt(s) 
{
	r='';
    for(i=0;i<s.length;i++)
    {
    	n=s.charCodeAt(i); 
        if (n>=8364) 
        {
    	    n = 128;
	    } 
	    r += String.fromCharCode( n - 3 ); 
    }
    return r;
}           
// affichage d'une adresse mail perturbante pour les moteurs spamm
// input:
//	- name : partie login d'une adresse mail
//	- domain : partie domaine d'une adresse mail (name@domain)
//	- args : argument de mailto (permet d'ajouter un CC, etc...
//	- Text : texte à afficher pour le lien
// Output :
//		sortie html : <a href='mailto:name@domain args> Text </a>
// où name, domain args Text sont les variables d'input
function print_mail(name,domain,args,Text)
{
	a ="pdlowr=";
	m='@';d=unescape(m);
	var nom = name;
	var domaine = domain;
	var aro = nom + d + domaine;
	document.write('<a href="');
    document.write(Decrypt(a));
    document.write(aro);
    document.write(args);
    document.write('">');  
	document.write(Text + '</a>');    
}

/* //--------------------------------------------------------------------
//	Function name : TrouveObjet
//	Description		:  permet de retrouver un objet depuis son ID
//		La syntaxe d'appel de cette fonction est
//   var objet = trouveobjet(idf);
//	input 			:  idf est l'identificateur (ID) d'un élément. 
//  return value 	:  objet associé à idf
//  global variables:
//--------------------------------------------------------------------
*/
 function TrouveObjet(idf) { 
 
 doc=document;
 
    if (doc.getElementById && doc.getElementById(idf)) 	//IE
	{
	  	return doc.getElementById(idf);
    } 
	else if (doc.all && doc.all[idf]) //Mozilla
	{
      return doc.all[idf];
    } 
	else if (doc.layers) 
	{
      return doc.layers[idf];
    } 
	else 
	{ 
		return null; 
	}
  }
  
/* //--------------------------------------------------------------------
//	Function name : TrouveStyle
//	Description		:  permet de retrouver un objet depuis son ID
//		La syntaxe d'appel de cette fonction est
//   var objet_style = trouvestyle(idf);
//	input 			:  idf est l'identificateur (ID) d'un élément. 
//  return value 	:
//  global variables:
//--------------------------------------------------------------------
*/
 function TrouveStyle(idf) 
 { 
  	doc=document;
 
    if (doc.getElementById && doc.getElementById(idf)) 	//IE
	{
	  	return doc.getElementById(idf).style;
    } 
	else if (doc.all && doc.all[idf]) //Mozilla
	{
      return doc.all[idf].style;
    } 
	else if (doc.layers) 
	{
      return doc.layers[idf];
    } 
	else 
	{ 
		return null; 
	}

  }
		
  
  
/* //--------------------------------------------------------------------
//	Function name : ChangeStyle
//	Description		: Permet de modifier le style d'un objet
//	input 			:
//		idf : Id d'un objet
//		prop : nom d'une propriété
//	Dans le cas des noms composés comme background-image, la règle est de
     — mettre en majuscule la lettre après un tiret,
     — et de supprimer le(s) tiret(s).
//  return value 	:
//		aucune
//  global variables:       
//	exemple :
//		ChangeStyle("aaa","visibility","hidden");
//		ChangeStyle("aaa","border","5px ridge green"); 
//      ChangeStyle("aaa","backgroundImage","url(image_bis.jpg)") 
//--------------------------------------------------------------------
*/
  function ChangeStyle(idf,prop,value) 
  {
     var objet_style= TrouveStyle(idf);
     if(objet_style) 
        eval( 'objet_style.' + prop + '="' + value+ '"' );
  }

/* //--------------------------------------------------------------------
//	Function name : ChangeInnerHtml
//	Description		: Permet de remplacer le texte html intérieur d'un objet
//	input 			:
//		idf : Id d'un objet
//		text : texte à remplacer
//  return value 	:
//		aucune
//  global variables:       
//	exemple :
//      ChangeInnerHtml("aaa","<a href='#'>coucou</a>") 
//--------------------------------------------------------------------
*/
  function ChangeInnerHtml(idf,text) 
  {
     var objet= TrouveObjet(idf);
     if(objet) 
        eval( 'objet.innerHTML="' + text+ '"' );
  }

  /* //--------------------------------------------------------------------
//	Function name : ChangeClass
//	Description		: Permet de modifier la classe d'un objet
//	input 			:
//		idf : Id d'un objet
//		aclass : nom d'une classe
//  return value 	:
//		aucune
//  global variables:       
//	exemple :
//		ChangeClass("aaa","mynewclass");
//--------------------------------------------------------------------
*/
  function ChangeClass(idf,aclass) 
  {
     var objet= TrouveObjet(idf);
     if(objet)
	 	objet.className = aclass;
  }

  
var Tableau_Images = new Array();	
  
function CreateImage(imageid,imageoff,imageon)
{
	Tableau_Images[imageid+'on']=new Image();
	Tableau_Images[imageid+'off']=new Image();
	Tableau_Images[imageid+'on'].src=imageon;
	Tableau_Images[imageid+'off'].src=imageoff;	  
}

function  SetImageOn(imageid)
{	
	img=TrouveObjet(imageid);
	img.src=Tableau_Images[imageid+'on'].src;
} 
function  SetImageOff(imageid)
{
	img=TrouveObjet(imageid);
	img.src=Tableau_Images[imageid+'off'].src;
}
/* //--------------------------------------------------------------------
//	Function name : Replace
//	Description		: effectue le remplacement des occurences d'une chaine de caractères par une autre
//	input 			: 										  
//		-str : une string
//		- find : une chaine à rechercher
//		- rep : la chaine de remplacement
//  return value 	: 					 
//		la chaine résultante après remplacement
//  global variables:						   
//	exemple : myString = Replace("coucou les amis et coucou les copains", "coucou", "Salut");
//		myString == "Salut les amis et Salut les copains"
//--------------------------------------------------------------------
*/							
function Replace(str, find, rep)
{
    var res = str;
    var i = 0;	   
    while(true)
    {
        i = res.indexOf(find, i);
        if (i == -1) break;
        res = res.substr(0, i) + rep + res.substr(i + find.length);
        i += rep.length;
    }		   
    return res;
}	

/* //--------------------------------------------------------------------
//	Function name : activate_XMLHttpRequest
//	Description		: initialise a XMLHttpRequest object
//	input 			: 
//  return value 	: void
//  global variables:	xhrcont: a global XMLHttpRequest object
//--------------------------------------------------------------------
*/							
var xhrcont = null;
function getXhrcont()
{
	if (window.XMLHttpRequest) xhrcont = new XMLHttpRequest();
	else if(window.ActiveXObject)
	{
		try
		{
			xhrcont = new ActiveXObject("Msxml2.XMLHTTP");
		} 
		catch (e)
		{
			xhrcont = new ActiveXObject("Microsoft.XMLHTTP");
		}
	}
	else
	{
		alert("Votre navigateur ne supporte pas les objets XMLHTTPRequest...");
		xhrcont = false;
	}	 
	return xhrcont;
}

/* //--------------------------------------------------------------------
//	Function name : escape_plus
//	Description		: seems that the escape javascript function does not escape enough...
//					  so I hope this one does!
//	input 			: 
//		aString
//  return value 	: a escaped string
//  global variables:
//--------------------------------------------------------------------
*/							
    function escape_plus(aString) 
    {					   
		aString = escape(aString);  
//		aString = encodeURIComponent(aString);
		aString= aString.replace(new RegExp('\\+','g'),'%2B');
	    aString= aString.replace(new RegExp('%20','g'),'+');
		return aString;
	}	

