var assist_obj_valeur
var assist_obj_display
var assist_date_calendrier

var xmlHttp_display_info
var xmlHttp_charge_lieux
var xmlHttp_charge_individus
var xmlHttp_ligne_src_ind
var new_ligne_src_ind

/* Information d'une photo avec MAP */

function map_zone_info_disp(nom_zone,data,evt) {
  if (data != '') {
    document.getElementById(nom_zone).style.display = 'block'
    document.getElementById(nom_zone).innerHTML=data ;
    moveObject(nom_zone,evt)
  } else {
    document.getElementById(nom_zone).style.display = 'none'
  }
}

/* Suppression d'une ligne dans un tableau */

function suppr_ligne(obj_table_name, obj_appel) {
  var index = obj_appel.parentNode.parentNode.rowIndex ;
  document.getElementById(obj_table_name).deleteRow(index);
}

/* Ajout d'un INDIVIDU pour une SOURCE */

function ajoute_src_ind_ligne() { 
  var no_ligne = document.getElementById('src_ind_liste').rows.length - 1
  new_ligne_src_ind = document.getElementById('src_ind_liste').insertRow(no_ligne)
  var url="ajax/ajoute_src_ind.php3?n=new_" + no_ligne
  xmlHttp_ligne_src_ind=GetXmlHttpObject(stateChanged_ajoute_src_ind_ligne)
  xmlHttp_ligne_src_ind.open("GET", url , true)
  xmlHttp_ligne_src_ind.send(null)
} 

function stateChanged_ajoute_src_ind_ligne() { 
  if (xmlHttp_ligne_src_ind.readyState==4 || xmlHttp_ligne_src_ind.readyState=="complete") { 
    new_ligne_src_ind.innerHTML = xmlHttp_ligne_src_ind.responseText
  } 
} 

/* Permutation des individus dans un LIEN_INDIVIDU */

function switch_ind (obj_src_val,obj_src_dsp,obj_dst_val,obj_dst_dsp) {
  tmp_val = document.getElementById(obj_src_val).value
  tmp_dsp = document.getElementById(obj_src_dsp).value
  document.getElementById(obj_src_val).value = document.getElementById(obj_dst_val).value
  document.getElementById(obj_src_dsp).value = document.getElementById(obj_dst_dsp).value
  document.getElementById(obj_dst_val).value = tmp_val
  document.getElementById(obj_dst_dsp).value = tmp_dsp
}

/* Assistant DATE */

function affiche_readable_value(type) { 
  switch(type) {
    case 'date':
      valeur = document.getElementById(assist_obj_valeur).value
      var url="ajax/affiche_readable_date.php3?val=" + encodeURIComponent(valeur)
      break
  }  
  xmlHttp_display_info=GetXmlHttpObject(stateChanged_readable_value)
  xmlHttp_display_info.open("GET", url , true)
  xmlHttp_display_info.send(null)
} 

function stateChanged_readable_value() { 
  if (xmlHttp_display_info.readyState==4 || xmlHttp_display_info.readyState=="complete") { 
    document.getElementById(assist_obj_display).value = xmlHttp_display_info.responseText
  } 
} 

function assistant_date(obj_valeur,obj_display,evt) {
  assist_obj_valeur = obj_valeur
  assist_obj_display = obj_display
  date_valeur = document.getElementById(obj_valeur).value
  date_nature = date_valeur.substr(8,1)
  date_calendrier = date_valeur.substr(9,1)
  if (date_nature != 'I') {
    date_annee = date_valeur.substr(0,4)
    date_mois = date_valeur.substr(4,2)
    date_jour = date_valeur.substr(6,2)
    document.getElementById('greg_date_jour').value = date_jour
    document.getElementById('greg_date_mois').selectedIndex = Number(date_mois)
    document.getElementById('greg_date_annee').value = date_annee
  } else {
    date_annee_deb = date_valeur.substr(0,4)
    date_annee_fin = date_valeur.substr(6,2) + date_valeur.substr(4,2)
    document.getElementById('greg_date_an_min').value = date_annee_deb
    document.getElementById('greg_date_an_max').value = date_annee_fin
  }
  document.getElementById('assistant_date').style.display = 'block'
  if (date_calendrier == 'R') {
    affiche_calendrier_repu()
    date_republicaine = JJ_to_republican(gregorian_to_JJ(Number(date_jour), Number(date_mois), Number(date_annee)))
    document.getElementById('repu_date_jour').value = date_republicaine[0]
    document.getElementById('repu_date_mois').selectedIndex = Number(date_republicaine[1])
    document.getElementById('repu_date_annee').value = date_republicaine[2]
  } else {
    document.getElementById('greg_date_nature').value = date_nature
    change_greg_date_nature(document.getElementById('greg_date_nature'))
    affiche_calendrier_greg()
  }
  moveObject('assistant_date',evt)
}

function change_greg_date_nature(obj_nature) {
  if (obj_nature.value == 'I') {
    document.getElementById('greg_date_jour_mois_an').style.display = 'none'  
    document.getElementById('greg_date_entre_ans').style.display = 'inline'  
  } else {
    document.getElementById('greg_date_jour_mois_an').style.display = 'inline'  
    document.getElementById('greg_date_entre_ans').style.display = 'none'  
  }  
}

function retour_valeur_date() {
  switch (assist_date_calendrier) {
    case 'R':
      dateR_jour = document.getElementById('repu_date_jour').value
      dateR_mois = document.getElementById('repu_date_mois').selectedIndex
      dateR_annee = document.getElementById('repu_date_annee').value
      jour_julien = republican_to_JJ(Number(dateR_jour), Number(dateR_mois), Number(dateR_annee))
      if (jour_julien != '') {
        document.getElementById(assist_obj_valeur).value = JJ_to_griot(jour_julien) + '=R'
        affiche_readable_value('date')
        assistant_fermer('assistant_date')
      }
      break;
    case 'G':
    default: 
      type_date = document.getElementById('greg_date_nature').options[document.getElementById('greg_date_nature').selectedIndex].value
      switch (type_date) {
        case 'B':
          type_date = '<'
          break
        case 'A':
          type_date = '>'
          break
      }
      if (type_date != 'I') {
        date_jour = format_integer(document.getElementById('greg_date_jour').value,2)
        date_mois = format_integer(document.getElementById('greg_date_mois').selectedIndex,2)
        date_annee = format_integer(document.getElementById('greg_date_annee').value,4)
        if (date_jour == '00') date_jour = '  '
        if (date_mois == '00') date_mois = '  '
        if (date_annee == '0000') date_annee = '    '
        document.getElementById(assist_obj_valeur).value = date_annee + date_mois + date_jour + type_date
        affiche_readable_value('date')
        assistant_fermer('assistant_date')
      } else {
        date_min = format_integer(document.getElementById('greg_date_an_min').value,4)
        date_max = format_integer(document.getElementById('greg_date_an_max').value,4)
        if ((date_min != '0000') && (date_max != '0000')) {
          if (date_min > date_max) {
            document.getElementById(assist_obj_valeur).value = date_max + date_min.substr(2,2) + date_min.substr(0,2) + type_date
          } else {
            document.getElementById(assist_obj_valeur).value = date_min + date_max.substr(2,2) + date_max.substr(0,2) + type_date
          }
          affiche_readable_value('date')
          assistant_fermer('assistant_date')
        }
      }
      break;
  }
}

function affiche_calendrier_greg() {
  assist_date_calendrier = 'G'
  document.getElementById('assistant_date_gregorien').style.display = 'block'
  document.getElementById('assistant_date_republicain').style.display = 'none'
  document.getElementById('assistant_onglet_repu').style.display = 'inline'
  document.getElementById('assistant_onglet_greg').style.display = 'none'
}

function affiche_calendrier_repu() {
  assist_date_calendrier = 'R'
  document.getElementById('assistant_date_gregorien').style.display = 'none'
  document.getElementById('assistant_date_republicain').style.display = 'block'
  document.getElementById('assistant_onglet_repu').style.display = 'none'
  document.getElementById('assistant_onglet_greg').style.display = 'inline'
}

/* Assistant LIEU */
 
function assistant_lieu(obj_valeur,obj_display,evt) {
  assist_obj_valeur = obj_valeur
  assist_obj_display = obj_display
  document.getElementById('pattern_lieu').value = ''
  document.getElementById('assistant_lieu').style.display = 'block'
  moveObject('assistant_lieu',evt)
}

function charge_lieux() {
  valeur = document.getElementById('pattern_lieu').value
  var url="ajax/affiche_readable_lieu.php3?val=" + encodeURIComponent(valeur)
  xmlHttp_charge_lieux=GetXmlHttpObject(stateChanged_charge_lieux)
  xmlHttp_charge_lieux.open("GET", url , true)
  xmlHttp_charge_lieux.send(null)
} 

function stateChanged_charge_lieux() { 
  if (xmlHttp_charge_lieux.readyState==4 || xmlHttp_charge_lieux.readyState=="complete") { 
    document.getElementById('assistant_lieu_liste').innerHTML = xmlHttp_charge_lieux.responseText
  } 
}

/* Assistant INDIVIDU */

function assistant_individu(obj_valeur,obj_display,champ,clause_where,evt) {
  assist_obj_valeur = obj_valeur
  assist_obj_display = obj_display
  document.getElementById('assistant_ind_champ').value = champ
  document.getElementById('assistant_ind_where').value = clause_where
  document.getElementById('assistant_individu').style.display = 'block'
  moveObject('assistant_individu',evt)
}

function charge_individus() {
  valeur = document.getElementById('pattern_individu').value
  champ = document.getElementById('assistant_ind_champ').value
  clause_where = document.getElementById('assistant_ind_where').value
  var url="ajax/affiche_readable_individu.php3?val=" + encodeURIComponent(valeur) + '&field=' + encodeURIComponent(champ) + '&where=' + encodeURIComponent(clause_where)
  xmlHttp_charge_individus=GetXmlHttpObject(stateChanged_charge_individus)
  xmlHttp_charge_individus.open("GET", url , true)
  xmlHttp_charge_individus.send(null)
} 

function stateChanged_charge_individus() { 
  if (xmlHttp_charge_individus.readyState==4 || xmlHttp_charge_individus.readyState=="complete") { 
    document.getElementById('assistant_individu_liste').innerHTML = xmlHttp_charge_individus.responseText
  } 
}

/* Assistant UNION */

function assistant_union(obj_valeur,obj_display,evt) {
  document.getElementById('assistant_union').style.display = 'block'
  moveObject('assistant_union',evt)
}

/* Fonctions communes */

function colle_valeurs(valeur_champ,obj,assistant) {
  document.getElementById(assist_obj_valeur).value = valeur_champ
  document.getElementById(assist_obj_display).value = obj.innerHTML
  document.getElementById(assistant).style.display = 'none'
}

function assistant_fermer(obj_to_close) {
  document.getElementById(obj_to_close).style.display = 'none'
}

function moveObject(obj_to_move,e) {
  var tempX = 0
  var tempY = 0
  var offset = 5
  if (document.all) {
    tempX = event.clientX + document.body.scrollLeft
    tempY = event.clientY + document.body.scrollTop
  } else {
    tempX = e.pageX
    tempY = e.pageY
  }
  if (tempX < 0){tempX = 0}
  if (tempY < 0){tempY = 0}
  document.getElementById(obj_to_move).style.top  = (tempY + offset) + 'px'
  document.getElementById(obj_to_move).style.left = (tempX + offset) + 'px'
}


//GESTION DES ECHANGES AVEC LE SERVEUR
function GetXmlHttpObject(handler) { 
  var objXmlHttp=null  
  if (navigator.userAgent.indexOf("MSIE")>=0) { 
    var strName="Msxml2.XMLHTTP"
    if (navigator.appVersion.indexOf("MSIE 5.5")>=0) {
      strName="Microsoft.XMLHTTP"
    } 
    objXmlHttp=new ActiveXObject(strName)
    objXmlHttp.onreadystatechange=handler
    return objXmlHttp
  } 
  if (navigator.userAgent.indexOf("Mozilla")>=0) {
    objXmlHttp=new XMLHttpRequest()
    objXmlHttp.onload=handler
    objXmlHttp.onerror=handler 
    return objXmlHttp
  }
}
