/*
* funzione per assegnare l'oggetto XMLHttpRequest
* compatibile con i browsers più recenti e diffui (HTML.it)
*/
function assegnaXMLHttpRequest() {
var XHR = null; // variabile di ritorno, nulla di default
browserUtente = navigator.userAgent.toUpperCase(); // informazioni sul nome del browser
// browser standard con supporto nativo
// non importa il tipo di browser
if(typeof(XMLHttpRequest) === "function" || typeof(XMLHttpRequest) === "object") {
XHR = new XMLHttpRequest();
}
// browser Internet Explorer
// è necessario filtrare la versione 4
else if( window.ActiveXObject && browserUtente.indexOf("MSIE 4") < 0) {
// la versione 6 di IE ha un nome differente
// per il tipo di oggetto ActiveX
if(browserUtente.indexOf("MSIE 5") < 0) {
XHR = new ActiveXObject("Msxml2.XMLHTTP");
}
// le versioni 5 e 5.5 invece sfruttano lo stesso nome
else {
XHR = new ActiveXObject("Microsoft.XMLHTTP");
}
}
return XHR;
}
//----------------------------------------------------------------------------------------------------------------
// INIZIO GESTIONE COMMENTI
//----------------------------------------------------------------------------------------------------------------
/**
* questo e' il menu principale che visualizza n record dei thread se ci sono
*
* @param integer intero id del diario in questione
* @param integer 0 devo nascondere il div se e' visualizzato, 1 non lo nascondo
*/
function menu_principale(id_diario, non_nascondere, pagina)
{
if (pagina == undefined || isNaN(pagina)) {
pagina = 1;
} else {
document.location.href="#partenza_" + id_diario;
}
valorizzazione(id_diario);
var div = document.getElementById(('commenti_' + id_diario));
// nascondo il form e il login
document.getElementById(('form_ins_' + id_diario)).style.display = 'none';
document.getElementById(('login_' + id_diario)).style.display = 'none';
// decido se visualizzare o meno menu principale
if (div.style.display == 'block' && non_nascondere==0) {
// document.getElementById(('info_' + id_diario)).style.display = 'none';
div.style.display = 'none';
return;
} else {
div.style.display = 'block';
// a differenza di block, inline non manda a capo
}
// passo il numero dei commenti che mi riporta la pagina, se il numero e fasullo
// setto a zero lato php i commenti di quel diario
var commenti = document.getElementById(('numero_commenti_' + id_diario));
var num_commenti = parseInt(commenti.innerHTML);
var conn = assegnaXMLHttpRequest();
// elenco eventuali thread o sottofigli di un thread e accodato il form di inserimento
var accoda = 'id_diario=' + id_diario + '&num_commenti=' + num_commenti + '&pagina=' + pagina;
conn.open('POST', '/ajax/commenti/visualizza_thread.php', true);
conn.setRequestHeader("Content-Type", "application/x-www-form-urlencoded"); // codice POST
var parametri = new Array();
parametri['id_diario'] = id_diario;
parametri['funzione'] = 'menu_principale';
sviluppo(conn, parametri);
conn.send(accoda);
}
/**
* eseguo l'inserimento nel db di un nuovo thread previo controllo dei valori che mi arrivano
* ed aggiorno l'albero del thread
*
* @param integer numero del diario a cui si fa riferimento
*/
function ins_thread(id_diario)
{
obj_pagina = document.getElementById('pagina_' + id_diario);
if (obj_pagina == undefined) {
pagina = 1;
} else if (isNaN(obj_pagina.value)) {
pagina = 1;
} else {
pagina = obj_pagina.value;
}
// questi valori mi servono per essere inseriti nel db se tutto va bene
var nome = document.getElementById(('com_nome_' + id_diario));
var email = document.getElementById(('com_email_' + id_diario));
// assurdo stra assurdo, se lo chiamo titolo explorer mi da errore (ma si puo'?)
var n_titolo = document.getElementById(('com_titolo_' + id_diario));
var testo = document.getElementById(('com_testo_' + id_diario));
// se titolo o testo non sono valorizzati do alert di errore
if (n_titolo.value.replace(/\s+/g, '') == '') {
alert('il titolo e\' obbligatorio ');
return;
} else if (testo.value.replace(/\s+/g, '') == '') {
alert('il testo e\' obbligatorio');
return;
}else if (nome.value.replace(/\s+/g, '') == '') {
alert('il nome e\' obbligatorio');
return;
}
// disabilito il tasto per l'inserimento
document.getElementById('ins_new_comment').disabled = true;
document.getElementById('ins_new_comment').className = 'puls disabilito_inserimento';
// nascondo eventuale contenuto di login
document.getElementById(('login_' + id_diario)).style.display = 'none';
// mi serve per aggiornare nel form il valore del reply a cui si risponde
var reply = document.getElementById(('reply_' + id_diario));
// mi serve per aggiornare nel form il valore del thread a cui si risponde
var thread = document.getElementById(('thread_' + id_diario));
/*
* il div che vado a riferenziare contiene la stringa:
* 'nessun commento'
* 1 commento
* n commenti
* questo mi serve per aggiornare il contatore quando inserisco o cancello un thread
*/
var commenti = document.getElementById(('numero_commenti_' + id_diario));
var num_commenti = parseInt(commenti.innerHTML);
// le variabili che gli passo alla pagina php via POST
var accoda = 'nome='+ escape(nome.value) + '&email=' + escape(email.value) + '&titolo=' + escape(n_titolo.value.replace('+', '___'))
+ '&testo=' + escape(testo.value) + '&id_diario=' + id_diario + '&reply=' + reply.value +
'&thread=' + thread.value;
var conn = assegnaXMLHttpRequest();
conn.open('POST', '/ajax/commenti/ins.php', true);
conn.setRequestHeader("Content-Type", "application/x-www-form-urlencoded"); // codice se POST
//
conn.onreadystatechange = function() {
if (conn.readyState == 4) {
if (conn.status == 200) { // stato "completed" e risposta "OK"
risposta = conn.responseText;
responso = risposta.substr(0, 2); //(OK|KO)
messaggio = risposta.substr(2);
// nascondo il form
document.getElementById(('form_ins_' + id_diario)).style.display = 'none';
// se e la prima risposta ad un thread metto il segno piu sull'ancoraggio
ancoraggio = document.getElementById(('a_' + thread.value));
if(responso == 'OK') {
menu_principale(id_diario, 1, pagina);
// incremento il contatore di 1
if (isNaN(num_commenti)) {
commenti.innerHTML = '1 commento';
} else {
commenti.innerHTML = (num_commenti + 1) + ' commenti';
}
} else { // errore
alert(messaggio);
}
} else {
alert("Si sono verificati dei problemi lato server:\n" + conn.statusText);
}
}
}
//
conn.send(accoda);
}
function chiudi_info(id_diario, thread)
{
var ancoraggio = document.getElementById(('a_' + thread));
ancoraggio.setAttribute('title', 'espandi');
document.getElementById('n_commenti_' + thread).style.display = 'inline';
document.getElementById('a_' + thread).style.display = 'inline';
distruggo = document.getElementById('figli_di_' + thread);
distruggo.parentNode.removeChild(distruggo);
}
/**
* questa funzione viene richiamata ogni volta che si va all'interno di un thread. Interrogo il db
*
* @param integer numero del diario a cui si fa riferimento
* @param integer indica il padre thread
*/
function thread_figli(id_diario, thread)
{
// l'id dell'ul padre e' formato: 'li_thread_(id_thread)'
var ul_padre = document.getElementById(('li_thread_' + thread));
// nascondi il form di risposta e la login
document.getElementById(('form_ins_' + id_diario)).style.display = 'none';
document.getElementById(('login_' + id_diario)).style.display = 'none';
// attributo ancoraggio formato: a_(id_thread)
var ancoraggio = document.getElementById(('a_' + thread));
if (ancoraggio.getAttribute('title') == 'espandi') { // ho cliccando per espandere
ancoraggio.setAttribute('title', 'raggruppa');
document.getElementById('n_commenti_' + thread).style.display = 'none';
ancoraggio.style.display = 'none';
// document.getElementById('a_bis_' + thread).style.display = 'inline';
} else {
ancoraggio.setAttribute('title', 'espandi');
document.getElementById('n_commenti_' + thread).style.display = 'inline';
ancoraggio.style.display = 'inline';
// document.getElementById('a_bis_' + thread).style.display = 'none';
distruggo = document.getElementById('figli_di_' + thread);
distruggo.parentNode.removeChild(distruggo);
return;
}
var conn = assegnaXMLHttpRequest();
var accoda = 'id_diario=' + id_diario + '&thread=' + thread;
conn.open('POST', '/ajax/commenti/info_figli.php', true);
conn.setRequestHeader("Content-Type", "application/x-www-form-urlencoded"); // codice POST
var parametri = new Array();
parametri['funzione'] = 'thread_figli';
parametri['thread'] = thread;
parametri['id_diario'] = id_diario;
sviluppo(conn, parametri);
conn.send(accoda);
}
/**
* eseguo la cancellazione del record se non e un thread altrimenti cancello a cascata tutto l'albero
* (NOTA: setto i record a cancellati non faccio una delete ma update dello stato)
*
* @param integer numero del diario a cui si fa riferimento
* @param integer id del record che l'utente vuole cancellare
* @param integer indica il padre thread
*/
function elimina_messaggio(id_diario, id_messaggio, thread)
{
if (! confirm('confermi la cancellazione del messaggio?'))
return;
// nascondo il div che da informazioni su un record selezionato
//FC document.getElementById(('info_' + id_diario)).style.display = 'none';
// nascondo il form dell'inserimento e login
document.getElementById(('form_ins_' + id_diario)).style.display = 'none';
document.getElementById(('login_' + id_diario)).style.display = 'none';
// commenti e' il div che serve per l'aggiornamento del counter a video dopo la cancellazione
var commenti = document.getElementById(('numero_commenti_' + id_diario));
// commenti bis si riferisce al tag h1 dwentro il div commenti che deve aggiornato passo passo
// come il contatore dei messaggi esterno
var commenti_bis = document.getElementById(('numero_commenti_interni_' + id_diario));
var num_commenti = parseInt(commenti.innerHTML);
var conn = assegnaXMLHttpRequest();
var accoda = 'id_messaggio=' + id_messaggio + '&thread=' + thread + '&id_diario=' + id_diario;
conn.open('POST', '/ajax/commenti/cancellazione.php', true);
conn.setRequestHeader("Content-Type", "application/x-www-form-urlencoded"); // codice POST
//
conn.onreadystatechange = function() {
if (conn.readyState == 4) {
if (conn.status == 200) { // stato "completed" e risposta "OK"
risposta = conn.responseText.split('|');
if (risposta[0] == 'OK') {
/*
// aggiorno l'albero del thread se non sta cancellando il thread padre
if (id_messaggio != thread) {
document.getElementById(('ul_figlio_' + thread)).innerHTML = risposta[2];
}
// eseguo l'operazione matematica di sottrazione per l'aggiornamento del counter principale
sottrai = parseInt(risposta[1]); // indica quanti record ho settato a cancellati
nuovi = num_commenti - sottrai; // nuovi e il nuovo valore da visualizzare
if (nuovi == 0) { // ha cancellato tutto
commenti.innerHTML = 'Nessun commento';
commenti_bis.innerHTML = 'Nessun commento';
} else if (nuovi == 1){
commenti.innerHTML = '1 commento';
commenti_bis.innerHTML = '1 commento';
} else {
commenti.innerHTML = nuovi + ' commenti';
commenti_bis.innerHTML = nuovi + ' commenti';
}
// ripeto l'operazione per il counter del singolo thread se non cancella il thread padre
if (id_messaggio != thread) {
contatore = document.getElementById(('n_commenti_' + thread));
nuovo_valore = parseInt(contatore.innerHTML) - sottrai;
contatore.innerHTML = nuovo_valore;
} else {
*/
menu_principale(id_diario, 1);
// }
} else {
document.getElementById(('commenti_' + id_diario)).innerHTML = conn.responseText;
}
} else {
alert("Si sono verificati dei problemi lato server:\n" + conn.statusText);
}
}
}
//
conn.send(accoda);
}
/**
* visualizza il titolo e il testo del record scelto
*
* @param integer numero del record scelto
* @param integer numero del diario a cui si fa riferimento
* @param integer numero del thread padre
* @param string string nel nick utente (gestione avatar)
*/
function dettagli(id_record, id_diario, thread, nick)
{
var conn = assegnaXMLHttpRequest();
var accoda = 'id_record=' + id_record + '&id_diario=' + id_diario;
if (nick != '') { // accodo nick alla chiamata solo se non e un utente anonimo
accoda += '&nick=' + nick;
}
// nascondi il form di risposta e la login
document.getElementById(('form_ins_' + id_diario)).style.display = 'none';
document.getElementById(('login_' + id_diario)).style.display = 'none';
// ciclo tutti i record per togliere dalla classe l'eventuale seconda classe "selezione"
var commenti = document.getElementById(('commenti_' + id_diario));
var lista = commenti.getElementsByTagName('li');
for(i=0; i < lista.length; i++) {
vecchia_classe = lista.item(i).getAttribute('class');
// la classe dei li e composta dalla stringa livello_(numero) a seconda della profondita'
// e una seconda classe 'selezione' facoltativa, compare solo quando clicco sopra il record
// quando ciclo i li devo togliere la stringa selezione e lasciare la classe principale
// 9 indica la lunghezza della parola "selezione"
if(vecchia_classe!=null && vecchia_classe.length > 9 && vecchia_classe.substr(0, 9) == 'selezione') {
nuova_classe = vecchia_classe.substr(10); // tolfo anche lo spazio tra prima e seconda classe
lista.item(i).setAttribute('class', nuova_classe);
}
// altrimenti non tocco la classe
}
// do al record selezionato un classe
if (id_record == thread) { // thread padre
nuova_classe = 'selezione ' + document.getElementById(('li_thread_' + thread)).getAttribute('class');
document.getElementById(('li_thread_' + thread)).setAttribute('class', nuova_classe);
} else { // thread figlio
nuova_classe = 'selezione ' + document.getElementById(('li_risposte_' + id_record)).getAttribute('class');
document.getElementById(('li_risposte_' + id_record)).setAttribute('class', nuova_classe);
}
// div che contiene tutte le info se non ci sono le aggiunge altrimenti le rilegge
//FC var obj_info = document.getElementById(('info_' + id_diario));
/*FC
var lista_info = obj_info.getElementsByTagName('div');
for(i=0; i < lista_info.length; i++) {
// ogni div contiene una stringa piu un div con un testo piu un href per rispondere
// a me interessa solo il div esterno
if(lista_info.item(i).getAttribute('id').substr(0, 4) == 'div_') {
app = lista_info.item(i).getAttribute('id');
document.getElementById(app).style.display = 'none';
// lista_info.item(i).setAttribute('style', 'display: none;')
}
}
*/
// quello selezionato se esiste lo mostro
var mostra = document.getElementById(('div_' + id_record));
// obj_info.style.display = 'block'; // visualizzo il div delle info
if (mostra != undefined) {
mostra.style.display = 'block';
return;
}
conn.open('POST', '/ajax/commenti/dettagli.php', true);
conn.setRequestHeader("Content-Type", "application/x-www-form-urlencoded"); // codice POST
var parametri = new Array();
parametri['id_diario'] = id_diario;
parametri['id_record'] = id_record;
parametri['thread'] = thread;
parametri['funzione'] = 'dettagli';
sviluppo(conn, parametri);
conn.send(accoda);
}
/**
* visualizza il form di inserimento di una nuova risposta costruendola se non esiste
* e visualizzandola in caso contrario
*
* @param integer numero del diario a cui si fa riferimento
* @param integer numero del record a cui replicare
* @param integer numero del thread
*/
function nuovo_commento(id_diario, reply, thread)
{
valorizzazione(id_diario);
// nascondo eventuali info
// document.getElementById(('info_' + id_diario)).style.display = 'none';
var conn = assegnaXMLHttpRequest();
var accoda = 'id_diario=' + id_diario + '&reply=' + reply
+ '&thread=' + thread;
conn.open('POST', '/ajax/commenti/form.php', true);
conn.setRequestHeader("Content-Type", "application/x-www-form-urlencoded"); // codice POST
var parametri = new Array();
parametri['id_diario'] = id_diario;
parametri['funzione'] = 'nuovo_commento';
sviluppo(conn, parametri);
conn.send(accoda);
}
/**
* visualizza il form di login e viene richiamato anche per elaborare i dati
*
* @param integer numero del diario a cui si fa riferimento
*/
function loggati(id_diario) {
document.getElementById(('form_ins_' + id_diario)).style.display = 'none';
var obj = document.getElementById(('login_' + id_diario));
if (obj.style.display == 'none') { // devo costruire il form
accoda = 'action=costruisci&id_diario=' + id_diario;
} else {
accoda = 'action=elabora' + '&cerca_nick=' + escape(document.getElementById(('mio_nick_' + id_diario)).value)
+ '&cerca_password=' + escape(document.getElementById(('mia_password_' + id_diario)).value)
+ '&id_diario=' + id_diario;
}
var conn = assegnaXMLHttpRequest();
conn.open('POST', '/ajax/commenti/login.php', true);
conn.setRequestHeader("Content-Type", "application/x-www-form-urlencoded"); // codice POST
var parametri = new Array();
parametri['id_diario'] = id_diario;
parametri['funzione'] = 'loggati';
sviluppo(conn, parametri);
conn.send(accoda);
}
/*
* questa funzione viene lanciata subito dopo che si esegue nelle altre funzioni una chiamata ajax
* elabora la risposta del php ed esegue gli aggiornamenti javascript a seconda del case richiamato
* eval restitusce un array che contiene una chiave 'errore' se qualcosa va male oppure un'altra chiave
* 'html' per la stampa di informazioni se tutto e' andato bene, in casi specifici puo' essere che
* vengano passate anche altre chiavi
*
* @param object oggetto connessione per la chiamata a pagina php
* @param array contiene i parametri che servono per gli aggiornamenti js es. id_diario (array associativo)
*/
function sviluppo(conn, parametri) {
conn.onreadystatechange = function() {
if (conn.readyState == 4) {
if (conn.status == 200) { // stato "completed" e risposta "OK"
eval(conn.responseText); // eseguo la risposta del PHP
switch (parametri['funzione']) {
case 'dettagli':
obj_info = document.getElementById(('info_' + parametri['id_diario']));
// se c'e' un errore lo scrivo
if (data['errore'] != '') {
obj_info.innerHTML = data['errore'];
} else { // altrimenti procedo con la stampa delle informazioni
valore_precedente = obj_info.innerHTML;
if (data['avatar'] == '') {
aggiunta_avatar = '';
} else {
first = new String(data['avatar']);
aggiunta_avatar = '';
}
obj_info.innerHTML = valore_precedente +
'
';
}
break;
case 'nuovo_commento':
var form_ins = document.getElementById(('form_ins_' + parametri['id_diario']));
document.getElementById(('login_' + parametri['id_diario'])).style.display = 'none';
if (data['errore'] != '') { // stampo errore
form_ins.innerHTML = data['errore'];
} else { // stampo il form d'inserimento
// lato php ho tolto gli \n con --- per non far andare in errore l'eval js
// qui ora, annullo questa specifica modifica
form_ins.innerHTML = data['html'].replace(/---/g, '\n');
}
// visualizzo il form
form_ins.style.display = 'block';
// ancoraggio ad a name per ritrovarsi subito nel form di inserimento
document.location.href = '#nuovo_commento_' + parametri['id_diario'];
break;
case 'thread_figli':
ul_padre = document.getElementById(('li_thread_' + parametri['thread']));
valore_precedente = ul_padre.innerHTML;
// se c'e' un errore lo scrivo
if (data['errore'] != '') {
ul_padre.innerHTML = valore_precedente + data['errore'];
} else {
ul_padre.innerHTML = valore_precedente + data['html'];
}
break;
case 'loggati':
var obj = document.getElementById(('login_' + parametri['id_diario']));
obj.style.display = 'block';
if (data['errore'] != '') {
obj.innerHTML = data['errore'];
} else {
if (data['action'] == 'vai') {
nuovo_commento(parametri['id_diario'], document.getElementById(('reply_' + parametri['id_diario'])).value,
document.getElementById(('thread_' + parametri['id_diario'])).value);
obj.style.display = 'none';
} else if (data['action'] == 'novai') {
alert('login errata');
} else { // form
obj.innerHTML = data['html'];
}
}
break;
case 'menu_principale':
var commenti = document.getElementById(('commenti_' + parametri['id_diario']));
// mando in stampa il codice html che mi viene ritornano
if (data['errore'] != '') {
commenti.innerHTML = data['errore'];
} else {
commenti.innerHTML = data['html'];
}
// aggiorno il contatore interno
var commenti_bis = document.getElementById(('numero_commenti_interni_' + parametri['id_diario']));
if (commenti_bis && document.getElementById(('numero_commenti_' + parametri['id_diario']))) {
commenti_bis.innerHTML = document.getElementById(('numero_commenti_' + parametri['id_diario'])).innerHTML;
}
break;
} // fine switch
} else {
alert("Si sono verificati dei problemi lato server:\n" + conn.statusText);
}
}
}
}
/*
* controlla in ogni chiamata di menu_principale e nuovo_commmento (che sono le due chiamate principali)
* se i div principali per la gestione della sezione commento esistono altrimenti li creo tutti in un colpo
*
* @param integer id del diario a cui fanno riferimento i commenti
*/
function valorizzazione(id_diario) {
if (document.getElementById(('commenti_' + id_diario)) == null) {
document.getElementById(('gestcomm_' + id_diario)).innerHTML =
''
// + ''
+ ''
+ '';
}
}
//----------------------------------------------------------------------------------------------------------------
// FINE GESTIONE COMMENTI
//----------------------------------------------------------------------------------------------------------------
/*
* questa funzione e stata scritta per venire incontro al vecchio codice che gestisce una funzione chiamata commenta.
* Se il sito non e' stato rigenerato, allora questo finle non sara' mai chiamato, altrimenti ricevero' sempre due o 3 parametri
* a seconda che chiami menu_principale o nuovo_commento.
* menu_principale ha 2 parametri e nuovo_commento ha 3 parametri. A seconda della valorizzazione o meno
* di parametri che mi arrivano, capisco quale funzione chiamare
*
* 2 parametri definiti chiama menu_principale
* 3 parametri definiti chiama nuovo_commento
*/
function commenta(id_diario, primo_parametro, secondo_parametro)
{
if (secondo_parametro == undefined) {
menu_principale(id_diario, primo_parametro);
} else {
nuovo_commento(id_diario, primo_parametro, secondo_parametro);
}
}
function aprifoto(url,nick,larg,alt)
{
window.open(url,nick,'history=no,toolbar=no,location=no,border=0,directories=no,status=no,menubar=no,scrollbars=yes,resizable=no,width='+larg+',height='+alt);
}
function navsub(dove)
{
document.navform.diarida.value = dove;
document.navform.submit();
}
/*
function ok(utente,tipo)
{
// le variabili che gli passo alla pagina php via POST
var accoda = 'utente='+ escape(utente) + '&tipo=' + escape(tipo);
var conn = assegnaXMLHttpRequest();
conn.open('POST', '/ajax/amici/ins_richiesta.php', true);
conn.setRequestHeader("Content-Type", "application/x-www-form-urlencoded"); // codice se POST
conn.onreadystatechange = function() {
if (conn.readyState == 4) {
if (conn.status == 200) { // stato "completed" e risposta "OK"
alert(conn.responseText);
} else {
alert("Si sono verificati dei problemi lato server:\n" + conn.statusText);
}
}
}
conn.send(accoda);
}
*/
function ok(utente, tipo)
{
return amico.richiesta(utente, tipo);
}
amico = {
// richiesta amicizia o aggiunta ai nemici
// tipo vale "amico" o "nemico"
richiesta: function (utente, tipo)
{
if (tipo == 'nemici') {
var callback = { success: amico.richiestaOK, failure: amico.niente };
var post = 'nick=' + escape(utente) + '&tipo=' + escape(tipo);
if (!confirm('Sei sicuro di voler aggiungere ' + utente + ' come tuo nemico?')) {
return false;
}
YAHOO.util.Connect.asyncRequest('POST', '/ajax/amici/ins_richiesta.php', callback, post);
} else {
var padre = document.getElementById('bottoni');
if (!padre) {
return false;
}
padre.className = 'yui-skin-sam';
var form = document.createElement('form');
form.setAttribute('action', '/ajax/amici/ins_richiesta.php');
form.setAttribute('method', 'post');
var inp = document.createElement('input');
inp.setAttribute('type', 'hidden');
inp.setAttribute('name', 'tipo');
inp.setAttribute('value', 'amici');
form.appendChild(inp);
var inp = document.createElement('input');
inp.setAttribute('type', 'hidden');
inp.setAttribute('name', 'nick');
inp.setAttribute('value', utente);
form.appendChild(inp);
var ta = document.createElement('textarea');
ta.setAttribute('name', 'msg');
ta.setAttribute('cols', '50');
ta.setAttribute('rows', '3');
form.appendChild(document.createTextNode('inserisci un messaggio'));
form.appendChild(ta);
var diagOpt = {
width: '400px',
fixedcenter: true,
buttons: [{ text: 'OK', handler: amico.mandaRichiesta, isDefault: true },
{ text: 'Annulla', handler: amico.chiudiRichiesta }]
}
var opz = new YAHOO.widget.Dialog('richAmic', diagOpt);
opz.setHeader('richiedi amicizia di ' + utente);
opz.setBody(form);
opz.render(padre);
opz.callback.success = amico.richiestaOK;
}
return false;
},
// funzione richiamata dalla precedente in caso di successo
richiestaOK: function(o)
{
var ret = eval('(' + o.responseText + ')');
if (ret.errore) {
alert(ret.errore);
return;
}
alert(ret.msg);
},
// richiamata al click di "OK" nel dialog
mandaRichiesta: function()
{
this.submit();
},
// richiamata al click di "Annulla" nel dialog
chiudiRichiesta: function()
{
this.cancel();
}
}
// la funzione assegnaXMLHttpRequest(); si trova nel file commenti_ajax.js
function valorizzo_calendario(idu, e)
{
xPos = YAHOO.util.Event.getPageX(e);
yPos = YAHOO.util.Event.getPageY(e);
// lancio la query solo la prima volta
verifica = document.getElementById('mesi_validi');
if (verifica.value != '') {
cal(xPos, yPos);
return;
}
var conn = assegnaXMLHttpRequest();
accoda = 'idu=' + idu;
conn.open('POST', '/ajax/blog/valorizza_calendario.php', true);
conn.setRequestHeader("Content-Type", "application/x-www-form-urlencoded"); // codice POST
conn.onreadystatechange = function() {
if (conn.readyState == 4) {
if (conn.status == 200) { // stato "completed" e risposta "OK"
if (conn.responseText.length >= 3 ) { // per evitare messaggio di KO e per chi non ha diari
verifica.value = conn.responseText;
cal(xPos, yPos);
}
} else {
alert("Si sono verificati dei problemi lato server:\n" + conn.statusText);
}
}
}
conn.send(accoda);
}
// FC richiamo
var source;
var campi = new Array();
var mesi_validi;
function cal(xPos, yPos)
{
var val = document.getElementById('datacompleta');
var dt = new Array();
source = val;
dt = val.value.split('-');
mesi_validi = document.getElementById('mesi_validi');
url_valida = new String(document.location);
if (url_valida.indexOf('200') != -1) {
anno_mese_selezionato = url_valida.substr(url_valida.indexOf('200'),4);
showCalendar(new Date(anno_mese_selezionato, dt[1] - 1), xPos, yPos);
} else {
showCalendar(new Date(dt[0], dt[1] - 1), xPos, yPos);
}
}
// fine richiamo
// Calendario
var browser = document.layers ? 0 : document.all ? 1 : 2;
var mesi = new Array('Gennaio', 'Febbraio', 'Marzo', 'Aprile', 'Maggio', 'Giugno',
'Luglio', 'Agosto', 'Settembre', 'Ottobre', 'Novembre', 'Dicembre');
var today = new Date();
var anno = today.getFullYear();
var mese = today.getMonth();
var isOn = false;
function action(m, a) {
getId().showIt(false);
app = m;
if (m.length == 1) {
app = '0' + m;
}
// ha chiesto di vedere tutti i diari
if (parseInt(m) == 0) {
document.getElementById('datacompleta').value = '';
} else {
document.getElementById('datacompleta').value = a + '-' + app;
}
if (document.getElementById('invio_form').action.indexOf('/mese/') != -1) {
if (document.getElementById('anteprima')) {
document.location = 'http://my.dev.giovani.it/blog/index.php?op=6&mese=' + document.getElementById('datacompleta').value;
} else {
document.location = '/mese/' + document.getElementById('datacompleta').value;
}
} else {
document.getElementById('invio_form').submit();
}
}
function nascondi_calendario()
{
getId().showIt(false);
}
function calendar(mese, anno) {
var tx = 'X\n
\n';
for (j=0; j<3; j++) {
app_mese = j + (i * 3);
// per mettere o meno il link al mese
if ((app_mese + 1) < 10) {
app_controllo = anno + '-0' + (app_mese + 1);
} else {
app_controllo = anno + '-' + (app_mese + 1);
}
pos = mesi_validi.value.indexOf(app_controllo);
if (pos != -1) {
// conta = mesi_validi.value.substr(-2, 1);
// ottengo da inizio data fino a 10 caratteri, non spaendo se la cifra dei diari e a 1 o
// 2 o n cifre, prendo un po piu di testo e poi ciclo fino alla virgola perche so che questa c'e'
fc_appoggio = new String(mesi_validi.value.substr(pos, 10));
fc_appoggio = fc_appoggio.substr(8);
conta = fc_appoggio.replace(',', '');
tx += apri_td + ' '
+ mesi[app_mese] + ' (' + conta + ')\n'; tx += '\n';
} else {
tx += apri_td2 + mesi[app_mese]; tx += '\n';
}
}
tx += '
\n';
}
tx += '
\n';
return tx;
}
function dataframe(x) {
var s = '
';
s += '
\n
';
s += x; // codice html che costruisce i mesi con un determinato anno
s += '
';
// nuova tabella
s += '
\n
\n
';
return s;
}
function altro_anno(x) {
anno += x;
var s = dataframe(calendar('01', anno));
writeLayer(s);
}
function getId() {
switch (browser) {
case 0:
return document.layers.calframe;
case 1:
//return eval('calframe');
return document.getElementById("calframe");
case 2:
return document.getElementById("calframe");
}
}
function moveLayer(xPos, yPos) {
switch (browser) {
case 0:
this.left = (xPos - 120);
this.top = (yPos + 20);
break;
case 1:
this.style.pixelLeft = (xPos - 120);
this.style.pixelTop = (yPos + 20);
break;
default:
pixel_width = (xPos - 120) + 'px';
pixel_height = (yPos + 20) + 'px';
this.style.left = pixel_width;
this.style.top = pixel_height;
}
}
function createlayer() {
var s;
if (document.layers) {
s = '';
} else {
s = '
';
}
if (document.layers)
s += '';
else;
s += '
';
document.writeln(s);
}
function showIt(on) {
isOn = on;
if (browser)
this.style.visibility = (on) ? "visible" : "hidden";
else
this.visibility = (on) ? "show" : "hide";
}
function writeLayer(s) {
var id = getId();
if (browser)
id.innerHTML = s;
else {
id.document.open();
id.document.write(s);
id.document.close();
}
}
function init() {
// aggiunta da FC per lanciare un altra funzione all'onload che fa tutt'altre cose
nascondi_scritta_ultimi_messaggi();
// fine aggiunta
window.onscroll = nascondi_calendario; // idem vedi sopra
var id = getId();
id.moveLayer = moveLayer;
id.showIt = showIt;
id.showIt(false);
}
function showCalendar(d, xpos, ypos) {
if (!isOn) {
anno = d.getFullYear();
mese = d.getMonth();
if (arguments.length > 2) {
var id = getId();
id.moveLayer(xpos, ypos);
}
else {
getId().moveLayer(100, 100);
}
writeLayer(dataframe(calendar(mese, anno)));
}
getId().showIt(!isOn);
}
createlayer(1);
onload = init;
// GESTIONE AVATAR PER I COMMENTI
/**
* visualizzo l'avatar dell'utente presente nella lista amici
*
* @param string stringa nick utente
* @param event evento per rilevare le coordinate del mouse all'evento onmouseover
*/
function verifica_avatar(nick, e)
{
// coordinate mouse
var IE = document.all?true:false
var avatar = document.getElementById('avatar_amico');
var archivio = document.getElementById('avatar_archivio');
if (!IE) document.captureEvents(Event.MOUSEMOVE)
if (IE) { // grab the x-y pos.s if browser is IE
tempX = event.clientX + document.body.scrollLeft
tempY = event.clientY + document.body.scrollTop
} else { // grab the x-y pos.s if browser is NS
tempX = e.pageX
tempY = e.pageY
}
// se l'immagine e gia salvata non eseguo la chiamata ajax
controllo = document.getElementById(('avatar_' + nick));
if (controllo != null) {
avatar.innerHTML = '';
avatar.style.top = tempY + 'px';
avatar.style.left = tempX + 'px';
avatar.style.display = 'block';
return;
}
var conn = assegnaXMLHttpRequest();
conn.open('POST', '/ajax/commenti/mostra_avatar.php', true);
conn.setRequestHeader("Content-Type", "application/x-www-form-urlencoded"); // codice se POST
//
conn.onreadystatechange = function() {
if (conn.readyState == 4) {
if (conn.status == 200) { // stato "completed" e risposta "OK"
if (conn.responseText != 'KO') {
prima_lettera = new String(nick);
first = prima_lettera.substr(0, 1);
vecchio_codice = archivio.innerHTML;
archivio.innerHTML = vecchio_codice + '';
avatar.innerHTML = '';
avatar.style.top = tempY + 'px';
avatar.style.left = tempX + 'px';
avatar.style.display = 'block';
}
} else {
alert("Si sono verificati dei problemi lato server:\n" + conn.statusText);
}
}
}
conn.send('nick=' + nick);
}
// nascondo avatar vedi funzione sopra
function no_avatar()
{
document.getElementById('avatar_amico').innerHTML = '';
document.getElementById('avatar_amico').style.display = 'none';
}
function nascondi_scritta_ultimi_messaggi()
{
var last_message = document.getElementById('ultimi_messaggi');
if (!last_message) {
return;
}
var sottostringa = new String(document.location);
if (sottostringa.substr(-20) != 'gestione_preview.php' && sottostringa.substr(-12) != '.giovani.it/') {
last_message.style.display = 'inline';
} else {
last_message.style.display = 'none';
}
}
// sottoscrizione blog
function sottoscrivi_blog(nick)
{
if (nick=='') {
return;
}
// le variabili che gli passo alla pagina php via POST
var accoda = 'nick='+ escape(nick);
var conn = assegnaXMLHttpRequest();
conn.open('POST', '/ajax/blog/sottoscrivi.php', true);
conn.setRequestHeader("Content-Type", "application/x-www-form-urlencoded"); // codice se POST
conn.onreadystatechange = function() {
if (conn.readyState == 4) {
if (conn.status == 200) { // stato "completed" e risposta "OK"
alert(conn.responseText);
} else {
alert("Si sono verificati dei problemi lato server:\n" + conn.statusText);
}
}
}
conn.send(accoda);
}
// prossimo blog
function next_blog(nick)
{
var conn = assegnaXMLHttpRequest();
conn.open('GET', '/ajax/next_blog.php', true);
conn.onreadystatechange = function() {
if (conn.readyState == 4) {
if (conn.status == 200) { // stato "completed" e risposta "OK"
if (conn.responseText != 'KO') {
document.location = 'http://' + conn.responseText + '.giovani.it/';
}
} else {
alert("Si sono verificati dei problemi lato server:\n" + conn.statusText);
}
}
}
conn.send(null);
}
// ricerca
function m_ricerca()
{
var valorizza = document.getElementById('testo_da_cercare');
if (!valorizza) {
return;
}
if (valorizza.value.replace(/\s+/g, '') == '') {
alert('inserire una parola d ricercare');
return;
}
window.open('http://www.giovani.it/ricerca/index.php?pag=1&tipo=3&index=default&sesso=&prov=&eta=0&stud=&hafoto=1&testo=' + valorizza.value);
}
// stelle per la votazione
function accendimi(num)
{
if (isNaN(num)) {
return;
}
for (i=1; i<=num; i++) {
document.getElementById(('luce_' + i)).src = 'http://img.studenti.it/grafica/g3/icone/stellaon.gif';
}
}
function spegnimi(num)
{
if (isNaN(num)) {
return;
}
/*
if (num==0) {
for (i=1; i<=10; i++) {
document.getElementById(('luce_' + i)).src = 'http://img.studenti.it/grafica/g3/icone/stellaoff.gif';
}
return;
}
*/
for (i=1; i<=num; i++) {
document.getElementById(('luce_' + i)).src = 'http://img.studenti.it/grafica/g3/icone/stellaoff.gif';
}
// document.getElementById(('luce_' + num)).src = 'http://img.studenti.it/grafica/g3/icone/stellaoff.gif';
}
function salva_voto(nick, vota)
{
if (nick=='' || isNaN(vota)) {
return;
}
var accoda = 'voto='+ escape(vota) + '&nick=' + escape(nick);
var conn = assegnaXMLHttpRequest();
conn.open('POST', '/ajax/blog/vota_blog.php', true);
conn.setRequestHeader("Content-Type", "application/x-www-form-urlencoded"); // codice se POST
conn.onreadystatechange = function() {
if (conn.readyState == 4) {
if (conn.status == 200) { // stato "completed" e risposta "OK"
eval(conn.responseText);
if (data['errore'].length > 1) {
alert(data['errore']);
} else {
show_me();
alert(data['html']);
// if (data['statistiche'].length > 1) {
// esito.innerHTML += ' ' + data['statistiche'];
// }
}
} else {
alert("Si sono verificati dei problemi lato server:\n" + conn.statusText);
}
}
}
conn.send(accoda);
}
function show_me()
{
var vot = document.getElementById('show_me');
if (vot.style.display == 'none') {
vot.style.display = '';
} else {
vot.style.display = 'none';
}
}
function aprifoto_scheda(nick,larg,alt)
{
window.open('http://my.giovani.it/export2/scheda/foto.php?n=' + nick,nick,'history=no,toolbar=no,location=no,border=0,directories=no,status=no,menubar=no,scrollbars=yes,resizable=no,width='+larg+',height='+alt);
}