;(function(window) {
  settings = {
    strings: {
      goodRatings:      "Said good",
      badRatings:       "Weren't so sure",
      score:            "Overall happiness",
      zendeskPlug:      "Powered by <a href=\"http://www.zendesk.com/\">Zendesk</a>"
    },
    element: null,
    ratings: {
      good:             100,
      bad:              0
    }
  }

  function configure(options) {
    var prop;
    for (prop in options) {
      if (options.hasOwnProperty(prop)) {
        settings[prop] = options[prop];
      }
    }
  }

  function render() {

    var markup =  '\
        <div class="zd_satisfaction">\
          <div class="zd_satisfaction_good">\
            <p class="zd_rating_number">' + settings.ratings.good + '</p>\
            <p class="zd_rating_string">' + settings.strings.goodRatings + '</p>\
          </div>\
          <div class="zd_satisfaction_bad">\
            <p class="zd_rating_number">' + settings.ratings.bad + '</p>\
            <p class="zd_rating_string">' + settings.strings.badRatings + '</p>\
          </div>\
          <div class="zd_satisfaction_score">\
            <p class="zd_rating_number">' + settings.ratings.good + '%</p>\
            <p class="zd_rating_string">' + settings.strings.score + '</p>\
          </div>\
        </div>\
        <div class="zd_plug">' + settings.strings.zendeskPlug + '</div>\
      ';

    if (settings.element != null && document.getElementById(settings.element)) {
        document.getElementById(settings.element).innerHTML = markup;
    } else if (settings.element == null) {
        document.write(markup);
    } else {
        return;
    }
  }

  var Satisfaction = {
    show: function(options) {
      configure(options);
      render();
    }
  }

  window.Satisfaction = Satisfaction;

}(this.window || this));

