// AddLoadHandler
// Ajoute une fonction au chargement de la page.
function addLoadHandler(handler) {

	if(window.addEventListener) {
		window.addEventListener("load",handler,false);
	} else if(window.attachEvent) {
		window.attachEvent("onload",handler);
	} else if(window.onload) {
		var oldHandler = window.onload;
		window.onload = function piggyback() {
			oldHandler();
			handler();
		};
	} else {
		window.onload = handler;
	}
}

// GetChildsByTagName
// Retourne un tableau des enfants direct de  DOMobj qui sont des <tag>
function getChildsByTagName(DOMobj, tag) {

	var liste=DOMobj.getElementsByTagName(tag);
	var newListe=new Array();

	if(liste!=null) {
		for(var i=0; i<liste.length; i++) {
			var NoeudParent=liste[i].parentNode;
			if(NoeudParent==DOMobj) {
				newListe.push(liste[i]);
			}
		}
	liste=newListe;
	}
	return liste;
}

// GetAncestorByTagName
// Retourne le premier ancêtre de element de type tag
function getAncestorByTagName(element, tag) {
	var parent = element;
	if (tag) {
		while (parent && parent.nodeName != tag) {
			parent = parent.parentNode;
		}
	}
	return parent;
}

// Rw_link
// Fonction de réécriture des liens.
function rw_link(selection, lien) {
	// Récupération de l'id à insérer, de l'adresse à modifier
	var id=document.getElementById(selection).options[document.getElementById(selection).selectedIndex].value;
	var adresse=document.getElementById(lien).href;
	// et des indices des dernier et avant-dernier ";" de l'adresse.
	var indice_fin=adresse.lastIndexOf(";");
	var temp=adresse.substring(0, indice_fin);
	var indice_deb=temp.lastIndexOf(";");

	// Réécriture de l'adresse du lien.
	adresse = adresse.substring(0, indice_deb+1)+id+adresse.substring(indice_fin);
	document.getElementById(lien).href=adresse;
}



// HaveaBreak
// Effectue une pause durant p_time milisecondes.
function haveaBreak(p_time) {
	var date = new Date();
	var curDate = null;

	do {
		curDate = new Date();
	} while(curDate-date < p_time);
}

// InArray
// Equivalent de la fonction PHP, parce qu'elle est bien.
function in_array(p_value, p_array) {
	for(var i=0; i<p_array.length; i++) {
		if(p_array[i]==p_value) return true;
	}

	return false;
}

// Affiche
// Affiche/Masque un élément
function showHide(p_obj) {
	p_obj.style.display=="block" ? p_obj.style.display="none" : p_obj.style.display="block";
}

// Affiche
// Affiche/Masque un élément
function getElementsByClass(searchClass, node, tag) {
	var classElements = new Array();
	if ( node == null )
		node = document;
	if ( tag == null )
		tag = '*';
	var els = node.getElementsByTagName(tag);
	var elsLen = els.length;
	var pattern = new RegExp("(^|\\s)"+searchClass+"(\\s|$)");
	for (i = 0, j = 0; i < elsLen; i++) {
		if ( pattern.test(els[i].className) ) {
			classElements[j] = els[i];
			j++;
		}
	}
	return classElements;
}

// SwitchImages
// Masque les images du site et crée un noeud texte contenant leur alt pour les remplacer.
function switchImages() {
	if(document.getElementById) {
		var images=document.getElementById('contenu').getElementsByTagName('img');
		for(var i=0; i<images.length; i++) {

			var pic=images[i];
			var alt_txt=pic.alt;
			var display;

			if(pic.style && pic.style.display) {
				display=pic.style.display;
			} else {
				display="block";
			}

			if(display!="none") {
				// Si l'image est visible
				pic.style.display="none";
				var spanAlt=document.createElement('span');
					spanAlt.setAttribute('class', 'alt');
					spanAlt.setAttribute('className', 'alt');
				var spanAlt_txt=document.createTextNode(alt_txt);
					spanAlt.appendChild(spanAlt_txt);

				pic.parentNode.insertBefore(spanAlt, pic);
			} else {
				var spanAlt=getElementsByClass('alt', pic.parentNode)[0];
				pic.parentNode.removeChild(spanAlt);
				pic.style.display="inline";
			}
		}
	}
}



// DuplicateToConcession
// Recopie les informations de la société dans les champs destinés à la concession.
function duplicateToConcession() {
	if(!document.getElementById) return '';

	var societe=document.getElementById('id_societe');

	if(societe) {
		var CurrentForm=document.getElementById('id_societe').form;

		if(CurrentForm) {
			var liste_champs_societe=new Array(
				'raison_sociale',
				'adresse_1',
				'adresse_2',
				'adresse_3',
				'code_postal',
				'ville'
				);
			var liste_select_societe=new Array(
				'id_pays_societe'
				);

			var liste_champs_concession=new Array(
				'nom_concession',
				'adresse_concession_1',
				'adresse_concession_2',
				'adresse_concession_3',
				'code_postal_concession',
				'ville_concession'
				);
			var liste_select_concession=new Array(
				'id_pays'
				);

			for(var i=0; i<liste_champs_societe.length; i++) {
				if(CurrentForm.elements[liste_champs_concession[i]]) {
					CurrentForm.elements[liste_champs_concession[i]].value=CurrentForm.elements[liste_champs_societe[i]].value;
				}
			}
			for(var i=0; i<liste_select_societe.length; i++) {
				if(CurrentForm.elements[liste_select_concession[i]]) {
					CurrentForm.elements[liste_select_concession[i]].value=CurrentForm.elements[liste_select_societe[i]].value;
				}
			}
		}
	}
}

// AddCodePostal
// Ajoute une ligne de code postal au formulaire de concession
function addCodePostal(link) {
	var pLink=link.parentNode;
	var Field=pLink.parentNode;
	var pCP=pLink.previousSibling;
	while(pCP.nodeName!='P') {
		pCP=pCP.previousSibling;
	}

	var p=pCP.cloneNode(true);
	Field.insertBefore(p, pLink);
}

// AddCondition
// Ajoute une ligne de condition au formulaire d'export.
function addCondition(link) {
	var pLink=link.parentNode;
	var Field=pLink.parentNode;
	var hr=pLink.previousSibling;
	while(hr.nodeName!='HR') {
		hr=hr.previousSibling;
	}
	var pModele=hr.previousSibling;
	while(pModele.nodeName!='P') {
		pModele=pModele.previousSibling;
	}

	var p=pModele.cloneNode(true);
	Field.insertBefore(p, hr);
}

// Confirmation_action
// Affiche une boite de dialogue demandant la confirmation de l'action demandée.
function confirmation_action() {
	if(confirm(traduction['etes_vous_sur'])) {
		return true;
	}
	return false;
}

// AddCalendar
// Ajoute un datepicker au prochain champs input de type text si la valeur de la sélection comporte le mot 'date'
function addCalendar(p_select) {
	var valeur=p_select.value;
	var pattern=new RegExp('date');
	var paragraphe=p_select.parentNode;
	var input=paragraphe.getElementsByTagName('input')[0];

	if(input) {
		var calendarButtons=paragraphe.getElementsByTagName('button');
		if(calendarButtons.length>0) {
			var calendarButton=calendarButtons[0];
			paragraphe.removeChild(calendarButton);
		}

		if(pattern.test(valeur)) {
			input.setAttribute('id', 'dp-normal-'+(id_calendar++));
			input.setAttribute('class', 'fmtext w8em format-d-m-y highlight-days-67');
			input.setAttribute('className', 'fmtext w8em format-d-m-y highlight-days-67');
			datePickerController.create();
		} else {
			input.removeAttribute('id');
			input.removeAttribute('class');
			input.removeAttribute('className');
		}
	}
}

// UpdateFormularAction
// Change l'action ciblée par un formulaire.
function updateFormularAction(p_action, p_form) {

	var adresse=p_form.action;
	// Recherche de la position du début de l'action.
	var indice_fin=adresse.lastIndexOf(";");
	var temp=adresse.substring(0, indice_fin);
	var indice_deb=temp.lastIndexOf(";");

	// Réécriture de l'action.
	adresse = adresse.substring(0, indice_deb+1)+p_action+adresse.substring(indice_fin);
	p_form.action=adresse;
}