/**
 * ContentAddModuleController.js
 * Define the ContentAddModule class/prototype
 *
 * $Revision: 1.5 $
 * $Date: 2011/07/06 13:30:24 $
 * Last edited by: $Author: danderson $
 */
ContentAddModule = function()
{
  this.sTitle = null;
  this.bRequired = false;
  this.bPrompt = false;
  this.bValidated = false;
  this.fValidationFunction = null;
  this.sPromptMessage = null;
  this.aErrorMessages = null;
};

ContentAddModule.prototype.setModuleOptions = function( oModuleOptions )
{
  if( typeof oModuleOptions === 'object' && oModuleOptions !== null )
  {
    if( typeof oModuleOptions.view === 'object' && oModuleOptions.view instanceof jQuery )
    {
      this.setView( oModuleOptions.view );
    }

    this.setTitle( oModuleOptions.label );

    if( typeof oModuleOptions.required === 'string' && oModuleOptions.required.toLowerCase() == 'true' )
    {
      this.setRequired();
    }

    if( typeof oModuleOptions.prompt === 'string' && oModuleOptions.prompt.toLowerCase() == 'true' )
    {
      this.setPrompt();
      this.setPromptMessage( oModuleOptions.promptMessage );
    }

    if( typeof oModuleOptions.validationFunction === 'function' )
    {
      this.setValidationFunction( oModuleOptions.validationFunction );
    }
  }
}

ContentAddModule.prototype.setTitle = function( sTitle )
{
  this.sTitle = sTitle;
};

ContentAddModule.prototype.getTitle = function()
{
  return this.sTitle;
};

ContentAddModule.prototype.setView = function( oView )
{
  this.oView = oView;
};

ContentAddModule.prototype.getView = function()
{
  return this.oView;
};

ContentAddModule.prototype.setValidated = function( bValidated )
{
  this.bValidated = bValidated;
};

ContentAddModule.prototype.isValidated = function()
{
  return this.bValidated;
};

ContentAddModule.prototype.setValidationFunction = function( fValidationFunction )
{
  if( typeof fValidationFunction === 'function' )
  {
    this.fValidationFunction = fValidationFunction;
  }
};

ContentAddModule.prototype.getPromptMessage = function()
{
  return this.sPromptMessage;
};

ContentAddModule.prototype.setPromptMessage = function( sPromptMessage )
{
  this.sPromptMessage = sPromptMessage;
};

ContentAddModule.prototype.getErrorMessages = function()
{
  return this.aErrorMessages;
}

ContentAddModule.prototype.setErrorMessages = function( aErrorMessages)
{
  return this.aErrorMessages = aErrorMessages;
}

ContentAddModule.prototype.setRequired = function()
{
  this.bRequired = true;
};

ContentAddModule.prototype.setPrompt = function()
{
  this.bPrompt = true;
};

ContentAddModule.prototype.clearPrompt = function()
{
  if( this.isPrompt() )
  {
    this.bPrompt = false;
  }
}

ContentAddModule.prototype.isRequired = function()
{
  return this.bRequired;
};

ContentAddModule.prototype.isPrompt = function()
{
  return this.bPrompt;
};

ContentAddModule.prototype.validate = function()
{
  var bRequired;
  this.bValidated = false;

  if( typeof this.fValidationFunction === 'function' )
  {
    this.aErrorMessages = this.fValidationFunction( this.bRequired, this.oView );

    if( typeof this.aErrorMessages !== 'object' || ! ( this.aErrorMessages instanceof Array ) || this.aErrorMessages.length < 1 )
    {
      this.bValidated = true;
    }
  }
  else
  {
    this.bValidated = true;
  }

  return this.bValidated;
};

