/*
GamesByEmail.StartGameTabControl
Copyright © 2005-2010 Scott Nesin, all rights reserved.
*/
/*
   ***** Preprocessed code, any modifications will be lost. *****
     Foundation.js, object oriented JavaScript framework:
     http://FoundationDotJS.org/
     Preprocessed for speed:
     http://FoundationDotJS.org/Foundation.Preprocessor.htm
*/
Foundation.establishNamespace("GamesByEmail");
GamesByEmail.StartGameStartTab=function()
{
   Foundation.TabControl.Tab.apply(this,arguments);
};
GamesByEmail.StartGameStartTab.$parentClass=Foundation.TabControl.Tab;
if (!Foundation.TabControl.Tab.$childClasses) Foundation.TabControl.Tab.$childClasses=new Array();
Foundation.TabControl.Tab.$childClasses.push(GamesByEmail.StartGameStartTab);
GamesByEmail.StartGameStartTab.$constructor=Foundation.TabControl.Tab.$constructor ? Foundation.TabControl.Tab.$constructor : function(){};
GamesByEmail.StartGameStartTab.$interfaces=new Array();
GamesByEmail.StartGameStartTab.$name="StartGameStartTab";
GamesByEmail.StartGameStartTab.$childClasses=new Array();
GamesByEmail.StartGameStartTab.$container=GamesByEmail;
GamesByEmail.StartGameStartTab.prototype={
   constructor:GamesByEmail.StartGameStartTab,   
   appendBodyHtml:function(htmlBuilder)
   {
      var form=GamesByEmail.GameForm.createGameForm({gameType:this.parent.getGameType(),canStartAnotherGame:true});
      form.setShowGameControl(this.parent,"showGame");
      if (form)
         htmlBuilder.append(form.getHtml());
      else
         htmlBuilder.append(this.resource("missingFormHtml",'c',this.parent.getGameType()));
      return htmlBuilder;
   },
   dispose:function()
   {
      if (Foundation.TabControl.Tab.prototype.dispose) Foundation.TabControl.Tab.prototype.dispose.call(this);
   },
   resource:Foundation.TabControl.Tab.prototype.resource,
   event:Foundation.TabControl.Tab.prototype.event,
   elementId:Foundation.TabControl.Tab.prototype.elementId,
   getElement:Foundation.TabControl.Tab.prototype.getElement,
   getElementValue:Foundation.TabControl.Tab.prototype.getElementValue,
   parseElementId:Foundation.TabControl.Tab.prototype.parseElementId,
   attachEvent:Foundation.TabControl.Tab.prototype.attachEvent,
   detachEvent:Foundation.TabControl.Tab.prototype.detachEvent,
   setParent:Foundation.TabControl.Tab.prototype.setParent,
   resourceEx:Foundation.TabControl.Tab.prototype.resourceEx,
   isDefault:Foundation.TabControl.Tab.prototype.isDefault,
   appendTitleHtml:Foundation.TabControl.Tab.prototype.appendTitleHtml,
   bringToFront:Foundation.TabControl.Tab.prototype.bringToFront
};
GamesByEmail.StartGameStartTab.resourcePack={
      id:"Start",
      titleHtml:"Start a new game",
      missingFormHtml:"Form for class %c not available. Use the GamesByEmail.GameFormLoader class to load proper form."
   }
;
GamesByEmail.StartGameStartTab.getTypePath=Foundation.TabControl.Tab.getTypePath;
GamesByEmail.StartGameStartTab.resource=Foundation.TabControl.Tab.resource;
GamesByEmail.StartGameStartTab.getById=Foundation.TabControl.Tab.getById;
GamesByEmail.StartGameStartTab.getFirst=Foundation.TabControl.Tab.getFirst;
GamesByEmail.StartGameStartTab.getNext=Foundation.TabControl.Tab.getNext;
GamesByEmail.StartGameStartTab.isInstanceOf=Foundation.TabControl.Tab.isInstanceOf;
GamesByEmail.StartGameStartTab.isTab=Foundation.TabControl.Tab.isTab;
GamesByEmail.StartGameStartTab.$constructor();

GamesByEmail.StartGameJoinTab=function()
{
   Foundation.TabControl.Tab.apply(this,arguments);
};
GamesByEmail.StartGameJoinTab.$parentClass=Foundation.TabControl.Tab;
if (!Foundation.TabControl.Tab.$childClasses) Foundation.TabControl.Tab.$childClasses=new Array();
Foundation.TabControl.Tab.$childClasses.push(GamesByEmail.StartGameJoinTab);
GamesByEmail.StartGameJoinTab.$constructor=Foundation.TabControl.Tab.$constructor ? Foundation.TabControl.Tab.$constructor : function(){};
GamesByEmail.StartGameJoinTab.$interfaces=new Array();
GamesByEmail.StartGameJoinTab.$name="StartGameJoinTab";
GamesByEmail.StartGameJoinTab.$childClasses=new Array();
GamesByEmail.StartGameJoinTab.$container=GamesByEmail;
GamesByEmail.StartGameJoinTab.prototype={
   constructor:GamesByEmail.StartGameJoinTab,   
   appendBodyHtml:function(htmlBuilder)
   {
      htmlBuilder.append(this.resource("bodyHtml"
                                      ,'c',this.event("loadJoinForms()")
                                      ));
      return htmlBuilder;
   },   
   loadJoinForms:function()
   {
      this.getElement("body").innerHTML=this.resource("refreshList"
                                                      ,'c',this.event("reloadJoinForms()").htmlEncode()
                                                      ,'d',this.elementId("joinListDiv")
                                                      ,'p',this.parent.event("findTabById('Preview').bringToFront()").htmlEncode()
                                                     );
      this.joinGameForms=GamesByEmail.GameForms.addJoinGameFormsToPage(this.elementId("joinListDiv"),{gameTypes:[this.parent.getGameType()],width:"450px",height:"500px",formSettings:{subFormStyle:"border:1px solid #4444ee;background-color:#ddddff;padding:3px"},resourcePack:{noGames:"<p>No games are available to join.<p>Use the <a href=\"#\" onclick=\""+this.parent.event("findTabById('Start').bringToFront();").htmlEncode()+";return false;\">Start a new game</a> tab to create a game for others to join."}});
   },   
   reloadJoinForms:function()
   {
      this.joinGameForms.requestGames(true);
   },
   dispose:function()
   {
      if (Foundation.TabControl.Tab.prototype.dispose) Foundation.TabControl.Tab.prototype.dispose.call(this);
   },
   resource:Foundation.TabControl.Tab.prototype.resource,
   event:Foundation.TabControl.Tab.prototype.event,
   elementId:Foundation.TabControl.Tab.prototype.elementId,
   getElement:Foundation.TabControl.Tab.prototype.getElement,
   getElementValue:Foundation.TabControl.Tab.prototype.getElementValue,
   parseElementId:Foundation.TabControl.Tab.prototype.parseElementId,
   attachEvent:Foundation.TabControl.Tab.prototype.attachEvent,
   detachEvent:Foundation.TabControl.Tab.prototype.detachEvent,
   setParent:Foundation.TabControl.Tab.prototype.setParent,
   resourceEx:Foundation.TabControl.Tab.prototype.resourceEx,
   isDefault:Foundation.TabControl.Tab.prototype.isDefault,
   appendTitleHtml:Foundation.TabControl.Tab.prototype.appendTitleHtml,
   bringToFront:Foundation.TabControl.Tab.prototype.bringToFront
};
GamesByEmail.StartGameJoinTab.resourcePack={
      id:"Join",
      titleHtml:"Join a game",
      bodyHtml:"<p align=center style=\"color:red\">PROCEED WITH CAUTION!</p><p align=center>Please note that GamesByEmail has no control over the titles people give to their games and players, nor any control of their manners.<p align=center style=\"color:red\">Join games with strangers at your own risk.<p align=center><input type=button value=\"Show Game List\" onclick=\"%c\"></p>",
      refreshList:"<p align=center><input type=button value=\"Refresh List\" onclick=\"%c\"><br><font color=red>Please do not join games unless you intend to play them.</font><br>If you want to see what the game looks like, use the <a href=\"#\" onclick=\"%p;return false;\">See preview</a> tab.</p><div id=\"%d\">Gettingsss list...</div>"
   }
;
GamesByEmail.StartGameJoinTab.getTypePath=Foundation.TabControl.Tab.getTypePath;
GamesByEmail.StartGameJoinTab.resource=Foundation.TabControl.Tab.resource;
GamesByEmail.StartGameJoinTab.getById=Foundation.TabControl.Tab.getById;
GamesByEmail.StartGameJoinTab.getFirst=Foundation.TabControl.Tab.getFirst;
GamesByEmail.StartGameJoinTab.getNext=Foundation.TabControl.Tab.getNext;
GamesByEmail.StartGameJoinTab.isInstanceOf=Foundation.TabControl.Tab.isInstanceOf;
GamesByEmail.StartGameJoinTab.isTab=Foundation.TabControl.Tab.isTab;
GamesByEmail.StartGameJoinTab.$constructor();

GamesByEmail.StartGamePreviewTab=function()
{
   Foundation.TabControl.Tab.apply(this,arguments);
};
GamesByEmail.StartGamePreviewTab.$parentClass=Foundation.TabControl.Tab;
if (!Foundation.TabControl.Tab.$childClasses) Foundation.TabControl.Tab.$childClasses=new Array();
Foundation.TabControl.Tab.$childClasses.push(GamesByEmail.StartGamePreviewTab);
GamesByEmail.StartGamePreviewTab.$constructor=Foundation.TabControl.Tab.$constructor ? Foundation.TabControl.Tab.$constructor : function(){};
GamesByEmail.StartGamePreviewTab.$interfaces=new Array();
GamesByEmail.StartGamePreviewTab.$name="StartGamePreviewTab";
GamesByEmail.StartGamePreviewTab.$childClasses=new Array();
GamesByEmail.StartGamePreviewTab.$container=GamesByEmail;
GamesByEmail.StartGamePreviewTab.prototype={
   constructor:GamesByEmail.StartGamePreviewTab,   
   onToFront:function()
   {
      GamesByEmail.GameLoader.addGamePreviewToPage(this.elementId("body"),this.parent.getGameType());
      this.onToFront=null;
   },
   dispose:function()
   {
      if (Foundation.TabControl.Tab.prototype.dispose) Foundation.TabControl.Tab.prototype.dispose.call(this);
   },
   resource:Foundation.TabControl.Tab.prototype.resource,
   event:Foundation.TabControl.Tab.prototype.event,
   elementId:Foundation.TabControl.Tab.prototype.elementId,
   getElement:Foundation.TabControl.Tab.prototype.getElement,
   getElementValue:Foundation.TabControl.Tab.prototype.getElementValue,
   parseElementId:Foundation.TabControl.Tab.prototype.parseElementId,
   attachEvent:Foundation.TabControl.Tab.prototype.attachEvent,
   detachEvent:Foundation.TabControl.Tab.prototype.detachEvent,
   setParent:Foundation.TabControl.Tab.prototype.setParent,
   resourceEx:Foundation.TabControl.Tab.prototype.resourceEx,
   isDefault:Foundation.TabControl.Tab.prototype.isDefault,
   appendTitleHtml:Foundation.TabControl.Tab.prototype.appendTitleHtml,
   appendBodyHtml:Foundation.TabControl.Tab.prototype.appendBodyHtml,
   bringToFront:Foundation.TabControl.Tab.prototype.bringToFront
};
GamesByEmail.StartGamePreviewTab.resourcePack={
      id:"Preview",
      titleHtml:"See preview",
      bodyHtml:"<p align=center>Loading preview, please wait a moment..."
   }
;
GamesByEmail.StartGamePreviewTab.getTypePath=Foundation.TabControl.Tab.getTypePath;
GamesByEmail.StartGamePreviewTab.resource=Foundation.TabControl.Tab.resource;
GamesByEmail.StartGamePreviewTab.getById=Foundation.TabControl.Tab.getById;
GamesByEmail.StartGamePreviewTab.getFirst=Foundation.TabControl.Tab.getFirst;
GamesByEmail.StartGamePreviewTab.getNext=Foundation.TabControl.Tab.getNext;
GamesByEmail.StartGamePreviewTab.isInstanceOf=Foundation.TabControl.Tab.isInstanceOf;
GamesByEmail.StartGamePreviewTab.isTab=Foundation.TabControl.Tab.isTab;
GamesByEmail.StartGamePreviewTab.$constructor();



GamesByEmail.StartGameTabControl=function(resourcePack)
{
   Foundation.TabControl.apply(this,arguments);
};
GamesByEmail.StartGameTabControl.$parentClass=Foundation.TabControl;
if (!Foundation.TabControl.$childClasses) Foundation.TabControl.$childClasses=new Array();
Foundation.TabControl.$childClasses.push(GamesByEmail.StartGameTabControl);
GamesByEmail.StartGameTabControl.$constructor=Foundation.TabControl.$constructor ? Foundation.TabControl.$constructor : function(){};
GamesByEmail.StartGameTabControl.$interfaces=new Array();
GamesByEmail.StartGameTabControl.$name="StartGameTabControl";
GamesByEmail.StartGameTabControl.$childClasses=new Array();
GamesByEmail.StartGameTabControl.$container=GamesByEmail;
GamesByEmail.StartGameTabControl.prototype={
   constructor:GamesByEmail.StartGameTabControl,   
   getGameType:function()
   {
      return this.resource("gameType");
   },   
   showGame:function(playerId,title)
   {
      var tab=this.insertTab({id:playerId.toString(),titleHtml:title.htmlEncode(),bodyHtml:this.resource("loadingMessageHtml")});
      var loader=GamesByEmail.GameLoader.addGamesToPage(tab.elementId("body"),playerId);
      loader.onGamesAdded=new Function("games","for (var i=0;i<games.length;i++)games[i].cancelGameResponse=new Function(\"canceled\",\""+this.event("onGameCanceled(this,canceled)").cEncode()+"\");");
      tab.bringToFront();
      return true;
   },   
   onGameCanceled:function(game,canceled)
   {
      if (canceled)
         this.removeTab(game.player.id.toString());
   },
   dispose:function()
   {
      if (Foundation.TabControl.prototype.dispose) Foundation.TabControl.prototype.dispose.call(this);
   },
   resource:Foundation.TabControl.prototype.resource,
   event:Foundation.TabControl.prototype.event,
   elementId:Foundation.TabControl.prototype.elementId,
   getElement:Foundation.TabControl.prototype.getElement,
   getElementValue:Foundation.TabControl.prototype.getElementValue,
   parseElementId:Foundation.TabControl.prototype.parseElementId,
   attachEvent:Foundation.TabControl.prototype.attachEvent,
   detachEvent:Foundation.TabControl.prototype.detachEvent,
   bindToElement:Foundation.TabControl.prototype.bindToElement,
   bindEvents:Foundation.TabControl.prototype.bindEvents,
   unbindFromElement:Foundation.TabControl.prototype.unbindFromElement,
   unbindEvents:Foundation.TabControl.prototype.unbindEvents,
   getScriptSearchKeys:Foundation.TabControl.prototype.getScriptSearchKeys,
   getResourceFolder:Foundation.TabControl.prototype.getResourceFolder,
   getResourcePath:Foundation.TabControl.prototype.getResourcePath,
   setValue:Foundation.TabControl.prototype.setValue,
   compareValues:Foundation.TabControl.prototype.compareValues,
   onValueChanged:Foundation.TabControl.prototype.onValueChanged,
   getValue:Foundation.TabControl.prototype.getValue,
   parseValue:Foundation.TabControl.prototype.parseValue,
   getDisabled:Foundation.TabControl.prototype.getDisabled,
   setDisabled:Foundation.TabControl.prototype.setDisabled,
   onDisabledChanged:Foundation.TabControl.prototype.onDisabledChanged,
   getInnerHtml:Foundation.TabControl.prototype.getInnerHtml,
   getHtml:Foundation.TabControl.prototype.getHtml,
   beginNewTab:Foundation.TabControl.prototype.beginNewTab,
   beginNewTabClass:Foundation.TabControl.prototype.beginNewTabClass,
   close:Foundation.TabControl.prototype.close,
   updateTitles:Foundation.TabControl.prototype.updateTitles,
   bringInitialTabToFront:Foundation.TabControl.prototype.bringInitialTabToFront,
   getNextUid:Foundation.TabControl.prototype.getNextUid,
   getTabButtonHtml:Foundation.TabControl.prototype.getTabButtonHtml,
   writeTabButton:Foundation.TabControl.prototype.writeTabButton,
   findTabById:Foundation.TabControl.prototype.findTabById,
   findDefaultTab:Foundation.TabControl.prototype.findDefaultTab,
   getFrontTab:Foundation.TabControl.prototype.getFrontTab,
   getColoredBorder:Foundation.TabControl.prototype.getColoredBorder,
   extractColorFromStyle:Foundation.TabControl.prototype.extractColorFromStyle,
   appendHtml:Foundation.TabControl.prototype.appendHtml,
   appendOpenHtml:Foundation.TabControl.prototype.appendOpenHtml,
   appendTitlesHtml:Foundation.TabControl.prototype.appendTitlesHtml,
   appendTabHtml:Foundation.TabControl.prototype.appendTabHtml,
   appendTabOpenHtml:Foundation.TabControl.prototype.appendTabOpenHtml,
   appendTabCloseHtml:Foundation.TabControl.prototype.appendTabCloseHtml,
   appendCloseHtml:Foundation.TabControl.prototype.appendCloseHtml,
   bringTabToFront:Foundation.TabControl.prototype.bringTabToFront,
   getTabIndex:Foundation.TabControl.prototype.getTabIndex,
   pushTab:Foundation.TabControl.prototype.pushTab,
   insertTab:Foundation.TabControl.prototype.insertTab,
   removeTab:Foundation.TabControl.prototype.removeTab
};
GamesByEmail.StartGameTabControl.resourcePack={
      tabs:[GamesByEmail.StartGameStartTab
            ,GamesByEmail.StartGameJoinTab
            ,GamesByEmail.StartGamePreviewTab
           ],
      tiedToUrlHash:true,
      loadingMessageHtml:"<center>Loading...</center>"
   }
;
GamesByEmail.StartGameTabControl.getTypePath=Foundation.TabControl.getTypePath;
GamesByEmail.StartGameTabControl.resource=Foundation.TabControl.resource;
GamesByEmail.StartGameTabControl.getById=Foundation.TabControl.getById;
GamesByEmail.StartGameTabControl.getFirst=Foundation.TabControl.getFirst;
GamesByEmail.StartGameTabControl.getNext=Foundation.TabControl.getNext;
GamesByEmail.StartGameTabControl.isInstanceOf=Foundation.TabControl.isInstanceOf;
GamesByEmail.StartGameTabControl.resourcePackFromElement=Foundation.TabControl.resourcePackFromElement;
GamesByEmail.StartGameTabControl.bindToElement=Foundation.TabControl.bindToElement;
GamesByEmail.StartGameTabControl.getCssName=Foundation.TabControl.getCssName;
GamesByEmail.StartGameTabControl.bindToElements=Foundation.TabControl.bindToElements;
GamesByEmail.StartGameTabControl.getCssRules=Foundation.TabControl.getCssRules;
GamesByEmail.StartGameTabControl.writeToPage=Foundation.TabControl.writeToPage;
GamesByEmail.StartGameTabControl.addToPage=Foundation.TabControl.addToPage;
GamesByEmail.StartGameTabControl.Tab=Foundation.TabControl.Tab;
GamesByEmail.StartGameTabControl.$constructor();

