
// copyright - begin
//
//   Copyright (C) 2005 Espace Courbe inc.
//   You are free to modify and redistribute this code as long
//   as the following message is included:
//
//   Last modified:
//   $Date: 2008-09-03 16:24:53 $
//   $Revision: 1.45 $
//
//   Portions Copyright (C) 2006 Espace Courbe inc.
//   Home Page: http://www.espacecourbe.com/
//
//   Author: Christian Fecteau -- christian.fecteau@espacecourbe.com
//   Creation:  2005/12/06 17:05:02
//
// copyright - end

// Firefox 3 a un getElementsByClassName natif mais on l'écrase
document.getElementsByClassName = function(className){
	var children = null;
	if (document.body.getElementsByTagName('*').length == 0 && !!document.all){ // alert('IE 5 and 5.5');
		children = document.body.all;
	}else{ // alert('IE 6/7 and other browsers');
		children = document.body.getElementsByTagName('*');
	}
	var elements = [], child;
	for (var i = 0, length = children.length; i < length; i++){
		child = children[i];
		if ((new RegExp(className)).test(child.className)) {
			elements[elements.length] = child;
		}
	}

	return elements;
}

var old_onload = null;
if (typeof window.onload == "function"){// récupération d'un éventuel window.onload précédent dans le code
	old_onload = window.onload;
}
window.onload = function(){
	if (old_onload){// exécution d'un éventuel window.onload précédent dans le code
		old_onload();
		old_onload = null;
	}
	if (/safari/i.test(navigator.userAgent) && document.title.length > 60){// print preview bug in Safari if title is longer than 233 characters
		document.title = document.title.replace(/^(.{60}).*$/,'$1');
	}
	if (!document.getElementById || !document.getElementsByTagName) return; // this is an old browser, abort!
	if (document.getElementById('navigation')){// hilite du menu onmouseover
		menuHilite(document.getElementById('navigation'), 'td');
	}
	if (document.getElementById('tous') && window.ActiveXObject && !document.createComment){// fix for IE5PC: courses table cropped on the right side
		document.getElementById('tous').style.width = 'auto';
	}
	if (document.getElementById('for-dom-ready')) initMenusAccordeons();
}
var menusAccordeons;
function initMenusAccordeons(){
	if (typeof menusAccordeons == 'undefined'){
		menusAccordeons = new MenusAccordeons('menusAccordeons','menu-accordeon','menu-accordeon-ouvert','menu-accordeon-ferme', 'menu-accordeon-actif');
		menusAccordeons.init();
	}
}
function MenusAccordeons(instanceName, classNameNoJs, classNameJsOpened, classNameJsClosed, classNameActive){
	window.MenusAccordeons_instanceName = instanceName;
	this.classNameNoJs = classNameNoJs;
	this.classNameJsOpened = classNameJsOpened;
	this.classNameJsClosed = classNameJsClosed;
	this.classNameActive = classNameActive;
	this.open = (typeof menusAccordeonsOpen == 'object' ? menusAccordeonsOpen : false);
	this.map = (typeof menusAccordeonsMap == 'object' ? menusAccordeonsMap : false);
	this.find = (!this.open && !this.map);
}
MenusAccordeons.prototype = {
	init : function(){
		var menusHandlers = document.getElementsByClassName(this.classNameNoJs);
		// required: a hash with 2 keys, "level1" and "level2"
		var currentPage = this.open || this.getFromMap(this.map) || this.getFromLastDirectories(this.find, menusHandlers) || false;
		if (!currentPage || (typeof currentPage.level1 == 'undefined' && typeof currentPage.level2 == 'undefined')) return;
		for (var i = 0, length = menusHandlers.length; i < length; i++){
			var a = menusHandlers[i];
			var ul = a.parentNode.getElementsByTagName('ul')[0];
			if (!ul) continue;
			ul.style.display = 'none';
			a.className = this.classNameJsClosed;
			a.removeAttribute('href');
			a.onclick = this.click;
			if (a.id == currentPage.level1) this.setCurrent(currentPage);
		}
	},
	getFromLastDirectories : function(find, menusHandlers){
		if (!find || !menusHandlers || !menusHandlers.length) return false;
		var lastDir = this.getLastDirectory(location.href);
		for (var i = 0, length1 = menusHandlers.length; i < length1; i++){
			var a = menusHandlers[i];
			var ul = a.parentNode.getElementsByTagName('ul')[0];
			if (!ul) continue;
			var as = ul.getElementsByTagName('a');
			for (var j = 0, length2 = as.length; j < length2; j++){
				if (this.getLastDirectory(as[j].href) == lastDir){
					return {
						level1 : a.id,
						level2 : lastDir
					};
				}
			}
		}
		return {
			level1 : false,
			level2 : false
		};
	},
	getFromMap : function(map){
		return (map ? this.isMenuPage(this.getLastDirectory(location.href), map) : false);
	},
	setCurrent : function(currentPage){
		var level1 = document.getElementById(currentPage.level1);
		level1.onclick();
		var ul = level1.parentNode.getElementsByTagName('ul')[0];
		var as = ul.getElementsByTagName('a');
		for (var i=0,length=as.length; i<length; i++){
			if (currentPage.level2 == this.getLastDirectory(as[i].href)){
				as[i].className = this.classNameActive;
			}
		}
	},
	click : function(e){
		var instance = eval(window.MenusAccordeons_instanceName);
		var ul = this.parentNode.getElementsByTagName('ul')[0];
		if (!ul) return;
		if (ul.style.display == 'none'){
			ul.style.display = 'block';
			this.className = instance.classNameJsOpened;
		}else{
			ul.style.display = 'none';
			this.className = instance.classNameJsClosed;
		}
		if (this.blur) this.blur();
		return false;
	},
	getLastDirectory : function(url){ // from any string
		var lastDirectory = url.match(new RegExp("^.*/(.+)/.*$"));
		if (typeof lastDirectory[1] != 'string') return false;
		return lastDirectory[1];
	},
	isMenuPage : function(lastDirectory, map){
		if (!lastDirectory || !map) return false;
		for (var level1 in map){
			for (var level2 = 0, length = map[level1].length; level2 < length; level2++){
				if (map[level1][level2] == lastDirectory){
					return {
						level1 : level1,
						level2 : lastDirectory
					};
				}
			}
		}
		return {
			level1: false,
			level2: false
		};
	}
}
function menuHilite(obj, tag){
	for (var i = 0, linkParent; linkParent = obj.getElementsByTagName(tag)[i]; i++){
		linkParent.style.cursor = (document.all ? 'hand' : 'pointer');
		linkParent.onmouseover = function(){
			var a = this.getElementsByTagName("A")[0];
			this.style.backgroundColor = '#336699';
			a.style.color = 'white';
			window.status = a;
		}
		linkParent.onmouseout = function(){
			var a = this.getElementsByTagName("A")[0];
			this.style.backgroundColor = '';
			a.style.color = '';
			window.status = '';
		}
		linkParent.onclick = function(){
			location = this.getElementsByTagName("A")[0].href;
			return false;
		}
	}
}
function newImage(arg){
	if (document.images) {
		rslt = new Image();
		rslt.src = arg;
		return rslt;
	}
}
function changeImages(){
	if (document.images ) {
		for (var i=0; i<changeImages.arguments.length; i+=2) {
			document[changeImages.arguments[i]].src = changeImages.arguments[i+1];
		}
	}
}
function rechercher(quelchamp){
	var f=document.form1;
	f.quelchamp.value=quelchamp;
	f.submit();
}
// look CVS previous revisions for commented use of "imagesAleatoires"
function imagesAleatoires(obj, mode, pos, attr, sel){
	var out = '';
	if (typeof obj.alea == 'undefined'){
		obj.alea = Math.floor(Math.random()*obj.length);
	}
	out += (mode == 'img' ? '<img src="' : "\n\n<style");
	if (attr && attr.length && mode=='style' && sel){
		for (var i=0; i<attr.length; i++){
			out += (' ' + attr[i] + ' ');
		}
		out += (">\n" + sel + ' {background-image:url("');
	}
	out += (pos ? obj[obj.alea][pos] : obj[obj.alea]);
	out += (mode == 'img' ? '"' : "\");}\n");
	if (attr && attr.length && mode=='img'){
		for (var i=0; i<attr.length; i++){
			out += (' ' + attr[i] + ' ');
		}
	}
	out += (mode == 'img' ? ' />' : "</style>\n\n");
	document.writeln(out);
}
