/*---------------------------------------------------------------------------------------------------
$ // Raccourci pour avoir document.getElementById
---------------------------------------------------------------------------------------------------*/
function $(id){
	return document.getElementById(id);
}


/*---------------------------------------------------------------------------------------------------
getElementsByClassName // Retourne tout les élément d'une certaine classe
ex1: getElementsByClassName(document, "a", "className");
ex2: getElementsByClassName(document, "*", "className2");
---------------------------------------------------------------------------------------------------*/
function getElementsByClassName(el, strTagName, strClassName){
	var arrElements = (strTagName == "*" && el.all)? el.all : el.getElementsByTagName(strTagName);
	var arrReturnElements = new Array();
	strClassName = strClassName.replace(/\-/g, "\\-");
	var oRegExp = new RegExp("(^|\\s)" + strClassName + "(\\s|$)");
	var oElement;
	for(var i=0; i<arrElements.length; i++){
		oElement = arrElements[i];		
		if(oRegExp.test(oElement.className)){
			arrReturnElements.push(oElement);
		}	
	}
	return (arrReturnElements)
}


/*---------------------------------------------------------------------------------------------------
getElementsByAttribute // Permet d'avoir tout les élément avec un certain attribut, et si vous voulez avec une valeur pour cette attribut
ex1: getElementsByAttribute(document.body, "*", "id");
ex2: getElementsByAttribute(document.getElementById("the-form"), "input", "type", "text");
---------------------------------------------------------------------------------------------------*/
function getElementsByAttribute(el, strTagName, strAttributeName, strAttributeValue){
	var arrElements = (strTagName == "*" && el.all)? el.all : el.getElementsByTagName(strTagName);
	var arrReturnElements = new Array();
	var oAttributeValue = (typeof strAttributeValue != "undefined")? new RegExp("(^|\\s)" + strAttributeValue + "(\\s|$)") : null;
	var oCurrent;
	var oAttribute;
	for(var i=0; i<arrElements.length; i++){
		oCurrent = arrElements[i];
		oAttribute = oCurrent.getAttribute && oCurrent.getAttribute(strAttributeName);
		if(typeof oAttribute == "string" && oAttribute.length > 0){
			if(typeof strAttributeValue == "undefined" || (oAttributeValue && oAttributeValue.test(oAttribute))){
				arrReturnElements.push(oCurrent);
			}
		}
	}
	return arrReturnElements;
}


/*---------------------------------------------------------------------------------------------------
getStyle // Permet d'avoir le style css rendu d'un élément
ex1: getStyle(document.getElementById("container"), "font-size");
---------------------------------------------------------------------------------------------------*/
function getStyle(el, strCssRule){
	var strValue = "";
	if(document.defaultView && document.defaultView.getComputedStyle){
		strValue = document.defaultView.getComputedStyle(el, "").getPropertyValue(strCssRule);
	}
	else if(el.currentStyle){
		strCssRule = strCssRule.replace(/\-(\w)/g, function (strMatch, p1){
			return p1.toUpperCase();
		});
		strValue = el.currentStyle[strCssRule];
	}
	return strValue;
}


/*---------------------------------------------------------------------------------------------------
addClass // Ajoute une classe à un élément
---------------------------------------------------------------------------------------------------*/
function addClass(el, strClassName){
	var strCurrentClass = el.className;
	if(!new RegExp(strClassName, "i").test(strCurrentClass)){
		el.className = strCurrentClass + ((strCurrentClass.length > 0)? " " : "") + strClassName;
	}
}


/*---------------------------------------------------------------------------------------------------
removeClass // Supprime une classe d'un élément
---------------------------------------------------------------------------------------------------*/
function removeClass(el, strClassName){
	var oClassToRemove = new RegExp((strClassName + "\s?"), "i");
	el.className = el.className.replace(oClassToRemove, "").replace(/^\s?|\s?$/g, "");
}


/*---------------------------------------------------------------------------------------------------
changeClass // Change une classe en une autre classe
---------------------------------------------------------------------------------------------------*/
function changeClass(el,startClass,endClass) {
	var classNameString = el.className;
	var newClassName = classNameString.replace(startClass,endClass);
	el.className = newClassName;
}


/*---------------------------------------------------------------------------------------------------
addLoadEvent // Ajoute une fonction à la liste de fonction à executé lors de l'événement onload
---------------------------------------------------------------------------------------------------*/
function addLoadEvent(func) {
  var oldonload = window.onload;
  if (typeof window.onload != 'function') {
    window.onload = func;
  } else {
    window.onload = function() {
      oldonload();
      func();
    }
  }
}

/*---------------------------------------------------------------------------------------------------
addUnloadEvent // Ajoute une fonction à la liste de fonction à executé lors de l'événement onUnload
---------------------------------------------------------------------------------------------------*/
function addUnloadEvent(func) {
  var oldonload = window.onunload;
  if (typeof window.onunload != 'function') {
    window.onunload = func;
  } else {
    window.onunload = function() {
      oldonload();
      func();
    }
  }
}


/*---------------------------------------------------------------------------------------------------
insertAfter // Ajoute un élément après un autre élément
---------------------------------------------------------------------------------------------------*/
function insertAfter(newElement,targetElement) {
  var parent = targetElement.parentNode;
  if (parent.lastChild == targetElement) {
    parent.appendChild(newElement);
  } else {
    parent.insertBefore(newElement,targetElement.nextSibling);
  }
}


/*---------------------------------------------------------------------------------------------------
getNextElement // Retourne l'élément suivant d'un élément
---------------------------------------------------------------------------------------------------*/
function getNextElement(node) {
  if(node.nodeType == 1) {
	return node;
  }
  if (node.nextSibling) {
    return getNextElement(node.nextSibling);
  }
  return null;
}


/*---------------------------------------------------------------------------------------------------
initRollOverImg // Créer des rollover selon le nom d'une classe et l'extension des images rollover, preload les images également
ex1: initRollOverImg(el,"rollover","rollover_on", "_on");
---------------------------------------------------------------------------------------------------*/
function initRollOverImg(containerElement,startClassName,endClassName,rollOverSuffix, activateName){
	if (!document.getElementsByTagName) return false;
	if (!document.getElementById) return false;
	if (!containerElement.getElementsByTagName) return false;
	var imgs = containerElement.getElementsByTagName("img");
	for(var i=0; i< imgs.length; i++){
		var rollOverImg = imgs[i];
		if(rollOverImg.className.indexOf(startClassName) == -1)continue;	
		var startSrc    = rollOverImg.getAttribute("src");
		var startSrcLen = startSrc.length;
		var filePath    = startSrc.substring(0,startSrcLen-4);
		var fileExt     = startSrc.substring(startSrcLen-4);
		var rollSrc     = filePath + rollOverSuffix + fileExt;
		rollOverImg.rollSrc = rollSrc;
		rollOverImg.startSrc = startSrc;
		
		//Activate state
		if(rollOverImg.className.indexOf(activateName) != -1){
			rollOverImg.setAttribute("src", rollOverImg.rollSrc);
			changeClass(rollOverImg,startClassName,endClassName);
			continue; //arrête la loop
		}
		//MouseOver
		rollOverImg.onmouseover = function(){
			this.setAttribute("src", this.rollSrc);
			changeClass(this,startClassName,endClassName);
		}
		//MouseOut
		rollOverImg.onmouseout = function(){
			this.setAttribute("src", this.startSrc);
			changeClass(this,endClassName,startClassName);
		}
		//Preloading
		if (!document.createElement) return false;
		var refPreloadImg = document.createElement("img");
		refPreloadImg.setAttribute("src", rollSrc);
	}
}


/*---------------------------------------------------------------------------------------------------
getHTTPObject // retourne un objet pour faire une connexion XMLHttpRequest
---------------------------------------------------------------------------------------------------*/
function getHTTPObject(){
	if(window.ActiveXObject){
		var objXMLHttp = new ActiveXObject("Microsoft.XMLHTTP");
	}else if (window.XMLHttpRequest){
		var objXMLHttp = new XMLHttpRequest();
	}else{
		var objXMLHttp = false;
	}
	return objXMLHttp;
}

/*---------------------------------------------------------------------------------------------------
vdaemonFormFocus // Ajoute des fonctions de focus aux forms vdaemon
---------------------------------------------------------------------------------------------------*/
function vdaemonFormFocus(containerElement,classForm,classFocus,classInputError,classFocusError){
	if (!document.getElementById) return false;
	if (!document.getElementsByTagName) return false;
	var forms = getElementsByClassName(containerElement, "form", classForm);
	for(var i=0; i< forms.length; i++){
		var form = forms[i];

		//Submit Button
		var submitBtn = form.getElementsByTagName("input");
		for(var i=0; i<submitBtn.length; i++){
			if(submitBtn[i].getAttribute("type")=="submit"){
				submitBtn = submitBtn[i];
				break;
			}
		}
		
		var formElements = new Array();
		//Inputs
		var inputs = form.getElementsByTagName("input");
		for(var i=0; i<inputs.length; i++)formElements.push(inputs[i]);
		//Textarea
		var textareas = form.getElementsByTagName("textarea");
		for(var i=0; i<textareas.length; i++)formElements.push(textareas[i]);
		//Select
		var selects = form.getElementsByTagName("select");
		for(var i=0; i<selects.length; i++)formElements.push(selects[i]);
		
		for(var i=0; i<formElements.length; i++){
			var formElement = formElements[i];
			
			//OnFocus
			formElement.onfocus = function(){
				addClass(this, classFocus);
				changeClass(this, classInputError, classFocusError);
			}
			
			//OnBlur
			formElement.onblur = function(){
				changeClass(this, classFocusError, classInputError);
				removeClass(this, classFocus);
			}			
		}
	}
}

/*---------------------------------------------------------------------------------------------------
toggleVisibility // Initialise les forms vdaemon (ajoute 
---------------------------------------------------------------------------------------------------*/
function toggleVisibility(containerElement,startAsHidden,classContainer,classHideBtn,classShowBtn,classToggleBtn,classContent){
	if (!document.getElementById) return false;
	var containers = getElementsByClassName(containerElement, "*", classContainer);
	if(containers.length <= 0)return;
	for(var i=0; i<containers.length; i++){
		var container = containers[i];
		var hideBtn   = getElementsByClassName(container, "*", classHideBtn)[0];
		var showBtn   = getElementsByClassName(container, "*", classShowBtn)[0];
		var toggleBtn = getElementsByClassName(container, "*", classToggleBtn)[0];
		var content   = getElementsByClassName(container, "*", classContent)[0];
		
		if(startAsHidden){
			if(showBtn)showBtn.style.display = 'block';
			if(hideBtn)hideBtn.style.display = 'none';
			if(content)content.style.display = 'none';
		}else{
			if(showBtn)showBtn.style.display = 'none';
			if(hideBtn)hideBtn.style.display = 'block';
			if(content)content.style.display = 'block';
		}
		
		//showBtn
		if(showBtn){
			showBtn.hideBtn = hideBtn;
			showBtn.content = content;
			showBtn.onclick = function(){
				this.style.display = 'none';
				this.hideBtn.style.display = 'block';
				this.content.style.display = 'block';
			}
		}
		
		//hideBtn
		if(hideBtn){
			hideBtn.showBtn = showBtn;
			hideBtn.content = content;
			hideBtn.onclick = function(){
				this.style.display = 'none';
				this.showBtn.style.display = 'block';
				this.content.style.display = 'none';
			}
		}
		
		//toggleBtn
		if(toggleBtn){
			toggleBtn.content = content;
			toggleBtn.onclick = function(){
				if(this.content.style.display == 'none')this.content.style.display = 'block';
				else if(this.content.style.display == 'block')this.content.style.display = 'none';
				
			}
		}
	}
}

/*---------------------------------------------------------------------------------------------------
stripeTables // Ajoute des stripes à une table
---------------------------------------------------------------------------------------------------*/
function stripeTables(containerElement,tableClass,trOddClass,trEvenClass){
  var tables = getElementsByClassName(containerElement, "table", tableClass);
  for (var i=0; i<tables.length; i++) {
    var odd = false;
    var rows = tables[i].getElementsByTagName("tr");
    for (var j=0; j<rows.length; j++) {
      if (odd == true) {
        addClass(rows[j],trOddClass);
        odd = false;
      } else {
			addClass(rows[j],trEvenClass);
        odd = true;
      }
    }
  }
}

/*---------------------------------------------------------------------------------------------------
highlightRows // Ajoute une class au tr lors du rollover sur une table 
---------------------------------------------------------------------------------------------------*/
function highlightRows(containerElement,tableClass,highlightClass) {
  var tables = getElementsByClassName(containerElement, "table", tableClass);
	 for (var i=0; i<tables.length; i++) {
	 		var table = tables[i];
				var rows = table.getElementsByTagName("tr");
				for (var r=0; r<rows.length; r++) {
					rows[r].onmouseover = function() {
						addClass(this,highlightClass);
					}
					rows[r].onmouseout = function() {
						removeClass(this,highlightClass);
					}
				
			}
	 }
}


/*---------------------------------------------------------------------------------------------------
sfHover 
son of suckerfish menu script from:
http://www.htmldog.com/articles/suckerfish/dropdowns/
---------------------------------------------------------------------------------------------------*/
function sfHover(){
	if(!$("nav"))return;
	var sfEls = $("nav").getElementsByTagName("li");
	for (var i=0; i<sfEls.length; i++) {
		sfEls[i].onmouseover=function() {
			addClass(this, 'sfhover');
			this.style.zIndex=200; //this line added to force flyout to be above relatively positioned stuff in IE
		}
		sfEls[i].onmouseout=function() {
			removeClass(this, 'sfhover');
		}
	}
}

//*****************************************************************************
//*****************************************************************************
//*****************************************************************************
//*****************************************************************************

function equalHeight(){containerElement=$('container5');if(!containerElement)return false;var els=containerElement.getElementsByTagName("*");var tempArray=new Array();for(var i=0;i<els.length;i++){var el=els[i];if(el.className.indexOf("equalHeight_@")!=-1){var startSubString=el.className.indexOf("equalHeight_@");var string=el.className.substring(startSubString);var param1=string.split('@')[1];var param1=param1.split(' ')[0];tempArray.push(param1);if(!tempArray[param1])tempArray[param1]=new Array();tempArray[param1].push(el);}}
for(var x in tempArray){if(typeof(tempArray[x])=='object'){var maxHeight=0;for(var y in tempArray[x]){var el=tempArray[x][y];if(el.offsetHeight>maxHeight)maxHeight=el.offsetHeight;}
for(var y in tempArray[x]){var el=tempArray[x][y];el.style.minHeight=maxHeight+"px";if(navigator.userAgent.indexOf('MSIE 6.0')!=-1||navigator.userAgent.indexOf('MSIE 7.0')!=-1){el.style.height=maxHeight+"px";}}}}}


function initToggleVisibility(){
	document.write("<style><!--.toggleHideContent{display:none;}--></style>"); //doit le setter invisible tout de suite
	addLoadEvent(prepareToggleVisibility);
}

function prepareToggleVisibility(){
	var el = document.getElementById("container5");
	toggleVisibility(el,true,"toggleHide","hideBtn","showBtn","toggleBtn","toggleHideContent");
	toggleVisibility(el,false,"toggleShow","hideBtn","showBtn","toggleBtn","toggleShowContent");
}

function prepareVdaemonForms(){
	var el = document.getElementById("container5");
	vdaemonFormFocus(el,"vdaemonForm","vdFieldFocus","vdFieldError","vdFieldErrorFocus");
}

function prepareRollOverImg(){
	var el = document.getElementById("container5");
	initRollOverImg(el,"rollover","rollover_on", "_on", "activate");
}

function prepareStripeTables(){
	var el = document.getElementById("container5");
	stripeTables(el,"stripes","odd","even");
}

function prepareHighlightRows(){
	var el = document.getElementById("container5");
	highlightRows(el,"highlightRows","high");
}

function prepareBdTable(){
	bdTable('getTable');
}


function watermark(myInput,word){
	if(myInput.value==word){
		myInput.value='';
	}
myInput.word=word;
myInput.onblur=function(){	
	if(this.value==''){
		this.value=this.word;}
	}
}


/*  function showTrail - miignature dans la page grille */
/*
Simple Image Trail script- By JavaScriptKit.com
Visit http://www.javascriptkit.com for this script and more
This notice must stay intact
*/

var offsetfrommouse=[30,15]; //image x,y offsets from cursor position in pixels. Enter 0,0 for no offset
var displayduration=0; //duration in seconds image should remain visible. 0 for always.
var currentimageheight = 322;	// maximum image size.

if (document.getElementById || document.all){
	document.write('<div id="trailimageid">');
	document.write('</div>');
}

function gettrailobj(){
if (document.getElementById)
return document.getElementById("trailimageid").style
else if (document.all)
return document.all.trailimagid.style
}

function gettrailobjnostyle(){
if (document.getElementById)
return document.getElementById("trailimageid")
else if (document.all)
return document.all.trailimagid
}


function truebody(){
return (!window.opera && document.compatMode && document.compatMode!="BackCompat")? document.documentElement : document.body
}

function showtrail(imagename,author,subInfos){

	document.onmousemove=followmouse;
	
	
	
	newHTML = '';
	newHTML = newHTML + '<div class="thumbGrille"><img height="85px" width="128px" border="0" src="' + imagename + '" style="border:5px solid white; z-index:2;"><div class="author">' + author + '</div><div class="subInfos">' + subInfos + '</div></div>';
	
	gettrailobjnostyle().innerHTML = newHTML;
	gettrailobj().display="inline";
}


function hidetrail(){
	gettrailobj().innerHTML = " ";
	gettrailobj().display="none"
	document.onmousemove=""
	gettrailobj().left="-1000px"

}

function followmouse(e)
{

	var xcoord=offsetfrommouse[0]
	var ycoord=offsetfrommouse[1]

	var docwidth=document.all? truebody().scrollLeft+truebody().clientWidth : pageXOffset+window.innerWidth-15
	var docheight=document.all? Math.min(truebody().scrollHeight, truebody().clientHeight) : Math.min(window.innerHeight)

	if(typeof e != "undefined")
	{
		xcoord += e.pageX;
		ycoord += e.pageY;
	}
	else if(typeof window.event != "undefined")
	{
		xcoord += truebody().scrollLeft+event.clientX
		ycoord += truebody().scrollTop + event.clientY;
	}

	var docwidth=document.all? truebody().scrollLeft+truebody().clientWidth : pageXOffset+window.innerWidth-15
	var docheight=document.all? Math.max(truebody().scrollHeight, truebody().clientHeight) : Math.max(document.body.offsetHeight, window.innerHeight)
	if(ycoord < 0)
	{
		ycoord = ycoord*-1;
	}
	gettrailobj().left=xcoord+"px"
	gettrailobj().top=ycoord+"px"
}


/*  fin showtrail */




initToggleVisibility();
addLoadEvent(prepareVdaemonForms);
addLoadEvent(prepareRollOverImg);
addLoadEvent(prepareStripeTables);
addLoadEvent(prepareHighlightRows);
addLoadEvent(sfHover);
addLoadEvent(equalHeight);

