/*============================================================================================
 Fichier Javascript
 Fonction de manipulation des elements/attributs html

 AUTEUR:					Alban BALLIEUX
 CREATION:					24/03/2009				
 VARIABLE GLOBALES:				
 MODIFICATIONS:				
===============================================================================================
	copyright 2009 Alban BALLIEUX - ballieuxa@laon.noirot
	http://www.phpmyportal.info

	This file is part of phpMyPortal.

    phpMyPortal is free software; you can redistribute it and/or modify
    it under the terms of the GNU Lesser General Public License as published by
    the Free Software Foundation; either version 2.1 of the License, or
    any later version.

    phpMyPortal is distributed in the hope that it will be useful,
    but WITHOUT ANY WARRANTY; without even the implied warranty of
    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
    GNU Lesser General Public License for more details.

    You should have received a copy of the GNU Lesser General Public License
    along with phpMyPortal; if not, write to the Free Software
    Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
===============================================================================================*/

/**
 * Sélect/Déselect des checkbox en fonction d'une checkbox "mère"
 * Le principe est de cocher tout les checkbox de la page commencant par le radical indiqué.
 * Cette méthode est basé sur une expression reguliere sans tenir compte de la suite du radical
 * 
 * @param {Object} U		Radical
 * @param {Object} N		Identifiant de la checkbox mère
 */
function mod_checkboxs_reg(U,N){
// Je recupére tous les inputs
	var Res=document.getElementsByTagName('input');
	N=GetPtId(N);
	for (var i = 0; i < Res.length; i++) {
	// Je regarde si le type est checkbox et que le nom correspond
	    if (Res[i].type=='checkbox' && Res[i].id.match(new RegExp('^'+U+'.*', 'gi'))) {
			Res[i].checked=N.checked;
	    }
	}
}

/**
 * permet de reinitialise le formulaire
 * Id Identifiant du formulaire
 */
function ResetForm(Id){
	Id = GetPtId(Id);
	Id.reset();
}

/**
 * Permet de pointer sur un element identifiant (Ancre)
 * Id Identifiant que l'on souhaite selectionner
 */
function GotoAncre(Id){
	PtId = GetPtId(Id);
	if (PtId != false){
		window.location.hash = PtId.id;
	}
}

/**
 * Décoche toutes les autres checkbox
 * 
 * @param {Object} U		Radical
 * @param {Object} N		Identifiant de la checkbox mère
 */
function Decoche_All_Checkboxs(U,N){
// Je recupére tous les inputs
	N=GetPtId(N);
	var Res=document.getElementsByTagName('input');
	for (var i = 0; i < Res.length; i++) {
	// Je regarde si le type est checkbox et que le nom correspond
	    if (N!=Res[i] && Res[i].type=='checkbox' && Res[i].id.match(new RegExp('^'+U+'.*', 'gi'))) {
			Res[i].checked=false;
	    }
	}
}

/**
 * Permet d'ajouter un attribut à un objet
 * 
 * @param {Object} id			
 * @param {Object} attribute
 * @param {Object} value
 */
function Add_Attribute(id,attribute,value){
	if(GetPtId(id)){
		GetPtId(id).setAttribute(attribute,value);
	}
}

/**
 * Gére l'affichage et le masquage de DIV
 * Liste les element LI de l'identifiant, change la classe et affiche la DIV associé
 * 
 * @param {Object} Id			Identifiant du UL père
 * @param {Object} IdDiv		Identifiant de la DIV selectionné
 */
function selOnglet(Id,IdDiv){
	var tmp=0;
	if (isset(GetPtId(Id))){
	TLI = GetPtId(Id).getElementsByTagName('LI');
		if (TLI.length>0){
			for (tmp=0;tmp<TLI.length;tmp++){
				if (TLI[tmp].id==Id+IdDiv){
					TLI[tmp].getElementsByTagName('A')[0].className='onglet_actif';
					TLI[tmp].className='onglet_actif';
					PtId = GetPtId(TLI[tmp].id.replace(Id,''));
					if (PtId){
						PtId.style.display='block';
					}
				}else{
					TLI[tmp].getElementsByTagName('A')[0].className='onglets';
					TLI[tmp].className='onglets';
					PtId = GetPtId(TLI[tmp].id.replace(Id,''));
					if (PtId){
						PtId.style.display='none';
					}
				}
			}
		}
	}
}

/**
 * Permet d'affecter une valeur à un champ
 * 
 * @param {Object} Id			Identifiant du champ de destination
 * @param {Object} Val			Valeur à affecter
 */
function SetValue(Id,Val){
	PtId = GetPtId(Id);
	if (PtId!=false){
		PtId.value=Val;
	}
}
 
 /**
  * Affecte une valeur à une série de champ
  * 
  * @param {string} rad			radicale de la série de champ qu'on va modifer
  * @param {string} val			Valeur à affecter
  * @param {string} ajt			à 'true' si on veut ajouter au contenue déjà existant
  * @return void
  */
 function SetValueMulti(rad, val,ajt){
	// Je recupére tous les inputs
		//N=GetPtId(N);
		var Res=document.getElementsByTagName('input');
		for (var i = 0; i < Res.length; i++) {
		// Je regarde si le type est checkbox et que le nom correspond
			//if (N!=Res[i] && Res[i].type=='checkbox' && Res[i].id.match(new RegExp('^'+U+'.*', 'gi'))) {
			if (Res[i].type=='text' && Res[i].name.match(new RegExp('^'+rad+'.*', 'gi'))) {
				if(ajt!='true'){
					Res[i].value=val;
				}else{
					Res[i].value=Res[i].value+val;
				}
		    }
		}
 }
 var TmpIdSelect='';
 var TmpIdSelect1='';
 /**
  * Applique la classe select a un champ
  * 
  * @param {object} id			Champ à selectionner
  * @return void
  */
 function CouleurSelection(Id){
 // Je change la couleur de la ligne selectionné
	RestaureClasse();
	TmpIdSelect = GetPtId(Id);
	if (TmpIdSelect != false){
		TmpIdSelect1=TmpIdSelect.className;
		TmpIdSelect.className='SELECT';
	} 
 }
 /**
  * Restaure le style original du champ selectionné
  *
  */
 function RestaureClasse(){
	if (isObject(TmpIdSelect)) TmpIdSelect.className=TmpIdSelect1;
	TmpIdSelect='';
 }
 
  /**
  * Passe sur tous les href pour modifier la valeur d'un parametre 
  * 
  * @param {object} Url			L'url de départ pour filtrer ... ex: toto/toto.php
  * @param {object} Parametre	Nom du parametre à modifier
  * @param {object} Valeur		Nouvelle valeur du paramètre
  * @param {object} IdPere		Identifiant du champ contenant toutes les références
  *
  * @return void
  */
 function RedifineURL(Url,Parametre,Valeur,IdPere){
 	var Expression;
 	var PtId;
 	var i;
 	var newUrl;
 	var IdPere = GetPtId(IdPere);
 	
 	if (!isset(IdPere))	IdPere = document.body;
 
 	PtId = IdPere.getElementsByTagName('A');
 	
  	Expression		= new RegExp("("+Url+"\?.*"+Parametre+"=)[^&]*&", "g");
 	
 	for (i =0;i<PtId.length;i++){
 		newUrl = PtId[i].href.replace(Expression,'$1'+Valeur+'&');
 		if (newUrl != PtId[i].href){
 			PtId[i].href=newUrl;
 		}
 	}
 }
  /**
  * Passe sur tous les href pour modifier la valeur d'un parametre 
  * 
  * @param {object} Id			Identifiant ou objet de l'objet à activer
  */
 function Enable(Id,Coul){
 	var PtId = GetPtId(Id);
 	if (PtId!=false){
 		PtId.disabled=false;
 		if (Coul==true){
 			RestaureEtAppliquePropriete(PtId,"style.backgroundColor");
 		}
 	}
 }
 
  /**
  * Passe sur tous les href pour modifier la valeur d'un parametre 
  * 
  * @param {object} Id			Identifiant ou objet de l'objet à desactiver
  */
 function Disable(Id,Coul){
 	var PtId = GetPtId(Id);
 	if (PtId!=false){
 		PtId.disabled=true;
 		if (Coul==true){
 			SavEtAppliquePropriete(PtId,"style.backgroundColor","#EEEEEE");
 		}
 	}
 }
 
 /**
 * Change l'attribut visible en visible ou hidden
 * 
 * @param {string} 	Id		Identifiant de la zone
 * @param {string} 	d		Se base sur display
 */
function CacheAffiche(Id,d){
	Id = GetPtId(Id);
	
	if (Id!= false){
		if (isset(d) && d == true){
			if (Id.style.display == 'none'){
				Id.style.display = 'block';
			}else{
				Id.style.display = 'none';
			}
		}else{
			if (Id.style.visibility == 'hidden'){
				Id.style.visibility = 'visible';
			}else{
				Id.style.visibility = 'hidden';
			}		
		}
	}
}

/**
 * Change l'attribut visible en visible ou hidden
 * 
 * @param {string} 	Id		Identifiant de la zone
 * @param {string} 	d		Se base sur display
 */
function Cache(Id,d){
	Id = GetPtId(Id);
	
	if (Id!= false){
		if (isset(d) && d == true){
			Id.style.display = 'none';
		}else{
			Id.style.visibility = 'hidden';
		}
	}
}

/**
 * Change l'attribut visible en visible ou hidden
 * 
 * @param {string} 	Id		Identifiant de la zone
 * @param {string} 	d		Se base sur display
 */
function Affiche(Id,d){
	Id = GetPtId(Id);
	
	if (Id!= false){
		if (isset(d) && d == true){
			Id.style.display = 'none';
		}else{
			Id.style.visibility = 'visible';
		}
	}
}