/*
Classe représentant un objet TELEPHONE MOBILE
Contient uniquement les propriétés servant au filtrage (pour l'affichage)


Pré-requis :
nommer les objets HTML représentant chaque mobile "Mobile_[code]" (en remplacant la virgule du code par un tiret)
nommer les objets HTML représentant les boutons des filtres "BtnFiltre[nom du filtre]"
*/

var CCollectionMobiles = {
	mobiles : [],    //tableau de tous les mobiles
	mobilesPromo : [], //tableau avec les prix initiaux
	filtrePhotoActif : false,       //permet de mémoriser les filtres en cours, pour les désactiver
	filtreMP3Actif : false,         //permet de mémoriser les filtres en cours, pour les désactiver
	filtreDesignActif : false,      //permet de mémoriser les filtres en cours, pour les désactiver
	filtreSimpliciteActif : false,  //permet de mémoriser les filtres en cours, pour les désactiver
	filtrePromoActif : false,       //permet de mémoriser les filtres en cours, pour les désactiver
	
	ajouterMobile : function(p_code, p_estPhoto, p_estMP3, p_estDesign, p_estSimplicite, p_estPromo) {
	    var nouveauMobile = new CMobile(p_code, p_estPhoto, p_estMP3, p_estDesign, p_estSimplicite, p_estPromo);
	    this.mobiles.push(nouveauMobile);   //ajout du nouveau mobile au tableau des mobiles
	    var nouveauMobilePromo = new CMobile(p_code, p_estPhoto, p_estMP3, p_estDesign, p_estSimplicite, p_estPromo);
	    this.mobilesPromo.push(nouveauMobilePromo);   //ajout du nouveau mobile au tableau des mobiles
	},
	
	//méthode appelée lors du click sur le bouton "Photo"
	filtrerPhoto : function() {
		//on mémorise qu'on vient d'activer/désactiver le filtre
		this.filtrePhotoActif = !this.filtrePhotoActif;
		//on applique le filtre
		this.filtrer(this.filtrePhotoActif, "BtnFiltrePhoto");
		return false;
	},
	//méthode appelée lors du click sur le bouton "MP3"
	filtrerMP3 : function() {
		//on mémorise qu'on vient d'activer/désactiver le filtre
		this.filtreMP3Actif = !this.filtreMP3Actif;
		//on applique le filtre
		this.filtrer(this.filtreMP3Actif, "BtnFiltreMP3");
		return false;
	},
	//méthode appelée lors du click sur le bouton "Design"
	filtrerDesign : function() {
		//on mémorise qu'on vient d'activer/désactiver le filtre
		this.filtreDesignActif = !this.filtreDesignActif;
		//on applique le filtre
		this.filtrer(this.filtreDesignActif, "BtnFiltreDesign");
		return false;
	},
	//méthode appelée lors du click sur le bouton "Simplicité"
	filtrerSimplicite : function() {
		//on mémorise qu'on vient d'activer/désactiver le filtre
		this.filtreSimpliciteActif = !this.filtreSimpliciteActif;
		//on applique le filtre
		this.filtrer(this.filtreSimpliciteActif, "BtnFiltreSimplicite");
		return false;
	},
	//méthode appelée lors du click sur le bouton "Promo"
	filtrerPromo : function() {
		//on mémorise qu'on vient d'activer/désactiver le filtre
		this.filtrePromoActif = !this.filtrePromoActif;
		//on applique le filtre
		this.filtrer(this.filtrePromoActif, "BtnFiltrePromo");
		return false;
	},
	//méthode générique de lancement du filtrage
	filtrer : function(estFiltre, idBtn) {
		// on parcoure la liste des mobiles
		for(var i=0; i<this.mobiles.length; i++) {
		    if(this.mobiles[i].visible) // On teste si le mobile peut être affiché 
		        this.mobiles[i].afficher(this.filtrePhotoActif, this.filtreMP3Actif, this.filtreDesignActif, this.filtreSimpliciteActif, this.filtrePromoActif);
		}
		
		//on applique le style CSS au bouton (pour le rendre actif/inactif)
		if (estFiltre)
		    document.getElementById(idBtn).className += ' selected';
		else
		    document.getElementById(idBtn).className = document.getElementById(idBtn).className.replace(' selected', '');
	},
	
	//méthode générique de lancement du filtrage au chargement de la page
	filtrerAuChargement : function() {
		// on parcoure la liste des mobiles
		for(var i=0; i<this.mobiles.length; i++) {
		    //this.mobiles[i].afficher(this.filtrePhotoActif, this.filtreMP3Actif, this.filtreDesignActif, this.filtreSimpliciteActif, this.filtrePromoActif);
		    this.mobiles[i].afficher(this.filtrePhotoActif, this.filtreMP3Actif, this.filtreDesignActif, this.filtreSimpliciteActif, this.filtrePromoActif);
		}
	},
	
	//méthode qui permet d'afficher les prix des mobiles pour un forfait sans Engagement
	AfficherPrixEngagementSE : function() 
	{
		// on parcoure la liste des mobiles
		for(var i=0; i<this.mobiles.length; i++) 
		{
		    //this.mobiles[i].afficher(this.filtrePhotoActif, this.filtreMP3Actif, this.filtreDesignActif, this.filtreSimpliciteActif, this.filtrePromoActif);
		    idHTML = "Span_PrixSE_" + this.mobiles[i].code;
		    document.getElementById(idHTML).style.display = 'block';
		    
		    idHTML = "Span_Prix12Mois_" + this.mobiles[i].code;
		    document.getElementById(idHTML).style.display = 'none';
		    
		     idHTML = "Span_Prix24Mois_" + this.mobiles[i].code;
		    document.getElementById(idHTML).style.display = 'none';
		}
		
		document.getElementById("monPrixSE").style.display = 'block';
		document.getElementById("monPrix12Mois").style.display = 'none';
		document.getElementById("monPrix24Mois").style.display = 'none';
		
	},
	
	//méthode qui permet d'afficher les prix des mobiles pour un forfait Engagement 12 Mois
	AfficherPrixEngagement12Mois : function() 
	{
		// on parcoure la liste des mobiles
		for(var i=0; i<this.mobiles.length; i++) 
		{
		    //this.mobiles[i].afficher(this.filtrePhotoActif, this.filtreMP3Actif, this.filtreDesignActif, this.filtreSimpliciteActif, this.filtrePromoActif);
		    
		    idHTML = "Span_PrixSE_" + this.mobiles[i].code;
		    document.getElementById(idHTML).style.display = 'none';
		    
		    idHTML = "Span_Prix12Mois_" + this.mobiles[i].code;
		    document.getElementById(idHTML).style.display = 'block';
		    
		     idHTML = "Span_Prix24Mois_" + this.mobiles[i].code;
		    document.getElementById(idHTML).style.display = 'none';
		}
		
		document.getElementById("monPrixSE").style.display = 'none';
		document.getElementById("monPrix12Mois").style.display = 'block';
		document.getElementById("monPrix24Mois").style.display = 'none';
		
	},
	
	
	//méthode qui permet d'afficher les prix des mobiles pour un forfait Engagement 24 Mois
	AfficherPrixEngagement24Mois : function() 
	{
		// on parcoure la liste des mobiles
		for(var i=0; i<this.mobiles.length; i++) 
		{
		    //this.mobiles[i].afficher(this.filtrePhotoActif, this.filtreMP3Actif, this.filtreDesignActif, this.filtreSimpliciteActif, this.filtrePromoActif);
		    
		    idHTML = "Span_PrixSE_" + this.mobiles[i].code;
		    document.getElementById(idHTML).style.display = 'none';
		    
		    idHTML = "Span_Prix12Mois_" + this.mobiles[i].code;
		    document.getElementById(idHTML).style.display = 'none';
		    
		     idHTML = "Span_Prix24Mois_" + this.mobiles[i].code;
		    document.getElementById(idHTML).style.display = 'block';
		}
		
		document.getElementById("monPrixSE").style.display = 'none';
		document.getElementById("monPrix12Mois").style.display = 'none';
		document.getElementById("monPrix24Mois").style.display = 'block';
	},
	
	setPrixMobile : function(idMobile, codeEngagement, codeForfait, prixMobile)
	{
	    for(var i=0; i<this.mobiles.length; i++) 
		{
		   if (this.mobiles[i].code == idMobile)
		   {
		       this.mobiles[i].SetPrix(codeEngagement,codeForfait,prixMobile);
		       break;
		   }
		}
		
		for(var j=0; j<this.mobilesPromo.length; j++) 
		{
		   if (this.mobilesPromo[j].code == idMobile)
		   {
		       this.mobilesPromo[j].SetPrix(codeEngagement,codeForfait,prixMobile);
		       break;
		   }
		}
		
	},
	
	ViderlisteMobiles:function()
	{
	    for(var i=0; i<this.mobiles.length; i++) 
		{
		   if (this.mobiles[i].code == idMobile)
		   {
		       this.mobiles[i].SetPrix(codeEngagement,codeForfait,null);
		       break;
		   }
		}
	},
	
	AfficherPrixMobiles:function(codeForfait)
	{
	        for(var i=0; i<this.mobiles.length; i++) 
		{  
		    var affiche = false;
		     
		    //Si on a un prix pour l'offre sans engagement, on l'affiche
		    if(this.mobiles[i].prix[0]!=null)
		    {
		        var idHTML_SE = "Span_PrixSE_" + this.mobiles[i].code;
		        if(this.mobiles[i].prix[0][codeForfait] != null)
		        {
		            document.getElementById(idHTML_SE).innerHTML = this.mobiles[i].prix[0][codeForfait] + " &euro;";
		            if(this.mobiles[i].code == document.getElementById("H_CodeMobile").value)
		                document.getElementById("monPrixSE").innerHTML = this.mobiles[i].prix[0][codeForfait] + " &euro;";
		            affiche = true;
		        }
		    }
		    //Si on a un prix pour l'offre avec engagement 12 mois, on l'affiche
		    if(this.mobiles[i].prix[1]!=null)
		    {
		        var idHTML_12 = "Span_Prix12Mois_" + this.mobiles[i].code;
		         if(this.mobiles[i].prix[1][codeForfait] != null)
		        {
		            document.getElementById(idHTML_12).innerHTML = this.mobiles[i].prix[1][codeForfait] + " &euro;";
		            if(this.mobiles[i].code == document.getElementById("H_CodeMobile").value)
		                document.getElementById("monPrix12Mois").innerHTML = this.mobiles[i].prix[1][codeForfait] + " &euro;";
		            affiche = true;
		        }
		        
		    }
		    //Si on a un prix pour l'offre avec engagement 24 mois, on l'affiche
		    if(this.mobiles[i].prix[2]!=null)
		    {
		        var idHTML_24 = "Span_Prix24Mois_" + this.mobiles[i].code;
		         if(this.mobiles[i].prix[1][codeForfait] != null)
		        {
		            document.getElementById(idHTML_24).innerHTML = this.mobiles[i].prix[2][codeForfait] + " &euro;";
		             if(this.mobiles[i].code == document.getElementById("H_CodeMobile").value)
		                document.getElementById("monPrix24Mois").innerHTML = this.mobiles[i].prix[2][codeForfait] + " &euro;";
		            affiche = true;
		        }
		       
		    }
		   
		   // Si on a aucun prix pour le mobile dans cette offre, on l'affiche pas
		   var idHTML = "Mobile_" + this.mobiles[i].code.replace(",", "-");
		   if(affiche)
		   {
		        document.getElementById(idHTML).style.display = 'block';
		        this.mobiles[i].visible = true;
		        //Garder le filtre *****
		        this.mobiles[i].afficher(this.filtrePhotoActif, this.filtreMP3Actif, this.filtreDesignActif, this.filtreSimpliciteActif, this.filtrePromoActif);
		        //***********************
		   }
		   else
		   {
		        //Garder le filtre *****
		        this.mobiles[i].afficher(this.filtrePhotoActif, this.filtreMP3Actif, this.filtreDesignActif, this.filtreSimpliciteActif, this.filtrePromoActif);
		        //***********************
		        document.getElementById(idHTML).style.display = 'none';
		        this.mobiles[i].visible = false;
		   } 
		}
	},
	
	AfficherPrixMobilesPromo:function(codeForfait)
	{
	        for(var i=0; i<this.mobiles.length; i++) 
		{  
		    var affiche = false;
		     
		    //Si on a un prix pour l'offre sans engagement, on l'affiche
		    if(this.mobiles[i].prix[0]!=null)
		    {
		        var idHTML_SE = "Span_PrixSE_" + this.mobiles[i].code;
		        if(this.mobiles[i].prix[0][codeForfait] != null)
		        {
		            document.getElementById(idHTML_SE).innerHTML = this.mobiles[i].prix[0][codeForfait] + " &euro;";
		            affiche = true;
		        }
		    }
		    //Si on a un prix pour l'offre avec engagement 12 mois, on l'affiche
		    if(this.mobiles[i].prix[1]!=null)
		    {
		        var idHTML_12 = "Span_Prix12Mois_" + this.mobiles[i].code;
		         if(this.mobiles[i].prix[1][codeForfait] != null)
		        {
		            document.getElementById(idHTML_12).innerHTML = this.mobiles[i].prix[1][codeForfait] + " &euro;";
		            affiche = true;
		        }
		        
		    }
		    //Si on a un prix pour l'offre avec engagement 24 mois, on l'affiche
		    if(this.mobiles[i].prix[2]!=null)
		    {
		        var idHTML_24 = "Span_Prix24Mois_" + this.mobiles[i].code;
		         if(this.mobiles[i].prix[1][codeForfait] != null)
		        {
		            document.getElementById(idHTML_24).innerHTML = this.mobiles[i].prix[2][codeForfait] + " &euro;";
		            affiche = true;
		        }
		       
		    }
		   
		   // Si on a aucun prix pour le mobile dans cette offre, on l'affiche pas
		   var idHTML = "Mobile_" + this.mobiles[i].code.replace(",", "-");
		   if(affiche)
		   {
		        document.getElementById(idHTML).style.display = 'block';
		        this.mobiles[i].visible = true;
		        //Garder le filtre *****
		        this.mobiles[i].afficher(this.filtrePhotoActif, this.filtreMP3Actif, this.filtreDesignActif, this.filtreSimpliciteActif, this.filtrePromoActif);
		        //***********************
		   }
		   else
		   {
		        //Garder le filtre *****
		        this.mobiles[i].afficher(this.filtrePhotoActif, this.filtreMP3Actif, this.filtreDesignActif, this.filtreSimpliciteActif, this.filtrePromoActif);
		        //***********************
		        document.getElementById(idHTML).style.display = 'none';
		        this.mobiles[i].visible = false;
		   } 
		}
	},
	
	CalculerPrixMobilesPromo:function(subventionPromo, codemobile)
	{
	    for(var i=0; i<this.mobiles.length; i++) 
		{
		    if(this.mobiles[i].code == codemobile)
		    {
		         for (j in this.mobiles[i].prix[0])
		         {
		            if(this.mobiles[i].prix[0][j] - subventionPromo < 1)
		                this.mobiles[i].prix[0][j] = 1;
		            else
		                this.mobiles[i].prix[0][j] = this.mobiles[i].prix[0][j] - subventionPromo ;
		         }
		        
		         for(k in this.mobiles[i].prix[1])
		         {
		             if(this.mobiles[i].prix[1][k] - subventionPromo < 1)
		                this.mobiles[i].prix[1][k] = 1;
		             else
		                this.mobiles[i].prix[1][k] = this.mobiles[i].prix[1][k] - subventionPromo;
		         }
		         
		         for(l in this.mobiles[i].prix[2])
		         {
		            if(this.mobiles[i].prix[2][l] - subventionPromo < 1)
		                this.mobiles[i].prix[2][l] = 1;
		            else
		                this.mobiles[i].prix[2][l] = this.mobiles[i].prix[2][l] - subventionPromo;
		         }
		         
		    }
		} 
	},
	
	RechargerListeMobiles:function()
	{
	
	 for(var i=0; i<this.mobiles.length; i++) 
	 {
	    for (j in this.mobiles[i].prix[0])
	    {
	       this.mobiles[i].prix[0][j] = this.mobilesPromo[i].prix[0][j];   
	    }
	    
	    for (k in this.mobiles[i].prix[1])
	    {
	       this.mobiles[i].prix[1][k] = this.mobilesPromo[i].prix[1][k];   
	    }
	    
	    for (l in this.mobiles[i].prix[2])
	    {
	       this.mobiles[i].prix[2][l] = this.mobilesPromo[i].prix[2][l];   
	    }
	    
	 }
	 
	}

};

var CMobile = function() { this.initialiser.apply(this, arguments);};     //permet de simuler un constructeur
CMobile.prototype = {
    code : '',      //utilisé pour rendre visible/invisible l'objet HTML (li) représentant le mobile
	estPhoto : false,
	estMP3 : false,
	estDesign : false,
	estSimplicite : false,
	estPromo : false,
	prix:Array(),
	visible:true,
	
	//constructeurs
	constructor : CMobile,
	initialiser : function(p_code, p_estPhoto, p_estMP3, p_estDesign, p_estSimplicite, p_estPromo) {
	    this.code = p_code;
	    this.estPhoto = p_estPhoto;
	    this.estMP3 = p_estMP3;
	    this.estDesign = p_estDesign;
	    this.estSimplicite = p_estSimplicite;
	    this.estPromo = p_estPromo;
	    this.prix = new Array();
	    this.visible = true;
    },
    
    //méthode qui détermine, en fonction des propriétés du mobile, si il doit être visible ou non
    afficher : function(filtrePhoto, filtreMP3, filtreDesign, filtreSimplicite, filtrePromo) {
        var idHTML = "Mobile_" + this.code.replace(",", "-");
        if (((filtrePhoto && this.estPhoto) || (!filtrePhoto)) &&
            ((filtreMP3 && this.estMP3) || (!filtreMP3)) &&
            ((filtreDesign && this.estDesign) || (!filtreDesign)) &&
            ((filtreSimplicite && this.estSimplicite) || (!filtreSimplicite)) &&
            ((filtrePromo && this.estPromo) || (!filtrePromo)))
	        document.getElementById(idHTML).style.display = 'block';
	    else
	        document.getElementById(idHTML).style.display = 'none';
    },
    
    SetPrix:function(codeEngagement, codeForfait, prixMobile)
    {
        if (this.prix[codeEngagement] == null)
        {
            this.prix[codeEngagement] = Array();
        }
        this.prix[codeEngagement][codeForfait] = prixMobile;
    }
};
