/*
---------------------------------------------------
Funzione generica per il ritorno errori lato server
---------------------------------------------------
*/
function evaluateErrors(xDoc, divMessage) {
	var rc = false;
	//L'elemento root numera i child su base 0 per IE e base 1 per gli altri browser
	//Gli altri nodi non hanno differenza (tutti a base 0)
	var nFirstNode = 0;
	if (BrowserDetect.browser != "Explorer") nFirstNode = 1;	// module browser.js
	var node = xDoc.childNodes[nFirstNode].nodeName;
	if (node=='ERROR') {
		rc = true;
		var e = xDoc.childNodes[nFirstNode];
		var m = e.getElementsByTagName('message')[0].childNodes[0].nodeValue;
//		m = m + " [ERR #" + e.getElementsByTagName('id')[0].childNodes[0].nodeValue + "]";
		document.getElementById(divMessage).innerHTML = m;
	}
	return rc;
}

/*
-------------------------------------------------------
Funzione generica per la lettura del valore di un nodo
-------------------------------------------------------
*/
function getNodeValue(parentNode, nodeName) {
	var mynode = parentNode.getElementsByTagName(nodeName)[0].childNodes[0];
	if (mynode != null)
		return mynode.nodeValue
	else
		return '';
}


/*
-------------------------------------------------------
Funzione generica per lo svuotamento di una combo
-------------------------------------------------------
*/
function clearCombo(comboObj) {
	for(var i=comboObj.options.length-1;i>=0;i--) {
		comboObj.remove(i);
	}
}



/*
---------------------------------------------------
Handlers per le chiamate Ajax
---------------------------------------------------
*/
// Calcolo del prezzo
function getPrice_handler(xmlHttpResponse, mkupMode, mkupVal, scMode, scVal, delta, ssMode, ssVal, confirmOrder) {
	var xmlDoc=xmlHttpResponse.responseXML.documentElement;
	var newDes = "";
	var newVal = 0;
	var orderID = "";
	var consegna = "";
	var validResponse = false;
	if (xmlDoc) {
		if (!evaluateErrors(xmlDoc, "ajaxMsg")) {
			validResponse = true;
			newVal = parseFloat(getNodeValue(xmlDoc, "prezzo"));
			if (mkupMode=="%") {
				newVal = newVal + (newVal/100*mkupVal);
			} else {
				newVal = newVal + mkupVal;
			}
			if (scMode=="%") {
				newVal = newVal - (newVal/100*scVal);
			} else {
				newVal = newVal - scVal;
			}
			newVal = newVal + (newVal/100*delta);

			if (document.getElementById('idSpeseSpedizione').value!=0) {
				if (ssMode=="%") {
					newVal = newVal + (newVal/100*ssVal);
				} else {
					newVal = newVal + ssVal;
				}
			}

			newVal = newVal.toFixed(2)
			newDes = getNodeValue(xmlDoc, "info");

			var passaggi = xmlDoc.getElementsByTagName('passaggi')[0];
			document.getElementById('numPassaggi').value = getNodeValue(passaggi, "commessa");
			document.getElementById('numPassaggiBN').value = getNodeValue(passaggi, "bn");
			document.getElementById('numPassaggiCOL').value = getNodeValue(passaggi, "colore");

			var order = xmlDoc.getElementsByTagName('ordine')[0];
			orderID = getNodeValue(order, "id");

			consegna = getNodeValue(xmlDoc, "consegna");
			ggLav = getNodeValue(xmlDoc, "ggLavorativi");
			
			document.getElementById('divPrezzo').innerHTML = newVal + " &euro;";
			document.getElementById('txtPrezzo').value = newVal;
			document.getElementById('infoCommessa').innerHTML = newDes;
			if (consegna != '') document.getElementById('po-dataConsegna').value = consegna;
			document.getElementById('ggLavorativi').innerHTML = ggLav;
		
			if (confirmOrder!=0) {
				if (orderID==".") orderID = "";
				document.getElementById('po-save').value = orderID;
				confirmRequest();
			}
			
		}
	}
}

// Filtro sulle tipologie di carte possibili in sede di preventivo
function syncFilterOnTipoCarta_handler(xmlHttpResponse, idElement) {
	var xmlDoc=xmlHttpResponse.responseXML.documentElement;
	if (xmlDoc) {
		if (!evaluateErrors(xmlDoc, "ajaxMsg_"+idElement)) {
			var combo = document.getElementById('selTipoOn_'+idElement);
			clearCombo(combo);
			// Loading tipi di carta
			var nodi = xmlDoc.getElementsByTagName("tipi")[0].getElementsByTagName("item");
			for (i=0; i<nodi.length; i++) {
				var opt = document.createElement("option");
				opt.text = getNodeValue(nodi[i], "nome");
				opt.value = getNodeValue(nodi[i], "id");
				combo.options.add(opt);
			}
			
			// Dopo aver caricato le tipologie va innescato a catena il ricarico dei pesi
			if (combo.length>0) 
				syncFilterOnCarta(idElement, "P")
			else
				clearCombo(document.getElementById('selPesoOn_'+idElement));
			
		}
	}
}

// Filtro sulle grammature di carte possibili in sede di preventivo
function syncFilterOnPesoCarta_handler(xmlHttpResponse, idElement) {
	var xmlDoc=xmlHttpResponse.responseXML.documentElement;
	if (xmlDoc) {
		if (!evaluateErrors(xmlDoc, "ajaxMsg_"+idElement)) {
			var combo = document.getElementById('selPesoOn_'+idElement);
			clearCombo(combo);
			// Loading grammature
			var nodi = xmlDoc.getElementsByTagName("pesi")[0].getElementsByTagName("item");
			for (i=0; i<nodi.length; i++) {
				var opt = document.createElement("option");
				opt.text = getNodeValue(nodi[i], "nome");
				opt.value = getNodeValue(nodi[i], "id");
				combo.options.add(opt);
			}
			
		}
	}
}

/*
---------------------------------------------------
Handlers chiamate locali
---------------------------------------------------
*/
// Login
function doLogin_handler(xmlHttpResponse) {
	var xmlDoc=xmlHttpResponse.responseXML.documentElement;
	var er = "";
	var rc = 0;
	if (xmlDoc) {
		var nFirstNode = 0;
		if (BrowserDetect.browser != "Explorer") nFirstNode = 1;	// module browser.js
		var node = xmlDoc.nodeName;
		if (node!='LOGIN') {
			er = "Non e' possibile eseguire il login. Riprova piu' tardi.";
		} else {
			rc = xmlDoc.getElementsByTagName('rc')[0].childNodes[0].nodeValue;
			if (rc==0) {
				// Adeguamento della pagina senza necessità di reload
				/*
				var welcomeText = xmlDoc.getElementsByTagName('welcome')[0].childNodes[0].nodeValue;
				document.getElementById('loginBox').innerHTML = 
					'<div><a href="myEcheo.asp" title="">' + welcomeText + '</a></div>' +
					'<div id="access"><a href="logout.asp" title="" class="logout">logout</a></div>';
				document.getElementById('homeLink').href = "/myEcheo.asp";
				if (document.getElementById('subscribeLink')) document.getElementById('subscribeLink').style.display="none";
				*/
				// Forzatura del reload
				document.location.replace('/myEcheo.asp');
			} else {
				switch (parseInt(rc)) {
					case 1:	
						er = "Utente inesistente"; 
						break;
					case 2:	
						er = "Utente non attivato"; 
						break;
					case 3:	
						er = "Accesso non consentito"; 
						break;
					default:
						er = "Login fallito";
				}
			}
		}
	}
	if (er!="") document.getElementById('ajaxLoginMsg').innerHTML = er;
}

