// header("wanHeader: tilstand| .. minL|minT|minW|minH|minZ .. dynL|dynT|dynW|dynH|dynZ| .. S|");
//           wh[0] min,dyn,max|    [1]  [2]  [3]  [4]  [5]  .. [6]  [7]  [8]  [9]  [10]  .. [11]
// maximun orienterer sig efter 0-laget






// allokerer parametre til 'wannaBeVinduet', hvis info i array m[n][0][1] .. sat i ok(), hvis 'wanHeader'
function setWan(n)
{
    var wh = m[n][0][1];         // wan info  

    if ( wh != null)             //  forskellig fra null 
    {
        var lag = m[ n ][0][0];      // laget

        lag.id = wh[0];   // wan-laget får 'tilsendt' id         

    		switch( wh[1] )          // tilstands variabel altid i [1] .. dyn, min, max ( bemærk rækkefølge )
    		{    
    	     case 'dyn':
           {              
              // placering 
              lag.style.left = wh[2].toString() + 'px';       
              lag.style.top = wh[3].toString() + 'px';    
              // size 
              lag.style.width = wh[4].toString() + 'px';
              lag.style.height = wh[5].toString() + 'px';
wanKnapCrtl(n,'dyn');
        
              break;
           } 

    	     case 'min':
           {

              // placering 
              lag.style.left = wh[6].toString() + 'px';       
              lag.style.top = wh[7].toString() + 'px';    
              // size 
              lag.style.width = wh[8].toString() + 'px';
              lag.style.height = wh[9].toString() + 'px';
wanKnapCrtl(n,'min');

              break;
           } 
    
    	     case 'max':   // OBS .. maximum kan IKKE 'move'e .. derfor opdateres scroll-system her ??
           {
              // .. vi kompenserer for lagets border og margin .. så vi får scrollBar med
              lag.style.width = ( screen.availWidth - checkV('pre',lag,'ML','BL','BR','MR') ).toString() + 'px';      // dynamisk  width
              lag.style.height = ( screen.availHeight - checkV('pre',lag,'MT','BT','BB','MB') ).toString() + 'px';    // dynamisk  height
              lag.style.left = '0px';       
              lag.style.top = '0px';
wanKnapCrtl(n,'max');

              break;
           }
        }
    }     
}



// ---------------------------------------------------------------------------------------------

function wanVresize(s)
{
//alert('absY '+s.absY+'\nhvorMusY '+s.hvorMusY);
    if ( s.opned )        // hvis 'mousedown' ER aktiveret .. så kan vi 'move'
    {        
        var lag = m[s.dwli][0][0];
        
//        var dX = s.absX - s.hvorMusX;     
        var dY = s.absY - s.hvorMusY;       // hvor meget er der flyttet siden mousedown
                
        if ( m[s.dwli][21].length != 0 ) // er der noget scrollVindue .. vi checker på længde
        {
            var newScrlH, scrvH;
 
            // scrollbar, scrollert og ned-knap lukkes ned under resize
            (m[s.dwli][21][1]).style.visibility = 'hidden';
            (m[s.dwli][21][2]).style.visibility = 'hidden';
            (m[s.dwli][21][3]).style.visibility = 'hidden';        
            (m[s.dwli][21][7]).style.visibility = 'hidden';
        
            // selve scrollVinduet .. <table> or not ?
            var scrv = m[s.dwli][21][0];
//            var scrv = ( m[s.dwli][21][0].tagName == 'TBODY' ? m[s.dwli][21][0].parentNode : m[s.dwli][21][0] );
            scrvH = parseInt( getStyle(scrv,'height') );
            
            // vores ønskede (nye) position .. skal lige checkes først
            newscrvH = scrvH + dY;
            
            // boundary check her .. bonger for neden 
            if ( ( scrv.scrollTop + newscrvH ) > scrv.scrollHeight && newscrvH < scrv.scrollHeight)  
            {
                // scrollTop formindskes i takt med udvidelse .. TID !!!
//                scrv.scrollTop = scrv.scrollTop - dY;      // bibeholder scroll-position ??
                scrv.scrollTop -= dY;      // bibeholder scroll-position ??
                return;
            }
            // bonger top .. check om vi trækker op .. scrollertHeight = 0 .. kun margin
            // .. a[23] er scrollBar's margin-top og margin-bottom .. scrollBar's højde minus scrollert !
            else if ( newscrvH <= m[s.dwli][21][23] && dY <= 0 )       
            {
                return;
            }
            else if ( newscrvH <= scrv.scrollHeight )
            {
                lag.style.height = (  parseInt(lag.style.height) + dY  ).toString() + 'px';
                scrv.style.height = newscrvH.toString() + 'px';            

            }

        }
        else
        {
            lag.style.height = (  parseInt(lag.style.height) + dY  ).toString() + 'px';        
        }
        
        s.hvorMusY =  s.absY;      // efter flyt opdateres musen's aktuelle position
    }
}

function resDown(s)
{
    // registrer hvor 'gamle' scrollTop i a[20]
    s.opned = true;
                    // selve resize .. dynamisk hover height
                    s.style.height = '1000px';   // ellers tilbage til class-style 
                    s.style.bottom = '-500px';
    childCheck(s,'_o');           // hover on    
    s.hvorMusY = s.absY;
}

function resUp(s)
{
    s.opned = false;
    // scroll opdateres
    opdaterScroll(s);
                    s.style.height = '';   // ellers tilbage til class-style 
                    s.style.bottom = '';
    childCheck(s,'');           // hover off
}

function resOut(s)
{
    if ( s.opned )            // .. knap nede, når der forlades
    {
        // scroll opdateres
        opdaterScroll(s);   
    }
                    s.style.height = '';   // ellers tilbage til class-style 
                    s.style.bottom = '';
    childCheck(s,'');           // hover off
    s.opned = false;
}


// ---------------------------------------------------------------------------------------------



// er en knap-registrerings-function
function wanMoveInit(n)
{

    m[n][30][4] = false;         // <-- vinduet's interne move-flag

    var s = GetById(m[n][0][0],'wanMove');
    // det er en move-knap
    if (s != null)
    {
       s.dF = 'wanDown';
       s.uF += ';wanOut';
       s.mF = 'wanMove';
       s.upF = 'wanUp';       
       
       s.setAttribute('hvorMoveX',''); s.hvorMoveX = '';       
       s.setAttribute('hvorMoveY',''); s.hvorMoveY = '';
              
       s.setAttribute('hvorMusX',''); s.hvorMusX = '';    
       s.setAttribute('hvorMusY',''); s.hvorMusY = '';
    }


    s = GetById(m[n][0][0],'wanDyn');
    // det er en dyn-knap
    if (s != null)
    {

       m[n][0][2] = s;         // .. og den parkeres i [2]
       s.cF = 'wanDyn';
    }
    else
    {
       m[n][0][2] = null;    
    }



    s = GetById(m[n][0][0],'wanMin');
    // det er en min-knap
    if (s != null)
    {

       m[n][0][3] = s;         // .. og den parkeres i [3]    
       s.cF = 'wanMin';
    }
    else
    {
       m[n][0][3] = null;    
    }


    var s = GetById(m[n][0][0],'wanMax');
    // det er en max-knap
    if (s != null)
    {
       m[n][0][4] = s;         // .. og den parkeres i [4]    
       s.cF = 'wanMax';
    }
    else
    {
       m[n][0][4] = null;    
    }

// -------------- vertical resize init ----------------       
    var s = GetById(m[n][0][0],'wanVresize');
    // det er en resize-knap
    if (s != null)
    {

       s.dF = 'resDown';
       s.uF += ';resOut';
       s.mF = 'wanVresize';
       s.upF = 'resUp';       
                     
       s.setAttribute('hvorMusX',''); s.hvorMusX = '';    
       s.setAttribute('opned',''); s.opned = false;
       
       m[n][0][5] = s;         // .. og den parkeres i [5]
    }
    else
    {
       m[n][0][5] = null;    
    }

// -----------------------------------------------------


     // check scroll
     var wh = m[n][0][1];           // fang wan status
     if ( wh != null )              // .. og er den der
     { 

wanKnapCrtl(n,wh[1])       

         var scra = m[n][21];       // fang scroll-array
                 
         if ( scra != '' )        // .. og er den der
         {
             if ( wh[1] == 'min')
             {
                scra[0].style.display = 'none';    // sluk scroll-system
                scra[1].style.display = 'none';                    
             }
             else
             {

                // check for <tBody>
                scra[0].style.display = ( brt ? 'block' : 'table-row-group' );  // tænd scroll-system
//                scra[0].style.display = 'block';       // tænd scroll-system
                scra[1].style.display = 'block';                             
             } 
         }
//alert(wh.toString());
     }     
}

// ------ slut init -------



function wanKnapCrtl(n,str)   // tilstand funktion .. kontrol af vore 3 wan-knapper
{
    var a, b, c, d;
    //  [2]  [3]  [4]   [5]
    // dyn, min, max, resize
    switch (str)
    {
        case 'dyn': { a = 2; b = 3; c = 4; d = 'block'; break; }
        case 'min': { a = 3; b = 2; c = 4; d = 'none'; break; }
        case 'max': { a = 4; b = 2; c = 3; d = 'block'; break; }
    }
//alert(a);    
    if ( m[n][0][a] != null )        // hvis knappen eksisterer
    {
       m[n][0][a].style.display = 'none';
       
       if ( m[n][0][b] != null )
       {
          m[n][0][b].style.display = 'block';                 
       }

       if ( m[n][0][c] != null )
       {
          m[n][0][c].style.display = 'block';                 
       }

       // resize kun 'block'et når 'min'
       if ( m[n][0][5] != null )
       {
          m[n][0][5].style.display = d;                 
       }

    }

}




function wanDown(s)          // onmousedown på move-knap
{        
    m[s.dwli][30][4] = true;             // equivalent til a[4]               

    // set move-knap præferencer
    childCheck(s,'_o');           // hover on


//--------------------------------------------------
    var hvorMove = lagkoord(s,0);   // dynamisk
    var hvorMoveX = hvorMove[0].toString() + 'px';
    var hvorMoveY = hvorMove[1].toString() + 'px';
//alert(hvorMoveX);
         
    s.style.width = screen.availWidth.toString() + 'px';   // dynamisk hover width
    s.style.left = '-' + hvorMoveX;

    s.style.height = screen.availHeight.toString() + 'px';   // dynamisk hover height
    s.style.top = '-' + hvorMoveY;


//--------------------------------------------------
        
    s.hvorMusX = s.absX;                             // registrer hvor mus er ved DOWN
    s.hvorMusY = s.absY;
}


function wanUp(s)            // onmouseup på move-knap
{
    // opdatering af wan placering    
    var wh = m[s.dwli][0][1];          // wan info array
    if ( wh != null )
    {
        var lag = m[s.dwli][0][0];
        if ( wh[1] == 'min')      // vi var i gang med flytning af 'min'
        {
            wh[6] = parseInt(lag.style.left);
            wh[7] = parseInt(lag.style.top);
        }
        else if ( wh[1] == 'dyn')      // vi var i gang med flytning af 'dyn'
        {
            wh[2] = parseInt(lag.style.left);
            wh[3] = parseInt(lag.style.top);
                        
            wh[4] = parseInt(lag.style.width);
            wh[5] = parseInt(lag.style.height);            
        }
    }

opdaterWan(s);
    
    m[s.dwli][30][4] = false;            // equivalent til a[4]

    smReset( s );
}


function wanOut(s)           // onmouseout på move-knap
{
    // hvis vi forlader 'move' MED mousedown aktiv
    if ( m[s.dwli][30][4] )     // true
    {
      smFl = true;          // set global flag
      smDwli = s.dwli;      // registrer ref til vindue
      smEl = s;
    }
    else
    {
      smReset(s);
    }
}




function wanMove(s)          // onmousemove
{  
    if ( m[s.dwli][30][4] && m[s.dwli][0][1][1] != 'max' )   // knap nede og IKKE max tilstand
    {
        var lag = m[s.dwli][0][0];
        var wh = m[s.dwli][0][1];         // den til laget hørende 'wannaBeArray' .. 'wanHeader' 
        
        var dX = s.absX - s.hvorMusX;     // hvor meget er der flyttet siden mousedown
        var dY = s.absY - s.hvorMusY;
                                 
        // tildeling af ny placering
        lag.style.left = (  parseInt(lag.style.left) + dX  ).toString() + 'px';    
        lag.style.top = (  parseInt(lag.style.top) + dY  ).toString() + 'px';
/*
        // opdatering af wanHeader med ny placering .. men IKKE i maximum tilstand - beregnes 'dynamisk'
        switch ( wh[0] )
        {
            case 'dyn': { wh[1] = parseInt(lag.style.left); wh[2] = parseInt(lag.style.top); break; }
            case 'min': { wh[5] = parseInt(lag.style.left); wh[6] = parseInt(lag.style.top); break; }
        }
*/        
        // opdatering af scroll-system .. men IKKE i minimum-tilstand, hvor scroll er slukket
        if ( wh[1] != 'min' && m[s.dwli][21][0] )
//        if ( m[s.dwli][21][0] )
        {
            m[s.dwli][21][11] += dY;
            wh[10] = parseInt( getStyle( m[s.dwli][21][1] , 'top' ) );
        }
        
        
        s.hvorMusX = s.absX;
        s.hvorMusY = s.absY;

    }
}

// header("wanHeader: tilstand| .. minL|minT|minW|minH| .. dynL|dynT|dynW|dynH| ..  Z|   S|");
//           wh[0] min,dyn,max|    [1]  [2]  [3]  [4]   .. [5]  [6]  [7]  [8]   .. [9]  [10]
// maximun orienterer sig efter 0-laget

// minimer vindue
function wanMin(s)                    // onclick
{
    var lag = m[s.dwli][0][0];        // laget
    var wh = m[s.dwli][0][1];         // den til laget hørende 'wannaBeArray' .. 'wanHeader'

    // gem nuværende parametre .. FØR nye sættes
    if ( wh[1] == 'dyn' )             // vi står i 'dyn' tilstand .. og trykker 'min'
    {
        wh[2] = parseInt(getStyle( lag, 'left' ));
        wh[3] = parseInt(getStyle( lag, 'top' ));
        wh[4] = parseInt(getStyle( lag, 'width' ));
        wh[5] = parseInt(getStyle( lag, 'height' ));
//alert('har trykket wanMin() .. '+wh[1]+' .. '+wh[2]);
    }
    
    
    wh[1] = 'min';                    // forcering af tilstand    
    setWan(s.dwli);                   // sæt wan størrelse og placering
opdaterWan(s);    
    // og scroll skal slukkes .. hvis nogen
    if ( m[s.dwli][21].length != 0 )  // .. vi checker på længde     
    {
        // hvis scrollVindue = <tbody> .. så skal der slukkes for selve <table>
        if ( m[s.dwli][21][0].tagName == 'TBODY' )
        {
          m[s.dwli][21][0].parentNode.style.display = 'none';    // scrollVindue        
//          m[s.dwli][21][0].parentNode.style.visibility = 'hidden';    // scrollVindue
        }
        else
        {
          m[s.dwli][21][0].style.display = 'none';    // scrollVindue
        }
        
        m[s.dwli][21][7].style.display = 'none';    // selve scroll bar          
    }
}

               


// aktuel (dynamisk) vindue størrelse .. fælles function
function wanDyn(s)                     // onclick
{
    var lag = m[s.dwli][0][0];        // laget
    var wh = m[s.dwli][0][1];         // den til laget hørende 'wannaBeArray' .. 'wanHeader'

    // gem nuværende parametre .. FØR nye sættes
    if ( wh[1] == 'min' )             // vi står i 'min' tilstand .. og trykker 'dyn'
    {
        wh[6] = parseInt(getStyle( lag, 'left' ));
        wh[7] = parseInt(getStyle( lag, 'top' ));
//alert('har trykket wanDyn() .. '+wh[1]+' .. '+wh[2]);
    }
    
    wh[1] = 'dyn';                    // forcering af tilstand    
    setWan(s.dwli);                   // sæt wan størrelse og placering
opdaterWan(s);    

    // og scroll skal tændes .. hvis nogen
    if ( m[s.dwli][21].length != 0 )  // .. vi checker på længde     
    {
        // hvis scrollVindue = <tbody> .. så skal der tændes for selve <table>
        if ( m[s.dwli][21][0].tagName == 'TBODY' )
        {
          m[s.dwli][21][0].parentNode.style.display = ( brt ? 'block' : 'table' );    // <table>        
//        m[s.dwli][21][0].parentNode.style.visibility = 'visible';    // scrollVindue
        }
        else
        {
          m[s.dwli][21][0].style.display = 'block';    // scrollVindue som firstChild
        }
        
        m[s.dwli][21][7].style.display = 'block';    // selve scroll bar          
    }
}



function wanMax(s)           // onclick
{
    var lag = m[s.dwli][0][0];        // laget
    var wh = m[s.dwli][0][1];         // den til laget hørende 'wannaBeArray' .. 'wanHeader'

    // gem nuværende parametre .. FØR nye sættes
    if ( wh[1] == 'dyn' )             // vi står i 'dyn' tilstand .. og trykker 'max'
    {
        wh[2] = parseInt(getStyle( lag, 'left' ));
        wh[3] = parseInt(getStyle( lag, 'top' ));
        wh[4] = parseInt(getStyle( lag, 'width' ));
        wh[5] = parseInt(getStyle( lag, 'height' ));
    }
    else                              // eller vi står i 'min' tilstand .. og trykker 'max'
    {
        wh[6] = parseInt(getStyle( lag, 'left' ));
        wh[7] = parseInt(getStyle( lag, 'top' ));    
    }
    

    wh[1] = 'max';                    // forcering af tilstand    
    setWan(s.dwli);                   // sæt wan størrelse og placering
opdaterWan(s);    
    // og scroll skal tændes .. hvis nogen
    // hvis scrollVindue = <tbody> .. så skal der tændes for selve <table>
    if ( m[s.dwli][21][0].tagName == 'TBODY' )
    {
        m[s.dwli][21][0].parentNode.style.display = ( brt ? 'block' : 'table' );    // <table>        
//        m[s.dwli][21][0].parentNode.style.visibility = 'visible';    // scrollVindue
    }
    else
    {
      m[s.dwli][21][0].style.display = 'block';    // scrollVindue som firstChild
    }
    
    m[s.dwli][21][7].style.display = 'block';    // selve scroll bar          

}




function opdaterWan(s)    // s er ALDRIG input .. giver ingen mening .. se kombiKnap .. og har INGEN indflydelse på kaldeknap
{
   // (opdater) knappens præferencer .. basis streng
   var str = '?session='+Ssession+'&UA='+UA+'&dwli='+s.dwli+'&ETag='+s.ETag+'&AJid='+urlencode(s.id);   


   var ea = eventInfo(s);    // array med præferencer til aktuel event


   s.mflag = false;   // stopper move
   
   var lag = m[s.dwli][0][0];

   str += '&wanInfo=' + ( m[s.dwli][0][1] ).join('|');
              
             
   if ( s.check )
   {
       str += '&value=' + s.getAttribute('check',2);
   }
   

   eb++;
   load('test/HTM/tom.php',s.dwli,null,s,str);
}

