<!--
// script écrit par J.-Ph. Guillemant,  2006/03
// mis a jour avec les limites de pages, 2006/05
// mis a jour pour les photos protégées, 2007/02
// affichage des descriptions non connues, 2007/04

// normalisation d'un nombre (string)
// -------------------------
function normal3s( val) {
var nvar = "";
if (val.length < 3 ) nvar += "0";
if (val.length < 2 ) nvar += "0";
nvar += val;
return nvar;
}

// preparer l'affichage d'une photo
// --------------------------------
function affphoto( form ) {

// controle numéro de photo
pagemax = pages[form.commune.value][form.registre.value][form.article.value - 1];
if( isNaN(form.photo.value) || form.photo.value == 0 )
  form.photo.value = 1;
if( pagemax && form.photo.value > pagemax ) form.photo.value = pagemax;

// set cookies
setCookie( "commune",  form.commune.selectedIndex );
setCookie( "registre", form.registre.selectedIndex );
setCookie( "article",  form.article.selectedIndex );
setCookie( "photo",    form.photo.value );
 
// normaliser la cote (minuscules sans espace)
var cote1 = reg[form.commune.value][form.registre.value][0].toLowerCase();
var Vcote = "";
j = 0;
for( i = 0; i < cote1.length; i ++ ) {
  caract = cote1.charAt(i);
  if ( caract != ' ') { Vcote += caract; j++; }
  }
// certains noms de répertoire ne sont pas complètement en minuscules.
// Il faut donc les corriger
for( i = 0; i < repert.length; i ++ ) {
  if( Vcote == repert[i][0] && form.article.value == repert[i][1] ) {
    Vcote = repert[i][2]; 
    break;
    }
  }

// protection de certaines photos
var adresse = "reserve.jpg";
for( i = 0; i < reserve.length; i ++) {
  if( reserve[i][0] == Vcote && reserve[i][1] == form.article.value
                             && reserve[i][2] == form.photo.value) break;
  }
if( i == reserve.length ) { /* OK pour afficher */
  // generation de l'adresse
  var adresse = "http://culture.lozere.fr/images/";
  if( Vcote.indexOf( "mi" ) == -1) { /* Etat-civil */
    adresse += "EtatCivil/jpeg/";
    extens = ( Vcote == "edt009e" && form.article.value == 11 ) 
             ? "/0000" : "/e0000";
    }
  else { /* Microfilm */
    adresse += "MicroFilms/jpeg/";
    extens = "/mi000";
    }
  adresse += Vcote;
  if( reg[form.commune.value][form.registre.value][1] != -1 )
    // seulement s'il y a un article dans la cote
    adresse += normal3s( form.article.value); 
  adresse += extens;
  adresse += normal3s( form.photo.value);
  adresse += ".jpg";
  }
paramFen = "left=0,top=0,width=screen.width,height=screen.height/2,";
paramFen += "resizable=yes,status=no,";
paramFen += "scrollbars=yes,toolbar=no,menubar=no,location=no";
Fenetre = open (adresse, "Fenetre", paramFen);
if( ! Fenetre)
  alert( "Vous devez autoriser les fenêtres pop-up\n(appelées aussi fenêtres publicitaires)");
return true;
}

// preparer le formulaire
// ----------------------
function initialise() {

var selc = getCookie( "commune" );
var selr = getCookie( "registre" );
var sela = getCookie( "article" );
var selp = getCookie( "photo" );

communes( document.refer );

valcom = 1;
if( selc ) { /* cookie commune */
  document.refer.commune.options[selc].selected = true;
  valcom = cmm[Number(selc)+1][0];
  }
registres( document.refer, valcom );

valreg = 0;
if( selr ) { /* cookie registre */
  document.refer.registre.options[selr].selected = true;
  valreg = selr;
  }
articles( document.refer, valcom, valreg );

valart = 0;
if( sela ) { /* cookie article */
  document.refer.article.options[sela].selected = true;
  valart = sela;
  }
/* cookie photo */
initphoto( document.refer, valcom, valreg, 
           document.refer.article.options[valart].value );
setphoto( document.refer, selp ? selp : 1 );
}

// changement de commune
// ---------------------
function chgeregistre( form ) {
registres( form, form.commune.value );
form.registre.options[0].selected = true;
chgearticle( form );
}

// changement de registre
// ----------------------
function chgearticle( form ) {
articles( form, form.commune.value, form.registre.value );
form.article.options[0].selected = true;
chgephoto( form );
}

// changement d'article
// -------------------
function chgephoto( form ) {
initphoto( form, form.commune.value, form.registre.value, form.article.value );
setphoto( form, 1 );
}

// mise à jour formulaire communes
// -------------------------------
function communes( form ){
form.commune.options.length = 0;
for( i = 1; i < cmm.length; i ++) {
  var o = new Option( cmm[i][1], cmm[i][0] );
  form.commune.options[form.commune.options.length] = o;
  }
}

// mise a jour formulaire registres
// --------------------------------
function registres( form, cvalue ) {
// top.document.title = "Photos AD48, "+ form.commune.options[cvalue-1].text; ------------
form.registre.options.length = 0;
for( i = 0; i < reg[cvalue].length; i ++) {
  var o = new Option( reg[cvalue][i][0], i );
  form.registre.options[form.registre.options.length]=o;
  }
}

// mise a jour formulaire articles
// -------------------------------
function articles( form, cvalue, rvalue ) {
form.article.options.length = 0;
switch( reg[cvalue][rvalue][1] ) {
  case 0: /* sequence */
    for( i = reg[cvalue][rvalue][2];i <= reg[cvalue][rvalue][3]; i ++ ) {
      var o = new Option( i, i );
      form.article.options[form.article.options.length]=o;
      }
    break;
  case -1: /* un article (implicite) */
    var o = new Option( "---", 1 );
    form.article.options[form.article.options.length]=o;
    break;
  case 1: /* un seul article */
    var o = new Option( reg[cvalue][rvalue][2], reg[cvalue][rvalue][2] );
    form.article.options[form.article.options.length]=o;
    break;
  default: /* valeurs discretes */
    for( i = 0; i < reg[cvalue][rvalue][1]; i ++ ) {
      var o = new Option( reg[cvalue][rvalue][i+2], reg[cvalue][rvalue][i+2] );
      form.article.options[form.article.options.length]=o;
      }
    break;
  }
}

// mise a jour formulaire description article et photo max
// -------------------------------------------------------
function initphoto( form, cvalue, rvalue, avalue ) {
// garder la ligne suivante en cas d'erreur
// alert( "commune = "+cvalue+", registre = "+rvalue+", article = "+avalue );
form.description.value = descr[cvalue][rvalue][avalue - 1];
var pagemax = pages[cvalue][rvalue][avalue - 1];
form.last.value = pagemax == 0 ? "---" : pagemax;
form.last.disabled = pagemax == 0 ? true : false;
}

// mise a jour numéro de photo
// ---------------------------
function setphoto( form, pvalue ) {
form.photo.value = pvalue;
}

// decrementer numero de photo
// ---------------------------
function prevphoto( form  ) {
if( form.photo.value > 1 ) form.photo.value -= 1;
}

// pour test: photo = photo - 20
// -----------------------------
function photom20( form ) {
form.photo.value = form.photo.value > 20 ? (form.photo.value - 20) : 1;
}

// pour test: photo = photo + 100
// ------------------------------
function photop100( form ) {
if( form.photo.value == 1 ) form.photo.value = 0;
form.photo.value = Number(form.photo.value) + 100;
}

// incrementer numero de photo
// ---------------------------
function nextphoto( form ) {
pagemax = pages[form.commune.value][form.registre.value][form.article.value - 1];
if( pagemax == 0 || pagemax > form.photo.value )
  form.photo.value = Number(form.photo.value) + 1;
}

// dernier numéro de photo
// -----------------------
function lastphoto( form ){
pagemax = pages[form.commune.value][form.registre.value][form.article.value - 1];
form.photo.value = pagemax;
}

// ecrire cookie
// -------------
function setCookie( nom, val ) {
var expire = new Date();
var unAn = expire.getTime() + (365*24*60*60*1000);
expire.setTime(unAn);
document.cookie = nom + "=" + val + "; expires=" + expire.toGMTString();
}

// lire cookie
// -----------
function getCookie( nom ) {
var arg = nom+"=";
var alen = arg.length;
var clen = document.cookie.length;
var i = 0;
while (i < clen) {
  var offset = i + alen;
  if (document.cookie.substring(i, offset)== arg) {
    var endstr = document.cookie.indexOf (";", offset);
    if (endstr == -1) endstr = document.cookie.length;
    return unescape(document.cookie.substring(offset, endstr));
    }
  i = document.cookie.indexOf(" ",i) + 1;
  if (i == 0) break;
  }
return null;
}
//-->
