function parseLine( line )

{

   line = line.replace(/^\s*/, "");



   if(    line.toLowerCase().indexOf("sideboard") == 0

      ||    line.toLowerCase().indexOf("maindeck") == 0

      ||   line.match( /^\s*(\/\/.*)?\s*$/ ) )

   {

      return undefined;

   }

   

   var cardname = line;

   var cardcount = 1;

         

   // ignore extra info for lists from apprentice

   cardname = cardname.replace(/^SB: /, "");

   cardname = cardname.replace(/\[.*?\]/, "" );



   if( /^\d+x?\s+/.test(cardname) )

   {   

      var name = cardname.replace(/^\d+\s*(x\s+)?/, "");

      cardcount = cardname.substr( 0, cardname.length - name.length );

      cardcount = parseInt( cardcount );

      cardname = name;

   }   

   

   return { name : cardname, count : cardcount };

}



function Decklist( text )

{

   this.maindeck = new Array;

   this.sideboard = new Array;

   

   if( typeof(text) != "string" )

   {

      return this;

   }

   

   var lines = text.split("\n");

   

   var mode = "maindeck";

   for( var ix = 0; ix < lines.length; ix++ )

   {

      var line = lines[ix].replace(/^\s*/, "");

   

      if(    line.toLowerCase().indexOf("sideboard") == 0

         ||    line.toLowerCase().indexOf("// sideboard") == 0 )

      {

         mode = "sideboard";

      }

      else if( line.toLowerCase().indexOf("maindeck") == 0 )

      {

         mode = "maindeck";

      }

      else

      {

      

         var parsed = parseLine( line );

         if( parsed != undefined )

         {

            this[mode].push( parsed );

         }

      }

   }

}
