

  // Sposta l'oggetto oToMove sotto oWhere
  function moveObjectUnder( oToMove, oWhere ) {
    var iLeft = 0;
    var iTop  = 0;
    var oDiv  = oToMove;
    var oObj = oWhere;

    iTop  += oObj.offsetHeight + 2;

     while(oObj != null)
     {
        iLeft += oObj.offsetLeft;
        iTop  += oObj.offsetTop;
        oObj   = oObj.offsetParent;
     }

     oDiv.style.left = iLeft + "px";
     oDiv.style.top  = iTop + "px";
     oDiv.style.display = "inline";
     //alert(oDiv.style.pixelLeft);
  }

  // Sposta l'oggetto grafico oToMove sopra oWhere
  function moveObjectOn( oToMove, oWhere ) {
    var iLeft = 0;
    var iTop  = 0;
    var oDiv  = oToMove;
    var oObj = oWhere;

    iTop -= oDiv.style.pixelHeight + 4;

     while(oObj != null)
     {
        iLeft += oObj.offsetLeft;
        iTop  += oObj.offsetTop;
        oObj   = oObj.offsetParent;
     }
     iLeft--;

     oDiv.style.left = iLeft + "px";
     oDiv.style.top  = iTop + "px";
     oDiv.style.display = "inline";
     //alert(oDiv.style.pixelLeft);
  }


  // Sposta l'oggetto grafico oToMove a sinistra o a destra di oWhere.
  // Se bLeft è true l'oggetto viene spostato a sinistra, altrimenti a destra.
  function moveObjectLR( oToMove, oWhere, bLeft ) {
    var iLeft = 0;
    var iTop  = 0;
    var oDiv  = oToMove;
    var oObj = oWhere;

    while(oObj != null)
    {
       iLeft += oObj.offsetLeft;
       iTop  += oObj.offsetTop;
       oObj   = oObj.offsetParent;
    }
    iLeft -= 2;
    iTop -= 2;

    iLeft += (bLeft ? -oDiv.style.pixelWidth : oDiv.style.pixelWidth);

    oDiv.style.left = iLeft + "px";
    oDiv.style.top  = iTop + "px";
    oDiv.style.display = "inline";
    //alert(oDiv.style.pixelLeft);
  }


  // Ritorna le coordinate assolute di posizionamento del tag passato in formato di array.
  function getObjectPos( oTag, aPos ) {
  var oObj = oTag;

    iPosX = 0;
    iPosY = 0;

    while(oObj != null)
    {
      iPosX += oObj.offsetLeft;
      iPosY += oObj.offsetTop;
      oObj   = oObj.offsetParent;
    }

    aPos[0] = iPosX;
    aPos[1] = iPosY;
  }


// salva il cookie che conserva il nome del navigatore
	function SetNavigatorCookie( )
	{  var d = new Date();

		// legge la data corrente posposta al prossimo anno
		d.setYear(d.getYear()+1);
		// dichiara un cookie pari al nome del browser e setta la scadenza al prossimo anno
		SetCookie("PMF_Nav", navigator.appName+" "+navigator.appVersion, d );
		// per un bug di Explorer 4 di Win95
		if ( GetCookie("PMF_Nav") == null )
			SetCookie("PMF_Nav", navigator.appName);
		//alert(navigator.appName+" "+navigator.appVersion);
	}

// siamo in Internet Explorer?
	function inExplorer( )
	{
		return( ( navigator.appName.indexOf("Explorer") > -1 ) ? true : false );
	}

	// siamo in Netscape?
	function inNetscape( )
	{
		return( ( navigator.appName.indexOf("Netscape") > -1 ) ? true : false );
	}

	// no Operation
	function nOp( )
	{
	}

// apre una finestra di login e la centra sullo schermo
// il secondo parametro opzionale definisce il nome della finestra
	function winLoginOpen( psLink )
	{ var idw;
		// parametri di funzione
	  var argv = winLoginOpen.arguments;
	  var argc = winLoginOpen.arguments.length;

    //alert('argv: ' + argv);
    //alert('argc: ' + argc);

		// dimensione della viewport area
		var lsdx = screen.width;
		var lsdy = screen.height;
		// dimensioni correnti della client area
		var lfdx = inExplorer() ? 360 : 350;
		var lfdy = inExplorer() ? 210 : 150;
		// se ho specificato il secondo parametro legge il nome della finestra
		var sname = (1 < argc) ? argv[1] : "winLogin";
		// se siamo in Netscape lascia il form dimensionabile
  		var sapp = "width=350,height=180,toolbar=no,menubar=no,status=no,scrollbars=no,directories=no,resizable=" + ( inNetscape() ? "yes" : "no" );

		// apre la finestra
		idw = window.open(psLink, sname, sapp);
		// la centra sullo schermo
		idw.resizeTo( lfdx, lfdy );
		idw.moveTo( (lsdx-lfdx)/2, (lsdy-lfdy)/2 );

		// ritorna l'handle di finestra
		return( idw );
	}


// apre una finestra generica e la centra sullo schermo (se in Explorer)
// il quarto parametro opzionale definisce il nome della finestra
	function winOpen( psLink, plDimX, plDimY )
	{ var idw;
		// parametri di funzione
	  var argv = winOpen.arguments;
	  var argc = winOpen.arguments.length;

		// dimensione della viewport area
		var lsdx = screen.width;
		var lsdy = screen.height;
		// dimensioni correnti della client area
		var lfdx = inExplorer() ? plDimX : lsdx;
		var lfdy = inExplorer() ? plDimY : lsdy;
		// se ho specificato il secondo parametro legge il nome della finestra
		var sname = (3 < argc) ? argv[3] : "winNew";
		// se siamo in Netscape lascia il form dimensionabile
  		var sapp = "width=" + lfdx + ",height=" + lfdy + ",toolbar=no,menubar=no,status=no,scrollbars=no,directories=no,resizable=" + ( inNetscape() ? "yes" : "no" );

		// apre la finestra
		idw = window.open(psLink, sname, sapp);
		// la centra sullo schermo
		//idw.resizeTo( lfdx, lfdy );
		//idw.moveTo( (lsdx-lfdx)/2, (lsdy-lfdy)/2 );

		// ritorna l'handle di finestra
		return( idw );
	}


// centra sullo schermo la finestra passata
// le dimensioni passate si riferiscono alla finestra
	function winCentre( idw, lfdx, lfdy )
	{
		// dimensione della viewport area
		var lsdx = screen.availWidth;
		var lsdy = screen.availHeight;

		idw.moveTo( (lsdx-lfdx)/2, (lsdy-lfdy)/2 );
	}

// chiude la finestra passata: se non ci sono parametri chiude quella corrente
	function winClose( )
	{
		// parametri di funzione
	  var argv = winClose.arguments;
	  var argc = winClose.arguments.length;

		var idw = (0 < argc) ? argv[0] : self;

		idw.close( );
	}


function Test()
{
	alert("Sono qui");
}


// elabora dati in un array e ritorna false se non soddisfano le condizioni volute per ciascun dato
// attenzione necessitano delle funzioni vb lato client ValidaData e ValidaNumero nel file standard.vbs
function Valida_Elementi(p_arr_elem, p_rows) {
/* arr_elem n righe , 4 colonne(valore,condizione,messaggio,valore2)
	valori di condizione: 'numerico', 'data', 'pieno', '<','>','<>' */
var i,col_start;
col_start = 0;

for (i = 0; i <= p_rows; i++)
 {
	if (p_arr_elem[i][col_start +1] == "numerico" )
		{
		/* il valore deve essere un numero */
		if (!ValidaNumero(p_arr_elem[i][col_start])) {
			alert (p_arr_elem[i][col_start+2]);
			return(false); }
		}
	if (p_arr_elem[i][col_start +1] == "data")
		{
		/* il valore deve essere una data */
		if (!ValidaData(p_arr_elem[i][col_start])) {
			alert (p_arr_elem[i][col_start+2]);
			return(false); }
		}
	if (p_arr_elem[i][col_start +1] == "pieno")
		{
		if (p_arr_elem[i][col_start] == ""){
			alert(p_arr_elem[i][col_start+2]);
			return(false); }
		}
  }
	return(true);
}


// ---------------------------------------------------------------------------------
// funzioni standard per l'interrogazione e il setting di cookies
// ---------------------------------------------------------------------------------

function getCookieVal (offset)
{
   var endstr = document.cookie.indexOf (";", offset);

   if (endstr == -1)
      endstr = document.cookie.length;

   return unescape(document.cookie.substring(offset, endstr));
}

function GetCookie (name)
{
   var arg = name + "=";
   var alen = arg.length;
   var clen = document.cookie.length;
   var i = 0;

   while (i < clen)
      {
      var j = i + alen;

      if (document.cookie.substring(i, j) == arg)
         return getCookieVal (j);

      i = document.cookie.indexOf(" ", i) + 1;

      if (i == 0)
         break;
      }

   return null;
}

function SetCookie (name, value)
{
   var argv = SetCookie.arguments;
   var argc = SetCookie.arguments.length;
   var expires = (2 < argc) ? argv[2] : null;
   var path = (3 < argc) ? argv[3] : null;
   var domain = (4 < argc) ? argv[4] : null;
   var secure = (5 < argc) ? argv[5] : false;

   document.cookie = name + "=" + escape (value) +
	 ((expires == null) ? "" : ("; expires=" + expires.toGMTString())) +
	 ((path == null) ? "" : ("; path=" + path)) +
	 ((domain == null) ? "" : ("; domain=" + domain)) +
	 ((secure == true) ? "; secure" : "");
}

// ---------------------------------------------------------------------------------