current_set = "";
output_string = "";
in_array = [];

function main(stylesheet) {
  var input = document.getElementById('draft_in');
  var output = document.getElementById('draft_out');
  var preview = document.getElementById('preview');

  output.value = "Working...";

  init_globals();
  write_stylesheet();

  in_array = trim_whitespace(input.value).split('\n');
  in_array.push("\n");
  parse_draft();

  output_string += "This draft converter created by <a href='mailto:ben@mundy.net'>Benjamin Peebles-Mundy</a>.<br/>\n";
  output_string += "Visit the <a href='http://www.zizibaloob.com/'>draft converter</a> today!";

  output.value = output_string;
  preview.innerHTML = output_string;
}

function parse_draft() {
  var card_names = [];
  var my_pick = "";
  var card = "";
  var line = "";

  // get rid of the header, and grab first set symbol
  while (in_array.length > 0) {
    line = in_array.shift();

    if (line.match(/------/) != null) {
      current_set = line.replace(/-/g, "");
      current_set = current_set.replace(/ /g, "");

      in_array.shift();
      break;
    }
  }

  // parse the rest of the draft file
  while (in_array.length > 0) {
    line = in_array.shift();

    // pack is finished on a blank line...
    if (line.replace(/\s/g, "").length == 0) {
      while (card_names.length > 0) {
        card = card_names.shift();
        output_string += "<img src='" + get_image(card, current_set) + "' " + get_style(card) + "/>\n";
      }

      output_string += "<br/>\n&nbsp;&nbsp;My Pick:\n<br/>\n";
      output_string += "<img src='" + get_image(my_pick, current_set) + "' " + get_pick_style(my_pick) + "/>\n<br/><br/>\n";
      my_pick = "";

      continue;
    }

    // ...or check for pick number...
    if (line.match(/Pack [0-9] pick 1?[0-9]:/) != null) {
      output_string += "&nbsp;&nbsp;" + line + "\n<br/>\n";
      continue;
    }

    // ...or check for set symbol...
    if (line.match(/------/) != null) {
      current_set = line.replace(/-/g, "");
      current_set = current_set.replace(/ /g, "");

      in_array.shift();
      continue;
    }

    // ...or read the pack
    card_names.push(line.substring(4, line.length));

    if (line.substring(0, 4) == "--> ") {
      my_pick = line.substring(4, line.length);
    }
  }
}

function init_globals() {
  output_string = "";
  current_set = "";
  in_array = [];
}

function write_stylesheet() {
  if (document.getElementById('stylesheet').checked) {
    output_string += "<style type='text/css'>\n";
    output_string += "<!--\n";
    output_string += "img.card { height:143px; width:100px; margin:5px; border:4px solid black; }\n";
    output_string += "img.foil { height:143px; width:100px; margin:5px; border:4px solid silver; }\n";
    output_string += "img.pick { height:143px; width:100px; margin:5px; border:4px solid gold; }\n";
    output_string += "-->\n";
    output_string += "</style>\n\n";
  }
}

function trim_whitespace(s) {
  while (s.charAt(0).match(/\s/)) {
    s = s.substring(1, s.length);
  }

  while (s.charAt(s.length - 1).match(/\s/)) {
    s = s.substring(0, s.length - 1);
  }

  return s;
}

function get_image(cardname, set) {
  cardname = cardname.toLowerCase();

  // ignore foils
  cardname = cardname.replace(/ \(foil\)/g, "");

  // handle special characters
  cardname = cardname.replace(/ /g, "_");
  cardname = cardname.replace(/:/g, "");
  cardname = cardname.replace(/'/g, "");
  cardname = cardname.replace(/,/g, "");
  cardname = cardname.replace(/-/g, "_");
  cardname = cardname.replace(/\/\//g, "_");
  cardname = cardname.replace(new RegExp(String.fromCharCode(230), "g"), "ae");

  if (set == "CON") {
    set = "general";
  }

  return "http://www.wizards.com/global/images/magic/" + set + "/" + cardname + ".jpg";
}

function get_style(cardname) {
  if (cardname.match(/ \(FOIL\)/) != null) {
    return document.getElementById('stylesheet').checked
           ? "class='foil'"
           : "style='height:143px; width:100px; margin:5px; border:4px solid silver;'";
  } else {
    return document.getElementById('stylesheet').checked
           ? "class='card'"
           : "style='height:143px; width:100px; margin:5px; border:4px solid black;'";
  }
}

function get_pick_style(cardname) {
  return document.getElementById('stylesheet').checked
         ? "class='pick'"
         : "style='height:143px; width:100px; margin:5px; border:4px solid gold;'";
}
