// Generated by CoffeeScript 1.3.3
(function() {
  var XProblemDisplay, XProblemGenerator, XProblemGrader, root;

  XProblemGenerator = (function() {

    function XProblemGenerator(seed, parameters) {
      this.parameters = parameters != null ? parameters : {};
      this.random = new MersenneTwister(seed);
      this.problemState = {};
    }

    XProblemGenerator.prototype.generate = function() {
      return console.error("Abstract method called: XProblemGenerator.generate");
    };

    return XProblemGenerator;

  })();

  XProblemDisplay = (function() {

    function XProblemDisplay(state, submission, evaluation, container, submissionField, parameters) {
      this.state = state;
      this.submission = submission;
      this.evaluation = evaluation;
      this.container = container;
      this.submissionField = submissionField;
      this.parameters = parameters != null ? parameters : {};
    }

    XProblemDisplay.prototype.render = function() {
      return console.error("Abstract method called: XProblemDisplay.render");
    };

    XProblemDisplay.prototype.updateSubmission = function() {
      return this.submissionField.val(JSON.stringify(this.getCurrentSubmission()));
    };

    XProblemDisplay.prototype.getCurrentSubmission = function() {
      return console.error("Abstract method called: XProblemDisplay.getCurrentSubmission");
    };

    return XProblemDisplay;

  })();

  XProblemGrader = (function() {

    function XProblemGrader(submission, problemState, parameters) {
      this.submission = submission;
      this.problemState = problemState;
      this.parameters = parameters != null ? parameters : {};
      this.solution = null;
      this.evaluation = {};
    }

    XProblemGrader.prototype.solve = function() {
      return console.error("Abstract method called: XProblemGrader.solve");
    };

    XProblemGrader.prototype.grade = function() {
      return console.error("Abstract method called: XProblemGrader.grade");
    };

    return XProblemGrader;

  })();

  root = typeof exports !== "undefined" && exports !== null ? exports : this;

  root.XProblemGenerator = XProblemGenerator;

  root.XProblemDisplay = XProblemDisplay;

  root.XProblemGrader = XProblemGrader;

}).call(this);
