--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/js/startup.js Mon Feb 09 09:20:01 2015 -0800
@@ -0,0 +1,63 @@
+/*######################################################################
+### YubiKey global namespace
+######################################################################*/
+var Y = {
+
+ // Information for the currently inserted key.
+ keyinfo: {},
+
+ // Declared windows, for easy referencing
+ window: {},
+
+
+ // Convert a string to hexadecimal.
+ //
+ toHex: function( string ) {
+ var hex = '';
+ for( var i = 0; i < string.length; i++ )
+ hex += string.charCodeAt(i).toString(16);
+ return hex;
+ },
+
+
+ // Return a random string of +length+.
+ //
+ randString: function( length ) {
+ var text = '';
+ var set = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789';
+
+ for( var i = 0; i < length; i++ )
+ text += set.charAt( Math.floor(Math.random() * set.length) );
+ return text;
+ },
+
+
+ // Generic delayed callback that returns the timer handle.
+ //
+ delay: (function() {
+ var timer = null;
+ return function( callback, ms, clear_previous ) {
+ if ( clear_previous) clearTimeout( timer );
+ timer = setTimeout( callback, ms );
+ return timer;
+ };
+ })(),
+
+ // Stop the default webkit behavior (viewer) when you drag a file into a window.
+ //
+ disableDragDrop: function( window ) {
+ window.ondragover = function(e) { e.preventDefault(); return false };
+ window.ondrop = function(e) { e.preventDefault(); return false };
+ },
+
+ // Node's filesystem interface.
+ fs: require( 'fs' ),
+
+ // Manage child processes.
+ spawn: require( 'child_process' ).spawn
+};
+
+
+// Make the 'Y' namespace available elsewhere.
+global.Y = Y;
+