This command is more of a concept to prove that switching between gamemodes is a possible tool to be utilized by map/command makers. Enjoy!
VIDEO
How to install
How to import this command into your world
First, you must give yourself a command block (If you are on a server, you must be 'OP'ed, and have access to /gamemode 1)
To get a command block, type
/give @p command_block in the chat.
Once you have a command block, right click it to open it's GUI.
Now, you must copy and paste the command from your browser into the game. Select the entire command from below, then right click and press 'copy'.
Next, go back to your minecraft world, and paste the command you just copied into the command block. There are a few different keys that may be used to do this, depending on your keyboard. The most common ones are 'CTRL + V', 'COMMAND + V', or 'STRG + V'
Finally, you can press done to exit the GUI, and execute the command block by powering it with a redstone block, a lever, or any thing you can get your grubby hands on. Just make sure you don't place it on top of the command block, or the machine will not be installed!
Show source commands
# This user did not upload the source commands!
/summon FallingSand ~ ~2 ~ {Riding:{Riding:{Riding:{Riding:{Riding:{Riding:{Riding:{Riding:{Riding:{Riding:{Riding:{Riding:{Riding:{TileEntityData:{Command:"/fill ~2 ~-1 ~2 ~-2 ~3 ~14 minecraft:stained_glass 9 hollow",id:"Control"},id:"FallingSand",Block:"command_block",Time:1},TileEntityData:{Command:"/fill ~2 ~-2 ~2 ~-2 ~-2 ~14 minecraft:diamond_block 0",id:"Control"},id:"FallingSand",Block:"command_block",Time:1},TileEntityData:{Command:"/fill ~1 ~-2 ~3 ~-1 ~2 ~13 air",id:"Control"},id:"FallingSand",Block:"command_block",Time:1},TileEntityData:{Command:"/fill ~1 ~-3 ~12 ~-1 ~-1 ~12 redstone_block",id:"Control"},id:"FallingSand",Block:"command_block",Time:1},TileEntityData:{Command:"summon FallingSand ~-1 ~3 ~11 {Riding:{Riding:{TileEntityData:{Command:\"/gamerule commandBlockOutput false\",id:\"Control\"},id:\"FallingSand\",Block:\"command_block\",Time:1},TileEntityData:{Command:\"/gamerule logAdminCommands false\",id:\"Control\"},id:\"FallingSand\",Block:\"command_block\",Time:1},id:\"FallingSand\",Block:\"iron_block\",Time:1}",id:"Control"},id:"FallingSand",Block:"command_block",Time:1},TileEntityData:{Command:"summon FallingSand ~-1 ~2 ~13 {Riding:{Riding:{TileEntityData:{Command:\"/scoreboard objectives add cp_a stat.jump Jumps\",id:\"Control\"},id:\"FallingSand\",Block:\"command_block\",Time:1},TileEntityData:{Command:\"/scoreboard objectives add cp_b dummy cp_b\",id:\"Control\"},id:\"FallingSand\",Block:\"command_block\",Time:1},id:\"FallingSand\",Block:\"iron_block\",Time:1}",id:"Control"},id:"FallingSand",Block:"command_block",Time:1},TileEntityData:{Command:"summon FallingSand ~0 ~1 ~11 {Riding:{Riding:{TileEntityData:{Command:\"fill ~-2 ~3 ~3 ~2 ~3 ~-9 minecraft:diamond_block 0\",id:\"Control\"},id:\"FallingSand\",Block:\"command_block\",Time:1},TileEntityData:{Command:\"summon FallingSand ~0 ~1 ~-8 {id:\\\"FallingSand\\\",Block:\\\"redstone_block\\\",Time:1}\",id:\"Control\"},id:\"FallingSand\",Block:\"command_block\",Time:1},id:\"FallingSand\",Block:\"iron_block\",Time:1}",id:"Control"},id:"FallingSand",Block:"command_block",Time:1},TileEntityData:{Command:"/summon FallingSand ~-1 ~2 ~3 {Riding:{Riding:{TileEntityData:{Command:\"/fill ~1 ~ ~ ~1 ~2 ~7 stone\",id:\"Control\"},id:\"FallingSand\",Block:\"command_block\",Time:1},TileEntityData:{Command:\"/scoreboard players add @a[m=1] cp_b 1\",id:\"Control\"},id:\"FallingSand\",Block:\"command_block\",Time:1},TileEntityData:{Command:\"/scoreboard players set @a[score_cp_b_min=10] cp_b 0\",id:\"Control\"},id:\"FallingSand\",Block:\"command_block\",Time:1}",id:"Control"},id:"FallingSand",Block:"command_block",Time:1},TileEntityData:{Command:"/summon FallingSand ~1 ~1 ~3 {Riding:{Riding:{TileEntityData:{Command:\"/fill ~-1 ~ ~ ~-1 ~2 ~7 redstone_block\",id:\"Control\"},id:\"FallingSand\",Block:\"command_block\",Time:1},TileEntityData:{Command:\"/gamemode 0 @a[m=1,score_cp_b_min=10]\",id:\"Control\"},id:\"FallingSand\",Block:\"command_block\",Time:1},TileEntityData:{Command:\"/gamemode 1 @a[score_cp_a_min=1]\",id:\"Control\"},id:\"FallingSand\",Block:\"command_block\",Time:1}",id:"Control"},id:"FallingSand",Block:"command_block",Time:1},TileEntityData:{Command:"/summon FallingSand ~-1 ~0 ~4 {TileEntityData:{Command:\"/scoreboard players set @a[Score_jump_min=1] cp_a 0\",id:\"Control\"},id:\"FallingSand\",Block:\"command_block\",Time:1}",id:"Control"},id:"FallingSand",Block:"command_block",Time:1},TileEntityData:{Command:"/setblock ~ ~-7 ~1 wall_sign 2 0 {Text1:\"===============\",Text2:\"{text:\\\"Click\\\",color:\\\"dark_red\\\",clickEvent:{action:run_command,value:\\\"/fill ~2 ~1 ~ ~-2 ~-3 ~13 air\\\"},extra:[{text:\\\" to remove\\\",color:\\\"black\\\"}]}\",Text3:\"this structure\",Text4:\"===============\"}",id:"Control"},id:"FallingSand",Block:"command_block",Time:1},TileEntityData:{Command:"/fill ~ ~-11 ~ ~-1 ~2 ~ air",id:"Control"},id:"FallingSand",Block:"command_block",Time:1},TileEntityData:{Command:"/fill ~-1 ~-12 ~ ~-1 ~-1 ~ redstone_block",id:"Control"},id:"FallingSand",Block:"command_block",Time:1},id:"FallingSand",Block:"redstone_block",Time:1}