function createXmlHttpReq() {
	var xmlhttp = null;
	try {
		xmlhttp = new XMLHttpRequest();
		try {
				xmlhttp.overrideMimeType('text/xml');
		} catch(e) {}
	} catch(e) {
		try {
				xmlhttp = new ActiveXObject("Msxml2.XMLHTTP");
		} catch(e) {
				xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
		}
	}
	return xmlhttp;
}

function get_element(id) {
	return document.getElementById(id);
}

function receiveData() {
	if (xReq.readyState == 4 && xReq.status == 200 && xReq.responseText != null) {
		var div = get_element("risultati");
	
		var elems = xReq.responseText.split('\n');
		if (elems.length > 2) {
			var table = creaTabellaRisultati(elems);
			div.innerHTML = '';
			div.appendChild(table);
			togglePaginaz(true);
		}
		else {
			togglePaginaz(false);
			div.innerHTML = '<div class="noris">Nessun dato in archivio ' +
				'corrispondente ai criteri di ricerca impostati.</div>';
		}
	}
	else if (xReq.readyState == 4) {
		get_element("risultati").innerHTML = '';
		get_element("paginaz-su").innerHTML = get_element("paginaz-giu").innerHTML = '';
		alert("Errore: " + xReq.status);
	}
}

function apri_pag(pag) {
	if (!ricerca_valida()) return false;
	xReq = createXmlHttpReq();
	if (xReq == null) return false;
	
	params = crea_filtro();
	
	var div = get_element("risultati");
	div.innerHTML = '<div class="attendere"><img src="/icone/clessidra.gif" align="absmiddle" ' +
	'alt="Attendere prego" border="0">&nbsp;Caricamento in corso...</div>';
	
	var rndstr = '' + Math.random();
	var method = (params == null)? "GET" : "POST";
	xReq.open(method, baseurl + "/&pag=" + pag + "&y=" + rndstr.substring(2));
	if (method == "POST") {
		xReq.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
		xReq.setRequestHeader("Content-length", params.length);
		xReq.setRequestHeader("Connection", "close");	
	}
	xReq.onreadystatechange = receiveData;
	xReq.send(params);
		
	var paginaz = '<span title="pagina precedente" class="' + 
		((pag < 2)? 'pag-dis' : 'pag-lnk" onclick="apri_pag(' + (pag - 1) + ')') + '">&laquo;prec.|</span>' +
		' pag. <b>' + pag + '</b> ' +
		'<span class="pag-lnk" onclick="apri_pag(' + (pag + 1) + ')" title="pagina successiva">|succ.&raquo;</span>';
	togglePaginaz(false);
	setPaginaz(paginaz);	
}

function ricerca_valida() {
	var dal = get_element("data-dal").value;
	if (dal != "" && dal != "gg/mm/aaaa" && !dal.match(/^\d{1,2}\/\d{1,2}\/\d{4}$/)) {
		alert("Il formato della data iniziale di pubblicazione non è valido. Usare il formato gg/mm/aaaa.");
		return false;
	}
	var al = get_element("data-al").value;
	if (al != "" && al != "gg/mm/aaaa" && !al.match(/^\d{1,2}\/\d{1,2}\/\d{4}$/)) {
		alert("Il formato della data finale di pubblicazione non è valido. Usare il formato gg/mm/aaaa.");
		return false;
	}
	return true;
}

function crea_filtro() {
	var filtro = null;
	var dal = get_element("data-dal").value;
	if (dal != "" && dal != "gg/mm/aaaa") {
		filtro = "dal=" + dal;
	}
	var al = get_element("data-al").value;
	if (al != "" && al != "gg/mm/aaaa") {
		filtro = ((filtro == null)? "" : filtro + "&") + "al=" + al;
	}
	var oggetto = get_element("ogg-cerca").value;
	if (oggetto != "") {
		filtro = ((filtro == null)? "" : filtro + "&") + "ogg=" + escape(oggetto);
	}
	return filtro;
}

function togglePaginaz(show) {
	var pagsu = get_element("paginaz-su");
	var paggiu = get_element("paginaz-giu");
	pagsu.style.display = paggiu.style.display = show? "" : "none";
}

function setPaginaz(content) {
	get_element("paginaz-su").innerHTML = get_element("paginaz-giu").innerHTML = content;
}

function ultimaPagina() {
	var succ_su = get_element("paginaz-su").getElementsByTagName('span')[1];
	var succ_giu = get_element("paginaz-giu").getElementsByTagName('span')[1];
	succ_giu.className = succ_su.className = "pag-dis";
	succ_giu.title = succ_su.title = "Ultima pagina";
	succ_giu.onclick = succ_su.onclick = "";
}

function creaTabellaRisultati(elems) {
	var table = document.createElement("table");
	table.title="Clicca per visualizzare i dettagli della delibera/determina.";
	var tbody = document.createElement("tbody");
	table.appendChild(tbody);
	var nr = 0;
	for(var n in elems) {
		if (elems[n].length < 2) {
			if (elems[n] == "F") ultimaPagina();
			continue;
		}
		var tr;
		var r = elems[n].split("|");
		if (r.length > 1) {
			tr = creaRiga(r[0], r[1], r[2]);
			tr.className = (++nr % 2 == 0)? "del-pari" : "del-disp";
		}
		else {
			tr = creaRigaData(elems[n]);
		}
		tbody.appendChild(tr);
	}
	return table;
}

function creaRigaData(data) {
	var td = creaCella(data);
	td.colSpan = 2;
	td.className = "del-data";
	var tr = document.createElement("tr");
	tr.appendChild(td);
	return tr;
}

function apri_del() {
	var win_opt = "toolbar=0,location=0,menubar=0,scrollbars=1,resizable=1,width=470,height=180";
	newWindow = window.open(baseurl + "/" + this.id.replace('_', '/'), 'del' + this.id, win_opt);
	if (newWindow != null) {
		if (newWindow.opener == null) newWindow.opener = self;
		if (newWindow.focus) newWindow.focus();
	}
}

function creaRiga(anno, num, oggetto) {
	var tr = document.createElement("tr");
	tr.id = anno + "_" + num.replace('/', '_');
	tr.onclick = apri_del;
	tr.onmouseover = function() { this.className += ' del-hover'};
	tr.onmouseout = function() { this.className = this.className.substring(0, 8) };
	tr.appendChild(creaCella(num));
	tr.appendChild(creaCella(oggetto));
	
	return tr;
}

function creaCella(contenuto) {
	var td = document.createElement("td");
	td.innerHTML = contenuto;
	
	return td;
}

function novita(id) {
	document.write('<span id="nov_'+id+'" class="novita"><img src="/icone/novita.gif" title="Nuovi aggiornamenti" /></span>');
	var lnkpos = getpos(get_element(id)); // getpos è definita in menu.js
	var icona = get_element("nov_" + id);
	icona.style.left = (lnkpos.x + 116) + 'px';
	icona.style.top = (lnkpos.y - 4) + 'px';
}
