var curFilterPulldown;
var filterRefPos;
var addedpulldowncloser;

function myGetElementsByClass(node,searchClass,tagName)
{
  var classElements = new Array();
  var els = node.getElementsByTagName(tagName); // use "*" for all elements
  var pattern = new RegExp("\\b"+searchClass+"\\b");

  for (var i = 0; i < els.length; ++i)
    if (pattern.test(els[i].className))
      classElements.push(els[i]);

  return classElements;
}

function getFilterId(htmlid)
{
  return htmlid.split('-')[0];
}

function closeallpulldowns()
{
  var pulldowns = myGetElementsByClass(document,'filterpulldown','div');
  for(var i=0;i<pulldowns.length;++i)
    pulldowns[i].style.display = 'none';
}

function openFilterPulldown(event, filter)
{
  if(!event) event=window.event;
  closeallpulldowns();
  if(!addedpulldowncloser)
  {
    $(window).click(closeallpulldowns);
    addedpulldowncloser=true;
  }

  var filterid = getFilterId(filter.id);

  if (curFilterPulldown == filterid)
  {
    closeFilterPulldown();
    return;
  }
  if (curFilterPulldown)
    closeFilterPulldown();

  curFilterPulldown = filterid;
  var div = document.getElementById(curFilterPulldown + '-pulldown');
  if (div)
  {
    if (!filterRefPos)
      filterRefPos = toddGetBodyPos(document.getElementById('header'));
    var pos = toddGetBodyPos(filter.parentNode);
    div.style.top = (pos.top - filterRefPos.top + filter.parentNode.offsetHeight) + 'px';
    div.style.left = (pos.left - filterRefPos.left + 1) + 'px';
    div.style.display = 'block';
  }

  toddDontPropagateEvent(event);
}

function closeFilterPulldown()
{
  if (curFilterPulldown)
  {
    var div = document.getElementById(curFilterPulldown + '-pulldown');
    if (div)
      div.style.display = 'none';
  }
  curFilterPulldown = null;
}
