/*-----------INSERTION DE COMMON.JS-------------------------*/

/*******
* Framework
*********/
//Add Events
function addEvent( obj, type, fn ) {
	if (obj.addEventListener)
		obj.addEventListener( type, fn, false );
	else if (obj.attachEvent) {
		obj["e"+type+fn] = fn;
		obj[type+fn] = function() { obj["e"+type+fn]( window.event ); }
		obj.attachEvent( "on"+type, obj[type+fn] );
	}
}
function getElementsByClassName(oElm, sTagName, sClassName){
	var aElements = (sTagName == "*" && oElm.all)? oElm.all : oElm.getElementsByTagName(sTagName);
	var aReturnElements = new Array();
	sClassName = sClassName.replace(/\-/g, "\\-");
	var oRegExp = new RegExp("(^|\\s)" + sClassName + "(\\s|$)");
	var oElement;
	for(var i=0; i < aElements.length; i++){
		oElement = aElements[i];
		if(oRegExp.test(oElement.className))
			aReturnElements.push(oElement);
	}
	return aReturnElements
}
// getStyle : retourne la valeur d'une propriete CSS appliquee � un element
function getStyle(oElm, strCssRule){
	var strValue = "";
	if(document.defaultView && document.defaultView.getComputedStyle) {
		try{ 
			strValue = document.defaultView.getComputedStyle(oElm, null).getPropertyValue(strCssRule); 
		}
		catch(e) { strValue = ""; }
	}
	else if(oElm.currentStyle) {
		try{
			strCssRule = strCssRule.replace(/\-(\w)/g, function (strMatch, p1){
				return p1.toUpperCase();
			});
			strValue = oElm.currentStyle[strCssRule];
		} catch(e) {
			strValue = "";
		}
	}
	return strValue;
}
/*retourne la valeur entiere d'un style*/
function intStyle(oElm, strCSSRule) {
	var val = parseInt(getStyle(oElm, strCSSRule));
	if (isNaN(val)) val=0;
	return val;
}
/*filter : fonction de filtrage*/
function filter(iterable, fun) {
	var out = [];
	for(var i=0,len=iterable.length; i<len; ++i) {
		if(fun(iterable[i])) {
			out.push(iterable[i]);
		}
	}
	return out;
}
/*map : iteration*/
function map(iterable, fun) {
	var out = [];
	for(var i=0, len=iterable.length; i<len; ++i) {
		out.push(fun(iterable[i]));
	}
	return out;
}
/* debug function */
var console;
if(!console) {
	console = {
		log: function () {
			var args = [];
			for(var i=0,len=arguments.length; i<len; ++i) {
				args.push(arguments[i]);
			}
			alert(args.join(" "));
		}
	}
}

/****  ifrlayer : g�n�re une iframe pour IE afin de passer les div au dessus des selects ******/
/* ancienne methode de generation d'une iframe */
var iframetmp = null;
function makeiframe(obj) {ifrlayer.make(obj);iframetmp = obj.iframelayer;}
function killiframe() {if (iframetmp) iframetmp.style.visibility = "hidden";}
/* new ifrlayer */
var ifrlayer = {
	make:function(obj) {
		if(!obj) return; obj = (typeof(obj)=="string") ? document.getElementById(obj) : obj; if(!obj) return;
		if(IS_IE && document.getElementById && !obj.iframelayer ) {
			if(obj.parentNode && !obj.iframelayer) var ifr = obj.parentNode.insertBefore(document.createElement("<iframe src='javascript:false'>"), obj);
			if(obj.currentStyle.zIndex != "" && parseInt(obj.currentStyle.zIndex)>1 ) {
				ifr.style.zIndex = parseInt(obj.currentStyle.zIndex)-1;
			}
		
			with(ifr.style) {
				filter = "mask()";
				position = "absolute";
			}
			obj.iframelayer = ifr;
		}
		if (obj.iframelayer) {
			with(obj.iframelayer.style) {
				width  =  obj.offsetWidth+"px";
				height =  obj.offsetHeight+"px";
				visibility = "visible";
			}
			ifrlayer.move(obj);
		}

	},
	hide:function(obj) {
		if(!obj) return; obj = typeof(obj)=="string" ? document.getElementById(obj) : obj; if (!obj) return;
		if(obj.iframelayer) {
			obj.iframelayer.style.visibility="hidden";
		}
	},
	move:function(obj) {
		if(obj && obj.iframelayer) {
			with(obj.iframelayer.style) {
				top = obj.offsetTop+"px";
				left =  obj.offsetLeft+"px"
			}
		}
	}
}

/************
  fixPage : corrige les blocks qui cassent lorsque du contenu est rajout� � l'int�rieure.
***********/
function fixPage(obj) {
	if (IS_IE) return; //Si sous IE on sort
	var elt = obj;
	while(elt && !elt.className.match(/\bblock\b/)) elt=elt.parentNode ;
	if (!elt) return;
	var block = elt;
	var tdblk = elt.parentNode;
	var div = block.getElementsByTagName("div");
	var Arr = new Array();
	for (var i=0; i<div.length; i++) {
		var temp = div[i];
		switch(temp.className) {
			case "bkg_b_l":	Arr.push(temp); break;
			case "bkg_b_r":	Arr.push(temp); break;
			case "blk_ft":	Arr.push(temp); break;
			case "bkg_fild_blk_b_l":	Arr.push(temp); break;
			case "bkg_fild_blk_b_r":	Arr.push(temp); break;
		}
	}
	for (var i=0; i<Arr.length; i++) {
		Arr[i].style.display = "none";
	}
	tdblk.style.height = block.clientHeight+"px";
	window.ArrayFix = Arr;
	window.tdblkFix = tdblk;
	setTimeout("fixPageTimer()","10");
}

function fixPageTimer() {
	window.tdblkFix.style.height = "100%";
	for (var i=0; i<window.ArrayFix.length; i++) {
		window.ArrayFix[i].style.display = "block";
	}
}

/**************
 fonctions pour pages SFR
 *************/
/* D�ploi les �l�ment d'un block particulier */
function openClose(obj, classToAdd, eltToShowHideclass ) {
	if (!obj) {return;}
	obj.blur();
	if (!classToAdd) classToAdd = "closed";
	if (!eltToShowHideclass) eltToShowHideclass = "closable_part";
	while(obj && obj.className.indexOf("expand_box")==-1) obj = obj.parentNode;  if (!obj) return;
	if (obj.className.indexOf(" "+classToAdd)!=-1) {
		obj.className=obj.className.replace(classToAdd,"");
	} else {
		obj.className+=" "+classToAdd;
	}
	var ArrElt = ["div","p"];
	for (var j=0; j<ArrElt.length;j++) {
		var elt = obj.getElementsByTagName(ArrElt[j]);
		for (var i=0; i<elt.length; i++) {
			var x = elt[i];
			if (x.className.indexOf(eltToShowHideclass)!=-1) {
				x.className = (x.className.match(/\bhidden\b/)) ? x.className.replace("hidden","") : x.className+=" hidden";
			}
			elt[i].className = x.className;
		}
	}
	fixPage(obj);
}
/************
* Tabs functions
************/
/*** functions for new block of tabs ***/
function swapTabs(obj) {
	var link = obj;
	var clickedTab = null;
	while(obj.nodeName!="UL" && (obj=obj.parentNode)) {
		if (obj.nodeName=="LI") clickedTab = obj;
	}
	ul = obj;
	if (ul.currentTab==null) { /* make this init only one time on the block*/
		var lis = ul.getElementsByTagName("li");
		for (var i=0; i<lis.length; i++) { /* find the current default li  */
			lis[i].tabNumber = i;
			if (lis[i].className.match(/\bcurrent\b/)) {
				ul.currentTab = lis[i];
			}
		}
		if (ul.currentTab==null) ul.currentTab = lis[0];
		ul.headTabs = lis;
		/* get all the tabpanes blocks */
		ul.tabPanes=[];
		var theTd = ul;
		while(theTd.nodeName!="TD" && (theTd=theTd.parentNode));
		for (var i=0; i<theTd.childNodes.length; i++) {
			var x = theTd.childNodes[i];
			if (x.nodeName=="DIV" && x.className.match(/\bblock\b/) && x.className.match(/\btab_block\b/)) {
				x.tabNumber = ul.tabPanes.length;
				x.className = x.className.replace(/\btab_current\b/,"");
				ul.tabPanes.push(x);
			}
		}
	}
	ul.currentTab.className = ul.currentTab.className.replace(/\bcurrent\b/,"");
	ul.tabPanes[ul.currentTab.tabNumber].className = ul.tabPanes[ul.currentTab.tabNumber].className.replace(/\btab_current\b/,"");
	ul.currentTab=clickedTab;
	ul.tabPanes[ul.currentTab.tabNumber].className+=" tab_current";
	clickedTab.className+= " current";
	link.blur();
}

var tabsTdContainer=[];
function sizeTabsHeads() { //new tabs and olds tabs
	var tabshead = getElementsByClassName(document, "ul", "tabs_head");
	for (var i=0; i<tabshead.length; i++) {
		var ul = tabshead[i];
		var lis = ul.getElementsByTagName("li");
		var maxHeight = 0;
		for (var j=0; j<lis.length; j++) {
			if (lis[j].offsetHeight>maxHeight) {
				maxHeight=lis[j].offsetHeight;
			}
		}
		ul.style.height=maxHeight+"px";
		for (var j=0; j<lis.length; j++) {
			var span = lis[j].getElementsByTagName("span");
			if (span.length>=2) {
				span = span[1];
				/* cause bad doctype IE doesn't have the same rules for height than FF , opera, Safari)*/
				span.style.height = (maxHeight-(IS_IE ? 0 : (intStyle(span,"padding-top")+intStyle(span,"padding-bottom"))))+"px";
			}
		}
	}
	//oldTabs
	for (var i=0; i<tabsTdContainer.length; i++) {
		var divTabContainer = getTabDivContainer(tabsTdContainer[i]);
		if (divTabContainer) {
			var tds = divTabContainer.getElementsByTagName("td");
			for (var j=0; j<tds.length; j++) {
				var td = tds[j];
				var a = td.getElementsByTagName("a");
				if(a.length>0) {
					var a = a[0];
					a.style[HeightPropertyToUse] = a.offsetHeight+(td.parentNode.parentNode.offsetHeight-td.getElementsByTagName("div")[0].offsetHeight-(IS_IE?0:(intStyle(a,"padding-top")+intStyle(a,"padding-bottom"))))+"px";
				}
			}

		}
	}
}
function getTabDivContainer(td) {
	var div=td.getElementsByTagName("div");
	for (var i=0; i<div.length; i++) {
		if (div[i].className.indexOf("blk_tabs_bdy")!=-1) return div[i];
	}
	return null;
}

/* old function of tabs */
function swaptabs(begin, end) {
	var tab = document.getElementById(begin+'_'+end+'_button');
	var tabCont = document.getElementById(begin+'_'+end+'_content');
	var td=tab.parentNode;
	var tr = tab;
	while (tr.parentNode && tr.nodeName!='TR') {
		tr=tr.parentNode;
	}
	var td = tr.getElementsByTagName('td');
	for (var i=0; i<td.length; i++) {
		var div = td[i].getElementsByTagName("div")[0];
		div.className=div.className.replace(/\bcurrent_tab\b/gi,"");
	}
	tab.className+=' current_tab';
	var child = tabCont.parentNode.firstChild;
	while(child.nextSibling) {
		if(child.nodeName && child.nodeName=='DIV') {
			var str = child.className;
			child.className = str.replace(/\bdefault_visible_tab\b/g,'default_hidden_tab');
		}
		child = child.nextSibling;
	}
	tabCont.className = tabCont.className.replace(/\bdefault_hidden_tab\b/,'default_visible_tab')
	tab.getElementsByTagName('a')[0].blur();
}

function swapInsideTab(strTabGroupName, strTabName, strInsideTabName){
	var tab = document.getElementById(strTabGroupName+'_'+strTabName+'_button_'+strInsideTabName);
	var contentTab = document.getElementById(strTabGroupName+'_'+strTabName+'_content_'+strInsideTabName);
	var td = tab;
	while (td.nodeName!="TD") td = td.parentNode;
	var lis = td.getElementsByTagName("li");
	for (var i=0; i<lis.length; i++) {
		var li = lis[i];
		li.className = li.className.replace(/\binside_tab_button_o(ff|n)\b/,'inside_tab_button_o'+(tab==li?'n':'ff'));
	}
	contentTabContainer = contentTab.parentNode;
	var ctnTabs = contentTabContainer.childNodes;
	for (var i=0; i<ctnTabs.length; i++) {
		var ctab = ctnTabs[i];
		if(ctab.nodeType==1 && ctab.className.match(/\binside_tabs_content\b/)) {
			ctab.className = ctab.className.replace(/\bdefault_(hidden|visible)_tab\b/,'default_'+(ctab==contentTab?'visible':'hidden')+'_tab');
		}
	}
}
function toggle(elm) {
	while(elm.parentNode && elm.className.indexOf('type_toggle')==-1) elm = elm.parentNode;
	if (elm.className.indexOf('type_toggle')==-1) return
	elm.className = elm.className.match(/\btype_toggle_opened\b/) ? elm.className.replace(/\btype_toggle_opened\b/g,'type_toggle_closed') : elm.className.replace(/\btype_toggle_closed\b/g,'type_toggle_opened')
	fixCorners(elm);
}

function actuswitch(elm) {
	var block, tabsblock, bkg_ctt_isd;
	var newtabindex, blocksindex=0;
	var blockCount=0;
	var obj=elm;
	while(obj.parentNode && !obj.className.match(/\btype_actu\b/)) {
		obj = obj.parentNode;
		if (obj.className.match(/\btabs_actu\b/)) tabsblock = obj;
		if (obj.className.match(/\btype_actu\b/)) block = obj;
		if (obj.className.match(/\bbkg_ctt_isd\b/)) bkg_ctt_isd = obj;
	}
	var tabs = tabsblock.getElementsByTagName("li");
	for (var i=0; i<tabs.length; i++) {
		var t = tabs[i];
		var a = t.getElementsByTagName("a");
		if (a.length>0 && a[0]==elm) newtabindex=i;
		t.className=t.className.replace(/\b(before|after)?current\b/,"");
	}
	var tabs = tabsblock.getElementsByTagName("li");
	if (newtabindex>0) tabs[newtabindex-1].className+=" beforecurrent";
	elm.parentNode.className+=" current";
	if (newtabindex<tabs.length-1) tabs[newtabindex+1].className+=" aftercurrent";

	var chld = bkg_ctt_isd.childNodes;
	for (var i=0; i<chld.length; i++) {
		var o = chld[i]
		if (o.nodeName=="DIV" && o.className.match(/\bblk_ctn_ctt\b/)) {
			o.className=o.className.replace(/\bcurrent\b/,"");
			if (blockCount==newtabindex) {
				o.className+=" current";
			}
			blockCount++;
		}
	}
	elm.blur();
	fixCorners(elm);
}

/*******
 fixCorners : fixer les coins afin de ne pas avoir de problmes pour IE et les autres navigateurs
*******/
/* -- Fix corners functions : Ces fonctions fixent les coins sous IE -- */
var CSSBottomCorners=[];
var badFixedBlock=[];
var currentBlockToFixCorner=null;
function cssRight(elm) {
	if ( elm.currentStyle.right != 'auto' ) { elm.style.right=(parseInt(elm.currentStyle.right)-(elm.parentNode.offsetWidth%2))+"px"; }
}
function cssBottom(elm, pushElement) {
	if (pushElement && !elm.CSSBottomAlreadyCSS) {
		CSSBottomCorners.push(elm);
		elm.CSSBottomAlreadyCSS=true;
	}
	if ( elm.currentStyle.bottom != 'auto' ) { elm.style.bottom=(parseInt(elm.currentStyle.bottom)-(elm.parentNode.offsetHeight%2))+"px"; }
}
function fixCorners(block) {
	if (IS_IE) {
		for (i=CSSBottomCorners.length-1; i>-1; --i) {
			CSSBottomCorners[i].style.bottom="";
		}
	} else {
		if (IS_SAFARI) fixCornersOnBlocks(block);
	}
}
function fixCornersOnBlocks(block) {
	currentBlockToFixCorner = block || document.body;
	currentBlockToFixCorner.className+=" hidecorners";
	setTimeout("fixCornersOnBlocksShowCorners()",5);
}
function fixCornersOnBlocksShowCorners() {
	if (currentBlockToFixCorner) currentBlockToFixCorner.className=currentBlockToFixCorner.className.replace(/\bhidecorners\b/g,"");
	currentBlockToFixCorner=null;
}
/* -- /fixcorners functions -- */



/*********
 alignement des blocks en hauteur
 ***********/
/* Bonnes affaires  */
var tdbonnesaffArr = [];
function bonnesAffairesProcessAlign() {
	var clearing = document.createElement("div");
	clearing.className="clearing";
	for (var i=0; i<tdbonnesaffArr.length; i++) {
		var x = tdbonnesaffArr[i];
		if (x.className.indexOf("size_")!=-1) {
			var BA = bonnesAffairesGetBlock(x);
			if (BA) {
				BA.parentNode.insertBefore(clearing.cloneNode(true),BA);
				var children = filter(x.childNodes, function (node) { return (node.nodeType == 1) });
				var children_height = sumHeights(children);
				BA.style.marginTop = (x.offsetHeight-children_height+intStyle(BA,"margin-top"))+"px";
			}
		}
	}
}
function bonnesAffairesGetBlock(td) {
	var div = td.getElementsByTagName("div");
	for (var i=div.length-1;i>=0; i--) {
		if (div[i].className.match(/\bbonne_affaire\b/)) {
			return div[i];
		}
	}
	return null;
}

/* -- Bloc Actus (alignement hauteur) */
function processHeightTypeActuBlocks(block) {
	var maxHeight = 0;
	if (!block) return;
	var x = block;
	if (!x.alreadyProcessed) {
		// Filtre des divs avant d'iterer dessus, afin de faire moins d'iterations successives
		var actu_blocks = filter(x.getElementsByTagName('div'), function (node) {
			return node.className.match(/\bactu_ctn\b/);
		});

		// Changement d'affichage uniquement quand on a les nodes a processer
		x.className+=" type_actu_is_processing";
		for(var i=0; i<actu_blocks.length; ++i) {
			var ab = actu_blocks[i];
			if(ab.offsetHeight > maxHeight) {
				maxHeight = ab.offsetHeight;
			}
		}
		map(actu_blocks, function (node) {
			return node.style[HeightPropertyToUse] = (maxHeight - (IS_IE?0:intStyle(node, 'padding-top') + intStyle(node, 'padding-bottom'))) + "px";
		});
		x.alreadyProcessed=true;
		x.className = x.className.replace(/\btype_actu_is_processing\b/g,"");
	}
}

/* alignement en hauteur g�n�ral */
function sumHeights(iterable) {
	var out = 0;
	for(var i=0,len=iterable.length; i<len; ++i) {
		out += iterable[i].offsetHeight;
		if (iterable[i].className.indexOf("type_actu")!=-1) {
			processHeightTypeActuBlocks(iterable[i]);
		}
		if (iterable[i].className.indexOf("top_search_bar")!=-1) return false;
	}
	return out;
}

function processBlock(block) {
	if (IS_SAFARI) { //Si safari on remonte jusqu'au Tbody, on calcule le nombre de TR dans le tbody, si TR == 1, on retourne la hauteur du tbody
		var tbody = block.parentNode.parentNode;
		var chl = tbody.childNodes;
		var tr=0;
		for(var i=0; i<chl.length; i++) {
			if (chl[i].nodeName=="TR") tr++;
		}
		var block_height = (tr==1) ? tbody.offsetHeight : block.offsetHeight;
	} else {
		var block_height= block.offsetHeight;
	}
	var children = filter(block.childNodes, function (node) { return (node.nodeType == 1 && node.nodeName != "SCRIPT") });
	var children_height = sumHeights(children);
	if (children_height==false) return;
	var height_diff = block_height - children_height;
	if(height_diff < 0) { height_diff = Math.abs(height_diff); }
	var ctts = filter(block.getElementsByTagName('div'), function (node) { return node.className.match(/\bblk_ctn_ctt\b/) && !node.className.match(/\bcurrent\b/); });
	var sub_blocks_number = ctts.length;
	var sizeing = Math.round(height_diff/sub_blocks_number);
	if(sizeing > 0) {
		for(var j=0; j<ctts.length; ++j) {
			var size_want = ctts[j].offsetHeight + sizeing;
			ctts[j].style[HeightPropertyToUse] = (size_want) + "px";
			var size_wrong_size = ctts[j].offsetHeight - size_want;
			if(size_wrong_size != 0) {
				ctts[j].style[HeightPropertyToUse] = (size_want - size_wrong_size) + "px";
			}
		}
	}
	var new_height_diff = block_height - sumHeights(children);
	var new_sizeing = Math.round(new_height_diff / sub_blocks_number);
	if(new_sizeing > 0) {
		for(var j=0; j<ctts.length; ++j) {
			var size_want = ctts[j].offsetHeight + new_sizeing;
			ctts[j].style[HeightPropertyToUse] = (size_want) + "px";
			var size_wrong_size = ctts[j].offsetHeight - size_want;
			if(size_wrong_size != 0) {
				ctts[j].style[HeightPropertyToUse] = (size_want - size_wrong_size) + "px";
			}
		}
	}
}
function getLineStorage(blocks) {
	var lines = [];
	for(var i=0, len=blocks.length; i<len; ++i) {
		var current_line = blocks[i].parentNode;
		var j = null;
		for(j=0; j<lines.length; ++j) {
			if(current_line == lines[j][0]) {
				lines[j][1].push(blocks[i]);
				break;
			}
		}
		if(j == lines.length) {
			lines.push([current_line, [blocks[i]]]);
		}
	}
	return lines;
}

function sizeBlocks() {
	var parentBlock = document.getElementById("ctn_ctt") || document;
	var line_blocks = filter(parentBlock.getElementsByTagName('td'), function (node) {
		if (node.className.match(/\b(mltpl_)?blk_ctn\b/)) {
			// if mltpl
			if(node.className.match(/\bmltpl_blk_ctn\b/)) {
				// And only one block (one blk_ctn_ctt)
				if(1 >= filter(node.getElementsByTagName('div'), function (nde) { return nde.className.match(/\bblk_ctn_ctt\b/); }).length) {
					return false;
				}
			}
			return true;
		} else {
			if (node.className.indexOf("tabs_blks_ctn")!=-1) {
				tabsTdContainer.push(node);
			} else {
				tdbonnesaffArr.push(node);
			}
			return false;
		}
	});
	var lines = getLineStorage(line_blocks);
	for(var i=0; i<lines.length; ++i) {
		var line = lines[i][0];
		var line_blocks = lines[i][1];
		var line_blocks_count = line_blocks.length
		var height = line.offsetHeight;
		for(var j=0; j<line_blocks_count; ++j) {
			processBlock(line_blocks[j], height);
		}
	}
}
/* -- /alignement en hauteur des blocks -- */


function showHelp(elm) {
	elm.onmouseout=function() {
		this.className=this.className.replace(/\bhelpover\b/g,"");
	}
	elm.className+=" helpover";
}

function initPage() {
	sizeBlocks();
	sizeTabsHeads();
	fixCorners();
	setTimeout(bonnesAffairesProcessAlign,10);
}

addEvent(window, "load",initPage);


/**********
 Scroll functions
 **********/
var scrollTimer;


function scrollMeLeft(strScrollName){
	var scrollBlock = document.getElementById(strScrollName+"_ctn");
	if (scrollBlock) {
		scrollBlock.scrollLeft+=8;
		scrollTimer = setTimeout('scrollMeLeft("'+strScrollName+'")', 25);
	}
}
function scrollMeRight(strScrollName){
	var scrollBlock = document.getElementById(strScrollName+"_ctn");
	if (scrollBlock) {
		scrollBlock.scrollLeft-=8;
		scrollTimer = setTimeout('scrollMeRight("'+strScrollName+'")', 25);
	}
}
function scrollMeUp(strScrollName){
	var scrollBlock = document.getElementById(strScrollName+"_ctn");
	if (scrollBlock) {
		scrollBlock.scrollTop-=5;
		scrollTimer = setTimeout('scrollMeUp("'+strScrollName+'")', 5);
	}
}
function scrollMeDown(strScrollName){
	var scrollBlock = document.getElementById(strScrollName+"_ctn");
	if (scrollBlock) {
		scrollBlock.scrollTop+=5;
		scrollTimer = setTimeout('scrollMeDown("'+strScrollName+'")', 5);
	}
}

function doNotScrollMeAnyMore(strScrollName){
	clearTimeout(scrollTimer);
}


/**********
 Selectlike
 **********/
var selectLikeArray = new Array(), selectLikeInUseRef=null, selectLikeselInUseBool=false; //tableau ref sur selects, selectencoursdutilisation, booleen pour eviter un effet revers
function SelectLikeCloseAll() {
	var exists = false;
	if (selectLikeArray.length>0) {  //on efface tous les selects sauf celui actuellement en cours
		for (var i=0; i<selectLikeArray.length;i++) {
			if (selectLikeArray[i]!=selectLikeInUseRef) {
				var sel = selectLikeArray[i];
				sel.className = sel.className.replace(" extended",""); //on ferme tous les faux selects de la page
			}
		}
		for (var i=0; i<selectLikeArray.length;i++) { //on teste si le select en cours est deja dans la liste
			if (selectLikeArray[i]==selectLikeInUseRef) {
				exists = true;
			}
		}
	}
	if (selectLikeInUseRef!=null && !exists ) selectLikeArray.push(selectLikeInUseRef);
	document.onclick=function() {}; //une fois que l'action est faite, on vire la fonction du onclick
}

function SelectLikeDeploy(obj,inputid,func) {
	if (obj) { //Si la fonction est appellee avec une reference
		obj.blur();
		var mysel = obj.parentNode.parentNode; if(!mysel) return; //le select
		if (inputid ||inputid!='') mysel.setAttribute("inputassociated",inputid);
		if (func) mysel.associatedFunc = func;
		var mydd = mysel.getElementsByTagName("dd")[0]; if(!mydd)return; //le groude avec les liens

		selectLikeselInUseBool = true;  //Le select est en cours d'utilisation, utile pour le onclick de document
		selectLikeInUseRef = mysel; //Le select est ajoute a une variable globale de reference
		mydd.onmouseover = function () { //lorsque le curseur de la souris passe sur le select, le onclick de docuement est inhibe
			document.onclick = function() {}
		}
		mydd.onmouseout = function () { //lorsque la souris sort, le onclick est reactive
			document.onclick = function() {  SelectLikeCloseAll();	}
		}
	}
	SelectLikeCloseAll();  //on ferme tous les selects
	document.onclick = function() { //on rajoute l'action de fermer tous les selects sur le onclick du document, cette action est faite seulement la premiere fois qu'un select est utilise
		if (!selectLikeselInUseBool) { SelectLikeCloseAll(); }
	}
	with (mysel) {
			className = (className.indexOf("extended")!=-1) ? className.replace(" extended","") : className+" extended";
		mydd.style.width = mysel.clientWidth+"px";
	}

	if (!mysel.getAttribute('alreadyused')) { //si le select n'a jamais ete ouvert, on applique une action sur celui-ci
		var links = mydd.getElementsByTagName("a"); //tous les liens
		for (var i=0; i<links.length; i++) {
			a = links[i];
			a.onmousedown = function() {
				var mysel = this.parentNode.parentNode;
				var mydta = mysel.getElementsByTagName("dt")[0].getElementsByTagName("a")[0];
				mydta.innerHTML = this.innerHTML;
				if (mysel.getAttribute("inputassociated")!=null) { //on gere l'element de formulaire cache
					var inp = document.getElementById(mysel.getAttribute("inputassociated")); //on recup l'element
					if (inp) inp.value = this.getAttribute("value");
				}
				this.blur();
				SelectLikeCloseAll();
				if (mysel.associatedFunc) mysel.associatedFunc();
				this.href="javascript:void(0)";
				return false;
			}
		}
	}
	mysel.setAttribute('alreadyused',true);
	setTimeout("selectLikeselInUseBool = false;",20);
	selectLikeInUseRef=null;
}

/*************
* Moteur de recherche
**************/
/* fonction pour moteur de recherche */
function activeSel(radioButton) {
	var sel1 = document.getElementById('recherchesfrnav');
	var sel2 = document.getElementById('recherchesfrbottom');
	var disabled = radioButton.value.toLowerCase() == 'sfr' ? '' : 'disabled';
	sel1.disabled = disabled;
	if(sel2) sel2.disabled = disabled;
	var selectedVal = radioButton.value;
	var selArr = [sel1, sel2];
	for (var i=0; i<selArr.length; i++) {
		var s = selArr[i];
		if (s) {
			var inp = s.form.getElementsByTagName("input");
			for (var j=0; j<inp.length; j++) {
				var x = inp[j];
				if (x.type=="radio") {
					x.checked = x.value == selectedVal ? 'checked' : '';
				}
			}
		}
	}
}

function makeSameSel(sel, secondSelect) {
	var sel2 = document.getElementById(secondSelect);
	if (sel2) sel2.selectedIndex=sel.selectedIndex;
}

function changeTextToOther(input, otherInputId) {
/*
	var inp2 = document.getElementById(otherInputId);
	if (inp2) inp2.value=input.value;
	
	// Couplage avec le formulaire de recherche avanc�...
*/
	for (i=0 ; i<otherInputId.length ; i++) {
		var input2name = otherInputId[i];
		var input2 = document.getElementById(input2name);
		if (input2) input2.value=input.value;
	}
}


/***********
* fonctions de V5 pour les blocks FAQ et pour les type_splits transparent
***********/
function swap_layer(strLayer1, strLayer2){
	document.getElementById(strLayer1).style.display="none";
	document.getElementById(strLayer2).style.display="block";
}

function fixColumns(maskLayerId,textLayerId){
	var masklayer = document.getElementById(maskLayerId);
	var textlayer = document.getElementById(textLayerId);
	if (!masklayer || !textlayer) return;
	var haut1 = masklayer.offsetHeight;
	var haut2 = textlayer.offsetHeight;
	var max = haut1;
	if(haut2 > max) max = haut2;
	masklayer.style.height = textlayer.style.height = max + "px";
}

/* fonctions pour le scrolling */
//variables
var m_scrollobj = null;
var m_scrollTimer;

//scrolling horizontal
function m_scrollH(obj, dir) {
	var incr = 3;
	var time = 15;
	if (!m_scrollobj) {
		var table = obj.parentNode;
		while(table.parentNode && table.nodeName!="TABLE") table = table.parentNode;
		var div = table.getElementsByTagName("div");
		for (var i=0; i<div.length; i++) {
			if (div[i].className.match(/\b(scroll|m_srcl_flow)_ctn\b/)) {
				m_scrollobj = div[i]; break;
			}
		}
		if (!m_scrollobj) return;
	}
	m_scrollobj.scrollLeft += incr * dir;
	m_scrollTimer = setTimeout(function () { m_scrollH(obj, dir); }, time);
}

//scrolling vertical
function set_scroll(){}

function m_scrollV(obj, dir) {
	var incr = 3;
	var time = 15;
	if (!m_scrollobj) {
		table = obj;
		while(table.className.indexOf("m_scrollV")==-1) table = table.parentNode;
		var divs = table.getElementsByTagName("div"); //on recupere tous les divs du tableau
		for (var i=0; i<divs.length; i++) { //on recherche le div qui va etre scrolle
			if (divs[i].className.match(/\bm_scrl_ctn\b/)) {
				m_scrollobj = divs[i];
				break;
			}
		}
	}
	m_scrollobj.scrollTop +=  incr*dir;
	m_scrollTimer = setTimeout(function() {m_scrollV(obj, dir); }, time);
}

//arret du scrolling
function m_scrollOut() {
	clearTimeout(m_scrollTimer);
	m_scrollobj=null;
}

function overLinkToggling(bloc){
	var toOpen = bloc.getElementsByTagName('DIV')[0];
	if (toOpen.className.match(/\bopened\b/)){
		toOpen.className = toOpen.className.replace(/\bopened\b/, '');
	}
	else {
		toOpen.className+=' opened';
	}	
	bloc.blur();
}

/*****************
 foncions vides et variables qui ne doivent plus �tre utilis�es
 ***************/
function init_menu(){}
function scrollinit(){}
/*------------FIN DE COMMON.JS--------------------------*/
/* $: raccourci pour document.getElementById*/
function $(obj) {
	if(typeof obj == "string") {
		return document.getElementById(obj);
	} else {
		return obj;
	}
};

function $t(el,nodeType) {
	return el.getElementsByTagName(nodeType);
}

function swapHoro(img) {
	var zodiaqueList = $("switch_zodiaque");
	var imgZodiaque = $t(zodiaqueList,"img");
	var horoTexts = getElementsByClassName(document,"div","horo isd_Hmargins");
		
	for(var i=0; i<imgZodiaque.length;i++) {
		if(img != imgZodiaque[i]) {
			imgZodiaque[i].src = imgZodiaque[i].src.replace(/(.*)zodiaque(..)_on\./,"$1zodiaque$2."); //Factoriser
			horoTexts[i].className = "horo isd_Hmargins hidden";
		}
		else {
			horoTexts[i].className = "horo isd_Hmargins";
		}
	}
	img.src = img.src.replace(/(.*)zodiaque(..)\./,"$1zodiaque$2_on.");	//Factoriser
}


function resizeShopping() {
	var table = $("tableShopping");
	if (!table) return;
	table.style.height = table.parentNode.offsetHeight-intStyle(table.parentNode, "padding-top")-intStyle(table.parentNode, "padding-bottom")+"px";
}	
addEvent(window, "load", function() {setTimeout(resizeShopping, 10);});

function switchInfo(infoId) {							
	var aInfos = ["outil1", "outil2", "outil3", "outil1"];
	var showHide = function(elm){
		var arrDiv = db(elm).getElementsByTagName('DIV');
		for (var i=0; i<arrDiv.length; i++){
			if (arrDiv[i].className.match(/\bcontext\b/)){
			arrDiv[i].className = arrDiv[i].className.match(/\bdisplayNn\b/)?arrDiv[i].className.replace(/displayNn/,'displayBlk'):arrDiv[i].className.replace(/displayBlk/,'displayNn');
			}
		}
		db(elm).className = db(elm).className.match(/\bopen\b/)?db(elm).className.replace(/open/,'close'):db(elm).className.replace(/close/,'open');
		
		var btn = db(elm).getElementsByTagName('BUTTON')[0];
		btn.className = btn.className.match(/\bbtMoins\b/)?btn.className.replace(/btMoins/,'btPlus'):btn.className.replace(/btPlus/,'btMoins');
		btn.blur();
	}
	
	function db(str) { return document.getElementById(str)};
	
	if (db(infoId).className.match(/\bclose\b/)){
		for (var i=0; i<aInfos.length && open==null; i++){
			if (db(aInfos[i]).className.match(/\bopen\b/)){
				showHide(aInfos[i]);
				db(aInfos[i]).parentNode.style.width = "122px";
			}
		}
		
		showHide(infoId);
		db(infoId).parentNode.style.width = "252px";
	}else{
		var open=null;
		
		for (var i=0; i<aInfos.length && open==null; i++){
			if (aInfos[i] == infoId){
				open = aInfos[i+1];
				showHide(infoId);
				showHide(open);
				db(infoId).parentNode.style.width = "122px";
				db(open).parentNode.style.width = "252px";
			}
		}
	}
}


function initMeteo(){
	if (!$('listRegions')) {
		setTimeout(fillComboRegion, 1000);
	} else {
		setTimeout(initMeteo, 10);
	}
}
initMeteo();

/* Remplit la liste d�roulante des r�gions */
function fillComboRegion()
{
	var cpt = 1;
	var opt = document.createElement("option");
	var mf = $("meteoForm");
	if (!mf) return;
	var mf = mf.regionList;
	for (var a in meteoTab)
	{
		var o = opt.cloneNode(true);
		o.value = cpt;
		o.innerHTML = a;
		mf.appendChild(o);
		cpt++;
	}
	fillComboVille();
}

/* Evenement appel� lorsque la r�gion change */
function regionChange()
{
	fillComboVille();
}

/* supprime la liste des villes */
function clearVille()
{
		var elm = $("meteoForm").villeList;
		while(elm.firstChild) 
			elm.removeChild(elm.firstChild);
}

/* Remplit la liste d�roulante avec la liste de toutes des villes */
function fillComboAllVille()
{
	// on recupere le nom de la ville par d�faut dans le cookie
	var cityCoookie = readCookie("p13n_city");
	var cityVoxName = "";
	if (cityCoookie) {
		var arr = cityCoookie.split("|");
		if (arr.length>=3) {
			cityVoxName = arr[0];
		}
	}
	
	// on cr�� les options et on selectionne laville du cookie
	var villelist = $("meteoForm").villeList;
	var newOption = document.createElement("option");
	for (var a in meteoTab) {
		for (var b in meteoTab[a]) {
			var opt = newOption.cloneNode(true);
			var ville = meteoTab[a][b];
			var newOpt = villelist.appendChild(opt);
			newOpt.value = ville.name;
			newOpt.innerHTML = ville.name;
			newOpt.selected = ville.name == cityVoxName ? "selected" : "";
		}
	}
	// s'il n'y a pas de cookie, alors on s�lectionne la premi�re ville
	if (cityVoxName="") villelist.selectedIndex = 0;
	sortVilles(villelist);
}

function sortVilles(select) {
	var os = select.options;
	for (var i=0; i<os.length; i++) {
		for (var j=i; j<os.length; j++) {
			if (stripAccents(os[i].innerHTML)>stripAccents(os[j].innerHTML)) {
				select.insertBefore(os[j],os[i]);
			}
		}
	}
	
}

function stripAccents(str) {
	return str.replace(/[��]/gi, "E");
}

/* Remplit la liste d�roulante des villes */
function fillComboVille()
{
	var s = parseInt($("meteoForm").regionList.value);
	clearVille();
	if (s == 0)
	{
		fillComboAllVille();
	}
	else
	{
	clearVille();
	var selectedRegion = $("meteoForm").regionList[s].text;
	
	for (var i = 0; i < meteoTab[selectedRegion].length; i++)
		$("meteoForm").villeList.options[i] = new Option(meteoTab[selectedRegion][i].name, meteoTab[selectedRegion][i].name);	
	}
	
}

function verifyChecked(){
	var form = document.getElementById('meteoForm');
	var input = form.getElementsByTagName('INPUT');
	
	for (var i=0; i < input.length; i++){
		if (input[i].value == 'save' && input[i].checked){
			setCityCookie(3, true);
		}
	}
}

/* Retourne le code M�t�o par rapport � une ville 
le param�tre est le nom de la ville ex : Pau
*/
function getMeteoCodeByCity(cityValue)
{
	for (var a in meteoTab)
		for (var i = 0; i < meteoTab[a].length; i++)
			if (meteoTab[a][i].name == cityValue)
				return meteoTab[a][i].meteo;
}

/* Retourne le code Cityvox par rapport � une ville 
le param�tre est le nom de la ville ex : Pau
*/
function getCityvoxCodeByCity(cityValue)
{
	for (var a in meteoTab) 
		for (var i = 0; i < meteoTab[a].length; i++)
			if (meteoTab[a][i].name == cityValue)
				return meteoTab[a][i].cityvox;
	return "";
}

/* Retourne le nom de r�gion AFP par rapport � une ville 
le param�tre est le nom de la ville ex : Pau
*/
function getRegionAFPNameByCity(cityValue)
{
	for (var a in meteoTab) 
		for (var i = 0; i < meteoTab[a].length; i++)
			if (meteoTab[a][i].name == cityValue)
				return meteoTab[a][i].regionAFPName;
	return "";
}

function getCityvoxCityByCode(cityvoxCode)
{
  for (var a in meteoTab)
    for (var i = 0; i < meteoTab[a].length; i++)
      if (meteoTab[a][i].cityvox == cityvoxCode)
        return meteoTab[a][i].cityvoxName; 	 
  return ""; 
}

/*
function setCityvoxLink(elm, cityvoxCode, typeLink) {
	var link = '';
	var city = '';
	var addCity = true;
	switch(typeLink) {
		case 'evenement':
			link="http://maville.sfr.fr/";
			break;
		case 'bar':
			link="http://maville.sfr.fr/";
			break;
		case 'restau':
			link="http://maville.sfr.fr/";
			break;
		default:
			link="http://maville.sfr.fr/";
			addCity=false;
			break;
	}

	if(addCity) {
		var city = getCityvoxCityByCode(cityvoxCode);
		link += "guide_"+city+"/AccueilVille";
	}
	
	$(elm).href=link;
}
*/

function setCityvoxLink(elm, cityvoxCode, typeLink) {
	var link = '';
	var suffix = '';
	var city = getCityvoxCityByCode(cityvoxCode);
	var addCity = true;
	switch(typeLink) {
		case 'evenement':
			link="http://maville.sfr.fr/agenda_";
			suffix="/Agenda";
		break;
		case 'bar':
			link="http://maville.sfr.fr/bars-et-boites_";
			suffix = "/Lieux"
		break;
		case 'restau':
			link="http://maville.sfr.fr/restaurants_";
			suffix = "/Restaurants";
		break;
		default:
			link="http://maville.sfr.fr/";
			addCity=false;
		break;
	}
	if(addCity) {
		var city = getCityvoxCityByCode(cityvoxCode);
		link += city+suffix;
	}
	$(elm).href=link;
}

function validateMyChoices(elm) {
	verifyChecked();
	var cvCode = getCityvoxCodeByCity($("villeList").value);
	setCityvoxLink(elm, cvCode, "evenement");
}

function setCityCookie(days, dontwantalink) {
    var el = $("meteoForm").villeList;
	var cityName = el.options[el.selectedIndex].value;
	var name = "p13n_city";
	
	var meteoValue = getMeteoCodeByCity(cityName);
	var cityvoxValue = getCityvoxCodeByCity(cityName);
	var regionAFPValue = getRegionAFPNameByCity(cityName);
  var cityvoxName = getCityvoxCityByCode(cityvoxValue);
	
	createCookie(name, cityName+"|"+meteoValue+"|"+cityvoxValue+"|"+regionAFPValue+"|"+cityvoxName, days);
	if (!dontwantalink) document.location.href = "index.jsp";
}

function showMeteoForm(){
	switchContent('ville_paris_infos', 'form_changeville');
}

function switchContent(obj1, obj2){
	document.getElementById(obj1).style.display="none";
	document.getElementById(obj2).style.display="block";
}

function readSigne(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 setSigne(el,days) {
	var signeValue = el.options[el.selectedIndex].value;
	var name = "astroCookie";
	
	if (days) {
		var date = new Date();
		date.setTime(date.getTime()+(days*24*60*60*1000));
		var expires = "; expires="+date.toGMTString();
	}
	else var expires = "";
	document.cookie = name+"="+signeValue+expires+"; path=/";
	
	if (!$("signeDescr")){switchContent('horoscope_b2', 'horoscope_b1')};
	switchSigne(signeValue);
}

function switchSigne(signeValue) {
	var image = $("astroImg");
	var signe = $("astroSigne");
	var signeText = $("astroName");
	
	
	signe.href = signeTable[signeValue][1];
	signeText.innerHTML = signeTable[signeValue][0];
	image.src = image.src.replace(/zodiaque(.*)\./,"zodiaque"+signeTable[signeValue][2]+"_on.");
	if ($("signeDescr")){$("signeDescr").innerHTML = "<a href='"+signeTable[signeValue][1]+"'>"+signeTable[signeValue][3]+"</a>";}
	
	sizeBlocks() ;
}

function initSigne() {
	
	var sel = $('signeForm');
	var mySigne = readSigne('astroCookie');
	i=1;
	
	if (!sel) return;
	
if (typeof signeTable != 'undefined') {
	
	for (signe in signeTable) {
		if(!mySigne && i==1) {
	        mySigne = signeTable[signe][0];
		}
		var ok = (mySigne == signe)  ? true : false;
		sel.signeList.options[i] = new Option(signeTable[signe][0], signe,ok);
		i++;
	}
	}
	switchSigne(mySigne);
}

function createCookie(name,value,days) {
	if (days) {
		var date = new Date();
		date.setTime(date.getTime()+(days*24*60*60*1000));
		var expires = "; expires="+date.toGMTString();
	}
	else var expires = "";
	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 eraseCookie(name) {
	createCookie(name,"",-1);
}

function searchCityvox(form,mode) {
	var cityvoxlink = "";
	var cityCoookie = readCookie("p13n_city");
	var cityVoxName = "";
	if (cityCoookie) {
		var arr = cityCoookie.split("|");
		if (arr.length>=3) {
			cityvoxlink = arr[2];
		}
	}
	form.action='http://maville.sfr.fr/'+mode+'_'+(getCityvoxCityByCode(cityvoxlink))+'/Antidot'; form.submit(); return false;
}

function imgPngfix(elm) {
   elm.style.filter=" ";
   var width = elm.offsetWidth;
   var height = elm.offsetHeight;
   if (document.all && window.print && window.attachEvent) {
       var imgUrl = elm.getAttribute('src');
       if (imgUrl) {
           var span = document.createElement('span');
           elm.parentNode.insertBefore(span, elm);
           span.style.display = 'inline-block';
           span.style.width = width;
           span.style.height = height;
           span.className = elm.className;
           span.style.background = 'none';
			  span.style.filter="progid:DXImageTransform.Microsoft.AlphaImageLoader(sizingMethod='scale' enabled='true',src='"+imgUrl+"')";
           span.appendChild(elm);
           elm.style.visibility = 'hidden';
      }
   }
};

function sendFLV (url){
	var obj =  (navigator.appName.indexOf("Microsoft") != -1) ?  window['mymovie'] : document['mymovie'] ;
	obj.changeFLV(url);
}

function enableVideoPlayer() {
	var pg = document.getElementById('page');
	if ( !pg ) return;
	var divs = pg.getElementsByTagName('div');
	for (var j=0;j<divs.length;j++) 
		if (divs[j].className.match('blocVideo'))
			var container = divs[j];
	if (!container) return;
	var links = container.getElementsByTagName('a');
	var current = 0;
	links[current].className += ' current';
	for (var i=0;i<links.length;i++) {
		links[i].index = i
		links[i].onclick= function() {return false};
		addEvent(links[i],'click', function() {
			sendFLV(this.href);
			links[current].className = links[current].className.replace("current","");
			links[this.index].className += ' current';
			current= this.index;
		});
	}	
}

//addEvent(window, "load", initMeteo);
addEvent(window,'load',initSigne);
addEvent(window,'load',enableVideoPlayer);
