// WxUtils namespace
if (typeof(WxUtils) == 'undefined') {
  WxUtils = {};
}

// Figure out what browser is being used
var b = navigator.userAgent.toLowerCase();
WxUtils.browser = {
  safari:  /webkit/.test(b),
  opera:   /opera/.test(b),
  msie:    /msie/.test(b) && !/opera/.test(b),
  msie6:   /msie 6/.test(b) && !/opera/.test(b),
  msie8:   /msie 8/.test(b) && !/opera/.test(b),
  msie7:   /msie 7/.test(b) && !/opera/.test(b),
  mozilla: /mozilla/.test(b) && !/(compatible|webkit)/.test(b)
};

WxUtils.__start_document_init = function() {
  if (WxUtils.browser.msie) {
    if (WxUtils.browser.msie) {
      document.write("<script id=__ie_onload defer src=javascript:void(0)><\/script>");
      var script = document.getElementById("__ie_onload");
      script.onreadystatechange = function() {
        if (this.readyState == "complete") { 
          try {
            MochiKit.Signal.signal(window, 'documentReady'); // call the onload handler
          } catch(e) {
            log('IE did not trigger documentReady: '+e);
          }
          // Clear from memory
          script = null;
        }
      };  
    } 
    /*
    else if (WxUtils.browser.msie8) {
      MochiKit.Signal.connect(window, 'ondocumentready', 
        function() {
          MochiKit.Signal.signal(window, 'documentReady');
          MochiKit.Signal.disconnectAll(window,'ondocumentready');
        }
      );
    } */
  } else if (WxUtils.browser.safari) { // sniff
      var _timer = setInterval(function() {
        if (/loaded|complete/.test(document.readyState)) {
            clearInterval(_timer);
            MochiKit.Signal.signal(window, 'documentReady'); // call the onload handler
        }
      }, 10);
  } else if (WxUtils.browser.mozilla||WxUtils.browser.opera) {
    MochiKit.Signal.connect(window, 'onDOMContentLoaded', 
      function() {
        MochiKit.Signal.signal(window, 'documentReady');
        MochiKit.Signal.disconnectAll(window,'onDOMContentLoaded');
      }
    );
  } else {
    connect(window, 'onload', 
      function() {  
        log('in onload')
        MochiKit.Signal.signal(window, 'documentReady');
        MochiKit.Signal.disconnectAll(window, 'onload');
      }
    );
  } 
};

// Auto setup site widgets
var wsetup=null;
connect(window, 'documentReady',
  function(evt) { 
    try { 
      wsetup = new WxSiteWidgets.Setup.LiveSetup();
    } catch (e) {
      log(e);
    }
  }
);

WxUtils.__start_document_init();