/*
   mover.js - v1.0

   Gemaakt door Dennis Lassing - Maart 2006
   
   met openBox kan een popup gemaakt worden van een layer die begint 
   met de naam 'moverBox' plus een getal erachter. Dit getal is de 
   box ID. 
      
   Syntax:
      openBox(
         boxID - ID nummer die geopend moet worden
         boxParent - ID nummer van de box die het aanroept (0 = n/a of hoofd)
         lnk - Aanroeper, meestal 'this'. Wordt gebruikt om positie te bepalen van de popupbox
         plusx - Positie op de x-as wijzigen ten opzichte van lnk-positie
         plusy - Positie op de y-as
      );
       
   Voorbeeld van een menubox in een menubox:
   
   <a href='#' onMouseOver="openBox(3,0,this,0,24);">Mouse over me plx!</a>
   
   <div id="moverBox3" style="position: absolute; display:none;"> 
      I will popup whenever person mouseovers the parent link!
      <a href='#' onMouseOver="openBox(6,3,this,100,0);">Mouse over me too plx!</a>
   </div>

   <div id="moverBox6" style="position: absolute; display:none;"> 
      Lol ik ben nog een popup box!
   </div>
   

*/

      var curDepth = 0;
      var lastTab = null;
      var isInLastBox = null;
      var depthBox = new Array(10);
      var depthParent = new Array(10);
      var lastSrc = null;

      if ( typeof(uitklapperids) == 'undefined' ) {  var uitklapperids = new Array(); }      
      
   	document.onmousemove = docmover;
   	
   	if ( !document.all ) document.all = document.getElementsByTagName('*'); // Firefox compability!
   	
   	uitklapperCheck();
      function uitklapper(curgroup, targetgroup) {
         gCur = eval("document.all.menuafter"+curgroup);
         gTar = eval("document.all.moverBox"+targetgroup);
         
         if ( gCur.innerHTML == '' ) { 
            gCur.innerHTML = gTar.innerHTML; 
            set_cookie("uitklapper"+curgroup, targetgroup);
         } else { 
            gCur.innerHTML = ''; 
            set_cookie("uitklapper"+curgroup, 0);
         }
      }
      
      function uitklapperCheck() {
         //alert(get_cookie("uitklapper"+curgroup));
        	//alert(uitklapperids);
        	for (var i = 0; i<uitklapperids.length; i++) {
        	   var temp = get_cookie('uitklapper'+uitklapperids[i]);
        	   if ( temp > 0 ) {
        	      uitklapper(uitklapperids[i],temp);
        	   }
        	}

      }
 
      function get_cookie ( cookie_name ) {
         var results = document.cookie.match ( cookie_name + '=(.*?)(;|$)' );
      
         if ( results )
           return ( unescape ( results[1] ) );
         else
           return null;
      }
 
      function delete_cookie ( cookie_name ) {
         var cookie_date = new Date ( );  // current date & time
         cookie_date.setTime ( cookie_date.getTime() - 1 );
         document.cookie = cookie_name += "=; expires=" + cookie_date.toGMTString();
      }

      function set_cookie ( name, value, exp_y, exp_m, exp_d, path, domain, secure ) {
         var cookie_string = name + "=" + escape ( value );
      
         if ( exp_y ) {
            var expires = new Date ( exp_y, exp_m, exp_d );
            cookie_string += "; expires=" + expires.toGMTString();
         }
      
         //if ( path )
         //      cookie_string += "; path=" + escape ( path );
         cookie_string += "; path=/;";
         
         if ( domain )
               cookie_string += "; domain=" + escape ( domain );
        
         if ( secure )
              cookie_string += "; secure";
         //alert('setting cookie: '+cookie_string);
         document.cookie = cookie_string;
      }

 
      function openBox(boxID, boxParent, lnk,plusx,plusy) {
         //box = eval('document.all.moverBox'+boxID);
         box = document.getElementById('moverBox'+boxID);
         parentbox = eval('document.all.moverBox'+boxParent);
         //box.style.display = 'block';
         
         // Check if parent hasn't already opened a box
         closeBoxes = 0;
         for(i=0;i<=10;i++) {
            if ( depthParent[i] == boxParent && closeBoxes == 0) {
               // sluit vanaf nu alle boxen.
               closeBoxes = 1;
               curDepth = i - 1;
               //alert('Changed');
            }
            if ( closeBoxes == 1 ) {
               y = eval('document.all.moverBox'+depthBox[i]);
               if ( y != null ) 
                  y.style.display = 'none';
               depthBox[i] = null;
               depthParent[i] = null;
            }
         }
         
         // Open box
         curDepth++;
         depthBox[curDepth] = boxID;
         depthParent[curDepth] = boxParent;
         //alert(lnk.style.width);
         x = findPosX(lnk) + plusx;
         //y = findPosY(parentbox);
         y = findPosY(lnk) + plusy;
         //box.style.left = x;
         //box.style.top = y;
         document.getElementById('moverBox'+boxID).style.left = x+'px';
         document.getElementById('moverBox'+boxID).style.top = y+'px';
         //document.getElementById('dennisbox').innerHTML = 'x: '+x+' y: '+y+' z:'+boxID;
         box.style.zIndex = 5000+curDepth;
         box.style.display = 'block';

      }
      
   	function docmover(e) {
	         var src = (e == null || e == "undefined") ? event.srcElement : e.target;

            
         	while (
         		src != null &&
         		src.tagName != "HTML" &&
            	src.id.indexOf("moverBox") &&
		         src.id != "moverBottom"
         	)
         		src = src.parentNode;
            
	   	   if ( src.tagName == "HTML" && curDepth > 0 ) moverResetTimer();
	   	   lastSrc = src.tagName;
            //status = curDepth+' src: '+src.tagName;
   	}
   	
   	function moverResetTimer() {
   	   setTimeout('moverReset()',1000);
   	}
   	
   	function moverReset() {
   	   //return;
   	   if ( lastSrc != "HTML" ) return;
   	      if ( curDepth == 0 ) return;
   	   clearPopups();
   	}
   	
   	function clearPopups() {
         for(i=0;i<=curDepth;i++) {
               //status = i+' - '+depthBox[i];
               y = eval('document.all.moverBox'+depthBox[i]);
               if ( y != null ) 
                  y.style.display = 'none';
               depthBox[i] = null;
               depthParent[i] = null;
         }
         curDepth = 0;
      }   	   
   	   
   	


function findPosX(obj)
{
	var curleft = 0;
	if (obj.offsetParent)
	{
		while (obj.offsetParent)
		{
			curleft += obj.offsetLeft
			obj = obj.offsetParent;
		}
	}
	else if (obj.x)
		curleft += obj.x;
	return curleft;
}

function findPosY(obj)
{
	var curtop = 0;
	if (obj.offsetParent)
	{
		while (obj.offsetParent)
		{
			curtop += obj.offsetTop
			obj = obj.offsetParent;
		}
	}
	else if (obj.y)
		curtop += obj.y;
	return curtop;
}

   	

