| 
// This code is developed by Guerrieri Luca                                                                #
// copyright (C) 2006/2007 [email protected]
 // This code is released under the terms of the GPL v.2 License.
 //
 // The author is not responsible for data loss, or any kind of trouble that
 // results from the use of this software.
 // USE IT AT YOUR OWN RISK!
 //
 // This program is free software; you can redistribute it and/or modify
 // it under the terms of the GNU General Public License as published by
 // the Free Software Foundation; either version 2 of the License, or
 // (at your option) any later version.
 //
 // This program is distributed in the hope that it will be useful,
 // but WITHOUT ANY WARRANTY; without even the implied warranty of
 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
 // GNU General Public License for more details.
 //
 // You should have received a copy of the GNU General Public License
 // along with this program; if not, write to the Free Software
 // Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
 
 
 
 
 //  Identifichiamo l'elemento con ID
 function prendiElementoDaId(id_elemento) {
 var elemento;
 if(document.getElementById)
 elemento = document.getElementById(id_elemento);
 else
 elemento = document.all[id_elemento];
 return elemento; //restituiamo l'elemento trovato
 };
 
 // Assegnamo il giusto oggetto XMLHttpRequest
 function assegnaXMLHttpRequest() {
 var
 XHR = null,
 browserUtente = navigator.userAgent.toUpperCase();
 if(typeof(XMLHttpRequest) === "function" || typeof(XMLHttpRequest) === "object")
 XHR = new XMLHttpRequest();
 else if(window.ActiveXObject && browserUtente.indexOf("MSIE 4") < 0) {
 if(browserUtente.indexOf("MSIE 5") < 0)
 XHR = new ActiveXObject("Msxml2.XMLHTTP");
 else
 XHR = new ActiveXObject("Microsoft.XMLHTTP");
 }
 return XHR;
 };
 
 // Carichiamo il file da inserire,
 // resource    The resource that we want load
 // nameID    ID where we put the readed resource
 // type        type of load 'static' or 'dinamyc'
 
 function loadResource(resource, nameID, type) {
 var
 // assegnazione oggetto XMLHttpRequest
 ajax = assegnaXMLHttpRequest(),
 // assegnazione elemento del documento
 elemento = prendiElementoDaId(nameID),
 //Messaggio di attesa
 
 // RICORDARSI DI AGGIUSTARE IL LINK
 
 testoAttesa="<img src='./images/loading.gif'/> Un attimo prego ...",
 // risultato booleano di funzione
 usaLink = true;
 
 // se l'oggetto XMLHttpRequest non è nullo
 if(ajax) {
 usaLink = false;    // il link al file non deve essere usato
 // impostazione richiesta asincrona in GET del file specificato
 
 // RICORDARSI DI AGGIUSTARE IL LINK
 ajax.open("get",'http://localhost/pxaserver/libreria/collector.inc.php?resource='+resource+'&id='+nameID+'&type='+type+'¶ms='+params, true);
 // rimozione dell'header "connection" come "keep alive"
 ajax.setRequestHeader("connection", "close");
 // impostazione controllo e stato della richiesta
 ajax.onreadystatechange = function() {
 elemento.innerHTML=testoAttesa;
 // verifica dello stato
 if(ajax.readyState === readyState.COMPLETATO) {            // verifica della risposta da parte del server
 if(statusText[ajax.status] === "OK") {            // operazione avvenuta con successo
 
 elemento.innerHTML = ajax.responseText;
 }else {                                // errore di caricamento
 elemento.innerHTML = "Impossibile effettuare l'operazione richiesta.<br />";
 elemento.innerHTML += "Errore riscontrato: " + statusText[ajax.status];
 }
 }
 }
 ajax.send(null);    // invio richiesta
 }
 return usaLink;
 };
 
 
 function loadResourceParam(resource, nameID, type,params) {
 var
 // assegnazione oggetto XMLHttpRequest
 ajax = assegnaXMLHttpRequest(),
 // assegnazione elemento del documento
 elemento = prendiElementoDaId(nameID),
 //Messaggio di attesa
 
 // RICORDARSI DI AGGIUSTARE IL LINK
 
 testoAttesa="<img src='./images/loading.gif'/> Un attimo prego ...",
 // risultato booleano di funzione
 usaLink = true;
 
 // se l'oggetto XMLHttpRequest non è nullo
 if(ajax) {
 usaLink = false;    // il link al file non deve essere usato
 // impostazione richiesta asincrona in GET del file specificato
 
 // RICORDARSI DI AGGIUSTARE IL LINK
 ajax.open("get",'http://localhost/pxaserver/libreria/collector.inc.php?resource='+resource+'&id='+nameID+'&type='+type+'¶ms='+params, true);
 // rimozione dell'header "connection" come "keep alive"
 ajax.setRequestHeader("connection", "close");
 // impostazione controllo e stato della richiesta
 ajax.onreadystatechange = function() {
 elemento.innerHTML=testoAttesa;
 // verifica dello stato
 if(ajax.readyState === readyState.COMPLETATO) {            // verifica della risposta da parte del server
 if(statusText[ajax.status] === "OK") {            // operazione avvenuta con successo
 
 elemento.innerHTML = ajax.responseText;
 }else {                                // errore di caricamento
 elemento.innerHTML = "Impossibile effettuare l'operazione richiesta.<br />";
 elemento.innerHTML += "Errore riscontrato: " + statusText[ajax.status];
 }
 }
 }
 ajax.send(null);    // invio richiesta
 }
 return usaLink;
 };
 
 
 
 
 // funzione di caricamento testo tabMenu
 // Gestice le chiamate dai tab del menu
 // menuID : Identificativo del menu (id="" nel tag ul)
 // fileID : File da caricare in caso di selezione
 // nomeID : ID dell'area d'inserimento del file caricato
 // itemID : Identificativo del tab (quella selezionato, di norma this)
 function tabMenu(menuID, fileID, nomeID, itemID, tipo) {
 var testoAttesa="<img src='../images/loading.gif' /> Un attimo prego ...";
 this.onclick=function(){
 var elencoLI=document.getElementById(menuID).getElementsByTagName("li");
 
 for (var i=0; i<elencoLI.length; i++)
 elencoLI[i].className=""
 itemID.parentNode.className="active";
 };
 document.getElementById(nomeID).innerHTML=testoAttesa;
 loadResource(fileID,nomeID,tipo);
 // Funzione per ricordare il tab scelto
 //ricordaScelta(itemID,fileID);
 };
 //TODO : funzione per ricordare le scelta eseguita
 function ricordaScelta (activeTabID, fileID){
 setCookie(activeTabID, fileID);
 };
 //TODO : funzione per impostare  i Cookie in caso volessimo ricordare le scelta eseguita
 function setCookie(name, value){
 document.cookie = name+"="+value //cookie value is domain wide (path=/)
 }
 //TODO : funzione per leggere i Cookie in caso volessimo ricordare le scelta eseguita
 function getCookie(Name){
 var re=new RegExp(Name+"=[^;]+", "i"); //construct RE to search for target name/value pair
 if (document.cookie.match(re)) //if cookie found
 return document.cookie.match(re)[0].split("=")[1] //return its value
 return ""
 }
 /** OGGETTI / ARRAY */
 
 // oggetto di verifica stato
 var readyState = {
 INATTIVO:    0,
 INIZIALIZZATO:    1,
 RICHIESTA:    2,
 RISPOSTA:    3,
 COMPLETATO:    4
 };
 
 // array descrittivo dei codici restituiti dal server
 // [la scelta dell' array è per evitare problemi con vecchi browsers]
 var statusText = new Array();
 statusText[100] = "Continue";
 statusText[101] = "Switching Protocols";
 statusText[200] = "OK";
 statusText[201] = "Created";
 statusText[202] = "Accepted";
 statusText[203] = "Non-Authoritative Information";
 statusText[204] = "No Content";
 statusText[205] = "Reset Content";
 statusText[206] = "Partial Content";
 statusText[300] = "Multiple Choices";
 statusText[301] = "Moved Permanently";
 statusText[302] = "Found";
 statusText[303] = "See Other";
 statusText[304] = "Not Modified";
 statusText[305] = "Use Proxy";
 statusText[306] = "(unused, but reserved)";
 statusText[307] = "Temporary Redirect";
 statusText[400] = "Bad Request";
 statusText[401] = "Unauthorized";
 statusText[402] = "Payment Required";
 statusText[403] = "Forbidden";
 statusText[404] = "Not Found";
 statusText[405] = "Method Not Allowed";
 statusText[406] = "Not Acceptable";
 statusText[407] = "Proxy Authentication Required";
 statusText[408] = "Request Timeout";
 statusText[409] = "Conflict";
 statusText[410] = "Gone";
 statusText[411] = "Length Required";
 statusText[412] = "Precondition Failed";
 statusText[413] = "Request Entity Too Large";
 statusText[414] = "Request-URI Too Long";
 statusText[415] = "Unsupported Media Type";
 statusText[416] = "Requested Range Not Satisfiable";
 statusText[417] = "Expectation Failed";
 statusText[500] = "Internal Server Error";
 statusText[501] = "Not Implemented";
 statusText[502] = "Bad Gateway";
 statusText[503] = "Service Unavailable";
 statusText[504] = "Gateway Timeout";
 statusText[505] = "HTTP Version Not Supported";
 statusText[509] = "Bandwidth Limit Exceeded";
 
 // Esempio di link
 
 // <div id="identificativo" > </div>
 // <a href=# onclick="return loadResource('link1','identificativo', 'static');" onkeypress="return this.onclick();" tabindex="1">link</a>
 // <a href=# onclick="javascript: loadResource('link1','identificativo', 'static');" onkeypress="return this.onclick();" tabindex="1">link</a>
 |