
function getImageSource(cardname) {
  if (cardname === undefined || cardname.length == 0) {
    return;
  }

  var prefix = "http://www.wizards.com/global/images/magic/general/";
  var filename = cardname + ".jpg";

  filename = filename.toLowerCase();

  if (filename.indexOf('\/') > 0) {
    filename = filename.substr(0, filename.indexOf('\/'));
    filename += ".jpg";
  }

  filename = filename.replace(/ /g, "_");
  filename = filename.replace(/:/g, "");
  filename = filename.replace(/'/g, "");
  filename = filename.replace(/,/g, "");
  filename = filename.replace(/-/g, "_");
  filename = filename.replace(/\/\//g, "_");

  // handle æ to ae conversion
  var ae_code = 230;
  if (filename.match(String.fromCharCode(ae_code))) {
    for (var i = 0; i < filename.length; i++) {
	  if (filename.charAt(i) == String.fromCharCode(ae_code)) {
	    var first_part = filename.substr(0,i);
	    var second_part = filename.substr(i+1,(filename.length - i + 1));
	    filename = first_part + "ae" + second_part;
	  }
	}
  }

  if (filename == "cutthroat_il_dal.jpg") {
    filename = "cuttthroat_il_dal.jpg";
  }

  if (filename == "gwyllion_hedge_mage.jpg") {
    filename = "gwyllion_hedge-mage.jpg";
  }

  return prefix + filename;
}

function imageConvert() {

  prefix = "<img src='";

  pack_suffix = "' style='height:143px; width:100px; margin:5px; border:4px solid black;'/>";
  foil_suffix = "' style='height:143px; width:100px; margin:5px; border:4px solid silver;'/>";
  pick_suffix = "' style='height:143px; width:100px; margin:5px; border:4px solid gold;'/>";

  output_field = document.getElementById('draft_out');
  output_field.value = "";
  output_string = "";

  input_field = document.getElementById('draft_in');

  if (input_field.value == "" || input_field.value === undefined) {
    output_field.value = "No input.";
    return;
  }

  user_input = trimLines(input_field.value) + "\n";
  input_array = user_input.split("\n");

  reading_pack = false;
  my_pick = "";
  current_set = "";

  for (i = 0; i < input_array.length; i++) {
    line = input_array[i];

    // set heading
    if (line.substr(0,6) == "------") {
      current_set = line.substr(7,3);
    }

    // pack heading
    if (line.substr(0,4) == "Pack") {
      reading_pack = true;

      if (my_pick != "") {
        output_string += "<br/>\n";
        output_string += "&nbsp;&nbsp;My Pick:"
        output_string += "<br/>\n";
        output_string += my_pick;
        output_string += "\n<br/>\n<br/>\n";
        my_pick = "";
      }

      output_string += "&nbsp;&nbsp;";
      output_string += line;
      output_string += "<br/>\n";
    }

    // picked card
    if (line.substr(0,4) == "--> " && reading_pack) {
      my_pick = prefix + getImageSource(line.replace("--> ", "").replace(" (FOIL)", "")) + pick_suffix;

      if (line.indexOf(" (FOIL)") > -1) {
        current_card = line.replace("--> ", "").replace(" (FOIL)", "");
        output_string += "<a href='javascript:getCardDetails(\"" + current_card.replace(/'/g, "[") + "\", \"" + current_set + "\");'>";
        output_string += prefix + getImageSource(current_card) + foil_suffix;
        output_string += "</a>";
      } else {
        current_card = line.replace("--> ", "");
        output_string += "<a href='javascript:getCardDetails(\"" + current_card.replace(/'/g, "[") + "\", \"" + current_set + "\");'>";
        output_string += prefix + getImageSource(current_card) + pack_suffix;
        output_string += "</a>";
      }

      output_string += "\n";
    }

    // card in pack
    if (line.substr(0,4) == "    " && reading_pack) {
      if (line.indexOf(" (FOIL)") > -1) {
        current_card = line.replace("    ", "").replace(" (FOIL)", "");
        output_string += "<a href='javascript:getCardDetails(\"" + current_card.replace(/'/g, "[") + "\", \"" + current_set + "\");'>";
        output_string += prefix + getImageSource(current_card) + foil_suffix;
        output_string += "</a>";
      } else {
        current_card = line.replace("    ", "");
        output_string += "<a href='javascript:getCardDetails(\"" + current_card.replace(/'/g, "[") + "\", \"" + current_set + "\");'>";
        output_string += prefix + getImageSource(current_card) + pack_suffix;
        output_string += "</a>";
      }

      output_string += "\n";
    }
  }

  // the last pick
  if (my_pick != "") {
    output_string += "<br/>\n";
    output_string += "&nbsp;&nbsp;My Pick:"
    output_string += "<br/>\n";
    output_string += my_pick;
    output_string += "\n<br/>\n<br/>\n";
    my_pick = "";
  }

  // the tagline
  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!";

  var javascript_string = build_javascript();

  document.getElementById('preview').innerHTML = javascript_string + output_string;
  output_field.value = javascript_string + output_string;
}

function trimLines(line) {
  while (line[0] == "\n") {
    line = line.substr(1, line.length - 1);
  }

  while (line[line.length - 1] == "\n") {
    line = line.substr(0, line.length - 1);
  }

  return line;
}

function build_javascript() {
	var javascript_string = "";

	javascript_string += "<script type='text/javascript'>\n";
	javascript_string += "<!-- \n";
	javascript_string += "function getCardDetails(cardname, cardset) {\n";
	javascript_string += "  if (cardname === undefined || cardname.length == 0 || cardset === undefined || cardset.length == 0) {\n";
	javascript_string += "    return;\n";
	javascript_string += "  }\n";
	javascript_string += "  \n";
	javascript_string += "  if (cardset == \"ALA\") {\n";
	javascript_string += "    cardset = \"SHARDS\";\n";
	javascript_string += "  }\n";
	javascript_string += "  \n";
	javascript_string += "  if (cardset == \"SHM\") {\n";
	javascript_string += "    cardset = \"SHA\";\n";
	javascript_string += "  }\n";
	javascript_string += "  \n";
	javascript_string += "  if (cardset == \"CON\") {\n";
	javascript_string += "    cardset = \"CONFLUX\";\n";
	javascript_string += "  }\n";
	javascript_string += "  \n";
	javascript_string += "  if (cardset == \"ARB\") {\n";
	javascript_string += "    cardset = \"ALARA_REBORN\";\n";
	javascript_string += "  }\n";
	javascript_string += "\n";
//	javascript_string += "  var prefix = \"http://sales.starcitygames.com/cardscans/MAG\";\n";
	javascript_string += "  var prefix = \"http://sales.starcitygames.com/cardsearch.php?game_type=1&singlesearch=\";\n";
//	javascript_string += "  prefix += cardset + \"/\";\n";
//	javascript_string += "  var filename = cardname + \".jpg\";\n";
	javascript_string += "  var filename = escape(cardname);\n";
	javascript_string += "  \n";
	javascript_string += "  filename = filename.toLowerCase();\n";
	javascript_string += "  \n";
	javascript_string += "  if (filename.indexOf('\/') > 0) {\n";
	javascript_string += "    filename = filename.substr(0, filename.indexOf('\/'));\n";
	javascript_string += "    filename += \".jpg\";\n";
	javascript_string += "  }\n";
	javascript_string += "  \n";
	javascript_string += "  filename = filename.replace(/ /g, \"_\");\n";
	javascript_string += "  filename = filename.replace(/'/g, \"[\");\n";
	javascript_string += "  filename = filename.replace(/,/g, \"\");\n";
	javascript_string += "  \n";
	javascript_string += "  var ae_code = 230;\n";
	javascript_string += "  if (filename.match(String.fromCharCode(ae_code))) {\n";
	javascript_string += "    for (var i = 0; i < filename.length; i++) {\n";
	javascript_string += "      if (filename.charAt(i) == String.fromCharCode(ae_code)) {\n";
	javascript_string += "        var first_part = filename.substr(0,i);\n";
	javascript_string += "        var second_part = filename.substr(i+1,(filename.length - i + 1));\n";
	javascript_string += "        filename = first_part + \"ae\" + second_part;\n";
	javascript_string += "      }\n";
	javascript_string += "    }\n";
	javascript_string += "  }\n";
	javascript_string += "  \n";
	javascript_string += "  windowName = \"card_popup\";\n";
	javascript_string += "\n";
	javascript_string += "  params  = \"\";\n";
	javascript_string += "  params += \"toolbar=1,\";\n";
	javascript_string += "  params += \"location=1,\";\n";
	javascript_string += "  params += \"directories=0,\";\n";
//	javascript_string += "  params += \"status=0,\";\n";
	javascript_string += "  params += \"menubar=0,\";\n";
//	javascript_string += "  params += \"scrollbars=0,\";\n";
	javascript_string += "  params += \"scrollbars=1,\";\n";
	javascript_string += "  params += \"resizable=1,\";\n";
//	javascript_string += "  params += \"width=255,\";\n";
//	javascript_string += "  params += \"height=345\";\n";
	javascript_string += "\n";
	javascript_string += "  win = window.open(prefix + filename, windowName , params);\n";
	javascript_string += "  win.focus();\n";
	javascript_string += "}\n";
	javascript_string += "--> \n";
	javascript_string += "</script>\n\n";

	return javascript_string;
}
