var bdc_codigo="", bdc_unidad="", bdc_resumen="", bdc_archivo="";
//////////////////////////////////////////////////////////////////////////////////////////////////////////////
// INTERFACE
// function BdcDefine ()				retorna {parámetro{|opción}\n}
// function BdcValida (opc1)				pasa valor opciones, retorna 0 o cadena de error
// function BdcCalcula (opc1)				pasa valor opciones, retorna 0 o cadena de error
// function BdcGlobal (gloopc1, glorot1)	pasa valor y rótulo de opciones, retorna 0 o cadena de error
// function BdcPrecio () 				retorna precio o {código|rendimiento[|factor]\n}
// function BdcUnidad () 				retorna el texto unidad
// function BdcResumen () 				retorna el texto resumen
// function BdcTexto ()					retorna el texto descriptivo
// function BdcPliego ()				retorna el pliego de condiciones {sección_pliego|texto_pliego|}

//////////////////////////////////////////////////////////////////////////////////////////////////////////////
// FUNCIONES DE ADAPTACIÓN A FIEBDC-95

var a=0,  b=1,  c=2,  d=3,  e=4,  f=5,  g=6,  h=7,  i=8,  j=9,  k=10, l=11, m=12, n=13, o=14, p=15, q=16, r=17, s=18, t=19, u=20, v=21, w=22, x=23, y=24, z=25;
var a1=26,b1=27,c1=28,d1=29,e1=30,f1=31,g1=32,h1=33,i1=34,j1=35,k1=36,l1=37,m1=38,n1=39,o1=40,p1=41,q1=42,r1=43,s1=44,t1=45,u1=46,v1=47,w1=48,x1=49,y1=50,z1=51;
var a2=52,b2=53,c2=54,d2=55,e2=56,f2=57,g2=58,h2=59,i2=60,j2=61; // ,k2=62,l2=63,m2=64,n2=65,o2=66,p2=67,q2=68,r2=69,s2=70,t2=71,u2=72,v2=73,w2=74,x2=75,y2=76,z2=77;
function CC(i) { 	
	if (i>=0  && i<26) return String.fromCharCode(97+i);	// 'a'
	if (i>=26 && i<52) return String.fromCharCode(39+i);	// 'A'
	if (i>=52 && i<62) return String(i-52);			// '0'	
	return "?";
}
function ABS(f)  { return Math.abs(f); }
function FTOA(f) { return (Math.round(f*1e5)/1e5).toString(); }
function ATOF(a) { var n=parseFloat(a); return isNaN(n)?0:n; }
function ATOL(a) { var n=parseInt(a);   return isNaN(n)?0:n; }
function INT(f)  { var n=parseInt(f);   return isNaN(n)?0:n; }
function ROUND(f,d) { var n=1; for (var i=0; i<d; i++) n*=10; return Math.round(f*n+1e-12)/n; } // 71.975>71.97 71.975000001>71.98
function BdcDefine () 
{
	//var s=""; for (var i=0; i<par.length; i++) s+=par[i].join("|")+"\n"; return s;
	var s=""; for (var i=0; i<parametros.length; i++) s+=parametros[i].join("|")+"\n"; return s;
}
//var cod, uni,res,tex,pli, pre,des, gra,ref, med;
var codigo, unidad,resumen,texto,pliego, precio,descom, grafico,referencia, medicion;
var dimensiones; // [0]x [1]y [2]z
var empaquetado; // [0]peso [1]volumen [2]nºbultos
var paropc, parrot;
function descompuesto (cod,ren,fac)
{ 
	if (ren) descom[descom.length]= [cod, ren, fac?fac:0]; 
}
function bdc_opciones (paropc1)
{
	paropc= paropc1
	var n= paropc.length; 
	parrot=[]; for (var i=0; i<n; i++) parrot[i]=parametros[i][paropc[i]+1];
	if (n>0) { A= paropc[0];  $A= parrot[0]; } 
	if (n>1) { B= paropc[1];  $B= parrot[1]; }
	if (n>2) { C= paropc[2];  $C= parrot[2]; }
	if (n>3) { D= paropc[3];  $D= parrot[3]; }
	if (n>4) { E= paropc[4];  $E= parrot[4]; }
	if (n>5) { F= paropc[5];  $F= parrot[5]; }
	if (n>6) { G= paropc[6];  $G= parrot[6]; }
	if (n>7) { H= paropc[7];  $H= parrot[7]; }
	if (n>8) { I= paropc[8];  $I= parrot[8]; }
	if (n>9) { J= paropc[9];  $J= parrot[9]; }
	if (n>10){ K= paropc[10]; $K= parrot[10]; }
	if (n>11){ L= paropc[11]; $L= parrot[11]; }
	if (n>12){ M= paropc[12]; $M= parrot[12]; }
	if (n>13){ N= paropc[13]; $N= parrot[13]; }
}
function BdcValida (paropc1)
{
	BdcCalcula1 (paropc1); // opciones (paropc1); 
	return calcula(1)
}
function BdcCalcula1 (paropc1)
{
	bdc_opciones (paropc1); unidad=resumen=texto=pliego=precio=grafico=referencia=medicion=""; dimensiones=[0,0,0]; empaquetado=[0,0,0]; descom=[];
	codigo= bdc_codigo; for (var i=0; i<paropc.length; i++) codigo+=CC(paropc[i]);
}
function BdcCalcula (paropc1)
{
	BdcCalcula1 (paropc1); 
	var e= calcula(0);
	if (pliego) referencia=pliego;
	if (!unidad) unidad=bdc_unidad;
	return e;
}
var gloopc, glorot;
function BdcGlobal (gloopc1, glorot1)
{
	gloopc= gloopc1 
	glorot= glorot1 
	var n= gloopc.length; 
	if (n>0) O= gloopc[0];
	if (n>1) P= gloopc[1];
	if (n>2) Q= gloopc[2];
	if (n>3) R= gloopc[3];
	if (n>4) S= gloopc[4];
	if (n>5) T= gloopc[5];
	if (n>6) U= gloopc[6];
	if (n>7) V= gloopc[7];
	var n= glorot.length; 
	if (n>0) $O= glorot[0];
	if (n>1) $P= glorot[1];
	if (n>2) $Q= glorot[2];
	if (n>3) $R= glorot[3];
	if (n>4) $S= glorot[4];
	if (n>5) $T= glorot[5];
	if (n>6) $U= glorot[6];
	if (n>7) $V= glorot[7]; 
}
function BdcDescom () 		{ var s=""; for (var i=0; i<descom.length; i++) s+=descom[i].join("|")+"\n"; return s; }
function BdcPrecio () 		{ return precio; }
function BdcCodigo ()		{ return codigo; }
function BdcUnidad ()		{ return unidad; }
function BdcResumen ()		{ return resumen; }
function BdcTexto ()		{ return texto; }
function BdcPliego ()		{ return pliego; }
function BdcGrafico ()		{ return grafico; }
function BdcReferencia ()	{ return referencia; } 

///////////////////////////////////////////////////////////////////////////
function conrestricciones() // Debe estar definida la matriz 'restricciones'
{
	for (var i=0; i<restricciones.length; i++) {
		for (var j=0; j<paropc.length; j++) {
			var r= restricciones[i][j];
			var p= paropc[j]+1;
			var n= !r || r>0 && p==r || r<0 && p!=r;
			// writeline (""+i, ""+j, "r"+r, "p"+p, "n"+n);
			if (!n) break;
		}
		if (j==paropc.length) return 1; // Cumple todas las restriccione
	}
	return 0;
}