
function side_height(){
  var new_height=0
  var el

  if(!document || !document.getElementById)
    return

  if("number"==typeof(window.innerHeight) && window.innerHeight > new_height)
    new_height=window.innerHeight

  el=document.getElementById('html')

  if("number"==typeof(el.clientHeight) && el.clientHeight > new_height)
    new_height=el.clientHeight

  if("number"==typeof(el.scrollHeight) && el.scrollHeight > new_height)
    new_height=el.scrollHeight

  el=document.getElementById('body')

  if("number"==typeof(el.clientHeight) && el.clientHeight > new_height)
    new_height=el.clientHeight

  if("number"==typeof(el.scrollHeight) && el.scrollHeight > new_height)
    new_height=el.scrollHeight

  el=document.getElementById('main')

  if("number"==typeof(el.clientHeight) && el.clientHeight > new_height)
    new_height=el.clientHeight

  if("number"==typeof(el.scrollHeight) && el.scrollHeight > new_height)
    new_height=el.scrollHeight

  el=document.getElementById('side')

  if("number"==typeof(el.clientHeight)
    && el.clientHeight < new_height
    && el.style && "undefined"!=typeof(el.style.height) )

    el.style.height=new_height+'px'
}

function setup_scroll(){
  var navo

  if(!(document && document.getElementById))
    return

  navo=document.getElementById('nav')
  if(!navo.style || "undefined"==typeof(navo.style.marginTop))
    return

  navo.style.marginTop='15px'
  pseudo_onscroll(window.pageYOffset)
}

function pseudo_onscroll(old_offset){
  var new_offset
  var el

  if("number"==typeof(window.pageYOffset))
    new_offset=window.pageYOffset

  else{
    if(!document || !document.getElementById)
      return

    el=get_top_scroller()
    if(!el || "number"!=typeof(el.scrollTop))
      return

    new_offset=el.scrollTop
  }

  if(new_offset != old_offset){
    scroll_func()
  }
  setTimeout('pseudo_onscroll('+new_offset+')',1000)
}

function scroll_func(){
  var body_el
  var nav_el
  var winh
  var wpyo
  var eoft
  var eclh
  var marg
  var top_gap
  var bottom_gap
  var new_margin

  if(!document || !document.getElementById)
    return

  body_el= get_top_scroller()
  nav_el= document.getElementById('nav')

  if(!body_el || !nav_el)
    return

  if(window && "number"==typeof(window.innerHeight))
    winh= window.innerHeight

  else
    winh= body_el.clientHeight

  if(window && "number"==typeof(window.pageYOffset))
    wpyo= window.pageYOffset

  else
    wpyo= body_el.scrollTop

  eoft= nav_el.offsetTop
  eclh= nav_el.clientHeight

  if("number"!=typeof(winh) || "number"!=typeof(wpyo) || "number"!=typeof(eoft) || "number"!=typeof(eclh))
    return

  if(!nav_el.style || !nav_el.style.marginTop)
    return

  marg= parseInt(nav_el.style.marginTop)
  top_gap= eoft -wpyo
  bottom_gap= wpyo +winh -(eoft +eclh)

  //alert(  winh+ ' body_el.clientHeight\n'+  wpyo+ ' body_el.scrollTop\n'+  eoft+ ' nav_el.offsetTop\n'+  eclh+ ' nav_el.clientHeight\n'+  top_gap+' top_gap\n'+  bottom_gap+' bottom_gap\n')

  if(eclh + 30 < winh || 15 < top_gap)
    new_margin= marg +15 -top_gap

  else if(15 < bottom_gap)
    new_margin= marg +bottom_gap -15

  else
    return

  if(0 > new_margin)
    new_margin=0

  nav_el.style.marginTop= new_margin +'px'
}
side_height()
setup_scroll()
/*
if(typeof(scrollelem.onscroll)=='undefined'){  //window.onscroll
  function onscroll(oldpos){
    if(oldpos!=scrollelem.scrollTop)
      scroller()
    setTimeout('onscroll('+scrollelem.scrollTop+')',400)
  }
  onscroll(scrollelem.scrollTop)
}else
  scrollelem.onscroll=scroller
*/
function get_top_scroller(){
  var to_return
  to_return=document.getElementById('html')
  if(to_return.clientHeight)
    return to_return

  return document.getElementById('body')


}
