var Ww = 300;
var Wh = 338;

var popurl ="";

// Routine di formattazione e parsing delle date e degli orari

// Trasformazione di una stringa in datetime

function str2dt (str_datetime,str_format) {

  switch (str_format) {
    case "GMSAHMS" :
      // Formato della data GG-MM-AAAA HH:MM:SS
      var re_date = /^(\d+)\-(\d+)\-(\d+)\s+(\d+)\:(\d+)\:(\d+)$/;
      break;
    case "GMSA"    :
      // Formato della data GG-MM-AAAA
      var re_date = /^(\d+)\-(\d+)\-(\d+)$/;
      break;
    case "HMS" :
      // Formato della data HH:MM:SS
      var re_date = /^(\d+)\:(\d+)\:(\d+)$/;
      break;
  };

  if (!re_date.exec(str_datetime))
    return alert("Invalid Datetime format: "+ str_datetime);

  switch (str_format) {
    case "GMSAHMS" :
      // Formato della data GG-MM-AAAA HH:MM:SS
      return (new Date (RegExp.$3, RegExp.$2-1, RegExp.$1, RegExp.$4, RegExp.$5, RegExp.$6));
    case "GMSA"    :
      // Formato della data GG-MM-AAAA
      return (new Date (RegExp.$3, RegExp.$2-1, RegExp.$1));
    case "HMS" :
      // Formato della data HH:MM:SS
      return (new Date (0, 0, 0, RegExp.$4, RegExp.$5, RegExp.$6));
  };
}

// Formattazione di un datetime
function dt2str (dt_datetime, str_format) {

  var gg = dt_datetime.getDate();
  var mm = dt_datetime.getMonth() + 1;
  var aa = dt_datetime.getFullYear();
  var hh = dt_datetime.getHours();
  var mn = dt_datetime.getMinutes();
  var ss = dt_datetime.getSeconds();

  if (gg <= 9) {gg = gg.toString(); gg = 0 + gg}
  if (mm <= 9) {mm = mm.toString(); mm = 0 + mm}
  if (hh <= 9) {hh = hh.toString(); hh = 0 + hh}
  if (mn <= 9) {mn = mn.toString(); mn = 0 + mn}
  if (ss <= 9) {ss = ss.toString(); ss = 0 + ss}

  switch (str_format) {
    case "GMSAHMS" :
      // Formato della data GG-MM-AAAA HH:MM:SS
      return (new String (gg + "-" + mm + "-" + aa + " " + hh + ":" + mn + ":" + ss));
    case "GMSA"    :
      // Formato della data GG-MM-AAAA
      return (new String (gg + "-" + mm + "-" + aa));
    case "HMS"     :
      // Formato della data HH:MM:SS
      return (new String (hh + ":" + mn + ":" + ss));
  };

}

// Formattazione di un tempo

function dt2tmstr (dt_datetime) {

  var hh = dt_datetime.getHours();
  var mn = dt_datetime.getMinutes();
  var ss = dt_datetime.getSeconds();

  if (hh <= 9) {hh = hh.toString(); hh = 0 + hh}
  if (mn <= 9) {mn = mn.toString(); mn = 0 + mn}
  if (ss <= 9) {ss = ss.toString(); ss = 0 + ss}

  return (new String (hh + ":"+ mn + ":" + ss));
}

// Formattazione di una data

function dt2dtstr (dt_datetime) {
  var gg = dt_datetime.getDate();
  var mm = dt_datetime.getMonth() + 1;
  var aa = dt_datetime.getFullYear();

  if (gg <= 9) {gg = gg.toString(); gg = 0 + gg}
  if (mm <= 9) {mm = mm.toString(); mm = 0 + mm}

  return (new String (gg + "-" + mm + "-" + aa));
}

function set_pos() {
  if (screen) {
    var bottom = screen.availHeight;
    var right = screen.availWidth;
    var pos_x = 10;
    var pos_y = parseInt((bottom - Wh)/3);;
    options += (',left=' + pos_x + ',top=' + pos_y);
  }
}

function Popup() {
  options="menubar=no,toolbar=no,directories=no,width=" + Ww + ",height=" + Wh ;
  set_pos();

  win = window.open( popurl , "tCw", options);
  if (!win.opener) win.opener=self;
  if (win.focus) win.focus();
  return true; 
}
 
function PopInfo(PHPInfo,winName,features)
{
  var popup = window.open(PHPInfo,winName,features);
  popup.focus();
}

function orologio() {

  oggi = new Date();

  var giorno = oggi.getDate();
  var mese = oggi.getMonth()+1;
  var anno = oggi.getFullYear();
  var ore = oggi.getHours();
  var minuti = oggi.getMinutes();
  var secondi = oggi.getSeconds();

  if (giorno <= 9)  {giorno = giorno.toString(); giorno=0+giorno}
  if (mese <= 9)    {mese = mese.toString(); mese=0+mese}
  if (ore <= 9)     {ore = ore.toString(); ore=0+ore}
  if (minuti <= 9)  {minuti = minuti.toString(); minuti=0+minuti}
  if (secondi <= 9) {secondi=secondi.toString(); secondi=0+secondi}

  document.getElementById('orologio').innerHTML=giorno+"/"+mese+"/"+anno+"<BR>"+ore+":"+minuti+":"+secondi;

  setTimeout("orologio()",1000);

}

// Calendario POPUP

// Parametri : str_target -> Campo di destinazione della data
//             str_datetime -> Stringa contenente la data in un determinato formato
//             str_format   -> Formato della data 

function pop_calendar(str_target, str_datetime, str_format) {

  // Mesi dell'anno

  var arr_months = ["Gennaio", "Febbraio", "Marzo", "Aprile", "Maggio", "Giugno",
                    "Luglio", "Agosto", "Settembre", "Ottobre", "Novembre", "Dicembre"];

  // Giorni della settimana

  var week_days = ["Do", "Lu", "Ma", "Me", "Gi", "Ve", "Sa"];

  // Primo giorno della settimana (0 = Domenica; 1 = Luned́)

  var n_weekstart = 1;

  // Trasformazione in data della stringa che arriva
  var dt_datetime = (str_datetime == null ||
                     str_datetime == ""   ?  new Date() : str2dt(str_datetime,str_format));

  // Calcolo del mese precedente
  var dt_prev_month = new Date(dt_datetime);
      dt_prev_month.setMonth(dt_datetime.getMonth()-1);
  // Calcolo del mese successivo
  var dt_next_month = new Date(dt_datetime);
      dt_next_month.setMonth(dt_datetime.getMonth()+1);
  // Calcolo del giorno della settimana ove cade il primo giorno del mese corrente
  var dt_firstday = new Date(dt_datetime);
      dt_firstday.setDate(1);
      dt_firstday.setDate(1-(7+dt_firstday.getDay()-n_weekstart)%7);
  // Calcolo del giorno della settimana ove cade l'ultimo giorno del mese corrente
  var dt_lastday = new Date(dt_next_month);
      dt_lastday.setDate(0);

  var str_href_pm = "javascript:window.opener.pop_calendar('" + str_target + "', '" + 
                    dt2str(dt_prev_month,str_format)+ "', '"  + str_format  + "');";
  var str_href_nm = "javascript:window.opener.pop_calendar('" + str_target + "', '" + 
                    dt2str(dt_next_month,str_format)+ "', '"  + str_format  + "');";

  var str_href_cday;
 
  // mese a anno correnti
  var str_month_year = arr_months[dt_datetime.getMonth()] + " " + dt_datetime.getFullYear();

  var str_buffer = new String (
      "<html>\n"+
      "<head>\n"+
      "  <title>Calendario</title>\n"+
      "</head>\n"+
      "<body bgcolor='White'>\n"                                                   +
      "  <table class='clsOTable' cellspacing='0' border='0' width='100%'>\n"      +
      "    <tr><td bgcolor='#4682B4'>\n"                                           +
      "      <table cellspacing='1' cellpadding='3' border='0' width='100%'>\n"    +
      "        <tr>\n"                                                             +
      "          <td bgcolor='#4682B4'>"                                           +
      "            <a href=\"" + str_href_pm + "\">"                               +
      "              <img src='images/prev.gif' width='16' height='16' border='0'" +
      "                   alt='mese precedente'>"                                  +
      "            </a>\n"                                                         +
      "          </td>\n"                                                          +
      "          <td bgcolor='#4682B4' colspan='5'>"                               +
      "            <font color='white' face='tahoma, verdana' size='2'>"           +
                     str_month_year                                                +
      "            </font>\n"                                                      +
      "          </td>\n"                                                          +
      "          <td bgcolor='#4682B4'>"                                           +
      "            <a href=\"" + str_href_nm + "\">"                               +
      "              <img src='images/next.gif' width='16' height='16' border='0'" +
      "                   alt='mese precedente'>"                                  +
      "            </a>\n"                                                         +
      "          </td>\n"                                                          +
      "        </tr>\n"
  );

  var dt_current_day = new Date(dt_firstday);

  // Giorni della settimana
  str_buffer += "<tr>\n";
  for (var n=0; n<7; n++)
    str_buffer += "  <td bgcolor='#87CEFA'>"                                 +
                  "    <font color='white' face='tahoma, verdana' size='2'>" +
                  week_days[(n_weekstart+n)%7]                               +
                  "    </font>\n"                                            + 
                  "  </td>\n";

  // Calendario
  str_buffer += "</tr>\n";
  while (dt_current_day.getMonth() == dt_datetime.getMonth() ||
         dt_current_day.getMonth() == dt_firstday.getMonth())   {

    // Intestazione della riga
    str_buffer += "<tr>\n";
    for (var n_current_wday=0; n_current_wday<7; n_current_wday++) {

      if (dt_current_day.getDate() == dt_datetime.getDate() &&
          dt_current_day.getMonth() == dt_datetime.getMonth())
        // Giorno corrente
        str_buffer += "  <td bgcolor='#FFB6C1' align='right'>\n";
      else if (dt_current_day.getDay() == 0 || dt_current_day.getDay() == 6)
        // Weekend (sabato o domenica)
        str_buffer += "  <td bgcolor='#DBEAF5' align='right'>\n";
      else
        // Tutti gli altri giorni del mese
        str_buffer += "  <td bgcolor='white' align='right'>\n";

      str_href_cday = "javascript:window.opener." + str_target + 
                      ".value='" + dt2str(dt_current_day,str_format) + "'; window.close();";

      str_buffer += "    <a href=\"" + str_href_cday + "\">\n";

      if (dt_current_day.getMonth() == dt_datetime.getMonth())
        // print days of current month
        str_buffer += "      <font color='black' face='tahoma, verdana' size='2'>\n";
      else 
        str_buffer += "      <font color='gray' face='tahoma, verdana' size='2'>\n";

      str_buffer += dt_current_day.getDate();
      str_buffer += "      </font>\n";
      str_buffer += "    </a>\n";
      str_buffer += "  </td>\n";
      dt_current_day.setDate(dt_current_day.getDate()+1);
    }

    // Fine della riga
    str_buffer += "</tr>\n";
  }

  // Fine del calendario 
  /*str_buffer += "<form name='cal'>\n" + "
                "  <tr><td colspan='7' bgcolor='#87CEFA'>" +
                "  <font color=\"White\" face=\"tahoma, verdana\" size=\"2\">"+
                "Time: <input type=\"text\" name=\"time\" value=\""+dt2tmstr(dt_datetime)+
                "\" size=\"8\" maxlength='8'></font></td></tr>\n</form>\n" +
*/
  str_buffer += "      </table>\n" +
                "    </tr>\n"      +
                "  </td>\n"        + 
                "</table>\n"       +
                "</body>\n"        +
                "</html>\n";

    var vWinCal = window.open("", "Calendar","width=200,height=250,status=no,resizable=yes,top=200,left=200");
    vWinCal.opener = self;
    var calc_doc = vWinCal.document;
    calc_doc.write (str_buffer);
    calc_doc.close();
}

function BuildSelectID(Tipo, idc, lc, idr, lr, idf, lf, id) { //alert(x) ; return

  while (document.utente.IDUser.options.length) {
    document.utente.IDUser.remove(0);
  };

  if (Tipo == "C") {
    for (var i=0; i < lc.length; i++) {
      option = new Option(lc[i],idc[i]);
      document.utente.IDUser.options[i] = option
    };
  };

  if (Tipo == "R") {
    for (var i=0; i < lr.length; i++) {
      option = new Option(lr[i],idr[i]);
      document.utente.IDUser.options[i] = option
    };
  };

  if (Tipo == "F") {
    for (var i=0; i < lf.length; i++) {
      option = new Option(lf[i],idf[i]);
      document.utente.IDUser.options[i] = option
    };
  };

  return; 
}
