
/**
 * Object to store all o2c stuff
 */
var o2c = {

  /**
   * Here plugins can save stuff to "get off the street" = global namespace
   */
  plugin : {
  },

  /**
   * everything related to events
   */
  event : {

    // registry for onload functions
    // all of its properties will be executed on window.onload
    pageload : {

      init : function () {
        for (var e in o2c.event.pageload) {
          if (e != "init" && typeof o2c.event.pageload[e] == "function") {
            o2c.event.pageload[e] ();
          }
        }
      },
      
      o2cdefault : function () {
        o2c.style.defaultFontSize = o2c.style.getCurrentFontSize ();
        if (document.cookie && document.cookie.search (/fontsize=/) != -1) {
          var newDefault = document.cookie.replace (/.*fontsize=([^;]+).*/, "$1");
          document.getElementsByTagName ("body")[0].style.fontSize = newDefault;
        }
        o2c.style.setHeight (true);
      }

    }

  },
  
  /**
   * everything related to css and styles
   */
  style : {
  
    defaultFontSize : "12px",
  
    /**
     * size the font: current size +/- diff
     */
    sizeFont : function (diff) {
      if (!Number (diff)) {
        document.cookie = "fontsize="+o2c.style.defaultFontSize+"; expires=Mon, 10 Sep 2040 18:17:28 GMT";
        return (document.getElementsByTagName ("body")[0].style.fontSize = o2c.style.defaultFontSize);
      }
      var curSize = o2c.style.getCurrentFontSize ();
      var newSize = (Number (curSize.replace (/ *px/, "")) + Number (diff)) + "px";
      document.cookie = "fontsize="+newSize+"; expires=Mon, 10 Sep 2040 18:17:28 GMT";
      o2c.style.setHeight (false);
      return (document.getElementsByTagName ("body")[0].style.fontSize = newSize);
    },

    /**
     * get the current font size of the body tag
     */
    getCurrentFontSize : function () {
      var body = document.getElementsByTagName ("body")[0];
      var curSize = body.style.fontSize;
      if (!curSize) {
        if (window.getComputedStyle) {
          curSize = window.getComputedStyle (body, "").getPropertyValue ("font-size");
        } else if (body.currentStyle) {
          curSize = body.currentStyle["fontSize"];
        } else {
          curSize = "12px";
        }
      }
      return curSize;
    },

    /**
     * function for uniform changing of all column lengths
     */
    setHeight : function (set) {
      if (!set) {
      	try { document.getElementById ('leftcolumn').style.height = ''; } catch (e) {}
      	try { document.getElementById ('fullmidcolumn').style.height = ''; } catch (e) {}
      	try { document.getElementById ('midcolumn').style.height = ''; } catch (e) {}
      	try { document.getElementById ('rightcolumn').style.height = ''; } catch (e) {}
      } else {
      	var footerheight = document.getElementById ('footer').offsetHeight;
      	var maxheight = document.getElementById ('contentarea').offsetHeight - footerheight;
      	try { document.getElementById ('leftcolumn').style.height = maxheight + 'px'; } catch (e) {}
      	try { document.getElementById ('fullmidcolumn').style.height = maxheight + 'px'; } catch (e) {}
      	try { document.getElementById ('midcolumn').style.height = maxheight + 'px'; } catch (e) {}
      	try { document.getElementById ('rightcolumn').style.height = maxheight + 'px'; } catch (e) {}
      }
    }

  }

};

// on page load initialize this
window.onload = o2c.event.pageload.init;


