// FONCTIONS UTILISEES PAR LA CLASSE_COMMUNE

function lets_go_to(newlocation){
    self.location = newlocation;
}; /// end func lets_go_to


function confirm_del(newlocation){
    if(confirm("Confirm removal ?")) self.location = newlocation;
}; /// end func confirm


// Racourci pour getElementById
function $(id){
  return document.getElementById(id);
}

// Detruit une node XML
function remove_element(id){
  objElement = $(id);
  if (objElement.parentNode && objElement.parentNode.removeChild)
  {
    objElement.parentNode.removeChild(objElement);
  }
}


// ----------------------------------------------------------------------------
// MANIPULATION DE CHAINES ----------------------------------------------------
// ----------------------------------------------------------------------------

/*
 * supprimer les caractères espaces, tabulations, saut de ligne, .. du début et de la fin de la chaîne.
 */

function trim(chaine) {
  var car_a_supprimer = new String(' \n\t\r');

  var chaine_debut_nettoyee;

  var i,i_max;

  // ceux du début.
  chaine_debut_nettoyee = chaine
  var debut = 0;
  for (i=0, i_max=chaine.length; i < i_max ; i++) {
    if (car_a_supprimer.indexOf(chaine.charAt(i)) != -1) {
      // alert('depuis début : on passe car ' + i + ' (indexOf=' + car_a_supprimer.indexOf(chaine.charAt(i)) + ')');
      debut = i+1;
    } else {
      break;
    }
  }

  chaine_debut_nettoyee = chaine.substring(debut);

  // ceux de la fin  
  var chaine_nettoyee = chaine_debut_nettoyee;
  var fin = chaine_debut_nettoyee.length;
  for (i=chaine_debut_nettoyee.length; i > 0 ; i--) {
    if (car_a_supprimer.indexOf(chaine_debut_nettoyee.charAt(i)) != -1) {
      // alert('depuis fin : on passe car ' + i + '  (indexOf=' + car_a_supprimer.indexOf(chaine.charAt(i)) + ')');
      fin = i;
    } else {
      break;
    }
  }

  chaine_nettoyee = chaine_debut_nettoyee.substring(0, fin);

  if (false) 
    alert('trim(' + chaine + ') :\n' + 
	  // 'chaine_debut_nettoyee: >>' + chaine_debut_nettoyee  + '<<\n' + 
	  'debut=' + debut + '\n' + 
	  'fin='   + fin   + '\n' + 
	  'chaine_nettoyee: >>'      + chaine_nettoyee  + '<<\n'
	  );
  
  return chaine_nettoyee;
}

/**
 * Aide au changement de visibilite delement
 */

function inverse_visibilite(){ //id_balise,pas_de_sauvegarde
  pas_de_sauvegarde = false
  id_balise = false
  for (var i=0; i<inverse_visibilite.arguments.length; ++i){
    switch(i){
	  case 0:
	  	id_balise = inverse_visibilite.arguments[i]
	  	break;
	  case 1:
	    pas_de_sauvegarde = inverse_visibilite.arguments[i]
	    break
	  default:
	  	continue
	}
  }
  var obj_balise = document.getElementById(id_balise);
  if (obj_balise == undefined) {
    alert('le balise ' + id_balise + ' n\'existe pas');
  } else {
    ; // alert('balise ' + id_balise  + ' trouv?');
    if (obj_balise.style.display!='none' || obj_balise.style.display=='' || obj_balise.style.display==undefined) {
		change_visibilite(id_balise, false,pas_de_sauvegarde)
    } else {
		change_visibilite(id_balise, true,pas_de_sauvegarde)
    }
  }
}
function  change_visibilite(id_balise, afficher,pas_de_sauvegarde){
  var obj_balise = document.getElementById(id_balise);
  if (obj_balise == undefined) {
    alert('la balise ' + id_balise + ' n\'existe pas');
  } else {
    if (afficher){
		if (document.all) {
			obj_balise.style.display='block';
		} else {
			switch(obj_balise.nodeName.toUpperCase()){
				case "TR":
					obj_balise.style.display='table-row';
					break;
				case "TD":
					obj_balise.style.display='table-cell';
					break;
				default:
					obj_balise.style.display='block';
					break;
			}
		}
    } else {
    	obj_balise.style.display='none';
    }
    if (xajax_save_div_status!=null && !pas_de_sauvegarde)
		xajax_save_div_status(script_name,id_balise,afficher);
  }
}


/**
 * Aide à la completition de champ time et date 
 */

function update_date(evenement,input_text){
	var key ;
	if (document.all) {key = window.event.keyCode;}
	else {key = evenement.which;}

	if (key=="8" || key=="47" || key=="0"){return;}
//	alert(key);
	if (input_text.value.length=="2" || input_text.value.length=="5")
		input_text.value=input_text.value+"/";
}

function update_date_time(evenement,input_text){
	var key ;
	if (document.all) {key = window.event.keyCode;}
	else {key = evenement.which;}

	if (key=="47" || key=="0"){return;}

	if(input_text.name=="date_jour"){  //v?rification pour le jour
		if (input_text.value.length=="2" || input_text.value.length=="5"){
			input_text.value=input_text.value+"/";
		}
	}else{
		if(input_text.name=="date_heure"){
			if (input_text.value.length=="2"){
				input_text.value=input_text.value+":";
			}
		}
	}
}




// ----------------------------------------------------------------------------
// RADIO OBJECT ---------------------------------------------------------------
// ----------------------------------------------------------------------------

function init_radio(a_name, a_value) {
  // alert('init_radio name=' + a_name + ' value=' + a_value);
  var i;
  for (i=0; i < a_name.length; i++){
    if (a_name[i].value == a_value) {
      a_name[i].checked = true;
    }
  }
} /// function init_radio

function get_radio_value(obj_radio) {
  // alert('--> get_radio_value');
  var i;
  var res = false;

  for (i=0; i < obj_radio.length; i++){
    if (obj_radio[i].checked) {
      res = obj_radio[i].value;
    }
  }
  
  // alert('<-- get_radio_value(' + obj_radio + ') => ' + res);
  return res;
}

// ----------------------------------------------------------------------------
// SELECT OBJECT --------------------------------------------------------------
// ----------------------------------------------------------------------------

function init_select(name, value) {
  // alert('name=' + name + ' value=' + value);
  var i;
  for (i=0; i < name.options.length; i++){
    if (name.options[i].value == value) {
      name.selectedIndex = i;
    }
  }
} // function

function get_select_value(name) {
  return name.options[name.selectedIndex].value;
}


// ----------------------------------------------------------------------------
// CHECK OF DATE --------------------------------------------------------------
// ----------------------------------------------------------------------------


function check_date_select(select_name, select_day, select_month, select_year) {
  var day   = 1 * get_select_value(select_day   );
  var month = 1 * get_select_value(select_month );
  var year  = 1 * get_select_value(select_year  );
  
  // alert('date: ' + day + '/' + month + '/' + year);
  
  nb_day_month = 0;
  switch ( month) {
  case 1 : case 3 : case 5 : case 7 : case 8 : case 10 : case 12 : nb_day_month = 31; break;
  case 4: case 6 : case 9 : case 11 : nb_day_month = 30; break;
  case 2 : 
    if (year % 4 == 0) 
      nb_day_month = 29; 
    else 
      nb_day_month = 28;
    break;
  } // switch
  
  if (nb_day_month < day) {
    alert('Ce jour du mois n\'existe pas dans le champ ' + select_name);
    // alert('month=' + month + ' => nb_day_month < day : ' + nb_day_month + ' < '+ day);
    init_select(select_day, nb_day_month);
    return false;
  }
}

function check_date_input_text(input_obj, field_name) {
  // alert('check_date : ' + input_obj + ',' + field_name);
  var tmp = input_obj.value.split('/');
  if (tmp.length != 3) {
    alert('Le format attendu pour la date est DD/MM/YYYY');
    return false;
  } 

  var day   = parseInt( tmp[0] );
  var month = parseInt( tmp[1] );
  var year  = parseInt( tmp[2] );

  if (false) alert('check_date ' + input_obj.value + '==> tmp.length=' + tmp.length + ' :  '  + 
		   tmp[0] + "->" + day + " " + 
		   tmp[1] + "->" + month + " " + 
		   tmp[2] + "->" + year );

  if (isNaN(day)) { 
    alert('Le jour ne peut pas être ' + tmp[0] + ' dans le champ ' + field_name);
    return false;
  }

  if (isNaN(month)) { 
    alert('Le mois ne peut pas être ' + tmp[1] + ' dans le champ ' + field_name);
    return false;
  }

  if (isNaN(year)) { 
    alert('L\'année ne peut pas être ' + tmp[2] + ' dans le champ ' + field_name);
    return false;
  }
  
  
  nb_day_month = 0;
  switch ( month) {
  case 1 : case 3 : case 5 : case 7 : case 8 : case 10 : case 12 : nb_day_month = 31; break;
  case 4: case 6 : case 9 : case 11 : nb_day_month = 30; break;
  case 2 : 
    if (year % 4 == 0) 
      nb_day_month = 29; 
    else 
      nb_day_month = 28;
    break;
  } // switch
  
  if (nb_day_month < day) {
    alert('Ce jour du mois n\'existe pas ' + '\n' + 'Champ '+ ' ' + field_name);
    // alert('month=' + month + ' => nb_day_month < day : ' + nb_day_month + ' < '+ day);
    return false;
  }

  return true;
}
