// Routines Javascript du zoom sur une fiche produit

var cat_type='';		// type de catalogue = f-i-b

print << 'bloc_end';
// Vérif nb de check cochés dans la zone "je souhaite une offre de..." (maxi autorisé= 2)
// Retourne false si >2 PAR CATEGORIE (demande =2 max, relance=2 max), true sinon
function vchk() {
	var f=self.document.check.demande,demande=0,relance=0;
	if(f) {
		if(f.length) { for(i=0; i<f.length; i++) if(f[i].checked) if(f[i].value<4) demande++; else relance++ }	// plusieurs éléments de checkbox
		else if(f.checked) demande++;											// 1 seul élément de checkbox
		if(demande>2 || relance>2) return false; else return true;
	}
}

// =========== SELECTIONS GEOGRAPHIQUES ==================
// Appelé par la cloture de saisie des zones (depts ou regions)
// si aucune sélection n'est mémorisée, repasse la sélection géographique sur "France entière" 
function verif_regions(z) {
	var c=lect_cook(true,'zones'),ok=false;
	if(c) {
		var i=c.indexOf(':');
		var sign= (i>-1) ? c.substring(0,i) : '';		// Signature
		c=c.substring(sign.length+1);					// contenu
		ok= sign && c.substring(0,3) != '000';
	}
	if(!ok) self.document.check.geo[0].click();			// revalide "France entière"
	else {
		if(sign==0) document.check.geo[3].checked=true;			// Régions
		else if(sign==1) document.check.geo[4].checked=true;	// Départements
	} 
}


// =============== GESTION DES NAFS ==================
// Modification de la sélection NAF dans le caddie
// le nr de la fiche dans le caddie est dans la variable globale nr_fic (0..n)
function naf_mod(x,t) {	// x >-1 -> effacement du code NAF de rang 'x', contenu = t
						// x =-1 -> effacement de la section NAF entière

	var i,d='',r=true,v,c=cook,mess='';

	// Message de confirmation préalable si effacement
	if(x==-1) mess= "Effacer tous les codes NAF de cette ligne";
	else if(x>-1) mess= "Effacer le code NAF " + t;
	if(mess) r=confirm(mess + " ?");
	if(r) {
		cde(x,true);		// ENR fiche
		n=parseFloat(nr_fic);
		if(x==-1) r = Cde_enr(n,'naf','');		// -- Effacement de tous les NAF
		else {									// -- Effacement du code NAF de rang x
			v=Cde_lect(n,'naf');
			if(v=='error!') r=false;
			else {
				v= v.split('|');
				for(i=0;i<v.length;i++) { if(i != x) d+= v[i] + '|' }
				d=d.substring(0,d.length-1);	// élimine le dernier '|'
				r=Cde_enr(n,'naf',d);
			}
		}

		if(r) {						// Effacement OK
			memo_cook(cook);
			document.location='cgi-bin/go_ficheprod.cgi?f=' + n + '&l=fr&d=demande&c='+cat_type+'&p='+'&from='+nfic;
		}
		else {						// Effacement manqué
			cook=lect_cook(true)
			Cde_alert(2);
		}
	}
}


// Saut à la page "NAF" pour sélection de codes
// Enregistrement de l'état de la demande de comptage, puis saut
function naf() {
	cde(true,true);						// mémo du cookie correspondant à la demande en cours
	if(ok_enr) {						// var globale : true = enregistrement OK, false = err
		self.document.mcde.action= 
			  linkto('naf_' + ok_naf,1)
			+ '?sel=' + current_fic		// current_fic = var globale (nr de fiche en cours dans caddie)
			+ '&cat=' + cat_type		// cat_type : idem ( type de catalogue = f-i-b)
		;
		self.document.mcde.submit();	// submit afin de transférer le champ 'cde' 
	}
}


// ================ ROUTINES DE LA DEMANDE DE COMPTAGE =================
// Mémo de la demande en cours dans le caddie (les cases cochées, ou toute la fiche si pas de case à cocher)
// positionne var globale "ok_enr" à true si enregistrement ok, ou false sinon
// ATT : "nr_fic" indique une modif en cours, si sa longueur>0. Sinon, c'est une nouvelle fiche
// x vrai -> ne pas sauter à la page de récap après mémo (utilisé par naf())
var ok_enr;
var cook=lect_cook(true);
var current_fic=-1;
function cde(x,bypass) {

	nchk=parseInt(nchk,10)				// Ajax retourne "0"
	if(!bypass) var bypass=false;
	var v='';							// mémo des checks internes au corps de la fiche
	var d, err=false;
	f = self.document.check.chkbox;		// checks internes au contenu de la fiche
	if(nchk) {							// Vrai s'il y a des checkboxs de sélection des fonctions
		if(!f.length && f.checked) v=f.value.toString()+'|'		// 1 seule checkbox, cochée
		else for(var i=0; i<f.length; i++) { if(f[i].checked) v+= f[i].value.toString() + '|' }
	}

	if(ok_geo) {
		var f=self.document.check.geo,j=-1,mess=''
		for(var i=0; i<f.length; i++) if(f[i].checked) j=i
		var geo_sel= j.toString() + (j<3? '' : lect_cook(true,'zones'))
	}
	else var geo_sel='';

	var f=self.document.check.siege,siege='';
	if(f) {for(i=0; i<f.length; i++) if(f[i].checked) siege+= ':' + i.toString() + ':'}

	var f=self.document.check.presence,presence='';
	if(f) {
		if(f.length) { for(i=0; i<f.length; i++) if(f[i].checked) presence+= ':' + f[i].value + ':'}	// plusieurs éléments "checkbox"
		else { if(f.checked) presence+= ':' + f.value + ':' }			// 1 seule checkbox
	}

	var f=self.document.check.effectif,effectif='';
	if(f) {for(i=0; i<f.length; i++) if(f[i].checked) effectif+= ':' + i.toString() + ':'}

	var remeff=self.document.check.remeff ? escape(self.document.check.remeff.value) : '';		// REM 'effectif'
	var remglob=self.document.check.remglob ? escape(self.document.check.remglob.value) : '';	// REM globale

	if(remglob.length>150) mess='11';

	var f=self.document.check.demande,demande='';
	if(f) {
		if(f.length) {	// plusieurs éléments "checkbox"
			for(i=0; i<f.length; i++) if(f[i].checked) demande+= ':' + f[i].value + ':';
		}
		else {			// 1 seule checkbox
			if(f.checked) demande+= ':' + f.value + ':';
		}
	}

	var remfin=self.document.check ? escape(self.document.check.remfin.value) : '';				// REM finale
	if(remfin.length>150) mess='12';

	var remloc=self.document.check.remloc ? escape(self.document.check.remloc.value) : '';		// location pour ... "autre"

	if(!v && nchk && !bypass) {		// bypass est vrai lorsqu'on ne veut pas obliger à remplir les check
									// lors de l'enregistrement de la fiche (ex : lors des manipulations 
									// des codes NAF)
		mess='10';
		err=true;
	}

	if (!mess) {
		if(v) v= v.substring(0,v.length-1)		// élimine dernier '|'
		var i= (nr_fic.length) ? parseFloat(nr_fic) : Cde_dispo();		// Nr de la fiche en modif, ou nouvelle
		if(i==-1) {
			Cde_alert(0);						// --- plus de place -> alert
			err=true
		}
		else {
			current_fic=i;			// save nr de fiche en cours
			var c=cook;				// sauvegarde du caddie
			if(v.length>97) {		// checks du corps de fiche : maxi = 97 octets
				ok=false;
				mess='13';
			} 
			else {	// ---------- Enregistrement des champs
				ok=Cde_enr(i,'fic',nfic);						// nom du fichier
				ok = ok && Cde_enr(i,'nr',v);					// Sélection de fonctions
				if(!ok_naf) ok = ok && Cde_enr(i,'naf','no');	// filtrage NAF non autorisé
				ok=ok && Cde_enr(i,'geo',geo_sel);				// filtre géographique
				ok=ok && Cde_enr(i,'siege',siege);				// siège / secondaire
				ok=ok && Cde_enr(i,'presence',presence);		// présence tel fax...
				ok=ok && Cde_enr(i,'effectif',effectif);		// tranches d'effectif
				ok=ok && Cde_enr(i,'remeff',remeff);			// tranches d'effectif
				ok=ok && Cde_enr(i,'remglob',remglob);			// remarque 'autre'
				ok=ok && Cde_enr(i,'demande',demande);			// type de location
				ok=ok && Cde_enr(i,'remfin',remfin);			// remarque finale
				ok=ok && Cde_enr(i,'remloc',remloc);			// remarque finale
			}
			if(ok) {	// enregistrement OK -> save cookie et jump éventuel vers page de récap
				memo_cook(cook);
				ok_enr=true;									// indic enregistrement OK
				if(!x) {										// x vrai = enregistrement sans jump
					document.location='../francais/caddie-suite.php';
				}
			}

			else {		// Enregistrement impossible
				cook=c;		// restit cookie
				if(!mess) Cde_alert(1);		// Panier trop plein
				err=true;
			}
		}
	}
	if(mess) window.open('cgi-bin/erreur.cgi?e=' + mess + '&f=../francais/datas/errors.pl');
	ok_enr= !err;
}

