if (document.getElementById || document.all) { // minimum dhtml support required
  xAddEventListener(window, 'load', winOnLoad, false);
}
function winOnLoad()
{
   var ele = xGetElementById('col1');
   if (ele && xDef(ele.style, ele.offsetHeight))
   {
      // another compatibility check
      adjustLayout();
      //xAddEventListener(window, 'resize', winOnResize, false);
   }
}
function winOnResize()
{
   adjustLayout();
}
function adjustLayout()
{
   // Get content heights
   var cHeight = xHeight('col3');
   var lHeight = xHeight('col1');
   var rHeight = xHeight('col2');
   // Find the maximum height
   var maxHeight = Math.max(cHeight, Math.max(lHeight, rHeight));
   // Assign maximum height to all columns
   xHeight('col1', maxHeight);
   xHeight('col3', maxHeight);
   xHeight('col2', maxHeight);
}
function xAddEventListener(e, eT, eL, cap)
{
   if( ! (e = xGetElementById(e)))return;
   eT = eT.toLowerCase();
   if(e.addEventListener)e.addEventListener(eT, eL, cap || false);
   else if(e.attachEvent)e.attachEvent('on' + eT, eL);
   else
   {
      var o = e['on' + eT];
      e['on' + eT] = typeof o == 'function' ? function(v)
      {
         o(v);
         eL(v);
      }
      : eL;
   }
}
function xGetElementById(e)
{
   if(typeof(e) == 'string')
   {
      if(document.getElementById)e = document.getElementById(e);
      else if(document.all)e = document.all[e];
      else e = null;
   }
   return e;
}
function xDef()
{
   for(var i = 0; i < arguments.length; ++ i)
   {
      if(typeof(arguments[i]) == 'undefined')return false;
   }
   return true;
}
function xHeight(e, h)
{
   if( ! (e = xGetElementById(e)))return 0;
   if(xNum(h))
   {
      if(h < 0)h = 0;
      else h = Math.round(h);
   }
   else h = - 1;
   var css = xDef(e.style);
   if(e == document || e.tagName.toLowerCase() == 'html' || e.tagName.toLowerCase() == 'body')
   {
      h = xClientHeight();
   }
   else if(css && xDef(e.offsetHeight) && xStr(e.style.height))
   {
      if(h >= 0)
      {
         var pt = 0, pb = 0, bt = 0, bb = 0;
         if(document.compatMode == 'CSS1Compat')
         {
            var gcs = xGetComputedStyle;
            pt = gcs(e, 'padding-top', 1);
            if(pt !== null)
            {
               pb = gcs(e, 'padding-bottom', 1);
               bt = gcs(e, 'border-top-width', 1);
               bb = gcs(e, 'border-bottom-width', 1);
            }
            else if(xDef(e.offsetHeight, e.style.height))
            {
               e.style.height = h + 'px';
               pt = e.offsetHeight - h;
            }
         }
         h -= (pt + pb + bt + bb);
         if(isNaN(h) || h < 0)return;
         else e.style.height = h + 'px';
      }
      h = e.offsetHeight;
   }
   else if(css && xDef(e.style.pixelHeight))
   {
      if(h >= 0)e.style.pixelHeight = h;
      h = e.style.pixelHeight;
   }
   return h;
}
function xNum()
{
   for(var i = 0; i < arguments.length; ++ i)
   {
      if(isNaN(arguments[i]) || typeof(arguments[i]) != 'number')return false;
   }
   return true;
}
function xStr(s)
{
   for(var i = 0; i < arguments.length; ++ i)
   {
      if(typeof(arguments[i]) != 'string')return false;
   }
   return true;
}
function xGetComputedStyle(e, p, i)
{
   if( ! (e = xGetElementById(e)))return null;
   var s, v = 'undefined', dv = document.defaultView;
   if(dv && dv.getComputedStyle)
   {
      s = dv.getComputedStyle(e, '');
      if(s)v = s.getPropertyValue(p);
   }
   else if(e.currentStyle)
   {
      v = e.currentStyle[xCamelize(p)];
   }
   else return null;
   return i ? (parseInt(v) || 0) : v;
}
function xClientHeight()
{
   var v = 0, d = document, w = window;
   if(( ! d.compatMode || d.compatMode == 'CSS1Compat') && d.documentElement && d.documentElement.clientHeight)
   {
      v = d.documentElement.clientHeight;
   }
   else if(d.body && d.body.clientHeight)
   {
      v = d.body.clientHeight;
   }
   else if(xDef(w.innerWidth, w.innerHeight, d.width))
   {
      v = w.innerHeight;
      if(d.width > w.innerWidth)v -= 16;
   }
   return v;
}
function xCamelize(cssPropStr)
{
   var i, c, a = cssPropStr.split('-');
   var s = a[0];
   for(i = 1; i < a.length; ++ i)
   {
      c = a[i].charAt(0);
      s += a[i].replace(c, c.toUpperCase());
   }
   return s;
}
