/*******************************Validation de la recherche par numéro de plan************/
//faire le focus sur les boites de textes désirées
function focusBoite(boite)
{
	if(boite)
	boite.focus();
}
function valide(boiteNumPlan)
{
	 if (boiteNumPlan.value=="" || isNaN(boiteNumPlan.value))
	 {
	 	alert ("Veuillez entrer un numéro de plan sans les lettres\nPlease enter the number of plan without the letters");
		return false;
	 }
	 else
	 return true;
}

/**********************************************************************************/



/*NVI NVI NVI NVI NVI NVI NVI NVI NVI NVI NVI NVI NVI NVI NVI NVI NVI NVI NVI NVI NVI NVI NVI NVI NVI NVI NVI NVI NVI NVI NVI NVI*/

/*---------------------------------------------------------------------------------------------------
$ // 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 els = containerElement.getElementsByTagName("*");
	for(var i=0; i< els.length; i++){	
		var rollOverImg = els[i];
		if(!rollOverImg.getAttribute("src"))continue;
		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);
	}
}

/*---------------------------------------------------------------------------------------------------
toggleVisibility // Initialise les forms vdaemon (ajoute 
---------------------------------------------------------------------------------------------------*/
function toggleVisibility(containerElement,startAsHidden,classContainer,classHideBtn,classShowBtn,classToggleBtn,classContent,classContentSwitch){
	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(classContentSwitch != null){
			var contentSwitch = getElementsByClassName(container, "*", classContentSwitch)[0];
		}else{
			var contentSwitch = false;
		}
		
		if(startAsHidden){
			if(showBtn)showBtn.style.display = 'block';
			if(hideBtn)hideBtn.style.display = 'none';
			if(content)content.style.display = 'none';
			if(contentSwitch)contentSwitch.style.display = 'block';
		}else{
			if(showBtn)showBtn.style.display = 'none';
			if(hideBtn)hideBtn.style.display = 'block';
			if(content)content.style.display = 'block';
			if(contentSwitch)contentSwitch.style.display = 'none';
		}
		
		//showBtn
		if(showBtn){
			showBtn.hideBtn = hideBtn;
			showBtn.content = content;
			showBtn.contentSwitch = contentSwitch;
			showBtn.onclick = function(){
				this.style.display = 'none';
				this.hideBtn.style.display = 'block';
				this.content.style.display = 'block';
				if(this.contentSwitch)this.contentSwitch.style.display = 'none';
			}
		}
		
		//hideBtn
		if(hideBtn){
			hideBtn.showBtn = showBtn;
			hideBtn.content = content;
			hideBtn.contentSwitch = contentSwitch;
			hideBtn.onclick = function(){
				this.style.display = 'none';
				this.showBtn.style.display = 'block';
				this.content.style.display = 'none';
				if(this.contentSwitch)this.contentSwitch.style.display = 'block';
			}
		}
		
		//toggleBtn
		if(toggleBtn){
			toggleBtn.content = content;
			toggleBtn.contentSwitch = contentSwitch;
			toggleBtn.onclick = function(){
				if(this.content.style.display == 'none'){
					this.content.style.display = 'block';
					if(this.contentSwitch)this.contentSwitch.style.display = 'none';
				}else if(this.content.style.display == 'block'){
					this.content.style.display = 'none';
					if(this.contentSwitch)this.contentSwitch.style.display = 'block';
				}
				
			}
		}
	}
}


/*---------------------------------------------------------------------------------------------------
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);
					}
				
			}
	 }
}

/*---------------------------------------------------------------------------------------------------
initNav // 
Note: Appeler cette fonction juste en dessous du div #nav pour que le menu se load plus vite
---------------------------------------------------------------------------------------------------*/
function initNav(){
	//log("initNav();",1);
	if(!$('nav'))return;
	var nav = $('nav');
	var mainUl = nav.getElementsByTagName("ul")[0]; 
	var lis = mainUl.getElementsByTagName("li"); 
	for(var i=0; i< lis.length; i++){
		var li = lis[i];
		var ul = li.getElementsByTagName("ul")[0];
		if(!ul)continue;
		li.ul = ul;
		li.onmouseover = function(){
			this.ul.style.display = 'block';
		}
		li.onmouseout = function(){
			this.ul.style.display = 'none';
		}
	}
}

/*---------------------------------------------------------------------------------------------------
equalHeight // 
---------------------------------------------------------------------------------------------------*/
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){
					el.style.height = maxHeight + "px";
				}
			}
		}
	}
}

//*****************************************************************************
//*****************************************************************************
//*****************************************************************************
//*****************************************************************************

function initToggleVisibility(){
	document.write("\n<style>\n<!--\n");
	document.write(".toggleHideContent{display:none;}\n");
	document.write(".contentHide{display:none;}\n");
	document.write(".jsOnlyContent{display:block !important;}\n");
	document.write("-->\n</style>\n");
	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");
	toggleVisibility(el,false,"toggleContent","hideBtn","showBtn","toggleBtn","contentShow","contentHide");
}

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");
}


initToggleVisibility();
addLoadEvent(prepareRollOverImg);
addLoadEvent(prepareStripeTables);
addLoadEvent(prepareHighlightRows);
addLoadEvent(equalHeight);

