text: /*
   * Copyright (c) 2012-2015 S-Core Co., Ltd.
   * 
   * Licensed under the Apache License, Version 2.0 (the "License");
   * you may not use this file except in compliance with the License.
   * You may obtain a copy of the License at
   * 
   *     http://www.apache.org/licenses/LICENSE-2.0
   * 
   * Unless required by applicable law or agreed to in writing, software
   * distributed under the License is distributed on an "AS IS" BASIS,
   * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
   * See the License for the specific language governing permissions and
   * limitations under the License.
   */
  
  var express   = require('express');
  var fs        = require('fs');
  var io        = require('socket.io');
  var _         = require('underscore');
  var Mustache  = require('mustache');
  
  var app       = express.createServer();
  var staticDir = express.static;
  
  io            = io.listen(app);
  
  var opts = {
  	port :      1947,
  	baseDir :   __dirname + '/../../'
  };
  
  io.sockets.on('connection', function(socket) {
  	socket.on('slidechanged', function(slideData) {
  		socket.broadcast.emit('slidedata', slideData);
  	});
  	socket.on('fragmentchanged', function(fragmentData) {
  		socket.broadcast.emit('fragmentdata', fragmentData);
  	});
  });
  
  app.configure(function() {
  	[ 'css', 'js', 'images', 'plugin', 'lib' ].forEach(function(dir) {
  		app.use('/' + dir, staticDir(opts.baseDir + dir));
  	});
  });
  
  app.get("/", function(req, res) {
  	res.writeHead(200, {'Content-Type': 'text/html'});
  	fs.createReadStream(opts.baseDir + '/index.html').pipe(res);
  });
  
  app.get("/notes/:socketId", function(req, res) {
  
  	fs.readFile(opts.baseDir + 'plugin/notes-server/notes.html', function(err, data) {
  		res.send(Mustache.to_html(data.toString(), {
  			socketId : req.params.socketId
  		}));
  	});
  	// fs.createReadStream(opts.baseDir + 'notes-server/notes.html').pipe(res);
  });
  
  // Actually listen
  app.listen(opts.port || null);
  
  var brown = '\033[33m',
  	green = '\033[32m',
  	reset = '\033[0m';
  
  var slidesLocation = "http://localhost" + ( opts.port ? ( ':' + opts.port ) : '' );
  
  console.log( brown + "reveal.js - Speaker Notes" + reset );
  console.log( "1. Open the slides at " + green + slidesLocation + reset );
  console.log( "2. Click on the link your JS console to go to the notes page" );
  console.log( "3. Advance through your slides and your notes will advance automatically" );
  