	/*
	 * Arxiu: calcul_num_conte.js
	 * (c) 2007, Joan Quintana Martínez. 
	 * Aquest arxiu conté les funcions que tracten l'algoritme per a validar un número de conte
	 * i calcular el DC.
	 */
	
	//
	
	<!--
	///////////////////////////////////////////////////////////////////
	// (C) 2007, Joan Quintana Martinez (www.ergates.net)            //
	// Aquest còdig i scripts adjunts són de domini públic           //
	///////////////////////////////////////////////////////////////////
	
	// Els camps del número de conte han de ser:
	// Entitat       : ncb1
	// Sucursal      : ncb2
	// Dígit Control : ncb3
	// Número conte  : ncb4
	
	// Valors constants a utilitzar per a l'algoritme del càlcul del Dígit de control
	var arrValors1, arrValors2;
	
	arrValors1 = new Array();   arrValors2 = new Array();
	arrValors1[0] = 7;			arrValors2[0] = 10;
	arrValors1[1] = 3;			arrValors2[1] = 9;
	arrValors1[2] = 6;			arrValors2[2] = 7;
	arrValors1[3] = 1;			arrValors2[3] = 3;
	arrValors1[4] = 2;			arrValors2[4] = 6;
	arrValors1[5] = 4;			arrValors2[5] = 1;
	arrValors1[6] = 8;			arrValors2[6] = 2;
	arrValors1[7] = 5;			arrValors2[7] = 4;
								arrValors2[8] = 8;
								arrValors2[9] = 5;

	function valitNumConte(objForm) 
	{ 
		var blnCorrecte = false;

		primerDC = objForm.ncb3.value.charAt(0);
		segonDC = objForm.ncb3.value.charAt(1);

		primerDCForm = valitPrimerDC(objForm);
		segonDCForm = valitSegonDC(objForm);

		if ((primerDCForm==primerDC) && (segonDCForm==segonDC) && primerDC!="" && segonDC!="") {
			blnCorrecte = true;
		}
		
		return blnCorrecte
	}
	
	function valitPrimerDC(objForm)
	{
		var auxDC=0, DC=-1;
		var camp1, camp2;
			
		camp1 = objForm.ncb1.value;
		camp2 = objForm.ncb2.value;
		
		if ( (camp1!="") && valitSencerPositiu(objForm.ncb1) && (camp1.length==4) && 
		     (camp2!="") && valitSencerPositiu(objForm.ncb2) && (camp2.length==4)
		   )
		{
			// Calculamos el valor de la entidad
			for (i=0; i<4; i++) {
				auxDC += camp1.charAt(i) * arrValors1[i];
			}
			// Calculamos el valor de la sucursal
			for (i=4; i<8; i++) {
				auxDC += camp2.charAt(i-4) * arrValors1[i];
			}
			// El resto de dividir el valor entre 11 és el DC.
			DC = auxDC % 11;
			if (DC==10) CD = 1;
		}
		else {
			DC="";
		}
		
		return DC;
	}
	
	function valitSegonDC(objForm)
	{
		var auxDC=0, DC=-1;
		var camp4;

		camp4 = objForm.ncb4.value;

		if ((camp4 != "") && valitSencerPositiu(objForm.ncb4) && (camp4.length == 10))
		{
			// Calculamos el valor de la cuenta
			for (i=0; i<10; i++) {
				auxDC += camp4.charAt(i) * arrValors2[i];
			}
			// El resto de dividir el valor entre 11 és el DC.
			DC = auxDC % 11;
			if (DC==10) CD = 1;
		}
		else {
			DC=""
		}
		
		return DC;
	}
	
	function obteDigitControl(objForm)
	{	
		var camp1, camp2, camp4;
		var intDC1, intDC2;
			
		camp1 = objForm.ncb1.value;
		camp2 = objForm.ncb2.value;
		camp4 = objForm.ncb4.value;
		
		if ( (camp1!="") && valitSencerPositiu(objForm.ncb1) && (camp1.length==4) && 
		     (camp2!="") && valitSencerPositiu(objForm.ncb2) && (camp2.length==4) &&
		     (camp4 != "") && valitSencerPositiu(objForm.ncb4) && (camp4.length == 10)
		   )
		{
			intDC1 = valitPrimerDC(objForm);
			intDC2 = valitSegonDC(objForm);

			if (intDC1!="" && intDC2!="") {
				objForm.ncb3.value = intDC1 + "" + intDC2;
			}
		}
		else {
			objForm.ncb3.value = "";
		}
		
	}

	//-->
