//--- Importazioni
importNameSpace("UI.controls")
importNameSpace("dataType.date")
importNameSpace("UI.controls.datagrid")
importNameSpace("system.soap")
importNameSpace("system.http")

//--- Fine Importazioni


//--- Dichiarazione variabili
var txtNrTracer
var txtNrLotto
var btnRicerca
var grdElencoMovimenti
var divRisultati
var divInfo
var divRisultatiTN
var divLoader
var frmTracking
var req

//--- Fine Dichiarazione variabili

//--- Inizializzazione
jsaf.start(initPage)

function initPage() {
	initControls()
	setEvents()
	verificaCaricamentoDiretto()
}
//--- Fine Inizializzazione

//--- Gestione eventi

//--- Fine Gestione eventi


//--- Dichiarazione funzioni
function initControls() {
  txtNrTracer = textbox("txtNrTracer")
  txtNrLotto = textbox("txtNrLotto")
  btnRicerca = submitButton("btnRicerca")
  divRisultati = DOMElement("divRisultati")
  divInfo = DOMElement("divInfo")
  divRisultatiTN = DOMElement("divRisultatiTN")
  divLoader = DOMElement("divLoader")
  frmTracking = DOMElement("frmTracking")

  /*txtNrTracer.attributes["ddv-type"].value = "numeric"*/
  txtNrTracer.attributes["ddv-required"].value = "false"
  txtNrTracer.attributes["ddv-minlength"].value = 10
  txtNrTracer.attributes["ddv-maxlength"].value = 17
  txtNrTracer.attributes["ddv-required-group"].value = "codice"
  
  txtNrLotto.attributes["ddv-type"].value = "numeric"
  txtNrLotto.attributes["ddv-required"].value = "false"
  txtNrLotto.attributes["ddv-minlength"].value = 17
  txtNrLotto.attributes["ddv-maxlength"].value = 17
  txtNrLotto.attributes["ddv-required-group"].value = "codice"
  
  grdElencoMovimenti = datagrid("grdElencoMovimenti")
  grdElencoMovimenti.dataFields = ["NrTracer", "Data", "Stato", "Posizione"]
  grdElencoMovimenti.onCellDataBind = HandleCellDataBind
  grdElencoMovimenti.allowSelection = false
  grdElencoMovimenti.pageSize = 10
  grdElencoMovimenti.init()

}

function setEvents() {
txtNrTracer.onkeydown = clearTheOtherTextbox
txtNrLotto.onkeydown = clearTheOtherTextbox

btnRicerca.onclick = caricaDati
btnRicerca.loaderElement = divLoader
}


function clearTheOtherTextbox() {
var txtID = this.id

  if (txtID == "txtNrTracer") {
     txtNrLotto.value = ""
  }
  if (txtID == "txtNrLotto") {
     txtNrTracer.value = ""
  }
  divInfo.innerHTML = ""
			
}

function HandleCellDataBind(newCell, currentColumn) {
  var data
  var posizione
  
  if (currentColumn == 1) {
  	data = new Date(newCell.innerHTML)
	  if (!isNaN(data.getDate())) {
    	newCell.innerHTML = formatDate(data, "dd/MM/yyyy")
	  } else {
		  newCell.innerHTML = ""
	  }
  }
  
  if (currentColumn == 3) {
  	posizione = newCell.innerHTML
	  if (posizione == null) {
    	newCell.innerHTML = ""
	  }
  }
}

function loadXMLDoc(url) {
	req = false;
    // branch for native XMLHttpRequest object
    if(window.XMLHttpRequest && !(window.ActiveXObject)) {
    	try {
			req = new XMLHttpRequest();
        } catch(e) {
			req = false;
        }
    // branch for IE/Windows ActiveX version
    } else if(window.ActiveXObject) {
       	try {
        	req = new ActiveXObject("Msxml2.XMLHTTP");
      	} catch(e) {
        	try {
          		req = new ActiveXObject("Microsoft.XMLHTTP");
        	} catch(e) {
          		req = false;
        	}
		}
    }
	if(req) {
	  req.open("GET", url, false);
		req.send(null);
	}
}

function caricaDati() {
  //if (formValidate(this.form)) {
  divInfo.innerHTML = ""
  if (formValidate(frmTracking)) {
     divRisultati.style.visibility = "hidden"

     btnRicerca.beginSubmit()

     grdElencoMovimenti.emptyRows()

     if (txtNrLotto.value != "") {
        caricaDatiPerLotto(txtNrLotto.value);
     }

     if (txtNrTracer.value != "") {
        caricaDatiPerTracer(txtNrTracer.value);
     }
  }
}

function caricaDatiPerLotto(nrLotto) {
  var url ="/WSTracking/Tracker.asmx";
  var pl
  var mode = getParam("mode")
  var result
  
  pl = new SOAPClientParameters();
  
  pl.add("nrLotto", nrLotto);
  if (mode == 1) {
    pl.add("livelloDettaglio", 1);
  } else {  
    pl.add("livelloDettaglio", 0);
  }
     
  try {
    result = SOAPClient.invoke(url, "GetMovPerLotto", pl, true, caricaDatiPerLottoCB);
  }
  catch(e)
  {
    alert("ATTENZIONE!\nSi č verificato un problema di elaborazione sul server.\nRiprovare pių tardi.");
  }
}

function caricaDatiPerLottoCB(result) {
  if (result.length > 0) {
    grdElencoMovimenti.dataSource = result
    grdElencoMovimenti.currentPage = 1
    grdElencoMovimenti.dataBind()
    
    divRisultati.style.visibility = "visible"
  } else {
    divInfo.innerHTML = "Non ci sono dati da visualizzare. Accertarsi di avere inserito correttamente le cifre del codice."
  }
    btnRicerca.endSubmit()
}

function caricaDatiPerTracer(nrTracer) {
  var url ="/WSTracking/Tracker.asmx";
  var pl
  var mode = getParam("mode")
  var result
  
  pl = new SOAPClientParameters();
  
  pl.add("nrTracer", nrTracer);
  if (mode == 1) {
    pl.add("livelloDettaglio", 1);
  } else {  
    pl.add("livelloDettaglio", 0);
  }
     
  try {
    result = SOAPClient.invoke(url, "GetMovPerTracer", pl, true, caricaDatiPerTracerCB);    
  }
  catch(e)
  {
    alert("ATTENZIONE!\nSi č verificato un problema di elaborazione sul server.\nRiprovare pių tardi.");
  }
}

function caricaDatiPerTracerCB(result) {
//if (!(result.constructor.toString().indexOf("function Error()") != -1)) {
if (result.name != "Error") {
    if (result.IDVettore == 0) {
        divInfo.innerHTML = "Non ci sono dati da visualizzare. Accertarsi di avere inserito correttamente le cifre del codice"
    }
    
    if (result.IDVettore == 1) {
        if (result.Movimenti.length > 0) {
         grdElencoMovimenti.dataSource = result.Movimenti
         grdElencoMovimenti.currentPage = 1
         grdElencoMovimenti.dataBind()  
         
         divRisultati.style.visibility = "visible"      
        } else {
          divInfo.innerHTML = "Non ci sono dati da visualizzare. Accertarsi di avere inserito correttamente le cifre del codice."
        }
    }
    
    if (result.IDVettore == 2) {
        inviaRichiestaPT(formatDate(result.ParametriVettore.Data, "dd/MM/yyyy"), result.ParametriVettore.IDSpedizione)
    }

    if (result.IDVettore == 4) {
      caricaDatiTN(result.ParametriVettore.IDSpedizione)
    }
    
} else {
    alert("ATTENZIONE!\nSi č verificato un problema di elaborazione sul server.\nRiprovare pių tardi.");
}
btnRicerca.endSubmit()
}

function caricaDatiTN(nrTracer) {
  var url = "TrackTN.asp?ConsigNos="+nrTracer;
  try {
    loadXMLDoc(url);
    result = req;
    caricaDatiPerTracerTN(result.responseText);
  }
  catch(e)
  {    
    alert("ATTENZIONE!\nSi č verificato un problema di elaborazione sul server!\nRiprovare pių tardi.");
  }
}


function caricaDatiPerTracerTN(testo) {
    if (testo.length > 0) {
      divInfo.innerHTML = testo
      //divRisultatiTN.innerHTML = testo
    } else {
      divInfo.innerHTML = "Non ci sono dati da visualizzare. Accertarsi di avere inserito correttamente le cifre del codice."
    }
}

function inviaRichiestaPT(dataSpedizione, NrRaccomandata) {
var mpcode
var mpdate 
var PTForm
var source
var subaction
var divInfo = DOMElement("divInfo")
var chkAssicurata = DOMElement("chkAssicurata")

  if (!dataSpedizione) dataSpedizione = ""
    if (dataSpedizione.match(/^(\d\d)\D(\d\d)\D\d{4}$/)) {
       mpcode = DOMElement("mpcode")
       mpdate = DOMElement("mpdate")
       PTForm = DOMElement("PTForm")
     
       mpcode.value = NrRaccomandata
       mpdate.value = dataSpedizione
       
       if (chkAssicurata != null) {
	       if (chkAssicurata.checked) {
      		  source = DOMElement("source")
      		  subaction = DOMElement("subaction")
      
      		  source.value = "assicurata"
      		  subaction.value = "assicurata"
	       }       
       }
       divInfo.innerHTML = "L'esito della ricerca viene visualizzato in una nuova finestra"

       PTForm.submit()
    } else {
             alert("La data non e' valida!")
    }
}

function verificaCaricamentoDiretto() {
var numeroLotto = getParam("nl");
 
  if (numeroLotto) {
      txtNrLotto.value = numeroLotto
      caricaDati()
      //frmTracking.submit()
  }
}
//--- Fine Dichiarazione funzioni

