/**
 * @author AndrewF
*/

/*
==============================================================
Script:     Amazing Draggable Layer

Functions:  This script implements a draggable layer that
            can be used much like a popup window... but with-
            out the usual focus problems that popups often
            imply.  Also included are simple controls to show
            or hide the draggable layer. Compatible with
            NS4-7 & IE.
            
Comments:   The script is in two parts.  A JavaScript
            <script> to be placed in the <head> of the
            page; and a <div> layer that should be placed
            either immediately after the <body> tag or
            immediately before the </body> tag.
            
            There are *no* changes or setups required in the
            JavaScript script.
            
            Positioning, width, height, colors, fonts, etc.,
            as well as initial visibility are set in the
            layer portion of the script, in the body.
            
Notes:      Only a single instance of the script is allowed
            per page.            

Browsers:   NS4-7 & IE4 and later

Author:     etLux
==============================================================

*/


// Script Source: CodeLifter.com
// Copyright 2003
// Do not remove this header

isIE=document.all||document.getElementById;
isN4=document.layers;
isHot=false;

function ddInit(e){
  topDog=isIE ? "BODY" : "HTML";
  whichDog=isIE ? document.all.theLayer : document.getElementById("theLayer");  
  hotDog=isIE ? event.srcElement : e.target;  
  while (hotDog.id!="titleBar"&&hotDog.tagName!=topDog){
    hotDog=isIE ? hotDog.parentElement : hotDog.parentNode;
  }  
  if (hotDog.id=="titleBar"){
    offsetx=isIE ? event.clientX : e.clientX;
    offsety=isIE ? event.clientY : e.clientY;
    nowX=parseInt(whichDog.style.left);
    nowY=parseInt(whichDog.style.top);
    ddEnabled=true;
    document.onmousemove=dd;
  }
}

function dd(e){
  if (!ddEnabled) return;
  whichDog.style.left=isIE ? nowX+event.clientX-offsetx : nowX+e.clientX-offsetx; 
  whichDog.style.top=isIE ? nowY+event.clientY-offsety : nowY+e.clientY-offsety;
  return false;  
}

function ddN4(whatDog){
  if (!isN4) return;
  N4=eval(whatDog);
  N4.captureEvents(Event.MOUSEDOWN|Event.MOUSEUP);
  N4.onmousedown=function(e){
    N4.captureEvents(Event.MOUSEMOVE);
    N4x=e.x;
    N4y=e.y;
  }
  N4.onmousemove=function(e){
    if (isHot){
      N4.moveBy(e.x-N4x,e.y-N4y);
      return false;
    }
  }
  N4.onmouseup=function(){
    N4.releaseEvents(Event.MOUSEMOVE);
  }
}

function hideMe(){
  if (isIE) whichDog.style.visibility="hidden";
  else if (isN4) document.theLayer.visibility="hide";
}

function showMe(){
  if (isIE) whichDog.style.visibility="visible";
  else if (isN4) document.theLayer.visibility="show";
}

document.onmousedown=ddInit;
document.onmouseup=Function("ddEnabled=false");

