Difference between revisions of "MediaWiki:ExpansionData.js"

From Wikicarpedia
Jump to navigation Jump to search
m (Debugging)
m (Added C2 German Castles)
Line 473: Line 473:
     inputFieldId: "inputGermanCastles",
     inputFieldId: "inputGermanCastles",
     className: "showGermanCastles",
     className: "showGermanCastles",
     edition: [ "C1" ],
     edition: [ "C1", "C2" ],
     group: GROUP_MINOR,
     group: GROUP_MINOR,
     selected: false
     selected: false

Revision as of 16:50, 7 April 2019

//
// Expansion Selector Data
//

// Global preferences
var PreferencesMap = 
{
  show: { C1: true, C2: true, WE: false },    // Editions visible
  prefer: "C2",                               // Edition preferences serving as primary
  marks: false                                // Highlights Order of Play 
};


// Constants to identify by number tabs and selector ids
var GROUP_MAJOR = 0,
    GROUP_MINOR = 1,
    GROUP_LICENSED = 2,
    GROUP_OTHER = 2,
    GROUP_TOTAL = 3;

//
// Base expansion info - Master Tree of Expansions
//
// Generates CSS classes for:
//  * Individual entries: 1 class name indicated by "className"
//  * Group entries: 4 derived class names based on prefix indicated by "classNamePrefix"
//    - <Prefix_> + Full: visible when all the entries in the group are selected
//    - <Prefix_> + None: visible when none of the entries in the group is selected
//    - <Prefix_> + Any: visible when any of the entries in the group is selected
//    - <Prefix_> + Partial: visible when some -but not all- of the entries in the group are selected
//
var ItemTree = 
[
  { 
    label: "Exp. 1 - Inns And Cathedrals",
    inputFieldId: "inputInnsAndCathedrals",
    classNamePrefix: "showInnsAndCathedrals_",   // Generates: <Prefix_> + [Full|Any|None|Partial]
    edition: [ "C1", "C2" ],
    group: GROUP_MAJOR,
    selected: false,
    open: false,
    children: 
    [
      {
        label: "Inns",
        inputFieldId: "inputInns",
        className: "showInns"
      },
      {
        label: "Cathedrals",
        inputFieldId: "inputCathedrals",
        className: "showCathedrals"
      },
      {
        label: "Big Follower",
        inputFieldId: "inputBigFollower",
        className: "showBigFollower"
      },
    ]
  },
  { 
    label: "Exp. 2 - Traders And Builders",
    inputFieldId: "inputTradersAndBuilders",
    classNamePrefix: "showTradersAndBuilders_",   // Generates: <Prefix_> + [Full|Any|None|Partial]
    edition: [ "C1", "C2" ],
    group: GROUP_MAJOR,
    selected: false,
    open: false,
    children: 
    [
      {
        label: "Trade good tokens",
        inputFieldId: "inputTraders",
        className: "showTraders"
      },
      {
        label: "Builder",
        inputFieldId: "inputBuilder",
        className: "showBuilder"
      },
      {
        label: "Pig",
        inputFieldId: "inputPig",
        className: "showPig"
      },
    ]
  },
  { 
    label: "Exp. 3 - The Princess And The Dragon",
    inputFieldId: "inputPrincessAndDragon",
    classNamePrefix: "showPrincessAndDragon_",   // Generates: <Prefix_> + [Full|Any|None|Partial]
    edition: [ "C1", "C2" ],
    group: GROUP_MAJOR,
    selected: false,
    open: false,
    children: 
    [
      {
        label: "Princess",
        inputFieldId: "inputPrincess",
        className: "showPrincess"
      },
      {
        label: "Dragon",
        inputFieldId: "inputDragon",
        className: "showDragon"
      },
      {
        label: "Fairy",
        inputFieldId: "inputFairy",
        className: "showFairy"
      },
      {
        label: "Magic portal",
        inputFieldId: "inputMagicPortal",
        className: "showMagicPortal"
      },
    ]
  },
  {
    label: "Exp. 4 - The Tower",
    inputFieldId: "inputTower",
    className: "showTower",
    edition: [ "C1", "C2" ],
    group: GROUP_MAJOR,
    selected: false
  },
  { 
    label: "Exp. 5 - Abbey &amp; Mayor",
    inputFieldId: "inputAbbeyAndMayor",
    classNamePrefix: "showAbbeyAndMayor_",   // Generates: <Prefix_> + [Full|Any|None|Partial]
    edition: [ "C1", "C2" ],
    group: GROUP_MAJOR,
    selected: false,
    open: false,
    children: 
    [
      {
        label: "Abbey",
        inputFieldId: "inputAbbey",
        className: "showAbbey"
      },
      {
        label: "Mayor",
        inputFieldId: "inputMayor",
        className: "showMayor"
      },
      {
        label: "Wagon",
        inputFieldId: "inputWagon",
        className: "showWagon"
      },
      {
        label: "Barn",
        inputFieldId: "inputBarn",
        className: "showBarn"
      },
    ]
  },
  { 
    label: "Exp. 6 - Count, King &amp; Robber",
    inputFieldId: "inputCountKingAndRobber",
    classNamePrefix: "showCountKingAndRobber_",   // Generates: <Prefix_> + [Full|Any|None|Partial]
    edition: [ "C1", "C2" ],
    group: GROUP_MAJOR,
    selected: false,
    open: false,
    children: 
    [
      {
        label: "Count of Carcassonne",
        inputFieldId: "inputCountOfCarcassonne",
        className: "showCountOfCarcassonne"
      },
      {
        label: "King & Robber Baron",
        inputFieldId: "inputKingAndRobber",
        className: "showKingAndRobber"
      },
      {
        label: "The River II",
        inputFieldId: "inputRiverII",
        className: "showRiverII"
      },
      {
        label: "Shrines",
        inputFieldId: "inputShrines",
        className: "showShrines"
      },
    ]
  },
  {
    label: "Exp. 7 - The Catapult",
    inputFieldId: "inputCatapult",
    className: "showCatapult",
    edition: [ "C1" ],
    group: GROUP_MAJOR,
    selected: false
  },
  { 
    label: "Exp. 8 - Bridges, Castles &amp; Bazaars",
    inputFieldId: "inputBridgesCastlesAndBazaars",
    classNamePrefix: "showBridgesCastlesAndBazaars_",// Generates: <Prefix_>+[Full|Any|None|Partial]
    edition: [ "C1", "C2" ],
    group: GROUP_MAJOR,
    selected: false,
    open: false,
    children: 
    [
      {
        label: "Bridges",
        inputFieldId: "inputBridges",
        className: "showBridges"
      },
      {
        label: "Castles",
        inputFieldId: "inputCastles",
        className: "showCastles"
      },
      {
        label: "Bazaars",
        inputFieldId: "inputBazaars",
        className: "showBazaars"
      },
    ]
  },
  { 
    label: "Exp. 9 - Hills &amp; Sheep",
    inputFieldId: "inputHillsAndSheep",
    classNamePrefix: "showHillsAndSheep_",   // Generates: <Prefix_> + [Full|Any|None|Partial]
    edition: [ "C1", "C2" ],
    group: GROUP_MAJOR,
    selected: false,
    open: false,
    children: 
    [
      {
        label: "Hills",
        inputFieldId: "inputHills",
        className: "showHills"
      },
      {
        label: "Shepherd",
        inputFieldId: "inputSheep",
        className: "showSheep"
      },
      {
        label: "Vineyards",
        inputFieldId: "inputVineyards",
        className: "showVineyards"
      },
    ]
  },
  { 
    label: "Exp. 10 - Under The Big Top",
    inputFieldId: "inputUnderTheBigTop",
    classNamePrefix: "showUnderTheBigTop_",   // Generates: <Prefix_> + [Full|Any|None|Partial]
    edition: [ "C2" ],
    group: GROUP_MAJOR,
    selected: false,
    open: false,
    children: 
    [
      {
        label: "Circus",
        inputFieldId: "inputCircus",
        className: "showCircus"
      },
      {
        label: "Acrobats",
        inputFieldId: "inputAcrobats",
        className: "showAcrobats"
      },
      {
        label: "Ringmaster",
        inputFieldId: "inputRingmaster",
        className: "showRingmaster"
      },
    ]
  },
  {
    label: "The Wheel Of Fortune",
    inputFieldId: "inputWheelOfFortune",
    className: "showWheelOfFortune",
    edition: [ "C1" ],
    group: GROUP_MAJOR,
    selected: false
  },
  {
    label: "Mini 1 - The Flier",
    inputFieldId: "inputFlier",
    className: "showFlier",
    edition: [ "C1", "C2" ],
    group: GROUP_MINOR,
    selected: false
  },
  {
    label: "Mini 2 - Dispatches (Messages)",
    inputFieldId: "inputMessages",
    className: "showMessages",
    edition: [ "C1", "C2" ],
    group: GROUP_MINOR,
    selected: false
  },
  {
    label: "Mini 3 - The Ferries",
    inputFieldId: "inputFerries",
    className: "showFerries",
    edition: [ "C1", "C2" ],
    group: GROUP_MINOR,
    selected: false
  },
  {
    label: "Mini 4 - Goldmines",
    inputFieldId: "inputGoldmines",
    className: "showGoldmines",
    edition: [ "C1", "C2" ],
    group: GROUP_MINOR,
    selected: false
  },
  {
    label: "Mini 5 - Mage & Witch",
    inputFieldId: "inputMageAndWitch",
    classNamePrefix: "showMageAndWitch_",
    edition: [ "C1", "C2" ],
    group: GROUP_MINOR,
    selected: false,
    open: false,
    children: 
    [
      {
        label: "Mage",
        inputFieldId: "inputMage",
        className: "showMage"
      },
      {
        label: "Witch",
        inputFieldId: "inputWitch",
        className: "showWitch"
      },
    ]
  },
  {
    label: "Mini 6 - Robbers",
    inputFieldId: "inputRobbers",
    className: "showRobbers",
    edition: [ "C1", "C2" ],
    group: GROUP_MINOR,
    selected: false
  },
  {
    label: "Mini 7 - Crop Circles & Crop Circles II / WE Corn Circles",
    inputFieldId: "inputCropCricles",
    className: "showCropCircles",
    edition: [ "C1", "C2", "WE" ],
    group: GROUP_MINOR,
    selected: false
  },
  {
    label: "The River",
    inputFieldId: "inputRiverI",
    className: "showRiverI",
    edition: [ "C1", "C2" ],
    group: GROUP_MINOR,
    selected: false
  },
  {
    label: "Cathars / Siege / Besiegers",
    inputFieldId: "inputCathars",
    className: "showCathars",
    edition: [ "C1" ],
    group: GROUP_MINOR,
    selected: false
  },
  {
    label: "Mini Expansion GQ#11",
    inputFieldId: "inputGQ11",
    className: "showGQ11",
    edition: [ "C1" ],
    group: GROUP_LICENSED,
    selected: false
  },
  {
    label: "The Phantom",
    inputFieldId: "inputPhantom",
    className: "showPhantom",
    edition: [ "C1", "C2" ],
    group: GROUP_MINOR,
    selected: false
  },
  {
    label: "Halflings",
    inputFieldId: "inputHalflings",
    className: "showHalflings",
    edition: [ "C1" ],
    group: GROUP_MINOR,
    selected: false
  },
  {
    label: "The Plague",
    inputFieldId: "inputPlague",
    className: "showPlague",
    edition: [ "C1" ],
    group: GROUP_LICENSED,
    selected: false
  },
  {
    label: "The Tunnel",
    inputFieldId: "inputTunnel",
    className: "showTunnel",
    edition: [ "C1" ],
    group: GROUP_LICENSED,
    selected: false
  },
  {
    label: "The Festival",
    inputFieldId: "inputFestival",
    className: "showFestival",
    edition: [ "C1", "C2" ],
    group: GROUP_MINOR,
    selected: false
  },
  {
    label: "The Wind Roses",
    inputFieldId: "inputWindRoses",
    className: "showWindRoses",
    edition: [ "C1" ],
    group: GROUP_LICENSED,
    selected: false
  },
  {
    label: "Little Buildings",
    inputFieldId: "inputLittleBuildings",
    className: "showLittleBuildings",
    edition: [ "C1" ],
    group: GROUP_LICENSED,
    selected: false
  },
  {
    label: "Darmstadt Promo",
    inputFieldId: "inputDarmstadt",
    className: "showDarmstadt",
    edition: [ "C1" ],
    group: GROUP_LICENSED,
    selected: false
  },
  {
    label: "The School",
    inputFieldId: "inputTeacher",
    className: "showTeacher",
    edition: [ "C1" ],
    group: GROUP_MINOR,
    selected: false
  },
  {
    label: "Russian Promos",
    inputFieldId: "inputRussianPromos",
    className: "showRussianPromos",
    edition: [ "C1" ],
    group: GROUP_LICENSED,
    selected: false
  },
  {
    label: "La Porxada",
    inputFieldId: "inputPorxada",
    className: "showPorxada",
    edition: [ "C1" ],
    group: GROUP_OTHER,
    selected: false
  },
  {
    label: "German Castles",
    inputFieldId: "inputGermanCastles",
    className: "showGermanCastles",
    edition: [ "C1", "C2" ],
    group: GROUP_MINOR,
    selected: false
  },
  {
    label: "German Cathedrals",
    inputFieldId: "inputGermanCathedrals",
    className: "showGermanCathedrals",
    edition: [ "C1" ],
    group: GROUP_MINOR,
    selected: false
  },
  {
    label: "Monasteries in Germany or Netherlands & Belgium / Japanese buildings",
    inputFieldId: "inputMonasteries",
    className: "showMonasteries",
    edition: [ "C1", "C2" ],
    group: GROUP_MINOR,
    selected: false
  },
  {
    label: "Spiel Promo Tiles",
    inputFieldId: "inputSpielPromos",
    className: "showSpielPromos",
    edition: [ "C2" ],
    group: GROUP_LICENSED,
    selected: false
  },
  {
    label: "The Labyrinth",
    inputFieldId: "inputLabyrinth",
    className: "showLabyrinth",
    edition: [ "C1", "C2" ],
    group: GROUP_LICENSED,
    selected: false
  },
  {
    label: "The Abbot",
    inputFieldId: "inputAbbotAndGardens",
    classNamePrefix: "showAbbotAndGardens_",
    edition: [ "C2" ],
    group: GROUP_MINOR,
    selected: false,
    hidden: false,
    open: false,
    children: 
    [
      {
        label: "Abbot",
        inputFieldId: "inputAbbot",
        className: "showAbbot"
      },
      {
        label: "Gardens",
        inputFieldId: "inputGardens",
        className: "showGardens"
      },
    ]
  },
  {
    label: "The Watchtowers",
    inputFieldId: "inputWatchtowers",
    className: "showWatchtowers",
    edition: [ "C2" ],
    group: GROUP_MINOR,
    selected: false,
    hidden: false
  },
  {
    label: "Markets Of Leipzig",
    inputFieldId: "inputMarketsOfLeipzig",
    className: "showMarketsOfLeipzig",
    edition: [ "C2" ],
    group: GROUP_MINOR,
    selected: false,
    hidden: false
  },
  {
    label: "The Fruit-Bearing Trees",
    inputFieldId: "inputFruitBearingTrees",
    className: "showFruitBearingTrees",
    edition: [ "C2" ],
    group: GROUP_MINOR,
    selected: false,
    hidden: false
  },
  {
    label: "The Barber-Surgeons",
    inputFieldId: "inputBathhouses",
    className: "showBathhouses",
    group: GROUP_MINOR,
    edition: [ "C2" ],
    selected: false,
    hidden: false
  },
  {
    label: "Spiel Doch! 02/2018",
    inputFieldId: "inputSpielDoch2018",
    className: "showSpielDoch2018",
    group: GROUP_LICENSED,
    edition: [ "C2" ],
    selected: false,
    hidden: false
  },


/*
  {
    label: "Winter Edition",
    inputFieldId: "inputWinter",
    className: "showWinter",
    category: "WE",
    selected: false,
    hidden: true
  },
*/
  {
    label: "WE Gingerbread Man",
    inputFieldId: "inputGingerbreadMan",
    className: "showGingerbreadMan",
    edition: [ "WE" ],
    group: GROUP_MINOR,
    selected: false,
    hidden: false
  },

];


// Constants for expresions
var AND = function ( a, b ) { return ( a && b ); }, 
    OR = function ( a, b ) { return ( a || b ); }, 
    NOT = function ( a ) { return !( a ); },
    COUNT = function ( a, b ) { return ( +a ) + ( +b ); };

// Constants for associanted actions
var ACTION_SET_VISIBILITY = "SET_VISIBILITY",
    ACTION_SET_COLSPAN = "SET_COLSPAN",
    ACTION_SET_ROWSPAN = "SET_ROWSPAN";

// Derives classes definition
var DerivedClassesTable =
[
// -- Order Of Play --
  {
    className: "showAlternativeRulesMessage",
    expression: [ AND, "showC1", [ OR, "showDragon", "showMessages" ] ]
  },
  {
    className: "showBazaarsOrAbbeyOrHalflingsOrGermanCastles",
    expression: [ OR, "showBazaars", "showAbbey", "showHalflings", "showGermanCastles" ]
  },
  {
    className: "showNotBazaarsAndNotAbbeyAndNotHalflingsAndNotGermanCastles",
    expression: [ NOT, "showBazaarsOrAbbeyOrHalflingsOrGermanCastles" ]
  },
  {
    className: "showNotFairyAndNotPlague",
    expression: [ NOT, [ OR, "showFairy", "showPlague" ] ]
  },
  {
    className: "showMageOrWitch",
    expression: [ OR, "showMage", "showWitch" ]
  },
  {
    className: "showMageAndWitch",
    expression: [ AND, "showMage", "showWitch" ]
  },
  {
    className: "showMageAndNotWitch",
    expression: [ AND, "showMage", [ NOT, "showWitch" ] ]
  },
  {
    className: "showNotMageAndWitch",
    expression: [ AND, [ NOT, "showMage" ], "showWitch" ]
  },
  {
    className: "showNotPrincess",
    expression: [ NOT, "showPrincess" ]
  },
  {
    className: "showNotPhantom",
    expression: [ NOT, "showPhantom" ]
  },
  {
    className: "showFlierOrMagicPortal",
    expression: [ OR, "showFlier", "showMagicPortal" ]
  },
  {
    className: "showFlierAndMagicPortal",
    expression: [ AND, "showFlier", "showMagicPortal" ]
  },
  {
    className: "showFlierAndNotMagicPortal",
    expression: [ AND, "showFlier", [ NOT, "showMagicPortal" ] ]
  },
  {
    className: "showNotFlierAndMagicPortal",
    expression: [ AND, [ NOT, "showFlier" ], "showMagicPortal" ]
  },
  {
    className: "showDragonAndC1",
    expression: [ AND, "showDragon", "showC1" ]
  },
  {
    className: "showDragonAndC2",
    expression: [ AND, "showDragon", "showC2" ]
  },
  {
    className: "showDragonAndNotRiverII",
    expression: [ AND, "showDragon", [ NOT, "showRiverII" ] ]
  },
  {
    className: "showDragonAndPlague",
    expression: [ AND, "showDragon", "showPlague" ]
  },
  {
    className: "showNotDragonAndPlague",
    expression: [ AND, [ NOT, "showDragon" ], "showPlague" ]
  },
  {
    className: "showDragonAndNotPlague",
    expression: [ AND, "showDragon", [ NOT, "showPlague" ] ]
  },
  {
    className: "showEntriesStep5",
    expression: [ OR, "showFerries", "showSheep", "showFruitBearingTrees", "showDragonAndC1" ]
  },
  {
    className: "showNoEntriesStep5",
    expression: [ NOT, "showEntriesStep5" ]
  },
  {
    className: "showTradersOrKingAndRobber",
    expression: [ OR, "showTraders", "showKingAndRobber" ]
  },
  {
    className: "showNotMessages",
    expression: [ NOT, "showMessages" ]
  },
  {
    className: "showPigOrBuilderOrSheep",
    expression: [ OR, "showPig", "showBuilder", "showSheep" ]
  },
  {
    className: "showMessagesOrRobbers",
    expression: [ OR, "showMessages", "showRobbers" ]
  },
  {
    className: "showWoFOrFestivalOrAbbotOrRussianPromos",
    expression: [ OR, "showWheelOfFortune", "showFestival", "showAbbot", "showRussianPromos" ]
  }, 
  {
    className: "showTowerOrLittleBuildingsOrFairy",
    expression: [ OR, "showTower", "showLittleBuildings", "showFairy" ]
  },
  {
    className: "showNotBuilderAndBazaars",
    expression: [ AND, [ NOT, "showBuilder" ] , "showBazaars" ]
  },
  {
    className: "showBuilderAndBazaars",
    expression: [ AND, "showBuilder", "showBazaars" ]
  },
  {
    className: "showCountOfCarcassonneOrMarketsOfLeipzig",
    expression: [ OR, "showCountOfCarcassonne", "showMarketsOfLeipzig" ]
  }, 
  {
    className: "showCountOfCarcassonneAndMarketsOfLeipzig",
    expression: [ AND, "showCountOfCarcassonne", "showMarketsOfLeipzig" ]
  }, 
  {
    className: "showCountOfCarcassonneAndNotMarketsOfLeipzig",
    expression: [ AND, "showCountOfCarcassonne", [ NOT, "showMarketsOfLeipzig" ] ]
  }, 
  {
    className: "showNotCountOfCarcassonneAndMarketsOfLeipzig",
    expression: [ AND, [ NOT, "showCountOfCarcassonne" ], "showMarketsOfLeipzig" ]
  }, 
  {
    className: "showCountOfCarcassonneOrMarketsOfLeipzigOrCastles",
    expression: [ OR, "showCountOfCarcassonne", "showMarketsOfLeipzig", "showCastles" ]
  }, 
  {
    className: "showNotCatapultAndNotCropCirclesAndNotCatharsAndNotBazaars",
    expression: [ NOT, [ OR, "showCatapult", "showCropCircles", "showCathars", "showBazaars" ] ]
  }, 
  {
    className: "showNotBuilder",
    expression: [ NOT, "showBuilder" ]
  },
  {
    className: "showNotBathhouses",
    expression: [ NOT, "showBathhouses" ]
  },
// -- Figure Reference
  {
    className: "showBuilderOrPigOrBarnOrSheep",
    expression: [ OR, "showBuilder", "showPig", "showBarn", "showSheep" ]
  },
  {
    className: "showNotBuilderAndNotPigAndNotBarnAndNotSheep",
    expression: [ NOT, "showBuilderOrPigOrBarnOrSheep" ]
  },
  {
    className: "showTowerOrCatharsOrPrincess",
    expression: [ OR, "showTower", "showCathars", "showPrincess" ]
  },
  {
    className: "showNeutralFiguresPart1",
    expression: [ OR, "showDragon", "showFairy", "showTower", "showCountOfCarcassonne", "showBridges", "showCircus", "showWheelOfFortune"  ]
  },
  {
    className: "showNotNeutralFiguresPart1",
    expression: [ NOT, "showNeutralFiguresPart1" ]
  },
  {
    className: "showNeutralFiguresPart2",
    expression: [ OR, "showFlier", "showFerries", "showGoldmines", "showMage", "showWitch", "showTeacher", "showGingerbreadMan" ]
  },
  {
    className: "showNotNeutralFiguresPart2",
    expression: [ NOT, "showNeutralFiguresPart2" ]
  },
  {
    className: "showDragonFairyOrCastlesOrCountOfCarcassonneOrWoFOrGermanCastlesOrMarketsOfLeipzig",
    expression: [ AND, "showDragon", [ OR, "showFairy", "showCastles", "showCountOfCarcassonne", "showWheelOfFortune", "showGermanCastles", "showMarketsOfLeipzig" ] ]
  },

  {
    className: "showCatapultForMayor",
    expression: [ AND, "showCatapult", "showMayor" ]
  },
  {
    className: "showCatapultForWagon",
    expression: [ AND, "showCatapult", "showWagon" ]
  },
  {
    className: "showCatapultForAbbot",
    expression: [ AND, "showCatapult", "showAbbot" ]
  },


  {
    className: "showSectionFigureDeploymentByOtherMeans",
    expression: [ OR, "showMagicPortal", "showFlier", "showCropCircles" ],
  },

  {
    className: "showMagicPortalOrFlier",
    expression: [ OR, "showMagicPortal", "showFlier" ],
  },
  {
    className: "showMagicPortalOrFlierForPhantom",
    expression: [ AND, "showMagicPortalOrFlier", "showPhantom" ],
  },
  {
    className: "showMagicPortalForPhantom",
    expression: [ AND, "showMagicPortal", "showPhantom" ],
  },
  {
    className: "showFlierForPhantom",
    expression: [ AND, "showFlier", "showPhantom" ],
  },

  {    
    className: "showSectionDeploymentTriggeredByEvents",
    expression: [ OR, "showWagon", "showCountOfCarcassonne", "showRussianPromos", "showMarketsOfLeipzig", "showBathhouses", "showCatapult" ]
  },
  {
    className: "showSectionFigureRemoval",
    expression: [ OR, "showDragon", "showAbbot", "showPrincess", "showTower", "showCropCircles", "showCathars", "showFestival", "showPlague", "showCatapult", "showRussianPromos", "showBathhouses" ],
  },
  {
    className: "showSectionNeutralFigureRemoval",
    expression: [ OR, "showDragon", "showCircus", "showPrincess", "showTower", "showCropCircles", "showCathars", "showFestival", "showPlague", "showCatapult", "showRussianPromos", "showBathhouses" ],
  },
  {    
    className: "showSectionDragonProtection",
    expression: [ AND, "showDragon", [ OR, "showFairy", "showCastles", "showCountOfCarcassonne", "showWheelOfFortune", "showGermanCastles", "showMarketsOfLeipzig" ] ]
  },
  {    
    className: "showSectionTowerProtection",
    expression: [ AND, "showTower", [ OR, "showFairy", "showCastles", "showCountOfCarcassonne", "showWheelOfFortune", "showGermanCastles", "showMarketsOfLeipzig" ] ]
  },
  {    
    className: "showSectionPlagueProtection",
    expression: [ AND, "showPlague", [ OR, "showFairy", "showCastles", "showCountOfCarcassonne", "showWheelOfFortune", "showGermanCastles", "showMarketsOfLeipzig" ] ]
  },


  {    
    className: "showDragonAndFairy",
    expression: [ AND, "showDragon", "showFairy" ]
  },
  {    
    className: "showDragonAndCastles",
    expression: [ AND, "showDragon", "showCastles" ]
  },
  {
    className: "showDragonAndCountOfCarcassonne",
    expression: [ AND, "showDragon", "showCountOfCarcassonne" ]
  },
  {
    className: "showDragonAndWoF",
    expression: [ AND, "showDragon", "showWheelOfFortune" ]
  },
  {
    className: "showDragonAndGermanCastles",
    expression: [ AND, "showDragon", "showGermanCastles" ]
  },
  {
    className: "showDragonAndMarketsOfLeipzig",
    expression: [ AND, "showDragon", "showMarketsOfLeipzig" ]
  },


  {    
    className: "showTowerAndFairy",
    expression: [ AND, "showTower", "showFairy" ]
  },
  {    
    className: "showTowerAndCastles",
    expression: [ AND, "showTower", "showCastles" ]
  },
  {
    className: "showTowerAndCountOfCarcassonne",
    expression: [ AND, "showTower", "showCountOfCarcassonne" ]
  },
  {
    className: "showTowerAndWoF",
    expression: [ AND, "showTower", "showWheelOfFortune" ]
  },
  {
    className: "showTowerAndGermanCastles",
    expression: [ AND, "showTower", "showGermanCastles" ]
  },
  {
    className: "showTowerAndMarketsOfLeipzig",
    expression: [ AND, "showTower", "showMarketsOfLeipzig" ]
  },


  {    
    className: "showPlagueAndFairy",
    expression: [ AND, "showPlague", "showFairy" ]
  },
  {    
    className: "showPlagueAndCastles",
    expression: [ AND, "showPlague", "showCastles" ]
  },
  {
    className: "showPlagueAndCountOfCarcassonne",
    expression: [ AND, "showPlague", "showCountOfCarcassonne" ]
  },
  {
    className: "showPlagueAndWoF",
    expression: [ AND, "showPlague", "showWheelOfFortune" ]
  },
  {
    className: "showPlagueAndGermanCastles",
    expression: [ AND, "showPlague", "showGermanCastles" ]
  },
  {
    className: "showPlagueAndMarketsOfLeipzig",
    expression: [ AND, "showPlague", "showMarketsOfLeipzig" ]
  },


  {
    className: "showCountOfCarcassonneForMayor",
    expression: [ AND, "showCountOfCarcassonne", "showMayor" ]
  },
  {
    className: "showCountOfCarcassonneForWagon",
    expression: [ AND, "showCountOfCarcassonne", "showWagon" ]
  },
  {
    className: "showCountOfCarcassonneForAbbot",
    expression: [ AND, "showCountOfCarcassonne", "showAbbot" ]
  },
  {
    className: "showAcrobatsForPhantom",
    expression: [ AND, "showAcrobats", "showPhantom" ]
  },
  {
    className: "showMayorOrWagon",
    expression: [ AND, "showMayor", "showWagon" ]
  },

  {
    className: "showMonasteriesForBigFollowerOrWagonOrRingmasterOrAbbotOrPhantom",
    expression: [ AND, "showMonasteries", [ OR, "showBigFollower", "showWagon", "showRingmaster", "showAbbot", "showPhantom" ] ]
  },
  {
    className: "showMarketsOfLeipzigForBigFollowerOrWagonOrRingmasterOrPhantom",
    expression: [ AND, "showMarketsOfLeipzig", [ OR, "showBigFollower", "showWagon", "showRingmaster", "showPhantom" ] ]
  },
  {
    className: "showMagicPortalOrFlierOrCropCirclesForMayorOrWagonOrAbbot",
    expression: [ AND, [ OR, "showMagicPortal", "showFlier", "showCropCircles" ], [ OR, "showMayor", "showWagon", "showAbbot" ] ]
  },
  {    
    className: "showDragonAndFairyAndAcrobats",
    expression: [ AND, "showDragon", "showFairy", "showAcrobats" ]
  },
  {    
    className: "showTowerAndFairyAndAcrobats",
    expression: [ AND, "showTower", "showFairy", "showAcrobats" ]
  },
  {    
    className: "showPlagueAndFairyAndAcrobats",
    expression: [ AND, "showPlague", "showFairy", "showAcrobats" ]
  },

  {    
    className: "showTowerForBigFollower",
    expression: [ AND, "showTower", "showBigFollower" ]
  },
  {    
    className: "showTowerForRingmaster",
    expression: [ AND, "showTower", "showRingmaster" ]
  },
  {    
    className: "showTowerForPhantom",
    expression: [ AND, "showTower", "showPhantom" ]
  },
  {    
    className: "showRussianPromosForBigFollower",
    expression: [ AND, "showRussianPromos", "showBigFollower" ]
  },
  {    
    className: "showRussianPromosForMayor",
    expression: [ AND, "showRussianPromos", "showMayor" ]
  },
  {    
    className: "showRussianPromosForWagon",
    expression: [ AND, "showRussianPromos", "showWagon" ]
  },
  {    
    className: "showRussianPromosForRingmaster",
    expression: [ AND, "showRussianPromos", "showRingmaster" ]
  },
  {    
    className: "showRussianPromosForAbbot",
    expression: [ AND, "showRussianPromos", "showAbbot" ]
  },
  {    
    className: "showRussianPromosForPhantom",
    expression: [ AND, "showRussianPromos", "showPhantom" ]
  },
  {    
    className: "showMonasteriesForBigFollower",
    expression: [ AND, "showMonasteries", "showBigFollower" ]
  },
  {    
    className: "showMonasteriesForWagon",
    expression: [ AND, "showMonasteries", "showWagon" ]
  },
  {    
    className: "showMonasteriesForRingmaster",
    expression: [ AND, "showMonasteries", "showRingmaster" ]
  },
  {    
    className: "showMonasteriesForAbbot",
    expression: [ AND, "showMonasteries", "showAbbot" ]
  },
  {    
    className: "showMonasteriesForPhantom",
    expression: [ AND, "showMonasteries", "showPhantom" ]
  },

  {    
    className: "showMarketsOfLeipzigForBigFollower",
    expression: [ AND, "showMarketsOfLeipzig", "showBigFollower" ]
  },
  {    
    className: "showMarketsOfLeipzigForWagon",
    expression: [ AND, "showMarketsOfLeipzig", "showWagon" ]
  },
  {    
    className: "showMarketsOfLeipzigForRingmaster",
    expression: [ AND, "showMarketsOfLeipzig", "showRingmaster" ]
  },
  {    
    className: "showMarketsOfLeipzigForPhantom",
    expression: [ AND, "showMarketsOfLeipzig", "showPhantom" ]
  },

  {    
    className: "showBathhousesForBigFollower",
    expression: [ AND, "showBathhouses", "showBigFollower" ]
  },
  {    
    className: "showBathhousesForMayor",
    expression: [ AND, "showBathhouses", "showMayor" ]
  },
  {    
    className: "showBathhousesForWagon",
    expression: [ AND, "showBathhouses", "showWagon" ]
  },
  {    
    className: "showBathhousesForRingmaster",
    expression: [ AND, "showBathhouses", "showRingmaster" ]
  },
  {    
    className: "showBathhousesForAbbot",
    expression: [ AND, "showBathhouses", "showAbbot" ]
  },
  {    
    className: "showBathhousesForPhantom",
    expression: [ AND, "showBathhouses", "showPhantom" ]
  },

  {    
    className: "showMagicPortalForMayor",
    expression: [ AND, "showMagicPortal", "showMayor" ]
  },
  {    
    className: "showMagicPortalForWagon",
    expression: [ AND, "showMagicPortal", "showWagon" ]
  },
  {    
    className: "showMagicPortalForAbbot",
    expression: [ AND, "showMagicPortal", "showAbbot" ]
  },
  {    
    className: "showFlierForMayor",
    expression: [ AND, "showFlier", "showMayor" ]
  },
  {    
    className: "showFlierForWagon",
    expression: [ AND, "showFlier", "showWagon" ]
  },
  {    
    className: "showFlierForAbbot",
    expression: [ AND, "showFlier", "showAbbot" ]
  },
  {    
    className: "showCropCirclesForMayor",
    expression: [ AND, "showCropCircles", "showMayor" ]
  },
  {    
    className: "showCropCirclesForWagon",
    expression: [ AND, "showCropCircles", "showWagon" ]
  },
  {    
    className: "showCropCirclesForAbbot",
    expression: [ AND, "showCropCircles", "showAbbot" ]
  },

  {    
    className: "showPrincessForBigFollower",
    expression: [ AND, "showPrincess", "showBigFollower" ]
  },
  {    
    className: "showPrincessForWagon",
    expression: [ AND, "showPrincess", "showWagon" ]
  },
  {    
    className: "showPrincessForRingmaster",
    expression: [ AND, "showPrincess", "showRingmaster" ]
  },
  {    
    className: "showPrincessForPhantom",
    expression: [ AND, "showPrincess", "showPhantom" ]
  },

  {    
    className: "showFairyAndAcrobats",
    expression: [ AND, "showFairy", "showAcrobats" ]
  },
  {    
    className: "showFairyAndNotAcrobats",
    expression: [ AND, "showFairy", [ NOT, "showAcrobats" ] ]
  },

  {    
    className: "showFairyAndAcrobatsForPhantom",
    expression: [ AND, "showFairy", "showAcrobats", "showPhantom" ]
  },
  {    
    className: "showDragonAndFairyAndAcrobatsForPhantom",
    expression: [ AND, "showDragon", "showFairy", "showAcrobats", "showPhantom" ]
  },

  {    
    className: "showDragonAndMarketsOfLeipzigForBigFollower",
    expression: [ AND, "showDragonAndMarketsOfLeipzig", "showBigFollower" ]
  },
  {    
    className: "showDragonAndMarketsOfLeipzigForWagon",
    expression: [ AND, "showDragonAndMarketsOfLeipzig", "showWagon" ]
  },
  {    
    className: "showDragonAndMarketsOfLeipzigForRingmaster",
    expression: [ AND, "showDragonAndMarketsOfLeipzig", "showRingmaster" ]
  },
  {    
    className: "showDragonAndMarketsOfLeipzigForPhantom",
    expression: [ AND, "showDragonAndMarketsOfLeipzig", "showPhantom" ]
  },

  {    
    className: "showTowerAndFairyAndAcrobatsForPhantom",
    expression: [ AND, "showTower", "showFairy", "showAcrobats", "showPhantom" ]
  },
  {    
    className: "showTowerAndMarketsOfLeipzigForBigFollower",
    expression: [ AND, "showTowerAndMarketsOfLeipzig", "showBigFollower" ]
  },
  {    
    className: "showTowerAndMarketsOfLeipzigForWagon",
    expression: [ AND, "showTowerAndMarketsOfLeipzig", "showWagon" ]
  },
  {    
    className: "showTowerAndMarketsOfLeipzigForRingmaster",
    expression: [ AND, "showTowerAndMarketsOfLeipzig", "showRingmaster" ]
  },
  {    
    className: "showTowerAndMarketsOfLeipzigForPhantom",
    expression: [ AND, "showTowerAndMarketsOfLeipzig", "showPhantom" ]
  },


  {    
    className: "showPlagueAndFairyAndAcrobatsForPhantom",
    expression: [ AND, "showPlague", "showFairy", "showAcrobats", "showPhantom" ]
  },


  {    
    className: "showPlagueAndMarketsOfLeipzigForBigFollower",
    expression: [ AND, "showPlagueAndMarketsOfLeipzig", "showBigFollower" ]
  },
  {    
    className: "showPlagueAndMarketsOfLeipzigForWagon",
    expression: [ AND, "showPlagueAndMarketsOfLeipzig", "showWagon" ]
  },
  {    
    className: "showPlagueAndMarketsOfLeipzigForRingmaster",
    expression: [ AND, "showPlagueAndMarketsOfLeipzig", "showRingmaster" ]
  },
  {    
    className: "showPlagueAndMarketsOfLeipzigForPhantom",
    expression: [ AND, "showPlagueAndMarketsOfLeipzig", "showPhantom" ]
  },

  {    
    className: "showSupporterRemovedForBuilder",
    expression: [ AND, [ OR, "showCatapult", "showPlague", "showRussianPromos", "showDragon", "showPrincess", "showTower", "showCropCircles", "showCathars", "showFestival", "showPorxada" ], "showBuilder" ]
  },
  {    
    className: "showSupporterRemovedForPig",
    expression: [ AND, [ OR, "showCatapult", "showPlague", "showRussianPromos", "showDragon", "showTower", "showCropCircles", "showFestival", "showPorxada" ], "showPig" ]
  },
  {    
    className: "showNoRulesForSpecialFigures",
    expression: [ OR, "showCatapult", "showPlague", "showRussianPromos", "showDragon", "showTower", "showCropCircles", "showFestival", "showPorxada" ]
  },

  {    
    className: "showSpecialFiguresOnTiles",
    expression: [ OR, "showBuilder", "showPig", "showSheep" ]
  },
  {    
    className: "showPlagueForSpecialFiguresOnTiles",
    expression: [ AND, "showPlague", "showSpecialFiguresOnTiles" ]
  },
  {    
    className: "showFestivalForSheep",
    expression: [ AND, "showFestival", "showSheep" ]
  },
  {    
    className: "showDragonAndFairyForSpecialFiguresOnTiles",
    expression: [ AND, "showDragonAndFairy", "showSpecialFiguresOnTiles" ]
  },
  {    
    className: "showRussianPromosForSpecialFiguresOnTiles",
    expression: [ AND, "showRussianPromos", "showSpecialFiguresOnTiles" ]
  },
  {    
    className: "showDragonForSheep",
    expression: [ AND, "showDragon", "showSheep" ]
  },

  {    
    className: "showFootnoteRowForSpecialFigures",
    expression: [ OR, "showBarn", "showSupporterRemovedForBuilder", "showSupporterRemovedForPig", "showPlagueForSpecialFiguresOnTiles", "showRussianPromosForSpecialFiguresOnTiles", "showPorxada", "showDragonForSheep", "showCathars", "showFestivalForSheep", "showPlagueForSpecialFiguresOnTiles", "showDragonAndFairyForSpecialFiguresOnTiles" ]
  },

  {    
    className: "showFootnoteRowForNeutralFiguresPart1",
    expression: [ OR, "showBridges", "showCountOfCarcassonne", "showFairy", "showWheelOfFortune", "showDragon", "showTower" ]
  },

  {    
    className: "showAdditionalScoring",
    expression: [ OR, "showRingmaster", "showBarn", "showSheep", "showFairy", "showCircus", "showWheelOfFortune", "showGoldmines", "showTeacher", "showGingerbreadMan"  ]
  },


  {    
    className: "showPaidPoints",
    expression: [ OR, "showTower", "showBazaars", "showBathhouses" ]
  },

  {    
    className: "showBridgesOrFerries",
    expression: [ OR, "showBridges", "showFerries" ]
  },

  {    
    className: "showCountOfCarcassonneOrFlier",
    expression: [ OR, "showCountOfCarcassonne", "showFlier" ]
  },

  {    
    className: "showMageOrWitchOrPig",
    expression: [ OR, "showMageAndWitch_Any", "showPig" ]
  },

  {    
    className: "showDragonOrTowerOrWoF",
    expression: [ OR, "showDragon", "showTower", "showWheelOfFortune" ]
  },

  {    
    className: "showCountOfCarcassonneOrWoF",
    expression: [ OR, "showCountOfCarcassonne", "showWheelOfFortune" ]
  },
  {    
    className: "showFairyForCountOfCarcassonneOrWoFOrMarketsOfLeipzig",
    expression: [ AND, [ OR, "showCountOfCarcassonne", "showWheelOfFortune", "showMarketsOfLeipzig" ], "showFairy" ]
  },

  {    
    className: "showCountOfCarcassonneOrWoFOrTeacher",
    expression: [ OR, "showCountOfCarcassonne", "showWheelOfFortune", "showTeacher" ]
  },
  {    
    className: "showDragonForCountOfCarcassonneOrWoFOrMarketsOfLeipzigOrTeacher",
    expression: [ AND, [ OR, "showCountOfCarcassonne", "showWheelOfFortune", "showMarketsOfLeipzig", "showTeacher" ], "showDragon" ]
  },

  {    
    className: "showDragonAndFairyForMageOrWitchOrTeacherOrGingerbreadMan",
    expression: [ AND, "showDragonAndFairy", [ OR, "showMageAndWitch_Any", "showTeacher", "showGingerbreadMan" ] ]
  },

  {    
    className: "showDragonForTeacher",
    expression: [ AND, "showDragon", "showTeacher" ]
  },


// -- Footnotes --
  {
    className: "showGingerbreadManAndCountOfCarcassonne",
    expression: [ AND, "showGingerbreadMan", "showCountOfCarcassonne" ]
  },
  {
    className: "showFootnotes",
    expression: "showGingerbreadManAndCountOfCarcassonne"
  },
// -- Scoring During The Game--
  {
    className: "showDoubleSizedTiles",
    expression: [ OR, "showGermanCastles", "showMarketsOfLeipzig" ]
  },
  {
    className: "showOtherTiles",
    expression: [ OR, "showHalflings", "showDoubleSizedTiles" ]
  },
  {
    className: "showSquareTiles",
    expression: [ NOT, "showOtherTiles" ]
  },
  {
    className: "showNotHalflings",
    expression: [ NOT, "showHalflings" ]
  },
  {
    className: "showRingmasterScoring",
    expression: [ AND, "showRingmaster", [ OR, "showCircus", "showAcrobats" ] ]
  },
  {
    className: "showFigureScoringDuringGame",
    expression: [ OR, "showFairy", "showTower", "showTeacher", "showMessages", "showRobbers", "showGingerbreadMan", "showSheep", "showAbbot", "showRingmasterScoring", "showBathhouses" ]
  },
  {
    className: "showOtherScoringDuringGame",
    expression: [ OR, "showCatapult", "showBazaars", "showWheelOfFortune" ]
  },
  {
    className: "showPigHerd",
    expression: [ OR, "showRiverII", "showGQ11" ]
  },
  {
    className: "showCircusAndNotAcrobats",
    expression: [ AND, "showCircus", [ NOT, "showAcrobats" ] ]
  },
  {
    className: "showNotCircusAndAcrobats",
    expression: [ AND, [ NOT, "showCircus" ], "showAcrobats" ]
  },
  {
    className: "showCircusAndAcrobats",
    expression: [ AND, "showCircus", "showAcrobats" ]
  },
// -- Scoring After The Game
  {
    className: "showFigureScoringAfterGame",
    expression: [ OR, "showFairy", "showBarn", "showRobbers", "showSheep", "showRingmasterScoring" ]
  },
  {
    className: "showOtherScoringAfterGame",
    expression: [ OR, "showTraders", "showKingAndRobber", "showGoldmines", "showFruitBearingTrees" ]
  },
/*
  {
    className: "showAll",
    expression: true
  },
*/
  {
    className: "hideAll",
    expression: false
  },

// -- Preparation --

  {
    className: "showPrepareTokens",
    expression: [ OR, "showCatapult", "showCastles", "showTunnel", "showLittleBuildings" ]
  },
  {
    className: "showRemoveExtraTiles",
    expression: [ OR, "showMonasteries", "showBathhouses" ]
  },

  {
    className: "showRivers_Any",
    expression: [ OR, "showRiverI", "showRiverII" ]
  },
  {
    className: "showRivers_Full",
    expression: [ AND, "showRiverI", "showRiverII" ]
  },
  {
    className: "showRivers_None",
    expression: [ NOT, "showRivers_Full" ]
  },


  {
    className: "showGQ11AndNotRivers",
    expression: [ AND, "showGQ11", "showRivers_None" ]
  },
  {
    className: "showGQ11AndNotRiverII",
    expression: [ AND, "showGQ11", [ NOT, "showRiverII" ] ]
  },

  {
    className: "showGQ11AndNotRiverII",
    expression: [ AND, "showGQ11", [ NOT, "showRiverII" ] ]
  },

  {
    className: "showComplexStart",
    expression: [ OR, "showRivers_Any", "showCountOfCarcassonne", "showWheelOfFortune", "showWindRoses", "showMarketsOfLeipzig", "showSpielDoch2018" ]
  },
  {
    className: "showBasicStart",
    expression: [ NOT, "showComplexStart" ]
  },
  
  {
    className: "showTilesAndTokens",
    expression: [ OR, "showInnsAndCathedrals_Any", "showTraders", "showKingAndRobber", "showSheep", "showCircus", "showMessages", "showPlague", "showFruitBearingTrees" ]
  },
  {
    className: "showWoodenFiguresAndMore",
    expression: [ OR, "showFairy", "showDragon", "showCatapult", "showCircus", "showFlier", "showFerries", "showGoldmines", "showMage", "showWitch", "showGingerbreadMan" ]
  },
  

// -- Final Scoring --

  {
    className: "showPrepareFinalScoring",
    expression: [ OR, "showCircus", "showMessages", "showGoldmines", "showRobbers" ]
  },
  {
    className: "showEndOfGameScoring",
    expression: [ OR, "showFruitBearingTrees", "showGoldmines", "showTraders", "showKingAndRobber" ]
  },

  {
    className: "showFairyAndRingmaster",
    expression: [ AND, "showFairy", "showRingmaster" ]
  },
  {
    className: "showFairyOrRingmaster",
    expression: [ OR, "showFairy", "showRingmaster" ]
  },
  {
    className: "showNotFairyAndNotRingmaster",
    expression: [ NOT, "showFairyOrRingmaster" ]
  },
  {
    className: "showNotFairyAndRingmaster",
    expression: [ AND, [ NOT, "showFairy" ], "showRingmaster" ]
  },
  {
    className: "showFairyAndNotRingmaster",
    expression: [ AND, "showFairy", [ NOT, "showRingmaster" ] ]
  },

// -- Game Reference

  {
    className: "showNotFairy",
    expression: [ NOT, "showFairy" ]
  },

];


var ACTION_CLEAR_ALL = "CLEAR_ALL",
    ACTION_SELECT_ALL = "SELECT_ALL",
    ACTION_SELECT_ALL_C1 = "SELECT_ALL_C1",
    ACTION_SELECT_ALL_C2 = "SELECT_ALL_C2",
    ACTION_SELECT_ALL_WE = "SELECT_ALL_WE",
    ACTION_LOAD_PRESET = "LOAD_PRESET";
    

var QuickSelectorDefinition =
[
/*
  {
    _id: "preClearAll",
    label: "Clear All", // Empty
    readOnly: true,
    action: ACTION_CLEAR_ALL
  },
  {
    _id: "preSelectAll",
    label: "Select All", // All
    readOnly: true,
    action: ACTION_SELECT_ALL
  },
*/
  {
    _id: "preSelectAllC1",
    label: "Select All C1", // All C1
    readOnly: true,
    action: ACTION_SELECT_ALL_C1
  },
  {
    _id: "preSelectAllC2",
    label: "Select All C2", // All C2
    readOnly: true,
    action: ACTION_SELECT_ALL_C2
  },
  {
    _id: "preSelectAllWE",
    label: "Select All WE", // All WE
    readOnly: true,
    action: ACTION_SELECT_ALL_WE
  },
  {
    _id: "preNeutralExpansions",
    label: "Select All Neutral", // All Neutral
    readOnly: true,
    classNames: 
    [
      "showBigFollower",
      "showBuilder",
      "showFairy",
      "showAbbey",
      "showMayor",
      "showWagon",
      "showBarn",
      "showKingAndRobber",
      "showBridges",
      "showCastles",
      "showSheep",
      "showLittleBuildings",
      "showPhantom",
      "showMessages"
    ]
  },
  {
    _id: "preBigBox1",
    label: "Big Box 1", // 1, 2, 3, 4, River
    readOnly: true,
    classNames: 
    [
      "showInnsAndCathedrals_Full",
      "showTradersAndBuilders_Full",
      "showPrincessAndDragon_Full",
      "showTower",
      "showRiverI"
    ]
  },
  {
    _id: "preBigBox2",
    label: "Big Box 2", // 1, 2, 3, 5, 6
    readOnly: true,
    classNames: 
    [
      "showInnsAndCathedrals_Full",
      "showTradersAndBuilders_Full",
      "showPrincessAndDragon_Full",
      "showAbbeyAndMayor_Full",
      "showCountKingAndRobber_Full"
    ]
  },
  {
    _id: "preBigBox3",
    label: "Big Box 3", // 1, 2, 3, 5, 8
    readOnly: true,
    classNames: 
    [
      "showInnsAndCathedrals_Full",
      "showTradersAndBuilders_Full",
      "showPrincessAndDragon_Full",
      "showAbbeyAndMayor_Full",
      "showBridgesCastlesAndBazaars_Full"
    ]
  },
  {
    _id: "preBigBox4",
    label: "Big Box 4", // 1, 2, Minis 1-7
    readOnly: true,
    classNames: 
    [
      "showInnsAndCathedrals_Full",
      "showTradersAndBuilders_Full",
      "showFlier",
      "showMessages",
      "showFerries",
      "showGoldmines",
      "showMageAndWitch_Full",
      "showRobbers",
      "showCropCircles"
    ]
  },
  {
    _id: "preBigBox5",
    label: "Big Box 5", // 1, 2, 9, WoF
    readOnly: true,
    classNames: 
    [
      "showInnsAndCathedrals_Full",
      "showTradersAndBuilders_Full",
      "showHillsAndSheep_Full",
      "showWheelOfFortune"
    ]
  },
  {
    _id: "preBigBox6",
    label: "Big Box 6", // 1, 2, Minis 1-7, River, Abbot
    readOnly: true,
    classNames: 
    [
      "showInnsAndCathedrals_Full",
      "showTradersAndBuilders_Full",
      "showFlier",
      "showMessages",
      "showFerries",
      "showGoldmines",
      "showMageAndWitch_Full",
      "showRobbers",
      "showCropCircles",
      "showRiverI",
      "showAbbot"
    ]
  },
  {
    _id: "preLE2003",
    label: "Limited Edition 2003", // 1, 2, River
    readOnly: true,
    classNames: 
    [
      "showInnsAndCathedrals_Full",
      "showTradersAndBuilders_Full",
      "showRiverI"
    ]
  },
  {
    _id: "preLE_TB",
    label: "LE Traders & Builders", // 2
    readOnly: true,
    classNames: 
    [
      "showTradersAndBuilders_Full"    
    ]
  },
  {
    _id: "preLE_PD",
    label: "LE Princess & Dragon", // 3
    readOnly: true,
    classNames: 
    [
      "showPrincessAndDragon_Full"    
    ]
  },
  {
    _id: "preLE_CC",
    label: "LE Edition Crop Circles", // Crop Circles
    readOnly: true,
    classNames: 
    [
      "showCropCircles"    
    ]
  },
  {
    _id: "preLE_10Anniversary",
    label: "LE 10th Anniversary", // The Festival
    readOnly: true,
    classNames: 
    [
      "showFestival"    
    ]
  },
  {
    _id: "preLE_Mueller",
    label: "LE Müller Exclusive", // 6, The Besiegers
    readOnly: true,
    classNames: 
    [
      "showCountKingAndRobber_Full",    
      "showCathars"    
    ]
  },
  {
    _id: "custom1",
    defaultLabel: "Custom 1 (Empty)", // Empty
    readOnly: false,
  },
  {
    _id: "custom2",
    defaultLabel: "Custom 2 (Empty)", // Empty
    readOnly: false,
  },
  {
    _id: "custom3",
    defaultLabel: "Custom 3 (Empty)", // Empty
    readOnly: false,
  },
  {
    _id: "custom4",
    defaultLabel: "Custom 4 (Empty)", // Empty
    readOnly: false,
  },
  {
    _id: "custom5",
    defaultLabel: "Custom 5 (Empty)", // Empty
    readOnly: false,
  },
];


var strPage =
'<div id="_Tabs_">\
  <ul>\
  <li><a href="#tabs-major" class="wica-translate-contents" id="tabMajorExpansions_Label">Major Expansions <span id="_Expansion_Counter_Major_">(0/0)</span></a></li>\
  <li><a href="#tabs-minor" class="wica-translate-contents" id="tabMinorExpansions_Label">Minor Expansions <span id="_Expansion_Counter_Minor_">(0/0)</span></a></li>\
<!--\
  <li><a href="#tabs-licensed" class="wica-translate-contents" id="tabLicensedExpansions_Label">Licensed Expansions <span id="_Expansion_Counter_Licensed_">(0/0)</span></a></li>\
-->\
  <li><a href="#tabs-other" class="wica-translate-contents" id="tabOtherExpansions_Label">Other Expansions <span id="_Expansion_Counter_Other_">(0/0)</span></a></li>\
  <li><a href="#tabs-quick" class="wica-translate-contents" id="tabQuickSelectors_Label">Quick Selectors</a></li>\
  <li><a href="#tabs-filters" class="wica-translate-contents" id="tabFilters_Label">Filters <span id="_Expansion_Filter_">(-)</span></a></li>\
  <!--li><a href="#tabs-custom">Preferences</a></li-->\
  <li><a href="#tabs-help" class="wica-translate-contents" id="tabHelp_Label"\
><span  style="color: blue; background-color: white;"><b>&nbsp;?&nbsp;</b></span></a></li>\
  </ul>\
  <div id="tabs-major">\
  <form>\
    <span id="_Expansion_Selector_Major_"></span>\
  </form>\
  </div>\
  <div id="tabs-minor">\
    <form>\
    <span id="_Expansion_Selector_Minor_"></span>\
  </form>\
  </div>\
<!--\
  <div id="tabs-licensed">\
  <form>\
    <span id="_Expansion_Selector_Licensed_"></span>\
  </form>\
  </div>\
-->\
  <div id="tabs-other">\
  <form>\
      <span id="_Expansion_Selector_Other_"></span>\
  </form>\
  </div>\
  <div id="tabs-quick">\
  <form>\
  <div class="form-box-container">\
  <div class="form-box">\
  <b class="wica-translate-contents" id="buttonQuickSelection_Label">Quick Selection:</b><br /><br />\
  <select id="quickSelectList" style="width: 200px;">\
    <option value="defaultSetting" class="wica-translate-contents" id="optionSelectOne_Label">Select one...</option>\
  </select><br /><input type="button" name="quickSelectButton" id="quickSelectButton" value="Select Expansions" class="ui-state-active ui-button wica-translate-attr-value" style="margin-top: 5px;"/>\
  <br /><br /><br />\
  <input type="button" name="quickClearAllButton" id="quickClearAllButton" value="Clear All" class="ui-state-active ui-button wica-translate-attr-value" />&nbsp;&nbsp;&nbsp;\
  <input type="button" name="quickSelectAllButton" id="quickSelectAllButton" value="Select All" class="ui-state-active ui-button wica-translate-attr-value" />\
    </div>\
    </div>\
  </form>\
  </div>\
  <div id="tabs-filters">\
  <form>\
  <div class="form-box-container">\
  <div class="form-box">\
  <b class="wica-translate-contents" id="textShowEditions_Label">Show Editions:</b><br /><br />\
  <input type="checkbox" name="filterC1" id ="filterC1" class="inputFilter" value="C1" /> <span class="wica-translate-contents" id="textFirstEdition_Label">1st Edition (C1)</span><br />\
  <input type="checkbox" name="filterC2" id ="filterC2" class="inputFilter" value="C2" /> <span class="wica-translate-contents" id="textSecondEdition_Label">New Edition (C2)</span><br />\
  <input type="checkbox" name="filterWE" id ="filterWE" class="inputFilter" value="WE" /> <span class="wica-translate-contents" id="textWinterEdition_Label">Winter Edition (WE)</span><br />\
    </div>\
    <div class="form-box">\
  <b class="wica-translate-contents" id="textPreferredEdition_Label">Preferred Edition:</b><br /><br />\
  <input type="radio" name="preferredEdition" id="preferC1" value="C1" class="inputPrefer" /> <span id="label_preferC1"><span class="wica-translate-contents" id="textFirstEdition_Label">1st Edition (C1)</span></span><br />\
  <input type="radio" name="preferredEdition" id="preferC2" value="C2" class="inputPrefer" /> <span id="label_preferC2"><span class="wica-translate-contents" id="textSecondEdition_Label">New Edition (C2)</span></span><br />\
  <input type="radio" name="preferredEdition" id="preferWE" value="WE" class="inputPrefer" /> <span id="label_preferWE"><span class="wica-translate-contents" id="textWinterEdition_Label">Winter Edition (WE)</span></span><br />\
  <br />\
  <input type="checkbox" name="markAdaptations" id="markAdaptations" value="WE" class="inputMark" /> <span class="wica-translate-contents" id="textMarkAdaptions_Label">Mark rules adaptations</span><br />\
  </div>\
  </div>\
  </form>\
  </div>\
  <!--div id="tabs-custom">Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt. Maecenas scelerisque sem non nisl. Fusce sed lorem in enim dictum bibendum.</div-->\
  <div id="tabs-help"><div  class="wica-translate-contents" id="textHelp_Label">\
\
<h3>1. Introduction</h3>\
\
<p>This <b>Expansion Selector</b> allows you to pick what expansions (or parts of them) to use in the reference pages of <b>WICA</b>. According to your selection, the <b>Order of Play</b> and <b>Scoring sections</b> will be adapted. This way, you can customize <b>WICA</b> to suit your game without any hinderance from the expansions left out.</p>\
\
<p>As hinted above, the expansions combining multiple elements permit a fine-grain selection of its elements. For example, you can choose the abbey tiles and the wagon from "Abbey and Mayor" and to leave out the barn and the mayor.</p>\
\
<h3>2. Use Guide</h3>\
\
<p>The selector has several tabs and below there is an area that lists the current selection at all times, no matter the tab displayed.</p>\
\
<p>You can click on any tab label to go to the desired tab. Additional clicks on a selected tab will collapse it and expand it back in order to access the selector when needed. Switching to another tab will expand the selector automatically.</p>\
\
<p>The following sections describe the tabs and their funcionality.</p>\
\
<h4>2.1. "Expansions" tabs</h4>\
\
<p>The first three tabs from the left allow you to pick expansions in full or partially when possible.</p>\
\
<ul>\
<li><b>Major expansions:</b> lists all official major expansions by HiG.</li>\
<li><b>Minor expansions:</b> lists all official minor expansions by HiG and some of their licensed equivalents.</li>\
<li><b>Other expansions:</b> lists the rest of licensed expansions as well as some unofficial ones.</li>\
</ul>\
\
<p>These tabs show a listing of expansions where each label is preceded by a checkbox to allow its selection and deselection if full.</p>\
\
<p>Those expansions with various components show a clickable <b>"[+]"</b> symbol after them when closed or <b>"[&ndash;]"</b> when open. In the latter case, all the components are displayed and can be selected and deselected individually.</p>\
\
<p>Each tab has a text label in accordance with the format <b>"Group (X/Y)"</b> in order to identify the set of expansions listed (indicated by <b>Group</b>), the  number of expansions selected (represented by <b>X</b>) and the total number available (represented by <b>Y</b>).</p>\
\
<h4>2.2. "Quick Selectors" tab</h4>\
\
<p>This is the fourth tab from the left. It allows you to choose from a predefined list of available expansions sets. This tab contains the following elements:</p>\
\
<ul>\
<li><b>A dropdown list and a "Select Expansions" button:</b> They allow you select and load a predefined expansion bundle, such as a Big Box or all the expansions for the New Edition. </li>\
<li><b>The "Clear All" button</b> empties your current with one click.</li>\
<li><b>The "Select All" button</b> selects all the expansions available with one click.</li>\
</ul>\
\
<h4>2.3. "Filters" tab</h4>\
\
<p>This is the fifth tab from the left. It allows you to choose what Carcassonne editions are displayed and your preferred edition. The editions considered are the <b>1st Edition (C1)</b>, the <b>New Edition (C2)</b>, and the <b>Winter Edition (WE)</b>, which is included in a creative way if some of its expansions are of interest.</p>\
\
<p>The tab displays two panels:</p>\
\
<ul>\
<li><b>"Show Editions" panel:</b> it contains a checkbox for each edition available (C1, C2 and WE.) The selector will show the expansions belonging to the checked editions only. For example, if the 1st edition (C1) checkbox is selected, expansions such as "The Wheel Of Fortune" or "Halflings" will be eligible in the <b>Expansion Selector</b>, otherwise they will not be available for selection. At least one of the main editions (C1 or C2) has to be selected, thus they cannot be deselected at the same time.</li>\
\
<li><b>"Preferred Edition" panel:</b> it contains a set of radio buttons for the <b>1st Edition (C1)</b>, the <b>New Edition (C2)</b> and the <b>Winter Edition</b>. The radio button selected will indicate the <b>Expansion Selector</b> which edition has precedence over the other when:\
<ul>\
   <li><b>Describing the Order of Play and the Scoring rules:</b> If there are diferences between editions, the preferred edition rules and wording will be displayed. For example, the movement of the dragon will be displayed in different steps in the <b>Order of Play</b> depending on whether C1 or C2 is selected.</li>\
   <li><b>Displaying graphics in the Scoring sections:</b> For expansions available in both editions, the images shown will correspond to the selected edition. Images from an expansion only existing in one edition will not change.</ul>\
The radio button for an edition will be enabled only if such an edition is available, that is, it is selected in the "Show Editions" panel.</li>\
<br />\
It also includes a checkbox with the label "Mark rules adaptations": If checked, all the rules displayed in the <b>Game Reference</b> and the <b>Order of Play</b> not corresponding to the preferred edition will be highlighted.\
</li>\
</ul>\
\
<p>This tab shows a label similar to <b>"Filters (C1/<u>C2</u>/WE) #"</b> that lists all the editions selected in parentheses and one of them is underlined, indicating that it is the preferred one. The hash sign is present if rules adaptations are highlighted.</p>\
\
<h4>2.4. Help</h4>\
\
<p>This is the current tab displayed with help information about the <b>Expansion Selector</b>.</p>\
<p>&nbsp;</p>\
<hr />\
\
  </div></div>\
  <div id="tabs-selection" class="ui-tabs-panel ui-corner-bottom ui-widget-content">\
  <span class="wica-translate-contents" id="textSelectedExpansions_Label">Selected expansions:</span> \
  <ul id="_Expansion_Result_List_">\
  <li class="spaceLines"><b class="wica-translate-contents" id="textMajor_Label">Major:</b> <span id="_Expansion_Result_Major_" class="showMajorExpansions"></span><span class="showNoMajorExpansions wica-translate-contents" id="textNone_Label">None</span></li>\
  <li class="spaceLines"><b class="wica-translate-contents" id="textMinor_Label">Minor:</b> <span id="_Expansion_Result_Minor_" class="showMinorExpansions"></span><span class="showNoMinorExpansions wica-translate-contents" id="textNone_Label">None</span></li>\
  <!--li class="spaceLines"><b class="wica-translate-contents" id="textLicensed_Label">Licensed:</b> <span id="_Expansion_Result_Licensed_" class="showLicensedExpansions"></span><span class="showNoLicensedExpansions wica-translate-contents" id="textNone_Label">None</span></li-->\
  <li class="spaceLines"><b class="wica-translate-contents" id="textOther_Label">Other:</b> <span id="_Expansion_Result_Other_" class="showOtherExpansions"></span><span class="showNoOtherExpansions wica-translate-contents" id="textNone_Label">None</span></li>\
    </ul>\
  </div>\
</div>';