var JSns4 = (document.layers)?true:false; //NS4 
var JSie4 = (document.all)?true:false; //IE4 
var JSdom = (document.getElementById)?true:false; //ie5 et ns6 

//Variables pour formlaire fonction highlight
var highlightcolor="#E8F9C8";
var ns6=document.getElementById&&!document.all;
var intended=/INPUT|TEXTAREA|SELECT|OPTION/;
var previous='';
var eventobj;
var returnval=true;

function MM_findObj(n, d) { //v3.0
  var p,i,x;  if(!d) d=document; if((p=n.indexOf("?"))>0&&parent.frames.length) {
    d=parent.frames[n.substring(p+1)].document; n=n.substring(0,p);}
  if(!(x=d[n])&&d.all) x=d.all[n]; for (i=0;!x&&i<d.forms.length;i++) x=d.forms[i][n];
  for(i=0;!x&&d.layers&&i<d.layers.length;i++) x=MM_findObj(n,d.layers[i].document); return x;
}

//Vérifier le formulaire
function MM_validateForm() { //v3.0
  var i,j,p,q,nm,test,num,min,max,errors='',args=MM_validateForm.arguments;
for (i=0; i<(args.length-2); i+=3) 
{ 
	test=args[i+2]; 
	nm=args[i+1]; 
	//alert('args[i]='+args[i]);
	if (args[i].indexOf('document.')!=-1) {
		//alert('trouvé');
    	val=eval(args[i]);
    }
	else {
		//alert('pas trouvé');
		val=MM_findObj(args[i]);
	}
	//alert('val='+val)
	if (val) 
    { 
		if ((val=val.value)!="") 
		{
	    	if (test.indexOf('isEmail')!=-1) 
	      	{ 
	      		p=val.indexOf('@');
	        	if (p<1 || p==(val.length-1)) errors+='- '+nm+' doit contenir une adresse email.\n';
	      	} 
	      	else if (test=='CP')
	      	{
	      		var regEx = /[0-9]{5}/;
    			if(regEx.test(val) == false) errors+='- '+nm+' Le code postal doit contient 0-9.\n';
	      	}
	      	else if (test!='R') 
	      	{ 
	      		num = parseFloat(val);
	        	if (val!=''+num) errors+='- '+nm+' Saisir les chiffres.\n';
	        	if (test.indexOf('inRange') != -1) 
	        	{ 
	          		p=test.indexOf(':');
	          		min=test.substring(8,p); max=test.substring(p+1);
	          		if (num<min || max<num) errors+='- '+nm+' Saisir les chiffres entre  '+min+' et '+max+'.\n';
	    		}
	      	}
	    }
	    else if (test.charAt(0) == 'R' || test.charAt(0) == 'M') errors += '- '+nm+' est obligatoire.\n'; 
	}
} 
if (errors) alert('Corriger les erreurs suivantes:\n'+errors);
document.MM_returnValue = (errors == '');
}

function doSubmitOubliePasse(){
MM_validateForm('p_id_groupe','Population','R','p_nom','Nom','R','p_prenom','Prénom','R','p_email','Email','R');
if (document.MM_returnValue == true)
{
    document.email.submit();
}
return false;
}

//Function to check whether element clicked is form element
function checkel(which){
	if (which.style&&intended.test(which.tagName)){
		if (ns6&&eventobj.nodeType==3)
		eventobj=eventobj.parentNode.parentNode;
		return true;
	}
	else
		return false;
}

//Function to highlight form element
function highlight(e){
	eventobj=ns6? e.target : event.srcElement;
	if (previous!=''){
		if (checkel(previous))
		previous.style.backgroundColor=''
		previous=eventobj
		if (checkel(eventobj))
			eventobj.style.backgroundColor=highlightcolor;
	}
	else{
		if (checkel(eventobj))
		eventobj.style.backgroundColor=highlightcolor;
		previous=eventobj;
	}
}

function EnterToTab(evt) 
{  
    evt = (evt) ? evt : window.event
    var charCode = (evt.which) ? evt.which : evt.keyCode
	eventobj=ns6? evt.target : event.srcElement;
	//alert(eventobj.tagName);
	if (window.event && window.event.keyCode == 13) {
    //if (charCode == 13) {
		if (eventobj.tagName == 'TEXTAREA')
		{
			evt.keyCode = 13;
		} else {
			evt.keyCode = 9;
	   	}
	}
    return true;
}

function moveSelectedOptions(from, to){
	fromSelect = document.getElementsByName(from)[0];		
	selOpt = getSelectedOptions(fromSelect);			
	var selValues = new Array();
	if(selOpt.length>0){				
		selValues = getSelectedValues(fromSelect);
		toSelect=document.getElementsByName(to)[0];
		for(i=0;i<selOpt.length;i++){
			option = selOpt[i];
			fromSelect.removeChild(option);						
			toSelect.appendChild(option);
		}
	}	
	return selValues;
}

function getSelectedValues (select) {
	var selValues = new Array();
	for (j = 0; j < select.options.length; j++){
		selValues[selValues.length] = select.options[j].value;					
	}
	return selValues;
}

function getSelectedOptions (select) {
	var selOptions  = new Array();
	for (m = 0; m < select.options.length; m++){
		if (select.options[m].selected) {
			selOptions[selOptions.length] = select.options[m];
		}
	}
	return selOptions;
}

//Vérifier la donnée saisie est de type NUMBER
function checkNumber(evt) {
    evt = (evt) ? evt : window.event
    var charCode = (evt.which) ? evt.which : evt.keyCode
    if (charCode > 31 && (charCode < 48 || charCode > 57)) {
        return false
    }
    return true
}


//Vérifier la donnée saisie est de type NUMBER avec DECIMAL
function checkNumberDeci(evt) {
    evt = (evt) ? evt : window.event;
    var charCode = (evt.which) ? evt.which : evt.keyCode;
    if ((charCode >= 48 && charCode <= 57) || charCode == 46) {
        return true;
    }
    return false;
}

//autoriser la saisie O ou N dans un champ de type TEXT
function checkON(evt) {
    evt = (evt) ? evt : window.event
    var charCode = (evt.which) ? evt.which : evt.keyCode
    if (charCode == 78  || charCode == 79 || charCode == 110 || charCode == 111 ) {
        return true
    }
    else {
    	return false
    }
}


function total_bh(obj, cible)
{
	//var JSns4 = (document.layers)?true:false; //NS4 
	//var JSie4 = (document.all)?true:false; //IE4 
	//var JSdom = (document.getElementById)?true:false; //ie5 et ns6 
	var total = 0;
	cpt = obj.length
	//alert(cpt);
	for (i = 0; i < cpt; i++){
		total += parseFloat(obj[i].value);
	}
	if (JSdom)
	{
		document.getElementById(cible).innerHTML = total;
		document.getElementById('total_gene').innerHTML = parseFloat(document.getElementById('totalJ').innerHTML) + parseFloat(document.getElementById('totalN').innerHTML);
	}
	else if (JSie4)
	{
		document.all[cible].innerHTML = total;
		document.all['total_gene'].innerHTML = parseFloat(document.document.all['totalJ'].innerHTML) + parseFloat(document.document.all['totalN'].innerHTML);
	}
	else if (JSns4)
	{
		//document.layers[cible].document.write(total.toFixed(2));
		document.layers[cible].document.write(total);
		document.layers[cible].document.close();
		document.layers['total_gene'].innerHTML = parseFloat(document.document.layers['totalJ'].innerHTML) + parseFloat(document.document.layers['totalN'].innerHTML);
		document.layers['total_gene'].document.close();
	}
	
	//alert(total);
	
}

//La touche F12 enfoncée
function F12(evt, lien)
{
    evt = (evt) ? evt : window.event
    var charCode = (evt.which) ? evt.which : evt.keyCode
    //touche F12
    if (charCode == 123 || charCode == 13) {
		eval(lien);
   }
    return true;
}

/* Table Rollover */
	var arrayOfRolloverClasses = new Array();
	var arrayOfClickClasses = new Array();
	var activeRow = false;
	var activeRowClickArray = new Array();
	var colorAvantRed;
	function highlightTableRow()
	{
		//alert('highlightTableRow');
		var tableObj = this.parentNode;
		if(tableObj.tagName!='TABLE')tableObj = tableObj.parentNode;

		if(this!=activeRow){
			//alert('highlightTableRow this!=activeRow');
			this.setAttribute('origCl',this.className);
			this.origCl = this.className;
		}
		this.className = arrayOfRolloverClasses[tableObj.id];
		
		activeRow = this;
		tableObj.style.cursor="hand";
		
	}
	
	function clickOnTableRow()
	{
		var tableObj;
		var args=clickOnTableRow.arguments;
		//alert(args.length);
		if (args.length > 0){
			 //alert(args[0]);
			tableObj = args[0];
		}
		else
		{
			var tableObj = this.parentNode;
		}
		if(tableObj.tagName!='TABLE')tableObj = tableObj.parentNode;		

		if(this==activeRowClickArray[tableObj.id]){
			//this.className = colorAvantRed;
			//activeRowClickArr	ay[tableObj.id] = this;
			activeRowClickArray[tableObj.id].className = colorAvantRed;
			activeRow = this;
			activeRowClickArray[tableObj.id] = null;
		}
		else {
			if(activeRowClickArray[tableObj.id] && this!=activeRowClickArray[tableObj.id]){
				activeRowClickArray[tableObj.id].className=colorAvantRed;	
			}
			this.className = arrayOfClickClasses[tableObj.id];
			
			activeRowClickArray[tableObj.id] = this;
	
			var origCl = this.getAttribute('origCl');
			if(!origCl)origCl = this.origCl;
			colorAvantRed=origCl;
			//alert('toto='+origCl);
		}
	}
	
	function resetRowStyle()
	{
		//alert('resetRowStyle');
		var tableObj = this.parentNode;
		if(tableObj.tagName!='TABLE')tableObj = tableObj.parentNode;

		if(activeRowClickArray[tableObj.id] && this==activeRowClickArray[tableObj.id]){
			//alert('resetRowStyle this==activeRowClickArray[tableObj.id]');
			this.className = arrayOfClickClasses[tableObj.id];
			//this.className = colorAvantRed;
			return;	
		}
		
		//alert('resetRowStyle  après return');
		var origCl = this.getAttribute('origCl');
		if(!origCl)origCl = this.origCl;
		this.className=origCl;
		
	}
		
	function addTableRolloverEffect(tableId,whichClass,whichClassOnClick)
	{
		arrayOfRolloverClasses[tableId] = whichClass;
		arrayOfClickClasses[tableId] = whichClassOnClick;
		
		var tableObj = document.getElementById(tableId);
		var tBody = tableObj.getElementsByTagName('TBODY');
		if(tBody){
			var rows = tBody[0].getElementsByTagName('TR');
		}else{
			var rows = tableObj.getElementsByTagName('TR');
		}
		for(var no=0;no<rows.length;no++){
			rows[no].onmouseover = highlightTableRow;
			rows[no].onmouseout = resetRowStyle;
			
			if(whichClassOnClick){
				rows[no].ondblclick = clickOnTableRow;	
			}
		}
		
	}	
/* Fin table Rollover */

//Editer la ligne où se trouve le cursor pour modifier evénement double click
function dblRow(e){
	e = e || window.event; // IE sucks
	var tgt = e.target || e.srcElement; // IE sucks'
	while (tgt && !tgt.cells) {tgt = tgt.parentNode;} // finds tr.
	rowEditing = tgt;
	//alert('dblRow');
	//eval(rowEditing.modif);
}
//Editer la ligne où se trouve le cursor pour modifier evénement double click
function editRow(line){
	//alert('editRow');
	//alert('line.modif='+line.modif);
	eval(line.modif);
}

//Editer la ligne où se trouve le cursor pour modifier événement click droit
function editRowContext(line){
	eval(line.modif);
}

//Depuis le tableau dynamique
//Fil rouge sur un enregistrement => déverser les données dans le formulaire
//on récupère une chaine avec un séparateur : espace, pipe, ; , ...
function RemplirListMultiple(separateur, chaine, obj)
{
	for(j=0;j < obj.length;j++)
	{
		obj.options[j].selected=false;
	}
	var decoupe = chaine.split(separateur);
	for (i=0;i<decoupe.length-1;i++){
		for(j=0;j < obj.length;j++)
		{
			if (obj.options[j].value == decoupe[i])
				obj.options[j].selected=true;
		}
	}
}

//Vérifier les champs f12 si vide effacer les données dans le champ caché lié au champ F12
function checkFieldF12(fieldMain, fieldErase)
{
	if (fieldMain.value == "")	
		fieldErase.value = "";
}

//Enlever un élément dans une liste multiple
function removeElement(evt, obj)
{
    evt = (evt) ? evt : window.event
    var charCode = (evt.which) ? evt.which : evt.keyCode
    //touche Suppr
    if (charCode == 46) {
    	obj.options[obj.selectedIndex]=null;
   }
    return true;
}

//Ajouter un élément dans une liste multiple
function Ajouter(form,lib, val, liste) {
	var o=new Option(lib.value,val.value);
	liste.options[liste.options.length]=o;
	lib.value = "";
	val.value="";
}
