﻿//creem la variable si no existeix
if (!Desplegator) var Desplegator = {};
if (!desplegat) var desplegat = '';

/*
************************************************************************************
************************************************************************************
************************************************************************************
    Contructor
*/

//Desplegator.desplegator = function (desplegat)
Desplegator.desplegator = function ()
{
    var i,n;
    //posem l'event als desplegadors
    var aTr = elementsByClass('div','desplegable_trigger');
    n = aTr.length;
    for ( i = 0; i < n; i++ )
    {
        addEvent(aTr[i], 'click', activaDesplega);   
        //alert('a');
    }
    
    /************************************************************/
    //variables 
    //privades
    var _delay = 20;
    //publiques
    
    
    /************************************************************/
    //mètodes
        
    
    //privats -------------------------------------------------------------------------------
    function redueixY(id,mida)
    {    
        var obj = document.getElementById(id);
        var m =parseInt(mida - 10);
            
        if ( m > 0 )
        {
            //alert(obj.style.height);
            obj.style.height = m + "px";
            setTimeout("redueixY('" + id + "'," + m + ")",_delay);                
        }else{
            obj.style.visibility = 'hidden';
            obj.style.position = 'absolute';                
            obj.style.overflow = 'visible';        
        }
    }

    function plega(obj)
    {
        //metode lllis
        obj.style.visibility = 'hidden';
        obj.style.position = 'absolute';                
        obj.style.overflow = 'visible';
        
        
        //metode 1
        /*
        var decrement = 0.01;

        var i;
        var a;
        
        if ( obj.clientHeight)
        {
            i = obj.clientHeight;
        }else
        
        i = parseInt(i);
        //obj.style.overflow = 'hidden';
        while ( a > 0 )
        {
            i = i - decrement;
            a = parseInt(i);
            obj.style.height = a + 'px';
        }
        obj.style.height = 0;*/
        
        //metode 2
        /*obj.style.overflow = 'hidden';
        if ( obj.clientHeight)
        {
            redueixY(obj.id,obj.clientHeight);
        }else{
            redueixY(obj.id,obj.offSetHeight);
        }*/
        
    }

    function desplega(obj)
    {
        obj.style.position = 'static';
        obj.style.overflow = 'visible';
        obj.style.visibility = 'visible';    
    }

    
    /*********************************************************************************************************************/
    /*
        activa desplega 
        Some parts from : w3schools.com
    */


    function activaDesplega(e)
    {
        //alert("Has clickat");
        var targ;

        if (!e)
        {
          var e=window.event;
        }

        if (e.currentTarget)
        {
          targ=e.currentTarget;
          
          if (targ.nodeType==3) // defeat Safari bug
          {
              targ = targ.parentNode;
          }
        }
        else if (e.srcElement)
        {
            //alert('srcElement');
            targ=e.srcElement;
            //ie no agafa currentTarget i aixó és equivalent a target
            //solució
            var a = targ.nodeName;
            //alert(a.toLowerCase());
            while( a.toLowerCase() != 'div' )
            {
                targ = targ.parentNode;
                a = targ.nodeName;            
                //alert(a.toLowerCase());        
            }
        }

        //canviem l'objecte clicat per el que hem de desplegar
        var tname;
        tname=targ.id;
        tname = tname.replace('trigger','desplegable')
        targ = document.getElementById(tname);
        otarg = targ;
        //alert("Desplegarem " + tname + " ."); 
        
        //pleguem tots els desplegables
        var aDes = elementsByClass('div','desplegable');
        var n = aDes.length;
        for ( var i=0; i < n ; i++)
        {
            if ( aDes[i].style.visibility == 'visible' )
            {
                //alert(aDes[i].id);
                plega(aDes[i]);
            }
        }
                
        desplega(targ);
        
    }
    
    
    //públics
    /*********************************************************************************************************************/
    /*
        desplega un desplegable cridant aquesta funció
        Some parts from : w3schools.com
    */

    this.desplegar = function (id)
    {
        if (document.getElementById(id))
        {
            var odes = document.getElementById(id);
            //pleguem els desplegables
            var aDes = elementsByClass('div','desplegable');
            var n = aDes.length;
            for ( var i=0; i < n ; i++)
            {
                if ( aDes[i].style.visibility == 'visible' )
                {
                    //alert(aDes[i].id);
                    plega(aDes[i]);
                }
            }
            //despleguem els que volem  
            desplega(odes);
         }
    }
    
    //si existeix l'element el despleguem
    if (desplegat)
    {
        if (desplegat != '')
        {
            this.desplegar(desplegat);
        }
    }
    
}


/**********************************************************************************/
//iniciem
//var desplegator = new Desplegator.desplegator();
addEvent(window, 'load', Desplegator.desplegator);