/*
	Mauro Pili 20060201
	http://www.gjm.it
*/

// createLoggingPane(); // open the debug pop-up window

function GjmInput(etichetta, nome, payload, v, r, p, c, s, ca, cb) {
	var a = [];
	var t;
	var idCorr = v [0];
	var i;
	a [0] = INPUT({'name' : 'id'+nome, 'value' : idCorr, 'type' : 'hidden'}, null);
	for(i =1; i<3; i++) {
		a[i] = '';
	}
	var onclick = 'onDoit('+r+","+p+","+c+","+s+","+ca+","+cb+')';
	var nomeSelect = 'oc'+nome;
	var onchange = "onSelezione('"+nome+"',"+r+","+p+","+c+","+s+","+ca+","+cb+')';
	
	a [1] = LABEL({'name' : 'l'+nome} ,etichetta+': ');
	if (nome == 'strada') {
		if (idCorr) {
			a [2] = SPAN({'class':'insattl'}, v[1], ' n.', INPUT({'name' : 'numcivico', 'value' : '', 'type' : 'text', 'size' : 5}, null));
			a [3] = A({ 'href' : '#', 'id' : 'mod'+nome, 'onclick' : onclick }, 'cambia');
		} else {
			var idCom = 0;
			idCom = idCom + payload.comune[0]; 
			if (idCom) {
				a [2] = SPAN(null, GjmSelect(payload.stradapref[2],'stradapref','', true), 
					INPUT({'name' : 'nomestrada', 'value' : '', 'type' : 'text', 'onkeyup' : 'nomeStradaOnkeypress()'}, null),
					' n.', INPUT({'name' : 'numcivico', 'value' : '', 'type' : 'text', 'size' : 5}, null),
					BR(null),
					DIV({'id' : 'listastrade'}, GjmSelect(v[2], nomeSelect, onchange, true))
					);
			}
		};
	} else {
		if (idCorr) {
			a [2] = SPAN({'class':'insattl'}, v[1]);
			a [3] = A({ 'href' : '#', 'id' : 'mod'+nome, 'onclick' : onclick }, 'cambia');
		} else {
			a [2] = GjmSelect(v[2], nomeSelect, onchange, true);
		};
	};
	return (a);
};

function GjmSelect(olist, nomeSelect, onchange, primoItem) {
	var i;
	var o = [];
	if (olist) {
		if (olist.length>0) {
			var j = 0;
			if (primoItem) {
				o [j] = OPTION(null, 'scegliere');
				j++;
			}
			for (i = 0; i < olist.length; i++) {
				o [j] = OPTION({ 'id' : olist[i][0] }, olist[i][1]);
				j++;
			};
			return SELECT({'id' : nomeSelect, 'name' : nomeSelect, 'onchange' : onchange }, o);
		};
	}
	return '';
};

row_display = function (row) {
    return TR(null, map(partial(TD, null), row));
}

function nomeStradaOnkeypress() {
    var xmlHttpReq = getXMLHttpRequest()
	var idcomune = document.forminsatt.elements['idcomune'].value;
	var idCatA = 0;
	var idCatB = 0;
	try {
		idCatA = document.forminsatt.elements['idca'].value;
	} catch (e) {
		;
	};
	try {
		idCatB = document.forminsatt.elements['idcb'].value;
	} catch (e) {
		;
	};
	var nomestrada = document.forminsatt.elements['nomestrada'].value;
	var url = "http://www.gjm.it/form.asp?j=s," + idcomune  + ","+"1" + ","+idCatA+","+idCatB+","+nomestrada;
	xmlHttpReq.open( "POST", url, true);
    xmlHttpReq.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
    var d = sendXMLHttpRequest( xmlHttpReq, "" );
    d.addCallbacks(gotMdNomestrada, metadataFetchFailed);
};

var gotMdNomestrada = function (oData) {
	var payload = evalJSONRequest( oData );
	var strade = payload.strade;
	var r = 0; // payload.regione[0];
	var p = 0; // payload.provincia[0];
	var c = 0; // payload.comune[0];
	var s = 0; // payload.strada[0];
	var sp = 0; // payload.stradapref[0];
	var ca = 0; // payload.ca[0];
	var cb = 0; // payload.cb[0];
	var nome = 'strada';
	var nomeSelect = 'oc'+nome;
	var onchange = "onSelezione('"+nome+"',"+r+","+p+","+c+","+s+","+ca+","+cb+')';
    	var sel = GjmSelect(strade, nomeSelect , onchange, false);
	replaceChildNodes( "listastrade", sel);
};

var metadataFetchFailed = function (err) {
  alert( "Problemi di accesso al server. Riprovare piu' tardi");
};

function onSelezione(nomeSelect, r, p, c, s, ca, cb) {
	var idSel; 
	var i = document.forminsatt.elements['oc'+nomeSelect].selectedIndex;
	idSel = document.forminsatt.elements['oc'+nomeSelect].options[i].id;
	if (nomeSelect == 'regione') {
		r = idSel;
	};
	if (nomeSelect == 'provincia') {
		p = idSel;
	};  
	if (nomeSelect == 'comune') {
		c = idSel;
	};  
	if (nomeSelect == 'strada') {
		s = idSel;
	};
	if (nomeSelect == 'stradapref') {
		sp = idSel;
	};
	if (nomeSelect == 'ca') {
		ca = idSel;
	};  
	if (nomeSelect == 'cb') {
		cb = idSel;
	};
	logDebug("onDoit("+r+","+p+","+c+","+s+","+ca+","+cb);
	onDoit(r, p, c, s, ca, cb);
};

function onDoit(r, p, c, s, ca, cb) {
logDebug("entrato dentro onDoit");
    var xmlHttpReq = getXMLHttpRequest()
    var url = "http://www.gjm.it/form.asp?j=f,"+r+","+p+","+c+","+s+","+ca+","+cb;
    RiempiBox([[ '', "tipo di attivita'", SPAN({'class':'insattl'}, 'Attendere, caricamento in corso ...') ],
	[ '', 'sottocategoria' ],
	[ '', 'regione' ],
	[ '', 'provincia' ],
	[ '', 'comune' ],
	[ '', 'indirizzo' ],
	[ '', "nome dell'attivita': " ],
	[ '', "telefono: " ],
	[ '', 'fax: ' ]], 'attendere');
    xmlHttpReq.open( "POST", url, true);
    xmlHttpReq.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
    var d = sendXMLHttpRequest( xmlHttpReq, "" );
    d.addCallbacks(gotMetadata, metadataFetchFailed);
    return false;
};

var gotMetadata = function (oData) {
	var payload = evalJSONRequest( oData );
	var r = payload['regione'][0];
	var p = payload.provincia[0];
	var c = payload.comune[0];
	var s = payload.strada[0];
	var sp = payload.stradapref[0];
	var ca = payload.ca[0];
	var cb = payload.cb[0];
	var pulsinput;
	var rows = [];
	rows [0] = GjmInput("tipo di attivita'", 'ca', payload, payload.ca, r, p, c, s, 0, cb);
	rows [1] = GjmInput('sottocategoria', 'cb', payload, payload.cb, r, p, c, s, ca, 0);
	rows [2] = GjmInput('regione', 'regione', payload, payload.regione, 0, 0, 0, 0, ca, cb);
	rows [3] = GjmInput('provincia', 'provincia', payload, payload.provincia, r, 0, 0, 0, ca, cb);  
	rows [4] = GjmInput('comune', 'comune', payload, payload.comune, r, p, 0, 0, ca, cb);
	rows [5] = GjmInput('indirizzo', 'strada', payload, payload.strada, r, p, c, 0, ca, cb);
	rows [6] = [ '', LABEL({'name' : 'risorsanome'} ,"nome dell'attivita': "), INPUT({'name' : 'nomerisorsa', 'value' : '', 'type' : 'text', 'size' : 30}) ];
	rows [7] = [ '', LABEL({'name' : 'risorsatel'} ,"telefono: "), INPUT({'name' : 'risorsatel', 'value' : '', 'type' : 'text'}) ];
	rows [8] = [ '', LABEL({'name' : 'risorsafax'} ,"fax: "), INPUT({'name' : 'risorsafax', 'value' : '', 'type' : 'text'}) ];
	if (c>0 && ca>0) {
		pulsinput = INPUT({'name' : 'registra', 'value' : 'Inserisci', 'type' : 'submit'}, null);
	} else {
		pulsinput = 'riempire i campi';
	};
	RiempiBox(rows, pulsinput);
};

function RiempiBox(rows, pulsinput) {
	replaceChildNodes( "insattc",
		DIV({'class' : 'insattc2'},
			FORM({'id' : 'forminsatt', 'name' : 'forminsatt', 'action' : 'index.asp?i=r', 'method' : 'post' },
				TABLE({'class': 'prettytable'}, null, // THEAD(null, row_display(["", "", "valore"]))
					null,
					TBODY(null, map(row_display, rows))
				),  
				pulsinput
			)
		)
	);
}; 
 
function addEvent(obj, evType, fn){ 
	if (obj.addEventListener){ 
		obj.addEventListener(evType, fn, false); 
		return true; 
	} else if (obj.attachEvent){ 
		var r = obj.attachEvent("on"+evType, fn); 
		return r; 
	} else { 
		return false; 
	} 
}
