//création d'un objet DOM
var DOM = 
	{
		//récupérer 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(Navigateurs.detectionSimple() == "IE")
							{
								_proprieteCSS = "styleFloat";
							}
						else
							{
								_proprieteCSS = "cssFloat";
							
							}
					}
				
				
				/*
					- getComputedStyle : 
					
				- crée un array de toutes les propriétés CSS existantes sur l'élément
				- propriété defaultView de document : équivalent de <body> pour le HTML
					2 paramètres :
					- noeud cible
					- pseudo-élément (par ex: a:hover), si aucun psaudo-élément n'est ciblé, utiliser la valeur null

					- currentStyle (pour IE)
				*/
				if(Navigateurs.detectionSimple() == "IE")
					{
						//proprieteCSS = idCible.currentStyle._proprieteCSS;						
						proprieteCSS = idCible.currentStyle[_proprieteCSS];
					}
					
				else
					{
						proprieteCSS = document.defaultView.getComputedStyle(idCible, null)[_proprieteCSS];
					}
				return proprieteCSS;
			},
			
		
		//ajouter (et modifier) un style CSS
		ajouterCSS : function(_idCible, _proprieteCSS, _valeurCSS)
			{
				var idCible = document.getElementById(_idCible);
				//propriété style de l'élément qui est un array associatif
								
				/*
					- opacity : base 1 (de0à1) pour les navigateurs standards
					- IE : style CSS apppelé filter, l'une des propriétés est alpha[base100]:
						>>élément.style.filter(alpha(opacity=50))
						>>élément.style.["filter:(alpha(opacity=50)"]
				*/
				if(_proprieteCSS == "opacity" && Navigateurs.detectionSimple() == "IE")
					{
					
						idCible.style["filter"] = "alpha(opacity="+ _valeurCSS*100 +")";
					}
				else
					{
						//idCible.style._proprieteCSS = _valeurCSS;
						idCible.style[_proprieteCSS] = _valeurCSS;
					}
			},

		//récupérer des propriétés DOM càd non CSS
		recupererProprietesDOM: function(_idCible, _proprieteDOM)
			{
				var idCible = document.getElementById(_idCible);
				
				//résultat
				return idCible[_proprieteDOM];			
			}, 
			
		//ajouter une classe CSS
		ajouterClasseCSS : function (_idCible, _classCSS)
			{
				var idCible = document.getElementById(_idCible);

				//application de la class
				idCible.className = _classCSS;
			},
		
		//supprimer une classe CSS
		supprimerClasseCSS : function (_idCible)
			{
				var idCible = document.getElementById(_idCible);

				//application de la class
				idCible.className = "";
			}, 
		
		//ajouter un événement
		//ajouterEvenement("image", "click", fonction....)
		ajouterEvenement : function (_idCible, _evenement, _fonctionEvenement)
			{
				var idCible;
					//si le paramètre _idCible est un objet (window, document...), getElementById est inutile
					if (_idCible == window || _idCible == document)
						{
							idCible = _idCible;
						}
					
					//si le paramètre _idCible ets un identifiant
					else
						{
							idCible = document.getElementById(_idCible);
						}
				
				//événement
				if(Navigateurs.detectionSimple() == "IE")
					{
						idCible.attachEvent("on"+ _evenement, _fonctionEvenement);
					
					}
				else
					{
						idCible.addEventListener(_evenement, _fonctionEvenement, false);
					}
			},
		
		//supprimer un événement
		supprimerEvenement : function (_idCible, _evenement, _fonctionEvenement)
			{
				var idCible;
					//si le paramètre _idCible est un objet (window, document...), getElementById 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(Navigateurs.detectionSimple() == "IE")
					{
						idCible.detachEvent("on"+ _evenement, _fonctionEvenement);
					
					}
				else
					{
						idCible.removeEventListener(_evenement, _fonctionEvenement, false);
					}
			},
		
		//propriétés d'un évenement
		//DOM.proprietesEvenement(e, "type);
		proprietesEvenement : function(_evenement, _proprietesEvenement)
			{
				//variables
				var proprietesEvenement;
				
				//test de la propriété
				switch(_proprietesEvenement)
					{
						//type
						case "type":
						proprietesEvenement = _evenement.type;
						break;
						
						//cible
						case "cible":
							if(Navigateurs.detectionSimple() == "IE")
								{
									proprietesEvenement = _evenement.srcElement;
								}
							else
								{
									proprietesEvenement = _evenement.target;
								}
						break;
						
						//code clavier
						case "codeClavier" :
						proprietesEvenement = _evenement.keyCode;
						break;
						
						//position souris
						case "positionSouris" :
						//proprietesEvenement = new Array();
						//JSON
						//array : indice 0 >> position x // indice 1 >> position y
						proprietesEvenement = [_evenement.clientX, _evenement.clientY];
						break;
					}
				//retour
				return proprietesEvenement;
			}
	}
