//--------------------
// Gestione eventi
//window.onerror = doError;
//--------------------
// Funzioni da eseguire per il caricamento del menu del frame superiore
function bodyOnLoad()
{
  if ( parent.frames[0] && parent.frames['menu'] && parent.frames['menu'].Go )
  {
    parent.frames['menu'].Go();
  }
  setHelp();
  disableMouse();
  xbDetectBrowser();
}
//--------------------
function disableMouse()
{
  // Disattivazione tasto destro solo in ambiente di produzione
  if ( location.host == "tecnet.enel.it" )
  {
      document.onmousedown=tastoDestro;
      if (document.layers) window.captureEvents(Event.MOUSEDOWN);
      window.onmousedown=tastoDestro;
  }
}
//--------------------
function setHelp()
{
 // Impostazione del link al file della guida
 if (parent.frames[0] && parent.frames['menu'] && parent.frames['menu'].cambiaHelp )
 {
    parent.frames['menu'].cambiaHelp(getHelpFileName());
 }
}
//--------------------
// Funzione di blocco del tasto destro per la visualizzazione del codice
function tastoDestro(e)
{
  if (navigator.appName == 'Netscape' && (e.which == 3 || e.which == 2))
  {
    alert("Spiacente, il tasto destro del mouse e' disabilitato");
    return false;
  }
  else if (navigator.appName == 'Microsoft Internet Explorer' &&
          (event.button == 2 || event.button == 3))
  {
    alert("Spiacente, il tasto destro del mouse e' disabilitato");
    return false;
  }
 return true;
}
//--------------------
// Funzione per la codifica dei caratteri particolari per richieste batch
function CodificaHex(stringax) {
 // codifica una stringa
 var str = "";
 var car;
 if (!stringax) {
  return "";
 }
 for (var i = 0; i < stringax.length; ++i){
  car = stringax.substring (i, i + 1);
  if (car == " ") {
   car = "%20";
  }
  else if (car == "&") {
   car = "%26";
  }
  else if (car == "\n") {
   car = "%0a";
  }
  else if (car == "\r") {
   car = "%0d";
  }
  else if (car == "$") {
   car = "%24";
  }
  else if (car == "<") {
   car = "%3c";
  }
  else if (car == ">") {
   car = "%3e";
  }
  else if (car == "-") {
   car = "%2d";
  }
  else if (car == "=") {
   car = "%3d";
  }
  else if (car == "+") {
   car = "%2b";
  }
  else if (car == "à") {
   car = "%e0";
  }
  else if (car == "è") {
   car = "%e8";
  }
  else if (car == "é") {
   car = "%e9";
  }
  else if (car == "ì") {
   car = "%ec";
  }
  else if (car == "ò") {
   car = "%f2";
  }
  else if (car == "ù") {
   car = "%f9";
  }




  else if (car == "\"" ||
           car == "“"  ||
           car == "”") {
   car = "%22";
  }
  else if (car == "%") {
   car = "%25";
  }
  else if (car == "’" ||
           car == "'" ||
           car == "´" ||
           car == "`") {
   car = "%26acute;";
  }
  else if (car == "/") {
   car = "%2f";
  }
  else if (car == "\\") {
   car = "%5c";
  }
  else if (car == "°") {
   //alert("trovato ("+stringax+")");
   car = "%b0";

  }
  str += car;
 }
 return str;
}
//--------------------
function deCodificaHex (codice) {
 var str = "";
 var car;
 var hex;
 if (!codice) {
  return "";
 }
 var i = -1;
 while (++i < codice.length) {
  car = codice.substring (i, i + 1);
  if (car == "%") {
   if ((i + 3) <= codice.length) {
    hex = codice.substring (i + 1, i + 3);
    if (hex == "20") {
     car = " ";
     i += 2;
    }
    else if (hex == "26") {
     if ((i + 9) <= codice.length &&
         codice.substring (i, i + 9) == "%26acute;") {
      car = "'";
      i += 8;
     }
     else {
      car = "&";
      i += 2;
     }
    }
    else if (hex == "24") {
     car = "$";
     i += 2;
    }
    else if (hex == "2d") {
     car = "-";
     i += 2;
    }
    else if (hex == "3d") {
     car = "=";
     i += 2;
    }
    else if (hex == "3c") {
     car = "<";
     i += 2;
    }
    else if (hex == "3e") {
     car = ">";
     i += 2;
    }
    else if (hex == "2b") {
     car = "+";
     i += 2;
    }
    else if (hex == "22") {
     car = "\"";
     i += 2;
    }
    else if (hex == "25") {
     car = "%";
     i += 2;
    }
    else if (hex == "2f") {
     car = "/";
     i += 2;
    }
    else if (hex == "5c") {
     car = "\\";
     i += 2;
    }
    else if (hex == "0a") {
     car = "\n";
     i += 2;
    }
    else if (hex == "0d") {
     car = "\r";
     i += 2;
    }
    else if (hex == "b0") {
     car = "°";
     i += 2;
    }
   }
  }
  str += car;
 }
 return str;
}
//-------------------
var counter = 0;
var formInviato = false ;
var backObject ;
//-------------------
function invioFormOk()
{
   if ( finitoHtml )   // Verifica esistenza funzione inserita in fondo alla pagina
   {
      if ( formInviato )
      {
         return false;
      }
      return true;
   }
   return false;
}
//-------------------
function resetInvioForm()
{
  formInviato = false;
  counter = 0;
}
//-------------------
function inviaFormBase(funzione, windowName, canc)
{
   if ( !invioFormOk() )
   {
     return;
   }
   if (canc != "")
   {
      if (funzione.indexOf("="+canc) >= 0)
      {
         if (!confirm("Sei sicuro di voler cancellare ?"))
         {
            return;
         }
      }
   }
   disabilitaForm();
   if (document.disp.browser)
   {
      document.disp.browser.value = navigator.appName;
      document.disp.browserLevel.value = navigator.appVersion;
   }

   document.disp.disp_dati_form.value = funzione + "&" + creaDatiForm ();
   if (windowName != "")
   {
      document.disp.windowName.value = windowName;
   }
   counter++;
   formInviato = true;
   document.disp.submit ();                         // invia il form di comunicazione
   if ( counter > 1 )
   {
      alert("Attenzione doppia richiesta inviata : si consiglia di riavviare la sessione in corso !");
   }
   document.disp.formNavigato.value = "true";       // imposta form navigato
}
//-------------------
function inviaFormFunz(bottone)
{
   inviaFormBase ("funz="+bottone,"","");
}
//-------------------
//  Disabilita la pagina per l'invio di altri comandi sovrappanendoci un layer con un immagine trasparente
function disabilitaForm()
{
   backObject = new makeObj('divBg');
   if ( !document.layers )
   {
      backObject.css.width=document.body.scrollWidth;
      backObject.css.height=document.body.scrollHeight;
   }
   else
   {
      backObject.css.width=window.outerWidth;
      backObject.css.height=window.outerHeight;
   }
   backObject.css.visibility='visible';
   backObject.css.display='inline';
   menuMouseOver();
}
//-------------------
function abilitaForm()
{
   backObject = new makeObj('divBg');
   backObject.css.display='none';
   backObject.css.visibility='hidden';
   menuMouseOut();
}

var comboListe    = new Array();
var finestraModale = false;

function disabilitaPerModal()
{
    var i = 0;
    // nasconde le Select
    for (i = 0; i < document.main.elements.length; i++)
    {
        if (document.main.elements[i].type == "select-one" || document.main.elements[i].type == "select-multiple" || document.main.elements[i].type == "button")
        {
           comboListe [comboListe.length] = i;
        }
    }
    for (i = 0; i < comboListe.length; i++)
    {
       document.main.elements[comboListe [i]].style.visibility="hidden";
    }
    finestraModale = true ;
}

function abilitaPerModal(){
   gDialog.ShowLayers(false);
   for (i = 0; i < comboListe.length; i++) {
      document.main.elements[comboListe [i]].style.visibility="";
   }
   finestraModale = false ;
}


//-------------------
// Costruisce oggetto che punta allo stile del'id passato come riferimento
function makeObj(obj)
{
   if ( document.getElementById )   // Netscape >= 6
   {
      this.css=document.getElementById(obj).style;
   }
   else
   {  // Netscape 4 e Internet Explorer >= 4
      this.css=(document.layers)? eval('document.'+obj) : eval(obj+'.style');
   }
}
//-------------------
function creaDatiForm(){
 if (document.disp.windowName) {
  if (document.main.windowName) {
   document.disp.windowName.value = document.main.windowName.value;
  }
  else {
   document.disp.windowName.value = window.name;
  }
 }
 var stringa = "";
 for (i=0; i<document.main.length; ++i) {
  if (document.main.elements[i].name != "") {
   if (document.main.elements[i].type == "radio" ||
       document.main.elements[i].type == "checkbox") {
    if (document.main.elements[i].checked == "1") {
     stringa += "&" + document.main.elements[i].name + "=" + CodificaHex (document.main.elements[i].value);
    }
   }
   else {
    stringa += "&" + document.main.elements[i].name + "=" + CodificaHex (document.main.elements[i].value);
   }
  }
 }
 return stringa.substring (1);
}
//--------------------------
function getFormInviato()
{
   return formInviato;
}
//---------------------------
// Gestore errori javascript
function doError(sMessage,sUrl,nLine) {
 str = ""
 alert("Errore : " + sMessage
       + "\nURL : " + sUrl
       + "\nLinea : " + nLine);
  return true;
}
//---------------------------
/*
 * Funzioni di visualizzazione della data e dell'ora
 * con incremento automatico ogni 60 secondi
 *
 * Inserire i TAG "<div class="orario" id="orario">&nbsp;</div>"
 * nel punto in cui si vuol visualizzare la data
 */
var timerID = null;
var timerRunning = false;
window.setResizable;
function stopclock() {
 if(timerRunning) {
  clearInterval(timerID);
 }
 timerRunning = false;
}
//---------------------------
var orarioTop = '0px';
function scrivi_data(top) {
 // Arresto dell'orologio prima della visualizzazione
 stopclock();
 orarioTop = top;
 timerID = setInterval("showtime()",1000);
 timerRunning = true;
}
//---------------------------
function showtime()
{
 var now = new Date();
 var fullDate;
 bname=navigator.appName;
 if (bname=="Netscape"  && navigator.appVersion.substring(0,1) == "4" )
 {
  return;
 }
 else if (bname=="Netscape")
 {
  fullDate = now.getDate()+ "."+ (now.getMonth() + 1) + "." + (now.getYear()+1900)
 }
 else if (bname=="Microsoft Internet Explorer") {
  fullDate = now.getDate()+ "."+ (now.getMonth() + 1) + "." + (now.getYear())
 }
 var hours = now.getHours();
 var minutes = now.getMinutes();
 var seconds = now.getSeconds();
 var timeValue = fullDate + " ";
 timeValue += hours;
 timeValue += ((minutes < 10) ? ":0" : ":") + minutes;
 var orario = "<div style='position:relative; top:"+ orarioTop +";'>" + timeValue +"</div>" ;
 var orarioPtr =  (document.getElementById)? document.getElementById("orario") : document.all.orario;
 orarioPtr.innerHTML = orario;
}
//------------------------
/*
 *  Funzioni per visualizzare e nascondere le select di una form
 *  Note: aggiungere l'attributo language="JavaScript1.2" nell'inclusione del file
 */
// Flag utilizzato nelle funzioni del menu
var formVisitato = "false";
var comboList    = new Array();
//---------------------------
function menuMouseOver()
{
    if (document.disp &&
        document.disp.applId &&
        document.disp.applId.value == "tecnet") return ;
    var i = 0;
    // nasconde le Select
    if (formVisitato=="false")
    {
       formVisitato="true";
       for (i = 0; i < document.main.elements.length; i++)
       {
           if (document.main.elements[i].type == "select-one" || document.main.elements[i].type == "select-multiple" || document.main.elements[i].type == "button")
           {
              comboList [comboList.length] = document.main.elements[i];
           }
       }
    }
    for (i = 0; i < comboList.length; i++)
    {
       comboList [i].style.visibility="hidden";
    }
}
//---------------------------
function isStreaming(resource) {
 if (resource.indexOf("mms://") >= 0 ||
     resource.indexOf("rtsp://") >= 0) {
  return true;
 }
 return false;
}
//---------------------------
function menuMouseOut() {
 // visualizza le Select
 if (formInviato ) return;
 if (finestraModale) return;
 for (i = 0; i < comboList.length; i++)
 {
    comboList [i].style.visibility="";
 }
}
//---------------------------
// Funzione vuota
function noOp () {
}
//---------------------------
// Derivato da ua.js V.1.9; allegato a Treeview 4.3 (http://www.treeview.net/)
// (Supporta Safari Beta 3 e Opera 7)
function xbDetectBrowser()
{
  var oldOnError = window.onerror;
  var element = null;

  window.onerror = null;

  // work around bug in xpcdom Mozilla 0.9.1
  window.saveNavigator = window.navigator;

  navigator.OS    = '';
  navigator.version  = parseFloat(navigator.appVersion);
  navigator.org    = '';
  navigator.family  = '';

  var platform;
  if (typeof(window.navigator.platform) != 'undefined')
  {
    platform = window.navigator.platform.toLowerCase();
    if (platform.indexOf('win') != -1)
      navigator.OS = 'win';
    else if (platform.indexOf('mac') != -1)
      navigator.OS = 'mac';
    else if (platform.indexOf('unix') != -1 || platform.indexOf('linux') != -1 || platform.indexOf('sun') != -1)
      navigator.OS = 'nix';
  }

  var i = 0;
  var ua = window.navigator.userAgent.toLowerCase();

  if (ua.indexOf('safari') != -1)
  {
    i = ua.indexOf('safari');
    navigator.family = 'safari';
    navigator.org = 'safari';
    navigator.version = parseFloat('0' + ua.substr(i+7), 10);
  }
  else if (ua.indexOf('opera') != -1)
  {
    i = ua.indexOf('opera');
    navigator.family  = 'opera';
    navigator.org    = 'opera';
    navigator.version  = parseFloat('0' + ua.substr(i+6), 10);
  }
  else if ((i = ua.indexOf('msie')) != -1)
  {
    navigator.org    = 'microsoft';
    navigator.version  = parseFloat('0' + ua.substr(i+5), 10);

    if (navigator.version < 4)
      navigator.family = 'ie3';
    else
      navigator.family = 'ie4'
  }
  else if (ua.indexOf('gecko') != -1)
  {
    navigator.family = 'gecko';
    var rvStart = ua.indexOf('rv:');
    var rvEnd   = ua.indexOf(')', rvStart);
    var rv      = ua.substring(rvStart+3, rvEnd);
    var rvParts = rv.split('.');
    var rvValue = 0;
    var exp     = 1;

    for (var i = 0; i < rvParts.length; i++)
    {
      var val = parseInt(rvParts[i]);
      rvValue += val / exp;
      exp *= 100;
    }
    navigator.version = rvValue;

    if (ua.indexOf('netscape') != -1)
      navigator.org = 'netscape';
    else if (ua.indexOf('compuserve') != -1)
      navigator.org = 'compuserve';
    else
      navigator.org = 'mozilla';
  }
  else if ((ua.indexOf('mozilla') !=-1) && (ua.indexOf('spoofer')==-1) && (ua.indexOf('compatible') == -1) && (ua.indexOf('opera')==-1)&& (ua.indexOf('webtv')==-1) && (ua.indexOf('hotjava')==-1))
  {
    var is_major = parseFloat(navigator.appVersion);

    if (is_major < 4)
      navigator.version = is_major;
    else
    {
      i = ua.lastIndexOf('/')
      navigator.version = parseFloat('0' + ua.substr(i+1), 10);
    }
    navigator.org = 'netscape';
    navigator.family = 'nn' + parseInt(navigator.appVersion);
  }
  else if ((i = ua.indexOf('aol')) != -1 )
  {
    // aol
    navigator.family  = 'aol';
    navigator.org    = 'aol';
    navigator.version  = parseFloat('0' + ua.substr(i+4), 10);
  }
  else if ((i = ua.indexOf('hotjava')) != -1 )
  {
    // hotjava
    navigator.family  = 'hotjava';
    navigator.org    = 'sun';
    navigator.version  = parseFloat(navigator.appVersion);
  }

  window.onerror = oldOnError;
}
