/*
	DECLARATION DES PARAMETRES
*/

// vrai/faux déployé
var vraifaux=0;

// Scroller
var scrollpas=5;				// Pas en pixels du scrolling //
var scrollmarge=33;				// Marge en bas pour pas rester collé //
var scrollperiode=20;			// interval en milisecondes de mouvement du scrolling
var keyscrollperiode=100;		// vitesse de répétition pour le scroll au clavier
var tm_m_scroll=false;			// timer en cours pour scroll par souris

var dragscrollcour=false; 		// id de obj en cours d'ascenseur
var keyscrollcour=false;		// id de obj scroll pouvant scroller par clavier (souris au dessus)
var keyscrollactif=false;		// vrai si traitement en cours d'un scroll par clavier
var tm_kp_scroll=false;			// timer en cours pour scroll par clavier

// Menu Bas
var mb_htitre=31; 				// hauteur du titre du menu
var mb_interval=25;				// interval de timer pour l'animation des menus
var mb_pas=10;					// pas de l'animation des menus
var mb_courup=false;			// objet en cours de monté

var runflash=true;
var base_url='http://www.metiersducommerce.fr/';

// Pages / Sections / fond flash
var ma_section=0;
var ma_page=0;
var varfond=0;

var flvids ='';

function wheel(event){
	// evaluation de la rotation de la roulette
	var delta = 0;
	if (!event) /* IE. */
		event = window.event;
	if (event.wheelDelta) { /* IE/Opera. */
		delta = event.wheelDelta/120;
		//if (window.opera) delta = -delta; /* Opera spécific */
	} else if (event.detail) { /** Mozilla (multiple de 3) */
		delta = -event.detail/3;
	}

	// traite le retour pour traitement normal hors contexte
	retour=true;
	if (delta) {
		// on autorise le truc
		keyscrollactif=true;
		// on lance le scroll
	    retour=( kp_scroll(event,100+delta));
	}
	/** Prevent default actions caused by mouse wheel.
	 * That might be ugly, but we handle scrolls somehow
	 * anyway, so don't bother here..
	 * HEU, pas clair !
	 */

	if (! retour) {
		if (event.preventDefault) event.preventDefault();
		event.returnValue = retour;
	}
}

/* Interception de la roulette */
/** DOMMouseScroll = mozilla. */
if (window.addEventListener) window.addEventListener('DOMMouseScroll', wheel, false);
/** IE/Opera. */
window.onmousewheel = document.onmousewheel = wheel;

/* INIT */

function init() {

	if ( (ma_section==2) ||  (ma_section==4)  || (ma_section==6) ) varfond=3;
	if ( (ma_section==1) ||  (ma_section==3) || (ma_section==5)  ) varfond=2;
	if ( ma_section > 100)  varfond=2;

	document.body.onmouseup=function () {
		dragscrollcour=false;
	}
	startList("header");
	
	o=_("scrollzoneout");
	if (o) o.id="scrollzone";
	startList("scrollzone");
	
	o=_("scrollzoneout2");
	if (o) o.id="scrollzone2b";
	startList("scrollzone2b");

	o=_("accessmenu");
	if (o) o.style.display="none";
	startList("main");
	
	o=_("menu");
	if (o) {
		o.id="bottommenu";
		if (_('menu_top')) {
			_('menu_top').style.height='31px';
			_('m1').style.display="block";
		}
	}
	startList("bottommenu");
	// Gestion apparition du menu pour page d'acccueil
	if (_('bottommenu')) {
		if (varfond==0 && ma_section==0) _('bottommenu').style.display='none';
	}
	//
	// Affichage de rubrique selectionnée dans le menu du bas
	//
	if (ma_section>0) {
		if (_('ma_s'+ma_section)) {
			maclasse=_('ma_s'+ma_section).className+' selected';
			_('ma_s'+ma_section).className=trim(maclasse);
		}
	}
	//
	// Gestion des flash
	//
	if (_('contentflash_chiffres')) {
		var flashvars = {};
		var params = {};
		params.menu = "false";
		params.wmode = "transparent";
		var attributes = {};
		attributes.id = "contentflash_chiffres";
		attributes.name = "contentflash_chiffres";
		mW=300; mH=175;
		if (_('chiffres_commerce')) if (_('chiffres_commerce').className=='t280') mW=280; mH=163;
		swfobject.embedSWF("/swf/banniere_282x165_commerce_proxi_091221.swf", "contentflash_chiffres", mW, mH, "8.0.0", "expressInstall.swf", flashvars, params, attributes);		
	}
	if (_('contentflash_chiffres_280')) {
		var flashvars = {};
		var params = {};
		params.menu = "false";
		params.wmode = "transparent";
		var attributes = {};
		attributes.id = "contentflash_chiffres_280";
		attributes.name = "contentflash_chiffres_280";
		mW=300; mH=175;
		if (_('chiffres_commerce')) if (_('chiffres_commerce').className=='t280') mW=280; mH=163;
		swfobject.embedSWF("/swf/banniere_282x165_commerce_proxi_091221_280.swf", "contentflash_chiffres_280", mW, mH, "8.0.0", "expressInstall.swf", flashvars, params, attributes);		
	}

	// Gestion du fond flash
	mFond=_('fond_transparent');
	if (mFond) {
		mFond.style.position='absolute';
		mFond.style.width='754px';
		mFond.style.height='460px';
		mFond.style.background='#FFFFFF';
		setOpacity(mFond, 94);
	}
	if (_('main_flash')) {
		//var varfond=2;
		var flashvars = {};
		var flashvars = {fond:varfond};
		var params = {};
		params.menu = "false";
		params.wmode = "transparent";
		var attributes = {};
		attributes.id = "site";
		attributes.name = "site";
		swfobject.embedSWF("/site.swf", "main_flash", "970", "538", "9.0.0.0", "expressInstall.swf", flashvars, params, attributes);
	}	
}

/*
	STARTLIST A AMENAGER
*/
var maxtour=1000;
function startList(n) {
	courant=0;
	if (document.getElementById) {
		navRoot = document.getElementById(n);
		node = navRoot;//getnextnode(navRoot);
		last_node = "";
		while ((node) && (courant<maxtour)) {
			node = getnextnode(navRoot,node);
			courant++;
			if (node) {
				// applique iepngfix sur les png
				if (node.nodeName=="IMG" && document.all) {
					mysplit=node.src.split('.');
					myext=mysplit[mysplit.length-1];
					if (myext.toLowerCase()=='png') node.style.behavior="url(/build/iepngfix.htc);";
				}
				//
				// Options des scrolleurs
				//				
				// bouton de remonte
				if (node.className=="topscroll") {
					node.style.behavior="url(/build/iepngfix.htc);";
					// on cherche l'objet de zone concerne
					o=cherchezone(node);
					if (o) {
						// on ajoute la propriete inscroll a l'objet de zone (true en train de scroller)
						o.inscroll=false;
						// on ajoute la propriete dragscroll a l'objet de zone (>0 position initiale du drag)
						o.dragscroll=0;
						// on ajoute la propriete scrolleur au bouton
						node.scrolleur=o.id;
						// on place la fonction de scroll sur le over
						node.onmouseover=function () {
							// si il y a scroll par le positionneur on s'en va
							if (dragscrollcour) return false;
							// l'objet scrolleur concerne
							o=_(this.scrolleur);
							// flag de scroll a vrai
							o.inscroll=true;
							// on y va 
							scrolling(o,0);
						}
						// on place la fonction de fin de scroll sur le out
						node.onmouseout=function () {
							// flag de scroll a faux
							o.inscroll=false;
						}
					}
				}
				// bouton de redescend
				if (node.className=="bottomscroll") {
					node.style.behavior="url(/build/iepngfix.htc);";
					// on cherche l'objet de zone concerne
					o=cherchezone(node);
					if (o) {
						// on ajoute la propriete inscroll a l'objet de zone (true en train de scroller)
						o.inscroll=false;
						// on ajoute la propriete dragscroll a l'objet de zone (>0 position initiale du drag)
						o.dragscroll=0;
						// on ajoute la propriete scrolleur au bouton
						node.scrolleur=o.id;
						// on place la fonction de scroll sur le over
						node.onmouseover=function () {
							// si il y a scroll par le positionneur on s'en va
							if (dragscrollcour) return false;
							// l'objet scrolleur concerne
							o=_(this.scrolleur);
							// flag de scroll a vrai
							o.inscroll=true;
							// on y va 
							scrolling(o,1);
						}
						// on place la fonction de fin de scroll sur le out
						node.onmouseout=function () {
							// flag de scroll a faux
							o.inscroll=false;
						}
					}
				}
				// bouton de scrolling
				if (node.className=="posiscroll") {
					node.style.behavior="url(/build/iepngfix.htc);";
					// on cherche l'objet de zone concerne
					o=cherchezone(node);
					if (o) {
						// on ajoute la propriete d'objet de position à l'objet zone
						o.scrolleurposi=node.id;
						o.dragscroll=0;
						o.dragscrollstart=0;
						// on place les fonctions sur parent
						oo=node.parentNode;
						// on ajoute la propriete scrolleur au bouton
						oo.scrolleur=o.id;
					}
				}
				// zone a scroller
				if (node.className=="zone") {
					// on place la fonction de fin de scroll sur le out
					node.onmouseover=function () {
						if (!keyscrollcour) {
							keyscrollcour=this.id;
							this.parentNode.style.border="dotted white 1px";
						}
						return false;
					}
					node.onmouseout=function () {
						keyscrollcour=false;
						this.parentNode.style.border="solid #FFFFFF 1px";
					}
				}
								
				//
				// Option du menu du bas
				//
				if (node.className=="onglet" || node.className=="onglet_spe") {
					node.style.bottom='0';
					// on regarde si c'est bien le premier niveau
					o=node.parentNode;
					if (o) {
						if (o.id=="menu_top") {
							oo=mb_cherche_contenu(node);
							oo.style.display="none";
							// on place la fonction de scroll sur le over
							node.onmouseover=function () {
								runflash=false;
								if (ma_section<=0) stopflash('site');							
								if (mb_courup && mb_courup!=this.id) mb_mouvedown(mb_courup);
								this.courup=true;
								this.askdown=false;
								mb_courup=this.id;
								mb_mouveup(this.id);
							}
							node.onmouseout=function () {
								this.askdown=true;
								setTimeout("mb_mouvedown('"+this.id+"');",1000);
							}
						}
					}
				}
				//
				// Afficher toutes les reponses
				//
				if (node.className=="imgtout") {
					node.style.display='block';
					node.onclick=function () {
						table_qr=getElementsByClassName('qr');
						if (vraifaux==0) {
							classRepl(table_qr,false,'qr deplie');
							vraifaux=1;
						} else {
							classRepl(table_qr,false,'qr');
							vraifaux=0;
						}
					}
					node.href='javascript:;';
				}
				if (node.className=="qr deplie") {
					node.className='qr';
					oo=node.firstChild;
					if (! oo) return false;
					while (oo.className!='question') oo=oo.nextSibling;
					if (oo) {
						oo.style.cursor='pointer';
						oo.onclick=function () {
							tmpid=this.parentNode.id;
							if (_(tmpid).className=='qr') {
								_(tmpid).className='qr deplie';
							} else {
								_(tmpid).className='qr';
							}
						}
					}
				}
				//
				// Gestion des liens popins
				//
				/* Metiers */
				if (node.id=='popin_recherche_metiers') {
					node.style.display='none';
				}
				if (node.className=='lien_popin_metiers' || node.className=='lien_popin_metiers_fermer') {
					node.onclick=function () {
						ouverture_popin('popin_recherche_metiers');
					}
					node.href='javascript:;';
				}
				/* Tous les metiers */
				if (node.id=='popin_tous_metiers') {
					node.style.display='none';
				}
				if (node.className=='lien_popin_tous_metiers' || node.className=='lien_popin_tous_metiers_fermer') {
					node.onclick=function () {
						ouverture_popin('popin_tous_metiers');
					}
					node.href='javascript:;';
				}
				/* Univers */
				if (node.id=='popin_recherche_univers') {
					node.style.display='none';
				}
				if (node.className=='lien_popin_univers' || node.className=='lien_popin_univers_fermer') {
					node.onclick=function () {
						ouverture_popin('popin_recherche_univers');
					}
					node.href='javascript:;';
				}				
				/* popin standard */ 
				if (node.className=='lien_popin_standard_fermer') {
					node.onclick=function () {
						ouverture_popin('popin_standard',true);
					}
					node.href='javascript:;';
				}				
				/* popin envoyer ami */ 
				if (node.className=='lien_popin_envoyer_ami_fermer') {
					node.onclick=function () {
						ouverture_popin('p_envoyer_ami',true);
					}
					node.href='javascript:;';
				}
				/* Et ces div cachées */
				if (node.className=='div_hidden') {
					node.style.display='none';
					node.style.position='absolute';
				}
				//
				// Gestion des liens sommaire
				//
				if (node.className=='lien_sommaire__annule_par_bruno') {
					node.onclick=function () {
						myTarget=this.id+'_balise';
						if (_(myTarget)) {
							mynewpos=_(myTarget).offsetTop;
							if (mynewpos>=(_('zonescroll1').offsetHeight-_('scrollzone').offsetHeight)) mynewpos=_('zonescroll1').offsetHeight-_('scrollzone').offsetHeight;
							if (mynewpos>=scrollpas) mynewpos=mynewpos+scrollpas-5;
							else mynewpos=0;
							mynewpos=(mynewpos*-1)+'px';
							_('zonescroll1').style.top=mynewpos;
							scrollposi(_('zonescroll1'));
						}
						return false;
					}
				}				
				//
				// Gestion des liens tools / Envoyer ami
				//
				if (node.className=='envoyer_tools') {
					node.onclick=function () {
						ouverture_popin('p_envoyer_ami',true);		
					}
					node.href='javascript:;';
				}					
				//
				// Gestion des liens avantages
				//
				if (node.className=='lien_avantage') {
					node.onclick=function () {
						if (_('zonescroll2')) {
							_('zonescroll2').innerHTML=_(this.id+'_content').innerHTML;
							sc=cherchezone(_('zonescroll2'));
							scrollmouve(sc,0,false);
							ouverture_popin('popin_standard',true);
						}		
					}
					node.href='javascript:;';
				}				
				//
				// Gestion des liens agenda
				//
				if (node.className=='lien_agenda') {
					node.onclick=function () {
						if (_('content_popin_agenda')) {
							_('content_popin_agenda').innerHTML=_('evnt_'+this.id).innerHTML;
							sc=cherchezone(_('zonescroll2'));
							scrollmouve(sc,0,false);
							ouverture_popin('popin_standard',true);
						}		
					}
					node.href='javascript:;';
				}				
				//
				// Gestion des liens detail métiers
				//
				if (node.className=='liens_metier_detail') {
					node.onclick=function () {
						if (_('zonescroll2')) {
							_('zonescroll2').innerHTML=_(this.id+'_content').innerHTML;
							sc=cherchezone(_('zonescroll2'));
							scrollmouve(sc,0,false);
							ouverture_popin('popin_standard',true);
						}
					}
					node.href='javascript:;';
				}				
				//
				// Gestion des formulaires espace pro
				//
				if (node.id=='LOGIN_PRO' || node.id=='LOGIN_ENSEIGNANTS') {
					node.onfocus=function () {
						if (this.value=='Login') this.value='';
						keyscrollcour=false;
					}
					node.onblur=function () {
						if (this.value=='') this.value='Login';
					}
					node.onkeydown=function () {
						keyscrollcour=false;
					}
				}
				if (node.id=='PWD_PRO' || node.id=='PWD_ENSEIGNANTS') {
					node.onfocus=function () {
						keyscrollcour=false;
						if (this.value=='Mot de passe') this.value='';
						this.focus();
					}
					node.onblur=function () {					
						if (this.value=='') this.value='Mot de passe';
					}
					node.onkeydown=function () {
						keyscrollcour=false;
					}
				}
				// Formulaires inscription
				if (node.className=='champ_form') {
					node.onkeydown=function () {
						keyscrollcour=false;
					}
					node.onfocus=function () {
						keyscrollcour=false;
					}
				}
				// Hack position ancre
				if (node.className=='pad') {
					node.style.position='relative';
				}
				// Gestion lien retour home en flash
				if (node.className=='lien_retour_accueil') {
					node.onclick=function () {
						flash_retourhome_lien('site');
						return false;
					}					
					node.href='javascript:;';
				}
			}
		}
	}
}
/* FONCTIONS FLASH */
function stopflash(flashElement) {
	var flash = _(flashElement);
	if (flash) flash.pauseAnimation();
}
function startflash(flashElement) {
	var flash = _(flashElement);
	if (flash) flash.resumeAnimation();
}


function open_win(url_add) {
   window.open(url_add,'_blank', 'width=800,height=600,menubar=yes,status=yes,location=yes,toolbar=yes,scrollbars=yes');
}


function flash_partager(index_p) {
	myurl='_index.php?fond=1';
	if (index_p==0) myurl='http://www.facebook.com/share.php?v=4&src=bm&u=http://www.metiersducommerce.fr&t=Les M&eacute;tiers du Commerce'; // 0	facebook
	if (index_p==1) myurl='http://www.viadeo.com/shareit/share/?url=http://www.metiersducommerce.com&title=M%C3%A9tiers+du+commerce'; // 1	viadeo
	if (index_p==2) myurl='http://www.linkedin.com/shareArticle?mini=true&url=http://www.metiersducommerce.com&title=M%C3%A9tiers+du+commerce&summary=D%C3%A9couvrez+le+commerce+de+proximit%C3%A9+%3A+ses+m%C3%A9tiers%2C+ses+formations%2C+ses+offres+d%27emploi...&source=MINEFE'; // 2	linkedin
	if (index_p==3) myurl='http://twitter.com/home?status=Découvrez le commerce de proximité: ses métiers, ses formations, ses offres d"emploi... http://www.metiersducommerce.fr/'; // 3	twitter
	if (index_p==4) myurl='http://delicious.com/post?url=http://www.metiersducommerce.fr/&title=D%C3%A9couvrez+le+commerce+de+proximit%C3%A9+%3A+ses+m%C3%A9tiers%2C+ses+formations%2C+ses+offres+d%27emploi...'; // 4	delicious
	if (index_p==5) myurl='http://digg.com/submit?partner=&url=http://www.metiersducommerce.com&title=M%E9tiers+du+commerce&bodytext=D%E9couvrez+le+commerce+de+proximit%E9+%3A+ses+m%E9tiers%2C+ses+formations%2C+ses+offres+d%27emploi...'; // 5	digg
	if (index_p==6) myurl='http://www.wikio.fr/'; // 6	wikio
	if (index_p==7) myurl='http://buzz.yahoo.com/submit/?submitUrl=http://metiersducommerce.com'; // 7	buzz
//	if (document.all) { window.location.href=base_url+myurl; return false; }
//	else window.location.replace(base_url+myurl);
//	if (document.all) { window.location.href=myurl; return false; }
//	else window.location.replace(myurl);

	open_win(myurl);
}


function flash_findezoom(index_p, fond) {
	//myurl='lit_page.php?page='+index_p+'&fond='+fond;
	myurl='_index.php?fond=1';
	if (index_p==0) myurl='_index.php?fond=1'; // 0	accueil
	if (index_p==1) myurl='decouvrir/33862.html'; // 1	test "êtes-vous fait pour le commerce ?"
	if (index_p==2) myurl='offres_emploi/34125.html';	// 2	offres d'emploi
	if (index_p==3) myurl='decouvrir/33856.html'; // 3	découvrez le commerce
	if (index_p==4) myurl='formations/34042.html'; // 4	apprentissage & contrat pro
	if (index_p==5) myurl='footer/infos/34122.html'; // 5	goodies
	if (index_p==6) myurl='pros_enseignants/enseignant/jeu/34174.html'; // 6	page de votedi jeu
	if (document.all) { window.location.href=base_url+myurl; return false; }
	else window.location.replace(base_url+myurl);
}


function sendEvent(typ,prm) { thisMovie("mpl").sendEvent(typ,prm); };

function thisMovie(movieName) {
	if(navigator.appName.indexOf("Microsoft") != -1) {
		return window[movieName];
	} else {
		return document[movieName];
	}
}

function trim (myString) {
	return myString.replace(/^\s+/g,'').replace(/\s+$/g,'')
} 

function flash_retourhome_lien(flashElement) {
	var mainDiv = _('main');
	var fla1 = _('contentflash_chiffres');
	var fla2 = _('contentflash_chiffres_280');
	
	if (fla1) fla1.style.visibility = 'hidden';
	if (fla2)  fla2.style.visibility = 'hidden'; 
	
	
	var tab_flvids = flvids.split(','); 
	for (var i=0;i<tab_flvids.length;i++) {
		var tt=tab_flvids[i];
		if (trim(tt)!="") {
			var fla3 = _(tt);
			if (fla3)  fla3.sendEvent('stop'); 
		} 
	}

	if (mainDiv) 	mainDiv.style.visibility = 'hidden'; 
	
	var flash = _(flashElement);
	if (flash) flash.flash_retourhome();
	//flash_findezoom(0);
}
function flash_finintro() {
	if (_('bottommenu')) {
		_('bottommenu').style.display='block';
	}
}
/* FONCTIONS POPINS */
var v_coef=0;
var v_coef_wrap=70;
var v_coef_full=100;

function ouverture_popin(myTarget, wrp) {
	if (!_(myTarget)) return false;
	if (_(myTarget).style.display=='none') {		
		table_popins=getElementsByClassName('mespopins');
		classRepl(table_popins,'none',false);
		if (document.all) { // Hack IE6 :: probleme de select
			table_select=getElementsByClassName('select_a_cacher');
			classRepl(table_select,'none',false);
		}
		if (wrp) {
			launch_popin_standard(myTarget);
		} else {
			_(myTarget).style.display='block';
		}
	} else {
		_(myTarget).style.display='none';
		if (wrp) _('wrapper').style.display='none';
		if (document.all) { // Hack IE6 :: probleme de select
			table_select=getElementsByClassName('select_a_cacher');
			classRepl(table_select,'block',false);
		}		
	}
	return false;
}
function launch_popin_standard(myPopin, coef) {
	myDiv=_(myPopin);
	myWrap=_('wrapper');
	if (!myDiv || !myWrap) return false;
	if (!coef) {
		coef=parseInt(v_coef);
		screenW=getWidth();
		screenH=getHeight();
		affiDiv(myWrap);
		//myWrap.style.height=screenH+'px';
		//myWrap.style.width=screenW+'px';
		affiDiv(myDiv);
	}
	coef=coef+10;
	if (coef < 70) {
		setOpacity(myWrap, coef);
	}
	if (coef < 101) {
		//setOpacity(myDiv, coef);
		setTimeout("launch_popin_standard('"+myPopin+"',"+coef+");", 100);
	}	
}
function affiDiv(mydiv) {		
	if (mydiv) {
		mydiv.style.display="block";
	} else if (mydiv.style.display=='none') {
		mydiv.style.display="block";
	}	
}
function setOpacity(obj, opacity) {
	opacity = (opacity == 100)?99.999:opacity; 
	// IE/Win
	obj.style.filter = "alpha(opacity:"+opacity+")";  
	// Safari<1.2, Konqueror
	obj.style.KHTMLOpacity = opacity/100; 
	// Vieux Mozilla & Firefox
	obj.style.MozOpacity = opacity/100;
	// Safari 1.2, Firefox and Mozilla recents, CSS3
	obj.style.opacity = opacity/100;
}
function getWidth() {
  myWidth = 0;
  if( typeof( window.innerWidth ) == 'number' ) {
	myWidth = window.innerWidth;
  } else if( document.documentElement && ( document.documentElement.clientWidth || document.documentElement.clientHeight ) ) {
	myWidth = document.documentElement.clientWidth;
  } else if( document.body && ( document.body.clientWidth || document.body.clientHeight ) ) {
	myWidth = document.body.clientWidth;
  }
  return myWidth;
}	
function getHeight() {
  myHeight = 0;
  if( typeof( window.innerWidth ) == 'number' ) {
	myHeight = window.innerHeight;
  } else if( document.documentElement && ( document.documentElement.clientWidth || document.documentElement.clientHeight ) ) {
	myHeight = document.documentElement.clientHeight;
  } else if( document.body && ( document.body.clientWidth || document.body.clientHeight ) ) {
	myHeight = document.body.clientHeight;
  }
  return myHeight;
}
/*
	FONCTIONS STANDARS PNF/WAAPS
*/
function _(o) {
	if (!o) return false;
	if (!document.getElementById) return false;
	if (!document.getElementById(o)) return false;
	return document.getElementById(o);
}
function getnextnode(source,o) {
	if (!o) return false;
	oo=false;
	if (o.firstChild) return o.firstChild;
	if (o.nextSibling) return o.nextSibling;
	o=o.parentNode;
	while (!oo && o && (o!=source)) {
		oo=o.nextSibling;
		o=o.parentNode;
	}
	return oo;
}

/*
	FONCTIONS SCROLLEURS
*/
function cherchezone(o) {
//  cherchezone » renvoie lobjet zone à scroller dun objet de travail
	// si pas d'objet demandé
	if (! o) return false;
	// on cherche l'objet conteneur contscroll cad le haut de l'arbre
	c=o.className;
	while (o && c!="contscroll") {
		o=o.parentNode;
		if (o) c=o.className;
	}
	// si on en a pas on s'en va
	if (c!="contscroll") return false;
	// on cherche le premier objet zone dans le conteneur
	oo=o.firstChild;
	if (! oo) return false;
	while (oo.className!="zone") oo=getnextnode(o,oo);
	if (! oo) return false;
	return oo;
}

function scrolling(sc,sens) {
// 	« scrolling(sc,sens) » scrolling sur l'objet SC et dans le sens sens (1 on remonte)
	// pas d'objet on s'en va
	if (!sc) return false;
	// si l'objet est bien en cours de scroll
	if (sc.inscroll) {
		// on récupère le parent de l'objet
		csc=sc.parentNode;
		// il n'y en a pas ... on s'en va parce que on peut pas scroller
		if (!csc) return false;
		// Position verticale
		t=parseInt(sc.style.top);
		// si non définie alors 0 (init sans doute)
		if (isNaN(t)) t=0;
		// hauteur de l'objet dans lequel on scrolle
		hcsc=parseInt(csc.offsetHeight);
		// hauteur de l'objet à scroller
		hsc=parseInt(sc.offsetHeight);
		maxi=-1*(hsc-hcsc+scrollmarge);
		if (maxi>0) return false; // trop petit pas besoin de scroller
		// si on monte
		if (sens==1) {
			// si on est pas tout en haut alors on remonte
			// si le point haut + la hauteur est supérieure a la hauteur du contenant - la marge alors on remonte
			if (t+hsc>(hcsc-scrollmarge)) t=t-scrollpas;
			if (t+hsc<(hcsc-scrollmarge)) t=hcsc-scrollmarge-hsc;
		// si on descend
		}else{
			// si la valeur absolue du chemin pour 0 est supérieure au pas alors on descend
			if ((t*-1)>=scrollpas) t=t+scrollpas;
			// sinon on fixe 0 pour être sûr
			else t=0;
		}
		// fixe la nouvelle position de l'objet
		sc.style.top=t+"px";
		// met à jour la position du défileur
		scrollposi(sc);
		// relance le scroll
		if (tm_m_scroll) clearTimeout(tm_m_scroll);
		tm_m_scroll=setTimeout("scrolling(_('"+sc.id+"'),"+sens+")",scrollperiode);
	}
}

function scrollposi(sc) {
// Mise à jour de la position du positionneur en fonction de l'objet sc 
	// si pas d'objet on s'en va
	if (!sc) return false;
	// parent de l'objet
	csc=sc.parentNode;
	// il n'y en a pas ... on s'en va parce que on peut pas scroller
	if (!csc) return false;
	// lecture de l'objet positionneur
	pc=_(sc.scrolleurposi);
	// il n'y en a pas ... on s'en va 
	if (! pc) return false;
	// parent de l'objet
	cpc=pc.parentNode;
	// il n'y en a pas ... on s'en va 
	if (! cpc) return false;

	t=parseInt(pc.style.top);
	// si non définie alors 0 (init sans doute)
	if (isNaN(t)) t=0;
	// hauteur de l'objet dans lequel on scrolle
	hcsc=parseInt(csc.offsetHeight);
	// hauteur de l'objet à scroller
	hsc=parseInt(sc.offsetHeight);
	// hauteur de l'objet dans lequel on scrolle
	hcpc=parseInt(cpc.offsetHeight);
	// hauteur de l'objet à scroller
	hpc=parseInt(pc.offsetHeight);

	tt=parseInt(sc.style.top);
	
	// déplacement max scrolleur : hauteur total - hauteur visible + margescroll
	dst=hsc-hcsc+scrollmarge;
	// deplacement en cours
	dsc=-1*tt;
	// ratio
	ratio=dsc/dst;
	// déplacement max positionneur : hauteur totale - hauteur positionneur
	dpt=hcpc-hpc;
	// position du positionneur
	t=parseInt(dpt*ratio);
	// si c'est moins que 0 c'est 0;
	if (t<0) t=0;
	// on positionne le truc
	pc.style.top=t+"px";

	return;

}

function scrollmouve(sc,d,recalc) {
// scrolle l'objet sc du déplacement d éventuellement ajusté en fonction de l'ascenseur si recalc
	// si pas d'objet on s'en va
	if (!sc) return false;
	// parent de l'objet
	csc=sc.parentNode;
	// il n'y en a pas ... on s'en va parce que on peut pas scroller
	if (!csc) return false;

	// Position verticale
	t=parseInt(sc.dragscrollstart);
	// si non définie alors 0 (init sans doute)
	if (isNaN(t)) t=0;
	// hauteur de l'objet dans lequel on scrolle
	hcsc=parseInt(csc.offsetHeight);
	// hauteur de l'objet à scroller
	hsc=parseInt(sc.offsetHeight);
	maxi=-1*(hsc-hcsc+scrollmarge);
	maxi=-1*(hsc-hcsc+scrollmarge);
	if (maxi>0) return false; // trop petit pas besoin de scroller
	// si recalc alors on glisse le positionneur et il faut recalculer la proportion
	if (recalc) {
		tr=parseInt(_(sc.scrolleurposi).parentNode.offsetHeight);
		dd=d;
		d=-1*parseInt(dd*maxi/tr);
	}else{
		t=0;
	}
	t=t-d;
	if (t>0) t=0;
	if (t<maxi) t=maxi;
	// fixe la nouvelle position de l'objet
	sc.style.top=t+"px";
	// s'arrange pour qu'il n'y ait pas de sélection
	if (window.getSelection) window.getSelection().removeAllRanges();
	else if (document.getSelection) document.getSelection().removeAllRanges();
	else if (document.selection) document.selection.empty();

	// met à jour la position du défileur
	scrollposi(sc);
}


function md_scroll(th,ev) {
// événement mousedown sur un ascenseur
	// lecture de l'objet zone
	o=_(th.parentNode.scrolleur);
	if (keyscrollcour) {
		if (tm_kp_scroll) clearTimeout(tm_kp_scroll);
		keyscrollcour=false;
	}
	dragscrollcour=o.id;
	//o.focus();
	// on initialise la valeur
	o.dragscroll=parseInt(ev.clientY);
	t=parseInt(o.style.top);
	if (isNaN(t)) t=0;
	o.dragscrollstart=t;
}

function mm_scroll(ev) {
// événement mousemouve sur le body
	if (! dragscrollcour) return false;
	// lecture de l'objet zone
	o=_(dragscrollcour);
	// si on a un drag en cours
	if ((dragscrollcour==o.id) && o.dragscroll>0) {
		d=ev.clientY-o.dragscroll;
		// d doit être réévalué en fonction la proportion déplacée
		scrollmouve(o,d,true);
	}
}

function kp_scroll(ev,keynum) {
// si on arrive par un input on repart aussi sec.
	if (ev.target) {
		if (
			(ev.target.tagName=="INPUT")
			|| (ev.target.tagName=="SELECT")
		) return true;
	}else if (document.all) {
		if (ev.srcElement) {
			if (
				(ev.srcElement.type=="text")
				|| (ev.srcElement.type=="password")
				|| (ev.srcElement.type=="radio")
				|| (ev.srcElement.type=="checkbox")
				|| (ev.srcElement.type=="select-one")
				|| (ev.srcElement.type=="select-one")
				|| (ev.srcElement.type=="submit")
			) return true;
		}
	}
// événement keydown sur le body ou activé par le timer
	if (tm_kp_scroll) clearTimeout(tm_kp_scroll);
	tm_kp_scroll=false;
	if (!keyscrollactif) return true;
	if (! keyscrollcour) return true;
	if (! keynum) {
		if(window.event) {// IE
			keynum = ev.keyCode
		}else if(ev.which) { // Netscape/Firefox/Opera
			keynum = ev.which
		}
	}
	sc=_(keyscrollcour);
	csc=sc.parentNode;
	// il n'y en a pas ... on s'en va parce que on peut pas scroller
	if (!csc) return false;
	// Position verticale
	t=parseInt(sc.style.top);
	// si non définie alors 0 (init sans doute)
	if (isNaN(t)) t=0;
	// hauteur de l'objet dans lequel on scrolle
	hsc=parseInt(sc.offsetHeight);
	hcsc=parseInt(csc.offsetHeight);

	d=-t;
	retour=false;
	if (keynum==38) { // fleche haut
		d+=-1*scrollpas;
	}else if (keynum==40) { // fleche bas
		d+=scrollpas;
	}else if (keynum==33) { // page haut
		d+=-10*scrollpas;
	}else if (keynum==34) { // page bas
		d+=10*scrollpas;
	}else if (keynum==36) { // début
		d=0;
	}else if (keynum==35) { // fin
		d=hsc-hcsc+scrollmarge;
	}else if (keynum==101) { // page haut
		d+=-10*scrollpas;
	}else if (keynum==99) { // page bas
		d+=10*scrollpas;
	}else{
		retour=true;
		//d=0;
	}
	scrollmouve(sc,d,false);
	
	if (keynum<90) tm_kp_scroll=setTimeout("kp_scroll('',"+keynum+")",keyscrollperiode);
	return retour;
}


/*
	FONCTIONS BOTTOMMENU
*/

var mb_compte=0;
function mb_mouveup(s) {
	if (!s) return false;
	s=_(s);
	if (!s) return false;
	o=mb_cherche_contenu(s);
	if (!o) return false;
	if (document.all) { // Hack IE6 :: probleme de select
		table_select=getElementsByClassName('select_a_cacher');
		classRepl(table_select,'none',false);
	}	
	o.style.display="block";
	runflash=false;
	if (ma_section<=0) stopflash('site');
	maxi=parseInt(o.offsetHeight)+mb_htitre-1;
	h=parseInt(s.offsetHeight);
	hh=h;
	if (h<maxi) h=h+mb_pas;
	if (h>maxi) h=maxi;
	s.style.height=h+"px";
	if (h<maxi) {
		mb_compte++;
		setTimeout("mb_mouveup('"+s.id+"');",mb_interval);
	}else{
		if (h==maxi) {
			s.courup=false;
			if (s.askdown) mb_mouvedown(s.id);
		}
	}
}

function mb_mouvedown(s) {
	if (!s) return false;
	s=_(s);
	if (!s) return false;
	if (s.courup) return false;
	if (!s.askdown) return false;

	h=parseInt(s.offsetHeight);
	hh=h;
	if (h>mb_htitre) h=h-mb_pas;
	if (h<mb_htitre) h=mb_htitre;
	s.style.height=h+"px";
	if (h>mb_htitre) {
		mb_compte++;
		runflash=false;
		if (ma_section<=0) stopflash('site');
		setTimeout("mb_mouvedown('"+s.id+"');",mb_interval);
	}else{
		o=mb_cherche_contenu(s);
		if (!o) return false;
		o.style.display="none";
	
		if (mb_courup==s.id) mb_courup=false;
		s.courdown=false;
		if (document.all) { // Hack IE6 :: probleme de select
			table_select=getElementsByClassName('select_a_cacher');
			classRepl(table_select,'block',false);
		}
		if (runflash==false && mb_courup==false) { // Gestion animation flash
			runflash=true;
			if (ma_section<=0) startflash('site');
		}
	}
}
function mb_cherche_contenu(o) {
//  mb_cherche_contenu renvoie lobjet de contenu dans l'option du menu du bas
	// si pas d'objet demandé
	if (! o) return false;
	// on cherche l'objet contenu onglet_contenu 
	oo=o.firstChild;
	if (! oo) return false;
	while (oo.className!="onglet_contenu") oo=getnextnode(o,oo);
	if (! oo) return false;
	return oo;
}

/* FONCTIONS IFRAME REDIM*/

function redim_minisite(cadre) {
	if (cadre) {
		min_hh = 290;
		hh = cadre.contentWindow.document.body.scrollHeight+5;
		if (hh < min_hh) {
			hh = min_hh;
		}
		cadre.style.height=hh+'px';
	}
}
function redim_sousminisite() {
	o=$("minisite");
	if (! o) return false;
	redim_minisite(o);
}

/* FUNCTIONS CEDRIC */

/* un trim() pour js */
function trim(str) {
	return str.replace(/^\s+/g,'').replace(/\s+$/g,'')
}

/* remplace par className */
function getElementsByClassName(needle) {
	var my_array = document.getElementsByTagName("*");
	var retvalue = new Array();
	var i;
	var j;
	for (i=0,j=0;i<my_array.length;i++) {
		var c = " " + my_array[i].className + " ";
		if (c.indexOf(" " + needle + " ") != -1) retvalue[j++] = my_array[i];
	}
	return retvalue;
}
function classRepl(whatReplace,style,newclass) {
	for(var i=0;i<whatReplace.length;i++) {	
   		if (style) whatReplace[i].style.display=style;
   		if (newclass) whatReplace[i].className=newclass;
     }
}



/* Fonctions sommaire h6*/
var sommaire_retour="<div class=\"haut\" ><a href=\"#haut\"  onclick=\"return versancre(this,1);\" ><img src=\"/imgs/picto_fleche_haut_vert.gif\" alt=\"haut de la page\" title=\"haut de la page\" /></a></div>";

function sommaire(n,typ) {
	if (! n) return false;
	if (!typ) typ="H1";
	if (document.getElementById) {
		navRoot = document.getElementById(n);
		if (!navRoot) return false;
		navRootSom = document.getElementById(n+"_sommaire");
		if (!navRootSom) return false;
		node = navRoot;//getnextnode(navRoot);
		sommaire="";
		nsommaire=0;
		while (node) {
			node = getnextnode(navRoot,node);
			if (node) {
				if (node.className==typ || node.nodeName==typ) {
					nsommaire++;
					le_lien=n+"_sommaire_"+nsommaire;
					
					sommaire+="<li><a class=\"lien_sommaire\" href=\"#"+le_lien+"\"  onclick=\"return versancre(this);\" >"+node.innerHTML+"</a></li>\n";
					if (nsommaire==1) node.innerHTML="<a name=\""+le_lien+"\" id=\"ancre_"+le_lien+"\"></a>"+node.innerHTML;
					else node.innerHTML=sommaire_retour+"<a name=\""+le_lien+"\"  id=\"ancre_"+le_lien+"\"></a>"+node.innerHTML;
				}
			}
		}
		if (sommaire!="") {
			sommaire="<ul class=\"sommaire\">\n"+sommaire+"</ul>";
			navRootSom.innerHTML+=sommaire;
			navRootSom.style.display="block";
			//navRoot.innerHTML+=sommaire_retour;
		}
	}

}


function versancre(o,t) {
	if (!o) return true;
	if (!t) {
		a=o.href.split("#");
		if (a.length<2) return true;
		oo=_("ancre_"+a[1]);
		d=oo.offsetTop;
		if (isNaN(d)) d=0;
		if (d>scrollmarge) d=d-scrollmarge;
		else d=0;
	}else{
		d=0;
	}
	sc=cherchezone(o);
	scrollmouve(sc,d,false);
	return false;
	//scrollmouve
}

/* ---------------------------------------------
	POUR AUTOCOMPLETION SUR LISTE DEROULANTE
------------------------------------------------*/
var autocomplete_sauve="";	// sauvegarde de la liste attention, il faut faire une variable pour chaque liste

function autocomplete_liste(f){
	/* 
		Fonction de gestion de l'autocompletion 
		Le formulaire porte l'id "toto"
			le champ texte l'id "toto_txt"
			la liste l'id "toto_liste"
	*/
	if (! f) return false;
	o=_(f.id+"_txt");
	if (! o) return false;
	oo=_(f.id+"_liste");
	if (! oo) return false;
	txt=o.value;
	// on encode la chaine et on la met en minuscules
	txt=replaceExtChars(txt.trim().toLowerCase());
	
	// si on a pas sauvegardée la liste on le fait
	if (autocomplete_sauve=="") {
		// initialise la sauvegarde
		autocomplete_sauve=document.createElement('select');
		for (i=0;i<oo.options.length;i++) {
			ooo=new Option();
			ooo.value=oo.options[i].value;
			ooo.text=oo.options[i].text;
			autocomplete_sauve.options[autocomplete_sauve.options.length]=ooo;
		}
	}
	
	// on vide la liste des métiers
	while (oo.options.length>0) oo.remove(0);
	
	// on remplit la liste avec ce qu'il faut
	for (i=0;i<autocomplete_sauve.options.length; i++) {
		r=autocomplete_sauve.options[i].text.toLowerCase()
		if (txt=="" || r.indexOf(txt)>=0) {
			ooo=new Option();
			ooo.value=autocomplete_sauve.options[i].value;
			ooo.text=autocomplete_sauve.options[i].text;
			oo.options[oo.options.length]=ooo;
		}
	}
}

// on ajoute la propritété trim à l'objet string ... Super
String.prototype.trim = function() { return this.replace(/^\s+|\s+$/g, ""); };
		
/*
	on fait une sorte de htmlencode
*/
function replaceExtChars(text,output) {
	text = text.replace(eval('/&/g'), '&amp;');
	fromTo = new 
Array('&AElig;','Æ','&Aacute;','Á','&Acirc;','Â',' &Agrave;','À','&Aring;','Å','&Atilde;','Ã','&Auml; ','Ä','&Ccedil;','Ç','&ETH;','Ð','&Eacute;','É','& Ecirc;','Ê','&Egrave;','È','&Euml;','Ë','&Iacute;' ,'Í','&Icirc;','Î','&Igrave;','Ì','&Iuml;','Ï','&N tilde;','Ñ','&Oacute;','Ó','&Ocirc;','Ô','&Ograve; ','Ò','&Oslash;','Ø','&Otilde;','Õ','&Ouml;','Ö',' &THORN;','Þ','&Uacute;','Ú','&Ucirc;','Û','&Ugrave ;','Ù','&Uuml;','Ü','&Yacute;','Ý','&aacute;','á', '&acirc;','â','&aelig;','æ','&agrave;','à','&aring ;','å','&atilde;','ã','&auml;','ä','&brvbar;','¦', '&ccedil;','ç','&cent;','¢','&copy;','©','&deg;',' °','&eacute;','é','&ecirc;','ê','&egrave;','è','&e th;','ð','&euml;','ë','&frac12;','½','&frac14;','¼ ','&frac34;','¾','&gt;','>','&gt','>','&iacute;',' í','&icirc;','î','&iexcl;','¡','&igrave;','ì','&iq uest;','¿','&iuml;','ï','&laquo;','«','&lt;','<',' &lt','<','&mdash;','—','&micro;','µ','&middot;','· ','&ndash;','–','&not;','¬','&ntilde;','ñ','&oacut e;','ó','&ocirc;','ô','&ograve;','ò','&oslash;','ø','&otilde;','õ','&ouml;','ö','&para;', '¶','&plusmn;','±','&pound;','£','&quot;','\"','&r aquo;','»','&reg;','®','&sect;','§','­','*','&sup1 ;','¹','&sup2;','²','&sup3;','³','&szlig;','ß','&t horn;','þ','&tilde;','˜','&trade;','™','&uacute;', 'ú','&ucirc;','û','&ugrave;','ù','&uuml;','ü','&ya cute;','ý','&yen;','¥','&yuml;','ÿ');
	
	if (output) {
		fromTo[fromTo.length] = '&amp;';
		fromTo[fromTo.length] = '&';
	}
	for (i=0; i < fromTo.length; i=i+2) {
		if (fromTo[i+1]=="*") fromTo[i+1]="-";
		pat='/'+fromTo[i+1]+'/g';
		text = text.replace(eval(pat), fromTo[i]);
	}
	return (text);
}


/* Fonction Ecrire*/
function ecrire(text) {
	document.write(text);
}
