/* * 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 + '
' + aggiunta_avatar + '
' + data['html'] + '
' + 'Rispondi' + '' + '
'; } 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
' + anno + '
'; tx += '\n'; tx += ''; var apri_td = '\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 += '
' + 'Vedi tutti
'; var apri_td2 = ''; for (var i=0; i<4; i++) { tx += '
\n'; return tx; } function dataframe(x) { var s = ''; s += '\n\n\n
'; s += x; // codice html che costruisce i mesi con un determinato anno s += '
'; // nuova tabella s += '
'; s += ''; s += ''; s += '
() = numero diari del mese'; if (anno > '2004') { s += ''; } if (anno < today.getFullYear()) { s += ''; } s += '
'; // fine nuova tabella s += '
'; 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 = ''; 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); }