// prototype.js ought to do this..
function $S(elem) {
  try {
    return window.getComputedStyle($(elem),null);
  } catch (e) {
    // IE doesn't support getComputedStyle() but has this instead.
    return $(elem).currentStyle;
  }
}

function isIEStyles() {
  return $S('browser-warn').display != 'none'
}

function menu_resize(target, offset) {
      //$("sidebar").style.border = "1px solid red";
      var header = document.getElementById("header-bar");
      var footer = document.getElementById("footer");

      var top = Element.getHeight(header);
      var bottom = Element.getHeight(footer);
      var size = getViewportSize();

      var sidebar = $(target);
    
      sidebar.style.height =  (size[1] - (bottom + top) - 3) + "px";
      sidebar.style.top = top-offset + "px";

}

function getViewportSize()
  {
    var size = [0, 0];
    if (typeof window.innerWidth != 'undefined')
    {
     size = [ window.innerWidth, window.innerHeight ];
    }
    else if (typeof document.documentElement != 'undefined' &&
             typeof document.documentElement.clientWidth != 'undefined' &&
             document.documentElement.clientWidth != 0)
    {
     size = [ document.documentElement.clientWidth, document.documentElement.clientHeight ];
    }
    else
    {
     size = [ document.getElementsByTagName('body')[0].clientWidth,
              document.getElementsByTagName('body')[0].clientHeight ];
    }
   
    return size;   
  }


function manage_sidebars() {
  menu_resize("sidebar",11);
  menu_resize("google",0);
  var main = $("main");
  var google = document.getElementById("google");
  var vpwidth = getViewportSize()[0];

  main.style.width = ( vpwidth - 210) + "px";
  var mw = (vpwidth - 380);
  main.style.maxWidth = mw + "px";
  window.mainDivWidth = mw;
  google.style.left = (vpwidth - 210) + "px";
}

// ajax content replacement functions adapted from www.speedshot.org

function replaceContent(text, div) {
  $(div).update(text);
}

function findContent(text) {
   var regexp = new RegExp(".*BEGIN_CONTENT -->((\n|.)*)<.-- END_CONTENT");
   var matches = text.match(regexp);
   return matches[1];
}

function getContent(url, div) {
  new Ajax.Request(url, {
    contentType : 'text/html',
    onSuccess: function(transport) {
      replaceContent(findContent(transport.responseText), div);
    },
    onFailure: function(transport) {
      alert("oh no!");
    }
  });
}

function browseById(linkid) {
  browseByIds([linkid], 100);
}

var STD_AUTO_BROWSE_INTERVAL = 1000;

function browseByIds(linkidAry, timeout) {
  if (linkidAry && linkidAry.length > 0) {
    var linkid = linkidAry.shift();
    var cmd = '$(\''+linkid +'\').onclick();';
    window.setTimeout(cmd, timeout);  
    if (linkidAry.length > 0) {
      browseByIds(linkidAry, timeout + STD_AUTO_BROWSE_INTERVAL);
    }
  }
}

function handleBookmark() {
  var ids = new Array();
  var count = 0;
  var query = location.search.substring(1);
  var pairs = query.split('&');
  for (var i = 0; i < pairs.length; i++) {
    var equals = pairs[i].indexOf('=');
    if (equals == -1 ) continue;
    var argname = pairs[i].substring(0,equals);
    var value = pairs[i].substring(equals+1);
    if (argname == 'bmlid') {
      alert ('found '+value);
      ids[count++] = value;
    }
  }
  browseByIds(ids, 1000);
}

handleBookmark();
