var tabid = '';
var loginDoc = '';

function isolaPost(form, riceviFunc, handlerID, methodID, xslID, data, rti, destID) {
	var xmlString = '<?xml version="1.0" encoding="utf-8"?><root/>';
	var doc = dojo.dom.createDocumentFromText(xmlString);
	/*
	var	doc = dojo.dom.createDocument();
	doc.appendChild(doc.createElement("root"));
	*/
	var exec = doc.createElement("exec");
	exec.setAttribute('handlerID', typeof handlerID == 'undefined'?(typeof form == 'undefined'?'Main':form.elements['handlerID'].value):handlerID);
	exec.setAttribute('methodID', typeof methodID == 'undefined'?(typeof form == 'undefined'?'doit':(typeof form.elements['methodID'] == 'undefined'?'doit':form.elements['methodID'].value)):methodID);
	if ( form != null || typeof xslID != 'undefined' ) {
		var xslid = doc.createElement("param");
		xslid.setAttribute("name","xslID");
		xslid.setAttribute("value",typeof xslID == 'undefined'?form.elements['xslID'].value:xslID);
		exec.appendChild(xslid);
	}
	{
		var xslid = doc.createElement("param");
		xslid.setAttribute("name","responseTypeID");
		xslid.setAttribute("value",typeof rti == 'undefined'?"html":rti);
		exec.appendChild(xslid);
	}
	doc.documentElement.appendChild(exec);
	var param = doc.createElement("param");
	param.setAttribute("name", "xmlID");
	exec.appendChild(param);

	var formElement = formToDocument(form, doc);
	if ( formElement != null ) {
		param.appendChild(dojo.dom.importNode(doc,formElement, true));	
	} 

	if ( data != null ) {
		for ( x=0; x<data.length; x++ ) {
			if ( data[x] != null ) {
				param.appendChild(dojo.dom.importNode(doc,data[x], true));
			}
		}
	}
	
	var url = context+'ajax/FS';
	isolaDoit(url, doc, riceviFunc, false, destID);
}

function isolaDoit(url, formDoc, funcObj, isSilent, destID) {
	//alert(url+"\n\n"+XML.serializer(formDoc));
	var httpRequest;
	if (window.XMLHttpRequest) { // Mozilla, Safari, ...
		httpRequest = new XMLHttpRequest();
		if (httpRequest.overrideMimeType) {
			httpRequest.overrideMimeType('text/xml');
			// See note below about this line
		}
	} else if (window.ActiveXObject) { // IE
		try {
			httpRequest = new ActiveXObject("Msxml2.XMLHTTP");
		} catch (e) {
			try {
				httpRequest = new ActiveXObject("Microsoft.XMLHTTP");
			} catch (e) {}
		}
	}

	if (!httpRequest) {
		alert('Giving up :( Cannot create an XMLHTTP instance');
		return false;
	}
	httpRequest.onreadystatechange = function() { isolaReceive(httpRequest, tabid, url, funcObj, formDoc, isSilent, destID); };
	httpRequest.open('POST', url, true);
	try { httpRequest.setRequestHeader('Content-Type','text/xml;charset=UTF-8') ; }
	catch (e) { alert(e); }
	//alert(httpRequest.getAllResponseHeaders());
	httpRequest.send(typeof formDoc == 'undefined'?null:formDoc);
	//funcObj(null, null, null, null, null);
}

function isolaReceive(httpRequest, tabid, url, funcObj, formDoc, isSilent, destID) {
	if (httpRequest.readyState == 4) {
		if (httpRequest.status == 200) {
		
			var xml = httpRequest.responseXML;
			if ( xml != null ) {
				var e;
				try {
					if ( httpRequest.responseText.indexOf('<exception message=') != -1 ) {
						var errore = "";
						var candidateNodes = xml.getElementsByTagName('exception');
						try { 
							var expr = xpathParse("//*[name() = 'exception']");
							var responseDoc = dojo.dom.createDocumentFromText(httpRequest.responseText)
							var ns = expr.evaluate(new ExprContext(responseDoc));
							for ( a=0; a<ns.value.length; a++ ) {
							 	var msg = ns.value[a].getAttribute("message");
							 	var end = msg.indexOf(' ----');
							 	if ( end == -1 ) end = msg.length;
								errore += msg.substr(0,end);
							}
						} catch (eee) { alert("AA"+eee); }
						if ( errore.length > 0 ) {
							if ( typeof isSilent == 'undefined' || isSilent == false )
								alert(errore);
							return;
						}
					}
				} catch (e) {
					alert("Si è verificato un errore\n\nUna segnalazione è stata inviata automaticamente al servizio tecnico:\n\n"+e);
				}
			}
			//alert(httpRequest.responseText);			
			funcObj(httpRequest, tabid, url, formDoc, destID);
		} else {
			if ( httpRequest.responseText.length > 0 ) {
				alert(httpRequest.responseText);
				alert('There was a problem with the request.');
			}
		}
	}
}      
 
function isolaLogin(userid, passwd) {
	var	doc = dojo.dom.createDocument();
	var root = doc.createElement("root");
	doc.appendChild(root);
	
	var login = doc.createElement("logon");
	root.appendChild(login);
	
	{
		var param = doc.createElement("param");
		param.setAttribute("name","userid");
		param.setAttribute("value",userid);
		login.appendChild(param);
	}
	{
		var param = doc.createElement("param");
		param.setAttribute("name","passwd");
		param.setAttribute("value",passwd);
		login.appendChild(param);
	}
	{
		var param = doc.createElement("param");
		param.setAttribute("name","loginType");
		param.setAttribute("value",'ASA');
		login.appendChild(param);
	}

	var url = '/agesci/ajax/PortalServlet';
	loginDoc = doc;
	isolaDoit(url, doc, riceviLoginCambusa);
}

function riceviLoginCambusa(httpRequest, tabid, url) {
	if ( url == null ) {
	} else {
		var url = '/test/ajax/Extranet';
		isolaDoit(url, loginDoc, riceviLoginASA);
	}
}

function riceviLoginASA(httpRequest, tabid, url) {
	if ( url == null ) {
	} else {
		document.location.href = document.forms['loginForm'].elements['onLoginUrl'].value;
	}
}

 