#!/usr/bin/env python3

import os
import sys
import config
import tornado.web
from tornado.web import StaticFileHandler	
import tornado.options

from handlers import *
join = os.path.join

from tornado.options import define, options
define("port", help="run on the given port", type=int)
define("debug", default=False, help="set debug mode", type=bool)



class Application(tornado.web.Application):
    def __init__(self, **settings):
        settings['template_path'] = os.path.join(os.path.dirname(__file__), "templates")
        settings['static_path'] = os.path.join(os.path.dirname(__file__), "static")
        settings['cookie_secret'] = config.COOKIE_SECRET
        handlers = [
            (r"/", TemplateHandler),
            (r"/(about|contact|survey|data)", TemplateHandler),

            (r"/survey/(build)/.*", TemplateHandler),
            (r"/survey/(translate)/(.*)", TemplateHandler),
            (r"/survey/(generate)/(.*)", PDFSurveyHandler),

            (r"/data/load/(.*)", TemplateHandler),
            (r"/data/analyze/(.*)", TemplateHandler),
            (r"/data/export/(.*)", DataHandler),

            (r'/static/(.*)', tornado.web.StaticFileHandler, {'path': settings['static_path']}),
            (r"/(favicon.png)", StaticFileHandler, {"path":config.ROOT},),
            (r"/js/(.*)", MultiStaticFileHandler, {"paths":[join(config.BOOTSTRAP, "js",),join(config.JQUERY)]},),
            (r"/css/(.*)", StaticFileHandler, {"path":join(config.BOOTSTRAP, "css")},),
            (r"/font/(.*)", StaticFileHandler, {"path":join(config.BOOTSTRAP, "fonts")},),
        ]
        tornado.web.Application.__init__(self, handlers, **settings)


def main():
    tornado.options.parse_command_line()
    app = Application(debug=options.debug)
    host = '0.0.0.0' if options.debug else ''
    app.listen(options.port, address=host)
    tornado.ioloop.IOLoop.instance().start()

if __name__ == "__main__":
    main()
