


//var _DHTML_CONTAINER_element =new Object(
function _DHTML_CONTAINER_element()
{
    // MAIN OBJECT = GLOBAL_DHTMLOBJ
    this.ID_ELEMENT =0;
    this.Hide_other_menu =1 ; // 0 if it's a sub-menu
    this.width = 0;
    this.height = 0;
    this.expiration = 7000; // default expiration time in milliseconds
    this.expiration_date = 0; // when will expire (current time) (0 = not set )
    this.visible = 0;
    this.top = 0;
    this.left = 0;
    this.timer_check_interval = 300;
    this.base_DIV = 0; // div used as background or iframe are set to 1, others = 0 ;
    this.copycontent = -1; // if != -1 contain id of diw wich contain the content
    this.timer_STATUS = 0; // 0 = off , 1 = on
    this.nomediv = '';
    this.nomeElemento_posizione = ''; // elemento da cui legge la posizione

    this.function_HIDE = ''; // function to eval on hide action
    this.function_SHOW = ''; // function to eval on hide action

    this.hide =  function(){
        if(document.getElementById(this.nomediv))  document.getElementById(this.nomediv).style.display="none";
        //alert('nascosto : '  + this.nomediv ) ;
        this.visible = 0;
        this.timer_STATUS = 0 ;
        if(this.function_HIDE.length > 0 ){
            eval(this.function_HIDE);
        }
    }

    this.show = function(){
        if(document.getElementById(this.nomediv))  document.getElementById(this.nomediv).style.display="block";
        this.visible = 1 ;
        var d = new Date();
        this.expiration_date =  d.getTime()+ this.expiration;
        this._TIMER();
        if(this.function_SHOW.length > 0 ){
            eval(this.function_SHOW);
        }
    }


    this._TIMER = function(){ // run every time exec

        if(this.visible == 0 ){ // is invisible, no timer needed
            this.timer_STATUS = 0 ;
            return ;
        }
        var d = new Date();
        if(d.getTime() > this.expiration_date){ // expired
            GLOBAL_DHTMLOBJ.HIDE_ELEMENT(this.nomediv); // nasconde anche l'iframe e il background
         //   alert( this.ID_ELEMENT + 'expired (' + d.getTime() + ') > (' + this.expiration_date + ') ');
            return ;
        }
        //alert('timer');
        setTimeout("GLOBAL_DHTMLOBJ.ar_ELEMENTS[" + this.ID_ELEMENT + "]._TIMER()",this.timer_check_interval);

    }

    this.GET_DEST_ID = function(){ // return id of the div, or the div with content copyed into
        if(this.copycontent == -1 ){
            return this.ID_ELEMENT;
        }else{
            return this.copycontent;
        }

    }
    this.read_size = function(){
        if(!document.getElementById(this.nomediv)) return ;
        var obj =  document.getElementById(this.nomediv);
        var Hobj = obj.style.height;
        var Wobj = obj.style.width;
        Hobj = Hobj.split('px').join('');
        Wobj = Wobj.split('px').join('');
        this.height = parseInt(Hobj);
        this.width = parseInt(Wobj);
    //alert(this.height);
    }

    this.read_position_toshow = function(){
        this.left = 0 ;
        this.top = 20 ;
        //alert(nomeElemento_posizione);
        if(document.getElementById(this.nomeElemento_posizione)){
               
            //   alert('top : ' + this.top + 'left = ' + this.left);
            var obj =  document.getElementById(this.nomeElemento_posizione);
            if (obj.offsetParent) {
                do {
                    this.left+= obj.offsetLeft;
                    this.top+= obj.offsetTop;
                //  alert('top : ' + this.top + 'left = ' + this.left);
                } while (obj = obj.offsetParent);
            }
        }
    }
    this.move_to_position = function(){
              
        if(document.getElementById(this.nomediv)){
            var obj =  document.getElementById(this.nomediv);
            // alert(this.nomediv + ' : top : ' + this.top + 'left = ' + this.left);
            obj.style.top = (this.top)+'px';
            obj.style.left = (this.left)+'px';
        }
    }
    this.set_size = function(){
        if(this.height == 0  || this.width == 0) return;
        if(document.getElementById(this.nomediv)){
            var obj =  document.getElementById(this.nomediv);
            if(this.height) obj.style.height = (this.height)+'px';
            if(this.width) obj.style.width = (this.width)+'px';
        //     alert('w : ' + obj.style.width + '(' + this.width + ') , h ' + obj.style.height);
        }
    }


}


function _DHTML_CONTAINER ()
{
    this.version = 0;
    this.ar_ELEMENTS = new Array();



    this.CREATE_ELEMENT = function(nomediv_elemento,nomedivPosizione){ // se c'ï¿½ un elemento visibile '
         
        var idelement = this.ar_ELEMENTS.length;
        this.ar_ELEMENTS[idelement] = new _DHTML_CONTAINER_element();
        this.ar_ELEMENTS[idelement].nomediv = nomediv_elemento;
        this.ar_ELEMENTS[idelement].nomeElemento_posizione = nomedivPosizione;
        this.ar_ELEMENTS[idelement].ID_ELEMENT = idelement;

        return idelement;
    }

    // append mouse event to the content div.. (stanrdard)
    this.APPEND_contentdiv_MOUSE_EVENT = function(nomediv_elemento){ // se c'ï¿½ un elemento visibile '

        var OBJ = document.getElementById(nomediv_elemento);

        OBJ.onmousemove = function(evt){
            eval('GLOBAL_DHTMLOBJ._ELEMENT_mouseMOVE(\'' +  nomediv_elemento + '\');')
        };
        OBJ.onmouseover = function(evt){
            eval('GLOBAL_DHTMLOBJ._ELEMENT_mouseMOVE(\'' +  nomediv_elemento + '\');')
        };
    //   OBJ.onmouseout = function(evt){eval('GLOBAL_DHTMLOBJ._ELEMENT_mouseOUT(\'' +  nomediv_elemento + '\');')};;
          
    // DEFAULT :  onmouseover="GLOBAL_DHTMLOBJ._ELEMENT_mouseOVER(this.id);" onmouseout="GLOBAL_DHTMLOBJ._ELEMENT_mouseOUT(this.id);" onmousemove="GLOBAL_DHTMLOBJ._ELEMENT_mouseMOVE(this.id);"
    }

    this.getID_bydivname = function(nomediv_elemento){ // se c'ï¿½ un elemento visibile '
        if(this.ar_ELEMENTS.length > 0 ){
            for(chiave in this.ar_ELEMENTS){
                //   alert(this.ar_ELEMENTS[chiave].nomediv);
                if(this.ar_ELEMENTS[chiave].nomediv == nomediv_elemento ) return chiave ;
            }
        }
        return -1;
    }

        
    this.SHOW_copyELEMENT = function(idelement){ //copy element into default div container, and show container
        idNEWelement = this.getID_bydivname('objDHTML_divcontent');
        if(idNEWelement == -1 ) return ;
         
    }

    this.SHOW_ELEMENT = function(nomediv_elemento){ // se c'ï¿½ un elemento visibile '
        //   alert(nomediv_elemento);
        var idelement = this.getID_bydivname(nomediv_elemento);
        //  alert('id : ' + idelement);
        if(idelement == -1 ) return ;
        /*
            if(this.ar_ELEMENTS[idelement].copycontent!= -1 ){
                 document.getElementById('objDHTML_divcontent').innerHTML = document.getElementById(nomediv_elemento).innerHTML;

            }
             */
        if(this.ar_ELEMENTS[idelement].Hide_other_menu == 1 ){ //  if it's not a submenu
            if(this.GET_atleast1_VISIBLE() !=-1 ) this.hide_all();
        }
        //alert(idelement);
        this.ar_ELEMENTS[idelement].read_position_toshow();
        this.ar_ELEMENTS[idelement].move_to_position();
        this.ar_ELEMENTS[idelement].set_size();
        this.ar_ELEMENTS[idelement].show();
        this.SHOW_ELEMENT_background_AND_iframe(idelement);
    }


    this.SHOW_ELEMENT_background_AND_iframe = function(idBASE_ELEMENT){ // se c'ï¿½ un elemento visibile '
        this.ar_ELEMENTS[idBASE_ELEMENT].read_size();
        var idelement = -1 ;
        /*
             * background
             */

        idelement = this.getID_bydivname('objDHTML_divout');
        if(idelement == -1 ) return ;
        this.ar_ELEMENTS[idelement].nomeElemento_posizione =  this.ar_ELEMENTS[idBASE_ELEMENT].nomediv;
        this.ar_ELEMENTS[idelement].read_position_toshow();
        //  this.ar_ELEMENTS[idelement].top-=100;
        this.ar_ELEMENTS[idelement].left-=60;
        this.ar_ELEMENTS[idelement].width =this.ar_ELEMENTS[idBASE_ELEMENT].width +120;
        this.ar_ELEMENTS[idelement].height =this.ar_ELEMENTS[idBASE_ELEMENT].height +200;
        this.ar_ELEMENTS[idelement].set_size();
        this.ar_ELEMENTS[idelement].move_to_position();

        this.ar_ELEMENTS[idelement].show();


        /*
             * iframe
             */
        idelement = this.getID_bydivname('objDHTML_IFRAME');
        if(idelement == -1 ) return ;
        this.ar_ELEMENTS[idelement].nomeElemento_posizione =  this.ar_ELEMENTS[idBASE_ELEMENT].nomediv;
        this.ar_ELEMENTS[idelement].read_position_toshow();
        this.ar_ELEMENTS[idelement].width =this.ar_ELEMENTS[idBASE_ELEMENT].width ;
        this.ar_ELEMENTS[idelement].height =this.ar_ELEMENTS[idBASE_ELEMENT].height;
        this.ar_ELEMENTS[idelement].set_size();
        this.ar_ELEMENTS[idelement].move_to_position();
        this.ar_ELEMENTS[idelement].show();
            
    }


    this.HIDE_ELEMENT = function(nomediv){ // se c'ï¿½ un elemento visibile '
        var idelement = this.getID_bydivname(nomediv);
        if(idelement == -1 ) return ;
        this.ar_ELEMENTS[idelement].hide();
        this.hide_ELEMENT_background_AND_iframe();
    }


        
    this.hide_ELEMENT_background_AND_iframe = function(){
        idelement = this.getID_bydivname('objDHTML_divout');
        if(idelement == -1 ) return ;
        this.ar_ELEMENTS[idelement].hide();
        idelement = this.getID_bydivname('objDHTML_IFRAME');
        if(idelement == -1 ) return ;
        this.ar_ELEMENTS[idelement].hide();
    }





    this.GET_atleast1_VISIBLE = function(){ // se c'ï¿½ un elemento visibile '
        if(this.ar_ELEMENTS.length > 0 ){
            for(chiave in this.ar_ELEMENTS){
                if(this.ar_ELEMENTS[chiave].visible == 1 && this.ar_ELEMENTS[chiave].base_DIV == 0 ) return chiave ;
            }
        }
        return -1;
    }
    this.hide_all = function(){ // se c'ï¿½ un elemento visibile '
        if(this.ar_ELEMENTS.length > 0 ){
            for(chiave in this.ar_ELEMENTS){
                if(this.ar_ELEMENTS[chiave].visible == 1 ){
                    this.ar_ELEMENTS[chiave].hide();
                }
            }
            this.hide_ELEMENT_background_AND_iframe();
        }
    }

    this.CLASSdiv_setproperty = function(nomediv,nomeproperty,value){ // mouse over su element, devo mostrare "nomediv"
        idelement = this.getID_bydivname(nomediv);
        if(idelement == -1 ) return ;
        this.ar_ELEMENTS[idelement][nomeproperty] = value;
    }



    this._ELEMENT_mouseOVER_showhere = function(nomediv,IDobjimg){ // riceve anceh l'object image e fa compare dove l'object image si trova
        //alert(IDobjimg);
        idelement = this.getID_bydivname(nomediv);
        if(idelement==-1) return ;
        this.ar_ELEMENTS[idelement].nomeElemento_posizione =IDobjimg;
        this._ELEMENT_mouseOVER(nomediv);
    }

    this._ELEMENT_mouseOVER = function(nomediv){ // mouse over su element, devo mostrare "nomediv"
        idelement = this.getID_bydivname(nomediv);
        if(idelement == -1 ) return ;
        this.SHOW_ELEMENT(nomediv);
    }

    this._ELEMENT_click = function(nomediv){ // mouse over su element, devo mostrare "nomediv"
        idelement = this.getID_bydivname(nomediv);
        if(idelement == -1 ) return ;
        this.SHOW_ELEMENT(nomediv);
    }

    this._ELEMENT_mouseOUTall = function(){
        for(chiave in this.ar_ELEMENTS){
            if(this.ar_ELEMENTS[chiave].visible == 1 && this.ar_ELEMENTS[chiave].base_DIV == 0 ){
                this._ELEMENT_mouseOUT(this.ar_ELEMENTS[chiave].nomediv);
                 
            }
        }

    }

    this._ELEMENT_mouseOUT = function(nomediv){ // mouse over su element, devo mostrare "nomediv"
        var idelement = 0 ;
        //alert(nomediv);
        idelement = this.getID_bydivname(nomediv);
        if(idelement == -1 ) return ;
        // alert('aa = ' + this.ar_ELEMENTS[chiave].visible + ' , ' + this.ar_ELEMENTS[chiave].base_DIV);
        var d = new Date();
        if(this.ar_ELEMENTS[idelement].expiration_date > (d.getTime()+300)){ // if is not already expiring
            this.ar_ELEMENTS[idelement].expiration_date = d.getTime() + 250; // expiration of div after mouseout set to 0.5 seconds
        // alert('exp = ' + this.ar_ELEMENTS[idelement].expiration_date + 'for : ' + nomediv );
        }
    }

    this._ELEMENT_mouseMOVE = function(nomediv){ // renew expiration
        idelement = this.getID_bydivname(nomediv);
        if(idelement == -1 ) return ;
        var d = new Date();
        this.ar_ELEMENTS[idelement].expiration_date = d.getTime() +  this.ar_ELEMENTS[idelement].expiration; // expiration of div after mouseout set to 0.5 seconds
       // alert('expiration : '+ idelement + ' = '+ this.ar_ELEMENTS[idelement].expiration_date);
    }


   
}
    


/*
 *  BASE IFRAME and DIV
 */

GLOBAL_DHTMLOBJ =  new _DHTML_CONTAINER();
GLOBAL_DHTMLOBJ.CREATE_ELEMENT('objDHTML_IFRAME','');
GLOBAL_DHTMLOBJ.CLASSdiv_setproperty('objDHTML_IFRAME','base_DIV',1);
GLOBAL_DHTMLOBJ.CREATE_ELEMENT('objDHTML_divcontent','');
GLOBAL_DHTMLOBJ.CLASSdiv_setproperty('objDHTML_divcontent','base_DIV',1);
GLOBAL_DHTMLOBJ.CREATE_ELEMENT('objDHTML_divout','');
GLOBAL_DHTMLOBJ.CLASSdiv_setproperty('objDHTML_divout','base_DIV',1);

/*
 *  USAGE
 */
//GLOBAL_DHTMLOBJ.CREATE_ELEMENT('prova1','img1'); // create element
// on div use : <div id="prova3" style="position: absolute; z-index: 102; display: none; left:115px; top:27px; width:105px; height:36px;background-color: rgb(44, 44, 44); " onmouseover="GLOBAL_DHTMLOBJ._ELEMENT_mouseOVER(this.id);" onmouseout="GLOBAL_DHTMLOBJ._ELEMENT_mouseOUT(this.id);" onmousemove="GLOBAL_DHTMLOBJ._ELEMENT_mouseMOVE(this.id);"> prova 3 </div>
// on img use : <img id="img4" src="http://www.himonitor.com/images/xmlicon.gif" onmouseover="GLOBAL_DHTMLOBJ._ELEMENT_mouseOVER_showhere('prova3',this.id);">
// if only 1 img is associated use (will take default):  <img id="img1" src="http://www.himonitor.com/images/xmlicon.gif" onmouseover="GLOBAL_DHTMLOBJ._ELEMENT_mouseOVER('prova1');">


/*
GLOBAL_DHTMLOBJ.CREATE_ELEMENT('prova1','img1');
GLOBAL_DHTMLOBJ.CREATE_ELEMENT('prova3','img2');
 */


if(!JSCACHE) JSCACHE = [] ;
JSCACHE.push(['DHTML.class.js',1]);
