

/*********************************************************************
NOM : OuvrirPopup
DESC : Ouverture d'une popup
ENTREE : 	p_page   : URL de la page
					p_nom    : Nom de la popup
					p_option : options d'affichage
*********************************************************************/
function ouvrirPopup(p_url,p_nom) {
	p_option = 'resizable=yes, location=no, width=400, height=400, menubar=no, status=no, scrollbars=no, menubar=no';
	window.open(p_url,p_nom,p_option);
}

/*********************************************************************
NOM : supprimeFichier
DESC : mise à blanc du champ fichier et on poste le formulaire
ENTREE : 	p_champ   : id du champ photo
*********************************************************************/
function supprimeFichier(p_champ) {
	document.getElementById(p_champ).value='';
	document.forms[0].fuseaction.value='enregistrerediter';
	document.forms[0].submit();
}

/*********************************************************************
NOM : addOptionInSelect(p_field, p_value, p_lib)
DESC : Ajouter une option dans un select
ENTREE : 	p_field : champ
					p_value : valeur
					p_lib 	: libellé
*********************************************************************/
function addOptionInSelect(p_field, p_lib, p_value){
			v_item = new Option(p_value,p_lib,false,true);
			p_field.options[p_field.length] = v_item;
			
}

function addGptOptionInSelect(p_field, p_libGpt,p_lib, p_value){
v_select=document.getElementById(p_field);
v_optGroup = document.createElement('optgroup');
v_optGroup.label = p_libGpt;

v_option=document.createElement("option");
v_option.innerHTML = p_lib;
v_option.value = p_value;

v_select.insertBefore(v_optGroup,v_select.childNodes[0]);
v_optGroup.appendChild(v_option);
}

/*********************************************************************
NOM : delOptionInSelect(p_field, p_value, p_lib)
DESC : Supprimer une option dans un select
ENTREE : 	p_field : champ
					p_value : valeur à supprimer
*********************************************************************/
function delOptionInSelect(p_field, p_value ){
			for(i=0;i<p_field.length;i++){
				if(p_field.options[i].value == p_value) p_field.options[i]=null;	
			}
}

function delOptionInSelectByLib(p_field, p_lib ){
			for(i=0;i<p_field.length;i++){
				if(p_field.options[i].text == p_lib) p_field.options[i]=null;	
			}
}

function delAllOptionsInSelect(p_field){
			while(p_field.length>0){
				p_field.options[0]=null;
			}
}

/*********************************************************************
NOM : getValueFromSelect(p_field)
DESC : 
ENTREE : 	p_field : champ
*********************************************************************/
function getValueFromSelect(p_field){
			for(i=0;i<p_field.length;i++){
				if(p_field.options[i].selected) return p_field.options[i].value;
			}
}
/*********************************************************************
NOM : setValueToSelect(p_field,p_value)
DESC : 
ENTREE : 	p_field : champ
ENTREE : 	p_value : valeur à assigner
*********************************************************************/
function setValueToSelect(p_field,p_value){
			for(i=0;i<p_field.length;i++){
				if(p_field.options[i].value==p_value) p_field.options[i].selected=true; ;
			}
}

/*********************************************************************
NOM : addOptionInSelect(p_field, p_value, p_lib)
DESC : mise à blanc du champ fichier et on poste le formulaire
ENTREE : 	p_field : champ
					p_value : valeur
					p_lib 	: libellé
*********************************************************************/
function addEventOnField(p_field, p_event, p_function ){
	if(p_field.addEventListener) 
		p_field.addEventListener("change", function(){eval(p_function);}, false);
	else
		p_field.attachEvent("onchange", function(){eval(p_function);}, false);
}



/*********************************************************************
NOM : AddSeparator(p_position, p_lib)
DESC : Ajoute un séparateur + texte dans un tableau
ENTREE : 	p_position : champ
					p_lib 	: libellé
*********************************************************************/

function AddSeparator(p_tableau, p_firstfield, p_lib, p_class){

	if(p_tableau=="tableform"){
		v_index = document.getElementById(p_firstfield).parentNode.parentNode.rowIndex;
    var newRow = document.getElementById(p_firstfield).parentNode.parentNode.parentNode.insertRow(v_index);
	}else{
		v_index = document.getElementById(p_firstfield).rowIndex;
    var newRow = document.getElementById(p_firstfield).parentNode.insertRow(v_index);
	}
		newRow.id = p_lib;
		newRow.className = 'visibleline';
    var newCell = newRow.insertCell(0);
    /*var newCell = newRow.insertCell(1);*/
    newCell.colSpan = 2;
    newCell.className = p_class;
    newCell.innerHTML = p_lib;
}

/*********************************************************************
NOM : addFieldToForm(p_form, p_field, p_type, p_lib, p_value)
DESC : Ajouter un champ dans un formulaire
ENTREE : 	p_form : champ
					p_field : champ
					p_type : type de champ
					p_lib : Libellé associé
					p_value : valeur par défaut
*********************************************************************/
function addFieldToForm(p_form, p_field, p_type, p_lib, p_value){

	switch(p_type){
		case "hidden" : //v_field = document.createElement("<input type=hidden name="+p_field+" id="+p_field+" value="+p_value+">");
										v_field = document.createElement("input");
										v_field.type=p_type;
										v_field.name=p_field;
										v_field.id=p_field;
										v_field.value=p_value;
										p_form.appendChild(v_field);
										break;
		case "select" : break;
		case "text"   : v_field = document.createElement("input");
										v_field.type=p_type;
										v_field.name=p_field;
										v_field.id=p_field;
										v_field.value=p_value;
										p_form.appendChild(v_field);
										break;
		case "Textarea" : break;
		case 'ouinon' : break;
	
	}
}

/*********************************************************************
NOM : addParamToUrl(p_url, p_paramname, p_paramvalue)
DESC : retourne une url complétée par un parametre
				si celui ci existe deja, il n y a pas d'ajout 
ENTREE : 	p_url : chaine de caractere
					p_paramname : nom du parametre
					p_paramvalue : valeur du parametre
*********************************************************************/
function addParamToUrl(p_url, p_paramname, p_paramvalue){
	if(p_url.indexOf(p_paramname)!=-1) return p_url;
	else{
		if(p_url.indexOf('#')!=-1) v_newurl = p_url.substr(0, p_url.length-2)+'&'+p_paramname+'='+p_paramvalue;
		else v_newurl = p_url+'&'+p_paramname+'='+p_paramvalue; 
		return v_newurl; 
	}
}

/*********************************************************************
NOM : getBaliseList(p_balise)
DESC : retourne une url complétée par un parametre
				si existe deja => pas d'ajout 
				si fonction js => pas d'ajout
ENTREE : 	p_url : chaine de caractere
					p_paramname : nom du parametre
					p_paramvalue : valeur du parametre
*********************************************************************/
function completeAnchors(p_module){
	for(i=0;i<document.getElementsByTagName('a').length;i++){
		v_lien = document.getElementsByTagName('a')[i]
		if(v_lien.href.indexOf("javascript")==-1)
			v_lien.href = addParamToUrl(v_lien.href, 'p_module', p_module);
	}
}

function f_checkForm(){
	//alert(document.getElementById('jsformcontrol').value);
	document.getElementById('jsformcontrolmes').value = "";
	eval(document.getElementById('jsformcontrol').value);

	if(document.getElementById('jsformcontrolmes').value!=""){
		// affichage des messages
		alert(document.getElementById('jsformcontrolmes').value);
	}else 		document.forms[0].submit();
}
     
function f_checkForm_isEmpty(p_obj,p_lib){
	// faire un trim
	if(document.getElementById(p_obj).value==""){
		v_mess = "Le champ "+p_lib+ " est obligatoire.\n" ;
		document.getElementById('jsformcontrolmes').value += v_mess;
		return 0;
	}else return 1;	
}

function f_checkForm_isPwd(p_obj,p_lib){
	//v_ctl = /^[_a-z0-9-]+(\.[_a-z0-9-]+)*@[a-z0-9-]+([\.][a-z0-9-]+)+$/;

	if(!f_checkForm_isEmpty(p_obj,p_lib)) return 0;
	else return 1;
}

function f_checkForm_isMailAdress(p_obj,p_lib){
	//v_ctl = /^[_a-z0-9-]+(\.[_a-z0-9-]+)*@[a-z0-9-]+([\.][a-z0-9-]+)+$/;

	// vérifier que le champ n est pas vide
	if(!f_checkForm_isEmpty(p_obj,p_lib)) return 0;
	
	// vérifier que l adresse est correcte syntaxiquement
	// enlever les blancs à droite et a gauche
	v_val = document.getElementById(p_obj).value;
	v_long = v_val.length;
	v_pos_arob = v_val.indexOf('@');
	v_pos_dot = v_val.indexOf('.');
	//alert('v_val : ' + v_val + ' / v_long : ' + v_long + ' / v_pos_arob : ' + v_pos_arob + ' / v_pos_dot : ' + v_pos_dot);
	// x@x.xx
	if ( 		 (v_long < 6) 
				|| (v_pos_arob==-1) 			// @ absent 
				|| (v_pos_arob>v_long-5) // @ en fin de chaine - extension (2 car)
				|| (v_pos_arob>v_pos_dot) // @ apres .
				|| (v_pos_dot==-1) 				// . absent
				|| (v_pos_dot>v_long-3)  // . en fin de chaine - extension (2 car)
				|| (v_pos_dot-v_pos_arob<2)  // espacement entre @ et . mini 1 car
				){
		v_mess = "Le champ " + p_lib + " ne contient pas une adresse email valide.\n" ;
		document.getElementById('jsformcontrolmes').value += v_mess;
		return 0;
	}else return 1;  
}

function f_liste_deleteId(){
	// le champ Selection est la case à cocher à côté des items de liste
	// 
	if(confirm("Êtes vous sur de vouloir supprimer ces élements ?")){
		i=0;
		v_qrystr = "?fuseaction=supprimer&id=-1";
		v_qrystrid = "";
		while(document.getElementById('selection_'+i)!=null){
			if(document.getElementById('selection_'+i).checked==true)
				v_qrystrid =v_qrystrid+","+document.getElementById('selection_'+i).value;
			i++;
		}
		if(v_qrystrid=="") ;
		else document.location.href=v_qrystr+v_qrystrid;
	}
}

function f_checkAll(p_val){
	// le champ Selection est la case à cocher à côté des items de liste
	i=0;
	while(document.getElementById('selection_'+i)!=null){
		document.getElementById('selection_'+i).checked=p_val;
		i++;
	}
}

function f_checkCols(cellule){
	// coche/decoche les cases à cocher de la colonne à partir de la ligne N°3 (indice 2)

	// p_field : id des checkbox
	// p_val : valeur à trouver
	// position de la valeur à trouver
	v_checked = cellule.checked;
	v_idx = cellule.parentNode.cellIndex;
	v_tab = cellule.parentNode.parentNode.parentNode.parentNode;
	for(i=2;i<v_tab.rows.length;i++){
		v_tab.rows[i].cells[v_idx].firstChild.checked=v_checked;	
	}
}

function f_checkRows(cellule){
	// coche/decoche les cases à cocher de la colonne à partir de la colonne N°3 (indice 2)

	// p_field : id des checkbox
	// p_val : valeur à trouver
	// position de la valeur à trouver
	v_checked = cellule.checked;
	v_idx = cellule.parentNode.parentNode.rowIndex;
	v_tab = cellule.parentNode.parentNode.parentNode.parentNode;
	for(i=2;i<v_tab.rows[v_idx].cells.length;i++){
		v_tab.rows[v_idx].cells[i].firstChild.checked=v_checked;	
	}
}



function f_onglet_activate(p_num){
	i=1;
	while(document.getElementById('content_'+i)!= null){
		if(i==p_num){
			document.getElementById('onglet_'+i).className='ongletActif';
			document.getElementById('content_'+i).className='contentActif';
		}else{
			document.getElementById('onglet_'+i).className='ongletInactif';
			document.getElementById('content_'+i).className='contentInactif';
		}
		i++;
	}
}

function f_hideCol(p_tab, p_idx){
	v_tab=document.getElementById(p_tab);
	for(i=0;i<v_tab.rows.length;i++){
		v_tab.rows[i].cells[p_idx].className="hiddenline";	
	}

}

function f_addCol(p_tab, p_idx, p_lib, p_prefix_id){
	// p_tab : id du tableau dans lequel ajouter une colonne
	// p_idx : index où insérer la colonne (0 : première)
	// p_lib : libellé à faire apparaite en entete de colonne
	// p_prefix_id : préfixe de l'Id (suivi de _<N°de ligne>)
	v_tab=document.getElementById(p_tab);
	v_entete = document.createElement("<th>");
	v_entete.innerText=p_lib
	// on parcours chaque ligne
	//alert(v_tab.rows.length);
	for(i=0;i<v_tab.rows.length;i++){
		v_ligne = v_tab.rows[i];
		//alert(v_ligne);
		v_colbefore = v_ligne.cells[p_idx];

		if(!i) v_ligne.insertBefore(v_entete,v_colbefore);
		else{
			v_cell = document.createElement("<td>");
			v_cell.innerHTML='&nbsp;';
			v_cell.id=p_prefix_id+'_'+i;
			v_ligne.insertBefore(v_cell,v_colbefore);
		}
	}
}

function addslashes( str ) {
    return (str+'').replace(/([\\"'])/g, "\\$1").replace(/\0/g, "\\0");
}

function f_populate_help(p_module){
	
	// ajoute une aide pour les formulaires
	xmlFile = '../statique/help/forms/'+p_module+'_HelpForm.xml';
	xmlDoc = f_xml_load(xmlFile);
	items = xmlDoc.getElementsByTagName('ligne');
	for(i=0;i<items.length;i++){
		v_field=items[i].childNodes[0].firstChild.data;
		v_help = addslashes(items[i].childNodes[1].firstChild.data);

		// recherche du champ
		v_field = document.getElementById(v_field);
		v_fieldline = v_field.parentNode.parentNode;
		v_fieldlib = v_fieldline.firstChild;
		
		// construction de l infobulle
		v_cell_action="Tip('"+v_help+"', WIDTH, 300, TITLE, 'Aide', SHADOW, true, FADEIN, 300, FADEOUT, 300, STICKY, 1, CLOSEBTN, true, CLICKCLOSE, true);";

		// ajout de la cellule aide 
		v_cell = document.createElement("<td>");
		v_cell.innerHTML='<img src=../images/core/help.gif onmouseover="'+v_cell_action+'" onmouseout="UnTip();">';
		//v_fieldline.insertBefore(v_cell,v_fieldlib);
		v_fieldline.insertBefore(v_cell,v_fieldline.cells[v_fieldline.cells.length-1].nextSibling);
	}
}


function f_popup(p_id, p_style, p_header, p_main, p_footer){
	v_div = document.createElement("div");
	v_div.id = p_id;
	v_div.className = p_style;
	//v_div.innerHTML= p_header+p_main+p_footer;
	v_div.innerHTML= p_main;
	//alert(v_div.innerHTML);
	document.body.appendChild(v_div);	
}

function setMessage(p_id, p_class, p_content){
	e=window.event;
	v_div = document.getElementById(p_id);
	v_div.className=p_class;
	v_x = document.getElementById('content').style.left;
	v_y = document.getElementById('content').style.top;
	v_div.style.top=v_y;
	v_div.style.left=v_x;
	v_div.innerHTML=p_content;
}

function f_maj_select(p_select, p_idpere, p_tab, p_value){
	//p_select : nom du select à maj
	//p_idpere : identifiant de référence 
	//p_tab : tableau des options (id | idpere | lib
	
	obj = document.getElementById(p_select);
	delAllOptionsInSelect(obj);
	for(i=0;i<p_tab.length;i++){
		if(p_tab[i][1]==p_idpere) 
			addOptionInSelect(document.getElementById('cat2_id'), p_tab[i][0], p_tab[i][2]);
	}
	if(p_value!='') setValueToSelect(obj,p_value);

}


