/*global document window $ alert */
$info_editeur_loaded =false;
$last_free_url="";
$active_menu=0;
$menu_declage_haut=25;
var $menu_position = {top:0, right:0,bottom:0,left:0};

function noCache(sep) { 
  var d = new Date(); 
  var trick = d.getYear() + "ie" + d.getMonth() + "t" + d.getDate() + "r" + d.getHours() + "i" + d.getMinutes() + "c" + d.getSeconds() + "k" + d.getMilliseconds(); 
  if (sep !== "?") { 
    sep = "&"; 
  } 
  return sep + "nocache=" + trick; 
}


// Function to allow one JavaScript file to be included by another.
// Copyright (C) 2006-08 www.cryer.co.uk
function IncludeJavaScript(jsFile) {
  document.write('<script type="text/javascript" src="' + jsFile + '"></scr' + 'ipt>'); 
}

function emailCheck (emailStr) {
  /* The following pattern is used to check if the entered e-mail address
     fits the user@domain format.  It also is used to separate the username
     from the domain. */
  var emailPat=/^(.+)@(.+)$/;
  /* The following string represents the pattern for matching all special
     characters.  We don't want to allow special characters in the address. 
     These characters include ( ) < > @ , ; : \ " . [ ]    */
  var specialChars="\\(\\)<>@,;:\\\\\\\"\\.\\[\\]";
  /* The following string represents the range of characters allowed in a 
     username or domainname.  It really states which chars aren't allowed. */
  var validChars="\[^\\s" + specialChars + "\]";
  /* The following pattern applies if the "user" is a quoted string (in
     which case, there are no rules about which characters are allowed
     and which aren't; anything goes).  E.g. "jiminy cricket"@disney.com
     is a legal e-mail address. */
  var quotedUser="(\"[^\"]*\")";
  /* The following pattern applies for domains that are IP addresses,
     rather than symbolic names.  E.g. joe@[123.124.233.4] is a legal
     e-mail address. NOTE: The square brackets are required. */
  var ipDomainPat=/^\[(\d{1,3})\.(\d{1,3})\.(\d{1,3})\.(\d{1,3})\]$/;
  /* The following string represents an atom (basically a series of
     non-special characters.) */
  var atom=validChars + '+';
  /* The following string represents one word in the typical username.
     For example, in john.doe@somewhere.com, john and doe are words.
     Basically, a word is either an atom or quoted string. */
  var word="(" + atom + "|" + quotedUser + ")";
  // The following pattern describes the structure of the user
  var userPat=new RegExp("^" + word + "(\\." + word + ")*$");
  /* The following pattern describes the structure of a normal symbolic
     domain, as opposed to ipDomainPat, shown above. */
  var domainPat=new RegExp("^" + atom + "(\\." + atom +")*$");
  
  
  /* Finally, let's start trying to figure out if the supplied address is
     valid. */
  
  /* Begin with the coarse pattern to simply break up user@domain into
     different pieces that are easy to analyze. */
  var matchArray=emailStr.match(emailPat);
  if (matchArray===null) {
    /* Too many/few @'s or something; basically, this address doesn't
       even fit the general mould of a valid e-mail address. */
      return false;
  }
  var user=matchArray[1];
  var domain=matchArray[2];
  
  // See if "user" is valid 
  if (user.match(userPat)===null) {
      // user is not valid
      return false;
  }
  
  /* if the e-mail address is at an IP address (as opposed to a symbolic
     host name) make sure the IP address is valid. */
  var IPArray=domain.match(ipDomainPat);
  if (IPArray!==null) {
      // this is an IP address
        for (var i=1;i<=4;i++) {
          if (IPArray[i]>255) {
            return false;
          }
      }
      return true;
}

// Domain is symbolic name
var domainArray=domain.match(domainPat);
if (domainArray===null) {
    return false;
}

/* domain name seems valid, but now make sure that it ends in a
   three-letter word (like com, edu, gov) or a two-letter word,
   representing country (uk, nl), and that there's a hostname preceding 
   the domain or country. */

/* Now we need to break up the domain to get a count of how many atoms
   it consists of. */
var atomPat=new RegExp(atom,"g");
var domArr=domain.match(atomPat);
var len=domArr.length;
if (domArr[domArr.length-1].length<2) {
   // the address must end in a two letter or three letter word.
   return false;
}

// Make sure there's a host name preceding the domain.
if (len<2) {
   var errStr="This address is missing a hostname!";
   return false;
}

// If we've gotten this far, everything's valid!
return true;
}

function getOffsetTop(obj){
  var retValue=0;
  var x;
  while(obj){
    try{
      x=parseInt(obj.offsetTop,10);
      if (!isNaN(x) ){
        retValue+=x;
      }
    }
    catch(e){
      alert(e);
    }
    obj=obj.parentNode;
  }
  return retValue;
}
function getClientSize (orientation) {
	var w = 0;
	var h = 0;

	//IE
	if(!window.innerWidth){
		//strict mode
		if(!(document.documentElement.clientWidth === 0)){
			w = document.documentElement.clientWidth;
			h = document.documentElement.clientHeight;
		}
		//quirks mode
		else{
			w = document.body.clientWidth;
			h = document.body.clientHeight;
		}
	}
	//w3c
	else{
		w = window.innerWidth;
		h = window.innerHeight;
	}
	if (orientation ==="h"){
      return h;
    }
    else {
      return "w";
    }
}
function getBoxHeight (obj, minHeight, reminder){
  var t = getOffsetTop (obj);
  var h = getClientSize("h");
  var dh = h - t - reminder;
    if (dh > minHeight){
      return dh;
    }
  else {
    return minHeight;
  }
}
function display_masked_page (){
  $("loader-mask").style.visibility="hidden";
  $("loader-mask").style.display = "none";
}
function mask_page(){
  $("loader-mask").style.visibility="hidden";
  $("loader-mask").style.display = "none";
}

function isInteger(s){
  for (var i = 0; i < s.length; i++){   
    // Check that current character is number.
    var c = s.charAt(i);
    if (((c < "0") || (c > "9"))) {
      return false;
    }
  }
    // All characters are numbers.
  return true;
}
function trim_inside(s){
    var i;
    var returnString = "";
    // Search through string's characters one by one.
    // If character is not a whitespace, append to returnString.
    for (i = 0; i < s.length; i++){   
      // Check that current character isn't whitespace.
      var c = s.charAt(i);
      if (c !== " ") {
          returnString += c;
      }
    }
    return returnString;
}
function stripCharsInBag(s, bag){
    var i;
    var returnString = "";
    // Search through string's characters one by one.
    // If character is not in bag, append to returnString.
    for (i = 0; i < s.length; i++){   
        // Check that current character isn't whitespace.
        var c = s.charAt(i);
        if (bag.indexOf(c) === -1) {
            returnString += c;
        }
    }
    return returnString;
}


// Email obfuscator script 2.1 by Tim Williams, University of Arizona
// Random encryption key feature by Andrew Moulden, Site Engineering Ltd
// This code is freeware provided these four comment lines remain intact
// A wizard to generate this code is at http://www.jottings.com/obfuscator/

function write_mailto_link(coded, key) {
    var shift = coded.length, link = "", i = 0, ltr = "";
    for (i = 0; i < coded.length; i += 1) {
        if (key.indexOf(coded.charAt(i)) === -1) {
            ltr = coded.charAt(i);
            link += (ltr);
        }
        else {     
            ltr = (key.indexOf(coded.charAt(i)) - shift + key.length) % key.length;
            link += (key.charAt(ltr));
        }
    }
    document.write("<a href='mailto:" + link + "'>" + link + "</a>");
}
function CJL_getCurrentStyle(elem, prop){
   if( elem.currentStyle ){  
      var ar = prop.match(/\w[^-]*/g);
      var s = ar[0];
      
      for(var i = 1; i < ar.length; ++i)		   
      {
         s += ar[i].replace(/\w/, ar[i].charAt(0).toUpperCase());
      }
           
      return elem.currentStyle[s]
   }
   else if( document.defaultView.getComputedStyle ){
      return document.defaultView.getComputedStyle(elem, null).getPropertyValue(prop);
   }
}
function add_info_editeur(html_text){
  $("info_editeur_container").innerHTML = html_text;
}
/*
 function show_info_editeur_sav (show, loadContent){
  var info = "DQo8ZGl2IGlkPSJpbmZvX2VkaXRldXJfc2Nyb2xsIj4NCjxkaXYgY2xhc3M9ImluZm9fZWRpdGV1ciI+PGEgaHJlZj0iIyIgb25jbGljaz0NCiJzaG93X2luZm9fZWRpdGV1cigwKSI+RmVybWVyPC9hPjwvZGl2Pg0KPGgxPklORk9STUFUSU9OUyBFRElURVVSUzwvaDE+DQo8aDI+UHJvcHJpJmVhY3V0ZTt0JmVhY3V0ZTsgZHUgc2l0ZTwvaDI+DQo8cD5MZSBwciZlYWN1dGU7c2VudCBzaXRlIGVzdCBsYSBwcm9wcmkmZWFjdXRlO3QmZWFjdXRlOyBkZSA6PC9wPg0KPHAgc3R5bGU9Im1hcmdpbi1sZWZ0OiA0MHB4OyI+PGI+QXNzaXN0YW5jZSBSZXRyYWl0ZTwvYj48YnI+DQoyMCBydWUgR2FtYmV0dGE8YnI+DQo5MiAwMDAgTkFOVEVSUkU8YnI+DQpGUkFOQ0U8YnI+DQpUZWw6ICszMyZuYnNwOygwKTEmbmJzcDs0MSZuYnNwOzM3Jm5ic3A7OTgmbmJzcDsyMDxicj4NClNBUkwgYXUgY2FwaXRhbCBkZSAxNzkgNjQwJm5ic3A7Jm5vdDs8YnI+DQpSQ1MgTkFOVEVSUkUgQiAzMzkgNjkxIDUzNzxicj48L3A+DQo8cD5MZSBkaXJlY3RldXIgZGUgbGEgcHVibGljYXRpb24gZXN0IE1yIEJydW5vIFJlbmFyZGllci48L3A+DQo8cD5DciZlYWN1dGU7YXRpb24gZ3JhcGhpcXVlIDogTWF0aGlldSBKb3VoZXQ8L3A+DQo8cD5Db250YWN0OiA8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+DQp3cml0ZV9tYWlsdG9fbGluaygiZXlHMkB5MlVCWVVzLksyciIsInpBU3BxbFdDR1hjSUJaSnlPaEhhdFlURTdkS2I5UDNzd0Z2UVZvNjR4Z2ltOE5qTXUxVVJMMmYwRGtlcjVuIikNCjwvc2NyaXB0Pi48L3A+DQo8aDI+SCZlYWN1dGU7YmVyZ2VtZW50PC9oMj4NCjxwPkxlIHByJmVhY3V0ZTtzZW50IHNpdGUgZXN0IGgmZWFjdXRlO2JlcmcmZWFjdXRlOyBwYXIgOjwvcD4NCjxwIHN0eWxlPSJtYXJnaW4tbGVmdDogNDBweDsiPjxiPkludGVybmV0IEZyIFNBPC9iPjxicj4NCkltbWV1YmxlIE9keXNzJmVhY3V0ZTtlPGJyPg0KMi0xMiwgY2hlbWluIGRlcyBGZW1tZXM8YnI+DQo5MTg4NiBNQVNTWSBDZWRleDxicj4NCkZSQU5DRTxicj4NCjxhIGhyZWY9Imh0dHA6Ly93d3cuaW50ZXJuZXQtZnIubmV0IiB0YXJnZXQ9DQoiX2JsYW5rIj5odHRwOi8vd3d3LmludGVybmV0LWZyLm5ldDwvYT48L3A+DQo8aDI+Tm9tIGRlIG1hcnF1ZTwvaDI+DQo8cD5Ob3ZlbHZ5IGVzdCB1biBub20gZGUgbWFycXVlIGQmZWFjdXRlO3BvcyZlYWN1dGU7IHBhciBBc3Npc3RhbmNlDQpSZXRyYWl0ZS48L3A+DQo8aDI+Q29udGVudSBkdSBzaXRlPGJyPjwvaDI+DQo8cD5MZXMgYXJ0aWNsZXMgcHJvcG9zJmVhY3V0ZTtzIHN1ciBsZSBzaXRlIGRlIEFzc2lzdGFuY2UgUmV0cmFpdGUsDQpxdSYjMzk7aWxzIHNvaWVudCAmZWFjdXRlO2RpdCZlYWN1dGU7cyBvdSBkaWZmdXMmZWFjdXRlO3MgcGFyIHNlcw0Kc29pbnMsIHImZWFjdXRlO3BvbmRlbnQgJmFncmF2ZTsgbGEgbCZlYWN1dGU7Z2lzbGF0aW9uDQpmcmFuJmNjZWRpbDthaXNlIGVuIHZpZ3VldXIuPC9wPg0KPGgyPlJlc3BlY3QgZGUgbGEgdmllIHByaXYmZWFjdXRlO2U8L2gyPg0KPHA+VG91dGVzIGxlcyBpbmZvcm1hdGlvbnMgbm9taW5hdGl2ZXMgY29sbGVjdCZlYWN1dGU7ZXMgc3VyIGNlDQpzaXRlIHJlc3RlbnQgY29uZmlkZW50aWVsbGVzLiBBc3Npc3RhbmNlIFJldHJhaXRlIHMmIzM5O2VuZ2FnZSwgZW4NCnBhcnRpY3VsaWVyLCAmYWdyYXZlOyBuZSBwYXMgbGVzIGRpdnVsZ3VlciAmYWdyYXZlOyBkZXMNCnRpZXJzLjxicj48L3A+DQo8cD5BdWN1bmUgaW5mb3JtYXRpb24gbm9taW5hdGl2ZSBuJiMzOTtlc3QgY29sbGVjdCZlYWN1dGU7ZQ0KJmFncmF2ZTsgbCYjMzk7aW5zdSBkZSBsJiMzOTt1dGlsaXNhdGV1ci48YnI+PC9wPg0KPHA+Q29uZm9ybSZlYWN1dGU7bWVudCAmYWdyYXZlOyBsYSBsb2kgJnF1b3Q7IEluZm9ybWF0aXF1ZSBldA0KTGliZXJ0JmVhY3V0ZTtzICZxdW90OyBkdSA2IGphbnZpZXIgMTk3OCByZWxhdGl2ZSAmYWdyYXZlOw0KbCYjMzk7aW5mb3JtYXRpcXVlLCBhdXggZmljaGllcnMgZXQgYXV4IGxpYmVydCZlYWN1dGU7cywNCmwmIzM5O3V0aWxpc2F0ZXVyIGVzdCBpbmZvcm0mZWFjdXRlOyBxdSYjMzk7aWwgZGlzcG9zZSBkJiMzOTt1bg0KZHJvaXQgZCYjMzk7YWNjJmVncmF2ZTtzLCBkZSByZWN0aWZpY2F0aW9uIG91IGRlIHN1cHByZXNzaW9uIGRlcw0KZG9ubiZlYWN1dGU7ZXMgbGUgY29uY2VybmFudCBldCBxdSYjMzk7aWwgcGV1dCBleGVyY2VyICZhZ3JhdmU7DQp0b3V0IG1vbWVudCBhdXByJmVncmF2ZTtzIGRlIEFzc2lzdGFuY2UgUmV0cmFpdGUsIDIwIHJ1ZSBHYW1iZXR0YSwNCjkyMDAwIE5BTlRFUlJFLCBvdSBwYXIgY291cnJpZXIgJmVhY3V0ZTtsZWN0cm9uaXF1ZSAmYWdyYXZlOw0KbCYjMzk7YWRyZXNzZSBzdWl2YW50ZTogPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPg0Kd3JpdGVfbWFpbHRvX2xpbmsoImV5RzJAeTJVQllVcy5LMnIiLCJ6QVNwcWxXQ0dYY0lCWkp5T2hIYXRZVEU3ZEtiOVAzc3dGdlFWbzY0eGdpbThOak11MVVSTDJmMERrZXI1biIpDQo8L3NjcmlwdD4uPC9wPg0KPGgyPkRpZmZ1c2lvbiBldCBlbnZvaXMgZW4gbm9tYnJlPC9oMj4NCjxwPkwmIzM5OyZlYWN1dGU7ZGl0ZXVyIHMmIzM5O2VuZ2FnZSAmYWdyYXZlOyBuZSBwYXMgdXRpbGlzZXIgbGVzDQphZHJlc3NlcyAmZWFjdXRlO2xlY3Ryb25pcXVlcyBjb2xsZWN0JmVhY3V0ZTtlcyBzdXIgc29uIHNpdGUgcG91cg0KZWZmZWN0dWVyIGRlcyBlbnZvaXMgbm9uIHNvbGxpY2l0JmVhY3V0ZTtzLjwvcD4NCjxwPkVuIGNlIHNlbnMsIGxlcyBkb2N1bWVudHMgJmVhY3V0ZTtsZWN0cm9uaXF1ZXMgcHVibGkmZWFjdXRlO3MNCnBhciBsJiMzOTsmZWFjdXRlO2RpdGV1ciBuZSBuZSBzZXJvbnQgYWRyZXNzJmVhY3V0ZTtzIHF1JiMzOTthdXgNCnV0aWxpc2F0ZXVycyBlbiBheWFudCBmYWl0IGV4cHJlc3MmZWFjdXRlO21lbnQgbGEgZGVtYW5kZSBhdSBtb3llbg0KZGVzIGZvcm11bGFpcmVzIGRpc3BvbmlibGVzIHN1ciBjZSBzaXRlLjwvcD4NCjxoMj5Ecm9pdHMgZCYjMzk7YXV0ZXVyPC9oMj4NCjxwPkxlcyAmZWFjdXRlO2wmZWFjdXRlO21lbnRzIGNvbnN0aXR1dGlmcyBkdSBwciZlYWN1dGU7c2VudCBzaXRlDQoodGV4dGVzLCBpbWFnZXMsIGNoYXJ0ZSBncmFwaGlxdWUsIGxvZ29zLCBtYXJxdWVzLCBldGMuKSBzb250IGxhDQpwcm9wcmkmZWFjdXRlO3QmZWFjdXRlOyBleGNsdXNpdmUgZGUgQXNzaXN0YW5jZSBSZXRyYWl0ZSBvdSBkZSBzZXMNCnBhcnRlbmFpcmVzLjwvcD4NCjxwPlBhciBleGNlcHRpb24sIGNlcnRhaW5zIGNvbnRlbnVzIChpbWFnZXMpIHNvbnQgbGENCnByb3ByaSZlYWN1dGU7dCZlYWN1dGU7IGRlIGxldXJzIGF1dGV1cnMgcmVzcGVjdGlmcy48L3A+DQo8cD5Ub3V0ZSByZXByb2R1Y3Rpb24gdG90YWxlIG91IHBhcnRpZWxsZSBkZSBjZSBzaXRlIHNhbnMNCmwmIzM5O2F1dG9yaXNhdGlvbiBwciZlYWN1dGU7YWxhYmxlIGRlIGwmIzM5OyZlYWN1dGU7ZGl0ZXVyLCBldCBjZSwNCnBhciBxdWVscXVlIHByb2MmZWFjdXRlO2QmZWFjdXRlOyBxdWUgY2Ugc29pdCwgY29uc3RpdHVlcmFpdCB1bmUNCmNvbnRyZWZhJmNjZWRpbDtvbiBwcm9oaWImZWFjdXRlO2UgcGFyIGwmIzM5O2FydGljbGUgTC43MTMtMiBkdQ0KQ29kZSBkZSBsYSBwcm9wcmkmZWFjdXRlO3QmZWFjdXRlOyBpbnRlbGxlY3R1ZWxsZSBwb3V2YW50IGNvbmR1aXJlDQomYWdyYXZlOyBkZXMgcG91cnN1aXRlcyAoYXJ0aWNsZXMgTC4zMzUtMiBldCBzdWl2YW50cyBkdSBDb2RlIGRlIGxhDQpwcm9wcmkmZWFjdXRlO3QmZWFjdXRlOyBpbnRlbGxlY3R1ZWxsZSkuPC9wPg0KPHA+Jm5ic3A7PC9wPg0KPC9kaXY+DQoNCg==";
  var iframeContainer = $("info_editeur_container"), ref = $("contenu");
 if (loadContent == 1){
		iframeContainer.innerHTML= decodeBase64(info);
  }
  var scroll=$("info_editeur_scroll");
  var refSize= parseInt( $("contenu").offsetHeight,10);
 
  if (CJL_getCurrentStyle($("info_editeur_container"), "display") ==="none"){
  iframeContainer.style.height=refSize -3 + "px";
	 scroll.style.height=refSize -40 + "px";
    ref.style.display="none";
     
	 iframeContainer.style.display="block";
  }
  else {
    $("info_editeur_container").style.display="none";
    $("contenu").style.display="block";
    
  }
}
function show_info_editeur (show, loadContent){
   var iframeContainer = $("info_editeur_container"), ref = $("contenu");
  if (loadContent !=1){
	  $("info_editeur_container").style.display="none";
	  $("contenu").style.display="block";
	  return;
  }
  if ($info_editeur_loaded==false){
	$info_editeur_loaded= dynamic_content("/snipets/html/info-editeur.txt", "info_editeur_container", false);
  }
  var scroll=$("info_editeur_scroll");
  var refSize= parseInt( $("contenu").offsetHeight,10);
 
  if (CJL_getCurrentStyle($("info_editeur_container"), "display") ==="none"){
  iframeContainer.style.height=refSize -3 + "px";
	 scroll.style.height=refSize -40 + "px";
    ref.style.display="none";
     
	 iframeContainer.style.display="block";
  }
}
*/
function show_free_content(show, url){
  var iframeContainer = $("free_content_container");
  var ref = $("contenu");
  if (show==0){
	 $("free_content_container").style.display="none";
	 $("contenu").style.display="block";
	 return;
  }
  if ($last_free_url != url){
	dynamic_content (url, "free_content", false, "<div class=\"free_content_close\"><a href=\"#\" onclick=\"show_free_content(0)\">Fermer</a></div>");
	$last_free_url = url
  }
  
  var scroll=$("free_content");
  var refSize= parseInt( $("contenu").offsetHeight,10);
   if (CJL_getCurrentStyle($("free_content_container"), "display") ==="none"){
  iframeContainer.style.height=refSize -3 + "px";
	 scroll.style.height=refSize -40 + "px";
    ref.style.display="none";
    iframeContainer.style.display="block";
  }
}

function dynamic_content(url, div,async,html_pre, html_post){
  if (async===undefined){
	async=true;
  }
  if (html_pre===undefined){
	html_pre="";
  }
  if (html_post===undefined){
	html_post="";
  }
  new Ajax.Request(
	url,
	{
	  asynchronous:async,
	  method: "post",
	  onSuccess: function(xhr, reponse)
	  {
		$(div).innerHTML = html_pre + xhr.responseText + html_post;
		return true;
	  }
    }
  )
}
function ShowMenu(oCaller, iIndex, iStyle){
	var left = 0;
	var top = 0;
	var aPos;
	var s;
	var oMenu =document.getElementById("menu" + iIndex);
	oMenu.style.zIndex = 65000;
	aPos = getPosition(oCaller);
	if (iStyle==2){
	    $menu_position.left = aPos[0]-parseInt(getStyle (oMenu, "width")) + parseInt(oCaller.offsetWidth + 20 );
	    /*for (i in oCaller){
	      s += i + " : " + eval ("oCaller." + i) + "\r\n"; 
	    }
	    alert (s);*/
	}
	else
	{
	   $menu_position.left = aPos[0]-20;
	}
	$menu_position.top = aPos[1]+$menu_declage_haut;
	$menu_position.right = $menu_position.left + parseInt(getStyle (oMenu, "width"));
	$menu_position.bottom = aPos[1] + parseInt(getStyle (oMenu, "height"));
	oMenu.style.top=$menu_position.top + 'px';
	oMenu.style.left=$menu_position.left + 'px';
	
	//alert (oMenu.style.left);
        oMenu.style.position = "absolute";
        oMenu.style.display = "block";
        oMenu.style.visibility = "visible";
	$active_menu = iIndex;
	$menu_position.bottom = $menu_position.top + document.getElementById("menu" + $active_menu).clientHeight;
	(window.document.attachEvent)    ? window.document.attachEvent("onmousemove", trackMousePosition) : window.document.addEventListener("mousemove", trackMousePosition, false);
	//alert ("left: " + left + " ; " + "top: " + top);
}
function discardMenu(){
  if ($active_menu > 0 ){
    oMenu = document.getElementById("menu" + $active_menu);
    oMenu.style.visibility = "hidden";
    oMenu.style.display = "none";
    $active_menu = 0;
    //(window.document.attachEvent)    ? window.document.detachEvent("onmousemove", trackMousePosition) : window.document.removeEventListener("mousemove", trackMousePosition, false);
  }
}
function trackMousePosition (e){
  if ($active_menu == 0){
    return;
  }
  var evt=window.event || e
  var mouseX = evt.clientX;
  var mouseY= evt.clientY;
  
  if ((mouseX<$menu_position.left)
      || (mouseX>$menu_position.right)
      || (mouseY<$menu_position.top - ($menu_declage_haut +5))
      || (mouseY>$menu_position.bottom)){
    discardMenu();
  }

}


function getPosition(oElement)
{
	var left = 0;
	var top = 0;
	/*On récupère l'élément*/
	var e = oElement;
	/*Tant que l'on a un élément parent*/
	while (e.offsetParent != undefined && e.offsetParent != null)
	{
		/*On ajoute la position de l'élément parent*/
		left += e.offsetLeft + (e.clientLeft != null ? e.clientLeft : 0);
		top += e.offsetTop + (e.clientTop != null ? e.clientTop : 0);
		e = e.offsetParent;
	}
	return new Array(left,top);
}

function getStyle(oElm, strCssRule){
	var strValue = "";
	if(document.defaultView && document.defaultView.getComputedStyle){
		strValue = document.defaultView.getComputedStyle(oElm, "").getPropertyValue(strCssRule);
	}
	else if(oElm.currentStyle){
		strCssRule = strCssRule.replace(/\-(\w)/g, function (strMatch, p1){
			return p1.toUpperCase();
		});
		strValue = oElm.currentStyle[strCssRule];
	}
	return strValue;
}
