function docResize (contentID, footerID) {
  if (!contentID || !document.getElementById(contentID)) { alert('No (valid) contentID'); return false; }

  //var footerEl      = (footerID) ? document.getElementById(footerID) : null;
  var footerHeight  = 0;
  var contentEl     = document.getElementById(contentID);
  var paddingBottom = (document.body.style.paddingBottom) ? parseInt(document.body.style.paddingBottom) + 10 : 10;

  var winHeight = (window.innerHeight) ? window.innerHeight : document.body.clientHeight;

  if (footerID) {
	  if (typeof(footerID) == 'object' && footerID.constructor == Array) {
      for (var i = 0; i < footerID.length; i++) {
        footerHeight += document.getElementById(footerID[i]).offsetHeight;
      }
    } else {
      footerHeight = document.getElementById(footerID).offsetHeight;
    }
  }

  var newHeight = winHeight - getTopPx(contentEl) - paddingBottom - footerHeight;

  //alert('height: winHeight ' + winHeight + ' - topPx ' + getTopPx(contentEl) + ' - paddingBottom ' + paddingBottom + ' - footerHeight ' +  footerHeight + ' = nh:' + newHeight);
  contentEl.style.height = Math.max(newHeight, 100);

}


function tableSynchronize (headID, contentID) {
  var tHeader  = document.getElementById(headID);
  var tContent = document.getElementById(contentID);
  tHeader.width = '';

  var rHeader  = tHeader.rows[0];
  var rContent = tContent.rows[0];

  if (!rContent || !rContent.cells) {
    return false;
  }

  for (var i = 0; i < rHeader.cells.length; i++) {
    if (rContent.cells[i]) {
      if (rHeader.cells[i].offsetWidth < rContent.cells[i].offsetWidth) {
        // als de cel breder is dan de caption ...
        rHeader.cells[i].width = rContent.cells[i].offsetWidth;
        // correctie
        if ((diff = rHeader.cells[i].offsetWidth - rHeader.cells[i].width) > 0) {
          rHeader.cells[i].width = rHeader.cells[i].width - diff;
        }
      } else {
        // als de caption breder is dan de cel ...
        //alert('caption: '+rHeader.cells[i].offsetWidth+'\ncontent: '+rContent.cells[i].offsetWidth);
        rContent.cells[i].width = rHeader.cells[i].offsetWidth + 5;
      }
    }
  }

  // voor het geval er contentcellen zijn die de breedte van de caption gekregen hebben ... nog een keertje doorlopen
  for (var i = 0; i < rHeader.cells.length; i++) {
    if (rContent.cells[i]) {
      rHeader.cells[i].width = rContent.cells[i].offsetWidth;
      // correction
      if ((diff = rHeader.cells[i].offsetWidth - rHeader.cells[i].width) > 0) {
        rHeader.cells[i].width = Math.max(rHeader.cells[i].width - diff, 5);
      }
    }
  }
}


function labelSynchronize(className)
{
	if (!className || className.length < 0) {
		className = 'desc';
	}
	els = document.getElementsByTagName('TD');
	var maxWidth = 0;
	for (var i = 0; i < els.length; i++) {
		el = els[i];
		if (el.className == className) {
			if (el.offsetWidth > maxWidth) {
				maxWidth = el.offsetWidth;
			}
		}
	}
	for (i = 0; i < els.length; i++) {
		el = els[i];
		if (el.className == 'desc') {
			el.style.width = maxWidth + 'px';
		}
	}
}


function getTopPx(obj) {
  var result = obj.offsetTop;
  while (obj.offsetParent) {
    obj = obj.offsetParent;
    result += obj.offsetTop;
  }
  return result;
}


function getLeftPx(obj) {
  var result = obj.offsetLeft;
  while (obj.offsetParent) {
    obj = obj.offsetParent;
    result += obj.offsetLeft;
  }
  return result;
}


function isChild(p, c) {
  if (p && c) {
    if (p.contains) {
      // waarschijnlijk MSIE
      if (p.contains(c)) {
        return true;
      } else {
        return false;
      }
    }
    if (p.childNodes && p.childNodes.length) {
      // waarschijnlijk Mozilla
      for (var i=0; i<p.childNodes.length; i++) {
        ac = p.childNodes[i];
        if (ac == c)  return true;
        if (ac.childNodes.length && isChild (ac, c))  return true;
      }
    }
  }
  return false;
}


function openHelp (pad) {
  if (pad.substr(0,1) != '/')  pad = '/'+pad;
  window.open('http://help.elegia.nl/read'+pad, 'helpWin', 'scrollbars=0,resizable=1,width='+(screen.width/2)+',height='+(screen.height/2));
}


function getHelpLink (tekst, pad) {
  if (pad.substr(0,1) != '/')  pad = '/'+pad;
  return '<div style="text-align: right;"> <a href="http://help.elegia.nl/read'+pad+'" onClick="openHelp(\''+pad+'\'); return false;">'+tekst+'</a>&nbsp;<a href="http://help.elegia.nl/read'+pad+'" onClick="openHelp(\''+pad+'\'); return false;"><img src="/elegia_common/images/icons/help_16x16.png" align="absmiddle" border=0></a></div>';
}


function openModal(href, name, width, height, extra) {
  if (!width)  var width = 400;
  if (!height) var height = 400;
  window.open(href, name, 'width='+width+',height='+height+',modal=1,resizable=1,' + ((extra)?extra:''));
  return false;
}


// Cookie handling
function setCookie ( sName, sValue, nDays ) {
	var expires = "";
	if ( nDays ) {
		var d = new Date();
		d.setTime( d.getTime() + nDays * 24 * 60 * 60 * 1000 );
		expires = "; expires=" + d.toGMTString();
	}

	document.cookie = sName + "=" + sValue + expires + "; path=/";
};


function getCookie (sName) {
	var re = new RegExp( "(\;|^)[^;]*(" + sName + ")\=([^;]*)(;|$)" );
	var res = re.exec( document.cookie );
	return res != null ? res[3] : null;
};


function removeCookie ( name ) {
	setCookie( name, "", -1 );
};