(function ($) {
var initialize, dbEmpty = true, createTables, firstFill, startort="Zürich", missedTrains, getTimetable, setOutputDate,
    dayOfWeek, activeDate, dayOffset = 0, raiseOffset, lowerOffset, fillConfig, fillPlaces, fillTimetable;;

    initialize = function () {
        var delayedGetTimetable;
        dayOfWeek = getDayOfWeek();
        activeDate = new Date();
        timeNow = activeDate.getTime();


        $('a.citylistItem').click(function (e) {
            startort =  e.target.getAttribute('data-city');
            updateConfig("startort", startort);
            getTimetable(startort);
        });

        $('#raiseOffset').click(function (e) {
            raiseOffset();
        });

        $('#lowerOffset').click(function (e) {
            lowerOffset();
        });

        try {
        db = openDatabase("Zigerflitz", "1.0", "Database Containing the Core Data for the Zigerflitz Application", 65536);
        } catch (e) {
            $('#startloader').addClass('hidden');
            $('#noWorky').removeClass('hidden');

            return;
        }
        createTables();
    }

    $(document).bind('deviceready', function() {
        initialize();
    });

    if (navigator.userAgent.indexOf('Windows') ||
    navigator.userAgent.indexOf('Linux') ||
    navigator.userAgent.indexOf('Macintosh')) {
        $(function() {
            initialize();
        });
    }

    /**
     * Manage Configs
     */
    updateConfig = function (key, val) {
        db.transaction(
            function (transaction) {
                transaction.executeSql('UPDATE `config` SET `val` = "' + val + '" Where key="' + key + '"', [], nullDataHandler, errorHandler);
            });
    };

    /**
     * MANAGE DB STUFF
     */


    // null db data handler
    nullDataHandler = function (transaction, results) {
        return;
    };

    errorHandler = function (transaction, error) {
        // returns true to rollback the transaction
        alert(error.message);
        return true;
    };

    createTables = function () {
        try {
            db.transaction(
                function (transaction) {
                    var results;
                    // TIMETABLE
                    //transaction.executeSql("drop table if exists timetable", [], nullDataHandler, errorHandler);
                    transaction.executeSql('CREATE TABLE IF NOT EXISTS timetable ( ort TEXT, zeit TEXT, richtung TEXT, typ TEXT, wochentag TEXT);', [], nullDataHandler, errorHandler);
                    transaction.executeSql("SELECT * FROM timetable LIMIT 1", [], function (tx, result) {
                        if (!result.rows.length) {
                            fillTimetable();
                        }
                    });

                    // CONFIG
                    //transaction.executeSql("drop table if exists config", [], nullDataHandler, errorHandler);
                    transaction.executeSql(
                        'CREATE TABLE IF NOT EXISTS config ( key TEXT, val TEXT);',
                        [], nullDataHandler, errorHandler
                    );

                    transaction.executeSql("SELECT * FROM config", [], function (tx, result) {
                        if (!result.rows.length) {
                            fillConfig();
                        } else {
                            getConfig();
                        }
                    });
                });
        } catch (e) {
            /// alert(e.message);
            return;
        }
    };

    getConfig = function(){
        db.transaction(
            function (transaction) {
                transaction.executeSql("SELECT * FROM config", [],
                    function (tx, result) {
                    // Handle config entries
                        for (i = 0; i < result.rows.length; i = i + 1) {
                            row = result.rows.item(i);
                            switch(row.key) {
                            case 'startort':
                                startort = row.val;
                                getTimetable(startort);
                                break;
                            case 'missedTrains':
                                missedTrains = row.val;
                                //$('#' + row.val + 'MissedTrains').addClass('tick');
                                break;
                            }
                        }
                    })
            });
    };

    /**
     * custom Methods
     */
    getTimetable = function (startort) {
        var timesDataHandler, timeserrorHandler, loadTimes;

        // callback function to retrieve the data from the prefs table
        timesDataHandler = function (transaction, result) {
            var zh = false, gl = false, li = false, html = [], row, i = 0, richtung, helperDate, missedTrainCompareTime, proxy;
            $("#startloader").addClass("hidden");
            helperDate = new Date();
            missedTrainCompareTime = (helperDate.getHours() < 10 ? '0' : '') + helperDate.getHours() + ":" + (helperDate.getMinutes() < 10 ? '0' : '') + helperDate.getMinutes() ;

            html.ZH = '';
            html.GL = '';
            html.LI = '';
            for (i = 0; i < result.rows.length; i = i + 1) {
                row = result.rows.item(i);

                switch (row.richtung) {
                case 'Zürich':
                    richtung = "ZH";
                    zh = true;
                    break;
                case 'Schwanden':
                    richtung = "GL";
                    gl = true;
                    break;
                case 'Linthal':
                    richtung = "LI";
                    li = true;
                    break;
                }

                if (dayOffset === 0 && row.zeit < missedTrainCompareTime) {
                    switch (missedTrains) {
                    case 'hide':
                        proxy = "";
                        break;
                    case 'strike':
                        proxy = '<span class="strike">' + row.zeit + '</span>' + '&nbsp;&nbsp;&nbsp; ';
                        break;
                    default:
                        proxy = row.zeit + '&nbsp;&nbsp;&nbsp; ';
                    }
                } else {
                    proxy = row.zeit + '&nbsp;&nbsp;&nbsp; ';
                }
                html[richtung] += proxy;
            }

            checkEmpty = function(richtung) {
                if (html[richtung] === '') {
                    html[richtung] = "Heute verkehren keine Glarner Sprinter mehr hierhin.";
                }
            }
            checkEmpty('ZH');
            checkEmpty('GL');
            checkEmpty('LI');

            html.ZH = '<li>Nach Zürich:<br/> ' + html.ZH + '</li>\n';
            html.GL = '<li>Nach Schwanden:<br/> ' + html.GL + '</li>\n';
            html.LI = '<li>Nach Linthal:<br/> ' + html.LI + '</li>\n';

            htmlSum = '';
            if (gl === true) {
                htmlSum = htmlSum + html.GL;
            }

            if (li === true) {
                htmlSum = htmlSum + html.LI;
            }

            if (zh === true) {
                htmlSum = htmlSum + html.ZH;
            }

            $("#timetableList").html(htmlSum);
            $("#timetableList").removeClass('hidden');
            setOutputDate();
            $('#startortText').html(startort);
            $('ul.timesList').listview('refresh');
            $("#timetable").removeClass('hidden');
        };

        // load the currently selected icons
        loadTimes = function (startort, dayOfWeek) {
            try {
                db.transaction(
                    function (transaction) {
                        //dayOfWeek = 'd';
                        dayOfWeek = getDayOfWeek(activeDate.getDay());
                        var query = "SELECT zeit, richtung FROM timetable where wochentag Like '%" + dayOfWeek + "%'  and ort='" + startort + "' ORDER BY richtung, zeit";
                        transaction.executeSql(query, [], timesDataHandler, timeserrorHandler);
                    });
            } catch (e) {
                alert(e.message);
            }
        };
        timeserrorHandler = function (trans, error) {
            alert(error.message);
        };

        loadTimes(startort, dayOfWeek);
    }

    getDayOfWeek = function ($w) {
        switch ($w) {
        case 0:
            return "d";
        case 6:
            return "s";
        default:
            return "a";
        }
    }

    raiseOffset = function () {
        if (dayOffset === 0) {
            $('#arrowLowerOffset').attr('src', '/images/backActive.png');
        }
        dayOffset = dayOffset + 1;
        changeDateAndReload();
    }

    lowerOffset = function () {
        switch (dayOffset) {
        case 0:
            return;
        case 1:
            $('#arrowLowerOffset').attr('src', '/images/backPassive.png');
            break;
        default:
            break;
        }
        dayOffset = dayOffset - 1;
        changeDateAndReload();
    }

    changeDateAndReload = function () {
        timeThen = timeNow + dayOffset * (24 * 60 * 60 * 1000);
        activeDate.setTime(timeThen);
        setOutputDate();
        getTimetable(startort);
    }

    setOutputDate = function () {
        var weekdaysAsText = ["Sonntag", "Montag", "Dienstag", "Mittwoch", "Donnerstag", "Freitag", "Samstag"],
            datestring = activeDate.getDate() + ". " + (activeDate.getMonth() + 1) + ". " + activeDate.getFullYear();
        switch (dayOffset) {
        case 0:
            $("#day").html("Heute, " + datestring);
            break;
        case 1:
            $("#day").html("Morgen, " + datestring);
            break;
        default:
            $("#day").html(weekdaysAsText[activeDate.getDay()] + ", " + datestring);
            break;
        }
    }


    /**
     * These functions are called when the sqlite DB is initialized
     */

    fillConfig = function () {
        db.transaction(
            function (transaction) {
                transaction.executeSql("INSERT INTO `config` VALUES('startort','Zürich');");
                transaction.executeSql("INSERT INTO `config` VALUES('missedTrains','strike');");
            });
        getConfig();
    };

    fillTimetable = function () {
        db.transaction(
            function (transaction) {
                transaction.executeSql("INSERT INTO `timetable` VALUES('Zürich', '07:40', 'Schwanden', 'GlarnerSprinter', 'a');");
                transaction.executeSql("INSERT INTO `timetable` VALUES('Zürich', '09:40', 'Schwanden', 'GlarnerSprinter', 'a');");
                transaction.executeSql("INSERT INTO `timetable` VALUES('Zürich', '11:40', 'Schwanden', 'GlarnerSprinter', 'a');");
                transaction.executeSql("INSERT INTO `timetable` VALUES('Zürich', '13:40', 'Schwanden', 'GlarnerSprinter', 'a');");
                transaction.executeSql("INSERT INTO `timetable` VALUES('Zürich', '15:40', 'Schwanden', 'GlarnerSprinter', 'a');");
                transaction.executeSql("INSERT INTO `timetable` VALUES('Zürich', '17:40', 'Schwanden', 'GlarnerSprinter', 'a');");
                transaction.executeSql("INSERT INTO `timetable` VALUES('Zürich', '19:40', 'Schwanden', 'GlarnerSprinter', 'ad');");
                transaction.executeSql("INSERT INTO `timetable` VALUES('Pfäffikon SZ', '19:57', 'Zürich', 'GlarnerSprinter', 'a');");
                transaction.executeSql("INSERT INTO `timetable` VALUES('Zürich Flughafen', '19:20', 'Schwanden', 'GlarnerSprinter', 'ad');");
                transaction.executeSql("INSERT INTO `timetable` VALUES('Schwanden', '07:09', 'Zürich', 'GlarnerSprinter', 'as');");
                transaction.executeSql("INSERT INTO `timetable` VALUES('Schwanden', '09:09', 'Zürich', 'GlarnerSprinter', 'a');");
                transaction.executeSql("INSERT INTO `timetable` VALUES('Schwanden', '11:09', 'Zürich', 'GlarnerSprinter', 'a');");
                transaction.executeSql("INSERT INTO `timetable` VALUES('Schwanden', '13:09', 'Zürich', 'GlarnerSprinter', 'a');");
                transaction.executeSql("INSERT INTO `timetable` VALUES('Schwanden', '15:09', 'Zürich', 'GlarnerSprinter', 'a');");
                transaction.executeSql("INSERT INTO `timetable` VALUES('Schwanden', '17:09', 'Zürich', 'GlarnerSprinter', 'a');");
                transaction.executeSql("INSERT INTO `timetable` VALUES('Schwanden', '17:10', 'Zürich', 'GlarnerSprinter', 'sd');");
                transaction.executeSql("INSERT INTO `timetable` VALUES('Glarus', '07:19', 'Zürich', 'GlarnerSprinter', 'as');");
                transaction.executeSql("INSERT INTO `timetable` VALUES('Glarus', '09:19', 'Zürich', 'GlarnerSprinter', 'a');");
                transaction.executeSql("INSERT INTO `timetable` VALUES('Glarus', '11:19', 'Zürich', 'GlarnerSprinter', 'a');");
                transaction.executeSql("INSERT INTO `timetable` VALUES('Glarus', '13:19', 'Zürich', 'GlarnerSprinter', 'a');");
                transaction.executeSql("INSERT INTO `timetable` VALUES('Glarus', '15:19', 'Zürich', 'GlarnerSprinter', 'a');");
                transaction.executeSql("INSERT INTO `timetable` VALUES('Glarus', '17:19', 'Zürich', 'GlarnerSprinter', 'sd');");
                transaction.executeSql("INSERT INTO `timetable` VALUES('Glarus', '18:19', 'Zürich', 'GlarnerSprinter', 'sd');");
                transaction.executeSql("INSERT INTO `timetable` VALUES('Netstal', '18:22', 'Zürich', 'GlarnerSprinter', 'sd');");
                transaction.executeSql("INSERT INTO `timetable` VALUES('Netstal', '07:22', 'Zürich', 'GlarnerSprinter', 'as');");
                transaction.executeSql("INSERT INTO `timetable` VALUES('Netstal', '09:22', 'Zürich', 'GlarnerSprinter', 'a');");
                transaction.executeSql("INSERT INTO `timetable` VALUES('Netstal', '11:22', 'Zürich', 'GlarnerSprinter', 'a');");
                transaction.executeSql("INSERT INTO `timetable` VALUES('Netstal', '13:22', 'Zürich', 'GlarnerSprinter', 'a');");
                transaction.executeSql("INSERT INTO `timetable` VALUES('Netstal', '15:22', 'Zürich', 'GlarnerSprinter', 'a');");
                transaction.executeSql("INSERT INTO `timetable` VALUES('Netstal', '17:22', 'Zürich', 'GlarnerSprinter', 'sd');");
                transaction.executeSql("INSERT INTO `timetable` VALUES('Näfels-Mollis', '09:28', 'Zürich', 'GlarnerSprinter', 'a');");
                transaction.executeSql("INSERT INTO `timetable` VALUES('Näfels-Mollis', '07:28', 'Zürich', 'GlarnerSprinter', 'as');");
                transaction.executeSql("INSERT INTO `timetable` VALUES('Näfels-Mollis', '11:28', 'Zürich', 'GlarnerSprinter', 'a');");
                transaction.executeSql("INSERT INTO `timetable` VALUES('Näfels-Mollis', '13:28', 'Zürich', 'GlarnerSprinter', 'a');");
                transaction.executeSql("INSERT INTO `timetable` VALUES('Näfels-Mollis', '15:28', 'Zürich', 'GlarnerSprinter', 'a');");
                transaction.executeSql("INSERT INTO `timetable` VALUES('Näfels-Mollis', '17:28', 'Zürich', 'GlarnerSprinter', 'sd');");
                transaction.executeSql("INSERT INTO `timetable` VALUES('Näfels-Mollis', '18:28', 'Zürich', 'GlarnerSprinter', 'sd');");
                transaction.executeSql("INSERT INTO `timetable` VALUES('Nieder- und Oberurnen', '07:30', 'Zürich', 'GlarnerSprinter', 'a');");
                transaction.executeSql("INSERT INTO `timetable` VALUES('Nieder- und Oberurnen', '09:30', 'Zürich', 'GlarnerSprinter', 'a');");
                transaction.executeSql("INSERT INTO `timetable` VALUES('Nieder- und Oberurnen', '11:30', 'Zürich', 'GlarnerSprinter', 'a');");
                transaction.executeSql("INSERT INTO `timetable` VALUES('Nieder- und Oberurnen', '13:30', 'Zürich', 'GlarnerSprinter', 'a');");
                transaction.executeSql("INSERT INTO `timetable` VALUES('Nieder- und Oberurnen', '15:30', 'Zürich', 'GlarnerSprinter', 'a');");
                transaction.executeSql("INSERT INTO `timetable` VALUES('Nieder- und Oberurnen', '17:30', 'Zürich', 'GlarnerSprinter', 'sd');");
                transaction.executeSql("INSERT INTO `timetable` VALUES('Nieder- und Oberurnen', '18:30', 'Zürich', 'GlarnerSprinter', 'sd');");
                transaction.executeSql("INSERT INTO `timetable` VALUES('Ziegelbrücke', '07:37', 'Zürich', 'GlarnerSprinter', 'as');");
                transaction.executeSql("INSERT INTO `timetable` VALUES('Ziegelbrücke', '09:37', 'Zürich', 'GlarnerSprinter', 'a');");
                transaction.executeSql("INSERT INTO `timetable` VALUES('Ziegelbrücke', '11:37', 'Zürich', 'GlarnerSprinter', 'a');");
                transaction.executeSql("INSERT INTO `timetable` VALUES('Ziegelbrücke', '13:37', 'Zürich', 'GlarnerSprinter', 'a');");
                transaction.executeSql("INSERT INTO `timetable` VALUES('Ziegelbrücke', '15:37', 'Zürich', 'GlarnerSprinter', 'a');");
                transaction.executeSql("INSERT INTO `timetable` VALUES('Ziegelbrücke', '17:37', 'Zürich', 'GlarnerSprinter', 'sd');");
                transaction.executeSql("INSERT INTO `timetable` VALUES('Ziegelbrücke', '18:37', 'Zürich', 'GlarnerSprinter', 'sd');");
                transaction.executeSql("INSERT INTO `timetable` VALUES('Siebnen-Wangen', '07:46', 'Zürich', 'GlarnerSprinter', 'as');");
                transaction.executeSql("INSERT INTO `timetable` VALUES('Siebnen-Wangen', '09:46', 'Zürich', 'GlarnerSprinter', 'a');");
                transaction.executeSql("INSERT INTO `timetable` VALUES('Siebnen-Wangen', '11:46', 'Zürich', 'GlarnerSprinter', 'a');");
                transaction.executeSql("INSERT INTO `timetable` VALUES('Siebnen-Wangen', '17:46', 'Zürich', 'GlarnerSprinter', 'sd');");
                transaction.executeSql("INSERT INTO `timetable` VALUES('Siebnen-Wangen', '18:46', 'Zürich', 'GlarnerSprinter', 'sd');");
                transaction.executeSql("INSERT INTO `timetable` VALUES('Pfäffikon SZ', '07:57', 'Zürich', 'GlarnerSprinter', 'as');");
                transaction.executeSql("INSERT INTO `timetable` VALUES('Pfäffikon SZ', '09:57', 'Zürich', 'GlarnerSprinter', 'a');");
                transaction.executeSql("INSERT INTO `timetable` VALUES('Pfäffikon SZ', '11:57', 'Zürich', 'GlarnerSprinter', 'a');");
                transaction.executeSql("INSERT INTO `timetable` VALUES('Pfäffikon SZ', '13:57', 'Zürich', 'GlarnerSprinter', 'a');");
                transaction.executeSql("INSERT INTO `timetable` VALUES('Pfäffikon SZ', '15:57', 'Zürich', 'GlarnerSprinter', 'a');");
                transaction.executeSql("INSERT INTO `timetable` VALUES('Pfäffikon SZ', '17:57', 'Zürich', 'GlarnerSprinter', 'sd');");
                transaction.executeSql("INSERT INTO `timetable` VALUES('Pfäffikon SZ', '18:57', 'Zürich', 'GlarnerSprinter', 'sd');");
                transaction.executeSql("INSERT INTO `timetable` VALUES('Linthal', '16:58', 'Zürich', 'GlarnerSprinter', 'sd');");
                transaction.executeSql("INSERT INTO `timetable` VALUES('Linthal', '17:58', 'Zürich', 'GlarnerSprinter', 'sd');");
                transaction.executeSql("INSERT INTO `timetable` VALUES('Linthal Braunwaldbahn', '17:00', 'Zürich', 'GlarnerSprinter', 'sd');");
                transaction.executeSql("INSERT INTO `timetable` VALUES('Linthal Braunwaldbahn', '18:00', 'Zürich', 'GlarnerSprinter', 'sd');");
                transaction.executeSql("INSERT INTO `timetable` VALUES('Mitlödi', '07:11', 'Zürich', 'GlarnerSprinter', 'as');");
                transaction.executeSql("INSERT INTO `timetable` VALUES('Mitlödi', '09:11', 'Zürich', 'GlarnerSprinter', 'a');");
                transaction.executeSql("INSERT INTO `timetable` VALUES('Mitlödi', '11:11', 'Zürich', 'GlarnerSprinter', 'a');");
                transaction.executeSql("INSERT INTO `timetable` VALUES('Mitlödi', '13:11', 'Zürich', 'GlarnerSprinter', 'a');");
                transaction.executeSql("INSERT INTO `timetable` VALUES('Mitlödi', '15:11', 'Zürich', 'GlarnerSprinter', 'a');");
                transaction.executeSql("INSERT INTO `timetable` VALUES('Mitlödi', '17:11', 'Zürich', 'GlarnerSprinter', 'a');");
                transaction.executeSql("INSERT INTO `timetable` VALUES('Mitlödi', '19:11', 'Zürich', 'GlarnerSprinter', 'a');");
                transaction.executeSql("INSERT INTO `timetable` VALUES('Ennenda', '07:14', 'Zürich', 'GlarnerSprinter', 'as');");
                transaction.executeSql("INSERT INTO `timetable` VALUES('Ennenda', '09:14', 'Zürich', 'GlarnerSprinter', 'a');");
                transaction.executeSql("INSERT INTO `timetable` VALUES('Ennenda', '11:14', 'Zürich', 'GlarnerSprinter', 'a');");
                transaction.executeSql("INSERT INTO `timetable` VALUES('Ennenda', '13:14', 'Zürich', 'GlarnerSprinter', 'a');");
                transaction.executeSql("INSERT INTO `timetable` VALUES('Ennenda', '15:14', 'Zürich', 'GlarnerSprinter', 'a');");
                transaction.executeSql("INSERT INTO `timetable` VALUES('Ennenda', '17:14', 'Zürich', 'GlarnerSprinter', 'a');");
                transaction.executeSql("INSERT INTO `timetable` VALUES('Ennenda', '19:14', 'Zürich', 'GlarnerSprinter', 'a');");
                transaction.executeSql("INSERT INTO `timetable` VALUES('Zürich Flughafen', '07:20', 'Schwanden', 'GlarnerSprinter', 'a');");
                transaction.executeSql("INSERT INTO `timetable` VALUES('Zürich Flughafen', '09:20', 'Schwanden', 'GlarnerSprinter', 'a');");
                transaction.executeSql("INSERT INTO `timetable` VALUES('Zürich Flughafen', '11:20', 'Schwanden', 'GlarnerSprinter', 'a');");
                transaction.executeSql("INSERT INTO `timetable` VALUES('Zürich Flughafen', '13:20', 'Schwanden', 'GlarnerSprinter', 'a');");
                transaction.executeSql("INSERT INTO `timetable` VALUES('Zürich Flughafen', '15:20', 'Schwanden', 'GlarnerSprinter', 'a');");
                transaction.executeSql("INSERT INTO `timetable` VALUES('Zürich Flughafen', '17:20', 'Schwanden', 'GlarnerSprinter', 'a');");
                transaction.executeSql("INSERT INTO `timetable` VALUES('Zürich Flughafen', '07:20', 'Linthal', 'GlarnerSprinter', 'sd');");
                transaction.executeSql("INSERT INTO `timetable` VALUES('Zürich Flughafen', '18:20', 'Schwanden', 'GlarnerSprinter', 'a');");
                transaction.executeSql("INSERT INTO `timetable` VALUES('Zürich Flughafen', '09:20', 'Linthal', 'GlarnerSprinter', 'sd');");
                transaction.executeSql("INSERT INTO `timetable` VALUES('Pfäffikon SZ', '08:04', 'Schwanden', 'GlarnerSprinter', 'a');");
                transaction.executeSql("INSERT INTO `timetable` VALUES('Pfäffikon SZ', '10:04', 'Schwanden', 'GlarnerSprinter', 'a');");
                transaction.executeSql("INSERT INTO `timetable` VALUES('Pfäffikon SZ', '12:04', 'Schwanden', 'GlarnerSprinter', 'a');");
                transaction.executeSql("INSERT INTO `timetable` VALUES('Pfäffikon SZ', '14:04', 'Schwanden', 'GlarnerSprinter', 'a');");
                transaction.executeSql("INSERT INTO `timetable` VALUES('Pfäffikon SZ', '16:04', 'Schwanden', 'GlarnerSprinter', 'a');");
                transaction.executeSql("INSERT INTO `timetable` VALUES('Pfäffikon SZ', '18:04', 'Schwanden', 'GlarnerSprinter', 'a');");
                transaction.executeSql("INSERT INTO `timetable` VALUES('Pfäffikon SZ', '08:04', 'Linthal', 'GlarnerSprinter', 'sd');");
                transaction.executeSql("INSERT INTO `timetable` VALUES('Pfäffikon SZ', '20:04', 'Schwanden', 'GlarnerSprinter', 'ad');");
                transaction.executeSql("INSERT INTO `timetable` VALUES('Pfäffikon SZ', '10:04', 'Linthal', 'GlarnerSprinter', 'sd');");
                transaction.executeSql("INSERT INTO `timetable` VALUES('Siebnen-Wangen', '08:13', 'Schwanden', 'GlarnerSprinter', 'a');");
                transaction.executeSql("INSERT INTO `timetable` VALUES('Siebnen-Wangen', '10:13', 'Schwanden', 'GlarnerSprinter', 'a');");
                transaction.executeSql("INSERT INTO `timetable` VALUES('Siebnen-Wangen', '12:13', 'Schwanden', 'GlarnerSprinter', 'a');");
                transaction.executeSql("INSERT INTO `timetable` VALUES('Siebnen-Wangen', '14:13', 'Schwanden', 'GlarnerSprinter', 'a');");
                transaction.executeSql("INSERT INTO `timetable` VALUES('Siebnen-Wangen', '16:13', 'Schwanden', 'GlarnerSprinter', 'a');");
                transaction.executeSql("INSERT INTO `timetable` VALUES('Siebnen-Wangen', '18:13', 'Schwanden', 'GlarnerSprinter', 'a');");
                transaction.executeSql("INSERT INTO `timetable` VALUES('Siebnen-Wangen', '08:13', 'Linthal', 'GlarnerSprinter', 'sd');");
                transaction.executeSql("INSERT INTO `timetable` VALUES('Siebnen-Wangen', '20:13', 'Schwanden', 'GlarnerSprinter', 'ad');");
                transaction.executeSql("INSERT INTO `timetable` VALUES('Siebnen-Wangen', '10:13', 'Linthal', 'GlarnerSprinter', 'sd');");
                transaction.executeSql("INSERT INTO `timetable` VALUES('Ziegelbrücke', '08:23', 'Schwanden', 'GlarnerSprinter', 'a');");
                transaction.executeSql("INSERT INTO `timetable` VALUES('Ziegelbrücke', '10:23', 'Schwanden', 'GlarnerSprinter', 'a');");
                transaction.executeSql("INSERT INTO `timetable` VALUES('Ziegelbrücke', '12:23', 'Schwanden', 'GlarnerSprinter', 'a');");
                transaction.executeSql("INSERT INTO `timetable` VALUES('Ziegelbrücke', '14:23', 'Schwanden', 'GlarnerSprinter', 'a');");
                transaction.executeSql("INSERT INTO `timetable` VALUES('Ziegelbrücke', '16:23', 'Schwanden', 'GlarnerSprinter', 'a');");
                transaction.executeSql("INSERT INTO `timetable` VALUES('Ziegelbrücke', '18:23', 'Schwanden', 'GlarnerSprinter', 'a');");
                transaction.executeSql("INSERT INTO `timetable` VALUES('Ziegelbrücke', '08:23', 'Linthal', 'GlarnerSprinter', 'sd');");
                transaction.executeSql("INSERT INTO `timetable` VALUES('Ziegelbrücke', '20:23', 'Schwanden', 'GlarnerSprinter', 'ad');");
                transaction.executeSql("INSERT INTO `timetable` VALUES('Ziegelbrücke', '10:23', 'Linthal', 'GlarnerSprinter', 'sd');");
                transaction.executeSql("INSERT INTO `timetable` VALUES('Nieder- und Oberurnen', '08:25', 'Schwanden', 'GlarnerSprinter', 'a');");
                transaction.executeSql("INSERT INTO `timetable` VALUES('Nieder- und Oberurnen', '10:25', 'Schwanden', 'GlarnerSprinter', 'a');");
                transaction.executeSql("INSERT INTO `timetable` VALUES('Nieder- und Oberurnen', '12:25', 'Schwanden', 'GlarnerSprinter', 'a');");
                transaction.executeSql("INSERT INTO `timetable` VALUES('Nieder- und Oberurnen', '14:25', 'Schwanden', 'GlarnerSprinter', 'a');");
                transaction.executeSql("INSERT INTO `timetable` VALUES('Nieder- und Oberurnen', '16:25', 'Schwanden', 'GlarnerSprinter', 'a');");
                transaction.executeSql("INSERT INTO `timetable` VALUES('Nieder- und Oberurnen', '18:25', 'Schwanden', 'GlarnerSprinter', 'a');");
                transaction.executeSql("INSERT INTO `timetable` VALUES('Nieder- und Oberurnen', '08:25', 'Linthal', 'GlarnerSprinter', 'sd');");
                transaction.executeSql("INSERT INTO `timetable` VALUES('Nieder- und Oberurnen', '20:25', 'Schwanden', 'GlarnerSprinter', 'ad');");
                transaction.executeSql("INSERT INTO `timetable` VALUES('Nieder- und Oberurnen', '10:25', 'Linthal', 'GlarnerSprinter', 'sd');");
                transaction.executeSql("INSERT INTO `timetable` VALUES('Näfels-Mollis', '08:30', 'Schwanden', 'GlarnerSprinter', 'a');");
                transaction.executeSql("INSERT INTO `timetable` VALUES('Näfels-Mollis', '10:30', 'Schwanden', 'GlarnerSprinter', 'a');");
                transaction.executeSql("INSERT INTO `timetable` VALUES('Näfels-Mollis', '12:30', 'Schwanden', 'GlarnerSprinter', 'a');");
                transaction.executeSql("INSERT INTO `timetable` VALUES('Näfels-Mollis', '14:30', 'Schwanden', 'GlarnerSprinter', 'a');");
                transaction.executeSql("INSERT INTO `timetable` VALUES('Näfels-Mollis', '16:30', 'Schwanden', 'GlarnerSprinter', 'a');");
                transaction.executeSql("INSERT INTO `timetable` VALUES('Näfels-Mollis', '18:30', 'Schwanden', 'GlarnerSprinter', 'a');");
                transaction.executeSql("INSERT INTO `timetable` VALUES('Näfels-Mollis', '08:30', 'Linthal', 'GlarnerSprinter', 'sd');");
                transaction.executeSql("INSERT INTO `timetable` VALUES('Näfels-Mollis', '20:30', 'Schwanden', 'GlarnerSprinter', 'ad');");
                transaction.executeSql("INSERT INTO `timetable` VALUES('Näfels-Mollis', '10:30', 'Linthal', 'GlarnerSprinter', 'sd');");
                transaction.executeSql("INSERT INTO `timetable` VALUES('Netstal', '08:33', 'Schwanden', 'GlarnerSprinter', 'a');");
                transaction.executeSql("INSERT INTO `timetable` VALUES('Netstal', '10:33', 'Schwanden', 'GlarnerSprinter', 'a');");
                transaction.executeSql("INSERT INTO `timetable` VALUES('Netstal', '12:33', 'Schwanden', 'GlarnerSprinter', 'a');");
                transaction.executeSql("INSERT INTO `timetable` VALUES('Netstal', '14:33', 'Schwanden', 'GlarnerSprinter', 'a');");
                transaction.executeSql("INSERT INTO `timetable` VALUES('Netstal', '16:33', 'Schwanden', 'GlarnerSprinter', 'a');");
                transaction.executeSql("INSERT INTO `timetable` VALUES('Netstal', '18:33', 'Schwanden', 'GlarnerSprinter', 'a');");
                transaction.executeSql("INSERT INTO `timetable` VALUES('Netstal', '08:33', 'Linthal', 'GlarnerSprinter', 'sd');");
                transaction.executeSql("INSERT INTO `timetable` VALUES('Netstal', '20:33', 'Schwanden', 'GlarnerSprinter', 'ad');");
                transaction.executeSql("INSERT INTO `timetable` VALUES('Netstal', '10:33', 'Linthal', 'GlarnerSprinter', 'sd');");
                transaction.executeSql("INSERT INTO `timetable` VALUES('Glarus', '08:40', 'Schwanden', 'GlarnerSprinter', 'a');");
                transaction.executeSql("INSERT INTO `timetable` VALUES('Glarus', '10:40', 'Schwanden', 'GlarnerSprinter', 'a');");
                transaction.executeSql("INSERT INTO `timetable` VALUES('Glarus', '12:40', 'Schwanden', 'GlarnerSprinter', 'a');");
                transaction.executeSql("INSERT INTO `timetable` VALUES('Glarus', '14:40', 'Schwanden', 'GlarnerSprinter', 'a');");
                transaction.executeSql("INSERT INTO `timetable` VALUES('Glarus', '16:40', 'Schwanden', 'GlarnerSprinter', 'a');");
                transaction.executeSql("INSERT INTO `timetable` VALUES('Glarus', '18:40', 'Schwanden', 'GlarnerSprinter', 'a');");
                transaction.executeSql("INSERT INTO `timetable` VALUES('Glarus', '08:40', 'Linthal', 'GlarnerSprinter', 'sd');");
                transaction.executeSql("INSERT INTO `timetable` VALUES('Glarus', '20:40', 'Schwanden', 'GlarnerSprinter', 'ad');");
                transaction.executeSql("INSERT INTO `timetable` VALUES('Glarus', '10:40', 'Linthal', 'GlarnerSprinter', 'sd');");
                transaction.executeSql("INSERT INTO `timetable` VALUES('Ennenda', '08:41', 'Schwanden', 'GlarnerSprinter', 'a');");
                transaction.executeSql("INSERT INTO `timetable` VALUES('Ennenda', '10:41', 'Schwanden', 'GlarnerSprinter', 'a');");
                transaction.executeSql("INSERT INTO `timetable` VALUES('Ennenda', '12:41', 'Schwanden', 'GlarnerSprinter', 'a');");
                transaction.executeSql("INSERT INTO `timetable` VALUES('Ennenda', '14:41', 'Schwanden', 'GlarnerSprinter', 'a');");
                transaction.executeSql("INSERT INTO `timetable` VALUES('Ennenda', '16:41', 'Schwanden', 'GlarnerSprinter', 'a');");
                transaction.executeSql("INSERT INTO `timetable` VALUES('Ennenda', '18:41', 'Schwanden', 'GlarnerSprinter', 'a');");
                transaction.executeSql("INSERT INTO `timetable` VALUES('Ennenda', '20:41', 'Schwanden', 'GlarnerSprinter', 'ad');");
                transaction.executeSql("INSERT INTO `timetable` VALUES('Mitlödi', '08:45', 'Schwanden', 'GlarnerSprinter', 'a');");
                transaction.executeSql("INSERT INTO `timetable` VALUES('Mitlödi', '10:45', 'Schwanden', 'GlarnerSprinter', 'a');");
                transaction.executeSql("INSERT INTO `timetable` VALUES('Mitlödi', '12:45', 'Schwanden', 'GlarnerSprinter', 'a');");
                transaction.executeSql("INSERT INTO `timetable` VALUES('Mitlödi', '14:45', 'Schwanden', 'GlarnerSprinter', 'a');");
                transaction.executeSql("INSERT INTO `timetable` VALUES('Mitlödi', '16:45', 'Schwanden', 'GlarnerSprinter', 'a');");
                transaction.executeSql("INSERT INTO `timetable` VALUES('Mitlödi', '18:45', 'Schwanden', 'GlarnerSprinter', 'a');");
                transaction.executeSql("INSERT INTO `timetable` VALUES('Mitlödi', '20:45', 'Schwanden', 'GlarnerSprinter', 'ad');");
                transaction.executeSql("INSERT INTO `timetable` VALUES('Schwanden', '08:47', 'Linthal', 'GlarnerSprinter', 'sd');");
                transaction.executeSql("INSERT INTO `timetable` VALUES('Schwanden', '10:47', 'Linthal', 'GlarnerSprinter', 'sd');");
                transaction.executeSql("INSERT INTO `timetable` VALUES('Schwanden', '18:10', 'Zürich', 'GlarnerSprinter', 'sd');");
                transaction.executeSql("INSERT INTO `timetable` VALUES('Glarus', '19:19', 'Zürich', 'GlarnerSprinter', 'a');");
                transaction.executeSql("INSERT INTO `timetable` VALUES('Netstal', '19:22', 'Zürich', 'GlarnerSprinter', 'a');");
                transaction.executeSql("INSERT INTO `timetable` VALUES('Näfels-Mollis', '19:28', 'Zürich', 'GlarnerSprinter', 'a');");
                transaction.executeSql("INSERT INTO `timetable` VALUES('Nieder- und Oberurnen', '19:30', 'Zürich', 'GlarnerSprinter', 'a');");
                transaction.executeSql("INSERT INTO `timetable` VALUES('Ziegelbrücke', '19:37', 'Zürich', 'GlarnerSprinter', 'a');");
                transaction.executeSql("INSERT INTO `timetable` VALUES('Siebnen-Wangen', '13:46', 'Zürich', 'GlarnerSprinter', 'a');");
                transaction.executeSql("INSERT INTO `timetable` VALUES('Siebnen-Wangen', '15:46', 'Zürich', 'GlarnerSprinter', 'a');");
                transaction.executeSql("INSERT INTO `timetable` VALUES('Siebnen-Wangen', '19:46', 'Zürich', 'GlarnerSprinter', 'a');");
                transaction.executeSql("INSERT INTO `timetable` VALUES('Lachen', '07:49', 'Zürich', 'GlarnerSprinter', 'as');");
                transaction.executeSql("INSERT INTO `timetable` VALUES('Lachen', '09:49', 'Zürich', 'GlarnerSprinter', 'a');");
                transaction.executeSql("INSERT INTO `timetable` VALUES('Lachen', '11:49', 'Zürich', 'GlarnerSprinter', 'a');");
                transaction.executeSql("INSERT INTO `timetable` VALUES('Lachen', '13:49', 'Zürich', 'GlarnerSprinter', 'a');");
                transaction.executeSql("INSERT INTO `timetable` VALUES('Lachen', '15:49', 'Zürich', 'GlarnerSprinter', 'a');");
                transaction.executeSql("INSERT INTO `timetable` VALUES('Lachen', '17:49', 'Zürich', 'GlarnerSprinter', 'sd');");
                transaction.executeSql("INSERT INTO `timetable` VALUES('Lachen', '18:49', 'Zürich', 'GlarnerSprinter', 'sd');");
                transaction.executeSql("INSERT INTO `timetable` VALUES('Lachen', '19:49', 'Zürich', 'GlarnerSprinter', 'a');");
                transaction.executeSql("INSERT INTO `timetable` VALUES('Zürich', '07:40', 'Linthal', 'GlarnerSprinter', 'sd');");
                transaction.executeSql("INSERT INTO `timetable` VALUES('Zürich', '09:40', 'Linthal', 'GlarnerSprinter', 'sd');");
                transaction.executeSql("INSERT INTO `timetable` VALUES('Lachen', '08:08', 'Schwanden', 'GlarnerSprinter', 'a');");
                transaction.executeSql("INSERT INTO `timetable` VALUES('Lachen', '08:08', 'Linthal', 'GlarnerSprinter', 'sd');");
                transaction.executeSql("INSERT INTO `timetable` VALUES('Lachen', '10:08', 'Schwanden', 'GlarnerSprinter', 'a');");
                transaction.executeSql("INSERT INTO `timetable` VALUES('Lachen', '10:08', 'Linthal', 'GlarnerSprinter', 'sd');");
                transaction.executeSql("INSERT INTO `timetable` VALUES('Lachen', '16:08', 'Schwanden', 'GlarnerSprinter', 'a');");
                transaction.executeSql("INSERT INTO `timetable` VALUES('Lachen', '14:08', 'Schwanden', 'GlarnerSprinter', 'a');");
                transaction.executeSql("INSERT INTO `timetable` VALUES('Lachen', '12:08', 'Schwanden', 'GlarnerSprinter', 'a');");
                transaction.executeSql("INSERT INTO `timetable` VALUES('Lachen', '18:08', 'Schwanden', 'GlarnerSprinter', 'a');");
                transaction.executeSql("INSERT INTO `timetable` VALUES('Lachen', '20:08', 'Schwanden', 'GlarnerSprinter', 'ad');");
                transaction.executeSql("INSERT INTO `timetable` VALUES('Schwanden', '19:09', 'Zürich', 'GlarnerSprinter', 'a');");
            });
    };
}(jQuery));
