
function open_popup(url,name,windowWidth,windowHeight)
{
	myleft=(screen.width)?(screen.width-windowWidth)/2:100;
	mytop=(screen.height)?(screen.height-windowHeight)/2:100;
	properties = "width="+windowWidth+",height="+windowHeight+",scrollbars=yes, top="+mytop+",left="+myleft;
	window.open(url,name,properties);
}

/* Fonction récursive utilisant DOM et renvoyant la concaténation du texte
   contenu dans l'ensemble des enfants d'un noeud */
function getAllNodeValues(domNode) {
	var myText = new String();

	for (var i=0; i < domNode.childNodes.length; i++) {
		if (domNode.childNodes[i].nodeType == 3)
			myText = myText.concat(domNode.childNodes[i].nodeValue);
		else
			myText = myText.concat(getAllNodeValues(domNode.childNodes[i]));
	}
	return myText;
}

/**
 * Fonction utilisant DOM et renvoyant l'objet label associé au champs
 * de formulaire dont l'id est passé en paramètre
 * @param	String Form element object id
 * @return	HTML Label object
 */
function getLabelObjectForId(input_id)
{
	var allLabelObj = document.getElementsByTagName("label");
	for (var i = 0; i < allLabelObj.length; i++) {
		if ( allLabelObj[i].htmlFor == input_id )
			return allLabelObj[i];
	}
}


/**
 * Fonction verifiant que les champs de formulaire dont la propriété 'mandatory'
 * est à true ont bien été renseignés.
 * Nécessite getLabelObjectForId et donc getAllNodeValues
 */
function verif(formObj)
{
	// Initialisation
	go = true;
	var ErrMsg = 'Merci de vérifier les champs suivants'+"\n";
	var AddMsg = "";
	
	for (i=0; i < formObj.elements.length; i++)
	{
		elt = formObj.elements[i];
		
		// On vérifie qu'un champ obligatoire (class="mandatory") n'est pas vide
		if (elt.id)
		{
			labelObject = getLabelObjectForId(elt.id);
			if (labelObject && labelObject.className == "mandatory")
			{
				
				labelValue = getAllNodeValues(labelObject);
				if (labelValue == '')
					labelValue = elt.name; //faute de mieux on présente le nom du champ	
				if (elt.value == '') 
				{
					go = false;
					AddMsg += ' - ' + labelValue + "\n";
				}
				if(elt.type == 'radio')
				{
					if(elt.checked == false)
					{
						go = false;
						AddMsg += ' - ' + labelValue + "\n";
					}
				}
				
					
			}
			if (elt.className == "email" && elt.value != "")
			{
				var pattern=/^([a-zA-Z0-9_.-])+@([a-zA-Z0-9_.-])+\.([a-zA-Z])+([a-zA-Z])+/;
				if(pattern.test(elt.value)){         
					//alert("OK");
				}
				else{
					go = false;
					msg = getAllNodeValues(labelObject) + " : " + "Adresse e-mail incorrecte";
					if(AddMsg != "")
						AddMsg += "<br />";
					AddMsg += " - " + msg;
				}
			}
		}
	}
	
	if (go == true) {
		formObj.submit();
	}
	else {
		//alert(ErrMsg+AddMsg);
		var roar = new Roar({
			position: 'upperRight',
			duration: 6000 // 5 seconds until message fades out
		});

		roar.alert(ErrMsg, AddMsg);
		return false;
	}
	
}
