/* Fonction permettant de rendre inactif un bouton pendant un nombre de millisecondes.
 * Au premier appel, on stocke la date en millisecondes.
 * En suite, on compare les nouveau appels et on retourne " false " tant que l'écart 
 * avec le premier appel est inférieur au nombre de millisecondes défini.
 */
var dateDernierClique;
function dejaCliqueRecemment(tempsAttente) {
  /* 10000 (10 secondes) Si aucun temps d'attente n'est défini par défaut. */
  if (tempsAttente == null)
    tempsAttente = 10000;
  if (dateDernierClique) {
    /* on vérifie que ça fait plus de x millisecondes qu'on a cliqué */
    var maintenant = new Date();
    if ((maintenant.getTime() - dateDernierClique.getTime()) < tempsAttente) {
      return false;
    } else {
      dateDernierClique = new Date();
      return true;
    }
  } else {
    /* premier passage */
    dateDernierClique = new Date();
    return true;
  }
}


/* fonction retrouvant un objet par rapport a son identifiant id
   origin est le conteneur dans lequel la recherche est faite
   Il peut generalement prendre 2 valeurs:
     * par defaut il s'agit du document
     * dans le cas d'une popup, cela peut correspondre a window.opener.document
*/
function getObjectById(id,origin) { 
  var element=null; 
  if (origin.getElementById) { 
       element=origin.getElementById(id); 
  } 
  else { 
       if (origin.all) { 
            element=origin.all[id]; 
       } 
       else { 
            if (origin.layers) 
            {
                 element=origin.layers[id]; 
                }
       } 
  } 
  return element; 
  
}

function $P() {
    var element = arguments[0]; 
    if (typeof element == 'string')
      return getObjectById(element,window.opener.document);
    if (arguments.length == 1) 
      return element;
}

function getPosX(obj) {
        var curleft = 0;
        if (obj.offsetParent) {
                while (obj.offsetParent) {
                        curleft += obj.offsetLeft
                        obj = obj.offsetParent;
                }
        } else if (obj.x) {
                curleft += obj.x;
        }
        return curleft;
}
function getPosY(obj) {
        var curtop = 0;
        if (obj.offsetParent) {
                while (obj.offsetParent) {
                        curtop += obj.offsetTop
                        obj = obj.offsetParent;
                }
        } else if (obj.y) {
                curtop += obj.y;
        }
        return curtop;
}

function getWidth(obj) {
        return obj.offsetWidth;
}
function getHeight(obj) {
        return obj.offsetHeight;
}

/*
Function return if the current navigator is
the one passed in argument
*/
function isNavigator(name)
{
   Nom_Browser = navigator.appName;
   if(Nom_Browser.indexOf(name,0)>0)
   	return true;
   Version_Browser = navigator.appVersion;
   if(Version_Browser.indexOf(name,0)>0)
   	return true;
} 

/*
 Function that enables a quick search of a string
 into an array of string.
 Parameters: - theArray
	     - theElement
 Returns true if theElement is in theArray
*/	

function isStringInArray(theArray, theElement){
  var index = 0;
  var isInArray = false;
  while (index < theArray.length) {
    var item = theArray[index];
    if(theElement==item){
       isInArray = true;
       break;
    }
    index++;
  }
  return isInArray;
}

/**
 * If user is loggued, or logs on the page, return to homepage.
 */
function preventAccesLoggued() {
  if (fb_loggued) {
  	goToHome();
  }
  document.onLoginFB = function() { goToHome() };
}

/** Find the index of item that has the value for the list element (Select,radio..) 
    Return -1 if not found */
function findValueInList(element,value) {
    var result = -1;
    if (element!= null && value != null){
      for (var i = 0; i < element.options.length;i++){
        if (value == element.options[i].value){
          result = i;
          break;
        }
      }
    }
    return result;
  }

function getDateFormate(format, ladate){
	if (typeof ladate != "object") return "";
	var date_formate = "";
	var format_lu = format;
	//console.log("format_lu:"+format_lu);
	while(format_lu.length >0) {
		//recup du premier motif
		var motif = format_lu.charAt(0);
		for(var i=1; i<format_lu.length; i++) {
			if(format_lu.charAt(i)== format_lu.charAt(0)) {
				motif += format_lu.charAt(i);
			} else {
				break;
			}
		}
		//console.log("motif:"+motif);
		//traitement du motif	
		if (motif.match(/d/)){ 
			//gestion des jours
			var jourSemaine = ladate.getDay();
			var jourMois = ladate.getDate();
			date_formate += (motif.length == 2 && jourMois < 10)?"0"+jourMois:jourMois
		} else
		if (motif.match(/M/)){ 
			//gestion des mois
			var mois = ladate.getMonth()+1;
			date_formate += (motif.length == 2 && mois < 10)?"0"+mois:mois;
		} else
		if (motif.match(/y/)){ 
			//gestion des annees
			var annees = ladate.getFullYear();
			date_formate += (motif.length == 2)?annees.substring(2,4):annees;
		} else
		if (motif.match(/H/)){ 
			//gestion des heures
			var heures = ladate.getHours();
			date_formate += (motif.length == 2 && heures < 10)?"0"+heures:heures;
		} else
		if (motif.match(/m/)){ 
			//gestion des minutes
			var minutes = ladate.getMinutes();
			date_formate += (motif.length == 2 && minutes < 10)?"0"+minutes:minutes;
		} else
		if (motif.match(/s/)){ 
			//gestion des secondes
			var secondes = ladate.getSeconds();
			date_formate += (motif.length == 2 && secondes < 10)?"0"+secondes:secondes;
		} else {
			//gestion des autres caracteres (separateurs)
			date_formate += motif;
		}
		//console.log("date_formate:"+date_formate);
		//on enleve le motif traite du format avant de boucler
		var regMotif=new RegExp("^"+motif+"(.*)","g");
		format_lu = format_lu.replace(regMotif,"$1");
	}
	return date_formate;
}
