package gui

// helpGui.go implements pages to explain Seekia's features and functionality to users

import "fyne.io/fyne/v2"
import "fyne.io/fyne/v2/container"
import "fyne.io/fyne/v2/theme"
import "fyne.io/fyne/v2/widget"

import "seekia/internal/genetics/geneticReferences/monogenicDiseases"

//TODO: Improve many of these pages

func setHelpPage(window fyne.Window, previousPage func()){

	title := getPageTitleCentered("Help")

	backButton := getBackButtonCentered(previousPage)

	subtitle := getPageSubtitleCentered("Help")

	description1 := getLabelCentered("Select your desires on the Desires page.")
	description2 := getLabelCentered("View matches on the Matches page.")
	description3 := getLabelCentered("Build and broadcast your profile on the Profile page.")
	description4 := getLabelCentered("You can view matches without broadcasting a profile.")

	description5 := getBoldLabelCentered("More help pages are coming eventually.")

	//TODO: Add buttons and navigation to view more help pages.

	page := container.NewVBox(title, backButton, widget.NewSeparator(), subtitle, widget.NewSeparator(), description1, description2, description3, description4, description5)

	setPageContent(page, window)
}

func setMateProfileExpirationExplainerPage(window fyne.Window, previousPage func()){

	title := getPageTitleCentered("Help - Mate Profile Expiration")

	backButton := getBackButtonCentered(previousPage)

	subtitle := getPageSubtitleCentered("Mate Profile Expiration")

	//TODO: Retrieve the expiration time from the parameters
	description1 := getLabelCentered("All mate profiles expire after 3 months.")
	description2 := getLabelCentered("You must broadcast a new profile at least this often.")
	description3 := getLabelCentered("Your new profile does not need to have any changes.")
	description4 := getLabelCentered("The Broadcast page will tell you when your profile will expire.")
	description5 := getLabelCentered("This is seperate from your identity balance, which also expires.")
	description6 := getLabelCentered("Your identity balance must also be funded to broadcast any profiles.")

	page := container.NewVBox(title, backButton, widget.NewSeparator(), subtitle, widget.NewSeparator(), description1, description2, description3, description4, widget.NewSeparator(), description5, description6, widget.NewSeparator())

	setPageContent(page, window)
}

func setGreetAndRejectExplainerPage(window fyne.Window, previousPage func()){

	title := getPageTitleCentered("Help - Greet And Reject")

	backButton := getBackButtonCentered(previousPage)

	subtitle := getPageSubtitleCentered("Greet And Reject")

	description1 := getLabelCentered("Seekia users can send Greet and Reject messages.")
	description2 := getLabelCentered("Greet messages are sent to indicate interest in a user.")
	description3 := getLabelCentered("Reject messages are sent to tell a user they are not interested.")
	description4 := getLabelCentered("You can filter your matches to only show users who have greeted or contacted you.")
	description5 := getLabelCentered("You can also hide users who have rejected you.")
	description6 := getLabelCentered("You can undo a rejection by sending a greeting.")

	page := container.NewVBox(title, backButton, widget.NewSeparator(), subtitle, widget.NewSeparator(), description1, description2, description3, description4, description5, description6, widget.NewSeparator())

	setPageContent(page, window)
}

func setSexExplainerPage(window fyne.Window, previousPage func()){

	title := getPageTitleCentered("Help - Sex")

	backButton := getBackButtonCentered(previousPage)

	subtitle := getPageSubtitleCentered("Sex")

	description1 := getLabelCentered("Sex refers to a person's physical sex.")
	description2 := getLabelCentered("Male: XY chromosomes, born with male anatomy.")
	description3 := getLabelCentered("Female: XX chromosomes, born with female anatomy.")
	description4 := getLabelCentered("Intersex Male: Not either of the above categories, but closer to Male.")
	description5 := getLabelCentered("Intersex Female: Not any of the above categories, but closer to Female.")
	description6 := getLabelCentered("Intersex: Not any of the above categories.")

	page := container.NewVBox(title, backButton, widget.NewSeparator(), subtitle, widget.NewSeparator(), description1, description2, description3, description4, description5, description6)

	setPageContent(page, window)
}

func setMateProfileAttributeVisibilityExplainerPage(window fyne.Window, previousPage func()){

	title := getPageTitleCentered("Help - Profile Attribute Visibility")

	backButton := getBackButtonCentered(previousPage)

	subtitle := getPageSubtitleCentered("Profile Attribute Visibility")

	description1 := getLabelCentered("Some Mate profile attributes can have their visibility turned on or off.")
	description2 := getLabelCentered("If you turn an attribute's visibility off, it will not show up in your profile.")
	description3 := getLabelCentered("This feature is needed to be able to calculate desires privately.")
	description4 := getLabelCentered("For example, if you want to calculate distance, you must provide your location.")
	description5 := getLabelCentered("If you don't want your profile to contain your location, you can turn off its visibility.")
	description6 := getLabelCentered("This way, you can still calculate distance without sharing your location publicly.")

	page := container.NewVBox(title, backButton, widget.NewSeparator(), subtitle, widget.NewSeparator(), description1, description2, description3, description4, description5, description6)

	setPageContent(page, window)
}

func setProfileGenomeInfoExplainerPage(window fyne.Window, previousPage func()){

	title := getPageTitleCentered("Help - Profile Genome Info")

	backButton := getBackButtonCentered(previousPage)

	subtitle := getPageSubtitleCentered("Profile Genome Information")

	description1 := getLabelCentered("Seekia allows users to share their genome information.")
	description2 := getLabelCentered("Users can learn about the monogenic disease, polygenic disease, and trait information for offspring with each user.")
	description3 := getLabelCentered("Users can learn the probability of their offspring having a specific disease.")
	description4 := getLabelCentered("Users can use this information to reduce the probability of their offspring having diseases.")
	description5 := getLabelCentered("Users can choose their mate to influence their offspring's trait and disease risk.")
	description6 := getLabelCentered("Only specific locations of a user's genome are shared.")

	page := container.NewVBox(title, backButton, widget.NewSeparator(), subtitle, widget.NewSeparator(), description1, description2, description3, description4, description5, description6)

	setPageContent(page, window)
}

func setDesireFilterOptionsExplainerPage(window fyne.Window, previousPage func()){

	title := getPageTitleCentered("Help - Desire Filter Options")

	backButton := getBackButtonCentered(previousPage)

	subtitle := getPageSubtitleCentered("Desire Filter Options")

	description1 := getLabelCentered("Each desire has 1 or 2 filter options to configure.")

	description2 := getBoldLabelCentered("Filter All")
	description3 := getLabelCentered("When enabled, only users who fulfill the desire will be shown in your matches.")
	description4 := getLabelCentered("This does not filter users who have not responded.")

	description5 := getBoldLabelCentered("Require Response")
	description6 := getLabelCentered("When enabled, only users who have responded to the attribute will be shown.")
	description7 := getLabelCentered("This does not filter users who responded, but do not fulfill the desire.")

	description8 := getLabelCentered("If you disable both options, the desire will only effect match score calculations.")

	page := container.NewVBox(title, backButton, widget.NewSeparator(), subtitle, widget.NewSeparator(), description1, widget.NewSeparator(), description2, description3, description4, widget.NewSeparator(), description5, description6, description7, widget.NewSeparator(), description8)

	setPageContent(page, window)
}

func setAncestryCompositionDesireRestrictiveModeExplainerPage(window fyne.Window, previousPage func()){

	title := getPageTitleCentered("Help - Restrictive Mode")

	backButton := getBackButtonCentered(previousPage)

	subtitle := getPageSubtitleCentered("Ancestry Composition Desire - Restrictive Mode")

	description1 := getLabelCentered("The ancestry composition desire has 2 modes: Restrictive and Non-Restrictive.")
	description2 := getLabelCentered("In restrictive mode, all ancestral groups which you desire must be described.")
	description3 := getLabelCentered("For example, let's say you add 80-100% Melanesian as your only location desire.")
	description4 := getLabelCentered("In non-restrictive mode, anyone who is 80-100% Melanesian will fulfill the desire.")
	description5 := getLabelCentered("In restrictive mode, only users whom are 100% Melanesian will fulfill the desire.")
	description6 := getLabelCentered("This is because in restrictive mode, you must define all ancestral amounts you will tolerate.")
	description7 := getLabelCentered("In restrictive mode, if you will tolerate 0-2% for all locations, you must add 0-2% for all locations.")

	page := container.NewVBox(title, backButton, widget.NewSeparator(), subtitle, widget.NewSeparator(), description1, description2, description3, description4, description5, description6, description7)

	setPageContent(page, window)
}

func setOffspringAncestryCompositionExplainerPage(window fyne.Window, previousPage func()){

	title := getPageTitleCentered("Help - Offspring Ancestry Composition")

	backButton := getBackButtonCentered(previousPage)

	subtitle := getPageSubtitleCentered("Offspring Ancestry Composition")

	description1 := getLabelCentered("Seekia is able to calculate the ancestry composition of an offspring between two users.")
	description2 := getLabelCentered("Any conceived offspring's ancestry composition may vary slightly from the prediction.")
	description3 := getLabelCentered("Offspring from the same parents will not always inherit the same genetic sections from each parent.")
	description4 := getLabelCentered("Consequently, siblings range between being ~40%-60% genetically identical.")
	description5 := getLabelCentered("However, sometimes the offspring ancestry composition prediction is ~100% accurate.")
	description6 := getLabelCentered("For example, if both parents are 100% Melanesian, their offspring will always be ~100% Melanesian.")
	description7 := getLabelCentered("This rule applies for all ancestral locations, not just Melanesian.")

	page := container.NewVBox(title, backButton, widget.NewSeparator(), subtitle, widget.NewSeparator(), description1, description2, description3, description4, description5, description6, description7)

	setPageContent(page, window)
}

func setGenomePhasingExplainerPage(window fyne.Window, previousPage func()){

	title := getPageTitleCentered("Help - Genome Phasing")

	backButton := getBackButtonCentered(previousPage)

	subtitle := getPageSubtitleCentered("Genome Phasing")

	description1 := getLabelCentered("A raw genome file is either Phased or Unphased")
	description2 := getLabelCentered("A phased genome file describes which parent each gene was inherited from.")
	description3 := getLabelCentered("This allows Seekia to more accurately diagnose genetic diseases.")
	description4 := getLabelCentered("Only some companies provide phased genome sequencing.")

	page := container.NewVBox(title, backButton, widget.NewSeparator(), subtitle, widget.NewSeparator(), description1, description2, description3, description4)

	setPageContent(page, window)
}

func setGenomeSNPCountExplainerPage(window fyne.Window, previousPage func()){

	title := getPageTitleCentered("Help - Genome SNP Count")

	backButton := getBackButtonCentered(previousPage)

	subtitle := getPageSubtitleCentered("Genome SNP Count")

	description1 := getLabelCentered("Each raw genome file has an SNP count.")
	description2 := getLabelCentered("This is the number of SNPs, or locations, sequenced.")
	description3 := getLabelCentered("The higher this number, the more information your genome file contains.")

	page := container.NewVBox(title, backButton, widget.NewSeparator(), subtitle, widget.NewSeparator(), description1, description2, description3)

	setPageContent(page, window)
}


func setCombinedGenomesExplainerPage(window fyne.Window, previousPage func()){

	title := getPageTitleCentered("Help - Combined Genomes")

	backButton := getBackButtonCentered(previousPage)

	subtitle := getPageSubtitleCentered("Combined Genomes")

	description1 := getLabelCentered("Seekia combines multiple genome files into two different genomes.")
	description2 := getLabelCentered("Genome sequencing can be inaccurate, so multiple imported genome files will sometimes disagree.")
	description3 := getLabelCentered("Each genome file also contains different recorded locations.")
	description4 := getLabelCentered("The Only Exclude Conflicts genome will include genome locations that only 1 genome has reported.")
	description5 := getLabelCentered("The Only Include Shared genome only includes genome locations where at least 2 genomes agree.")
	description6 := getLabelCentered("The Only Include Shared genome is the most accurate, but may contain less information.")
	description7 := getLabelCentered("You should study all imported genomes to see what they report.")

	page := container.NewVBox(title, backButton, widget.NewSeparator(), subtitle, widget.NewSeparator(), description1, description2, description3, description4, description5, description6, description7)

	setPageContent(page, window)
}

func setGenomeHasMonogenicDiseaseVariantMutationExplainerPage(window fyne.Window, previousPage func()){

	title := getPageTitleCentered("Help - Genome Has Mutation")

	backButton := getBackButtonCentered(previousPage)

	subtitle := getPageSubtitleCentered("Genome Has Mutation")

	description1 := getLabelCentered("A monogenic disease variant is a specific defect in a gene that causes the disease.")
	description2 := getLabelCentered("Each genome can either have 0, 1, or 2 mutations for each variant.")
	description3 := getLabelCentered("If a genome has a variant mutation, then either 1 or 2 mutations exist.")
	description4 := getLabelCentered("For a recessive monogenic disease, you need 2 mutations, one on each chromosome, to have the disease.")
	description5 := getLabelCentered("For a dominant monogenic disease, you only need at least 1 mutation to have the disease.")
	description6 := getLabelCentered("Unless your genome is phased, Seekia does not know which chromosome contains each mutation.")
	description7 := getLabelCentered("Seekia calculates your probabilities of having and passing the disease automatically.")

	page := container.NewVBox(title, backButton, widget.NewSeparator(), subtitle, widget.NewSeparator(), description1, description2, description3, description4, description5, description6, description7)

	setPageContent(page, window)
}

func setMonogenicDiseaseVariantsExplainerPage(window fyne.Window, previousPage func()){

	title := getPageTitleCentered("Help - Monogenic Disease Variants")

	backButton := getBackButtonCentered(previousPage)

	subtitle := getPageSubtitleCentered("Monogenic Disease Variants")

	description1 := getLabelCentered("A monogenic disease variant is a specific defect in a gene that causes the disease.")
	description2 := getLabelCentered("Each genome can either have 0, 1, or 2 mutations for each variant.")
	description3 := getLabelCentered("For a recessive monogenic disease, you at least 2 mutations, one on each chromosome, to have the disease.")
	description4 := getLabelCentered("For a dominant monogenic disease, you only need 1 mutation to have the disease.")
	description5 := getLabelCentered("Unless your genome is phased, Seekia does not know which chromosome contains each mutation.")
	description6 := getLabelCentered("Seekia calculates your probabilities of having and passing the disease automatically.")

	page := container.NewVBox(title, backButton, widget.NewSeparator(), subtitle, widget.NewSeparator(), description1, description2, description3, description4, description5, description6)

	setPageContent(page, window)
}

func setVariantEffectIsMildExplainerPage(window fyne.Window, previousPage func()){

	title := getPageTitleCentered("Help - Effect Is Mild")

	backButton := getBackButtonCentered(previousPage)

	subtitle := getPageSubtitleCentered("Variant Effect Is Mild")

	description1 := getLabelCentered("Some monogenic disease variants are known to be mild.")
	description2 := getLabelCentered("They are known to only cause mild disease symptoms for the affected person.")
	description3 := getLabelCentered("This may not be true for all cases.")
	description4 := getLabelCentered("A defective gene is affected by all of its variants.")
	description5 := getLabelCentered("If you have multiple variants, you will usually have a more severe disease.")

	page := container.NewVBox(title, backButton, widget.NewSeparator(), subtitle, widget.NewSeparator(), description1, description2, description3, description4, description5)

	setPageContent(page, window)
}


func setNumberOfTestedVariantsExplainerPage(window fyne.Window, previousPage func()){

	title := getPageTitleCentered("Help - Tested Variants")

	backButton := getBackButtonCentered(previousPage)

	subtitle := getPageSubtitleCentered("Number of Tested Variants")

	description1 := getLabelCentered("Each monogenic disease has a set of variants Seekia tests for.")
	description2 := getLabelCentered("These variants are specific mutations that cause the monogenic disease.")
	description3 := getLabelCentered("The greater the number of tested variants is, the more accurate the results will be.")
	description4 := getLabelCentered("Seekia cannot test for variants whose location your genome file does not contain.")
	description5 := getLabelCentered("Seekia also does not test for many very rare disease variants.")

	page := container.NewVBox(title, backButton, widget.NewSeparator(), subtitle, widget.NewSeparator(), description1, description2, description3, description4, description5)

	setPageContent(page, window)	
}

func setNumberOfPhasedLociExplainerPage(window fyne.Window, previousPage func()){

	title := getPageTitleCentered("Help - Phased Loci")

	backButton := getBackButtonCentered(previousPage)

	subtitle := getPageSubtitleCentered("Number of Phased Loci")

	description1 := getLabelCentered("Each monogenic disease has a set of variants Seekia tests for.")
	description2 := getLabelCentered("These variants are specific mutations that cause each monogenic disease.")
	description3 := getLabelCentered("Each variant effects a specific locus of the genome.")
	description4 := getLabelCentered("Each genome file reports the values of loci.")
	description5 := getLabelCentered("A reported value can either be phased or unphased.")
	description6 := getLabelCentered("Phased values provide more information than unphased values.")
	description7 := getLabelCentered("The greater the number of phased loci is, the more accurate a genetic analysis will be.")
	description8 := getLabelCentered("Import a phased genome for the most accurate genetic analysis results.")
	description9 := getLabelCentered("Use a genome sequencing provider which produces phased genome files.")

	//TODO: Explain that phased genomes don't always increase accuracy, and the results may still be fully accurate
	// For example, if you have no mutations or if you only have 1 mutation on 1 locus,
	//		a phased sequence has no impact on your disease analysis results.

	page := container.NewVBox(title, backButton, widget.NewSeparator(), subtitle, widget.NewSeparator(), description1, description2, description3, description4, description5, description6, description7, description8, description9)

	setPageContent(page, window)	
}


func setCoupleGenomePairExplainerPage(window fyne.Window, previousPage func()){

	title := getPageTitleCentered("Help - Couple Genome Pair")

	backButton := getBackButtonCentered(previousPage)

	subtitle := getPageSubtitleCentered("Couple Genome Pair")

	description1 := getLabelCentered("A couple analysis analyzes either 1 or 2 genome pairs.")
	description2 := getLabelCentered("Each genome pair contains 1 genome from each person.")
	description3 := getLabelCentered("The results from each genome pair may differ.")
	description4 := getLabelCentered("You should view which genomes were analyzed for each genome pair.")

	page := container.NewVBox(title, backButton, widget.NewSeparator(), subtitle, widget.NewSeparator(), description1, description2, description3, description4)

	setPageContent(page, window)
}


func setPersonProbabilityOfPassingVariantExplainerPage(window fyne.Window, previousPage func()){

	title := getPageTitleCentered("Help - Probability Of Passing Variant")

	backButton := getBackButtonCentered(previousPage)

	subtitle := getPageSubtitleCentered("Probability Of Passing A Variant")

	description1 := getLabelCentered("This is the probability that a person will pass a monogenic disease variant to their offspring.")
	description2 := getLabelCentered("If the disease is recessive, both parents need to pass a variant for the offspring to have the disease.")
	description3 := getLabelCentered("If the disease is dominant, only one parent needs to pass a variant for the offspring to have the disease.")
	description4 := getLabelCentered("This probability becomes more accurate if more variants are tested.")
	description5 := getLabelCentered("The person's imported genome may not contain the locations for some variants.")
	description6 := getLabelCentered("Seekia also does not test for many rare monogenic disease variants.")

	page := container.NewVBox(title, backButton, widget.NewSeparator(), subtitle, widget.NewSeparator(), description1, description2, description3, description4, description5, description6)

	setPageContent(page, window)
}

func setPersonHasMonogenicDiseaseExplainerPage(window fyne.Window, previousPage func()){

	title := getPageTitleCentered("Help - Person Has Monogenic Disease")

	backButton := getBackButtonCentered(previousPage)

	subtitle := getPageSubtitleCentered("Person Has Monogenic Disease")

	description1 := getLabelCentered("This describes if the analyzed person has this monogenic disease.")
	description2 := getLabelCentered("This result becomes more accurate if more variants are tested.")
	description3 := getLabelCentered("It also become more accurate in certain circumstances if the tested loci are phased.")
	description4 := getLabelCentered("The person's imported genomes may not contain locations for some variants.")
	description5 := getLabelCentered("Seekia also does not test for many rare disease variants.")

	page := container.NewVBox(title, backButton, widget.NewSeparator(), subtitle, widget.NewSeparator(), description1, description2, description3, description4, description5)

	setPageContent(page, window)
}

func setOffspringProbabilityOfHavingMonogenicDiseaseExplainerPage(window fyne.Window, previousPage func()){

	title := getPageTitleCentered("Help - Offspring Monogenic Disease Probability")

	backButton := getBackButtonCentered(previousPage)

	subtitle := getPageSubtitleCentered("Offspring Probability Of Having Monogenic Disease")

	description1 := getLabelCentered("This is the probability that an offspring from this couple will have the disease.")
	description2 := getLabelCentered("This probability is more accurate if more variants are tested.")
	description3 := getLabelCentered("The couple's imported genomes may not contain locations for some variants.")
	description4 := getLabelCentered("Seekia also does not test for many rare disease variants.")

	page := container.NewVBox(title, backButton, widget.NewSeparator(), subtitle, widget.NewSeparator(), description1, description2, description3, description4)

	setPageContent(page, window)
}


func setOffspringProbabilityOfHavingVariantExplainerPage(window fyne.Window, previousPage func()){

	title := getPageTitleCentered("Help - Offspring Variant Probability")

	backButton := getBackButtonCentered(previousPage)

	subtitle := getPageSubtitleCentered("Offspring Probability Of Having Variant")

	description1 := getLabelCentered("This is the probability that an offspring from this couple will have a variant for a monogenic disease.")
	description2 := getLabelCentered("If the disease is dominant, an offspring with any variants will have the disease.")
	description3 := getLabelCentered("If the disease is recessive, an offspring having a variant will not necessarily have the disease.")
	description4 := getLabelCentered("They could be a disease carrier who does not experience any symptoms of the disease.")
	description5 := getLabelCentered("Couples only need to try to avoid the offspring having the disease.")
	description6 := getBoldLabelCentered("This probability is only shown to satisfy curiosity.")
	description7 := getLabelCentered("This probability is more accurate if more variants are tested.")
	description8 := getLabelCentered("The couple's imported genomes may not contain locations for some variants.")
	description9 := getLabelCentered("Seekia also does not test for many rare disease variants.")

	page := container.NewVBox(title, backButton, widget.NewSeparator(), subtitle, widget.NewSeparator(), description1, description2, description3, description4, description5, description6, description7, description8, description9)

	setPageContent(page, window)
}

func setPersonGeneticAnalysisConflictExistsExplainerPage(window fyne.Window, previousPage func()){

	title := getPageTitleCentered("Help - Conflict Exists")

	backButton := getBackButtonCentered(previousPage)

	subtitle := getPageSubtitleCentered("Genome Conflict Exists")

	description1 := getLabelCentered("If a person has multiple genome files, the contents from each file may differ.")
	description2 := getLabelCentered("This is because the sequencing process recorded different values.")
	description3 := getLabelCentered("All genomes should contain the same sequence, so one of the genomes must have an error.")
	description4 := getLabelCentered("These genomes may have conflicting analysis results.")
	description5 := getLabelCentered("If they have conflicting results, you should view the results for each genome.")
	description6 := getLabelCentered("Import more genomes to get more accurate results.")

	page := container.NewVBox(title, backButton, widget.NewSeparator(), subtitle, widget.NewSeparator(), description1, description2, description3, description4, description5, description6)

	setPageContent(page, window)
}


func setCoupleGeneticAnalysisConflictExistsExplainerPage(window fyne.Window, previousPage func()){

	title := getPageTitleCentered("Help - Conflict Exists")

	backButton := getBackButtonCentered(previousPage)

	subtitle := getPageSubtitleCentered("Conflict Exists")

	description1 := getLabelCentered("If either person has multiple genomes, multiple genome pairs will be created.")
	description2 := getLabelCentered("These genome pairs may have conflicting analysis results.")
	description3 := getLabelCentered("These conflicts are caused by errors in the genome sequencing process.")
	description4 := getLabelCentered("If they have conflicting results, you should view both genome pair results.")

	page := container.NewVBox(title, backButton, widget.NewSeparator(), subtitle, widget.NewSeparator(), description1, description2, description3, description4)

	setPageContent(page, window)
}

func setPolygenicDiseaseAverageLifetimeRiskExplainerPage(window fyne.Window, previousPage func()){

	title := getPageTitleCentered("Help - Lifetime Polygenic Disease Risk")

	backButton := getBackButtonCentered(previousPage)

	subtitle := getPageSubtitleCentered("Lifetime Polygenic Disease Risk")

	description1 := getLabelCentered("Each polygenic disease has a chart describing its lifetime risk.")
	description2 := getLabelCentered("This represents the probability that any person will have the disease.")
	description3 := getLabelCentered("For example, lets say the lifetime risk for a disease is 10%, if you are a Male between 50-60.")
	description4 := getLabelCentered("This means that Males between the ages of 50-60 have a 10% probability of suffering from the disease.")

	page := container.NewVBox(title, backButton, widget.NewSeparator(), subtitle, widget.NewSeparator(), description1, description2, description3, description4)

	setPageContent(page, window)
}

func setPolygenicDiseaseRiskScoreExplainerPage(window fyne.Window, previousPage func()){

	title := getPageTitleCentered("Help - Polygenic Disease Risk Score")

	backButton := getBackButtonCentered(previousPage)

	subtitle := getPageSubtitleCentered("Polygenic Disease Risk Score")

	description1 := getLabelCentered("Person genetic analyses contain a person's risk score for each polygenic disease.")
	description2 := getLabelCentered("This score describes their overall risk for the disease.")
	description3 := getLabelCentered("0/10 = Lowest risk, 10/10 = Highest risk.")
	description4 := getLabelCentered("The more locations that are tested, the more accurate the score is.")

	page := container.NewVBox(title, backButton, widget.NewSeparator(), subtitle, widget.NewSeparator(), description1, description2, description3, description4)

	setPageContent(page, window)
}

func setOffspringPolygenicDiseaseRiskScoreExplainerPage(window fyne.Window, previousPage func()){

	title := getPageTitleCentered("Help - Offspring Polygenic Disease Risk Score")

	backButton := getBackButtonCentered(previousPage)

	subtitle := getPageSubtitleCentered("Offspring Polygenic Disease Risk Score")

	description1 := getLabelCentered("Couple genetic analyses contain an offspring's risk score for each polygenic disease.")
	description2 := getLabelCentered("This score describes the average risk score for offspring produced by the couple.")
	description3 := getLabelCentered("0/10 = Lowest risk, 10/10 = Highest risk.")
	description4 := getLabelCentered("The more locations that are tested, the more accurate the score is.")

	page := container.NewVBox(title, backButton, widget.NewSeparator(), subtitle, widget.NewSeparator(), description1, description2, description3, description4)

	setPageContent(page, window)
}

func setPolygenicDiseaseLociExplainerPage(window fyne.Window, previousPage func()){

	title := getPageTitleCentered("Help - Polygenic Disease Loci")

	backButton := getBackButtonCentered(previousPage)

	subtitle := getPageSubtitleCentered("Polygenic Disease Loci")

	description1 := getLabelCentered("Each polygenic disease has a set of associated genome loci.")
	description2 := getLabelCentered("These are locations on the genome that can be tested to determine disease risk.")
	description3 := getLabelCentered("The more loci that your genome sequence contains, the more accurate your disease risk score will be.")

	page := container.NewVBox(title, backButton, widget.NewSeparator(), subtitle, widget.NewSeparator(), description1, description2, description3)

	setPageContent(page, window)
}

func setPolygenicDiseaseNumberOfLociTestedExplainerPage(window fyne.Window, previousPage func()){

	title := getPageTitleCentered("Help - Number Of Loci Tested")

	backButton := getBackButtonCentered(previousPage)

	subtitle := getPageSubtitleCentered("Polygenic Disease - Number Of Loci Tested")

	description1 := getLabelCentered("A person's polygenic disease risk score is calculated by testing locations on their genome.")
	description2 := getLabelCentered("Each location will represent either an increased risk, decreased risk, or no impact on risk.")
	description3 := getLabelCentered("The more locations that are tested, the more accurate the risk score will be.")
	description4 := getLabelCentered("Import a full genome sequence to test all locations.")

	page := container.NewVBox(title, backButton, widget.NewSeparator(), subtitle, widget.NewSeparator(), description1, description2, description3, description4)

	setPageContent(page, window)
}

func setOffspringPolygenicDiseaseNumberOfLociTestedExplainerPage(window fyne.Window, previousPage func()){

	title := getPageTitleCentered("Help - Number Of Loci Tested")

	backButton := getBackButtonCentered(previousPage)

	subtitle := getPageSubtitleCentered("Polygenic Disease - Number Of Loci Tested")

	description1 := getLabelCentered("An offspring's polygenic disease risk score is calculated by testing locations on their genome.")
	description2 := getLabelCentered("Each location will represent either an increased risk, decreased risk, or no impact on risk.")
	description3 := getLabelCentered("The more locations that are tested, the more accurate the risk score will be.")
	description4 := getLabelCentered("A location will only be considered tested if it exists in both parent's genomes.")
	description5 := getLabelCentered("Seekia will test all 4 possible outcomes for each location.")
	description6 := getLabelCentered("Import a full genome sequence for both parents to test all locations.")

	page := container.NewVBox(title, backButton, widget.NewSeparator(), subtitle, widget.NewSeparator(), description1, description2, description3, description4, description5, description6)

	setPageContent(page, window)
}


func setDiscreteTraitNeuralNetworkPredictionExplainerPage(window fyne.Window, previousPage func()){

	title := getPageTitleCentered("Help - Neural Network Prediction")

	backButton := getBackButtonCentered(previousPage)

	subtitle := getPageSubtitleCentered("Discrete Trait Neural Network Prediction")

	description1 := getLabelCentered("Person genetic analyses contain discrete trait analyses.")
	description2 := getLabelCentered("There are 2 discrete trait analysis methods: Neural Networks and Rules.")
	description3 := getLabelCentered("Each trait can be analyzed by either rules or a neural network.")
	description4 := getLabelCentered("Neural network prediction is calculated by inputing a genome's loci into a neural network.")
	description5 := getLabelCentered("Each trait has multiple outcomes, and the neural network predicts a single outcome.")
	description6 := getLabelCentered("The higher the quantity of tested loci, the more accurate the result is.")
	description7 := getLabelCentered("The probability that a neural network's prediction is accurate is called its Confidence.")

	page := container.NewVBox(title, backButton, widget.NewSeparator(), subtitle, widget.NewSeparator(), description1, description2, description3, description4, description5, description6, description7)

	setPageContent(page, window)
}

func setOffspringDiscreteTraitNeuralNetworkPredictionExplainerPage(window fyne.Window, previousPage func()){

	title := getPageTitleCentered("Help - Neural Network Prediction")

	backButton := getBackButtonCentered(previousPage)

	subtitle := getPageSubtitleCentered("Offspring Discrete Trait Neural Network Prediction")

	description1 := getLabelCentered("Couple genetic analyses contain discrete trait analyses.")
	description2 := getLabelCentered("There are 2 discrete trait analysis methods: Neural Networks and Rules.")
	description3 := getLabelCentered("Each trait can be analyzed by either rules or a neural network.")
	description4 := getLabelCentered("Neural network prediction is calculated by inputing a genome's loci into a neural network.")
	description5 := getLabelCentered("Each trait has multiple outcomes, and the neural network predicts the probability of each outcome.")
	description6 := getLabelCentered("The higher the quantity of known loci, the more accurate the result is.")
	description7 := getLabelCentered("The probability that a neural network's prediction is accurate is called its Confidence.")
	description8 := getLabelCentered("For couples, the Confidence is the average of the confidence of 100 prospective offspring predictions.")

	page := container.NewVBox(title, backButton, widget.NewSeparator(), subtitle, widget.NewSeparator(), description1, description2, description3, description4, description5, description6, description7, description8)

	setPageContent(page, window)
}

func setDiscreteTraitRulesPredictionExplainerPage(window fyne.Window, previousPage func()){

	title := getPageTitleCentered("Help - Rules Prediction")

	backButton := getBackButtonCentered(previousPage)

	subtitle := getPageSubtitleCentered("Discrete Trait Rules Prediction")

	description1 := getLabelCentered("Person genetic analyses contain discrete trait analyses.")
	description2 := getLabelCentered("There are 2 discrete trait analysis methods: Neural Networks and Rules.")
	description3 := getLabelCentered("Each trait can be analyzed by either rules or a neural network.")
	description4 := getLabelCentered("Rule prediction is calculated by testing many predictive rules.")
	description5 := getLabelCentered("Each trait has multiple outcomes, and each outcome has an associated score.")
	description6 := getLabelCentered("Points are added to an outcome to represent a higher probability.")
	description7 := getLabelCentered("Points are subtracted from an outcome to represent a lower probability.")
	description8 := getLabelCentered("The more rules that are tested, the higher the accuracy of the result will be.")

	page := container.NewVBox(title, backButton, widget.NewSeparator(), subtitle, widget.NewSeparator(), description1, description2, description3, description4, description5, description6, description7, description8)

	setPageContent(page, window)
}

func setOffspringDiscreteTraitRulesPredictionExplainerPage(window fyne.Window, previousPage func()){

	title := getPageTitleCentered("Help - Rules Prediction")

	backButton := getBackButtonCentered(previousPage)

	subtitle := getPageSubtitleCentered("Offspring Discrete Trait Rules Prediction")

	description1 := getLabelCentered("Couple genetic analyses contain discrete trait analyses for the offspring.")
	description2 := getLabelCentered("There are 2 discrete trait analysis methods: Neural Networks and Rules.")
	description3 := getLabelCentered("Each trait can be analyzed by either rules or a neural network.")
	description4 := getLabelCentered("Rule prediction is calculated by testing many predictive rules.")
	description5 := getLabelCentered("Each trait has multiple outcomes, and each outcome has an associated score.")
	description6 := getLabelCentered("Points are added to an outcome to represent a higher probability.")
	description7 := getLabelCentered("Points are subtracted from an outcome to represent a lower probability.")
	description8 := getLabelCentered("The more rules that are tested, the higher the accuracy of the result will be.")

	page := container.NewVBox(title, backButton, widget.NewSeparator(), subtitle, widget.NewSeparator(), description1, description2, description3, description4, description5, description6, description7, description8)

	setPageContent(page, window)
}


func setDiscreteTraitRulesExplainerPage(window fyne.Window, previousPage func()){

	title := getPageTitleCentered("Help - Trait Rules")

	backButton := getBackButtonCentered(previousPage)

	subtitle := getPageSubtitleCentered("Discrete Trait Rules")

	description1 := getLabelCentered("Person genetic analyses contain discrete trait analyses.")
	description2 := getLabelCentered("Discrete traits has multiple outcomes, and each outcome has an associated score.")
	description3 := getLabelCentered("A higher score represents a higher probability, and a lower score represents the opposite.")
	description4 := getLabelCentered("Each outcome's score is determined by trait rules.")
	description5 := getLabelCentered("A trait rule will add/subtract values to outcome(s).")
	description6 := getLabelCentered("If your genome passes a rule, its effects will be applied to the outcome(s).")

	page := container.NewVBox(title, backButton, widget.NewSeparator(), subtitle, widget.NewSeparator(), description1, description2, description3, description4, description5, description6)

	setPageContent(page, window)
}

func setOffspringDiscreteTraitRulesExplainerPage(window fyne.Window, previousPage func()){

	title := getPageTitleCentered("Help - Trait Rules")

	backButton := getBackButtonCentered(previousPage)

	subtitle := getPageSubtitleCentered("Discrete Trait Rules")

	description1 := getLabelCentered("Offspring genetic analyses contain discrete trait analyses for a couple's offspring.")
	description2 := getLabelCentered("Each discrete trait has multiple outcomes, and each outcome has an associated score.")
	description3 := getLabelCentered("A higher score represents a higher probability, and a lower score represents the opposite.")
	description4 := getLabelCentered("Each outcome's score is determined by trait rules.")
	description5 := getLabelCentered("A trait rule will add/subtract values to outcome(s).")
	description6 := getLabelCentered("The probability that an offspring will pass a rule is multiplied by the rule's effects.")
	description7 := getLabelCentered("This effect is then applied to the outcome(s).")

	page := container.NewVBox(title, backButton, widget.NewSeparator(), subtitle, widget.NewSeparator(), description1, description2, description3, description4, description5, description6, description7)

	setPageContent(page, window)
}

func setDiscreteTraitQuantityOfRulesTestedExplainerPage(window fyne.Window, previousPage func()){

	title := getPageTitleCentered("Help - Quantity Of Rules Tested")

	backButton := getBackButtonCentered(previousPage)

	subtitle := getPageSubtitleCentered("Quantity Of Trait Rules Tested")

	description1 := getLabelCentered("Person genetic analyses contain discrete trait analyses.")
	description2 := getLabelCentered("Each trait has multiple outcomes, and each outcome has an associated score.")
	description3 := getLabelCentered("A higher score represents a higher probability, and a lower score represent the opposite.")
	description4 := getLabelCentered("Each outcome's score is determined by trait rules.")
	description5 := getLabelCentered("A trait rule will add/subtract values to outcome(s).")
	description6 := getLabelCentered("If your genome passes a rule, its effects will be applied to the outcome(s).")
	description7 := getLabelCentered("The more trait rules which are tested, the more accurate the result will be.")
	description8 := getLabelCentered("Import a full genome sequence to test all rules.")

	page := container.NewVBox(title, backButton, widget.NewSeparator(), subtitle, widget.NewSeparator(), description1, description2, description3, description4, description5, description6, description7, description8)

	setPageContent(page, window)
}

func setOffspringDiscreteTraitQuantityOfRulesTestedExplainerPage(window fyne.Window, previousPage func()){

	title := getPageTitleCentered("Help - Quantity Of Rules Tested")

	backButton := getBackButtonCentered(previousPage)

	subtitle := getPageSubtitleCentered("Offspring Trait Quantity Of Rules Tested")

	description1 := getLabelCentered("Offspring genetic analyses contain trait analyses for a couple's offspring.")
	description2 := getLabelCentered("Each trait has multiple outcomes, and each outcome has an associated score.")
	description3 := getLabelCentered("A higher score represents a higher probability, and a lower score represents the opposite.")
	description4 := getLabelCentered("Each outcome's score is determined by trait rules.")
	description5 := getLabelCentered("A trait rule will add/subtract values to outcome(s).")
	description6 := getLabelCentered("The probability that an offspring will pass a rule is multiplied by the rule's effects.")
	description7 := getLabelCentered("This effect is then applied to the outcome(s).")
	description8 := getLabelCentered("Both parents must have a location in their genome for the rule to be tested.")
	description9 := getLabelCentered("Import a full genome sequence from both parents to test all offspring rules.")

	page := container.NewVBox(title, backButton, widget.NewSeparator(), subtitle, widget.NewSeparator(), description1, description2, description3, description4, description5, description6, description7, description8, description9)

	setPageContent(page, window)
}

func setOffspringProbabilityOfPassingTraitRuleExplainerPage(window fyne.Window, previousPage func()){

	title := getPageTitleCentered("Help - Probability Of Passing Rule")

	backButton := getBackButtonCentered(previousPage)

	subtitle := getPageSubtitleCentered("Offspring Probability Of Passing Trait Rule")

	description1 := getLabelCentered("Offspring genetic analyses contain discrete trait analyses for a couple's offspring.")
	description2 := getLabelCentered("Each discrete trait has multiple outcomes, and each outcome has an associated score.")
	description3 := getLabelCentered("A higher score represents a higher probability, and a lower score represents the opposite.")
	description4 := getLabelCentered("Each outcome's score is determined by trait rules.")
	description5 := getLabelCentered("A trait rule will add/subtract values to outcome(s).")
	description6 := getLabelCentered("There are 4 offspring outcomes for each location.")
	description7 := getLabelCentered("The probability that an offspring will pass a rule is multiplied by the rule's effects.")
	description8 := getLabelCentered("This effect is then applied to the outcome(s).")
	description9 := getLabelCentered("Both parents must have a location in their genome for the rule to be tested.")

	page := container.NewVBox(title, backButton, widget.NewSeparator(), subtitle, widget.NewSeparator(), description1, description2, description3, description4, description5, description6, description7, description8, description9)

	setPageContent(page, window)
}

func setPersonPassesDiscreteTraitRuleExplainerPage(window fyne.Window, previousPage func()){

	title := getPageTitleCentered("Help - Trait Rules")

	backButton := getBackButtonCentered(previousPage)

	subtitle := getPageSubtitleCentered("Person Passes Trait Rule")

	description1 := getLabelCentered("Person genetic analyses contain discrete trait analyses.")
	description2 := getLabelCentered("Each discrete trait has multiple outcomes, and each outcome has an associated score.")
	description3 := getLabelCentered("A higher score represents a higher probability, and a lower score represents the opposite.")
	description4 := getLabelCentered("Each outcome's score is determined by trait rules.")
	description5 := getLabelCentered("A trait rule will add/subtract values to outcome(s).")
	description6 := getLabelCentered("If a person passes a rule, its effects will be applied to their outcome(s).")

	page := container.NewVBox(title, backButton, widget.NewSeparator(), subtitle, widget.NewSeparator(), description1, description2, description3, description4, description5, description6)

	setPageContent(page, window)
}

func setGenomePassesDiscreteTraitRuleExplainerPage(window fyne.Window, previousPage func()){

	title := getPageTitleCentered("Help - Genome Passes Rule")

	backButton := getBackButtonCentered(previousPage)

	subtitle := getPageSubtitleCentered("Genome Passes Trait Rule")

	description1 := getLabelCentered("Person genetic analyses contain discrete trait analyses.")
	description2 := getLabelCentered("There are 2 discrete trait analysis methods: Rules and Neural Networks.")
	description3 := getLabelCentered("For rule-based analyses, each trait's outcome has an associated score.")
	description4 := getLabelCentered("A higher score represents a higher probability, and a lower score represents the opposite.")
	description5 := getLabelCentered("Each outcome's score is determined by trait rules.")
	description6 := getLabelCentered("A trait rule will add/subtract values to outcome(s).")
	description7 := getLabelCentered("If a person passes a rule, its effects will be applied to their outcome(s).")
	description8 := getLabelCentered("If a person has imported multiple genomes, each genome may or may not pass the rule.")
	description9 := getLabelCentered("If one genome passes and another does not, it means that one genome has an invalid value.")
	description10 := getLabelCentered("This happens because genome sequencing technology is not perfectly accurate.")

	page := container.NewVBox(title, backButton, widget.NewSeparator(), subtitle, widget.NewSeparator(), description1, description2, description3, description4, description5, description6, description7, description8, description9, description10)

	setPageContent(page, window)
}

func setDiscreteTraitRuleOutcomeEffectsExplainerPage(window fyne.Window, previousPage func()){

	title := getPageTitleCentered("Help - Outcome Effects")

	backButton := getBackButtonCentered(previousPage)

	subtitle := getPageSubtitleCentered("Trait Rule Outcome Effects")

	description1 := getLabelCentered("Each trait rule has an outcome effect.")
	description2 := getLabelCentered("The outcome effect describes points that are added or subtracted from outcomes.")
	description3 := getLabelCentered("If the rule is passed, the outcome effect will be applied.")
	description4 := getLabelCentered("For example, let's suppose a rule has the outcome effect of Blue +2")
	description5 := getLabelCentered("This means that 2 points are added to the Blue outcome if the rule is passed.")

	page := container.NewVBox(title, backButton, widget.NewSeparator(), subtitle, widget.NewSeparator(), description1, description2, description3, description4, description5)

	setPageContent(page, window)
}


func setWealthIsLowerBoundExplainerPage(window fyne.Window, previousPage func()){

	title := getPageTitleCentered("Help - Is Lower Bound")

	backButton := getBackButtonCentered(previousPage)

	subtitle := getPageSubtitleCentered("Is Lower Bound")

	description1 := getLabelCentered("If a wealth value is a lower bound, its true value may be higher.")
	description2 := getLabelCentered("Select this if you wish to represent a monetary value that is lower that your true value.")
	description3 := getLabelCentered("For example, if $5000 is a lower bound, then the user has at least $5000, and may have more.")
	description4 := getLabelCentered("This is recommended to protect your privacy.")

	page := container.NewVBox(title, backButton, widget.NewSeparator(), subtitle, widget.NewSeparator(), description1, description2, description3, description4)

	setPageContent(page, window)
}


func setMemoExplainerPage(window fyne.Window, previousPage func()){

	title := getPageTitleCentered("Help - Memo")

	backButton := getBackButtonCentered(previousPage)

	subtitle := getPageSubtitleCentered("Memo")

	description1 := getLabelCentered("A Memo is a message signed with a Seekia identity key.")
	description2 := getLabelCentered("You can share a memo anywhere, and others can use Seekia to verify it.")
	description3 := getLabelCentered("You can timestamp a memo on the blockchain to verify it existed before a certain time.")
	description5 := getLabelCentered("You can include a cryptocurrency block hash in the memo to prove it was created after that block.")
	description6 := getLabelCentered("You must verify all Seekia memos using the Seekia app to verify their author's signature.")	
	
	page := container.NewVBox(title, backButton, widget.NewSeparator(), subtitle, widget.NewSeparator(), description1, description2, description3, description5, description6)

	setPageContent(page, window)
}


func setAllowOtherExplainerPage(window fyne.Window, previousPage func()){

	title := getPageTitleCentered("Help - Allow Other")

	backButton := getBackButtonCentered(previousPage)

	subtitle := getPageSubtitleCentered("Allow Other")

	description1 := getLabelCentered("When choosing your desires, you can select the Other category.")
	description2 := getLabelCentered("Some attributes allow users to provide a custom value.")
	description3 := getLabelCentered("Examples of these are Gender Identity and Language.")
	description4 := getLabelCentered("If you select Other, you will be allowing users who provide a custom value.")

	page := container.NewVBox(title, backButton, widget.NewSeparator(), subtitle, widget.NewSeparator(), description1, description2, description3, description4)

	setPageContent(page, window)
}

func setOffspringMonogenicDiseaseProbabilityDesireExplainerPage(window fyne.Window, previousPage func()){

	currentPage := func(){setOffspringMonogenicDiseaseProbabilityDesireExplainerPage(window, previousPage)}

	title := getPageTitleCentered("Help - Monogenic Disease Probability Desire")

	backButton := getBackButtonCentered(previousPage)

	subtitle := getPageSubtitleCentered("Offspring Monogenic Disease Probability Desire")

	description1 := getLabelCentered("This desire allows you to filter users based on your offspring's probability of monogenic disease.")
	description2 := getLabelCentered("This probability is based on the monogenic diseases that you or the user have been tested for.")
	description3 := getLabelCentered("The more diseases and variants that have been tested for, the more accurate the result will be.")
	description4 := getLabelCentered("If you sequence your entire genome, Seekia will be able to test for all variants.")
	description5 := getLabelCentered("You can sort your matches by how many variants they have tested.")

	viewListOfMonogenicDiseasesButton := getWidgetCentered(widget.NewButtonWithIcon("View List Of Monogenic Diseases", theme.VisibilityIcon(), func(){
			setViewMonogenicDiseasesList(window, currentPage)
		}))

	page := container.NewVBox(title, backButton, widget.NewSeparator(), subtitle, widget.NewSeparator(), description1, description2, description3, description4, description5, viewListOfMonogenicDiseasesButton)

	setPageContent(page, window)
}

func setViewMonogenicDiseasesList(window fyne.Window, previousPage func()){

	title := getPageTitleCentered("View All Monogenic Diseases")

	backButton := getBackButtonCentered(previousPage)

	description := getLabelCentered("Below are all the monogenic diseases that Seekia can test for.")

	page := container.NewVBox(title, backButton, widget.NewSeparator(), description, widget.NewSeparator())

	monogenicDiseaseNamesList, err := monogenicDiseases.GetMonogenicDiseaseNamesList()
	if (err != nil){
		setErrorEncounteredPage(window, err, previousPage)
		return
	}

	for _, diseaseName := range monogenicDiseaseNamesList{

		diseaseLabel := getBoldLabelCentered(translate(diseaseName))

		page.Add(diseaseLabel)
	}

	setPageContent(page, window)
}

func setGeneticTestingExplainerPage(window fyne.Window, previousPage func()){

	title := getPageTitleCentered("Help - Genetic Testing")

	backButton := getBackButtonCentered(previousPage)

	subtitle := getPageSubtitleCentered("Offspring Embryo Genetic Testing")

	description1 := getLabelCentered("Using embryo genetic testing, you can ensure your offspring will not have any monogenic disease.")
	description2 := getLabelCentered("You can always have healthy children with someone for whom your offspring has a <100% probability of monogenic disease.")
	description3 := getLabelCentered("You must find a company offering embryo testing.")
	description4 := getLabelCentered("The technology is sometimes called Preimplantation Genetic Testing, or PGT.")
	description5 := getLabelCentered("This technology requires the use of in-vitro fertilization.")
	description6 := getLabelCentered("Choosing someone for whom your offspring has a 0% probability of monogenic diseases is still valuable.")
	description7 := getLabelCentered("You could accidentally have children through natural conception, even if you were planning on using PGT.")

	page := container.NewVBox(title, backButton, widget.NewSeparator(), subtitle, widget.NewSeparator(), description1, description2, description3, description4, description5, description6, description7)

	setPageContent(page, window)
}


func setHostingHelpPage(window fyne.Window, previousPage func()){

	title := getPageTitleCentered("Help - Hosting")

	backButton := getBackButtonCentered(previousPage)

	subtitle := getPageSubtitleCentered("Hosting")

	description1 := getLabelCentered("Be a Seekia host.")
	description2 := getLabelCentered("Your computer will seed content to the network.")
	description3 := getLabelCentered("You can choose to host as much or as little as you desire.")

	//TODO: Add buttons to show more help
	//TODO: Describe how hosting works and associated risks

	page := container.NewVBox(title, backButton, widget.NewSeparator(), subtitle, widget.NewSeparator(), description1, description2, description3)

	setPageContent(page, window)
}

func setMateDesireStatisticsWarningPage(window fyne.Window, previousPage func()){

	title := getPageTitleCentered("Help - Desire Statistics Warning")

	backButton := getBackButtonCentered(previousPage)

	subtitle := getPageSubtitleCentered("Mate Desire Statistics Warning")

	description1 := getBoldLabelCentered("Your mate desire statistics may not describe the statistics of the network accurately.")
	description2 := getLabelCentered("The Seekia app downloads a random set of profiles from the network to calculate statistics.")
	description3 := getLabelCentered("This random set of profiles may not perfectly represent the total population of Seekia users.")

	page := container.NewVBox(title, backButton, widget.NewSeparator(), subtitle, widget.NewSeparator(), description1, description2, description3)

	setPageContent(page, window)
}

func setNetworkStatisticsInaccuracyWarningPage(window fyne.Window, previousPage func()){

	title := getPageTitleCentered("Help - Network Statistics Warning")

	backButton := getBackButtonCentered(previousPage)

	//TODO: Improve this page
	// We need to make it clear that the statistics may still be accurate, but the numberOfUsers will not reflect the total number of network users
	// This will become more obvious when we eventually start to only sample a portion of stored profiles, so results are generated faster

	subtitle := getPageSubtitleCentered("Network Statistics Warning")

	description1 := getBoldLabelCentered("Viewed statistics about users may not describe the statistics of the network accurately.")
	description2 := getLabelCentered("The Seekia app downloads a random set of profiles from the network to calculate statistics.")
	description3 := getLabelCentered("This random set of profiles may not perfectly represent the total population of Seekia users.")

	page := container.NewVBox(title, backButton, widget.NewSeparator(), subtitle, widget.NewSeparator(), description1, description2, description3)

	setPageContent(page, window)
}


func setAttributeIsCanonicalExplainerPage(window fyne.Window, previousPage func()){

	title := getPageTitleCentered("Help - Attribute Is Canonical")

	backButton := getBackButtonCentered(previousPage)

	subtitle := getPageSubtitleCentered("Attribute Is Canonical")

	description1 := getLabelCentered("Profile attributes are either canonical or not.")
	description2 := getLabelCentered("Canonical attributes are attributes that do not allow a custom value.")
	description3 := getLabelCentered("They only allow predefined values or numerical values.")
	description4 := getLabelCentered("An example is Age, which must be a number.")
	description5 := getLabelCentered("Canonical Mate attributes only have to be approved if they are banned by at least 1 moderator.")

	page := container.NewVBox(title, backButton, widget.NewSeparator(), subtitle, widget.NewSeparator(), description1, description2, description3, description4, description5)

	setPageContent(page, window)
}


func setAnyUnreviewedAttributesExistExplainerPage(window fyne.Window, previousPage func()){

	title := getPageTitleCentered("Help - Unreviewed Attributes")

	backButton := getBackButtonCentered(previousPage)

	subtitle := getPageSubtitleCentered("Unreviewed Attributes Exist")

	description1 := getLabelCentered("Seekia will serve moderators attributes to review.")
	description2 := getLabelCentered("These attributes are served in order of least to most reviewed by other moderators.")
	description3 := getLabelCentered("Once you approve/ban/skip an attribute, it is removed from your moderator queue.")
	description4 := getLabelCentered("If you have banned a profile or any of its attributes, the rest of the profile's attributes do not need review.")
	description5 := getLabelCentered("If you have banned a user, profiles authored by them do not need review.")
	description6 := getLabelCentered("You can change this behavior on the Settings page (under construction).")

	page := container.NewVBox(title, backButton, widget.NewSeparator(), subtitle, widget.NewSeparator(), description1, description2, description3, description4, widget.NewSeparator(), description5, description6)

	setPageContent(page, window)
}

