'use strict';

var parsers = require('../parsers.js'); var TYPES = parsers.TYPES;

var isValid = function (v) {

if (v.toLowerCase() === "auto") {
    return true;
}
var type = parsers.valueType(v);
return type === TYPES.LENGTH || type === TYPES.PERCENT || (type === TYPES.INTEGER && (v === '0' || v === 0));

};

var parser = function (v) {

var V = v.toLowerCase();
if (V === "auto") {
    return V;
}
return parsers.parseMeasurement(v);

};

var mySetter = parsers.implicitSetter('margin', '', isValid, parser); var myGlobal = parsers.implicitSetter('margin', '', function () {

return true;

}, function (v) {

return v;

});

module.exports.definition = {

set: function (v) {
    if (typeof v === "number") {
        v = String(v);
    }
    if (typeof v !== "string") {
        return;
    }
    var V = v.toLowerCase();
    switch (V) {
    case 'inherit':
    case 'initial':
    case 'unset':
    case '':
        myGlobal.call(this, V);
        break;

    default:
        mySetter.call(this, v);
        break;
    }
},
get: function () {
    return this.getPropertyValue('margin');
},
enumerable: true,
configurable: true

};

module.exports.isValid = isValid; module.exports.parser = parser;