// lastmod 25 gennaio 2009 // Aggiornato link ad appuntamenti su googledocuments
// lastmod 28 aprile 2008 // ElencaPosts
// lastmod 13 febbraio 2008 // eventi caricati da mid.ocap.net (sperimentale)
// lastmod  2 dicembre 2007
// lastmod 28 novembre 2007 // nuova funzione: aslvf_indice_libro
// lastmod 18 novembre 2007
// lastmod 17 novembre 2007 // nuova funzione: aggiorna_capitolo_libro
// lastmod 11 novembre 2007 // evidenziaTab non funziona su IE - sospendo l'utilizzo, per ora
// lastmod 24 settembre 2007 - aggiunto link a spreadsheets.google.com per gli eventi completi
// lastmod 16 settembre 2007
// lastmod 15 settembre 2007 - evidenziaTab e altro
// lastmod 13 luglio 2007
// lastmod  6 giugno 2007 - problematiche IExplorer
// lastmod  5 giugno 2007 - attiva_snapshot()
// lastmod  4 giugno 2007
// lastmod  3 giugno 2007 - adattamento al nuovo accoglienza.css
// lastmod 28 maggio 2007
// lastmod 27 maggio 2007
// lastmod 23 maggio 2007
// lastmod 18 maggio 2007
// lastmod 16 maggio 2007
// lastmod 15 maggio 2007
// lastmod 12 maggio 2007
// lastmod 10 maggio 2007
// lastmod  9 maggio 2007
// lastmod  6 maggio 2007
// derivato in parte da main.js (versione dojo) e riscritto per Prototype

function myInitPage() {
    var mylinks = $("linkList");
    var attivo = false;
    mylinks["getStatomenu"] = function () {
	return attivo;
    };
    mylinks["setStatomenu"] = function (status) {
	attivo=status;
    };
    var proprieta={};
    mylinks["assegna"] = function (nome,valore) {
	if (valore) {
	    proprieta[nome]=valore;
	} else {
	    return proprieta[nome];
	}
    };
    mylinks["azzera"] = function () {
	this.innerHTML='';
	this.setStatomenu(false);
	proprieta={};
    };

    var url = null;
    if (document.location.hash) {
	// alert('pagina interna: ' + document.location.hash);
	url = document.location.hash;
	if (url==='#') {
	    url=null;
	} else {
	    url = url.substr(1);
	}
    }
    // alert('url: ' + url);
    if (url) {
	LoadPageFromUrl(url);
    } else {
	CaricaHome();
    }
}

function CaricaHome() {
    // $("linkList").azzera();
    // $('quadro').setStyle({marginTop: '0px'});

    // new Ajax.Updater({ success:'quadro', failure:'footer' }, 'intro.html', { method: 'get' });

    if (document.location.pathname!="/") {
	var myurl = 'http://' + document.location.host + document.location.pathname + '#';
	document.location.replace(myurl);
    }

    return;

    myReq = new Ajax.Request('intro.html',
	{
	    method: 'get',
	    onSuccess: function(transport) {
		var response = transport.responseText || "no response text";
		$("quadro").innerHTML=response;
		// attiva_snapshot();
	    },
	    onFailure: function(transport) {
		var response = transport.responseText || "no response text";
		$("quadro").innerHTML="errore";
		$("footer").innerHTML=response;
	    }
	});
}

function f_MostraMenu (elem,text) {
    elem.className='clickabile';
    var f = function(){
	displayMenu(text + '.txt');
    }
    return f;
}

function f_MostraEvento (key) {
    var f = function(){
	mostraDettagliEvento(key);
    }
    return f;
}


function displayMenu (datafile,non_caricare_prima_voce) {
    mylinks = $("linkList");
    //if (mylinks.assegna('datafile')===datafile) {
    //	return;
    //}

    mylinks.innerHTML='loading ' + datafile;
    var q = $('quadro');
    q.innerHTML='wait...';

    myReq = new Ajax.Request(datafile,
	{
	    method: 'get',
	    onSuccess: function(transport) {
		var mylinks = $("linkList");
		mylinks.innerHTML='';
		var data = transport.responseText;
		myarray = data.split('\n');
		var button,
		    html='',
		    myid,
		    mystring,
		    mytag,
                    myurl,
  		    oggetto={},
		    x,
		    i;

		// makeHomeButton("Torna all'inizio");

		for (var i = 0, len = myarray.length; i < len; ++i) {
		    mystring = myarray[i];
		    if ( (mystring.blank()) || (mystring.match("^#")) ) continue;
		    x = mystring.split('|');
		    mytag = x[0];
		    myurl = new String(x[1]).strip();

		    myid='pagename_' + myurl;
		    button = $(myid);
		    if(!button) {
			var re = /http:/;
			if (myurl.match(re)!==null) {
			    html += '<li><a href="' + myurl + '" id="' + myid + '">' + mytag + '</a></li>';
			} else {
			    if (myurl!="") {
				html += '<li><a href="#' + myurl + '" id="' + myid + '">' + mytag + '</a></li>';
				oggetto[myid]=myurl;
			    } else {
				html += '<h2>' + mytag + '</h2>';
			    }
			}
		    } else {
			// Questo e' un errore che non dovrebbe verificarsi
			alert("errore in displayMenu");
		    }
		}
		mylinks.update('<ul>' + html + '</ul>');
		// alert(mylinks.innerHTML);
		// new Insertion.Bottom(mylinks, html);

		for (var key in oggetto) {
		    if (!oggetto.hasOwnProperty(key)) continue;
		    button = $(key);
		    myurl = oggetto[key];
		    Event.observe(button, 'click', creaFunzioneCaricaPagina(mylinks,button,myurl));
		}

		// new Insertion.Bottom($('footer'), '<br>FINE');
		mylinks.setStatomenu(true);
		mylinks.assegna('datafile',datafile);

		// Carico subito la prima voce
		if (!non_caricare_prima_voce) {
		    // LoadPageFromUrl(mylinks.firstChild.firstChild.firstChild.id.substr(9));
		    LoadPageFromUrl(mylinks.firstChild.firstChild.nextSibling.firstChild.id.substr(9));
		}
	    },
	    onFailure: function(transport) {
		var response = transport.responseText || "no response text";
		$("footer").innerHTML=response;
	    }
	});
}

function menuAppuntamenti() {
    var func,
	mylinks = $('linkList'),
	myEventi = $('quadro')["eventi"],
	html;

    mylinks.azzera();

    // makeHomeButton("Pagina principale");
    for(var key in myEventi) {
	if (!myEventi.hasOwnProperty(key)) continue;
	html = '<li><a href="#' + key + '" id="' + key + '">' + key + '</a></li>';
	new Insertion.Bottom(mylinks, html);
    }
    mylinks.innerHTML = '<ul>' + mylinks.innerHTML + '</ul>';
    for(var key in myEventi) {
	if (!myEventi.hasOwnProperty(key)) continue;
	func = f_MostraEvento(key);
	Event.observe($(key), 'click', func);
    }
    // alert("fine: " + mylinks.innerHTML);
}

function makeHomeButton (testo) {
    var mylinks = $("linkList"),
	button = $('homebutton'),
	html;
    if(!button) {
	// html = '<div class="bottone" id="homebutton">' + testo + '</div>';
	// html = '<ul><li><a href="#" id="homebutton">' + testo + '</a></li></ul>';
	html = '<li><a href="#" id="homebutton">' + testo + '</a></li>';
	new Insertion.Bottom(mylinks, html);
	button = $("homebutton");
	Event.observe(button, 'click', creaFunzioneCaricaPagina(mylinks,button));
    }
}


function creaFunzioneCaricaPagina (mylinks,button,url) {
    var f = function() {
	if (url) {
	    LoadPageFromUrl(url);
	} else {
	    setTimeout(CaricaHome,500);
	}
	return;
    }
    return f;
}


function LoadPageFromUrl (url,widget) {
    // alert("in LoadPageFromUrl con url = " + url);
    var mylinks = $("linkList");

    evidenziaTab(widget);

    var re = /menu_.*txt/;
    if (url.match(re)!==null) {
	// alert('mostro menu: ' + url);
    	displayMenu(url,false);
    	return;
    }

    if (!mylinks.getStatomenu()) {
	// alert("dovrei caricare il menu!");
	// quale menu caricare dovra' poi essere deciso a runtime, per ora:
	displayMenu('menu_inevidenza.txt',true);
	// displayMenu('menu_associazione.txt',true);
    } else {
	// alert("menu corrente con datafile " + mylinks.assegna('datafile'));
    }
    mylinks.assegna('current_url',url);

    $('footer').innerHTML='';

    var bottoni = document.getElementsByClassName('bottone_sel');
    for (var i in bottoni) {
	if (bottoni.hasOwnProperty(i)) {bottoni[i].className='bottone';}
    }

    // new Ajax.Updater({ success:'quadro', failure:'footer' }, url, { method: 'get' });


    var myurl = 'http://' + document.location.host + document.location.pathname + '#' + url;
    document.location.replace(myurl);

    myReq = new Ajax.Request(url,
	{
	    method: 'get',
	    onSuccess: function(transport) {
		//var button = $('pagename_' + $("linkList").assegna("current_url"));
		//if (button) {
		//    button.className='bottone_sel';
		//}
		var response = transport.responseText || "no response text";

		var q = $("quadro");
		// q.innerHTML=response;
		q.update(response);
		// alert("ok: " + q.parentNode.innerHTML);
		// alert("ok: " + q.id);
		attiva_snapshot();
		return;

		// questa parte di codice per ora la salto: non sono sicuro che
		// abbia senso convertire tutti i link in eventi da osservare...
		var a = q.getElementsByTagName('A'), elem;
		var re;
		// Il confronto per uguaglianza tra elem.host e document.location.host
		// fallisce su IE perche' elem.host include la porta (:80 per esempio)
		// mentre document.location.host non la include, a quanto pare
		for (var i=0, len=a.length; i < len; ++i) {
		    elem = a[i];
		    re = '^' + document.location.host;
		    // alert(elem.host + ' ' + document.location.host);
		    if (elem.host.match(re)) {
			elem.className='bottone';
			var preventDef = function preventDef(event) {
			    event.preventDefault();
			}
			try {
			    q.addEventListener("click", preventDef, false);
			} catch (e) {
			    for(var k in e) {
				if (e.hasOwnProperty(k)) {
				    // alert(k + ': ' + e[k]);
				}
			    }
			}

			Event.observe(elem, 'click', creaFunzioneCaricaPagina($('linkList'),elem,elem.href));
		    } else {
			x = 1;
		    }
		}
	    },
	    onFailure: function(transport) {
		var response = transport.responseText || "no response text";
		$("quadro").innerHTML="errore";
		$("footer").innerHTML=response;
	    }
	});
}

function CreaEvento(e) {
    var oggetto = {
	evento: e.evento,
	luogo: e.luogo,
	link: e.link,
	data: e.data,
	quando: e.quando,
	ora: e.ora
    };
    return Object.toJSON(oggetto);
}

function displayAppDonSergio(widget) {
    var quadro = $('quadro');
    quadro.innerHTML='Caricamento...';

    evidenziaTab(widget);

    quadro["eventi"] = eventi; // variabile globale
    prossimi_eventi();
    menuAppuntamenti();
}

function displayAppDonSergio_OLD(widget) {
    var quadro = $('quadro');
    quadro.innerHTML='Loading...';

    evidenziaTab(widget);

    myReq = new Ajax.Request("eventi.json",
	{
	    method: 'get',
	    onSuccess: function(transport) {
		var resp = new String(transport.responseText);
		var quadro = $('quadro');
		quadro["eventi"] = resp.evalJSON();
		prossimi_eventi();
		menuAppuntamenti();
	    },
	    onFailure: function(transport) {
		var response = transport.responseText || "no response text";
		$("quadro").innerHTML="errore";
		$("footer").innerHTML=response;
	    }
	});
}



function prossimi_eventi () {
    var quadro = $('quadro'),
	next_evt = [],
	adesso = new Date().setHours(0,0,0,0),
	evento;

    var myEventi = quadro["eventi"];

    $('footer').innerHTML='';

    for(var key in myEventi) {
	if (!myEventi.hasOwnProperty(key)) continue;
	for (var x in myEventi[key]) {
	    if (!myEventi[key].hasOwnProperty(x)) continue;
	    var data = myEventi[key][x].data;
	    if (data>=adesso) {
		evento = CreaEvento(myEventi[key][x]);
		next_evt.push(data + ' ' + evento);
	    }
	}
    }

    myclass = 'evento_futuro';
    var cnt = 0,
	evento,
	evt,
	num_eventi = 20,                   // Massimo numero di eventi da mostrare
	myArray = next_evt.sort(),
	txt = '<br><table id="tavola_eventi"><caption>Prossimi eventi (<a target="_new" href="http://spreadsheets.google.com/pub?key=pu4oNalLL1Gmc1Uy2tIhSFA&chrome=false&gid=0">calendario completo del 2009</a>)</caption>';

    for (var index = 0, len = myArray.length; index < len; ++index) {
	cnt = cnt+1;
	if (cnt > num_eventi) break;
	evento = myArray[index];
	evento = evento.substr(evento.indexOf(' ')+1);
	evt = evento.evalJSON();
	txt=txt + "<tr class=" + myclass + "><td>" + evt.evento + "</td>";
	var testo = evt.link + "";
	if (testo!="") {
	    // txt=txt + '<td><a href="' + evt.link + '">' + evt.luogo + '</a></td>';
	    txt=txt + "<td>" + evt.luogo + "</td>";
	} else {
	    txt=txt + "<td>" + evt.luogo + "</td>";
	}
	txt=txt + "<td>" + evt.quando + "</td>";
	txt=txt + "<td>" + evt.ora + "</td></tr>";
    }
    txt=txt+"</table>";
    $('quadro').innerHTML=txt;
}

function mostraDettagliEvento(key) {
    var adesso = new Date().setHours(0,0,0,0),
	cnt=0,          // Contatore righe della tabella eventi
	evento,
	html='',
	link,         // Eventuale link a pagina informativa sull'evento
	myclass = '',
	riga,
	ora,
	quadro = $('quadro');

    quadro.innerHTML='';
    $('footer').innerHTML='';

    // html = '<h2>' + key + '</h2>';
    html = '';
    html += '<table id="tavola_eventi">';
    // var mytable=$("tavola_eventi");
    // alert('mytable creata con id: ' + mytable.id + ' ' + mytable.innerHTML);

    var myEventi = quadro["eventi"][key];
    for (var item in myEventi) {
	if (!myEventi.hasOwnProperty(item)) continue;
	evento = myEventi[item];
	if (evento.data>adesso) {
	    myclass = 'evento_futuro';
	} else {
	    myclass = 'evento_passato';
	}
	
	html += '<tr class="' + myclass + '">';

	// riga = mytable.getElementsByTagName('tr')[cnt];
	cnt++;

	html += "<td>" + evento.evento + "</td><td>" + evento.luogo + "</td><td>" + evento.quando + "</td><td>" + evento.ora + "</td>";
    }
    html += '</table>';
    // alert(html);

    var bottoni = document.getElementsByClassName('bottone_sel');
    for (var i in bottoni) {
	if (bottoni.hasOwnProperty(i)) {bottoni[i].className='bottone';}
    }
    $(key).className='bottone_sel';

    quadro.innerHTML=html;
    // quadro.scrollTo();
    // var pos = Position.cumulativeOffset($(key))[1];
    // pos -= $(key).getHeight();
    // quadro.setStyle({marginTop: pos+'px'});
}

function attiva_snapshot() {
    // SNAP_COM.shot_main_js();
}

function evidenziaTab(widget) {
    return; // Da 11 novembre 2007 non la uso
    if (!widget) return;

    var elements = widget.parentNode.getElementsByTagName('a'),
	elem;
    for (var index = 0, len = elements.length; index < len; ++index) {
	elem = elements[index];
	// elem.setStyle({fontSize: '1.1em'});
	// elem.setStyle({background: 'none'});
	// elem.setStyle({color: '#456', textDecoration: 'none'});
	elem.className='voce_menu_normale';
	// elem.setStyle({borderRight: '1px solid #AFBEC7'});
	// elem.setStyle({font: 'bold 1.1em sans-serif'});
    }
    widget.className='voce_menu_selezionata';
    // widget.setStyle({color: '#db7374', textDecoration: 'underline'});
    // widget.setStyle({background: '#db7374 url(/img/li.gif)'});
    // widget.setStyle({fontSize: '1.4em'});
    // widget.setStyle({borderRight: '1px solid #e85355'});
}

// Utilizza le variabili globali impostate dal js
// http://mid.ocap.net:8008/aslvf/chapter_title 
// capitolo_libro_data, capitolo_libro_titolo, capitolo_libro_sottotitolo
function aggiorna_capitolo_libro(oggetto) {
    var html = capitolo_libro_data + ' ';
    html+='<a target="_new" href="http://mid.ocap.net:8008/aslvf/capitolo">'+capitolo_libro_titolo+'</a>';
    html += ' - <em>' + capitolo_libro_sottotitolo + '</em>';
    oggetto.update(html);
}

// 28 novembre 2007
function aslvf_indice_libro(oggetto) {
    var html = '<table class="indice_libro">',
	adesso = new Date(),
	data,
	e;

    for (var t in aslvf_toc) {
	if (!aslvf_toc.hasOwnProperty(t)) continue;
	e = aslvf_toc[t].data.split('-');
	// data = new Date(parseInt(e[2]),parseInt(e[1])-1,parseInt(e[0])-1);
	data = new Date(e[2],e[1]-1,e[0]-1);
	if (adesso>data) continue;

	html += '<tr><td>' + aslvf_toc[t].titolo.replace(/\\/, '') + ' (' + aslvf_toc[t].data + ')</td><td>' + aslvf_toc[t].subtitle.replace(/\\/, '') + '</td></tr>'
    }
    html += '</table>'
    oggetto.update(html);
}



// 28 aprile 2008
function ElencaPosts(root) {
    var feed = root.feed;
    var entries = feed.entry || [];
    var datapost, adesso=new Date(), giorni;

    var html = ['<ul>'];
    for (var i = 0; i < entries.length; ++i) {
        var entry = entries[i];
	var title = entry.title.$t;

	entry.updated.$t.substr(0,10).split('-');
	year=entry.updated.$t.substr(0,10).split('-')[0];
	month=entry.updated.$t.substr(0,10).split('-')[1]-1;
	day=entry.updated.$t.substr(0,10).split('-')[2];
	datapost=new Date(year,month,day);

	giorni= Math.round((adesso-datapost)/1000/60/60/24);

	if (giorni<120) {
            html.push('<li><a href="', entry.link[0].href ,'">', title,'</a></li>');
        }
    }
    html.push('</ul>');
    document.getElementById("linkList").innerHTML = html.join("");
}
