var scroolStep = 40;
var scroolInterval = 10;
var scrollElementData = new Array();

function ChangeHide(elementId, cntDisplayed)
{
  if(elementId == '*')
  {
    var hideElements = new Array();
    var elements = document.getElementsByTagName("div");
    var cnt;
    for(cnt = 0; cnt < elements.length; cnt++)
    {
      if(elements[cnt].className == 'hideBox')
        hideElements.push(elements[cnt]);
    }
    for(cnt = 0; cnt < (hideElements.length - cntDisplayed); cnt++)
      hideElements[cnt].style.display = 'none';
  }
  else
    scroolElement(elementId, 'init');
  return false;
}


function scroolElement(elementId, mode)
{
  var element = document.getElementById(elementId);
  if(mode == 'init')
  {
    if(scrollElementData[elementId] != null)
      return;
      
    element.style.borderBottomWidth = '3px';
    
    var elementData = new Array();
    if(element.style.display == 'none')
    {
      elementData['endHeight'] = GetDisplayHeight(element);
      element.style.height = '0px';
    }
    else
    {
      elementData['endHeight'] = 0;
      element.style.height = GetDisplayHeight(element) + 'px';
    }
    elementData['content'] = element.innerHTML;
    action = "scroolElement('" + elementId + "', 'scroll')";
    elementData['interval'] = setInterval(action, scroolInterval);
    scrollElementData[elementId] = elementData;
    element.style.display = '';
    element.innerHTML = '';
  }
  else if(mode == 'scroll')
  {
    var endHeight = Number(scrollElementData[elementId]['endHeight']);
    var curHeight = element.style.height;
    var curHeight = Number(curHeight.substr(0,curHeight.indexOf("px")));
    
    if(curHeight > endHeight)
    {
      if(curHeight - scroolStep <= endHeight)
      {
        element.style.display = 'none';
        element.style.height = '';
        element.style.borderBottomWidth = '0px';
        element.innerHTML = scrollElementData[elementId]['content'];
        clearInterval(scrollElementData[elementId]['interval']);
        scrollElementData[elementId] = null;
      }
      else
        element.style.height = Number(curHeight) - Number(scroolStep) + 'px';
    }
    else
    {
      if(curHeight + scroolStep >= endHeight)
      {
        element.style.height = '';
        element.style.borderBottomWidth = '0px';
        element.innerHTML = scrollElementData[elementId]['content'];
        clearInterval(scrollElementData[elementId]['interval']);
        scrollElementData[elementId] = null;
      }
      else
        element.style.height = Number(curHeight) + Number(scroolStep) + 'px';
    }
  }
}


function GetDisplayHeight(element)
{
  if(element.style.display == 'none')
  {
    var elementPosition = element.style.position;
    var elementTop = element.style.top;
    element.style.position = 'absolute';
    element.style.top = document.body.scrollHeight + 'px';
    element.style.display = '';
    var height = GetElementHeight(element);
    element.style.display = 'none';
    element.style.top = elementTop;
    element.style.position = elementPosition;
  }
  else
    var height = GetElementHeight(element);
  return height;
}


function GetElementHeight(element)
{
  var error;
  try
  {
    var height = document.defaultView.getComputedStyle(element,'');
    height = height.getPropertyValue("height");
    height = height.substr(0,height.indexOf("px"));
  }
  catch(error)
  {
    var height = element.offsetHeight;
    if(height < 0)
      height = 0;
  }
  return height;
}

