var ajv = require('ajv')();
var sb2Defs = require('./sb2_definitions.json');
var sb3Defs = require('./sb3_definitions.json');
var sb2Schema = require('./sb2_schema.json');
var sb3Schema = require('./sb3_schema.json');
var sprite2Schema = require('./sprite2_schema.json');
var sprite3Schema = require('./sprite3_schema.json');
ajv.addSchema(sb2Defs).addSchema(sb3Defs);

module.exports = function (isSprite, input, callback) {
    var validateSb2 = ajv.compile(isSprite ? sprite2Schema : sb2Schema);
    var validateSb3 = ajv.compile(isSprite ? sprite3Schema : sb3Schema);

    var isValidSb2 = validateSb2(input);

    if (isValidSb2) {
        input.projectVersion = 2;
        return callback(null, input);
    }

    var isValidSb3 = validateSb3(input);
    if (isValidSb3) {
        input.projectVersion = 3;
        return callback(null, input);
    }

    var validationErrors = {
        validationError: 'Could not parse as a valid SB2 or SB3 project.',
        sb2Errors: validateSb2.errors,
        sb3Errors: validateSb3.errors
    };

    callback(validationErrors);
};