// JavaScript Document for AMI - BSDI
// Author : Manitra
// Neov S.A.
// November 2005 

// Détéction des browsers
var strUserAgent = navigator.userAgent.toLowerCase(); 
var isIE = strUserAgent.indexOf("msie") > -1; 
var isNS6 = strUserAgent.indexOf("netscape6") > -1; 
var isNS4 = !isIE && !isNS6  && parseFloat(navigator.appVersion) < 5; 



/************** Gestion TexteArea ***********/
var globalCursorPos; // global variabe to keep track of where the cursor was

//sets the global variable to keep track of the cursor position
function setCursorPos() {
  globalCursorPos = getCursorPos(myForm.myTextArea);
}

//This function returns the index of the cursor location in
//the value of the input text element
//It is important to make sure that the sWeirdString variable contains
//a set of characters that will not be encountered normally in your
//text
function getCursorPos(textElement) {
  //save off the current value to restore it later,
  var sOldText = textElement.value;

//create a range object and save off it's text
  var objRange = document.selection.createRange();
  var sOldRange = objRange.text;

//set this string to a small string that will not normally be encountered
  var sWeirdString = '#%~';

//insert the weirdstring where the cursor is at
  objRange.text = sOldRange + sWeirdString; objRange.moveStart('character', (0 - sOldRange.length - sWeirdString.length));

//save off the new string with the weirdstring in it
  var sNewText = textElement.value;

//set the actual text value back to how it was
  objRange.text = sOldRange;

//look through the new string we saved off and find the location of
//the weirdstring that was inserted and return that value
  for (i=0; i <= sNewText.length; i++) {
    var sTemp = sNewText.substring(i, i + sWeirdString.length);
    if (sTemp == sWeirdString) {
      var cursorPos = (i - sOldRange.length);
	 // alert(cursorPos);
      return cursorPos;
    }
  }
}
/*******************************************/



function autoFill(autoFillField){
	if(autoFillField.value != 'Choisissez un Nom'){
		document.MyForm.action='editBordereau.php?task=autoFill&autoFillField='+autoFillField.name;
		document.MyForm.submit();
	}
}

//popwindow presentation Flash
 function popup_window( url, id, width, height )
    {
       //extract the url parameters if any, and pass them to the called html
       var tempvar=document.location.toString(); // fetch the URL string
       var passedparams = tempvar.lastIndexOf("?");
       if(passedparams > -1)
          url += tempvar.substring(passedparams);
      popup = window.open( url, id, 'toolbar=no,scrollbars=no,location=no,statusbar=no,menubar=no,resizable=no,width=' + width + ',height=' + height + '' );
      popup.focus();
    }

// Pour les nombre entier
function VerifyIntegerValue(obj){
	if (navigator.appName.substr(0, 1) == 'M'){
		if(event.keyCode ==46 || event.keyCode ==44){
			event.returnValue = false; 
			return;
		}
		if (((event.keyCode < 48) || (event.keyCode > 57)) && (event.keyCode != 44) && (event.keyCode != 46)){
			event.returnValue = false; 
		}else{
		  if (((event.keyCode == 44) || (event.keyCode == 46)) && ((obj.value.indexOf('.') >= 0) || (obj.value.indexOf(',') >= 0))){
			event.returnValue = false; 
		  }
		}
	}
}



/* verification de num tel */
function VerifyPhoneValue(obj){
	if (navigator.appName.substr(0, 1) == 'M'){
		if(event.keyCode ==46 || event.keyCode ==44){
			event.returnValue = false; 
			return;
		}

		if (((event.keyCode < 48) || (event.keyCode > 57)) && (event.keyCode !=36) && (event.keyCode !=43) && (event.keyCode !=40) && (event.keyCode != 41) && (event.keyCode != 44) && (event.keyCode != 46) && (event.keyCode !=32) && (event.keyCode !=133) && (event.keyCode != 183) ){
			event.returnValue = false; 
			return;
		}
	}
}
/* verification des champs numeriques */

function VerifyNumericValue(obj){
	// Pour les nombre entier
	if (navigator.appName.substr(0, 1) == 'M'){
		if (((event.keyCode < 48) || (event.keyCode > 57)) && (event.keyCode != 44) && (event.keyCode != 46)){
			event.returnValue = false; 
		}
		else{
		  if (((event.keyCode == 44) || (event.keyCode == 46)) && ((obj.value.indexOf('.') >= 0) || (obj.value.indexOf(',') >= 0))){
			event.returnValue = false; 
		  }
		}
	}
}

/*verification des champs textearea : retour a la ligne*/
/*var t = Array();
t["Q_4"]=0;t["Q_12"]=0;t["Q_23"]=0;t["Q_31"]=0;t["Q_41"]=0;t["Q_55"]=0;t["Q_59"]=0;t["Q_67"]=0;t["Q_75"]=0;*/
/*function verifyTexteArea(limit,j) {
	//alert(event.keyCode);
	if (event.keyCode==13) t[j]++;		
	if (t[j]>=limit) {		
		return false;
	}
	else {
		return true;
	}
}*/
/*verification des champs textearea : retour a la ligne*/
/*function verifyTexteArea(limit,chaine,e,name) 
{		
		var z = Array();
		var stop=0,longCh=0;
		var iKeyCode,k;	
		z = chaine.split("\n");	
		if (isIE) {
	    	iKeyCode = e.keyCode;
		} else {
			iKeyCode = e.which;				
		}	
		
		for (k=0;k<z.length;k++) {				
			if (z[k].length>39 && iKeyCode!=13) { //40 -> 39
				stop=1;													
			}
			else stop=0;
			longCh+=z[k].length;	//longueur de la chaine
		}	
		//alert("longCh:"+longCh);			
		if (stop == 1) {
			if (iKeyCode!=0 && iKeyCode!=8 && iKeyCode!=97) return false; //0:backspace, 8: suppr, 97:ctrl+A 
			else return true;	
		}
		else {
			if (navigator.appVersion.indexOf("Mac")!=-1) { //mac, pb		
					return true;
			}
			// IE & Firefox
			if(z.length>=limit && iKeyCode==13) {		
				return false;
			}
			else {
				if (navigator.appName.substr(0, 1) == 'M'){		//Ie
					return lengthValidChar(longCh,256,iKeyCode);	 //256
				}
				else return lengthValidChar(longCh,254,iKeyCode);	//Firefox	//254			
			}				
		}
}*/
/*verification des champs textearea : retour a la ligne*/		
		function verifyTexteArea(limit,chaine,e,obj) 
		{		
			var z = Array();
			var stop=1,j=0;
			var iKeyCode,k,limitChars;				
			z = chaine.split("\n");	
			//alert("nombre de ligne:"+z.length);
			//alert("pos:"+posCurs);
			if (isIE) {
		    	iKeyCode = e.keyCode;
			} else {
				iKeyCode = e.which;				
			}	
			
			if (navigator.appName.substr(0, 1) == 'M'){ //IE			
				var posCurs = getCursorPos(obj);
				var pos=0;			
				for (k=0;k<z.length;k++) {								
					if(k!=0) pos=pos+1;	
					for (j=0;j<z[k].length;j++) {
						pos++;					
						//alert("posCurs:"+posCurs+"-pos:"+pos+" - ligne:"+k);
					}
					//alert("posCurs:"+posCurs+"-pos:"+pos+" - ligne:"+k);							
					//alert("ligne_num:"+(k+1)+":"+z[k].length);				
					if(posCurs<=pos){
						//on teste
						//alert("longueur de la sschaine de la ligne "+k+":"+z[k].length);						
						if (obj.name=="Q_23" || obj.name=="Q_75") { // exception pour les cadres 4 et 15
							limitChars=109;
						}
						else {
							limitChars=44;
						}
						if (z[k].length>limitChars && iKeyCode!=13) { //40 -> 39
							//alert("stop");
							stop=0;																							
						} 
						else {
							stop=1;
						}
						k=z.length;
					}																										
				}
				
				//alert("stop:"+stop);	
				if (stop==0) {
					return false;
				}
				else {
					if (z.length>=limit && iKeyCode==13) {
						return false;
					}
					else {
						return true;
					}
				}	
			}
			else { //Firefox
				if (z.length>=limit && iKeyCode==13) {
					if (iKeyCode!=0 && iKeyCode!=8 && iKeyCode!=97) return false;
				}
				else {
					return true;
				}
			}		
		}



/*Limitation du nombre de caracteres*/
function lengthValidChar(longCh,longMax,iKeyCode)
{												
	if (longCh>longMax) { 							
		if (iKeyCode!=0 && iKeyCode!=8 && iKeyCode!=97) return false;
		else return true;				
	}
	else return true;
}


function lengthValid(ch){
	var chaine;
	chaine = new String(ch);	
	while(chaine.indexOf("\r\n") != -1){
		chaine = chaine.replace("\r\n", '');
	}	
	if (chaine.length>=255) {
		return false;
	}
	else return true;
}

//function VerifyNumericValue(){
//	if (event.keyCode < 45 || event.keyCode > 57) {
//		event.returnValue = false;
//		/*alert('La valeur de ce champ doit être numerique');*/
//		return false;
//	}
//	return true;
//}

function TestInt(id) 
{ 
//recuperation de l'element 
var d=document.getElementById(id); 
  
//test de l'integrité de l'element 
if (d.value!="") 
{ 
    if (isNaN(d.value)==false) 
        { 
        d.value=parseInt(d.value); 
        } 
    else 
        { 
        d.value=''; 
        alert('Vous devez saisir un entier !'); 
        } 
} 
} 

/* verification de validation des champs */
function MM_validateForm() { //v4.0
  var i,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]; val=MM_findObj(args[i]);
    if (val) { nm=val.name; 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 valide.\n';
      } else if (test!='R') { num = parseFloat(val);
        if (isNaN(val)) errors+='- '+nm+' doit contenir un chiffre.\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+' must contain a number between '+min+' and '+max+'.\n';
    } } } else if (test.charAt(0) == 'R') errors += '- '+nm+' est un champs requis.\n'; }
  } if (errors) alert('Nous vous remercions de bien vouloir remplir les champs requis du formulaire afin que nous puissions traîter votre demande. Les champs faisant défaut sont :\n'+errors);
  document.MM_returnValue = (errors == '');
}

function MM_findObj(n, d) { //v4.01
  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);
  if(!x && d.getElementById) x=d.getElementById(n); return x;
}
//-->

function apparaitre() { 
    if (navigator.appName=='Microsoft Internet Explorer') 
    { 
           document.all.ID_MENU1.style.display='block'; 
    } 
    else 
    { 
           document.getElementById('ID_MENU1').style.display='block';
    } 
  } 
  
function disparaitre() { 
    if (navigator.appName=='Microsoft Internet Explorer') 
    { 
           document.all.ID_MENU1.style.display='none'; 
    } 
    else 
    { 
           document.getElementById('ID_MENU1').style.display='none';
    } 
  } 

/* infobulles */

var inverseBulle = 0; 
function GetId(id)
{
	return document.getElementById(id);
}
var bulleIsVisible=false; // La variable i nous dit si la bulle est visible ou non

function move(e) {
	if(screen.width > 1024)
		inverseBulle = 0;
	
  if(bulleIsVisible) {  // Si la bulle est visible, on calcul en temps reel sa position ideale
    	if (navigator.appName!="Microsoft Internet Explorer") { // Si on est pas sous IE
				GetId("curseur").style.left=e.pageX + 5 - (inverseBulle*250);
				GetId("curseur").style.top=e.pageY + 10;
			}
			else {
				GetId("curseur").style.left=window.event.x + 5 - (inverseBulle*250);
				GetId("curseur").style.top=window.event.y + 10 + document.body.scrollTop; // Sous IE, voici un petit hack pour que lors du scroll la position reste bonne !
		}
  	}
  	
}

function montre(text, inv) {
  if(bulleIsVisible==false) {
  	GetId("curseur").style.visibility="visible"; // Si il est cacher (la verif n'est qu'une securité) on le rend visible.
  	GetId("curseur").innerHTML = text; // Cette fonction est a améliorer, il parait qu'elle n'est pas valide (mais elle marche)
  	bulleIsVisible=true;
  }
	inverseBulle = inv;
}

function cache() {
if(bulleIsVisible==true) {
	GetId("curseur").style.visibility="hidden"; // Si la bulle etais visible on la cache
	bulleIsVisible=false;
}
}
document.onmousemove=move; // des que la souris bouge, on appelle la fonction move pour mettre a jour la position de la bulle.


var dontshwfield;
var dontshwfield2;
function montreChamp(field,field2) {
	dontshwfield = document.getElementById(field).style.visibility = "visible" ;
	dontshwfield = document.getElementById(field2).style.visibility = "visible" ;	
}
function cacheChamp(field,field2) {
	document.getElementById(field).style.visibility = "hidden" ;
	document.getElementById(field2).style.visibility = "hidden" ;
			
}


/* infobulles 2 */

var domok = document.getElementById;
//var bool = false;
//var skn;
//
//var tableauMsg = [
//	/* 0 */['Choisissez votre cas :', 'Si vous avez choisi &quot;Collecteur de petites quantit&eacute;s&quot;, l\'<strong>Annexe 1</strong> viendra automatiquement s\'ajouter au bordereau principal.','Si vous avez choisi &quot;Personne ayant transform&eacute;&hellip;&quot; l\'<strong>Annexe 2</strong> viendra automatiquement s\'ajouter au bordereau principal.'],
//	/* 1 */['Si vous r&eacute;pondez oui &agrave; cette question :', 'Les cadre 13 &agrave; 19 du bordereau suite s\'afficheront automatiquement &agrave; la suite du bordereau initial.',''],
//	/* 2 */['Choisissez votre cas', 'Si vous avez choisi &quot;Collecteur de petites quantit&eacute;s&quot;, l\'<strong>Annexe 1</strong> viendra automatiquement s\'ajouter au bordereau principal.','']
//]
//function testDoom () {
//	if (domok)
//	{
//	   skn = document.getElementById("topdecklink").style;
//	   if(navigator.appName.substring(0,3) == "Net")
//	   document.captureEvents(Event.MOUSEMOVE);
//	   document.onmousemove = get_mouse;
//	}
//}
//function poplink(numMsg)
//{
//   var msg     = null;
//   var content = null;
//   var texteChoisi = null;
//   
//   var content = '<table width="230px" border="0" cellspacing="0" cellpadding="5" class="box_pleine">';
//   content += '<tr><td height="20" bgcolor="#008000" class="soustitre_gris"><strong>'+ tableauMsg[numMsg][0] +'</strong></td></tr>';
//   content += '<tr><td bgcolor="#EEEEEE" class="col22 box0 " style="padding:5px ">'+ tableauMsg[numMsg][1] +'</td></tr>';
//   
//   var contentplus = '<tr><td bgcolor="#EEEEEE" class="col22 box0 " style="padding:5px ">'+ tableauMsg[numMsg][2] +'</td></tr>';
//   
//   if (tableauMsg[numMsg][2] != '') {
//   	content += contentplus;
//   }
//   
//   content += '</table>';
//
//   if (domok)
//   {
//	   // Rajoute le contenu hérité
//	   document.getElementById("topdecklink").innerHTML = content;
//
//	   // Rend visible le contenu
//	   skn.visibility = "visible";
//   }
//}
//function get_mouse(e)
//{
//   var x = (navigator.appName.substring(0,3) == "Net") ? e.pageX : event.x+document.body.scrollLeft;
//   var y = (navigator.appName.substring(0,3) == "Net") ? e.pageY : event.y+document.body.scrollTop;
//   skn.left = x + 20;
//   skn.top  = y - 10;
//}
//function killlink()
//{
//   if (domok) skn.visibility = "hidden";
//}

/* fin infobulles 2 */


function MM_openBrWindow2(theURL,winName,features,position) { //v2.0	

   	pop = window.open(theURL,winName,features);

	var windowX = (screen.width - position)/2;

	pop.moveTo(windowX,0);

	pop.focus();

}

/* apparution des blocs et annexes */
function showdiv(divname,state){
	if (domok) {
		document.getElementById(divname).style.display = state ;
	}
}

var operationField;
function selectionOperation(fieldName){
	operationField = document.getElementById(fieldName);
	MM_openBrWindow2('popup/popup_listeOperations.htm','operations','scrollbars=no,width=350,height=555,resizable=no',350);
}

/*var operationField2;
var operationField3;
function selectDechet(fieldName,fieldName2){
	operationField2 = document.getElementById(fieldName);
	operationField3 = document.getElementById(fieldName2);
	MM_openBrWindow2('popup/popup_dechets.php','dechets','scrollbars=yes,width=550,height=381,resizable=no,status=no',550);
}*/
var operationField2;
var operationField3;
var operationField4;
function selectDechet(fieldName,fieldName2,fieldName3){
	operationField2 = document.getElementById(fieldName);
	operationField3 = document.getElementById(fieldName2);
	operationField4 = document.getElementById(fieldName3);
	MM_openBrWindow2('popup/popup_dechets.php','dechets','scrollbars=yes,width=550,height=381,resizable=no,status=no',550);
}

var operationField_2;
var operationField_4;
function selectCodeLibelle(fieldName,fieldName2){
	operationField_2 = document.getElementById(fieldName);
	operationField_4 = document.getElementById(fieldName2);
	MM_openBrWindow2('popup/popup_listeOperations.htm','operations','scrollbars=no,width=350,height=555,resizable=no',350);
}




function scrollTo(fieldId){

	if (domok){
		field = document.getElementById(fieldId);
		if(field){
			field.scrollIntoView();
		}
	}

}


/**
*	Recalcule le type du bordereau et redéfinit les cadres à afficher ou non
*/
function updateTypeBordereau(){

	typeBordereau = document.getElementById('typeBordereau');
	
	oldTypeBorederauId = typeBordereau.value;

	//Si c'est un suite seul
	if(typeBordereau.value==5){
		showdiv('BSD','none');
		showdiv('trsp','none');
		showdiv('suite','block');
		showdiv('annexe1','none');
		showdiv('annexe2','none');
		
		var checkBoxArr = getSelectedCheckbox(document.MyForm.Q_93);
		Q93 = checkBoxArr.length != 0;
		
		if(Q93){
			showdiv('transportMultiModal','block');
		}else{
			showdiv('transportMultiModal','none');
		}

		Q149 = getSelectedRadioValue(document.MyForm.Q_149);
		if(Q149==1){
			showdiv('reconditionnement','block');
		}else{
			showdiv('reconditionnement','none');
		}



		return;
	}


	//Pour les autres cas on recalcule tout à chaque fois
	showdiv('BSD','block');
	showdiv('trsp','block');

	
	//Valeur des différentes questions dont dépendent les affichage
	Q1 = getSelectedRadioValue(document.MyForm.Q_1);
	Q9 = getSelectedRadioValue(document.MyForm.Q_9);
	var checkBoxArr = getSelectedCheckbox(document.MyForm.Q_50);
	Q50 = checkBoxArr.length != 0;

	//Annexe1
	if(Q1==2){
		showdiv('annexe1','block');
		showdiv('annexe2','none');
		//Suite
		if(Q9==1 || Q50){
			showdiv('suite','block');
			typeBordereau.value = 6;
		}else{
			showdiv('suite','none');
			typeBordereau.value = 3;
		}
	}
	//Annexe2
	if(Q1==3){
		showdiv('annexe2','block');
		showdiv('annexe1','none');
		//Suite
		if(Q9==1 || Q50){
			showdiv('suite','block');
			typeBordereau.value = 7;
		}else{
			showdiv('suite','none');
			typeBordereau.value = 4;
		}
	}
	//Aucune annexe
	if(Q1!=2 && Q1 !=3){
		showdiv('annexe1','none');
		showdiv('annexe2','none');
		//Suite
		if(Q9==1 || Q50){
			showdiv('suite','block');
			typeBordereau.value = 2;
			if (document.MyForm.Q_57.value=="") document.MyForm.Q_57.value = document.MyForm.Q_10.value;
			if (document.MyForm.Q_58.value=="") document.MyForm.Q_58.value = document.MyForm.Q_11.value;
			if (document.MyForm.Q_59.value=="") document.MyForm.Q_59.value = document.MyForm.Q_12.value;
		}else{
			showdiv('suite','none');
			typeBordereau.value = 1;
		}
	}

	//Transport multimodal
	var checkBoxArr = getSelectedCheckbox(document.MyForm.Q_93);
	Q93 = checkBoxArr.length != 0;
	if(Q93 || Q50){
		showdiv('transportMultiModal','block');
	}else{
		showdiv('transportMultiModal','none');
	}

	//ReContionnement
	Q149 = getSelectedRadioValue(document.MyForm.Q_149);
	if(Q149==1){
		showdiv('reconditionnement','block');
	}else{
		showdiv('reconditionnement','none');
	}

	if(oldTypeBorederauId != typeBordereau.value){
		checkCredit();
	}

}


function checkCredit(){
	creditNecessaire = typesBordereau[typeBordereau.value][0];
	if(creditNecessaire > creditUtilisateur){
		alert('Attention, vous n\'avez pas assez de crédits, vous devez avoir au minimum '+creditNecessaire +' crédit(s) pour créer un bordereau de type '+typesBordereau[typeBordereau.value][1]+'.');
		return false;
	}else{
		return true;
	}	
}


/*Déclaration des champs qui désactive les autres
Pour chaque champ on définit :
		- la valeur qui permet de rendre actif les champs associés 
		- la liste des champs associés
*/
var associatedFields = new Array();
associatedFields["Q_24"] = new Array(5, "Q_25","list_Q_25");
associatedFields["Q_48"] = new Array('Routier', "Q_45", "Q_46", "Q_47");
associatedFields["Q_76"] = new Array(5, "Q_77","list_Q_77");
associatedFields["Q_91"] = new Array('Routier', "Q_88", "Q_89", "Q_90");
associatedFields["Q_107"] = new Array('Routier', "Q_104", "Q_105", "Q_106");
associatedFields["Q_120"] = new Array('Routier', "Q_117", "Q_118", "Q_119");
associatedFields["Q_63"] = new Array('2', "Q_64", "list_Q_64");

function initAssociatedFields(){
	toggleAssociatedFields(document.MyForm.Q_24);
	toggleAssociatedFields(document.MyForm.Q_48);
	toggleAssociatedFields(document.MyForm.Q_76);
	toggleAssociatedFields(document.MyForm.Q_91);
	toggleAssociatedFields(document.MyForm.Q_107);
	toggleAssociatedFields(document.MyForm.Q_120);
	toggleAssociatedFields(document.MyForm.Q_63);
}


function toggleAssociatedFields(field){
	if(field.type=='radio'){
		fieldName = field.name;
		field = document.MyForm[field.name]; //On récupère une référence au groupe de bouton
	}else{
		if(field[0] && field[0].type=='radio'){
			fieldName = field[0].name;
		}else{
			fieldName = field.name;
		}
	}
	if(associatedFields[fieldName][0]){ //Si on a bien un tableau correspondant 
		//On récupère la valeur du champ maitre
		fieldValue = getFieldValue(field);
		for(j=1; j<associatedFields[fieldName].length;j++){
			toggleFieldActivation(document.getElementById(associatedFields[fieldName][j]), (fieldValue == associatedFields[fieldName][0]));
		}
	}
}

function toggleFieldActivation(field, activate){
	if(activate){
		if(field[0] && field[0].type=='radio'){ //si c'est un groupe de radio
			for(i=0;i<field.length;i++){
				field[i].disabled = 0;
			}
		}else{
			field.disabled = 0;
		}
	}else{
		if(field[0] && field[0].type=='radio'){ //si c'est un tableau
			for(i=0;i<field.length;i++){
				field[i].disabled = 1;
			}
		}else{
			field.disabled = 1;
		}
	}
}

function getFieldValue(field){
	switch(field.type){
		case 'password' : 
		case 'text' :
		case 'textarea' :
		case 'file' :
		case 'select-one' :
			return field.value
			break;

		case 'radio' :
			return  getSelectedRadioValue(field);
			break;
		default :
			if(field[0]){
				return  getSelectedRadioValue(field);
			}else{
				alert("Type de champ ("+field.type+") non géré par GetFieldValue()");
				return 0;
			}
	}
}



function getSelectedRadio(buttonGroup) {
   // returns the array number of the selected radio button or -1 if no button is selected
   if (buttonGroup[0]) { // if the button group is an array (one button is not an array)
      for (var i=0; i<buttonGroup.length; i++) {
         if (buttonGroup[i].checked) {
            return i
         }
      }
   } else {
      if (buttonGroup.checked) { return 0; } // if the one button is checked, return zero
   }
   // if we get to this point, no radio button is selected
   return -1;
}

function getSelectedRadioValue(buttonGroup) {
   // returns the value of the selected radio button or "" if no button is selected
   var i = getSelectedRadio(buttonGroup);
   if (i == -1) {
      return "";
   } else {
      if (buttonGroup[i]) { // Make sure the button group is an array (not just one button)
         return buttonGroup[i].value;
      } else { // The button group is just the one button, and it is checked
         return buttonGroup.value;
      }
   }
} 

function getSelectedCheckbox(buttonGroup) {
   // Go through all the check boxes. return an array of all the ones
   // that are selected (their position numbers). if no boxes were checked,
   // returned array will be empty (length will be zero)
   var retArr = new Array();
   var lastElement = 0;
   if (buttonGroup[0]) { // if the button group is an array (one check box is not an array)
      for (var i=0; i<buttonGroup.length; i++) {
         if (buttonGroup[i].checked) {
            retArr.length = lastElement;
            retArr[lastElement] = i;
            lastElement++;
         }
      }
   } else { // There is only one check box (it's not an array)
      if (buttonGroup.checked) { // if the one check box is checked
         retArr.length = lastElement;
         retArr[lastElement] = 0; // return zero as the only array value
      }
   }
   return retArr;
}

function getSelectedCheckboxValue(buttonGroup) {
   // return an array of values selected in the check box group. if no boxes
   // were checked, returned array will be empty (length will be zero)
   var retArr = new Array(); // set up empty array for the return values
   var selectedItems = getSelectedCheckbox(buttonGroup);
   if (selectedItems.length != 0) { // if there was something selected
      retArr.length = selectedItems.length;
      for (var i=0; i<selectedItems.length; i++) {
         if (buttonGroup[selectedItems[i]]) { // Make sure it's an array
            retArr[i] = buttonGroup[selectedItems[i]].value;
         } else { // It's not an array (there's just one check box and it's selected)
            retArr[i] = buttonGroup.value;// return that value
         }
      }
   }
   return retArr;
}

//////////calendrier/////////////
// Title: Tigra Calendar
// URL: http://www.softcomplex.com/products/tigra_calendar/
// Version: 3.2 (European date format)
// Date: 10/14/2002 (mm/dd/yyyy)
// Note: Permission given to use this script in ANY kind of applications if
//    header lines are left unchanged.
// Note: Script consists of two files: calendar?.js and calendar.html

// if two digit year input dates after this year considered 20 century.
var NUM_CENTYEAR = 30;
// is time input control required by default
var BUL_TIMECOMPONENT = false;
// are year scrolling buttons required by default
var BUL_YEARSCROLL = true;

var calendars = [];
var RE_NUM = /^\-?\d+$/;

function calendar1(obj_target) {

	// assigning methods
	this.gen_date = cal_gen_date1;
	this.gen_time = cal_gen_time1;
	this.gen_tsmp = cal_gen_tsmp1;
	this.prs_date = cal_prs_date1;
	this.prs_time = cal_prs_time1;
	this.prs_tsmp = cal_prs_tsmp1;
	this.popup    = cal_popup1;

	// validate input parameters
	/*if (!obj_target)
		return cal_error("Error calling the calendar: no target control specified");
	if (obj_target.value == null)
		return cal_error("Error calling the calendar: parameter specified is not valid target control");
	*/
	this.target = obj_target;
	this.time_comp = BUL_TIMECOMPONENT;
	this.year_scroll = BUL_YEARSCROLL;
	
	// register in global collections
	this.id = calendars.length;
	calendars[this.id] = this;
}

function cal_popup1 (str_datetime) {
	this.dt_current = this.prs_tsmp(str_datetime ? str_datetime : this.target.value);
	if (!this.dt_current) return;

	var obj_calwindow = window.open(
		'calendrier.htm?datetime=' + this.dt_current.valueOf()+ '&id=' + this.id,
		'Calendar', 'width=210,height='+(this.time_comp ? 215 : 190)+
		',status=no,resizable=no,top=330,left=350,dependent=yes,alwaysRaised=yes'
	);
	obj_calwindow.opener = window;
	obj_calwindow.focus();
}

// timestamp generating function
function cal_gen_tsmp1 (dt_datetime) {
	return(this.gen_date(dt_datetime) + ' ' + this.gen_time(dt_datetime));
}

// date generating function
function cal_gen_date1 (dt_datetime) {
	return (
		(dt_datetime.getDate() < 10 ? '0' : '') + dt_datetime.getDate() + "/"
		+ (dt_datetime.getMonth() < 9 ? '0' : '') + (dt_datetime.getMonth() + 1) + "/"
		+ dt_datetime.getFullYear()
	);
}
// time generating function
function cal_gen_time1 (dt_datetime) {
	return (
		(dt_datetime.getHours() < 10 ? '0' : '') + dt_datetime.getHours() + ":"
		+ (dt_datetime.getMinutes() < 10 ? '0' : '') + (dt_datetime.getMinutes()) + ":"
		+ (dt_datetime.getSeconds() < 10 ? '0' : '') + (dt_datetime.getSeconds())
	);
}

// timestamp parsing function
function cal_prs_tsmp1 (str_datetime) {
	// if no parameter specified return current timestamp
	if (!str_datetime)
		return (new Date());

	// if positive integer treat as milliseconds from epoch
	if (RE_NUM.exec(str_datetime))
		return new Date(str_datetime);
		
	// else treat as date in string format
	var arr_datetime = str_datetime.split(' ');
	return this.prs_time(arr_datetime[1], this.prs_date(arr_datetime[0]));
}

// date parsing function
function cal_prs_date1 (str_date) {

	var arr_date = str_date.split('/');

	if (arr_date.length != 3) return cal_error ("Invalid date format: '" + str_date + "'.\nFormat accepted is dd-mm-yyyy.");
	if (!arr_date[0]) return cal_error ("Invalid date format: '" + str_date + "'.\nNo day of month value can be found.");
	if (!RE_NUM.exec(arr_date[0])) return cal_error ("Invalid day of month value: '" + arr_date[0] + "'.\nAllowed values are unsigned integers.");
	if (!arr_date[1]) return cal_error ("Invalid date format: '" + str_date + "'.\nNo month value can be found.");
	if (!RE_NUM.exec(arr_date[1])) return cal_error ("Invalid month value: '" + arr_date[1] + "'.\nAllowed values are unsigned integers.");
	if (!arr_date[2]) return cal_error ("Invalid date format: '" + str_date + "'.\nNo year value can be found.");
	if (!RE_NUM.exec(arr_date[2])) return cal_error ("Invalid year value: '" + arr_date[2] + "'.\nAllowed values are unsigned integers.");

	var dt_date = new Date();
	dt_date.setDate(1);

	if (arr_date[1] < 1 || arr_date[1] > 12) return cal_error ("Invalid month value: '" + arr_date[1] + "'.\nAllowed range is 01-12.");
	dt_date.setMonth(arr_date[1]-1);
	 
	if (arr_date[2] < 100) arr_date[2] = Number(arr_date[2]) + (arr_date[2] < NUM_CENTYEAR ? 2000 : 1900);
	dt_date.setFullYear(arr_date[2]);

	var dt_numdays = new Date(arr_date[2], arr_date[1], 0);
	dt_date.setDate(arr_date[0]);
	if (dt_date.getMonth() != (arr_date[1]-1)) return cal_error ("Invalid day of month value: '" + arr_date[0] + "'.\nAllowed range is 01-"+dt_numdays.getDate()+".");

	return (dt_date)
}

// time parsing function
function cal_prs_time1 (str_time, dt_date) {

	if (!dt_date) return null;
	var arr_time = String(str_time ? str_time : '').split(':');

	if (!arr_time[0]) dt_date.setHours(0);
	else if (RE_NUM.exec(arr_time[0]))
		if (arr_time[0] < 24) dt_date.setHours(arr_time[0]);
		else return cal_error ("Invalid hours value: '" + arr_time[0] + "'.\nAllowed range is 00-23.");
	else return cal_error ("Invalid hours value: '" + arr_time[0] + "'.\nAllowed values are unsigned integers.");
	
	if (!arr_time[1]) dt_date.setMinutes(0);
	else if (RE_NUM.exec(arr_time[1]))
		if (arr_time[1] < 60) dt_date.setMinutes(arr_time[1]);
		else return cal_error ("Invalid minutes value: '" + arr_time[1] + "'.\nAllowed range is 00-59.");
	else return cal_error ("Invalid minutes value: '" + arr_time[1] + "'.\nAllowed values are unsigned integers.");

	if (!arr_time[2]) dt_date.setSeconds(0);
	else if (RE_NUM.exec(arr_time[2]))
		if (arr_time[2] < 60) dt_date.setSeconds(arr_time[2]);
		else return cal_error ("Invalid seconds value: '" + arr_time[2] + "'.\nAllowed range is 00-59.");
	else return cal_error ("Invalid seconds value: '" + arr_time[2] + "'.\nAllowed values are unsigned integers.");

	dt_date.setMilliseconds(0);
	return dt_date;
}

function cal_error (str_message) {
	alert (str_message);
	return null;
}

function autreInitialisation(){		
	if(document.MyForm.Q_48.value=="Autre") {		
		document.MyForm.Q_45.disabled=false;
		document.MyForm.Q_46.disabled=false;
		document.MyForm.Q_47.disabled=false;
	}
	if(document.MyForm.Q_91.value=="Autre") {		
		document.MyForm.Q_88.disabled=false;
		document.MyForm.Q_89.disabled=false;
		document.MyForm.Q_90.disabled=false;
	}
	if(document.MyForm.Q_107.value=="Autre") {		
		document.MyForm.Q_104.disabled=false;
		document.MyForm.Q_105.disabled=false;
		document.MyForm.Q_106.disabled=false;
	}
	if(document.MyForm.Q_120.value=="Autre") {		
		document.MyForm.Q_117.disabled=false;
		document.MyForm.Q_118.disabled=false;
		document.MyForm.Q_119.disabled=false;
	}
}
///////////////////////////////////