text: 'use strict';
  
  var immediate = require('immediate');
  var argsarray = require('argsarray');
  
  var WebSQLDatabase = require('./websql/WebSQLDatabase');
  
  function customOpenDatabase(SQLiteDatabase) {
  
    function createDb(dbName, dbVersion) {
      var sqliteDatabase = new SQLiteDatabase(dbName);
      return new WebSQLDatabase(dbVersion, sqliteDatabase);
    }
  
    function openDatabase(args) {
  
      if (args.length < 4) {
        throw new Error('Failed to execute \'openDatabase\': ' +
          '4 arguments required, but only ' + args.length + ' present');
      }
  
      var dbName = args[0];
      var dbVersion = args[1];
      // db description and size are ignored
      var callback = args[4];
  
      var db = createDb(dbName, dbVersion);
  
      if (typeof callback === 'function') {
        immediate(function () {
          callback(db);
        });
      }
  
      return db;
    }
  
    return argsarray(openDatabase);
  }
  
  module.exports = customOpenDatabase;