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 e' 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++;
    }
  }
  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 e' 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;
}

/**
 * 08022007, mb: funzioni di supporto per la classe "ComboMultiGroupBox"
 * sposta l'elemento LI "sourceEle" nell'elemento UL con id "destinationParentId"
 */
function moveLI(sourceEle, destinationParentId, inputName, imgSrc)
{
    if (inputName == undefined) {
        inputName = "";
    }
    if (imgSrc == undefined) {
        imgSrc = "blank.gif";
    }
    //prendo il primo input figlio dell'elemento LI sourceEle
    var inputs = sourceEle.getElementsByTagName('input');
    if(inputs) {
        var inputValue = inputs[0].value;
    }else {
        var inputValue = '';
    }

//    var inputTag = Builder.node('input',{name: 'to_mex[em_lis_mex][]', type: 'hidden', value: inputValue});
    var inputTag = Builder.node('input',{name: inputName, type: 'hidden', value: inputValue});

    //prendo il primo <span> figlio dell'elemento LI sourceEle
    var spans = sourceEle.getElementsByTagName('span');
    var spanValue = (spans) ? spans[0].innerHTML : "";
    var spanTag = Builder.node('span', spanValue);

    var imgTag = Builder.node('img', { src: imgSrc });
    var inputNameParm = (inputName == "") ? "to_mex[em_lis_mex][]" : "";

    var li = Builder.node('li');

    var pid = sourceEle.parentNode.id;
    var aTag = Builder.node('a', { href: "#" });
    aTag.onclick = function(){moveLI(this.parentNode, pid, inputNameParm, imgSrcParm);}
    aTag.appendChild(imgTag);

    //se img=left va a sx, altrimenti va a dx del tag span
    if(imgSrc == "img/left.gif") {
      var imgSrcParm = "img/right.gif";
      li.appendChild(aTag);
    }

    li.appendChild(spanTag);
    li.appendChild(inputTag);

    if(imgSrc == "img/right.gif") {
      var imgSrcParm = "img/left.gif";
      li.appendChild(aTag);
    }

    //li.setAttribute non funziona con explorer x l'onclick
    //li.setAttribute('onclick','moveLI(this, \'' + pid + '\');');

    //quando salvo a dx devo metter il name all'input,
    //quando salvo a sx no altrimenti viene passavo via post

    li.onclick = function(){moveLI(this, pid, inputNameParm, imgSrcParm);};

    $(destinationParentId).appendChild(li);
    sourceEle.parentNode.removeChild(sourceEle);
}//moveLI
function moveEle(sourceEle, destinationParentId)
{
    var li = sourceEle.cloneNode(true);
    var pid = sourceEle.parentNode.id;
    li.onClick = function(){moveEle(this, pid);};
    $(destinationParentId).appendChild(li);
    sourceEle.parentNode.removeChild(sourceEle);
}

/**
 * 08022007, mb: funzioni di supporto per la classe "ComboMultiGroupBox"
 * aggiunge un elemento LI "sourceEle" nell'elemento UL con id destinationParentId
 */
function addLI(sourceEle, destinationParentId, inputName, imgSrc)
{
    if (inputName == undefined) {
        inputName = "";
    }
    if(sourceEle.value == '') {
        return false;
    }
    spanTag = document.createElement('span');
    spanTag.innerHTML = sourceEle.value;
    inputValue = sourceEle.value;
    var inputTag = document.createElement('input');
    inputTag.name = inputName;
    inputTag.type = 'hidden';
    inputTag.value = inputValue;
    var imgTag = Builder.node('img', { src: imgSrc });
    var aTag = Builder.node('a', { href: "#" });
    aTag.onclick = function(){Element.remove(this.parentNode);};
    aTag.appendChild(imgTag);

    var li = document.createElement('li');

    if(imgSrc == "img/left.gif") {
      li.appendChild(aTag);
    }

    li.appendChild(spanTag);
    li.appendChild(inputTag);

    if(imgSrc == "img/right.gif") {
      li.appendChild(aTag);
    }

    //li.setAttribute('onclick','Element.remove(this);');
    li.onclick = function(){Element.remove(this);};
    $(destinationParentId).appendChild(li);
    sourceEle.value = '';
}//addLI

/**
 * 08022007, mb: funzioni di supporto per la classe "ComboMultiGroupBox"
 * TO DO: inserire la descrizione della funzione
 */
function pressed_bckp(story)
{
    //if(Event.keyCode == Event.KEY_RETURN) {
    if(Event.keyCode == 13) {
        addLI($('em_single_mex'));
        Event.stop(story);
    }//key_return
}//pressed

/**
 * 26072008, mb: nuova funziona per permettere la rimozione di un file gestito tramite filecontrol.php
 * file_field: nome del campo che contiene il nome del file
 */
function deleteFile(file_field) {
    var frm = document.getElementById('FrmMain');
    var remove_file_field = 'remove_'+file_field;
    var old_file_field = 'old_'+file_field;

    //un file non puo' essere rimosso 2 volte
    if(frm[remove_file_field].value != '') {
        alert('Attenzione: questo file e\' gia\' stato marcato per la rimozione: salvare per rendere effettive le modifiche!');
    } else {
        if(confirm('Confermare la rimozione del file? (Il file sara\' rimosso dopo il salvataggio)!')) {
          frm[remove_file_field].value = frm[old_file_field].value;
          frm[old_file_field].value = '';
        }
    }
} // End deleteFile

