// This library represents log functions, mainly to help with debugging
// when alert type dialogs aren't enough.
// Initially it will give the ability to create a logger from a form element.
// This is likely a text area.  Loggers will have a logMessage function.
// @author Robert D. Rice
// vc_id = "$Id: log.js 9260 2006-06-09 00:14:53Z robert $"

var LOGS = new Array( );

// Constructor for a FormElementLogger.
// This object acts on the form value
// @param html form element
// @param optional delim for appending messages.
//  defaults to replace message. examples: "\n", " "
// @param prepend new text. defaults to append
//  only applicable if delim is set.
function FormElementLogger( formElement, appendDelim, prepend ) {
  // set attributes
  // the html element representing this logger
  this.html = formElement;

  // the delimeter, if we want to append messages.
  if ( appendDelim ) {
    this.delim = appendDelim;
  } else {
    this.delim = null;
  }

  // append of prepend
  this.append = prepend ? false : true;

  // set methods
  this.logMessage = FormElementLogMessage;
}

function FormElementLogMessage( msg ) {
  if ( this.html.value &&
       this.delim != null ) {
      if ( this.append ) {
        this.html.value = this.html.value + this.delim + msg;
      } else { 
        this.html.value = msg + this.delim + this.html.value;
      }
  } else {
    this.html.value = msg;
  }
}

// Add a form element logger 
// @param html form element
// @param optional delim for appending messages.
//  defaults to replace message. examples: "\n", " "
function addFormElementLogger( formElement, appendDelim ) {
  addLogger( new FormElementLogger( formElement, appendDelim ) );
}

// Add a logger
// @param logger implementing the logMessage method
function addLogger( src ) {
  LOGS[ LOGS.length ] = src;
}

// Log a message to all loggers
// @param string representing the message
function logMessage( msg ) {
  var size = LOGS.length;
  for ( var i = 0; i < size; i++ ) {
    LOGS[ i ].logMessage( msg );
  }
}

