/** Character sheet related stuffs */

var sheets = {
  power_fields: ['he', 'miss', 'effect',
                 'hit2', 'he2', 'miss2', 'effect2',
                 'hit3', 'he3', 'miss3', 'effect3',
                 'sustain', 'remote',
                 'trigger', 'requirement', 'weapon', 'special'
                 ],
  non_misc_power_fields: ['target', 'attack', 'hit'],

  // Sheet classes goes here
  System: {
    // Generate template html header
    htmlheader: function(title, style) {
      return "<!DOCTYPE html>"
         + "<html><head>"
         + "<title>" + title + "</title>"
         + '<meta http-equiv="content-type" content="text/html; charset=utf-8">'
         + '<link href="../inc/style.css" rel="stylesheet" type="text/css"/>'
         + '<style type="text/css">' + style + '</style>'
         + '</head><body>'
         ;
    },

    // Generate template html footer
    htmlfooter: function() {
      return '</body></html>';
    },

    // Add prefix and postfix, but only if subject is not empty
    prepost: function(prefix, subject, postfix) {
      if (!subject) return "";
      if (prefix) subject = prefix + subject;
      if (postfix) subject += post;
      return subject;
    },

    // Left-pad a subject to given length
    leftpad: function(pad, subject, length) {
      if (length === undefined) { // Two param, pad default to single space
        length = subject;
        subject = pad;
        pad = ' ';
      }
      subject = '' + subject; // Cast to string
      var l = length - subject.length;
      for (; l > 0; l--)
        subject = pad + subject;
      return subject;
    },


    // Given a language select list, reterive a list of selected scripts
    getScriptsFromLangs: function(languages) {
      var result = [];
      for each (let [lang,state] in Iterator(languages))
        if (state >= chargen.LIST.SELECTED) {
          for each (let [book,langs] in Iterator(chargen.LANGUAGES))
            if (langs[lang]) {
              let script = langs[lang];
              if (result.indexOf(script) < 0) result.push(script);
            }
        }
      return result;
    }
  }
}

/** Sheet generation events */

cgevent.SheetsTemplate = {};
cgevent.onSheetTypeChange = function(evt) {
};

cgevent.onGenSheetClick = function(evt) {
  var win = window.open(null, null, 'toolbar=1,menubar=0,resizable=1,scrollbars=1,height=750,width=800');

  var card = sheets.SafeText.generate(chargen.char);
  win.document.write(card);
  win.document.close();

  return cancelAction(evt);
}