'use strict';
define(
    [
        'templates',
        'handlebars.helpers',
        'Handlebars/Helpers/DateTime',
        'Handlebars/Helpers/Html',
        'Handlebars/Helpers/Numbers',
        'Handlebars/Helpers/Episode',
        'Handlebars/Helpers/Series',
        'Handlebars/Helpers/Quality',
        'Handlebars/Handlebars.Debug'
    ], function (Templates) {
        return function () {
            this.get = function (templateId) {

                var templateKey = templateId.toLowerCase();

                var templateFunction = Templates[templateKey];

                if (!templateFunction) {
                    throw 'couldn\'t find pre-compiled template ' + templateKey;
                }

                return function (data) {

                    try {
                        return templateFunction(data);
                    }
                    catch (error) {
                        console.error('template render failed for ' + templateKey + ' ' + error);
                        console.error(data);
                        throw error;
                    }
                };
            };
        };
    });