/** Renvoie le tableau des elements de type tagName enfants de element (non r?cursif)
 * Si tagName vaut *, renvoie tous les elements enfants */
Element.getChildElements = function(element, tagName) {
  var result = new Array();
  var name = tagName.toLowerCase();
  for (var i=0 ; i<element.childNodes.length ; i++) {
    var child = element.childNodes[i];
    if (child.nodeType == 1) { // C'est un element
      if (name == "*" || child.nodeName.toLowerCase() == name) {
        result.push(child);
      }
    }
  }
  return result;
}

/** Deplace un noeud ou plusieurs d'un parent a un autre 
 * @param children noeud ou tableau de noeuds a deplacer
 * @newParent nouveau parent a donner au noeud
 */
Element.move = function(children, newParent) {
  if (!(children instanceof Array)) {
    children = [children];
  }
  for (var i=0 ; i<children.length ; i++) {
    child = children[i];
    newParent.appendChild(child.parentNode.removeChild(child));
  }
}

/** Coordonnee left de l'element */
Element.getLeft = function(element) {
  var offsetLeft = 0;
  // On cumule les offset de tous les elements englobants
  while (element != null) {
    offsetLeft += element.offsetLeft;
    element = element.offsetParent;
  }
  return offsetLeft;
}

/** Coordonnee top de l'element */
Element.getTop = function(element) {
  var offsetTop = 0;
  // On cumule les offset de tous les elements englobants
  while (element != null) {
    offsetTop += element.offsetTop;
    element = element.offsetParent;
  }
  return offsetTop;
}



/*-------------------------------------------------------*/
/*-------------------------------------------------------*/
/** DOM event */
/*Event.event = function(event) {
  // W3C ou alors IE
  return (event || window.event);
}*/

Event.target = function(event) {
  return (event) ? event.target : window.event.srcElement ;
}

/** Stoppe l'?v?nement
*/
Event.preventDefault = function(evenement) {
  var event = evenement || window.event;
  if (event.preventDefault) { // W3C
    event.preventDefault();
  }
  else { // IE
    event.returnValue = false;
  }
}

Event.stopPropagation = function(evenement) {
  var event = evenement || window.event;
  if (event.stopPropagation) {
    event.stopPropagation();
  }
  else {
    event.cancelBubble = true;
  }
}




/******************************************************
	Fonctions perso
*******************************************************/

function DeplacerItemDeVers(de, vers) {
	//alert('de : '+$(de).nodeName);
	var select = $(de);

	var length = select.options.length;
	//alert('longueur : '+length);

	for(var i=0; i<select.options.length; i++) {

		//alert('select.options['+i+'] : '+select.options[i].text+' - '+select.options[i].selected);

		if(select.options[i] && select.options[i].selected) {

			//alert(i);
			var texte  = select.options[i].text;
			var valeur = select.options[i].value;
			var option = new Option(texte, valeur);
			
			try {
				$(vers).add(option, null);
			}
			catch(e) {
				$(vers).add(option);
			}
			
			select.remove(i);
			i--;
		}
	}

	return false;
	
}

/* A la selection du formulaire, on selectionne toutes les options de la selection
 */	
function SelectionnerItems(de) {

	for(var i=0; i<$(de).options.length; i++) {
		$(de).options[i].selected = true;
	}
	
	return true;

}


