//*********************************************************************
//
// Quick Pop-up Photos
//
// Copyright (c) 2002, MFM Communication Software, Inc.
//
//*********************************************************************
//
// quickphotos.js
// $Id: quickphoto.js,v 1.15 2008/06/05 21:16:17 mdame Exp $
//
// Load quick photos when the loading the page and pop-up the photos
// when requested (usually on a mouseover event).
//
//*********************************************************************
//
// Tell jsjam.pl to not change these identifier and function names
//
// jsjam-keep:navMove
// jsjam-keep:mieMove
// jsjam-keep:MM_showHideLayersPopup
// jsjam-keep:getLeft
// jsjam-keep:getTop
// jsjam-keep:setHandlers
// jsjam-keep:getElementByID
// jsjam-keep:clientX
// jsjam-keep:clientY
// jsjam-keep:pageX
// jsjam-keep:pageY
// jsjam-keep:routeEvent
// jsjam-keep:body
// jsjam-keep:scrollLeft
// jsjam-keep:scrollTop
// jsjam-keep:event
// jsjam-keep:substr
// jsjam-keep:MM_findObj
// jsjam-keep:style
// jsjam-keep:visibility
// jsjam-keep:top
// jsjam-keep:left
// jsjam-keep:pixelTop
// jsjam-keep:pixelHeight
// jsjam-keep:offsetParent
// jsjam-keep:offsetHeight
// jsjam-keep:offsetLeft
// jsjam-keep:offsetTop
// jsjam-keep:body
// jsjam-keep:clientHeight
// jsjam-keep:scrollTop
// jsjam-keep:innerHeight
// jsjam-keep:onmousemove
// jsjam-keep:captureEvents
// jsjam-keep:pageYOffset
// jsjam-keep:x
// jsjam-keep:y
// jsjam-keep:MOUSEMOVE
//
//*********************************************************************


//********************************************************************
// 
// Find out what browser the user has
// floating point number.
// 
//********************************************************************
var isNav, isIE;

if (parseInt(navigator.appVersion) >= 4) 
{
  if (navigator.appName == "Netscape") 
    isNav = true;
  else
    isIE = true;
}


//********************************************************************
// 
// navMov(event)
//
// Mouse move event handler for Netscape
// 
//********************************************************************
var ex = 0; var ey = 0;

function navMove(evt)
{
  if (document.getElementByID)
  {
    ex = evt.clientX;
    ey = evt.clientY;
  }
  else
  {
    ex = evt.pageX; 
    ey = evt.pageY;
  }

  var browser=navigator.appName;
  var b_version=navigator.appVersion;
  var version=parseFloat(b_version);
  
  if (browser=="Netscape" && version == 4)
  {
    return routeEvent(evt);
  }
}


//********************************************************************
// 
// mieMov(event)
//
// Mouse move event handler for Internet Explorer
// 
//********************************************************************
function mieMove() 
{
  if (document.getElementByID)
  {
    ex = e.clientX;
    ey = e.clientY;
  }
  else
  {
    var arr = getScrollXY();
    scrollX = arr[0];
    scrollY = arr[1];
    ex = scrollX + event.x;
    ey = scrollY + event.y;
  }
}


function getScrollXY() {
  var scrOfX = 0, scrOfY = 0;
  if( typeof( window.pageYOffset ) == 'number' ) {
    //Netscape compliant
    scrOfY = window.pageYOffset;
    scrOfX = window.pageXOffset;
  } else if( document.body && ( document.body.scrollLeft || document.body.scrollTop ) ) {
    //DOM compliant
    scrOfY = document.body.scrollTop;
    scrOfX = document.body.scrollLeft;
  } else if( document.documentElement && ( document.documentElement.scrollLeft || document.documentElement.scrollTop ) ) {
    //IE6 standards compliant mode
    scrOfY = document.documentElement.scrollTop;
    scrOfX = document.documentElement.scrollLeft;
  }
  return [ scrOfX, scrOfY ];
}

function getWinSize() {
  var myWidth = 0, myHeight = 0;
  if( typeof( window.innerWidth ) == 'number' )
  {
    //Non-IE
    myWidth = window.innerWidth;
    myHeight = window.innerHeight;
  }
  else if( document.documentElement && ( document.documentElement.clientWidth || document.documentElement.clientHeight ) ) 
  {
    //IE 6+ in 'standards compliant mode'
    myWidth = document.documentElement.clientWidth;
    myHeight = document.documentElement.clientHeight;
  }
  else if( document.body && ( document.body.clientWidth || document.body.clientHeight ) )
  {
    //IE 4 compatible
    myWidth = document.body.clientWidth;
    myHeight = document.body.clientHeight;
  }
  return [ myWidth,myHeight ]
}

//********************************************************************
// 
// MM_showHideLayers
//
// Show or hide the given layer(s)
// 
//********************************************************************
function MM_showHideLayersPopup() 
{
  var i,p,v,obj,args = MM_showHideLayersPopup.arguments;

  var anch = 'A' + args[0].substr(1);

  var Tbltop=0;  

  for (i = 0; i < (args.length - 2); i += 3)
  {
    if ((obj = MM_findObj(args[i])) !=null) 
    {
      v = args[i + 2];
      id = obj.id;
      dh = obj.offsetHeight;

      if (obj.style)
      {
        obj = obj.style;
        v = (v == 'show') ? 'visible' : (v = 'hide') ? 'hidden' : v; 
      }

      var pageBottom;

      if (document.getElementById)
      {
        // A much more compliant code
        obj.top = (ey + 15) + "px";
        obj.left = (ex + 10) + "px";

        var arr = getScrollXY();
        scrollX = arr[0];
        scrollY = arr[1];
        arr = getWinSize();
        winWidth = arr[0];
        winHeight = arr[1];
        pageBottom = winHeight + scrollY;
        var popBottom = parseInt(obj.top) + dh;
        if (popBottom > pageBottom)
        {
          var objTop = pageBottom - dh - 20;
          obj.top = objTop + 'px';
        } 
      }
      else if (isNav)
      {
        if(document.anchors[anch])
        {
          Tbltop = document.anchors[anch].y;
          obj.top = Tbltop;

          pageBottom = window.innerHeight + pageYOffset;
          
          if (Tbltop + obj.document.height > pageBottom)
            obj.top -= obj.document.height;

          obj.left = document.anchors[anch].x
        }
      }
      else if (isIE) 
      {
        obj.pixelTop = ey; 

        pageBottom = document.body.clientHeight + document.body.scrollTop;

        if (ey + obj.pixelHeight > pageBottom)
          obj.pixelTop -= obj.pixelHeight; 
      }

      obj.visibility = v;
    }
  }
}


//********************************************************************
// 
// getLeft(layer)
//
// Get left position of a layer
// 
//********************************************************************
function getLeft(ll) 
{
  if (ll.offsetParent)
    return (ll.offsetLeft + getLeft(ll.offsetParent));
  else 
    return (ll.offsetLeft);
}


//********************************************************************
// 
// getTop(layer)
//
// Get top position of a layer
// 
//********************************************************************
function getTop(ll) 
{
  if (ll.offsetParent)
    return (ll.offsetTop + getTop(ll.offsetParent));
  else
    return (ll.offsetTop);
}


//********************************************************************
// 
// setHandlers()
//
// Set the mousemove event handlers
// 
//********************************************************************
function setHandlers() 
{
  if (document.getElementById)
  {
    if (isNav)
    {
      document.onmousemove = navMove;
    } 
    else if (isIE)
    {
      window.document.onmousemove = mieMove;
    }
  }
  else if (isNav) 
  {
    window.captureEvents(event.MOUSEMOVE);
    window.onmousemove = navMove;
  }
  else if (isIE) 
  {
    window.document.onmousemove = mieMove;
  }
}


//********************************************************************
// 
// Set the mousemove handlers when the page is loaded.
// 
//********************************************************************
window.onload = setHandlers;


//*********************************************************************
//
// CHANGE HISTORY
//
// $Log: quickphoto.js,v $
// Revision 1.15  2008/06/05 21:16:17  mdame
// Added offsetHeight to jsjam-keep list
//
// Revision 1.14  2008/06/05 21:08:25  mdame
// Fix layer positioning at the bottom of the window in MM_showHideLayersPopup()
//
// Revision 1.13.2.1  2008/06/05 20:58:07  mdame
// Fix layer positioning at the bottom of the window in
// MM_showHideLayersPopup()
//
// Revision 1.13  2008/04/16 13:09:19  lbettag
// only return routeEvent if N4
//
// Revision 1.12  2007/02/14 19:09:51  lbettag
// change bottom spacing
//
// Revision 1.11  2007/02/14 19:02:57  lbettag
// remove extraneous code
//
// Revision 1.10  2007/02/14 18:45:26  lbettag
// use correct dimension for object location
//
// Revision 1.9  2007/02/14 18:14:56  lbettag
// more punctuation
//
// Revision 1.8  2007/02/14 18:12:59  lbettag
// more punctuation for jsjam
//
// Revision 1.7  2007/02/14 18:11:48  lbettag
// add commas for jsjam
//
// Revision 1.6  2007/02/14 18:06:26  lbettag
// accomodate IE7 change to scrollTop
//
// Revision 1.5  2006/10/03 20:32:36  mdame
// Changed navMove() to use 'evt' instead of 'e'
//
// Revision 1.4  2006/10/03 20:06:40  mdame
// Updated jsjam-keep settings
//
// Revision 1.3  2006/10/03 18:48:09  mdame
// Updated jsjam-keep settings; fixed some formatting
//
// Revision 1.2  2006/10/02 18:54:36  mdame
// Add standard header and change log
//
// Revision 1.1  2004/02/06 15:58:49  dsteinbrunner
// moved js scripts from re/common to general
//
// 2002-09-12 -- MTD
// Script started using TEI's code
//
//*********************************************************************
