routes = [
    {
        path: '/',
        templateUrl: './index.html',
        on: {
            pageAfterIn: () => {
                displayCharacters();
                onDeviceReady();
            }
        }
    },
    {
        name: 'classes',
        path: '/classes/',
        templateUrl: './pages/classes.html',
        on: {
            pageAfterIn: () => {
                displayAllClasses();
            }
        }
    },
    {
        name: 'stat',
        path: '/stat/:charId',
        templateUrl: './pages/stat.html',
        on: {
            pageInit: (e, page) => {
                const charId = page.route.params.charId;
                if (charId != null) {
                    const char = feData.characters.find(x => x.id == charId);
                    let charFullName = (char.lastName) ? char.firstName + " " + char.lastName
                                                       : char.firstName;

                    $$("#title-char").text(charFullName);
                    $$("#picture-char").attr("src", "img/characters/" + char.firstName + ".png");
                    actualCharId = charId;
                    createTableOfStats();
                    createListOfAvailableClasses();
                    displayCharGrowthRates();
                }
                createEventForGraphSwitch(displayGraphOfGrowthRatesForChar);
            }
        }
    },
    {
        name: 'feclass',
        path: '/class/:id',
        templateUrl: './pages/feclass.html',
        on: {
            pageInit: (e, page) => {
                const id = page.route.params.id;
                if (id != null) {
                    const feclass = feData.classes.find(x => x.id == id);
                    $$("#title-char").text(feclass.name);
                    actualClassId = id;
                    createTableOfStats();
                    displayClassGrowthRates();
                }
                createEventForGraphSwitch(displayGraphOfGrowthRatesForClass);
            }
        }
    },
    {
        name: 'comparator',
        path: '/comparator/',
        templateUrl: './pages/comparator.html',
        on: {
            pageInit: (e, page) => createEventForGraphSwitch(displayCurrentGraph),
            // We must use the pageAfterIn event in order to open the smartselect directly
            pageAfterIn: (e, page) => {
                configureSmartSelectOfCharacters();
            },
            pageBeforeRemove: function (e, page) {
                // Reset the classes selected when exiting the page
                feData.characters.forEach(char => {
                    char.idClassSelected = null;
                });
            },
        }
    },
    {
        path: '/about/',
        templateUrl: './pages/about.html',
        on: {
            pageAfterIn: (e, page) => {
                if (feData.version)
                    $$("#catalogue-version").text(feData.version);
            },
        }
    },
];

function createEventForGraphSwitch(callback) {
    $$("#btn-graph-column-chart").on("click", (event) => {
        switchGraph(event, callback);
    });
    $$("#btn-graph-spider-web").on("click", (event) => {
        switchGraph(event, callback);
    });
}