// initialisation du JS dans la page HTML
//evenement onload sur window : attente du chargement complet de la page // OBLIGATOIRE POUR TOUS CHARGEMENT
//window.onload=initHTML;

//creation d'un objet
var DOM =
	{
		//recuperer les styles CSS
		recupererCSS : function(_idCible, _proprieteCSS)
			{
				//variables de classes
				var idCible = document.getElementById(_idCible);
				var proprieteCSS;
				
				/*
					cas particulier : float
						- cssFloat pour navigateurs standards W3C
						- styleFloat pour (ie)
				*/
				
				if(_proprieteCSS == "float")
					{
						if(Navigateur.detectionSimple() == "IE")
							{
								_proprieteCSS = "styleFloat";
							}
						else
							{
								_proprieteCSS = "cssFloat";
							}
					}
				
				/*
					getComputedStyle / currentStyle :
						- cree un array de toutes les proprietes CSS existantes sur l'element
						- getComputedStyle : 2 parametres
							- noeud cible
							- pseudo-element (ex... a:hover), si aucun pseudo-element n'est cible, il faut utiliser la valeur null
							- propriete defaultView de document : (equivalent de body pour le HTML)
				*/
				
				if(Navigateur.detectionSimple() == "IE")
					{
						proprieteCSS = idCible.currentStyle[_proprieteCSS];
					}
				else
					{
						proprieteCSS = document.defaultView.getComputedStyle(idCible, null)[_proprieteCSS];
					}
				//resultat
				return proprieteCSS;
			},


		//ajouter les styles CSS ---attention lA "VIRGULE SEPARE LES PROPRIETES"----
			ajouterCSS : function(_idCible, _proprieteCSS, _valeurCSS)
			{
				//id cible
				var idCible = document.getElementById(_idCible);
				
				//propriete style de l'element qui est un array associatif
				idCible.style[_proprieteCSS] = _valeurCSS;
			},
			
			
		//recuperer les proprietes DOM
			recupererProprietesDOM : function(_idCible, _proprieteDOM)
			{
				//id cible
				var idCible = document.getElementById(_idCible);
				
				//resulat
				return idCible[ _proprieteDOM];
			},
	
		//ajouter les styles CSS ---attention lA "VIRGULE SEPARE LES PROPRIETES"----
			ajouterCSS : function(_idCible, _proprieteCSS, _valeurCSS)
			{
				//id cible
				var idCible = document.getElementById(_idCible);
				
				/*
				
				TRANSPARENCE :
					- opacity sur base 1 pour les navigateurs standards
					- IE : style CSS appelé filter, l'une des propriétés de filter est alpha, qui permet de contrôler l'opacité, sur base 100
						>> cette propriété s'écrit : element.style.filter(alpha(opacity=50))
						ou bien element.style['filter(alapha(opacity=50))']
				
				*/
				// exception IE pour opacity
				if(_proprieteCSS == 'opacity' && Navigateur.detectionSimple() == "IE")
				{
					idCible.style['filter'] = 'alpha(opacity=' + (_valeurCSS * 100) + ')';
				}
				
				else
				{
					//propriete style de l'element qui est un array associatif
					idCible.style[_proprieteCSS] = _valeurCSS;
				}
			},
			
			
		//ajouter une classe CSS
			ajouterClasseCSS : function(_idCible, _classeCSS)
			{
				//id cible
				var idCible = document.getElementById(_idCible);
				
				//application de la classe
				idCible.className = _classeCSS;
			},	
	
			
		//supprimer une classe CSS
			supprimerClasseCSS : function(_idCible)
			{
				//id cible
				var idCible = document.getElementById(_idCible);
				
				//application de la classe
				idCible.className = "";
			},
			
			
		//ajouterEvenement : function	
		ajouterEvenement : function	(_idCible, _evenement, fonctionEvenement)
			{
				//id cible
				var idCible;
				
				//si le parameêtre idCible est un objet (window, document...) getElement By Id est inutile
				if(_idCible == window || _idCible == document)
					{
							idCible = _idCible
					}
				//Si le paramêtre _idCible est un identifiant
				else
					{
						idCible = document.getElementById(_idCible);
					}
				
				//événement
				if(Navigateur.detectionSimple() == "IE")
					{
						idCible.attachEvent('on' + _evenement, fonctionEvenement);
					}
				else
					{
						idCible.addEventListener(_evenement, fonctionEvenement, false);	
					}
			},
			
			//supprimerEvenement : function	
		supprimerEvenement : function	(_idCible, _evenement, fonctionEvenement)
			{
				//id cible
				var idCible;
				
				//si le parameêtre idCible est un objet (window, document...) getElement By Id est inutile
				if(_idCible == window)
					{
							idCible = _idCible
					}
				//Si le paramêtre _idCible est un identifiant
				else
					{
						idCible = document.getElementById(_idCible);
					}
				
				//événement
				if(Navigateur.detectionSimple() == "IE")
					{
						idCible.detachEvent('on' + _evenement, fonctionEvenement);
					}
				else
					{
						idCible.removeEventListener(_evenement, fonctionEvenement, false);	
					}
			},
	
				//propriété d'un événement
				//pour l'appel >> DOM.proprietesEvenement(_evenement, _proprieteEvenement);
				//DOM.proprietesEvenement(e, type);
				//DOM.proprietesEvenement(e, cible);
				proprietesEvenement : function (_evenement, _proprieteEvenement)
					{
						//variables
						var proprieteEvenement = _proprieteEvenement;
						
						//test de la propriété
						switch(_proprieteEvenement)
							{
								//type
								case "type":
								proprieteEvenement = _evenement.type;
								break;
								//cible
								case "cible":
								if(Navigateur.detectionSimple() == "IE")
									{
										proprieteEvenement = _evenement.srcElement;
									}
								else
									{
										proprieteEvenement = _evenement.target;
									}
								break;
								
								//code clavier
								case "codeClavier":
									proprieteEvenement = _evenement.keyCode;
								break;
								
								//position de la souris
								case "positionSouris":
									//proprieteEvenement = new Array();
									proprieteEvenement = [];
									// array : indice 0 >> positionx // indice 1 >> position y
									proprieteEvenement = [_evenement.clientX, _evenement.clientY];
								break;
								
							}
						//resulat
						return proprieteEvenement;
					}
	}

