	var vectorDeArticulos = new Array();
	
		
	



	
	/* CJ-A1 */
	var articuloCJA1 = new Object();
	articuloCJA1.referencia = "CJ-A1";
	articuloCJA1.modelo = "Kit llantas";
	articuloCJA1.opcion = new Array();
	
	var opcionKITCJA1 = new Object();
	opcionKITCJA1.idOpcion = "KIT";
	opcionKITCJA1.precio = "15.33";
	articuloCJA1.opcion[0] = opcionKITCJA1;
	
	var opcionKITCJA1 = new Object();
	opcionKITCJA1.idOpcion = "KIT";
	opcionKITCJA1.precio = "15.33";
	articuloCJA1.opcion[1] = opcionKITCJA1;
	
	var opcionKITCJA1 = new Object();
	opcionKITCJA1.idOpcion = "KIT";
	opcionKITCJA1.precio = "15.33";
	articuloCJA1.opcion[2] = opcionKITCJA1;
	
	vectorDeArticulos[0] = articuloCJA1;

	/* CJ-A2 */
	var articuloCJA2 = new Object();
	articuloCJA2.referencia = "CJ-A2";
	articuloCJA2.modelo = "Kit chasis";
	articuloCJA2.opcion = new Array();
	
	var opcionKITCJA2 = new Object();
	opcionKITCJA2.idOpcion = "KIT";
	opcionKITCJA2.precio = "8.75";
	articuloCJA2.opcion[0] = opcionKITCJA2;
	
	var opcionKITCJA2 = new Object();
	opcionKITCJA2.idOpcion = "KIT";
	opcionKITCJA2.precio = "8.75";
	articuloCJA2.opcion[1] = opcionKITCJA2;
	
	var opcionKITCJA2 = new Object();
	opcionKITCJA2.idOpcion = "KIT";
	opcionKITCJA2.precio = "8.75";
	articuloCJA2.opcion[2] = opcionKITCJA2;
	
	vectorDeArticulos[1] = articuloCJA2;

		
	/* CJ-A3 */
	var articuloCJA3 = new Object();
	articuloCJA3.referencia = "CJ-A3";
	articuloCJA3.modelo = "Kit neumáticos clásicos";
	articuloCJA3.opcion = new Array();
	
	var opcionKITCJA3 = new Object();
	opcionKITCJA3.idOpcion = "KIT";
	opcionKITCJA3.precio = "3";
	articuloCJA3.opcion[0] = opcionKITCJA3;
	
	var opcionKPPCJA3 = new Object();
	opcionKPPCJA3.idOpcion = "KPP";
	opcionKPPCJA3.precio = "3";
	articuloCJA3.opcion[1] = opcionKPPCJA3;
	
	var opcionRTRCJA3 = new Object();
	opcionRTRCJA3.idOpcion = "RTR";
	opcionRTRCJA3.precio = "3";
	articuloCJA3.opcion[2] = opcionRTRCJA3;
	
	vectorDeArticulos[2] = articuloCJA3;
	
	
	/*
	 * Actualiza los campos modelo, opcion, unidades y precio cuando se selecciona una
	 * nueva referencia. Si la nueva referencia es la -1 inicializa todos los campos
	 * mencionados anteriormente.
	 *
	 * Esta funcion se ejecuta en el onChange() del SELECT que almacena las referencias.
	 */
	function actualizaCampos(linea, referenciaSeleccionada) {
		var posicionSeleccionada = getPosicionAPartirDeReferencia(referenciaSeleccionada);
	
		if (posicionSeleccionada == -1) {
			inicializarCampos(linea);
			return;
		}
	
		// Incluir en el campo MODELO la descripcion de la referencia seleccionada
		var articulo = vectorDeArticulos[posicionSeleccionada];
		document.getElementById("inputModelo" + linea).value = articulo.modelo;
		
		// Activar el SELECT de las opciones y el INPUT de las unidades
		document.getElementById("selectOpcion" + linea).disabled = false;
		document.getElementById("inputUnidades" + linea).disabled = false;
		
		var opcionSeleccionada = document.getElementById("selectOpcion" + linea).value;
		actualizaOpcion(linea, posicionSeleccionada, opcionSeleccionada);
	}

	/*
	 * Devuelve la posicion que tiene el primer articulo con referencia "referencia" en el
	 * vector de articulos.
	 *
	 * Si la referencia no se encuentra devuelve -1.
	 */
	function getPosicionAPartirDeReferencia(referencia) {
		for (var i = 0; i < vectorDeArticulos.length; i++) {
			if (vectorDeArticulos[i].referencia == referencia) {
				return i;
			}
		}
		
		return -1;
	}
	
	/*
	 * Inicializa diferentes campos cuando se selecciona la referencia -1.
	 */
	function inicializarCampos(linea) {
		document.getElementById("inputModelo" + linea).value = "";
		document.getElementById("inputUnidades" + linea).value = "";
		document.getElementById("inputPrecio" + linea).value = "";
		document.getElementById("selectOpcion" + linea).disabled = true;
		document.getElementById("inputUnidades" + linea).disabled = false;
	}
	
	/*
	 * Actualiza el campo precio cuando se selecciona una opcion diferente.
	 *
	 * Esta funcion se ejecuta cuando se lanza el evento onChange() del SELECT de las opciones.
	 */
	function actualizaOpcion(linea, referenciaSeleccionada, opcionSeleccionada) {
		actualizaPrecio(linea, referenciaSeleccionada, opcionSeleccionada, 1);
	}
	
	/*
	 * Actualiza el campo precio cuando se modifican las unidades de un determinado articulo.
	 *
	 * Esta funcion se ejecuta cuando se lanza el evento onKeyDown() del INPUT de las unidades.
	 */
	function actualizaPrecio(linea, referenciaSeleccionada, opcionSeleccionada, unidades) {
		var posicionOpcionSeleccionada = getPosicionOpcion(opcionSeleccionada);
	
		if (compruebaUnidades(unidades)) {
			document.getElementById("inputUnidades" + linea).value = unidades;
		
			var articulo = vectorDeArticulos[referenciaSeleccionada];
			var precio = articulo.opcion[posicionOpcionSeleccionada].precio;

			document.getElementById("inputPrecio" + linea).value = redondear(parseFloat(precio) * parseInt(unidades));
		} else {
			document.getElementById("inputPrecio" + linea).value = "";
		}
	}
	
	/*
	 * Devuelve la posicion dentro del vector de opciones de la opcion seleccionada.
	 */
	function getPosicionOpcion(opcionSeleccionada) {
		if (opcionSeleccionada == "KIT") {
			return 0;
		}
		if (opcionSeleccionada == "KPP") {
			return 1;
		}
		if (opcionSeleccionada == "RTR") {
			return 2;
		}
	}
	
	/*
	 * Comprueba si el parametro "unidades" es vacio o no es un numero.
	 */
	function compruebaUnidades(unidades) {
		if (unidades == "" || isNaN(unidades)) {
			return false;
		}
		
		return true;
	}
	
	/*
	 * Genera tantas lineas de pedido como indique el parametro "numeroLineas".
	 */
	function generaLineasDePedido(numeroLineas) {
		for (var i = 0; i < numeroLineas; i++) {
			document.write('<tr>');
			
			// Select de la referencia
			document.write('	<td>');
			document.write('		<select name="referencia' + i + '" id="selectReferencia' + i + '" onChange="javascript: actualizaCampos(' + i + ', this.value);">');

			for (var j = 0; j < vectorDeArticulos.length; j++) {
				document.write("<option value='" + vectorDeArticulos[j].referencia + "'>" + vectorDeArticulos[j].referencia + "</option>");
			}
			
			document.write('			<option selected value="-1">- - - -</option>');
			document.write('		</select>');
			document.write('				</td>');
			
			document.write('				<td>');
			document.write('					<input name="modelo' + i + '" id="inputModelo' + i + '" size="20" readonly>');
			document.write('				</td>');
			
			// SELECT de las opciones
			document.write('				<td>');
			document.write('					<select name="opcion' + i + '" disabled id="selectOpcion' + i + '" onChange="javascript: actualizaOpcion(' + i + ', getPosicionAPartirDeReferencia(document.getElementById(\'selectReferencia' + i + '\').value), this.value);">');
			document.write('						<option value="KIT">KIT</option>');
			document.write('						<option value="KPP">KPP</option>');
			document.write('						<option value="RTR" selected>RTR</option>');
			document.write('					</select>');
			document.write('				</td>');
			
			document.write('				<td>');
			document.write('					<input name="unidades' + i + '" disabled id="inputUnidades' + i + '" size="3" maxlength="3" onKeyUp="javascript: actualizaPrecio(' + i + ', document.getElementById(\'selectReferencia' + i + '\').selectedIndex, document.getElementById(\'selectOpcion' + i + '\').value, this.value);">');
			document.write('				</td>');
			
			document.write('				<td>');
			document.write('					<input name="precio' + i + '" id="inputPrecio' + i + '" readonly size="7"');
			document.write('				</td>');
			
			document.write('				<td>');
			document.write('					<input name="notas' + i + '" id="inputNotas' + i + '" size="20">');
			document.write('				</td>');
			document.write('			</tr>');
		}
		document.write('			<tr>');
		document.write('				<td colspan="6" style="text-align: right;">');
		document.write('					<input type="submit" value="Calcular total" onClick="javascript: actualizaPrecioTotal(' + numeroLineas + '); return false;"> Total <input id="inputPrecioTotal" value="0" size="6" readonly>&nbsp;€');
		document.write('				</td>');
		document.write('			<tr>');
	}
	
	/*
	 * Calcula la suma de todos los precios de los articulos seleccionados.
	 */
	function actualizaPrecioTotal(numeroLineas) {
		total = 0;
	
		for (var i = 0; i < numeroLineas; i++) {
			if (document.getElementById("inputPrecio" + i).value != "") {
				total += parseFloat(document.getElementById("inputPrecio" + i).value);
			}
		}
		
		document.getElementById("inputPrecioTotal").value = redondear(total);
	}
	
	/*
	 * Redondea una cantidad a dos decimales.
	 */
	 function redondear(cantidad) {
	 	var posPunto = cantidad.toString().indexOf(".");
	 	if (posPunto == -1) {
			return cantidad;
		}

		return cantidad.toString().substring(0, posPunto + 3);
	 }
