/*================================================
 * FUNZIONE: Esegui
 * INGRESSO: comando, nickname.
 * USCITA: nessuna.
 * VARIABILI GLOBALI USATE: nessuna.
 * VARIABILI GLOBALI MODIFICATE: nessuna.
 * DESCRIZIONE: imposta le variabili nascoste del
 * form corrente o del form di info ed esegue un
 * submit.
 *================================================*/
function Esegui(Comando, Seriale) {
     with (document.news) {
        COMANDO.value = Comando;
        switch (Comando) {
           case "info":
               page = 'scheda.php?SERIALE=' + Seriale;
               info = window.open(page,'INFO','width=456, height=550, status=no, location=no, toolbar=no, scrollbars=yes');
               info.focus();
               return;
          break;
           case "ordina":
                ORDER_STR.value = Seriale;
          break;
           default:
                // imposta le variabli
                SERIALE.value = Seriale;
        }
        // esegui il submit
        submit();
     }
}



/*================================================
 * FUNZIONE: CreaQuery
 * INGRESSO: nessuno.
 * USCITA: nessuna.
 * VARIABILI GLOBALI USATE: nessuna.
 * VARIABILI GLOBALI MODIFICATE: nessuna.
 * DESCRIZIONE: controlla il campo data e costrusce
 * la clausola where per la lista degli utenti da
 * visualizzare. Infine esegue l'aggiornamento della
 * lista.
 *================================================*/
function CreaQuery() {
     var     QueryStr = new Array();
     var     SelectStr = "";
     var     Index = 0;

     // verifica quali campi sono stati riempiti
     with (document.news) {
          // testa il nome
          if (OGGETTO.value != "") {
               QueryStr[Index] = "NewsDOggetto LIKE '%" + OGGETTO.value.replace(/'/g, "''") + "%'";
               Index++;
          }

          // testa la data
          if (DATA.value != "") {
               // verifica la data
               if ((DataFormattata = VerificaData(DATA.value)) == "") {
                    // visualizza un messaggio di errore
                    alert("La data non è nel formato gg/mm/aaaa o non è corretta.");
                    DATA.focus();
                    return;
               }

               // a seconda del confronto
               switch (CONFRONTO_DATA.selectedIndex) {
                    case 0:
                         QueryStr[Index] = "NewsTData BETWEEN '" + DataFormattata + " 00:00:00' AND '" + DataFormattata + " 23:59:59'";
                         break;

                    case 1:
                         QueryStr[Index] = "NewsTData < '" + DataFormattata + " 00:00:00'";
                         break;

                    case 2:
                         QueryStr[Index] = "NewsTData > '" + DataFormattata + " 23:59:59'";
                         break;
               }

               // imposta la sottoquery
               Index++;
          }

          // testa l'area
          if (AREA.value != "") {
              QueryStr[Index] = "NewsFArea LIKE '";
              for (i=0; i<AREA.value; i++)
                  QueryStr[Index] = QueryStr[Index] + "_";
              QueryStr[Index] = QueryStr[Index] + "S%'";
               Index++;
          }

          // crea la query sql
          if (QueryStr.length > 0) {
               SelectStr = QueryStr[0];
               for (Index = 1; Index < QueryStr.length; Index++)
                    SelectStr = SelectStr + " AND \n" + QueryStr[Index];
          }

          SELECT_STR.value = SelectStr;
          submit();
     }
}

/*================================================
 * FUNZIONE: VerificaData
 * INGRESSO: valore.
 * USCITA: data in formato aaaa-mm-gg.
 * VARIABILI GLOBALI USATE: nessuna.
 * VARIABILI GLOBALI MODIFICATE: nessuna.
 * DESCRIZIONE: controlla che la data passata sia
 * corretta, nel qual caso la ritorna formattata.
 *================================================*/
function VerificaData(Valore) {
     var     ValoriData;
     var     DataFormattata = "";
     var Giorni = new Array(31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31);

     // verifica la validita' della data
     if (Valore.search(/^([12]\d|3[01]|0?[1-9])\/(1[0-2]|0?[1-9])\/(19|20|)\d\d$/) != -1) {

          // verifica il valore immesso
          ValoriData = Valore.split("/");
          ValoriData[0] = parseInt(ValoriData[0],10);
          ValoriData[1] = parseInt(ValoriData[1],10);
          ValoriData[2] = parseInt(ValoriData[2],10);

          // verifica se e' un anno bisestile
          if (ValoriData[2] < 100) ValoriData[2] += 1900;
          if (ValoriData[2] % 4 == 0) Giorni[1]++;

          // verifica che la data sia valida ...
          if (ValoriData[0] <= Giorni[ValoriData[1] - 1]) {
               // imposta la parte iniziale
               DataFormattata = ValoriData[2];
               DataFormattata += "-" + ((ValoriData[1] < 10) ? "0" + ValoriData[1] : ValoriData[1]);
               DataFormattata += "-" + ((ValoriData[0] < 10) ? "0" + ValoriData[0] : ValoriData[0]);
          }
     }

     // ritorna la stringa formattata
     return DataFormattata;
}