﻿/* COSTANTI PARAMETRI ESTERNI */
    var constStepID = 0; // Text Value necessary
    var constStepWidth = 1; // Numeric Value  necessary
    var constStepHeight = 2;  // Numeric Value necessary
    var constStepTop = 3; // Numeric Value necessary
    var constStepLeft = 4; // Numeric Value necessary
    var constStepPathImage = 5; // Text Value necessary
    var constStepBackgroundColor = 6; // Text Value necessary
    var constStepClose = 7; // Boolean Value True/False default = false
    var constStepResize = 8; // Boolean Value True/False default = false
    var constStepEnlarge = 9; // Boolean Value True/False default = false
    var constStepReduce = 10; // Boolean Value True/False default = false
    var constStepFontSize = 11; // Boolean Value True/False default = false
    var constStepSliderText = 12; // Boolean Value True/False default = true

/* COSTANTI PARAMETRI INTERNI */

    var constWinStep_Indice = 0;
    var constWinStep_Id = 1;
    var constWinStep_Width = 2;
    var constWinStep_Height = 3;
    var constWinStep_Top = 4;
    var constWinStep_Left = 5;
    var constWinStep_StateEnlarge = 6;
    var constWinStep_ObjectDrag = 7;
    var constWinStep_HandlerDrag = 8
    var constWinStep_ObjectResize = 9;
    var constWinStep_HandlerResize = 10;
    var constWinStep_ObjectReduce = 11;
    var constWinStep_ObjectEnlarge = 12;
    var constWinStep_ObjectClose = 13;
    var constWinStep_ObjectTimerResize = 14;
    var constWinStep_BooleanFxTimerResize = 15;
    var constWinStep_BooleanTimerResize = 16;
    var constWinStep_ObjectSliderContainer = 17;
    var constWinStep_ObjectSliderHandler = 18;
    var constWinStep_ObjectSlider = 19;
    var constWinStep_ObjectEnlargeFont = 20;
    var constWinStep_ObjectReduceFont = 21;




    var stepWin = new Array();
    var arrayImmagini = new Array();

    function StepWindows()
    {
        
        
        
        
        this.StepID = "";
        this.StepWidth = 0; 
        this.StepHeight = 0;
        this.StepTop = 0; 
        this.StepLeft = 0;
        this.StepPathImage = "";
        this.StepBackgroundColor = ""; 
        this.StepClose = false; 
        this.StepResize = false; 
        this.StepEnlarge = false;
        this.StepReduce = false;
        this.StepFontSize = false;
        this.StepSliderText = true;
        
        this.init_StepWindows = function()
        {
            var countStepWin=0;
            countStepWin = stepWin.length;

            var stepWin_param = new Array();

            stepWin_param[constStepID] = this.StepID;
            stepWin_param[constStepWidth] = this.StepWidth;
            stepWin_param[constStepHeight] = this.StepHeight;
            stepWin_param[constStepTop] = this.StepTop;
            stepWin_param[constStepLeft] = this.StepLeft;
            stepWin_param[constStepPathImage] = this.StepPathImage;
            stepWin_param[constStepBackgroundColor] = this.StepBackgroundColor;
            stepWin_param[constStepClose] = this.StepClose;
            stepWin_param[constStepResize] = this.StepResize;
            stepWin_param[constStepEnlarge] = this.StepEnlarge;
            stepWin_param[constStepReduce] = this.StepReduce;
            stepWin_param[constStepFontSize] = this.StepFontSize;
            stepWin_param[constStepSliderText] = this.StepSliderText;


            stepWin[countStepWin] = stepWin_param;

            
        }
        
    }

    var indexLevel = 1;
    var win = new Array();
    var countWin = 0;

    //***************************************************** RICOSTRUZIONE HTML DEGLI OGGETTI DEFINITI
    //***************************************************** SUL DOM DELLA PAGINA TRAMITE I DOVUTI PARAMETRI JAVASCRIPT
    function CostruzioneHTML()
    {
        

        for (var i = 0; i < stepWin.length; i++) {

            var childrenTitolo = $(stepWin[i][constStepID]).getChildren('.cssDivWin_titolo');
            var childrenCorpo = $(stepWin[i][constStepID]).getChildren('.cssDivWin_corpo');
            var strTitolo;
            var strCorpo;
            var strHTML;

            var strBackgroundColor;
            var strPathImage;
            var blnClose = false;
            var blnResize = false;
            var blnEnlarge = false;
            var blnReduce = false;
            var blnFontSize = false;
            var blnSliderText = false;
            
            
            if ($(childrenTitolo[0]))
                strTitolo = $(childrenTitolo[0]).innerHTML;
            if ($(childrenCorpo[0]))
                strCorpo = $(childrenCorpo[0]).innerHTML;

            $(stepWin[i][constStepID]).empty();
            $(stepWin[i][constStepID]).set('id', stepWin[i][constStepID]);
            $(stepWin[i][constStepID]).set('class', 'cssDivWin');
            $(stepWin[i][constStepID]).setStyle('width', stepWin[i][constStepWidth]);
            $(stepWin[i][constStepID]).setStyle('height', stepWin[i][constStepHeight]);
            $(stepWin[i][constStepID]).setStyle('left', stepWin[i][constStepLeft]);
            $(stepWin[i][constStepID]).setStyle('top', stepWin[i][constStepTop]);


            strPathImage = stepWin[i][constStepPathImage];
            strBackgroundColor = stepWin[i][constStepBackgroundColor];
            
            if (stepWin[i][constStepClose])
                blnClose = stepWin[i][constStepClose];
            if (stepWin[i][constStepResize])
                blnResize = stepWin[i][constStepResize];
            if (stepWin[i][constStepEnlarge])
                blnEnlarge = stepWin[i][constStepEnlarge];
            if (stepWin[i][constStepReduce])
                blnReduce = stepWin[i][constStepReduce];
            if (stepWin[i][constStepFontSize])
                blnFontSize = stepWin[i][constStepFontSize];
            if (stepWin[i][constStepSliderText])
                blnSliderText = stepWin[i][constStepSliderText];


            
            strHTML = "";
            strHTML += "<div class=\"cssDivWin_top_sx\" style=\"background: url('" + strPathImage + "sx_up.gif') no-repeat 0 0;\">";
            strHTML += "<div class=\"cssDivWin_top_dx\" style=\"background: url('" + strPathImage + "dx_up.gif') no-repeat right 0;\">";
            if (blnReduce) strHTML += "<div class=\"cssDivWin_action_riduci\" style=\"background: url('" + strPathImage + "reduce.gif') no-repeat center center;\"></div>";
            if (blnEnlarge) strHTML += "<div class=\"cssDivWin_action_ingrandisci\" style=\"background: url('" + strPathImage + "enlarge.gif') no-repeat center center;\"></div>";
            if (blnClose) strHTML += "<div class=\"cssDivWin_action_chiudi\" style=\"background: url('" + strPathImage + "close.gif') no-repeat center center;\"></div>";
            strHTML += "<div class=\"cssDivWin_top_center\" style=\"background-color:" + strBackgroundColor + ";\">";
            strHTML += "</div>";
            strHTML += "</div>";
            strHTML += "</div>";

            strHTML += "<div class=\"cssDivWin_center_sx\" style=\"background-color:" + strBackgroundColor + ";\">";
            strHTML += "<div class=\"cssDivWin_center_dx\" style=\"background-color:" + strBackgroundColor + ";\">";
            strHTML += "<div class=\"cssDivWin_center_center\" style=\"background-color:" + strBackgroundColor + ";\" >";
            strHTML += "<div class=\"cssDivWin_titolo\">";
            strHTML += strTitolo;
            strHTML += "</div>";
            strHTML += "<div class=\"cssDivWin_corpo_container\">";
            strHTML += "<div class=\"cssDivWin_corpo\">";
            strHTML += strCorpo;
            strHTML += "</div>";
            strHTML += "</div>";
            strHTML += "</div>";
            strHTML += "</div>";

            strHTML += "</div>";

            strHTML += "<div class=\"cssDivWin_SpaziaturaCorpoPiede\" style=\"background-color:" + strBackgroundColor + ";\">";
            strHTML += "</div>";

            strHTML += "<div class=\"cssDivWin_bottom_sx\" style=\"background: url('" + strPathImage + "sx_down.gif') no-repeat 0 bottom;\">";
            if (blnFontSize)
            {
                strHTML += "<div class=\"cssDivWin_action_resizeFont\">";
                strHTML += "<div class=\"cssDivWin_action_resizeFont_riduci\" style=\"background: url('" + strPathImage + "font_reduce.gif') no-repeat center center;\"></div>";
                strHTML += "<div class=\"cssDivWin_action_resizeFont_ingrandisci\" style=\"background: url('" + strPathImage + "font_enlarge.gif') no-repeat center center;\"></div>";
                strHTML += "</div>";
            }
            strHTML += "<div class=\"cssDivWin_bottom_dx cssDivWin_Angolo_dx_inf\" style=\"background: url('" + strPathImage + "dx_down.gif') no-repeat right bottom;\">";
            strHTML += "<div class=\"cssDivWin_bottom_center\" style=\"background-color:" + strBackgroundColor + ";\">";
            strHTML += "</div>";
            strHTML += "</div>";
            if (blnResize) strHTML += "<div class=\"cssDivWin_action_resizable\" style=\"background: url('" + strPathImage + "resize.gif') no-repeat center center;\"></div>";
            strHTML += "</div>";

            if (blnSliderText)
            {
                strHTML += "<div class=\"cssDivWin_sliderContainer\">";
                strHTML += "<div class=\"cssDivWin_sliderHandler\">";
                strHTML += "</div>";
                strHTML += "</div>";
            }
            $(stepWin[i][constStepID]).innerHTML = strHTML;


        }

    }

    //***************************************************** INIZIALIZZAZIONE DELLE FUNZIONI DELLE SIGNOLE WIN
    //***************************************************** IN BASE AI TAG TROVATI NEL DOM DELLA PAGINA
    function initWin()
    {
        
        //***************************************************** PROCEDURA INIZIALIZZAZIONI VARIABILI ASSOCIATE ALLE WIN
        var divWin = $$('.cssDivWin');
        divWin.each(function(el) { WinInit(el); });

        //***************************************************** PROCEDURA PER DRAG & DROP
        var draggables = $$('.cssDivWin_top_center');
        draggables.each(function(el) { dragContainerInit(el); });

        //***************************************************** PROCEDURA PER RESIZE
        var Resizable = $$('.cssDivWin_action_resizable');
        Resizable.each(function(el) { ResizeContainerInit(el); });
        
        //***************************************************** PROCEDURA CHIUDI
        var Closable = $$('.cssDivWin_action_chiudi');
        Closable.each(function(el) { CloseContainerInit(el); });

        //***************************************************** PROCEDURA INGRANDISCI
        var Enlarge = $$('.cssDivWin_action_ingrandisci');
        Enlarge.each(function(el) { EnlargeContainerInit(el); });

        //***************************************************** PROCEDURA RIDUCI
        var Reduce = $$('.cssDivWin_action_riduci');
        Reduce.each(function(el) { ReduceContainerInit(el); });

        //***************************************************** PROCEDURA SETTA DIMENSIONI FONT INGRANDISCI
        var DimensionFont_enlarge = $$('.cssDivWin_action_resizeFont_ingrandisci');
        DimensionFont_enlarge.each(function(el) { DimensionFontEnlargeContainerInit(el); });

        //***************************************************** PROCEDURA SETTA DIMENSIONI FONT
        var DimensionFont_reduce = $$('.cssDivWin_action_resizeFont_riduci');
        DimensionFont_reduce.each(function(el) { DimensionFontReduceContainerInit(el); });


        //***************************************************** PROCEDURA SLIDER SCORRIMENTO TESTO
        var Slider = $$('.cssDivWin_sliderContainer');
        Slider.each(function(el) { SliderContainerInit(el); });
    }


    //***************************************************** PROCEDURA INIZIALIZZAZIONI VARIABILI ASSOCIATE ALLE WIN
    function WinInit(el) 
    {

        var arrayParametri = new Array();

        //******** indice
        arrayParametri[constWinStep_Indice] = countWin;
        //******** id
        arrayParametri[constWinStep_Id] = $(el).getProperty('id');
        //******** larghezza
        arrayParametri[constWinStep_Width] = $(el).getStyle('width');
        //******** altezza
        arrayParametri[constWinStep_Height] = $(el).getStyle('height'); //String(h) + 'px'; 
        //******** posizione top
        arrayParametri[constWinStep_Top] = $(el).getStyle('top');
        //******** posizione left
        arrayParametri[constWinStep_Left] = $(el).getStyle('left');
        //******** stato ingrandisci
        arrayParametri[constWinStep_StateEnlarge] = 'normal';
        //******** oggetto drag
        arrayParametri[constWinStep_ObjectDrag] = null;
        //******** oggetto d'ancoraggio del drag
        arrayParametri[constWinStep_HandlerDrag] = null;
        //******** oggetto resize
        arrayParametri[constWinStep_ObjectResize] = null;
        //******** oggetto d'ancoraggio del resize
        arrayParametri[constWinStep_HandlerResize] = null;
        //******** oggetto reduce
        arrayParametri[constWinStep_ObjectReduce] = null;
        //******** oggetto enlarge
        arrayParametri[constWinStep_ObjectEnlarge] = null;
        //******** oggetto close
        arrayParametri[constWinStep_ObjectClose] = null;
        

        var ResizeWindow_Timer; //timer per il resize dell'oggetto window (inteso come oggetto "browser").
        var ResizeWindow_FxTimer_Enable = false; //timer per il resize dell'oggetto window (inteso come oggetto "browser").
        var ResizeWindow_Enable = true; //variabile booleana per il controllo del resize a tempo.
        arrayParametri[constWinStep_ObjectTimerResize] = ResizeWindow_Timer;
        arrayParametri[constWinStep_BooleanFxTimerResize] = ResizeWindow_FxTimer_Enable;
        arrayParametri[constWinStep_BooleanTimerResize] = ResizeWindow_Enable;

        //******** oggetto slider_container
        arrayParametri[constWinStep_ObjectSliderContainer] = null;
        //******** oggetto slider_handler
        arrayParametri[constWinStep_ObjectSliderHandler] = null;
        //******** oggetto slider
        arrayParametri[constWinStep_ObjectSlider] = null;

        //******** oggetto resize font aumenta
        arrayParametri[constWinStep_ObjectEnlargeFont] = null;
        //******** oggetto resize font riduci
        arrayParametri[constWinStep_ObjectReduceFont] = null;
        
        
        win[countWin] = arrayParametri;
        
        el.addEvent('click', function(event) 
        {
            indexLevel++;
            el.style.zIndex = indexLevel;
        });
        countWin ++;
        
        
    }
    
    
    //***************************************************** PROCEDURA PER DRAG & DROP
    function dragContainerInit(el) {

        var Nodo = NavigaNodi(el, 'cssDivWin');
        var indice = RicavaValoreWin($(Nodo).getProperty('id'), 'indice')

        var dragContainerOptions = {
            handle: el,
            onStart: function() {
                var Nodo = NavigaNodi(el, 'cssDivWin');
                var indice = RicavaValoreWin($(Nodo).getProperty('id'), 'indice')
                
                Nodo.setOpacity(.5);
                indexLevel++;
                Nodo.style.zIndex = indexLevel;
                //var StatoRiduci = RicavaValoreWin($(Nodo).getProperty('id'),'riduci')
                if (win[indice][constWinStep_StateEnlarge] == 'normal') 
                {
                    if (win[indice][constWinStep_ObjectReduce])
                        win[indice][constWinStep_ObjectReduce].setOpacity(1); 
                }
                GestisciTrasparenze(indice, 1);
            } .bind(this),

            onComplete: function() {
                var Nodo = NavigaNodi(el, 'cssDivWin');
                var indice = RicavaValoreWin($(Nodo).getProperty('id'), 'indice')
                Nodo.setOpacity(1);
                //var StatoRiduci = RicavaValoreWin($(Nodo).getProperty('id'), 'riduci')
                if (win[indice][constWinStep_StateEnlarge] == 'normal') 
                {
                    if (win[indice][constWinStep_ObjectReduce])
                        win[indice][constWinStep_ObjectReduce].setOpacity(.5); 
                }
                GestisciTrasparenze(indice, .5);
            } .bind(this)
        };


        if (Nodo) 
        {
            var indice = RicavaValoreWin($(Nodo).getProperty('id'), 'indice')
            //ATTIVO IL DRAG
            win[indice][constWinStep_ObjectDrag] = new Drag($(Nodo), dragContainerOptions).attach();
            //SALVO L'OGGETTO DEL DRAG
            win[indice][constWinStep_HandlerDrag] = el;
            //SETTO IL CURSORE
            win[indice][constWinStep_HandlerDrag].style.cursor = 'move';

            //************* EVENTUALI AZIONI NEGLI EVENTI MOUSEUP E MOUSEDOWN
            /*el.addEvent('mousedown', function(event) {
            
            });
            el.addEvent('mouseup', function(event) {
               
            });*/
            
        }
        
    }


    //***************************************************** PROCEDURA RIDIMENSIONA MANUALE
    function ResizeContainerInit(el) {

        var Nodo;
        Nodo = NavigaNodi(el, 'cssDivWin');

        
        
        if (Nodo) 
        {

            var indice = RicavaValoreWin($(Nodo).getProperty('id'), 'indice');

            win[indice][constWinStep_HandlerResize] = el;
            win[indice][constWinStep_HandlerResize].setOpacity(.5);
            win[indice][constWinStep_HandlerResize].style.cursor = 'nw-resize';
            
            var w = RicavaValoreWin($(Nodo).getProperty('id'), 'width');
            var h = RicavaValoreWin($(Nodo).getProperty('id'), 'height');
            var ww = parseInt(w, 10);
            var hh = parseInt(h, 10);
            //ATTIVO IL RESIZE
            win[indice][constWinStep_ObjectResize] = new $(Nodo).makeResizable({ 
                onComplete: function(el) 
                {
                    var indice = RicavaValoreWin($(Nodo).getProperty('id'), 'indice');
                    win[indice][constWinStep_HandlerResize].setOpacity(.5);

                    GeneraSlider(Nodo);
                },
                onDrag: function(el)
                {
                    win[indice][constWinStep_HandlerResize].setOpacity(1);
                },
                'limit': { x: [ww, (ww * 2)], y: [hh, (hh * 2)] }, handle: $$(el) 
            });
            
            //SETTO IL CURSORE

            el.addEvent('mouseover', function(event) 
            {
                var Nodo;
                Nodo = NavigaNodi(el, 'cssDivWin');
                if (Nodo) {
                    var StatoIngrandisci = RicavaValoreWin($(Nodo).getProperty('id'), 'ingrandisci')
                    if (StatoIngrandisci == 'normal') {
                        el.setOpacity(1); 
                    }
                }
            });

            el.addEvent('mouseout', function(event) { el.setOpacity(.5); });
            
            el.addEvent('mousedown', function(event) 
            {
                var Nodo;
                Nodo = NavigaNodi(el, 'cssDivWin');
                indexLevel++;
                $(Nodo).setStyle('zIndex', indexLevel);

                if (Nodo) {
                    var StatoIngrandisci = RicavaValoreWin($(Nodo).getProperty('id'), 'ingrandisci')
                    if (StatoIngrandisci == 'normal') {
                        win[indice][constWinStep_HandlerResize].setOpacity(1);
                    }
                }
                
            });
            el.addEvent('mouseup', function(event) { win[indice][constWinStep_HandlerResize].setOpacity(.5); });
            
        }
    }

    //***************************************************** PROCEDURA CHIUDI
    function CloseContainerInit(el) {
    
        var Nodo;
        Nodo = NavigaNodi(el, 'cssDivWin');
        var indice = RicavaValoreWin($(Nodo).getProperty('id'), 'indice');
        win[indice][constWinStep_ObjectClose] = el;
        win[indice][constWinStep_ObjectClose].style.cursor = 'pointer';
        win[indice][constWinStep_ObjectClose].setOpacity(.5);
        
         
        
        el.addEvent('click', function(event) 
        {
            event.stopPropagation();
            
            var Nodo;
            Nodo = NavigaNodi(el, 'cssDivWin');
            if (Nodo)
            {
                var myEffect = new Fx.Morph(Nodo, { duration: '500', transition: Fx.Transitions.Sine.easeOut,
                
                 onComplete: function(el) {
                    Nodo = NavigaNodi(el, 'cssDivWin');
                    Nodo.setStyle('visibility', 'hidden');
                    Nodo.setStyle('display', 'none');
                    
                    //********************** 
                    //********************** TROVALO
                    //********************** 
                    /*var NodoParent = Nodo.getParent();
                    var htmlReOpen = '';
                    
                    htmlReOpen = '<div style="position:fixed;left:0px;bottom:0px;"></div>'
                    NodoParent.innerHTML(htmlReOpen);*/
                    
                    /*Nodo.setStyle('top', 'auto');
                    Nodo.setStyle('right', 'auto');
                    Nodo.setStyle('bottom', '0px');
                    Nodo.setStyle('left', '0px');
                    Nodo.setStyle('position', 'fixed');
                    Nodo.setStyle('visibility', 'visible');
                    Nodo.setStyle('opacity', '1');*/
                    
                    }
                });
                myEffect.start({ 'opacity': [1, 0] });
               /* Nodo.setStyle('visibility', 'hidden');
                Nodo.setStyle('display', 'none');*/
            }
        });
        
        el.addEvent('mouseover', function(event) { el.setOpacity(1); });
        el.addEvent('mouseout', function(event) { el.setOpacity(.5); });
    }
    
    
    //***************************************************** PROCEDURA INGRANDISCI A TUTTO SCHERMO
    function EnlargeContainerInit(el) {
        var Nodo;
        Nodo = NavigaNodi(el, 'cssDivWin');
        var indice = RicavaValoreWin($(Nodo).getProperty('id'), 'indice');
        win[indice][constWinStep_ObjectEnlarge] = el;
        win[indice][constWinStep_ObjectEnlarge].style.cursor = 'pointer';
        win[indice][constWinStep_ObjectEnlarge].setOpacity(.5);
        el.addEvent('click', function(event) 
        {
            var Nodo;
            Nodo = NavigaNodi(el, 'cssDivWin');

            if (Nodo) {
                
                
                var StatoIngrandisci = RicavaValoreWin($(Nodo).getProperty('id'),'ingrandisci')
                if (StatoIngrandisci == 'normal')
                {
                    el.setOpacity(1);
                    indexLevel++;
                    //TOLGO IL DRAG
                    var indice = RicavaValoreWin($(Nodo).getProperty('id'), 'indice')
                    win[indice][constWinStep_ObjectDrag].detach();
                    win[indice][constWinStep_HandlerDrag].style.cursor = 'default';
                    if (win[indice][constWinStep_ObjectResize])
                    {
                        win[indice][constWinStep_ObjectResize].detach();
                        win[indice][constWinStep_HandlerResize].style.cursor = 'default';
                    }
                    if (win[indice][constWinStep_ObjectReduce])
                        win[indice][constWinStep_ObjectReduce].style.cursor = 'default';

                    //CALCOLO LA POSIZIONE ASSOLUTA RISPETTO AL LAYOUT
                    var leftPos;
                    leftPos = -TrovaCoordinateZero_X(Nodo);
                    leftPos = leftPos + 10;
                    leftPos = leftPos + window.getScrollLeft();

                    var topPos;
                    topPos = -TrovaCoordinateZero_Y(Nodo);
                    topPos = topPos + 10;
                    topPos = topPos + window.getScrollTop();
                    
                    $(Nodo).setStyle('zIndex', indexLevel);
                    SettaValoreWin($(Nodo).getProperty('id'), 'ingrandisci', 'enlarge');
                    SettaValoreWin($(Nodo).getProperty('id'), 'width', Nodo.getStyle('width'));
                    SettaValoreWin($(Nodo).getProperty('id'), 'height', Nodo.getStyle('height'));
                    SettaValoreWin($(Nodo).getProperty('id'), 'top', Nodo.getStyle('top'));
                    SettaValoreWin($(Nodo).getProperty('id'), 'left', Nodo.getStyle('left'));
                    
                    var winSize = window.getSize();
                    //PER PROBLEMI DI PADDING CON EXPLORER CONTROLLO IL BROWSER
                    if (BrowserDetect.browser == 'Explorer') {
                        //var h = winSize.y - 20;
                        var h = winSize.y - 65;
                        var w = winSize.x - 20;
                    }
                    else {
                        //var h = winSize.y - 50;
                        var h = winSize.y - 65;
                        var w = winSize.x - 20;
                    }
                    
                    
                    var myEffect = new Fx.Morph(Nodo, { duration: 'long', transition: Fx.Transitions.Sine.easeOut,

                        onStart: function() {
                            
                            
                            
                            function ResizeScrollAnimation(){
                                //PARTENZA TIMER
                                win[indice][constWinStep_BooleanTimerResize] = false;

                                win[indice][constWinStep_ObjectTimerResize] = setInterval(function() {
                                    if (win[indice][constWinStep_BooleanTimerResize] == false) {
                                        var leftPos;
                                        leftPos = -TrovaCoordinateZero_X(Nodo);
                                        leftPos = leftPos + 10;
                                        leftPos = leftPos + window.getScrollLeft();

                                        var topPos;
                                        topPos = -TrovaCoordinateZero_Y(Nodo);
                                        topPos = topPos + 10;
                                        topPos = topPos + window.getScrollTop();

                                        var winSize = window.getSize();
                                        //PER PROBLEMI DI PADDING CON EXPLORER CONTROLLO IL BROWSER
                                        if (BrowserDetect.browser == 'Explorer') {
                                            //var h = winSize.y - 20;
                                            var h = winSize.y - 65;
                                            var w = winSize.x - 20;
                                        }
                                        else {
                                            //var h = winSize.y - 50;
                                            var h = winSize.y - 65;
                                            var w = winSize.x - 20;
                                        }
                                        //win[indice][constWinStep_BooleanFxTimerResize] = true;

                                        if (win[indice][constWinStep_BooleanFxTimerResize] == false) {
                                            var myEffect = new Fx.Morph(Nodo, { duration: '750', transition: Fx.Transitions.Sine.easeOut,
                                                onStart: function() {
                                                    win[indice][constWinStep_BooleanFxTimerResize] = true;
                                                },
                                                onComplete: function() {
                                                    win[indice][constWinStep_BooleanFxTimerResize] = false;
                                                    GeneraSlider(Nodo);
                                                }
                                            });
                                            //myEffect.cancel();
                                            myEffect.start({ 'height': [h], 'width': [w], 'top': String(topPos) + 'px', 'left': String(leftPos) + 'px' });
                                        }
                                    }

                                }, 500);
                            
                            }
                            
                            
                            window.addEvent('scroll', function(event) {
                                var indice = RicavaValoreWin($(Nodo).getProperty('id'), 'indice')

                                if (win[indice][constWinStep_BooleanTimerResize] == true) {
                                    ResizeScrollAnimation();
                                }
                            });


                            $(window).addEvent('resize', function(event) {
                                var indice = RicavaValoreWin($(Nodo).getProperty('id'), 'indice')

                                if (win[indice][constWinStep_BooleanTimerResize] == true) {
                                    ResizeScrollAnimation();
                                }

                            });
                            GeneraSlider(Nodo);
                        }
                    });
                    myEffect.start({ 'height': [h], 'width': [w], 'top': String(topPos) + 'px', 'left': String(leftPos) + 'px' });
                }
                else if (StatoIngrandisci == 'enlarge')
                {
                    var indice = RicavaValoreWin($(Nodo).getProperty('id'), 'indice')
                    $(window).removeEvents('resize');
                    $(window).removeEvents('scroll');
                    win[indice][constWinStep_BooleanTimerResize] = true;
                    clearTimeout(win[indice][constWinStep_ObjectTimerResize]);
                    
                    el.setOpacity(.5);
                    //RIATTIVO IL DRAG
                    var indice = RicavaValoreWin($(Nodo).getProperty('id'), 'indice')
                    win[indice][constWinStep_ObjectDrag].attach();
                    win[indice][constWinStep_HandlerDrag].style.cursor = 'move';
                    if (win[indice][constWinStep_ObjectResize])
                    {
                        win[indice][constWinStep_ObjectResize].attach();
                        win[indice][constWinStep_HandlerResize].style.cursor = 'nw-resize';
                    }
                    if (win[indice][constWinStep_ObjectReduce])
                        win[indice][constWinStep_ObjectReduce].style.cursor = 'pointer';
                    
                    SettaValoreWin($(Nodo).getProperty('id'), 'ingrandisci','normal')
                    var w = RicavaValoreWin($(Nodo).getProperty('id'), 'width')
                    var h = RicavaValoreWin($(Nodo).getProperty('id'), 'height')
                    var t = RicavaValoreWin($(Nodo).getProperty('id'), 'top')
                    var l = RicavaValoreWin($(Nodo).getProperty('id'), 'left')

                    var myEffect = new Fx.Morph(Nodo, { duration: 'long', transition: Fx.Transitions.Sine.easeOut,
                        onComplete: function() {
                            GeneraSlider(Nodo);
                        }
                    });
                    myEffect.start({ 'height': [h], 'width': [w],'top':[t],'left':[l]});

                }
            }
            event.stopPropagation();
            return false;
        });
        el.addEvent('mouseover', function(event) {
            
            var Nodo;
            Nodo = NavigaNodi(el, 'cssDivWin');
            if (Nodo) {
                var StatoIngrandisci = RicavaValoreWin($(Nodo).getProperty('id'), 'ingrandisci')
                if (StatoIngrandisci == 'normal') {
                    el.setOpacity(1);
                }
            }

        });
        el.addEvent('mouseout', function(event) {
            var Nodo;
            Nodo = NavigaNodi(el, 'cssDivWin');
            if (Nodo) {
                var StatoIngrandisci = RicavaValoreWin($(Nodo).getProperty('id'), 'ingrandisci')
                if (StatoIngrandisci == 'normal') {
                    el.setOpacity(.5);
                }
            }
        });
    }


    //***************************************************** PROCEDURA RIDUCI 
    function ReduceContainerInit(el) {
        var Nodo;
        Nodo = NavigaNodi(el, 'cssDivWin');
        var indice = RicavaValoreWin($(Nodo).getProperty('id'), 'indice');
        win[indice][constWinStep_ObjectReduce] = el;
        win[indice][constWinStep_ObjectReduce].style.cursor = 'pointer';
        win[indice][constWinStep_ObjectReduce].setOpacity(.5);
        
        
        el.addEvent('click', function(event) 
        {
            var Nodo;
            Nodo = NavigaNodi(el, 'cssDivWin');

            if (Nodo) 
            {
                var StatoRiduci = RicavaValoreWin($(Nodo).getProperty('id'),'riduci')
                if (StatoRiduci == 'normal')
                {
                    el.setOpacity(1);
                    indexLevel++;
                    //TOLGO IL DRAG
                    var indice = RicavaValoreWin($(Nodo).getProperty('id'), 'indice')
                    if (win[indice][constWinStep_ObjectResize])
                    {
                        win[indice][constWinStep_ObjectResize].detach();
                        win[indice][constWinStep_HandlerResize].style.cursor = 'default';
                    }
                    if(win[indice][constWinStep_ObjectEnlarge])
                        win[indice][constWinStep_ObjectEnlarge].style.cursor = 'default';
                    
                    $(Nodo).setStyle('zIndex', indexLevel);
                    SettaValoreWin($(Nodo).getProperty('id'), 'riduci', 'reduce');
                    SettaValoreWin($(Nodo).getProperty('id'), 'width', Nodo.getStyle('width'));
                    SettaValoreWin($(Nodo).getProperty('id'), 'height', Nodo.getStyle('height'));
                    //SettaValoreWin($(Nodo).getProperty('id'), 'top', Nodo.getStyle('top'));
                    //SettaValoreWin($(Nodo).getProperty('id'), 'left', Nodo.getStyle('left'));
                    
                    //PER PROBLEMI DI PADDING CON EXPLORER CONTROLLO IL BROWSER
                    if (BrowserDetect.browser == 'Explorer')
                    //{ var h = '31px'; }
                    { var h = '26px'; }
                    else 
                    { var h = '26px'; }
                    
                    var w = '200px';
                    
                    var myEffect = new Fx.Morph(Nodo, { duration: 'long', transition: Fx.Transitions.Sine.easeOut,
                        onStart: function(Nodo) {
                            var indice = RicavaValoreWin($(Nodo).getProperty('id'), 'indice');
                            win[indice][constWinStep_ObjectSliderHandler].setStyle('visibility', 'hidden');
                            if ((win[indice][constWinStep_ObjectEnlargeFont]) && (win[indice][constWinStep_ObjectReduceFont]))
                            {
                                win[indice][constWinStep_ObjectEnlargeFont].style.cursor = 'default';
                                win[indice][constWinStep_ObjectReduceFont].style.cursor = 'default';
                                win[indice][constWinStep_ObjectEnlargeFont].setStyle('visibility','hidden');
                                win[indice][constWinStep_ObjectReduceFont].setStyle('visibility', 'hidden');
                            }
                        }
                    
                     });

                    //ridimensiono solo l'altezza
                    //***********************>>>> myEffect.start({ 'height': [h], 'width': [w] });
                    myEffect.start({ 'height': [h]});
                    
                    
                }
                else if (StatoRiduci == 'reduce')
                {
                    el.setOpacity(.5);
                    //RIATTIVO IL DRAG
                    var indice = RicavaValoreWin($(Nodo).getProperty('id'), 'indice')
                    //win[indice][constWinStep_ObjectDrag].attach();
                    //win[indice][constWinStep_HandlerDrag].style.cursor = 'move';
                    if (win[indice][constWinStep_ObjectResize])
                    {
                        win[indice][constWinStep_ObjectResize].attach();
                        win[indice][constWinStep_HandlerResize].style.cursor = 'nw-resize';
                    }
                    if(win[indice][constWinStep_ObjectEnlarge])
                        win[indice][constWinStep_ObjectEnlarge].style.cursor = 'pointer';

                    SettaValoreWin($(Nodo).getProperty('id'), 'riduci', 'normal')
                    var w = RicavaValoreWin($(Nodo).getProperty('id'), 'width')
                    var h = RicavaValoreWin($(Nodo).getProperty('id'), 'height')
                    //var t = RicavaValoreWin($(Nodo).getProperty('id'), 'top')
                    //var l = RicavaValoreWin($(Nodo).getProperty('id'), 'left')

                    var myEffect = new Fx.Morph(Nodo, { duration: 'long', transition: Fx.Transitions.Sine.easeOut,
                        onComplete: function(Nodo) {
                            var indice = RicavaValoreWin($(Nodo).getProperty('id'), 'indice');
                            GeneraSlider(Nodo);
                            //win[indice][constWinStep_ObjectSliderHandler].setStyle('visibility', 'visible');
                            if ((win[indice][constWinStep_ObjectEnlargeFont]) && (win[indice][constWinStep_ObjectReduceFont]))
                            {
                                win[indice][constWinStep_ObjectEnlargeFont].style.cursor = 'pointer';
                                win[indice][constWinStep_ObjectReduceFont].style.cursor = 'pointer';
                                win[indice][constWinStep_ObjectEnlargeFont].setStyle('visibility', 'visible');
                                win[indice][constWinStep_ObjectReduceFont].setStyle('visibility', 'visible');
                            }
                        } 
                    });
                    myEffect.start({ 'height': [h], 'width': [w]});
                }
            }
            event.stopPropagation();
            return false;
        });
        el.addEvent('mouseover', function(event) {

            var Nodo;
            Nodo = NavigaNodi(el, 'cssDivWin');
            if (Nodo) {
                var StatoIngrandisci = RicavaValoreWin($(Nodo).getProperty('id'), 'ingrandisci')
                if (StatoIngrandisci == 'normal') {
                    el.setOpacity(1);
                }
            }

        });
        el.addEvent('mouseout', function(event) {
            var Nodo;
            Nodo = NavigaNodi(el, 'cssDivWin');
            if (Nodo) {
                var StatoIngrandisci = RicavaValoreWin($(Nodo).getProperty('id'), 'ingrandisci')
                if (StatoIngrandisci == 'normal') {
                    el.setOpacity(.5);
                }
            }
        });

    }


    //***************************************************** PROCEDURA SETTA DIMENSIONI FONT INGRANDISCI
    function DimensionFontEnlargeContainerInit(el) {
        var Nodo;
        Nodo = NavigaNodi(el, 'cssDivWin');
        var indice = RicavaValoreWin($(Nodo).getProperty('id'), 'indice')
        
        win[indice][constWinStep_ObjectEnlargeFont] = el;
        win[indice][constWinStep_ObjectEnlargeFont].setOpacity(.5);
        win[indice][constWinStep_ObjectEnlargeFont].style.cursor = 'pointer';
        el.addEvent('mouseover', function(event) {
            var Nodo;
            Nodo = NavigaNodi(this, 'cssDivWin');

            var StatoRiduci = RicavaValoreWin($(Nodo).getProperty('id'), 'riduci')
            if (StatoRiduci != 'reduce')
                win[indice][constWinStep_ObjectEnlargeFont].setOpacity(1);
        });
        el.addEvent('mouseout', function(event) {
            var Nodo;
            Nodo = NavigaNodi(this, 'cssDivWin');

            var StatoRiduci = RicavaValoreWin($(Nodo).getProperty('id'), 'riduci')
            if (StatoRiduci != 'reduce')
                win[indice][constWinStep_ObjectEnlargeFont].setOpacity(.5);
        });
        el.addEvent('click', function(event) {
            var Nodo;
            Nodo = NavigaNodi(this, 'cssDivWin');

            var StatoRiduci = RicavaValoreWin($(Nodo).getProperty('id'), 'riduci')
            if (StatoRiduci != 'reduce')
            {
                var font;
                var unitaMisura;
                unitaMisura = $(Nodo).getStyle('font-size');
                font = parseInt(unitaMisura, 10);
                unitaMisura = unitaMisura.replace(String(font),'');
                font = font + 1;
                if (font > 24)
                { font = 24; }
                $(Nodo).setStyle('font-size', String(font) + unitaMisura);
                GeneraSlider(Nodo);
            }
        });
    }


    //***************************************************** PROCEDURA SETTA DIMENSIONI FONT RIDUCI
    function DimensionFontReduceContainerInit(el) {
        var Nodo;
        Nodo = NavigaNodi(el, 'cssDivWin');
        var indice = RicavaValoreWin($(Nodo).getProperty('id'), 'indice')

        win[indice][constWinStep_ObjectReduceFont] = el;
        win[indice][constWinStep_ObjectReduceFont].setOpacity(.5);
        win[indice][constWinStep_ObjectReduceFont].style.cursor = 'pointer';
        el.addEvent('mouseover', function(event) {
            var Nodo;
            Nodo = NavigaNodi(this, 'cssDivWin');
            
            var StatoRiduci = RicavaValoreWin($(Nodo).getProperty('id'), 'riduci')
            if (StatoRiduci != 'reduce')
                win[indice][constWinStep_ObjectReduceFont].setOpacity(1);
        });
        el.addEvent('mouseout', function(event) {
            var Nodo;
            Nodo = NavigaNodi(this, 'cssDivWin');

            var StatoRiduci = RicavaValoreWin($(Nodo).getProperty('id'), 'riduci')
            if (StatoRiduci != 'reduce')
                win[indice][constWinStep_ObjectReduceFont].setOpacity(.5);
        });
        el.addEvent('click', function(event) {
            var Nodo;
            Nodo = NavigaNodi(this, 'cssDivWin');
            
            var StatoRiduci = RicavaValoreWin($(Nodo).getProperty('id'), 'riduci')
            if (StatoRiduci != 'reduce')
            {
                var font;
                var unitaMisura;
                unitaMisura = $(Nodo).getStyle('font-size');
                font = parseInt(unitaMisura, 10);
                unitaMisura = unitaMisura.replace(String(font), '');
                font = font - 1;
                if (font < 8) 
                {font = 8;}
                $(Nodo).setStyle('font-size', String(font) + unitaMisura);
                GeneraSlider(Nodo);
            }
        });
    }


    //***************************************************** PROCEDURA SLIDER SCORRIMENTO TESTO
    function SliderContainerInit(el)
    {
        var Nodo;
        Nodo = NavigaNodi(el, 'cssDivWin');
        var indice = RicavaValoreWin($(Nodo).getProperty('id'), 'indice')
        
        var myChilds = $(el).getElements('div:only-child');
        //CONTAINER SLIDER
        win[indice][constWinStep_ObjectSliderContainer] = $(el);
        
        //HANDLER SLIDER
        win[indice][constWinStep_ObjectSliderHandler] = myChilds[0];

        GeneraSlider(Nodo);
        
    }


    //***************************************************** PROCEDURA GENERA SLIDER
    function GeneraSlider(Nodo)
    {
        
        var indice = RicavaValoreWin($(Nodo).getProperty('id'), 'indice')

        if (!win[indice][constWinStep_ObjectSliderContainer])
            return;
        
        
        var heightSlider = parseInt($(Nodo).getStyle('height'), 10) - 40;
        if (heightSlider <= 0)
        {
            heightSlider = 0;
        }
        win[indice][constWinStep_ObjectSliderContainer].setStyle('height', String(heightSlider) + 'px');


        var AreaCorpo_container = $(Nodo).getElements('.cssDivWin_center_center');
        //var AreaCorpo_container = $(Nodo).getElements('.cssDivWin_corpo_container');
        var AreaCorpo_testo = $(Nodo).getElements('.cssDivWin_corpo');

        var AreaCorpo_container_wh = AreaCorpo_container[0].getSize();
        var AreaCorpo_container_height = parseInt(AreaCorpo_container_wh.y, 10) - 40;

        var AreaCorpo_testo_wh = AreaCorpo_testo[0].getSize();
        var AreaCorpo_testo_height = parseInt(AreaCorpo_testo_wh.y, 10);

        var Steps = (AreaCorpo_testo_height - AreaCorpo_container_height);
        //log('write', 'TESTO: ' + String(AreaCorpo_testo_height) + ' #meno# CORPO:' + String(AreaCorpo_container_height)); 
        
        
        if (Steps > 0) {
            win[indice][constWinStep_ObjectSliderHandler].setOpacity(.5);
            win[indice][constWinStep_ObjectSliderHandler].setStyle('visibility', 'visible');
            win[indice][constWinStep_ObjectSliderHandler].style.cursor = 'pointer';
            //OGGETTO SLIDER
            if (win[indice][constWinStep_ObjectSlider] != null) 
            {
                win[indice][constWinStep_ObjectSlider].steps = Steps;
                //win[indice][constWinStep_ObjectSlider].set(0);


                win[indice][constWinStep_ObjectSlider].full = win[indice][constWinStep_ObjectSlider].element['offsetHeight'] - win[indice][constWinStep_ObjectSlider].knob['offsetHeight'];                                    // new height of scrollerElement - knobHeight
                win[indice][constWinStep_ObjectSlider].stepSize = Math.abs(Steps) / win[indice][constWinStep_ObjectSlider].steps;                                                              // new StepSize
                win[indice][constWinStep_ObjectSlider].stepWidth = win[indice][constWinStep_ObjectSlider].stepSize * win[indice][constWinStep_ObjectSlider].full / Math.abs(Steps);                                 // new stepWidth
                win[indice][constWinStep_ObjectSlider].drag.options.limit['y'] = [0, win[indice][constWinStep_ObjectSlider].element['offsetHeight'] - win[indice][constWinStep_ObjectSlider].knob['offsetHeight']];  // and the most important Change: new dragLimit: same value as .full
                
            }
            else 
            {
                win[indice][constWinStep_ObjectSlider] = new Slider(win[indice][constWinStep_ObjectSliderContainer], win[indice][constWinStep_ObjectSliderHandler], {
                    steps: Steps,
                    mode: 'vertical',
                    onChange: function(step) {
                        AreaCorpo_testo[0].setStyle('top', '-' + String(step) + 'px');
                        //log('add','-' + String(step) + 'px');
                    }
                }).set(0);
            }
        }
        else {
            if (win[indice][constWinStep_ObjectSlider] != null) 
            {
                win[indice][constWinStep_ObjectSlider].set(0);
                win[indice][constWinStep_ObjectSlider].stepSize = 0;
                
            }
            win[indice][constWinStep_ObjectSliderHandler].setOpacity(.0);
            win[indice][constWinStep_ObjectSliderHandler].setStyle('visibility', 'hidden');
            win[indice][constWinStep_ObjectSliderHandler].style.cursor = 'default';
        }
    }


    //***************************************************** PROCEDURA GESTIONE TRASPARENZE TASTI
    function GestisciTrasparenze(indice, alpha,hidden) {
        if (hidden==0)
        {
            if (win[indice][constWinStep_HandlerResize] != null)
                win[indice][constWinStep_HandlerResize].setStyle('visibility', 'hidden');
            if (win[indice][constWinStep_ObjectReduce] != null)
                win[indice][constWinStep_ObjectReduce].setStyle('visibility', 'hidden');
            if (win[indice][constWinStep_ObjectEnlarge] != null)
                win[indice][constWinStep_ObjectEnlarge].setStyle('visibility', 'hidden');
            if (win[indice][constWinStep_ObjectClose] != null)
                win[indice][constWinStep_ObjectClose].setStyle('visibility', 'hidden');
            if (win[indice][constWinStep_ObjectSliderHandler] != null)
                win[indice][constWinStep_ObjectSliderHandler].setStyle('visibility', 'hidden');
            if (win[indice][constWinStep_ObjectEnlargeFont] != null)
                win[indice][constWinStep_ObjectEnlargeFont].setStyle('visibility', 'hidden');
            if (win[indice][constWinStep_ObjectReduceFont] != null)
                win[indice][constWinStep_ObjectReduceFont].setStyle('visibility', 'hidden');
        }
        else if (hidden==1)
        {
            if (win[indice][constWinStep_HandlerResize] != null)
                win[indice][constWinStep_HandlerResize].setStyle('visibility', 'visible');
            if (win[indice][constWinStep_ObjectReduce] != null)
                win[indice][constWinStep_ObjectReduce].setStyle('visibility', 'visible');
            if (win[indice][constWinStep_ObjectEnlarge] != null)
                win[indice][constWinStep_ObjectEnlarge].setStyle('visibility', 'visible');
            if (win[indice][constWinStep_ObjectClose] != null)
                win[indice][constWinStep_ObjectClose].setStyle('visibility', 'visible');
            if (win[indice][constWinStep_ObjectSliderHandler] != null)
                win[indice][constWinStep_ObjectSliderHandler].setStyle('visibility', 'visible');
            if (win[indice][constWinStep_ObjectEnlargeFont] != null)
                win[indice][constWinStep_ObjectEnlargeFont].setStyle('visibility', 'visible');
            if (win[indice][constWinStep_ObjectReduceFont] != null)
                win[indice][constWinStep_ObjectReduceFont].setStyle('visibility', 'visible');
        }
        else
        {
            if (win[indice][constWinStep_HandlerResize] != null)
                win[indice][constWinStep_HandlerResize].setOpacity(alpha);
                
            if (win[indice][constWinStep_StateEnlarge] != 'reduce') {
                if (win[indice][constWinStep_ObjectReduce] != null)
                    win[indice][constWinStep_ObjectReduce].setOpacity(alpha);
            }
                    
            if (win[indice][constWinStep_ObjectEnlarge] != null)
                win[indice][constWinStep_ObjectEnlarge].setOpacity(alpha);
            if (win[indice][constWinStep_ObjectClose] != null)
                win[indice][constWinStep_ObjectClose].setOpacity(alpha);
            if (win[indice][constWinStep_ObjectSliderHandler] != null)
                win[indice][constWinStep_ObjectSliderHandler].setOpacity(alpha);
            if (win[indice][constWinStep_ObjectEnlargeFont] != null)
                win[indice][constWinStep_ObjectEnlargeFont].setOpacity(alpha);
            if (win[indice][constWinStep_ObjectReduceFont] != null)
                win[indice][constWinStep_ObjectReduceFont].setOpacity(alpha);
        }
    }

    //***************************************************** 
    //***************************************************** PROCEDURE GENERICHE
    //*****************************************************
    

    //***************************************************** PROCEDURA TROVA OGGETTO WIN DA OGGETTO INTERNO ALLA WIN
    function NavigaNodi(nodo, trovaClasse)
    {
        var ReturnNodo;
        if (!nodo) return;

        if ($(nodo).getProperty('class') == trovaClasse) {
            ReturnNodo = nodo;
            return ReturnNodo;
        }
        else
        {
            var parentCrossBrowser = nodo.parentNode || nodo.parent;
            ReturnNodo = NavigaNodi(parentCrossBrowser, trovaClasse);
            if (ReturnNodo)
            {
                return ReturnNodo;
            }
        }

    }


    //***************************************************** PROCEDURA TROVA COORDINATA X IN PIXEL DELLA WIN RELATIVA ALL OGGETTO
    function TrovaCoordinateZero_X(nodo) {
        var parentDiv = nodo.getParent('div');

        if (parentDiv)
        {
            var Posizione;
            Posizione = $(parentDiv).getStyle('position');
            if (Posizione != 'static')
            {
                var LeftPositionReturn = 0;
                var coord = $(parentDiv).getPosition();
                
                LeftPositionReturn = TrovaCoordinateZero_X(parentDiv);

                LeftPositionReturn = LeftPositionReturn + coord.x;
                return LeftPositionReturn;
            }
            else { return 0; }
        }
        else { return 0; }
    }


    //***************************************************** PROCEDURA TROVA COORDINATA Y IN PIXEL DELLA WIN RELATIVA ALL OGGETTO
    function TrovaCoordinateZero_Y(nodo) {
        var parentDiv = nodo.getParent('div');

        if (parentDiv) {
            var Posizione;
            Posizione = $(parentDiv).getStyle('position');
            if (Posizione != 'static') {
                var TopPositionReturn = 0;
                var coord = $(parentDiv).getPosition();
                
                TopPositionReturn = TrovaCoordinateZero_Y(parentDiv);

                TopPositionReturn = TopPositionReturn + coord.y;
                return TopPositionReturn;
            }
            else { return 0; }
        }
        else { return 0; }
    }


    //***************************************************** PROCEDURA TROVA VALORI OGGETTO MATRICE MULTIDIMENSIONE WIN
    function RicavaValoreWin(id,campo)
    {
        for(var i=0;i<win.length;i++)
        {
            var arrVal = win[i];
            if (arrVal[constWinStep_Id] == id)
            {
                if (campo == 'indice') {
                    return arrVal[constWinStep_Indice];
                }
                if (campo == 'id')
                {
                    return arrVal[constWinStep_Id];
                }
                if (campo == 'width') {
                    return arrVal[constWinStep_Width];
                }
                if (campo == 'height') {
                    return arrVal[constWinStep_Height];
                }
                if (campo == 'top') {
                    return arrVal[constWinStep_Top];
                }
                if (campo == 'left') {
                    return arrVal[constWinStep_Left];
                }
                if ((campo == 'ingrandisci') || (campo == 'riduci')) {
                    return arrVal[constWinStep_StateEnlarge];
                }
                if (campo == 'drag') {
                    return arrVal[constWinStep_ObjectDrag];
                }

                if (campo == 'btnDrag') {
                    return arrVal[constWinStep_HandlerDrag];
                }
                if (campo == 'resize') {
                    return arrVal[constWinStep_ObjectResize];
                }
                if (campo == 'btnResize') {
                    return arrVal[constWinStep_HandlerResize];
                }
                if (campo == 'btnReduce') {
                    return arrVal[constWinStep_ObjectReduce];
                }
                if (campo == 'btnEnlarge') {
                    return arrVal[constWinStep_ObjectEnlarge];
                }
                if (campo == 'btnClose') {
                    return arrVal[constWinStep_ObjectClose];
                }
                if (campo == 'pathImmagine') {
                    return arrVal[constWinStep_ObjectClose];
                }
            }
        }
    }


    //***************************************************** PROCEDURA SETTA VALORI WIN DELLA MATRICE MULTIDIMENSIONALE WIN
    function SettaValoreWin(id, campo, valore) {
        for (var i = 0; i < win.length; i++) {
            var arrVal = win[i];
            if (arrVal[constWinStep_Id] == id) {
                if (campo == 'indice') {
                    arrVal[constWinStep_Indice] = valore;
                    win[i] = arrVal;
                }
                if (campo == 'id') {
                    arrVal[constWinStep_Id] = valore;
                    win[i] = arrVal;
                }
                if (campo == 'width') {
                    arrVal[constWinStep_Width] = valore;
                    win[i] = arrVal;
                }
                if (campo == 'height') {
                    arrVal[constWinStep_Height] = valore;
                    win[i] = arrVal;
                }
                if (campo == 'top') {
                    arrVal[constWinStep_Top] = valore;
                    win[i] = arrVal;
                }
                if (campo == 'left') {
                    arrVal[constWinStep_Left] = valore;
                    win[i] = arrVal;
                }
                if ((campo == 'ingrandisci') || (campo == 'riduci')) {
                    arrVal[constWinStep_StateEnlarge] = valore;
                    win[i] = arrVal;
                }
                if (campo == 'drag') {
                    arrVal[constWinStep_ObjectDrag] = valore;
                    win[i] = arrVal;
                }

                if (campo == 'btnDrag') {
                    arrVal[constWinStep_HandlerDrag] = valore;
                    win[i] = arrVal;
                }
                if (campo == 'resize') {
                    arrVal[constWinStep_ObjectResize] = valore;
                    win[i] = arrVal;
                }
                if (campo == 'btnResize') {
                    arrVal[constWinStep_HandlerResize] = valore;
                    win[i] = arrVal;
                }
                if (campo == 'btnReduce') {
                    arrVal[constWinStep_ObjectReduce] = valore;
                    win[i] = arrVal;
                }
                if (campo == 'btnEnlarge') {
                    arrVal[constWinStep_ObjectEnlarge] = valore;
                    win[i] = arrVal;
                }
                if (campo == 'btnClose') {
                    arrVal[constWinStep_ObjectClose] = valore;
                    win[i] = arrVal;
                }
            }
        }
    }


    //***************************************************** PROCEDURA PER LOG (DEBUG)
    function log(action, text)
    {
        text = '<b>' + text + '</b>';
        if (action=='write')
        {
            $('idConsole').innerHTML = text;
        }
        if (action=='add')
        {
            $('idConsole').innerHTML = $('idConsole').innerHTML + '<br>' + text;
        }
     }





    //*****************************************************
    //***************************************************** AVVIO DI JAVASCRIPT AL CARICAMENTO DI TUTTI GLI ELEMENTI DOM
    //*****************************************************
    
    window.addEvent('domready', function() 
    {

        CostruzioneHTML();
        
        initWin();
        


        //**************************************  PROCEDURA RENDI TUTTE LE WIN VISIBILI
        var divWinVisibility = $$('.cssDivWin');
        divWinVisibility.each(function(el) {

            //APPARIZIONE
            $(el).setOpacity(1);

            //EFFETTO APPARIZIONE GRADUALE

            /*var indice = RicavaValoreWin($(el).getProperty('id'), 'indice');
            GestisciTrasparenze(indice, 1);
            log('add', String(indice) + '0');

            var myEffect = new Fx.Morph($(el), { duration: '2000', transition: Fx.Transitions.Sine.easeOut,
                onComplete: function() {
                    Nodo = NavigaNodi(el, 'cssDivWin');
                    var indice = RicavaValoreWin($(Nodo).getProperty('id'), 'indice');
                    GestisciTrasparenze(indice, 0.5);
                } 
            });
            myEffect.start({ 'opacity': [0, 1] });*/
        
        });



        
        
        
    });