//javascript para la aplicación web

/**
 * Recuperación de la lengua de partida según proyectoId
 * 
 * @param {String}
 *            urlServer Url del servidor
 */
function getLenguaPartidaPelMain(urlServer, opt) {
	var proyectoId = dijit.byId("proyectoId").value;
	var lenguaPartida = dijit.byId("lenguaPartida");
	var url = urlServer + "ajaxGetLenguaPartida?proyectoId=" + proyectoId + "&opt="	+ opt;
	var store = new dojo.data.ItemFileReadStore({url: url});
	lenguaPartida.store = store;
	store.fetch( {
		onComplete : function(items, request) {
			if (items.length != 0) {
				for (j = 0; j < items.length; j++) {
					if (items[j].id == "es_es") {
						lenguaPartida.attr("value", "es_es");
						getLenguaLlegadaMulti(urlServer, "false")
						break;
					}
				}
			}
		},
		onError : ajaxComError,
		queryOptions : {
			deep : true
		}
	});
}

/** 
 * Recuperación del contrato según proyectoId
 * @param {String} urlServer	Url del servidor
 */
function getContrato(urlServer) {
	var proyectoId = dijit.byId("proyectoId").value;
	var contrato = dojo.byId("contrato");
	var btnSubmit = dojo.byId("submit");
	dojo.xhrGet( {
		url : urlServer,
		preventCache: true,
		content : {
			proyectoId : proyectoId
		},
		handleAs : "xml",
		load : function(data, args) {
			// fade out the node we're modifying
		dojo.fadeOut( {
			node : contrato,
			onEnd : function() {
				if (data != null) {
					//contrato
			cargaCombo(contrato, data, "", "y");
			dojo.fadeIn( {
				node : contrato
			}).play();
		} else {
			ajaxDataError();
			btnSubmit.disabled = true;
		}
	}
		}).play();
	},
	// if any error occurs, it goes here:
		error : function(error, args) {
			ajaxComError();
		}
	});
}

/** 
 * Recuperación de los datos de presupuesto
 * @param {String} urlServer	Url del servidor.
 * @param (String) contrato		Código de contrato.
 * @param (String) presupuestoId Código de presupuesto. 
 */
function getPresupuesto(urlServer, proyectoId, contrato, presupuestoId) {

	var timer = new dojox.timing.Timer(5000);
	timer.onTick = function() {
		var refPresupuesto = proyectoId + contrato + presupuestoId
		var procesandoPresupuesto = dojo.byId(refPresupuesto
				+ "procesandoPresupuesto");
		dojo
				.xhrGet( {
					url : urlServer,
					preventCache: true,
					content : {
						proyectoId : proyectoId,
						contrato : contrato,
						presupuestoId : presupuestoId
					},
					handleAs : "xml",
					load : function(data, args) {
						// fade out the node we're modifying
						dojo
								.fadeOut(
										{
											node : procesandoPresupuesto,
											onEnd : function() {
												if (data != null) {
													//datos comunes del presupuesto
													var estadoPresupuesto = getElementValue(dojo
															.query(
																	'estadoPresupuesto',
																	data)[0]);
													// en el caso de que el
													// presupuesto ya esté en
													// estado finalizado (es
													// decir que ya todos los
													// idiomas
													// están presupuestados), se
													// desactivará el timer
													// periódico
													if (estadoPresupuesto == 'PEDIDO_FINALIZADO') {
														dojo
																.byId(refPresupuesto
																		+ "procesandoPresupuesto").className = "topcontainerhidden";
														dojo
																.byId(refPresupuesto
																		+ "presupuestoFinalizado").className = "topcontainer tableheadtext";
														timer.stop();
													} else {
														dojo
																.byId(refPresupuesto
																		+ "procesandoPresupuesto").className = "topcontainer tableheadtext";
													}

													//INIECCIÓN DATOS EN DIVS
													// datos comunes
													dojo
															.byId(refPresupuesto
																	+ "estadoPresupuesto").innerHTML = getElementValue(dojo
															.query(
																	'estadoPresupuesto',
																	data)[0]);
													dojo
															.byId(refPresupuesto
																	+ "fechaPresupuestoDisponible").innerHTML = getElementValue(
															dojo
																	.query(
																			'fechaPresupuestoDisponible',
																			data)[0],
															"-");
													dojo
															.byId(refPresupuesto
																	+ "fechaLimitePresupuestoDisponible").innerHTML = getElementValue(
															dojo
																	.query(
																			'fechaLimitePresupuestoDisponible',
																			data)[0],
															"-");
													dojo.byId(refPresupuesto
															+ "fechaVBPresup").innerHTML = getElementValue(
															dojo
																	.query(
																			'fechaVBPresup',
																			data)[0],
															"-");
													dojo
															.byId(refPresupuesto
																	+ "tiempoRemanenteDisponibilidad").innerHTML = getElementValue(dojo
															.query(
																	'tiempoRemanenteDisponibilidad',
																	data)[0]);
													// gran totales
													dojo
															.byId(refPresupuesto
																	+ "granTotNumPalCvcx").innerHTML = getElementValue(dojo
															.query(
																	'granTotNumPalCvcx',
																	data)[0]);
													dojo
															.byId(refPresupuesto
																	+ "granTotImpTPalCvcx").innerHTML = getElementValue(dojo
															.query(
																	'granTotImpTPalCvcx',
																	data)[0]);
													dojo
															.byId(refPresupuesto
																	+ "granTotNumPalPreTrad").innerHTML = getElementValue(dojo
															.query(
																	'granTotNumPalPreTrad',
																	data)[0]);
													dojo
															.byId(refPresupuesto
																	+ "granTotImpTPreTrad").innerHTML = getElementValue(dojo
															.query(
																	'granTotImpTPreTrad',
																	data)[0]);
													dojo
															.byId(refPresupuesto
																	+ "granTotNumPalNuevas").innerHTML = getElementValue(dojo
															.query(
																	'granTotNumPalNuevas',
																	data)[0]);
													dojo
															.byId(refPresupuesto
																	+ "granTotImpTNuevas").innerHTML = getElementValue(dojo
															.query(
																	'granTotImpTNuevas',
																	data)[0]);
													dojo
															.byId(refPresupuesto
																	+ "granTotNumPalabras").innerHTML = getElementValue(dojo
															.query(
																	'granTotNumPalabras',
																	data)[0]);
													dojo.byId(refPresupuesto
															+ "granTotRecargoPorUrgencia").innerHTML = getElementValue(dojo
															.query(
																	'granTotRecargoPorUrgencia',
																	data)[0]);
													dojo.byId(refPresupuesto
															+ "granTotImporte").innerHTML = getElementValue(dojo
															.query(
																	'granTotImporte',
																	data)[0]);
													// nodos de lengua
													var lstTraduccion = dojo
															.query(
																	'traduccion',
																	data);
													// boolean visto bueno
													// traducción
													var vbClienteParaTraducir = true;
													// se recorren los nodos de
													// lengua y se cargan los
													// datos en los relativos
													// divs

													for ( var idxTrad = 0; idxTrad < lstTraduccion.length; idxTrad++) {
														var lengua = lstTraduccion[idxTrad]
																.getAttribute('idiomaLLegada');
														dojo
																.byId(refPresupuesto
																		+ 'numPalCvcx'
																		+ lengua).innerHTML = lstTraduccion[idxTrad]
																.getAttribute('numPalCvcx');
														dojo
																.byId(refPresupuesto
																		+ 'impTPalCvcx'
																		+ lengua).innerHTML = lstTraduccion[idxTrad]
																.getAttribute('impTPalCvcx');
														dojo
																.byId(refPresupuesto
																		+ 'numPalNuevas'
																		+ lengua).innerHTML = lstTraduccion[idxTrad]
																.getAttribute('numPalNuevas');
														dojo
																.byId(refPresupuesto
																		+ 'impTPalNuevas'
																		+ lengua).innerHTML = lstTraduccion[idxTrad]
																.getAttribute('impTPalNuevas');
														dojo
																.byId(refPresupuesto
																		+ 'numPalPreTrad'
																		+ lengua).innerHTML = lstTraduccion[idxTrad]
																.getAttribute('numPalPreTrad');
														dojo
																.byId(refPresupuesto
																		+ 'impTPalPreTrad'
																		+ lengua).innerHTML = lstTraduccion[idxTrad]
																.getAttribute('impTPalPreTrad');
														dojo
																.byId(refPresupuesto
																		+ 'totNumPalabras'
																		+ lengua).innerHTML = lstTraduccion[idxTrad]
																.getAttribute('totNumPalabras');
														dojo
														.byId(refPresupuesto
																+ 'impRecargoPorUrgencia'
																+ lengua).innerHTML = lstTraduccion[idxTrad]
														.getAttribute('impRecPorUrg');
														dojo
																.byId(refPresupuesto
																		+ 'totImporte'
																		+ lengua).innerHTML = lstTraduccion[idxTrad]
																.getAttribute('totImporte');
														var estadoPresupuestoIdioma = lstTraduccion[idxTrad]
																.getAttribute('estadoPresupuestoIdioma');
														dojo
																.byId(refPresupuesto
																		+ 'estadoPresupuestoIdioma'
																		+ lengua).innerHTML = estadoPresupuestoIdioma;

														// dependiendo del
														// estado del archivo,
														// activamos ciertos
														// divs
														if (estadoPresupuestoIdioma != 'LISTO_PARA_VB_CLIENTE') {
															vbClienteParaTraducir = false;
														}
														//lógica de activación  enlace de descarga
														if (estadoPresupuestoIdioma == 'LISTO_PARA_DESCARGAR'
																|| estadoPresupuestoIdioma == 'DESCARGADO') {
															dojo
																	.byId(refPresupuesto
																			+ 'descargarArchivoTraducido'
																			+ lengua).className = 'topcontainer';
														} else {
															dojo
																	.byId(refPresupuesto
																			+ 'descargarArchivoTraducido'
																			+ lengua).className = 'topcontainerhidden';
														}
													}//for

													// si todos los idiomas
													// están listos para el VºBº
													// activamos el div de
													// pregunta
													if (vbClienteParaTraducir) {
														dojo
																.byId(refPresupuesto + 'optTraducirNoTraducir').className = 'topcontainer';
													} else {
														dojo
																.byId(refPresupuesto + 'optTraducirNoTraducir').className = 'topcontainerhidden';
													}

													dojo
															.fadeIn(
																	{
																		node : procesandoPresupuesto
																	}).play();
												} else {
													ajaxDataError();
													dojo
															.fadeIn(
																	{
																		node : procesandoPresupuesto
																	}).play();
													timer.stop();
												}
											}
										}).play();
					},
					// if any error occurs, it goes here:
					error : function(error, args) {
						ajaxComError();
						dojo.fadeIn( {
							node : procesandoPresupuesto
						}).play();
					}
				});
	};
	timer.start(); // start the timer
}

function pelVBPresupuesto(proyectoId, contrato, presupuestoId, partyIdVBPresup,
		urlServer) {
	var refPresupuesto = proyectoId + contrato + presupuestoId;
	var estado = dojo.byId(refPresupuesto + 'selectTraducirNoTraducir').value;
	dojo.xhrPost( {
		url : urlServer,
		content : {
			proyectoId : proyectoId,
			contrato : contrato,
			presupuestoId : presupuestoId,
			estado : estado,
			partyIdVBPresup : partyIdVBPresup
		},
		handleAs : "xml"
	});
}
/**
 * Devuelve el texto de un nodo
 * @param {Element} el elemento DOM desde el cual recuperar el texto
 */
function getElementValue(elm, porDefecto) {
	if (elm == undefined) {
		return "";
	}
	var txt = '';
	var lstChilds = elm.childNodes;
	for ( var j = 0; j < lstChilds.length; j++) {
		if (txt != '') {
			text = txt + '\n'
		}
		txt = txt + lstChilds[j].nodeValue;
	}
	if (txt == '' && porDefecto != undefined) {
		txt = porDefecto;
	}
	return txt;
}

/**
 * Carga un combo desde el xml data-key/value
 */
function cargaCombo(combo, data, selectedKey, noOneAutoSelect) {
	var datos = dojo.query('data', data);
	var item = 0;
	var items = datos.length;
	var autoSeleccionado = false;
	if (items == 0) {
		//si no hay items: select deshabilitado
		combo.length = 1;
		combo.options[0].value = "";
		combo.options[0].text = "---";
		combo.disabled = true;
	} else if (items == 1 && noOneAutoSelect == "y") {
		item++;
		items++;
		combo.length = items;
		combo.options[0].value = "";
		combo.options[0].text = "---";
		combo.disabled = false;
	} else if (items == 1) {
		//si hay un solo item: autoseleccionado
		combo.length = items;
		combo.disabled = false;
	} else {
		//si hay más de uno: un primer item vacío
		// siempre si no es un select múltiple
		if (combo.multiple == false) {
			item++;
			items++;
			combo.options[0].value = "";
			combo.options[0].text = "---";
		}
		combo.length = items;
		combo.disabled = false;
	}
	for ( var idx = 0; idx < datos.length; idx++) {
		var key = datos[idx].getAttribute("key");
		combo.options[item].value = key;
		combo.options[item].text = datos[idx].getAttribute("value");
		// si se pasa el código de auto selección
		if (key == selectedKey) {
			combo.options[item].selected = true;
			autoSeleccionado = true;
		}
		//siguiente item
		item++;
	}
	//si el select es de tipo multiple: se visualizan todos los items
	if (combo.multiple == true) {
		combo.size = combo.length;
	}

	return autoSeleccionado;
}

/**
 * Proceso del form
 * 
 */
function processPelMainForm() {
	// Re-validate form fields
	var firstInvalidWidget = null;
	dojo.every(custForm.getDescendants(), function(widget) {
		firstInvalidWidget = widget;
		// alert(widget.id + ": " + (!widget.isValid || widget.isValid()));
			return !widget.isValid || widget.isValid();
		});
	if (firstInvalidWidget != null) {
		// set focus to first field with an error
		firstInvalidWidget.focus();
		alert("No enviando el form...: " + firstInvalidWidget.id);
		return false;
	} else {
		alert("enviando el form!");
		return false;
	}
}