var Module = {
    noExitRuntime: true,
    ready: false,
    preRun: [],
    postRun: function() {
        console.log('Module postRun');
        //handle backspace
        window.removeEventListener('keydown', GLFW.onKeydown, true);
        GLFW.onKeydown = function(event) {
            GLFW.onKeyChanged(event, 1);
            if (event.keyCode === 8 || event.keyCode === 9) {
                if( === 'INPUT'){return;}
        window.addEventListener('keydown', GLFW.onKeydown, true);
        //handle resize
        GLFW.setCanvasSize = function(){
          var ssaa = (window.devicePixelRatio<2 ? 2 : 1); //Super sampling anti-aliasing
          var w = Module.canvas.clientWidth*window.devicePixelRatio*ssaa;
          var h = Module.canvas.clientHeight*window.devicePixelRatio*ssaa;
        GLFW.onResize = function() {
          window.clearTimeout(GLFW.setCanvasSizeTimeout); //debounce action
          //wait for drawer to finish transition
          GLFW.setCanvasSizeTimeout = window.setTimeout(GLFW.setCanvasSize, 500);
        window.addEventListener('resize', GLFW.onResize, true);
        //handle mousewheel
        function setCanvasZoom(e2){
            var e = window.event || e2; // old IE support
            var delta = Math.max(-1, Math.min(1, (e.wheelDelta || -e.detail)));
        document.getElementById('canvasDiv').addEventListener('mousewheel', setCanvasZoom, false);
        document.getElementById('canvasDiv').addEventListener('DOMMouseScroll', setCanvasZoom, false);
    setStatus: function(text) {
        if (!Module.setStatus.last) {
            Module.setStatus.last = {
                text: ''
        if (text === Module.setStatus.text) {return;}
        var m = text.match(/([^(]+)\((\d+(\.\d+)?)\/(\d+)\)/);
        var now =;
        if (m && now - < 30) {return;} // if this is a progress update, skip it if too soon
        if (m) {
            text = m[1];
        Module.statusDiv.innerHTML = text;
    totalDependencies: 0,
    monitorRunDependencies: function(left) {
        this.totalDependencies = Math.max(this.totalDependencies, left);
        Module.setStatus(left ? 'Starting... (' + (this.totalDependencies - left) + '/' + this.totalDependencies + ')' : 'All downloads complete.');

window.onerror = function(event) {
    if(event==='Uncaught Error: File exists') {return; }   // File exists happens in dual ward model
    // TODO: do not warn on ok events like simulating an infinite loop or exitStatus
    Module.setStatus('JavaScript error, open console for more details (Ctrl-Shift-J) <br>'+
        '<pre class="app-shell">'+event+'</pre>');
    // = 'none';
    Module.setStatus = function(text) {
        if (text) {Module.printErr('[post-exception status] ' + text);}

Website and application creation

Autonomal Solutions designs and develops websites and web applications. Fast prototyping. Fully managed solution.


Web Design

Increase your online presence

According to Google, 97% of consumers use the web to search for local businesses. You shouldn't lose potential customers by not having a website. For example, if a restaurant doesn't have a website with their menu and opening hours, some people are much less likely to visit that restaurant. Having an online presence will become more and more important as time passes and technology progresses.

Mobile friendly

Mobile usage has already surpassed desktop usage and mobile-friendliness now has a significant impact on search results. Having a mobile friendly website is critical and will continue to be so. At Autonomal, we create websites using the latest technologies and design them for various screen sizes using responsive design. The same website will look good on both mobile and desktop.

Multiple languages

We design websites with translation in mind, using best practices. A well planned multilingual website saves you time and money, so that when you need to update or redesign something, it can be done much faster without any trouble.

Social Media and SEO

Social media meta tags and metadata are used to control how your page content appears on social networks and search engines. This is important since it makes your site more impressive and optimizes social exposure. We will add and update meta tags for any social networks including Facebook, Twitter, Pinterest, Google+, etc.

Application Development & Internal Process Improvement

Technology has improved considerably in the recent years. There is probably something we can do to improve your internal process. Whether by automating some process such as generating reports, extending your ERP/CRM software, designing real-time and faster systems or providing better data and notifications, we can help you increase efficiency, eliminate errors and reduce costs.


Timesheet - Web Application · Intranet

This is an intranet web application developed for MJM Acoustical Consultants and it is used by employees to track time on projects and generate reports. Read more...

Shop Heroes Centreal - Web Application

This is a web application for viewing, filtering and sorting a database of items for the game Shop Heroes. The filtering and sorting possibilities are quite numerous. See it in action - Web Application · 3D · Ecommerce (Prototype) is an ecommerce site with a 3D web application that allows people to upload their image, design their canvas and preview them in 3D before ordering. - Web Application · 3D (Prototype) is a prototype web application that allows people to preview items in 3D for Dota 2, a video game developed and published by Valve Corporation. The web application interface is designed for both mobile and desktop. The 3D engine is developed in C++ by bongikairu. Read more...