var page = require('webpage').create();
var system = require('system');
var fs = require('fs');
var returnStatus = {};
var rootPath = system.args[1];
var staticPath = system.args[2];
var toolsMiscPath = system.args[4];

// Check if all paths are accessible
// We assume at least read rights on all paths and files
if (!fs.isDirectory(rootPath) || !fs.isDirectory(rootPath + '/' + staticPath) || !fs.isDirectory(rootPath + '/' + staticPath + 'styles/' + system.args[3] + '/') || !fs.isDirectory(toolsMiscPath)) {
  // Incorrect paths, are they passed correctly?
  returnStatus.status = -1;
  console.log(JSON.stringify(returnStatus));
  phantom.exit();
}
fs.changeWorkingDirectory(toolsMiscPath);
if (!fs.exists('render_base.html')) {
  // Rendering base doesn't exist, who broke things?
  returnStatus.status = -2;
  console.log(JSON.stringify(returnStatus));
  phantom.exit();
}

page.open('render_base.html', function () {
  // Fixed view size
  page.viewportSize = {
    width: 1200,
    height: 1000
  };
  // Switch to specific stylesheet subdirectory
  fs.changeWorkingDirectory(rootPath + '/' + staticPath + 'styles/' + system.args[3] + '/');
  if (!fs.isWritable(fs.workingDirectory)) {
    // Don't have write access.
    returnStatus.status = -3;
    console.log(JSON.stringify(returnStatus));
    phantom.exit();
  }
  fs.write('preview.html', page.content, 'w');
  if (!fs.isFile('preview.html')) {
    // Failed to store specific preview file.
    returnStatus.status = -4;
    console.log(JSON.stringify(returnStatus));
    phantom.exit();
  }
  page.close();
  returnStatus.status = 0;
  console.log(JSON.stringify(returnStatus));
  phantom.exit();
});
