w_oldvalue = "";

function GoBack() {
  var frm = document.getElementById('FrmMain');
  var current_page = Val(frm.page.value) - 1; // Nella FrmMain trovo il valore della prossima pagina => current_page è uguale a quel valore - 1

  if ( current_page == 1 ) {
    document.getElementById("FrmBack").submit();
  } else {
    frm.page.value = frm.page.value - 2;
    frm.Mode.value = frm.Action.value;
    frm.submit();
  }
}

/*
 * Funzioni generiche per gli eventi
 */
function Importo_OnFocus(evt) {
  var e = evt || window.event;
  if (e) {
    var field = e.target || e.srcElement;
    if (!field && typeof(evt.value) != "undefined")
      field = evt;
    if ( field ) {
      w_oldvalue = field.value;
      field.value = WtH(HtW(field.value, "N",10,2),'N',10,2,'999999999.99');
      field.select();
    }
  }
}

function Importo_Valid(evt) {
  var e = evt || window.event;
  if (e) {
    var field = e.target || e.srcElement;
    if (!field && typeof(evt.value) != "undefined")
      field = evt;
    if ( field ) {
      field.value = WtH(HtW(field.value, "N"),'N',10,2,'99,999,999.99');
    }
  }
}

function Numero_OnFocus(evt) {
  var e = evt || window.event;
  if (e) {
    var field = e.target || e.srcElement;
    if (!field && typeof(evt.value) != "undefined")
      field = evt;
    if ( field ) {
      w_oldvalue = field.value;
      field.value = WtH(HtW(field.value, "N"),'N',6,0,'999999');
      //Questo controllo serve se sto utilizzando un combobox con chiavi numeriche
      if(typeof(field.select) != "undefined")
        field.select();
    }
  }
}

function Numero_Valid(evt) {
  var e = evt || window.event;
  if (e) {
    var field = e.target || e.srcElement;
    if (!field && typeof(evt.value) != "undefined")
      field = evt;
    if ( field ) {
      field.value = WtH(Val(field.value),'N',6,0,'999,999');
    }
  }
}

function Data_OnFocus(evt) {
  var e = evt || window.event;
  if (e) {
    var field = e.target || e.srcElement;
    if (!field && typeof(evt.value) != "undefined")
      field = evt;
    if ( field ) {
      enteredInDate = field;
      field.value = Strtran(field.value,"-","");
      field.select();
    }
  }
}

function Data_Valid(e) {
  var field;
  if (IsIE()) {
    if ( window.event != null )
      field = window.event.srcElement
    else if (e != null && typeof(e.type) != 'undefined' && e.type == "text")
      field = e
  } else {
    if (  typeof(e.target) != 'undefined' )
      field = e.target
    else if (e != null && typeof(e.type) != 'undefined' && e.type == "text")
      field = e
  }
  if (Eq(enteredInDate,field)) {
    field.value = ApplyPictureToDate(field.value,'DD-MM-YYYY',field.name);
    enteredInDate = null;
  }
}

function Link_Data(fieldname, libdir, idx) {
  var frm = CtrlById("FrmMain");
  if ( idx == null ) idx = -1;
  window.open(libdir + "../calendario.php?DateName=" + fieldname + "&IdxDate=" + idx + "&start_y=1971&end_y="+Year(SystemDate()),'Seleziona','width=205,height=220,resizable=yes,scrollbars=no,status=0');
}

function Time_OnFocus(e) {
  var field;
  if (IsIE()) {
    field = window.event.srcElement
  } else {
    field = e.target
  }
  enteredInTime = field;
  field.value = Strtran(field.value,":","");
  field.select();
}

function Time_Valid(e) {
  var field;
  if (IsIE()) {
    if ( window.event != null )
      field = window.event.srcElement
    else if (e != null && typeof(e.type) != 'undefined' && e.type == "text")
      field = e
  } else {
    if (  typeof(e.target) != 'undefined' )
      field = e.target
    else if (e != null && typeof(e.type) != 'undefined' && e.type == "text")
      field = e
  }
  if (Eq(enteredInTime,field)) {
    field.value = ApplyPictureToTime(field.value,'hh:mm:ss',field.name);
    enteredInTime = null;
  }
}


/****************************************************************
 * Funzioni generiche per le tabelle figlie
 ****************************************************************/
function Row_Importo_OnFocus(e, childname, idx) {
  if (ChangeRow(childname, idx)) {
    Importo_OnFocus(e);
  }
}

function Row_Numero_OnFocus(e, childname, idx) {
  if (ChangeRow(childname, idx)) {
    Numero_OnFocus(e);
  }
}

function Row_Char_OnFocus(evt, childname, idx) {
  if (ChangeRow(childname, idx)) {
    var e = evt || window.event;
    if (e) {
      var field = e.target || e.srcElement;
      if (!field && typeof(evt.value) != "undefined")
        field = evt;
      if ( field ) {
        if ( field.type == "text" || field.type == "textarea" ) {
          field.select();
        }
      }
    }
  }
}

function Row_Data_OnFocus(evt, childname, idx) {
  if (ChangeRow(childname, idx)) {
    var e = evt || window.event;
    if (e) {
      var field = e.target || e.srcElement;
      if (!field && typeof(evt.value) != "undefined")
        field = evt;
      if ( field ) {
        enteredInDate = field;
        field.value = Strtran(field.value,"-","");
        field.select();
      }
    }
  }
}

function SetFieldEvents(obj, func) {
  if ( obj.length == 0 || typeof(obj.length) =='undefined' ) {
    obj.onkeypress = CheckNum;
    if ( func == null) {
      obj.onblur = Importo_Valid;
    } else {
      obj.onblur = func;
    }
  } else {
    for ( var i = 0; i<obj.length; i++ ) {
      obj[i].onkeypress = CheckNum;
      if ( func == null) {
        obj[i].onblur = Importo_Valid;
      } else {
        obj[i].onblur = func;
      }
    }
  }
}

function TrsHtml(childname, obj, trs) {
  var frm = CtrlById("FrmMain");
  for (var i = obj.rows.length-1; i>=0;i--) {
    obj.deleteRow(i);
  }
  var rowidx = 0
  for (var i=0; i < trs.length; i++) {
    if (!RowIsDeleted(childname, trs[i].cprownum)) {
      AddTrsTableRow(obj);
      eval('Html_'+childname+'_Row('+i+','+rowidx+');');
      eval("m_nCurrent_"+childname+"_row = "+rowidx+";");
      if(frm.current_mode.value != "view" && frm.current_mode.value != "save") {
        eval("Set_"+childname+"_Events();");
      }
      rowidx++;
    }
  }
  if ( rowidx == 0 ) {
    // sono state cancellate tutte le righe
    InitRow(childname, obj, trs);
  }
  eval("m_nCurrent_"+childname+"_row = 0;");
}

function AddTrsTableRow(obj) {
  // inserimento di una riga nella tabella HTML
  var currTableRow = obj.insertRow(obj.rows.length)
  // inserimento di una cella nella riga della tabella
  var currTableCell = currTableRow.insertCell(0)
}

function GetCtrl(name, rowidx) {
  var frm = CtrlById("FrmMain");
  var n = frm[name+'[]'];
  return (typeof(n.length) == "undefined" ? n : n[rowidx]);
}

function RowIsDeleted(childname, idx) {
  var frm = CtrlById("FrmMain");
  var v = "," + CtrlById("delete_"+childname).value + ","
  if ( v.indexOf("," + idx.toString() + ",") >= 0 ) {
    return true;
  }
  return false;
}

function InitRow(childname, obj, trs) {
  var frm = CtrlById("FrmMain");
  var s = "", idx;
  AddTrsTableRow(obj);
  var l = trs.length;
  eval("trs[l] = new Trs_"+childname+"(trs[l-1].cprownum+1);");
  eval("Html_"+childname+"_Row(l, obj.rows.length-1);");
  eval("Set_"+childname+"_Events();");
}

function AddRow(childname, obj, trs) {
  if (ChangeRow(childname, obj.rows.length-1)) {
    errorMsg = "";
    eval("errorMsg = CheckObligatory_"+childname+"();");
    if ( errorMsg != "") {
      alert(errorMsg);
      if ( focusVar != null && focusVar.type != "hidden") {
        if ( typeof(focusVar.length) =='undefined' || focusVar.length == 0 )
          focusVar.focus()
        else
          focusVar[0].focus()
      }
    } else {
      InitRow(childname, obj, trs);
    }
  }
}

function ChangeRow(childname, newRow) {
  var bRes = true;
  eval("var idx = m_nCurrent_"+childname+"_row;");
  if ( newRow != idx ) {
    errorMsg = "";
    eval("errorMsg = CheckObligatory_"+childname+"();");
    if ( errorMsg != "") {
      alert(errorMsg);
      if ( focusVar != null ) {
        if ( typeof(focusVar.length) =='undefined' || focusVar.length == 0 )
          focusVar.focus()
        else
          focusVar[0].focus()
      }
      bRes = false;
    } else {
      eval("m_nCurrent_"+childname+"_row = newRow;");
    }
  }
  return bRes;
}

function DeleteRow(childname, obj, trs, idx) {
  //if ( obj.rows.length > 1 ) {
    var frm = CtrlById("FrmMain");
    var a2 = []
    var cnt = 0
    var delidx = -1
    eval("HtoTrs_"+childname+"();");
    for (var i=0; i < trs.length;i++) {
      if ( trs[i].cprownum == idx ) {
        CtrlById("delete_"+childname).value+=idx.toString()+","
      }
    }
    TrsHtml(childname, obj, trs);
  /*} else {
    alert("Non è possibile cancellare la riga");
  }*/
}

function HtTrs(obj, type) {
  var res = HtW(obj, type);
  switch (type) {
    case 'C': case 'M' :
      return Strtran(res, '"', '&quot;');
      break;
  }
  return res;
}
