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);
}


// 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( );
}


  // 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;
  }





