﻿/*********************************************************
 DÉFINITION
	Complément de l'objet VBScript SelGIP

 PROPRIÉTÉS
 	ID
	
 MÉTHODES	
*********************************************************/
function SelGIP(){
	var ogSelf = this;
	
	this.ID = "";
	this.Initialise = false;
	this.Modifie = false;
	
	var ngDefSel = -1;
	
	this.SelSelecteur = function(){
		if(ngDefSel != -1){
			HideElement("Div" + ogSelf.ID + "LstGlobules" + ngDefSel);
			HideElement("Div" + ogSelf.ID + "LstGroupes" + ngDefSel);
			HideElement("Div" + ogSelf.ID + "LstRequetes" + ngDefSel);
		}
		ngDefSel = Elem(ogSelf.ID + "GIP").value;
		
		switch(Elem(ogSelf.ID + "SourceSelecteur").value){
			case "0": 
				ShowElement("Div" + ogSelf.ID + "LstGlobules" + ngDefSel);
				break;
			case "1": 
				ShowElement("Div" + ogSelf.ID + "LstGroupes" + ngDefSel); 
				break;
			case "2": 
				ShowElement("Div" + ogSelf.ID + "LstRequetes" + ngDefSel); 
				break;
			default: 
				break;
		}
		
		if(Elem(ogSelf.ID + "GIP").value != "-1"){
			ShowElement(ogSelf.ID + "-selecteur");	
		}else{
			HideElement(ogSelf.ID + "-selecteur");
		}
		
	}
	
	this.ChangeSourceSelecteur = function(){
		switch (Elem(ogSelf.ID + "SourceSelecteur").value)
		{
			case "0": 
				HideElement("Div" + ogSelf.ID + "LstGroupes" + ngDefSel);
				HideElement("Div" + ogSelf.ID + "LstRequetes" + ngDefSel);
				ShowElement("Div" + ogSelf.ID + "LstGlobules" + ngDefSel);	
				break;
			case "1":
				HideElement("Div" + ogSelf.ID + "LstGlobules" + ngDefSel);
				HideElement("Div" + ogSelf.ID + "LstRequetes" + ngDefSel);
				ShowElement("Div" + ogSelf.ID + "LstGroupes" + ngDefSel);
				break;
			case "2":
				HideElement("Div" + ogSelf.ID + "LstGlobules" + ngDefSel);
				HideElement("Div" + ogSelf.ID + "LstGroupes" + ngDefSel);
				ShowElement("Div" + ogSelf.ID + "LstRequetes" + ngDefSel);
				break;
		}
	}
	
	this.AjoSelection = function(spTypeSel){
		var nlIDGIP = Elem(ogSelf.ID + "GIP").value;
		var nlIDGroupe = Elem(ogSelf.ID + "LstGroupes" + nlIDGIP).value;
		var nlIDGlobule = Elem(ogSelf.ID + "LstGlobules" + nlIDGIP).value;
		var nlIDRequete = Elem(ogSelf.ID + "LstRequetes" + nlIDGIP).value;
		
		if (Elem(ogSelf.ID + "LstIDRequetesINC").value  != ";"){
			alert("Vous devez nettoyer la liste de façon à avoir une seule requête et rien d'autre");
			return;
		}
		switch (Elem(ogSelf.ID + "SourceSelecteur").value)
		{
			case "0":
				if(nlIDGlobule > 0){
					ogSelf.AjoSelectionManuel(nlIDGIP, -1, nlIDGlobule, -1, spTypeSel);
				}
				break;
			case "1":
				if(nlIDGroupe > 0){
					ogSelf.AjoSelectionManuel(nlIDGIP, nlIDGroupe, -1, -1, spTypeSel);	
				}
				break;
			case "2":
				if(nlIDRequete > 0){
					if (ogSelf.CheckListeVide())
						ogSelf.AjoSelectionManuel(nlIDGIP, -1, -1, nlIDRequete, spTypeSel);
					else
						alert("Vous devez nettoyer la liste de façon à avoir une seule requête et rien d'autre");	
				}
				break;
			default:
				break;
		}
	}
	
	this.AjoSelectionManuel = function(npIDGIP, npIDGroupe, npIDGlobule, npIDRequete, spTypeSel){
		var olLigne;
		var olLigneParent = Elem(ogSelf.ID + "-selection").parentNode;
		var slContenu = "";
		var nlIDLigne;
		
		if(npIDGIP == -1 && npIDGroupe != -1){npIDGIP = GetGIPFromGroupe(npIDGroupe);}
		if(npIDGIP == -1 && npIDRequete != -1){npIDGIP = GetGIPFromRequete(npIDRequete);}
		
		if(!SelectionExiste(npIDGIP, npIDGroupe, npIDGlobule)){
			if(npIDGlobule != -1){
				nlIDLigne += npIDGlobule;
				slContenu += "<div class=\"icone-usager\"></div>";
				slContenu += "<div class=\"gip\">" + GetComboTexteFromValeur(ogSelf.ID + "GIP", npIDGIP) + "</div>";
				slContenu += "<div class=\"selection\">" + GetComboTexteFromValeur(ogSelf.ID + "LstGlobules" + npIDGIP, npIDGlobule) + "</div>";
				slContenu += "<div class=\"btn-sup-selection\" onclick=\"ogSelGIP" + ogSelf.ID + ".SupSelection(" + npIDGIP + ", -1," + npIDGlobule + ", -1, '" + spTypeSel + "');\"></div>";
				Elem(ogSelf.ID + "LstIDGlobules" + spTypeSel + npIDGIP).value += npIDGlobule + ";";
			}else if (npIDGroupe != -1){
				nlIDLigne += npIDGroupe;
				slContenu += "<div class=\"icone-usager-groupe\"></div>";
				slContenu += "<div class=\"gip\">" + GetComboTexteFromValeur(ogSelf.ID + "GIP", npIDGIP) + "</div>";
				slContenu += "<div class=\"selection\">" + GetComboTexteFromValeur(ogSelf.ID + "LstGroupes" + npIDGIP, npIDGroupe) + "</div>";
				slContenu += "<div class=\"btn-sup-selection\" onclick=\"ogSelGIP" + ogSelf.ID + ".SupSelection(" + npIDGIP + "," + npIDGroupe + ", -1, -1, '" + spTypeSel + "');\"></div>";
				Elem(ogSelf.ID + "LstIDGroupes" + spTypeSel).value += npIDGroupe + ";";
			}else{
				nlIDLigne += npIDRequete;
				slContenu += "<div class=\"icone-usager\"></div>";
				slContenu += "<div class=\"gip\">" + GetComboTexteFromValeur(ogSelf.ID + "GIP", npIDGIP) + "</div>";
				slContenu += "<div class=\"selection\">" + GetComboTexteFromValeur(ogSelf.ID + "LstRequetes" + npIDGIP, npIDRequete) + "</div>";
				slContenu += "<div class=\"btn-sup-selection\" onclick=\"ogSelGIP" + ogSelf.ID + ".SupSelection(" + npIDGIP + ",-1, -1, " + npIDRequete + ", '" + spTypeSel + "');\"></div>";
				Elem(ogSelf.ID + "LstIDRequetes" + spTypeSel).value += npIDRequete + ";";
			}
			
			olLigne = Elem(ogSelf.ID + "-selection").cloneNode(true);
			if(spTypeSel == "EXC"){
				olLigne.className += " exclusion";
			}
			olLigne.style.display = "block";
			if(npIDGroupe != -1){
				olLigne.id += "-" + npIDGIP + "-" + npIDGroupe;
			}else if (npIDGlobule != -1){
				olLigne.id += "-" + npIDGIP + "-" + npIDGlobule;
			}else{
				olLigne.id += "-" + npIDGIP + "-" + npIDRequete;
			}
			olLigne.innerHTML = slContenu;
					
			olLigneParent.insertBefore(olLigne, Elem(ogSelf.ID + "-selection"));
			
			HideElement(ogSelf.ID + "DivAucuneSelection");
			ShowElement(ogSelf.ID + "DivSelections");
			
			ogSelf.Modifie = true;
		}
	}
	
	function GetGIPFromGroupe(npIDGroupe){
		var i;
		var alIDGIP = Elem(ogSelf.ID + "LstIDGIP").value.split(";");
		var nlIDGIP = -1;
		
		for(i=0;i<alIDGIP.length;i++){
			if(GetComboTexteFromValeur(ogSelf.ID + "LstGroupes" + alIDGIP[i], npIDGroupe) != "-1"){return alIDGIP[i];}
		}
		
		return nlIDGIP;
	}
	
	function GetGIPFromRequete(npIDRequete){
		var i;
		var alIDGIP = Elem(ogSelf.ID + "LstIDGIP").value.split(";");
		var nlIDGIP = -1;
		
		for(i=0;i<alIDGIP.length;i++){
			if(GetComboTexteFromValeur(ogSelf.ID + "LstRequetes" + alIDGIP[i], npIDRequete) != "-1"){return alIDGIP[i];}
		}
		
		return nlIDGIP;
	}
	
	function SelectionExiste(npIDGIP, npIDGroupe, npIDGlobule){
		var llExiste = false;
		
		if(npIDGroupe == -1){
			if(Elem(ogSelf.ID + "LstIDGlobulesINC" + npIDGIP).value.indexOf(";" + npIDGlobule + ";") != -1 || Elem(ogSelf.ID + "LstIDGlobulesEXC" + npIDGIP).value.indexOf(";" + npIDGlobule + ";") != -1){
				llExiste = true;
			}
		}else{
			if(Elem(ogSelf.ID + "LstIDGroupesINC").value.indexOf(";" + npIDGroupe + ";") != -1 || Elem(ogSelf.ID + "LstIDGroupesEXC").value.indexOf(";" + npIDGroupe + ";") != -1){
				llExiste = true;
			}
		}
		return llExiste;
	}
	
	this.SupSelection = function(npIDGIP, npIDGroupe, npIDGlobule, npIDRequete, spTypeSel){
		var nlIDLigne = ogSelf.ID + "-selection-" + npIDGIP + "-";
		var olLigneParent = Elem(ogSelf.ID + "-selection").parentNode;
		var olLstID;
		
		if(npIDGlobule != -1){
			nlIDLigne += npIDGlobule;
			olLigneParent.removeChild(Elem(nlIDLigne)); 
			olLstID = Elem(ogSelf.ID + "LstIDGlobules" + spTypeSel + npIDGIP);
			olLstID.value = olLstID.value.replace(";" + npIDGlobule + ";", ";");
		}else if (npIDGroupe != -1){
			nlIDLigne += npIDGroupe;
			olLigneParent.removeChild(Elem(nlIDLigne));
			olLstID = Elem(ogSelf.ID + "LstIDGroupes" + spTypeSel);
			olLstID.value = olLstID.value.replace(";" + npIDGroupe + ";", ";");
		}else{
			nlIDLigne += npIDRequete;
			olLigneParent.removeChild(Elem(nlIDLigne));
			olLstID = Elem(ogSelf.ID + "LstIDRequetes" + spTypeSel);
			olLstID.value = olLstID.value.replace(";" + npIDRequete + ";", ";");	
		}
		
		if(ogSelf.CheckListeVide()){
			ShowElement(ogSelf.ID + "DivAucuneSelection");
			HideElement(ogSelf.ID + "DivSelections");
		}
		
		ogSelf.Modifie = true;
	}
	
	this.CheckListeVide = function(){
		var i;
		var alIDGIP = Elem(ogSelf.ID + "LstIDGIP").value.split(";");
		var llVide = true;
		
		for(i=0;i<alIDGIP.length;i++){
			if(Elem(ogSelf.ID + "LstIDGlobulesINC" + alIDGIP[i]).value != ";" || Elem(ogSelf.ID + "LstIDGlobulesEXC" + alIDGIP[i]).value != ";"){llVide = false;}
		}
		if(Elem(ogSelf.ID + "LstIDGroupesINC").value != ";" || Elem(ogSelf.ID + "LstIDGroupesEXC").value != ";"){llVide = false;}
		if(Elem(ogSelf.ID + "LstIDRequetesINC").value != ";"){llVide = false;}
		
		return llVide;
	}
	
	this.GetSelection = function(){
		var i;
		var alIDGIP = Elem(ogSelf.ID + "LstIDGIP").value.split(";");
		var slSelection = "";
		
		for(i=0;i<alIDGIP.length;i++){
			if(Elem(ogSelf.ID + "LstIDGlobulesINC" + alIDGIP[i]).value != ";"){
				slSelection = IncChaineSelection(slSelection, "GIPINC" + alIDGIP[i] + Elem(ogSelf.ID + "LstIDGlobulesINC" + alIDGIP[i]).value);
			}
			if(Elem(ogSelf.ID + "LstIDGlobulesEXC" + alIDGIP[i]).value != ";"){
				slSelection = IncChaineSelection(slSelection, "GIPEXC" + alIDGIP[i] + Elem(ogSelf.ID + "LstIDGlobulesEXC" + alIDGIP[i]).value);
			}
		}
		
		if(Elem(ogSelf.ID + "LstIDGroupesINC").value != ";"){
			slSelection = IncChaineSelection(slSelection, "GRPINC" + Elem(ogSelf.ID + "LstIDGroupesINC").value);
		}
		if(Elem(ogSelf.ID + "LstIDGroupesEXC").value != ";"){
			slSelection = IncChaineSelection(slSelection, "GRPEXC" + Elem(ogSelf.ID + "LstIDGroupesEXC").value);
		}
		if(Elem(ogSelf.ID + "LstIDRequetesINC").value != ";"){
			slSelection = IncChaineSelection(slSelection, "REQINC" + Elem(ogSelf.ID + "LstIDRequetesINC").value);
		}
		
		return slSelection;
	}
	
	function IncChaineSelection(spSelection, spElement){
		spElement = String(spElement).slice(0,-1);
		if(spSelection != ""){spSelection += "|";}
		spSelection += spElement;
		
		return spSelection;
	}
}
