f7_v4       = (parseInt(navigator.appVersion)>=4 && parseInt(navigator.appVersion)<=5)?1:0;
f7_ie       = (document.all && f7_v4)?1:0;
f7_ns       = (document.layers && f7_v4)?1:0;
f7_ns6      = (document.getElementById && !document.all)?1:0;
lastScrollY = 0;
origNavPos  = 0;
origMapPos  = 0;
oNav        = null;
oMap        = null;

//-------------------------------------------------------------------
// getObject()
//-------------------------------------------------------------------
function getObject(obj)
  { 
  return (document.getElementById) ? document.getElementById(obj) : document.all[obj];
  } 

//-------------------------------------------------------------------
// getFlashObject()
//-------------------------------------------------------------------
function getFlashObject(obj)
  {
  if (navigator.appName.indexOf("Microsoft") != -1)
    {
    obj = obj + "Obj";

    return window[obj];   // Internet explorer
    }
  else
    {
    obj = obj + "Elm";

    if (navigator.userAgent.indexOf("Safari") != -1) 
      {
      return document.getElementById(obj);    // Safari
      }
    else   // All others... netscape, firefox, opera, etc
      {
      if(document[obj].length != undefined)  // Sometimes firefox returns an object with BOTH the object and embed tags, so we need to get just the embed
        {
        return document[obj][1];
        }
      else
        {
        return document[obj];
        }
      }
    }

  return null;
  }

//-------------------------------------------------------------------
// showObject()
//-------------------------------------------------------------------
function showObject(obj, visible)
  {
  var visibility = (visible) ? ["visible","show","block"] : ["hidden","hide","none"];

  if (f7_ie)  { obj.style.visibility = visibility[0]; obj.style.display = visibility[2]; } //eval(thelayer+'.style.visibility="'+visibility[0]+'"'); }
  if (f7_ns)  { obj.visibility = visibility[1];       obj.display       = visibility[2]; } //eval('document.'+thelayer+'.visibility="'+visibility[1]+'"');}
  if (f7_ns6) { obj.style.visibility = visibility[0]; obj.style.display = visibility[2]; } //document.getElementById(thelayer).style.visibility=visibility[0]; }
  }

//-------------------------------------------------------------------
// getScrollXY()
//-------------------------------------------------------------------
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 ];
  }

//-------------------------------------------------------------------
// getBoundingBox()
//-------------------------------------------------------------------
function getBoundingBox(elm)
  {
  var rd = { l:0, t:0, b:0, r:0, w:0, h:0 };
  var height = elm.offsetHeight;
  var width  = elm.offsetWidth;

  do
    {
    rd.l += parseInt(elm.offsetLeft);
    rd.t += parseInt(elm.offsetTop);
    elm = elm.offsetParent;
    } while (elm);

  rd.b = rd.t + height;
  rd.r = rd.l + width;
  rd.w = width;
  rd.h = height;
  return rd;
  }

//-------------------------------------------------------------------
// setPos()
//-------------------------------------------------------------------
function setPos(y, elm)
  {
  if (y < 0)
    y = 0;

  if (f7_ns)
    {
    elm.top=y;
    }
  else if (f7_ie)
    {
    elm.style.top=eval('"'+(y)+'px"');
    }
  else if (f7_ns6)
    {
    elm.style.top = eval('"'+(y)+'px"');
    }
  }
  
//-------------------------------------------------------------------
// scrollingDetector()
//-------------------------------------------------------------------
function scrollingDetector()
  {
  if (!oNav)
    {
    oNav = getObject("navigation");
    if (!oNav)
      return;

    origNavPos = getBoundingBox(oNav);
    origNavPos = origNavPos.t;

    if (oMap = getObject("map"))
      {
      origMapPos = getBoundingBox(oMap);
      origMapPos = origMapPos.t;
      }
    }

  scrollY = getScrollXY();
  scrollY = scrollY[1];
  
  if (scrollY != lastScrollY)
    {
    // Move the navigation box
    lastScrollY = scrollY;

    setPos(scrollY - origNavPos, oNav);

    if (oMap)
      setPos(scrollY - origMapPos, oMap);
    }
  }

setInterval("scrollingDetector()", 250);
