﻿function hide(el, grow, k) {
 if (typeof(el) == 'string') el = document.getElementById(el);
 if (grow == undefined)
  grow = ('grow' in el ? (el.grow == '+' ? '-' : '+') 
                       : (el.offsetHeight > 0 ? '-' : '+'));
 el.grow = grow;
 el.hideStep = k || 2;
 el.style.overflow = 'hidden';
 if (grow == '+') {
  if (!('hideCurValue' in el) || el.hideCurValue == 0) el.hideCurValue = 1;
  el.style.display = '';
  if ('hideMaxHeight' in el) el.hideNewValue = el.hideMaxHeight;
  else {
    el.style.height = '';
    el.hideNewValue = el.offsetHeight;
  }
 } else {
  if (!('hideCurValue' in el)) el.hideCurValue = el.offsetHeight;
  if (!('hideMaxHeight' in el)) el.hideMaxHeight = el.offsetHeight;
  el.hideNewValue = 0;
 }
 el.style.height = el.hideCurValue+'px';
 if (!el.hideIntervalId) el.hideIntervalId = setInterval('stephideing("'+el.id+'")', 50);
}

function stephideing(id) {
 var el = document.getElementById(id);
 var d = (el.grow == '+' ? el.hideCurValue * el.hideStep : el.hideCurValue / el.hideStep);
 var finished = false;
 if (el.grow == '+' && d > el.hideNewValue) {
  d = el.hideNewValue;
  finished = true;
 } else if (el.grow != '+' && d < 1) {
  d = 0;
  finished = true;
 }
 el.hideCurValue = d;
 el.style.height = d+'px';
 if (finished) {
  clearInterval(el.hideIntervalId);
  el.hideIntervalId = null;
  if (d == 0) el.style.display = 'none';
  else {
    el.style.overflow = '';
    el.style.height = '';
  }
  if (el.afterhide) el.afterhide();
 }
}


