// JavaScript Document
function randomString(string_length) 
{
	var chars = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXTZabcdefghiklmnopqrstuvwxyz";
	var randomstring = '';
	for (var i=0; i<string_length; i++) {
		var rnum = Math.floor(Math.random() * chars.length);
		randomstring += chars.substring(rnum,rnum+1);
	}
	return randomstring;
}

function encodeMonTexte(texte) 
{
	URIencode = encodeURIComponent(texte);
	retour = URIencode.replace(/'/g, "\\'");
	retour = URIencode.replace(/\\/g, "\\\\");
	return(retour);
}

function decodeMonTexte(texte) 
{
	URIencode = decodeURIComponent(texte);
	retour = URIencode.replace(/\\'/g, "'");
	retour = URIencode.replace(/\\\\/g, "\\");
	retour = URIencode.replace(/\+/g, " ");
	return(retour);
}


//affiche temporairement un element de la page avec un effet de fondu
function ShowTemporaryInfo(idElt)
{
	Element.show(idElt);
	new Effect.Highlight(idElt, {duration:8, startcolor:'#FBE9D9'});
	//Effect.Pulsate(idElt, {delay:1.5});
	Effect.Fade(idElt, {delay:2, duration:4});
}

//affiche/masque l'élément dont l'id est passé en paramètre
//change le texte 
function ToggleElement(idElt, idEltTexteOuvert, idEltTexteFerme)
{	
	/*if (Element.visible( idElt ))
	{
		new Effect.BlindUp(idElt);
	}
	else
	{
		new Effect.BlindDown(idElt);
	}*/
		Effect.toggle(idElt, 'blind', {duration:0.3});
	
	if (idEltTexteOuvert != '')	Effect.toggle(idEltTexteOuvert);
	if (idEltTexteFerme != '')	Effect.toggle(idEltTexteFerme);
}

//retourne la lareur de la fenetre du navigateur
function GetActualWindowWidth()
{
	var winW = 630;
	//if (parseInt(navigator.appVersion)>3) 
	{
		if (navigator.appName=="Netscape") 
	 	{
	  		winW = window.innerWidth-16;
	 	}
		else //if (navigator.appName.indexOf("Microsoft")!=-1) 
		{
			winW = document.body.offsetWidth-20;
		}
	}
	
	return winW;
}

//retourne la hauteur de la fenetre du navigateur
function GetActualWindowHeight()
{
	var winH = 460;
	//if (parseInt(navigator.appVersion)>3) 
	{
		if (navigator.appName=="Netscape") 
	 	{
	  		winH = window.innerHeight-16;
	 	}
		else //if (navigator.appName.indexOf("Microsoft")!=-1) 
		{
			winH = document.body.offsetHeight-20;
		}
	}
	
	return winH;
}

//affihe un texte dans la barre de status
function setStatustext(sNewText)
{
	window.status = sNewText;
}

//retourne l'indice du bouton radio selectionné dans un groupe
function getSelectedRadio(buttonGroup) 
{
   if (buttonGroup[0]) 
   { 
      for (var i=0; i<buttonGroup.length; i++)
	  {
         if (buttonGroup[i].checked) 
            return i
      }
   } 
   else 
   {
      if (buttonGroup.checked) 
	  	return 0; 
   }

   return -1;
}

//retourne la valeur sélectionnée d'un groupe de boutons radio
function getSelectedRadioValue(buttonGroup) 
{
   var i = getSelectedRadio(buttonGroup);
   if (i == -1) 
   {
      return "";
   } 
   else 
   {
      if (buttonGroup[i]) 
         return buttonGroup[i].value;
	  else 
         return buttonGroup.value;
   }
}

/*
verifie que les arguments sont passés en paramètre sinon, affecte la valeur par défaut.
utilisation:
function foo(a, b, c) 
{
    eval(defaults(arguments, 1, 2, 3));

    alert(a); // defaults to 1
    alert(b); // defaults to 2
    alert(c); // defaults to 3
}

*/
function defaults(passed) 
{
	var pattern = /function[^(]*\(([^)]*)\)/;
	var args = passed.callee.toString().match(pattern)[1].split(/\s*,\s*/);
	var str = "", i = 1;
	for ( ; i < arguments.length; i++) 
	{
		if (typeof passed[i-1] == "undefined") 
		{
			str += args[i-1] + "=" + fix(arguments[i]) + ";";
		}
	}
	return str;
	
	function fix(x) 
	{
		if (typeof x == "string")
			return "'" + x.replace(/\'/g, "\\'") + "'";
		return x;
	}
}

//retourne un tableau contenant la position d'un element en x+decalX et y+decalY
function Contact_CalcFixXYToAdress(idElt, decalX, decalY)
{
	eval(defaults(arguments, '', -2, 20));
	pos = $(idElt).cumulativeOffset(idElt);
	
	retour = new Array((pos.left)+decalX, pos.top+decalY);
	return retour;
}

