/* 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 getHTTPObject() {
  var xmlhttp;
  /*@cc_on
  @if (@_jscript_version >= 5)
    try {
      xmlhttp = new ActiveXObject("Msxml2.XMLHTTP");
    } catch (e) {
      try {
        xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
      } catch (E) {
        xmlhttp = false;
      }
    }
  @else
  xmlhttp = false;
  @end @*/
  if (!xmlhttp && typeof XMLHttpRequest != 'undefined') {
    try {
      xmlhttp = new XMLHttpRequest();
    } catch (e) {
      xmlhttp = false;
    }
  }
  return xmlhttp;
}
var http = null;
var func_callback = "";
function doRequest(URL,method, callback) {
	if(func_callback!="")
	{
		return -1; /*Request already processing*/
	}
	func_callback = callback;
	http = getHTTPObject(); // We create the HTTP Object
	if(!http)
	{
		return -2; /*Navigator can't create connexion due to older navigator*/
	}
	try {
		http.onreadystatechange = handleHttpResponse;		
		http.open(method,URL, true);
	  	http.send(null);
	} catch (e) 
	{
		return -3; /*Navigator can't connect to server or can't change domain*/
	}
  	
}

function doRequestXml(URL,method, callback) {
	if(func_callback!="")
	{
		return -1; /*Request already processing*/
	}
	func_callback = callback;
	http = getHTTPObject(); // We create the HTTP Object
	if(!http)
	{
		return -2; /*Navigator can't create connexion due to older navigator*/
	}
	try {
		http.onreadystatechange = handleHttpResponseXml;		
		http.open(method, URL, true);
	  	http.send(null);
	} catch (e) 
	{
		return -3; /*Navigator can't connect to server or can't change domain*/
	}
  	
}

function handleHttpResponse() {
  if (http.readyState == 4) {
    results = http.responseText;
    var toeval = func_callback+"("+results+")";
    func_callback="";
    eval(toeval);
  }
}

function handleHttpResponseXml() {
  if (http.readyState == 4) {
    results = http.responseXML;
    var toeval = func_callback+'(http.responseXML)';
    func_callback="";
    eval(toeval);
  }
}

/*
	function that hide or show an element
*/
function toggle(idTag)
{
	if($(idTag).style.display=='')
	{
		hide(idTag);
	}
	else
	{
		show(idTag);
	}
}

function hide(idTag)
{
	$(idTag).style.display='none';
}

function show(idTag)
{
	$(idTag).style.display='';
}

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 an element
 into an array.
 Parameters: - theArray
	     - theElement
 Returns true if theElement is in theArray
*/	
function isElementInArray(theArray, theElement) {
  var chaine = "|" + theArray.join("|") + "|";
  if (chaine.indexOf("|"+theElement+"|")==-1) 
  {
	return true;
  }else
  { 
	return false;
  }
}

/*
 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;
}

