1 (function(mmir) {

  2     var _instance = {

  3         "xmlns": "http://www.w3.org/2003/04/emma",

  4         "version": "1.0",

  5     };

  6 

  7     function toEmma() {

  8         return {

  9             emma: buildEmma(arguments)

 10         };

 11     }

 12 

 13     function guid() {

 14         var d = new Date().getTime();

 15         var uuid = 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, function(c) {

 16             var r = (d + Math.random() * 16) % 16 | 0;

 17             d = Math.floor(d / 16);

 18             return (c == 'x' ? r : (r & 0x7 | 0x8)).toString(16);

 19         });

 20         return uuid;

 21     }

 22 

 23     function buildEmma() {

 24         var args = arguments[0];

 25         switch (args[0]) {

 26             case "touchInput":

 27                 var emma = _instance;

 28                 emma["interpretation"] = {};

 29                 emma.interpretation.start = args[1].event.timeStamp;

 30                 /* TODO emma.interpretation.end = args[1].event.timeStamp; */

 31                 emma.interpretation.mode = "gui";

 32                 emma.interpretation.medium = "tactile";

 33                 emma.interpretation.confidence = 1.0;

 34                 emma.interpretation.id = guid();

 35                 emma.interpretation.gesture = {};

 36                 emma.interpretation.gesture.type = args[1].event.type;

 37                 emma.interpretation.gesture.reference = {};

 38                 emma.interpretation.gesture.reference.type = args[1].event.target.localName;

 39                 /* TODO add id to the button elements in the view */

 40                 emma.interpretation.gesture.reference.id = args[1].event.target.id;

 41                 emma.interpretation.action = {};

 42                 emma.interpretation.action.name = args[1].event.target.name;

 43                 emma.interpretation.action.data = args[1].data;

 44                 // @chsc03 FIXME div element cannot be converted to JSON due to circular reference

 45                 emma.interpretation.action.source = new XMLSerializer().serializeToString(args[1].source);

 46                 //emma.interpretation.action.source = args[1].source;

 47                 console.debug(JSON.stringify(emma));

 48                 return emma;

 49             case "speechInput":

 50                 // @chsc03 TODO

 51                 break;

 52             default:

 53                 console.log('not known input');

 54                 break;

 55         }

 56         // $.fn.trigger.call($(document), "inputManager", emma);

 57     }

 58     if (typeof exports !== 'undefined') {

 59         if (typeof module !== 'undefined' && module.exports) {

 60             exports = module.exports = toEmma;

 61         }

 62         mmir.emma = toEmma;

 63     } else {

 64         mmir.emma = toEmma;

 65     }

 66 })(this.mmir = this.mmir || {});