var BLCompletion;
function togglelist(e) {
	var el = e.getNext('ul');
	el.setStyle('display',el.getStyle('display')=="none"?"block":"none");
	if (e.getParent('li').hasClass('toggled')) {
		e.getParent('li').removeClass('toggled');
	} else {
		e.getParent('li').set('class','toggled');
	}
}


function toggleArchives(span){
  $(span).toggleClass("open");
  if(span.hasClass("open")){
    $("archives").setStyle("display","block");
  }
  else{
    $("archives").setStyle("display","none");
  }
}

function togglerecherche(el, origin){
	document.getElementById('type_recherche').innerHTML = el.innerHTML;
	$('searchOrigine').set('value', origin);
	hidediv('choix_assistance');
}

// Ouverture alerte TLM (HP MR et I+M)
function showAlerte() {
	var el = $('infos');
	el.setStyle('display','block');
}
// Fermeture alerte TLM (HP MR et I+M)
function hideAlerte() {
	var el = $('infos');
	el.setStyle('display','none');
}

function AjoutFavo(){
  if (Browser.Engine.trident){
	if (window.external != undefined) {
		window.external.AddFavorite(urlPage, titrePage);
	}
  }
  else{
    alert("Appuyez sur CTRL + D pour ajouter cette page dans vos signets.");
  }
}
function showdiv(e) {
  $(e).setStyle('display','block');
  if ($('sel_autres')) {
    $('choix_autres').setStyle('z-index',15);
  }
}
function hidediv(e) {
  $(e).setStyle('display','none');
  if ($('sel_autres')) {
    $('sel_autres').setStyle('z-index',10);
  }
}

function show(item){
  if(item.className.indexOf('hover') < 0){
    item.className = item.className + ' hover';
  }
}

function hide(item){
  if(item.className.indexOf('hover') > 0){
    item.className = item.className.replace('hover','');
  }
}

function validRechPCPRO(action) {
  if (document.cart.kw.value != '') {
    document.cart.action=action;
    document.cart.submit();
  }
  else alert('Attention ! Aucun mot n\'a été saisi dans le formulaire de recherche.');
  return false;
}

function validRechPCR(e) {
  var ev = new Event(e);
  if(!$('kw') || !$('kw').get('value')){
    ev.stop();
    alert('Attention ! Aucun mot n\'a été saisi dans le formulaire de recherche.');
    return false;
  }
  if(!$('searchOrigine') || !$('searchOrigine').get('value')){
    ev.stop();
    alert('Veuillez choisir une assistance dans laquelle effectuer la recherche.');
    return false;
  }
  return true;
}
function validRech(e){
  var ev = new Event(e);
  var id;
  var toSubmit = false;
  if($(ev.target).get('tag') == 'form'){
    id = ev.target.getElement('input').get('id');
  }
  else{
    id = ev.target.getParent('form').getElement('input').get('id');
    toSubmit = true;
  }
  if(id == 'requete_M' && $('requete_M').get('value') != ''){
    if(toSubmit){
      $('search_M').submit();
    }
  }
  else if(id == 'requete_I' && $('requete_I').get('value') != ''){
    if(toSubmit){
      $('search_I').submit();
    }
  }
  else if($('kw_moteur') && $('kw_moteur').get('value') != '' ||
    $('req_text') && $('req_text').get('value') != ''){
  }
  else{
    ev.stop();
    alert('Attention ! Aucun mot n\'a été saisi dans le formulaire de recherche.');
  }
  return true;
}

function stripHref(){
  $$('h2.onglet_center').removeProperty('href');
}

function initHPTransverses()
{
	// Activation/Désactivation du champ de saisie libre du moteur
	if($('sel_assistance') && $('kw_moteur'))
	{
		var sel_assistance = $('sel_assistance');
		var kw_moteur = $('kw_moteur');
		toggleInput(sel_assistance.selectedIndex, kw_moteur);
		sel_assistance.addEvent('change', function(event){
			event.stop();
			toggleInput(this.selectedIndex, kw_moteur);
			// Modification de la liste d'autocomplétion
			var segmentSigle = (document.getElement('input[name=origine]')?document.getElement('input[name=origine]').get("value"):DEFAULT_SEGMENT);
			BLCompletion.setDefaultParams('id='+window['ID_SEGMENT_'+segmentSigle]+'&dtd=2.0&cbf=BLCompletion.cmpl');
		});
	}
}

function toggleInput(enable, kw_moteur)
{
    if(enable)
    {
	kw_moteur.removeClass('disabled');
	kw_moteur.removeProperty('disabled');
    }
    else
    {
	kw_moteur.addClass('disabled');
	kw_moteur.setAttribute('disabled', true);
    }
}

var theOverlay;


/**
* Ouverture d'une popup avec effet fade
*/
function openFadePopup(nPopinId) {

    var dscrollsize = document.getScrollSize();
    var dsize = document.getSize();
    var dscroll = document.getScroll();

    if ($(nPopinId)) {
        $('overlay').setStyles({width: dscrollsize.x+'px', height: dscrollsize.y}).fade(0.5);
        $(nPopinId).setStyles({
            left: +(dscroll.x + (dsize.x - $(nPopinId).offsetWidth) / 2) + 'px',
            top: +(dscroll.y + (dsize.y - $(nPopinId).offsetHeight) / 2) + 'px'
        }).fade('in');
    }
}

function initSite(){
	initMenu();
	initZoom();
	initMentionLegales();
	initTaggingInvisible();
	initBlocMM();
	initHPTransverses();
	
    // Initialisation Bloc PREPROD
    $$('.JS_display').addEvent('click', function(e)
    {
        var myDiv = this;
        var mySpan = myDiv.getNext('span');
        if(mySpan.getStyle('display') == 'none')
        {
            mySpan.setStyle("display","block")
        }
        else
        {
            mySpan.setStyle("display","none")
        }
    });

  // Focus sur le champ du moteur de recherche
  if($('kw_moteur')){
    var urlCurrent = document.location.hash;
    if (urlCurrent.substr(0,1)!="#") {
      // Focus sur le moteur sauf si ancre dans l'url
      try{
        $('kw_moteur').focus();
        $('kw_moteur').getParent('form').addEvent('submit',validRech);
      }
      catch(e){
        // En mode print, sous IE comme kw_moteur est en display:none il y a erreur qu'on veut seulement cacher
      }
    }
  }
  if($('search_I')){
    $('search_I').addEvent('submit',validRech);
  }
  if($('search_M')){
    $('search_M').addEvent('submit',validRech);
  }
  if($('rechercher_assistance')){
    $('rechercher_assistance').addEvent('submit',validRechPCR);
  }
  if($('recherche_I')){
    $('recherche_I').addEvent('click', function(e){this.getParent('form').fireEvent('submit',e);});
  }
  if($('recherche_M')){
    $('recherche_M').addEvent('click', function(e){this.getParent('form').fireEvent('submit',e);});
  }

  if($('liste_rub_I')){
    $('liste_rub_I').getElements('div strong').addEvent('click',function(e){
  this.getParent().toggleClass('open');
      });
  }
  if($('liste_rub_M')){
    $('liste_rub_M').getElements('div strong').addEvent('click',function(e){
  this.getParent().toggleClass('open');
      });
  }
  if($('search')){
    $('search').addEvent('submit',validRech);
  }
  initTaille();
  // init aide guidee
  $$('a.aide_guidee , a.assistance_guidee').addEvent('click',function(e){
		new Event(e).stop();
		var lnk_url = getUrlWithTagGSTAT(this);
		//this.set('title',lnk_url);
		window.open(lnk_url,'','resizable=yes,location=yes,menubar=no,scrollbars=yes,status=yes,toolbar=no,fullscreen=no,dependent=no,width=690,height=628,left=180,top=40');
  });
  // Evènement de mouseover/mouseout sur les images de l'assistance guidée
  $$('a.aide_guidee').addEvent('mouseover',function(e){
      var item = new Event(e).target;
      if (item.src) {
        item.src = item.src.replace('calque_ta.jpg','calque_ta_over.jpg');
      }
  });  
  $$('a.aide_guidee').addEvent('mouseout',function(e){
      var item = new Event(e).target;
      if (item.src) {
        item.src = item.src.replace('calque_ta_over.jpg','calque_ta.jpg');
      }
  });  
  // Initialisation des home2
  if(typeof currentRubId != "undefined" && currentRubId != 'I36') {
    initN2();
  }
  // Initialisation du player wmv
  if($$('#videos a, a.video, a.lien_video, #video a')){
//    initVideos();
  }

  stripHref();
  if($('kw_moteur')){
    try{
      var segmentSigle = (document.getElement('input[name=origine]')?document.getElement('input[name=origine]').get("value"):DEFAULT_SEGMENT);
      BLCompletion = new BLAutocompleter($('div_completion'),
           $('kw_moteur'),
           '', 
           AUTOCOMPLETIONREQUEST,
           'rdata',
           'id='+window['ID_SEGMENT_'+segmentSigle]+'&dtd=2.0&cbf=BLCompletion.cmpl'); 
      BLCompletion._launchSearch= true;
      BLCompletion.onMouseOverUpdate= false;
    }
    catch(e){
      // En mode print, sous IE comme kw_moteur est en display:none il y a erreur qu'on veut seulement cacher
    }
  }
}

/* Gestion des images zoomables */
function initZoom(){
  $$('.zoomable').each(function(item){
      // Ajout de l'image loupe
      var coords = item.getCoordinates();
      /*
      new Element('img')
      .set({'src':'css/img/zoom.png','title':'Agrandir','class':'zoomer'})
      .setStyles({
        'position':'absolute',
        'top':coords.top+95,
        'left':coords.left + coords.width - 48})
      .inject($('o_content'));
      */
      var linkZoom = new Element('a').set({'rel':'imagezoom','class':'zoomable','href':item.get('src')}).inject(item,'before');
      item.inject(linkZoom);
  });

  // Init zoom functions in imagezoom.js
  if ($$('.zoomable').length > 0) {
    initImageZoom();
  }
}


/* Initialisation du menu */
function initMenu(){
	// Accessibilité du menu par les touches tab, entrée et space
	$$('div.onglet a.ongletLink').each(function(item){
		item.addEvents({
			'keypress':function(e){
				if (e.key == 'enter' || e.key == 'space') {
					e.stop();
					$('menu_top').getElements('div.onglet.hover').removeClass('hover');
					item.getParent('div.onglet').addClass('hover');
				}
			}
		});
	});			

	// Menu déployé via souris
	$$('div.onglet').each(function(item){
		item.addEvents({
			'mouseenter':function(){
				$('menu_top').getElements('div.onglet.hover').removeClass('hover');
				item.addClass('hover');
			},
			'mouseleave':function(){
				$('menu_top').getElements('div.onglet.hover').removeClass('hover');
			}
		});
	});
  
	// Retrait des href sur les liens N0 (ce qui ne sera pas fait pour les NOSCRIPT)
	$$('a.ongletLink').set('href','#');
}

/* Initialisation du comportement des mentions légales */
function initMentionLegales() {
	if ($$('h3.mentions')) {  
		$$('h3.mentions').each(function(item) {
			if (slidingEl = item.getNext('p.mentions')) {
				var thisSlider = new Fx.Slide(slidingEl, {duration: 500});
				thisSlider.hide();
				item.addEvent('click', function(){ thisSlider.toggle(); this.toggleClass('open'); });
			}
		});
	}
}

/* Initialisation des liens taggés en tags invisibles */
function initTaggingInvisible() {

	var prefixGSTATLink = 'http://r.orange.fr/r';
	
	// Filtrage pour les sous-domaines différents d'artefaq et assistance (ex : menu MR pour TLM)
	var sSousDomaine = document.domain.substr(0,(document.domain.length) - 10);
	sSousDomaine = sSousDomaine.replace(/(\.dev|\.rec|\.va1|\.va2|\.preview|[0-9]+)/g,'');
	if (sSousDomaine != 'artefaq' 
		&& sSousDomaine != 'assistance' 
		&& sSousDomaine != 'livebox' 
		&& sSousDomaine != 'assistance.internet') {
			return false;
	}

	// Reconstruction des liens taggés invisibles
	var nTagAuto = 1;
	$('o_content').getElements('a').each(function(item) {
		var lnk_url = item.getProperty('href');
		if (lnk_url != null) {
			// Transformation des liens non transformés (de type redirection classique ou Rbo)
			if (lnk_url.indexOf(prefixGSTATLink) == 0 && lnk_url.indexOf('ref=') != -1) {
				var lnk_type = 'classique';
				
				// Calcul du addRef
				var lnk_ref_start_position = lnk_url.indexOf('ref=')+4;
				var lnk_ref_end_position = lnk_url.indexOf('&',lnk_ref_start_position);
				if (lnk_ref_end_position == -1) {
					lnk_ref_end_position = lnk_url.length;
					lnk_type = 'rbo';
				}
				
				var lnk_ref = item.getProperty('href').substring(lnk_ref_start_position,lnk_ref_end_position);
				lnk_ref = lnk_ref.replace('ael_','');
				if (typeof(window['invisibleTagPrefix']) != "undefined") {
					lnk_ref = lnk_ref.replace(invisibleTagPrefix+'_','');
				}

				// Calcul de l'url
				if (lnk_type == 'classique') {
					var lnk_url = unescape(item.getProperty('href').substring(item.getProperty('href').indexOf('url=')+4));
				} else {
					var lnk_url = unescape(item.getProperty('href').substring(0,lnk_ref_start_position-5));
				}

				// On modifie les paramètres pour en faire un lien propre
				item.set('addRef',lnk_ref);
				item.set('href',lnk_url);
			}
			else {
				var lnk_ref = item.getProperty('addRef');
			}

			// Contrôles des liens
			if (lnk_url.indexOf('mms') == 0) {
				// lien vidéo => non taggué
			}
			else if (lnk_url.indexOf('#') == 0) {
				// lien ancre => non taggué
			}
			else if (lnk_url.indexOf('javascript') == 0) {
				// lien javascript => non taggué
			}
			else if (item.getProperty('noRef') != null) {
				// lien explicitement à ne pas tagguer => non taggué
			}
			else if (item.getProperty('rel') == 'nofollow') {
				// lien de extérieur à la Whitelist => non taggué
			}
			else {
				// Lien OK pour taggage (à l'exception du test sur le DNS du lien)

				// Ajout du SITE_FRONT pour url relative
				if (
					lnk_url.indexOf('http://') == -1 
					&& lnk_url.indexOf('https://') == -1 
					&& lnk_url.indexOf('ftp://') == -1 
					&& lnk_url.indexOf('mailto:') == -1
				) {
					lnk_url = SITE_FRONT+lnk_url;
					item.setProperty('href', lnk_url);
				}

				// lien ne pointant pas vers le domaine orange.fr => non taggué
				if (lnk_url.indexOf('.orange.fr') != -1) {
					// Lien non transformé à prendre en compte
					if (item.getProperty('addRef') == null) {
						item.setProperty('href', lnk_url);
						if (lnk_ref != null) {
							item.setProperty('addRef',lnk_ref);
						}
						else if (item.getParent('div.texte')) {
							item.setProperty('addRef','auto'+nTagAuto);
							nTagAuto++;
						}
						else if (item.getParent('div#suivi_dossier')) {
							item.setProperty('addRef','message'+nTagAuto);
							nTagAuto++;
						}
					}
					
					// 1) construction de son tag par héritage
					lnk_ref = getLinkTagGSTAT(item);

					// 2) Ajout de l'évènement de click permettant de reconstruire l'url (cas particulier : aide guidée dont la reconstruction s'opère dans son évenement de click)
					if (!item.hasClass('aide_guidee') && !item.hasClass('smoothbox') && !item.hasClass('assistance_guidee')){
						//item.set('title',getUrlWithTagGSTAT(item));
						item.addEvent('click',function(e) {
							lnk_url = getUrlWithTagGSTAT(this);

							// Taggage spéciale LR : Directhit (se cumule avec taggage GSTAT invisible)
							if (DIRECTHIT_ACTIVATED) {
								var lnk_DhRef = this.getProperty('addDhRef');
								if(lnk_DhRef != null && lnk_DhRef != '') {
										var tLnk_DhRef = lnk_DhRef.split("_");
										lnk_url = getRdhUrl(this.getProperty('href'), lnk_url, $("bhv").get("value"), tLnk_DhRef[0], $("logId").get("value"), $("kw_moteur").get("value"), $("lrPage").get("value"), tLnk_DhRef[1], tLnk_DhRef[2], DIRECTHIT_HOST);
								}
							}
							this.set('href',lnk_url);
						});
					}
				}
			}
		}
	});
}

//Reconstruction d'une Url tagguée invisible pour KE
function getRdhUrl(url, rurl, bhv, partner, logid, rdata, ap, numa, nump, server)
{
	// Cas d'un lien déjà transformé
	if (url.indexOf("http://"+server) == 0) {
		return url;
	}
	var path         = 'r' ;
	var privatekey   = 'KE-private';
	var version      = '01';
	var salt         = Math.floor(Math.random()*1000001);
	var eurl         = rawurlencode(url);
	var erurl        = rawurlencode(rurl);
	var erdata       = rawurlencode(rdata);
	var elg          = rawurlencode("fr");
	var eap          = rawurlencode(ap);
	var keypub       = privatekey+","+partner+","+eurl+","+erurl+","+logid+",assistance,"+bhv+","+erdata+","+numa+","+elg+","+salt;
	var key          = encodeURIComponent(MD5(keypub));
	var url_tracking = "http://"+server+"/"+path+"?url="+eurl+"&rurl="+erurl+"&id="+logid+"&ap="+eap+"&profil=assistance&bhv="+bhv+"&rdata="+erdata+"&numa="+numa+"&nump="+nump+"&lg="+elg+"&v="+version+"&salt="+salt+"&part="+partner+"&key="+key;
	return url_tracking;
}

// Reconstruit une url tagguée invisiblement
function getUrlWithTagGSTAT(oLink) {

	var prefixGSTATLinkClassique = 'http://r.orange.fr/r?ref=';
	var prefixGSTATLinkRbo = 'http://r.orange.fr/r/O';
	var lnk_url = oLink.getProperty('href');
	// Cas d'un lien déjà transformé (target blank ou download de fichier) => lien classique et Rbo
	if (lnk_url.indexOf(prefixGSTATLinkClassique) == 0
		|| (lnk_url.indexOf(prefixGSTATLinkRbo) == 0 && lnk_url.indexOf('ref=') != -1)) {
		return lnk_url;
	}
	var lnk_ref = getLinkTagGSTAT(oLink);
	
	if (oLink.getProperty('href').indexOf(prefixGSTATLinkRbo) == 0) {
		// Lien RBO
		lnk_url = lnk_url+'?ref='+lnk_ref;
	} else {
		// Lien classique
        lnk_url = escape(lnk_url).replace('+', '%2B');
		lnk_url = prefixGSTATLinkClassique+lnk_ref+'&url='+lnk_url;
	}
	return lnk_url;
}

// Récupère le tag d'un lien invisible par héritage de zones
function getLinkTagGSTAT(oLink) {
	var tmp_item = oLink.getParent();
	var lnk_ref = oLink.getProperty('addRef');
	var tmp_ref = (lnk_ref!=null?lnk_ref:'');
	var bFoundAddrefZone = false;
	while(tmp_item.get('id') != 'o_content') {
		if (tmp_item.getProperty('addRef') != null) {
			tmp_ref = tmp_item.getProperty('addRef')+(tmp_ref.length>0?'_':'')+tmp_ref;
			bFoundAddrefZone = true;
		}
		tmp_item = tmp_item.getParent();
	}
	var aTagWords = new Array();
	aTagWords.push('ael');
	if (typeof(window['invisibleTagPrefix']) != "undefined"&&!bFoundAddrefZone) {
		aTagWords.push(invisibleTagPrefix);
	}
	if (tmp_ref.length>0) {
		aTagWords.push(tmp_ref);
	}
	lnk_ref = aTagWords.join('_');
	return lnk_ref;
}

// rafraichissement de l'iframe 1_2 forcé
function initBlocMM() {
	if ($('tlm_iframe_1_2')) {
		reloadIframeMM();
	}
	if ($('tlm_iframe_3')) {
		reloadIframeBasculeAutoMM();
	}
}

// rafraichissement de l'iframe 1_2
function reloadIframeMM() {
	$('tlm_iframe_1_2').src = $('tlm_iframe_1_2').src;
}

// rafraichissement de l'iframe 3
function reloadIframeBasculeAutoMM() {
	$('tlm_iframe_3').src = $('tlm_iframe_3').src;
}

// Fermeture de la popin et rafraichissement de l'iframe
function closePopinAndReloadIframeMM() {
	TB_remove();
	reloadIframeMM();
	reloadIframeBasculeAutoMM();
}

/* Globales necessaires a la gestion des N2 */
var blocs = new Hash();
var listOrder;
var pnsValue;
var saveByCookie = false;

var ajaxSave = new Request({method: 'get', url: '../ajaxLSN2.php',link:'cancel'});
var ajaxLoad = new Request({method: 'get', url: '../ajaxLSN2.php',link:'cancel', onSuccess:function(text,xml){
      var reg = new RegExp('<error wassup="ko">');
      var resultat = reg.exec(text);
      if(resultat){
  // Erreur wassup, tout se fait par cookie
  saveByCookie = true;
  text = Cookie.read("ael_sortable");
      }
      pnsValue = text;
      setBlocs(text);
    }, onFailure:function(){
      saveByCookie = true;
      var pnsValue = Cookie.read("ael_sortable");
      setBlocs(pnsValue);
    }});

/* Initialise les N2 */

function initN2(){
  $$('.bloc strong a').addEvent('click',function(e){if(e){new Event(e).stop();}this.getParent('.inner').getElement('ul').slide('toggle');}).
    addEvent('mousedown',function(e){new Event(e).stop();}).
    each(function(item){
  item.getParent('.inner').getElement('ul').set('slide',{onComplete:function(e){
        item.getParent('.bloc').toggleClass("closed");
        if(item.getParent('.bloc').hasClass("closed")){
    item.set('text','ouvrir');
        }
        else{
    item.set('text','fermer');
        }
      }});
      });
  listOrder = new Sortables($("sortable"),{handle:'strong',constrain:false,clone:true,opacity:0.7,link:'cancel',onComplete:saveCurrentState});

  new SmoothScroll({links:$$("ul#speedbar a").addEvent('click',function(e){
    ev = new Event(e).stop();
    var id = this.href.replace(/^[^#]+#/,'');
    if($(id) && $(id).hasClass('closed')){
      $(id).getElement('a').fireEvent('click',ev);
    }
  })});
  
  // Recuperation de la valeur stockee sur PnS.
  ajaxLoad.send('method=read&data=AELUserPrefs&rand='+Math.random());
}

/* Enregistre l'ordre et l'etat des blocs */
function saveCurrentState(){
  var str = listOrder.serialize(false,
        function (element, index) {
          return element.getProperty('id').replace('bloc','') + '-' + (element.hasClass("closed")?0:1);}).join("_");
  str = currentRubId + ">" + str + ";";

  var reg = new RegExp(currentRubId + ">[^;]*;","gi");
  if(reg.test(pnsValue)){
    str=pnsValue.replace(reg,str);
  }else{
    str += pnsValue;
  }
  if(saveByCookie){
    Cookie.write("ael_sortable",str,{duration:30});
  }
  ajaxSave.send('method=record&data=AELUserPrefs&content='+str+'&rand='+Math.random());
}

function setBlocs(text){
  var reg = new RegExp(currentRubId + ">([^;]*);");
  var resultat = reg.exec(text);
  if(resultat){
    test = resultat[1].split('_');
    reg.compile("^([0-9]+)-([0-1])$");
    for(i = 0,j = 0; i<test.length; i++){
      resultat = reg.exec(test[i]);
      if(resultat && $("bloc"+resultat[1])){
  updateBloc(resultat[1],resultat[2],j++);
      }
    }
  }
}

function updateBloc(nbr,open,position){
  var id = "bloc" + nbr;
  if(open !=  "1"){
    // Fermeture du bloc
    $(id).getElement('a').fireEvent('click');
    /*    blocs[id].morphing.set({"opacity":"0","height":0,"padding-top":0,"padding-bottom":0});
    $(id).getElement('a').set("text","ouvrir");
    $(id).toggleClass("closed");*/
  }
  // Positionnement du bloc
  var children = $("sortable").getChildren();
  if(children[position]){
    $(id).inject(children[position],'before');
  }
  else{
    $(id).inject('sortable','bottom');
  }
}


function initVideos(){
  // Pour les videos, creation de la "lightbox"
  var overlay = new Element('div').set('id','overlay').inject(document.body).set('title','Cliquer ici pour fermer');
  var mediaBox = new Element('div').set('id','mediaBox').inject(document.body);
  /* Coins et bords de la mediabox */
  var coinHG = new Element('div').addClass('coinHG').inject(mediaBox);
  var coinHD = new Element('div').addClass('coinHD').inject(mediaBox);
  var coinBG = new Element('div').addClass('coinBG').inject(mediaBox);
  var coinBD = new Element('div').addClass('coinBD').inject(mediaBox);
  var borderLeft = new Element('div').addClass('borderLeft').inject(mediaBox);
  var borderRight = new Element('div').addClass('borderRight').inject(mediaBox);
  var borderTop = new Element('h2').addClass('borderTop').inject(mediaBox);
  var borderBottom = new Element('div').addClass('borderBottom').inject(mediaBox);
  var playerClose = new Element('a').set('id','playerClose').appendText('Fermer').inject(mediaBox);


  var inner =  new Element('div').addClass('inner').inject(mediaBox).setStyle("position","relative");
  var player = new Element('iframe').set('id','player').set('frameborder',0).inject(inner);
  var linkBar = new Element('p').inject(inner);
  //  var dlLink = new Element('a').set('target','_blank').appendText('[télécharger]').inject(linkBar);

  theOverlay = new Overlay();
  $$('#videos a, a.video, a.lien_video, a.video_169, #video a').each(function(lien){
      if(lien.href.test(/\.wmv$/)){
  lien.addEvent("click",function(e){
      
      var e = new Event (e).stop();
      theOverlay.showOverlay();
      //dlLink.set('href',lien.href.replace(/^mms/,'http'));
        
        if (lien.get('class') == 'video_169') {
            // cas du ratio 16:9
            if(lien.href.test(/_vxd\.wmv$/)){
                // Haute résolution
                var width = 640;
                var height = 360;    
            } else {
                // Basse résolution
                var width = 320;
                var height = 180;    
            }
        } else {
            // cas du ratio 4:3
            if(lien.href.test(/_vxd\.wmv$/)){
                // Haute résolution
                var width = 640;
                var height = 480;    
            } else {
                // Basse résolution
                var width = 320;
                var height = 240;    
            }
        }

      var winWidth = width + (Browser.Engine.trident4?30:20);
      var winHeight = height + (Browser.Engine.trident?65:85);
      /* Ajustements en fonction de la taille de la fenetre */
      if(Window.getSize().y < winHeight + 40 ||
         Window.getSize().x < winWidth + 40){
        var multiY = (Window.getSize().y - 40) / winHeight;
        var multiX = (Window.getSize().x - 40) / winWidth;
        var multi = Math.min(multiY,multiX);
        winHeight = Math.floor(winHeight * multi);
        winWidth = Math.floor(winWidth * multi);
        width = Math.floor(width * multi);
        height = Math.floor(height * multi);
      }

      /* Recuperation du titre */
      var titre = lien.getParent('div').getChildren('.sstitre');
      if(titre){
        try{
    borderTop.innerHTML = titre[0].innerHTML;
        }
        catch(e){
        }
      }


      inner.setStyles({width:winWidth,
      height:winHeight+20});
      mediaBox.setStyles({display:'block',
      top:Math.floor((Window.getSize().y - winHeight)/2)+'px',
      left:Math.floor((Window.getSize().x - winWidth)/2)+'px'});
      player.setStyles({display:'block',
      width:winWidth,
      height:winHeight});
      borderTop.setStyle('width',winWidth+10);
      borderBottom.setStyle('width',winWidth+10);
      borderLeft.setStyle('height',winHeight+30);
      borderRight.setStyle('height',winHeight+30);
      if(Browser.Engine.trident4){
        mediaBox.setStyle('top',Math.floor((window.getSize().y - mediaBox.getSize().y)/2)+window.getScroll().y);
      }
      
      // Remplace la fin de l'url de la page par videoPlayer.php en incluant si besoin (pour les hp et N2) le sigle du segment
      var url = window.location.toString().replace(/(?:\/[A-Z]+)?\/[^\/]+$/,'/videoPlayer.php');
      var tag = lien.get('rel');
      if(!tag){
        // Cree un tag a partir de l'adresse de la page
        tag = window.location.toString().match(/((?:[A-Z]+\/)?[^\/]+)\.[^\.]+$/);
        tag = tag[1];
        if(tag.match(/[0-9]+/)){
    // Si ce ne sont que des chiffres : une faq
    tag = 'ael_faq_' + tag;
        }
        else if(tag.match(/^[A-Z]+\/index$/)){
    // Home page d'un segment
    tag = 'ael_hp_' + tag.replace(/\/index$/,'');
        }
        else if(tag.match(/^[A-Z]+\//)){
    // Commence par un repertoire en majuscule : hp rubrique
    tag = 'ael_n2_' + tag.replace(/^[A-Z]+\//,'');
        }
        else{
    // Page speciale
    tag = 'ael_' + tag;
        }
      }
      player.src = 'http://r.orange.fr/r?ref='+tag+'&url='+url+'?url='+lien.href+'&width='+width+'&height='+height+'&tag='+tag;
    });
      }
    });
  $('playerClose').addEvent('click',theOverlay.hideOverlay.bindWithEvent(theOverlay));
  mediaBox.addEvent('click',function(e){
      new Event(e).stopPropagation();
    });
  if(Browser.Engine.trident4){
    // Sous IE6, position:fixed doit etre emule
    $('mediaBox').setStyle('position','absolute');
    $('mediaBox').setStyle('top',Math.floor((window.getSize().y - ($('mediaBox').getSize().y + 5))/2)+window.getScroll().y);
    window.addEvent('scroll',function(e){
  $('mediaBox').setStyle('top',Math.floor((window.getSize().y - ($('mediaBox').getSize().y + 5))/2)+window.getScroll().y);
      });
    $('overlay').setStyle('filter','alpha(opacity=80)');
  }
}

var Overlay = new Class({
  initialize:function(){
      this.overlay = $('overlay').fade('hide');
      $(window.document).addEvents({
    'keydown':function(e){
    if(e.key == 'esc'){ 
      this.hideOverlay();
    }
    }.bindWithEvent(this),
    'click':function(e){
      this.hideOverlay();
    }.bindWithEvent(this)
        });
    },
  showOverlay:function(options){
    options=Object.extend({duration:500,from:0,to:0.8},options||{});
    this.overlay.setStyles({height:Window.getScrollHeight()+'px',width:Window.getScrollWidth()+'px'}).set('tween',options);
    this.overlay.fade(options.to);
  },
  hideOverlay:function(){
    this.overlay.set('tween',{duration:500}).fade('out');
    $('mediaBox').setStyle('display','none');
    $('player').src = '';
  }
});

/* From changestyle.js */
function setActiveSizeStyleSheet(title){
  var i, a;
  for(i=0; (a = document.getElementsByTagName("link")[i]); i++) {
    if(a.getAttribute("rel").indexOf("style") != -1 && a.getAttribute("title")) {
      if(a.getAttribute("title") == title) {
  a.disabled = false;
  createCookie("assistance_size", title, 365);
      } else {
  a.disabled = true;
      }
    }
  }
}

function getActiveSizeStyleSheet(){
  var i, a;
  for(i=0; (a = document.getElementsByTagName("link")[i]); i++) {
    if(a.getAttribute("rel").indexOf("style") != -1 && a.getAttribute("title") && !a.disabled) {
		return a.getAttribute("title");
	}
  }
  return "normal";
}

function getPreferredSizeStyleSheet(){
  var i, a;
  for(i=0; (a = document.getElementsByTagName("link")[i]); i++) {
    if(a.getAttribute("rel").indexOf("style") != -1
       && a.getAttribute("rel").indexOf("alt") == -1
       && a.getAttribute("title")
       ) return a.getAttribute("title");
  }
  return "normal";
}

function createCookie(name,value,days) {
	var expires = '';
	if (days) {
		var date = new Date();
		date.setTime(date.getTime()+(days*24*60*60*1000));
		expires = ";expires="+date.toGMTString();
	}
	document.cookie = name+"="+value+expires+";path=/";
}

function readCookie(name) {
  var nameEQ = name + "=";
  var ca = document.cookie.split(';');
  for(var i=0;i < ca.length;i++) {
    var c = ca[i];
    while (c.charAt(0)==' ') c = c.substring(1,c.length);
    if (c.indexOf(nameEQ) == 0) return c.substring(nameEQ.length,c.length);
  }
  return null;
}


function getDateCookie() {
  var nameEQ = "expires=";
  var ca = document.cookie.split(';');
  for(var i=0;i < ca.length;i++) {
    var c = ca[i];
    while (c.charAt(0)==' ') c = c.substring(1,c.length);
    if (c.indexOf(nameEQ) == 0) return c.substring(nameEQ.length,c.length);
  }
  return null;
}

function increaseSize() {
  current = getActiveSizeStyleSheet();
  if (current == "normal") {
    setActiveSizeStyleSheet("big");
    return true;
  }
  if (current == "big") {
    setActiveSizeStyleSheet("bigger");
    return true;
  }
  if (current == "bigger") {
    setActiveSizeStyleSheet("huge");
    return true;
  }
  return false;
}

function decreaseSize() {
  current = getActiveSizeStyleSheet();
  if (current == "big") {
    setActiveSizeStyleSheet("normal");
    return true;
  }
  if (current == "bigger") {
    setActiveSizeStyleSheet("big");
    return true;
  }
  if (current == "huge") {
    setActiveSizeStyleSheet("bigger");
    return true;
  }
  return false;
}

function initTaille(){
  var cookie = readCookie("assistance_size");
  var size = cookie ? cookie : "normal";
  setActiveSizeStyleSheet(size);
  if (increaseSize()) decreaseSize();
  if (decreaseSize()) increaseSize();
}

/**
*  Imprime la page en cours
*/
function printPage() {
  window.print();
}

window.addEvent('unload',function(e) {
	var title = getActiveSizeStyleSheet();
	createCookie("assistance_size", title, 365);

	/* Sondage CNPS */
	if (typeof(POPUP_CNPS) != 'undefined' && POPUP_CNPS == 'oui') {
		var urlSondageCnps = SITE_FRONT+URL_POPUP_SONDAGE_CNPS;
		var tagGSTATCnps = 'ael_'+invisibleTagPrefix+'_sondage_cnps';
		window.open('http://r.orange.fr/r?ref='+tagGSTATCnps+'&url='+urlSondageCnps,'Sondage_CNPS', 'resizable=no, location=no, width=500, height=300, menubar=no, status=no, scrollbars=no, menubar=no');
	}
	/* Fin sondage CNPS */

	/* Sondage BVA */
	if (typeof(SONDAGEBVA_ACTIVATED) != 'undefined') {
		if(SONDAGEBVA_ACTIVATED) {
			// Date de fin (jour inclus)
			var dFin = 01;
			var mFin = 12;
			var yFin = 2011;
			var expire = new Date(yFin, (mFin-1), (dFin+1));
			var today = new Date();
			if (today < expire) {
				var segmentOrigin = (document.getElement('input[name=origine]')?document.getElement('input[name=origine]').value:null);
				if (typeof(PAGETYPE)!='undefined') {
					if ((PAGETYPE == 'rubrique_n2' && (segmentOrigin == 'MR' || segmentOrigin == 'FIXR' || segmentOrigin == 'FIXP'))) {
						//Il ne faut pas que le sondage CNPS soit déclenché (variable Javascript « POPUP_CNPS » inexistante ou à « non » et cookie « ael_sondage_CNPS » inexistant) ou s’il a déjà été déclenché (présence du cookie « ael_sondage_CNPS ») que ce cookie ait déjà 1 jour d’âge minimum
						var nDayInMillisec = 86400000; // 86 400 000 correspond à une journee en ms
						var sDateCreateCookie_CNPS = readCookie('ael_sondage_CNPS');
						var oDateCreateCookie_CNPS = new Date(sDateCreateCookie_CNPS);
						var dateNow = new Date();
						var ageOfCookie_CNPS  = dateNow.getTime() - oDateCreateCookie_CNPS.getTime();

						if (((typeof(POPUP_CNPS) == 'undefined' || POPUP_CNPS == 'non') && sDateCreateCookie_CNPS == null)  || (sDateCreateCookie_CNPS != null && (ageOfCookie_CNPS > nDayInMillisec))) {
							var bvaCookie = readCookie('sondageBVA');
							// Si le cookie n'existe pas ou qu'il est expiré
							if(bvaCookie != 'true') {
								var urlSondage = SITE_FRONT+URL_POPUP_SONDAGE;
								var tagGSTAT = 'ael_'+invisibleTagPrefix+'_bva';
								window.open('http://r.orange.fr/r?ref='+tagGSTAT+'&url='+urlSondage, 'Sondage_BVA', 'status=no, titlebar=no, toolbar=no, location=no, directories=no, menubar=no, resizable=no,width=350,height=200');
							}
						}
					}
				}
			}
		}
	}
	/* FIN SONDAGE BVA */
});

if(Browser.Engine.trident){
  //Probleme avec IE qui lance domready avant que le DOM soit pret.
  window.addEvent('load',initSite);
 
}
else{
  window.addEvent('domready',initSite);
  
}

/**
 *                                          BriqueLight
 */
/**
 * Suggestion de css:
 * Cas 2 colonnes:
.AutoCompleteDivTitle{font-family:Arial, Helvetica, sans-serif;font-size:11px;background-color:#fff;color:#333;text-align:center;height:14px;display:block;}
.AutoCompleteDivListeStyle{border:1px solid #aaa;word-wrap:break-word;background-color:#f8ecdf;margin:0;width:200px;z-index:10;text-align: left;}
.AutoCompleteDiv{padding:2px 0 2px 3px;border-collapse:collapse;line-height:14px;overflow:hidden;background-color:#f8ecdf;cursor:pointer;color:#333;font-family:Arial, Helvetica, sans-serif;font-size:11px;width:196px;}
.AutoCompleteDivCol1{width:150px;float:left;position: relative;}
.AutoCompleteDivCol2{width:40px;color:#999;}
.AutoCompleteDivAct{padding:2px 0 2px 3px;border-collapse:collapse;line-height:14px;background-color:#F60;cursor:pointer;color:#FFF;font-family:Arial, Helvetica, sans-serif;font-size:11px;overflow: hidden;}
.AutoCompleteId{display:none;visibility:hidden;}

 * Exemple d'initialisation:
 BLCompletion = new BLAutocompleter(document.getElementById('div_Completion'), document.getElementById('rdata'),'appelFromCompletionSearch', CUrl,'kw','dtd=2.0&cbf=BLCompletion.cmpl');
 */

/**
 * Appelle un script js, via l'entete html
 */
function writeScript(url){
var head=document.getElementsByTagName('head')[0];
var script=document.createElement('script');
if(document.getElementById('scrComp')){
 var oldSrc = document.getElementById('scrComp');
 head.removeChild(oldSrc);
 script.setAttribute('id','scrComp');
 script.setAttribute('type','text/javascript');
 script.setAttribute('src',url);
 head.appendChild(script);
}else{
 script.setAttribute('id','scrComp');
 script.setAttribute('type','text/javascript');
 script.setAttribute('src',url);
 head.appendChild(script);
}
}

/**
 * Suppression rapide de l'autocompletion
 */
function removeAutoComplete(field){
  field.onkeyup=null;
}

/* Cacher les champs select (ie6) */
function hideSelectElementCompletion(divId){
  var nods=document.getElementById(divId).getElementsByTagName('select');
  for(i=0;i<nods.length;i++){
    nods[i].style.visibility='hidden';
    nods[i].cptHideDivAction=0;
  }
}
/* Afficher les champs select (ie6) */
function showSelectElementCompletion(divId){
  var nods=document.getElementById(divId).getElementsByTagName('select');
  for(i=0;i<nods.length;i++){
    if (nods[i].cptHideDivAction==0){
      nods[i].style.visibility='visible';
    }
    nods[i].cptHideDivAction=1;
  }
}

/**
 * Place le curseur a la fin du champ (ie)
 */
function cursorAfterValue(n){
  if (n.value){
    oldValue= n.value;
    n.value= "";    // effacement
    n.value= oldValue;    // puis reecriture
  }
}

/**
 * Retourne la valeur de la possibilite (texte) contenu dans une div de possibilite, dans la colonne col (0,1,2)
 */
function getSuggestion(uneDiv,col){
  if ((!uneDiv)||(!(uneDiv.getElementsByTagName('span')[col])))return null;
  return uneDiv.getElementsByTagName('span')[col].firstChild.data;
}

/**
 * Ecoute les evenements d'un element (window, document, ...)
 */
function gaddEvent(obj,evenement,fn){
  if (obj.addEventListener)
    obj.addEventListener(evenement,fn,false)
  else if (obj.attachEvent)
    obj.attachEvent("on"+evenement,fn)
  else
    return false;
}

/**
 * Declenchee quand on clique sur une div contenant une possibilite
 */
function divOnMouseDown(completeur,event,laDiv){
  completeur._inputField.value=getSuggestion(laDiv,0);
  completeur.affectValues(laDiv);
  completeur._suggestionUsed=true;
  if (completeur._useHistory==true){
    updateCookie(completeur._inputField.value,completeur._cookieName);
  }
  completeur.hideCompleteDiv();
  completeur.blurThenGetFocus();
  if (completeur._onSubmitFunction)
    eval(completeur._onSubmitFunction+'("'+completeur._inputField.value+'","'+completeur._2ndColumnValue+'","'+completeur._idValue+'","'+completeur.id+'")');
}

/**
 * Declenchee quand on passe sur une div de possibilite. La div precedente est passee en style normal
 */
function divOnMouseMove(completeur,event,laDiv){
  completeur._cursorUpDownPressed=false;
  if (completeur._highlightedSuggestionDiv){
    completeur.setStyleForElement(completeur._highlightedSuggestionDiv,"AutoCompleteDiv");
  }
  children = laDiv.parentNode.childNodes;
  for(i=0; i < children.length; i++) {
    if (laDiv==children[i]) {
      completeur._highlightedSuggestionIndex=i-1;
      completeur._highlightedSuggestionDiv= laDiv;
      break;
    }
  }
  completeur.setStyleForElement(laDiv,"AutoCompleteDivAct");
  if (completeur.onMouseOverUpdate) {
    completeur._suggestionUsed=true;
    completeur._inputField.value=getSuggestion(laDiv,0);
    completeur.affectValues(laDiv);
  }
}

/**
 * Declenchee quand la souris quitte une div de possiblite. La div repasse a l'etat normal
 */
function divOnMouseOut(completeur,event,laDiv){
  completeur.setStyleForElement(laDiv,"AutoCompleteDiv");
  if(_idField!=null && document.getElementById(_idField)){
  document.getElementById(_idField).value=getSuggestion(this,1);
  }
}

/**
 *                                          pluginHistory.js
 */
// le nombre de reponses a afficher dans l'historique
var _maxHistoryItemNb=5;

/**
 * Verifie si le parametre se trouve deja dans le cookie
 */
function itemInCookie(itemInfos,_cookieName){
  var cookie=greadCookie(_cookieName);
  if (cookie!=null){
    cookie=html_entity_decode(unescape(cookie));
    cookie=cookie.split("$");
    for(j=0;j<cookie.length;j++){
      if (itemInfos==cookie[j]){
        return true;
      }
    }
  }
  return false;
}

/**
 * Renvoie le contenu du cookie dans une liste
 */
function handleCookieData(_cookieName,_inputFieldValue){
  var cookie=greadCookie(_cookieName);
  var historyList=new Array();
  if (cookie!=null){
    cookie=html_entity_decode(unescape(cookie));
    cookie=cookie.split("$");
    for(i=0;i<cookie.length;i+=2){
      var currentItem=cookie[i+1];
        historyList.push(cookie[i]);
    }
  }
  return historyList;
}

/**
 * Lecture du cookie
 * Renvoie le contenu brut du cookie
 */
function greadCookie(name){
  var arg=name+"=";
  var alen=arg.length;
  var clen=document.cookie.length;
  var begin=0;
  while(begin<clen){
    var end=begin+alen;
    if (document.cookie.substring(begin,end)==arg){
      var endstr=document.cookie.indexOf(";",end);
      if (endstr==-1)endstr=document.cookie.length;
      return html_entity_decode(unescape(document.cookie.substring(end,endstr)));
    }
    begin=document.cookie.indexOf(" ",begin)+1;
    if (begin==0)break;
  }
  return null;
}
function deleteCookie( _cookieName){
  document.cookie = _cookieName + "=;path=/;expires=Thu, 01-Jan-1970 00:00:01 GMT";
  return false;
}
/**
 * Met a jour le cookie, avec le parametre fourni
 */
function updateCookie(suggestSel,_cookieName){
  if (!itemInCookie(suggestSel,_cookieName)){
    suggestNoAccent=noAccentCmpl(suggestSel);
    var newCookieValue=escape(htmlentities(suggestSel));
    newCookieValue+="$"+escape(htmlentities(suggestNoAccent));
    var oldCookieValue=greadCookie(_cookieName);
    if (oldCookieValue!=null){
      oldCookieValue=html_entity_decode(unescape(oldCookieValue));
      oldCookieValue=oldCookieValue.split("$");
      for(i=1;i<=oldCookieValue.length;i+=2){
        //  empiler la nouvelle valeur au debut
        if (i<=_maxHistoryItemNb+2||_maxHistoryItemNb==0)
          newCookieValue+="$"+oldCookieValue[i-1]+"$"+oldCookieValue[i];
      }
    }
    document.cookie=_cookieName+"="+escape(htmlentities(newCookieValue))+";path=/";
  }
}
function noAccentCmpl(str){
  var a= "\xE0\xE2\xE4\xE1\xC0\xC1\xC4\xC2\xEB\xE8\xE9\xEA\xCA\xC9\xC8\xCB\xEF\xEE\xED\xEC\xCC\xCD\xCE\xCF\xFC\xF9\xFB\xFA\xDA\xD9\xDB\xDC\xE3\xF5\xF1\xC3\xD5\xD1\xE7";
  var b="aaaaAAAAeeeeEEEEiiiiIIIIooooOOOOuuuuUUUUaonAONc";
  for(var i=0;i<a.length;i++){
    str=str.split(a.charAt(i)).join(b.charAt(i));
  }
  return str;
}

/**
 * / pluginHistory.js
 */

/**
 *
 * Classe d'Autocompletion
 *
 */
var BLAutocompleter = function(divCompletion,field,onSubmitFunction,url,paramName,defaultParams,cssPrefix,selectToHide, idField)
{
  if (!divCompletion) return false;
  if (!field) return false;
  if (typeof(idField)!='undefined')
   _idField=idField;
  else _idField=null;
  this._completeDivRows=0;
  this._completeDivDivList=null;
  this._highlightedSuggestionIndex=-1;
  this._highlightedSuggestionDiv=null;
  this._cursorUpDownPressed=true;
  this._lastKeyCode=null;
  this._eventKeycode=null;
  if (typeof(cssPrefix)!='undefined')
    this._cssPrefix=cssPrefix;
  else this._cssPrefix='';
//    this._resultCache=new Object(); // mecanisme de cache des requetes
  this._cookieName="history";    // le nom du cookie
  this._maxNbSuggestions=10;    // le nombre de suggestions a afficher
  this._completeDiv=divCompletion;    // le div de completion
  this._useHistory=true;    // indique si l'historique doit etre affiche'
  this._use2ndColumn=null;    // indique si une 2nde colonne est a rechercher
  this._useId=null;    // indique si l'ID (invisible) est a gerer
  this._suggestionUsed=null;    // vaut true si la suggestion est utilisee dans l'input (clic, return, ...)
  this._inputField=field;    // le champ texte lui-meme
  this._onSubmitFunction=onSubmitFunction;    // fonction a lancer en cas de validation (clic, return).
  this._urlSearch=url;    //l 'adresse a interroger pour trouver les suggestions
  this._paramName=paramName;    // le nom du parametre. Ex: kw
  this._defaultParams=defaultParams;    // les parametres par defaut a envoyer. Ex: dtd=2.0
  this._selectElementToHide=selectToHide;    // un select eventuel a cacher
  this._inputField.setAttribute('autocomplete','off');
  this.createAutocompleteDiv();
  this.onMouseOverUpdate= true;
  this._currentInputFieldValue=this._inputField.value;
  this._oldInputFieldValue=this._currentInputFieldValue;
  var completeur=this;

//    this.cacheResults("",new Array());

  /**
   * Handler pour le keydown du document (fleches, ...)
   */
  this._inputField.onkeydown=function(event){
    // acces evenement compatible IE/Firefox
    if (!event&&window.event)
      event=window.event;
    // on enregistre la touche ayant declenche l'evenement
    if (event){
      completeur._lastKeyCode=event.keyCode;
      if ((completeur._lastKeyCode==18)||(completeur._lastKeyCode==27)) return false;
    }
    if (completeur.handleCursorUpDownEnter(completeur._lastKeyCode)&&(completeur._lastKeyCode!=0)){
      // si on a presse une touche autre que haut/bas/enter
      completeur._suggestionUsed=null;
      completeur.PressAction();
    } else
      if (completeur._highlightedSuggestionIndex>= 0)
        return false;
  };

  /**
   * Handler pour le keyup du champ texte
   */
  this._inputField.onkeyup=function(event){
    // acces evenement compatible IE/Firefox
    if (!event&&window.event)
      event=window.event;
    completeur._eventKeycode=event.keyCode;
    // touche alt (18) ou echap (27)
    if (completeur._eventKeycode==18) return false;
    if (completeur._eventKeycode==27){
      completeur.hideCompleteDiv();
      return false;
    }
    // touche fleche haut (38) ou fleche bas (40)
    if (completeur._eventKeycode==40||completeur._eventKeycode==38){
      // on autorise le blur du champ (traitement dans onblur)
      completeur.blurThenGetFocus();
    }
    // contenu du champ texte
    var V=completeur._inputField.value;
    if (completeur._eventKeycode!=0){
      // touche entree (13 / 3)
      if (completeur._eventKeycode==13||completeur._eventKeycode==3){
        var d=completeur._inputField;
        // on met en place l'ensemble du champ texte en repoussant la selection
        if (d.createTextRange){
          d.createTextRange().moveStart("character",d.value.length);
          d.select();
        }
        else if (d.setSelectionRange)
          d.setSelectionRange(d.value.length,d.value.length)
//          removeAutoComplete(completeur._inputField);
        if (completeur._useHistory==true)
          updateCookie(V,completeur._cookieName);
        if (completeur._onSubmitFunction){
          if (completeur._highlightedSuggestionIndex>= 0)
            eval(completeur._onSubmitFunction+'("'+escape(completeur._inputField.value)+'","'+completeur._2ndColumnValue+'","'+completeur._idValue+'","'+completeur.id+'")');
          }
        completeur.hideCompleteDiv();
        return false;
      }
      else{
        // si on n'a pas pu agrandir le champ non selectionne, on le met en place violemment.
        if (completeur._inputField.value!=V) completeur._inputField.value= V;
      }
    }
    
    // si la touche n'est ni haut, ni bas, on stocke la valeur utilisateur du champ
    if ((completeur._eventKeycode!=40)&&(completeur._eventKeycode!=38)){
      // le champ courant n est pas change si key Up ou key Down
      completeur._cursorUpDownPressed=false;
      completeur._currentInputFieldValue=V;
    }
    else cursorAfterValue(completeur._inputField);
    if (completeur._oldInputFieldValue!=completeur._currentInputFieldValue){
      var valeur=escape(completeur._currentInputFieldValue);
      if (valeur!=''){
/*          var suggestions=completeur._resultCache[completeur._currentInputFieldValue];
          if (suggestions){ // la reponse etait encore dans le cache
            completeur.displayComplete(valeur,suggestions)
          } else{
*/            writeScript(completeur._urlSearch+'&'+completeur._paramName+'='+valeur+'&'+completeur._defaultParams)// appel distant
          completeur._inputField.focus();
//          }
      }
      else completeur.hideCompleteDiv();
    }
    completeur._oldInputFieldValue=completeur._currentInputFieldValue;
  };

  /**
   * Handler de blur sur le champ texte
   */
  this._inputField.onblur=function(event){
    if (!completeur._cursorUpDownPressed){
      // si le blur n'est pas cause par la touche haut/bas
      setTimeout(function() { completeur.hideCompleteDiv(); },150);
    }
    completeur._cursorUpDownPressed=false;
  }

  /* Handler de resize de la fenetre: recalcule la taille des suggestions */
  gaddEvent(window,'resize',function(){
    completeur.setCompleteDivSize();
  });
}

BLAutocompleter.prototype={

  /**
   * Indique si le champ actuellement en place est issu de la completion
   */
  completionUsed:function(){
    return this._suggestionUsed;
  },
  /**
   * Fonction de callback appelee une fois que le javascript est retourne'
   */
  cmpl:function(jsonData){
    var liste=this.handleJsonSuggestions(jsonData);
//    this.cacheResults(this._currentInputFieldValue,liste);
    this.displayComplete(this._currentInputFieldValue,liste);
  },
  /**
   * Mecanisme de caching des reponses
   */
  //cacheResults: function (debut,suggestions){
  //  this._resultCache[debut]=suggestions;
  //},
  /**
   * Change la classe d'un element
   */
  setStyleForElement:function(c,name){
    if (c!=null){
      if (this._cssPrefix!='') c.className= name+ " "+ this._cssPrefix+name;      // surcharge
      else c.className= name;
    }
  },
  /**
   * Transformation des donnees JSON en tableau
   */
  handleJsonSuggestions:function(xmlDoc){
    var options= xmlDoc[1];
    var optionsListe= new Array();
    var optionsCol1= new Array();
    if ((options)&&(options.length)){
      for(var i=0;(i<options.length)&&(i< this._maxNbSuggestions);++i){
        optionsCol1.push(options[i]);
      }
      optionsListe.push(optionsCol1);
    }
    // colonne 2
    if (this._use2ndColumn&&xmlDoc[2]){
      var optionsCol2= this.handle2ndColumn(xmlDoc[2]);
      if (optionsCol2!= false)
        optionsListe.push(optionsCol2);
    }
    // ID
    if (this._useId&&xmlDoc[3]){
      var optionsCol3= this.handle2ndColumn(xmlDoc[3]);
      if (optionsCol3!= false)
        optionsListe.push(optionsCol3);
    }
    return optionsListe;
  },
  /**
   * Calcule la position du div de completion
   */
  setCompleteDivSize:function(){
    if (this._completeDiv){
      this._completeDiv.style.left= this._inputField.offsetLeft+"px";
      this._completeDiv.style.top= this._inputField.offsetTop+ this._inputField.offsetHeight-1+"px";
    }
  },
  /**
   * Cree le div de completion
   */
  createAutocompleteDiv:function(){
    this._completeDiv.style.visibility="hidden";
    this._completeDiv.style.position="absolute";
    this.setCompleteDivSize();
    this.setStyleForElement(this._completeDiv,"AutoCompleteDivListeStyle");
  },
  /**
   * Affiche le div de completion
   */
  displayComplete:function(valeur,liste){
    while(this._completeDiv.childNodes.length>0){
      this._completeDiv.removeChild(this._completeDiv.childNodes[0]);
    }
    if ((liste[0])&&(liste[0].length>0)){
      var newDiv=document.createElement("SPAN");
      newDiv.innerHTML='Suggestions';      //titre de la liste
      newDiv.id='completeDivTitle';
      this.setStyleForElement(newDiv,"AutoCompleteDivTitle");
      this._completeDiv.appendChild(newDiv);
      var completeur=this;
      // mise en place des suggestions
      for (var f=0;f<liste[0].length;++f){
        var newDivLine= document.createElement("div");
        this.setStyleForElement(newDivLine,"AutoCompleteDiv");
        var newSpan= document.createElement("span");

		//Patch propre et de toute beauté pour le comportement IE7
		if ($('IE7')) {
			newSpan.innerHTML = decodeURIComponent(escape(liste[0][f]));  
		}
		else {
			newSpan.innerHTML = liste[0][f];  
		}
		// le texte de la suggestion
        this.setStyleForElement(newSpan,"AutoCompleteDivCol1");
        newDivLine.appendChild(newSpan);
        if (this._use2ndColumn){
          if ((liste[1])&&(liste[1][f]))
            this.display2ndColumn(newDivLine,liste[1][f]);
          else
            this.display2ndColumn(newDivLine,"&nbsp;");
        }
        if (this._useId){
          if (this._use2ndColumn&&(liste[2])&&(liste[2][f]))
            this.displayId(newDivLine,liste[2][f]);
          else if (!this._use2ndColumn&&(liste[1][f]))
            this.displayId(newDivLine,liste[1][f]);
        }
        this._completeDiv.appendChild(newDivLine);
        newDivLine.onmousedown=function(event){
          divOnMouseDown(completeur,event,this);
        };
        newDivLine.onmousemove=function(event){
          divOnMouseMove(completeur,event,this);
        };
        newDivLine.onmouseout=function(event){
          divOnMouseOut(completeur,event,this);
        };
        this._completeDiv.appendChild(newDivLine);
      }
      if (this._useHistory==true)
        this.displayHistory();
      if (this._selectElementToHide)
        hideSelectElementCompletion(this._selectElementToHide);
      this.PressAction();
    }
    else { // pas de suggestions
      this.hideCompleteDiv();
      this._completeDivRows= 0;
    }
  },
  /**
   * Change la suggestion selectionnee
   * Cette methode traite les touches haut, bas et enter
   */
  handleCursorUpDownEnter:function(eventCode){
    if (eventCode==40){
      this.highlightNewValue(this._highlightedSuggestionIndex+1);
      return false;
    }
    else if (eventCode==38){
      this.highlightNewValue(this._highlightedSuggestionIndex-1);
      return false;
    }
    else if (eventCode==13||eventCode==3){
      return false;
    }
    this._suggestionUsed=null;
    return true;
  },
  /**
   * Gere une touche pressee autre que haut, bas et enter
   */
  PressAction:function(){
    var suggestionList= this._completeDiv.getElementsByTagName("div");
    var suggestionLongueur=suggestionList.length;
    // on stocke les valeurs precedentes
    // nombre de possibilites de completion
    this._completeDivRows=suggestionLongueur;
    // possiblites de completion
    this._completeDivDivList=suggestionList;
    // si le champ est vide, on cache les propositions de completion
    if (this._currentInputFieldValue==""||suggestionLongueur==0)
      this.hideCompleteDiv();
    else
      this.showCompleteDiv();

    // on deselectionne toutes les suggestions
    for(var i=0;i<suggestionLongueur;i++){
      this.setStyleForElement(suggestionList.item(i),"AutoCompleteDiv");
    }
    this._highlightedSuggestionIndex=-1;
    this._highlightedSuggestionDiv=null;
    var supprSelection=false;
    switch(this._eventKeycode){
      // fleche gauche, fleche droite, page up, page down, autres ?
      case 8:case 33:case 34:case 35:case 35:case 36:case 37:case 39:case 45:case 46:// on supprime la suggestion du texte utilisateur
      supprSelection=true;
      break;
      default:break
    }
    // si on a une suggestion (n-1) selectionnee
    if (!supprSelection&&this._highlightedSuggestionDiv){
      this.setStyleForElement(this._highlightedSuggestionDiv,"AutoCompleteDivAct");
      var z=this._currentInputFieldValue;
    }
    else{
      // sinon, plus aucune suggestion de selectionnee
      this._highlightedSuggestionIndex=-1;
    }
  },
  /**
   * Permet le blur du champ texte apres que la touche haut/bas ait ete pressee
   * Le focus est recupere apres traitement (via le timeout).
   */
  blurThenGetFocus:function(completeur){
    this._cursorUpDownPressed=true;
    this._inputField.blur();
    var _self=this;
    setTimeout(function(){
      _self._inputField.focus();
      if (_self._inputField.value){ // forcer le curseur en fin de ligne (ie6)
        oldValue= _self._inputField.value;
        _self._inputField.value= "";    // effacement
        _self._inputField.value= oldValue;    // puis reecriture
      }
    },10);
    return;
  },
  /**
   * Cache completement les choix de completion
   */
  hideCompleteDiv:function(){
    this._completeDiv.style.visibility="hidden";
    this._highlightedSuggestionIndex=-1;
    if (this._selectElementToHide) showSelectElementCompletion(this._selectElementToHide);
  },
  /**
   * Rend les choix de completion visibles
   */
  showCompleteDiv:function(){
    this.setCompleteDivSize();
    this._completeDiv.style.visibility="visible";
  },
  /**
   * Change la suggestion en surbrillance
   */
  highlightNewValue:function(C){
    if (!this._completeDivDivList||(this._completeDivRows<=0))
      return;

    this.showCompleteDiv();
    this._suggestionUsed=true;
    this.setStyleForElement(this._highlightedSuggestionDiv,"AutoCompleteDiv");
    if (C>=this._completeDivRows)
      C=0;
    if (C<0)
      C=this._completeDivRows-1;  // pour retourner dans l'input, mettre   this._highlightedSuggestionIndex=-1;    this._inputField.focus();
    this._highlightedSuggestionIndex=C;
    this._highlightedSuggestionDiv= this._completeDivDivList.item(C);
    if (this._highlightedSuggestionDiv!= null){
      this.setStyleForElement(this._highlightedSuggestionDiv,"AutoCompleteDivAct");
      this._inputField.value= getSuggestion(this._highlightedSuggestionDiv,0);
  if(this._idField!=null && document.getElementById(this._idField)){
  document.getElementById(this._idField).value=getSuggestion(this._highlightedSuggestionDiv,1);
  }
      this.affectValues(this._highlightedSuggestionDiv);
      this._completeDiv.scrollTop= C*this._highlightedSuggestionDiv.offsetHeight;
    }
  },
  affectValues:function(theDiv){
    if (this._use2ndColumn)
      this._2ndColumnValue=getSuggestion(theDiv,1);
    if (this._useId){
      if (this._use2ndColumn)
        this._idValue=getSuggestion(theDiv,2);
      else
        this._idValue=getSuggestion(theDiv,1);
    }
  },
  /**
   * Affiche un div contenant la 2nde colonne
   */
  display2ndColumn:function(newDiv,element){
    var newSpan=document.createElement("SPAN");
    newSpan.innerHTML=element;
    this.setStyleForElement(newSpan,"AutoCompleteDivCol2");
    newDiv.appendChild(newSpan);
    return false;
  },
  handle2ndColumn:function(liste){
    var optionsCol2=new Array();
    var options2=liste;
    if ((liste)&&(liste.length)){
      for(var i=0;i<liste.length;++i){
        optionsCol2.push(liste[i]);
      }
      return optionsCol2;
    }
    return false;
  },
  /**
   * creer un span invisible contenant l'id
   */
  displayId:function(newDiv,element){
    var newSpan=document.createElement("SPAN");
    newSpan.innerHTML=element;
    this.setStyleForElement(newSpan,"AutoCompleteId");
    newDiv.appendChild(newSpan);
    return false;
  },
  /**
   * Affiche l'historique
   */
  displayHistory:function(){
    cookieHistory=handleCookieData(this._cookieName,this._inputField.value);
    if (cookieHistory.length>0){
      var historyDiv=document.createElement("SPAN");
      historyDiv.innerHTML='Historique&nbsp;(<a href="#" class="AutoCompleteDivDel" onClick="javascript:deleteCookie(\''+this._cookieName+'\');return false; ">effacer</a>)';
      historyDiv.id='completeDivTitle';
      this.setStyleForElement(historyDiv,"AutoCompleteDivTitle");
      this._completeDiv.appendChild(historyDiv);
      var completeur=this;
      for(var f=0;f<cookieHistory.length;f++){
        var nouveauDiv=document.createElement("DIV");
        nouveauDiv.onmousedown=function(event){
          divOnMouseDown(completeur,event,this);
        };
        nouveauDiv.onmousemove=function(event){
          divOnMouseMove(completeur,event,this);
        };
        nouveauDiv.onmouseout=function(event){
          divOnMouseOut(completeur,event,this);
        };
        this.setStyleForElement(nouveauDiv,"AutoCompleteDiv");
        var nouveauSpan=document.createElement("SPAN");
        nouveauSpan.innerHTML=cookieHistory[f];        // le texte de la suggestion
        this.setStyleForElement(nouveauSpan,"AutoCompleteDivCol1");
        nouveauDiv.appendChild(nouveauSpan);
        this._completeDiv.appendChild(nouveauDiv);
      }
    }
  },
	/**
	* Permet de modifier les paramètres par défaut (méthode développée par ALTEN SIR)
	*/
	setDefaultParams:function(defaultParams) {
		this._defaultParams=defaultParams;
	}
}
/* /BLAutocompleter.prototype */

function EmailOk(value) {
	var pos_aro = 0;
	var pos_pt = 0;
	if (value.length == 0) {
		return false;
	}
	// On vérifie que l'adresse E-Mail semble correcte
	for (i = 1; i < value.length && pos_aro == 0; i++) {
		if (value.charAt(i) == '@')  pos_aro = i;
	}
	for (i = value.length - 3; i > 2 && pos_pt == 0; i--) {
		if (value.charAt(i) == '.') {
			pos_pt = i;
		}
	}
	if (pos_aro == 0 || pos_pt == 0 || pos_pt <= pos_aro + 1) {
		return false;
	}
	else {
		return true;
	}
}
