var MIN_CONTENT_WIDTH = 320;
var MAIN_COL_LEFT_MARGIN = null;
var MAIN_COL_RIGHT_MARGIN = null;

function setHeightsToAuto(oArrElems) {
  for (var i = 0; i < oArrElems.length; i++) {
    if (oArrElems[i]) {
        oArrElems[i].style.height = 'auto';
    }
  }
}

function ceiling(x) {
  return -parseInt(-x)
}

function adjustColumnHeights() {
  if (document.getElementById) {

    var main= document.getElementById('main');

    if (main) {

      var cols = new Array();
      var conts = new Array();
      var mainCol = null;
      var mainCont = null;
      var mainIndex = -1;

      for (var i = 0; i < main.childNodes.length; i++) {
        var col = null;
        var cont = null;
        var elem = main.childNodes[i];
        if (elem.id && elem.id.match(/_col$/)) {
          if (getStyle(elem, 'display') != 'none') {
            col = elem;
            for (var j = 0; j < col.childNodes.length; j++) {
              if (col.childNodes[j].id && col.childNodes[j].id.match(/content$/)) {
                cont = col.childNodes[j];
                if (cont.id == 'main_content') {
                  mainCol = col;
                  mainCont = cont;
                  mainIndex = conts.length;
                }
              }
            }
          }
          cols.push(col);
          conts.push(cont);
        }

      }

      setHeightsToAuto(conts);
      setHeightsToAuto(cols);

      if (mainCol) {
        if (!MAIN_COL_LEFT_MARGIN || !MAIN_COL_RIGHT_MARGIN) {
            MAIN_COL_LEFT_MARGIN = getStyle(mainCol, 'margin-left');
            MAIN_COL_RIGHT_MARGIN = getStyle(mainCol, 'margin-right');
        }
      }

      for (var i = 0; i < cols.length; i++) {
        if (cols[i]) {
          cols[i].style.clear = 'none';
          if (cols[i].id.match(/left/)) {
            cols[i].style.cssFloat = 'left';
          }
          if (cols[i].id.match(/right/)) {
            cols[i].style.cssFloat = 'right';
          }
        }
      }
      if (mainCol) {
        mainCol.style.marginLeft = MAIN_COL_LEFT_MARGIN;
        mainCol.style.marginRight = MAIN_COL_RIGHT_MARGIN;
      }

      var mainColWidth = document.body.clientWidth;
      for (var i = 0; i < cols.length; i++) {
        if (cols[i]) {
          if ((conts[i] == null) || (conts[i] != mainCont)) {
            mainColWidth = mainColWidth - cols[i].offsetWidth;
          }
        }
      }

      if (mainColWidth >= MIN_CONTENT_WIDTH) {

        var max = 0;
        for (var i = 0; i < cols.length; i++) {
          if (cols[i] && ceiling(cols[i].offsetHeight) > max) {
            max = ceiling(cols[i].offsetHeight);
          }
        }

        for (var i = 0; i < cols.length; i++) {
          if (cols[i]) {
            var colHeight = max - parseInt(getExtent(cols[i], 'border-top-width') + getExtent(cols[i], 'padding-top') + getExtent(cols[i], 'padding-bottom') + getExtent(cols[i], 'border-bottom-width') + getExtent(cols[i], 'top'));
            cols[i].style.height = colHeight + 'px';
            if (conts[i]) {
              var contHeight = colHeight - parseInt(getExtent(conts[i], 'border-top-width') + getExtent(conts[i], 'padding-top') + getExtent(conts[i], 'padding-bottom') + getExtent(conts[i], 'border-bottom-width'));
              conts[i].style.height = contHeight + 'px';
            }
          }
        }
      }
      else {

        var maxSideColWidth = 0;
        for (var i = 0; i < cols.length; i++) {
          if (cols[i] && cols[i] != mainCol) {
            if (cols[i].offsetWidth  > maxSideColWidth) {
              maxSideColWidth = cols[i].offsetWidth;
            }
          }
        }

        if (document.body.clientWidth - maxSideColWidth >= MIN_CONTENT_WIDTH) {
          for (var i = 0; i < cols.length; i++) {
            if (cols[i] && cols[i] == mainCol) {
              cols[i].style.marginLeft = maxSideColWidth + 'px';
              cols[i].style.marginRight = 0;
            }
            else {
              cols[i].style.cssFloat = 'left';
              cols[i].style.clear = 'both';
            }
          }
        }
        else {
          for (var i = 0; i < cols.length; i++) {
            if (cols[i] && cols[i] == mainCol) {
              cols[i].style.marginLeft = 0;
              cols[i].style.marginRight = 0;
            }
            else {
              cols[i].style.cssFloat = 'none';
            }
          }
        }
      }
    }
  }
}


onload = adjustColumnHeights;
onresize = adjustColumnHeights;
