/*
   Javascript Logging v1.0
   -----------------------

   Usage
    In Your HTML

     <style type="text/css">@import "logging.css";</style>
     <script language="JavaScript" type="text/javascript" src="logging.js"></script>

    In Your Javascript

     initLogging(true);
     try {
       // ...
       log('value of foo: ' + foo);
       //...
     } catch(e) {
       logError(e);
     }


*/

var logging;
var loggingList;
var loggingDisplay;

function initLogging(display) {
   loggingDisplay = display;
   if (loggingDisplay) {
      logging = document.createElement('div');
      addClass(logging, 'logging');

      logging.innerHTML = '<div class="title">Javascript Logging</div><div class="show-hide"> (<a id="show-logging" href="">Show</a><a id="hide-logging" href="">Hide</a>)</div>';

      loggingList = document.createElement('ul');
      logging.appendChild(loggingList);

      document.body.appendChild(logging);

      showLogging = document.getElementById('show-logging');
      showLogging.onclick = showLog;

      hideLogging = document.getElementById('hide-logging');
      hideLogging.onclick = hideLog;

      hideLog();   

   	log('logging initialised');
   }
}

function showLog() {
   removeClass(loggingList, 'hidden');
   removeClass(hideLogging, 'hidden');
   addClass(showLogging, 'hidden'); 
   return false;  
}

function hideLog() {
   addClass(loggingList, 'hidden');
   addClass(hideLogging, 'hidden');
   removeClass(showLogging, 'hidden');   
   return false;
}

function log(text, raw) {
    if (raw) {
        text = "<pre>" + text.replace(/</g, "&lt;") + "</pre>";
    }
   if (loggingDisplay) {
      var loggingNode = document.createElement('li');
      loggingNode.innerHTML = text;
      loggingList.appendChild(loggingNode);
   }
}

function logError(e) {
    if (loggingDisplay) {
        var loggingNode = document.createElement('li');

        addClass(loggingNode, 'error');        

        
        var date = new Date();
        loggingNode.appendChild(document.createTextNode(e));
        loggingList.appendChild(loggingNode);
    }
    showLog();
}

function logArray(ary) {
    if (ary == null) {
        log('empty array');
        return;
    }

    for (var ct1 = 0; ct1 < ary.length; ct1++) {
        log(ary[ct1]);
    }
}
