partial void UpdateInti_Tournament(Inti_Tournament instance);
 partial void DeleteInti_Tournament(Inti_Tournament instance);
 partial void InsertInti_Tournament(Inti_Tournament instance);
        protected void btnSave_Click(object sender, EventArgs e)
        {
            if (TourId != Guid.Empty)
            {
                //update this tournament
                using (var db = Global.GetConnection())
                {
                    var tour = db.Inti_Tournament.Single(t => t.GUID == TourId);

                    tour.Name =TournamentName.Text;
                    tour.Description = TournamentDescription.Text;
                    tour.PublicateDate = DateTime.Parse(PublicateDate.Text);
                    tour.StartRegistration = DateTime.Parse(StartRegistration.Text);
                    tour.EndRegistration = DateTime.Parse(EndRegistration.Text);
                    tour.NmbrOfClubs = int.Parse(NmbrOfClubs.Text);
                    tour.NmbrOfDays = int.Parse(NmbrOfDays.Text);
                    tour.NmbrOfTransfers = int.Parse(NmbrOfTransfers.Text);
                    tour.Budget = int.Parse(Budget.Text);
                    tour.IncludeManager = IncludeManager.Checked;

                    db.SubmitChanges();
                }

            }
            else
            {
                using (var db = Global.GetConnection())
                {
                    var tour = new Inti_Tournament();

                    tour.Name = TournamentName.Text;
                    tour.Description = TournamentDescription.Text;
                    tour.PublicateDate = DateTime.Parse(PublicateDate.Text);
                    tour.StartRegistration = DateTime.Parse(StartRegistration.Text);
                    tour.EndRegistration = DateTime.Parse(EndRegistration.Text);
                    tour.NmbrOfClubs = int.Parse(NmbrOfClubs.Text);
                    tour.NmbrOfDays = int.Parse(NmbrOfDays.Text);
                    tour.NmbrOfTransfers = int.Parse(NmbrOfTransfers.Text);
                    tour.Budget = int.Parse(Budget.Text);
                    tour.IncludeManager = IncludeManager.Checked;

                    db.Inti_Tournament.InsertOnSubmit(tour);

                    //insert rules
                    var headers = new List<string> {"Insats", "Betalning", "Spelarlista", "Budget", "System", "Byten", "Pottfördelning", "Vid samma poäng",
                    "Vid samma poäng II", "Poäng för manager", "Poäng för mål", "Hålla nollan", "Minuspoäng", "Bonuspoäng", "Deadline"};
                    var bodies = new List<string>(){"100 kr exkl. payson-avgifter", "Detta sker uteslutande via payson.se När man lagt till ett lag får man upp en länk som man ska följa. För denna service tar payson en symbolisk avgift som läggs på hundringen.",
                        "Hämtas från <a target=\"_blank\" href=\"http://www.fantasyleague.com\">www.fantasyleague.com</a>. Vi försöker hålla vår lista uppdaterad så gott det går. Saknar du en viss spelare så flagga upp på forumet om det. Spelaren måste dock vara upplagd på fantasy league för att vi ska agera.",
                        Budget.Text, "Godkända system är: 3-5-2,3-4-3,4-4-2,4-5-1,4-3-3,5-4-1 eller 5-3-2.",
                        tour.NmbrOfTransfers + " byten får göras under vissa transferfönster. Dessa annonseras på förstasidan. Även manager får bytas. Det nya laget gäller för alla matcher som spelas efter att transferfönstret stängts.",
                        "Flest poäng vinner 70% av potten, tvåan får 20%, trean får 5%.",
                        "Om 2 eller fler spelare slutar på samma poäng är det deltagaren som har spenderat minst pengar på spelarköp som vinner. Vi räknar då med det genomsnittliga priset för alla spelare som ingått i laget under tävlingen, så det spelar ingen roll hur många eller få spelare man byter.",
                    "Om två eller fler lag inte går att skilja med poäng och budget, så delar de lagen på de placeringar som de upptar. Motsvarande pott-pengar delas lika mellan dessa lagen.",
                    "3p för vinst<br>1p för oavgjort<br>(Då förlängning och straffavgörande förekommer räknas slutresultatet)",
                    "Målvakt: 7p<br>Back: 6p<br>Mittfältare: 5p<br>Anfallare: 4p<br>Straffmål: 2p (gäller ej straffavgörande)",
                    "Målvakt: 4p<br>Back: 2p<br>(Man måste ha spelat minst 45 minuter för att få poäng för att hålla nollan)<br>(Då förlängning förekommer räknas bara resultat vid fulltid)",
                    "Rött kort: -5p<br>Självmål: -3p<br>Missad straff i straffavgörande: -2p",
                    "För att göra hemsidan lite roligare får du 2 bonuspoäng om du laddar upp en bild på dig själv. Notera att du numera laddar upp en bild per lag.",
                    "Senast " + tour.EndRegistration.ToShortDateString() + " kl " + tour.EndRegistration.ToString("HH:mm") + " ska ditt lag vara betalt och skickat."};

                    for (int i = 0; i < headers.Count; i++)
                    {
                        var rule = new Inti_TournamentRule();
                        rule.Inti_Tournament = tour;
                        rule.SortOrder = i;
                        rule.Header = headers[i];
                        rule.Body = bodies[i];
                        db.Inti_TournamentRule.InsertOnSubmit(rule);
                    }

                    //add forum category
                    var forumCategory = new Ext_ForumCategory();
                    forumCategory.Inti_Tournament = tour;
                    forumCategory.Name = tour.Name + ", diverse";

                    db.Ext_ForumCategory.InsertOnSubmit(forumCategory);

                    //set penalty miss point event if euro/world cup
                    if (tour.Name.StartsWith("EM") || tour.Name.StartsWith("VM"))
                    {
                        var pointEvent =
                            db.Inti_PointEvent.Single(pe => pe.GUID == new Guid("4E304B11-8937-405A-98DC-72D896F7A89E"));

                        pointEvent.Inti_Tournament = tour;
                    }

                    db.SubmitChanges();
                }
            }
        }